docs: 增加实验目录
This commit is contained in:
parent
ef9db0c29d
commit
03645145ec
|
@ -0,0 +1,285 @@
|
||||||
|
# 目录
|
||||||
|
|
||||||
|
## 《数字逻辑与计算机结构》目录
|
||||||
|
|
||||||
|
### 一、概述
|
||||||
|
|
||||||
|
### 二、数据表示
|
||||||
|
|
||||||
|
### 三、数字逻辑基础
|
||||||
|
|
||||||
|
### 四、组合逻辑电路
|
||||||
|
|
||||||
|
### 五、同步时序电路
|
||||||
|
|
||||||
|
### 六、运算方法和运算器
|
||||||
|
|
||||||
|
### 七、指令系统
|
||||||
|
|
||||||
|
### 九、简单处理器
|
||||||
|
|
||||||
|
- 中断和例外
|
||||||
|
- 了解虚实地址转换:TLB MMU 模块
|
||||||
|
|
||||||
|
### 十、流水线处理器
|
||||||
|
|
||||||
|
- 这里有必要介绍下分布式控制流水线和集中式控制流水线
|
||||||
|
- 介绍下流水线缓存应该会存什么东西
|
||||||
|
- 介绍每一级应该干什么
|
||||||
|
- 流水线怎么做到精确例外
|
||||||
|
|
||||||
|
### 八、存储器
|
||||||
|
|
||||||
|
- Cache 的机制
|
||||||
|
|
||||||
|
### 十一、 系统互连与输入输出
|
||||||
|
|
||||||
|
- AXI 总线协议
|
||||||
|
- MMIO
|
||||||
|
|
||||||
|
## 《数字逻辑与计算机结构实验指导书》目录
|
||||||
|
|
||||||
|
### 数字电路设计实验
|
||||||
|
|
||||||
|
#### 一、FPGA 设计与 Verilog HDL 硬件描述语言
|
||||||
|
|
||||||
|
#### 二、Vivado 开发平台
|
||||||
|
|
||||||
|
#### 三、HDU-X01 开发板及实验流程
|
||||||
|
|
||||||
|
#### 实验 1 译码器和编码器设计实验
|
||||||
|
|
||||||
|
##### 实验目的
|
||||||
|
|
||||||
|
##### 实验原理和方法
|
||||||
|
|
||||||
|
##### 实验要求
|
||||||
|
|
||||||
|
##### 实验步骤
|
||||||
|
|
||||||
|
##### 思考题
|
||||||
|
|
||||||
|
#### 实验 2 多路选择器和多路分配器设计实验
|
||||||
|
|
||||||
|
#### 实验 3 全加器与超前进位电路设计实验
|
||||||
|
|
||||||
|
#### 实验 4 多功能 ALU 设计实验
|
||||||
|
|
||||||
|
#### 实验 5 寄存器堆及与运算器连接设计实验
|
||||||
|
|
||||||
|
#### 实验 6 定时与分频实验
|
||||||
|
|
||||||
|
#### 实验 7 取指令设计实验
|
||||||
|
|
||||||
|
#### 实验 8 开关消抖实验
|
||||||
|
|
||||||
|
### 计算机结构设计实验
|
||||||
|
|
||||||
|
#### 一、RISC-V 体系结构与指令系统
|
||||||
|
|
||||||
|
#### 二、Chisel 语法简介
|
||||||
|
|
||||||
|
#### 三、差分测试调试方法
|
||||||
|
|
||||||
|
#### 实验 12 实现 R 型运算类指令的理想流水线设计实验
|
||||||
|
|
||||||
|
##### 实验目的
|
||||||
|
|
||||||
|
1. 掌握 R 型运算类指令的数据通路
|
||||||
|
2. 掌握经典单发射五级流水线的设计方法
|
||||||
|
3. 掌握流水线 CPU 设计的编程基本框架
|
||||||
|
|
||||||
|
##### 实验原理和方法
|
||||||
|
|
||||||
|
1. 实现经典的单发射五级流水,这样比较简单
|
||||||
|
|
||||||
|
2. 提供一个已经实现了 add 指令的五级流水线
|
||||||
|
|
||||||
|
3. 使用没有数据相关的测试集对其处理器进行测试,用于验证指令的正确性
|
||||||
|
|
||||||
|
##### 实验要求
|
||||||
|
|
||||||
|
1. 根据本实验提供的五级流水线编程框架,在流水线 CPU 中添加以下指令:ADD、SLL、SLT 、SLTU、XOR 、SRL 、OR、AND 、SUB 、SRA
|
||||||
|
2. 通过本实验提供的所有测试用例
|
||||||
|
|
||||||
|
##### 实验步骤
|
||||||
|
|
||||||
|
1. 如何打开工程文件进行编程
|
||||||
|
2. 如何使用模拟器进行仿真
|
||||||
|
3. 如何提交测评
|
||||||
|
|
||||||
|
##### 思考题
|
||||||
|
|
||||||
|
1.
|
||||||
|
|
||||||
|
#### 实验 13 实现 I 型和 U 型运算类指令的理想流水线设计实验
|
||||||
|
|
||||||
|
##### 实验目的
|
||||||
|
|
||||||
|
1. 掌握 I 型和 U 型运算类指令的数据通路
|
||||||
|
2. 掌握在五级流水线中添加 I 型和 U 型指令的方法
|
||||||
|
|
||||||
|
##### 实验原理和方法
|
||||||
|
|
||||||
|
##### 实验要求
|
||||||
|
|
||||||
|
##### 实验步骤
|
||||||
|
|
||||||
|
##### 思考题
|
||||||
|
|
||||||
|
使用没有数据相关的测试集对其处理器进行测试,用于验证指令的正确性
|
||||||
|
|
||||||
|
#### 实验 13 实现乘除法指令的理想流水线设计实验
|
||||||
|
|
||||||
|
##### 实验目的
|
||||||
|
|
||||||
|
1. 掌握乘法指令和除法指令的数据通路
|
||||||
|
2. 掌握在执行级中添加乘除法运算部件 MDU 的方法
|
||||||
|
3. 掌握在五级流水线中实现乘法指令和除法指令的方法
|
||||||
|
|
||||||
|
##### 实验原理和方法
|
||||||
|
|
||||||
|
##### 实验要求
|
||||||
|
|
||||||
|
##### 实验步骤
|
||||||
|
|
||||||
|
##### 思考题
|
||||||
|
|
||||||
|
实现 M 拓展,在 exe 级增加 FU 选择
|
||||||
|
|
||||||
|
#### 实验 14 实现访存指令的理想流水线设计实验
|
||||||
|
|
||||||
|
##### 实验目的
|
||||||
|
|
||||||
|
1. 掌握访存指令的数据通路
|
||||||
|
2. 掌握在访存级中添加访存部件 LSU 的方法
|
||||||
|
3. 掌握在五级流水线中实现访存指令的方法
|
||||||
|
4.
|
||||||
|
|
||||||
|
##### 实验原理和方法
|
||||||
|
|
||||||
|
##### 实验要求
|
||||||
|
|
||||||
|
##### 实验步骤
|
||||||
|
|
||||||
|
##### 思考题
|
||||||
|
|
||||||
|
在 mem 级增加 lsu
|
||||||
|
|
||||||
|
#### 实验 15 实现转移指令的理想流水线设计实验
|
||||||
|
|
||||||
|
##### 实验目的
|
||||||
|
|
||||||
|
1. 掌握转移指令的数据通路
|
||||||
|
2. 掌握在执行级中添加转移控制部件 BRU 的方法
|
||||||
|
3. 掌握在五级流水线中实现转移指令的方法
|
||||||
|
4.
|
||||||
|
|
||||||
|
##### 实验原理和方法
|
||||||
|
|
||||||
|
##### 实验要求
|
||||||
|
|
||||||
|
##### 实验步骤
|
||||||
|
|
||||||
|
##### 思考题
|
||||||
|
|
||||||
|
转移指令可以设计在 id 级也可以实现在 exe 级
|
||||||
|
|
||||||
|
#### 实验 16 气泡流水线设计实验
|
||||||
|
|
||||||
|
##### 实验目的
|
||||||
|
|
||||||
|
1. 掌握各种流水线冲突的概念
|
||||||
|
2. 掌握插入气泡解决各种冲突的原理
|
||||||
|
3. 学习判断流水线冲突的逻辑单元的设计方法
|
||||||
|
|
||||||
|
##### 实验原理与方法
|
||||||
|
|
||||||
|
1. 流水线冲突的基本概念与流水线的控制方法
|
||||||
|
|
||||||
|
- 冲突
|
||||||
|
|
||||||
|
- 数据相关
|
||||||
|
|
||||||
|
- 结构相关
|
||||||
|
|
||||||
|
- 控制相关
|
||||||
|
|
||||||
|
- 控制
|
||||||
|
|
||||||
|
- 集中式
|
||||||
|
- 分布式
|
||||||
|
|
||||||
|
2. 流水线冲突的判断与气泡解决方法
|
||||||
|
|
||||||
|
- 数据冲突
|
||||||
|
|
||||||
|
- 写后写
|
||||||
|
|
||||||
|
- **写后读**:对于顺序单发射流水线来说,仅这种情况会发生冲突
|
||||||
|
|
||||||
|
- 读后读
|
||||||
|
|
||||||
|
- 读后写
|
||||||
|
|
||||||
|
##### 实验要求
|
||||||
|
|
||||||
|
##### 实验步骤
|
||||||
|
|
||||||
|
##### 思考题
|
||||||
|
|
||||||
|
当发现译码级的源操作数和执行级、访存级、写回级目的寄存器一致时,通过阻塞译码级来解决数据冲突
|
||||||
|
|
||||||
|
保证后一级无法运行时,前一级也无法运行,即可完成阻塞
|
||||||
|
|
||||||
|
#### 实验 17 使用数据前递解决冲突的流水线设计实验
|
||||||
|
|
||||||
|
- 数据前递的方式
|
||||||
|
|
||||||
|
- 数据前递来源有执行级和写回级,目前还没实现访存级
|
||||||
|
|
||||||
|
- 是否实现乘除法指令?
|
||||||
|
- 乘除法指令周期数一般会大于一,要考虑阻塞
|
||||||
|
- 也可以实现为简单的单周期乘除法,只是处理器频率上不去,但是没了阻塞的问题
|
||||||
|
|
||||||
|
完成数据相关处理后,使用有数据相关的数据集进行测试
|
||||||
|
|
||||||
|
#### 实验 18 实现 CSR 指令的流水线设计实验
|
||||||
|
|
||||||
|
- 实现 M 模式
|
||||||
|
|
||||||
|
- 增加 CSR 指令
|
||||||
|
- 在 exe 级增加 fu 选择
|
||||||
|
|
||||||
|
#### 实验 19 例外和中断的支持
|
||||||
|
|
||||||
|
- 可以先实现 ecall、eret、ebreak 指令,再实现别的例外
|
||||||
|
|
||||||
|
- 实现 M 和 U 模式
|
||||||
|
- 截止这里应该已经完成了 RV64 的 I、M、Zicsr 指令集
|
||||||
|
|
||||||
|
#### 实验 20 支持 AXI 总线的流水线互连设计实验
|
||||||
|
|
||||||
|
- 将现有的 sram 接口改为类 sram 接口
|
||||||
|
- 再设计一个类 sram 转 AXI 协议转换桥
|
||||||
|
- 通过 AXI 随机延迟验证
|
||||||
|
|
||||||
|
#### 实验 21 流水线 CPU 访存提速设计实验
|
||||||
|
|
||||||
|
- 先设计 cache 模块
|
||||||
|
- 然后实现 icache,调整总线接口
|
||||||
|
- 实现 fence.i 指令
|
||||||
|
- 跑性能测试程序
|
||||||
|
|
||||||
|
#### 实验 22 流水线 CPU 分支预测设计实验
|
||||||
|
|
||||||
|
#### 实验 23 动态顺序双发射流水线设计实验
|
||||||
|
|
||||||
|
#### 实验 24 支持虚实地址转换的超标量流水线设计实验
|
||||||
|
|
||||||
|
- 增加 MMU、TLB,实现虚实地址转换,使用 SV39 标准
|
||||||
|
- 增加 S 相关的 CSR
|
||||||
|
|
||||||
|
- 增加 S 模式
|
||||||
|
|
||||||
|
- 运行操作系统
|
Loading…
Reference in New Issue