26

对于我的学士论文,我必须评估多核系统上的常见问题。

在一些书中,我读到了关于虚假共享的书籍,以及在其他关于缓存线乒乓球的书籍中。具体问题听起来很熟悉,那么这些问题是相同的问题但被赋予了其他名称吗?有人可以给我详细讨论这些主题的书籍名称吗?(我已经有 Darry Glove、Tanenbaum 的文学作品……)

4

1 回答 1

48

概括:

虚假共享缓存行乒乓是相关的,但不是一回事。错误共享会导致缓存线乒乓,但这不是唯一可能的原因,因为缓存线乒乓也可能是由真正的共享引起的。

细节:

虚假分享

当不同的线程具有未在程序中共享的数据,但该数据被映射到共享的高速缓存行时,就会发生错误共享。例如,假设一个程序有一个整数数组,其中一个线程执行读取和写入所有具有偶数索引的数组条目,而另一个线程执行读取和写入具有奇数索引的条目。在这种情况下,线程实际上不会共享数据,但它们会共享缓存行,因为每个缓存行都包含奇数和偶数索引值(假设缓存行大于整数,这通常是正确的)。

缓存线乒乓

高速缓存线乒乓效应是高速缓存线在多个 CPU(或内核)之间快速连续传输的效果。这可能是由于虚假或真实的分享。本质上,如果多个 CPU 尝试在同一缓存行中读取和写入数据,那么该缓存行可能必须在两个线程之间快速连续传输,这可能会导致性能显着下降(甚至可能比单个线程正在执行)。错误共享会使这个问题特别难以检测,因为程序员可能试图编写应用程序以使线程不共享数据,而没有意识到数据被映射到同一缓存行。但错误共享并不是缓存行乒乓的唯一可能原因。这也可能是由多个线程尝试读取和写入相同数据的真正共享引起的。

于 2015-06-06T20:03:30.360 回答