Скачиваний:
30
Добавлен:
01.05.2014
Размер:
1.67 Mб
Скачать

3.5. Пример проектирования

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

Задача состоит в проектировании конвейера, который с периодическим интервалом принимает аналоговый сигнал X, на каждом интервале времени берет последние четыре значения Х(i), Х(i-1), Х(i-2) и Х(i-3) и, применяя к ним симметричный фильтр, вычисляет выходную величину

Z(i) =a(Х(i) +Х(i-3))+b(i-1)+Х(i -2)).

Полагаем, имеются следующие компоненты: одноступенчатый конвейерный аналого-цифровой преобразователь (АЦП), двухступенчатый конвейерный сумматор и одноступенчатый цифро-аналоговый преобразователь (ЦАП) — все с минимальным временем Т для ступени. Имеются также четырехпозиционная память, способная выполнять одну операцию чтения или одну операцию записи каждые Tсекунд, и двухступенчатый умножитель способный принимать новые входные данные каждые 2Т секунд. Наконец, предполагаем, что имеется также любая логика, необходимая для объединения всех компонентов в систему.

Разбиение рассматриваемой функции на подфункции приводит к инициации, выглядящей примерно так:

1) использовать АЦП для получения Х(i);

2) циклически записывать это значение в четырехпозиционную память, так что в ней будут храниться Х(i), Х(i-1), Х(i-2) и Х(i-3);

3) прочитать Х(i) и Х(i-3) и сложить их;

4) умножить результат шага 3 на а;

5) прочитать Х(i-1), Х(i-2) и сложить;

6) умножить результат шага 5 на b;

7) сложить результаты шагов 4 и 6;

8) вывести результат шага 7 через ЦАП.

На основе этого разбиения можно набросать возможную таблицу, занятости (рис.3.30). Из нее получаем множество запрещенных латентностей {0,1,2,3,4,5,7} и начальный вектор столкновений 11111101. Выходная величина Z(i) появляется через 13 циклов после ввода Х(1). Из таблицы занятости следует, что нижняя граница для МАLравна 5 (пять меток во второй строке), а из вектора столкновений следует, что имеется хотя бы один жадный цикл средней латентности, равной 7 или меньше (7 единиц в векторе). Это показывает, что мы можем запускать новую инициацию в среднем по меньшей мере один раз на каждые 7 циклов, но не чаще, чем один раз на каждые 5 циклов. Чтобы выяснить, что именно возможно, можно построить и проанализировать диаграмму состояний (или в данном случае отыскать вектор 11111101 в приложении). В результате находим, что (выявляется оптимальным жадным циклом. При этом не достигается нижняя граница (равная 5) для МАLи возможности ступеней оказываются недоиспользованными.

Теперь допустим, что разработчик этой системы хочет повысить ее производительность, доведя среднюю латентность до 5, и хочет реализовать постоянный цикл латентностей (5). Теорема о введении задержек показывает, что это возможно, если все сроки таблицы занятости могут быть выражены через максимальные классы совместимости множества HCmod5 цикла (5). Из леммы 3.9 следует, что в эти классы входят набор {0, 1, 2, 3, 4} и все другие наборы, получаемые из него прибавлением ко всем элементам константы и/или произвольных кратных числа 5.

Со строкой 1 таблицы проблем не возникает; строка 2 имеет Вид 1+ {0,1,2,3,4}, т.е. удовлетворяет ограничениям. Точно так же строки 5 и 6 имеют вид Х+{0,2}, а строка 7 — 13+{0}. Проблема возникает со строками 3 и 4, которые имеют вид X+ {0,2,7}; число 7 равно 2+1*5; таким образом, элемент 2 используется дважды; что недопустимо. Поэтому нужно вставить задержки, чтобы изменить форму этих строк. Наиболее легкий и очевидный способ состоит в том, чтобы задержать начало операции (7) на один цикл. Для этого требуется задержка и операции вывода (8), что не составляет проблемы. Задержка операции (7) приводит к строке 3 вида 4 + {0, 2, 3,+1,5} , что по теореме 3.2 допустимо. На рис. 3.31 показана итоговая таблица занятости. В качестве проверки устанавливаем, что начальный вектор столкновений имеет вид 111110101. Заглянув в приложение, убеждаемся, что жадный цикл (5) теперь возможен и он является оптимальным.

На рис. 3.32 показана одна из возможных аппаратных реализаций этой таблицы занятости. Отметим, что некоторые фиксаторы ступеней заменены на двухпозиционные регистровые файлы. Некоторые из них, например файлы А и В, используются потому, что задача требует двух отдельных сложений. Таким образом, пара А0, В0 поддерживает сложение Х(i)+Х(i-3), а пара А1, В1 - Х(i-1)+Х(i-2). Точно так же файлы Е иFподдерживают два умножителя. Мы предполагаем, что частью инициализации является загрузка F0 иF1 двумя константами а иbрассматриваемого фильтра. Наконец, файлы С и В поддерживают заключительное сложение с его входной задержкой.

Следующий шаг построения последовательности латентностей (стратегии диспетчеризации) и конвейера ("аппаратного" прохождения данных) заключается в том, чтобы составить план работы конвейера во времени, которому во всех случаях должен следовать механизм управления. Поскольку период равен 5, а время вычисления 15, в любом наборе из 5 циклов будут иметься различные части 15/5 = 3 инициации. Одна из инициации только начинается, другая находится в середине вычислений, а третья заканчивается. Как было показано в разделе, посвященном микропрограммированию, важно, чтобы механизм управления отслеживал, в каком месте своих вычислений находятся все три инициации. Для формализации сказанного разделим все время на наборы по 5 циклов каждый (рис. 3.33). Предполагается, что в момент времени 5ii-я инициация только начинается (в 0-й относительно таблицы занятостимомент); (i—1)-я инициация находится на шаге 5 своих вычислений, а (i—2)-я начинает свой десятый шаг. В момент времени 5i+1 все три инициации продвигаются на один шаг. В момент времени 5i+5 начинается (i+1)-я инициация, а прежняяi-я инициация начинает теперь "исполнять "действия второго столбца на рис. 3.33. В момент времени 5i+10i-я инициация начинает "исполнять" третий столбец.

Пустая клетка на рис. 3.33 в момент времени 51+1 в третьем столбце представляет задержку на одну единицу времени, введенную в таблицу занятости для увеличения производительности. Заметим, что запись в регистр D0 осуществляется в момент 5i, а чтение из него — в момент 5i+2, как и требуется для задержки в единицу времени. Однако в данной задаче никакая другая инициация не делает попытки писать в файлDза этот период времени. Поэтому, строго говоря, нет необходимости использовать здесь регистровый файл. Достаточно иметь простой фиксатор. Однако в общем случае необходимо выполнить анализ, подобный проведенному, чтобы определить, необходим или нет регистровый файл. Он был бы необходим, если бы другая инициация производила вDв момент времени 5i+1.

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

ЗАДАЧИ

3.1.Пусть с – число нулей в начальном векторе столкновений; покажите, что для любого статического конвейера и любой модифицированной диаграммы состояний: а) число нулей в любом неначальном состоянии всегда меньше с; б) общее число состояний не больше 2с.

