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设计与实现刘秋菊;张光照;王仲英【摘要】提出了一种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五级流水介绍
信号名称
设为0时的效果
设为1时的效果
RegDst
egWrite ALUSrcR
写入寄存器的目标编号来 自rt字段(20:16)
写入寄存器的目至写入寄 存器输入对应的寄存器 第二个ALU操作数为已符号化扩 展的指令低16位 PC的值置为计算分支目标地址的 加法器的输出 输入地址对应的数据内存的内容 放置到读出数据的输出 输入地址对应的数据内存的内容 替换为写入数据的输入 数据内存提供寄存器写数据的输 入值
○
三种流水线冒险
数据冒险 一个操作必须等待另一个操作完成后才 能进行时,流水线必须停顿,我们称这种情况为 数据冒险。 转发(forward) 也叫旁路(bypass)。上一个 操作的结果产生以后不必写回寄存器,直接转发 给下一条指令。可以消除部分数据冒险。 阻塞(stall)当一条指令试图读取一个寄存器而 它前一条指令是load指令,并且该load指令写入 的是同一寄存器时,必须采用相应的机制阻塞流 水线。
三种流水线冒险
分支冒险 也叫控制冒险。每周期都取指令, 但对与分支指令,必须等到MEM阶段才能 确定是否执行分支。这种为了确定预取正 确的指令导致的延迟叫做分支冒险。 静态预测 阻塞直到分支发生完毕的速度实 在太慢。比较普遍的提高分支阻塞速度的 方法是假设分支不发生,继续执行;或者 假定分支发生 ,跳到转移地址执行。可以 将分支冒险的代价减半。
引入流水线寄存器图
流水线每级的工作
流水线中的控制
一共9条控制线,根据流水线的五个步骤将 控制线分为五组: 1)取指令:读取指令内存和写PC的控制信 号总是确定的,没特别需控制的。 2)指令译码/读取寄存器:每个时钟周期内 这个步骤所完成的工作都是相同的,不需 设置控制线。
MIPS指令五级流水CPU设计资料
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
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 装入阶段 稳定流水阶段
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指令五级流水将指令的执行过程划分为取指(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设计
优化缓存设计:通过优化缓存设计,提高缓存命中率,减少缓存未命中的情况。
优化分支预测:通过优化分支预测算法,提高分支预测的准确性,减少分支预测错误导致的性能损失。
实际应用中的考虑因素
PART 06
硬件资源的占用
处理器核心数量:根据实际需求选择合适的处理器核心数量
内存容量:根据实际需求选择合适的内存容量
பைடு நூலகம்
中断优先级和向量表的作用:保证中断系统的高效性和稳定性,提高CPU的性能和可靠性
带中断系统的五级流水线CPU设计实现
PART 04
中断处理在流水线的实施
中断处理单元:负责处理中断请求,并控制中断响应
中断响应:当接收到中断请求时,CPU暂停当前指令的执行,跳转到中断处理程序
中断优先级:根据中断请求的优先级,决定中断响应的顺序
THANK YOU
汇报人:
中断响应:CPU接收到中断请求信号后,暂停当前任务,进入中断处理状态
中断服务:CPU执行中断服务程序,处理中断请求
中断返回:中断服务完成后,CPU返回到被中断的任务继续执行
中断优先级和向量表
中断优先级:中断系统在处理多个中断请求时,根据优先级的高低来决定处理顺序
向量表:中断系统在处理中断请求时,通过向量表来查找中断处理程序的入口地址
研究方法:采用理论分析、实验验证、仿真模拟等方法进行研究
研究意义:新型中断处理技术的研究与应用可以提高计算机系统的性能和可靠性,提高计算机系统的安全性和稳定性,推动计算机技术的发展。
流水线设计中的新思路和新方法
硬件加速技术:利用专用硬件加速流水线处理过程
自适应流水线设计:根据任务需求自动调整流水线结构
流水线设计的概念
五级流水线设计原理
MIPS指令系统和MIPS体系结构
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性能的影响,步骤如下:
经典的MIPS五级流水介绍
无
第二个ALU操作数来自第 二个寄存器堆的输出(读 出数据2) PC的值替换为计算PC+4 的加法器的输出
PCSrc MemRead M器写数据的 输入值
三种流水线冒险
结构冒险 如果由于资源争夺导致几条指令 不能在同一时钟周期内执行,就称处理器 中含有结构冒险。 阻塞(stall)也叫气泡(bubble),解决结 构冒险的一种方式。
op op
rs
rt
constant or address
address
五种寻址模式:
1)寄存器寻址,操作数是寄存器 2)基址或偏移寻址,操作数在内存中,其地址是指令中 基址寄存器和常数的和。 3)立即数寻址,操作数是指令中的常数. 4)PC相对寻址,地址是PC计数器和指令中常数的和。 5)伪直接寻址,跳转地址是指令中26位和PC计数器的高 位相连而成
○
三种流水线冒险
数据冒险 一个操作必须等待另一个操作完成后才 能进行时,流水线必须停顿,我们称这种情况为 数据冒险。 转发(forward) 也叫旁路(bypass)。上一个 操作的结果产生以后不必写回寄存器,直接转发 给下一条指令。可以消除部分数据冒险。 阻塞(stall)当一条指令试图读取一个寄存器而 它前一条指令是load指令,并且该load指令写入 的是同一寄存器时,必须采用相应的机制阻塞流 水线。
引入流水线寄存器图
流水线每级的工作
流水线中的控制
一共9条控制线,根据流水线的五个步骤将 控制线分为五组: 1)取指令:读取指令内存和写PC的控制信 号总是确定的,没特别需控制的。 2)指令译码/读取寄存器:每个时钟周期内 这个步骤所完成的工作都是相同的,不需 设置控制线。
3)指令执行/地址计算:设置的控制线有RegDst、 ALUOp和ALUSrc。根据这些信号选择结果寄存器, 确定ALU的操作,同时读取数据2或经过符号扩展后 得到的立即数。 4)内存访问:设置的控制线有Branch、MemRead 和MemWrite,这些控制信号分别由相等分支、取和 存指令设定。除非控制信号指示这是一条分支指令 同时ALU输出为0,将选择线性地址中的下一条指令 作为PCSrc信号。 5)写回:两条控制线分别是MemtoReg和RegWrite, 前者决定是将ALU结果还是将内存数据传送寄存器堆, 后者记录所要写入的数据。
MIPS指令五级流水CPU设计
指令预取
取指令 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 装入阶段 稳定流水阶段
使指令流水出现停顿,影响流水线效率
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
– 但是,每个部件执行的不是同一条指令
解决方案
– 把控制信号和数据一样流动起来
– 为区分起见,把控制信号前面加上标记,如_IF等
– 每个时钟周期往下一步骤传递控制信号
使正确的控制信号到达正确的位置
流水控制的实现
在RF/ID阶段生成控制信号
– 1个时钟周期后使用EX要用的控制信号
– 2个时钟周期后使用MEM要用的控制信号 – 3个时钟周期后使用WB要用的控制信号
各步骤占用的资源
多周期CPU适合指令流水实现吗? – 已分解为多个步骤,但步骤间的资源冲突比较频繁
写入PC的指令地址
lab28_流水线CPU
10
v
这是5条指令在流水线中的执行情况:
在第6个时钟周期去 读寄存器$2,将会 得到正确的数据。
在第6个时钟周 期之前去读寄 存器$2,得到 的是未更新的 错误数据。
v
结论:当一条依赖关系的方向与时间轴的方向相反 时, 就会产生数据冒险。
11
1.1 一阶数据相关(EX冒险)
v
在这段代码中,与sub指令相关的指令有三条,我 们先来讨论sub指令和 and指令之间的相关问题。
9
1、数据相关与转发
v
我们以具体实例来解释数据相关的概念。
v
注意到:后4条指令都依赖于第一条指令得到的 寄存器$2的结果。但是,sub指令只在第5个时 钟周期时才写回寄存器$2,而and指令在第3 个 时钟周期、or指令在第4个时钟周期、add指令 在第5个时钟周期就分别要用到寄存器$2中的 值。这种数据之间的相互关联引起的冒险就叫 数据相关。
v
v
冒险的解决:引入流水线阻塞。
当Hazard Detector检测到冒险条件成立时,在lw指令 和下一条指令之间插入阻塞,即流水线气泡(bubble), 使后一条指令延迟一个时钟周期执行,这样就将该冒险转 化为二阶数据相关,可用转发解决。
24
v需要注意的是,如果处于ID级的指令被阻塞,那
么处于IF级的指令也必须阻塞,否则,处于ID 级的 指令就会丢失。防止这两条指令继续执行的方法是: 保持PC寄存器和IF/ID流水线寄存器不变,同时插 入一个流水线气泡。
25
v保持 PC寄存器和IF/ID 流水线寄存器不变:
在ID级检测到冒险条件时, Hazard Detector输出一 个信号:PC_IFWrite,作为使能信号同时送给PC寄存器 和IF/ID流水线寄存器。冒险成立时,该信号为低电平, 禁止PC寄存器和IF/ID流水线寄存器接收新数据。
基于MIPS的流水线处理器设计
摘要CPU是计算机系统的核心部件,在各类信息终端中得到了广泛的应用。
处理器的设计及制造技术也是计算机技术的核心之一。
而MIPS 是世界上很流行的一种RISC处理器。
MIPS的意思是“无内部互锁流水级的微处理器”(Microprocessor without interlocked piped stages),其机制是尽量利用软件办法避免流水线中的数据相关问题。
本文围绕着指令执行过程中需经历的五个阶段,详细描述了处理器中各阶段的逻辑设计及其相关功能模块的设计。
这五个阶段包括:取指令阶段IF,指令译码阶段ID,指令执行阶段EXE,存储器读写阶段MEM,寄存器写回阶段WB。
相关模块包括:程序存储器imem,控制单元controller,寄存器堆regfile,算术逻辑单元alu,数据存储器dmem。
在完成了CPU的整体逻辑设计后,通过Modelsim仿真软件在所设计的CPU上运行了测试程序,测试输出波形表明了处理器逻辑设计的正确性。
关键词:MIPS;处理器;流水线AbstractThe Central Processing Unit (CPU) is the key part of a computer, which has been widely used in various information terminals.Also, the design and manufacturing technology of the processor is one of the cores of the computer technology. And, as a RISC processor, MIPS is very popular in the world. MIPS means “microprocessor without interlocked piped stages”, the mechanism of it is to avoid the data-related problems in the pipeline as much as possible by software.Around the five stages of the instruction execution, the article describes the logic designs of the processor and it’s related functional modules in detail.The five stages include: the instruction fetch stage IF, the instruction decode stage ID, the instruction execution stage EXE, the memory read/write stage MEM, and the register write back stage WB. The related modules include: the instruction memory imem, the control unit controller, the register file regfile, the arithmetic logic unit alu, and the data memory dmem.Upon the completion of the whole logic designs, running the test programs by the Modelsim, the correctness of the logic designs is proved by the output waveform.Keywords: MIPS, CPU, Pipeline目录摘要 (I)Abstract (II)目录 (IV)第1章 MIPS体系结构概述 (1)1.1 流水线技术 (1)1.2 RISC技术 (2)1.3 MIPS简介 (4)1.4 MIPS指令集 (5)1.5 本章小结 (10)第2章 MIPS处理器的实现 (11)2.1 MIPS CPU顶层结构 (11)2.2 IF级 (13)2.3 ID级 (14)2.4 EXE级 (16)2.5 MEM级 (17)2.6 WB级 (19)2.7 外部数据输入中断 (19)2.8 本章小结 (20)第3章流水线CPU的仿真 (21)3.1 流水线CPU的指令仿真 (21)3.2 本章小结 (37)第4章总结和展望 (38)参考文献 (39)致谢 (40)附录1 英文文献 (41)附录2 中文译文 (49)附录3 主要模块代码 (55)第1章 MIPS体系结构概述1.1 流水线技术在任一条指令的执行过程中,各个功能部件都会随着指令执行的进程而呈现出时忙时闲的现象。
基于某MIPS地流水线处理器设计
摘要CPU是计算机系统的核心部件,在各类信息终端中得到了广泛的应用。
处理器的设计及制造技术也是计算机技术的核心之一。
而MIPS 是世界上很流行的一种RISC处理器。
MIPS的意思是“无部互锁流水级的微处理器”(Microprocessor without interlocked piped stages),其机制是尽量利用软件办法避免流水线中的数据相关问题。
本文围绕着指令执行过程中需经历的五个阶段,详细描述了处理器中各阶段的逻辑设计及其相关功能模块的设计。
这五个阶段包括:取指令阶段IF,指令译码阶段ID,指令执行阶段EXE,存储器读写阶段MEM,寄存器写回阶段WB。
相关模块包括:程序存储器imem,控制单元controller,寄存器堆regfile,算术逻辑单元alu,数据存储器dmem。
在完成了CPU的整体逻辑设计后,通过Modelsim仿真软件在所设计的CPU上运行了测试程序,测试输出波形表明了处理器逻辑设计的正确性。
关键词:MIPS;处理器;流水线AbstractThe Central Processing Unit (CPU) is the key part of a computer, which has been widely used in various information terminals.Also, the design and manufacturing technology of the processor is one of the cores of the computer technology. And, as a RISC processor, MIPS is very popular in the world. MIPS means “microprocessor without interlocked piped stages”, the mechanism of it is to avoid the data-related problems in the pipeline as much as possible by software.Around the five stages of the instruction execution, the article describes the logic designs of the processor and it’s related functional modules in detail. The five stages include: the instruction fetch stage IF, the instruction decode stage ID, the instruction execution stage EXE, the memory read/write stage MEM, and the register write back stage WB. The related modules include: the instruction memory imem, the control unit controller, the register file regfile, the arithmetic logic unit alu, and the data memory dmem.Upon the completion of the whole logic designs, running the test programs by the Modelsim, the correctness of the logic designs is proved by the output waveform.Keywords: MIPS, CPU, Pipeline目录摘要 (I)Abstract (II)目录 (III)第1章 MIPS体系结构概述 (1)1.1 流水线技术 (1)1.2 RISC技术 (2)1.3 MIPS简介 (4)1.4 MIPS指令集 (5)1.5 本章小结 (10)第2章 MIPS处理器的实现 (11)2.1 MIPS CPU顶层结构 (11)2.2 IF级 (13)2.3 ID级 (14)2.4 EXE级 (16)2.5 MEM级 (17)2.6 WB级 (19)2.7 外部数据输入中断 (19)2.8 本章小结 (20)第3章流水线CPU的仿真 (21)3.1 流水线CPU的指令仿真 (21)3.2 本章小结 (37)第4章总结和展望 (38)参考文献 (39)致 (40)附录1 英文文献 (41)附录2 中文译文 (48)附录3 主要模块代码 (54)第1章 MIPS体系结构概述1.1 流水线技术在任一条指令的执行过程中,各个功能部件都会随着指令执行的进程而呈现出时忙时闲的现象。
最新数字系统设计实验--流水线MIPS微处理器设计
一、实验目的(1)了解提高CPU性能的方法。
(2)理解数据冒险、控制冒险的概念以及流水线冲突的解决方法。
(3)掌握流水线MIPS微处理器的工作原理。
(4)掌握流水线MIPS微处理器的测试方法。
二、实验任务设计一个32位流水线MIPS微处理器,具体要求如下设计要求:(1)至少执行下列MIPS32指令。
①算数运算指令:ADD ADDU SUB SUBU ADDI ADDU②逻辑运算指令:AND OR NOR XOR ANDI ORI XORI SLT SLTISLTU SLTIU③移位指令:SLL SLLV SRL SRLV SRA④条件分支指令:BEQ BNE BGEZ BGTZ BLEZ BLTZ⑤无条件跳转指令:J JR⑥数据传输指令:LW SW⑦空指令:NOP(2)在用5级流水线技术,对数据冒险实现转发或阻塞功能。
(3)在XUP Vietex-II Pro开发系统中实现MIPS微处理器,要求CPU的运行速度大于25MHz.三、实验原理1.流水线MIPS CPU总体设计流水线是数字系统中一种提高系统稳定性和工作速度的方法,广泛应用在高档CPU的构建中。
根据MIPS处理器指令的特点,将整体的处理过程分为取指令(IF)、指令译码、执行、存储器访问和寄存器写回五级,对应多周期CPU的五个处理阶段。
如图1所示,一个指令的执行需要五个时钟周期,每个时钟周期上升沿来临时,此指令所代表的一系列数据和控制信息转移到下一级处理。
图1 流水线流水作业示意图一条MIPS指令分为五个处理步骤,即五级流水线,的具体执行过程如图2所示。
图2 五级流水线MIPS CPU初步原理框图流水线寄存器:为了在其它四级流水线中各条指令保持各自的值,从指令存储器中读出的指令必须保存在寄存器中。
同样的方法应用到每个流水线步骤中,需要在上图中各级之间加入寄存器,如图3所示。
图3.在各级分割线添加寄存器后的框图由于在流水线中,数据和控制信息将在时钟上升沿转移到下一级,所以规定流水线转移的变量命名遵守如下格式:名称_流水线级名称。
五段式流水线CPU
五段式流⽔线CPU流⽔线CPU⼀、流⽔线CPU概述1、流⽔线CPU的原理流⽔线CPU是为提⾼吞吐量⽽创造的,五段式流⽔线CPU的吞吐量是单周期CPU的五倍,同⼀时间CPU上最多有五条指令在运⾏。
如何达到同⼀CPU上五条指令呢?答案就在于把每条指令都拆分成五个阶段,按照CPU硬件执⾏流来拆成五段:IF(instruction fetch)、DEC(decode)、EXE(execute)、ME(memory)、WB(write back),CPU上五段部分分别执⾏⼀条指令的⼀个阶段。
因为CPU上五段分别进⾏不同指令的不同阶段,每段都需要⾃⼰当前执⾏指令的数据:IF段所⽤数据为指令地址,可有pc寄存器提供;DE、EXE、ME、WB段所⽤数据包含但不限于指令内容,⼀定需要对应流⽔线寄存器保存。
2、流⽔线CPU设计的难点流⽔线CPU同时有多条指令运⾏,⼀个很重要的设计因素是解决冲突。
冲突包含硬件冲突、控制冲突和数据冲突。
硬件冲突硬件冲突是说同⼀时刻需要对同⼀互斥硬件(⼀次只允许⼀次读或写)进⾏访问,举例来说,D段需要从存储器中取出指令,M段需要对存储器写⼊数据,这两个操作同时进⾏就会带来冲突,在这⾥IM和DM是独⽴的两个存储器,因此不必考虑。
控制冲突控制冲突是分⽀指令和跳转指令带来的冲突。
分⽀指令的最终分⽀地址晚于下⼀周期到来,导致下⼀条指令的地址不能及时算出或者决定;跳转指令的跳转地址晚于下⼀周期到来,导致上述同样冲突。
解决这样的冲突主要是通过假设不跳转或者延迟槽。
假设不跳转是说先假设不跳转和分⽀,正常执⾏下⼀条指令,当计算出要跳转时清楚已执⾏的结果。
延迟槽是说跳转指令后⾯加空指令nop,即等待跳转地址计算出来再决定是继续下⼀条指令还是跳转。
数据冲突数据冲突是关于数据“新鲜性”的冲突。
指令的执⾏离不开寄存器,有的指令会利⽤寄存器数据,有的指令会写回寄存器,有的指令两者皆有,当前序执⾏的指令的⽬的寄存器(将要写回的寄存器)和后序执⾏的指令的源寄存器(利⽤其数据的寄存器)相同时,就存在数据关联。
嵌入式开发-嵌入式五级流水线CPU核的设计与实现
嵌入式五级流水线CPU核的设计与实现赖兆磬,潘 明,许 勇,张 辉(桂林电子科技大学 计算机与控制学院 广西 桂林 541004)摘 要:本文基于FPGA平台设计并实现了一种嵌入式16位RISC CPU核。
以MIPS CPU指令集为参考,完成指令集设计;对指令处理过程进行抽象,把指令分成取指、译码、执行、访存、写回五级流水处理,根据处理过程所需要的元件构建五级数据通路;针对流水线处理产生的数据相关构建旁路通路;根据五级数据通路及旁路通路所需要的协调信号构建控制通路;把数据通路和控制通路融合成CPU核。
采用VHDL 实现CPU核;在CPU核上运行测试程序,并给出仿真结果;在FPGA平台上对CPU核进行验证。
结果表明了所设计CPU核的有效性。
关键词:FPGA;CPU核;数据通路;控制通路中图分类号:TP332.3 文献标识码:BThe Design-implementation of embedded five Stage Pipeline CPUCoreLAI Zhao-qing, PAN Ming, XU Yong, ZHANG Hui(School of Computer Science and Control, Guilin University of Electronic Technology, Guilin 541004 , China) Abstract: An embedded 16-bit RISC CPU core was designed and implemented on FPGA. Refer to MIPS instruction set, the instruction set was finished; Analyzing the process of each instruction, the process was divided into five stages which is IF, ID, EXE, MEM, WB. Then the five stages data path was constructed according to work unit which is needed in the process; Aim at the data hazard which happens in the pipeline, the forward path was constructed; the control path was constructed according to the data path; the CPU core was composed of data path and control path. The CPU core was implemented with VHDL; the test program was run at the CPU core, then the simulation was presented; the CPU core was verified at FPGA hardware terrace. The result shows that the CPU core is effective.Keywords: FPGA; CPU core; Data path; Control path;引言随着微电子技术的迅速发展, 集成电路(ASIC)的集成度越来越高。
5级流水无cache-CPU实验计算机组成原理-课程设计报告
计算机组成原理课程设计报告5级流水无cache CPU实验1.1 实验内容:无cache流水CPU的分析与改造1.理解无cache流水CPU的工作原理,明确系统总体结构和数据通路图,分析解决各种相关用到的主要信号,以及详细分析各流水段的功能和实现。
2.将16位的指令系统改为8位,设计新的指令系统,并修改相应的数据通路。
3.修改规则文件(cpu.txt),并编写测试程序验证系统改造的正确性。
1.2 总体基本信息1.深刻理解无cache流水cpu的工作原理。
在详细分析了各流水段的功能实现、3种相关的产生原因和解决方法的基础上,完成了以下后续工作。
2.修改指令系统。
具体包括:a)16位指令改为8位,重新编写了指令OP码。
b)新增了MOVI指令。
由于原指令系统没有将立即数存进指定寄存器的指令,因此此处新增一条MOVI指令。
指令的汇编语句为MOVI DR, IMM其中DR为目的寄存器,IMM为立即数。
因为指令长度为8位,OP和DR共占了6位,因此IMM的大小不大于3(即二进制“00”至“11”)。
c)修改及删除了部分指令。
此处详见5.1。
3.修改系统控制信号。
在保持原有系统逻辑功能基本不变的情况下,修改各个模块里控制信号位数以及模块接口信号位数以和新的指令系统兼容。
4.增加内存模块。
使用vhdl编写了一个ram模块,根据读写信号来选择读写功能。
reset时将事先写好的二进制形式程序写进内存。
5.扩展了常量定义文件。
在常量定义文件unitpack.vhd中,具体地:a)新增了ALU功能选择信号常量aluMOVI。
b)新增了寄存器编号常量R0、R1、R2和R3。
c)新增了ram类型。
6.使用Quartus II进行功能仿真并debug。
7.使用bdf构造顶层实体cpum。
由于新增了内存模块,而原系统是使用vhdl编写的,为了方便对接,我们使用bdf的形式将无cache流水线cpu和内存模块连接起来构造顶层实体cpum,“m”的含义是“memory”,即带内存模块的无cache流水线cpu。
5级流水cpu实验
摘要基于现场可编程( FPGA) 技术和硬件描述语言VHDL 的设计和综合,通过自顶向下的设计方法和模块化设计思想, 在Quartus Ⅱ环境下能定制、下载验证和实现五级流水线CPU的简单功能。
通过VHDL 语言定制了取指部分(IF),译码部分(ID),执行部分(EX),前向部分(FU)访存部分(MA),回写部分(WB),冲突检测部分(HD),介绍了基于FPGA 的CPU 设计方法,并通过初始化程序进行验证,实现了基于FPGA 的CPU 功能,表明基于FPGA 技术在设计CPU 核和大规模集成电路设计方面可根据实际情况定制,具有灵活性、可靠性和可扩展性。
关键词: FPGA CPU Quartus Ⅱ流水 vhdlAbstractCPU design can be made and tested on Quartus Ⅱby means of a top - down method and modular design based on the integration of FPGA and VHDL. Introduces the design of CPU which applies module IF、ID、EX、FU、MA、WB、HD based on VHDL and the test of the design by the initialization program. The result suggests that the FPGA - based CPU design is custom- made with flexibility , reliability and easiness for extension.Key words: FPGA CPU Quartus Ⅱpipelining vhdl目录一、引言 (3)1.1实验目的 (3)1.2实验环境 (3)二、设计报告 (4)2.1五级流水CPU (4)2.1.1系统级设计 (4)2.1.1.2概念设计 (6)2.1.1.3时序设计 (6)2.1.2结构级设计 (12)2.1.2.1 总体逻辑结构计 (12)2.1.2.2 关键分模块结构设计 (14)三、测试报告 (15)3.1测试方法 (15)3.2测试程序 (15)3.3测试结果 (18)3.4性能分析 (20)四、总结 (21)4.1实验总结 (21)4.2取得的收获 (21)五、总结 (21)一、引言1.1 实验目的1.本实验以计算机硬件为主,兼顾计算机软件和计算机应用技术。
CPU整体结构以及各模块详解
意义 时钟信号 复位信号 指令标识码 非访存类指令的计算结果 目的寄存器号,原值输出给 desti_o store 类指令要存储的数据 访存类指令要访问的数据存储器地址 计算结果 目的寄存器号 写回标志位 用于控制外设的接口
内部变量
变量名称 rd_en wr_en wb_valid_temp
control_bus_temp result_temp
4 MEM
4.1 模块端口
4.2 输入输出端口列表
输入 输出
端口 clk rst_n op result_i desti_i store_data mem_addr result_o desti_o wb_valid control_bus
位宽 1 1 8 64 5 64 16 64 5 1 81
2.3.3 写回寄存器堆的操作相对简单,在写回信号有效时(wb_bus[69]==1),将其低 64 位数 据 赋 给 写 回 数 据 (wb_data = wb_bus[63:0]) , 其 64~68 位 为 目 的 寄 存 号 (wb_desti = wb_bus[68:64])。其数据在获得后可以立即使用,但写回寄存器堆需在下一时钟。
2 Decode
2.1 模块端口
2.2 输入输出列表
输入 输出
信号 ins pc_in Ex_desti Mem_desti Wb_bus pc_out Op Rs Rt rd Imm Stall
位宽 32 64 5 5 70 64 8 64 64 5 64 1
意义 IF 阶段取得的正确指令 输入 pc 执行阶段返回的目的寄存器号 访存阶段返回的目的寄存器号 写回信号 输出 pc 自定义操作码 从目的寄存器中取出的源操作数 从目的寄存器中取出的源操作数 目的寄存器号 立即数 堵塞信号
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
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