Вы можете спросить, откуда взялось название «VLIW»2. Компилятор упаковывает независимые команды для каждого цикла в одно очень длинное слово — отсюда и название. На каждом цикле процессор выбирает по одному такому очень длинному слову из своего кэша команд. Таким образом, если каждая из 16 команд занимает 4 байта, то в результате получается 64-байтовое (512-битное) слово команды. Несомненно, название «очень длинное» здесь уместно.
Генератор кода компилятора (аналог транслятора AS/400) для VLIW-процессора находит процессору достаточно работы на каждом цикле и генерирует соответствующие команды:. Если на каждом цикле исполняется от 4 до 20 полезных команд, то на одном процессоре можно добиться производительности на уровне миллиарда команд в секунду.
Самая большая проблема VLIW в том, что генератор кода компилятора должен быть тесно связан с аппаратурой. Чтобы генерировать команды для каждого функционального узла процессора, компилятор должен иметь точную информацию, сколько узлов на микросхеме, какие они и как связаны друг с другом. В результате, практически невозможно использовать код, сгенерированный таким компилятором на любом модифицированном процессоре, так как у них отсутствует двоичная совместимость (или они имеют разное число функциональных узлов).
Ранее предполагалось, что Intel использует в микросхеме Merced трансляцию команд х86 и IA-64 в команды VLIW «на лету», аналогично Pentium II и Pentium Pro, где команды х86 и IA-64 «на лету» транслируются в последовательность RISC-подобных команд непосредственно микросхемой. Intel называет эти RISC-подобные команды микрооперациями и описывает данный прием как динамическое исполнение. Затем ядро процессора исполняет эти микрооперации конвейерным устройством, которое выглядит точно так же, как и любой RISC-процессор.
Intel не первая применила такой механизм. Точно так же работал процессор Nx586 другого производителя микросхем х86 — NexGen, теперь приобретенной AMD (Advanced Micro Devices). NexGen называла этот подход внутренними командами RISC86. Теперь он использован в другой совместимой с х86 микросхеме AMD — К6. Все эти продукты продемонстрировали, что динамическое исполнение удачно для RISC-процессора. В то же время оно может не очень хорошо сказываться на объеме параллелизма в потоке команд VLIW-процессора.
Далее RISC-процессор анализирует следующие 3 — 6 команд и направляет их в максимально возможное в данный момент количество узлов процессора. RISC-компиляторы отвечают за помещение в поток команд независимых друг от друга инструкций, чтобы за один цикл можно было отправить на выполнение их максимальное количество. Генератор кода компилятора обрабатывает промежуточное представление и генерирует двоичные машинные команды. Обычно для предоставления процессору достаточного числа независимых команд требуется анализ команд некоторого участка промежуточного представления.
В VLIW-машине число функциональных устройств сильно возрастает, что нужно для достижения большего параллелизма. В ближайшее время можно вполне ожидать появления процессоров, имеющих от 16 до 32 (а в будущем и более) функциональных узлов. Для обеспечения загрузки командами компьютеров такого типа генератору кода компилятора потребуется проанализировать гораздо больший диапазон промежуточного представления. Для генерации команд каждого цикла компилятору придется просмотреть, возможно, сотни и даже тысячи промежуточных команд. При использовании динамического подхода «на лету», для генерации команды VLIW просматривается лишь несколько команд. Способность эффективной загрузки большого числа функциональных узлов в этом случае остается под большим вопросом.
В соответствии с последней информацией от Intel, подход, который будет использован в Merced, будет больше походить на RISC-подобный подход Pentium Pro. В новом процессоре могут быть использованы некоторые базовые концепции VLIW, включая параллельное диспетчирование большого числа команд. Один из руководителей Intel сказал, что они взяли разработки VLIW от HP и разработки CISC/RISC от Intel и собираются создать на их основе нечто новое. Он сказал, что это новый тип архитектуры, который идет дальше не только RISC, но и VLIW. Мы в Рочестере наблюдаем за происходящим с большим интересом.
Рочестер заинтересовался архитектурой с очень длинным словом команд в начале 80-х. В то время здесь было организовано специальное подразделение исследования новых технологий для наших будущих системах. В этом подразделении я руководил группой систем. Задача группы состояла не в том, чтобы создать продукт, который будет поставляться заказчикам, но разобраться, заслуживают ли некоторые идеи внимания, и может ли на их основе быть создана аппаратура. Разумеется, лучший способ продемонстрировать положительный ответ — работоспособный прототип.
Читать дальше