华中科技大学 - 计算机组成原理
华中科技大学 - 计算机硬件系统设计

Microprocessor without Interlocked Pipleline Stages
无内部互锁流水级的微处理器

  • 属于RISC

MIPS指令格式

R型指令

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
000000 Rs Rt Rd shamt funct
第一源操作数 第二源操作数 目标操作数,保存结果 在移位指令中使用 指定指令的具体功能

三寄存器R型指令

add

000000 Rs Rt Rd 00000 100000

sub

000000 Rs Rt Rd 00000 100010

and

000000 Rs Rt Rd 00000 100100

or

000000 Rs Rt Rd 00000 100101

xor

000000 Rs Rt Rd 00000 100110

两寄存器R型指令

sll(逻辑左移)

000000 00000 Rt Rd 偏移量 000000

srl(逻辑右移)

000000 00000 Rt Rd 偏移量 000010

sra(算术右移)

000000 00000 Rt Rd 偏移量 000011

单寄存器R型指令

jr(寄存器跳转)

000000 Rs 00000 00000 00000 001000

R型指令中的无条件分支指令:jr,jalr

I型指令

6 bits 5 bits 5 bits 16 bits
OP Rs Rt
标识操作功能 第1个源操作数 目的寄存器编号 第2个源操作数

双目运算、LOAD/STORE:Rs和立即数是源操作数,Rt为目标操作数
条件转移:Rs、Rt均为源操作数

面向运算的I型指令

addi

001000 Rs Rt imm

andi

001100 Rs Rt imm

ori

001101 Rs Rt imm

xori

001110 Rs Rt imm

addi的立即数扩展为符号扩展
(若为负数高16位补1)
其他三条进行0扩展
(高16位补0)

面向访存的I型指令

lw(从存储器读数据)

100011 Rs Rt imm

sw(把数据保存到存取器)

101011 Rs Rt imm

面向数位设置的I型指令

lui(把立即数加载到寄存器的高16位)

001111 00000 Rt imm

面向条件转移的I型指令

beq(寄存器相等则转移)

000100 Rs Rt imm

bne(寄存器不相等则转移)

000101 Rs Rt imm

I型指令中的有条件分支指令:beq, bne, bgtz( > 0 ), bgez( >= 0 ),bltz( < 0 ), blez( <= 0 )

J型指令

6 bits 26 bits
OP 立即数
跳转目标地址的部分地址

j(无条件跳转)

000010 address

jal(调用与联接)

001100 address

类似于X86架构的CALL。jal要保存返回地址

J型指令的无条件分支指令:j, jal

MIPS寄存器

在R和I型指令格式中,寄存器操作数字段均为5位,可编号32个寄存器

寄存器名 寄存器编号 说明
$s0 0 保存固定的常数0
$at 1 汇编器的临时变量
$v0 - $v1 2 - 3 字函数调用返回结果
$a0 - $a3 4 - 7 函数调用参数1-3
$t0 - $t7 8 - 15 临时变量,函数调用时不需要保存和恢复
$s0 - $s7 16 - 23 函数调用时需要保存和恢复的寄存器变量
$t8 - $t9 24 - 25 临时变量,函数调用时不需要保存和恢复
$k0 - $k1 26 -27 中断、异常处理程序使用
$gp 28 全局指针变量(Global Pointer)
$sp 29 堆栈指针变量(Stack Pointer)
$fp 30 帧指针变量(Frame Pointer)
$ra 31 返回地址(Return Address)

另外还有

  • 32个32位单精度浮点寄存器f0 - f31
  • 2个32位乘、商寄存器Hi和L0:运算乘法时分别存放64位乘积的高、低32位; 除法时分别存放余数和商

浮点寄存器和乘商寄存器没有编号,对程序员来说是透明的

MIPS寻址方式

MIPS32指令集中不单设寻址方式说明字段

  • R型指令:由OP和funct字段共同隐含说明(R型指令字段全为0,需要结合funct字段表示)
  • I、J型指令:由OP字段隐含

立即数寻址

immediate addressing

寄存器直接寻址

register addressing

add $t0,$s1,$s2 ;($t0 = $s1 + $s2)

基址寻址

basic addressing

使用通用寄存器作为基址寄存器,以立即数作为偏移量,立即数带符号扩展为32位,和基址寄存器的值一起得到主存地址

使用基址寻址的指令:lw, sw, lh, sh, lb, lbu等

相对寻址


PC的值和偏移量相加得到主存地址,以立即数为偏移量。立即数带符号扩展为32位并左移2位再和PC的内容相加
PC的值会被修改为相加结果

