• 内存寻址能力与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)了,大错特错。
    那操作系统的位宽和寻址能力有什么关系吗,这个其实还是有的。
    我们在使用计算机时,操纵的其实是逻辑地址,32位操作系统的逻辑地址寻址范围只有2^32=4GB。
    所以,不管你用什么样的CPU,它最多也只支持4GB的内存容量,但这是操作系统的锅,并不是说32位CPU只能寻址4GB空间。
    可能是在这儿容易引起错觉,一定要还CPU一个清白。

  • 相关阅读:
    我业余时间开发的东西文本编辑器 美丽的控件
    讲讲语言转换程序:将一种语言转换为另一种语言的程序
    调整心态,正确应对所学技术的失宠?(至F#,SL的学习者们)
    开贴说说文本编辑器的那些事情捕获输入内容
    开贴说说文本编辑器的那些事情 字符串的宽度
    电话亭。
    【旅行】西湖——初秋。
    偶这个前端设计师有生以来写过的最复杂的程序业务逻辑(菜鸟贴)。
    “页面制作人员”?“页面工程师”?“页面架构师”?滚一边去!
    【旅行】生的活力——西塘正午。
  • 原文地址:https://www.cnblogs.com/a-s-m/p/10750898.html
Copyright © 2020-2023  润新知