首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >gem5中的缓存方式是显式的还是从缓存集的数量和缓存大小中隐含/导出的?

gem5中的缓存方式是显式的还是从缓存集的数量和缓存大小中隐含/导出的?
EN

Stack Overflow用户
提问于 2020-07-07 22:10:22
回答 1查看 194关注 0票数 1

我正在尝试实现gem5版本的HybCache,如HYBCACHE中所述:用于可信执行环境的混合侧通道弹性缓存(可在prepub.pdf中找到)。

HybCache的一个简要总结是,所有缓存的子集都保留给安全进程使用,并且是隔离的。这是通过在进程处于“隔离”模式时使用有限的缓存方法子集来实现的。非隔离进程通常使用缓存操作,可以访问整个缓存,并使用配置中给出的替换策略和关联。缓存方式的孤立子集使用随机替换策略,并且是完全关联的。这是一张展示这一想法的图片。

方法6和7是灰色的,表示隔离的缓存方式。

所以,我需要用这些方法来处理数据的放置。我的问题是,由于我在gem5代码中没有提到缓存方式,这是否意味着缓存方式只在逻辑上存在?也就是说,我是否需要手动计算每个缓存方式的位置?如果在gem5中使用缓存方式,那么它们是否被使用?文件名是什么?

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-08 08:24:47

此答案仅对经典缓存模型 (src/mem/cache/)有效。

在gem5中,缓存方式的数量是根据缓存大小和相关性自动确定的。检查src/mem/cache/tag/ in _policies/中的文件以获得相关代码(特别是base.cc的构造函数)。

处理此实现的方法有两种:

1-创建继承自BaseTags (例如,BaseTags)的新类该类将包含是否应在安全模式下工作的决定,以及如何工作(即何时调用哪个索引和替换策略)。根据本文中提出的其他内容,您可能还需要从Cache派生来创建HybCache

  • 新标签每个操作模式需要一个索引策略。一个是传统的(SetAssociative),,另一个是从SetAssociative,派生的,其中参数assoc使numSets变为1(使其完全结合)。派生函数还必须覆盖至少一个函数getPossibleEntries(),以便只允许选择所需的方式。您可以检查skewed_assoc.cc以获得一个更复杂的位置选择的示例。
  • 新标签每个操作模式需要一个替换政策。您可能只需使用replacement_policies文件夹中的那些。

2-您可以基于BaseSetAssoc),Cache类创建一个HybCache,该类有两个标记,一个是常规标记(即,),另一个是基于FALRU类(重写后作为一个(例如FARandom)工作)。

我相信第一个选择是更容易,更少硬编码。FALRU尚未划分为索引策略和替换策略,因此,如果需要更改其中的策略之一,则必须重新实现。

在实现过程中,您可能会遇到一致性错误。如果发生这种情况,这很可能是索引逻辑中的一个问题,我不会试图在一致性模型中找到问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62784675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档