Что такое Rosetta 2? Пояснение про «магическое» программное обеспечение Apple (0 78378 rosetta 7 xl)

Переход Apple от процессоров Intel к собственным процессорам на базе архитектуры Arm вызвал вопросы о совместимости существующего программного обеспечения, разработанного для процессоров Intel, с новыми устройствами. Rosetta 2 быстро развеяла опасения первых пользователей Apple Silicon, но что же такое Rosetta 2 и как она работает? Почему она так важна?

Что такое Rosetta 2 и как она работает?

Rosetta 2 — это динамический двоичный транслятор. Чтобы лучше понять этот термин, разберем его по частям. «Динамический» означает, что Rosetta 2 работает в момент исполнения программы, а не заранее. Это отличие от статического транслятора, который пытается преобразовать весь код программы до запуска. Статическая трансляция может быть неэффективной или даже невозможной по ряду причин, так как многие современные приложения используют JIT-компиляцию (Just-in-Time), когда код генерируется непосредственно во время работы программы.

Кроме того, приложения часто используют библиотеки или внешние модули, которые загружаются только в определенные моменты выполнения программы, что также требует динамического перевода. Rosetta 2 переводит код «на лету», обеспечивая его совместимость с процессорами Apple Silicon.

Как работает процесс трансляции?

Программа, которую вы запускаете на своем Mac, представляет собой двоичный файл — готовую программу, которую может выполнить процессор. Она называется двоичной, потому что состоит из машинного кода — набора инструкций, которые процессор может исполнять напрямую. Эти инструкции, написанные на высокоуровневом языке программирования (например, C или Python), компилируются в машинный код, предназначенный для конкретного типа процессора.

Ранее используемые в Mac процессоры Intel поддерживали набор инструкций x86_64, тогда как процессоры Apple Silicon используют набор инструкций Arm. Инструкции для каждого из этих процессоров различаются, поэтому код, написанный для одного типа процессора, не может быть выполнен другим без перевода. Arm и Intel имеют не только разные инструкции, но и отличаются подходами к их исполнению. Arm использует архитектуру RISC (Reduced Instruction Set Computer), в то время как Intel — CISC (Complex Instruction Set Computer). Эти архитектуры выполняют инструкции по-разному, и Rosetta 2 выступает переводчиком, обеспечивающим совместимость.

Зачем нам нужна Rosetta 2?

Когда вы пытаетесь запустить приложение, написанное для Intel, Rosetta 2 динамически переводит его двоичный код в команды, понятные процессору Apple Silicon. Это сложный процесс, включающий не только простую замену инструкций, но и оптимизацию работы приложения в режиме реального времени, чтобы оно запускалось плавно и эффективно.

Несмотря на высокие возможности Rosetta 2, бинарный код, который она генерирует для Arm, обычно не такой эффективный, как код, написанный специально для Apple Silicon. Поэтому разработчикам рекомендуется создавать нативные версии своих приложений, чтобы максимально использовать возможности новых процессоров.

Как использовать Rosetta 2?

Пользоваться Rosetta 2 очень просто. При первом запуске программы, требующей Rosetta 2, вам будет предложено установить этот переводчик. Первая загрузка программы может занять некоторое время, поскольку происходит первоначальная трансляция кода. В дальнейшем приложение будет запускаться быстрее, почти так же, как и нативные приложения Apple Silicon.

Недостатки Rosetta 2

Хотя Rosetta 2 делает невозможное, она не является идеальным решением и не предназначена для постоянного использования. Она служит временной мерой для обеспечения совместимости, пока разработчики создают нативные версии своих приложений. Переведенные приложения никогда не будут работать так же быстро, как нативные, особенно это заметно в программах, требующих высокой производительности, например, в играх или видеоредакторах.

Некоторые программы могут не работать корректно после трансляции, так как Rosetta 2 не поддерживает все типы инструкций. Например, она не переводит команды AVX, AVX2 и AVX512, а также не работает с приложениями, использующими расширения ядра, или с виртуальными машинами, эмулирующими x86_64 платформы. Несмотря на эти ограничения, Rosetta 2 делает впечатляющую работу, обеспечивая плавный переход к новым технологиям Apple.

Заключение

Rosetta 2 — это важный элемент в переходе Apple на собственные процессоры. Она обеспечивает совместимость и позволяет пользователям наслаждаться своим привычным программным обеспечением на новых устройствах. Однако со временем разработчики должны перейти на создание нативных приложений, чтобы в полной мере использовать возможности Apple Silicon. Rosetta 2 — это временный мост между двумя архитектурами, который позволяет пользователям комфортно адаптироваться к новому поколению Mac.

Подпишись на ITZine в Дзен Новостях
Читай ITZine в Telegram
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии