流水线处理器冲突问题

  • 格式:pptx
  • 大小:551.97 KB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IM and
+
DM
Trouble!
$s0
RF $s1
&
$s0 RF
DM
$t0 RF
8
Time (cycles)
IM or
$s4
RF $s0
|
DM
$t1 RF
$s0
IM sub
RF $s5
-
DM
$t2 RF
阻塞
1
lw $s0, 40($0)
IM lw
and $t0, $s0, $s1
or $t1, $s4, $s0
$s4
IM or
RF $s0
|
DM
$t1 RF
sub $t2, $s0, $s5
$s0
IM sub
RF $s5
-
DM
$t2 RF
阻塞
1
lw $s0, 40($0)
IM lw
and $t0, $s0, $s1
or $t1, $s4, $s0
sub $t2, $s0, $s5
2
3
4
5
6
7
$0 RF 40
28 or $t1, $s4, $s0
2C sub $t2, $s0, $s5
30 ... ... 64 slt $t3, $s2, $s3
IM slt
$s2 RF $s3
Read/Write
Decode Execute
Read Reg ALU
Write Reg
Memory Read/Write
Write Reg
流水线处理器抽象表示
1
lw $s2,40($0) IM lw add $s3, $t1, $t2 sub $s4, $s1, $s5 and $s5, $t5, $t6 sw $s6, 20($s1) or $s7, $t3, $t4
流水线处理器
流水线 MIPS 处理器
• 通常将单周期处理器分解成五级以构成流水线处理器:
–取指(Fetch) –译码分析(Decode) –执行 –存储器操作 –写回
• 在每个级别之间添加流水线寄存器 • 时间并行
单周期 vs. 流水线
单周期
0 Instr 1
2
100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900
2
3
4
5
6
7
8
9
10
$0
RF 40
+
DM
$s2 RF
Time (cycles)
$t1
IM add
RF $t2
+
DM
$s3 RF
$s1
IM sub RF $s5
-
DM
$s4 RF
$t5
IM and RF $t6
&
DM
$s5 RF
IM sw
$s1
RF 20
+
DM
$s6 RF
IM or
$t3 RF $t4 |
$t1 RF $t2 -
DM
RF
24 and $t0, $s0, $s1
$s0
IM and RF $s1
&
DM
RF
28 or $t1, $s4, $s0
IM or
$s4 RF $s0 |
DM
RF
2C sub $t2, $s0, $s5
$s0
IM sub RF $s5
-
DM
30 ... ... 64 slt $t3, $s2, $s3
sub $t2, $s0, $s5
2
3
4
5
6
7
8
9
$0
RF 40
+wenku.baidu.com
DM
$s0 RF
Time (cycles)
$s0
$s0
IM and
RF $s1 RF $s1
&
DM
$t0 RF
IM or
IM or
Stall
$s4
RF $s0 |
DM
$s0
IM sub RF $s5
-
$t1 RF
DM
$t2 RF
控制冲突
DM
$s7 RF
流水线冲突
• 冲突类型
– 数据冲突 – 控制冲突
• 核心问题
– 化解冲突
数据冲突
1
2
3
4
5
6
$s2
add $s0, $s2, $s3 IM add RF $s3 +
DM
$s0 RF
7
8
Time (cycles)
and $t0, $s0, $s1
$s0 IM and RF $s1 &
Fetch
Decode Execute
Instruction Read Reg ALU
Memory Write Read / Write Reg
Fetch Instruction
Decode Read Reg
Execute ALU
Time (ps)
Memory Write Read / Write Reg
Instr 1 2 3
Fetch Instruction
流水线
Decode Read Reg Fetch Instruction
Execute ALU Decode Read Reg Fetch
Instruction
Memory Write
Read/Write Reg
Execute
Memory
ALU
$s0 RF
Time (cycles)
nop
IM nop RF
DM
RF
nop and $t0, $s0, $s1 or $t1, $s4, $s0 sub $t2, $s0, $s5
IM nop RF
DM
RF
$s0
IM and RF $s1
&
DM
$t0 RF
IM or
$s4 RF $s0 |
DM
$t1 RF
$s0
IM sub RF $s5
-
DM
$t2 RF
数据重定向
1
2
3
4
5
6
7
8
$s2
add $s0, $s2, $s3 IM add RF $s3 +
DM
$s0 RF
Time (cycles)
and $t0, $s0, $s1
$s0
IM and
RF $s1
&
DM
$t0 RF
or $t1, $s4, $s0
DM
$t0 RF
or $t1, $s4, $s0
$s4
IM or
RF $s0 |
DM
$t1 RF
sub $t2, $s0, $s5
$s0 IM sub RF $s5 -
DM
$t2 RF
编译时间 消除冲突
1
2
3
4
5
6
7
8
9
10
$s2
add $s0, $s2, $s3 IM add RF $s3 +
DM
• beq:
– Beq分支指令在流水的第4个阶段才能确定是否分支 – 分支之后的指令在分支发生前就已经取得了 – 如果分支发生了,那么将要执行的这些指令就得重新获取
• 分支预测错误代价
– 当分支发生时重新获取的指令数 – 如果能更早的确定分支就可以减少代价
控制冲突
1
2
3
4
5
6
7
20 beq $t1, $t2, 40 IM lw
IM slt
$s2 RF $s3
8
9
Time (cycles)
刷 新 这 些 指 令
RF
DM
$t3 RF
slt
尽早分支判断
1
2
3
4
5
6
7
20 beq $t1, $t2, 40 IM lw
$t1 RF $t2 -
DM
RF
24 and $t0, $s0, $s1
$s0
IM and RF $s1
&
DM
RF