Was ist AArch64? Was Sie über diese CPU-Architektur wissen müssen

Obwohl Sie wahrscheinlich ein Gerät mit einem AArch64-Prozessor verwendet haben, wissen Sie möglicherweise nicht, was das bedeutet. Folgendes müssen Sie wissen:

Es gibt viele CPUs Architekturen da draußen, wobei die größten sind x86 Und ARM. Allerdings ist AArch64 wahrscheinlich unter Ihrem Radar geflogen. Selbst der einigermaßen belesene Technikbegeisterte hat möglicherweise noch nie davon gehört, obwohl es in Millionen von Geräten vorhanden ist. Nun, die Sache ist die, dass AArch64 nicht so sehr mysteriös ist, sondern eher ein sehr verwirrender Fachbegriff. Hier erfahren Sie, was Sie über AArch64 wissen müssen.

AArch64 ist sozusagen ARM64

Quelle: Arm

Kurz gesagt, AArch64 ist der offizielle Name für die 64-Bit-Befehlssatzarchitektur (ISA) von Arm, die mit dem Armv8-A-Update eingeführt wurde. Es bezieht sich fast immer auf AArch64. Es ist nicht genau klar, warum ARM64 häufig anstelle von AArch64 verwendet wird, aber ein Teil der Verwirrung scheint von zwei Stellen herzurühren. Ein Teil davon liegt daran, dass die 64-Bit-Erweiterung von x86 x86-64 ist, daher sollte die 64-Bit-Erweiterung von ARM natürlich ARM64 sein. Apple schien das sicherlich zu glauben und bezeichnete AArch64 bis 2014 als ARM64. Für die meisten Menschen ist „AArch64 ist ARM64“ eine sehr zufriedenstellende Erklärung.

Wenn Sie wirklich technisch werden möchten: AArch64 ist nicht die ISA, sondern die Ausführungsstatus Dadurch können ARM-CPUs den A64-Befehlssatz der ARMv8-ISA verwenden (und nur verwenden), der erstmals mit der Armv8-A-Architektur eingeführt wurde. Wenn das verwirrend klingt, dann deshalb, weil es so ist. Selbst wenn Sie sich mit Computerarchitektur auskennen, kann es schwierig sein, dies zu verstehen, deshalb werde ich es Schritt für Schritt erklären.

Technisch gesehen ist AArch64 also ein Staat, kein ISA, aber das interessiert niemanden, nicht einmal Arm selbst.

ARM ist eine Familie verwandter ISAs, und obwohl unterschiedliche ISAs normalerweise eine Inkompatibilität implizieren, ist das nicht unbedingt der Fall. Verschiedene Versionen der ARM ISA heißen ARMv1, ARMv2 usw., aber diese ISAs enthalten im Wesentlichen Unter-ISAs: A-Profil, M-Profil und R-Profil. Der grundlegende Unterschied zwischen diesen Sub-ISAs besteht in der Mindestanzahl an Anweisungen, die jeder verwendet, wobei das A-Profil am meisten und das M-Profil am wenigsten verwendet. Daher wird die ARM ISA in einzelne Versionen wie ARMv8 unterteilt, und diese Versionen werden dann weiter in verschiedene Implementierungen der ISA unterteilt.

Armv8-A ist die erste A-Profil-Implementierung der ARMv8 ISA, die zwei neue Dinge hinzufügte: AArch32 und AArch64. Diese werden als Zustände oder Modi bezeichnet und ermöglichen ARM-CPUs den Zugriff auf verschiedene Befehlssätze. wobei AArch32 die 32-Bit-Anweisungen A32 und T32 enthält und AArch64 den 64-Bit-A64 enthält Anweisungen. Befindet sich ein Prozessor beispielsweise aktuell im AArch64-Zustand und möchte A32-Anweisungen verwenden, muss er seinen Zustand in AArch32 ändern. Darüber hinaus sind im AArch64-Modus sowohl die 32-Bit- als auch die 64-Bit-Register zugänglich, während im AArch32-Modus nur die 32-Bit-Register nutzbar sind. Das Verwirrendste daran ist, dass alle diese Dinge variabel als ISAs bezeichnet werden und sogar Arm (das Unternehmen, das die ARM-ISA entwickelt) sich daran schuldig gemacht hat.

Aber wenn wir ganz technisch sind, ist es tatsächlich so: Die achte Version der ARM ISA, ARMv8, wurde zuerst mit Armv8-A implementiert, das zwei Zustände namens AArch32 und AArch64 enthält. Wenn sich eine CPU im AArch64-Zustand befindet, kann sie 64-Bit-A64-Anweisungen ausführen. Technisch gesehen ist AArch64 also ein Staat, kein ISA, aber das interessiert niemanden, nicht einmal Arm selbst.

Warum sowohl 32-Bit als auch 64-Bit für ARM wichtig sind

AArch64 ist also eigentlich ziemlich kompliziert und es scheint umständlich, den Status wechseln zu müssen, nur um 32-Bit- und 64-Bit-Anweisungen zu verwenden. Tatsache ist, dass die Unterstützung sowohl für 32-Bit als auch für 64-Bit zu wichtig war, um darauf zu verzichten, also muss es einfach so sein. Im Grunde ging es um zwei große Probleme: die Notwendigkeit, alte 32-Bit-Software zu unterstützen, und das Streben nach modernem Hochleistungsrechnen.

Wenn Arm in seiner ersten 64-Bit-ISA keine native Unterstützung für 32-Bit-Software integriert hätte, hätte es eine Katastrophe werden können, denn einfach ausgedrückt: Niemand möchte Code neu schreiben. Wenn ARMv8 von jedem verlangen würde, neue Software von Grund auf zu schreiben, hätte dies die ISA in eine Todesspirale stürzen können, in der niemand etwas herstellt oder kauft ARMv8-Geräte, weil es an Software mangelt, und dann entwickeln Entwickler, weil es an Benutzern mangelt, keine Apps, bis Arm sie anrufen muss quitt. Daher war die 32-Bit-Unterstützung nicht verhandelbar.

Andererseits war es auch keine Option, kein 64-Bit-Computing zu implementieren. Intel und AMD, die Unternehmen hinter x86, verwendeten für ihre Systeme seit Anfang der 2000er Jahre 64-Bit-Architekturen erstaunliche CPUs, allerdings gab es damals keinen Ruf nach 64-Bit-ARM-Chips, da Telefone diese nicht benötigten. Aber die Erfindung des Smartphones veränderte alles und jeder wollte, dass sein Telefon mehr kann. Die 64-Bit-Unterstützung würde Smartphones nicht nur leistungsfähiger machen, sondern auch die Tür öffnen für Unternehmen, ARM-Chips für Märkte herzustellen, in denen x86 traditionell dominierte, wie Laptops und Server.

Im Grunde ist diese ganze Namensverwirrung darauf zurückzuführen, dass Arm seine Technologie als Reaktion auf sich ändernde Prioritäten modernisieren musste. Vielleicht musste Arm die 64-Bit-Unterstützung nicht auf diese Weise implementieren, aber es tat es, und so entstand AArch64. Obwohl AArch64 kein ISA ist, verwenden die meisten Menschen den Begriff im Guten wie im Schlechten so.