Word的大小和寻址

Jus*_*tin 8 architecture memory ram operating-system cpu-word

我在记忆信息方面让自己感到高兴,而且我对Word的大小感到困惑.根据我的理解,Word不是通用定义的大小,而是由特定系统定义的大小(以字节数表示).

根据维基百科:

因此,具有32位存储器地址的处理器可以直接访问4 GiB的字节可寻址存储器.

这是否意味着32位处理器可以处理4,294,967,295个?32位窗口限制为4GB的RAM,但阅读一个单词的含义让我感到疑惑.Windows中的每个Word都等于1个字节吗?单词的大小是否可以是更大的字节数,32位处理器能够处理8GB,10GB,12GB甚至更多的内存?

Ale*_*nze 9

这是否意味着32位处理器可以处理4,294,967,295个字?

这取决于CPU以及你如何看待它.

有些CPU无法处理小于单词的任何内容.16位德州仪器数字信号处理器就是一个很好的例子.他们的C/C++ char(AKA byte)shortint类型都是相同的大小,16位.这是可以使用唯一地址(指针)寻址的最小内存单元,同时也是机器字.由于这些处理器上的数据地址/指针是16位,因此它们最多可以在数据存储器中寻址2 16个16位字.

现在,如果你回到32位操作模式的x86 CPU,事情会有所不同.存储器的最小可寻址单元是8位字节,最大的是32位字(机器字).地址和指针也是32位(如果我们忽略分段和页面转换).这让我们有2 32个唯一的内存地址.而且,通过它们,您可以访问最多2 32个 8位字节的内存.但是,使用2 32个唯一地址可以解决多少32位字?答案取决于您是否需要非重叠或重叠的单词.你看,x86 CPU可以在任何地址访问32位的内存单元,而不仅仅是4个字节的多个地址.

你不只是在x86上限于此:

  0 1 2 3 4 5 6 7  <- address
  \word/  \word/
Run Code Online (Sandbox Code Playgroud)

这些都是x86上32位字访问的有效地址:

  0 1 2 3 4 5 6 7  <- address
  \word/  | | | |
    \word/  / | |
      \word/  / |
        \word/  /
          \word/
            ...
Run Code Online (Sandbox Code Playgroud)

那么,在x86上使用2 32个唯一地址可以解决多少32位字?如果你在讨论所有唯一可寻址和重叠的问题,那就是其中的2 32个.如果,OTOH,你在谈论所有独特的可寻址和非重叠的那些,那就是其中的2 30个.

OTOH,如果您的32位CPU使用非32位地址,则总计数将不同.