阅读:1517回复:11
科普第9篇——为什么32位CPU不能支持大于4GB内存?
其实这个问题就是错的,32位CPU是可以访问4GB以上内存的,通过一种叫做PAE(物理地址扩展,Physical Address Extension)的技术。Windows之所以不能支持是因为微软的市场策略问题(服务器版的就支持PAE)。
这个问题其实应该问“为什么32位CPU不能直接支持大于4GB的内存?”(其实这个问题也不正确,看完下面就知道了。) 要解释这个问题,必须首先说明,什么是“32位”CPU。 首先,位(比特,bit)这个概念,再说一遍,就是指二进制数的位数。具体可以去看《科普第3篇——2、8、10、16》。 CPU里有很多寄存器,有储存指令的指令寄存器,有储存数据的数据寄存器,有储存地址的地址寄存器,还有既可以储存数据又可以储存地址的通用寄存器等等。 寄存器的作用是储存CPU的运算器所需要的或生成的数据的。寄存器的大小通常不大,前面说的32位,其实就是寄存器的大小。 早期的计算机甚至有更小的寄存器,比如16bit 甚至8bit更小(但都是2的倍数,二进制嘛)。 8bit=1B,8比特1字节,所以现在的CPU的寄存器就有32/8=4B,这么小,貌似储存不了多少数据,但是其实能表示的数已经很多了。 32位二进制数,能表示的整数就是0 ~ 232(0~4,294,967,296),或者加上正负号的话是-(216-1) ~ 216(-65535~65536)(为什么要负数要减1呢?因为有一个数是表示0的)。 表示浮点数(这里可以简单理解为就是小数)的话因就是负数 -3.40282346638528860e38 ~ -1.40129846432481707e-45,正数 1.40129846432481707e-45 ~ 3.40282346638528860e38。(什么?看不懂这种表示方法?这是科学计数法的另一种写法,-3.40282346638528860e38就是-3.40282346638528860×1038)。浮点数是把32bit的寄存器分成三部分,一部分表示整个数的正负号(1bit),一部分表示科学计数法后面的指数(8bit),一部分表示前面的尾数(23bit)。 32位对于数学计算来说确实不少,而且CPU的处理速度很快,很短的时间内就可以进行很多次计算,所以看来是足够了,但是实际处理的数据量很大,虽然CPU处理得过来,但是寄存器却放不下,所以我们需要外部的存储空间来存放这些东西,这就是内存的作用了。但是内存那么大,要知道从那么大的内存的什么地方取数据,就必须给内存的空间编地址。 而这个地址,是储存在CPU的寄存器中的,所以32位CPU的内存地址也只有32位二进制数来表示。每个地址对应着内存的8bit、也就是一字节的空间,所以32位二进制数就能表示232个一字节的空间,也就是4,294,967,296B,按照1024B=1KB,1024KB=1MB,1024MB=1GB换算一下,不就是4GB吗!(其实换算可以更简单点,因为B、KB、MB、GB之间都是相差210的,所以B和GB之间就相差210×210×210=230,232/230=22=4) 可是,地址不光是给内存用的,但计算机的其他部件也需要地址,所以虽然能编址4GB的空间,但实际用到内存上的只有3.2GB,这也就是为什么4GB内存在Windows上只能使用3.2GB的原因了。 PAE就是通过一种转换方式,来表示更多的内存地址的(比如一个地址可以住两个人,再通过名字来区分这两人)。PAE可以使用到64GB的内存。 而现在基本普及的64位CPU,也没有什么特别的,就是加大了寄存器的大小而已,所以能编址的空间就是:264B=264/230=234GB,很惊人吧!再继续1024GB=1TB,1024TB=1PB,1024PB=1EB,换算下来就是234GB/230=24=16EB! 估计我们是等不到64位的物理地址被用完的那一天了! ==========之前的文章========== 科普第1篇——计算机色彩 科普第1篇补遗——CSS颜色 科普第2篇——光盘 科普第3篇——2、8、10、16 科普第4篇——电池 科普第5篇——浏览器 科普第6篇——字符编码 科普第7篇——加密解密 科普第8篇——移动通信技术 科普番外篇1——虽然没用但了解一下也很有趣的知识 |
|
最新喜欢:![]() |
沙发#
发布于:2011-05-01 01:25
我来支持前辈,顺便复习一下知识的。。。
|
|
2楼#
发布于:2011-05-01 03:28
嘛~~~没学过这东西
如果将内存和CPU融合的话,那么省下了中间他们的数据传送的时间,是不是能提高运算速率呢?哈哈 |
|
3楼#
发布于:2011-05-01 04:18
教学贴是一定要支持的
|
|
4楼#
发布于:2011-05-01 08:04
前几天看初音的帖子大概明白了一些 一直对硬件不太了解
|
|
5楼#
发布于:2011-05-01 10:32
额,为了营销,不开放扩展.....不过一般的家庭机的话3.2G内存够用了吧~~
|
|
6楼#
发布于:2011-05-01 10:45
4G内存是指一条4G的还是2+2也算的?之前我用在自己电脑上的2+2只显出了2.8G,所以我干脆只用2G了。
|
|
7楼#
发布于:2011-05-01 19:22
回 6楼(梦幻的夏) 的帖子
内存地址的分配是由内存控制器分配的,和你插几条、怎么插没有关系 |
|
8楼#
发布于:2011-05-01 19:53
回 2楼(琥珀) 的帖子
如果可以的话,这样当然是最好的,可是现在内存的速度不够快,相对CPU的处理速度来说很慢。其实计算机的存储系统分那么多级(CPU一级缓存、CPU二级缓存、内存、硬盘),就是因为容量和速度的原因,CPU一级缓存最快但是无法做的很大,硬盘很大但是不够快。 硬盘已经算是外部存储器了(相对于内存——内部存储器),所以他的访问不是由CPU直接进行的,需要通过总线(就是计算机里的数据交换通道)和硬盘的控制器来进行通信、交流,所以硬盘大小并不受物理地址的限制。 |
|
9楼#
发布于:2011-05-02 10:37
谢科普,昨晚趴床上看完了(虽然没怎么懂=。=
|
|
|
10楼#
发布于:2011-05-03 12:46
学习了啊 记得好像是寻址空间之类的问题 具体怎么算的还真不知道.
|
|
|
11楼#
发布于:2011-05-03 21:03
明白了~~现在学习也算是为了将来换电脑打基础~=w=
|
|
|