处理器流水线的概念和相关技术

  • 格式:ppt
  • 大小:1.33 MB
  • 文档页数:51

下载文档原格式

  / 51
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
i: DSUB R1,R4,R3 j: DADD R1,R2,R3 k: DMUL R6,R1,R7
Can’t happen in MIPS 5 stage pipeline because:
- All instructions take 5 stages, and
- Writes are always in stage 5
❖ 结构冲突(资源冲突):流水线中多条指令在同一 时钟周期内争用同一功能部件的现象。即因硬件资 源满足不了指令重叠执行的要求而发生的冲突。
❖ 常见的导致结构相关的原因: 功能部件不是完全流水或者资源不够用。 例如访存冲突
9
结构冒险
10
2.2 结构冒险的解决办法
❖ MIPS指令集是为流水线设计的,在设计流水 线过程中能够很容易的避免结构冒险。
5
采用相同的功能模块,指令顺序执行和按照流水线
技术执行,在时间上可以看出流水线指令的执行速
度提高了4倍。
6
流水线的基本作用
流水线增大了CPU的指令吞吐量—即单位时 间执行指令的条数,但是它未减少指令各自 的执行时间。实际上流水线技术要对流水线 附加一些控制,因而了增加开销,使单条指 令执行时间略有增加。吞吐量的增大意味着 程序运行的更快,总的执行时间变短,尽管 没有一条指令的执行变快。
处理器流水线的 概念和相关技术
1
流水线技术
❖1.流水线的概念 ❖2.流水线的冒险和冒险的解决办法 ❖3.多发射处理器
2
1.流水线的概念
❖ 流水线技术:
把一个重复的过程分解为若干个子过程,每个子过 程由专门的功能部件来实现。将多个处理过程在时 间上错开,依次通过各功能段,这样,每个子过程 就可以与其他子过程并行进行。
法指令写回寄存器堆时才可以执行指令,浪 费了时间。转发技术:在加法指令在ALU运 算一结束就将结果送给减法指令的输入项。 这样从内部资源中直接提前得到缺少的运算 项的过程叫做转发。
20
在原始的数据通路中用流水线寄存器将流水线各部分分 开,这些寄存器可以存储所有穿过它的数据,寄存器的宽度 都足够大。目前流行的有128位,97位,64位。
气泡
气泡
气泡
指令 i+3
M
Reg
M
12
解决办法二
❖ 设置相互独立的指令存储器和数据存储器或 设置相互独立的指令Cache和数据Cache。
IF 段 IM
ID 段 Reg
EX 段
MEM 段 DM
WB 段 Reg
ALU
流水线寄存器
13
2.3 数据冒险
❖ 一条指令必须等到另一条指令的完成而造成 的流水线暂停的情况叫做数据冒险。形如: add $s0, $t0, $t0 sub $t2, $s0 $t3 加法指令需要到WB阶段后才写回结果,减法 指令此时才可以继续执行。在不任何干预的 情况下,流水线白白浪费了三个时钟周期。
14
时间(时钟周期)
1
2
3
DADD R1,R2,R3 IM
Reg
4
5
6
DM
Reg
ALU ALU ALU ALU
DSUB R4,R1,R5
IM
Reg
DM
Reg
XOR R6,R1,R7
IM
Reg
DM
AND R8,R1,R9
IM
Reg
OR R10,R1,R11
IM
Reg
AND,OR操作不会暂停,但是DSUB,XOR指
❖ 这对应“真数据相关”,为了确保j可以得到 正确的i值,必须保持程序的百度文库序。
i: DSUB R1,R2,R3 j: DADD R4,R1,R3
17
写后写冲突(WAW: Write After Write)
❖ 在 i 写入之前,j 先写。最后写入的结果 i 是 错误的。
❖ 这对应“输出相关”,寄存器换名技术可以 消除
7
2.流水线的冒险
❖ 尽管流水线可以带来处理器性能上的提高,但是不 是所有的指令就直接可以进行流水线操作,在指令 执行中的下一个周期中的下一条指令不能执行,这 种情况叫做冒险。有三类冒险:
1.结构冒险 2.数据冒险 3.控制冒险 流水线中的冒险会引起流水线停顿,部分指令就要延期执行。
8
2.1 结构冒险
❖ 流水线的描述:最常用的方法是时间-空间图
横坐标:表示时间,即各个任务在流水线中所 经过的时间
纵坐标:表示空间,即流水线的各个子过程, 也称为级、流水线深度(Stage)
3
流水线时间空间图
4
❖ 流水线技术应用到处理器中就是采用流水线 方式执行指令。一个MIPS指令包包含五个处 理步骤: 1.取指令周期(IF) 2.指令译码/读寄存器周期(ID) 3.执行操作/计算地址(EX) 4.从数据存储器中读取操作数(MEM) 5.将结果写回寄存器堆(WB)
- All instructions take 5 stages, and
- Reads are always in stage 2, and 读后读RAR不是数据冒险,
- Writes are always in stage 5
1读9 操作不改变值
转发(旁路)方式解决数据冒险
形如:add $s0, $t0, $t0 sub $t2, $s0 $t3,减法指令要等到加
❖ 但是流水结构中只有一个存储器时,两条指 令同时在一个存储器中预取指令就会发生结 构冒险。
11
为消除资源冲突而插入的流水线气泡
(Bubble)
时间(时钟周期)
1
2
3
4
5
6
7
8
load M
Reg
M
Reg
ALU
ALU ALU ALU
指令 i+1
M
Reg
M
Reg
指令 i+2
M
Reg
M
Reg
暂停
气泡
气泡
18
读后写冲突(WAR: Write After Read)
❖ 在 i 读之前,j 先写。i 读出的内容是错误的! ❖ 这对应“反相关” ,寄存器换名技术可以消

i: DSUB R4,R1,R3
j: DADD R1,R2,R3
k: DMUL R6,R1,R7
Can’t happen in MIPS 5 stage pipeline because:
令需要等待DADD在WB阶段写回数据后才
可以执行。
15
2.4 数据冒险的解决办法
❖ 根据指令中读写访问的顺序,可以将数据冒 险分为三类。分别是:
❖ 写后读(RAW) ❖ 写后写 (WAW) ❖ 读后写 (WAR)
16
写后读冒险(RAW: Read After Write)
❖ 在 i 写入之前,j 先去读。j 会错误的获取旧 值。