Rosetta (Apple)

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Rosetta 2)
Zur Navigation springen Zur Suche springen

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 die PowerPC-Architektur kompilierte Programme unverändert auf der x86-Architektur (32- und 64-Bit: IA-32 und x64) von „Intel-Macs“ 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 die Intel-x64-Architektur kompiliert wurden.

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 ihren 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
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 die 32-Bit- und 64-Bit-x86-Architektur (i386 und x86-64), anfangs zur Unterscheidung auch „Intel-Macs“ bezeichnet (Macs mit x86-Prozessoren von Intel):

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, die x86-Architektur ist 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 die x86-Architektur enthalten. Allerdings sind viele Anwendungen dieser Zeit 32-Bit-Programme („i386“ für 32-Bit-x86 bzw. IA-32), somit sind auch die meisten Universal Binaries mit 32-Bit-PowerPC/x86-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 („x86-64“ für 64-Bit-x86 bzw. x64).

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

[Bearbeiten | Quelltext bearbeiten]

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
Basisdaten

Entwickler Apple Inc.
Erscheinungsjahr 12. November 2020
Betriebssystem macOS
↳ 11.x (ARM64)
Kategorie x86-64-Binär-Übersetzung
Lizenz proprietär
Ankündigung

Rosetta 2 ist ein Teil von macOS ab Big Sur, um bei Apples Übergang von Intel-x86-64-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]

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Adopting Universal Binaries on Mac OS X. In: Apple Developer Connection. Apple, Inc., 31. Januar 2006, archiviert vom Original (nicht mehr online verfügbar) am 17. Oktober 2006; (englisch).
  2. a b 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]).
  3. Andreas Beier: IBM kauft Virtualisierungsspezialisten Transitive. In: Heise online. 19. November 2008. Abgerufen am 10. Juli 2020.
  4. 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
  5. John Stokes: Thinking about Apple’s Rosetta in light of Transmeta. arstechnica.com, August 2005, abgerufen am 24. Juli 2011 (englisch).
  6. Rosetta. In: Apple.de. Archiviert vom Original am 21. Dezember 2010; abgerufen am 24. Juli 2011 (englisch).
  7. vitalyvoloshyn: Apps on Rosetta 2. In: r/mac. 29. November 2020, abgerufen am 24. August 2021.
  8. Gaming auf einem M1 Mac. In: Apfelpage. 18. August 2021, abgerufen am 24. August 2021.
  9. Tom Warren: Apple is switching Macs to its own processors starting later this year. 22. Juni 2020, abgerufen am 5. Juli 2020 (englisch).
  10. 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).
  11. Monica Chin: Rosetta 2 is Apple’s key to making the ARM transition less painful. 26. Juni 2020, abgerufen am 5. Juli 2020 (englisch).