Сегодня от надежности функционирования хранилища данных с именами клиентов, поставщиков или результатов дорогостоящих экспериментов может зависеть судьба компаний. Действительно, все, что на сегодняшний день "накопило человечество", долж но быть не только надежно сохранено, но и открыто этому самому человечеству, в частности, через Internet. Какие при этом применяются аппаратные платформы и решения представителям этого человечества должно быть далеко безразлично - подавай самую свежую, актуальную и адекватную запросу информацию и все. Однако аппаратный вопрос совсем не безразличен поставщикам рабочих станций, серверов, мэйнфрей-мов и суперкомпьютеров - всех их заботит проблема обеспечения преемственности и работоспособности используемых приложений на новых аппаратных решениях.
Иногда бывает так, что код давно и устойчиво работающего приложения утерян или недоступен, или уже нет квалифицированных программистов, способных его поддерживать. Не секрет, что именно для поддержки таких приложений специально холят и лелеют старые архитектуры. Однако все труднее становится находить давно не выпускаемые запчасти, бегать в поисках списанных систем. Как максимально безболезненно осуществить переход пользователя на новую платформу, чтобы внешне он ничего не заметил, а ощутил бы только ускорение от работы и забыл бы про всякие резервные копирования да остановки компьютеров на профилактические работы?
Есть такое решение и имя ему - двоичная трансляция, о которой и пойдет речь в данном выпуске журнала.
Суть двоичная трансляции - обеспечение совместимости исполняемых кодов программ, первоначально созданных и скомпилированных, например для PA-RISC или PowerPC для выполнения на архитектуре, имеющей совсем другую систему команд, например, IA-64. При этом неважно, идет ли речь о более современной и эффективной архитектуре, или осуществляется переход на равнозначные или даже менее интеллектуальные процессоры, как это происходит сегодня с портативными устройствами.
Сама технология двоичной трансляции имеет давнюю историю - первые работы относятся к системе HP 3000 - предшественнице компьютеров на базе PA-RISC. Именно тогда, в 1987 году впервые был выполнен перенос существующих программ на принципиально новую архитектуру. Потом была компания Tandem и корпорация Digital Equipment, специалисты которой проделали гигантскую работу по переносу на Alpha кодов программ, написанных для VAX/VMS, MIPS/Irix и SPARC/Unix. Примерно такую же дея-тельность провела Apple при переносе программ с Motorola 68000 на Power-PC и, наконец, сегодня опять HP делает тоже самое для IA-64, а завтра Transmeta, объявившая о создании принципиально новой архитектуры, одновременно анонсировала и технологию, позволяющую выполнять все приложения для х86 на своих процессорах.
В этом выпуске мы публикуем ряд статей, отражающих точки зрения ведущих специалистов, работающих на основных поставщиков аппаратно-программных платформ. Точки зрения на технологии переноса кода существующих приложений на другие платформы: эмуляции, статической и динамической трансляции. Речь пойдет о динамическом трансляторе от HP и технологии от IBM, используемой для адаптации приложений к работе на новых версиях PowerPC. Читатели узнают о том, как были преодолены недостатки традиционной эмуляции, которая обычно приводит к уменьшению производительности в 20 - 30 раз, однако, за счет сохранения кода после оптимизации и более высокого быстродействия новой платформы можно выполнить результирующий код быстрее исходного.
Согласно технологии динамической трансляции от HP код программы помещается в память и оптимизируется для выполнения на архитектуре LA-64, причем только в первый раз это отнимает некоторое время процессора. Операционная система, работающая на IA-64, автоматически распознает двоичный код от RISC и вызывает динамический транслятор без вмешательства пользователя. Новый код работает быстрее даже с учетом перекомпиляции "на лету" - причина этого в распараллеливании, предсказании переходов, увеличенном числе регистров. Кроме этого, немалый вклад дает профилирование - выделение наиболее используемых кусков кода и их оптимизация. Все это дает возможность спланировать поэтапный процесс перехода на новую архитектуру - часть приложений остается на RISC, часть работает на LA-64.
Отличительные черты современных микропроцессоров - высокая частота и параллелизм на уровне команд, поэтому именно на максимальное использование этих возможностей и направлена архитектура оптимизированной двоичной трансляции, предложенная компанией IBM и направленная на перенос приложений между различными микропроцессорными архитектурами.
Так или иначе, двоичная трансляция - реальный шаг к уменьшению риска при переходе к новым архитектурам и освобождению от зависимости к конкретной аппаратуре.