我想在当前版本的Rocket芯片中的两个缓存的缓存行中包含标志。这些标志将与数据一起加载/存储在存储器地址中。 lowRISC(http://www.lowrisc.org/)开发人员做了类似的事情。但是,它们作为单独的指令(即指令存储/加载标志和存储/加载数据的现有指令)访问加载/存储标志和数据,并且它们的架构设计是从旧版本的火箭芯片和火箭 - 从那时起,芯片源代码发生了重大变化。
在我的情况下,不知何故标志没有正确传播。需要哪些步骤来增加缓存行大小,将标志位传播到缓存,存储/加载标志位+数据,确保缓存之间的正确通信等等?
您能否告诉我要修改的文件以包含这些文件。
答案 0 :(得分:1)
当缓存行(+标志)存储到内存时,您需要弄清楚标志位的存储方式。这种情况的常见方法是将标志存储在物理内存的单独区域中,因为将它们内联存储会干扰缓存行对齐。
就您需要更改的文件而言,遗憾的是它会非常复杂。您选择如何将物品存储在物理内存中需要更改火箭芯片仓库中的文件。您需要更改uncore repo中的文件以传递这些较大的缓存行,并将它们存储在L2中(如果您使用的是L2)。您还需要更改火箭回购中的文件,以设置处理器看到的新标志的接口,以及为它们添加对L1缓存的支持。
尽管lowRISC可能基于旧版本,但我建议您查看他们所做的更改(提交历史记录)以了解要更改的范围和位置或事项。