我是火箭芯片发生器的新手,还在学习。我想知道的第一件事是如何参数化 l1 d 缓存。我做了一些研究,但似乎信息不是最新的。例如,在 src/main/scala/config.scala 中,没有像 README 中提到的那样定义 d 缓存参数。有些人提到 coreplex/config.scala 但我也找不到。有人能告诉我默认参数在哪里定义以及如何更改它们吗?另外,tinycore、bigcore 和其他预定义的核心在哪里定义?
问问题
172 次
1 回答
0
在编译 Rocket Chip 时,您可以选择多种配置。您可以在子系统/Configs.scala文件中找到这些配置。默认情况下,make
vsim 和 emulator 目录中的命令使用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:缓存集的数量
nWays : 缓存路数
rowBits : 缓存行大小
于 2018-10-13T03:50:38.323 回答