默认缓存参数,更改方式,限制等

时间:2018-09-08 23:30:20

标签: rocket-chip

我是火箭筹码生成器的新手,还在学习。我想知道的第一件事是如何参数化一级缓存。我做了一些研究,但似乎信息不是最新的。例如,在src / main / scala / config.scala中,没有定义README中提到的d缓存参数。有人提到coreplex / config.scala,但我也找不到。 有人可以告诉我默认参数在哪里定义以及如何更改它们吗?另外,tinycore,bigcore和其他预定义的内核在哪里定义?

1 个答案:

答案 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 :缓存行大小