(完整版)MIPS处理器设计说明说课讲解

合集下载

清华微机原理课件2.2MIPS体系结构

清华微机原理课件2.2MIPS体系结构

MIPS 通用寄存器的使用
为了使用$ gp, 编译器在编译时刻必须知道 一个数据是否在$ gp的64K范围之内。
通常这是不可能的,一般的做法是把small global data (小的全局数据)放在gp覆盖的范围内(比如一 个变量是8字节或更小),并且让linker报警如果 小的全局数据仍然太大从而超过gp作为一个基 指针所能存取的范围。
MIPS 通用寄存器的使用
$ gp: 如果存在一个全局指针,它将指向运行时决定 的静态数据(static data)区域的一个位置。这意味 着,利用gp作基指针,在gp指针32K左右的数 据存取,系统只需要一条指令就可完成。 如果没有全局指针,存取一个静态数据区域的 值需要两条指令: 一条是获取有编译器和loader决定好的32位的 地址常量。 另外一条是对数据的真正存取。
r格式registerformatj格式jumpformat二mips体系结构4存储器和寄存器中的数据类型mipscpu的一次操作可读出或写入18个字节的数据c名称mips名称size字节汇编助记符longlongdwordlongwordshorthalfwordcharbytemips编译器提供了64位指针它把long解释成64位数据总之long不应该小于int三mips指令与汇编指令系统对于一条汇编语言指令来说有两个问题要解决要指出进行什么操作?要指出大多数指令涉及的操作数和操作结果放在何处mips
助记符 zero 永远为0 at v0, v1 a0-a3 t0-t7 t8-t9 s0-s7 k0,k1 gp sp s8/fp ra 子函数调用返回结果 子函数调用的参数
用法
用做汇编器的暂时变量
暂时变量,子函数使用时不需要保存与恢复
子函数寄存器变量。在返回之前子函数必须保存和恢复使 用过的变量,从而调用函数知道这些寄存器的值没有变化 通常被中断或异常处理程序使用作为保存一些系统参数

OpenMIPS教学版讲解

OpenMIPS教学版讲解

流水线架构
流水线架构是现代处理器中常见的一种架构,通过将指令执行过程划分为多个阶段, 实现并行处理,提高处理器的执行效率。
OpenMIPS教学版的流水线架构分为取指、解码、执行、访存和写回五个阶段,每 个阶段都有相应的硬件单元进行支持,确保指令执行的快速和准确。
流水线架构能够有效地提高处理器的吞吐量,同时使得处理器更加灵活,能够适应 不同的应用场景。
算平台上实现更快速的计算和推理。
嵌入式系统应用
03
OpenMIPS教学版可以应用于嵌入式系统中,为人工智能传感
器和设备提供强大的计算能力。
OpenMIPS在物联网领域的应用
实时数据处理
OpenMIPS教学版适用于物联网设备中的实时数据处理,如传 感器数据的采集、分析和处理。
低功耗设计
针对物联网设备的低功耗要求,OpenMIPS教学版可以进行优 化,降低设备能耗,延长电池寿命。
实验案例选择
选择具有代表性的实验案 例,如简单的加法器、乘 法器等。
实验案例解析
对每个实验案例进行详细 解析,包括输入输出、算 法实现等。
实验案例实现
根据解析结果,在 OpenMIPS教学版上实现 相应的算法。
实验结果分析
实验结果验证
通过实际运行和测试,验证实验结果的正确性。
结果分析
对实验结果进行分析,包括性能指标、优化空间 等。
数据中心优化
通过OpenMIPS教学版的优化,可以提高数据中心的处理能力和能效, 降低运营成本。
THANKS FOR WATCHING
感谢您的观看
C语言与汇编的交互
在OpenMIPS教学版中,可以使用内嵌汇编的方式将C语言与汇编 语言进行交互,实现更高效的代码实现。

MIPS指令多周期CPU设计

MIPS指令多周期CPU设计

