【问题标题】:Why 5 bits are most often 0?为什么 5 位通常为 0?
【发布时间】:2015-04-12 05:21:34
【问题描述】:

我研究了 MIPS,如果指令不是移位指令,我发现指令的 5 位始终为 0。这似乎是对资源的浪费,是否必须强制执行所有指令具有相同长度的规律性的简单性?为什么移位指令不能长 5 位,而其余指令使用这些位来处理更多溢出?

【问题讨论】:

  • 5 位长的指令需要位寻址架构。
  • 此外,如果大多数指令都是 32 - 5 = 27 位,那将不会那么容易。在硬件中实现指令获取会很困难和/或内存模块必须非常奇特。
  • 他们甚至不需要多 5 位,立即移位只使用两个寄存器字段,因此他们可以重新使用剩余的一个进行计数。但是 I 格式不能真的错过 5 位,而且无论如何 27 位是一个愚蠢的宽度。
  • 该字段用于对浮点运算中的目标寄存器进行编码。一些浮点运算需要全部四个 5 位字段。

标签: assembly mips bit machine-code


【解决方案1】:

当 MIPS 处理器在 80 年代问世时,它是第一个所谓的 RISC 处理器之一,这是一个革命性的概念。当时的大多数处理器(8080 系列、8086 系列、Z80、6502、6800)都针对高效的指令编码,具有可变长度的指令(例如,它们可能占用 1、2、3 或 4 个字节)。这提供了良好的代码密度,但是,指令的解码和执行是一个状态机,状态的数量取决于确切的指令。

为了更快地执行,MIPS 处理器发生了革命性的变化:

  • 所有指令都存储在一个 32 位字中
  • 指令解码极其简单,大部分位应直接映射到硬件
  • 所有指令都采用相同数量的“状态”来执行
  • “状态”是在流水线而不是状态机中实现的,这意味着指令吞吐量是每条指令 1 个周期而不是 N(实际上流水线中同时有 N 条指令)

前两点是代码密度低的原因。 MIPS 故意使程序占用比应有的更多的 ROM/RAM 空间,以便更有效地执行它们。

终于 ARM 做了一些可以被认为是“两全其美”的事情:可以在 THUMB(更高的代码密度,更低的性能)和 ARM(更高的性能,更低的代码密度,但仍然比 MIPS 做的更好)之间切换) 取决于每个例程的具体需要。这可能就是 ARM 如此受欢迎和无所不在的原因。

【讨论】:

  • 较新的 MIPS 处理器可以对指令集实施 MIPS16 或 MicroMIPS 扩展,从而提供类似 THUMB 的代码压缩。
  • @markgz 哦,我什至不知道。谢谢你通知我!可悲的是,这些天 MIPS 架构已不再使用那么多了 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 2023-03-26
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
  • 2018-05-01
  • 1970-01-01
相关资源
最近更新 更多