三级缓存是否由Sandy-Bridge E Xeon CPU的所有内核共享?


12

在一个相关的问题中,我询问了双CPU系统在使L3缓存加倍方面的好处。

但是,我已经注意到,至强E5-2600系列CPU的每个内核具有正好2.5 MB的L3缓存

这使我相信该操作系统每个内核保留2.5 MB的L3缓存。但是,我也有一个矛盾的印象,即L3缓存在所有内核之间共享。令人惊讶的是,很少有信息或讨论。

我主要担心的是低优先级的后台应用程序是否会“占用” L3缓存并降低高优先级的前台应用程序的性能。我提出了两个具体的性能问题。

  1. 在我当前的VS 2008开发系统上,编译某个C ++程序需要25分钟,而在另一个系统上,编译它要快得多,在具有相同设置的VS 2008上仅需要5分钟-尽管我拥有接近高端的i7- 970 CPU和足够的RAM。

  2. 程序通常需要20秒钟才能在我的系统上运行(即显示其主窗口)。并且在相关说明中,尽管我尝试限制上下文菜单项(目前可能还有10个附加菜单项),但Windows Shell最多需要10秒才能显示Windows资源管理器上下文菜单(并且相关行为也需要花费很长的时间)。默认值)。

多年来,我的系统中肯定装有大量已安装(和卸载)的应用程序,但尽管如此,我仍尽我所能来简化系统。

我还运行着许多低优先级的后台应用程序。特别是冗余云备份软件(例如CrashPlan),在此6核12线程系统上,这些软件通常加起来约占CPU利用率的25%。

我要买一台新电脑。我知道我将继续运行许多后台应用程序,并安装/卸载许多程序。如果我认为使用双CPU系统不仅可以使内核数量增加一倍,而且可以使L3高速缓存数量增加一倍,将有助于克服可怕的C ++编译器性能和总体系统速度下降的问题,那么我很乐意这样做。

目前应该是没有理由的高端系统运行得很慢,甚至有许多程序和后台应用程序。但是,如果不管我给系统提供多少CPU能力和三级缓存,都会出现我的问题,仅仅是因为我确实安装并运行了这么多程序和后台应用程序,我不想在双CPU上浪费2500美元系统将无法解决我的问题。

有任何建议,特别是关于我的问题,即是否在所有内核之间共享L3缓存(例如,低优先级后台应用程序可能会占用L3缓存,减慢较高优先级的程序),或者是否将其绑定到个人核心,将不胜感激。


我个人没有一个很好的答案,只是要说我也是L3被分享的印象。我只是想问问,为什么“至强”已经成为英特尔十年来的产品,所以您到底为什么将其称为“第二代”至强处理器呢?(如果以类比Sandy Bridge i3 /
5/7

英特尔将i7-2600系列CPU称为“第二代”(ark.intel.com/products/family/59136/…)。“第二代Xeon”是指Xeon Sandy-Bridge E架构CPU的等效版本于2012年3月6日发布(en.wikipedia.org/wiki/…)。
Dan Nissenbaum

1
那是我以为你在做的比喻。这是一个不好的(那些是第二代i7,但它们不是第二代Xeon),我将更改标题IMO ...我希望找到一个关于12岁处理器的问题,这可能会使很多人从点击进入这里。也许将“第二代”更改为“ Sandy Bridge-E”。
Shinrai 2012年

Answers:


13

在这些CPU上,每个物理核心都有其自己的L2缓存。L3高速缓存由所有内核共享,并且是包含所有内核的,即所有驻留在任何内核的L2高速缓存中的数据也都位于L3高速缓存中。

虽然这似乎浪费了L3空间,但实际上使L3对于加速内核间内存操作非常重要。L3缓存的主要目的是充当内核的总机和暂存区。例如,如果一个内核想知道某个内存区域是否可能被另一个内核缓存,则它可以检查L3缓存。如果信息是由一个内核处理的,而下一个又需要由另一个内核处理的,则它们将通过L3高速缓存而不是较慢的片外存储器传递信息。除此之外,除了不寻常的算法外,它对性能的影响不大-L2高速缓存足以容纳较小的事物,而L3高速缓存却不足以容纳大型事物。

因此,尽管每个内核确实具有自己的256KB L2高速缓存,并在L3高速缓存中有效地保留了256KB,但余额由所有内核共享。其他核心中不太重要的活动可能会损害使用L3空间而受益的更重要任务的性能。但是出于我提到的原因,它在实践中通常不会产生明显的效果,而且除了优化“大量数据”操作(例如压缩和扫描)以最大程度地减少缓存污染外,通常也不必担心。(例如,使用非临时操作。)


0

我的理解是,所有级别的缓存都直接在芯片上实现,并且L2和L3是相同的(只有Intel认识到差异,AMD才将它们组合在一起)。考虑到这一点,我可以想象在双插槽母板上的CPU之间不共享CPU上的L3缓存。请记住,这通常很有意义,因为通常每个CPU看到单独的内存通道到RAM。

如果我错了,有人纠正我。


L2和L3根本不是一回事。在最新的Intel设计中,L1 / L2是按核而小的(32k L1 I $和D $ / 256k统一L2),而L3是包容性的,由GPU和所有核共享。L1 / L2在物理上是分开的,但是有类似的用途(即,使单个内核的存储器访问速度更快)。包含在内的L3的另一个目的是:内核(和GPU)之间的一致性。请参阅@DavidSchwartz的答案。
彼得·科德斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.