Основни принципи на работата на конвейера- Част 2

- Секция Компютри

2. Видове конвейери
 

Конвейерите биват: еднофункционален и многофункционален. Еднофункционалният конвейер, както подсказва името му, е способен да изпълнява един тип базова функция. Многофункционалният конвейер е способен да изчислява функции от различни типове. В него, в допълнение към входа за данни, има управляващ вход, регулиращ действието на конвейера.
 
От своя страна, многофункционалният конвейер може да се класифицира по честотата, с която се изменя изпълняваната функция на конвейер. Така конвейерът бива със статична конфигурация (статичен конвейер) и с динамична конфигурация (динамичен конвейер).
 
· Статичен конвейер. - Изменението на типа на изпълняваните функции са относително редки и те стават непосредствено под управлението на програмата на програмиста. Пример за такъв конвейер е аритметичния конвейер във векторния процесор.
· Динамичен конвейер. - Изменението на типа на изпълняваните функции са чести, непрекъснати (динамични). Този тип конвейер се използува при изпълнение на командите на компютъра. Знаем, че по правило, всяка команда се отличава от предходните по формат и тип, и следователно е необходимо непрекъснато пренастройване на конвейера по отношение на изпълняваните функции . Понастоящем, в по-голямата част от процесорите се използува динамичен конвейер. Тука, в отличие от векторните процесори, фактическата реализация на конвейера много рядко се "вижда" от програмиста, а още по-малко се намира под негово управление.
Освен по честотата, с която се изменя изпълняваната функция, многофункционалните конвейери могат да се класифицират по пътищата по които данните се придвижват вътре в него. Така те могат да бъдат еднолинейни (еднопътни) и многолинейни (много пътни). При еднолинейните, потока от данни при произволна инициализация върви от една степен към следващата степен, независимо от типа операция. При конвейерите с множество от пътища, както подсказва наименованието им, има различни пътища при различните операции. Примерна структура на такъв конвейер е дадена на Фиг.4-5.
 


Фиг.4-5. Примерна структура на многофункционален, многопътен конвейер. (Кръгчетата на тази схема означават селектори, чрез които се избират пътищата в конвейера)
Този конвейер изпълнява следните операции: събиране и умножение на цели числа и събиране и умножение на реални числа. Със знакът x в Таблица 1 е показано използуването на всеки блок включен в конвейера за реализация на посочената операция.
 

 
Основен недостатък на многофункционалните, многопътни конвейери се явява лошото използване на наличните апаратни блокове, включени в структурата на конвейера. Това ясно се вижда от Таблица 1 - няма операция, в която да се използват всичките блокове едновременно. Следователно, различните блокове са натоварени различно - напр. блокове 1, 4 и 5 са заангажирани едва 50% от времето, а блокове 2 и 3 - само 25%. Това, при равна вероятност за изпълнение на четирите аритметични операции, дава средно натоварване на блоковете на конвейера 40%.
 
3. Проблеми на конвейерната обработка
 
Увеличената скорост на изчисление води до проблеми непознати при "класическата" обработка. По-важните от тях са:
Прекъсванията.

Системата от прекъсвания, която е достатъчно добре развита и ясна при класическата архитектура на фон Нойман, при високопроизводителните компютри и в частност при конвейерните търпи сериозно изменение и развитие.

Основната трудност идва от това, че няколко фрагмента от операнди или команди едновременно се намират на различни стадии на изпълнение. Както е известно, прекъсванията са асинхронни спрямо нормалното изпълнение на програмата. Така трудността се състои първо да се определи къде трябва да се постави форсиран преход за обработка на прекъсването и второ как точно да се продължи прекъсната програма след обработка на прекъсването. Трябва да се подчертае, че с нарастването на броя степени в конвейера (което означава като правило и по-висока производителност), се усложняват и задълбочават посочените по-горе трудности.
 
Задръжки в конвейера.
Задръжките в непрекъснатата работа на конвейера се определят от структурата или използуването на конвейера и пречат за неговата работа с максимална скорост. Те биват: структурни и зависещи от данните.
Структурните задръжки възникват когато два различни фрагмента от данни се опитват да използуват една и съща степен в конвейера едновременно. По очевидни причини такива случаи се наричат стълкновение.

Като пример за възникване на такива задръжки, нека да разгледаме работата на многофункционалния конвейер, чиято структура е дадена на Фиг.4-5. Поради наличието на няколко пътя в конвейера, възниква специфичен проблем, а именно структурна задръжка или стълкновение. Например, нека конвейерът последователно да изпълнява операциите "сумиране с плаваща запетая" и "сумиране с фиксирана запетая". В първият такт - Фиг.4-5 операцията "сумиране с плаваща запетая" ще заеме степен
2. Във вторият такт тази операция ще постъпи в степен 4. Но в същия този такт, по логиката на работа на конвейера, операцията "сумиране с фиксирана запетая" трябва също да заеме четвъртата степен. Настъпва конфликтна ситуация, която управляващият механизъм на конвейера трябва да предотврати.

За щастие, този тип проблеми подлежат на аналитично решение и могат да се отстранят още по време на проектирането на конвейера.

Задръжките зависещи от данните възникват, когато това, което протича в една степен от конвейера определя, могат ли данните да преминават през другите степени. Например, две различни степени трябва да използуват общата памет. Когато едната степен използува паметта, то другата, за която също е необходима памет, трябва да "работи" напразно, докато първата не завърши работата си. За разлика от структурните, тези задръжки изцяло зависят от данните и не се поддават на аналитично изследване.

Между командни зависимости.

Този тип проблеми възникват при конвейерното изпълнение на команди. Едновременното изпълнение на съседни команди може да влияе на използуваните от тях операнди и изчислените от тях резултати. Типичен случай на такова влияние е когато i-та команда трябва да прочете някакъв елемент от данни, а i+1-та команда да го измени. С увеличаване на броя степени в конвейера, повече команди се намират в него на различен стадий на обработка и проблемът се задълбочава..

Проблем със запълването на конвейера.

Както стана ясно, за да работи максимално ефективно конвейера, е необходимо всички степени в него да са натоварени. Ако дължината на обработвания вектор е съизмерима с броя степени на конвейера, или в програмата често се срещат команди за преход, то през по-голямата част от времето степените в конвейера няма да са натоварени или ще изпълняват ненужни за конкретния процес команди и от тук следва да се очаква намаляване на производителността на конвейера.
 
 
Литература
1. П.М.Коуги. Архитектура конвейерных ЭВМ. М., "Радио и связь", 1985, стр.9-94.
2. М. Амамия, Ю. Танака Архитектура ЭВМ искусственный интеллект.М., Мир, 1993, стр.57-63.
3. Стоян Марков. Изчислителни системи с висока производителност, С., Техника, 1990, стр.39-64.

 






Коментирай свободно: