2016-09-26 443 views
2

这是我的任何研究之前,第一逻辑:为什么32位机器的最大容量是4GB?

因为它是一个32位的机器,将有2^32位(这是约4十亿) ,但它们在位,所以我必须把它转换成字节。 (~4亿美元/ 8) 然后我得到~5亿字节,或~500MB。

实际上,我是好奇,为什么它不是500 MB,所以我发现这一点:

“根据定义,一个32位处理器使用32位指每个内存字节的 位置2^32 = 42亿,这意味着一个长32位的内存地址 只能引用42亿个 的唯一位置(即4 GB)。“ (original source

但我很困惑,因为再次,每一个内存地址是32位长,并有4.2十亿人。每个存储器地址是4个字节,而不是1个字节。因此它将是4.2千兆* 4字节= 16.8 GB。

很明显,我错过了我的逻辑中的东西。任何澄清?

回答

1

您将地址的长度与位于该地址的内存大小相混淆。他们非常无关。

到目前为止,32位机器的最常见选择是用2^32个唯一地址组织存储器,每个地址都保存8位(1字节)。为了唯一地寻址每一位,你需要32 + 3位。实际上,内存以128或256位块(8或16字节)加载到缓存中,因此物理上只需要32-3或32-4地址线。那么为什么我们仍然使用术语32位?这是因为地址寄存器实际上是32位大的。有“加载字节”指令,但通常不是“加载位”。 (如果有的话,你通常有8个)

+0

噢,那么如果我在我的内存位置0x00004000处有0x12345678,那么数据(0x12345678)会被切割成4块,最后占用4个内存位置? 啊!那是什么时候发生大大小小的排序。我应该知道的。 那么我真正的问题是,当我们有4个字节的内存地址时,为什么每个内存地址只有1个字节?为什么我们不能为每个地址提供更多数据? –

+0

@ RivenLv3:对于某些专用产品,我们确实看到每个地址使用多于1个字节。但考虑到通用文件是字节大小的,就像网络通信协议一样。具有非标准尺寸会打破互操作性。 – MSalters

1

在典型的现代机器中,每个字节可单独寻址。因此,4G地址意味着4G字节。

0

32位CPU意味着它可以访问2^32 = 42,94,967,296个内存位置(每个内存位置为1个字节长)。如果我们将内存的4294967296个字节除以1024,我们将得到4194304 KB的内存。此外,如果我们再次以1024分割,我们得到4096 MB的内存,这是4 GB。

相关问题