1. 先以 qemu 的配置参数为例来分析一下,
qemu 可以通过 -smp 参数指定 cpu 相关的配置,如核心的个数等,其中 SMP 是指 Symmetrical Multi-processing 对称多处理器结构,
-smp [cpus=]n[,maxcpus=cpus][,cores=cores][,threads=threads][,dies=dies][,sockets=sockets]
set the number of CPUs to 'n' [default=1]
maxcpus= maximum number of total cpus, including
offline CPUs for hotplug, etc
cores= number of CPU cores on one socket (for PC, it's on one die)
threads= number of threads on one CPU core
dies= number of CPU dies on one socket (for PC only)
笔者配置 -smp sockets=2,dies=2,cores=2,threads=2 参数启动 linux 虚拟机,
再通过指令 cat /proc/cpuinfo 分析当前的 CPU 架构,
/ # cat /proc/cpuinfo | grep "physical id" | sort -u
physical id : 0
physical id : 1
可以得到物理 CPU 个数为 2,即 sockets=2 的体现,
/ # cat /proc/cpuinfo | grep "cpu cores" | sort -u
cpu cores : 4
每个 CPU 有4个核心,即 dies=2,cores=2 的体现,
/ # cat /proc/cpuinfo | grep "siblings" | sort -u
siblings : 8
每个 CPU 有8个处理线程,即 dies=2,cores=2,threads=2 的体现,
/ # cat /proc/cpuinfo | grep "processor"
processor : 0
processor : 1
processor : 2
processor : 3
processor : 4
processor : 5
processor : 6
processor : 7
processor : 8
processor : 9
processor : 10
processor : 11
processor : 12
processor : 13
processor : 14
processor : 15
再看一下,当前计算机拥有的处理器个数总共为 16 个,
所以得出 processors = sockets*dies*cores*threads
2. 再以笔者所认为的结构层次构造出一个示意图,其中 DIE 只包含 CORES 并没有一些外设的控制器等,通过图可以更加容易理解: