Вы здесь

Фоновая оптимизация в системе динамической двоичной трансляции

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

Технологии программной двоичной трансляции и динамической оптимизации широко применяются в современных программных и аппаратных вычислительных системах [1]. В  частности, основанные на  этих технологиях системы динамической двоичной трансляции  (СДДТ) активно используются для обеспечения совместимости распространенных традиционных  (исходных) и вновь разрабатываемых перспективных   (целевых) архитектур микропроцессоров на уровне исполняемых программных кодов.

СДДТ выполняют трансляцию кодов исходной архитектуры в коды целевой архитектуры небольшими участками по ходу выполнения задачи, при этом процессорное время попеременно отводится под собственно трансляцию и исполнение полученных на выходе двоично-транслированных кодов. Одно из главных требований к любой СДДТ заключается в том, что производительность исполнения двоичных кодов посредством данной технологии на вычислительных системах целевой архитектуры должна быть сравнима или выше производительности их исполнения на системах исходной архитектуры.

Использование оптимизирующего транслятора является одним из основных способов достижения высокой производительности СДДТ, так как позволяет получать максимально эффективный код, полностью использующий возможности новой архитектуры, а также использовать при проведении оптимизационных преобразований информацию (в частности, профильную) о реальном поведении программы, не доступную статическому компилятору.
Однако так как динамическая оптимизация выполняется непосредственно во время исполнения исходных программных кодов, она может быть и источником значительных накладных расходов. Во-первых, совокупное затраченное на оптимизирующую трансляцию время может составлять заметную долю общего времени работы программы и не обязательно будет компенсировано выигрышем, полученным от применения оптимизационных преобразований.
Во-вторых, работа оптимизирующего транслятора может отрицательно сказываться на латентности транслируемого интерактивного приложения или операционной системы в целом. Под латентностью здесь понимается время отклика системы на какие-либо внешние события (в частности, аппаратные прерывания), вызванные подключенными к системе устройствами ввода/вывода. Латентность вычислительной системы как ее способность оперативно реагировать на внешние события является не менее важным свойством, с точки зрения пользователя, подключенного к компьютеру оборудования или другого компьютера, подключенного по сети, чем общая производительность. Этот параметр особенно важен для СДДТ уровня виртуальной машины (ВМ). Такие системы реализуют семантику исходной архитектуры в полном объеме и предназначены для трансляции всей иерархии программного обеспечения вычислительного комплекса – BIOS, операционной системы, приложений, и, как следствие, контролируют всю работу вычислительного комплекса, фактически являясь частью микропроцессора.
Один из способов снижения издержек, связанных с динамической оптимизацией, заключается в том, чтобы выполнять ее одновременно с исполнением исходных кодов, используя для этого не занятые вычислительные ресурсы системы. Он находит применение в системах динамической трансляции и оптимизации различного назначения [2, 8]. В рамках данной работы мы будем называть этот подход фоновой оптимизацией (в отличие от последовательной оптимизации, когда исполнение прерывается до конца оптимизации).
Непосредственными результатами данной работы являются:

  • реализация многопоточной инфраструктуры в системе динамической двоичной трансляции уровня виртуальной машины;
  • реализация фоновой оптимизации в однопроцессорной системе посредством разделения процессорного времени между потоками исполнения двоично-транслируемых кодов и оптимизирующей трансляции;
  • реализация фоновой оптимизации в двух- процессорной системе посредством выноса оптимизирующей трансляции на свободное микропроцессорное ядро.

Отметим, что два представленных подхода к реализации фоновой оптимизации преследуют различные цели. Первая схема позволяет исключить задержки, создаваемые работой оптимизирующего транслятора, на фоне ограниченных вычислительных ресурсов.
Метод, основанный на использовании для динамической оптимизации дополнительного микропроцессорного ядра, помимо решения вышеупомянутой проблемы позволяет повысить производительность двоичной трансляции в целом. Такой подход особенно актуален на фоне все более широкого распространения многоядерных микропроцессоров и многопроцессорных систем.
Представленные в работе схемы фоновой оптимизации были реализованы в СДДТ уровня виртуальной машины LIntel, обеспечивающей полную двоичную совместимость микропроцессора архитектуры Эльбрус [9, 10] с архитектурой Intel IA-32.

Подробнее... Скачать файл 

Содержание:

1. Введение

2. LINTEL

2.1. Адаптивная динамическая двоичная трансляция

2.2. Обработка асинхронных прерываний

3. Фоновая оптимизация

3.1. Потоки исполнения и оптимизации

3.2. Фоновая оптимизация в системе с одним ядром

3.3. Фоновая оптимизация в системе с двумя ядрами

3.4. Обсуждение и развитие

4. Заключение

Список литературы