
CPU设计
文章平均质量分 69
<Running Snail>
奇点将至
展开
-
【五级流水线CPU】—— 8. 测试结果
使用冒泡排序进行测试:.org 0x0.global _start.set noat_start: ori $t1,$zero,0x0010 # 起始地址为16 a ori $6,$0,0x0050 # 用来标志获取数据的地址 ori $t2,$zero,0x0002 # 源操作数,20210627 sw $t2,0x0($t1) ori $t2,$zero,0x0000 sw $t2,0x4($t1原创 2021-09-30 17:59:05 · 322 阅读 · 0 评论 -
【五级流水线CPU】—— 7. 协处理器访问指令(2条)
文章目录1. 协处理器CP02. CP0的实现1. 协处理器CP0对于MIPS32架构的4个协处理器,只进行CP0的实现CP0内部只实现比较有用的7个寄存器count(Register9) :处理器计数周期Compare(Register11):定时中断控制Status(Register12):处理器状态和控制寄存器Cause(Register13):保存上一次异常原因EPC(Register14):保存上一次异常的程序计数器PRId(Register15):处理器标志和版本Conf原创 2021-09-30 17:53:41 · 547 阅读 · 0 评论 -
【五级流水线CPU】—— 6. 加载存储指令(14)
文章目录1. 初步 12条1.1 分析1.2 添加数据存储器RAM1.3 修改最小SOPC2.3 测试9 加载存储指令2. load-use数据冒险测试10 load-use数据冒险的解决1. 初步 12条1.1 分析加载指令实现思路加载指令在译码阶段进行译码,得到运算类型 alusel o、 aluop_o,以及要写的目的寄存器信息。这些信息传递到执行阶段,然后又传递到访存阶段,访存阶段依据这些信息,设置对数据存储器RAM的访问信号。从RAM读取回来的数据需要按照加载指令的类型、加载地址进行对齐调原创 2021-09-30 17:52:34 · 2005 阅读 · 1 评论 -
【五级流水线CPU】—— 5. 转移指令(14条)
转移指令(14)一共14条指令,分为两类:跳转指令(绝对转移):jr、jalr、j、jal分支指令(相对转移):b、bal、beq、bgez、bgezal、bgtz、blez、bltzal、bne1. 延迟槽不MEM进行判断,直接在译码阶段进行判断在流水线译码阶段进行转移判断,并且转移发生,那么会有1条无效指令,导致浪费了一个时钟周期。为了减少损失,规定转移指令后面的指令位置为“延迟槽”,延迟槽中的指令被称为“延迟指令”。延迟指令总是被执行,与转移发生与否没有关系。2. 转移分支指令2原创 2021-09-30 17:50:47 · 2749 阅读 · 0 评论 -
【五级流水线CPU】—— 4. 移动操作指令(6条)
文章目录1. 分析1.1 指令1.2 数据通路图和系统结构图的改变2. 代码修改2.1 HI、LO寄存器的实现2.2 修改译码阶段—ID模块2.3 修改执行阶段—EX模块、EX/MEM模块2.4 修改访存阶段—MEM模块、MEM/WB模块3. 测试5 移动操作指令1. 分析1.1 指令movn、movz指令译码阶段新增:依据读取地址rt的值是否为0,判断是否写入目的寄存器mthi、mtlo指令译码阶段,给出运算类型 alusel_o 、 运算子类型 aluop_o 的值 , 同时读出 rs原创 2021-09-30 17:49:40 · 961 阅读 · 1 评论 -
【五级流水线CPU】—— 3. 逻辑、移位与空指令 + 数据冒险RAM解决
文章目录1. 数据冒险RAM解决分析解决2. 实现逻辑、移位指令2.1 修改ID模块2.2 修改EX模块3. 测试3.2 测试3 逻辑操作指令3.2 测试4 移位操作指令1. 数据冒险RAM解决分析一般是有三种情况:RAW,WAR,WAW(导致寄存器的值不是最新值)但是所有指令在流水线回写阶段才会写寄存器,因此没有WRW问题;又因为只能在译码阶段读寄存器,回写阶段写寄存器,不存在WAR问题。所以只需要考虑RAW问题两个冲突的指令相邻0、1条都不行,相邻两条才可以(如下图)解决采用数据转发的原创 2021-09-30 17:42:04 · 1750 阅读 · 0 评论 -
【五级流水线CPU】—— 1. 初始框架搭建
文章目录1. 基本知识各模块文件数据通路最终的顶层模块小知识点2. ori指令的实现2.1 ori指令数据通路2.2 具体实现2.2.1 PC模块(取指阶段)2.2.2 IF-ID模块2.2.3 Regfile模块2.2.4 ID模块(译码)2.2.5 ID/EX模块(译码)2.2.6 EX模块(执行)2.2.7 EX/MEM(执行-访存)2.2.8 MEM模块(访存阶段)2.2.9回写阶段顶层模块OpenMIPS3. 验证3.1指令存储器ROM的实现结果1. 基本知识各模块文件(1)取指阶段P原创 2021-09-30 17:37:34 · 3109 阅读 · 1 评论