3.2.Можете ли вы высказать аналогичные утверждения для динамического конвейера?

3.3.Выполните для вектора столкновений 1101000011011 полный анализ состояний.

3.4.Покажите, что таблица занятости на рисунке 3.16,а имеет оптимальный цикл (4).

3.5.Покажите, что если числаL­­1,L2,…,Lnс суммойLвходят в цикл латентности, то он будет правильным циклом некоторой таблицы занятости, если только L-й разряд соответствующего начального вектора столкновений содержит 0.

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

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

3.8.Переделайте теорему 3.1 в теорему, ссылающуюся на множестваHCmodpиGCmodp. Докажите ее. Обратите особое внимание на то, что делать с латентностью, равной 0.

3.9.Докажите формально теорему 3.2.

3.10.Найдите все максимальные классы совместимости цикла (1,9), которые содержат 2. Является ли этот цикл совершенным?

3.11.Покажите, что цикл (5,3) совершенный.

3.12.Каково максимально возможное использование произвольной ступени конвейера, который вычисляет инициации из некоторой таблицы занятости с циклом латентностей (2,3,7) ?

3.13.Не рисуя диаграммы состояний, определите, поддерживает или нет следующая таблица занятости циклы (3,4) и (2,3,7).

3.14.Пусть Х – положительная нулевая дробь (т.е. 0<X<1); разложение 1/Х можно записать так:

где Z=1-X.

Пусть у вас имеются одноступенчатый конвейерный сумматор и двухступенчатый конвейерный умножитель. Разработайте таблицу занятости для приближения (1 + Z)*(1 +Z2). (Вы можете попытаться использовать и другие, но эквивалентные алгебраические выражения). Выполните анализ состояний и найдите оптимальную последовательность латентностей. Если она не достигает границы МАL, то выберите совершенный цикл и вставьте соответствующие задержки. Спроектируйте конвейер, который будет поддерживать эту таблицу занятости. Покажите пути обратной связи, а также покажите, какие фиксаторы должны заменяться на регистровые файлы (если это вообще надо делать) и сколько регистров необходимо иметь в каждом файле.

3.15.Докажите лемму 3.10.

3.16.Выберите на рис. 3.18 шесть различных циклов и вычислите среднюю латентность. Какой (или какие) из этих циклов является наилучшим (и) для каждого критерия производительности, упомянутого в подразд. 3.3.2?

3.17.Разработайте диаграмму состояний для динамического конвейера, имеющего следующие таблицы занятости:

а. Каково максимальное число инициации любого рода и в любом порядке на цикл? С каким процентом инициации А от общего числа это наступает?

б. Чему равна наилучшая средняя латентность, если последовательность инициации имеет вид ААВВ или АВВ?

3.18.Разработайте диаграмму состояний для таблицы занятости на рис. 3.31

3.19.Для задачи вычисленияX(i)=X(i-1)+X(i-2)+b(i), гдеX(0)=0 и X(-1)=0, напишите микропрограммы (с привязкой ко времени и данным) для примера конвейера, приведенного в подразд. 3.4.3. Попытайтесь, используя методы из разд. 2.4, ускорить процесс решения этой задачи.

3.20.Опишите возможный микропрограммный контроллер для примера проектирования приведенного в разд. 3.5. Набросайте микропрограмму с привязкой ко времени для решения этой задачи фильтрации.

1Автор сталкивался с этим много раз при реализации новых алгоритмов на матричном процессоре 3838 фирмыIBM

Соседние файлы в папке Архитектура конвейерных ЭВМ