Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шкулев Г.doc
Скачиваний:
40
Добавлен:
01.04.2015
Размер:
465.92 Кб
Скачать

Суперскалярные архитектуры

Смысл суперскалярной обработки - наличие в аппаратуре средств, позволяющих одновременно выполнять две и более скалярных операций, т.е. команд обработки пары чисел. В самом деле, суть этого метода довольно проста: имеется в виду дублирование устройств процессора. Так например, Pentiumимеет два конвейера выполнения команд (Рис. 11.4). При этом существуют различные способы реализации суперскалярной обработки. Первый способ чаще всего применяется в RISC-процессорах и заключается в чисто аппаратном механизме выборки из буфера инструкций (или кэша команд) несвязанных команд и параллельном запуске их на исполнение. Обычно процессор выполняет две несвязанные команды одновременно, как например, в процессорах DEC серии Alpha. Этот метод хорош тем, что он "прозрачен" для программиста - составление программ для подобных процессоров не требует никаких специальных усилий, ответственность за параллельное выполнение операций возлагается в основном на аппаратные средства.

Второй способ реализации суперскалярной обработки заключается в кардинальной перестройке всего процесса трансляции и исполнения программ. Уже на этапе подготовки программы компилятор группирует не связанные операции в пакеты, содержимое которых строго соответствует структуре процессора. Например, если процессор содержит функционально независимые устройства сложения, умножения, сдвига и деления, то максимум, что компилятор может "уложить" в один пакет - это четыре разнотипные операции: сложение, умножение, сдвиг и деление. Сформированные пакеты операций преобразуются компилятором в командные слова.

Функции стадии С1 (выборка команд а также тезис – один конвейер хорошо, а два лучше) позволяют реализовать структуру с двойным конвейером.

С1 С2 С3 С4 С5

Блок

Выборки

Команд

Блок

декодирования

Блок

Выб.

опер.

Блок

Вып.

команд

Блок

возврата

Прямая соединительная линия 36Прямая соединительная линия 37Прямая соединительная линия 38Прямая соединительная линия 39

Блок

декодирования

Блок

Выб.

опер.

Блок

Вып.

команд

Блок

возврата

Прямая соединительная линия 28Прямая соединительная линия 29Прямая соединительная линия 30Прямая соединительная линия 31

Рис. 12.4 Двойной конвейер из пяти стадий

Можно и дальше наращивать число конвейеров, но это значительно осложнило бы аппаратную часть. Вместо этого было предложено использовать один конвейер с большим количеством функциональных блоков (PentiumII– суперскалярный процессор).

С4

АЛУ

Прямая соединительная линия 26Прямая соединительная линия 27

Прямая соединительная линия 23Прямая соединительная линия 24

АЛУ

Прямая соединительная линия 19Прямая соединительная линия 20Прямая соединительная линия 21

С1 С2 С3 С5

Блок

Выборки

команд

Блок декодирования

Блок

Выб.

Опер.

Блок

Умнож.

Блок

возврата

Прямая соединительная линия 9Прямая соединительная линия 10Прямая соединительная линия 11Прямая соединительная линия 12Прямая соединительная линия 13

Блок

с пл.

точкой

Прямая соединительная линия 7

Прямая соединительная линия 6

Рис 12.5 Суперскалярный процессор с пятью функциональными блоками

До сих пор мы с вами рассматривали возможности увеличения производительности вычислительной системы на основе параллелизма на уровне команд. При этом к системе предъявлялись следующие требования:

  • все обычные команды непосредственно выполняются аппаратным обеспечением, они не интерпретируются микрокомандами, устранение уровня интерпретации обеспечивает высокую скорость выполнения большинства команд;

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

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

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

Недостатком суперскалярных микропроцессоров является необходимость синхронного продвижения команд в каждом из конвейеров. К тому же, как мы уже отмечали, кроме параллелизма на уровне команд существует параллелизм на уровне данных, реализация этого вида параллелизма требует применения многопроцессорной архитектуры.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]