Особенности функционирования суперконвейерных архитектур. Конвейерная архитектура. Сравнительные особенности функционирования суперскалярных и суперконвейерных архитектур, страница 2

Тип архитектуры

Скалярная с  К-ступенчат. Конвейером

Суперскалярная  со степенью

«m»

Суперконвейерная

со степенью

«n»

Суперскалярная,

Суперконвейерная

со степенью «m,n»

Машинный цикл конвейера

1

базовый цикл

1

1/n

1/n

Количество считанных команд

1

m

1

m

Задержка считывания

Команды

1

1

1/n

1/n

Задержка простой операции

1

1

1   (n 1/n)

1   (n 1/n)

Степень  параллелизмаКоманд (ILP)

1

m

n

mхn


7. Решение проблем зависимости по данным и по ресурсам в современных МП.

Поясним взаимозависимость на примере фрагмента программы.

//рисуночек он выдавал,  там фрагмент программы и названия этих зависимостей. На всякий случай код ниже:

I1. Load r1, a

I2. add r2, r1

I3. add r3, r4

I4. mul r4, r5

I5. comp r6

I6. mul r6, r7

Для фрагмента программы показаны графы зависимости по данным между командами.

1. Содержимое регистра R1  загружается командой I1 и затем используется командой I2. В этом случае мы имеем зависимость от потока данных между I1  I2  (flow dependence).

2. Так как результат в регистре R4 после выполнения I4 может влиять на операнд в регистре R4, используемый командой I3, мы имеем обратную зависимость I3    I4 (antidependence).

3. Поскольку обе команды I5 и I6 изменяют содержимое регистра R6 и он является одним из операндов для I6, мы имеем обе зависимости от потока и выходного результата  I5    I6  и I5   I6. (Output-dependence and also flow dependence)

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

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

Декодирование команд и переименование ресурсов.

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

Например, Sum r3, r3,  5. значение r3 складывается с константой 5 и результат записывается в r3. Из ближайшего списка  свободных регистров берем R1 и R2 и производим переименование: Sum R2, R1, 5. теперь действия выполняются над физическими регистрами.

В следующей команде MUL  r3, r4.  вместо логического регистра r3 будет использован физический регистр R2. Это исключает лишние зависимости. Для управления занятием и освобождением физических ресурсов используются счетчики, которые инкрементируются при занятии ресурса и декрементируются при освобождении. При достижении счетчиком нуля физические регистры возвращаются в пул свободных.

Исполнение команд и использование множественных функциональных единиц.

При считывании и исполнении команд отдельные ступени конвейера становятся «узким» местом всего процессора. Чаще всего это встречается на исполнительной ступени конвейера. Для решения задачи используются буферные очереди.

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