苹果的M1系列芯片彻底改变了Mac的计算体验,其独特的多核架构让性能与能效在微小的硅片上翩翩起舞。与传统的对称多核处理器不同,M1芯片采用了一种被称为非对称多处理(Asymmetric Multiprocessing, AMP)的设计,融合了高性能(Performance, P. 和高能效(Efficiency, E)两种核心类型。这种创新不仅让MacBook的电池续航时间令人惊叹,还让运行复杂任务时的速度如飞。macOS如何在这场核心的「舞蹈」中优雅地分配线程?本文将深入剖析M1系列芯片的架构、macOS的线程管理策略,以及它们在实际负载下的表现,为普通读者揭开这块芯片背后的技术魔法。✅
🧠 M1的「双核大脑」:性能与效率的完美平衡
M1芯片的核心架构就像一个精心设计的交响乐团,包含两种截然不同的「乐手」:高性能的P核心(Firestorm)和高能效的E核心(Icestorm)。P核心好比乐团中的大提琴手,擅长处理复杂的计算任务,最高频率可达3.2GHz;而E核心则是轻快的长笛手,专注于节能,最高频率为2.064GHz。它们的组合让M1芯片在需要爆发力时火力全开,在日常任务中则轻盈省电。
M1系列芯片有三种主要配置:
- 原始M1:4个E核心和4个P核心,常见于MacBook Air、13英寸MacBook Pro、iMac和Mac mini。
- M1 Pro/Max:2个E核心和8个P核心,出现在14英寸和16英寸MacBook Pro以及Mac Studio Max中(部分14英寸MacBook Pro的M1 Pro仅有6个P核心)。
- M1 Ultra:4个E核心和16个P核心,搭载于Mac Studio Ultra。
为了便于管理,macOS将这些核心按类型分组为「簇」(cluster),每个簇包含2-4个同类型核心。例如,原始M1有一个E簇(E0,4个E核心)和一个P簇(P0,4个P核心);而M1 Ultra则拥有一个E簇(E0,4个E核心)和四个P簇(P0-P3,各4个P核心)。每个簇内的核心通常以相同的频率运行,负载在簇内平衡分配,但特殊情况下,某些线程可能只占用单个核心。
⚙️ macOS的指挥棒:线程分配的艺术
与传统对称多处理(SMP)系统不同,AMP架构要求macOS像一位聪明的指挥家,根据任务需求将线程分配到合适的「乐手」上。macOS通过Grand Central Dispatch(GCD)和服务质量(Quality of Service, QoS)机制实现这一目标。QoS就像任务的优先级标签,决定了线程将被分配到E核心还是P核心。
🎯 最低QoS:后台任务的节能模式
最低QoS(QoS 9)的线程被严格限制在E核心上运行。这些线程通常用于macOS的后台任务,例如Time Machine自动备份、Spotlight索引维护,以及Archive Utility的压缩和解压操作。比如,当你下载一个Xcode的xip格式文件时,解压过程可能耗时较长,因为它被限制在E核心上运行,无法利用P核心的强大性能。
在原始M1芯片中,4个E核心以约1GHz的频率运行QoS 9线程。而在M1 Pro/Max中,由于E簇只有2个核心,macOS会动态调整频率:单个线程时频率为1GHz,多个线程时提升至2.064GHz,以保证性能与原始M1相当,同时保持相似的能耗。某些特殊后台任务(如backupd
)还会受到I/O限制,频率固定在1GHz。
🚀 高QoS:性能优先的灵活调度
高于QoS 9的线程可以被分配到E核心或P核心,具体取决于任务需求和核心可用性。在原始M1上,高QoS线程优先分配到P簇(P0),P核心以约3GHz运行;当线程数超过4个时,E簇(E0)会被调用,E核心以约2GHz运行。而在M1 Pro/Max中,线程分配更复杂:
- 1-4个线程:分配到第一个P簇(P0),频率高达3.228GHz。
- 5-8个线程:第二个P簇(P1)加入,同样以3.228GHz运行。
- 超过8个线程:E簇(E0)的2个核心被调用,频率为2.064GHz。
M1 Ultra遵循类似策略,但由于其有四个P簇(P0-P3),线程会先依次填满P簇,最后才使用E簇。这种策略确保了性能最大化,同时避免不必要的能耗。
🔍 Activity Monitor的窗口:窥探核心的忙碌
Activity Monitor的CPU历史窗口为我们提供了一瞥M1核心的工作状态。以下是不同芯片在负载下的表现:
📊 原始M1:简单而高效

在原始M1芯片上,当运行1-4个高QoS线程时,负载集中在P簇(P0),E簇(E0)保持空闲。随着线程数增加到5-8个,E簇开始分担负载。这种分配模式确保了高性能任务优先利用P核心,而E核心则在需要时提供支持。
📈 M1 Pro:多簇协同

M1 Pro在混合负载下展现了其灵活性。图中显示,E簇(E0)的2个核心承担了大量后台任务(低QoS线程),而P簇(P0)处理高QoS线程。在峰值负载时,第二个P簇(P1)被激活,进一步提升性能。
📉 M1 Ultra:大规模并行

M1 Ultra的CPU历史窗口展示了其五个簇的协同工作。E簇(E0)处理登录初期的后台任务,P簇(P0-P3)则根据负载动态激活。在高峰期,多个P簇同时工作,确保了极高的并行处理能力。
⚡ 特殊场景:单核的独舞
尽管macOS通常在簇内平衡负载,某些场景下线程会被限制在单一核心上。例如:
- 系统启动:在内核初始化之前,所有代码仅在一个E核心上运行。
- macOS更新准备:在M1 Pro/Max上,更新准备阶段的5个线程被限制在P簇(P0)的第一个核心上,显示为100% CPU占用,但无法利用其他核心。
这种异常分配持续约30分钟,凸显了macOS在特定任务中的保守策略。
📉 频率的秘密:性能的隐形推手
Activity Monitor虽然展示了核心的负载情况,但无法显示簇的运行频率,而频率对性能至关重要。例如,一个以100% CPU运行但频率仅为1GHz的簇,其指令完成速率远低于以2.064GHz运行的同等负载簇。当前,获取频率信息的唯一方法是使用powermetrics
命令行工具。例如,E核心在低QoS任务中通常以1GHz运行,而在高QoS任务中可提升至2GHz;P核心则在3GHz至3.228GHz之间切换。
以下是macOS在M1系列芯片中管理核心的总结图:

🌟 M1的未来:下一代芯片的猜想
随着苹果预计在2022年WWDC发布M1系列的继任者(M2系列),业界对新芯片的架构和管理策略充满期待。M2是否会增加核心数量、调整E/P核心比例,或引入新的管理机制?macOS是否会进一步优化线程分配,以适应更复杂的应用场景?这些问题都将在未来揭晓。
M1系列芯片的成功证明了AMP架构的潜力,它不仅提升了Mac的性能和能效,还为未来的计算设备指明了方向。正如一位乐团指挥通过精准的节奏掌控乐曲,macOS通过智能的线程分配让M1芯片的每一颗核心都发挥出最大价值。
参考文献
- Howard Oakley. (2022). How macOS manages M1 CPU cores. Eclectic Light Company. https://eclecticlight.co/2022/04/25/how-macos-manages-m1-cpu-cores/
- Apple Inc. (2020). Apple M1 Chip Technical Overview. https://www.apple.com
- Grand Central Dispatch Documentation. Apple Developer. https://developer.apple.com/documentation/dispatch
- Asahi Linux Project. (2022). Core Management in Asahi Linux. https://asahilinux.org
- Oakley, H. (2021). ✅Understanding Apple Silicon: A Deep Dive. Eclectic Light Company. https://eclecticlight.co