跳转至

互动模拟器

这些互动模拟器可以直接在浏览器中运行,适合课堂演示,也方便课后自己单步操作、修改程序并观察 CPU 内部状态的变化。

与课件的差异

这里的互动模拟器与课件中讲述的 CPU 在实现细节上可能略有不同,但基本原理一致。为了更完整地支持 RV32I,部分细节做了调整;考试时请以题目要求为准。

单周期 CPU

单周期 RV32I CPU 模拟器:

打开单周期 CPU 互动模拟器(新窗口)

多周期 CPU

多周期 RV32I CPU 模拟器:

打开多周期 CPU 互动模拟器(新窗口)

五级流水线 CPU

五级流水线 RV32I CPU 模拟器:

  • 结构冲突:指令和数据分开存放,避免取指和访存之间的结构冲突
  • 数据冲突:
    • 数据前递:EX/MEM、MEM/WB 的结果可以前递到 EX 阶段,解决大部分数据冲突
    • 数据的装入使用冲突:load 结果在下一拍才能前递,因此紧随其后的使用会 stall 一拍
  • 控制冲突:所有分支都预测为不跳转(not taken);在 EX 阶段判断是否真的跳转,预测错误时 flush IF/ID 和 ID/EX,并从正确目标重新取指

课件中还讲了其他可能的流水线 CPU 设计(例如合并 I/D 但要处理结构冲突、用暂停流水线来解决 RAW 数据冲突、总是预测分支会跳转、提前在 ID 阶段计算分支目的地址、动态分支预测等等),这里只展示了其中一种。

打开五级流水线 CPU 互动模拟器(新窗口)

作者:Jiajie Chen