根据我的理解,32/64位指的是CPU寄存器的大小。但CPU可以访问的实际RAM量取决于其地址总线大小。
例如8086是16位,内存不限于64KB(2 ^ 16)而是1MB(2 ^ 20)[它通过分段实现],因为它的地址总线长20位。同样,当前的64位CPU无法访问整个2 ^ 64内存位置,因为它们中的大多数只有48位地址总线。
请你的建议。
答案 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位处理器之前到达。
(我省略了内核对用户空间的问题)