不同级别的缓存是否在同一频域中运行?

问题描述 投票:2回答:2

较大的高速缓存通常具有较长的位线或字线,因此很可能具有较高的访问延迟和周期时间。

那么,L2缓存是否与L1缓存在同一个域中工作? L3缓存(切片)怎么样,因为它们现在是非包容性的并且在所有核心之间共享?

相关问题是:核心中的所有功能单元是否在同一时钟域中?非核心部分是否都在同一个时钟域?多核系统中的核心是否同步?

我相信时钟域交叉将引入额外的延迟。 CPU芯片中的大多数部件是否在同一个时钟域上工作?

caching cpu cpu-architecture
2个回答
3
投票

专用L1i / d高速缓存始终是每个内核的一部分,而不是单独的时钟。 L1d与负载执行单元和L1dTLB紧密耦合。这在整个架构中非常普遍。 (VIPT Cache: Connection between TLB & Cache?

在具有每核专用L2缓存的CPU上,它也是同一频域中核心的一部分。通过保持定时(核心时钟周期)固定,并且不需要任何异步逻辑来跨时钟域传输数据,这可以使L2延迟保持在极低水平。这在Intel和AMD x86 CPU上都是如此,我假设大多数其他设计。


这个答案的其余部分主要是关于英特尔x86 CPU,因为从你提到的L3切片我认为这就是你想象的。

L3缓存(切片)怎么样,因为它们现在是非包容性的并且在所有核心之间共享?

在主流的英特尔CPU(P6 / SnB系列)中,只有Skylake-X具有非包容性的L3缓存。英特尔自Nehalem使用包含性的最后一级缓存以来,其标签可以是一个监听过滤器。见Which cache mapping technique is used in intel core i7 processor?。但SKX从一个戒指变成一个网状物,并使L3不包含/非独占。


在英特尔台式机/笔记本电脑CPU(双/四核)上,所有核心(包括其L1 + L2高速缓存)都处于相同的频域。 uncore(L3缓存+环形总线)位于不同的频域,但我认为通常以内核的速度运行。如果GPU繁忙但核心都处于空闲状态,它可能会比核心时钟更高。

即使CPU时钟停止,内存时钟也会保持高电平。 (如果CPU决定从4.0降至2.7GHz,因为它在唯一的活动核心上运行内存限制代码,单核带宽可能会受到影响。单核带宽受max_concurrency / latency限制,而不受DRAM带宽本身的限制如果您有双通道DDR4或DDR3。Why is Skylake so much better than Broadwell-E for single-threaded memory throughput?我认为这是因为增加了非核心延迟。)

wikipedia Uncore article提到将它与核心分开超频以减少L3 /内存延迟。


在Haswell和后来的Xeons(E5 v3)上,uncore(环形总线和L3片)和每个单独的核心都有不同的频域。 (来源:Frank Denneman的NUMA Deep Dive Part 2: System Architecture。它有一个拼写错误,当Haswell实际上是Xeon E [357] -xxxx v3时说Haswell(第4节)。但是像本文Comparisons of core and uncore frequency scaling modes in quantum chemistry application GAMESS这样的其他来源证实了Haswell确实具有这些功能.Uncore Frequency Scaling(UFS) )和每核心动力状态(PCPS)都是Haswell的新功能。


在Haswell之前的Xeons上,uncore以该软件包当前最快的核心速度运行。在双插槽NUMA设置中,这可能会严重阻塞另一个插槽,因为它可以缓慢地跟上窥探请求。请参阅John“Dr. Bandwidth”McCalpin在this Intel forum thread上的帖子:

在Xeon E5-26xx处理器上,“uncore”(包含L3缓存,环形互连,内存控制器等)的运行速度不会超过最快的内核,因此“package C1E state”会导致uncore也降至1.2 GHz。当处于这种状态时,芯片需要更长的时间来响应QPI监听请求,这会增加另一个芯片上处理器和DMA引擎看到的有效本地内存延迟!

...在我的Xeon E5-2680芯片上,“封装C1E”状态将另一个芯片上的本地延迟增加了近20%

“封装C1E状态”还将位于“空闲”芯片上的存储器的持续带宽减少了大约25%,因此任何NUMA放置错误都会产生更大的性能损失。

Bandwidth博士将一个简单的无限循环固定在另一个插座上的核心上,以保持其时钟频率,并能够测量差异。

支持四路插槽的Xeon(E7-xxxx)在每个插槽中都有一个小的监听过滤器缓存。双插槽系统只需使用每个监听请求就可以使用QPI带宽的大部分垃圾邮件发送垃圾邮件,即使在L3未命中时他们正在访问自己的本地DRAM。


我认为即使所有内核都空闲,Broadwell和Haswell Xeon也可以保持其非核心时钟高,这正是为了避免这个瓶颈。

Bandwidth博士说他在Haswell Xeons上禁用了包C1E状态,但这可能没有必要。他还posted some stuff关于使用Uncore perf计数器来测量非核心频率以找出你的CPU实际在做什么,以及关于可以影响非核心频率决策的BIOS设置。


更多背景:我发现https://www.anandtech.com/show/8423/intel-xeon-e5-version-3-up-to-18-haswell-ep-cores-/4关于一些变化,比如新的窥探模式选项(环形总线上的跳跃将窥探发送到另一个核心),但它没有提到时钟。


3
投票

较大的缓存可能具有较高的访问时间,但仍然可以通过完全流水线化每个端口的每个周期来维持一次访问。但它也可能限制最大支持频率。

在现代英特尔处理器中,L1i / L1d和L2高速缓存以及核心的所有功能单元处于相同的频域。在客户端处理器上,同一插槽的所有内核也处于相同的频域,因为它们共享相同的频率调节器。在服务器处理器上(我认为从Haswell开始),每个核心在一个单独的频域中。

在现代英特尔处理器中(自从我认为是Nehalem),非核心(包括L3)处于一个单独的频域。一个有趣的案例是在双NUMA节点配置中使用套接字。在这种情况下,我认为每个NUMA节点的非核心分区仍然存在于同一频域中。

有一个特殊的电路用于跨越频域,所有跨域通信都必须通过它。所以是的,我认为它会产生很小的性能开销。

还有其他频域。特别地,每个DRAM通道在频域中操作。我不知道当前的处理器是否支持在不同的频率上运行不同的信道。

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