– MEMread, IRwrite, PCwrite
译码/取操作数 – ALUsrcA=0, ALUsrcB=11,ALUop=00 执行运算 – ALUsrcA=0, ALUsrcB=00,ALUop=00
写回寄存器
– RegDST=1 RegWrite MemtoReg = 0
MIPS的 LW 指令 的执行过程
A 寄 存 器
1
A A L U
Z
PC
0 1
存 A 储 D 器
B 寄 存 器
4
1 0 2 3
B
R
结 果 寄 存 器
DR
1 0
扩展
Clock
Immediate
左移2位
MIPS的 ADD 指令 的执行过程
取指 周期: 执行 周期:
IR←MEM[PC]
PC ←PC+4 C ← A+B
WritePC IODR WriteMEM WriteIR MEMtoREG SE REGds WriteREG ALUsrcA
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
结 果 寄 存 器
DR
1 0
Immediate
Clock
扩展
左移2位
存储器存指令和数据。 读指令时由 PC 提供地址,读出的指令保存到 IR; 读写数据时由结果寄存器提供地址,读操作的读出数据保存到 DR; 写操作的写入数据由 B寄存器给出。

stanford_university_mips_组织架构_解释说明

stanford_university_mips_组织架构_解释说明

stanford university mips 组织架构解释说明1. 引言1.1 概述引言部分将介绍本文的主题——Stanford University MIPS组织架构。

MIPS (Microprocessor without Interlocked Pipeline Stages)指令集架构是一种经典的RISC(Reduced Instruction Set Computer)体系结构,由斯坦福大学开发和推广。

本文将详细解释MIPS组织架构的概念和原理,并深入讨论其指令集、寄存器、流水线技术以及优化策略。

1.2 文章结构为了更好地说明MIPS组织架构,本文将按照以下结构展开讨论:- 第2部分将简要介绍MIPS组织架构的概述,包括计算机体系结构的发展历程以及MIPS架构的特点。

- 第3部分将着重介绍MIPS指令集和寄存器,包括概述、寄存器结构和作用,以及指令格式和编码规则。

- 第4部分将深入探讨MIPS流水线技术及其优化策略,包括流水线基本概念和原理、MIPS流水线结构以及各个阶段功能介绍,以及相关问题和优化策略的讨论。

- 最后,第5部分将给出本文的结论和总结。

1.3 目的本文的目的是通过对Stanford University MIPS组织架构的详细解释,让读者了解MIPS体系结构及其特点,并探究其中涉及的指令集、寄存器、流水线技术以及优化策略。

通过文章的阅读,读者将能够更好地理解MIPS组织架构并在计算机体系结构领域有所提升。

我们希望这篇长文能够为读者提供一个全面而清晰的指南,进一步推动计算机科学领域的发展与创新。

2. MIPS组织架构:2.1 概述:MIPS(Microprocessor without Interlocked Pipeline Stages)是一种经典的RISC(Reduced Instruction Set Computer)微处理器架构。

它于1981年由斯坦福大学开发,旨在设计简单、高效的计算机体系结构。

自己动手写CPUOpenMIPS教学版讲解主要内容

自己动手写CPUOpenMIPS教学版讲解主要内容

指令wishbone接口 OpenMIPS 数据wishbone接口
iwishbone
dwishbone
m0
WB_CONMAX
s0
s1
s2
s3
SDRAM Controller
UART Controller
GPIO Controller
FLASH Controller
•《自己动手写CPU》OpenMIPS教 学版讲解主要内容
四 OpenMIPS教学版的文件组织
asm_test
包括所有的测试例程,其组织方式是参照《10天实现 处理器——OpenMIPS成长记》一文,按照“天”来组织, 比如Day2文件夹中存放的是《10天实现处理器—— OpenMIPS成长记》一文中第二天对应的测试例程,当 然所有的测试例程都可以在最终的OpenMIPS中进行测 试
•《自己动手写CPU》OpenMIPS教 学版讲解主要内容
四 OpenMIPS教学版的文件组织
rtl
所有OpenMIPS的源代码文件在该文件夹下,包括
流水线文件iu.vhd 除法模块div.vhd 寄存器文件Reg 顶层文件OpenMIPS.vhd 宏定义文件stdlib.vhd
•《自己动手写CPU》OpenMIPS教 学版讲解主要内容
一 OpenMIPS项目简介
OpenMIPS是采用具有哈佛结构的32位标量处理器,兼容 MIPS32体系结构,这样可以使用现有的MIPS编译环境。
具有以下特点:
五级整数流水线,分别是:取指、译码、执行、访存、 回写
哈佛结构,分开的指令、数据接口
32个32位整数寄存器
大端模式
向量化异常处理,支持精确异常处理
•《自己动手写CPU》OpenMIPS教 学版讲解主要内容

