本节主要介绍一下在个人观点下的 mac 的 cpu 信息的查询和解释!
一、尝个栗子
先来看一个目前苹果官网正在售卖的 macbook pro 电脑的配置,简单分析一下:
中央处理器 (CPU): 11 核心的 CPU,适合多任务处理和高性能计算需求。图形处理器 (GPU): 14 核心的 GPU,对于图形密集型应用如游戏、视频编辑或机器学习训练非常有用。内存: 18GB 统一内存,有助于提高系统性能,尤其是在运行大型应用程序或多任务操作时。存储: 512GB 固态硬盘 (SSD),提供快速的数据读写速度,适合存储操作系统、应用程序和个人文件。显示屏: 14 英寸 Liquid 视网膜 XDR 显示屏,这意味着屏幕具有高分辨率和优秀的色彩表现,适合专业设计工作。接口: 包括三个雷雳 4 端口,HDMI 端口,SDXC 卡插槽,耳机插孔和 MagSafe 3 端口,提供了丰富的连接选项。输入设备: 带有触控 ID 的妙控键盘,以及力度触控板,提升用户体验。电源适配器: 70W USB-C 电源适配器,用于为设备充电。
接下来主要针对 CPU 的部分进行剖析一下,向下看→
二、Mac 的 cpu 参数解析
2.1 配置展示
经常会有人说总是不理解多少核多少线程怎么看,下面就来扯一扯吧!
首先,我们需要找到一段配置,进入的 mac 的 Terminal 执行命令查看:
sysctl machdep.cpu
查询结果
machdep.cpu.max_basic: 27
machdep.cpu.max_ext: 2147483656
machdep.cpu.vendor: GenuineIntel
machdep.cpu.brand_string: Intel(R) Core(TM) i5-1038NG7 CPU @ 2.00GHz
machdep.cpu.family: 6
machdep.cpu.model: 126
machdep.cpu.extmodel: 7
machdep.cpu.extfamily: 0
machdep.cpu.stepping: 5
machdep.cpu.feature_bits: 9221959987971750911
machdep.cpu.leaf7_feature_bits: 4072613871 1077960526
machdep.cpu.leaf7_feature_bits_edx: 3154118160
machdep.cpu.extfeature_bits: 1241984796928
machdep.cpu.signature: 460517
machdep.cpu.brand: 0
machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 PCLMULQDQ DTES64 MON DSCPL VMX EST TM2 SSSE3 FMA CX16 TPR PDCM SSE4.1 SSE4.2 x2APIC MOVBE POPCNT AES PCID XSAVE OSXSAVE SEGLIM64 TSCTMR AVX1.0 RDRAND F16C
machdep.cpu.leaf7_features: RDWRFSGS TSC_THREAD_OFFSET SGX BMI1 AVX2 FDPEO SMEP BMI2 ERMS INVPCID FPU_CSDS AVX512F AVX512DQ RDSEED ADX SMAP AVX512IFMA CLFSOPT IPT AVX512CD SHA AVX512BW AVX512VL AVX512VBMI UMIP PKU GFNI VAES VPCLMULQDQ AVX512VNNI AVX512BITALG AVX512VPOPCNTDQ RDPID SGXLC FSREPMOV MDCLEAR IBRS STIBP L1DF ACAPMSR SSBD
machdep.cpu.extfeatures: SYSCALL XD 1GBPAGE EM64T LAHF LZCNT PREFETCHW RDTSCP TSCI
machdep.cpu.logical_per_package: 16
machdep.cpu.cores_per_package: 8
machdep.cpu.microcode_version: 178
machdep.cpu.processor_flag: 7
machdep.cpu.mwait.linesize_min: 64
machdep.cpu.mwait.linesize_max: 64
machdep.cpu.mwait.extensions: 3
machdep.cpu.mwait.sub_Cstates: 286396448
machdep.cpu.thermal.sensor: 1
machdep.cpu.thermal.dynamic_acceleration: 1
machdep.cpu.thermal.invariant_APIC_timer: 1
machdep.cpu.thermal.thresholds: 2
machdep.cpu.thermal.ACNT_MCNT: 1
machdep.cpu.thermal.core_power_limits: 1
machdep.cpu.thermal.fine_grain_clock_mod: 1
machdep.cpu.thermal.package_thermal_intr: 1
machdep.cpu.thermal.hardware_feedback: 0
machdep.cpu.thermal.energy_policy: 1
machdep.cpu.xsave.extended_state: 743 2688 2696 0
machdep.cpu.xsave.extended_state1: 15 2432 8448 0
machdep.cpu.arch_perf.version: 5
machdep.cpu.arch_perf.number: 8
machdep.cpu.arch_perf.width: 48
machdep.cpu.arch_perf.events_number: 8
machdep.cpu.arch_perf.events: 0
machdep.cpu.arch_perf.fixed_number: 4
machdep.cpu.arch_perf.fixed_width: 48
machdep.cpu.cache.linesize: 64
machdep.cpu.cache.L2_associativity: 8
machdep.cpu.cache.size: 256
machdep.cpu.address_bits.physical: 39
machdep.cpu.address_bits.virtual: 48
machdep.cpu.core_count: 4
machdep.cpu.thread_count: 8
machdep.cpu.tsc_ccc.numerator: 104
machdep.cpu.tsc_ccc.denominator: 2
- 关键信息解释:
-
基本信息
- Vendor: GenuineIntel 表示这是英特尔的处理器。
- Brand String: Intel(R) Core(TM) i5-1038NG7 CPU @ 2.00GHz 表示具体的处理器型号和频率。
- Family: 6 表示处理器家族。
- Model: 126 表示处理器的具体型号。
- Stepping: 5 表示处理器的步进版本。
-
特性
- Features: 列出了处理器支持的各种特性,包括:
- FPU: 浮点运算单元
- MMX: 多媒体扩展
- SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2: 各种流式 SIMD 扩展
- AVX1.0: 高级向量扩展
- AVX512F, AVX512DQ, AVX512CD, AVX512BW, AVX512VL, AVX512VBMI, AVX512VNNI, AVX512BITALG, AVX512VPOPCNTDQ: 各种高级向量扩展
- SHA: 安全哈希算法加速
- AES: 加密算法加速
- HTT: 超线程技术
- VMX: 虚拟化技术
-
缓存和内存
- Cache:
- linesize: 缓存行大小为 64 字节
- L2_associativity: L2 缓存关联度为 8
- size: L2 缓存大小为 256 KB
-
物理和虚拟地址
- physical: 物理地址位数为 39 位
- virtual: 虚拟地址位数为 48 位
-
核心和线程
- core_count: 物理核心数为 4
- thread_count: 线程数为 8,表示每个核心有两个线程(超线程)
-
其他信息
- microcode_version: 微码版本为 178
- logical_per_package: 每个包中的逻辑处理器数为 16
- cores_per_package: 每个包中的核心数为 8
2.2 常见概念了解
什么是处理器包?什么是核数?什么是线程?什么是超线程?
为了更好地理解处理器相关的术语,让我们分别定义一下:
处理器包(Processor Package 或 Socket):这是指物理上安装在主板上的CPU封装。一个处理器包通常包含一个或多个物理CPU,但有时也可以指代整个CPU模块。单个处理器包:在大多数个人计算机中,一个处理器包通常指的就是一个单独的 CPU,它可能包含多个物理核心。例如,一个四核处理器就是一个处理器包,包含了四个物理核心。多处理器包:在服务器和其他高性能计算环境中,可能会有多个物理处理器安装在一个系统中,每个物理处理器称为一个处理器包。例如,一台服务器可能有两个处理器包,每个包内含有一个或多个物理处理器
“处理器包”通常指的是一个或多个物理处理器及其相关的逻辑处理器(线程)的集合。在现代计算机系统中,一个处理器包可以包含多个物理核心,并且每个物理核心可以支持多个逻辑处理器(线程),以提高系统的并发处理能力。在多处理器系统中,每个物理处理器也是一个独立的处理器包。
-
核数(CPU Cores):- 另一个叫法是核心,通常是说物理核心。每个处理器包内部的实际计算单元,每个核心可以独立执行指令。例如,一个处理器包可能包含 4 个物理核心。
- 核数指的是单个CPU内含有的独立计算引擎的数量。每个核心都可以执行自己的指令集,因此多核心CPU可以同时处理多个任务或并行处理一个任务的不同部分。核数越多,理论上CPU的并发处理能力越强。
-
线程(Threads):- 另一个说法是叫逻辑核心,也有叫逻辑处理器,逻辑线程等。
- 线程是在操作系统层面上的调度单位。一个核心可以产生一个或多个线程,这取决于硬件是否支持超线程技术。操作系统将线程视为可分配给任务的独立实体。在没有超线程的情况下,每个核心通常只能处理一个线程;而在支持超线程的情况下,每个核心可以同时处理多个线程。
-
超线程(Hyper-Threading, HT):这是由英特尔开发的一项技术,允许一个物理核心模拟出两个逻辑核心(线程),从而让操作系统认为有两个独立的处理器可供使用。超线程技术可以在不需要增加实际硬件核心的情况下提高处理器的并发能力。例如,一个具有四个物理核心的CPU如果启用了超线程技术,就可以提供八个逻辑处理器供操作系统调度。
实例分析:
单处理器包:一个处理器包包含 8 个物理核心,每个核心支持 2 个线程,因此总共有 16 个逻辑处理器(线程)。这种情况常见于现代桌面级和一些入门级服务器处理器。
多处理器包: 一个系统中有两个处理器包,每个包包含 8 个物理核心,每个核心支持 2 个线程,因此总共有 32 个逻辑处理器(线程)。 这种配置常见于企业级服务器和高性能计算系统中。
总结来说,处理器包指的是物理安装的CPU单元,核数是指每个CPU内能够并行工作的计算单元数量,线程是操作系统管理和调度的最小单位,而超线程则是一种使单个物理核心能够同时处理多个线程的技术。
2.3 重要参数分析
machdep.cpu.logical_per_package
- 值: 16
- 含义: 每个处理器包中的逻辑处理器(线程)总数为 16。
- 说明: 表示整个处理器包中有 16 个逻辑处理器(线程)。
machdep.cpu.cores_per_package
- 值: 8
- 含义: 每个处理器包中的物理核心总数为 8。
- 说明: 表示整个处理器包中有 8 个物理核心。
machdep.cpu.core_count
- 值: 4
- 含义: 每个处理器包中的物理核心总数为 4。
- 说明: 表示每个处理器包中有 4 个物理核心。
machdep.cpu.thread_count
- 值: 8
- 含义: 每个处理器包中的逻辑处理器(线程)总数为 8。
- 说明: 表示每个处理器包中有 8 个逻辑处理器(线程)。
以上配置是出自同一个mac 电脑,这里有一个疑问?
疑问:为什么machdep.cpu.core_count=4 的情况下,machdep.cpu.logical_per_package为什么会是 16 呢?
首先machdep.cpu.core_count表示的是实际的物理cpu核心数,所以machdep.cpu.thread_count会是 8,这是毋庸置疑的!如果mac系统认为machdep.cpu.cores_per_package表示的单个处理器包的逻辑 cpu 的数量也是可以说的过去的,那么将machdep.cpu.logical_per_package计算为 16 就不那么奇怪了,我猜想可能底层都是按照超线程的方式计算的。
最后,我认为machdep.cpu.logical_per_package可能是一种的系统的错误,可能在我这个 10.15 系统上存在这个漏洞,对于高阶版本的MacOS 就不得而知的,大家可以查查看!