我正在对Rocket Chip的NBDCache进行一些实验。我想更改缓存行的大小,并说明性能改进和L1缓存的存储开销之间的权衡。
我发现火箭芯片中缓存行的默认值为64位,这相对较小。我尝试通过为subsystem / 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,
...
)))
}
})
答案 0 :(得分:0)
正如您所说,Rocket-Chip中的高速缓存行的大小几乎固定为64字节(而不是64位)。更改它并非易事。恐怕这部分的可配置性不是很好。
如果确实需要,您需要修改NBDcache中的相应位置,包括数据阵列,与笔芯有关的部分以及与TileLink拍子大小有关的任何内容。