32位MIPS处理器说明

32位MIPS处理器说明

32位MIPS处理器说明一、实验目的熟悉现代处理器的基本工作原理;掌握单周期和流水线处理器的设计方法。

二、实验原理及实验内容该32位MIPS处理器主要需要设计ALU、单周期、流水线。

下面分别讲述这三个部分的设计原理及实验内容。

1.ALUALU即算数逻辑单元,要求设计一个32位的ALU,实现基本的算术、逻辑、关系、位与移位运算。

输入32bit的A和B作为操作数,5bit的控制输入ALUFun和一位控制输入Sign,输出32bit的结果Z。

其功能表如下图所示:根据功能表和要求,我们在顶层模块中设计了32bit输入ALUSrc1和ALUSrc2,以及5bit控制ALUFunc,1bit控制Sign,32bit输出ALUOut。

设计了四个主要模块:ALU_ADD_SUB,ALU_CMP,ALU_Logic,ALU_Shift,并根据ALUFunc的值来确定使用的模块。

设计框图思路如下:(1)ALU_ADD_SUB这部分是ALU设计中最重要的一部分。

采用了8位超前进位级联,用与门来实现32位全加器。

减法由加法实现,在运算的开始由ALUFunc判断进行的是加法还是减法,如果是加法则直接将两个操作数输入全加器,最低进位为0,如果是减法则取ALUSrc2的反码之后再做加法运算,最低进位是1。

需要注意的是运算结束之后需要判断结果是否为0(这个在branch指令中尤为重要),是否为负数,还有是否溢出。

是否为溢出还需要检查控制符号,如果控制符号为有效(即有符号计算)则两正数相加得负或两负数相加得正则溢出,溢出则结果符号位反了,再进而判断是否为负。

若为无符号运算,加法结果溢出则最高进位为1,且结果不为负;减法结果溢出等价于结果为负,即最高进位为0。

而结果为0等价于全部位都取0。

(2)ALU_Shift移位运算分别有逻辑左移,逻辑右移,算术右移三种情况。

首先判断是逻辑移位还是算术移位来决定填充0还是填充逻辑位。

之后采取先将操作数根据左移还是右移的判断做出32位扩充,再根据shamt从最高位到最低位判断是否为0来决定取那几位操作数,最后得到移位的结果。

MIPS指令单周期CPU设计

MIPS指令单周期CPU设计

Data memory
rd rs rt
Register File
PC
执行步骤(3/5)
instruction memory
ALU
MUX
+4
imm 2. Decode/ Register Read
1. Instruction Fetch
3. Execute 4. Memory 5. Register Write
– 将结果写入目的寄存器
需要保存的值
– PC、寄存器组、存储器
二、典型指令的数据通路
ADDU and SUBU – addu rd,rs,rt
31 op 6 bits 31 op 6 bits 26 rs 5 bits 26 rs 5 bits 21 rt 5 bits 21 rt 5 bits 16 immediate 16 bits 16 rd 5 bits 11 6 shamt 5 bits funct 6 bits 0 0
ALU
MUX
+4
imm 2. Decode/ Register Read
1. Instruction Fetch
3. Execute 4. Memory5. Register Write
Phase 1: Instruction Fetch (IF)
– Fetch 32-bit instruction from memory – Increment PC (PC = PC + 4)
Data memory
rd rs rt
Register File
PC
执行步骤(2/5)
instruction memory
ALU
MUX

MIPS处理器设计说明要点

MIPS处理器设计说明要点

