【问题标题】:Word length of computer电脑字长
【发布时间】:2019-01-12 11:24:21
【问题描述】:

用于指定内存位置的最大可能地址大小通常是一个硬件字” 上述声明的真正含义是什么?例如在 8086 微处理器中,地址线有 20 位,而 16 位是字长,该位置的地址总是 20 位,比字长位(16 位)多,那么最大可能的地址大小可以是多少一个典型的硬件字,在这种情况下它比字长位多。 我可能误解了上面的说法,请澄清一下

【问题讨论】:

标签: cpu-architecture


【解决方案1】:

有一个单一的“字长”是一种过度简化,有时适合/有效,但特别是在 x86 的情况下,它真的不1

物理地址(线性地址)在大多数 8 位 CPU 和 16 位 x86 中大于一个字,因为将它们缩小会不方便。

您使用多个寄存器来创建地址; 8086实模式下为(seg << 4) + offset

在 8080 或许多其他 8 位 CPU 中,一对 8 位整数寄存器构成一个 16 位地址。 (https://retrocomputing.stackexchange.com/questions/5121/why-are-first-four-x86-gprs-named-in-such-unintuitive-order)


脚注 1:在 x86 上,本机支持多个操作数大小,非对齐内存访问(在现代 x86 上)通常没有任何损失,除非您跨越缓存线边界,指令是可变长度的,等等,因为 P5 Pentium 64 位对齐的加载/存储保证是原子的(只有 FPU 才有可能,整数寄存器没有那么宽)。所以手册基本保证了数据总线比寄存器宽。 (直到 16 字节向量寄存器和 x86-64...)


许多 RISC 机器非常面向字(通常是 32 位字),早期的物理实现可能实际上有 32 位总线等等。现代 32 位 RISC CPU 通常具有支持 64 位 double 的 FPU,并且通常可以有效地从缓存中加载它们。它们通常也具有缓存,因此与内存之间的传输以 32 或 64 字节的突发形式发生。

所以在早期的 32 位 MIPS 微架构中,很多东西都是 32 位的。

但即使是像 MIPS 这样的大多数 RISC CPU 也支持字节和半字加载/存储;大多数实现不必加载/修改/存储包含字来修改字节。 (与只有字可寻址内存的机器不同)。

【讨论】:

  • “硬件词”似乎与“词”不同。我认为 OP 询问的声明来自this Wikipedia 文章的第二段。
  • 维基百科的文章其实写得很好。我认为这里的区别在于从 ISA 的角度来看的一个词(例如,GPR 的大小)和从实现(硬件)的角度来看的一个词(例如,数据总线宽度)。也许写这句话的人已经对许多处理器进行了调查,并注意到地址大小通常与硬件字长相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
  • 2019-06-14
相关资源
最近更新 更多