Слово за VLIW

26 июнь, 1996 - 21:05КО

Не успела еще развеяться пыль после битвы архитектур CISC и RISC (последние новости: CISC победила, приобретая некоторые RISC'овые черты), как уже намечается новое большое сражение VLIWs (Very Long Instruction Words) против RISC. Intel и HP надеются повысить быстродействие своих процессоров с помощью технологии VLIW рискованнее, чем RISC.

Слово за VLIW

Несмотря на то, что архитектура VLIW появилась еще на заре компьютерной индустрии (Тьюринг разработал VLIW-компьютер еще в 1946 г.), она до сих пор не имела коммерческого успеха. И вот теперь компании Intel и Hewlett-Packard собираются совместно реализовать идеи VLIW для создания процессоров следующего поколения. Но вряд ли даже эти гиганты индустрии смогут сделать концепцию VLIW жизнеспособной. Значительного повышения скорости вычислений она позволяет добиться лишь путем переноса интеллектуальных функций из аппаратного обеспечения в программное (в компилятор). Таким образом, успех всей затеи будет определяться, в основном, программными средствами именно в этом состоит проблема.

VLIW: «железо» плюс «софт»

Архитектура VLIW представляет собой одну из последних реализаций концепции внутреннего параллелизма в микропроцессорах. Их быстродействие можно повысить двумя способами: увеличив либо тактовую частоту, либо количество операций, выполняемых за один такт. В первом случае требуется изобретение «быстрых» технологий (например, использование арсенида галлия вместо кремния) и применение таких архитектурных решений, как глубинная конвейеризация (конвейеризация в пределах одного такта, когда в каждый момент времени задействован весь кристалл, а не отдельные его части). Для увеличения количества выполняемых за один цикл операций необходимо на одной микросхеме разместить множество функциональных модулей обработки и обеспечить надежное параллельное исполнение машинных инструкций, что дает возможность включить в работу все модули одновременно. Надежность в таком контексте означает, что результаты вычислений будут правильными. Для примера рассмотрим два выражения, которые связаны друг с другом следующим образом: А: = В + С и В: = D + Е. Значение переменной А будет разным в зависимости от порядка, в котором вычисляются эти выражения (сначала А, а потом В или наоборот), но ведь в программе подразумевается только одно определенное значение. И если теперь вычислить эти выражения параллельно, то будет ли гарантирован правильный результат?Планирование порядка вычислений довольно трудная задача, которую приходится решать при проектировании современного процессора. В суперскалярных процессорах, таких как Intel Pentium и HP РА8000, для распознавания зависимостей между машинными инструкциями применяется специальное сложное аппаратное решение (в Pentium Pro, например, для этого используется буфер переупорядочивания инструкций). Однако размеры такого аппаратного планировщика при увеличении количества функциональных модулей обработки возрастают в геометрической прогрессии, что, в конце концов, может «съесть» весь кристалл процессора. Поэтому суперскалярные проекты «завязли» на отметке пять-шееть управляемых за цикл инструкций. При другом подходе можно передать все планирование программному обеспечению, как это делается в конструкциях с VLIW. «Умный» компилятор должен выискать в программе все инструкции, которые являются совершенно независимыми, собрать их вместе в очень длинные строки (длинные инструкции) и затем отправить на одновременное исполнение функциональными модулями, количество которых строго равно количеству операций в такой длинной инструкции. Очень длинные инструкции (VLIW) обычно имеют размер от 256 до 1 024 бит. Размер полей, кодирующих операции для каждого функционального модуля, в такой метаинструкции намного меньше (рисунок). Аппаратная реализация VLIW-процессора очень проста: несколько небольших функциональных модулей (сложения, умножения, ветвления и т. д.), подключенных к шине процессора, и несколько регистров и блоков кэш-памяти. VLIW-архитектура представляет интерес для полупроводниковой промышленности по двум причинам. Первая - теперь на кристалле больше места может быть отведено для блоков обработки, а не, скажем, для блока предсказания переходов. Вторая причина - VLIW-процессор может быть высокоскоростным, так как предельная скорость обработки определяется только внутренними особенностями самих функциональных модулей.

Слово за VLIW

Устройство процессора VLIW
Процессор VLIW, имеющий такую схему, мог бы выполнять восемь операций за такт и работать при тактовой частоте 200 MHz на 50 - 100% быстрее существующих суперскалярных чипов.


Привлекает и то (особенно поклонников Intel), что VLIW может реализовать старые CISC-инструкции эффективнее, чем RISC. Почему? Да потому, что программирование VLIW-процессора очень напоминает написание микрокода. В те времена, когда память для ПК была дорогостоящей, программисты экономили ее, прибегая к сложным инструкциям процессора 8086 типа STOS и LODS (косвенная запись и чтение памяти). CISC реализует такие инструкции, как микропрограммы, зашитые в постоянную память (ROM) и выполняемые процессором. Микрокод это язык исключительно низкого уровня, который позволяет программировать «железо», как-то: синхронизировать работу логических вентилей с шинами обмена данными и управлять передачей данных между функциональными модулями. Архитектура RISC вообще исключает использование микрокода, реализуя инструкции чисто аппаратным путем. A VLIW делает по-другому изымает микрокод из процессора и переносит его в компилятор. В результате эмуляция инструкций процессора 8086, таких как STOS, осуществляется очень эффективно, поскольку процессор получает для исполнения уже готовые макросы. Но вместе с тем, это порождает и некоторые трудности, ведь написание микрокода невероятно трудоемкий процесс. Архитектуре VLIW может обеспечить жизнеспособность только «умный» компилятор, который возьмет эту работу на себя. Именно это ограничивает использование вычислительных машин с архитектурой VLIW: пока она нашла свое применение только в векторных (для научных расчетов) и сигнальных процессорах.

Принцип действия VLIW-компилятора


Вновь вспыхнувший в последние десять лет интерес к VLIW как к архитектуре, которую можно использовать для реализации вычислений общего назначения, дал существенный толчок развитию техники компиляции для VLIW. VLIW-компилятор упаковывает группы независимых операций в очень длинные слова инструкций таким способом, чтобы обеспечить эффективное их исполнение функциональными модулями за один машинный такт. Компилятор сначала обнаруживает все зависимости между данными, а затем определяет, как их развязать. Чаще всего это делается путем переупорядочивания всей программы разные ее блоки перемещаются с одного места в другое. Этот подход отличается от применяемого в суперскалярном процессоре, который для определения зависимостей использует специальное аппаратное решение прямо во время выполнения программы (оптимизирующие компиляторы, безусловно, улучшают работу суперскалярного процессора, но не делают его «привязанным» к ним). Большинство суперскалярных процессоров может обнаружить зависимости и планировать параллельное исполнение только внутри базовых программных блоков (группа последовательных операторов программы, не содержащих внутри себя останова или логического ветвления, допустимых только в конце). Некоторые переупорядочивающие системы, такие как Pentium Pro и РА8000, положили начало расширению области сканирования, не ограничивая ее базовыми блоками. Для обеспечения большего параллелизма VLIW-KOMпыотеры должны наблюдать за операциями из разных базовых блоков, чтобы поместить эти операции в одну и ту же длинную инструкцию (их «область обзора» должна быть шире, чем у суперскалярных процессоров). Это обеспечивается путем прокладки «маршрута» по всей программе (трассировка). Трассировка наиболее оптимальный для некоторого набора исходных данных маршрут по программе (для обеспечения правильного результата гарантируется непересечение этих данных), т. е. маршрут, который «проходит» по участкам, пригодным для параллельного выполнения (эти участки формируются, кроме всего прочего, и путем переноса кода из других мест программы), после чего остается упаковать эти участки в длинные инструкции и передать на выполнение. Планировщик вычислений осуществляет оптимизацию на уровне всей программы, а не ее отдельных базовых блоков.Для VLIW, также как и для R I S C , ветвления в программе являются «врагом», препятствующим эффективному ее выполнению: типичный программный код (тот, что не используется в научных расчетах) содержит около шести ветвлений на инструкцию. В то время как RISC для прогнозирования ветвлений использует аппаратное решение, VLIW оставляет это за компилятором. Компилятор использует информацию, собранную им путем профилирования программы (хотя у будущих VLIW-процессоров предполагается небольшое аппаратное расширение, обеспечивающее сбор для компилятора статистической информации непосредственно во время выполнения программы). Компилятор прогнозирует наиболее подходящий маршрут и планирует его прохождение, рассматривая его как один большой базовый блок, затем повторяет этот процесс для всех других возникших после этого программных веток, и так до самого конца программы. Он также умеет делать при анализе кода и другие «умные вещи», такие как развертывание программного цикла и IF-преобразование (в процессе которого временно удаляются все логические переходы из секции, подвергающейся трассировке). Там, где RISC может только просмотреть код вперед на предмет ветвлений, VLIWкомпилятор перемещает его с одного места в другое до обнаруженного ветвления (согласно трассировке), но предусматривает при необходимости возможность отката назад, к предыдущему программному состоянию. Соответствующее аппаратное обеспечение, добавленное к VLIW-npoцессору, может оказать определенную под держку компилятору. Например, операции, имеющие по нескольку ветвлений, могут входить в одну длинную инструкцию и, следовательно, выполняться за один машинный такт. Поэтому выполнение условных операций, которые зависят от результатов предыдущих, может быть реализовано программным способом, а не аппаратным. Цена, которую приходится платить за увеличение быстродействия VLIW-npoцессора, намного меньше стоимости компиляции. Именно поэтому основные расходы приходятся на компиляторы: например, Rocket С для Sun компании Archelon стоит $10000.

VLIW: обратная сторона медали


При реализации архитектуры VLIW возникают и другие серьезные проблемы. VLIW-компилятор должен в деталях «знать» внутренние особенности архитектуры процессора, опускаясь до внутреннего устройства самих функциональных модулей. Как следствие, при выпуске новой версии VLIW-процессора с большим количеством обрабатывающих модулей (или даже с тем же количеством, но другим быстродействием) все старое программное обеспечение, скорее всего, потребует полной перекомпиляции.

Надо ли было при переходе на процессор 486 избавляться от имеющегося ПО для процессора 386? Конечно, нет, а вот теперь придется, и это Intel должна учесть при планировании своих затрат (потребуются дополнительные средства на перекомпиляцию). Сторонники VLIW-архитектуры в оправдание предлагают разделить процесс компиляции на две стадии. Все программное обеспечение должно готовиться в аппаратно-независимом формате с использованием промежуточного кода, который окончательно транслируется в машинно-зависимый код только после установки на машине пользователя. Пример такого подхода демонстрирует фонд OSF со своим стандартом Architecture-Neutral Distribution Format (ANDF). Однако кросс-платформенное программное обеспечение пока еще только желаемое, а в действительности разработчики ПО для ПК зачастую весьма инертны по отношению к принятию радикально новых технологий. Другая трудность это по своей сути статическая природа оптимизации, которую обеспечивает VLIW-компилятор. Как поведет себя программа, когда столкнется во время компиляции с непредусмотренными динамическими ситуациями (такими как ожидание ввода/вывода, например)? Архитектура VLIW возникла в ответ на требования со стороны научно-технических организаций (где при вычислениях особенно необходимо большое быстродействие процессора), но для объектно-ориентированных и управляемых по событиям программ она менее подходит, а ведь именно такие программы составляют сейчас большинство в мире ПК. Но и это еще не все: а как можно проверить, что компилятор выполняет такие сложные преобразования надежно и правильно? Это никому не известно. Вот почему VLIW-компиляторы называют «вещью в себе». Так неужели альянс Intel/HP собирается оплатить такую авантюру? В последнее время стало очевидным, что они уже начинают отходить от своей первоначальной затеи с чистой VLIW-архитектурой. Intel сейчас намеревается выпустить процессор Р7, который представляет собой логическое продолжение Pentium Pro, строго сохраняющее набор инструкций х86. HP будет работать над VLIW-версией Р7, которая эмулирует инструкции как х86, так и РА-RISC. Быстродействие такого процессора предполагается довести до 1 млрд операций в секунду. Удастся или нет совместная авантюра Intel/HP, неизвестно, но уже с определенностью можно сказать, что она не станет последней в этой области. Однако решение сложной задачи обеспечения взаимодействия аппаратного и программного обеспечения в архитектуре VLIW требует серьезных предварительных исследований. Эта технология не должна прийти к нам как какой-то сюрприз, обещающий большее быстродействие процессора, ибо бывает, что сюрпризы заводят в тупик.



Краткая история длинных инструкций

Архитектура Very Long Instruction Word (VLIW) ведет свое начало от параллельного микрокода, применявшегося еще на заре вычислительной техники, и от суперкомпьютеров, таких как Control Data CDC6600 и IBM 360/91. В 1970 г. многие вычислительные системы оснащались дополнительными векторными и сигнальными процессорами, использующими VLIW-noдобные длинные инструкции, зашитые в ROM. Эти процессоры применялись для выполнения быстрого преобразования Фурье и других вычислительных алгоритмов. Первыми настоящими VLIW-вычислительными машинами стали мини-суперкомпьютеры, выпущенные в начале 1980 г. тремя компаниями: Multiflow, Culler и Cydrome. Но они не имели коммерческого успеха. Правда, результаты экспериментов с написанием компиляторов не пропали зря Hewlett-Packard приобрела Multiflow, а вместе с ней и Джоша Фишера (Josh Fisher) и Боба Pay (Bob Rau), работавших до этого в Cydrome, которые и возглавили в HP это направление. Планировщик вычислений и программная конвейеризация, предложенные соответственно Фишером и Pay, сегодня являются оплотом технологии VLIWкомпилятора. Первый VLIW-компьютер компании Multiflow 7/300 использовал два АЛ У (арифметико-логическое устройство) для целых чисел, два АЛУ для чисел с плавающей точкой и блок логического ветвления (все это было собрано на нескольких микросхемах). Его 256-битовое слово инструкции содержало семь 32-битовых кодов операций. Модули для обработки целых чисел могли выполнять две операции за один такт длиной 130 не (т. е. всего четыре при двух АЛУ), что при обработке целых чисел обеспечивало быстродействие около 30 MIPS. Можно было также комбинировать аппаратные решения так, чтобы получать из 7/300 или 256-битовые, или 1 024-битовые вычислительные машины. Первый VLIW-компьютер компании Cydrome Cydra 5 использовал 256-битовую инструкцию и специальный режим, обеспечивающий выполнение инструкции как последовательности из шести 40-битовых операций. Поэтому его компиляторы могли генерировать смесь параллельного кода и обычного последовательного. Существует мнение, что в то время, как обе эти VLIW-вычислительные машины использовали несколько микросхем, процессор Intel i860 стал первым VLIW-процессором на одной микросхеме. При установке правильной последовательности операций этот процессор в большей степени зависит от компилятора, нежели от аппаратуры. Архитектура VLIW может применяться не только при построении CPU. Голландская компания Philips Semiconductors, еще один первопроходец в этой области, недавно выпуила цифровой сигнальный процессор на одной микросхеме, получивший название TriMedia, в котором применена архитектура VLIW. TriMedia предназначен для использования в высокотехнологичных сферах, таких как мультимедиа в ПК, видеоконференции, телевизоры и цифровые видеокамеры. Основная цель при этом обеспечить такое быстродействие, которое позволяет не прибегать к помощи главного CPU, а также добиться удешевления процессора до $50, чтобы стоимость всей системы оставалась достаточно приемлемой. Такого рода области применения VLIW-архитектуры должны помочь сохранить ее на картах мира ПК.

 

Слово за VLIW