使用相对寻址的指令:beq, bne

页面寻址


26位的地址码左移2位变为28位,作为地址的低28位,PC的值会被修改
高4位是PC改变后的值(取出指令后PC自动增加)

单周期MIPS架构

取指Dp


由于需要在一个周期内完成取指译码执行的过程,不设置AR,DR,IR。
取指令和取操作数要同时完成,为了避免访存冲突将程序和数据分开存放(哈佛结构):

  • 指令Cache
  • 数据Cache

ALU和PC累加器分开

R型指令数据通路

以add $s0, $s1, $s2为例

  1. 以PC的内容访问IM,解析指令字段,分出3个寄存器编号
  2. 以寄存器编号访问寄存器堆
  3. 输出两路寄存器值,根据AluOP信号运算
  4. 当时钟到来,给出RegWrite,将结果写入寄存器堆

寄存器堆要支持两路读和一路写

I型指令数据通路

以lw $s0, 32($31)为例(从存储器读数据)

  1. 以PC的内容访问IM,解析指令字段,分出2个寄存器编号和立即数字段
  2. 以寄存器编号访问寄存器堆
  3. 立即数字段进行符号扩展单元,扩展为32位
  4. 输出一路寄存器值,和立即数相加得到DM地址
  5. 经过一个存储器延迟,数据到达WD端
  6. 时钟到来写入寄存器堆

sw $s0, 32($31)(从存储器读数据)

单周期MIPS数据通路


对于有多输入源的引脚,加上多路选择器和信号选择信号

beq数据通路的建立

J型指令的数据通路建立

需要增加JUMP控制信号,PC输入增加一个跳转地址

单周期MIPS控制器

单周期架构下,无时序逻辑

输入 输出
OP + funct 多路选择器选择信号
寄存器写使能信号
内存访问控制信号
运算器控制信号
指令译码信号

单周期MIPS关键路径

lw的最长路径

时钟周期 = Tclk_to_Q + Tmem + Tregfile_read + Talu + Tmem + Tmux + Tsetup

多周期MIPS架构

不区分指令和数据存储器(冯诺依曼结构),功能部件分时使用
时钟周期变小,传输通路变短
功能部件输出端增加寄存器锁存数据

多周期MIPS CPU数据通路

取指令T1


PC += 4

  1. PC的内容传输到ALU的输入端和
  2. ALUSrcB信号选择4传输到ALU的输入端
  3. AluOP信号选择运算方式
  4. 时钟到来,在PCWrite信号的配合下结果送回PC

根据PC的内容从主存取指令

  1. 给出IRWrite信号,时钟到来时PC值写入IR锁存,同时PC原有的值更新为PC+4

取指令T2

  1. 将IR的内容送入控制器产生控制信号
  2. 计算条件分支转移的地址(图紫色部分)

时钟到来,取出的数据锁存在AB

R型指令执行T3-T4

  1. 给出AluOP和ALUSrcA、ALUSrcB信号,完成信号
  2. 时钟到来C更新
  3. C的内容输出,在RegDst和RegWrite信号配合下,写回寄存器堆

lw执行T3-T5


4. A和立即数相加计算操作数地址,时钟到来结果锁存在C
5. 将C的内容传输到主存,时钟到来数据锁存在DR
6. DR的内容写入寄存器堆(IR给出目标寄存器编号)

beq执行T3

  1. AB内容传输到ALU的输入端,进行比较,相等在给出equal信号,与branch信号与后输入到PC作为写使能

多周期状态转换图


多周期MIPS CPU控制器

输入 输出
OP + funct 多路选择器选择信号
时钟信号 寄存器写使能信号
复位信号 内存访问控制信号
运算器控制信号
指令译码信号

