Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Caching 不同级别的缓存是否在同一频域中运行?_Caching_Cpu_Cpu Architecture - Fatal编程技术网

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

Caching 不同级别的缓存是否在同一频域中运行?,caching,cpu,cpu-architecture,Caching,Cpu,Cpu Architecture,较大的缓存通常具有较长的位线或字线,因此很可能具有较高的访问延迟和周期时间 那么,二级缓存和一级缓存在同一个域中工作吗?L3缓存(片)如何,因为它们现在是非包容性的,并且在所有核心之间共享 有关问题包括: 核心中的所有功能单元是否在同一时钟域中? 非核心部分是否都在同一个时钟域中? 多核系统中的核是否同步 我相信时钟域交叉会带来额外的延迟。CPU芯片中的大多数部件是否工作在同一个时钟域上?较大的缓存可能具有较高的访问时间,但通过完全流水线化,它仍然可以维持每个端口每个周期的一次访问。但它也可能限

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

那么,二级缓存和一级缓存在同一个域中工作吗?L3缓存(片)如何,因为它们现在是非包容性的,并且在所有核心之间共享

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


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

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

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

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

有一种用于跨频域的特殊电路,所有跨域通信都必须通过它。因此,是的,我认为它会带来少量的性能开销


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

在现代CPU中,专用L1i/d缓存始终是每个核心的一部分,而不是在单独的时钟上。L1d与负载执行单元和L1dTLB紧密耦合。这在整个体系结构中都是普遍适用的。()

在具有单核专用二级缓存的CPU上,它也是核心的一部分,在相同的频域中。通过保持定时(在核心时钟周期内)固定,并且不需要任何异步逻辑跨时钟域传输数据,从而保持L2延迟非常低。这在英特尔和AMD x86 CPU上是正确的,我假设大多数其他设计

脚注1:几十年前,即使在芯片上安装L1缓存对晶体管预算来说也是一个挑战,有时只有比较器和标签在芯片上,因此部件可以在开始设置对外部SRAM上数据的访问时快速运行。(或者,如果不是外部的,有时在同一塑料/陶瓷封装中有一个单独的模具(硅片),因此导线可能非常短,不会暴露为可能需要ESD保护的外部引脚等)

或者,例如,以一半的内核时钟速度(低于PPro中的全速)运行其脱离芯片/封装二级缓存。(但都是相同的“频域”;这是在DVFS用于电源管理的动态频率/电压之前。)L1i/d像今天一样紧密集成到核心中;你必须回到更远的地方去寻找带有脱离芯片L1的CPU,比如早期的经典RISC CPU


这个答案的其余部分主要是关于Intel x86 CPU的,因为从您提到的L3片来看,我认为这就是您所想象的

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

在主流Intel CPU(P6/SnB系列)中,只有Skylake-X具有非包容性三级缓存。自从Nehalem以来,Intel一直使用包含式最后一级缓存,因此其标记可以作为窥探过滤器。看见但SKX从一个环变为一个网格,并使L3成为非包容性/非排他性


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

即使CPU时钟关闭,内存时钟仍保持高位。(尽管如此,如果CPU决定将时钟从4.0降到2.7GHz,单核带宽可能会受到影响,因为它在唯一的活动内核上运行内存绑定代码。单核带宽受最大并发/延迟限制,而不是受双通道DDR4或DDR3的DRAM带宽本身的限制。我认为这是因为增加了非核心延迟。)

提到将其与内核分开超频,以减少L3/内存延迟


在Haswell和更高版本的Xeon(E5 v3)、uncore(环总线和L3片)和每个单独的核心上都有单独的频域。(来源:Frank Denneman。它有一个拼写错误,当Haswell实际上是Xeon E时,它说Haswell(v4)。[357]-xxxx v3。但像本文这样的其他来源证实了Haswell确实具有这些特性。非核心频率缩放(UFS)和每核心功率状态(PCP)在Haswell中都是新的。


在Haswell之前的Xeons上,uncore以该软件包当前最快内核的速度运行。在双插槽NUMA设置中,这会使另一个插槽严重瓶颈,使其跟上snoop请求。请参阅John“Dr.Bandwidth”McCalpin的帖子:

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