某处,有一次我读到了记忆栅栏(障碍)。据说内存栅栏会导致多个 CPU 内核之间的缓存同步。
所以我的问题是:
操作系统(或 CPU 本身)如何知道哪些内核需要同步?
它是否同步所有 CPU 内核的缓存?
如果对 (2) 的回答是“是”并且假设同步操作并不便宜,那么使用内存栅栏会减慢我的应用程序未使用的内核吗?例如,如果我有一个单线程应用程序在我的 8 核 CPU 上运行,它会减慢 CPU 的所有其他 7 个内核,因为某些缓存线必须与所有这些内核同步吗?
上面的问题是完全无知的,围栏的工作方式完全不同吗?