MIPS指令 MIPS架构相关推荐

  1. MIPS和ARM架构简单对比

    MIPS的优势主要有以下几点 1.MIPS支持64bit指令和操作,ARM目前只到32bit . 2.MIPS有专门的除法器,可以执行除法指令 . 3.MIPS的内核寄存器比ARM多一倍,所以同样的性 ...

  2. 【实验报告】实验一 MIPS指令系统和MIPS体系结构

    文章目录 实验一 MIPS指令系统和MIPS体系结构 实验目的 实验要求 实验内容 实验平台 实验步骤 拓展内容(选做) 实验结果 心得体会 参考资料 实验一 MIPS指令系统和MIPS体系结构 实验 ...

  3. 计算机原理与设计-32位MIPS 指令

    MIPS指令基础 基本知识 MIPS指令集 指令格式 I型指令 R型指令 J型指令 寄存器与编码 指令详情 算数指令 数据传输指令 逻辑指令 分支指令 跳转指令 MIPS指令翻译示例 斐波那契数列 字 ...

  4. MIPS指令以及数据通路

    MIPS指令以及数据通路 MIPS 1字=4字节 1字节=8位 即:1字=32位 每一个时钟周期:IM取指令->译码->ALU执行->DM访存->回写Reg ADDI addi ...

  5. 【Computer Organization笔记10】单周期CPU设计:基于7条MIPS指令的数据通路

    本次笔记内容: P19 计算机组成原理(19) P20 计算机组成原理(20) 本节课对应幻灯片: 组成原理24 singlecycle.pptx 基于上节课的7条MIPS指令的数据通路,分别针对7条 ...

  6. 实验2:MIPS指令系统和MIPS体系结构

    实验2:MIPS指令系统和MIPS体系结构 一.实验目的 (1)了解和熟悉指令级模拟器 (2)熟悉掌握MIPSsim模拟器的操作和使用方法 (3)熟悉MIPS指令系统及其特点,加深对MIPS指令操作语 ...

  7. 计算机组成原理mips与arm,计算机组成原理之MIPS指令系统和MIPS体系结构

    一.实验目的 (1)了解和熟悉指令级模拟器 (2)熟悉掌握MIPSsim模拟器的操作和使用方法 (3)熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解 (4)熟悉MIPS体系结构 模拟器 ...

  8. MIPS指令集和汇编

    MIPS指令集和汇编 一.寄存器与内存 1.1 字节与字 ​ 关于对字(word)的理解,我又有了新的认识,word是一种操作单位,而且是最常见的操作单位(不是最小的),内存的地址是用一个字(32位二 ...

  9. 计算机组成原理学习笔记第5章指令系统 5.6——MIPS指令详解

    有诗云:苔花如米小,也学牡丹开.--袁枚 本篇笔记整理:Code_流苏(CSDN) Last(在此处点击使用,直达文末) First (在文末点击使用,返回文章首部) 目录 0.思维导图 1.R型指令 ...

  10. 【使用verilog、五级流水和MIPS指令集设计CPU】

    内容 大概描述 设计思想 设计内容 设计处理器的结构和方法 处理器的操作过程 代码 测试部分 总结 参考文献 备注 大概描述 参考<自己动手写CPU>这本书,这本书算是手把手教学写CPU, ...

最新文章

  1. 递归神经网络(Recurrent Neural Networks,RNN)
  2. python做excel表格柱状图_Python Excel 绘制柱形图
  3. 以后外卖还可以买手机了!饿了么与上海迪信通达成合作
  4. matlab基数排序,如何在MATLAB中编写基数排序的程序
  5. asp.net session 如何知道是哪个浏览器客户端_小弟该如何复习 Java?
  6. 实例快速上手shell脚本
  7. 让Node.js在Azure上运行-3
  8. WLT8016:模组通信调试
  9. wps文档服务器授权怎么解,如何解决WPS提示授权已到期的问题
  10. opencv-python的颜色检测追踪
  11. 十二个“一”的演义小故事
  12. 2022 AI 岗位风向标
  13. hibernate学习之四——Query和Criteria接口
  14. 微信公众号引流的方法有哪些?
  15. 通达信 服务器 修改,通达信金融交易终端(开心果交易版)V2020版,修改导航菜单...
  16. MySQL之正则表达式
  17. root用户执行sourc /etc/profile命令提示权限不够
  18. cfa的pv怎么用计算机算,CFA考试规定使用的计算器,以及它的使用方法
  19. double和Double区别
  20. 1000份电子技术(模电、数电、电子元件、电路视频教程)全套资料!

热门文章

  1. Mybatis 批量更新运行异常,数据库 postgres
  2. 硬盘格式化怎么操作 硬盘格式化后数据还在吗
  3. 使用excel导入功能时日期数据变成数字的解决
  4. 中国未来5年最“吃香”的4大行业,市场需求大,堪比铁饭碗!
  5. 也许你看了一本假的天龙八部
  6. SGX软硬件栈(三)——驱动接口、SGX API
  7. 将一个数组划分成总和相等的两部分
  8. 2022年最新软件测试面试题,自动化测试面试题,接口自动化测试面试题详解,对标大厂。
  9. 从来没有一种工作叫钱多、事少、离家近
  10. 15b万用表怎么测电容_万用表怎么用?福禄克15B+一机详解万用表的使用方法