Кіріспе

Операциялық жүйе компоненті, басқа бағдарламалық өнімдер немесе "Розетта" деп аталатын жобалар.

Розетта – Apple Inc. компаниясы macOS үшін әзірлеген динамикалық екілік аудармашы, түрлі нұсқаулар жиынтығы архитектуралары арасындағы қолданба үйлесімділігін қамтамасыз ететін қабат. Ол бағдарламалық жасақтаманы автоматты түрде аудару арқылы жаңа жабдыққа көшуге мүмкіндік береді. Атауы – египет иероглифтерін аударуға көмектескен Розетта тасына сілтеме. 2006 жылы Mac OS X Tiger жүйесінде пайда болған Розеттаның алғашқы нұсқасы PowerPC процессорларынан Intel процессорларына Mac-тың көшуінің бір бөлігі болды, PowerPC қолданбаларын Intel процессорлары бар Mac-тарда іске қосуға мүмкіндік берді. 2011 жылы Mac OS X Lion (10.7) шығарылымымен Розетта қолдауы тоқтатылды. 2020 жылы macOS Big Sur құрамы ретінде ұсынылған Розетта 2, Intel процессорларынан Apple кремнийіне көшудің бір бөлігі болып табылады, Intel қолданбаларын Apple кремнийімен жабдықталған Mac-тарда іске қосуға мүмкіндік береді.

Өмірбаян

Macintosh бірнеше түрлі нұсқаулар жиынтығы архитектурасын қолданған процессорларды пайдаланды: Motorola 68000 сериясы, PowerPC, Intel x86 және Apple кремнийіндегі ARM64. Әрбір нұсқаулар жиынтығы архитектурасы өзінің алдыңғысымен үйлесімсіз, сондықтан бұрынғы нұсқаулар жиынтығын келесі архитектурада эмуляциялауға негізделген көшу жоспары қажет болды. Power Macintosh-тың шығуымен Mac 68K эмуляторы System 7.1.2 және одан кейінгі нұсқаларының құрамына кірді. Бұл эмулятор PowerPC мүмкіндіктерін пайдаланады және Mac OS наноядросымен тікелей біріктірілген операциялық жүйенің ең төменгі деңгейлеріне енгізілген. Бұл наноядро PowerPC үзілістерін ұстап алып, оларды 68k үзілістеріне аудара алады (содан кейін қажет болған жағдайда аралас режимге ауысады), сосын үзілістерді өңдеу үшін 68k кодын орындайды. Осының арқасында 68k және PowerPC кодтарын бірдей «қалың» бинарлық файлдың ішінде араластыруға болады.

Розетта 2

2020 жылы Apple Rosetta 2 бағдарламалық қамтамасыз етілуін macOS Big Sur жүйесімен бірге Mac-тың Apple кремнийіне өтуіне көмектесетінін хабарлады. Бұл бағдарламалық қамтамасыз ету x86 64 негізіндегі процессорларда ғана жұмыс істеу үшін құрастырылған көптеген қолданбаларды Apple кремнийінде жұмыс істеу үшін аударуға мүмкіндік береді. Apple кремний Mac-ке Rosetta 2 орнатудың екі жолы бар: терминалды пайдаланып бағдарламаны тікелей орнату немесе x86 64 үшін құрастырылған қолданбаны ашуға тырысу, бұл орнату терезесін ашады. Жұмыс істеп тұрған кезде (JIT) аударманы қолдаудан өзге, Rosetta 2 уақытынан бұрын компиляцияны (AOT) ұсынады, яғни x86 64 коды әмбебап бинарлықсыз қолданба Apple кремний Mac-ке орнатылғанда бір рет толық аударылады. Rosetta 2 өте жоғары бағаланды. Кейбір сынақтарда x86 64 ғана бағдарламалары Intel x86 64 процессоры бар Mac-ке қарағанда Apple M1 SOC-ы бар Mac-те Rosetta 2 арқылы жақсы өнім көрсетті. Rosetta 2 аударма тиімділігінің жоғары деңгейін қамтамасыз етудің басты себептерінің бірі – Apple M1 SOC-та x86 64 жад ретін қолдау. SOC сонымен қатар x86 флагтарын есептеу үшін арнайы нұсқауларды қамтиды. Rosetta 2 көптеген бағдарламалық қамтамасыз етулермен жұмыс істесе де, кейбір бағдарламалық қамтамасыз етулер мүлдем жұмыс істемейді немесе «баяу» деп хабарланады. Алдыңғы нұсқасына ұқсас, Rosetta 2 әдетте пайдаланушының араласуын қажет етпейді. Пайдаланушы x86 64 бағдарламасын бірінші рет іске қосуға тырысқанда, егер ол әлі орнатылмаған болса, macOS оны орнатуды ұсынады. Кейін x86 64 бағдарламаларын іске қосу аударма арқылы автоматты түрде жүзеге асырылады. Сондай-ақ, ARM негізіндегі машинада болса да, Rosetta 2 арқылы x86 64 коды ретінде жұмыс істеуге мәжбүрлеу үшін әмбебап бинарлықты пайдалануға болады. macOS Ventura нұсқасынан бастап Linux-ты қонақ жүйе ретінде пайдаланатын виртуалды машиналарды пайдаланушылар виртуалды машинада Linux үшін құрастырылған x86 64 кодын орындау үшін Rosetta 2-ні пайдалана алады. Rosetta 2 – орындалатын бинарлық файл ретінде жұмыс істейді және оны қонақ жүйеге орнату қажет. Бұл орындалатын файлды үшінші тараптық аппараттық құралдарға орнатудың кейбір мысалдары болды, егер ол кем дегенде ARMv8.2 A нұсқаулар жиынтығын қолдайтын процессорды қамтыса; жад реті туған x86-дан өзгеше болады. Кейбір әзірлеушілер бұл macOS лицензиялық шартында бұзушылық болуы мүмкін екенін атап өтті, себебі орындалатын файл Apple-дің Virtualization шеңберіне енгізілген.