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 並沒有一些外設的控制器等,通過圖可以更加容易理解: