流水线技术知识要点
编程巫师
2024-04-18 00:10
流水线(pipeline)技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。流水线是Intel首次在486芯片中开始使用的。流水线的工作方式就像工业生产上的装配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即取指令、译码、执行、写回结果,浮点流水又分为八级流水。
流水线原理
对于一条具体的指令执行过程,通常可以分为五个部分:取指令,指令译码,取操作数,运算,写结果.其中前三步一般由指令控制器完成,后两步则由运算器完成
若采用顺序执行的方式,则执行前三步时运算器空闲,执行后两步时指令控制器空闲.
流水线技术的基本原理是:指令控制器完成了对第一条指令的处理后,不等待运算器完成后续的处理直接开始对第二条指令的处理.这里的指令控制器和运算器只是对参与指令处理的部件的举例.
时空图是对处理状态的图形描述,横坐标为时间,纵坐标离散为处理的阶段(表示对处理部件的占用,即空间).每一块代表某一指令的某一处理阶段,标有同一序号的各阶段的块表示某一指令的处理流程.
各阶段等时长的时空图:
各阶段不等时长的时空图:
吞吐率TP是衡量处理能力的主要指标,其含义为单位时间内处理的指令数.
对单指令流水线而言,最大吞吐率TPmaxTPmax为处理过程中用时最长阶段单次耗时的倒数.
实际吞吐率则根据定义来计算.
由时空图我们可以计算出处理n条指令所花费的时间T,并可以计算出采用顺序处理消耗的时间T顺T顺.
定义加速比S=T顺TS=T顺T.
提高流水线性能
瓶颈
瓶颈是指处理时间较长的处理阶段,从上面各阶段不等长的时空图可以看出这些处理阶段使得后续阶段需要等待其完成浪费了处理时间.
对于瓶颈阶段的解决方案可以采用将瓶颈阶段拆分为多个较短的处理阶段,或者采用多个处理部件并行处理.
将瓶颈阶段拆分后单指令处理时间未变,但是多条指令总体处理时间缩短.
相关
相关是指流水线处理过程中相邻或相近的任务之间存在依赖制约关系.相关将会降低流水线的处理效率,因此,需要采取措施避免相关性带来的损害.
流水线功能繁杂,种类也非常多;如果按照处理级别来分类,流水线可以有操作部件级、指令级和处理机级;如果按照流水线可以完成的动作的数量来分类,又可以分为单功能和流水线技术
多功能流水线;如果按照流水线内部的功能部件的连接方式来分类,则有线性流水线和非线性流水线;按照可处理对象来分类,还可以有标量流水线和向量流水线。流水线的分类:
1、按处理级别分:
功能部件级:在实现较为复杂的运算时采用
指令级:将一条指令执行过程分为多个阶段
处理器间级:每个处理器完成其专门的任务。
相关性分为几类:
结构相关:并行执行的指令需要占用同一硬件资源产生冲突.
数据相关:处理的某一阶段需要等待上一阶段的结果产生数据相关,如上文瓶颈阶段
控制相关:当流水线执行条件转移等指令时产生控制相关.
处理控制相关的方法除了上文提到的对瓶颈的处理外还有定向和互锁硬件.
定向设备是流水线段之间直接的连通同路,又称旁路或短路.
流水线互锁硬件在发现存在数据相关时先让流水线暂停工作,直到数据相关消失为止.
条件转移指令导致已经进入流水线的指令不再执行,需要将转移目标处的指令重新加入流水线中,降低效率.
处理控制相关的主要思路是分支预测,分支预测分为静态预测和动态预测两种.
静态预测比较重要的方法是编译器预测,比如对于一个循环,编译器认为继续循环比跳出循环的概率要大.
动态分支预测的一种方法是采用分支历史表,通过一或两个标志位记录该分支处历史信息,用于预测分支.
分支目标缓冲器则是存储历史跳转目标,若当前条件与历史吻合时则用历史记录进行跳转.
延迟分支是分支预测之外的另一种处理方法,它利用编译器对指令重排,通过插入空指令或有用指令尽量使流水线处于充满状态.
将分支指令延迟为长度为n的分支指令,其后紧跟n个分支延迟槽,利用延迟槽中的指令掩盖必须插入的停顿周期,减少分支开销.
中断
中断分为内部中断和外部中断,内部中断主要是异常处理中断,外部中断则类型很多发生比较随机,如IO中断.
断点分为不精确断点和精确断点.不精确断点的处理机制是禁止新的指令进入流水线,已进入的指令执行完毕后流水线中断.
除了中断位置不精确外,如果是异常中断不精确断点会使异常指令继续执行容易产生错误结果.
精确断点则是立即中断,流水线中现场信息全部保留下来以便在中断返回后恢复现场.
其它
提高流水线深度(段数)是经典的加速方法,但也伴随着许多问题.现在有很多新技术用于加速处理.
指令调度是在一段程序中重新排序指令,使得程序中相关指令尽可能消除.
乱序执行则采用跳过相关指令,先执行不相关指令的方法加速.
超标量处理机基于重复硬件运行多条流水线,使得在一个时钟周期内可以发射或流出多条指令.
超流水线处理机将阶段更加细分,级数大于等于8级的流水线称为超流水线.
超长指令字是把不相关的多条指令组合在一起作为一条位数超长的指令一同发射到流水线中,并行执行.
总结:看了文章,如果有问题可以直接提出来和大家交流,还想了解更多关于这方面的知识,一定要登陆编程学习网哦~
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341