【问题标题】:How can a 32 bit CPU with 32 bit word size utilise 4 GB of RAM?具有 32 位字长的 32 位 CPU 如何使用 4 GB 的 RAM?
【发布时间】:2019-01-05 18:43:46
【问题描述】:

我在网上看到了一些关于我的问题的解释,但我仍然觉得我不理解手头的问题。

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

【问题讨论】:

  • 这确实取决于 CPU 架构,但大多数现代 PC 类型的系统使用 byte 寻​​址而不是 word。
  • 这个问题在这个时候几乎更适合姐妹网站Retrocomputing Stack Exchange。 ;-)
  • @Someprogrammerdude - 这是否意味着每个内存地址都有固定大小,与处理器类型无关。那么 32 位 CPU 的容量内存地址是否与 64 位 CPU 相同?
  • 不,我的意思是 CPU 上的单个地址引用单个 8 位字节。

标签: memory virtual-address-space


【解决方案1】:

您的估计有 2 个错误:

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

2/ 内存大小以 BYTE 而非 BIT 给出。 因此,使用 32 位物理地址,您可以拥有 2^32 字节的内存,即 4GB。

请注意,物理内存的大小部分与处理器寄存器大小无关。 一年来,页表上出现了一些超出 4GB 障碍的系统黑客行为。参见例如 https://en.wikipedia.org/wiki/Physical_Address_Extension 真正的限制是限制为 32 位的虚拟地址(因此 4GB/进程)

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

所以值 32 或 64 对应于虚拟地址大小。

【讨论】:

  • 感谢您消除误解。在此之前我从未听说过物理地址扩展,这也很有趣。
猜你喜欢
  • 2021-02-12
  • 2010-11-10
  • 2017-01-27
  • 2010-10-02
  • 1970-01-01
  • 2013-02-27
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多