Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Презентации / Конвейер команд.ppt
Скачиваний:
41
Добавлен:
11.04.2015
Размер:
1.18 Mб
Скачать

Явный конфликт по данным

Чтение после записи.

Программа пишется в расчете на последовательное выполнение команд, при котором сначала должна производиться запись, а потом – чтение. Конвейер подвёл

«Чтение после записи» можно распознать на этапе трансляции программы и предотвратить их.

Существует два приёма предотвращения конфликтов по данным:

1.Изменение следования команд на такой, при котором команды, имеющие зависимость по данным, не стоят рядом.

2.Вставляет между зависимыми командами одну или более команд NOP

– не делающие ничего.

После двух команд NOP команда 2 (шаг D4), будет выбирать данные, уже записанные на шаге W1. Этот приём приводит к задержке конвейера на два такта. На две команды удлиняется программа (затраты памяти).

Использование команды NOP

Процессоры распознают конфликт по данным и блокируют работу следующей команды конвейера.

«Пузырь»

Предположим, команда 1 вычисляет значение переменной, которая должна быть в 2. Устройство D на на третьем такте начинает обрабатывать вторую команду – дешифровать её, формировать адреса и

извлекать операнды (D), однако закончить свою работу не может, пока один из операндов не будет

записан в память – пока не закончится W1. Поэтому на тракте 4 устройство D простаивает и лишь на 5

заканчивает работу (D2k). Это вызывает появление «пузыря» в команде 3 и задержку остальных команд на 2 такта.

Продвижение операндов

От устройства Е результат операции передаётся не только в буфер В3, но и в буфер В2, где он на следующем такте будет использован устройством Е.

Скрытые конфликты по данным.

Пошаговый конвейер

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

Может возникнуть скрытый конфликт по данным. Обычно «запись после чтения» или «запись после записи». Они возникают в многоступенчатых конвейерах.

Для предотвращения:

Отказаться от команд с автоинкрементом/декрементом

Отказаться от сложных способов адресации

Ввести в команды специальный признак, разрешающий запись в регистр флагов

Передача управления

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

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