Что такое Rosetta 2? Объяснение «волшебного» программного обеспечения совместимости Apple

    0
    5


    Ключевые выводы

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



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

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

    Rosetta 2 — это то, что известно как динамический двоичный транслятори мы немного разберем это, чтобы стало понятнее.


    Во-первых, это “динамичный” потому что Rosetta 2 выполняет свою работу во время выполнения. То есть, он начинает работать, когда вы фактически запускаете программу, в отличие от статического транслятора, который пытается сотворить свою магию со всем кодом программы заранее, а не динамически по мере необходимости. Превентивный перевод всего кода с использованием статического подхода не всегда является лучшим, поскольку он не только занимает много времени, но и статический транслятор может просто посчитать это невозможным из-за ряда факторов.

    Например, многие современные приложения используют JIT (Just-in-Time) компиляцию, где код генерируется во время выполнения. Поскольку этот код не существует, пока приложение не запущено, его необходимо динамически транслировать.

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


    А “двоичный” это готовая программа, которая может быть выполнена, т. е. она может быть запущена процессором. Она называется двоичной, потому что внутри нее находится весь сырой двоичный машинный код (все единицы и нули). Это примечательно, потому что программное обеспечение не пишется людьми в сыром двоичном коде. Вместо этого оно написано на языке программирования высокого уровня, который чем-то напоминает человеческий язык, такой как английский. Такие языки, как C или Python, являются примерами, но существует бесчисленное множество языков программирования.

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


    Набор инструкций процессора — это список инструкций в двоичном или машинном коде, которые говорят ему выполнять определенные задачи. Инструкция может быть чем-то вроде «умножить x на y» или «переместить информацию из этой части памяти в ту часть памяти». Оба процессора Intel и Arm могут выполнять одну и ту же работу, но их инструкции различаются. Таким образом, если процессор Arm попытается выполнить код, предназначенный для процессора Intel, он либо не поймет инструкцию, либо может выполнить другую операцию, поскольку один и тот же двоичный код представляет разные инструкции на каждом процессоре.


    Дело не только в том, что конкретные инструкции различаются, но и в том, как эти процессоры выполняют инструкции, они сильно отличаются. «R» в аббревиатуре Arm — это сокращение от «RISC» (Reduced Instruction Set Computer), в отличие от архитектуры «CISC» (Complex Instruction Set Computer), используемой процессорами Intel. Процессоры RISC выполняют короткие инструкции за каждый такт, в то время как процессоры CISC могут выполнять одну сложную инструкцию за несколько тактов.

    Вот почему нам нужна Rosetta 2 как “переводчик” для преодоления разрыва между этими двумя различными языками процессора.


    Как работает Розетта 2

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

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


    Связанный

    Что такое RISC-V?

    RISC-V — один из новейших претендентов на рынке процессоров, но что это такое и как он соотносится с конкурентами?

    Как использовать Розетту 2

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


    У Rosetta 2 есть свои недостатки

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


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

    Я лично никогда с этим не сталкивался, но стоит отметить, что хотя Rosetta 2 высокосовместима и эффективна, некоторые приложения просто не будут работать правильно после перевода. Согласно документации разработчиков Apple, есть некоторые типы инструкций, которые Rosetta 2 не будет трогать, такие как AVX, AVX2 и AVX512. Она также не будет работать с приложениями Mac на базе Intel, которые используют расширения ядра, где программному обеспечению разрешено загружать код в ядро ​​операционной системы. «Приложения виртуальной машины, которые виртуализируют компьютерные платформы x86_64» также не подходят для Rosetta 2.


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

    Предыдущая статьяЭто самые обсуждаемые
    Следующая статьяSamsung Galaxy Подробности зарядки S24 FE вас не впечатлят
    Петр Григорин
    Интересуется софтом, разработкой и использование новых приложений, технология искусственного интеллекта. Этот писатель - человек с техническими знаниями, который увлечен разработкой программного обеспечения и использованием новых приложений. Его особенно интересуют технологии искусственного интеллекта и то, как они могут быть использованы для улучшения различных отраслей промышленности и повседневной жизни. Обладая прочной основой в области информатики и острым взглядом на инновации, этот писатель обязательно привнесет ценные идеи и соображения в любую дискуссию на эти темы. Пишет ли он о последних открытиях в области ИИ или исследует потенциал новых программных инструментов, его работа обязательно будет увлекательной и заставляющей задуматься.