Introduction
Le Moteur Neural d'Apple (ANE) est un accélérateur matriciel à fonction fixe qui équipe les systèmes sur puce d'Apple depuis la classe A11 d'iPhone et d'iPad, ainsi que les puces Mac de la classe M1. Cet article présente une analyse détaillée de l'ANE, basée sur des mesures directes sur du silicium Apple et une analyse statique du runtime privé, du compilateur, du pilote de noyau et du micrologiciel.
Contexte Technique
L'ANE est exposé aux applications uniquement à travers le framework de modèles Core ML. L'article documente le datapath et le roofline qui limitent le débit et la consommation d'énergie du moteur, ainsi que la route d'envoi qui y accède en dessous de Core ML. Il couvre également le compilateur, le format de programme sur disque, le schéma de compression des poids, ainsi que le pilote de noyau, le micrologiciel et le protocole de commande qui se trouvent en dessous.
Analyse et Implications
L'analyse présente les résultats de mesures directes sur les puces M1 et M5, ainsi que des tables de cibles par puce et une matrice d'opérations par appareil. Les revendications sont étiquetées comme mesurées, dérivées de la décompilation ou prédites, et la méthodologie ainsi que les questions ouvertes sont enregistrées. La route directe est appelable à partir de l'espace utilisateur ordinaire, mais reste non documentée, non prise en charge et fragile en termes de version.
Perspective
Il est important de noter que la route directe est destinée à la mesure, à la recherche et au travail sur l'appareil, et non pour le logiciel de navigation. Core ML reste le chemin pris en charge pour le logiciel de navigation. Les résultats de cette analyse pourraient avoir des implications pour les développeurs et les chercheurs qui travaillent sur des applications qui utilisent l'ANE, et pourraient également éclairer les décisions de conception pour les futurs accélérateurs matriciels.