跳转至

实验

本系列实验需要你将知识应用到实践中,一步步构建出能运行 RISC-V 程序的 CPU。实验将从基本的 Chisel 3 语言基础开始,提供指引帮助你完成实验代码,并按组件以及难度一步步深入,在实验过程中提供及时的反馈,实验包含四个模块:

  • 单周期 CPU:本实验的目的是从零开始编写一个可以运行 RV32I 指令集程序的单周期 CPU,这个 CPU 将会是后续所有实验的基础。完成本实验之后,可以通过仿真的方式,加载运行 RV32I 程序,验证正确性。
  • 中断机制:本实验在单周期 CPU 的基础上,添加了中断控制器以及中断控制流的内容,使单周期 CPU 可以处理来自外部设备的中断,响应 IO。完成本实验之后,CPU 将具备响应 UART 数据中断、时钟中断的功能,你将可以使用 UART 端口来操作 CPU 运行中的程序。
  • 流水线 CPU:本实验在以上两个实验基础上,对 CPU 进行性能优化,从单周期的 CPU 修改为多周期以及流水线的 CPU。本实验将通过几个性能评测,来验证 CPU 性能优化的效果。
  • 总线处理:本实验在流水线 CPU 的基础上,给 CPU 添加总线功能,实现外设与 CPU 的解耦。在完成总线实验后,添加外设无需修改 CPU 本身,只需要实现总线协议并与总线对接即可。本实验目的是进一步完善 CPU 实验的总体框架,提供更贴近真实计算机系统的结构实践。

挑战实验

在完成上述基本实验后,你就有了一个能运行简单程序的 RV32I CPU 了。如果你想实现更多功能,运行更复杂的程序,或者想提升 CPU 的性能,可以尝试以下挑战实验:

  • 运行操作系统:本实验需要你将 CPU 的功能进一步完善,使其能够运行一个简单的教学操作系统。
  • 实现 MMU:本实验需要你将 CPU 的功能进一步完善,使其具备虚拟内存管理的能力。
  • 实现特权级指令:本实验需要你将 CPU 的功能进一步完善,使其具备运行不同特权级指令的能力。
  • 实现 Cache:通过添加 Cache,提升 CPU 的性能。
  • 实现乱序执行:通过添加乱序执行,提升 CPU 的性能。

最后更新: 2023-10-21 02:03:12
本页作者: Howard Lau, wu-kan