【发布时间】:2016-12-19 09:18:26
【问题描述】:
现在我知道这个问题已经被问过好几次了,但我真的不知道 32 位处理器在理论上和实际上都不能解决多少内存。 请注意,我来自土木工程背景,所以我仍在学习计算机科学;而且计量单位对我来说很重要,这实际上是我的问题:
现在我知道你可以通过 2^32(或 64)计算 CPU 可以使用多少内存,在这种情况下你会得到 4.294.967.296 位。 现在我知道(或者我想我知道)内存是以字节为单位的,所以为了找出一个 cpu 可以使用多少字节的内存,我将 4.294.967.296/8 除以 536.870.912 字节。 然后除以 536.870.912/1024 得到 524.288 KB。 然后除以 524.288/1024 得到 512 兆字节。 然后除以 512/1024 得到 0.5 GB,这...不是很好。
现在我注意到,如果你一开始不除以 8,你会得到 4 GB;所以我的问题是:ram 是以位还是字节来衡量的。 如果是byes,那么cpu地址位和ram容量有什么关系?
编辑:嘿,我设法了解了计量单位的工作原理。基本上你有从 0x00000000 到 0xffffffff 的 4.294.967.296 个地址,每个地址代表 4 个字节的数据。然后除以 1024 得到 4.194.304 kbytes、4.096 mbytes 和 4 gbytes。抱歉花了这么长时间,感谢大家的反馈。
【问题讨论】:
-
内存以字节为单位。
-
"在这种情况下你得到 4.294.967.296 位" - 没有。您从该计算中获得字节。在理论上一个 32 位 CPU 可以寻址 4GB - 但实际上由于物理设计这通常只有 2GB(虽然不知道确切的细节),并且由于操作限制而大约为 1.5GB系统
-
@a_horse_with_no_name 2GiB 限制是一种软件设计 :) 由于 MMIO,设备必须使用一些物理地址,但不能超过 2GiB。此外,32 位机器可以访问任意大小的内存,这不是寄存器大小,而是 1)总线/物理地址的大小 2)内存字的大小。尽管 OP 可能会询问 x86 在这种情况下 2) 是否减少,正如您所说的那样,字节 [但 1) 仍然可以是 32 或 36 位]。
-
@Phylogenesis 不,例如,请参阅PIC16F flash program memory。 :)
-
@i486 :我认为他/她混淆了 bits 和 bytes。 edithegodfather:您能否更新您的问题,因为其中有错误?谢谢。