Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем
.pdfВычислительные системы с явным параллелизмом команд (EPIC) 5 8 3
и шаблон, в котором указываются зависимости между командами (можно ли с ко мандой I0 запустить параллельно I1 или же I1 должна выполниться только после Iо), а также между другими связками (можно ли с командой I2 из связки So запус тить параллельно команду I3 из связки S1).
Перечислим все варианты составления связки из трех команд:
-I0 || I1 || 12 — все команды исполняются параллельно;
-Iо & I1 || Iг — сначала I0, затем исполняются параллельно I1 и I2;
- I0 || I 1 & I2 - параллельно обрабатываются I0 и I1 после них - I2;
- I0& I1 & I2 — команды исполняются в последовательности I0,I1, I2.
Одна связка, состоящая из трех команд, соответствует набору из трех функцио нальных блоков процессора. Процессоры IA-64 могут содержать разное количе ство таких блоков, оставаясь при этом совместимыми по коду. Благодаря тому что в шаблоне указана зависимость и между связками, процессору с N одинаковыми блоками из трех ФБ будет соответствовать сверхдлинная команда из N х 3 команд (Nсвязок). Тем самым обеспечивается масштабируемость IA-64.
Поле каждой из трех команд в связке, в свою очередь, состоит из пяти полей:
-13-разрядного поля кода операции;
-6-разрядного поля предикатов, хранящего номер одного из 64 регистров преди ката;
-7-разрядного поля первого операнда (первого источника), где указывается но мер регистра общего назначения или регистра с плавающей запятой, в котором содержится первый операнд;
-7-разрядного поля второго операнда (второго источника), где указывается но мер регистра общего назначения или регистра с плавающей запятой, в котором содержится второй операнд;
-7-разрядного поля результата (приемника), где указывается номер регистра общего назначения или регистра с плавающей запятой, куда должен быть зане сен результат выполнения команды.
Следует пояснить роль подполя предикатов. Предикация - это способ обра ботки условных ветвлений. Суть в том, что еще компилятор указывает, что обе ветви выполняются на процессоре параллельно, ведь EPIC-процессоры должны иметь много функциональных блоков.
Если в исходной программе встречается условное ветвление (по статистике — через каждые шесть команд), то команды из разных ветвей помечаются разными регистрами предиката (команды имеют для этого соответствующие поля), далее они выполняются совместно, но их результаты не записываются, пока значения регистров предиката (РП) не определены. Когда, наконец, вычисляется условие ветвления, РП, соответствующий «правильной» ветви, устанавливается в 1, а дру гой - в 0. Перед записью результатов процессор проверяет поле предиката и запи сывает результаты только тех команд, поле предиката которых указывает на РП с единичным значением.
Предикаты формируются как результат сравнения значений, хранящихся в двух регистрах. Результат сравнения («Истина» или «Ложь») заносится в один из РП,
5 8 4 Глава 13. Вычислительные системы класса SIMD
но одновременно с этим во второй РП записывается инверсное значение получен ного результата. Такой механизм позволяет процессору более эффективно выпол нять конструкции типа I F - T H E N-E L S E .
Логика выдачи команд на исполнение сложнее, чем в традиционных процессо рах типа VLIW, но намного проще, чем у суперскалярных процессоров с неупоря доченной выдачей. По мнению специалистов Intel и HP, концепция EPIC, сохра няя все достоинства архитектурной организации VLIW, свободна от большинства ее недостатков. Особенностями архитектуры EPIC являются:
- большое количество регистров;
- масштабируемость архитектуры до большого количества функциональных бло ков. Это свойство представители компаний Intel и HP называют наследственно масштабируемой системой команд (Inherently Scaleable Instruction Set);
-явный параллелизм в машинном коде. Поиск зависимостей между командами осуществляет не процессор, а компилятор;
-предикация — команды из разных ветвей условного предложения снабжаются полями предикатов (полями условий) и запускаются параллельно;
-предварительная загрузка — данные из медленной основной памяти загружа ются заранее.
Общий итог обзора технологии VLIW можно сформулировать следующим обра зом.
Преимущества. Использование компилятора позволяет устранить зависимос ти между командами до того, как они будут реально выполняться, в отличие от суперскалярных процессоров, где такие зависимости приходится обнаруживать и устранять "на лету". Отсутствие зависимостей между командами в коде, сформиро ванном компилятором, ведет к упрощению аппаратных средств процессора и за счет этого к существенному подъему его быстродействия. Наличие множества функцио нальных блоков дает возможность выполнять несколько команд параллельно.
Недостатки. Требуется новое поколение компиляторов, способных проанали зировать программу, найти в ней независимые команды, связать такие команды в строки длиной от 256 до 1024 бит, обеспечить их параллельное выполнение. Ком пилятор должен учитывать конкретные детали аппаратных средств. При опреде ленных ситуациях программа оказывается недостаточно гибкой.
Основные сферы применения. VLIW-процессоры пока еще распространены относительно мало. Основными сферами применения технологии VLIW-являются цифровые сигнальные процессоры и вычислительные системы, ориентированные на архитектуру IA-64. Наиболее известной была VLIW-система фирмы Multiflow Computer, Inc. (Уже не существующей.) В России VLIW-концепция была реали зована в суперкомпьютере Эльбрус 3-1 и получила дальнейшее развитие в его пос ледователе - Эльбрус-2000 (Е2к). К VLIW можно причислить семейство сигналь ных процессоров TMS320C6x фирмы Texas Instruments. С 1986 года ведутся исследования VLIW-архитектуры в IBM. В начале 2000 года фирма Transmeta за явила процессор Crusoe, представляющий собой программно-аппаратный комп лекс. В нем команды микропроцессоров серии х86 транслируются в слова VLIW длиной 64 или 128 бит. Оттранслированные команды хранятся в кэш-памяти, а трансляция при многократном их использовании производится только один раз. Ядро процессора исполняет элементы кода в строгой последовательности.