CA-体系结构试验1

1. 实验一:流水线处理器 — CA-Labs 1.0.0 文档
https://hit-coa.gitlab.io/archlab/labs/lab1.html#id2
1.1. 实验目的
- 掌握 Vivado 集成开发环境
- 掌握 Verilog 语言
- 掌握 FPGA 编程方法及硬件调试手段
- 深刻理解流水线型处理器结构和数据冲突解决技术的工作原理
1.2. 实验环境
- Vivado 集成开发环境和龙芯 Artix-7 实验平台
1.3. 实验内容
- 根据本课程所讲的设计思想,在单周期 CPU 的基础上,设计并实现一个具有五段流水线处理器,并通过暂停和定向(或者说旁路)技术来解决流水线中出现的数据冲突,要求该处理器可以通过所提供的自动测试环境。
1.3.1. 流水线处理器的周期划分
与单周期处理器不同,流水线型处理器将“工作”划分为多个流水段来完成一条指令。每个时钟周期对应于流水线的一个阶段。流水线型处理器结构的主要优点是它可以并行执行多个指令:在同一时刻,多个指令可以同时存在于流水线中不同的阶段。在本实验中,流水线划分为五个周期。每个流水段产生的结果都在相应的时钟周期时传递给下一个流水段。
1.3.2. 数据冲突的处理
参照参考书(王志英等著)第3章的3.3.2小节,采用暂停和定向技术来处理流水线中出现的数据冲突。
暂停
当检测到数据冲突,通过暂停来阻止即将进入流水线中的指令。本实验中,暂停只能在必要时插入流水线。
定向
通过增加定向控制所需要的比较器、多路选择器和相关组合逻辑电路,实现对数据的重定向,解决数据冲突。
1.4. 实验要求
按照以上要求将前置实验中所实现的单周期处理器改进成具有五段流水线处理器,并通过暂停和定向技术解决流水线中产生的数据冲突。
1.4.1. 实验预习
在实验开始前给出处理器的设计方案,设计方案要求包括:
- 流水线处理器结构设计框图及各段的寄存器文件描述
- 定向控制硬件的设计框图及功能描述
1.4.2. 完成实验内容
Verilog 语言实现:要求采用结构化设计方法,用 Verilog 语言实现处理器的设计。设计包括:
- 各模块的详细设计(包括各模块功能详述,设计方法,Verilog 语言实现等)
- 各模块的功能测试(每个模块作为一个部分,包括测试方案、测试过程和测试波形等)
- 系统的详细设计(包括系统功能详述,设计方法,Verilog 语言实现等)
- 系统的功能测试(包括系统整体功能的测试方案、测试过程和测试波形等)
FPGA 编程下载:将比特流下载到 Artix-7 实验板中。然后利用 Vivado 的上板调试功能观察 Artix-7 实验板的 FPGA 芯片中的实际运行,观察处理器内部运行状态,显式输出内部状态运行结果。
对处理器进行功能测试,记录运行过程和结果,完成实验报告:对处理器进行功能测试,编写处理器功能测试程序,包括指令缓冲存储器和数据缓冲存储器完成处理器功能测试,并观察记录运行过程和结果,完成实验报告。
1.5. 处理器测试环境
要求同学们遵守实验测试环境的相应要求,不允许修改接口,不允许修改trace文件。
1.5.1. 测试用例
我们提供三个测试用例对 CPU 进行测试:
- 基础验收指令:存在数据冲突,需要在分析指令间存在的冲突后,手动向指令缓冲存储器中存在冲突的两条指令之间增加气泡(空指令)以避免冲突。
- 附加验收指令1:存在数据冲突,需要使用暂停和定向等技术解决数据冲突,不允许修改指令缓冲存储器文件的内容。
- 附加验收指令2:存在数据冲突,需要使用暂停和定向等技术解决数据冲突,不允许修改指令缓冲存储器文件的内容。
备注
- MIPS的
nop
编码为全0,对应我们未实现的移位指令sll $0, $0, 0
,保证你的设计在执行这条指令时,不写寄存器,PC正常+4即可。 - 要求 CPU 设计能够通过全部三个用例的仿真测试。
- 标题: CA-体系结构试验1
- 作者: Molaters
- 创建于 : 2023-11-24 11:30:49
- 更新于 : 2023-10-12 17:04:10
- 链接: https://molaters.github.io/2023/11/24/计算机体系结构/CA-体系结构试验1/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。