Архивы: по дате | по разделам | по авторам

Мясной рулет: CISC+RISC+EPIC=MERCED

Архив
автор : Крис Касперски   07.09.1999

Все новое становится опасными пограничными рубежами - новые идеи или новые изобретения, посетители - все становится подозрительным.

Френк Херберт. "Бог - Император Дюны"


Язык ассемблера 80х86 очень близок к Си, легко осваивается и приятен в работе, однако усложняет техническую реализацию чипа и отрицательно сказывается на производительности. Весь код исполняется в режиме интерпретации. Это значит, что львиная доля времени уходит на синтаксический анализ и декодирование инструкций. Современный Pentium II до 70 процентов процессорного времени тратит именно на анализ, декодирование и вычисление границ инструкций.

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

И тут проявилось второе ограничение CISC-процессоров. Они не позволяли компиляторам генерировать оптимальный код. Множество сложных команд, хроническая нехватка регистров, фантасмагорические, с множественными исключениями, правила оптимизации не позволяли однозначно указать оптимальное решение для всех ситуаций. Это привело к тому, что даже лучшие компиляторы использовали потенциал микропроцессоров едва ли наполовину.

Этих недостатков были лишены RISC-архитектуры, создаваемые не под человека, а под компиляторы. Среди основных характеристик - множество регистров общего назначения и небольшой набор простейших, элементарных инструкций. Программирование на ассемблере для таких процессоров превращается в изнурительно кропотливую работу, а сам программист ничем не превосходит компилятор, поскольку с предоставленным набором команд существует только один способ оптимального решения задачи.

RISC долгое время казался воплощением самого совершенства, хотя и был невероятно скучен для программистов старого поколения. Впрочем, это еще не означало, что архитектура RISC хорошая, - а всего лишь, что она соответствовала требованиям пользователей того времени.

Разумеется, RISC-микропроцессоры оказались несовместимы с предшественниками, программы приходилось переписывать заново. Intel не решилась на столь смелый шаг, прекрасно понимая, что пользователю совместимость куда важнее технических вопросов реализации чипов, и продолжила выпуск микропроцессов старой архитектуры, обеспечивая соизмеримую производительность ценой большей аппаратной сложности.

RISC имел и недостатки. Одинаковая длина инструкций, облегчающая их интерпретацию, заметно увеличивала размеры исполняемого кода и время загрузки из медленной оперативной памяти.

Когда тактовые частоты возросли и самым "узким" местом оказалась оперативная память, короткие инструкции Intel заметно подняли суммарную производительность. Грамотно продуманный код позволял большинство критичных участков кода 80х86 полностью поместить в кэш первого уровня, не требуя постоянной его перезагрузки из оперативной памяти.

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

Задумаемся на мгновение: какой самый простой способ ускорить вычисления? Разбить задачу на несколько подзадач и выполнять их параллельно. Технически обеспечить несколько отдельных вычислителей нетрудно. Вся проблема в том, как распараллелить вычисления.

Микропроцессоры Pentium могут "на лету" анализировать поток команд, выявляя независимые инструкции и параллельно исполняя их в так называемых трубах U и V. Теоретически это может удвоить производительность, однако практически очень часто последующая инструкция требует результатов предыдущей. Поэтому одновременное выполнение (спаривание) инструкций становится невозможным.

Вот почему от компилятора требуется расположить инструкции таким образом, чтобы между двумя соседними командами не было зависимости. Большинство компиляторов достигает спаривания 50-60 процентов инструкций, правда, при ближайшем рассмотрении выясняется, что во многих случаях используется инструкция "пустышка" NOP, и практически результат получается несколько хуже обещанного.

Ответом на сложившуюся ситуацию стала архитектура EPIC (Explicitly Parallel Instruction Computing - вычисления с явным параллелизмом команд), возлагающая распараллеливание работы на компилятор, а не на процессор.

Архитектура EPIC, как утверждают в Intel и HP, наследует достоинства VLIW, устраняя ее недостатки. Джон Крауфорд (John Crawford), директор группы разработки микропроцессоров Intel, отмечает (www.intel.com/pressroom/archive/speeches/mpf1097c.htm), что в отличие от VLIW новая архитектура будет обладать следующими качествами:

