1

我正在对 Rocket Chip 的 NBDCache 做一些实验。我想改变缓存行的大小,并说明性能改进和 L1 缓存的存储开销之间的权衡。

我发现 Rocket 芯片中缓存线的默认值为 64 位,相对较小。我试图通过在子系统/config.scala 中为 WithNBigCores 定义的参数来更改缓存行大小,但是在编译新代码时我得到了以下断言。

[error] Caused by: java.lang.IllegalArgumentException: requirement failed: rowBits(256) != cacheDataBits(64)

我正在寻找在 Rocket Chip 中更改缓存线大小的过程。

class WithNBigCores(n: Int) extends Config((site, here, up) => {
  case RocketTilesKey => {
    val big = RocketTileParams(
      dcache = Some(DCacheParams(
        rowBits = 256 // site(SystemBusKey).beatBits,
        nMSHRs = 1,
        ...
    )))
  }
})
4

1 回答 1

0

如您所说,Rocket-Chip 中缓存线的大小几乎是硬连线到 64 字节(而不是 64 位)。改变它不是一件容易的事。恐怕这部分的可配置性不是很好。

如果真的需要修改NBDcache中对应的地方,包括数据数组、refill相关的部分、TileLink节拍大小相关的任何内容。

于 2018-11-30T03:45:44.257 回答