ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.12.2021
Просмотров: 2456
Скачиваний: 7
Вычислительные системы с командными словами сверхбольшой длины (VLIW) 5 8 1
чтобы это не приводило к возникновению конфликтов. В процессе анализа ком-
пилятор может даже частично имитировать выполнение рассматриваемой програм-
мы. Наследующем этапе компилятор пытается объединить такие команды в пакеты,
каждый из которых рассматривается так одна сверхдлинная команда. Объедине-
ние нескольких простых команд в одну сверхдлинную производится по следую-
щим правилам:
-
количество простых команд, объединяемых в одну команду сверхбольшой дли-
ны, равно числу имеющихся в процессоре функциональных (исполнительных)
блоков (ФБ);
- в сверхдлинную команду входят только такие простые команды, которые ис-
полняются разными ФБ, то есть обеспечивается одновременное исполнение
всех составляющих сверхдлинной команды.
Длина сверхдлинной команды обычно составляет от 256 до 1024 бит. Такая
метакоманда
содержит несколько полей (по числу образующих ее простых ко-
манд), каждое из которых описывает операцию для конкретного функционального
блока. Сказанное иллюстрирует рис, 13,26, где показан возможный формат сверх-
длинной команды и взаимосвязь между ее полями и ФБ, реализующими отдель-
ные операции.
Рис. 13.26. формат сверхдлинной команды и взаимосвязь полей команды
с составляющими блока исполнения
Как видно из рисунка, каждое поле сверхдлинной команды отображается на
свой функциональный блок, что позволяет получить максимальную отдачу от ап-
паратуры блока исполнения команд.
VLIW-архитектуру можно рассматривать как статическую суперскалярную
архитектуру. Имеется в виду, что распараллеливание кода производится на этапе
компиляции, а не динамически во время исполнения. То, что в выполняемой сверх-
5 8 2 Глава 13. Вычислительные системы класса SIMD
длинной команде исключена возможность конфликтов, позволяет предельно уп-
ростить аппаратуру VLIW-процессора и, как следствие, добиться более высокого
быстродействия.
В качестве простых команд, образующих сверхдлинную, обычно используются
команды RISC-типа, поэтому архитектуру VLIW иногда называют nocтRISC-ap-
хитектурой. Максимальное число полей в сверхдлинной команде равно числу
вычислительных устройств и обычно колеблется в диапазоне от 3 до 20. Все вы-
числительные устройства имеют доступ к данным, хранящимся в едином много-
портовом регистровом файле. Отсутствие сложных аппаратных механизмов,
характерных для суперскалярных процессоров (предсказание переходов, внеоче-
редное исполнение и т. д.), дает значительный выигрыш в быстродействии и воз-
можность более эффективно использовать площадь кристалла. Подавляющее боль-
шинство цифровых сигнальных процессоров и мультимедийных процессоров
с производительностью более 1 млрд операций/с базируется на VLIW-архитектуре.
Серьезная проблема VLIW — усложнение регистрового файла и связей этого фай-
ла с вычислительными устройствами.
Вычислительные системы с явным
параллелизмом команд (ЕРIC)
Дальнейшим развитием идеи VLIW стала новая архитектура IA-64 — совместная
разработка фирм Intel и Hewlett-Packard (IA — это аббревиатура от Intel Archi-
tecture). В IA-64 реализован новый подход, известный как
вычисления с явным па-
раллелизмом команд
(EPIC, Explicitly Parallel Instruction Computing) и являющийся
усовершенствованным вариантом технологии VLIW. Первым представителем дан-
ной стратегии стал микропроцессор Itanium компании Intel. Корпорация Hewlett-
Packard также реализует данный подход в своих разработках.
В архитектуре IA-64 предполагается наличие в процессоре 128 64-разрядных ре-
гистров общего назначения (РОН) и 128 80-разрядных регистров с плавающей запя-
той. Кроме того, процессор IA-64 содержит 64 однобитовых регистра предикатов.
Формат команд в архитектуре IA-64 показан на рис. 13.27.
Рис. 13.27. Формат сверхдлинной команды в архитектуре IA-64
Команды упаковываются (группируются) компилятором в сверхдлинную ко-
манду —
связку
(bundle) длиною в 128 разрядов. Связка содержит три команды
Вычислительные системы с явным параллелизмом команд (EPIC) 5 8 3
и шаблон, в котором указываются зависимости между командами (можно ли с ко-
мандой I
0
запустить параллельно I
1
или же I
1
должна выполниться только после
Iо), а также между другими связками (можно ли с командой I
2
из связки S
o
запус-
тить параллельно команду I
3
из связки S
1
).
Перечислим все варианты составления связки из трех команд:
- I
0
|| I
1
|| 1
2
— все команды исполняются параллельно;
- Iо & I
1
|| I
г
—
сначала I
0
, затем исполняются параллельно I
1
и I
2
;
-
I
0
|| I
1
&
I
2
— параллельно обрабатываются I
0
и I
1
после них — I
2
;
-
I
0
& I
1
& I
2
— команды исполняются в последовательности I
0
,I
1
, I
2
.
Одна связка, состоящая из трех команд, соответствует набору из трех функцио-
нальных блоков процессора. Процессоры IA-64 могут содержать разное количе-
ство таких блоков, оставаясь при этом совместимыми по коду. Благодаря тому что
в шаблоне указана зависимость и между связками, процессору с
N
одинаковыми
блоками из трех ФБ будет соответствовать сверхдлинная команда из
N
х 3 команд
(Nсвязок). Тем самым обеспечивается масштабируемость IA-64.
Поле каждой из трех команд в связке, в свою очередь, состоит из пяти полей:
-
13-разрядного поля кода операции;
- 6-разрядного поля предикатов, хранящего номер одного из 64 регистров преди-
ката;
- 7-разрядного поля первого операнда (первого источника), где указывается но-
мер регистра общего назначения или регистра с плавающей запятой, в котором
содержится первый операнд;
-
7-разрядного поля второго операнда (второго источника), где указывается но-
мер регистра общего назначения или регистра с плавающей запятой, в котором
содержится второй операнд;
-
7-разрядного поля результата (приемника), где указывается номер регистра
общего назначения или регистра с плавающей запятой, куда должен быть зане-
сен результат выполнения команды.
Следует пояснить роль подполя предикатов.
Предикация —
это способ обра-
ботки условных ветвлений. Суть в том, что еще компилятор указывает, что обе
ветви выполняются на процессоре параллельно, ведь EPIC-процессоры должны
иметь много функциональных блоков.
Если в исходной программе встречается условное ветвление (по статистике —
через каждые шесть команд), то команды из разных ветвей помечаются разными
регистрами предиката (команды имеют для этого соответствующие поля), далее
они выполняются совместно, но их результаты не записываются, пока значения
регистров предиката (РП) не определены. Когда, наконец, вычисляется условие
ветвления, РП, соответствующий «правильной» ветви, устанавливается в 1, а дру-
гой — в 0. Перед записью результатов процессор проверяет поле предиката и запи-
сывает результаты только тех команд, поле предиката которых указывает на РП с
единичным значением.
Предикаты
формируются как результат сравнения значений, хранящихся в двух
регистрах. Результат сравнения («Истина» или «Ложь») заносится в один из РП,
5 8 4 Глава 13. Вычислительные системы класса SIMD
но одновременно с этим во второй РП записывается инверсное значение получен-
ного результата. Такой механизм позволяет процессору более эффективно выпол-
нять конструкции типа IF-THEN-ELSE.
Логика выдачи команд на исполнение сложнее, чем в традиционных процессо-
рах типа 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 бит. Оттранслированные команды хранятся в кэш-памяти,
а трансляция при многократном их использовании производится только один раз.
Ядро процессора исполняет элементы кода в строгой последовательности.
Контрольные вопросы 5 8 5
Контрольные вопросы
1. Какой уровень параллелизма в обработке информации обеспечивают вычис-
лительные системы класса SIMD?
2. На какие структуры данных ориентированы средства векторной обработки?
3. Благодаря чему многомерные массивы при обработке можно рассматривать
в качестве одномерных векторов?
4. Поясните различие между конвейерными и векторно-конвейерными вычисли-
тельными системами.
5. Поясните назначение регистров векторного процессора: регистра длины век-
тора, регистра максимальной длины вектора, регистра вектора индексов и ре-
гистра маски.
6. Для чего используются операции упаковки/распаковки вектора?
7. Оцените выигрыш в быстродействии векторного процессора за счет сцепления
векторов.
8. В чем заключается принципиальное различие между векторными и матричны-
ми вычислительными системами?
9. Какими средствами обеспечивается подготовка программ для матричных вы-
числительных систем и их загрузка?
10. По какому принципу в матричной ВС команды программы распределяются
между центральным процессором и массивом процессоров?
И. Каким образом в матричной ВС реализуются предложения типа IF-THEN-
ELSE?
12. Как идентифицируются отдельные процессорные элементы в массиве процес-
соров матричной ВС?
13. Какие схемы глобального маскирования применяются в матричных ВС и в ка-
ких случаях каждая из них является предпочтительной?
14. Могут ли участвовать в вычислениях замаскированные (пассивные) процес-
сорные элементы матричной ВС и в каким виде это участие проявляется?
15. Поясните различие между ассоциативной памятью и ассоциативным процес-
сором.
16. В чем выражается аналогия между матричными и ассоциативными ВС?
17. Какую особенность систолической ВС отражает ее название?
18. Объясните достоинства и недостатки систолических массивов типа ULA, BLA,
TLA.
19. Сформулируйте правила объединения простых команд в командное слово сверх-
большой длины.
20. Чем ограничивается количество объединяемых команд в технологии EPIC?
21. Поясните назначение системы предикации и ее реализацию в архитектуре
• IA-64.