科技Bestblogs·Hacker News··AI 生成
回顾性逆向工程苹果神经引擎
作者对 M1 芯片的苹果神经引擎(ANE)进行了深度逆向工程,详细披露了其 16 核心计算阵列、分段线性查找表激活函数实现、任务调度器及描述符格式等底层设计。文章核心结论是,ANE 高度定制化的数据流架构使其主要适用于 CNN 时代的可预测复用模式,对通用加速器用途有限。M5 芯片将 ANE 核心集成到 GPU 中,被作者视作独立 NPU 时代终结的标志,反映了从 CNN 向 Transformer 模型技术路线的转变。适合对芯片架构、NPU 设计或苹果硬件有技术背景的读者。原文 ↗原文 ↗
核心观点
- ▍苹果神经引擎(ANE)是一个高度特化、架构固执的加速器,主要用于 CNN 时代的可预测数据复用模式,作为通用加速器实用性有限。
- ▍M5 芯片将 ANE 核心集成到 GPU 中,标志着独立 NPU 架构终结,反映了 AI 工作负载从 CNN 向 Transformer 的转变,以及处理重心向 GPU 的转移。
- 01ANE 包含 16 个并行计算核心,每个核心有 256 条 MAC 通道,排列在乘法器-加法器-累加器数据通路中,累加器在 2^15 处饱和。
- 02非线性激活函数通过一个 33 项分段线性查找表(LUT)实现 tanh,ReLU 和恒等激活使用模式 0/1 且无表,线性缩放/偏置被折叠到卷积权重中,共享同一插值硬件。
- 03驱动程序通过将任务描述符流写入内存并触发 TM_PUSH 来提交工作,TM_PUSH 选择八个任务队列之一,每个队列持有两个乒乓描述符槽和一个 32 项的 BAR 表。
- 04通过一个 1x1 卷积的任务描述符(TD)的十六进制转储,展示了 EON、LogEvents、DebugEvents、RBase、WBase、KBase、tileH、ActiveNE 和地址寄存器等编码字段。
- 05作者在代码中尝试让 ANE 支持 Transformer 工作负载,发现当数据流式传输时,同一 MAC 阵列可以支持,但其设计并非为此优化。
反方 / 局限
- — 作者承认 ANE 的设计并非完全错误,其在特定 CNN 工作负载上非常高效,足以支撑在手机上运行,且通过合适的数据编排仍能支持 Transformer。
- — M5 将 ANE 集成到 GPU 的决策虽然是技术路线转向的结果,但作者认为这同时带来了能效和延迟上的潜在收益,并非纯粹的否定。
前置背景
技术原理
平行视角
未来推演
延伸追问