您的位置:首页 > 其它

CPU拓扑结构之非一致性内存访问

2014-12-10 21:09 246 查看
非一致内存访问——NUMA

硬件已经趋向使用多条系统总线,每条系统总线为一小组处理器提供服务。每组处理器都有自己的内存,并可能有自己的 I/O 通道。但是,每个 CPU 都可以通过一致的方式访问与其他组关联的内存。每个组称为一个“NUMA
节点”。NUMA 节点中的 CPU 数量取决于硬件供应商。访问本地内存比访问与其他 NUMA 节点关联的内存快。这就是“非一致性内存访问体系结构”名称的由来。

在对称多处理系统中,处理器共享北桥中的内存控制器来达到共同访问外部内存和IO的目的,也就是说所有的处理器对内存和I/O的访问方式和开销都是相同的。在这种系统中,随着更多的处理器被添加到SMP系统中,总线的竞争将会越来越大,系统的性能也必将随之大打折扣。

NUMA系统拥有多条内存总线,于是将几个处理器通过内存总线与一块内存相连构成一个组,这样整个庞大的系统就可以被分为若干个组,这个组的概念在NUMA系统中被称为节点(node)。处于该节点中的内存被称为本地内存(local memory),处于其他节点中的内存对于该组而言被称为外部内存(foreign memory)。而节点又可以分为三类,即本地节点(local
node),邻居节点(neighbour node)和远端节点(remote node).
本地节点:对于某个节点中的所有CPU,此节点称为本地节点;

邻居节点:与本地节点相邻的节点称为邻居节点;

远端节点:非本地节点或邻居节点的节点,称为远端节点。

介绍完这些基本概念后来看计算机系统中CPU拓扑是如何体现出这个特性的!

在现今的多核处理器架构中,一台主机往往存在多个物理封装(socket),每一个物理封装中又封装了多个物理核(core),采用超线程技术后,每一个物理核(core)又包括多个物理CPU,同一物理封装中的各物理核能够共享三级缓存;同一物理核中的物理CPU能够共享二级缓存;

如下图所示



那么如何来查看计算机的NUMA节点呢

通过ls /sys/devices/system/node/命令即可

至于socket、core与processor之间的关系可以通过cat /proc/cpuinfo命令来看

cat /proc/cpuinfo|grep “physical id” 显示出的就是soceket的物理编号

cat /proc/cpuinfo也会显示每个processor的core编号,查看同时每个processor也都有自己的编号
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: