我希望在当前版本的Rocket芯片的两个缓存的缓存线中都包含标志。这些标志将与数据一起加载/存储在存储器地址处。lowRISC (http://www.lowrisc.org/)开发人员也做了类似的事情。然而,它们访问加载/存储标志和数据作为单独的指令(即指令存储/加载标志和存储/加载数据的现有指令),并且它们的体系结构设计是从旧版本的火箭芯片派生的,火箭芯片源代码从那时起发生了重大变化。
在我的例子中,不知何故,标志没有得到正确的传播。增加高速缓存线大小、将标志位传播到高速缓存、存储/加载标志位+数据、确保高速缓存之间的正确通信等需要哪些步骤?
你能让我知道要修改的文件以纳入这些文件吗?
发布于 2015-09-22 06:20:20
当缓存线(+标志)存储到内存中时,您需要弄清楚标志位是如何存储的。这种事情的一种常见方法是将标志存储在物理存储器的单独区域中,因为以内联方式存储它们将干扰高速缓冲存储器线对准。
就你需要更改的文件而言,不幸的是它将是相当复杂的。您选择如何在物理内存中存储内容将需要对火箭芯片存储库本身中的文件进行更改。您将需要更改uncore repo中的文件,以传递这些较大的缓存线,并将它们存储在L2中(如果您使用的是L2)。您还需要更改rocket代码库中的文件,以设置处理器看到的新标志的接口,以及为它们添加对L1缓存的支持。
尽管lowRISC可能基于较旧的版本,但我建议您查看他们所做的更改(提交历史记录),以了解要更改的范围和位置或事情。
https://stackoverflow.com/questions/32657613
复制相似问题