04.流水线基础和性能分析
流水线基础:部件耗时相等的洗衣店
A, B, C, D need to wash, dry, and fold clothes
串行工作的洗衣店(部件耗时相等)
洗衣店用 6小时完成了4个任务(0.67t/h);
Washer使用2小时;Dryer使用2小时;Folder使用2小时;
流水工作的洗衣店(部件耗时相等)
Washer使用2小时;Dryer使用2小时;Folder使用2小时;
流水线基础:部件耗时不等的洗衣店
A, B, C, D need to wash, dry, and fold;
串行工作的洗衣店(部件耗时不等)
洗衣店用 6小时完成了4个任务(0.67t/h);
Washer使用2小时;Dryer使用2小时40分;Folder使用1小时20分;
流水工作的洗衣店(部件耗时不等)
洗衣店用3.5小时完成了4个任务(1.14t/h);
Washer使用2小时;Dryer使用2小时40分;Folder使用1小时20分;
流水线不能缩短单个任务的响应时间,但可以 提高吞吐率;
流水线中多个任务是 并行 处理的(但任务处在不用阶段);
流水技术
将一重复的时序过程分解为若干子过程,每个子过程都可有效地在其 专用功能段 上与其它子过程 同时执行,这种技术称为流水技术。
流水线的表示方式:时空图
流水过程由多个相关的子过程组成,这些子过程称为流水线的“级”或“段”。段的数目称为流水线的“深度”。
每个子过程由专用的功能段实现,各功能段的时间应基本相等,通常为1个时钟周期。
多功能流水线,是指各段可以进行不同的连接,从而完成不同的功能。
静态流水线,是指在某段时间间隔内,流水线的各段只能按同一种功能的连接方式工作。
例如:TI ASC的流水线,适合于处理一串相同的运算操作。
动态流水线,是指在某段时间内,当某些段正在实现某种运算时,另一些段却在实现另一种运算。
能提高流水效率,但同时会使流水线的控制变得很复杂。
(3)部件级、处理机级及处理机间流水线
部件级流水线,又叫运算操作流水线,是把处理机的算术逻辑部件分段,使得各种数据类型的操作能够进行流水。
处理机级流水线,又叫指令流水线,是把解释指令的过程按照流水方式处理。
处理机间流水线,又叫宏流水线,是由两个以上的处理机串行地对同一数据流进行处理,每个处理机完成一项任务。(如map-reduce)
注: 流水处理的粒度越来越大.
标量流水处理机,是指处理机不具有向量数据表示,仅对标量数据进行流水处理。
例如:IBM360/91,Amdahl 470V/6等
向量流水处理机,是指处理机具有向量数据表示,并通过向量指令对向量的各元素进行处理。
例如:TI ASC、STAR-100、CRAY-1等
线性流水线是指流水线的各段串行连接,没有反馈回路。
非线性流水线是指流水线中除有串行连接的通路外,还有反馈回路。存在流水线调度问题:
确定什么时候向流水线引进新的输入,从而使新输入的数据和先前操作的反馈数据在流水线中不产生冲突,此即所谓 流水线调度问题。
注: 通常每个流水段执行次数不同, 为非线性流水线.
按照输出端任务流出顺序与输入端任务流入顺序是否相同划分
吞吐率是指单位时间内流水线所完成的任务数或输出结果的数量(指令数)。
最大吞吐率TP_max是指流水线在达到稳定状态后的吞吐率。
设流水线由m段组成,完成n个任务的吞吐率称为实际吞吐率,记作TP。
假设流水线各段时间不等,第i段时间为△ti ,则:
最大吞吐率取决于流水线中最慢一段所需的时间,该段成为流水线的瓶颈。
注: 消除流水线瓶颈方法有 细分瓶颈段 和 重复设置瓶颈段.
实际吞吐率TP:小于最大吞吐率。
第一种情况:各段时间相等(设为△t0)假设流水线由 m 段组成,n 个任务;
T_流水 =m△t0 +(n-1)△t0
注: m△t0称为注入时间(filling time).
实际吞吐率TP
T流水 = ∑△t_i +(n-1)△t_j, △t_j = max{△t_i}
注: T = 各个段所加时间(头尾) + (n-1)*最长时间段.
实际吞吐率
加速比是指流水线的速度与等功能非流水
线的速度之比。
其中T流水 和T非流水 分别为按流水和按非流水方式处理 n 个任务所需的时间
若流水线为 m 段,且各段时间相等,均为△t0 ,则:
非流水方式所需时间
流水线的加速比
由于流水线有通过时间和排空时间,所以流水线的各段并非一直满负荷工作,即:E<1。
若各段时间相等,则各段效率也相等,即
e1 = e2 = e3 =… = n△t0/T流水
整个流水线效率: 
n >> m, E≈1
从时空图上看,效率就是n个任务所占的时空区与m个段总的时空区之比。
不等时的流水线效率:
例:(张晨曦教材) 在下面所示的静态流水线上 计算: SUM(A1B1:A4B4),求:吞吐率、加速比、和效率。
此类问题的一般解决步骤:
流水线并不能减少(而且一般是增加)单条指令的执行时间,但能够提高吞吐率;
流水线的额外开销包括:
流水寄存器的延迟
建立时间:触发写操作的信号到达前寄存器输入保持稳定
的时间;