Перейти к содержанию
Русский
Материал FikirPilot

Эмуляция доступа к памяти: насколько сложной она может быть?

Обновлено: 19.09.2026 · 2 мин чтения · 274 слов

Опубликовано: · Новость поступила: · Время обработки: 55 мин

Источник проверен:

Эмуляция доступа к памяти: насколько сложной она может быть?
Крупный план микропроцессора

По словам разработчиков FEX-Emu, эмулировать модель работы компьютерной памяти гораздо сложнее, чем кажется, когда в работу вовлекаются кэши и несколько процессоров. Модель Total Store Ordering в x86 обеспечивает сильные гарантии видимости операций с памятью, тогда как более слабая модель ARM разрешает переупорядочивание ради производительности. Хотя эмуляторы могут компенсировать это с помощью операций acquire/release, затраты возрастают; расширения LRCPC и совместимый с x86 режим TSO в Apple Silicon снижают нагрузку.

Проблему усугубляют невыровненные доступы и атомарные операции. FEX может обнаруживать ошибки выравнивания и добавлять барьеры в транслированный код; операции split-lock при этом могут выполняться в сотни или тысячи раз медленнее обычного, обращаясь к ядру и обработчикам сигналов. Ядра Oryon от Qualcomm и оптимизация Linux от Valve позволяют уменьшить некоторые проблемы.

В памяти write-combined, используемой для записи на GPU, эквиваленты ARM оказываются недостаточными; в худшем случае пропускная способность падает в 800×, из-за чего игры могут работать со скоростью менее 1 FPS. Системы UMA демонстрируют лучшие результаты. Эмуляция заключается не столько в переводе инструкций, сколько в воспроизведении архитектурных предположений.

Почему это важно

Это техническое различие затрудняет одновременное сохранение совместимости и производительности в эмуляторах, запускающих программное обеспечение x86 на оборудовании на базе ARM. Поскольку проблема не ограничивается переводом инструкций процессора, использование нескольких ядер, атомарные операции и доступ к памяти GPU могут давать разные результаты на разном оборудовании. Поэтому результаты начинают зависеть не только от используемых процессора и архитектуры памяти, но и от того, какие оптимизации применяют операционная система и эмулятор; Apple Silicon, Oryon, оптимизации Valve и архитектуры UMA показывают, что это различие можно уменьшить. Открытым остается вопрос о том, для каких рабочих нагрузок этих улучшений будет достаточно и в какой степени можно будет поддерживать дополнительные издержки, необходимые для совместимости.

Источник: Hackaday