Retrospectively Reverse-Engineering Apple's Neural Engine(逆向还原苹果神经引擎)
Retrospectively Reverse-Engineering Apple's Neural Engine(逆向还原苹果神经引擎的完整复盘)
📅 2026-08-10 发布,09-12 登上 HN | 🏷️ 工程 & Agent | ⭐ HN 232分/33评论
🔗 原文:https://eiln.github.io/posts/ane.html
是什么
作者 Eileen Yoon 三年前曾为 Apple M1 的神经引擎(ANE)写过开源 Linux 驱动,随后放弃。在 M5 已把 ANE 核心并入 GPU 之际,这篇 5089 词的长文回头把 M1 ANE 的完整内部架构——计算、数据通路(datapath)、调度器、内存与执行模型——系统性逆向测绘并公开,附带此前的开源驱动项目(github.com/eiln/ane)。
🔍 小白解读
先说几个词
- NPU(神经引擎):芯片里专门做神经网络计算的模块,好比厨房里专门炖汤的砂锅——炖汤又快又省燃气,但只能炖汤。
- 数据流(dataflow):数据在计算单元之间怎么进出、在哪暂存的设计。同样的锅具,食材流转顺序不同,效率天差地别。
- MAC(乘加单元):执行「乘法再加法」的最小计算积木,神经网络所有运算最终都拆成海量乘加。
- CNN / Transformer:两代主流模型。CNN 像流水线质检员(滑动窗口、模式固定、可预测),Transformer 像开圆桌会议(所有 token 两两互相看,访问模式难预测)。
- 自回归解码:大模型一个字一个字往外蹦的生成方式,访问模式因此变得不可预测。
这篇到底在说什么
打个比方:手机芯片里原本有一个「AI 专用小厨房」(ANE),2017 年(A11 时代)按当时主流菜式——CNN 图像处理——定制了灶台动线。作者当年想给这个厨房写开源菜谱(Linux 驱动)让所有人都能用,但发现它的动线太专:只会做定式菜,而后来大模型流行的是完全不同的做菜节奏(Transformer、自回归生成),专用厨房就闲置了——macOS 平时只用它给访达的预览图做升采样。今年 M5 发布,苹果干脆把专用厨房的灶具搬进了大火灶(GPU)里。作者于是回头把 M1 ANE 从 16 个计算核、每核 256 个乘加单元,到调度器与内存系统全部测绘清楚,公开了这份「建筑图纸」,让所有人看清一件事:专用 NPU 的兴衰,本质是对「数据会被可预测地重复使用」这一假设的兴衰。
这跟普通人有什么关系
买芯片时「NPU 算力 XX TOPS」的宣传含金量在下降,GPU 与统一内存能力越来越重要;对想在手机/电脑上部署 AI 的开发者,「专用加速器 vs 通用 GPU」的选型权衡,这篇文章给了一手证据。
为什么值得架构师关注
- 端侧 AI 算力选型的风向标:M5 把 ANE 并入 GPU,说明「为 CNN 时代负载特化的独立 NPU」路线被厂商自己降级;规划端侧推理时不应再默认 NPU 是第一算力。
- 逆向文档揭示了数据流假设如何决定加速器上限:可预测复用(CNN)vs 不可预测访问(自回归解码)——这是自研或选型推理加速器时的核心权衡维度。
- 苹果官方对 ANE 的实际使用程度(Finder 预览升采样)说明,即使苹果这样的软硬一体厂商,专用加速器的软件生态也没养起来:「硬件强不够,工具链必须跟上」的又一实证。
核心内容
- M1 ANE 有 16 个计算核,每核 256 个 MAC 单元;真正的差异化不在乘加本身,而在围绕 MAC 的数据流设计(输入何时进入、在哪驻留、如何移动)。
- ANE 为 2017 年 CNN 负载的「可预测复用」设计;Transformer 尤其是自回归解码打破该假设,是独立 NPU 失宠的根因。
- M5(2025)把 ANE 核心折叠进 GPU 核内:计算核本身对 Transformer 仍可用,但运行在 GPU 的数据流里——作者称之为独立 NPU 的「落幕开端」。
- macOS 对 ANE 的日常使用仅限 Finder 预览图升采样等边角场景;配套的开源驱动仓库 github.com/eiln/ane 一并公开。
- 全文 5089 词,覆盖计算、数据通路、调度器、内存与执行模型的完整测绘。
行动建议
端侧/边缘 AI 选型时,把「NPU 优先」的惯性假设改为「按负载形态评估」;做自研加速卡或推理引擎的团队,值得精读其数据流分析章节,作为「负载假设决定加速器寿命」的案例教材;其他读者了解即可。