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

Memory 字/字节可寻址机器之间计算地址位的差异,memory,computer-architecture,Memory,Computer Architecture,我试图学习内存寻址(这是针对Uni的),我不确定当我需要计算地址位数时,一个字可寻址内存会有什么效果 我会先解释一下我所理解的 为了计算地址位数,我使用:log2(n),其中n是内存的位数。也就是说,对于1gb(1024mb*1024*1024)=1073741824位,因此log2(1073741824)=30意味着1gb内存需要30个地址位。我想我的理解是正确的 我不确定的部分是字节可寻址内存和字可寻址内存,以及它如何影响地址位数 问题是: 是否上述示例仅适用于字节可寻址,并且如果例如内存是

我试图学习内存寻址(这是针对Uni的),我不确定当我需要计算地址位数时,一个字可寻址内存会有什么效果

我会先解释一下我所理解的

为了计算地址位数,我使用:log2(n),其中n是内存的位数。也就是说,对于1gb(1024mb*1024*1024)=1073741824位,因此log2(1073741824)=30意味着1gb内存需要30个地址位。我想我的理解是正确的

我不确定的部分是字节可寻址内存和字可寻址内存,以及它如何影响地址位数

问题是: 是否上述示例仅适用于字节可寻址,并且如果例如内存是字可寻址的,并且使用16位或32位字,则所需的地址位数将更少(16位和32位字的情况下为1/2或1/4)

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

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


我已经搜索了关于这个问题的其他问题,但没有找到一个答案(或者我知道答案)。这是一个例子mplehttps://stackoverflow.com/questions/19528750/byte-word-addressable 实际上似乎在问类似的问题,但OP似乎错误地提出了问题,指定内存为4M x 16(而不是4mb x 16位),导致人们将内存计算为64mb。

首先,您需要小心处理位和字节,您的原始示例似乎处理位,每一个都是您真正想要了解的字节。当我们处理位可寻址内存或字节可寻址内存时,它确实很重要。所以,让我们从字节可寻址或字可寻址内存的角度来讨论

如上所述,您对如何获得寻址内存所需的位数的分析是正确的;但它是可以推广的。为了获得完全寻址内存所需的最小位数,我们需要知道可以寻址多少个单元大小的内容。在您的例子中,您正在计算寻址1GB(千兆位)内存所需的地址数。我们也可以很容易地用字节来表示,为了对1GB内存进行字节寻址,您需要知道可寻址内容(字节)的数量,然后取其log2。所以,有很多东西是很容易得到的,(1GB中有1024^3或1G字节),所以我们只需要记录2;log2(1g)=log2(1024*1024*1024)=3*log2(1024)=3*10=30。所以,我们需要30位来完全处理这个空间

现在让我们用语言交谈。首先是知道单词的大小。字大小不是严格意义上的32位或16位,它可以是一个值范围,通常取决于处理器决定调用的字(或其规格)。让我们以32位字为例

既然我们有了单词大小,我们就需要知道内存大小。让我们假设与以前相同的1GB,但现在我们对其进行字寻址(现在是字寻址内存,字大小为32位或4字节)。所以,就像以前一样,我们需要知道内存大小中有多少个可寻址的东西(现在是单词)。这一次它不是1g,因为我们的可寻址对象现在的大小是4b而不是1b。所以我们需要取1gb的内存大小除以字大小(1gb/4b=0.25g)。就像以前一样,现在我们有了可寻址事物的数量(0.25g),我们只需要知道它的log2;log2(0.25G)=log2(256*1024*1024)=log2(256)+2*log2(1024)=8+2*10=28

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