From 03645145ecb032a36daa3643fb9434636be733cd Mon Sep 17 00:00:00 2001 From: Liphen Date: Thu, 14 Dec 2023 13:17:12 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=A2=9E=E5=8A=A0=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/《数字逻辑与计算机结构》目录.md | 285 ++++++++++++++++++++++++++++ 1 file changed, 285 insertions(+) create mode 100644 doc/《数字逻辑与计算机结构》目录.md diff --git a/doc/《数字逻辑与计算机结构》目录.md b/doc/《数字逻辑与计算机结构》目录.md new file mode 100644 index 0000000..c72f10c --- /dev/null +++ b/doc/《数字逻辑与计算机结构》目录.md @@ -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 模式 + +- 运行操作系统