?

Log in

No account? Create an account

Применение систем двоичной трансляции для обеспечения совместимости аппаратных, программных платформ
svoinov

Воинов С.Б.

Научный руководитель: проф. Авдошин С.М.

ЗАО «Интел А/О»,

121614, Москва, ул. Крылатская 17 корпус 4,

тел.: +7(495)641-4500, E-mail: sergey.voinov@intel.com

 

С появлением новых аппаратных платформ возникает проблема обеспечения их совместимости с существующим программным обеспечением (ПО). Проблема совместимости также возникает и с появлением нового ПО. Решение проблемы предполагает возможность запуска существующего ПО на новых платформах и нового ПО на старых платформах. Данная проблема может быть решена несколькими способами:

·         Изменение исходного кода ПО (с его последующей перекомпиляцией) для адаптации его к новой или старой аппаратной платформе.

·         Перекомпиляция исходного кода портируемого ПО без изменения самого исходного кода.

·         Включение в новую аппаратную платформу необходимой поддержки для выполнения старого ПО.

·         Использование системы двоичной трансляции для прямого запуска несовместимого ПО без какого-либо изменения исходного кода или перекомпиляции.

Первые два способа обладают очевидными недостатками: требуется наличие исходного кода ПО, что далеко не всегда возможно. Третий способ предполагает использование существенных аппаратных ресурсов для обеспечения обратной совместимости. Так, например, современные процессоры Intel семейства x86 обеспечивают обратную совместимость со всеми предыдущими моделями процессоров этого семейства (вплоть до Intel 8086), что требует при разработке нового процессора учитывать все особенности старых моделей.

Применение систем двоичной трансляции для решения проблем совместимости является альтернативным вариантом решения, свободным от описанных выше недостатков. Не смотря на то, что двоичная трансляция появилась достаточно давно (в середине 80-х годов 20 века), в настоящее время отсутствуют какие-либо универсальные системы, предназначенные для двоичной трансляции ПО.

Суть двоичной трансляции состоит в анализе двоичного кода исходной платформы и его трансляции в двоичный код целевой платформы (по аналогии с Just-in-time компилятором Java) с точным сохранением семантики кода. Примерами таких систем могут являться:

  • система двоичной трансляции уровня приложений IA32 Execution Layer, применяемая для запуска x86-приложений на платформах Intel Itanium;
  • система двоичной трансляции системы уровня, применяемая в платформах на основе отечественного процессора Эльбрус-3.

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

К недостаткам систем двоичной трансляции можно отнести уменьшение производительности за счёт использования трансляции в процессе работы, а также (в некоторых случаях) наличие дополнительной аппаратной поддержки, хотя и не такой сложной, как это могло быть в случае полностью аппаратного способа решения проблемы совместимости.

Для обеспечения совместимости оптимизированного под новые платформы ПО со старыми платформами также может быть разработана соответствующая система двоичной трансляции (как правило, уровня приложения). В настоящее время в российском отделении компании Intel Corporation ведутся разработки системы, которая позволила бы приложениям, оптимизированным для использования нового расширения команд SIMD, быть использованным на более старых аппаратных платформах без такого расширения.

В докладе более подробно рассматриваются различные проблемы построения систем двоичной трансляции и особенности их применения.