Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АВС Лекция 10.doc
Скачиваний:
33
Добавлен:
25.03.2015
Размер:
105.98 Кб
Скачать

2. Вычислительные системы с явным параллелизмом команд

Дальнейшим развитием идеи VLIW стала новая архитектура IA-64 сов-местная разработка фирм Intel и Hewlett-Packard (IA – это аббревиатура от Intel Architecture). В IA-64 реализован новый подход, известный как вычисления с явным параллелизмом команд (EPIC, Explicitly Parallel Instruction Computing) и являющийся усовершенствованным вариантом технологии VLIW. Первым пред-ставителем данной стратегии стал микропроцессор Itanium компании Intel. Корпорация Hewlett-Packard также реализует данный подход в своих разра- ботках.

В архитектуре IA-64 предполагается наличие в процессоре 128 64-раз- рядных регистров общего назначения (POH) и 128 80-разрядных регистров с плавающей запятой. Кроме того, процессор IA-64 содержит 64 однобитовых регистра предикатов.

Формат команд в архитектуре IA-64 показан на рис. 10.2.

Рис. 10.2. Формат сверхдлинной команды в архитектуре IA-64

Команды упаковываются (группируются) компилятором в сверхдлинную команду связку (bundle) длиною в 128 разрядов. Связка содержит три коман- ды и шаблон, в котором указываются зависимости между командами (можно ли с командой I0 запустить параллельно I1, или же I1 должна выполняться толь- ко после I0), а также между другими связками (можно ли с командой I2 из связки S0 запустить параллельно команду I3 из связки S1).

Перечислим все варианты составления связки из трех команд:

  • I0 ║ I1 ║ I2 – все команды исполняются параллельно;

  • I0 & I1 ║ I2 – сначала I0, затем исполняются параллельно I1 и I2;

  • I0 ║ I1 & I2 – параллельно обрабатываются I0 и I1, после них – I2;

  • I0 & I1 & I2 – команды исполняются в последовательности I0, I1, I2 .

Одна связка, состоящая из трех команд, соответствует набору из трех функциональных блоков процессора. Процессоры IA-64 могут содержать разное количество таких блоков, оставаясь при этом совместимыми по коду. Благодаря тому что в шаблоне указана зависимость и между связками, процессору с N одинаковыми блоками из трех ФБ будет соответствовать сверхдлинная коман- да из N × 3 команд (N связок). Тем самым обеспечивается масштабируемость IA-64.

Поле каждой из трех команд в связке состоит из пяти полей:

  • 13-разрядного поля кода операции;

  • 6-разрядного поля предикатов, хранящего номер одного из 64 регистров предиката;

  • 7-разрядного поля первого операнда (первого источника), где указывается номер регистра общего назначения или регистра с плавающей запятой, в котором содержится первый операнд;

  • 7-разрядного поля второго операнда (второго источника), где указывается номер регистра общего назначения или регистра с плавающей запятой, в котором содержится второй операнд;

  • 7-разрядного поля результата (приемника), где указывается номер ре-гистра общего назначения или регистра с плавающей запятой, куда дол-жен быть занесен результат выполнения команды.

Предикация – это способ обработки условных ветвлений. Если в исход- ной программе встречается условное ветвление (по статистике через каждые 6 команд), то команды из разных ветвей помечаются разными регистрами предиката (команды имеют для этого соответствующие поля), далее они вы-полняются совместно, но их результаты не записываются, пока значения ре-гистров предиката (РП) не определены. Когда вычисляется условие ветвления, РП, соответствующий «правильной» ветви, устанавливается в 1, а другой – в 0. Перед записью результатов процессор проверяет поле предиката и записывает результаты только тех команд, поле предиката которых указывает на РП с единичным значением.

Предикаты формируются как результат сравнения значений, хранящих- ся в двух регистрах. Результат сравнения («Истина» или «Ложь») заносится в один из РП, но одновременно с этим во второй РП записывается инверсное значение полученного результата. Такой механизм позволяет процессору более эффективно выполнять конструкции типа IF-THEN-ELSE.

Логика выдачи команд на исполнение сложнее, чем в традиционных процессорах типа VLIW, но намного проще, чем у суперскалярных процессо- ров с неупорядоченной выдачей. Особенностями архитектуры EPIC являются:

  • большое количество регистров;

  • масштабируемость архитектуры до большого количества функциональных блоков, т.е. наследственно масштабируемая система команд (Inherently Scaleable Instruction Set);

  • явный параллелизм в машинном коде. Поиск зависимостей между коман-дами осуществляет не процессор, а компилятор;

  • предикация – команды из разных ветвей условного предложения снабжа-ются полями предикатов (полями условий) и запускаются параллельно;

  • предварительная загрузка – данные из медленной основной памяти загру-жаются заранее.

Преимущества технологии VLIW. Использование компилятора позволя- ет устранить зависимость между командами до того, как они будут реально выполняться, в отличие от суперскалярных процессоров, где такие зависимос- ти приходится обнаруживать и устранять «на лету». Отсутствие зависимостей между командами в коде, сформированном компилятором, ведет к упроще- нию аппаратных средств процессора и за счет этого к существенному подъёму его быстродействия. Наличие множества функциональных блоков дает возмож-ность выполнять несколько команд параллельно.

Недостатки технологии VLIW. Требуется новое поколение компилято-ров, способных проанализировать программу, найти в ней независимые коман- ды, связать такие команды в строки длиной от 256 до 1024 бит, обеспечить их параллельное выполнение. Компилятор должен учитывать конкретные де- тали аппаратных средств. При определенных ситуациях программа оказывается недостаточно гибкой.

Основные сферы применения. VLIW-процессоры пока еще мало рас-пространены. Основными сферами применения технологии VLIW являются цифровые сигнальные процессоры и вычислительные системы, ориентирован- ные на архитектуру IA-64. Наиболее известной была VLIW-система фирмы Multiflow Computer, Inc. В России VLIW-концепция была реализована в супер-компьютере Эльбрус 3-1 и получила дальнейшее развитие в его последователе – Эльбрус-2000 (E2k). К VLIW относится и семейство сигнальных процессоров TMS320C6x фирмы Texas Instruments. В начале 2000 года фирма Transmeta заявила процессор Crusoe, представляющий собой программно-аппаратный комплекс. В нем команды микропроцессоров серии х86 транслируются в сло- ва VLIW длиной 64 или 128 бит. Оттранслированные команды хранятся в кэш-памяти, а трансляция при многократном их использовании производится только один раз. Ядро процессора исполняет элементы кода в строгой после-довательности.