当前位置:
文档之家› MIPS指令五级流水CPU设计剖析
MIPS指令五级流水CPU设计剖析
使指令流水出现停顿,影响流水线效率
1
指令 1 FI 指令 2 指令 3 指令 4 指令 5 指令 6 指令 7 指令 8 指令 9 t
2
3
4
5
6
7
8
9
10
11
12 13
14
DI CO FO EI WO FI DI CO FO EI WO FI DI CO FO EI FI DI CO FO FI DI CO FI DI FI
2.采用分支预测: 静态 、动态预测.
4.5.3 MIPS指令流水的实现
指令执行步骤
– – – – – – – – – – 取指令(IF) 指令译码(ID/RF) 指令执行(EXE) 读存储器(MEM) 写回(WB) IF:IM、PC ID/RF:寄存器组、控制信号生成部件 EXE:ALU MEM:DM WB:寄存器组
WO EI FO CO DI FI
WO EI FO CO DI FI
WO EI FO CO DI
WO EI WO FO EI WO CO FO EI WO
停顿(插入汽泡) 解决办法 : 4• 冲突 指令 1 与指令 指令1、指令3、指令 6 冲突 • 冲突 指令存储器和数据存储器分开 … 指令 2 与指令 5
25:21
0
0
PCSrc
31:26 5:0
CLK A1 A2 A3
1 WE3 RD1 1 RD2 0 1 0 0 WriteReg4:0 1 SrcA
CLK 010 Zero ALUResult A
0 WE 1 ReadData 0 1
ALU
Instruction Memory
20:16
SrcB
Register WD3 File
DR
1 0
Immediate
Clock
扩展
左移2位
单周期CPU容易实现指令流水吗?
MemtoReg Control MemWrite Unit Branch ALUControl 2:0 Op Funct ALUSrc RegDst RegWrite CLK 0 1 PC' PC A RD Instr
4.5 MIPS指令五级流水CPU设计
4.5.1 多周期CPU回顾 4.5.2 指令流水基本概念 4.5.3 MIPS指令流水的实现
4.5.1 多周期CPU回顾
多周期CPU特点 – 指令的执行划分为多个步骤 – 每个步骤占用一个CPU周期 – 不同指令的指令周期不同 – 指令串行执行
– 提高了整体性能
20:16 15:11
WriteData
RD Data Memory WD
+
PCPlus4
15:0
SignImm 4 Sign Extend
<<2
+
PCBranch
Result
一、流水线的实现
每条指令的实现至多需要5个时钟周期,时钟周期如下 – 取指令周期(IF)
– 指令译码/读寄存器周期(ID)
指令预取
取指令 3 执行指令 3
若 取指 和 执行 阶段时间上 完全重叠 指令周期 减半 速度提高 1 倍
时间?
二、 流水线操作时空图
空间 执行操作 取数操作 分析指令 1 I 2 2 3 3 4 4 5 5 6 6 7 7
1
1
2
2
3
3
4
4
5
5
6
6
7Байду номын сангаас
7
取指令 1 2 3 4 5 6 7 T0 T1 T2 T3 T4 T5 T6 装入阶段 稳定流水阶段
流水线的每个阶段完成一条指令执行过程的一部分 不同阶段并行完成不同指令执行过程的不同部分。
多条指令同时运行,占用CPU不同的资源。 流水线并没有缩短单条指令的时间,但提高了整个 系统的吞吐率。 连续不断地提供指令才能发挥流水线的效率。
四、影响指令流水线性能的因素
程序中相近的指令之间出现某种关联 1. 结构相关 不同指令争用同一功能部件产生资源冲突
– 执行/有效地址计算周期(EX)
– 存储器访问/分支完成周期(MEM)
– 写回周期(WB)
不同类型的指令在以上5个时钟周期中进行的操作各 不相同。
T7 T8
T9
时间
排空阶段
指令的流水线结构类似于工厂中的装配流水线,使连续操作的多条指令, 依次流入四个功能部件,使四个功能部件不停地依次处理不同指令的执行要 求,这样在每隔一个部件工作时间t,就可送入一条新的指令,每经过时间t
就可得到一条指令执行的结果,指令执行速度可提高四倍。
三、指令流水线的特点
各部件利用率依然偏低
– CPI > 1
– 可以如何改进呢?
4.5.2 指令流水基本概念
一、指令的几种执行方式 1. 指令的串行执行
取指令 1 执行指令 1 取指令 2 执行指令 2 …
取指令
取指令部件
完成
总有一个部件 空闲
执行指令
执行指令部件 完成
2. 指令的二级流水
取指令 1 执行指令 1 取指令 2 执行指令 2
• 写后写相关(WAW)
MUL R3,R2,R1 SUB R3,R4,R5
解决办法 • 采用 旁路技术 •采用乱序执行法解决
3. 控制相关
控制相关的冲突问题是由转移指令引起的。 无条件转移指令 条件转移指令 子程序调用指令 中断指令 解决流水线中主要问题的几种方法: 1.采用等待法解决指令相关的问题;
2. 数据相关
不同指令因重叠操作,可能改变操作数的 读/写 访问顺序 • 写后读相关(RAW) SUB R1,R2,R3 ;(R2) (R3) ;(R5)+(R1) ;(R2) R1 R4 ADD R4,R5,R1 • 读后写相关(WAR) STA M,R2 ADD R2,R4,R5 M 存储单元 R2 R3 R3 ;(R4)+(R5) ;(R2)× (R1) ;(R4) (R5)
确定分支指令 是否转移的 条件信号Z
2 1
op func target
左移2位 PC[31..28]
0
0
指 令 内 容 IR
rs rt
rd
0 1
N1 寄 Q1 存 N2 器 堆 ND DI Q2
A 寄 存 器
1
A A L U
Z
PC
0 1
存 A 储 D 器
B 寄 存 器
4
1 0 2 3
B
R
结 果 寄 存 器
各步骤占用的资源
多周期CPU适合指令流水实现吗? – 已分解为多个步骤,但步骤间的资源冲突比较频繁
写入PC的指令地址
WritePC IODR WriteMEM WriteIR
节拍 信号产生
ALUsrcB
PCsrc
控制部件
MEMtoREG SE REGds WriteREG ALUsrcA
ALUop