0

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

4

1 回答 1

0

在编译 Rocket Chip 时,您可以选择多种配置。您可以在子系统/Configs.scala文件中找到这些配置。默认情况下,makevsim 和 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 回答