没有合适的资源?快使用搜索试试~ 我知道了~
微处理器实验报告-黄梓1
需积分: 0 2 下载量 74 浏览量
2022-08-04
14:43:27
上传
评论
收藏 1.14MB PDF 举报
温馨提示
试读
30页
1. 完成一个模拟 RISC-V 的基本整数指令集 RV32I 的汇编器设计 2. 完成一个模拟 RISC-V 的基本整数指令集 RV32I 的模拟器设计 3.
资源详情
资源评论
资源推荐
微处理器实验报告
201608010720 黄梓 物联 1601
一、实验任务
必做:
1. 完成一个模拟 RISC-V 的基本整数指令集 RV32I 的汇编器设计
2. 完成一个模拟 RISC-V 的基本整数指令集 RV32I 的模拟器设计
3. 完成一个简单存储器的设计
4. 完成一个执行 RISC-V 的基本整数指令集 RV32I 的 CPU 设计(单周期实现)
选做:
1. 完成一个执行 RISC-V 的基本整数指令集 RV32I 的 CPU 设计(流水线实现)
2. 其它经教师确认的任务,例如调试器、编译器,或者 RV32I 之外的扩展指
令集 CPU 设计
二、实验要求
硬件设计采用 VHDL 或 Verilog 语言,软件设计采用 C/C++或 SystemC 语言,
其它语言例如 Chisel、MyHDL 等也可选。
实验报告采用 markdown 语言,或者直接上传 PDF 文档
实验最终提交所有代码和文档
三、实验相关知识点
RISC-V 指令集简介
RISC-V 指令集是 UC Berkley 大学设计的第五代开源 RISC ISA, V 也可以认为是允
许变种(Variations)和向量(Vector)向量实现,数据的并行加速功能也是明确支持目
标,是专用硬件发展的一个重要方向。RISC ISA 相对于成熟的指令集来说有开源、简捷、
可扩展、和后发优势(没有历史包袱,可以绕过很多弯路,也不需要考虑兼容历史指令
集)等。
指令集分为基本部分和扩展部分,基本部分的指令集所有硬件实现都必须有这一部
分实现,而扩展部分则是可选的。扩展部分又分为标准扩展和非标准扩展。例如,乘除
法、单双精度的浮点、原子操作就在标准扩展子集中。
“I” 基本整数集,其中包含整数的基本计算、Load/Store 和控制流,所有的硬件
实现都必须包含这一部分。
“M” 标准整数乘除法扩展集,增加了整数寄存器中的乘除法指令。
“A” 标准操作原子扩展集,增加对储存器的原子读、写、修改和处理器间的同步。
“F” 标准单精度浮点扩展集,增加了浮点寄存器、计算指令、L/S 指令。
“D” 标准双精度扩展集,扩展双精度浮点寄存器,双精度计算指令、L/S 指令。
I+M+F+A+D 被缩写为 “G” ,共同组成通用的标量指令。
在后续 ISA 的版本迭代过程中,RV32G 和 RV64G 总是保持不变。
基本 RISC-V ISA 具有 32 位固定长度,并且需要 32 位地址对齐。但是也支持变长
扩展,要求指令长度为 16 位整数倍,16 位地址对齐。
32 位指令最低 2 位为“11”,而 16 位变长指令可以是“00、01、10”,48 位指令
低 5 位位全 1,64 位指令低 6 位全 1。任何长度的指令,如果所有位全 0 或全 1,都认
为是非法指令,前者跳入填满 0 的储存区域,后者通常意味着总线或储存器损坏。
另外,RISC-V 默认用小端储存系统,但非标准变种中可以支持大端或者双端储存系
统。
另外专业术语:
异常:RISC-V 线程中出现了指令相关的非正常情况。
自陷:RISC-V 线程中出现了指令相关的异常情况,控制同步传输到自陷处理函数(一般
在高特权环境中执行)。
中断:RISC-V 线程外异步出现了一个事件,如果需要处理则需要选择某条指令来接收,
并顺序产生自陷。
RISC-V 指令集内容
我们在这里编写的是 RV32I 指令集,其包含了六种基本指令格式,分别是:用
于寄存器-寄存器操作的 R 类型指令,用于短立即数和访存 load 操作的 I 型指
令,用于访存 store 操作的 S 型指令,用于条件跳转操作的 B 类型指令,用于长
立即数的 U 型指令和用于无条件跳转的 J 型指令。
RISC-V 指令集编码格式
RISC-V 指令
四、实验组成
汇编器
1、简单介绍
汇编器(Assembler)是将汇编语言翻译为机器语言的程序。一般而言,汇编生
成的是目标代码,需要经链接器(Linker)生成可执行代码才可以执行。
汇编语言是一种以处理器指令系统为基础的低级语言,采用助记符表达指令操作
码,采用标识符表示指令操作数。作为一门语言,对应于高级语言的编译器,需
要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。常用的高级语
言编译器有 Microsoft 公司的 MASM 系列和 Borland 公司的 TASM 系列编译器,还
有一些小公司推出的或者免费的汇编软件包等。
2、相关知识
实现一个汇编器,首先需要定义一个汇编指令集,这里我们还是沿用上文中
的汇编指令集。汇编指令与指令之间是一一对应的关系,也就是说是直译的过
程。我们的指令集是枚举类型,也是沿用上文源码的指令集。
我们的函数功能是对输入的汇编指令,将其读入,翻译成对应的二进制代
码,然后将其输出。
实现汇编器的重点在于理解汇编器的原理,而汇编器的原理就在于定义好汇
编指令集、二进制指令集,并且确定好二者之间的映射转换关系。
剩余29页未读,继续阅读
Period熹微
- 粉丝: 21
- 资源: 307
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0