¿Qué es el motor neuronal?
El Neural Engine forma parte de los procesadores de Apple, por ejemplo el Apple Silicon M1 que has etiquetado.
El troquel M1 tiene muchas piezas que componen el procesador. Incluye una CPU, una GPU, el motor neuronal, cachés, RAM y otras piezas más pequeñas.
Cada una de esas partes se compone a su vez de otras más pequeñas:
En realidad, la CPU consta de varios núcleos de rendimiento y varios núcleos de eficiencia. La GPU consta de una serie de módulos, que pueden considerarse núcleos de GPU. Y el motor neuronal consta de una serie de núcleos NPU (unidades de procesamiento neuronal).
¿Es el motor neuronal un componente similar a la CPU y la GPU?
En términos generales, se puede pensar en los núcleos de la CPU, los núcleos de la GPU y los núcleos de la NPU como una especie de "caja negra" que recibe órdenes (instrucciones, o como quiera llamárselas), se comunica con el resto del procesador y los periféricos (como, por ejemplo, cargar/almacenar datos en la RAM o comunicarse a través de buses) y realiza algún tipo de cálculo.
El Apple M1 está estructurado con una arquitectura de memoria unificada, lo que significa que todos estos subsistemas acceden a la misma memoria principal. No existe una "memoria dirigida por matriz" especial para la GPU como indicas en tu pregunta.
El motor neuronal está diseñado específicamente para realizar los tipos de cálculo que se necesitan al ejecutar modelos de aprendizaje automático. Por lo general, esto significa optimizar las multiplicaciones de matrices muy rápidas.
¿Tiene un conjunto de instrucciones o lenguajes de programación exclusivos?
El motor neuronal tiene un "conjunto de instrucciones" único (aunque no forma parte del conjunto de instrucciones ARM). De forma similar a los programas para la CPU y la GPU, dispone de un compilador que transforma los programas (modelos) escritos en un lenguaje de alto nivel en comandos y estructuras de datos que puede entender el Motor Neuronal.
Desde un punto de vista práctico, los desarrolladores normales interactuarán con el motor neuronal utilizando CoreML. Esto significa que esencialmente un único "lenguaje" específico para sus modelos.
¿Puede el motor neuronal hacer algo mejor que la CPU o la GPU?
El motor neuronal no es estrictamente "mejor" que la CPU o la GPU para realizar este tipo de cálculos. Se pueden ejecutar modelos de aprendizaje automático en la CPU, en la GPU y en el motor neuronal, por lo que este último no abre un nuevo tipo de cálculo imposible sin él.
La razón principal del motor neuronal en comparación con tener núcleos de CPU adicionales es que el motor neuronal está orientado específicamente a unos pocos tipos concretos de cálculos comunes en los modelos de aprendizaje automático. Esto significa que normalmente realiza estos cálculos utilizando menos energía eléctrica que si se hubiera utilizado un núcleo de CPU (o visto de otro modo, se consigue un mayor rendimiento con la misma cantidad de energía eléctrica). Además, es posible que la CPU y la GPU estén haciendo otra cosa mientras el motor neuronal hace su trabajo. Esto se traduce en una mayor duración de la batería, menos ruido del ventilador, menor latencia percibida, etc.
¿Hay competidores en el mercado?
Existen muchas otras unidades de procesamiento neuronal en el mercado. No es algo exclusivo de Apple. Por ejemplo, Google tiene su TPU, Nvidia tiene la NVDLA, Amazon tiene Inferentia, etc.
Sin embargo, Apple se encuentra quizá en una situación única, ya que la inmensa mayoría de los usuarios de sus sistemas operativos (iOS, iPadOS y MacOS) disponen de su Neural Engine (en alguna versión) y ejecutan software compatible. Esto significa que pueden aprovecharlo agresivamente en sus aplicaciones y servicios en segundo plano.