Entérate sobre el secreto del coprocesador de Apple M1
Lo ultimo de tecnología de Apple el poder del procesador

El coprocesador secreto de Apple M1
El desarrollador Dougall Johnson pudo descubrir haciendo ingeniería inversa de un poderoso coprocesador secreto AMX dentro del chip M1: el coprocesador Apple Matrix.
La historia sobre el coprocesador Apple Matrix (AMX) ya se ha publicado. Pero eso no está bien dicho de una manera amigable para los principiantes. A continuación eso es lo que voy a hacer aquí. La historia que te trae está oculta en términos técnicos pesados, sin tratarte como un idiota.
Para contar esta historia, necesitamos comprender los conceptos básicos, como ¿qué es un coprocesador? ¿Qué es una matriz? ¿Por qué preocuparse por todo esto?
Más importante aún, ¿por qué Apple no habló sobre este coprocesador en sus diapositivas? ¿Por qué obviamente es un secreto? Si ya conoce el mecanismo neuronal dentro del M1 System-on-Chip (SoC), es posible que no sepa por qué el coprocesador Matrix (AMX) de Apple es diferente.
Antes de hacer una gran pregunta, permítame presentarle los fundamentos de matrices y coprocesadores.
Nuevas tecnologías
-
¿Qué es una matrices realmente?
Una matriz es básicamente una tabla de números. Si ha usado una tabla como Microsoft Excel, básicamente está usando algo muy similar a una matriz. Esto quiere decir la principal diferencia es que este tipo de tabla numérica contiene matemáticamente una larga lista de operaciones compatibles y comportamientos específicos. Como puede ver aquí, las matrices pueden ser de diferentes estilos. Una matriz con tales filas se conoce comúnmente como vector de fila. Cuando una columna lo es, se denomina vector de columna.
Podemos sumar, restar, escalar y múltiples matrices. Es muy fácil. Simplemente agregue cada elemento individualmente. La multiplicación es un poco complicada. Estoy mostrando aquí solo una situación simple.
¿Por qué nos debemos que preocupan por las matrices?
La razón por la que las matrices son importantes es porque a menudo se usan en las siguientes áreas:
- Procesamiento de imágenes
- Aprendizaje automático
- Reconocimiento de voz y escritura a mano
- Reconocimiento facial
- compresión
- Multimedia: audio y video
Especialmente en los últimos años, el aprendizaje automático ha si muy popular. El simple hecho de agregar más núcleos a la CPU no hace que esto funcione lo suficientemente rápido, porque en realidad es un requisito muy exigente. Realmente necesitas hardware dedicado. Durante muchos años, las tareas comunes, como navegar por Internet, escribir correos electrónicos, procesar textos y hojas de cálculo, se realizaron con la suficiente rapidez. Realmente necesitamos mejorar las capacidades de procesamiento para tareas especiales.
Apple tiene la mayoría de los transistores en cada chip que se utilizan para fabricar diferentes tipos de hardware. Puede agregar más núcleos de CPU, pero esto solo acelera las tareas regulares que ya se están ejecutando lo suficientemente rápido. Entonces decidieron gastar transistores para hacer hardware especial para el procesamiento de imágenes, decodificación de video y aprendizaje automático. Utilizando más hardware dedicado es un coprocesador y un acelerador.
-
¿Cuál es la diferencia entre el coprocesador matricial de Apple y el motor neuronal?
Teniendo en cuenta que si has leído sobre el motor neural, sabrás que también realiza operaciones matriciales para realizar tareas de aprendizaje automático. ¿Por qué necesitamos un coprocesador de matrices? ¿O son realmente lo mismo? ¿Estoy confundido? No, permítanme aclarar la diferencia entre el coprocesador matricial de Apple y el motor neuronal, y explicar por qué necesitamos ambos.
Aquí es donde el coprocesador es superior al acelerador. El coprocesador se encuentra detrás y monitorea el flujo de instrucciones de código de máquina alimentadas desde la memoria (o más específicamente, la caché) a la CPU. Haga que los coprocesadores reaccionen a las instrucciones específicas que desean procesar. Al mismo tiempo, la CPU casi ha ignorado estas instrucciones o ha hecho que el coprocesador sea más fácil de procesar.
De esto aprendimos que las instrucciones ejecutadas por el coprocesador se pueden insertar en código regular. Esto es diferente de la GPU, por ejemplo. Cuando haya completado la programación de la GPU, sabrá que los programas de sombreado se almacenan en búferes de memoria separados y que estos programas de sombreado deben pasarse explícitamente a la GPU. No puede insertar instrucciones específicas de GPU en código normal. Entonces, para cargas de trabajo de procesamiento matricial más pequeñas, AMX es mejor que Neural Engine.
¿Cuáles es el engaño oculto que posee? Debe definir instrucciones en la arquitectura de instrucciones del microprocesador (ISA). Por lo tanto, cuando se usa un coprocesador y cuando se usa un acelerador, debe estar estrechamente integrado con la CPU.
El creador de ARM Instruction Set Architecture (ISA) se ha negado durante mucho tiempo a agregar instrucciones personalizadas a su ISA .Esto quiere decir que estos son uno de los beneficios de RISC-V
Debido a la presión de los clientes, ARM hizo concesiones en 2019 y anunció que permitiría la expansión.Las instrucciones de montaje estándar se incluyen en las nuevas instrucciones. Para evitar la fragmentación del software y mantener un entorno de desarrollo de software coherente, Arm espera que los clientes utilicen instrucciones personalizadas principalmente en lugares conocidos como funciones de biblioteca.
En otras palabras puede explicar por qué la instrucción AMX no se describe en la documentación oficial. ARM quiere que Apple mantenga este tipo de instrucciones en una biblioteca suministrada por el cliente (en este caso, Apple).
-
¿Cuál es la diferencia entre el coprocesador matricial y el motor vectorial SIMD?
Debido que es fácil confundir cosas como el procesador matricial del motor vectorial SIMD con cosas en la mayoría de los procesadores modernos de hoy (incluidos los procesadores ARM). Esto quiere decir que SIMD significa varias instrucciones para instrucciones individuales.
Cuando necesita realizar la misma operación en varios proyectos, SIMD es una forma de obtener un mayor rendimiento. Esto está estrechamente relacionado con las operaciones matriciales. De hecho, las instrucciones SIMD (como las instrucciones ARM o Intel x86 SSE o AVX Neon) se utilizan comúnmente para acelerar la multiplicación de matrices.
A pesar de que, el motor vectorial SIMD es parte del corazón del microprocesador. Como ALU (Unidad Aritmética Lógica) y FPU (Unidad de Punto Flotante), todas son parte de la CPU. Realmente hay un decodificador que indica las instrucciones dentro del microprocesador, que seleccionará una instrucción y determinará la unidad funcional a activar (caja gris).
Por el contrario, el coprocesador está ubicado fuera del núcleo del microprocesador. En realidad, el primer Intel 8087 fue un chip físicamente independiente diseñado para acelerar los cálculos de coma flotante.
Ahora puede que se pregunte por qué alguien querría complicar el diseño de la CPU con un chip tan separado, y el chip debe detectar los datos que fluyen desde la memoria a la CPU para ver si algo es una instrucción flotante.
La razón es simple: el procesador 8086 original en las primeras computadoras contenía 29,000 transistores. Sin embargo, 8085 con 45.000 transistores es mucho más complicado. Es realmente difícil usar tantos transistores. Combinar estos dos chips en un solo chip se vuelve muy difícil y costoso.
Pero con la mejora de la tecnología de fabricación, no es un problema colocar la unidad de punto de fluidez (FPU) en el procesador. Por lo tanto, el FPU reemplaza al procesador de punto de flotante.
No sé por qué AMX no es solo parte del núcleo Firestorm en el M1. En cualquier caso, están todos en el mismo molde de silicio. Solo puedo hacer algunas conjeturas. Como coprocesador, puede ser más fácil para el procesador funcionar en paralelo. Apple también espera excluir los componentes ARM no estándar de su núcleo de CPU ARM.
-
¿Por qué AMX es realmentes un secreto?
¿Cómo sabemos si AMX no está descrito en el documento oficial? Gracias al excelente trabajo del desarrollador Dougall Johnson, quien realizó ingeniería inversa de M1 para descubrir el coprocesador. Para operaciones matemáticas relacionadas con matrices, Apple ofrece una biblioteca o marco especial, p. Ej. B. Accelerate, que consiste en:
- vImage: procesamiento de imágenes de alto nivel, p. ej. B. Conversión entre formatos, procesamiento de imágenes.
- BLAS: Un estándar de la industria para el álgebra lineal (lo llamamos matemáticas para procesar matrices y vectores).
- BNNS: se utiliza para la ejecución y el entrenamiento de redes neuronales.
- vDSP: procesamiento de señales digitales. Transformada de Fourier, convolución. Estas son operaciones matemáticas importantes en el procesamiento de imágenes o, de hecho, cualquier señal que contenga audio.
- LAPACK: como funciones avanzadas de álgebra lineal para resolver ecuaciones lineales.
Dougall Johnson sabía que estas bibliotecas utilizarían el coprocesador AMX para acelerar los cálculos. Así que escribió algunos programas especiales para analizar y observar cómo esos programas encontraban instrucciones especiales no grabadas del código de máquina AMX.
Pero, ¿por qué Apple no registra estos archivos y nos permite usar estas instrucciones directamente? Como se mencionó anteriormente, ARM Ltd. Por que evite esto. Si las instrucciones personalizadas se utilizan con frecuencia, puede paralizar el ecosistema ARM.
Pero lo que es más importante, esto es una ventaja para Apple. Si solo permite que su biblioteca use estas instrucciones especiales, Apple se reserva el derecho de cambiar fundamentalmente el funcionamiento del hardware en el futuro. Pueden eliminar o agregar instrucciones AMX. O pueden dejar que el motor neuronal haga el trabajo. De cualquier manera, facilitan la vida a los desarrolladores. Los desarrolladores solo necesitan usar el marco Accelerate y pueden ignorar cómo Apple acelera específicamente los cálculos de matrices.
Este es uno de los grandes beneficios de tener que integrar Apple de forma vertical. Al controlar el hardware y el software, pueden realizar estas técnicas. Entonces, la siguiente pregunta es ¿qué importancia tiene? En términos de rendimiento y funcionalidad, ¿cuáles son los beneficios de Apple?
-
¿Cuáles son las ventajas del coprocesador Apple Matrix?
Nod Labs es una empresa que interactúa, es inteligente y percibe sobre las máquinas. Los cálculos matriciales rápidos son, por supuesto, su interés. Escribió una publicación de blog muy técnica sobre los puntos de referencia de AMX: Comparación de rendimiento Matmul M1 de Apple: AMX2 y NEON.
Comparan el rendimiento del uso de declaraciones AMX y Neon para un código similar. Las instrucciones de neón cumplen oficialmente con ARM. La luz de neón es una especie de instrucción SIMD.
Lo que Nod Labs descubrió es que al usar AMX, pueden obtener el doble de rendimiento que el manual de la matriz Neon. Esto no significa que AMX pueda hacer todo el trabajo, pero al menos para el aprendizaje automático y los tipos de computadoras de alto rendimiento (HPC), podemos esperar que AMX se destaque de la competencia.
Resumiendo todo
El coprocesador Apple Matrix parece una pieza formidable de hardware que coloca al procesador ARM de Apple por delante del aprendizaje automático y las tareas relacionadas con HPC. Una investigación más profunda nos dará información más completa y puedo actualizar esta historia con más detalle en el futuro.
-
Más noticia de última hora a continuación
Te invito ahora para que estés mejor informado de las nuevas noticias más importante del mundo, aquí abajo 👇 estoy 100% seguro que será de ¡Interés!