这个语句的图表在多线程中是什么样子的

问题描述 投票:0回答:1

我看到了这个声明,我想知道应该如何解释它,请耐心等待我,谢谢。

“给定一个多核系统 Pr1 和 Pr2。地址 Add1 和 Add2 映射到同一个缓存块,但 A1 不等于 A2。缓存状态最初是无效的。”

缓存块和处理器是否像我在 A 或 B 中绘制的图表一样?我对 Add1 和 Add2 映射到同一个缓存时的含义感到困惑,但这是否意味着 Pr1 和 Pr2 访问同一个块?或者他们每个人都有自己的区块?

我看到了这张图,因此我很困惑这个声明中的架构是什么样的。

如有任何解释,我们将不胜感激,谢谢!

multithreading caching architecture cpu-cores
1个回答
0
投票

将缓存视为软件使用的有界哈希表。地址被散列到同一位置,这会导致冲突。

  • 直接映射的缓存映射到数组元素(碰撞时替换)
  • 组关联缓存将在数组槽处有一个固定大小的列表(替换列表中的 LRU)
  • 全关联缓存是一个开放寻址哈希表(所有元素的 LRU)。

在您的示例中,缓存一开始为空(无效块)。加载内存位置时,两个地址映射到同一高速缓存行。如果我们假设直接映射缓存,则加载冲突,导致其他项在加载到块中时被逐出。如果两者都是频繁使用的热条目,则此冲突可能会导致系统颠簸,从而导致由于内存提取而导致停顿,从而导致性能问题。关联缓存将支持某些冲突,例如在大多数情况下,2-way 在实践中可能足以避免此问题。这可能意味着 L1 直接映射 + 2 路 L2 可能是可以接受的,其中每核缓存会发生冲突,但共享缓存不会发生冲突,并且避免了对主内存的惩罚。

© www.soinside.com 2019 - 2024. All rights reserved.