指令管线化是为了让
计算机和其它
数位电子装置能够加速
指令的通过速度(单位时间内被执行的指令数量)而设计的技术。
管线化是假设程式执行时有一连串的指令要被执行(垂直坐标i是
指令集,水平坐标表时间t)。绝大多数当代的CPU都是利用
时脉驱动。
而CPU是由内部的
逻辑门与正反器组成。当受到
时脉触发时,正反器得到新的数值,并且
逻辑门需要一段时间来解析出新的数值,而当受到下一个时脉触发时正反器又得到新的数值,以此类推。而借由
逻辑门分散成很多小区块,再让正反器链接这些小区块组,使逻辑门输出正确数值的时间
延迟得以减少,这样一来就可以减少
指令执行所需要的周期。
举例来说,典型的
RISC管线被分解成五个阶段,每个阶段之间使用正反器链接。
危害:当一名
程序员(或者组合者/编译者)编写组合代码(或者汇编码)时,他们会假定每个
指令是循序执行的。而这个假设会使管线化无效。当此现象发生后程式会表现的不正常,而此现象就是危害。不过目前有提供几种技术来解决这些危害像是
转发与
延迟等。
未管线化的架构产生的效率低,因为有些CPU的模组在其他模组执行时是闲置的。管线化虽并不会完全消除CPU的闲置时间,但是能够让这些模组并行运作而大幅提升程式执行的效率。
管线在
处理器的内部被组织成层级,各个层级的管线能半独立地单独运作。每一个层级都被管理并且链接到一条“链“,因而每个层级的输出被送到其它层级直至任务完成。
处理器的这种组织方式能使总体的处理时间显著缩短。
但并不是所有的
指令都是独立的。在一条简单的管线中,完成一个
指令可能需要5层。 要在最佳性能下运算,当第一个
指令被执行时,这个管线需要运行随后4条独立的指令。如果随后4条
指令依赖于第一条指令的输出,管线控制逻辑必须插入
延迟时脉周期到管线内,直到依赖被解除。而
转发技术能显著减少延时。凭借多个层,虽然管线化在理论上能提高效能,优胜于无管线的内核(假设
时脉也因应层的数量按比例增加),但事实上,许多
指令码设计中并不会考虑到理想的执行。