西安邮电大学实践课程报告书课程名称:计算机组成与实践院(系)名称:电子工程学院专业班级:**学号/姓名:**实习时间:2015年3月6日至2015年6月19日1 课程主要目的本课程是在上学期《计算机组成与设计》课程学习的基础上,通过实践课的方式,依照集成电路设计流程,完成一个简单独立硬件功能电路模块的设计,从而到达对《计算机组成与设计》课程的深入理解和提高电路设计的实践能力,从理论和实验的结合中巩固计算机基本知识,熟练掌握电路设计的基本流程和原理,同时,加深对MIPS系统的组成部件及其电路结构,原理和功能的理解,掌握利用硬件描述语言和EDA工具进行MIPS设计的一般方法。

2 课程的主要内容和任务MIPS是典型的32位定长指令字RISC处理器,要求深入理解MIPS处理器的内部结构及工作原理。

采用verilogHDL设计一个兼容MIPS指令格式,具有10条以上指令功能的单周期CPU硬件电路,该32位MIPS设计内容主要包括系统中的基本组成部件(存储器,指令寄存器,寄存器堆,算术逻辑运算器,程序计数器,多路选择器,符号扩展等)的设计,仿真及硬件下载的方法和过程。

设计过程中使用ISE仿真工具完成设计电路的仿真验证。

3总体设计方案3.1指令及其功能表:(1)R型指令:(2)I型指令:(3)J型指令:3.2总体结构设计:该MIPS主要由8个模块组成,各个子模块分别设计其特定的功能,最终利用一个总的模块进行子模块间连接,使得整个CPU能连贯执行指令,在仿真结果中观察设计结果,最终进行硬件下载,验证设计。

其中各个模块简单功能如下:(1)存储器模块:具备基本的读写功能,用于存放数据和指令。

(2)寄存器堆模块:由32个32位的寄存器组成,提供较大的存储空间,用于存放暂存数据和指令。

(3)算术逻辑运算器模块:执行加减法等算术运算,与非或等逻辑运算,以及比较移位传送等操作的功能部件,是该CPU的设计核心部分,存在不同的运算处理功能,是体现实验设计结果正确性的模块。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(完整版)M I P S处理器设计说明西安邮电大学实践课程报告书课程名称:计算机组成与实践院(系)名:电子工程学院称专业班级:**学号/姓名:**实习时间:2015年3月6日至2015年6月19日1 课程主要目的本课程是在上学期《计算机组成与设计》课程学习的基础上,通过实践课的方式,依照集成电路设计流程,完成一个简单独立硬件功能电路模块的设计,从而到达对《计算机组成与设计》课程的深入理解和提高电路设计的实践能力,从理论和实验的结合中巩固计算机基本知识,熟练掌握电路设计的基本流程和原理,同时,加深对MIPS系统的组成部件及其电路结构,原理和功能的理解,掌握利用硬件描述语言和EDA工具进行MIPS设计的一般方法。

2 课程的主要内容和任务MIPS是典型的32位定长指令字RISC处理器,要求深入理解MIPS处理器的内部结构及工作原理。

采用verilogHDL设计一个兼容MIPS指令格式,具有10条以上指令功能的单周期CPU硬件电路,该32位MIPS设计内容主要包括系统中的基本组成部件(存储器,指令寄存器,寄存器堆,算术逻辑运算器,程序计数器,多路选择器,符号扩展等)的设计,仿真及硬件下载的方法和过程。

设计过程中使用ISE仿真工具完成设计电路的仿真验证。

3总体设计方案3.1指令及其功能表:(1)R型指令:(2)I型指令:(3)J型指令:3.2总体结构设计:该MIPS主要由8个模块组成,各个子模块分别设计其特定的功能,最终利用一个总的模块进行子模块间连接,使得整个CPU能连贯执行指令,在仿真结果中观察设计结果,最终进行硬件下载,验证设计。

其中各个模块简单功能如下:(1)存储器模块:具备基本的读写功能,用于存放数据和指令。

(2)寄存器堆模块:由32个32位的寄存器组成,提供较大的存储空间,用于存放暂存数据和指令。

