Наверное, каждый производитель вопрошал: "О, небо, ну почему не я...?" Не самая хорошая архитектура, далеко не самый лучший процессор, посредственная операционная система - а творят чудеса. Секрет прост: не много, а один компьютер, растиражированный несметным числом копий. Ведущие производители компьютеров ответили бойкотом и... проиграли. Зато те, кто разобрался в ситуации и оседлал волну, оказался в выигрыше. Десять лет победоносно шествовали ПК, прежде чем гиганты индустрии смирились с неизбежным и приступили к их выпуску.

Но лавина приложений не могла не обратить внимание на себя. Первые эмуляторы MS-DOS появились практически одновременно с персональными компьютерами. Архитектурное превосходство позволяло надеяться на сравнимую, а то и более высокую производительность эмуляции.

Попытки предложить пользователю общедоступный сервис вместе со специальными возможностями и вычислительной мощью в разное время предпринимали многие фирмы. Сконцентрироваться на продуктах такого рода, чего не смогли сделать многопрофильные компании, удалось небольшой фирме Insignia Solutions. Ее семейство эмуляторов SoftWindows, доступно практически на всех RISC-платформах. Sun Microsystems тоже не смогла игнорировать запросов своих пользователей на совместимость с приложениями Windows и реализовала WABI (Windows Aplications Binary Interface), эмулирующий двоичный интерфейс Windows. Надо заметить, что Sun - пожалуй, единственный из плеяды изготовителей UNIX-компьютеров, который не повернул дышла в сторону производства ПК. Правда, и на солнце есть пятна. Унаследованная от Interactive ОС, ориентированная на платформы Intel, положена в основу "персональной" версии ОС Solaris. Утверждалось даже, что WABI в рамках Solaris для ПК работает лучше и быстрее (!) оригинального Windows.

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

Есть, правда, эмулятор Windows для Power Macintosh, но и здесь его целесообразность невелика: практически все программы, ради которых заводят эмуляторы, на Маках есть и так. Второе соображение, почему эмуляторы не слишком популярны - их собственная цена, сравнима с ценой плохонькой персоналки, - все же два рабочих места за те же деньги.

Авторитет эмуляторов невысок, но есть пример широкомасштабного коммерчески успешного применения таких продуктов. Это эмулятор МС680х0 процессора для PowerPC, благодаря которому первые владельцы PowerMac получили возможность использовать традиционные приложения на своих компьютерах, пока не появились их "родные" версии. Но успех этот объяснить не трудно - деваться-то некуда.

Счастье решила попытать и компания Digital. Вопрос совместимости NT-систем на Alpha-компьютерах с деловыми приложениями для ПК стоит достаточно давно. Частично эту брешь закрывал эмулятор 16-разрядных приложений, поставляемый все той же Insignia. Теперь, как говорят, Alpha NT получит, наконец, нормальную возможность выполнять 32-разрядные приложения Windows. Благодаря высокой производительности процессора и ряду специальных решений, ускоряющих двоичную трансляцию (в чем специалисты Digital поднаторели, перенося программы c VAX на Alpha), производительность системы в режиме эмуляции будет не ниже, чем у х86-компьютеров. Поскольку Windows 95 и Windows NT используют один и тот же интерфейс Win32 API, проблем с совместимостью с приложениями Windows 95 так же, казалось бы, не будет. Поглядим.

Все возрастающая мощь процессоров сделает не столь значимой потерю производительности за счет программной эмуляции, но остается в этом что-то нарочитое. С проблемой эмуляции сталкивается и сама компания Intel. Необходимость обеспечить совместимость с предыдущими поколениями процессоров камнем на шее висит у разработчиков. Начиная с Pentium в кристалл приходится вводить специальный элемент, обеспечивающий обработку "старых" команд.

Есть еще несколько примеров аналогичного подхода к обеспечению совместимости с известным набором команд. Самыми первыми на этот путь вступили разработчики NexGen. В процессоре Nx586 использовалось специальное устройство, транслирующее CISC-команды х86 в набор инструкций для RISC-ядра. При этом снаружи процессор выглядит как "ординарный" 86-ой.

Много споров и много сомнений вызывает проект PowerPC 615. В процессоре, выполняющем обычный набор команд PowerPC, встроен узел, отвечающий за распознавание и выполнение CISC-команд из набора х86. Подобной парадигмы придерживаются и создатели версии Р7, основанной на PA-RISC фирмы Hewlett-Packard. Проблема использования чужих приложений остается - необходимо обеспечить их функционирование в несвойственном им окружении.

Известны и попытки объединить в одном компьютере процессоры двух типов, например, дополнить свой собственный SPARC или PowerPC еще и процессором х86. Ни одну из этих попыток не жаловала судьба. Такие системы работают неустойчиво, о динамической передаче управления не идет и речи.

Остается еще одна возможность реализации эмулятора. Аппаратное устройство, выполненное в виде сопроцессора, транслирующее "чужие" команды в "родные". Если представить, что когда-нибудь появится стандарт API для всех приложений, это позволит обеспечить его приемлемость на любой архитектуре. При этом остается возможность установки "родного" ПО, реализующего потенциал родной архитектуры "на полную катушку". Ведь, "чтобы стоять...".


С Михаилом Борисовым можно связаться через Internet по адресу mike@osp.ru.

Поделитесь материалом с коллегами и друзьями