MIPS指令五级流水CPU设计剖析

合集下载

MIPS指令五级流水CPU设计剖析

MIPS指令五级流水CPU设计剖析

MIPS指令五级流水CPU设计剖析MIPS指令五级流水CPU设计是一种高性能的处理器设计架构,它将指令的执行过程拆分为五个阶段,并且在每个阶段中可以同时处理多条指令,实现了指令级并行处理。

在这种设计中,分别是取指(Instruction Fetch)、译码(Instruction Decode)、执行(Execute)、访存(Memory Access)和写回(Write Back)这五个阶段。

在MIPS指令五级流水CPU设计中,首先是取指(Instruction Fetch)阶段,这是整个处理器开始处理一条指令的阶段。

在这个阶段,处理器从指令存储器中读取即将执行的指令,并将其送入流水线中。

这个阶段还会包括对指令地址的计算和异常处理的操作。

当一条指令流入流水线后,处理器就会进行下一个阶段的操作。

接下来是译码(Instruction Decode)阶段,这个阶段主要是将取到的指令进行解码,确定指令的操作类型和需要操作的寄存器等信息。

在这个阶段,会根据指令的不同分支到不同的功能单元中处理。

同时还会识别指令之间的数据相关性,以便在后续阶段进行相应的控制。

第三个阶段是执行(Execute)阶段,在这个阶段,CPU执行指令的操作,进行算数运算或逻辑运算,或者进行跳转等控制操作。

在这个阶段,CPU还将从寄存器文件中读取数据,并进行相应的运算。

这个阶段涉及到的计算量比较大,所以需要比较多的时钟周期来完成。

接下来是访存(Memory Access)阶段,这个阶段主要是处理访问数据内存的操作,比如从数据内存中读取数据,或将结果写入数据内存等。

在这个阶段,处理器还会涉及到访存相关的操作,比如缓存机制的处理等。

这个阶段的操作通常是比较高速的存储器操作。

最后是写回(Write Back)阶段,这个阶段是处理器的最后一个阶段,处理器将执行结果写回到寄存器文件中,或进行其他相关的操作。

这个阶段可以认为是指令执行的结束阶段,对前面四个阶段产生的结果进行最终的处理。

基于MIPS指令集的流水线CPU设计与实现

基于MIPS指令集的流水线CPU设计与实现

基于MIPS指令集的流水线CPU设计与实现刘秋菊;张光照;王仲英【摘要】提出了一种CPU设计方案,实现指令集为MIPS指令集中选取15条指令作为本CPU的基本指令,采用基本5步流水线CPU设计.分析了流水线CPU的逻辑结构与指令的处理过程,给出了取指阶段IF、译码阶段ID、执行阶段EX、内存访问阶段MEM、寄存器写回阶段WB阶段的设计与实现.对流水线产生的相关性问题,采用Bubble法和Forwarding法相结合的方法来消除相关性,在FPGA平台上进行了测试,测试结果表明,该方案符合设计要求.%In this paper,a design method of CPU was proposed,the instruction set of the CPU contained 15 items of MIPS instruction set,and the basic method of five step pipeline CPU design was used.Analyses were conducted on the logic structure of the pipeline CPU and the processing of the instruction.This paper also gave design and realization of stage IF,stage ID,stage EX,stage MEM and stage WB.About the pipeline-related problems,the paper adopted Bubble and Forwarding technologies to eliminate it.The tests on the FPGA platform show that the scheme meets the design requirements.【期刊名称】《实验室研究与探索》【年(卷),期】2017(036)008【总页数】6页(P148-152,172)【关键词】流水线;中央处理器;设计;指令集【作者】刘秋菊;张光照;王仲英【作者单位】郑州工程技术学院信息工程学院,郑州450000;河南经贸职业学院技术科学系,郑州450018;河南经贸职业学院技术科学系,郑州450018【正文语种】中文【中图分类】TP332在工业设计和机器人研究中,微处理器作为控制部件的核心是设计的关键,其性能直接影响整个系统的性能。

经典MIPS五级流水介绍

经典MIPS五级流水介绍

信号名称
设为0时的效果
设为1时的效果
RegDst
egWrite ALUSrcR
写入寄存器的目标编号来 自rt字段(20:16)
写入寄存器的目至写入寄 存器输入对应的寄存器 第二个ALU操作数为已符号化扩 展的指令低16位 PC的值置为计算分支目标地址的 加法器的输出 输入地址对应的数据内存的内容 放置到读出数据的输出 输入地址对应的数据内存的内容 替换为写入数据的输入 数据内存提供寄存器写数据的输 入值

