我这周的作业有这个问题,我不明白缓存是如何被打败的,或者我如何用汇编程序来展示它。有人能指出我正确的方向吗?
通过汇编程序示例展示如何击败两种不同的缓存(关联和直接映射)。解释为什么会发生这种情况以及如何解决。用于破坏缓存的相同程序是否相同?
注意:这是家庭作业。不要只为我回答问题,它不会帮助我理解材料。
缓存可以提高性能。因此,击败缓存意味着找到一种降低性能(在缓存存在的情况下)而不是提高性能的内存访问模式。
请记住,缓存的大小是有限的(例如,小于主内存),因此通常要破坏缓存涉及填充它,以便它在您访问它之前丢弃您即将访问的数据。
要记住的另一件事是您处理的缓存是虚拟的还是物理的索引/标记。在某些变体中,即使缓存没有完全填满,缓存别名也会强制行替换。在其他变体中,缓存/页面着色冲突可能会导致驱逐。最后,在某些工作负载下的多处理器系统中,缓存线迁移(在不同 CPU 的缓存之间)可能会限制 CPU 缓存的有用性。