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甚至更多的内存?
这是否意味着32位处理器可以处理4,294,967,295个字?
这取决于CPU以及你如何看待它.
有些CPU无法处理小于单词的任何内容.16位德州仪器数字信号处理器就是一个很好的例子.他们的C/C++ char(AKA byte)short和int类型都是相同的大小,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位地址,则总计数将不同.