基本架构
一个CPU处理器中一般有多个运行核心,我们把一个运行核心称为一个物理核
,每个物理核都可以运行应用程序
每个物理核都拥有私有的一级缓存(Level 1 Cache,简称L1 Cache), 包括一级指令缓存和一级数据缓存,以及私有的2级别缓存(L2 Cache)
物理核的私有缓存,指的是缓存空间只能被当前的这个物理核使用,其他的物理核无法对这个核的缓存空间进行数据存取
L1,L2 Cache 的访问速度和大小
L1和L2 缓存是每个物理核私有的,所有,数据或指令保存在L1、L2时,物理核访问它们的延迟不超过10纳秒
L1和L2 缓存受限于处理器的制造技术,一般只有KB级别,存不下太多的数据
如果L1,L2中没有数据就必须访问内存来获取数据,L1、L2和访问内存的延迟有10倍之多
完整单CPU架构
不同物理核还会共享一个共同的三级缓存(Level 3 Cache,简称L3 Cache)。L3缓存能够使用的存储资源比较多,所以一般比较大,能到达几MB到几十MB,这就让应用程序缓存更多的数据
现在主流的CPU处理器中,每个物理核通常都会运行两个超线程,也叫做逻辑核
。同一个物理核的逻辑核会共享使用L1、L2缓存,一个CPU处理器会有10到20多个物理核
同时,为了提升服务器的处理能力,服务器上通常还会有多个CPU处理器(多CPU Socket),每个处理器有自己的物理核(L1, L2缓存),L3缓存,以及连接的内存
多CPU Socket
在多CPU架构上,应用程序可以在不同的处理器上运行。比如,应用程序既可以在Socket1上运行一段时间,然后再被调度到Socket2上运行
非统一内存访问架构(Non-Uniform Memory Access,NUMA 架构)
如果应用程序先一个Socket上运行,并且把数据保存到了内存,然后被调度到另一个Socket上运行,此时,应用程序再进行内存访问,就需要访问之前Socket上连接的内存,这种访问属于远端内存访问
缺点:和访问Socket直接连接的内存相比,远端内存访问会增加应用程序的延迟