Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety / 22-28 21-26.docx
Скачиваний:
24
Добавлен:
12.04.2015
Размер:
78.07 Кб
Скачать

1 вопрос

22. Асинхронные линейные вычислительные конвейеры

Фото 22 Ватутин

Типикин:

Структура асинхронного конвейера

Кв.

Орj Ор,,j+1

l2

очередь

Тс1 Тс2 Тск

Несколько уменьшается время загрузки Тнз = i< КТсмах. Синхронизация применяется только на входе. Операнды загружаются в конвейер периодически с конвейерным тактом, задаваемым стробами приема во входной регистр ФБ1.

Подобрана следующая эмпирическая формула для оценки требуемого конвейерного такта:

Тка  max {min {Tci}, {Tci/li}}, (3)

где из второго множества исключается элемент по Tj=min {Tci}, так как на входе ФБj сразу целесообразно выбрать минимальную длину очереди lj = 1. Отсюда следует, что длины очередей li имеет смысл увеличивать только до тех пор, когда все элементы второго множества станут меньше, чем tj:

Tci/li<tj=min{Tci}, i=1,k , ij.

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

li Tci/Tk, ij, i=1,k ,

где j=arg min {Tci}, a lj=1;

Тк – требуемое значение конвейерного такта, которое должно подчиняться неравенству:

Tk  ti = min {Tci}.

23. Нелинейные вычислительные конвейеры (принципы организации, конфликты за доступ к функциональным блокам, статическое и динамическое планирование запуска)

Фото 23 Ватутин не все

Типикин: Нелинейные конвейеры

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

Структура нелинейного конвейера с совмещением вычисления двух функций Х и У.

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

NTk

1

2

3

4

5

6

7

8

1

2

3

4

5

6

ФБ1

x

.

,

х

.

х

у

.

,

у

.

ФБ2

х

.

х

. ,

,

у

.

,

ФБ3

х

.

х

. ,

х

. ,

у

.

у

. ,

у

NTk – номер конвейерного такта в процедуре вычисления функции.

Если не совмещать вычисление двух функций, то запуск очередного конвейерного вычисления функции Х на новом наборе аргументов можно было бы выполнять или на 2-ом (обозначено точками), или на 4-м (обозначено запятыми), или на 7-ом такте; а функции У-или на 2-ом, или на 4-ом такте, или 6-ом такте, или позже. Запуск совместного параллельного с Х вычисления функции У можно было бы начинать или на 3-ем, или на 5-ом такте. Однако следующий конвейерный запуск совместного вычисления функций Х и У на новых наборах их входных аргументов можно выполнять только на каждом 7-ом такте от их начальных запусков. Иначе возникают конфликты между ними за владение одними и теми же ФБ. Например, совместный начальный запуск можно выполнять так: Х – на 1-ом такте, У – на 5-ом такте, а далее выполнять их конвейерные запуски в следующей последовательности: Х – на 7-ом, 13-ом, 19-ом, и т.д. тактах; У – на 11-ом, 17-ом, 23-ем и т.д. тактах. Следовательно, минимальный конвейерный такт в данном нелинейном конвейере приходится увеличивать в 6 раз по сравнению с линейным. На это можно пойти при высоком быстродействии элементной базы с целью снижения аппаратной сложности.