Apple: Fast 50 Jahre alte Befehlssatzerweiterung wird von neuen Chips unterstützt
Apples neue und selbst entwickelte Chips unterstützen eine beinahe 50 Jahre alte Befehlssatzerweiterung, die ursprünglich für Intels 8080 vorgesehen war. Durch die Nutzung von Rosetta 2, dem Teil von macOS, der für die Emulation von Software, die für die x86-Architektur entwickelt wurde, und nun auf ARM laufen muss, soll die Performance deutlich ansteigen. Lesen Sie dazu im Folgenden mehr.
Nach jahrelanger Nutzung von Intel-Prozessoren hat Apple diesen mittlerweile den Rücken zugekehrt und setzt auf selbst entwickelte Chips, die durch eine hohe Effizienz punkten können. Betrachtet man allerdings die Architektur dieser Prozessoren, so wird klar, dass sie sich in grundlegenden Punkten von ihren Intel-Vorgängern unterscheiden. So setzen Apples Eigenkreationen auf eine ARM-Architektur anstatt der x86-Architektur der AMD- und Intel-Prozessoren. Das ist prinzipiell auch nicht problematisch, wird es jedoch, wenn bestimmte Software auf Befehlssatzerweiterungen setzt, die in einer Architektur nicht inkludiert sind.
Dann müsste eine Emulation erfolgen, die deutlich langsamer abliefe, als es bei der Nutzung der Befehlssatzerweiterung der Fall wäre bzw. die Software könnte nicht genutzt werden. Das möchten die Hersteller natürlich tunlichst verhindern, was wohl auch den Grund für die Inklusion von Rosetta 2 in Apples macOS ist. Der Name geht dabei auf den Stein von Rosette zurück, der zur Dechiffrierung der Hieroglyphen des alten Ägyptens genutzt wurde.
Rosetta 2 ermöglicht es den neuen Apple-Produkten, Software zu nutzen, die für Intel-Prozessoren geschrieben wurde, und setzt dazu anscheinend auf eine uralte Befehlssatzerweiterung, die bereits für Intels 8080 entwickelt wurde. Dieser Chip war der zweite Prozessor des damals noch jungen Unternehmens und kam 1974 auf den Markt. Die Befehlssatzerweiterung ist undokumentiert und bisher nicht benannt. Sie sorgt dafür, dass die Art und Weise verändert wird, wie der Prozessor die Parität speichert und die Flags aus einer Anwendung anpasst, um eine genauere Emulation zu gewährleisten.
Im Falle von Apples Prozessoren kompiliert Rosetta 2 eine binäre Anwendung beim Starten, anstatt eine Echtzeit-Emulation zu bieten. Gleichzeitig ist softwareseitig dabei nicht klar, ob das eigentlich nötig wäre oder nicht. Dazu werden Bit 26 und 27 des ARM-Registers genutzt. Um die ARM-Spezifikation nicht zu verletzen, die eine permanente solche Vorgehensweise nicht vorsieht, erfolgt die Nutzung nur, wenn der Teil von macOS mit Rosetta 2 im Einsatz ist, unter VMs ist das beispielsweise nicht der Fall.
Quelle: Tom's Hardware

bei RISC Prozessoren immer ne Schwachstelle da meist die Software für
den Prozessor angepaßt werden mußte
Etwas was bei CISC Prozessoren nicht so das Problem war da sie Abwärts-
kompatibel sind.
Verstanden habe ich nach dem Lesen der Quelle folgendes:
Das Flag Handling bei z.B. Übertrag im 8080 war eher speziell, im Endeffekt machen das aber alle direkten Nachfolger im x86 Bereich immer noch so. Dieses Vorgehen ist auch dokumentiert und bekannt, keine Befehlssatzerweiterung.
Apple hat nun in seinem Silizium eine undokumentierte(!) Befehlssatzerweiterung eingebaut die bei Aufruf dafür sorgt dass der Prozessor immer die notwendigen Flags in zwei Registern generiert die nach ARM spec aber eigentlich general purpose Register sind. Dieses undokumentierte Verhalten wäre ein Problem für alle Programme die nicht Rosetta sind (schließlich denken sie ja die Register sind frei verwendbar), deswegen wird das Verhalten über die Erweiterung eben nur dann aktiviert wenn exklusiv Rosetta läuft.
So weit richtig?
Zur Form des Artikels:
Es wäre schön, wenn man den ersten Absatz der Beiträge nicht immer zwei mal verwenden würde.