处理器从单核到多核的演化过程&NUMA&UMA

本文探讨了处理器从单核到多核的发展,涉及到线程数、核心数和集群的概念。讲解了Linux下查看CPU信息的方法,并深入介绍了NUMA和UMA体系结构的区别,强调了NUMA中不同内存访问速度的差异。同时,文章讨论了现代处理器的性能核和能效核,以及在ARM服务器中的NUMA拓扑应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程数,核心数,多核,cluster

Linux-查看系统CPU个数、核心数、线程数

1.CPU个数(socket的个数)

cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

2.每个CPU的核心数

grep 'core id' /proc/cpuinfo | sort -u | wc -l

3.线程数

grep 'processor' /proc/cpuinfo | sort -u | wc -l

所以,CPU总的并发线程数为:

线程数=CPU个数(socket个数) x 核心数/CPU x 线程数/核心(考虑到超线程)

注意,对于分大小核的情况,核心数/CPU,线程数/核心分别计算。/proc/cpuinfo不区分大小核,显示的线程数是总线程。

以12th Gen Intel(R) Core(TM) i5-12600K为例,此款CPU是10核16线程,粗看感觉不对,毕竟16个线程没有办法平均到10个核上。实际上这是一款大小核结构的处理器。分成6个大核和4个小河。6个大核每个核2个线程,四个小核每个核1个线程,所以一共12+4=16线程。下图可以看到,其前12个线程对应的core id是2对1的关系。后面四个线程和CORE ID则是一一对应。

$ cat /proc/cpuinfo |grep "core id"
core id         : 0
core id         : 0
core id         : 4
core id         : 4
core id         : 8
core id         : 8
core id         : 12
core id         : 12
core id         : 16
core id         : 16
core id         : 20
core id         : 20
core id         : 28
core id         : 29
core id         : 30
core id         : 31

对于windows来说,通过任务管理器或者设备管理器都可以看到,要注意的是,从设备管理器中看到的CPU列表是CPU线程数,并非核数。

numa&uma:

在现代广泛应用的计算机系统中,以内存为研究对象可以分成两种体系结构,一种是统一内存访问(uniform memory access, UMA)体系结构,另一种是非统一内存访问(non-uniform memory access, NUMA)体系结构。他们的特点分别介绍如下:

UMA体系结构:内存有统一的结构并且可以统一寻址,SMP(Smmetric Multi-Processor)属于其中的一类,所有处理器访问内存花费的时间都是一样的,可以理解为整个内存只有一个节点。目前大部分嵌入式系统,手机操作系统以及台式机操作系统采用NUMA体系结构。如下图所示,该系统使用UMA体系结构,有4个CPU,他们都有L1高速缓存,其中,CPU0和CPU1组成一个簇(Cluster0),他们共享一个L2高速缓存,另外,CPU2和CPU3组成另外一个簇,他们共享另外一个L2高速缓存。4个CPU都共享同一个L3高速缓存,最重要的一点是,他们可以通过系统总线来访问DDR物理内存。

NUMA体系结构:系统中多个内存结点和多个CPU簇,CPU访问本地内存节点的速度最快,访问远端内存结点的速度要慢一点,如下图所示,该系统有三个内存节点,其中CPU0,CPU1组成一个节点node0,他们可以通过系统总线访问本地DDR物理内存,同理,CPU2和CPU3,以及CPU4和CPU5分别构成了Node1和Node2,它们也可以通过系统总线访问本地内存,如果通过UPI或者QPI总线连接,那么CPU0可以通过这条内部总线访问远端的内存节点的物理内存。但是访问速度要比访问本地物理内存慢很多。

这里有两个要点:

1.同一个CPU,访问不同的domain memory,速度不一样。

2.同一个domain memory,被不同的CPU访问,速度不一样。

numa还有一个特点,NUMA对存储的访问是通过不同的memory controller进行的,并不是同一个memory controller.而UMA所有的内存访问都从一个MC发出。NUMA对性能的提升主要是通过多个内存控制器可以独立访问带来的高带宽引起的,UMA下同一时刻只有一个processor可以访问内存。 NUMA下每个CPU/GPU可以独立访问内存。

Remote access in NUMA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值