Благодаря пакету FX32 корпорации Digital Alpha-системы способны выполнять 32-разрядные приложения Windows почти с той же скоростью, что и ПК с Pentium Pro
Не вызывает сомнений, что процессоры Alpha корпорации Digital превосходят в производительности процессоры X86 корпорации Intel, однако до сих пор существенным препятствием для роста популярности Alpha-систем было недостаточное число предназначенных для них бизнес-приложений.
Разработанный в Digital эмуляционный пакет FX32 не только позволяет использовать на Alpha-системах широкий спектр 32-разрядных Windows-приложений, созданных для ПК с процессорами X86, но и обеспечивает скорость их выполнения, близкую к той, которую демонстрируют системы с Pentium Pro.
Распространяемый свободно с Web-узла Digital (http: //www.digital.com) пакет FX32 работает на любой Alpha-системе. Реализованная в нем технология эмуляции позволяет преобразовать 32-разрядный Windows-код, написанный для процессоров X86, в Alpha-совместимые двоичные файлы.
Каков же результат? В ходе испытаний, проведенных в Тестовом центре PC Week Labs, одна из новейших рабочих станций Digital, оснащенная 433 МГц процессором Alpha и выполнявшая собственные приложения с обычной скоростью, при запуске приложений для X86 продемонстрировала производительность, близкую к производительности рабочих станций с 200 МГц процессором Pentium Pro (описание и схема тестирования приведены ниже).
Это означает, что пользователи специализированных приложений типа САПР с повышенными требованиями к производительности аппаратной платформы могут работать с Alpha-системами и не думать о том, что для бизнес-приложений им придется использовать другой компьютер или смириться с медленным выполнением этих приложений в режиме эмуляции для Alpha-процессора.
Быстрое выполнение приложений для X86 обеспечивают три компонента пакета FX32 - сервер “прозрачной” среды, исполнительные среда и эмулятор и фоновый оптимизатор. С их помощью приложения преобразуются в двоичные коды процессора Alpha (см. схему).
При запуске приложения для X86 на Alpha-системе сервер “прозрачной” среды пакета FX32 определяет, было ли оно преобразовано. Если нет, сервер передает программу исполнительному эмулятору, который и выполняет программу в режиме эмуляции.
Поскольку эмулятор обрабатывает код, написанный исключительно для Win32 API, он легко может следить за выполнением программы, отслеживая вызовы системы NT. Эмулятор регистрирует эмулированные части приложения в профиле программы для дальнейшего использования в фазе трансляции.
После остановки выполнения приложения в фоновом режиме начинает работать оптимизатор FX32, обеспечивая трансляцию исполняемых файлов приложения и DLL-файлов (DLL - динамически подключаемые библиотеки) на основе записей в профиле программы.
Код, транслированный в двоичные файлы для процессора Alpha, FX32 сохраняет в виде DLL.
При повторном выполнении того же приложения сервер “прозрачной” среды пакета FX32 проверяет файл регистрации и вместо исходного кода для X86 запускает транслированные DLL-файлы, минуя исполнительный эмулятор. При вызове пользователем функций приложения, требующих исполнения ранее не использовавшихся файлов и DLL-модулей, процедура эмуляции и последующей трансляции возобновляется.
Майкл Кейтон (PC Week Labs)
ИСПОЛЬЗУЕМАЯ В FX32 СХЕМА ПРЕОБРАЗОВАНИЯ КОДА ПРОЦЕССОРА INTEL X86 ДЛЯ ИСПОЛНЕНИЯ НА ALPHA-СИСТЕМАХ
Технология Digital обеспечивает максимальное использование ранее оттранслированного кода
Приложения для X86
Сервер “прозрачной” среды
При загрузке приложений для X86 сервер “прозрачной” среды пакета FX32 по записям в профиле программы определяет, выполнялся ли код ранее. Если нет, код выполняется в режиме эмуляции, и сервер вносит регистрационную запись в профиль программы.
Исполнительные среда и эмулятор
Исполнительный эмулятор работает с кодом, генерированным фоновым оптимизатором. Собственные коды выполняются в обычном режиме, а коды для X86 - в режиме эмуляции.
Фоновый оптимизатор
После выгрузки приложения оптимизатор проверяет профиль программы. Если в нем появились новые записи, оптимизатор транслирует двоичные коды процессора X86 в Alpha-совместимые.
Профиль программы
Двоичные файлы для Alpha