我是火箭筹码生成器的新手,还在学习。我想知道的第一件事是如何参数化一级缓存。我做了一些研究,但似乎信息不是最新的。例如,在src / main / scala / config.scala中,没有定义README中提到的d缓存参数。有人提到coreplex / config.scala,但我也找不到。 有人可以告诉我默认参数在哪里定义以及如何更改它们吗?另外,tinycore,bigcore和其他预定义的内核在哪里定义?
答案 0 :(得分:0)
编译Rocket Chip时可以选择多种配置。您可以在subsystem/Configs.scala文件中找到这些配置。默认情况下,vsim和模拟器目录中的make
命令使用DefaultConfig
参数。
class DefaultConfig extends Config(new WithNBigCores(1) ++ new BaseConfig)
class WithNBigCores(n: Int) extends Config((site, here, up) => {
case RocketTilesKey => {
val big = RocketTileParams(
...
dcache = Some(DCacheParams(
rowBits = site(SystemBusKey).beatBits,
nMSHRs = 1,
blockBytes = site(CacheBlockBytes))),
icache = Some(ICacheParams(
rowBits = site(SystemBusKey).beatBits,
blockBytes = site(CacheBlockBytes))))
List.tabulate(n)(i => big.copy(hartId = i))
}
})
您可以在rocket/HellaCache.scala中找到数据缓存参数。定义的一些重要参数是:
nSets :缓存集数量
n :缓存方式的数量
rowBits :缓存行大小