- •23. Нелинейные вычислительные конвейеры (принципы организации, конфликты за доступ к функциональным блокам, статическое и динамическое планирование запуска)
- •24. Применение конвейеров в современных процессорах (вычислительный конвейер и его стадии, fpu)
- •27. Закон Амдала
- •2 Вопрос
- •21* Проблема повышения степени интеграции средств вт
- •26* Молекулярные компьютеры
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 , ij.
После этого их увеличение уже не приводит к уменьшению Тка и повышению пропускной способности, так как они будут определяться самыми быстрыми из ФБ. Следовательно, если оптимально подобрать длины очередей, то пропускная способность асинхронного конвейера будет определяться самыми быстрыми из ФБ, а не самыми медленными, как это наблюдается в синхронных конвейерах. На основании формулы (3) показано, что спектр требуемых длин очередей целесообразно выбирать по формулам:
li Tci/Tk, ij, 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 раз по сравнению с линейным. На это можно пойти при высоком быстродействии элементной базы с целью снижения аппаратной сложности.