【发布时间】:2016-08-26 18:08:52
【问题描述】:
我看过其他答案,没有一个能说服我,大多数人只是说因为 2^32 = 4GB。
根据我的理解,32 位地址意味着每个字的长度为 32 位。因此最大的 32 位地址可以表示 4294967296,也就是说一个 32 位地址可以表示 4294967296 个字。
这 4294967296 个单词如何转换成 4GB....?
【问题讨论】:
标签: memory
我看过其他答案,没有一个能说服我,大多数人只是说因为 2^32 = 4GB。
根据我的理解,32 位地址意味着每个字的长度为 32 位。因此最大的 32 位地址可以表示 4294967296,也就是说一个 32 位地址可以表示 4294967296 个字。
这 4294967296 个单词如何转换成 4GB....?
【问题讨论】:
标签: memory
传统的PC内存被分成字节,每个地址指向一个字节(不是一个字)。由于地址是 32 位,我们可以有 2^32 = 4294967296 个地址,或 4294967296 个字节 (B)。
4294967296 B = 4194304 kB = 4096 MB = 4 GB,如果我们按 1024 倍计算。
【讨论】:
虽然 CPU 在内部使用字,但它们仍然能够寻址内存中的单个字节。由于单个内存地址必须适合一个字以允许 CPU 处理它,因此在 32 位系统中您最多只能寻址 4 个GiB 内存。
尽管有这些评论,但仍有一些方法可以在 32 位处理器上寻址更多内存。在 x86 CPU 中,这是在 Physical Address Extension (PAE) 绰号下处理的。通过使用超过 32 条地址线,您可以寻址更多内存。但是,由于 CPU 仍然只有 32 位字,因此每个页表仍然只能使用 4 GiB(这是实际应用程序使用的)。
【讨论】: