代码之家  ›  专栏  ›  技术社区  ›  Humble Thinker

为什么32位机器的最大容量为4GB?

  •  2
  • Humble Thinker  · 技术社区  · 8 年前

    这是我进行任何研究之前的第一个逻辑:

    因为它是32位机器,所以会有2^32个空格(约40亿) 但它们是以位为单位的,所以我必须将其转换为字节。(约40亿/8) 然后我得到约5亿字节,或约500MB。

    我真的很好奇为什么不是500 MB,所以我发现了这个:

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

    但我又一次感到困惑,因为每个内存地址都是 32位长 其中有42亿。每个内存地址是4个字节,而不是1个字节。因此,它将是4.2 Giga*4字节=16.8 GB。

    很明显,我的逻辑中遗漏了一些东西。有任何澄清吗?

    3 回复  |  直到 4 年前
        1
  •  1
  •   MSalters    8 年前

    您混淆了地址的长度和位于该地址的内存大小。它们是非常不相关的。

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

        2
  •  1
  •   Henry    8 年前

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

        3
  •  0
  •   Teodor Vladutu    8 年前