如果 CPU 有 16 位地址总线和 8 位字,它可以寻址多少内存?

eZ_*_*rry 23 memory cpu

我正在为期末考试而学习,并对以下问题感到困惑。如果 CPU 有 16 位地址总线和 8 位字,它可以寻址多少 KB 的内存?我的理解告诉我它可以寻址 64KB,但是要做到这一点,我只使用了 2 ^ 16 = 65,536。该计算实际上从未考虑过 8 位字,所以我不确定它是否正确。还有8位字是什么意思?

干杯

Ove*_*ind 39

在大多数体系结构中,一个字是可以在单个操作中传入和传出工作内存的最大数据块。

用于指定内存位置的最大可能地址大小通常称为硬件字。

因此,您的 CPU 将能够寻址 64KB (2^16),但只能在单个操作中传输 8 位。

  • @davidgo 仍然 PAE 需要适当调整地址总线的大小。支持 PAE 的 Intel CPU 具有 36 位地址总线。 (8认同)
  • PAE 或多或少是特定于现代 x86 CPU 的品牌/功能名称。是的,间接寻址大量内存的方案已经实施了很长时间(例如 XMS),这些方案最终将内存子系统视为可以不断重新配置以将不同内存暴露到较小地址空间的外围设备。另外,请参阅旧式 x86 的分段内存模型... (6认同)
  • @Overmind 你应该澄清一下你的答案。没有人真正使用单个 **B** 作为一个单位,原因正是这里发生的事情 - 你混淆了位和字节。OP 声明“8 位字* - 因此每个字有 8 位(1 个字节)并且只能在一次操作中传输它。256 只是每个字可能具有的值的数量,而不是传输了多少。 (6认同)
  • 不太确定我理解你的那句话“只能在单个操作中传输256B(2^8)”?它只能在一次操作中传输 1 个字 = 1 个字节 = 8 位。 (5认同)
  • 我确定这个答案是老师想要的答案,但它实际上正确吗?你不能使用像 PAE 这样的东西来允许 3 级(甚至更多)允许 CPU 访问超过 64KB 的空间吗?我不是硬件专家,但是 Commodore 128 难道不是通过允许切换 RAM 库来设法在 8 位字、16 位总线上做这样的事情吗? (3认同)
  • 投反对票是因为可以在单个操作中传输的内存量和地址解析单位是您正在混淆的不同概念。这些尺寸不匹配是很常见的。另一个答案更准确。 (3认同)
  • @davigo 不仅仅是 C128 使用银行业务来解决超过 64KiB 的问题。这是那个时代许多家用电脑的常用技术。 (2认同)
  • 实际上,一次通过CPU和RAM传输多少数据也与字长无关。那将是数据总线宽度。想想具有 64 位字和 256 或 512 位总线宽度的现代 Intel CPU。 (2认同)

Dmi*_*yev 21

机器字或通常只是是 CPU 可以使用通用指令作为一个整体操作的最大数据单元。这与内存寻址无关。

重要的是地址解析单位,即使在 16/32/64 位架构上,它通常也是一个 8 位字节。它不必等于机器字大小,但可能是您的情况。

一个 8 位可寻址单元与 16 位地址总线相结合,相当于 CPU 可以寻址的 64KiB RAM。

  • @MartinBonner 不过,它与 CPU 字长没有直接关系。 (4认同)
  • 但是我使用过地址解析单位为 16 位的机器。(所以这个概念是有意义的。) (3认同)