根据Miles Murdoca和Vincent Heuring的“计算机架构和组织”,
CISC指令不适合流水线架构。对于 流水线工作有效,每个指令都需要 与其他指令的相似之处,至少在相对方面 指令的复杂性。
为什么这是真的?指令复杂性是什么意思,并非所有指令都需要一个时钟周期才能开始执行;如果指令正在读取或写入内存,则需要更长时间,但RISC处理器读取也会写入内存(当然)?
答案 0 :(得分:11)
指令的“复杂性”与它们的大小和格式可以变化的程度有关。以x86 IA32(Intel 32位)架构为例,即CISC。指令的大小可以在1到12个字节之间,并且它们的格式也有很大差异(格式是每个字段使用多少位,这些位所在的位置等等)。
这意味着只有在您开始解码后才能知道何时完成取指令。有些指令只需要一个循环来获取,有些则更多,这使得流水线过程变得复杂。
另一方面,所有ARM指令(RISC架构)都有4个字节。因此,一旦获取4个字节,您就知道可以将这些字节发送到管道的解码阶段,并且您可以立即开始获取下一条指令。
答案 1 :(得分:1)
这意味着对于CISC架构,通常存在比RISC相对更长的指令。所以调度比较棘手。在CISC中,通常会混合使用更简单的指令,以及需要更长时间的更复杂的指令。因此,在管道中存在称为危险的事物,这些事物可能会导致流畅的流水线问题。 例如,X86浮点指令将比x86加载或存储更长。