Современные высокопроизводительные компьютеры


Конфликты по данным, остановы конвейера и реализация механизма обходов


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

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

ADDR1,R2,R3IFIDEXMEMWB

SUBR4,R1,R5 IFIDEXMEMWB

ANDR6,R1,R7 IFIDEXMEMWB

ORR8,R1,R9 IFIDEXMEMWB

XORR10,R1,R11 IFIDEXMEMWB

Рис. 5.7, а. Последовательность команд в конвейере и ускоренная пересылка данных


(data forwarding, data bypassing, short circuiting)

ADDR1,R2,R3IFIDEXMEMWB

R W

SUBR4,R1,R5 IFIDEXMEMWB

R W

ANDR6,R1,R7 IFIDEXMEMWB

R W

ORR8,R1,R9 IFIDEXMEMWB

R W

XORR10,R1,R11 IFIDEXMEMWB

R W

Рис. 5.7, б. Совмещение чтения и записи регистров в одном такте

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


- Начало -  - Назад -  - Вперед -



Книжный магазин