(3)算术逻辑运算器模块:执行加减法等算术运算,与非或等逻辑运算,以及比较移位传送等操作的功能部件,是该CPU的设计核心部分,存在不同的运算处理功能,是体现实验设计结果正确性的模块。

(4)立即数扩展模块:执行I型指令时需要立即数扩展,该模块用于MIPS符号扩展,将16位数据扩展为32位数据。

(5)主控制模块:用于控制各个模块之间的分工运行,产生不同数据通路的控制信号,保证指令顺序执行不发生紊乱。

(6)ALU控制模块:用于生成ALU执行各种功能的控制信号,使ALU 内部运行不发生紊乱。

(7)分支跳转指令控制模块:用于生成分支和跳转指令的控制信号。

(8)取指模块:进行指令的取出及译码,同时包括程序计数器PC运行设计。

各模块间关系如下:3.3接口定义和接口时序说明:该CPU由cpu_clk和进行总的控制,并且输出程序计数器低4位进行简易流水灯显示,CPU运行的结果包括逻辑运算等在仿真界面中进行分析和设计验证。

cpu_clk上升沿有效rst位低电平时复位有效4 子模块详细设计4.1 存储器模块设计4.1.1模块方案设计指令存储器用于存放CPU运算的程序指令和数据等,采用单端口存储器设计,设计最大为64个存储单元,每个存储单元数据宽度为32bit。

4.1.2 接口定义说明序号接口信号名称方向(I/O)1clk I 存储器工作时钟,频率为50Mhz2rst I 存储器片选信号,低有效3ExtMem_Adr [5:0]I 存储器地址线4ExtMem_WR I 存储器读写信号,1为写反之读5ExtMem_Din [31:0]I 存储器输入数据线6ExtMem32 [31:0]O 存储器输出数据线4.1.3 模块仿真验证4.2 寄存器堆模块设计4.2.1模块方案设计该MIPS指令格式中的寄存器号是5bits,指令可以访问32个32位的寄存器。

这32个32位的寄存器构成一个寄存器堆。

4.2.2 接口定义序号接口信号名称方向说明1c lk I 处理器工作时钟2rst I 复位信号3Raddr1[4:0]I 读寄存器堆时的第1个寄存器下标4Raddr2[4:0]I 读寄存器堆时的第2个寄存器下标5Waddr[4:0]I 写寄存器堆时的寄存器下标6We I 寄存器堆写使能7Wdata [31:0]I 待写入寄存器堆的数据8Rdata 1[31:0] O 读寄存器堆时第1个寄存器的输出9Rdata 2[31:0] O 读寄存器堆时第2个寄存器的输出4.2.3 模块仿真验证4.3算术逻辑运算器模块设计4.3.1 模块方案设计运用alu_clt控制运算器的各种运算,包括无符号数的加法运算,有符号数的加法运算,或逻辑运算,与逻辑运算,无符号数的减法运算,无符号小于置1运算,逻辑左移,逻辑右移,算术右移等。

4.3.2 接口定义4.3.3 关键控制信号的产生SUBctr = alu_clt[2];ANDctr = alu_clt[0];OVctr = !alu_clt[1]&alu_clt[0];SIGctr = alu_clt[0];OPctr[1] = alu_clt[2]&alu_clt[1]|alu_clt[3];OPctr[0] = alu_clt[1];4.3.4具体ALU实现如下图所示:ALU操作控制信号O1121异或门异或门ALU_DA[31:0]ALU_DB[31:0]加减法运算器异或门阵列位扩展或门阵列1SUBctr OPctr OVctr SIGctrCinAdd_carryAdd_SignAdd_ResultAdd_OverflowZeroOverflowResult4.3.5 模块仿真验证4.4 立即数扩展模块设计4.4.1 模块方案设计设计一个32位MIPS符号扩展单元SE,用于将16位的数据转换为32位数据。

4.4.2 接口定义序号信号名端口说明描述1 Imm16[15:0] I 来自指令寄存器的16位立即数2 AluSrc I 立即数扩展信号的使能端3 bus[31:0] I4 ExtImm32[31:0] O 符号扩展后的32位立即数4.4.3 模块仿真验证4.5 主控制模块设计4.5.1 模块方案设计以指令译码结果中的6位操作码及相关信号产生整个数据通路中的各个控制信号。

