没有合适的资源?快使用搜索试试~ 我知道了~
MIPS32流水CPU设计实验报告1
需积分: 0 0 下载量 115 浏览量
2022-08-03
18:00:17
上传
评论
收藏 1004KB PDF 举报
温馨提示
试读
23页
1、 ALU (ALUWrapper) 4、 PCDecider 1、 PCDecider 3、 ALUWrapper
资源详情
资源评论
资源推荐
清华大学计算机系《计算机组成原理》课程
MIPS 32 流水线 CPU 设计
实验报告
计 14 赵一开 2011011262
高俊杨 2011011277
一、 设计目标
(1) 实现支持 MIPS32 指令集的、采用五段流水线结构的 CPU
(2) CPU 支持中断/异常处理,包括 TLB 缺失及系统调用
(3) 编写并整理 32 位 THINPAD 教学计算机相关的测试工具,包括串口测试、SRAM 测试等。
(4) 针对 32 位 CPU 的新特性对于原有的监控程序进行了小部分的修改,并用 Python 对原有
的终端程序进行了重写,使其可以在多平台上使用。
二、 运行效果
完成 CPU 的启动之后,运行 Term.exe,输入对应的端口号,点击实验平台的复位键。若终
端显示 OK,则说明终端已经与 CPU 完成通讯。
输入 R 指令,查看当前的通用寄存器的值
输入 D 指令,分别查看地址 0x80000000 和 0x80008000 处的值(此处为事先烧入实验平台
的监控程序代码和中断处理代码)
使用 LOAD 指令,将用户编辑好的二进制文件写入内存,并使用 G 指令运行这段写入的程序。
该程序实现了冒泡排序的功能,将用户输入的数字升序排列后输出。输入 0 代表输入结束。
使用 A 指令向某一内存中写入汇编代码。此处我们向地址 0x80400000 的位置写入汇编码。
该代码的会访问一个不存在的虚拟地址,运行这段程序,会触发 TLB missing 异常
使用 ADDTLB 命令,建立虚拟地址 0x00000000 和实际物理地址 0x80500000 的对应关系。再
次运行上一次的程序,程序可以成功运行并退出。
此时,使用 U 指令分别查看地址 0x00000000 和 0x80500000 处的内容,可发现两者完全相
同。再一次说明,TLB 添加成功。
三、 总体设计
CPU 设计包含以下部分:
1、 ALU (ALUWrapper)
ALUWrapper 中封装了 ALU 运算单元,该模块与前一级 FetcherAndRegister 以
及后一级 Memory 相连。支持算术、逻辑运算但不支持乘除法运算。完成的工作包括:
根据前一级的信号完成算术逻辑运算
将其他信号继续传递给下一级
将为内存地址的计算结果通过 TLB 转换后得到物理内存地址,若 TLB
未找到则传递信号给 FecherAndRegister 以产生异常
关于该模块更为详细的说明会在下一章节“模块分析”中进行。
2、 Register (FetcherAndRegister)
该模块与 PCDecider、ALUWrapper 相连,包含一个 Register 子模块,并与
SRAM 数据总线相连。该模块是 CPU 工作的核心部分,CPU 大部分的工作都在
其中完成,包括:
从 RAM 的数据线得到指令并译码
读取指令需要的寄存器的值
从 Memory 模块得到写寄存器信号并执行
判断跳转、等待、PC 异常、TLB 异常等并给出信号
将信号传给下一级
其中,Register 子模块中包含了通用寄存器组和 CP0 寄存器组,寄存器均使
用 signal 实现。这样的设计可以使对寄存器的存取与译码阶段在同一个 CPU 周期
内完成。实验简单并且节省时间。
关于该模块更为详细的说明会在下一章节“模块分析”中进行。
3、 Memory
该模块与前一级 ALUWrapper 以及 FetcherAndRegister 相连,与 SRAM 的地
址、内存总线、UART 模块相连,是 CPU 的存储控制器,封装了 SRAM、ROM
和串口的读写。完成的功能包括:
根据前一级的信号完成内存读写
读写特定地址时改为从 UART 模块读写
将写寄存器信号传回至 FetcherAndRegister
关于该模块更为详细的说明会在下一章节“模块分析”中进行。
4、 PCDecider
该模块 FecherAndRegister 相连,并与 SRAM 的地址总线相连。
该模块的功能是根据输入的信号判断跳转、等待(气泡)、顺序执行等,并给 RAM
以地址信号,输出现在的 PC 值。
关于该模块更为详细的说明会在下一章节“模块分析”中进行。
5、 TLB
该模块主要完成从虚拟地址到实际物理地址的转化,提供 TLB 表,映射给
Memory 模块。
当取值、访存的地址发生 TLB 未找到异常时,这个异常信号会传递给译码模块
(FetcherAndRegister),其根据不同情况暂停流水并跳刀中断处理地址。
关于该模块更为详细的说明会在下一章节“模块分析”中进行。
四、 模块分析
1. ALU
剩余22页未读,继续阅读
UEgood雪姐姐
- 粉丝: 31
- 资源: 319
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0