是否真的可以说32位机器可以访问2 ^ 32字节的RAM

时间:2014-11-07 07:32:58

标签: memory-management operating-system x86 computer-architecture

只是好奇心。我在互联网上的许多文章和帖子中看到了这一点。当比较32位和64位架构时,很多时候人们都会指出他们可以访问的最大内存量。像#32; 32位处理器这样的陈述可以访问4G(2 ^ 32)的RAM"总是正确的。?

根据我的理解,32/64位指的是CPU寄存器的大小。但CPU可以访问的实际RAM量取决于其地址总线大小。

例如8086是16位,内存不限于64KB(2 ^ 16)而是1MB(2 ^ 20)[它通过分段实现],因为它的地址总线长20位。同样,当前的64位CPU无法访问整个2 ^ 64内存位置,因为它们中的大多数只有48位地址总线。

请你的建议。

2 个答案:

答案 0 :(得分:3)

有(许多)情况,32位CPU可以访问超过4GB的RAM。大多数32位CPU具有 Physical Address Extension 机制,允许访问超过4GB。

这是操作系统启用的硬件功能。硬件部分是一个更广泛的Addrees BUS,带有一些控制机制,OS部分是虚拟内存管理。

即使机器能够访问超过4GB,如果在32位机器上运行32位操作系统,虚拟地址长度也保持不变(32位)。 这意味着每个进程可以访问4GB的虚拟内存(通常由物理RAM备份)。但是,有些情况甚至是32位进程,由于操作系统功能,可以使用4GB以上 - 请参阅Windows的 here

即使没有像AWE这样的功能,在具有PAE的机器中,运行多个进程意味着使用超过4GB的RAM。

你的最后一段是正确的。但从程序员的角度来看,您会对您的流程可以使用的内容感兴趣。

Is it true to say that 32bit machine can access 2^32 of RAM?

是的,32位系统可以访问 2 ^ 32 B的RAM。 说32位系统只能访问2 ^ 32 B的RAM是错误的。

答案 1 :(得分:1)

  

像“32位处理器可以访问4G(2 ^ 32)RAM”这样的陈述总是正确的。?

不,这些陈述通常是不正确的。

许多处理器都有硬件限制,可以将物理内存量从理论上的最大值降低。

如上所述,某些处理器使用分段方法将地址空间扩展到理论处理器限制之外。但是,具有较小地址的较大地址空间更为常见。例如,后来的PDP-11,16位计算机通常有一兆字节的内存。

32位处理器的一般趋势是段会扩展虚拟内存而不是物理内存。例如,80386芯片理论上可以访问4GB的物理内存和64个虚拟内存。

64位处理器在通常需要超过4GB内存和32位处理器之前到达。

(我省略了内核对用户空间的问题)