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

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

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

干杯

答案1

一句话,在大多数架构中,是单次操作中可以传输到工作内存和从工作内存传输的最大数据。

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

所以,你的 CPU 将能够寻址 64KB (2^16)但一次操作只能传输 8 位。

答案2

机器词,或者通常只是单词是 CPU 整体上可以使用通用指令操作的最大数据单位。这与内存寻址无关。

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

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

答案3

另外 8 位字是什么意思?

在上下文中,字长与地址大小一起用于描述内存总线。有 16 位流出到内存,因此它可以选择 64ki 个位置。然后,每个地点包含8位。

这里的字大小可能与 CPU 计算单元大小匹配或不匹配,并且可能与寻址中的逻辑粒度匹配或不匹配。

例如,CPU 可能会宣传 16 位总线(用于此目的)。它在指令中使用 16 位地址,并且像您的示例一样具有 64ki。但它有15位地址总线和 16 位数据总线。它只需要 32ki 个地址,并且每个位置总是获得 2 个字节。(如果一条指令需要 1 个字节,它会分派缺少最少位的地址,在该步骤中获取两个字节,然后查看所需地址的最少位以决定使用哪一半。)

请注意,其他人提到的存储体切换、PAE 等与此无关。内存管理单元可能使用 16 位地址,并具有 20 位硬件地址,因此 CPU 需要切换和映射事物以利用可寻址的 RAM 芯片的实际 20 位地址范围。

确保在答案中指定单位。 “64ki”。什么?8 位字,因此(仍然)是 64ki字节可寻址 RAM。这一步消除了混乱,使此类问题变得简单。

答案4

这个问题有两个方面:你的教练可能希望你告诉他什么,以及现实情况是什么。

首先,你的教练可能希望你告诉他什么。

“16 位可以寻址 2^16 个内存位置,每个位置为 8 位。因此,我们可以寻址 524288 位(65536 个八位字节)内存。”

然而,这反映出了一种过于简单化的世界观。现实情况要复杂得多,要给出明确的答案需要更多信息。实际系统可能比这更复杂,其中包括:

  • 许多处理器没有专用的 IO 映射,因此部分内存地址空间可能需要用于内存以外的用途。
  • 处理器的“字长”不一定与内存数据总线的宽度或内存的最小可寻址单元相同。
  • 有些总线允许移动不同大小的数据单元。这需要进一步寻址,而这可能需要主地址总线的位来处理,也可能不需要。
  • 有些总线会在同一线路上复用不同的信号。例如,SDRAM 使用相同的地址线两次发送“行地址”和“列地址”。
  • 许多系统使用存储体切换方法来允许程序访问比处理器本身能够寻址的更多的内存。

相关内容