EasterMIPS
这道题我真的做不队 @ NSCSCC 2020
EasterMIPS 项目为北京邮电大学“这道题我真的做不队”在 NSCSCC 2020 中获决赛一等奖的参赛作品。
本项目中,我们开源了决赛提交的CPU核、在开发过程中实现的多个MIPS Cache、uCore系统以及示例程序的有关代码。
EasterCache
EasterCache 是使用 Chisel3 实现的,参数可配置的高性能 MIPS Cache。由于Cache在版本迭代过程中,为系统的引导引入了较为棘手的bug,因而最后提交包中使用的Cache并非为最新版本,而为分支legacy-dcache
中的版本。仅仅使用了Chisel3开发的D-Cache,其余部分由SystemVerilog实现。
master
分支为最新版本的Cache,完全由Chisel3实现,包含一个双发I-Cache,以及一个带有Victim Cache的D-Cache。相联度、行数、行大小都能非常容易的进行配置。
生成 Verilog
EasterCache由Chisel3开发,因而使用sbt
调用Chisel3
模块来生成 verilog。下面的命令
mkdir target && sbt 'runMain cache.Cache --target-dir target'
能够生成Cache的verilog代码,保存在target/
文件夹中。
注意项目中使用BlackBox
封装了用Block Memory Generator生成的RAM Xilinx IP。IP名称分别为bank_ram
与data_bank_ram
。使用生成的verilog代码时,需要在工程中对应定制。
参数配置
修改src/main/scala/cache/Cache.scala
文件中
object Cache extends App {
new ChiselStage execute(args, Seq(ChiselGeneratorAnnotation(
() =>
new Cache(new CacheSettings(
new CacheConfig(wayNum = 2, setWidth = 7, transNum = 1), new CacheConfig(wayNum = 2, setWidth = 7), vcacheDepth = 16
)))))
}
的相关参数,即可以改变Cache配置。重新生成则得到新的Cache代码。