Hewlett, Packard, Intel
АрхивЕвгений Антонович,
Недавно на сайте компании Microdesign Resources (http://chipanalyst.com) появились кое-какие исследования о Merced. К сожалению, Игорь Гордиенко не успевает с ними справиться, и я подключаюсь в последний момент, чтобы сделать некий расширенный реферат. Этот текст мы уже не можем скоординировать с остальными материалами.
Искренне ваш - Г.К.
Статья Питера Кристи (Peter Christy) под названием "IA-64 и Merced - What and Why", это популярный и очень хорошо написанный обзор того, что просочилось к настоящему моменту за стены лабораторий. Кристи напоминает о контексте, в котором следует рассматривать этот проект. Вообще, он дает ровно столько и такой информации, сколько нужно нам, кто не участвует непосредственно в такого рода разработках.
Прежде всего, Кристи четко определяет смысл и значение происходящего. Процессоры делают одни, а программы - другие. Программостроительные фирмы - это консервативный фактор на рынке. Они любят стричь капусту на продажах копий своих продуктов, но терпеть не могут изучать новые инструменты и тратиться на переделку программ. Пытаясь повысить производительность, но сохранить абсолютную совместимость с имеющимся программным наследием, компьютеростроители берут все на себя и постепенно перегружают свои изделия функциями, которые лучше было бы отдать программам.
Кристи указывает: RISC-архитектура была предложена в свое время для того, чтобы расчистить авгиевы конюшни процессоростроения, перенести сложность, накопившуюся в процессорах, в программы и, таким образом, выиграть время выполнения за счет времени компиляции и затрат памяти на хранение кодов. Современные суперскалярные микропроцессоры продолжают ту же тенденцию: все меньшую долю площади их разработчики отдают на полезные вычисления, и все большую - на обслуживание вычислительного процесса.
Метод сверхдлинного командного слова (VLIW - Very Large Instruction Word), впервые реализованный более десяти лет назад, это, в данном случае, очередная доза слабительного. В процессорах образовались очень сложные блоки (по существу, интеллектуальные препроцессоры), которые пытаются выявить зависимость между командами и распараллелить их выполнение, насколько возможно. Идея в том, чтобы лишнее с кристалла выкинуть, а компилятор заставить строить нечто вроде сетевого графика выполнения программы и, в соответствии с ним, "упаковывать" независимые друг от друга команды так, чтобы процессор не задумываясь принимал их на параллельное выполнение.
Например, если первая команда складывает A и B, а вторая добавляет к результату C, то второй команде надо дождаться завершения первой. Если же первая команда складывает A и B, а вторая - C и D, то обе команды можно запускать на выполнение одновременно. Если речь идет о сложении двух многомерных векторов, то мы имеем дело с независимым суммированием членов двух последовательностей чисел. В этом случае программист компьютеров Cray выдаст одну векторную команду, которая будет непосредственно исполнена аппаратурой, принимающей и обрабатывающей до 128 чисел параллельно.
Что касается "обычного" программиста, то он напишет цикл, повторяющий одну и ту же операцию над каждой парой чисел. Обычный компьютер так и будет эту программу выполнять. Суперскалярный Pentium Pro может обнаружить параллелизм (он пытается предсказывать результаты команд перехода в пользу "зацикливания") и воспользоваться этим. А компилятор для процессора VLIW должен разобраться в такой ситуации и нарубить короткие циклы на циклически выполняемые "сверхдлинные слова". Команды, объединенные в такие слова, будут выполняться параллельно.
Нелепость суперскалярной архитектуры - объясняет Кристи - состоит вот в чем. Программист (а затем компилятор) знают много чего такого о программе, что могло бы сильно пригодиться при ее выполнении. Вся эта информация теряется, а потом процессор пытается разобраться в потоке команд и оптимизировать его "на лету". Между тем, заранее вмонтированные в программу явные "подсказки" помогли бы улучшить не только счет, но и использование кэш-памяти.
|
На что же разработчики процессора потратят освободившуюся площадь микросхемы? Например, процессор Pentium Pro может выполнять параллельно до трех команд, а Merced, как полагают, будет загребать до восьми. Cray, напомню, берет 128, так что расти еще есть куда. Другое направление - увеличение количества регистров, благодаря чему можно, например, свести к минимуму потери времени в случае неправильно предсказанного ветвления.
Питер Кристи полагает, что путь новому мышлению программистов проложит MMX. Несмотря на то, что официально оно предназначено для малтимидии, никто не мешает использовать эти команды параллельного программирования для любых других целей.
Раз внедрение VLIW, это просто-напросто операция по наведению порядка, то отчего же Merced вызывает такой интерес? А по причинам, с которых я начал эти заметки. Внедрение новой архитектуры, несовместимой со старыми программами, - это всегда отчаянно опасный трюк, и далеко не всем компьютерным фирмам сошло с рук такое обращение с пользователями и программистами. Тем не менее, совместная разработка с Hewlett-Packard позволяет Intel искоренить некоторые принципиальные недостатки своих традиционных процессоров и перейти, наконец, к заветным шестидесяти четырем разрядам.
По сведениям Кристи, новый процессор, помимо новой системы команд Intel IA-64, будет поддерживать и старую IA-32, равно как и унаследованную от HP систему PA-8000, причем он будет выполнять программы достаточно быстро, чтобы пользователям не приходилось жалеть об x86. Разработчики будут поставлены перед соблазном перекомпилировать свои продукты на IA-64 и еще больше ускорить их выполнение.
Впрочем, Кристи подозревает, что одной перекомпиляцией дело не обойдется. Постепенно программы будут все-таки переработаны и оптимизированы для VLIW. Все эти тактические ходы уже опробованы в последние годы самой HP, а также Apple, IBM, Motorola, Digital и другими, причем не всегда успешно. Да и сами Intel с Microsoft имеют немалый опыт борьбы за выживание программ на эволюционирующей аппаратуре - как позитивный, так и негативный.
Мы хотели бы обратить ваше внимание на еще один материал, размещенный на том же сайте - статью Linley Gwennap "First Merced Patent Surfaces". Он рассказывает о том, как в новом процессоре Intel (предположительно, это как раз и есть Merced) будет реализована совместная поддержка команд IA-32 и IA-64. Информация стала доступна публике благодаря тому, что, по словам автора, в некоторых неназванных странах тексты заявок на изобретения публикуются спустя 18 месяцев после их подачи (в США - только после выдачи патента). Таким путем и выплыла на свет одна интересная заявка корпорации Intel.
Чтобы подчеркнуть, насколько не новы все эти проблемы, упомяну лишь о том, что (по словам Gwennap) в заявке упоминается незабвенный компьютер DEC VAX-11, который умел выполнять как свои новые тридцатидвухразрядные, так и старые программы для 16-разрядных PDP-11. Однако, операционная система VAX должна была исполняться в новой среде, а прикладные программы - в старой или новой, но только в одной из них. В заявке Intel описывается метод, позволяющий перемешивать старые и новые коды как угодно и без перекомпиляции программ, причем (как минимум), без потери производительности! Впрочем, автор предупреждает - патент, это еще не процессор.