计算机组成原理 1
计 算 机 组 成 原 理
第二十一、二十三讲
2009年 11月 10日
流水线处理机
计算机组成原理 2
1,流水线处理机的基本概念
2,流水线处理机的数据路径
流水线级, 流水线各级的操作
3,流水线处理机的控制
运算指令, 访存指令, 转移控制指令, 流水线各级信号的产
生, 时序图, 时空图
4,流水线处理机的相关
结构相关, 数据相关, 转移相关
本讲安排
计算机组成原理 3
本讲将解决的主要问题
掌握流水线处理机的数据路径
建立指令流水线中指令如何重叠执行和流动
了解流水线工作原理以及相关问题
计算机组成原理 4
ALU
PC
寄存器堆
rs2
rd
Wr itePC
SelSt
AluOP
Wr iteMem
SelLo ad
disp
Wr iteR eg
rs1
SelBran ch
Write Zero
+1 Zero
Zero
imm e
SelIm me
op cod e
AluOP
Wr itePC
SelSt
Wr iteR eg
Wr iteMem
SelIm me
Write Zero
SelBran ch
SelLo ad
控制部件
A1
Q1
Q2
DI
AD
A2
偏移量符
号扩展
立即数符
号扩展
指令
存储器
Add
Data
数据
存储器
Add
DO
DI
WECS
A
B
1
0
1
0
1
0
0
1
单周期处理机
计算机组成原理 5
该单周期处理器的缺陷
时钟周期时间长,
? 对于装入指令,周期时间必须足够长,
指令存储器访问时间 +
寄存器堆访问时间 +
ALU计算地址 +
数据存储器访问时间 +
寄存器建立时间 +
对于所有其他指令,周期时间都比所需的要长很多 !
计算机组成原理 6
多周期处理机
A LU
立即数符号扩展
P
C
存储器
寄存器堆
rs2
A
rd
Wri teP C
Sel St
AluO P
IR
Sel L o a d
disp
Wri teReg
rs1
B
Wri teZero
1
im m e
偏移量符号扩展
Zero
Sel AluB
Sel AluA
Wri teIR
Sel Ldst
Z
Wri teMem
...
Wri teP C
Wri teZero
Zero
opcode
...
控制部件
Q1
A1
Q2
DI
AD
A2
DO
DI
WE CS
Ad d
1
0
3
1
0
0
1
0
1
0
计算机组成原理 7
单周期处理器的问题根源,
对于最慢的指令,周期时间必须足够长
解决方案,
? 将指令处理分为更小的步骤,每个周期执行一步(而不是整
个指令)
- 周期时间,执行最长步所需的时间
- 使所有的步骤尽量具有相同的长度
? 这是多周期处理器的本质所在
多周期处理器的优点,
? 周期时间非常短
? 不同的指令需要不同的周期数来完成
- 装入指令需要 5个周期,- 跳转仅仅需要 3个周期
? 允许每条指令多次使用同一个功能部件
多周期实现概述
计算机组成原理 8
流水线的基本概念
什么是 流水线
计算机中的流水线是把一个重复的过程 分解为若干个子过
程,每个子过程与其他子过程 并行进行 。由于这种工作方式与
工厂中的生产流水线十分相似,因此称为流水线技术。
从本质上讲,流水线技术是一种时间并行技术。
计算机组成原理 9
计算机的各个部分几乎都可以采用流水线技术,
(1)指令的执行过程可以采用流水线,称为 指令流水线 。
(2)运算器中的操作部件,如浮点加法器、浮点乘法器等可
以采用流水线,称为 操作部件流水线 。
(3)访问主存的部件可以采用访存部件流水线。多个计算机
之间,通过存储器连接,也可以采用流水线,称为 宏流水线 。
计算机组成原理 10
指令的重叠执行
(1)顺序执行方式
(2)一次重叠执行方式
(3)二次重叠执行方式
(2) 重叠解释执行
执行 k分析 k取指 k
执行 k+1分析 k+1取指 k+1
T=(2n+1)t
执行 k分析 k取指 k
执行 k+1分析 k+1取指 k+1
(3) 更高重叠程度的解释执行
T=3t+(n-1)t=(n+2)t
执行 k+1分析 k+1取指 k+1执行 k分析 k取指 k
(1) 顺序解释执行
T=3nt
计算机组成原理 11
流水线工作原理
1.基本思想
重叠延伸方式,使指令解释过程进一步细化,
提高各部件的利用率,以提高指令执行速度。
理想目标,完成任务的时间与操作处理过程无关,只与提供
操作的速度有关。
取指 译码 执行 访存 写回输入 输出
IF ID EXE MEM WB
s1 s2 s3 s4 s5
指令流水线举例:
设:每段时间为△ t,有 m个段,每段间均可重叠;
则:每间隔△ t时间有一条指令流传出
计算机组成原理 12
锁
存
器
锁
存
器
C L K
锁
存
器
处理
部件
n
处理
部件
2
处理
部件
1
流水线处理机的 最大特点 是每一个时针周期都能
启动一条指令的执行。
计算机组成原理 13
? 流水技术无助于减少单个任务的 处理延迟 (latency),但有
助于提高整体工作负载 的吞吐率
? 多个 不同任务同时操作,使用不同资源
? 潜在加速比 = 流水线级数
? 流水线的速率受限于 最慢 的流水段
? 流水段的执行时间如果 不均衡,那么加速比就会降低
? 开始 填充 流水线的时间和最后 排放 流水线的时间降低加速比
? 相关 将导致流水线暂停
流水技术性
计算机组成原理 14
单周期、多周期与流水线
CC1 CC2
LOAD
STO RE
IF ID EX E M EM
CC1 CC2 CC3 CC4 CC5
WB
IF ID EX E
IF
WB
单周期处理机
流水线处理机
多周期处理机
LOAD
ADD
IF ID EX E M EM WB
IF ID EX E M EM WB
IF ID EX E M EM WB
计算机组成原理 15
流水线处理机的数据路径
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Da ta
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M EM WBEX EIDIF
计算机组成原理 16
流水线各级的操作 — IF级 1、取指令
2、计算下一条指令地址
ALU
P
C
寄存器堆
r s2
d isp
r s1
控制器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
A d d
DO
DI
A
B
指令
存储器
A d d
D at a
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M E M WBE X EID
IF
计算机组成原理 17
流水线各级的操作 — ID级 1、读寄存器堆中的操作数
2、符号扩展
3、控制器根据 OPCODE产生控制信号
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im me
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEXE
IDIF
4、转移指令在 ID级结束
计算机组成原理 18
流水线各级的操作 — EXE级
1,ALU指令完成计算结果 2,LOAD/STORE指令计算存储器地址
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Da ta
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M EM WBEXEIDIF
计算机组成原理 19
流水线各级的操作 — MEM级
2,LOAD/STORE指令访问存储器,LOAD指令读操作,STORE
指令写操作,STORE指令结束。
1,ALU指令在该级仅把 R内容打入 C
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Dat a
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
ME M
WBEX EIDIF
计算机组成原理 20
流水线各级的操作 — WB级
ALU
P
C
寄存器堆
r s2
d isp
r s1
控制器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
A d d
DO
DI
A
B
指令
存储器
A d d
D at a
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M E M WBE X EIDIF
结果写回到寄存器堆
计算机组成原理 21
ALU指令 执行时流水线的数据路径
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Dat a
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M EM WBEX EIDIF
计算机组成原理 22
LOAD指令 执行时流水线的数据路径
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Dat a
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M EM WBEX EIDIF
计算机组成原理 23
STORE指令 执行时流水线的数据路径
ALU
P
C
寄存器堆
r s2
d isp
r s1
控制器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
A d d
DO
DI
A
B
指令
存储器
A d d
D at a
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M E M WBE X EIDIF
计算机组成原理 24
流水线处理机的控制 — ALU指令和存储器访问指令的控制
I1 addi r1,r2,4 ; r1?( r2) + 4
I2 load r2,100(r3); r2? memory [( r3) + 100]
I3 sub r4,r5,r6; r4?( r5) -( r6)
I4 add r7,r5,r6; r7?( r5) +( r6)
I5 store r8,200(r9);memory[( r9) + 200]?( r8)
I6 subi r10,r10,1; r10?( r10) - 1
研究流水线处理机对以下指令重叠操作过程
指令系统和指令格式同前面一样
计算机组成原理 25
指令系统和指令格式
31 26 25 21 20 16 15 5 4 0 指令助记符 意 义
00 0101 rd rs1 imme addi rd,rs1,imme rd ?(rs1)addimme
00 0101 00001 00010 0004H addi r1,r2,4
00 0100 rd rs1 rs2 add rd,rs1,rs2 rd ?(rs1)add(rs2)
00 0100 00111 00101 00110 add r7,r5,r6
00 0110 rd rs1 rs2 sub rd,rs1,rs2 rd ?(rs1)sub (rs2)
00 0110 00100 00101 00110 sub r4,r5,r6
00 1000 rd rs1 imme load rd,rs1,imme rd ?((rs1) +imme)
00 1000 00010 00011 0064H load r2,r3,100
00 1001 rd rs1 imme store rd,rs1,imme (rd)?((rs1) + imme)
00 1001 01000 01001 00C8H store r8,r9,200
计算机组成原理 26
指令系统和指令格式
31 26 25 21 20 16 15 5 4 0 指令助记符 意 义
00 0000 rd rs1 rs2 and rd,rs1,rs2 rd?(rs1)and(rs2)
00 0001 rd rs1 imme andi rd,rs1,imme rd?(rs1)andimme
00 0010 rd rs1 rs2 or rd,rs1,rs2 rd?(rs1)or (rs2)
00 0011 rd rs1 imme ori rd,rs1,imme rd?(rs1)orimme
00 0100 rd rs1 rs2 add rd,rs1,rs2 rd?(rs1)add(rs2)
00 0101 rd rs1 imme addi rd,rs1,imme rd?(rs1)addimme
00 0110 rd rs1 rs2 sub rd,rs1,rs2 rd?(rs1)sub(rs2)
00 0111 rd rs1 imme subi rd,rs1,imme rd?(rs1)subimme
00 1000 rd rs1 imme load rd,rs1,imme rd?((rs1)+imme)
00 1001 rd rs1 imme store rd,rs1,imme (rd)?((rs1) + imme)
00 1010 disp bne disp If z=0,pc?(pc)+disp
00 1011 disp beq disp If z=1,pc?(pc)+disp
00 1100 disp branch disp pc?(pc)+disp
计算机组成原理 27
CC1— Fetch I1
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im m e
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Da ta
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M E M WBE XEIDIF
addi r1,r2,4
BTAKEN=0
0
1
计算机组成原理 28
CC2— Fetch I2 并 Decode I1
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im m e
op cod e
A1
Q1
Q2
DI
AD
A2
00000004
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Da ta
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M E M WBE XEIDIF
addi r1,r2,4
BTAKEN=0
0
1
load r2,100(r3)
SST=0
0
1
02
01
04
计算机组成原理 29
CC3— Fetch I3 并 Decode I2 并 EXEC I1
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im m e
op cod e
A1
Q1
Q2
DI
AD
A2
00000064
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Da ta
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M E M WBE XEIDIF
addi r1,r2,4
BTAKEN=0
0
1
load r2,100(r3)
SST=0
0
1
sub r4,r5,r6
SIMM=1
1
0
ALUOP=add
02 01
03
04
计算机组成原理 30
CC4— Fetch I4 并 Decode I3 并 EXEC I2 并 MEM I1
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im me
op cod e
A1
Q1
Q2
DI
AD
A2
00000006
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEX EIDIF
addi r1,r2,4
BTAKEN=0
0
1
load r2,100(r3)
SST=0
0
1
sub r4,r5,r6
SIMM=1
1
0
add r7,r5,r6
04
02
01
ALUOP=add
05
06
计算机组成原理 31
CC5— Fetch I5 并 Decode I4 并 EXEC I3 并 MEM I2 并 WB I1
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im m e
op code
A1
Q1
Q2
DI
AD
A2
00000006
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEX EIDIF
addi r1,r2,4
BTAKEN=0
0
1
load r2,100(r3)
SST=0
0
1
sub r4,r5,r6
SIMM=0
1
0
add r7,r5,r6store r8,200(r9)
SLD=0
0
1
ALUOP=sub
04 02 0107
05
06
计算机组成原理 32
CC6— Fetch I6 并 Decode I5 并 EXEC I4 并 MEM I3 并 WB I2
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im m e
op code
A1
Q1
Q2
DI
AD
A2
00 00 00 C8
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEX EIDIF
BTAKEN=0
0
1
load r2,100(r3)
SST=1
0
1
sub r4,r5,r6
SIMM=0
1
0
add r7,r5,r6store r8,200(r9)
SLD=1
0
1
ALUOP=add
04 0207
09
subi r10,r10,1
08
计算机组成原理 33
CC7— Decode I6 并 EXEC I5 并 MEM I4 并 WB I3
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im me
opcod e
A1
Q1
Q2
DI
AD
A2
00000001
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
ME M WBEXEIDIF
BTAKEN
0
1
SST= 0
0
1
sub r4,r5,r6
SIMM=1
1
0
add r7,r5,r6store r8,200(r9)
SLD=0
0
1
ALUOP=add
040710
subi r10,r10,1
08
10
01
计算机组成原理 34
CC8— EXEC I6 并 MEM I5 并 WB I4
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
imm e
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEXEIDIF
BTAKEN
0
1
SST
0
1
SIMM=1
1
0
add r7,r5,r6
store r8,200(r9)
SLD=0
0
1
ALUOP=sub
07
10
subi r10,r10,1
08
计算机组成原理 35
CC9— MEM I6
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
imm e
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEXEIDIF
BTAKEN
0
1
SST
0
1
SIMM
1
0
store r8,200(r9)
SLD
0
1
ALUOP
10
subi r10,r10,1
08
计算机组成原理 36
CC10— WB I6
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im me
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEX EIDIF
BTAKEN
0
1
SST
0
1
SIMM
1
0
SLD=0
0
1
ALUOP
10
subi r10,r10,1
以上还有 3个控制信号,WZ— 写 Z标志信号
WMEM— 写存储器信号
WREG-- 写寄存器堆信号
计算机组成原理 37
流水线处理机的控制 — 转移指令控制
subi r10,r10,1
bne abc
add r1,r2,r3
abc,load
00 1010 disp bne disp If z=0,pc?(pc)+disp
结果不为 0,转移
00 1011 disp beq disp If z=1,pc?(pc)+disp
结果为 0,转移
00 1100 disp branch disp pc?(pc) + disp
无条件转移
subi r10,r10,1
nop
bne abc
nop
add r1,r2,r3
条件转移指令控制
无条件转移指令控制
branch abc
add r1,r2,r3
branch abc
nop
add r1,r2,r3
计算机组成原理 38
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im me
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEXEIDIF
BTAKEN
0
1
SST
0
1
SIMM
1
0
SLD
0
1
ALUOP
subi r10,r10,1bne abc
计算机组成原理 39
ALU
P
C
寄存器堆
rs2
rs1
控制器
+1
im me
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEXEIDIF
BTAKEN
0
1
SST
0
1
SIMM
1
0
SLD
0
1
ALUOP
subi r10,r10,1bne abc nopadd r1,r2,r3
zero
计算机组成原理 40
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im me
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEXEIDIF
BTAKEN
0
1
SST
0
1
SIMM
1
0
SLD
0
1
ALUOP
subi r10,r10,1bne abc nop
计算机组成原理 41
ALU
P
C
寄存器堆
rs2
rs1
控制器
+1
imm e
o p co d e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEXEIDIF
BTAKEN
0
1
SST
0
1
SIMM
1
0
SLD
0
1
ALUOP
subi r10,r10,1bne abc nop
zer o
nop
转移发生的条件为 BTAKEN = branch + bne?Z + beq?Z
计算机组成原理 42
级 控制信号 注释
IF级 BTAKEN 转移发生
ID级 SST 选择 STORE( rd)
EXE级 SIMM 选择立即数
ALUOP ALU操作码
WZ 写 Z标志
MEM级 WMEM 写存储器
WB级 SLD 选择 LOAD
WREG 写寄存器堆
流水线各级控制信号的定义
计算机组成原理 43
流水线各级控制信号的产生表达式
指 令 ALUOP1 ALUOP0 注释
and /andi 0 0 与
or/ ori 0 1 或
add/ addi 1 0 加
sub/ subi 1 1 减
load/ store 1 0 加
aluop1=add+addi+sub+subi+load+store
aluop0=or+ori+sub+subi
BTAKEN=branch+bne﹡ Z+beq﹡ Z
SST=store
SIMM=andi+addi+ori+subi+load+store
WZ= andi+addi+ori+subi+ and+add+or+sub
WMEM=store
SLD=load
WREG=andi+addi+ori+subi+ and+add+or+sub+load
计算机组成原理 44
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im me
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
BTAKEN
0
1
SST
SIMM
ALUOP
WZ
WMEM
SLD
WREG
zero
计算机组成原理 45
1
1
1
1
1
2
2
2
2
2
3
3
3
3
3
4
4
4
4
4
时间
空间
IF
ID
EXE
MEM
WB
计算机组成原理 46
IF ID EXE MEM WB
IF ID EXE MEM WB
IF ID EXE MEM WB
IF ID EXE MEM WB
时间
指令
I1
I2
I3
I4
计算机组成原理 47
相关概念,相近指令间出现了某种关联,使得指令不能
提前解释
结构相关,由于硬件资源不足而导致流水线不畅通。
数据相关,本条指令的操作数地址与前一条指令存放
结果的地址相同,便出现了前条指令还没有
结果,而后一条指令要求提前取出,造成
错误。
转移相关,由于在转移发生之前,若干条转移指令的后继指
令已被取到流水线处理机中,而 造成错误。
流水线处理机的相关
因为流水线中指令和数据要提前取出来,因此相邻指令之间存
在许多关联。
计算机组成原理 48
结构相关及解决方法
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
imm e
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
存储器
Add
DO
DI
A
B
I
R
DSE
rd
d
A
B
I
d d
Z
R
S C
D
rd
单存储器模块所构成的流水线处理机 --结构相关
计算机组成原理 49
IF ID EXE MEM WB
IF ID EXE MEM WB
IF ID EXE MEM WB
IF ID EXE MEM WB
时间
指令
I1
I2
I3
I4
I1是 LOAD指令,则 I1与 I4结构相关
计算机组成原理 50
ALU
P
C
寄存器堆
rs2
disp
rs1
+1
im me
A1
Q1
Q2
DI
AD
A2
ISE
数据
A
DO
DI
A
B
指令
A
DI
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S
C
D
rd
CACHE
CACHE
数据收发器
地址总线 地址总线
存储器
DO
采用分开的 CACHE解决结构相关
计算机组成原理 51
数据相关及解决方法 I1,add r1,r2,r3I2,sub r4,r1,r5
I3,and r6,r7,r1
I4,or r8,r1,r9
I5,addi r10,r1,100
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im me
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEXEIDIF
add r1,r2,r3sub r4,r1,r5and r6,r7,r1or r8,r1,r9
addi r10,r1,100
I1I2I3I4I5
计算机组成原理 52
add r2,r3 add r1
sub
I 1, a d d r1,r2,r3
I 2, s u b r 4,r1,r5
I 3, a n d r 6,r 7,r1
I 4, o r r 8,r1,r9
I 5, a d d i r 1 0,r1,100
r1,r5 sub r4
and r7,r1 and r6
or r1,r9 or r8
addi r1,100 add r10
add r2,r3 add r1
sub
I 1, a d d r1,r2,r3
I 2, s u b r 4,r1,r5
I 3, a n d r 6,r 7,r1
I 4, o r r 8,r1,r9
I 5, a d d i r 1 0,r1,100
r1,r5 sub r4
and r7,r1 and r6
or r1,r9 or r8
addi r1,100 add r10
写寄存器堆提前半个周期,我们只需考虑两条相关指令
计算机组成原理 53
数据相关及解决方法
如何检测发生了数据相关?
静态方法,由编译程序来完成检测。若发生数据相关,则
I1,add r1,r2,r3
nop
nop
I2,sub r4,r1,r5
I3,and r6,r7,r1
I1,add r1,r2,r3
I2,sub r4,r5,r1
I3,and r6,r1,r7
真正影响数据正确性的数据相关是先 写后读 相关
( Read After Write)
I1,add r1,r2,r3
I2,sub r4,r1,r5
I3,and r6,r7,r1
如何解决数据相关?
I1,add r1,r2,r3
I2,sub r4,r2,r5
nop
I3,and r6,r7,r1
计算机组成原理 54
动态方法:
由硬件来完成检测。若发生数据相关,则暂停流水线
暂停流水线要做 3件事情:
1、封锁当前正在译码的指令的写控制信号;
2、不把从存储器取来的下一听指令打入 IR;
3、不改变当前的 PC值。
当 I2与 I1相关,流水线暂停两个周期
当 I3与 I1相关,流水线暂停一个周期
以上解决方法都将影响流水线的性能
计算机组成原理 55
数据相关及解决方法 — 内部前推
流水线 数据相关问题的本质 在于一条指令执行时要用到
上面指令的计算结果,但这个结果尚未被写入寄存器堆。这
些结果实际上已由 ALU计算出来,仅仅是还没有写入寄存器堆
而已。
计算机组成原理 56
AL
U
P
C
寄存器堆
rs2
rs1
检测器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Da ta
I
R
DS E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M E M WBE XEIDIF
add r1,r2,r3sub r4,r1,r5
and r6,r7,r1or r8,r1,r9
I1I2
I3I4
rs2
rs1
1
0
2
3
1
0
2
3
内部前推 --解决 I1与 I2数据相关
计算机组成原理 57
AL
U
P
C
寄存器堆
rs2
rs1
检测器
+1
im m e
opcod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Da ta
I
R
DSE
rd
d
A
B
I
d d
Z
R
S C
D
rd
ME M WBEXEIDIF
add r1,r2,r3sub r4,r1,r5and r6,r7,r1or r8,r1,r9
I1I2I3I4
rs2
rs1
1
0
2
3
1
0
2
3
addi r10,r1,100
I5
内部前推 --解决 I1与 I3数据相关
计算机组成原理 58
LOAD指令 --暂停与内部前推相结合解决数据相关
在 EXE级结束后,LOAD指令还要访问存储器后才读出结果
memload r3,100 add r1
sub
I 1, l o a d r1,100(r3)
I 2, s u b r 4,r1,r5
I 3, a n d r 6,r 7,r1
I 4, o r r 8,r1,r9
I 5, a d d i r 1 0,r1,100
r1,r5 sub r4
and r7,r1 and r6
or r1,r9 or r8
addi r1,100 add r10
计算机组成原理 59
由于在转移发生之前,若干条转移指令的后继指令已被取
到流水线处理机中,而 造成错误。
转移相关及解决方法
解决方法:
1、暂停流水线;
2、假定转移不发生;
3、延迟转移
计 算 机 组 成 原 理
第二十一、二十三讲
2009年 11月 10日
流水线处理机
计算机组成原理 2
1,流水线处理机的基本概念
2,流水线处理机的数据路径
流水线级, 流水线各级的操作
3,流水线处理机的控制
运算指令, 访存指令, 转移控制指令, 流水线各级信号的产
生, 时序图, 时空图
4,流水线处理机的相关
结构相关, 数据相关, 转移相关
本讲安排
计算机组成原理 3
本讲将解决的主要问题
掌握流水线处理机的数据路径
建立指令流水线中指令如何重叠执行和流动
了解流水线工作原理以及相关问题
计算机组成原理 4
ALU
PC
寄存器堆
rs2
rd
Wr itePC
SelSt
AluOP
Wr iteMem
SelLo ad
disp
Wr iteR eg
rs1
SelBran ch
Write Zero
+1 Zero
Zero
imm e
SelIm me
op cod e
AluOP
Wr itePC
SelSt
Wr iteR eg
Wr iteMem
SelIm me
Write Zero
SelBran ch
SelLo ad
控制部件
A1
Q1
Q2
DI
AD
A2
偏移量符
号扩展
立即数符
号扩展
指令
存储器
Add
Data
数据
存储器
Add
DO
DI
WECS
A
B
1
0
1
0
1
0
0
1
单周期处理机
计算机组成原理 5
该单周期处理器的缺陷
时钟周期时间长,
? 对于装入指令,周期时间必须足够长,
指令存储器访问时间 +
寄存器堆访问时间 +
ALU计算地址 +
数据存储器访问时间 +
寄存器建立时间 +
对于所有其他指令,周期时间都比所需的要长很多 !
计算机组成原理 6
多周期处理机
A LU
立即数符号扩展
P
C
存储器
寄存器堆
rs2
A
rd
Wri teP C
Sel St
AluO P
IR
Sel L o a d
disp
Wri teReg
rs1
B
Wri teZero
1
im m e
偏移量符号扩展
Zero
Sel AluB
Sel AluA
Wri teIR
Sel Ldst
Z
Wri teMem
...
Wri teP C
Wri teZero
Zero
opcode
...
控制部件
Q1
A1
Q2
DI
AD
A2
DO
DI
WE CS
Ad d
1
0
3
1
0
0
1
0
1
0
计算机组成原理 7
单周期处理器的问题根源,
对于最慢的指令,周期时间必须足够长
解决方案,
? 将指令处理分为更小的步骤,每个周期执行一步(而不是整
个指令)
- 周期时间,执行最长步所需的时间
- 使所有的步骤尽量具有相同的长度
? 这是多周期处理器的本质所在
多周期处理器的优点,
? 周期时间非常短
? 不同的指令需要不同的周期数来完成
- 装入指令需要 5个周期,- 跳转仅仅需要 3个周期
? 允许每条指令多次使用同一个功能部件
多周期实现概述
计算机组成原理 8
流水线的基本概念
什么是 流水线
计算机中的流水线是把一个重复的过程 分解为若干个子过
程,每个子过程与其他子过程 并行进行 。由于这种工作方式与
工厂中的生产流水线十分相似,因此称为流水线技术。
从本质上讲,流水线技术是一种时间并行技术。
计算机组成原理 9
计算机的各个部分几乎都可以采用流水线技术,
(1)指令的执行过程可以采用流水线,称为 指令流水线 。
(2)运算器中的操作部件,如浮点加法器、浮点乘法器等可
以采用流水线,称为 操作部件流水线 。
(3)访问主存的部件可以采用访存部件流水线。多个计算机
之间,通过存储器连接,也可以采用流水线,称为 宏流水线 。
计算机组成原理 10
指令的重叠执行
(1)顺序执行方式
(2)一次重叠执行方式
(3)二次重叠执行方式
(2) 重叠解释执行
执行 k分析 k取指 k
执行 k+1分析 k+1取指 k+1
T=(2n+1)t
执行 k分析 k取指 k
执行 k+1分析 k+1取指 k+1
(3) 更高重叠程度的解释执行
T=3t+(n-1)t=(n+2)t
执行 k+1分析 k+1取指 k+1执行 k分析 k取指 k
(1) 顺序解释执行
T=3nt
计算机组成原理 11
流水线工作原理
1.基本思想
重叠延伸方式,使指令解释过程进一步细化,
提高各部件的利用率,以提高指令执行速度。
理想目标,完成任务的时间与操作处理过程无关,只与提供
操作的速度有关。
取指 译码 执行 访存 写回输入 输出
IF ID EXE MEM WB
s1 s2 s3 s4 s5
指令流水线举例:
设:每段时间为△ t,有 m个段,每段间均可重叠;
则:每间隔△ t时间有一条指令流传出
计算机组成原理 12
锁
存
器
锁
存
器
C L K
锁
存
器
处理
部件
n
处理
部件
2
处理
部件
1
流水线处理机的 最大特点 是每一个时针周期都能
启动一条指令的执行。
计算机组成原理 13
? 流水技术无助于减少单个任务的 处理延迟 (latency),但有
助于提高整体工作负载 的吞吐率
? 多个 不同任务同时操作,使用不同资源
? 潜在加速比 = 流水线级数
? 流水线的速率受限于 最慢 的流水段
? 流水段的执行时间如果 不均衡,那么加速比就会降低
? 开始 填充 流水线的时间和最后 排放 流水线的时间降低加速比
? 相关 将导致流水线暂停
流水技术性
计算机组成原理 14
单周期、多周期与流水线
CC1 CC2
LOAD
STO RE
IF ID EX E M EM
CC1 CC2 CC3 CC4 CC5
WB
IF ID EX E
IF
WB
单周期处理机
流水线处理机
多周期处理机
LOAD
ADD
IF ID EX E M EM WB
IF ID EX E M EM WB
IF ID EX E M EM WB
计算机组成原理 15
流水线处理机的数据路径
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Da ta
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M EM WBEX EIDIF
计算机组成原理 16
流水线各级的操作 — IF级 1、取指令
2、计算下一条指令地址
ALU
P
C
寄存器堆
r s2
d isp
r s1
控制器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
A d d
DO
DI
A
B
指令
存储器
A d d
D at a
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M E M WBE X EID
IF
计算机组成原理 17
流水线各级的操作 — ID级 1、读寄存器堆中的操作数
2、符号扩展
3、控制器根据 OPCODE产生控制信号
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im me
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEXE
IDIF
4、转移指令在 ID级结束
计算机组成原理 18
流水线各级的操作 — EXE级
1,ALU指令完成计算结果 2,LOAD/STORE指令计算存储器地址
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Da ta
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M EM WBEXEIDIF
计算机组成原理 19
流水线各级的操作 — MEM级
2,LOAD/STORE指令访问存储器,LOAD指令读操作,STORE
指令写操作,STORE指令结束。
1,ALU指令在该级仅把 R内容打入 C
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Dat a
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
ME M
WBEX EIDIF
计算机组成原理 20
流水线各级的操作 — WB级
ALU
P
C
寄存器堆
r s2
d isp
r s1
控制器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
A d d
DO
DI
A
B
指令
存储器
A d d
D at a
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M E M WBE X EIDIF
结果写回到寄存器堆
计算机组成原理 21
ALU指令 执行时流水线的数据路径
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Dat a
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M EM WBEX EIDIF
计算机组成原理 22
LOAD指令 执行时流水线的数据路径
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Dat a
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M EM WBEX EIDIF
计算机组成原理 23
STORE指令 执行时流水线的数据路径
ALU
P
C
寄存器堆
r s2
d isp
r s1
控制器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
A d d
DO
DI
A
B
指令
存储器
A d d
D at a
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M E M WBE X EIDIF
计算机组成原理 24
流水线处理机的控制 — ALU指令和存储器访问指令的控制
I1 addi r1,r2,4 ; r1?( r2) + 4
I2 load r2,100(r3); r2? memory [( r3) + 100]
I3 sub r4,r5,r6; r4?( r5) -( r6)
I4 add r7,r5,r6; r7?( r5) +( r6)
I5 store r8,200(r9);memory[( r9) + 200]?( r8)
I6 subi r10,r10,1; r10?( r10) - 1
研究流水线处理机对以下指令重叠操作过程
指令系统和指令格式同前面一样
计算机组成原理 25
指令系统和指令格式
31 26 25 21 20 16 15 5 4 0 指令助记符 意 义
00 0101 rd rs1 imme addi rd,rs1,imme rd ?(rs1)addimme
00 0101 00001 00010 0004H addi r1,r2,4
00 0100 rd rs1 rs2 add rd,rs1,rs2 rd ?(rs1)add(rs2)
00 0100 00111 00101 00110 add r7,r5,r6
00 0110 rd rs1 rs2 sub rd,rs1,rs2 rd ?(rs1)sub (rs2)
00 0110 00100 00101 00110 sub r4,r5,r6
00 1000 rd rs1 imme load rd,rs1,imme rd ?((rs1) +imme)
00 1000 00010 00011 0064H load r2,r3,100
00 1001 rd rs1 imme store rd,rs1,imme (rd)?((rs1) + imme)
00 1001 01000 01001 00C8H store r8,r9,200
计算机组成原理 26
指令系统和指令格式
31 26 25 21 20 16 15 5 4 0 指令助记符 意 义
00 0000 rd rs1 rs2 and rd,rs1,rs2 rd?(rs1)and(rs2)
00 0001 rd rs1 imme andi rd,rs1,imme rd?(rs1)andimme
00 0010 rd rs1 rs2 or rd,rs1,rs2 rd?(rs1)or (rs2)
00 0011 rd rs1 imme ori rd,rs1,imme rd?(rs1)orimme
00 0100 rd rs1 rs2 add rd,rs1,rs2 rd?(rs1)add(rs2)
00 0101 rd rs1 imme addi rd,rs1,imme rd?(rs1)addimme
00 0110 rd rs1 rs2 sub rd,rs1,rs2 rd?(rs1)sub(rs2)
00 0111 rd rs1 imme subi rd,rs1,imme rd?(rs1)subimme
00 1000 rd rs1 imme load rd,rs1,imme rd?((rs1)+imme)
00 1001 rd rs1 imme store rd,rs1,imme (rd)?((rs1) + imme)
00 1010 disp bne disp If z=0,pc?(pc)+disp
00 1011 disp beq disp If z=1,pc?(pc)+disp
00 1100 disp branch disp pc?(pc)+disp
计算机组成原理 27
CC1— Fetch I1
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im m e
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Da ta
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M E M WBE XEIDIF
addi r1,r2,4
BTAKEN=0
0
1
计算机组成原理 28
CC2— Fetch I2 并 Decode I1
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im m e
op cod e
A1
Q1
Q2
DI
AD
A2
00000004
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Da ta
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M E M WBE XEIDIF
addi r1,r2,4
BTAKEN=0
0
1
load r2,100(r3)
SST=0
0
1
02
01
04
计算机组成原理 29
CC3— Fetch I3 并 Decode I2 并 EXEC I1
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im m e
op cod e
A1
Q1
Q2
DI
AD
A2
00000064
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Da ta
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M E M WBE XEIDIF
addi r1,r2,4
BTAKEN=0
0
1
load r2,100(r3)
SST=0
0
1
sub r4,r5,r6
SIMM=1
1
0
ALUOP=add
02 01
03
04
计算机组成原理 30
CC4— Fetch I4 并 Decode I3 并 EXEC I2 并 MEM I1
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im me
op cod e
A1
Q1
Q2
DI
AD
A2
00000006
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEX EIDIF
addi r1,r2,4
BTAKEN=0
0
1
load r2,100(r3)
SST=0
0
1
sub r4,r5,r6
SIMM=1
1
0
add r7,r5,r6
04
02
01
ALUOP=add
05
06
计算机组成原理 31
CC5— Fetch I5 并 Decode I4 并 EXEC I3 并 MEM I2 并 WB I1
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im m e
op code
A1
Q1
Q2
DI
AD
A2
00000006
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEX EIDIF
addi r1,r2,4
BTAKEN=0
0
1
load r2,100(r3)
SST=0
0
1
sub r4,r5,r6
SIMM=0
1
0
add r7,r5,r6store r8,200(r9)
SLD=0
0
1
ALUOP=sub
04 02 0107
05
06
计算机组成原理 32
CC6— Fetch I6 并 Decode I5 并 EXEC I4 并 MEM I3 并 WB I2
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im m e
op code
A1
Q1
Q2
DI
AD
A2
00 00 00 C8
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEX EIDIF
BTAKEN=0
0
1
load r2,100(r3)
SST=1
0
1
sub r4,r5,r6
SIMM=0
1
0
add r7,r5,r6store r8,200(r9)
SLD=1
0
1
ALUOP=add
04 0207
09
subi r10,r10,1
08
计算机组成原理 33
CC7— Decode I6 并 EXEC I5 并 MEM I4 并 WB I3
ALU
P
C
寄存器堆
rs2
d isp
rs1
控制器
+1
im me
opcod e
A1
Q1
Q2
DI
AD
A2
00000001
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
ME M WBEXEIDIF
BTAKEN
0
1
SST= 0
0
1
sub r4,r5,r6
SIMM=1
1
0
add r7,r5,r6store r8,200(r9)
SLD=0
0
1
ALUOP=add
040710
subi r10,r10,1
08
10
01
计算机组成原理 34
CC8— EXEC I6 并 MEM I5 并 WB I4
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
imm e
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEXEIDIF
BTAKEN
0
1
SST
0
1
SIMM=1
1
0
add r7,r5,r6
store r8,200(r9)
SLD=0
0
1
ALUOP=sub
07
10
subi r10,r10,1
08
计算机组成原理 35
CC9— MEM I6
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
imm e
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEXEIDIF
BTAKEN
0
1
SST
0
1
SIMM
1
0
store r8,200(r9)
SLD
0
1
ALUOP
10
subi r10,r10,1
08
计算机组成原理 36
CC10— WB I6
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im me
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEX EIDIF
BTAKEN
0
1
SST
0
1
SIMM
1
0
SLD=0
0
1
ALUOP
10
subi r10,r10,1
以上还有 3个控制信号,WZ— 写 Z标志信号
WMEM— 写存储器信号
WREG-- 写寄存器堆信号
计算机组成原理 37
流水线处理机的控制 — 转移指令控制
subi r10,r10,1
bne abc
add r1,r2,r3
abc,load
00 1010 disp bne disp If z=0,pc?(pc)+disp
结果不为 0,转移
00 1011 disp beq disp If z=1,pc?(pc)+disp
结果为 0,转移
00 1100 disp branch disp pc?(pc) + disp
无条件转移
subi r10,r10,1
nop
bne abc
nop
add r1,r2,r3
条件转移指令控制
无条件转移指令控制
branch abc
add r1,r2,r3
branch abc
nop
add r1,r2,r3
计算机组成原理 38
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im me
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEXEIDIF
BTAKEN
0
1
SST
0
1
SIMM
1
0
SLD
0
1
ALUOP
subi r10,r10,1bne abc
计算机组成原理 39
ALU
P
C
寄存器堆
rs2
rs1
控制器
+1
im me
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEXEIDIF
BTAKEN
0
1
SST
0
1
SIMM
1
0
SLD
0
1
ALUOP
subi r10,r10,1bne abc nopadd r1,r2,r3
zero
计算机组成原理 40
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im me
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEXEIDIF
BTAKEN
0
1
SST
0
1
SIMM
1
0
SLD
0
1
ALUOP
subi r10,r10,1bne abc nop
计算机组成原理 41
ALU
P
C
寄存器堆
rs2
rs1
控制器
+1
imm e
o p co d e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEXEIDIF
BTAKEN
0
1
SST
0
1
SIMM
1
0
SLD
0
1
ALUOP
subi r10,r10,1bne abc nop
zer o
nop
转移发生的条件为 BTAKEN = branch + bne?Z + beq?Z
计算机组成原理 42
级 控制信号 注释
IF级 BTAKEN 转移发生
ID级 SST 选择 STORE( rd)
EXE级 SIMM 选择立即数
ALUOP ALU操作码
WZ 写 Z标志
MEM级 WMEM 写存储器
WB级 SLD 选择 LOAD
WREG 写寄存器堆
流水线各级控制信号的定义
计算机组成原理 43
流水线各级控制信号的产生表达式
指 令 ALUOP1 ALUOP0 注释
and /andi 0 0 与
or/ ori 0 1 或
add/ addi 1 0 加
sub/ subi 1 1 减
load/ store 1 0 加
aluop1=add+addi+sub+subi+load+store
aluop0=or+ori+sub+subi
BTAKEN=branch+bne﹡ Z+beq﹡ Z
SST=store
SIMM=andi+addi+ori+subi+load+store
WZ= andi+addi+ori+subi+ and+add+or+sub
WMEM=store
SLD=load
WREG=andi+addi+ori+subi+ and+add+or+sub+load
计算机组成原理 44
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im me
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
BTAKEN
0
1
SST
SIMM
ALUOP
WZ
WMEM
SLD
WREG
zero
计算机组成原理 45
1
1
1
1
1
2
2
2
2
2
3
3
3
3
3
4
4
4
4
4
时间
空间
IF
ID
EXE
MEM
WB
计算机组成原理 46
IF ID EXE MEM WB
IF ID EXE MEM WB
IF ID EXE MEM WB
IF ID EXE MEM WB
时间
指令
I1
I2
I3
I4
计算机组成原理 47
相关概念,相近指令间出现了某种关联,使得指令不能
提前解释
结构相关,由于硬件资源不足而导致流水线不畅通。
数据相关,本条指令的操作数地址与前一条指令存放
结果的地址相同,便出现了前条指令还没有
结果,而后一条指令要求提前取出,造成
错误。
转移相关,由于在转移发生之前,若干条转移指令的后继指
令已被取到流水线处理机中,而 造成错误。
流水线处理机的相关
因为流水线中指令和数据要提前取出来,因此相邻指令之间存
在许多关联。
计算机组成原理 48
结构相关及解决方法
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
imm e
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
存储器
Add
DO
DI
A
B
I
R
DSE
rd
d
A
B
I
d d
Z
R
S C
D
rd
单存储器模块所构成的流水线处理机 --结构相关
计算机组成原理 49
IF ID EXE MEM WB
IF ID EXE MEM WB
IF ID EXE MEM WB
IF ID EXE MEM WB
时间
指令
I1
I2
I3
I4
I1是 LOAD指令,则 I1与 I4结构相关
计算机组成原理 50
ALU
P
C
寄存器堆
rs2
disp
rs1
+1
im me
A1
Q1
Q2
DI
AD
A2
ISE
数据
A
DO
DI
A
B
指令
A
DI
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S
C
D
rd
CACHE
CACHE
数据收发器
地址总线 地址总线
存储器
DO
采用分开的 CACHE解决结构相关
计算机组成原理 51
数据相关及解决方法 I1,add r1,r2,r3I2,sub r4,r1,r5
I3,and r6,r7,r1
I4,or r8,r1,r9
I5,addi r10,r1,100
ALU
P
C
寄存器堆
rs2
disp
rs1
控制器
+1
im me
op cod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Add
DO
DI
A
B
指令
存储器
Add
Data
I
R
D
S
E
rd
d
A
B
I
d d
Z
R
S C
D
rd
MEM WBEXEIDIF
add r1,r2,r3sub r4,r1,r5and r6,r7,r1or r8,r1,r9
addi r10,r1,100
I1I2I3I4I5
计算机组成原理 52
add r2,r3 add r1
sub
I 1, a d d r1,r2,r3
I 2, s u b r 4,r1,r5
I 3, a n d r 6,r 7,r1
I 4, o r r 8,r1,r9
I 5, a d d i r 1 0,r1,100
r1,r5 sub r4
and r7,r1 and r6
or r1,r9 or r8
addi r1,100 add r10
add r2,r3 add r1
sub
I 1, a d d r1,r2,r3
I 2, s u b r 4,r1,r5
I 3, a n d r 6,r 7,r1
I 4, o r r 8,r1,r9
I 5, a d d i r 1 0,r1,100
r1,r5 sub r4
and r7,r1 and r6
or r1,r9 or r8
addi r1,100 add r10
写寄存器堆提前半个周期,我们只需考虑两条相关指令
计算机组成原理 53
数据相关及解决方法
如何检测发生了数据相关?
静态方法,由编译程序来完成检测。若发生数据相关,则
I1,add r1,r2,r3
nop
nop
I2,sub r4,r1,r5
I3,and r6,r7,r1
I1,add r1,r2,r3
I2,sub r4,r5,r1
I3,and r6,r1,r7
真正影响数据正确性的数据相关是先 写后读 相关
( Read After Write)
I1,add r1,r2,r3
I2,sub r4,r1,r5
I3,and r6,r7,r1
如何解决数据相关?
I1,add r1,r2,r3
I2,sub r4,r2,r5
nop
I3,and r6,r7,r1
计算机组成原理 54
动态方法:
由硬件来完成检测。若发生数据相关,则暂停流水线
暂停流水线要做 3件事情:
1、封锁当前正在译码的指令的写控制信号;
2、不把从存储器取来的下一听指令打入 IR;
3、不改变当前的 PC值。
当 I2与 I1相关,流水线暂停两个周期
当 I3与 I1相关,流水线暂停一个周期
以上解决方法都将影响流水线的性能
计算机组成原理 55
数据相关及解决方法 — 内部前推
流水线 数据相关问题的本质 在于一条指令执行时要用到
上面指令的计算结果,但这个结果尚未被写入寄存器堆。这
些结果实际上已由 ALU计算出来,仅仅是还没有写入寄存器堆
而已。
计算机组成原理 56
AL
U
P
C
寄存器堆
rs2
rs1
检测器
+1
im m e
opcode
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Da ta
I
R
DS E
rd
d
A
B
I
d d
Z
R
S C
D
rd
M E M WBE XEIDIF
add r1,r2,r3sub r4,r1,r5
and r6,r7,r1or r8,r1,r9
I1I2
I3I4
rs2
rs1
1
0
2
3
1
0
2
3
内部前推 --解决 I1与 I2数据相关
计算机组成原理 57
AL
U
P
C
寄存器堆
rs2
rs1
检测器
+1
im m e
opcod e
A1
Q1
Q2
DI
AD
A2
ISE
数据
存储器
Ad d
DO
DI
A
B
指令
存储器
Ad d
Da ta
I
R
DSE
rd
d
A
B
I
d d
Z
R
S C
D
rd
ME M WBEXEIDIF
add r1,r2,r3sub r4,r1,r5and r6,r7,r1or r8,r1,r9
I1I2I3I4
rs2
rs1
1
0
2
3
1
0
2
3
addi r10,r1,100
I5
内部前推 --解决 I1与 I3数据相关
计算机组成原理 58
LOAD指令 --暂停与内部前推相结合解决数据相关
在 EXE级结束后,LOAD指令还要访问存储器后才读出结果
memload r3,100 add r1
sub
I 1, l o a d r1,100(r3)
I 2, s u b r 4,r1,r5
I 3, a n d r 6,r 7,r1
I 4, o r r 8,r1,r9
I 5, a d d i r 1 0,r1,100
r1,r5 sub r4
and r7,r1 and r6
or r1,r9 or r8
addi r1,100 add r10
计算机组成原理 59
由于在转移发生之前,若干条转移指令的后继指令已被取
到流水线处理机中,而 造成错误。
转移相关及解决方法
解决方法:
1、暂停流水线;
2、假定转移不发生;
3、延迟转移