一个被放弃的逆向工程的回归
开发者Eiln在2023年曾暂停了对Apple Neural Engine(ANE)的Linux驱动逆向工程工作,原因是发现ANE的架构过于专用化,无法构建一个通用的加速器平台。随着苹果在2025年发布的M5芯片中将ANE核心折叠进GPU核心,Eiln认为这标志着独立NPU时代的终结,决定重新完成对M1芯片ANE的完整逆向工程——这次不是为了实用性,而是为了完整记录其内部架构设计。
ANE首次出现在2017年的A11 Bionic芯片中,是苹果为设备端机器学习推理设计的专用硬件加速器。它的设计初衷是高效运行卷积神经网络(CNN),特别是图像处理任务。在M1芯片中,ANE包含16个计算核心,每个核心是一个大规模并行的乘累加(MAC)单元阵列,专门优化用于执行密集的张量归约运算。
CNN时代的设计哲学
ANE的核心设计优势不在于MAC单元本身,而在于围绕MAC的数据流架构。CNN卷积层的数据访问模式具有高度可预测的重用特性:输入激活窗口和卷积核权重在空间维度上有规律地滑动,数据可以在计算单元之间高效复用。ANE的数据流设计精确匹配了这一模式,使得它能在手机级别的功耗预算内实现高效的CNN推理。
然而,Transformer模型的核心运算——注意力机制中的查询-键向量点积——具有完全不同的数据访问模式。自回归解码过程中,每个新生成的token都需要访问完整的键值缓存,数据重用模式不如CNN规则,且内存带宽需求随序列长度线性增长。ANE的架构假设在Transformer时代被根本性地打破。
架构错位的技术细节
Eiln的逆向工程揭示了ANE在执行模型层面的几个关键设计决策。ANE的16个计算核心通过专用的数据通路连接,这些通路为CNN的空间数据重用模式优化。当尝试运行Transformer工作负载时,ANE的内存子系统成为瓶颈——它的片上缓存和外部内存带宽配置是为CNN的规则访问模式设计的,无法有效支持Transformer的不规则键值缓存访问。
这也解释了为什么macOS只在Finder的图像预览生成等少数场景中常规使用ANE。苹果自己的Core ML框架在大多数情况下会将Transformer推理任务调度到GPU而非ANE,因为GPU的更通用的内存架构更适合这类工作负载。M5芯片将ANE核心集成进GPU核心,可以看作是苹果对这一架构错位的正式承认。
对端侧AI推理的启示
ANE的故事为端侧AI硬件设计提供了一个重要的历史教训。2017年苹果设计ANE时,CNN是移动设备上最重要的神经网络架构,为其设计专用硬件是合理的工程决策。但AI模型架构的快速演进意味着专用硬件的生命周期可能远短于预期——从CNN到Transformer的转变只用了大约五年时间。
Eiln的完整逆向工程文档为研究AI硬件设计演化的工程师和学者提供了珍贵的技术资料。它详细记录了苹果在ANE中做出的每一个架构假设,以及这些假设如何在AI范式转移中变得过时。对于正在设计下一代端侧AI加速器的工程师来说,ANE的经验表明:在模型架构仍在快速演化的时代,过度专用化的硬件设计可能是一种昂贵的赌博。