我在更改Rocket-Chip的参数时遇到了问题。我试图提高L1数据和指令缓存的集数。我遵循以下描述:http://riscv.org/download.html#tab_rocket
以下代码行是我试图在文件中更改的值:Configs.scala
位于Rocket Chip Generator存储库(rocket-chip / src / main / scala)
knobValues = {
case "NTILES" => 1
case "NBANKS" => 1
case "L1D_MSHRS" => 2
case "L1D_SETS" => 64
case "L1D_WAYS" => 4
case "L1I_SETS" => 64
case "L1I_WAYS" => 4
}
)
在进行任何更改之前,我可以运行以下命令而不会出现错误:
make run-asm-tests
如果我将LD1_SETS => 64
更改为LD1_SETS => 128
,则使用上述命令会出现很多错误。
我是否必须将Cache-Size设置为不同的地方?
答案 0 :(得分:4)
Rocket使用虚拟索引,物理标记的L1数据缓存。因此,路径的大小必须小于页面大小。您看到的错误是由断言强制执行此操作引起的。为了解决这个问题,我建议增加方式的数量(不是套数),或增加L2的大小来补偿。
这似乎是一个奇怪的要求,但许多处理器都有它。 L1缓存大小通常由页面大小和它们可以做的最大关联性决定,而不会损害关键路径。