Darum ist Rosetta 2 so schnell

Hallo und herzlich willkommen zu einem neuen Beitrag auf meinem Blog,

Vor ziemlich genau zwei Jahren stellte Apple mit dem MacBook Air Late 2020 und dem MacBook Pro Late 2020 seine beiden ersten Mac-Modelle mit Applem Silicon vor. Dabei bedruckte nicht nur die Performance bei Software, die nativ für ARM kompiliert wurde, sondern auch bei Software, die Intels X86-Befehlssatz verwendet wurde. Doch warum ist das so? Ein interessanter Blogartikel von Dougall Johnson gibt spannende Einblicke.

Echtzeitübersetzung von x86 in ARM-Code dank Rosetta 2

Der grund für die reibungslose Performanc liegt in Rosetta 2 begründet. Dieses Tool verwendet Apple, um x86-Anwendungen nach dem ersten Start in Echtzeit in ARM-Code zu übersetzen. Was so einfach klingt, ist in der Tat ein eine Meisterleistung der Ingenieure, wie Dougall Johnson in einem ausführlichen Blogeintrag dokumentiert. Die Grundlage für die Geschwindigkeit legt Apple dadurch, dass es sich bei der „Notlösung“ für Intel-Apps bekanntermaßen nicht um einen reinen x86-Emulator handelt. Das in macOS enthaltene Tool übersetzt den ursprünglichen Code lediglich einmal in ARM-Instruktionen, und zwar vor dem ersten Start einer entsprechenden App. Dabei ist es bemerkenswert, dass Rosetta 2 auch Aufrufe und Sprunganweisungen berücksichtigt. Nur wenn diese während der Laufzeit eines Programms unerwartet auf die Mitte einer x86-Instruktion verweisen, kommt während der Ausführung ein zusätzlicher Just-in-Time-Compiler zum Einsatz (JIT).

Rosetta 2 sorgt dank Optimierungen für zusätzliche Performance

Das ist aber noch nicht alles, Apple implementiert für Rosetta 2 zusätzliche Optimierungen. Unter anderem kommt ein spezielles RAM-Layout, bei dem ein übersetzter Binärcode hinter den noch im Original vorliegenden Teilen platziert wird. Johnson zufolge ermöglicht dies direkte Aufrufe der Runtime. Darüber hinaus unterstützt Apples Tool die in modernen Prozessoren, also auch in den M-Chips vorhandene „return address prediction“ und schreibt die x86-Instruktionen „CALL“ und „RET“ in die entsprechenden ARM-Anweisungen namens „BL“ und „RET“ um. Außerdem nutzt Rosetta 2 die „flag-manipulation extensions“ von ARM-Chips, um mit den Unterschieden zum Verhalten von Intel-CPUs effizient umgehen zu können. Weitere „Tricks“ setzt Apple im Zusammenhang mit dem Handling von Fließkommaoperationen sowie bei der Nutzung einer in den M-Prozessoren verwendeten Technik namens „total store ordering“ ein.

-> MacBook Pro 14″ 2021 kaufen

Eine Optimierungen sind von Apples Siete hingegen nicht genau dokumentiert.  Apple hat die hauseigenen SoCs zudem mit einer undokumentierten Erweiterung ausgestattet, welche die Umsetzung bestimmter Instruktionen und Register im Zusammenhang mit Additionen und Subtraktionen beschleunigt. Dem Entwickler zufolge will Apple Probleme bei der Übersetzung von x86-Anweisungen in ARM-Code mit einem Hardwareansatz angehen. Das sorgt in Summe dafür, dass sich Rosetta 2 so shcnell anfühlt und man im Alltag keine Performance-Einbußen bemerkt, wenn man noch intelbasierte Software öffnet.

Was sagt Ihr dazu? Wie zufrieden seid Ihr mit Rosetta 2? Schreibt mir Euer Feedback in die nachfolgenden Kommentare

Macht´s gut und bis zum nächsten Mal hier auf dem appletechnikblog, Euer Patrick a.k.a. Meister des Apfels

Einmalig
Monatlich
Jährlich

Spendiere mir einen Kaffee und unterstütze damit meinen Blog und mich bei der Arbeit

Monatlich spenden

Jährlich spenden

Wähle einen Betrag aus

$5.00
$15.00
$100.00
$5.00
$15.00
$100.00
$5.00
$15.00
$100.00

Oder gib einen individuellen Betrag ein

$

Wir wissen deine Spende sehr zu schätzen.

Wir wissen deine Spende sehr zu schätzen.

Wir wissen deine Spende sehr zu schätzen.

SpendenMonatlich spendenJährlich spenden

Kommentar verfassen

Betrieben von WordPress | Theme: Baskerville 2 von Anders Noren.

Nach oben ↑

appletechnikblog
%d Bloggern gefällt das: