18

我这周的作业有这个问题,我不明白缓存是如何被打败的,或者我如何用汇编程序来展示它。有人能指出我正确的方向吗?

通过汇编程序示例展示如何击败两种不同的缓存(关联和直接映射)。解释为什么会发生这种情况以及如何解决。用于破坏缓存的相同程序是否相同?

注意:这是家庭作业。不要只为我回答问题,它不会帮助我理解材料。

4

3 回答 3

6

缓存可以提高性能。因此,击败缓存意味着找到一种降低性能(在缓存存在的情况下)而不是提高性能的内存访问模式。

请记住,缓存的大小是有限的(例如,小于主内存),因此通常要破坏缓存涉及填充它,以便它在您访问它之前丢弃您即将访问的数据。

于 2011-07-10T15:06:50.837 回答
3

如果您正在寻找提示,请考虑将数据字拆分为 2 个缓存行。

(如果您也在寻找答案,x264 开发人员遇到了类似的问题 - 更多信息可在此处此处获得。这些链接信息量很大,我真的建议您即使在找到您的回答。)

于 2011-07-10T15:58:51.203 回答
0

要记住的另一件事是您处理的缓存是虚拟的还是物理的索引/标记。在某些变体中,即使缓存没有完全填满,缓存别名也会强制行替换。在其他变体中,缓存/页面着色冲突可能会导致驱逐。最后,在某些工作负载下的多处理器系统中,缓存线迁移(在不同 CPU 的缓存之间)可能会限制 CPU 缓存的有用性。

于 2011-07-11T17:10:09.130 回答