AMX, der verborgene Coprozessor des Apple M1
(medium.com)Apple Matrix Coprocessor
-
Ein dedizierter Prozessor für Matrizen, der bei der Vorstellung des M1 überhaupt nicht erwähnt wurde
-
Matrizen werden häufig für Bildverarbeitung, Machine Learning, Sprach-/Handschrifterkennung, Gesichtserkennung, Komprimierung sowie Audio-/Video-Medienverarbeitung verwendet
-
Macht das nicht die Neural Engine? Worin unterscheidet sie sich von der Neural Engine?
→ GPU oder Neural Engine sind Beschleuniger
→ Es ist ineffizient, wenn die CPU arbeiten muss, um den von den Beschleunigern genutzten Speicherbereich zu füllen
→ In diesem Fall beobachtet sie die Instruktionen (spy) und der Coprozessor übernimmt diese Arbeit stattdessen
→ Um das zu nutzen, muss ein eigener Befehlssatz definiert werden
→ ARM hatte es lange abgelehnt, benutzerdefinierte Instruktionen aufzunehmen, bietet aber seit 2019 mögliche Erweiterungen an
→ Das dürfte vermutlich der Grund sein, warum die AMX-Instruktionen nicht in der offiziellen Dokumentation auftauchen
- Worin unterscheidet sich das dann von der in ARM enthaltenen SIMD Vector Engine?
→ SIMD: Single Instruction Multiple Data
→ Eine Methode, hohe Leistung zu erzielen, wenn dieselbe Operation auf mehrere Daten gleichzeitig ausgeführt wird
→ Sie steht im Zusammenhang mit Matrixoperationen
→ SIMD ist jedoch wie ALU und FPU in die CPU integriert, während ein Coprozessor extern ist
→ Der frühere Intel 8087 (FPU) hatte sogar mehr Transistoren als der 8086, weshalb es damals schwierig war, beides zusammen unterzubringen. Mit dem technischen Fortschritt stieg die Zahl der Transistoren, die FPU wurde in die CPU integriert, und solche externen Lösungen verschwanden
- Warum AMX nicht in den Firestorm-Kern integriert wurde, ist nicht eindeutig
→ Vermutlich war es einfacher, es separat zu platzieren, damit es parallel zur CPU arbeiten kann,
→ und aus Apples Sicht wollte man vielleicht alles, was nicht dem ARM-Standard entspricht, außerhalb halten.
- Warum wurde AMX dann verborgen?
→ AMX taucht nicht in der offiziellen Dokumentation auf – wie hat man dann davon erfahren?
→ Dougal Johnson fand es durch Reverse Engineering heraus
→ Apple bietet über das Matrix-Framework Accelerate verschiedene Funktionen an
⇨ vImage: hochstufige Bildverarbeitung, Formatkonvertierung und Bildmanipulation
⇨ BLAS: lineare Algebra (Matrix- und Vektoroperationen)
⇨ BNNS: neuronale Netze und Training
⇨ vDSP: digitale Signalverarbeitung wie Fourier-Transformationen; mathematische Operationen für Bild- oder Audioverarbeitung
⇨ LAPACK: hochstufige Funktionen der linearen Algebra, lineare Gleichungen usw.
→ Diese Accelerate-Bibliothek beschleunigt Berechnungen mithilfe von AMX
→ Hätte man die Instruktionen selbst offengelegt, wäre das ARM-Ökosystem fragmentiert worden (das wollen weder ARM noch Apple)
→ Apple legt das nicht offen, sondern öffnet es über Frameworks, sodass hohe Leistung geboten wird und der Befehlssatz jederzeit geändert werden kann
⇨ Möglich ist das, weil Apple Hardware und Software gleichzeitig kontrolliert
⇨ Entwickler profitieren über Accelerate auch von späteren Verbesserungen, solange sie nur damit arbeiten
- Was sind die Vorteile des Apple Matrix Coprocessor?
→ Laut einem Vergleich von Nod Labs mit NEON, dem standardisierten SIMD-Befehlssatz von ARMv8.6, ist AMX mehr als doppelt so schnell
→ Das heißt nicht, dass AMX in allem überlegen ist, aber zumindest bei Machine Learning oder High Performance Computing (HPC) hat AMX die Nase vorn
2 Kommentare
OpenCL ist verschwunden, und abgesehen von der Metal-Beschleunigung wurde Accelerate nicht besonders stark hervorgehoben,
aber die Bibliotheken wurden Jahr für Jahr erweitert, und es überrascht mich, dass dafür nun ein dedizierter Coprozessor für die Hardwarebeschleunigung eingebaut wurde.
Dies ist ein Folgeartikel des Ingenieurs, der die beiden folgenden Beiträge geschrieben hat. Ich empfehle, sie zusammen zu lesen.
→ Erklärung auf YouTube anhören: https://youtu.be/71LlixEBK0o
→ Erklärung auf YouTube anhören: https://youtu.be/F5sIQZvlJc8