根据Miles Murdoca和Vincent Heuring的"计算机体系结构和组织",
CISC指令不太适合流水线结构。对于流水线要有效工作,每条指令都需要与其他指令的相似性,至少在相对方面指令复杂性。
为什么这是真的?指令的复杂性意味着什么;不是所有指令都需要一个时钟周期才能开始执行吗?如果指令正在读取或写入内存,那么它将花费更长的时间,但RISC处理器也在读取或写入存储器(当然)?
指令的"复杂性"与它们的大小和格式的变化程度有关。以x86 IA32(英特尔32位)架构为例,它就是CISC。指令的大小可以在1到15个字节之间,它们的格式也有很大的变化(格式是每个字段使用多少位,这些位位于哪里,等等)。
这意味着,只有在开始解码指令后,你才能知道何时完成了提取。有些指令只需要一个周期就可以提取,而另一些则需要更长的时间,这会使流水线过程变得复杂。
另一方面,所有ARM指令(RISC体系结构)正好有4个字节。因此,一旦您获取了4个字节,您就知道可以将这些字节发送到管道的解码阶段,并且可以立即开始获取下一条指令。
这意味着在CISC体系结构中,通常有比RISC相对更长的指令。因此,日程安排更为棘手。在CISC中,通常会混合使用更简单的指令和耗时更长的更复杂的指令。因此,在管道中存在所谓的危险,可能会给管道的顺利运行带来问题。例如,X86浮点指令将比X86加载或存储更长。