性能指标
①吞吐率:单位时间内完成的任务数
TP=Tkn
每段时间相等(n个任务,每个k段)
T总=kΔt+(n−1)Δt

每段时间不完全相等(n个任务,每个k段)
T总=∑i=1kΔti+(n−1)(Δt1,Δt2,...,Δtn)

②加速比
S=TkTs=k+(n−1)nk (>1)
加速前/加速后
③效率:流水线设备利用率
实际使用时间/整个运行时间(占用方格/整块面积)
E=整个运行时间实际使用时间=k[kΔt+(n−1)Δt]nkΔt=k+n−1n
即⭐E=TPΔt=kS
非线性流水线的调度
单功能
[例题]

禁止表F=1,5,6,8
冲突向量C0=(10110001)
① Cnext (状态转换)
Ccurrent=(cN…cj…c1)
j = 间隔 (允许 ⟺cj=0)
Cnext=SHR(j)(Ccurrent)∨C0
j等于多少就右移几位
✅计算
State: C=10110001 (C0)
- c2=0,c3=0,c4=0,c7=0⟹j∈{2,3,4,7}
- j=2:
- C′=SHR(2)(10110001)∨C0
- C′=00101100∨10110001=10111101
- 10110001210111101
- j=3:
- C′=SHR(3)(10110001)∨C0
- C′=00010110∨10110001=10110111
- 10110001310110111
- j=4:
- C′=SHR(4)(10110001)∨C0
- C′=00001011∨10110001=10111011
- 10110001410111011
- j=7:
- C′=SHR(7)(10110001)∨C0
- C′=00000001∨10110001=10110001
- 10110001710110001
State: C=10111101
- c2=0,c7=0⟹j∈{2,7}
- j=2:
- C′=SHR(2)(10111101)∨C0
- C′=00101111∨10110001=10111111
- 10111101210111111
- j=7:
- C′=SHR(7)(10111101)∨C0
- C′=00000001∨10110001=10110001
- 10111101710110001
……循环直至找不到新的状态

多功能
教材p68-69
流水线相关与冲突
经典5段流水线
IF - ID - EX - MEM - WB
取指-译码-执行-访存-写回
相关
指2条指令之间存在某种依赖关系(即不能完全重叠执行)
延迟分支方法
编译器 实现(都是静态调度)
- ①从分支前调度:调一条不相干的指令
- ②从分支失败处调度(猜“不跳转”):把下一条的下一条调来
- ③从分支目标处调度(猜“跳转”):把目标的下一条调来
冲突
①结构冲突
硬件资源不足。引入停顿 stall 来消除
②数据冲突
数据没准备好
③控制冲突
不知道该取哪条指令(如:执行下一条 / 跳转)
多指令发射技术
①超标量处理机
标量处理机:1条指令流水线,单发射技术
拥有 ≥2 条指令流水线,多发射技术


最大加速比S(m,1)max=m
②超长指令字处理机(VLIW)
和超标量处理机(CPU硬件完成)不同,它由编译器来完成分析调度,CPU只执行
③超流水线处理机
把每个流水线进一步细分