三种流水线冒险
数据冒险 一个操作必须等待另一个操作完成后才 能进行时,流水线必须停顿,我们称这种情况为 数据冒险。 转发(forward) 也叫旁路(bypass)。上一个 操作的结果产生以后不必写回寄存器,直接转发 给下一条指令。可以消除部分数据冒险。 阻塞(stall)当一条指令试图读取一个寄存器而 它前一条指令是load指令,并且该load指令写入 的是同一寄存器时,必须采用相应的机制阻塞流 水线。
三种流水线冒险
分支冒险 也叫控制冒险。每周期都取指令, 但对与分支指令,必须等到MEM阶段才能 确定是否执行分支。这种为了确定预取正 确的指令导致的延迟叫做分支冒险。 静态预测 阻塞直到分支发生完毕的速度实 在太慢。比较普遍的提高分支阻塞速度的 方法是假设分支不发生,继续执行;或者 假定分支发生 ,跳到转移地址执行。可以 将分支冒险的代价减半。
引入流水线寄存器图
流水线每级的工作
流水线中的控制
一共9条控制线,根据流水线的五个步骤将 控制线分为五组: 1)取指令:读取指令内存和写PC的控制信 号总是确定的,没特别需控制的。 2)指令译码/读取寄存器:每个时钟周期内 这个步骤所完成的工作都是相同的,不需 设置控制线。

MIPS指令五级流水CPU设计资料

MIPS指令五级流水CPU设计资料
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
指令预取
取指令 3 执行指令 3
若 取指 和 执行 阶段时间上 完全重叠 指令周期 减半 速度提高 1 倍
时间?
二、 流水线操作时空图
空间 执行操作 取数操作 分析指令 1 I 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 装入阶段 稳定流水阶段
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)
4.5 MIPS指令五级流水CPU设计
4.5.1 多周期CPU回顾 4.5.2 指令流水基本概念 4.5.3 MIPS指令流水的实现
4.5.1 多周期CPU回顾
多周期CPU特点 – 指令的执行划分为多个步骤 – 每个步骤占用一个CPU周期 – 不同指令的指令周期不同 – 指令串行执行

MIPS指令五级流水CPU设计剖析

MIPS指令五级流水CPU设计剖析

MIPS指令五级流水CPU设计剖析MIPS指令五级流水将指令的执行过程划分为取指(Instruction Fetch, IF)、译码(Instruction Decode, ID)、执行(Execution, EX)、访存(Memory Access, MEM)和写回(Write Back, WB)五个阶段。

每个阶段由一个独立的硬件逻辑电路实现,这样指令可以在同一时间在不同阶段同时执行,从而提高了CPU的吞吐量。

在取指阶段,CPU从指令缓存(Instruction Cache)中读取指令,并将其送入指令译码阶段。

取指阶段主要包括以下几个步骤:首先,CPU从PC寄存器中读取下一条指令的地址;然后,CPU将这个地址发送到指令缓存中,读取对应的指令;最后,CPU将读取到的指令送入译码阶段。

在译码阶段,CPU对指令进行译码,确定指令的类型和操作数,并将这些信息传递给执行阶段。

译码阶段主要包括以下几个步骤:首先,CPU从指令中解析出操作码和操作数;然后,CPU根据操作码确定指令的类型,并确定需要使用的操作数;最后,CPU将指令类型和操作数传递给执行阶段。

在执行阶段,CPU执行指令的实际操作,并计算结果。

执行阶段主要包括以下几个步骤:首先,CPU根据指令类型和操作数进行相应的运算;然后,CPU将计算结果传递给访存阶段或写回阶段,具体传递给哪个阶段取决于指令的类型;最后,CPU将执行完成的指令从流水线中清除。

在访存阶段,CPU将数据存储到内存或从内存中读取数据,并将数据传递给下一个阶段。

访存阶段主要包括以下几个步骤:首先,CPU将执行阶段产生的数据存储到内存;然后,CPU从内存中读取数据;最后,CPU将读取到的数据传递给写回阶段或下一个指令的取指阶段。

在写回阶段,CPU将执行阶段产生的结果写回到寄存器文件(Register File)中,以保存计算结果。

写回阶段主要包括以下几个步骤:首先,CPU将执行阶段产生的结果写入寄存器文件;然后,CPU更新PC寄存器的值,以指向下一条需要执行的指令;最后,CPU将流水线上所有已经执行完成的指令清除。

指令级流水指令级并行

指令级流水指令级并行

指令级流水指令级并行计算机体系结构Report2指令级流水和指令级并行——永无休止的“完美”追求戚洪源目录一、性能瓶颈来源 (4)1、单周期、多周期MIPS结构性能瓶颈 (4)2、简单的五级流水MIPS性能瓶颈来源 (4)相关 (4)冲突 (5)二、突破瓶颈的可能性 (5)三、性能提升的具体方法 (6)1、简单的硬件实现方法 (6)定向技术 (6)投机 (6)2、基于软件(编译器)的静态调度方法 (7)预测分支 (7)3、软硬件结合的动态调度方法 (8)Tomasulo算法 (8)动态分支预测 (8)4、多指令流出 (9)基于静态调度的多流出技术 (9)基于动态调度的多流出技术 (9)超长指令字技术 (10)超流水线技术 (10)5、循环展开和指令调度 (10)四、总结 (10)摘要:有人说,如果计算机科学与技术是一座金字塔,位于塔尖的一定是高性能计算。

