具有32位字长的32位CPU如何使用4 GB RAM?

时间:2019-01-05 18:43:47

标签: memory virtual-address-space

我已经在网上看到一些关于我的问题的解释,但是,我仍然感觉不到我要解决的问题。

我知道32位CPU会将其内存分成称为字的离散单元,每个单元最多可以存储32位数据。 32位CPU可以寻址的内存位置总数是2 ^ 32或4294967295地址。现在,由于每个地址最多可以容纳32位数据,因此该处理器可以利用的内存总容量应为2 ^ 32 x 32,对吗?但是,这个值不会达到4 GB,这是我感到困惑的地方。我想了解如何计算4 GB的值。

1 个答案:

答案 0 :(得分:1)

您在估算中犯了两个错误:

1 /(几乎)总是在字节级别进行寻址。否则,大多数C程序都会被破坏。这使得内存量与处理器内部寄存器的大小无关。

2 /内存大小以字节为单位而不是以位为单位。 因此,使用32位物理地址,您可以拥有2 ^ 32字节的内存,即4GB。

请注意,物理内存的大小与处理器寄存器的大小部分不相关。 一年来,页面表上有一些系统骇客,超出了4GB的范围。例如看 https://en.wikipedia.org/wiki/Physical_Address_Extension 真正的限制是虚拟地址限制为32位(因此每个进程4GB)

现在,处理器具有64位寄存器。虚拟地址是64位(或多或少)。但是2 ^ 64的内存是一个疯狂的数目,为了降低成本,物理地址通常限制为40或48位。这是256TB,足够用于当前的计算机(和不久的将来的处理器)。

因此,值32或64对应于虚拟地址大小。