【问题标题】:Difference between memory size and memory locations?内存大小和内存位置的区别?
【发布时间】:2021-11-18 08:49:56
【问题描述】:

我试图了解 8 位 架构主内存的 内存大小 和位置,只要告诉我一个内存单元是否包含 8 位 = 1 字节存储/size,那么 CPU 从该内存的特定单元中获取多少指令数据,是 8 位(1 字节)还是 2^8= 256 位?如果您的答案是 256 位,那么为什么书中写到每个单元包含 8 位而不是 256 位,据我所知,如果该单元包含 8 位,CPU 应该获取 8 位指令。

【问题讨论】:

  • 为什么你认为它可能是 2^8 = 256 位(32 字节)?不是,但如果不了解您为什么认为它可能是这样,我们无法纠正您可能想知道的任何误解。
  • @peter 我意识到这是一个误解,这就是我寻求帮助的原因,如果我做错了什么对不起
  • 下次您有关于误解的问题时,请说明您如何得出错误答案的原因。在这种情况下,根本不清楚是什么误解导致了这种猜测。我想不出一个,两个答案不得不猜测。 (我还想知道这台机器上的内存地址本身是否为 8 位宽,即总共只有 256 字节的内存。在现实生活中,大多数 8 位架构都有 16 位指针,因此它们可以有一个有用的 8-位字节,但假设 8 位机器没有它是可能的。)
  • 您接受的答案暗示此 8 位体系结构具有缓存,行大小为 32 字节。我猜可能,但很奇怪(通常 8 位 CPU 过于简单,无法拥有任何缓存),并且当您访问一个单元格时拉入周围的缓存线(总共 32 个单元格,256 位)与获取 32 个字节不同来自那个单元格,因此它与您在问题中的描述不符。

标签: memory memory-management cpu-architecture memory-address


【解决方案1】:

我们需要数字计数的概念,N,不同值的诗句数,V,给定的数字基数,B,用于数字。

V = BN

该公式适用于以 10 为底的数字:例如,使用十进制数字,底数为 B=10,N=3 位的计数可以用这三位数字表示 V=1000 个不同的值,范围:000-999 .

当基数为 2 时,一个数字是位。 N=8 位的计数可以表示/存储/通信 V=256 个不同的值,范围:00000000-11111111)。

因此,我们必须将我们的数字计数与这些数字可以采用的不同值的数量分开。

反之,公式为:

N = logB(V)

所以,log2( 256 ) = 8,这表示如果我们希望能够有 256 个不同的值,我们需要 8 位。

8 或二进制数字可以表示 256 个不同的或数字。

【讨论】:

    【解决方案2】:

    您的问题需要进一步澄清,但对于简单的情况,假设其指令大小为 8 位,一个非常基本的 CPU 一次处理一条指令将从该存储单元读取 8 位。

    然而在现代 CPU 架构中,它只包含多级指令缓存,并使用它们将多条指令从一次读取存储到主存储器。 (即 CPU 从主存储器读取一个块(多个存储单元)并一次获取多个指令将它们存储到缓存中)。 虽然,您在问题中没有提到缓存,但这本书可能意味着 CPU 将读取代表多条指令的多个块/位置并将它们存储在缓存中。

    【讨论】:

      猜你喜欢
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      • 2016-08-29
      • 2012-08-11
      • 2014-06-07
      相关资源
      最近更新 更多