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