Intel AMD Hygon CPU缓存
CPU缓存是位于CPU芯片上的小型高速内存(基于SRAM),主要作用是临时存储CPU可能需要快速访问的预取数据,这样做的目的是避免因为RAM的限制而造成CPU的性能瓶颈。现代CPU通常包含三级缓存:L1、L2和L3.
本文主要讲述服务器CPU相应的缓存知识。
Intel CPU
英特尔处理器的缓存架构,每个核心独享L1和L2缓存,所有的核心独享L3缓存。
以Whitley平台的至强处理器4310为例,可以看到其每核心L1数据缓存为48KB、L1指令缓存为32KB、L2缓存为1280KB(约为1MB)、L3缓存为18432KB(约为18MB)
不同平台的Intel 至强处理器缓存比较:
AMD
AMD架构目前已经发展到Zen5和Zen5c
Zen架构中将4个核心作为一个core complex(CCX,cpu复合体,也称为群组),4-way 64KB的L1指令缓存、8-way 32KB的L1数据缓存,8-way 512KB的L2缓存,一个CCX的4个核心共享8MB L3缓存。一个处理器可包含2个CCX。
Zen CCX die的图像如下所示:
Zen2架构中L3缓存最大为256MB,L2缓存为512KB 8-Way(其中8-way指的是缓存的关联性,8-way就是将L2缓存换分为并行工作的8个子集,当处理器需要访问某个主存地址时,缓存控制器会同时在这8个存储区域或路径中查找对应的数据行。这种并行查找的方式有助于提高缓存的访问速度,提高命中率),L1指令和数据缓存为32KB。zen2架构中,一个CCD有两个CCX,每个CCX里的4个CPU核心共享16MB L3缓存。
Zen3架构中每个核心独享512KB的L2缓存,8个核心共享32MB的L3 cache,L1的数据缓存和指令缓存为32KB。zen3架构中一个变化是一个CPU die只有一个CCX
Zen4架构中最多8个核心组成一个core complex(CCX),其共享一个32MB的L3缓存,每个核心独享1MB的L2缓存,L1数据缓存和L1指令缓存为32KB。
Zen4c架构是为了高密度和高能效而设计的,Zen4c架构中有两个core complex(CCX),每个CCX包含8个核心,每个核心独享1MB的L2缓存,L1数据缓存和L1指令缓存为32KB。每个CCX共享16MB的L3缓存。
Zen5架构中8个核心组成一个core complex(CCX),这个CCX是在一个die(CCD)上制造出来的,在一个9005系列处理器上最多可以配置16个CCD,达128个核心。对于一个CCX,每个核心独享1MB的L2缓存,共享一个32MB的L3缓存。L1数据缓存为48KB,L1指令缓存为32KB。
Zen5c架构中16个核心组成一个core complex(CCX),在一个CCD芯片上制造一个CCX,在9005系列中最多可以配置12个CCD,达192个核心。在一个CCX中,16个核心共享32MB的L3缓存,每个核心独享1MB的L2缓存。L1数据缓存为48KB,L1指令缓存为32KB。
Hygon
海光3号采用第一代Zen架构,64KB的L1指令缓存、32KB的L1数据缓存、512KB的L2缓存,四核共享8MB的L3缓存。
海光4号处理器是一个对zen1进行修改,zen2级别的微架构,一些改进和zen2对zen1所作的改进类似,例如还是4组解码器进入四组微指令队列,四核共享三缓,同样改进了TLB容量,改进了多线程处理器的指令分发方法,更新了 各种执行、队列的单元数量,以及SMT超线程调度等功能。海光4号系列处理器每个计算die 有16核,每颗cpu 4个计算die,2个I/O die
一级指令缓存:64KB
一级数据缓存:32KB\
L2缓存:512KB
L3缓存:
缓存比较
在Intel Xeon处理器中,所有的核心共享一个L3缓存,而不是像AMD的CCX架构那样每个CCX有自己的L3缓存。这种设计使得Intel Xeon处理器在处理多线程任务时具有更高的性能和效率。