从计算机诞生至今,每一次进步都是对于计算机性能极限的一次刷新。

人类对于计算性能日益膨胀的需求,前沿科技对于高性能计算的考验,都促使这一领域不断发展。

单纯硬件技术上的改革是非常重要的:主频的提高、稳定的晶体管……但我们同样惊艳于并行技术在其中发挥的神奇的作用。

各种并行技术犹如催化剂一般,使提高计算机性能的进程大大加快。

这些技术的应用,不断挖掘着计算机潜在的性能,也让人类在一条追求“完美”的道路上不断前行。

何谓“完美”?这是一个看起来复杂实际上非常简单的问题。

“完美”,就是让计算机每一个部件每时每刻全负荷运作,发挥最高的性能。

看似简单,但却很难实现,也不可能实现。

并行技术的发展,也是追求“完美”的尝试。

然而程序“性本恶”,程序本身的许多特性为并行化带来了不小的麻烦。

我们其实是在和自己斗争。

“榨干计算机每一滴性能”,这是ASC15上浪潮集团首席科学家王恩东演讲时说的一句话。

在我看来,不论是指令级流水还是指令级并行,目的都是为了“榨干计算机每一滴性能”。

带中断系统的五级流水线CPU设计

带中断系统的五级流水线CPU设计

优化缓存设计:通过优化缓存设计,提高缓存命中率,减少缓存未命中的情况。
优化分支预测:通过优化分支预测算法,提高分支预测的准确性,减少分支预测错误导致的性能损失。
实际应用中的考虑因素
PART 06
硬件资源的占用
处理器核心数量:根据实际需求选择合适的处理器核心数量
内存容量:根据实际需求选择合适的内存容量
பைடு நூலகம்
中断优先级和向量表的作用:保证中断系统的高效性和稳定性,提高CPU的性能和可靠性
带中断系统的五级流水线CPU设计实现
PART 04
中断处理在流水线的实施
中断处理单元:负责处理中断请求,并控制中断响应
中断响应:当接收到中断请求时,CPU暂停当前指令的执行,跳转到中断处理程序
中断优先级:根据中断请求的优先级,决定中断响应的顺序
THANK YOU
汇报人:
中断响应:CPU接收到中断请求信号后,暂停当前任务,进入中断处理状态
中断服务:CPU执行中断服务程序,处理中断请求
中断返回:中断服务完成后,CPU返回到被中断的任务继续执行
中断优先级和向量表
中断优先级:中断系统在处理多个中断请求时,根据优先级的高低来决定处理顺序
向量表:中断系统在处理中断请求时,通过向量表来查找中断处理程序的入口地址
研究方法:采用理论分析、实验验证、仿真模拟等方法进行研究
研究意义:新型中断处理技术的研究与应用可以提高计算机系统的性能和可靠性,提高计算机系统的安全性和稳定性,推动计算机技术的发展。
流水线设计中的新思路和新方法
硬件加速技术:利用专用硬件加速流水线处理过程
自适应流水线设计:根据任务需求自动调整流水线结构
流水线设计的概念
五级流水线设计原理

MIPS指令系统和MIPS体系结构

MIPS指令系统和MIPS体系结构
ID/EX.Imm:____0X00000000000003C_________
ID/EX.IR:_________0x8CC4003C____________________
EX/MEM.ALUo:______0X0000000000000019_____________________
EX/MEM.IR:________0x20030019 _____________________
4)当执行到第13个时钟周期时,各段分别正在处理的指令是:
IF:__BEQ $r1 $r0 ret______________________________
ID:_____LW $r4 60 ($r6)___________________________
EX:______ ADDI $R3 $R0 25__________________________
实验步骤
1)选择MIPSsim的“文件”—>“载入程序”选项来加载pipeline.s(在模拟器所在文件夹下的“样例程序”文件夹中)。
2)关闭定向功能。这是通过“配置”—>“定向”(使该项前面没有√号)来实现的。
3)用单步执行一个周期的方式(在“执行”菜单中)或按F7键执行该程序,观察每一个周期中,各段流水寄存器内容的变化、指令的Байду номын сангаас行情况(“代码”窗口)以及时钟周期图。
MEM/WB.LMD:____0X000000000000000______
MEM/WB.ALUo:____0X000000000000004______
MEM/WB.IR:______0x2021FFFF________________________
(7)观察和分析结构冲突对CPU性能的影响,步骤如下:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使指令流水出现停顿,影响流水线效率
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












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
相关文档
最新文档