Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы 2008-2009.doc
Скачиваний:
22
Добавлен:
17.09.2019
Размер:
4.36 Mб
Скачать

89. Параллелизм уровня команд. Концепция vliw-архитектуры.

Параллельные команды – могут выполняться в конвейере одновременно, без приостановок, полагаясь на отсутствие структурных конфликтов.

Параллелизм уровня команд - Instruction-Level Parallelism(ILP)

Условие существования: команды в последовательности независимы и могут выполняться параллельно.

Степень параллелизма: зависит от частоты появления в программе фрагментов, содержащих взаимозависимые команды.

Факторы ILP: архитектура набора команд; специфика приложения; операционная латентность – время, до истечения которого результат операции недоступен для использования в качестве операнда в последующих командах.

VLIW-компьютеры (Very Long Instruction Word, архитектура с очень длинным командным словом):

    • выдача на выполнение фиксированного количества команд, сформатированных как:

      • одна «длинная» команда;

      • пакет команд фиксированного формата;

    • планирование исключительно компилятором.

Планирование вычислений полностью реализуется программным обеспечением.

Функции «интеллектуального» компилятора:

  1. поиск в программе независимых инструкций;

  2. группирование найденных инструкций в «очень длинные» командные слова («метаинструкции» длиной 256-1024 бит).

Недостатки архитектуры VLIW

Проблема: зависимость VLIW-компилятора от микроархитектуры процессора.

Решение: разделить процесс компиляции на две стадии:

  1. генерация промежуточного кода (аппаратно-независимый формат);

  2. трансляция промежуточного кода в машинно-зависимый на машине пользователя.

Проблема: реакция программы на непредусмотренные в процессе компиляции динамические ситуации (например, ожидание ввода-вывода) неизвестна. Архитектура VLIW ориентирована на вычисления, где особенно необходимо большое быстродействие процессора, но для объектно-ориентированных и управляемых по событиям программ она менее подходит.

90. Суперскалярные компьютеры: принципы построения, структура процессора.

Суперскалярные компьютеры:

  • выдача на выполнение в каждом такте переменного числа команд;

  • планирование работы конвейеров посредством:

компилятора (статически); аппаратных средств динамической оптимизации.

Особенности суперскалярных машин

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

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

    • скорость выдачи команд является переменной (отличие от VLIW-машин).

Достоинства

    • малое воздействие на плотность кода:

      • машина сама определяет возможность выдачи очередной команды;

      • отсутствует необходимость слежения за тем, чтобы команды соответствовали возможностям выдачи;

    • выполнение неоптимизированных или ранее откомпилированных программ.

Недостатки

    • размеры аппаратного планировщика:

      • при увеличении количества функциональных модулей возрастают в геометрической прогрессии;

      • практически достижимая степень параллелизма – 5-6;

    • обнаружение зависимостей и планирование параллельного исполнения только внутри базовых программных блоков (решение: в некоторых процессорах область сканирования может превышать границы базового блока).

Процессор определяет очередность:выборки команд из памяти;выполнения команд;обновления содержимого регистров и ячеек памяти. Выдача и завершение команд бывают упорядоченными и неупорядоченными.Чаще используются неупорядоченные:

    • дополнительный потенциал повышения производительности суперскалярного процессора;

    • необходимо решить проблемы:

      • устранить зависимости по данным (RAW, WAW);

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

Структура суперскалярного процессора

Блок выборки команд:

    • извлекает команды из основной памяти через кэш-память команд;

    • хранит несколько значений счетчика команд и обрабатывает команды условного перехода.

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

    • расшифровывает код операции, содержащийся в извлеченных из кэш-памяти командах.

В некоторых процессорах блоки выборки и декодирования совмещены.

Блоки диспетчеризации и распределения:

    • взаимодействуют между собой, выполняя функцию контроллера трафика;

    • хранят очереди декодированных команд.

Очередь блока распределения часто рассредоточивается по несколько самостоятельным буферам – накопителям команд или схемам резервирования (reservation station), – предназначенным для хранения команд, которые уже декодированы, но еще не выполнены. Каждый накопитель команд связан со своим функциональным блоком (ФБ), поэтому число накопителей обычно равно числу ФБ, но если в процессоре используется несколько однотипных ФБ, то им придается общий накопитель.По отношению к блоку диспетчеризации накопители команд выступают в роли виртуальных функциональных устройств. В некоторых процессорах накопители объединены в единую очередь. Блок диспетчеризации также хранит список свободных функциональных блоков – табло (Scoreboard).Блок диспетчеризации извлекает команды из своей очереди, считывает из памяти или регистров операнды этих команд, после чего, в зависимости от состояния табло, помещает команды и значения операндов в очередь распределения. Эта операция называется выдачей команд. Блок распределения в каждом цикле проверяет каждую команду в своих очередях на наличие всех необходимых для ее выполнения операндов и при положительном ответе начинает выполнение таких команд в соответствующем функциональном блоке.

Блок исполнения:

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

Блок обновления состояния:

    • запись и анализ результата команды, исполнение которой завершено;

    • учет полученного результата для команд в очередях распределения, где он выступает в качестве одного из операндов.

Задача 1 (2 варианта)

Заданы следующие параметры:

— адрес, по которому хранится команда (X1);

— содержимое адресной части команды (X2);

— адрес ячейки памяти, содержащей операнд для команды (X3);

— содержимое индексного регистра (X4).

Требуется определить соотношение между перечисленными значениями в командах со следующими режимами адресации:

— прямой;

x2 – операнд, x1, x3, x4 – не используются.

— косвенный;

x3 – адрес операнда, x1, x2, x4 – не используются.

— относительный;

x1+x2 – адрес операнда, x3, x4 – не используются.

— индексный;

x2+x4 – адрес операнда, x1, x3 – не используется.

Задача 2

Команды Стек

push A A

push B B A

push C C B A

push D D C B A

push E E D C B A

add (D+E) C B A

push F F (D+E) C B A

div ((D+E)/F) C B A

add (C+(D+E)/F) B A

push G G (C+(D+E)/F) B A

sub (C+(D+E)/F-G) B A

push H H (C+(D+E)/F-G) B A

div ((C+(D+E)/F-G)/H) B A

mul (B*(C+(D+E)/F-G)/H) A

add (A+B*(C+(D+E)/F-G)/H)

Выражение в инфиксной форме: A+B*(C+(D+E)/F-G)/H

Задача 3 (4 варианта)

Задано выражение в инфиксной форме:

(A-B)*(((C-D*E)/F)/G)*H

Требуется: