NUMA
https://houmin.cc/posts/b893097a/
一个NUMA Node内部是由一个物理CPU和它所有的本地内存(Local Memory) 组成的。广义上还包含本地IO资源,对大多数Intel x86 NUMA平台来说,主要是PCIe总线资源。
物理 CPU:一个CPU Socket里可以由多个CPU Core和一个Uncore部分组成。每个CPU Core内部又可以由两个CPU Thread组成。 每个CPU thread都是一个操作系统可见的逻辑CPU。对大多数操作系统来说,一个八核HT打开的CPU会被识别为16个CPU。
○ Socket:一个Socket对应一个物理CPU。 这个词大概是从CPU在主板上的物理连接方式上来的,可以理解为 Socket 就是主板上的 CPU 插槽。
○ Node:解决core的分组的问题。每个node有自己的内部CPU,总线和内存,同时还可以访问其他node内的内存。
○ Core:CPU的运算核心。 x86的核包含了CPU运算的基本部件,如逻辑运算单元(ALU), 浮点运算单元(FPU),L1和L2缓存。
○ Uncore:物理CPU里没有放在Core里的部件都被叫做Uncore。现今的Uncore部分,除了iMC(Integrated Memory Controller),PCIe Root Complex,还有QPI(QuickPath Interconnect)控制器, L3缓存,CBox (负责缓存一致性),及其它外设控制器。
○ Threads:超线程技术在一个处理器Core内部引入了额外的硬件设计模拟了两个逻辑处理器(Logical Processor), 每个逻辑处理器都有独立的处理器状态,但共享Core内部的计算资源,如ALU,FPU,L1,L2缓存。 这样在最小的硬件投入下提高了CPU在多线程软件工作负载下的性能。