4.5.2 接口定义序号接口信号名称方向(I/O)说明1 op I 操作码2 RegDst O 目的寄存器选择3 AluSrc O ALU输入信号选择4 ExtOp O 立即数扩展的使能信号5 RegWr O 寄存器写使能6 MemWr, O 存储器写使能7 MemtoReg O 寄存器的装载信号选择4.5.3各控制信号的编码规则如下表所示:op 000 001 001 001 001 100 101 001 001 000 000000 000 001 100 101 011 011 010 011 100 101 RegDst 0 1 1 1 1 1 0 1 1 0 0 RegWr 1 1 1 1 1 1 0 1 1 0 0 ExtOp 0 1 0 0 0 1 1 1 0 1 1 AluSrc 0 1 1 1 1 1 1 1 1 0 0 MemWr 0 0 0 0 0 0 1 0 0 0 0 MemtoRe0 0 0 0 0 1 0 0 0 0 0 g4.5.4 模块仿真验证4.6 ALU控制模块设计4.6.1 模块方案设计通过译码结果中的高6位以及相关信号编码出数据通路中各个控制信号。

4.6.2 接口定义序号端口名称输入输出端口说明1 rst I 复位信号(高电平1有效)2 cpu_clk I 时钟(上升沿有效)3 func[5:0] I 功能区分4 op I 操作码5 Alu_ctrl[3:0] O Alu功能信号4.6.3 执行R型指令func对应的Alu_ctrl编码如下表所示:func Alu_ctrl100000 0001100001 0000100010 0101100011 0100100100 0100100101 0011101011 0110101010 0111000000 1001000010 1001000011 1100001000 00004.6.4 模块仿真验证4.7 分支跳转指令控制模块设计4.7.1 模块方案设计运用译码结果的高6位以及ALU的两个输入数据决定分支及分支和跳转指令的控制信号。

4.7.2 接口定义序号信号名端口定义描述1 ALU_DA I 算术逻辑单元数据A2 ALU_DB I 算术逻辑单元数据B3 op I 指令操作码4 func, I R指令的功能操作码5 Jump O 跳转信号使能端6 Branch O 分支信号使能端4.7.3 模块仿真验证4.8 取指模块设计4.8.1 模块方案设计由程序计数器,取出指令以及译码三个子模块构成总的取指模块。

4.8.2 接口定义序号信号名方向(I/O)端口说明1 clk I2 rst I3 ALU_DA I算术逻辑单元数据A4 Branch I分支信号使能端4.8.3 电路基本构成如下图所示:4.8.4 跳转和分支指令执行时PC_out的编码规律Jump:Pc_out<= ALU_DABranch : Pc_out<= Pc_out+1+ALU_DB正常情况下:Pc_out<=Pc_out+14.8.5 模块仿真验证5 设计总体连接及仿真验证5.1 设计总体连线Main_c trRegfileMemALU_ctrclk rstRaddr1[4:0]Raddr2[4:0]Waddr[4:0]WeWdata [31:0]Rdata 1[31:0]Rdata 2[31:0]ALU_DAALU_DBALU_DCALUctrRegDst AluSrc ExtOp RegWr MemWr MemtoRegExtMem_dout1010ImmFlagFetchPCDecodezero overflow Aluctroprs rt rdshamt func imm16Pc_outALU_DA Jump BranchALU_DB rst5.2 在ISE 仿真环境下仿真验证设计结果,仿真结果如下图所示:5.3 仿真结果分析由仿真结果得知该CPU执行的12条指令均正常运行,实验基本成功,但是设计较为简单,并未涵盖太多复杂指令,需要进一步改善,使其趋于完善。

6、实践课总结和心得体会西安邮电大学电子工程学院计算机组成与实践实践课程过程考核表西安邮电大学电子工程学院计算机组成与实践实践课程成绩鉴定表精品文档收集于网络,如有侵权请联系管理员删除。

相关文档
最新文档