Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Архитектура ВС (Карцева А.С.) / Lection / Лекция 8_1 - конвейеры

.doc
Скачиваний:
97
Добавлен:
10.05.2015
Размер:
110.59 Кб
Скачать

Линейные конвейеры

Делятся на синхронные и асинхронные:

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

Асинхронные: этапы конвейера слабо связаны.

Примеры асинхронного конвйереа – систолические матрицы.

Синхронные линейные конвейеры

Как определить период времени между тактами процессора. Предположим, что время получено посредством моделирования или эмпирически.

Тактовый интервал конвейера – максимальное время для любого этапа конвейера плюс время для загрузки данных в регистры и отделения их от других стадий конвейера . Это время является минимальным clock period конвейера.

Поскольку при получении такового сигнала процессора некоторым блоком может возникать погрешность, необходимо ее учитывать при расчета clock period

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

Т.о. длина пути с временем должна быть меньше или равна минимальной задержке на стадии минус возможную погрешность сигнала .

т.о. значение тактового интервала лежит в пределах от до плюс максимальная длина сигнала .

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

УСКОРЕНИЕ

Наилучшее время выполнения на конвейере из K стадий N команд с тактовый интервалом С будет равно:

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

или .

При , ускорения равно единице, то есть его нет. При, ускорение стремится к K.

Эффективность конвейера – отношение ускорения к числу стадий конвейера.

Пропускная способность – произведение эффективности и скорости (частоты F – обратная величина от тактового периода), на которой работает конвейер.

Таким образом, если , эффективность равна 1, пропускная способность равна F.

НЕЛИНЕЙНЫЕ КОНВЕЙЕРЫ

Конвейер может быть не только линейным, то есть стадии представляют собой цепь. Иногда более эффективно является соединение функциональных единиц в нелинейную схему, с циклами и обходами. Это позволяет выполнять в конвейере одновременно более одной функции. Проблема в использовании таких конвейеров – это невозможность полной загрузки конвейера, из-за конфликтов между функциями.

Пример нелинейного конвейера:

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

Как только функция X начала выполняться, другая функция Х может начать выполнение только через 1, 3 или 6 тактов. Функция У может быть запущена после 2 или 4 тактов.

После запуска функции У, функция Х сможет начать выполнение после 1, 3 или 5 тактов, а другая функция У – только через 2 или 4 такта. После того, как начали выполняться 2 фукнции, никакая другая не сможет быть запущена, пока одна из них не выполнится полностью.

КОНВЕЙЕРЫ КОМАНД

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

Учитывая, что выполнение одной команды на одной стадии происходит за один такт, потери от условных переходов равны B стадиям, - вероятность, что данная команда является переходом, - вероятность, что переход выполнится, тогда среднее время выполнения команды (не учитывая первую команду) равно:

а эффективность:

1 / (1 + B * Pj * Pt).

Например, если потери от условных переходов равны 3, вероятность, что команда является переходом, - 0.2, вероятность, что переход выполнится – 0.4, среднее время выполнения команды будет равно 1.24 такта, эффективность составит 80,6%. Таким образом мы теряем только 20 % эффективности конвейера, если одна из пяти команд будет переходом, 40% во времени выполнения, если переход выполнится. (что в общем лучше среднего)

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

Пример:

Пусть дан 7-стадиный конвейер:

- Выборка (F)

- Декодирование (D)

- пуск команды (I)

- выполнение 1 (1)

- выполнение 2 (2)

- выполнение 3 (3)

- запись результата (W)

Выполняются 2 операции:

X = Y + Z

A = B * C

Конвейер работает в следующем порядке:

R1 - Y F D I 1 2 3 W

R2 - Z F D I 1 2 3 W

R3 - R1 + R2 F D ­p *1 ­p I 1 2 3 W

X - R3 F ­p *2 ­p D ­p *3 I 1 2 3 W

R4 - B F ­p *4 D I 1 2 3 W

R5 - C F D I 1 2 3 W

R6 - R4 * R5 F D ­p *5 ­p I 1 2 3 W

A - R6 F ­p *6 ­p D ­p *7 I 1 2 3 W

Отметим «пузыри» в конвейере. Эффективность такого выполнения в 24 такта относительно оптимального выполнения в 14 тактов для 8 инструкций составляет 58%. Рассмотрим все случаи:

1) Сигнал Add для сложения двух операндов не может быть подан, пока второй операнд не будет записан в регистры.

2) Поскольку декодер остановлен, операция Store не может декодироваться.

3) Так как выполнение Store зависит от результата операции Add, она может быть запущена по крайней мере за один цикл до записи результатов Add в регистры.

4) Хотя операция загрузки В в R4 независима от предыдущих команд, декодирование приостановлено.

5) Умножение не может быть выполнено, пока операнды не буду готовы.

6) Декодирование приостановлено, пока не будет запущено операция умножения.

7) Результат умножения еще не получен.

Можно увеличить эффективность конвейера, если реорганизовать команды:

R1 - Y F D I 1 2 3 W

R2 - Z F D I 1 2 3 W

R4 - B F D I 1 2 3 W

R5 - C F D I 1 2 3 W

R3 - R1 + R2 F D *1 I 1 2 3 W

R6 - R4 * R5 F *2 D *3 I 1 2 3 W

X - R3 F *4 D I 1 2 3 W

A - R6 F D *5 I 1 2 3 W

Выполнение происходит в 17 тактов, однако при этом остаются приостановы.

1) Команда Add остановлена, пока операнд не записан в регистр.

2) Декодер остановлен.

3) Команда умножения вынуждена ждать записи операндов в регистры.

4) Декодер остановлен.

5) Команда Store остановлена, пока не получен результат умножения.

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

Соседние файлы в папке Lection