3-流水线技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
http://www.bupttc.com
3
指令的流水执行方式
• 假设:每个流水段的执行时间为t,执行一 条指令需要k个周期。执行n条指令(无跳转) 的时间: • 非流水线:T=n*k*t
取指令 k 分析 k 执行 k 取指令 k+1 分析 k+1 执行 k+1
• 流水线:T=[k+(n-1)]*t • 加速比= n*k*t/ [k+(n-1)]*t= n*k/ [k+(n-1)] • 当n无穷大时,加速比=k。增加流水段的数 目可以提高加速比。但是带来成本的增加, 同时跳转指令将清空流水线。
S3 ∆ t3 = ∆ t
S4 ∆ t4 = ∆ t
输出
空间
S4 S3 S2-3 S2-2 S2-1 S1 1 2 1 3 4 5 2 1 3
1 2
2 3 5
3 4 6
4 5 … …
5 6 …
6 …
…
n-2 n-1 n n
n-2 n-1 n
n-1 n-2
时间
17
4 6
n-2 n-1 n … http://www.bupttc.com 流水段重复设置的流水线
百度文库
n-1 n
n
时间
m·∆t n·∆t T
(n-1)∆t (m-1)∆t
http://www.bupttc.com
5
流水线的主要特点
• 一条流水线通常由多个流水段组成,每个流水 段有专门的功能部件对指令进行某种加工。 • 各流水段的时间应尽量相等。 • 在流水线的每一个流水线段中都要设置一个流 水锁存器。 • 流水线有“建立”、“满载”和“排空”三个 阶段。 • 在理想情况下,当流水线充满后,每隔时间将 会流出一个结果。 • 流水线适用于大量重复的时序过程,输入端连 续提供任务,流水线效率才能充分发挥。
n TP = (m + n − 1)∆t ,
m⋅n Sp = m + n −1 ,
n E= m + n −1
因此:E=TP·∆t,Sp=m·E
http://www.bupttc.com
20
流水线性能分析举例
• 对于单功能线性流水线,输入连续任务的情况, 通过上面给出的公式很容易计算出流水线的吞 吐率、加速比和效率。 • • 例1:用一条4段浮点加法器流水线求8个浮 点数的和: Z=A+B+C+D+E+F+G+H
空间
浮点加法 1 2 3 … … n-1 n
定点乘法 1 1 1 2 2 3 … … …
输出 累加 尾数乘 规格化 尾数加 对阶 求阶差 输入 1 1 2 1 2 3 1 2 3 1 2 3
2 3
3
… … n-1 n
… … n-1 n
… … n-1 n n 静态流水线时空图 1 2 3 4 … 时间
http://www.bupttc.com
10
A 输入
B
A 输入
B
A 输入
B
A 输入
B
求阶差 对阶 尾数加 规格化 尾数乘 累加 输出
g= f( A ,B)
求阶差 对阶 尾数加 规格化 尾数乘 累加 输出 定点乘 (b)定 点 乘 法
求阶差 对阶 尾数加 规格化 尾数乘 累加 输出 浮点加 (c)浮 点 加 法
– 流水段/流水级(pipe stage):每个流水线由N个流 水段组成,每个流水段完成指令的部分功能。 – 吞吐量(throughput):单位时间内流出流水线的指 令数。 – 机器周期(machine cycle):由最长流水段的时间决 定,通常等于时钟周期。理想状态是合理划分指令 功能,使得每个流水段的时间相等。 – 理想流水线的加速因子(speedup):非流水线机器 指令平均执行时间/流水线机器指令平均执行时间
1
2
3
… … n-1 n 1 1 2
1 2 3
2 3 4
3 4 5
… … …
2 3
3
… … n-1 n
… … n-1 n
… … n-1 n 1 2 3 4 5 6 …
… … n-1 n
时间
… … n-1 n
动态流水线时空图
http://www.bupttc.com
13
线性流水线的性能分析
衡量流水线性能的主要指标有:吞吐率、加 速比和效率
2、加速比(Speedup):完成同样一批任务,不使用流水线所用的时间 加速比 与使用流水线所用的时间之比。
计算流水线加速比的基本公式: • 计算流水线加速比的基本公式:
顺序执行时间 T 0 Sp = 流水线执行时间 Tm
• 各段执行时间相等,输入连续任务情况下: 加速比为:
m ⋅ n ⋅ ∆t m⋅n Sp = = (m + n − 1)∆t m + n − 1
15
空间
S4 S3 S2 S1 1
k
1 1 1 2
∑
i=1
2 2 3 3 3 …
3 … n
… n
n
2
∆ ti
n … ( n- 1) ∆ t2 - )
时间
Tk 各段执行时间不相等的流水线及其时空图
一是将流水线的“瓶颈”部分再细分(如果可分的话)。 一是将流水线的“瓶颈”部分再细分(如果可分的话)。
S2 (3∆t) ∆
… … n-1 n
… … n-
http://www.bupttc.com
12
•
• 动态流水线:在同一段时间内,多功能流水线中的各段可以按 照不同的方式连接,同时执行多种功能。
空间 浮点加法 定点乘法
输入 求阶差 对阶 尾数加 规格化 尾数乘 累加 输入 1 1 2 1 2 3 1 2 3 1 2 3
• 解:Z=[(A+B)+(C+D)]+[(E+F)+ (G+H)]
http://www.bupttc.com
21
周期 规格化 尾数加 对阶
空间 1 2
3 1
4 1 2 3
5 2 3 4
6 3 4
7 4 5
8 5
9 5 6
10 11 12 13 14 15 7 6 6 7 7
A+B+C+D E+F+G+H A+B+C+D E+F+G+H
7 时间
1
2
求阶差 1 2 3 4 5 6 C E G A+B E+F 加数 A D F H C+D G+H 加数 B A+B C+D E+F g+H 结果
Z
用一条 4 段浮点加法器流水线求 8 个数之和的流水线时空图 7 个 浮 点 加 法 共 用 了 15 个 时 钟 周 期 。 n 7 1 = = 0 ⋅ 47 流 水 线 的 吞 吐 率 为 : TP = Tm 15 ⋅ ∆ t ∆t T 0 4 × 7 ⋅ ∆t = = 1 ⋅ 87 流水线的加速比为: S = Tm 15 ⋅ ∆ t T0 4 × 7 ⋅ ∆t = = 0 ⋅ 47 流水线的效率为: E = m ⋅ Tm 4 × 15 ⋅ ∆ t
n 》m时,Sp≈m
http://www.bupttc.com
18
3、效率(Efficiency):流水线的设备利用率。 效率 计算流水线效率的一般公式: • 计算流水线效率的一般公式:
T0 E= = m个流水段的总的时空区 m ⋅ Tm
• 各流水段执行时间相等,输入 n 个连续任务: 流水线的效率为:
http://www.bupttc.com
4
一种5段流水线
取指IF
输入
译码ID
执行EX
访存MEM
写回WB
输出
一般4至12个流水段,等于及大于8个流水段的称为超流水线处理机
空间
S4 S3 S2 S1 1 1 2 1 2 3
1 2 3 …
2 3 … …
3 … … n-1
… … n-1 n
… n-1 n
– 非线性流水线(Nonlinear Pipelining) 在流水线的某些流水段之间有反馈回路或前馈回 路。
• 线性流水线能够用流水线连接图唯一表示 • 非线性流水线必须用流水线连接图和流水线 预约表等共同表示
前馈回路 输入
S1
S2
反馈回路
S3
输出
一种简单的非线性流水线
http://www.bupttc.com
• 单功能流水线:只能完成一种固定功能的流水线。 只能完成一种固定功能的流水线。 只能完成一种固定功能的流水线 • Cray-1计算机种有12条 • YH-1计算机有18条 • Pentium有一条5段的定点和一条8段的浮点流水线。 • PentiumⅢ有三条指令流水线,其中两条定点指令流水线, • 一条浮点指令流水线。 • • 多功能流水线:流水线的各段通过不同的连接实现不同的功能。 流水线的各段通过不同的连接实现不同的功能。 流水线的各段通过不同的连接实现不同的功能 • Texas公司的ASC计算机中的8段流水线,能够实现: • 定点加减法、定点乘法、 • 浮点加法、浮点乘法, • 逻辑运算、移位操作、 • 数据转换、向量运算等。
• 1、吞吐率(Though Put):单位时间内 吞吐率( 流水线所完成的任务数量。
• • • 计算流水线吞吐率的最基本公式: 计算流水线吞吐率的最基本公式: TP
= n Tm
其中:n为任务数,Tm为完成n个任务所用 的时间 • • 各段执行时间相等,输入连续任务情况下: • 完成n个连续任务需要的总时间为:Tm= (m+n-1)∆t + - ) • 其中:m 为流水线的段数,∆t为时钟周期
n个任务占用的时空区
m ⋅ n ⋅ ∆t n E= = m ⋅ (m + n − 1) ⋅ ∆t m + n − 1
n =1 E max = Lim 流水线的最高效率为: n→∞ m + n − 1
http://www.bupttc.com
19
流水线的吞吐率、加速比与效率的关系: • 流水线的吞吐率、加速比与效率的关系:
–处理机级流水称为宏流水线 宏流水线(Macro Pipelining)。 宏流水线 每个处理机对同一个数据流的不同部分分别进行处理。
输 入 处理机 1 存储器 处理机 2 任务 2 存储器 … 处理机 n 任务 n 存储器 输 出
功能 任务 1
http://www.bupttc.com
9
单功能流水线与多功能流水线
输入
S1 ∆t
S2-1 ∆t
S2-2 ∆t
S2-3 ∆t
S3 ∆t
S4 ∆t
输出
“瓶颈”流水段再次细分
http://www.bupttc.com
16
二是“ 瓶颈“ 流水段重复设置: 二是“ 瓶颈“ 流水段重复设置:
需要增加数据分配器和数据收集器 S2-3
输入
S1 ∆ t1= ∆ t
S2-2 S2-1 ∆ t2= 3∆ t ∆
http://www.bupttc.com
6
流水线的分类(1)
• 线性流水线与非线性流水线 流水线的各个流水段之间是否有反馈信号
–线性流水线(Linear Pipelining) 每一个流水段都流过一次,而且仅流过一次。
S2 S3
输出
S1
输入
http://www.bupttc.com
7
流水线的分类(2)
高等计算机体系结构
北京邮电大学继续教育学院 授课教师: 孙斌 sunbin@bupt.edu.cn
http://www.bupttc.com
1
第三讲 流水线技术
• 流水线的基本概念 • DLX的基本流水线 • 流水线中的相关
http://www.bupttc.com
2
流水线的基本概念
• 流水线是实现多条指令重叠执行的技术。是加 快CPU执行速度的关键技术。 • 关键词:
http://www.bupttc.com
14
n TP = 吞吐率为: 吞吐率为: (m + n −1)∆t
最大吞吐率为: 最大吞吐率为:
1 n = TPmax = Lim n →∞ (m + n −1 ∆t ) ∆t
各段执行时间不相等,输入连续任务情况下: • 各段执行时间不相等,输入连续任务情况下: 最大吞吐率为: 最大吞吐率为:
1 TP = max( ∆ t 1, ∆ t 2 ,⋅ ⋅ ⋅, ∆ tm )
• 流水线各段执行时间不相等的解决办法 一是将流水线的“瓶颈”部分再细分(如果可分的话)。 一是将流水线的“瓶颈”部分再细分(如果可分的话)。
二是“瓶颈“流水段重复设置: 二是“瓶颈“流水段重复设置:
http://www.bupttc.com
求阶差 对阶 尾数加 规格化 尾数乘 累加 输出 浮点点积 (d)浮 点 点 积
11
(a)功 能 段 间 的 互 连
http://www.bupttc.com
静态流水线与动态流水线
• 静态流水线:同一段时间内,多功能流水线中的各个功能段只能 按照一种固定的方式连接,实现一种固定的功能。从一种功能切换 为另一种功能时,必须排空流水线。只有连续出现同一种运算时, 流水线的效率才能得到充分的发挥。
8
流水线分类(3)
• 按照流水线的级别来分
–指令级流水线(Instruction Pipelining) 一条指令的解释过程分成多个子过程 –部件级流水线 操作流水线 部件级流水线(操作流水线 部件级流水线 操作流水线),如浮点加法器流水线。
输入 求阶差 △t1 对阶 △t2 尾数加 △t3 规格化 △t4 输出
3
指令的流水执行方式
• 假设:每个流水段的执行时间为t,执行一 条指令需要k个周期。执行n条指令(无跳转) 的时间: • 非流水线:T=n*k*t
取指令 k 分析 k 执行 k 取指令 k+1 分析 k+1 执行 k+1
• 流水线:T=[k+(n-1)]*t • 加速比= n*k*t/ [k+(n-1)]*t= n*k/ [k+(n-1)] • 当n无穷大时,加速比=k。增加流水段的数 目可以提高加速比。但是带来成本的增加, 同时跳转指令将清空流水线。
S3 ∆ t3 = ∆ t
S4 ∆ t4 = ∆ t
输出
空间
S4 S3 S2-3 S2-2 S2-1 S1 1 2 1 3 4 5 2 1 3
1 2
2 3 5
3 4 6
4 5 … …
5 6 …
6 …
…
n-2 n-1 n n
n-2 n-1 n
n-1 n-2
时间
17
4 6
n-2 n-1 n … http://www.bupttc.com 流水段重复设置的流水线
百度文库
n-1 n
n
时间
m·∆t n·∆t T
(n-1)∆t (m-1)∆t
http://www.bupttc.com
5
流水线的主要特点
• 一条流水线通常由多个流水段组成,每个流水 段有专门的功能部件对指令进行某种加工。 • 各流水段的时间应尽量相等。 • 在流水线的每一个流水线段中都要设置一个流 水锁存器。 • 流水线有“建立”、“满载”和“排空”三个 阶段。 • 在理想情况下,当流水线充满后,每隔时间将 会流出一个结果。 • 流水线适用于大量重复的时序过程,输入端连 续提供任务,流水线效率才能充分发挥。
n TP = (m + n − 1)∆t ,
m⋅n Sp = m + n −1 ,
n E= m + n −1
因此:E=TP·∆t,Sp=m·E
http://www.bupttc.com
20
流水线性能分析举例
• 对于单功能线性流水线,输入连续任务的情况, 通过上面给出的公式很容易计算出流水线的吞 吐率、加速比和效率。 • • 例1:用一条4段浮点加法器流水线求8个浮 点数的和: Z=A+B+C+D+E+F+G+H
空间
浮点加法 1 2 3 … … n-1 n
定点乘法 1 1 1 2 2 3 … … …
输出 累加 尾数乘 规格化 尾数加 对阶 求阶差 输入 1 1 2 1 2 3 1 2 3 1 2 3
2 3
3
… … n-1 n
… … n-1 n
… … n-1 n n 静态流水线时空图 1 2 3 4 … 时间
http://www.bupttc.com
10
A 输入
B
A 输入
B
A 输入
B
A 输入
B
求阶差 对阶 尾数加 规格化 尾数乘 累加 输出
g= f( A ,B)
求阶差 对阶 尾数加 规格化 尾数乘 累加 输出 定点乘 (b)定 点 乘 法
求阶差 对阶 尾数加 规格化 尾数乘 累加 输出 浮点加 (c)浮 点 加 法
– 流水段/流水级(pipe stage):每个流水线由N个流 水段组成,每个流水段完成指令的部分功能。 – 吞吐量(throughput):单位时间内流出流水线的指 令数。 – 机器周期(machine cycle):由最长流水段的时间决 定,通常等于时钟周期。理想状态是合理划分指令 功能,使得每个流水段的时间相等。 – 理想流水线的加速因子(speedup):非流水线机器 指令平均执行时间/流水线机器指令平均执行时间
1
2
3
… … n-1 n 1 1 2
1 2 3
2 3 4
3 4 5
… … …
2 3
3
… … n-1 n
… … n-1 n
… … n-1 n 1 2 3 4 5 6 …
… … n-1 n
时间
… … n-1 n
动态流水线时空图
http://www.bupttc.com
13
线性流水线的性能分析
衡量流水线性能的主要指标有:吞吐率、加 速比和效率
2、加速比(Speedup):完成同样一批任务,不使用流水线所用的时间 加速比 与使用流水线所用的时间之比。
计算流水线加速比的基本公式: • 计算流水线加速比的基本公式:
顺序执行时间 T 0 Sp = 流水线执行时间 Tm
• 各段执行时间相等,输入连续任务情况下: 加速比为:
m ⋅ n ⋅ ∆t m⋅n Sp = = (m + n − 1)∆t m + n − 1
15
空间
S4 S3 S2 S1 1
k
1 1 1 2
∑
i=1
2 2 3 3 3 …
3 … n
… n
n
2
∆ ti
n … ( n- 1) ∆ t2 - )
时间
Tk 各段执行时间不相等的流水线及其时空图
一是将流水线的“瓶颈”部分再细分(如果可分的话)。 一是将流水线的“瓶颈”部分再细分(如果可分的话)。
S2 (3∆t) ∆
… … n-1 n
… … n-
http://www.bupttc.com
12
•
• 动态流水线:在同一段时间内,多功能流水线中的各段可以按 照不同的方式连接,同时执行多种功能。
空间 浮点加法 定点乘法
输入 求阶差 对阶 尾数加 规格化 尾数乘 累加 输入 1 1 2 1 2 3 1 2 3 1 2 3
• 解:Z=[(A+B)+(C+D)]+[(E+F)+ (G+H)]
http://www.bupttc.com
21
周期 规格化 尾数加 对阶
空间 1 2
3 1
4 1 2 3
5 2 3 4
6 3 4
7 4 5
8 5
9 5 6
10 11 12 13 14 15 7 6 6 7 7
A+B+C+D E+F+G+H A+B+C+D E+F+G+H
7 时间
1
2
求阶差 1 2 3 4 5 6 C E G A+B E+F 加数 A D F H C+D G+H 加数 B A+B C+D E+F g+H 结果
Z
用一条 4 段浮点加法器流水线求 8 个数之和的流水线时空图 7 个 浮 点 加 法 共 用 了 15 个 时 钟 周 期 。 n 7 1 = = 0 ⋅ 47 流 水 线 的 吞 吐 率 为 : TP = Tm 15 ⋅ ∆ t ∆t T 0 4 × 7 ⋅ ∆t = = 1 ⋅ 87 流水线的加速比为: S = Tm 15 ⋅ ∆ t T0 4 × 7 ⋅ ∆t = = 0 ⋅ 47 流水线的效率为: E = m ⋅ Tm 4 × 15 ⋅ ∆ t
n 》m时,Sp≈m
http://www.bupttc.com
18
3、效率(Efficiency):流水线的设备利用率。 效率 计算流水线效率的一般公式: • 计算流水线效率的一般公式:
T0 E= = m个流水段的总的时空区 m ⋅ Tm
• 各流水段执行时间相等,输入 n 个连续任务: 流水线的效率为:
http://www.bupttc.com
4
一种5段流水线
取指IF
输入
译码ID
执行EX
访存MEM
写回WB
输出
一般4至12个流水段,等于及大于8个流水段的称为超流水线处理机
空间
S4 S3 S2 S1 1 1 2 1 2 3
1 2 3 …
2 3 … …
3 … … n-1
… … n-1 n
… n-1 n
– 非线性流水线(Nonlinear Pipelining) 在流水线的某些流水段之间有反馈回路或前馈回 路。
• 线性流水线能够用流水线连接图唯一表示 • 非线性流水线必须用流水线连接图和流水线 预约表等共同表示
前馈回路 输入
S1
S2
反馈回路
S3
输出
一种简单的非线性流水线
http://www.bupttc.com
• 单功能流水线:只能完成一种固定功能的流水线。 只能完成一种固定功能的流水线。 只能完成一种固定功能的流水线 • Cray-1计算机种有12条 • YH-1计算机有18条 • Pentium有一条5段的定点和一条8段的浮点流水线。 • PentiumⅢ有三条指令流水线,其中两条定点指令流水线, • 一条浮点指令流水线。 • • 多功能流水线:流水线的各段通过不同的连接实现不同的功能。 流水线的各段通过不同的连接实现不同的功能。 流水线的各段通过不同的连接实现不同的功能 • Texas公司的ASC计算机中的8段流水线,能够实现: • 定点加减法、定点乘法、 • 浮点加法、浮点乘法, • 逻辑运算、移位操作、 • 数据转换、向量运算等。
• 1、吞吐率(Though Put):单位时间内 吞吐率( 流水线所完成的任务数量。
• • • 计算流水线吞吐率的最基本公式: 计算流水线吞吐率的最基本公式: TP
= n Tm
其中:n为任务数,Tm为完成n个任务所用 的时间 • • 各段执行时间相等,输入连续任务情况下: • 完成n个连续任务需要的总时间为:Tm= (m+n-1)∆t + - ) • 其中:m 为流水线的段数,∆t为时钟周期
n个任务占用的时空区
m ⋅ n ⋅ ∆t n E= = m ⋅ (m + n − 1) ⋅ ∆t m + n − 1
n =1 E max = Lim 流水线的最高效率为: n→∞ m + n − 1
http://www.bupttc.com
19
流水线的吞吐率、加速比与效率的关系: • 流水线的吞吐率、加速比与效率的关系:
–处理机级流水称为宏流水线 宏流水线(Macro Pipelining)。 宏流水线 每个处理机对同一个数据流的不同部分分别进行处理。
输 入 处理机 1 存储器 处理机 2 任务 2 存储器 … 处理机 n 任务 n 存储器 输 出
功能 任务 1
http://www.bupttc.com
9
单功能流水线与多功能流水线
输入
S1 ∆t
S2-1 ∆t
S2-2 ∆t
S2-3 ∆t
S3 ∆t
S4 ∆t
输出
“瓶颈”流水段再次细分
http://www.bupttc.com
16
二是“ 瓶颈“ 流水段重复设置: 二是“ 瓶颈“ 流水段重复设置:
需要增加数据分配器和数据收集器 S2-3
输入
S1 ∆ t1= ∆ t
S2-2 S2-1 ∆ t2= 3∆ t ∆
http://www.bupttc.com
6
流水线的分类(1)
• 线性流水线与非线性流水线 流水线的各个流水段之间是否有反馈信号
–线性流水线(Linear Pipelining) 每一个流水段都流过一次,而且仅流过一次。
S2 S3
输出
S1
输入
http://www.bupttc.com
7
流水线的分类(2)
高等计算机体系结构
北京邮电大学继续教育学院 授课教师: 孙斌 sunbin@bupt.edu.cn
http://www.bupttc.com
1
第三讲 流水线技术
• 流水线的基本概念 • DLX的基本流水线 • 流水线中的相关
http://www.bupttc.com
2
流水线的基本概念
• 流水线是实现多条指令重叠执行的技术。是加 快CPU执行速度的关键技术。 • 关键词:
http://www.bupttc.com
14
n TP = 吞吐率为: 吞吐率为: (m + n −1)∆t
最大吞吐率为: 最大吞吐率为:
1 n = TPmax = Lim n →∞ (m + n −1 ∆t ) ∆t
各段执行时间不相等,输入连续任务情况下: • 各段执行时间不相等,输入连续任务情况下: 最大吞吐率为: 最大吞吐率为:
1 TP = max( ∆ t 1, ∆ t 2 ,⋅ ⋅ ⋅, ∆ tm )
• 流水线各段执行时间不相等的解决办法 一是将流水线的“瓶颈”部分再细分(如果可分的话)。 一是将流水线的“瓶颈”部分再细分(如果可分的话)。
二是“瓶颈“流水段重复设置: 二是“瓶颈“流水段重复设置:
http://www.bupttc.com
求阶差 对阶 尾数加 规格化 尾数乘 累加 输出 浮点点积 (d)浮 点 点 积
11
(a)功 能 段 间 的 互 连
http://www.bupttc.com
静态流水线与动态流水线
• 静态流水线:同一段时间内,多功能流水线中的各个功能段只能 按照一种固定的方式连接,实现一种固定的功能。从一种功能切换 为另一种功能时,必须排空流水线。只有连续出现同一种运算时, 流水线的效率才能得到充分的发挥。
8
流水线分类(3)
• 按照流水线的级别来分
–指令级流水线(Instruction Pipelining) 一条指令的解释过程分成多个子过程 –部件级流水线 操作流水线 部件级流水线(操作流水线 部件级流水线 操作流水线),如浮点加法器流水线。
输入 求阶差 △t1 对阶 △t2 尾数加 △t3 规格化 △t4 输出