计算字/字节可寻址机器之间的地址位的差异

时间:2014-10-14 23:41:42

标签: memory computer-architecture

我试图了解内存寻址(这是针对Uni),并且我不确定当我需要计算地址位数时,字可寻址内存会产生的影响。

我将首先解释(我认为)我理解的内容。

要计算我使用的地址位数:log2(n)其中n是内存的位数。对于1gb(1024mb * 1024 * 1024)= 1073741824位,因此log2(1073741824)= 30含义一个1GB的内存需要30个地址位。我想我正确理解。

我不确定的部分是字节可寻址存储器与字可寻址存储器以及它如何影响地址位的数量。

问题: 是上述示例仅对字节可寻址是正确的,并且如果例如存储器是字可寻址的并且使用16位或32位字,那么所需的地址位数将更少(在该情况下为1/2或1/4) 16位和32位字)??

我的想法是,如果一个单元在一个字节可寻址机器中保持8位,那么单字可寻址存储器中的单元将保持16位或32位,因此所需的地址位应该更少。

进一步说明 - 我知道现在大多数内存都是字节可寻址的,并且计算机中的字大小特定于处理器/总线,但是我正在处理的问题没有提及,只是询问效果字节/字可寻址会的。

我已经搜索了其他有关此问题的问题,但未找到答案的问题(或者我理解为可以回答)。这个例如https://stackoverflow.com/questions/19528750/byte-word-addressable实际上似乎问了类似的事情,但OP似乎通过指定内存为4M x 16(而不是4mb)错误地发布了问题x 16bit)引导人们将内存计算为64mb。

1 个答案:

答案 0 :(得分:1)

首先,你需要小心你的位和字节,你原来的例子似乎处理位,每个你似乎真的想知道字节。当我们处理位可寻址存储器或字节可寻址存储器时,这很重要。所以,让我们谈谈字节可寻址或字可寻址内存方面的事情。

如上所述,您对如何获取寻址内存所需位数的分析是正确的;但它可以推广。为了获得我们需要完全寻址存储器的最小位数,我们需要知道我们可以解决多少单位大小的事情。在您的情况下,您计算的是需要寻址1 Gb(千兆位)内存的地址数。我们可以很容易地以字节为单位进行操作,为了对1 GB(千兆字节)内存进行字节寻址,您需要知道可寻址事物(字节)的数量,然后获取它的log2。因此,很容易得到的东西,(1 GB有1024 ^ 3或1 G字节)所以我们只需要log2那个; log2(1 G)= log2(1024 * 1024 * 1024)= 3 * log2(1024)= 3 * 10 = 30.因此,我们需要30位来完全寻址该空间。

现在让我们用语言说话。首先是知道单词大小。字大小不是严格的32或16位,它可以是一系列值,通常取决于处理器决定调用一个字(或规范)的任何值。让我们举例说明32位字。

现在我们有一个字大小,我们需要知道内存大小。假设从前面开始使用相同的1 GB,但现在我们对它进行字寻址(现在它是一个字可寻址存储器,字长是32位或4字节)。因此,和以前一样,我们需要知道内存大小中可寻址事物(现在它的话)的数量。好吧,这次它不是1 G,因为我们的可寻址的东西现在是4 B而不是1 B.所以我们需要把我们的1 GB内存大小除以字大小(1 GB / 4 B = 0.25 G )。和以前一样,既然我们有可寻址的东西(0.25 G),我们只需要它的log2; log2(0.25G)= log2(256 * 1024 * 1024)= log2(256)+ 2 * log2(1024)= 8 + 2 * 10 = 28.

这一切都归结为给定内存中可寻址事物(字,字节,位)的数量。由于我们通常以字节为单位给出内存大小,因此字节可寻址计算很容易,但其他人只需稍加操作即可将维度值(1 GB)转换为无量纲值(1 G,即1024 ^ 3)。