Ай Дайджест

Свежая выжимка ml и AI статей - каждый день

От CISC к RISC: Перевод Ассемблерного Кода с Помощью Языковых Моделей

С переходом от традиционных архитектур, таких как x86, к более энергоэффективным и производительным архитектурам, например, ARM, возникает необходимость в эффективном переводе программного обеспечения. Этот процесс осложняется не только разницей в архитектурных парадигмах (CISC для x86 и RISC для ARM), но и обширным наследием программного обеспечения, написанного для x86. В данной статье мы рассмотрим инновационный подход к решению этой проблемы — использование языковых моделей (LLM) для автоматического перевода ассемблерного кода с x86 на ARM.

Основные Концепции

Переход от x86 к ARM

x86 — это архитектура с комплексным набором инструкций (CISC), где инструкции могут выполнять сложные операции и иметь переменную длину. В противоположность ей, ARM использует упрощенный набор инструкций (RISC), где инструкции просты, фиксированной длины и выполняют только базовые операции. Этот переход необходим не только для улучшения энергоэффективности, но и для адаптации к новым требованиям рынка, где ARM становится все более популярным благодаря своей эффективности и масштабируемости.

Проблемы Перевода

Перевод ассемблерного кода между этими архитектурами сталкивается с рядом проблем:

  • Семантическое сохранение: Код должен сохранять свою функциональность после перевода.
  • Оптимизация: Переведенный код должен быть оптимизирован для новой архитектуры.
  • Совместимость: Обеспечение работы существующего программного обеспечения на новой платформе без значительных изменений.

Решение с Использованием LLM

CRT (CISC to RISC Translator) — это легковесный транслятор на основе LLM, который автоматически преобразует x86 ассемблер в ARM ассемблер. CRT использует языковые модели для обучения на примерах пар кода, чтобы научиться переводить инструкции и сохранять семантику программы.

Технология

  1. Обучение Модели: Модель обучается на большом наборе данных, состоящем из пар x86 и ARM кода, компилированных из одинаковых исходных файлов на языке C.

  2. Токенизация: Для улучшения понимания и генерации кода, токенизатор расширяется для включения часто используемых опкодов и имен регистров обеих архитектур.

  3. Перевод: Модель предсказывает последовательность ARM инструкций на основе введенных x86 инструкций, стремясь к минимальному расстоянию Левенштейна и максимальной функциональной корректности.

Результаты

  • Точность Перевода: CRT достиг 79.25% точности перевода с x86 на ARMv5 и 88.68% на RISC-V.
  • Производительность: На аппаратном обеспечении Apple M2, код, переведенный CRT, показал ускорение в 1.73 раза по сравнению с Rosetta 2, а также улучшение энергоэффективности на 1.47% и памяти на 2.41%.

Заключение

CRT демонстрирует, что языковые модели могут быть эффективно использованы для перевода ассемблерного кода между архитектурами CISC и RISC, обеспечивая высокую точность и производительность. Это открывает новые возможности для автоматизации процесса портирования программного обеспечения, что особенно актуально в условиях быстрого развития и изменения аппаратных платформ.