Вы здесь

Система двоичной трансляции

Двоичная трансляция (бинарная рекомпиляция) — технология преобразования машинных кодов из одной системы команд в другую, как то из системы команд x86 в систему команд Эльбрус, без использования исходных текстов программы и в реальном времени, то есть «на лету», прозрачно с точки зрения пользователя.

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

  1. транслятор уровня системы (Lintel), позволяющий запускать целые операционные системы, такие как Windows или Linux;
  2. транслятор уровня приложений (RTC), позволяющий запускать прикладные программы для x86 Linux внутри операционной системы в машинных кодах Эльбрус, такой как ОС Эльбрус.

Первый вариант похож на запуск виртуальной машины (с той лишь разницей, что транслятор с гостевой системой занимают весь компьютер монопольно), а второй — на запуск контейнера в изолированном окружении chroot. Если проводить параллели с популярным эмулятором Qemu, то Lintel — это аналог qemu-system-x86_64, а RTC — это qemu-x86_64.

Благодаря тому, что в архитектуру Эльбрус изначально заложена аппаратная поддержка трансляции, накладные расходы получаются небольшими (в отличие от того же Qemu, который отслеживает выполнение гостевых кодов чисто программно и потому медленно). Более того, транслятор адаптивно оптимизирует получающийся машинный код: «холодные» участки, которые встречаются однократно, обрабатываются наиболее простым способом, а «горячие», которые выполняются снова и снова, подвергаются раз за разом всё более тщательному анализу и синтезу. Как итог — высокая скорость работы гостевых программ, сравнимая со скоростью изначально скомпилированных для архитектуры Эльбрус.

Система двоичной трансляции настолько эффективна, что гостевые программы могут работать даже быстрее, чем их аналоги в машинных кодах Эльбрус, — когда речь идёт о языковых интерпретаторах и трансляторах: например, таких как среда исполнения Java или .Net (Mono), интерпретатор JavaScript в веб-браузере (Firefox). Это закономерно, поскольку оптимизирующие кодогенераторы в них совершенствуются широким сообществом разработчиков, тогда как фирменные разработки для платформы Эльбрус — сравнительно небольшим коллективом.

Однако высокое быстродействие и обеспечиваемый уровень совместимости с существующим программным обеспечением не снимают угроз информационной безопасности, присущих архитектуре x86. Чтобы в полной мере пользоваться преимуществами аппаратной защиты, положенной в основу архитектуры Эльбрус, необходимо применять программы в машинных кодах Эльбрус.

Другие особенности и ограничения изложены в документации.