Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt_EVM.doc
Скачиваний:
20
Добавлен:
21.12.2018
Размер:
977.41 Кб
Скачать

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

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

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

Конфликты делятся на три группы:

– структурные,

– конфликты по управлению,

–  конфликты по данным.

8.3.1. Структурные конфликты

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

Существует две возможные причины структурных конфликтов.

1) Не полностью конвейерная структура процессора, при которой некоторые ступени отдельных команд выполняются более одного такта. При этом в работе конвейера возникают так называемые «пузыри» (т.к. обработка команд следующих за n-тактовой ступенью команды начинается через n-тактов), которые снижают производительность процессора (табл. 8.2.).

Таблица 8.2.

Образование «пузырей» в конвейере

Команда

Такт

1

2

3

4

5

6

7

8

9

I

IF

ID

OR

EX

WB

I+1

IF

ID

OR

EX

EX

EX

WB

I+2

IF

ID

OR

O

O

EX

WB

I+3

IF

ID

OR

O

O

EX

I+4

IF

ID

OR

O

O

Эту ситуацию можно было бы ликвидировать двумя способами.

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

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

2) Недостаточное дублирование некоторых ресурсов.

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

Борьба с конфликтами такого рода проводится путем увеличения количества однотипных функциональных устройств, которые могут одновременно выполнять одни и те же или схожие функции. Например, в современных микропроцессорах обычно разделяют кэш-память для хранения команд и кэш-память данных, а также используют многопортовую схему доступа к регистровой памяти, при которой к регистрам можно одновременно обращаться по одному каналу для записи, а по другому - для считывания информации. Конфликты из-за исполнительных устройств обычно сглаживаются введением в состав микропроцессора дополнительных блоков. Так, в микропроцессоре Pentium-4 предусмотрено 4 АЛУ для обработки целочисленных данных. Процессоры, имеющие в своем составе более одного конвейера, называются суперскалярными.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]