找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15192|回复: 0

[分享] 32位CPU支持多大内存?内存寻址能力和CPU位宽有关系吗?

哼哈二将 发表于 2018-3-29 13:15:19 | 显示全部楼层 |阅读模式 来自 中国山东聊城

马上注册,结交更多好友,享用更多功能。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 哼哈二将 于 2018-3-29 13:17 编辑

32位CPU支持多大内存?内存寻址能力和CPU位宽有关系吗?


  今天给大家科普一个电脑知识,那就是内存寻址能力与CPU的位宽有关系吗?答案是没有关系。这个问题以讹传讹了很多人,传了很久,确实有必要说说。


                               
登录/注册后可看大图


  CPU的寻址能力与它的地址总线位宽有关,而我们通常说的CPU位宽指的是数据总线位宽,它和地址总线位宽半毛钱关系也没有,自然也与寻址能力无关。

  简单的说,CPU位宽指的是一个时钟周期内CPU能处理的二进制位数,如8086 CPU是16位的,可以一次处理2个字节(16个bit),80386 CPU是32位,能一次处理4个字节,目前的CPU基本上64位的了,一次能处理8个字节。


                               
登录/注册后可看大图


  我们的Windows操作系统也分为32位和64位,主要是针对上面CPU的位宽做了些优化,比如32位的CPU就不能用64位的Windows(因为CPU一次只能处理32bit,而操作系统给你的指令是要处理64bit),但64位的CPU就可以运行32位的Windows,也能运行64位Windows。

那CPU的地址总线位宽到底是个什么鬼?

  Intel的解释是Physical Address Extensions (PAE) is a feature that allows 32-bit processors to access a physical address space larger than 4 gigabytes.


                               
登录/注册后可看大图


  上面图片是Intel Xeon E5-2698 v3的截图,专门就扩展物理地址作了说明,大意就是说这个是为了让32位的处理器能使用超过4GB的内存。这个PAE就是CPU的地址总线位宽。在8086这个16位CPU上,它的地址总线位宽是20位,正好能寻址1MB,80286它的PAE是24位,在Pentium II(32位CPU)时这个PAE变成了36位,可以支持64GB的寻址。

  64位CPU出现之后,其地址总线位宽一般采用的是36位或者40位,它们寻址的物理地址空间为64GB或者1T。

  那地址总线和数据总线有什么关系?可以这么理解,地址总线用来定位,数据总线用来传输,也就是当CPU需要从内存读取数据或向内存写入数据时,它使用地址总线来指定其需要访问的存储器块的物理地址,然后通过数据总线发送数据。

  所以说,CPU的位宽和寻址能力是没有关系的,16位CPU的地址总线位宽可以是20位,32位CPU的地址总线可以是36位,64位CPU的地址总线位宽可以是40位。所以你下次一定不要说32位的CPU只能寻址2^32(4GB)了,大错特错


                               
登录/注册后可看大图

  CPU最大支持内存和操作系统有直接关系,即使是64位处理器,使用32位操作系统支持的内存也最多为2的32次方,就是4G。在windows 32位操作系统中最大只识别3.25-3.75之间,根据windows版本不同而不同。

  那操作系统的位宽和寻址能力有什么关系吗,这个其实还是有的。我们在使用计算机时,操纵的其实是逻辑地址,32位操作系统的逻辑地址寻址范围只有2^32=4GB。

  所以,不管你用什么样的CPU,它最多也只支持4GB的内存容量,但这是操作系统的锅,并不是说32位CPU只能寻址4GB空间。可能是在这儿容易引起错觉,一定要还CPU一个清白。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表