Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Конфликты по данным. Остановки конвейера



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

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

Хотя время выполнения одной команды в таком конвейере будет состоять из пяти тактов, в каждом такте аппаратура будет выполнять в совмещенном режиме 5 различных команд:

ADD R1,R6

SUB R2,R1

OR R3,R1

AND R4, R2

ANF R6,R4

65 65 65 65 65

В этом примере все команды, следующие за командой ADD, используют результат ее выполнения. Команда ADD записывает результат в регистр R1, а команды SUB и OR читают это значение. Если не предпринять никаких мер по предотвращению конфликта, то команды SUB и OR прочитают неправильное значение и попытаются его записать.

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

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

Классификация конфликтов по данным.

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

В примере был продемонстрирован конфликт, происходящий с регистровыми операндами. Но для пары команд возможно появление зависимостей при записи или чтении одной и той же ячейки памяти.

Рассмотрим команду i и i+1.

Возможны следующие три конфликта по данным, в зависимости от порядка операций чтения и записи.

WAR – запись после чтения.

i+1 команда пытается записать результат в операнд-приемник прежде, чем он считывается как операнд-источник i-ой команды.

RAW – чтение после записи.

i+1 команда пытается прочитать операнд-источник данных прежде, чем i-ая команда туда его запишет. Таким образом, i+1 может некорректно получить старое значение.

WAW – запись после записи.

Команда i+1 пытается записать операнд прежде, чем будет записан результат команды i, т.е. записи заканчиваются в неверном порядке, оставляя в операнде-приемнике значение, записанное командой i, а не i+1.

Конфликты по данным, приводящие к остановке конвейера.

Не все потенциальные конфликты по данным могут обрабатываться с помощью механизма обхода.

Пример:

MOV AX,Z

ADD AX,DX

SUB DX,BX

CMP DX,12441

PUSH CX

PUSHF

Этот случай отличается от последовательности подряд идущих команд обработки АЛУ. Команды пересылки MOV и операнды из памяти имеют задержку, которая и может быть устранена с помощью механизма обхода. В этом случае аппаратура приостанавливает конвейер, начиная с команды, которая хочет использовать данные в то время, когда предыдущая команда только их вырабатывает.

Методика планирования компилятора





Дата публикования: 2015-02-03; Прочитано: 964 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...