Rosetta — это динамический двоичный транслятор, разработанный Apple Inc. для macOS , уровень совместимости приложений между различными архитектурами набора команд . Это позволяет перейти на более новое оборудование за счет автоматического перевода программного обеспечения. Название является отсылкой к Розеттскому камню , артефакту, с помощью которого можно было переводить египетские иероглифы . [2]
Первая версия Rosetta, представленная в 2006 году в Mac OS X Tiger , была частью перехода Mac от процессоров PowerPC к процессорам Intel , позволяя приложениям PowerPC работать на компьютерах Mac на базе Intel . Поддержка Rosetta была прекращена с выпуском Mac OS X Lion (10.7) в 2011 году.
Rosetta 2, представленная в 2020 году как компонент macOS Big Sur , является частью перехода Mac от процессоров Intel к процессорам Apple , позволяя приложениям Intel работать на компьютерах Mac на базе процессоров Apple . [3]
Macintosh использовал процессоры с несколькими различными архитектурами набора команд : серия Motorola 68000 , PowerPC , Intel x86 и ARM64 в процессорах Apple . Каждая архитектура набора команд несовместима со своей предшественницей, что требует плана перехода, основанного на программном уровне, для эмуляции предыдущего набора команд на последующем.
С выпуском Power Macintosh эмулятор Mac 68K стал частью системы 7.1.2 и более поздних версий. Этот эмулятор использует функции PowerPC и встроен в самые низкие уровни операционной системы, интегрирован с наноядром Mac OS . Это означает, что наноядро способно перехватывать прерывания PowerPC, преобразовывать их в прерывания 68k (затем, при необходимости, переключать смешанный режим), а затем выполнять код 68k для обработки прерываний. Это позволяет размещать код 68k и PowerPC в одном двоичном формате .
Apple выпустила Rosetta в 2006 году после перехода Mac на процессоры Intel с PowerPC. Он был встроен в Mac OS X v10.4.4 «Tiger», версию, которая была выпущена с первыми компьютерами Mac на базе Intel , и позволяет многим приложениям PowerPC работать на компьютерах Mac на базе Intel без изменений. Rosetta основана на технологии QuickTransit . [4] Он не имеет графического пользовательского интерфейса и запускается по мере необходимости без уведомления пользователя, что побудило Apple описать Rosetta как «самое удивительное программное обеспечение, которое вы никогда не увидите». [5] Rosetta опционально устанавливается в Mac OS X v10.6 «Snow Leopard». [6] Rosetta не включена и не поддерживается в Mac OS X Lion (10.7) или более поздней версии, поэтому она не может запускать приложения PowerPC. [6]
Из-за больших архитектурных различий между процессорами Intel и PowerPC Rosetta работает на более высоком уровне, чем эмулятор 68000, как программа пользовательского уровня , которая может только перехватывать и эмулировать код пользовательского уровня. Он транслирует инструкции G3 , G4 и AltiVec , но не инструкции G5 . Хотя большая часть коммерческого программного обеспечения для компьютеров Mac на базе PowerPC была совместима с этими требованиями (системы G4 все еще широко использовались в то время), любые приложения, которые полагались на инструкции, специфичные для G5, должны были быть модифицированы их разработчиками для работы на поддерживаемых Rosetta процессорах Intel. на базе Mac. Apple сообщила, что приложения с интенсивным взаимодействием с пользователем, но низкими вычислительными потребностями (например, текстовые процессоры ) лучше всего подходят для использования с Rosetta, а приложения с высокими вычислительными потребностями (например, игры, AutoCAD или Photoshop ) — нет. [7] Существующие ранее версии PowerPC приложений для медиапроизводства Apple «Pro» (таких как Final Cut Pro , Motion, Aperture и Logic Pro) не поддерживаются Rosetta и требуют «перекрестного обновления» [8] до универсального двоичного файла. версия для работы на компьютерах Mac на базе Intel с поддержкой Rosetta.
Rosetta также не поддерживает следующее: [9]
В 2020 году Apple объявила, что Rosetta 2 будет поставляться в комплекте с macOS Big Sur , чтобы помочь Mac в переходе на Apple Silicon . Программное обеспечение позволяет транслировать многие приложения, скомпилированные исключительно для выполнения на процессорах x86-64 , для выполнения на процессорах Apple. [3] [10]
Установить Rosetta 2 на Apple Silicon Mac можно двумя способами: либо с помощью Терминала для прямой установки программы, либо путем попытки открыть приложение, скомпилированное для x86-64, которое откроет окно установки.
В дополнение к поддержке трансляции «точно в срок» (JIT), Rosetta 2 предлагает предварительную компиляцию (AOT), при которой код x86-64 полностью транслируется только один раз, когда на компьютере устанавливается приложение без универсального двоичного файла. Apple, кремниевый Mac. [11]
Производительность Rosetta 2 получила высокую оценку. [12] [13] В некоторых тестах программы только для x86-64 работали лучше под Rosetta 2 на Mac с процессором Apple M1 SOC, чем изначально на Mac с процессором Intel x86-64. Одной из ключевых причин, почему Rosetta 2 обеспечивает такой высокий уровень эффективности трансляции, является поддержка порядка памяти x86-64 в процессоре Apple M1 SOC. [14] В SOC также есть специальные инструкции для вычисления флагов x86. [15]
Хотя Rosetta 2 работает с большинством программного обеспечения, некоторые программы не работают вообще [16] или считаются «медленными». [17]
Как и в первой версии, Rosetta 2 обычно не требует вмешательства пользователя. Когда пользователь впервые пытается запустить приложение только для x86-64, macOS предлагает ему установить Rosetta 2, если она еще не доступна. Последующие запуски программ x86-64 будут выполняться посредством трансляции автоматически. Также существует возможность заставить универсальный двоичный файл запускаться как код x86-64 через Rosetta 2, даже на машине на базе ARM. [18]
Начиная с macOS Ventura , пользователи, использующие виртуальные машины с Linux в качестве гостевой операционной системы, могут использовать Rosetta 2 для запуска кода x86-64, скомпилированного для Linux, [19] на виртуальной машине. Rosetta 2 работает как двоичный файл времени выполнения, который необходимо установить в гостевой операционной системе. Были случаи [20] , когда разработчики устанавливали этот двоичный файл времени выполнения на стороннее оборудование при условии, что оно включает в себя ЦП , поддерживающий как минимум набор инструкций ARMv8.2-A ; порядок памяти будет отличаться от родного x86. Некоторые разработчики отметили, что это может нарушить лицензионные соглашения macOS, поскольку среда выполнения включена [21] в структуру виртуализации Apple.
Он переводит приложения при их установке, поэтому они могут запускаться немедленно и мгновенно реагировать. Rosetta 2 также может транслировать код «на лету», когда это необходимо.
Расширения для манипуляции флагами ARM... Секретное расширение Apple...