生成具有不同高速缓存大小的RISCV Rocket芯片

时间:2015-08-11 15:20:20

标签: riscv

我在更改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设置为不同的地方?

1 个答案:

答案 0 :(得分:4)

Rocket使用虚拟索引,物理标记的L1数据缓存。因此,路径的大小必须小于页面大小。您看到的错误是由断言强制执行此操作引起的。为了解决这个问题,我建议增加方式的数量(不是套数),或增加L2的大小来补偿。

这似乎是一个奇怪的要求,但许多处理器都有它。 L1缓存大小通常由页面大小和它们可以做的最大关联性决定,而不会损害关键路径。