Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LektsiiProshkina / Архитектура вычислительных систем - лекции_последний.docx
Скачиваний:
154
Добавлен:
18.05.2015
Размер:
1.63 Mб
Скачать

29.09.2011

  1. Формирование адреса следующей команду;

Для фон-неймановских машин характерно размещение соседних команд программы в смежных ячейках памяти. Если извлеченная команда не нарушает естественного порядка выполнения программы, то для вычисления адреса следующей команды достаточно увеличить значение СК на длину текущей команды.

  1. Декодирование команды;

После выборки команды она должна быть декодирована. На этапе декодирования выясняются следующие моменты:

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

  • Какие действия требуются для выполнения команды;

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

  1. Вычисление адресов операндов;

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

  1. Выборка операндов;

Вычисленные на предыдущем этапе исполнительные адреса используются для считывания операндов из памяти и занесения в регистры процессора

  1. Исполнение операции;

  2. Запись результата;

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

Способы ускорения традиционных архитектур

Рисунок 10 Конвейеризация

Исходные данные помещаются во входной регистр, обрабатываются в функциональном блоке, а результат обработки фиксируется в выходном регистре. Если максимальное время обработки в ФБ=Tmax, то результат может быть занесен в Ргвых не ранее, чем через Tmax.

Распределим функции, выполняемые в ФБ, между тремя независимыми блоками так, чтобы максимальное время обработки в них была одинаковыми. Между блоками разместим буферные регистры, предназначенные для хранения результатов на случай, если следующий за ней ФБ не готов использовать этот результат.

В рассмотренной схеме данные на вход конвейера могут подаваться с интервалом . На практике редко удается добиться того, чтобы задержки в каждом ФБ были одинаковыми. Для устранения этого недостатка каждый буферный регистр заменяется буферной памятью, способной хранить множество данных и организованной по принципуFIFO.

Конвейер команд.

ВК – выборка команды

ДК – декодирование команды

ВА – вычисление адресов

ВО – выборка операндов

ИК – исполнение команды

ЗР – запись результата.

Рисунок 11 Конвейер команд

Конфликтные ситуации в конвейере принято обозначить термином риск. Они могут быть обусловлены:

  1. Попуткой нескольких команд одновременно обратиться к одному и тому же ресурсу вычислительной машины;

  2. Взаимосвязью команд по данным;

  3. Неоднозначностью при выборе следующей команды в случае команд перехода – риск по управлению;

Структурного риска можно избежать за счет модульного построения памяти и использования кэш-памяти.

Риск по данным возникает, когда две команды в конвейере i иj предусматривают обращение к одной и той же переменной x, причем i предшествует j. Возможные риски:

  1. Чтение после записи. Команда j читает x до того, как команда i успела записать новое значение x;

  2. Запись после чтения. Команда j записывает новое значение x до того, как команда i успела прочитать это x;

  3. Запись после записи. Команда j записывает новое значение x прежде, чем команда i успела записать в качестве x своё значение;

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

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