- большим количеством регистров, которые будут использованы программным обеспечением как сверхбыстрая память нижнего уровня;

- масштабируемостью архитектуры до большого количества функциональных устройств;

- предикацией (Predication);

- загрузкой по предположению (Speculative loading).

В остальном EPIC повторяет основную идею VLIW - набора команд, реализующих горизонтальный микрокод. Несколько (4-8) простых команд упаковывается компилятором в длинное слово.

VLIW и EPIC - это статические суперскалярные архитектуры. Распараллеливание кода производится на этапе компиляции, а не динамически во время исполнения.

Эта идеология и была положена в основу будущего процессора Merced, первого 64-разрядного микропроцессора фирмы Intel, создаваемого по EPIC-технологии с явным заимствованием лучших идей из CISC- и RISC-архитектур.

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

От RISC-архитектуры заимствуется фиксированная длина инструкций и ограниченное число адресаций памяти с жестким разделением всех команд на группы арифметических операций, чтения/записи ячеек памяти и работы с регистрами специального назначения. Это дает возможность объединять инструкции в слова для параллельного исполнения, гарантируя непротиворечивость ситуации.

Такая архитектура намного привлекательнее чистого RISC-процессора. И более конкурентоспособна. Первый общедоступный 64-разрядный EPIC-микропроцессор PA-8000 фирма HP выпустила еще в 1996 году. Единственное, что ограничило его распространение, - несовместимость с существующим программным обеспечением.

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

Замкнутый круг. Единственным выходом из него было создание платформы, одновременно поддерживающий старую и новую архитектуры. Неудивительно, что HP начала тесное сотрудничество с Intel. Так появился проект "Merced" - новый 64-разрядный EPIC-процессор, поддерживающий набор инструкций 80x86.

Другими словами, Merced - это PA-8000 II плюс обратная совместимость по коду с семейством 80x86. Впрочем, последнее для него не является основным, и процессор не покажет особой производительности на старых программах и едва ли обгонит пятисотмегагерцовые Pentum, вдесятеро превосходя их при этом в цене (предполагается, что Merced будет стоить около пяти тысяч долларов).

Это лишь неизбежный шаг, чтобы привлечь пользователя возможностью исполнения уже существующего ПО - до тех пор, пока не будет написано новое, 64-разрядное, специально для Merced. В ПЗУ микропроцессора будет заложена специальная программа, эмулирующая Pentium: правда, теперь эмулятор будет находиться в самом процессоре.

Вопреки распространенному мнению, Merced не будет опошлен "старым интеловским прошлым". Архитектура действительно будет новой. Даже непонятно, зачем HP понадобился этот союз с Intel. Никакая интеллектуальная собственность Intel, кроме собственно опкода, в новом процессоре не используется. Во всяком случае, никакого упоминания о таковой на сайте компании найти не удалось.

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

Вот только потребуется ли совместимость с 80x86 пятитысячедолларовому процессору? Скорее всего, нет. Если Intel не сможет его удешевить, маловероятно, что он найдет широкое применение в персональных компьютерах.

Его будут использовать серверы и высокопроизводительные рабочие станции, где совместимость с 80x86 некритична. "Родной" операционной системой для Merced будет, скорее всего, Unix, переносом которой на новую платформу и занята HP.

В отличие от Windows, заметная часть программного обеспечения под Unix поставляется в исходных текстах и может быть перекомпилирована под новый процессор независимо от поддерживаемого набора команд.

К тому же до сих пор ничего не ясно с поддержкой

16-разрядного кода и реального режима. То ли и вовсе такой поддержки не будет, то ли, как и в случае с Pentium Pro, 16-разрядные приложения будут исполнятьсяочень медленно - неизвестно. Так или иначе, на Merced операционная система Windows NT худо-бедно, но запустится и даже отчасти сможет работать, а вот Windows 98 или Doom - уже вряд ли. А если и запустятся, то не быстрее, чем на Pentium II.

Однако уже сам факт обратной совместимости с семейством Intel оставляет робкую надежду, что с течением времени цены снизятся (как бывало уже не раз), а проблемы со скоростью компания так или иначе решит. И Merced станет в персональных компьютерах столь же привычным, как Pentium сегодня.



© ООО "Компьютерра-Онлайн", 1997-2022
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.