Rosetta (Apple)
Rosetta ist ein Framework von Apple zur transparenten Emulation von Programmen für eine andere, vorher von Apple in den Computern der Mac-Reihe genutzten Prozessorarchitektur. Programme bleiben somit unverändert auf Macs mit Prozessoren einer anderen Architektur unter macOS ausführbar. Der Name ist angelehnt an den Stein von Rosetta, der wesentlich zur Entzifferung der Hieroglyphen beitrug.
Die erste Version von Rosetta war zwischen 2006 und 2011 Bestandteil des Betriebssystems Mac OS X und ermöglichte, für PowerPC-Prozessoren kompilierte Programme unverändert auf x86-Prozessoren auszuführen.
Mit Rosetta 2 ist es auf den Ende 2020 vorgestellten Macs mit M1-ARM-Prozessor unter macOS möglich, Programme auszuführen, die für Intel-x64-Prozessoren kompiliert wurden.
Geschichte
Das Betriebssystem macOS von Apple geht auf OPENSTEP (ursprünglich NeXTStep) zurück. Es hat im Kern eine portable Basis (Mach-Kernel) und lief auf einer Vielzahl unterschiedlicher Architekturen. Nachdem das Betriebssystem Ende 1996 von Apple gekauft wurde, lief es jedoch nur noch auf Apples eigenen Rechnern und somit auf der Architektur der Macintosh-Rechner – 1997 war dies die PowerPC-Architektur, auf die es portiert und optimiert wurde. Der Kern des Betriebssystems wurde als Darwin zusammengefasst und der Quelltext unter einer offenen Lizenz verfügbar gemacht.
Als Apple 2005 aufgrund der unzureichenden Leistung der PowerPC-Prozessoren G4 von Motorola und G5 von IBM schließlich die Entscheidung traf, auf die Intel-x86-Architektur zu wechseln, war das Betriebssystem bereits als x86-Version lauffähig. Seit 2007 läuft ein auf Darwin und macOS basierendes Betriebssystem, iOS, auf der mit dem iPhone eingeführten ARM-Architektur. Die Prozessoren wurden anfangs gemeinsam mit Samsung entwickelt, seit dem Apple A8 von 2014 sind die Prozessoren reine Apple-Produkte. 2020 gab Apple den Schwenk von Intel-Prozessoren zu den hauseigenen ARM-SoCs auch beim Mac bekannt, ein Schritt, der zuvor bereits seit Jahren als Gerücht die Runde machte. Die ARM-SoCs sind seit dem im iPad Pro der 4. Generation von 2020 verbauten A12Z in Leistung und Energieverbrauch den Intel-Prozessoren ebenbürtig. Für Apple war es daher kein großer Aufwand, macOS auf die ARM-Architektur zu portieren, auf der mit iOS eine Variante bereits seit über einem Jahrzehnt seinen Dienst tut.
Rosetta ist in beiden Fällen eine in das Betriebssystem integrierte transparente Emulation, um Anwendungen für die jeweilig vorherige Architektur weiterhin ausführen zu können. Die Programme laufen dabei in ihrer Ausführungsgeschwindigkeit zwar langsamer, sind damit aber in ihrer unveränderten Form weiter nutzbar, obwohl nicht für jede Anwendung volle Kompatibilität garantiert werden kann. Der Emulator ist dabei nur ein Teil der Strategie für den Übergang zu einer anderen Prozessorarchitektur, da die Entwickler von Anwendungen für den Mac angehalten sind, Universal Binaries anzubieten, die nativen Binärcode für jeweils beide Architekturen enthalten. Das Konzept von Universal Binaries stammt noch aus dem NeXTStep-Erbe, wo theoretisch für alle möglichen Architekturen Code in einem einzigen ausführbaren Programm enthalten sein kann.[1]
Rosetta
Rosetta | |
---|---|
Basisdaten | |
Entwickler | Apple Inc., lizenziert von Transitive |
Erscheinungsjahr | 10. Januar 2006 |
Betriebssystem | Mac OS X ↳ 10.4.4–10.4.11/Intel ↳ 10.5–10.5.8/Intel ↳ 10.6–10.6.8 (Intel) |
Kategorie | PowerPC-Binär-Übersetzung |
Lizenz | proprietär |
nicht mehr verfügbar (archiviert: apple.com/de/rosetta) |
Wechsel der Prozessorarchitektur von PowerPC (Prozessoren von IBM und Motorola) auf IA-32 (x86-Prozessoren von Intel):
Hintergründe
Im Jahr 2005 kündigte Apple an, von den seit 1994 eingesetzten, gemeinsam mit IBM und Motorola entwickelten PowerPC-Prozessoren auf x86-Prozessoren von Intel umzusteigen. Neben der völlig anderen Befehlssatzarchitektur besteht ein weiterer wesentlicher Unterschied der Prozessortypen in der Verarbeitung der Byte-Reihenfolge (der PowerPC ist Big-Endian, Intels x86-Prozessoren sind Little-Endian).
Damit bisher entwickelte Software auch auf den neuen Intel-Macs genutzt werden konnte, lizenzierte Apple Software der Firma Transitive Technologies, die schon davor etliche Konvertierungsprogramme für unterschiedliche Prozessoren anbot, und vermarktete die eigene Implementation der QuickTransit genannten Emulationssoftware unter dem Namen Rosetta.[2] Transitive wurde 2008 von IBM übernommen und die Cross-Plattform-Virtualisierungstechnik ging in PowerVM auf.[3]
Gleichzeitig entwickelte Apple die eigenen Entwicklerwerkzeuge weiter und ermöglichte die Entwicklung von Universal Binaries, bei denen der ausführbare Code für mehrere Prozessorarchitekturen in einer einzigen Programmdatei verpackt ist.
Während die Betriebssysteme Mac OS X Tiger (10.4) und Leopard (10.5) sowohl PowerPC- als auch Intel-Macs unterstützten, ist macOS ab Version Snow Leopard (10.6) nur noch für Intel-Macs erhältlich. Seit der Veröffentlichung von Mac OS X Lion (10.7) im Juli 2011 ist Rosetta kein Bestandteil des Betriebssystems mehr; für PowerPC-Prozessoren entwickelte Software kann daher auf aktuellen Macs nicht mehr ausgeführt werden. Universal Binaries sind jedoch grundsätzlich auch auf späteren Versionen von macOS ausführbar, da sie neben dem PowerPC-Binärcode auch jenen für x86-Prozessoren enthalten. Allerdings sind viele Anwendungen dieser Zeit 32-Bit-Programme, somit sind auch die meisten Universal Binaries mit 32-Bit-PowerPC/Intel-Code unter macOS Catalina, das nur noch 64-Bit unterstützt, nicht mehr ausführbar. Doch auch bis macOS Mojave, das noch 32-Bit-Programme unterstützt, sind aufgrund tiefgreifender Änderungen am Betriebssystem alte Anwendungen (inklusive Universal Binaries) nicht immer lauffähig, beispielsweise Microsoft Office 2008. In einigen Fällen gibt es jedoch neuere Versionen sowie Portierungen auf 64-Bit.
Arbeitsweise
Rosetta ist ein sogenannter Dynamic Binary Translator, es läuft also im selben Prozess wie das auszuführende Programm und übersetzt einzelne Codeblöcke erst dann, wenn sie vom Programm aufgerufen werden. Teile des Programms, die nicht ausgeführt werden (zum Beispiel weil der Nutzer eine Funktion des Programms nicht nutzt), werden also auch nicht übersetzt.[4]
Bei der Übersetzung wird der aufgerufene PowerPC-Codeblock zunächst in ein prozessorunabhängiges Zwischenformat übersetzt, woraus anschließend für die Zielarchitektur optimierter Code erzeugt wird. Dieser native Code wird dann auf der Hardware ausgeführt. Vergleichbare Software kommt teils auch ohne die Nutzung eines Zwischenformats aus, dieses wurde von Transitive vermutlich eingeführt, weil deren Software mehrere Quell- und Zielarchitekturen unterstützte.[5]
Im Gegensatz zu einer Emulation, bei der einzelne Anweisungen übersetzt werden, ermöglicht die blockweise Übersetzung von aufeinanderfolgenden Anweisungen ein semantisches Verständnis des zu übersetzenden Codeblocks und somit eine Optimierung des aus dem Zwischenformat erzeugten, nativen Programmcodes.[2] Apple betonte daher selbst, dass keine Emulation stattfindet.[6]
Einschränkungen
Rosetta versteht Programmcode, der für einen PowerPC G3 und G4 geschrieben wurde, und kann den gesamten AltiVec-Befehlssatz übersetzen. Software, die einen G5 voraussetzt, ist dagegen nicht ausführbar, was jedoch nur sehr wenige Programme betrifft. Außerdem verweigert sich Rosetta allen hardwarenahen Funktionen; Kernel-Module oder Treiber für Scanner, Tastaturen und Audiogeräte lassen sich damit beispielsweise nicht übersetzen. Ebenso weisen einige Programme eine schwache Leistung auf;[7] manche Programme sind nicht zu verwenden.[8]
Rosetta 2
Rosetta 2 | |
---|---|
Basisdaten | |
Entwickler | Apple Inc. |
Erscheinungsjahr | 12. November 2020 |
Betriebssystem | macOS ↳ 11.x (ARM64) |
Kategorie | x86-64-Binär-Übersetzung |
Lizenz | proprietär |
Ankündigung |
Wechsel der Prozessorarchitektur von x86-64 („Intel“, da in Macs exklusiv Prozessoren von Intel verbaut wurden) auf ARMv8 (Eigenentwicklung in Lizenz):
Hintergründe
Rosetta 2 ist ein Teil von macOS Big Sur, um bei Apples Übergang von Intel-Prozessoren auf Arm-Prozessoren (Apple Silicon) zu helfen.[9][10] Zusätzlich zur Echtzeitübersetzung, wie schon mit Rosetta, unterstützt Rosetta 2 die Übersetzung des Programmes bei der Installation.[11]
Weblinks
- Software-Kompatibilitätsliste – Nicht vollständig
Einzelnachweise
- Adopting Universal Binaries on Mac OS X. (Nicht mehr online verfügbar.) In: Apple Developer Connection. Apple, Inc., 31. Januar 2006, archiviert vom Original am 17. Oktober 2006 (englisch).
- Lucas Graves: Can Apple Make The Switch? Interview mit Transitive-CEO Bob Wiederhold. In: Wired Magazine. Nr. 8, 2005 (wired.com [abgerufen am 24. Juli 2011]).
- Andreas Beier: IBM kauft Virtualisierungsspezialisten Transitive. In: Heise online. 19. November 2008. Abgerufen am 10. Juli 2020.
- Universal Binary Programming Guidelines. (PDF) Apple, archiviert vom Original am 15. August 2006; abgerufen am 8. Juni 2005 (englisch). Die verwendeten Ausschnitte sind wiedergegeben auf: daringfireball.net
- John Stokes: Thinking about Apple’s Rosetta in light of Transmeta. arstechnica.com, August 2005, abgerufen am 24. Juli 2011 (englisch).
- Rosetta. In: Apple.de. Archiviert vom Original am 21. Dezember 2010; abgerufen am 24. Juli 2011 (englisch).
- vitalyvoloshyn: Apps on Rosetta 2. In: r/mac. 29. November 2020, abgerufen am 24. August 2021.
- Gaming auf einem M1 Mac. In: Apfelpage. 18. August 2021, abgerufen am 24. August 2021.
- Tom Warren: Apple is switching Macs to its own processors starting later this year. 22. Juni 2020, abgerufen am 5. Juli 2020 (englisch).
- Benjamin Mayo: Apple announces Mac architecture transition from Intel to its own ARM chips, offers emulation path. In: 9to5Mac. 22. Juni 2020, abgerufen am 5. Juli 2020 (amerikanisches Englisch).
- Monica Chin: Rosetta 2 is Apple’s key to making the ARM transition less painful. 26. Juni 2020, abgerufen am 5. Juli 2020 (englisch).