zoukankan      html  css  js  c++  java
  • 内存寻址能力与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一个清白。

  • 相关阅读:
    window 窗口对象 Javascript语言描述
    ASP.NET JScript公共类(非常有用)
    ASP.NET上传文件函数
    C#两种方式获取指定文件夹下所有子目录及文件
    模式窗口showModalDialog的用法总结
    DetailsView结合fileupload的使用
    JS连续向上滚动代码
    【原创】C# 递归获取指定目录的子目录及其所有文件
    【原创】C# 将虚拟目录下文件转换成DataTable
    【原创】ASP.NET C# 获取指定目录文件的排序和删除
  • 原文地址:https://www.cnblogs.com/a-s-m/p/10750898.html
Copyright © 2011-2022 走看看