【问题标题】:Can Gem5 simulator be used to differentiate between different type of DRAM traffic?Gem5 模拟器可以用来区分不同类型的 DRAM 流量吗?
【发布时间】:2019-10-16 17:01:39
【问题描述】:

我想区分进入 DRAM 的流量是来自页表遍历器(这是由于地址转换,在 TLB 中未命中之后),还是其他流量(不是来自页表遍历器)。我可以使用 Gem5 来做到这一点吗?

【问题讨论】:

  • 如果您希望在日志或 C++ 代码上使用它会很好。但我不知道答案。如果在 C++ 代码中,也学习使用 Eclipse 调试 gem5,这将有很大帮助。也可以在邮件列表中询问。
  • 欢迎来到 SO!当您提出问题时,请尝试添加最少的内容:输入样本、预期输出样本、您尝试了什么、研究以及您在哪里堆叠。只需检查Gem5 就可以了,但是您尝试了什么?

标签: simulator gem5


【解决方案1】:

gem5 中的内存控制器可以通过 Request::masterId 区分不同的 master。 master 将在构建时通过使用 System::getMasterId 方法请求唯一的 masterId。 每次它会分配一个新的数据包/请求,它都会用自己的 masterId 标记它。

因此,如果您想在 dram 内存控制器中添加一个钩子以在请求来自特定主机时执行某些操作,您可以轻松地做到这一点。 如果您只对高级统计数据感兴趣,例如主设备的带宽利用率,DRAM 控制器应该在 stat 文件中打印(它会打印每个主设备的平均 bw/延迟)。

话虽如此,我不知道您使用的是哪种架构/table-walker。 ARM table walker 有自己的 masterId (尽管它的初始化有点复杂,我应该解决这个问题),但对于您使用的体系结构,情况可能并非如此。 无论如何,修改 HTW 以向系统请求唯一的 masterId 令牌应该是微不足道的。

【讨论】:

    猜你喜欢
    • 2013-11-12
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    相关资源
    最近更新 更多