嵌入式_流水线

流水线

一、定义

流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,他们可同时为多条指令的不同部分进行工作。
• 把一个重复的过程分解为若干个子过程,每个子过程由专门的功能部件来实现。
• 把多个处理过程在时间上错开,依次通过各功能段,这样,每个子过程就可以与其
他的子过程并行进行。
流水线中的每个子过程及其功能部件称为流水线的级或段,段与段相互连接形成流水线。流水线的段数称为流水线的深度

二、表示

流水线的表示方法:时空图
• 时空图从时间和空间两个方面描述了流水线的工作过程。时空图中,横坐标
代表时间,纵坐标代表流水线的各个段。
• 4段指令流水线的时空图
在这里插入图片描述

三、特点

流水线把一个处理过程分解为若干个子过程(段),每个子过程由一个专门的功能
部件来实现。
• 流水线中各段的时间应尽可能相等,否则将引起流水线堵塞。时间长的段将成为流
水线的瓶颈。
• 流水线每一个功能部件的后面都要有一个缓冲寄存器(锁存器),称为流水寄存器。
• 作用:在相邻的两段之间传送数据,以保证提供后面要用到的数据,并把各段的处理工作相互隔离。
• 流水技术适合于大量重复的时序过程,只有在输入端不断地提供任务,才能充分发挥流水线的效率。
• 流水线并不会缩短单条指令的执行时间(由于添加了缓冲寄存器,一般会增加执行时间),而是提高指令的吞吐率

四、性能指标

吞吐率:在单位时间内流水线所完成的任务数量或输出结果的数量。
TP =n/Tk
n:任务数
Tk:处理完成n个任务所用的时间
在这里插入图片描述

五、流水线冒险

流水线技术之所以能提高性能 究其本质是利用了时间上的并行性,那它让原本应该先后执行的指令在时间上一定程度的并行起来,然而这也会带来一些冲突和矛盾,进而可能引发错误。
• 冒险(Hazard):在流水线中我们希望当前每个时钟周期都有一条指令进入流水线可以执行。但在某些情况下,下一条指令无法按照预期开始执行,这种情况就被称为冒险。
冒险分为三种:
• 结构冒险:如果一条指令需要的硬件部件还在为之前的指令工作,而无法为这条指令提供服务,那就导致了结构冒险。(这里结构是指硬件当中的某个部件)
• 数据冒险:如果一条指令需要某数据而该数据正在被之前的指令操作,那这条指令就无法执行,就导致了数据冒险
• 控制冒险:如果现在要执行哪条指令,是由之前指令的运行结果决定,而现在那条之前指令的结果还没产生,就导致了控制冒险(如:条件分支)。

猜你喜欢

转载自blog.csdn.net/Kattlin_gsc/article/details/106854477
今日推荐