一、概述
指令解码是将指令中携带的信息提取出来,处理器使用这些信息控制后续的流水线来执行这条指令。指令集的复杂程度直接决定了指令解码的工作量。
对于RISC指令集而言,指令的长度是固定的,如MIPS和ARM指令的长度都是32位,这样很容易将指令分辨出来,并且RISC处理器的寻址方式也比较简单。
除此之外,影响处理器解码复杂度的因素还有每周期可以解码的指令个数,每个指令都对应一个完整的解码电路,所以对于一个周期可以解码n条指令的处理器而言,就需要n个解码电路,这就增加了解码电路的复杂度。
然而,RISC指令集中仍存在一些比较“另类”的指令,这些指令不能使用一般指令的处理方式,需要特殊处理。例如乘累加指令,该指令的目的寄存器个数多于一个,这会影响后续寄存器重命名。由于这些“另类”的指令使用频率不高,没有必要在后续的流水线增加硬件来对它们进行处理,只需在解码阶段将它们转换为一般的指令,后面的流水线按照普通指令的处理方式来执行它们即可。