Платим блогерам
Блоги
hilnur20012
Apple встроила в свои процессоры Apple Silicon поддержку инструкции, которая была разработана для процессора Intel 8080, дебютировавшего еще в 1974 году

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

Apple Rosetta 2 является частью macOS, которая позволяет приложениям, написанным для процессоров Intel, работать на компьютерах Mac на базе Apple Silicon, и это работает довольно хорошо. Назван в честь Розеттского камня, который позволил египтологам начать расшифровку древней системы иероглифического письма в 1820-х годах. Rosetta был такой же загадочный, но, возможно, начал раскрывать свои секреты. В своем блоге австралийский исследователь безопасности Дугалл Джонсон раскрывает недокументированное расширение, обсуждая, почему Rosetta 2 такой быстрый. 

Секретное расширение, по-видимому, изменяет способ хранения процессором четности и настройки флагов из приложения, чтобы обеспечить более точную эмуляцию. Историю продолжает веб-разработчик и энтузиаст ретро-вычислений Блейк Паттерсон, который объясняет это с помощью постов Джонсона на Mastodon.

Все это можно проследить до Intel 8080 1974 года, который был вторым чипом компании. Этот 8-битный микропроцессор особым образом обрабатывал свои флаги четности, используя их для указания, следует ли переносить числа в двоично-десятичной операции, и это сохранилось до современных чипов x64, хотя и почти никогда не используется современными приложениями.

Архитектура Arm, используемая Apple Silicon, не имеет отношения к x64 и не имеет такой функциональности, поэтому ее нужно было эмулировать. В противном случае некоторое программное обеспечение Intel не работало бы на новых компьютерах Mac, а выполнение той же операции без обработки флагов 8080 потребовало бы в пять раз больше инструкций и замедлило бы работу Mac. 

Rosetta 2 перекомпилирует двоичное приложение, предназначенное для процессора Intel, при запуске, а не обеспечивает эмуляцию в реальном времени. Он использует биты 26 и 27 регистра флагов Arm, чтобы эмулировать их обработку 8080, чтобы избежать необходимости каждый раз проходить долгий путь.

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

Это захватывающий взгляд на работу чрезвычайно умного и производительного программного обеспечения. Оригинальный Rosetta был представлен в Mac OS X 10.4 Tiger и удален в 10.7 Lion. Rosetta 2 скорее всего также исчезнет, как только Apple Silicon исполнится еще несколько поколений.

Источник: tomshardware.com
+
Написать комментарий (0)

Популярные новости

Популярные статьи

Сейчас обсуждают