docs: 增加实验目录

This commit is contained in:
Liphen 2023-12-14 13:17:12 +08:00
parent ef9db0c29d
commit 03645145ec
1 changed files with 285 additions and 0 deletions

View File

@ -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 模式
- 运行操作系统