ГЛАВА   3

 

Асинхронни  конвейери

Asynchronous  pipelines

 

 

3.1.  Четири-фазов асинхронен микроконвейер с еднотактови и многотактови конвейерни звена

3.2.  Асинхронен конвейер с многотактови микроконвейерни звена

3.3.  Нелинейни асинхронни микроконвейери

3.3.1.  Handshake контролер за 3-алтернативен условен преход

3.4.  Управление на звено в обща точка на конвейер

3.5.  Възстановяване реда на резултатите, слизащи от конвейер

3.6.  Автомати за управление на конвейерни звена в общи точки на конвейери, съдържащи буфер за възстановяване на реда на изходните резултати

3.7.  Автомати за управление на конвейерни звена в общи точки на конвейерни системи и разгънати цикли

3.8.  Асинхронни циклически конвейерни структури с многотактови тела със следусловие

3.9.  Асинхронни циклически конвейерни структури с многотактови тела с предусловие

3.10.  Общо разположение на циклически тела

3.11.  Паралелни микроконвейери

3.12.  Суперскаларни конвейери

3.13.  Заключителни бележки по глава 3

 

 

В тази глава като цяло са изложени проблемите, свързани със синтеза на общи и уникални по структура асинхронни микроконвейери и микроконвейерни системи. Анализът на всяка от разгледаните теми изявява множество нови научни задачи. Такива са задачата за възстановяване на реда на конвейерните резултати, задачата за арбитриране на заявките в общите точки, задачата за естествения паралелизъм, за суперскаларност, както и задачите за синтез на множество оригинални конвейерни автомати. Представени са линейни и нелинейни конвейери, конвейери с циклически структури, паралелни и суперскаларни конвейери.

Асинхронната конвейерна организация се осъществява чрез принципа на “ръкостискане” между съседни конвейерни звена. Този принцип се реализира с помощта на конвейерните автомати. За нуждите на тези конвейери са синтезирани и изследвани множество нови и оригинални логически схеми на конвейерни автомати.

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

 

 

3.1.  Четирифазов асинхронен микроконвейер с еднотактови и многотактови конвейерни звена

 

Според класическото разбиране, под конвейер (микроконвейер) се разбира последователно включени конвейерни звена, чиято задача е да реализира поредната операционна преработка на порция данни. В този смисъл конвейерното звено е специализирана за дадена операция (логическа или аритметическа) хардуерна структура. Тази структура, в най-елементарния смисъл, се състои от регистър фиксатор и комбинационна логическа схема, а в общия случай това може да бъде сложна самостоятелна структура. Фиксаторът поддържа данните, а комбинационната схема реализира необходимите изчисления, но като такава не е задължителна. След всеки един записващ импулс, подаден към фиксатора (конвейерен регистър), в даденото звено постъпват и започват да се преработват нови данни. Така при всеки записващ импулс резултатът от едно звено преминава в следващото звено. В смисъла на това управление, конвейерните звена с такава структура могат да бъдат определени като еднотактни. Продължителността на тактовете в отделните звена се определя от продължителността на времето за превключване на комбинационната схема на звеното. Придвижването на данните в асинхронни конвейери от споменатия тип, от звено към звено, се реализира въз основа на принципа, наречен “ръкостискане”, в 2-фазов или 4-фазов асинхронен протокол. Протоколът се реализира от управляваща схема, която съдържа някакъв вариант или аналог на описания вече Мюлер С-елемент. Същността на управлението е асинхронна, тъй като придвижването на текущите резултати от звено към звено, е възможно само ако последното е свободно.

В глава 2 бяха разгледани конвейерни звена, чиято структура се характеризира с наличието на вътрешна обратна връзка. Тези конвейерни звена реализират итерационен изчислителен процес и са синтезирани като синхронни устройства. Те функционират като такива благодарение на локален тактов генератор. Предвид на вътрешното (локалното) тактуване, конвейерните звена от този вид могат да бъдат определени като многотактови. Закъсненията, които такива звена генерират, са съществено различни, ето защо като завършени устройства те могат да бъдат включвани единствено в състава на асинхронни конвейери.

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

 

3.1.1.  Дефиниране на многотактово микроконвейерно звено

Изложеното в глава 2 налага ново определение за многотактовите микроконвейерни звена. Синтезирани като синхронни устройства, те си приличат по това, че съдържат вътрешна обратна връзка. Обобщената логическа структура на звената от този вид е представена на фигура 3.1.1.

 

Фиг. 3.1.1.  Обобщена структура на многотактово МКЗ

 

Структурата съдържа три основни елемента – регистров файл (Register_File), който се състои от един или повече регистри и съвкупност от комбинационни логически схеми (Operation_Logic), реализиращи необходимите изчисления. Най-съществената особеност на тази структура е вътрешната обратна връзка, която е естествена предпоставка за състезания. По тази причина регистрите в многотактовите звена са реализирани чрез динамични тригери със структура Edge, превключващи се само по един от фронтовете на управляващия сигнал за запис.

Третият елемент (Control) – вътрешната управляваща схема, е неразделна част от тези звена и реализира върешносхемното им управление. Тя е резултат от процеса на синтез на цялостната логическа структура на звеното в духа на разбиранията, изложени в раздел 2.1. Този елемент обаче неизбежно участва в диалога със съседните конвейерни звена, като обработва и генерира съответните сигнали – флагове на състоянието SS (Status Signals) и управляващи CS (Control Signals).

 

3.1.2.  Организация на микроконвейера

Конвейерите, разбирани като последователност от регистри фиксатори и комбинационни схеми, имат логическата структура, показана на фигура 3.1.2.

 

Фиг. 3.1.2.  Структура на микроконвейер

 

В повечето публикации тези двойки структурни елементи се разглеждат като свързани, т.е. като един общ елемент – конвейерно звено. Това разбиране обаче налага тук да бъдат изложени нови и оригинални съображения относно структурата на конвейера, които извеждат на преден план значението на операцията запис на данни в регистъра фиксатор, а не подредбата на структурните елементи. Разбирането, което е изложено по-долу, е в основата на представеното тук по-долу решение за управление на асинхронния конвейер.

В структурата от фигура 3.1.2 съвсем условно, под микроконвейерно звено може да се разбира двойката регистър-логика (случай А) или двойката логика-регистър (случай В).

Едно микроконвейерно звено може да приеме данни от предходно звено само ако е свободно, т.е. ако резултатът, който е изчислило, е вече приет в следващото звено, независимо дали се разглежда организация А) или организация В). В първия случай (А) това означава, че за да работи текущото звено с коректни данни, трябва да извършва запис след като логиката на предходното звено завърши своето превключване, т.е. трябва да изчаква закъснението на предходното звено, отчетено спрямо момента на неговия запис.

Във втория случай (В), веднага след записа в регистъра, текущото звено не е в състояние да подава коректни данни към следващото звено, тъй като съответстващата му логика още не ги е изчислила. И в двата случая проблемът е един и същи и е свързан с момента на запис във всеки отделен регистър. Общият извод от тези разсъждения е, че всеки регистър трябва да поддържа данните толкова време, колкото е необходимо на следващата го логическа схема да изчисли своите резултати. В този смисъл всеки един регистър може да бъде определен като зает във времевия интервал с начало записа в предходния регистър и с край - краят на превключването на предхождащата го логическа схема и докато данните в него са все още нужни за надеждно записване на резултата в следващия регистър. С други думи, състоянието на фиксатора се определя от това дали следващият фиксатор се е освободил и от това дали предхождащата го логика се е превключила. Както се разбира, изказаното положение не зависи от структурната интерпретация на конвейерното звено (случай А или случай В). От тук следва, че е правилно да се говори за свободен или зает регистър фиксатор, а не за цяло звено.

Ако се приеме, че изчисленията са съсредоточени в логическата схема (като елемент в структурата на конвейера), то в общ смисъл на нейно място може да се има предвид всяко многотактово микроконвейерно звено, което представлява интерес тук. Тъй като коректността на данните в конвейера се определя единствено от моментите на запис в регистрите фиксатори, това дава основание за интерпретация като такъв на съответния входен или изходен регистър в многотактовите звена. Поради това, че в многотактовите звена тези регистри са обхванати от вътрешните обратни връзки, още веднъж следва да се отбележи, че те се превключват само по един от фронтовете на управляващите сигнали за запис, които са функция на локалния тактов генератор (Local_Clock) (фигура 3.1.1).

При последователното свързване на конвейерните звена за управление се използва асинхронна (събитийна) логика, основаваща се най-често на Мюлер С-елемента. При настъпване на такива събития този елемент променя всеки път своето състояние в противоположното, като с това управлява записа на данни във фиксаторите. Управлението на конвейера в този случай се изразява със следната последователност от конвейерни автомати (фигура 3.1.3), в която не са изразени регистрите фиксатори.

 

Фиг. 3.1.3.  Условно представяне на 2-фазов асинхронен микроконвейер

 

В схемата са възприети обикновено употребяваните означения – DL (delay) за закъснение, Req (Request) за заявка за обмен, Ack (Acknowledgement) за потвърждение за успешен обмен, W (Write) за запис. Закъснителните елементи DL изразяват условно реалните закъснения на комбинационните схеми в отделните звена.

Логиката на това управление е “без връщане в нула” и реализира 2-фазов протокол на обмен. Тя изисква за реализация на регистрите фиксатори запомнящи елементи, които записват данни и по двата фронта на сигнала W, тъй като С-елементът се превключва в кръг от две съседни звена (фигура 3.1.3). Тъй като в многотактовите микроконвейерни звена, които следва да се включат в състава на конвейера, се използват регистри фиксатори, които работят само по единия от фронтовете, за алгоритъм на конвейерния автомат са възможни варианти само на 4-фазовия протокол, т.е. логика “с връщане в нула”. С цел по-висока производителност тук е приложен 4-фазовия протокол с изпреварващо нулиране.

Протоколът за обмен с изпреварване се постига чрез изпреварващо нулиране на С-елемента, което се предлага да се реализира, като се отчете закъснението при запис, въвеждано от тригерите на фикасаторите. Това закъснение може да се отдели условно от общото закъснение на операционната логика по начина, показан на фигура 3.1.4.

 

Фиг. 3.1.4.  4-фазов микроконвейер с предварително нулиране на С-елемента

 

От схемата се вижда, че С-елементите са снабдени с допълнителен вход за нулиране, на който е подаден сигналът от закъснението на фиксаторите Res (Response). Елементът, който го реализира е означен DL1. DL2 е елементът, който отчита закъснението на операционната логика в звеното.

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

 

Фиг. 3.1.5.  Структурна схема на микроконвейера

 

Конвейерният автомат е синтезиран върху логиката, представена на фигура 3.1.4.

Всеки С-елемент работи съвместно с един D-latch тригер, който запомня състоянието на С-елемента при запис във фиксатора, т.е. при старт на изчисленията в конвейерното звено. Състоянието на С-елемента е необходимо да се запомни, защото в противен случай не е възможно правилното генериране на сигнала Req. След това С-елементът изпреварващо се нулира чрез сигнала от инверсния изход на D-latch тригера. Тъй като С-елемeнтът и D-тригерът са обхванати от обратна връзка, при което задният фронт на сигнала W се застъпва във времето с предния фронт на неговото закъснение DL1, то надеждното записване в този тригер изисква фиксиране на състоянието по предния фронт на закъснението DL1. Именно с такава цел във веригата на вход С е включен детекторът на преден фронт DF­, а във веригата на обратната връзка – закъснението DL1, което задържа във времето задния фронт на сигнала W, по отношение на задния фронт на записващия импулс DF­. За използвания D-latch тригер продължителността на генерираният импулс t1 трябва да е по-голяма от времето за неговото превключване (t1>2.t). С t е означено времето за превключване на един логически елемент в схемата на тригера.

От своя страна D-latch тригерите се нулират изпреварващо от сигналите Ack. Това е необходимо, тъй като се очаква при създаване на съответните условия, С-елементът да се превключи отново в единично състояние, което в последствие да се фиксира от същия тригер. Имайки предвид потенциалния характер на асинхронните сигнали във веригите за управление на конвейера, нулирането на D-тригера трябва да се осъществи по предния фронт на сигнала Ack. За целта пред входа R на D-тригера е поставен детектор на фронт FD­, аналогичен с вече описания. Така след нулиращия импулс, на входа R се установява ниско ниво, докато в същото време сигналът Ack продължава да има високо ниво. За да се отдалечи във времето превключването на С-елемента, сигналът Ack е задържан от елемента DL3. Стойността на закъснението t3 следва да бъде по-голяма от времето за превключване на С-елемента плюс времето за превключване на тригера. Така ще се осигури надеждното нулиране на последния и отпадане на нулиращия импулс, с което няма да се попречи на следващия запис в същия тригер.

По-детайлно процесът на стартиране на микроконвейерно звено №(k) (вижте фигура 3.1.5) е представен чрез времедиаграмата на фигура 3.1.6. Преди това обаче е полезно да се отбележи, че при стартиране, всеки конвейерен автомат се превключва от начално в противоположно състояние (W=1), в което престоява кратко време, определено от закъснението DL1. Това превключване, както вече беше отбелязано, се запомня в D-тригера. Последният от своя страна превключва С-елемента обратно в начално състояние (W=0).

 

Фиг. 3.1.6.  Времедиаграма за последователен старт на звено №(k) и на звено №(k+1)

 

Генерираният от правия изход на D-тригера сигнал Ack, маскира в обратна посока сигнала Req, с което изпреварващо се въвежда задният фронт на сигнала Req, за да не се чака неговото разпространение в елемента DL2 след нулиране на този тригер.

Освен представения по-горе вариант за схемно решение на конвейерния автомат, може да се предложи още един вариант, при който се избягва въвеждането на детектор на фронт във веригата на закъснението DL1.

Във втория вариант, вместо D-latch тригер, конвейерният автомат е синтезиран с динамичен D-edge тригер. Така по предния фронт на закъснението DL1 ще се запише единичната стойност на сигнала W, чието последващо нулиране по изходния сигнал от същия тригер чрез обратната връзка, ще бъде достатъчно закъсняло за да попречи на записа. Логическата схемата на това решение е показана на фигура 3.1.7.

 

Фиг. 3.1.7.  Конвейерен автомат с динамичен тригер

 

Закъсненията DL1 и DL2 имат естествени изходни точки в принципните логически схеми на многотактовите конвейерни звена, които представляваха тук интерес. В този смисъл тези закъснения, въпреки че са изобразени условно, имат реално измерение, което при всяко изчисление се определя от реалните входни за звената данни и тактовата честота на локалните им генератори.

Забележка:  Всички микроконвейерни звена, както и всеки конвейерен автомат в състава на даден конвейер, следва да се установяват принудително в начално състояние след включване на захранването, както и в други ситуации, изискващи това състояние (не е показано на фигура 3.1.5). В начално състояние конвейерните звена се поставят в състояние на готовност, при което конвейерните автомати генерират сигналите Ack. За стартиране на конвейера е необходимо в началното звено да се подаде сигнал от тип Req.

По-детайлно процесът на последователното стартиране на конвейерните звена №(k-1), (k) и (k+1), изобразени на фигура 3.1.7, е представен чрез времедиаграмата от фигура 3.1.8.

 

Фиг. 3.1.8.  Времедиаграма на конвейер с динамичен тригер

 

Преди да бъде пояснена времедиаграмата обаче е полезно да се отбележи, че при стартиране, всеки С-елемент се превключва от начално в противоположно състояние (W=1), в което престоява кратко време, определено от закъснението DL1. Това състояние, преди да изчезне, както вече беше отбелязано, се запомня в D-тригера по предния фронт на сигнала, излизащ от това закъснение. Появяващата се нула от инверсния изход на този тригер превключва С-елемента обратно в начално състояние (W=0). Генерираният от правия изход на D-тригера сигнал TEQ, маскира в права посока сигнала Req, с което изпреварващо в сигнала Req се въвежда заден фронт, вместо да се чака разпространението му в елемента DL2 след нулиране на този тригер.

В обратна посока разпространението на сигнала TEQ се задържа във времето от закъснението DL3. Това е необходимо, за да се изчака рестартирането на D-тригера по предния фронт на TEQ, което се постига чрез детектора на фронт във веригата на входа R. Така, след установяване на конвейерният автомат в изходно състояние и след поява на сигнала Ack, може да се извърши повторно стартиране на микроконвейерното звено.

Реалното свързване на конвейерния автомат с многотактово микрокконвейерно звено MPSk (micro-pipeline stage) е представено на фигура 3.1.9.

 

Фиг. 3.1.9.  Схема за свързване на конвейерен автомат

с многотактово микроконвейерно звено

 

В схемата е използвано многотактно микроконвейерно звено, реализиращо алгоритмична структура цикъл с предварително известен брой повторения от вида, разгледан в раздел 2.6. От схемата се вижда, че импулсът Wk (изходен за С-елемента) записва данни във регистъра фиксатор (Pipeline-RG), според логиката на конвейерния автомат. За стартиране на изчисленията в многотактовото звено се използва сигналът TEQk, който попада на вътрешния синхронизатор на звеното, реализиран чрез динамичен D-тригер със структура Edge. Логиката за управление на този тригер е синтезирана така, че той формира необходимия синхронен с локалната тактова последователност Clock стартов за звеното импулс Enable.

Изчисленията в многотактовото звеното завършват с появата на сигнала Ready, който се използва в качеството на конвейерен сигнал Reqk. Закъснението, което внася това конвейерно звено, преди това беше условно означавано DL2 (фигури 3.1.5 и фигура 3.1.7). Тук реалният изход на сигнала Reqk е показаният на фигура 3.1.9.

 

Заключение

Общо приети правила за синтез на микроконвейерни звена все още не са формулирани. Както тук беше споменато, микроконвейерните звена могат да имат различна вътрешна структура и начин на функциониране. От това следва, че в един реален алгоритъм е възможно тяхното последователно подреждане в разнообразни съчетания. Това означава, че в схемата от фигура 3.1.9 може да бъде поставено обикновено еднотактово звено. Възможно е всяко звено да притежава различни вътрешни състояния, но то би следвало да бъде адаптивно към конвейерната организация. На това ниво всички участници са равноправни и подчинени на изложената тук организация. Предложената обобщена интерпретация на микроконвейерните звена позволява удовлетворяване на тази организация в лицето на конвейерните протоколи и сигнали. Положителен резултат от тази интерпретация върху многотактовите микроконвейерни звена е преодоляването на заплахата от дублиране на конвейерните фиксатори с входните или с изходните регистри на звената. Реализираният 4-фазов асинхронен конвейерен протокол на обмен между звената е във вариант с изпреварващо нулиране (връщане в нула), което води до по-висока производителност като цяло на конвейера.

 

 

3.1.3.  Серия 4-фазови конвейерни автомати с изпреварващо нулиране и защита

В предходните раздели беше обърнато достатъчно внимание и на двата трансферни протокола. Показани бяха някои схемни решения и бяха коментирани условията за тяхното приложение.

Използването на 2-фазови конвейерни автомати изисква използването на регистри фиксатори с Latch-тригери. Тъй като при 2-фазовите автомати и двете състояния (S0, S1) са работни, то Latch-тригерите трябва да имат структура DEDTFF (Double-Edge D-Triggered Flip-Flop). Схемата на такива тригери се постига с допълнителни логически елементи, като два пулс-генератора или две схеми на Хуфман за превключване по преден и по заден фронт. Това са решения, които значително увеличават апаратните разходи, тъй като трябва да бъдат направени за всеки бит от регистъра фиксатор на всяко конвейерно звено. Въпреки че изборът протокол не е еднозначен, по-често се използва 4-фазовият трансферен протокол. Освен това, микроконвейерни звена с входни Edge-регистри фиксатори, за които е известно че записват данни само по един от фронтовете (преден или заден), е естествено да се управляват от 4-фазови конвейерни автомати. Автомат с този протокол има по-сложна логика, но тя се реализира еднократно, т.е. не се повтаря за отделните битове на регистъра фиксатор. Така решението за синхронизацията в конвейера става по-икономично.

В този раздел ще бъдат разгледани допълнителни условия, ситуации и изисквания в процеса на асинхронно управление, в резултат на което за 4-фазовия трансферен протокол са синтезирани няколко различни схемни решения за конвейерен автомат с изпреварващо възстановяване. Тези конвейерни автомати могат да бъдат прилагани за управление на конвейерни звена, които имат съответната специфика.

 

 

3.1.3.1.  Протокол за четири фазов конвейерен трансфер на данни

Трябва да разгледаме подробно развитието на трансферния протокол (алгоритъм) във времето. Управляван от двойката входни сигнали (Reqin, Ackin), (ReqinºReqk-1, AckinºAckk+1), 4-фазовия конвейерен автомат PCk се превключва в единично състояние S1 винаги, когато и двата входни сигнала се установят в единично състояние (Reqk-1=Ackk+1=1) (вижте структурата, представена на фигура 3.1.10). Този момент на превключване се определя като моментът на “ръкостискане”.

 

Фиг. 3.1.10.  Структура на асинхронна синхронизация

 

Структурният фрагмент от горната фигура показва текущото (№k) микроконвейерно звено MPUk (Micro-pipeline Unit) с конвейерния автомат PCk (Pipeline Controller), който го управлява, както и връзките на тези два елемента със съседните в конвейера - №(k-1) и №(k+1), в смисъла на казаното по-горе.

Предният фронт на новото състояние S1 на автомата PCk се използва за осъществяване на данновия трансфер от предходното микроконвейерно звено MPUk-1 към текущото MPUk в качеството му на сигнал за запис W (Write). Състоянието на конвейерния автомат се представя от сигнал W. Със записа на нови данни в текущото звено №k, в последното стартират нови изчисления. За да се повтори този процес, докато звеното провежда изчисленията си, конвейерният му автомат трябва да възстанови изходното си състояние S0. Логично е това да стане в момент, когато микроконвейерното звено не е заплашено от това обратно превключване на управляващия автомат. За да бъде определен този момент, процесът на старт и функциониране на звеното е детайлно изобразен и анализиран във времето. Формулираните изводи са пояснени чрез времедиаграмата от фигура 3.1.11.

 

Фиг. 3.1.11.  Времедиаграма за превключване на 4-фазов автомат

Както се вижда, след превключване на конвейерния автомат от състояние S0 в състояние S1 (момент Т0), като следствие протичат две последователни превключвания. Първото превключване е на тригерите в регистъра фиксатор RG, който по сигнал Wk приема новите данни от предходното конвейерно звено. На времедиаграмата, след момент Т0 е изразено също така и закъснението от превключването на самия автомат от състояние S0 в състояние S1.

Второто превключване е на операционната логическа схема (Logic) в микроконвейерното звено, в която стартира изчисляването на нов резултат. В началото на тези две превключвания (момент Т0) сигналът на фактическото закъснение CD (Completion detection) пада в ниско ниво (логическа нула). Интервалът, в който този сигнал има ниско ниво, е интервала, в който микроконвейерното звено е в състояние “заето” (busy), т.е. провеждащо текущото изчисление. В момент Т2 изчисленията завършват и сигналът CD се вдига във високо ниво (единица). От този момент нататък изчисления в звеното резултат е стабилен и може да бъде предаван към фиксатора на следващото звено MPUk+1. Така сигналът CD може да се използва като сигнал заявка за трансфер Reqk към следващия автомат PCk+1 (вижте фигура 3.1.10).

За да повтори трансферният цикъл, конвейерният автомат трябва да се превключи обратно в изходно състояния S0. Времедиаграмата позволява да се съобрази, че възстановяването на автомата е правилно да стане във времевия интервал [Т1, Т2]. Минималното закъснение, с което възстановяването може да стане, се определя от времето за надеждно фиксиране на данните в конвейерния регистър. С други думи, латентността на тригерите в регистъра фиксатор определя минималната продължителност на единичното състояние S1, т.е. на сигнала W. Следователно е необходим сигнал за потвърждение на края на записа в регистъра – сигнал Complete. Най-рано (момент Т1) такъв сигнал може да генерира самия регистър. Най-късно сигналът Complete може да генерира операционната схема Logic в микроконвейерното звено, маркирайки края на изчисленията в момент Т2. На времедиаграмата заетостта на звеното е изразена чрез сигнал CD (Completion Detection). Всяко по-късно (след момент Т2) възстановяване на конвейерния автомат може да въведе непроизводително във времето закъснение в превключването на автомата, а от там и в работата на конвейера. Най-късното възстановяване може да предизвика сигналът потвърждение Ackin, който ще подаде следващия конвейерен автомат, в отговор на предадените му данни – сигнал Ackk+1. От казаното следва още, че сигнал Complete трябва да има импулсен характер.

Появата на две единици за сигналите заявка Reqk-1 и потвърждение Ackk+1 причинява превключване на автомат PCk в единично състояние S1 и издаване на сигнал за запис Wk (StateºW). За конвейерния автомат PCk тези два сигнала са входни, т.е. Reqin=Reqk-1, Ackin=Ackk+1. Краят на записа на данните в регистъра фиксатор се предполага маркиран от предния фронт на сигнал Complete (Comp), който не е изобразен на времедиаграмата. Този сигнал се използва за превключване на конвейерния автомат обратно в състояние S0. Приема се, че сигналът Comp има същата форма, както тази на сигнал CD, т.е. неговото ниско ниво трябва да се възприема като съответстващ на незавършил запис. Появата на преден фронт и високо ниво на този сигнал означава, че записът е завършил и тригерите на регистъра фиксатор са установени стабилно. Описаният трансферен протокол може да се изрази с граф на преходите, показан на фигура 3.1.12.

 

Фиг. 3.1.12.  Граф на преходите на конвейерния автомат

 

В състояние S0 автоматът издава потвърждение Ackk=1 за своето изходно състояние, а в състояние S1 потвърждението се снема Ackk=0, като в същото време се издава сигналът за запис Wk. Преход в състояние S1 се извършва при

Reqk-1 = Ackk+1 = 1  .

Обратният преход в S0 се осъществява с появата на сигнал Comp=1, след което сигналът за запис Wk пада в ниско ниво.

 

 

3.1.3.2.  Особеност на протокола с изпреварващо нулиране

Връщайки се в състояние S0 (вижте фигура 3.1.10) съществува опасност от незабавно повторно и неправилно превключване на автомат PCk обратно в състояние S1 (вижте времевия интервал Risk zone, на фигура 3.1.11). На първо място като причина за това е импулсния характер на нулиращия сигнал. Като втора причина, това е потенциалния характер на входните за автомата сигнали (Reqin, Ackin), които след нулирането е възможно все още да продължават да са в състояние единица. Така съчетанието от тези две обстоятелства във времето обуславя възможността за ненадежност на състоянието S0. От описаното функциониране на 4-фазовите конвейерни автомати се разбира, че сигналите потвърждение падат в ниско ниво за кратко по време на данновия трансфер, т.е. през останалото време те са в активно високо ниво, затова са определени като потенциални. С други думи, състоянието S1 е значително по-краткотрайно от изходното S0. Ето защо, след нулиране на такъв автомат, има голяма вероятност следващият микроконвейерен автомат PCk+1 (фигура 3.1.3.1.1) бързо да възвърне потвърждението Ackk+1=Ackin=1. В същото време преходното звено (към което текущия автомат PCk, след възстановяването си в изходно състояние, ще издаде потвърждението Ackk) може да продължава да поддържа заявката си Reqin= Reqk-1. Вероятността за тази ситуация се дължи на това, че ако автомат PCk-1 е получил потвърждението Ackk, но все още очаква сигнал заявка Reqk-2, той няма да може да се превключи. Това пък означава, че звеното, което той управлява, няма да може да снеме заявката Reqk-1 и да я издаде повторно след новите изчисления. Така на входа на автомат PCk ще продължават да стоят две единици

Reqk-1 = Reqin = Ackin = Ackk+1 = 1

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

Предотвратяването на изяснената по-горе опасност изисква функционирането на конвейерния автомат PCk да бъде обвързано с поведението на заявката Reqk-1, която той получава от предходното микроконвейерно звено. Изводът, който може да се направи на този етап, е че заедно с нулирането на конвейерния автомат, сигналът Comp трябва да блокира и въздействието на все още активния сигнал Reqk-1. След изчезване на сигнал Comp автоматът не трябва да е в състояние да възприема заявката Reqk-1. Нещо повече, след изчезване на нулиращия сигнал, автоматът трябва да бъде в състояние да възприема тази заявка едва при нова (следваща) нейна поява. С други думи, с появата си сигнал Comp трябва да блокира достъпа на заявката Reqk-1 до конвейерния автомат, а задния фронт на същата заявка, т.е. нейното изчезване, да отменя забраната, с което да разреши следващия й достъп. Във времето това може да бъде изразено както е показано на фигура 3.1.13.

 

Фиг. 3.1.13.  Изключване и включване на достъпа на заявката от предходното звено

 

Времедиаграмата илюстрира как в момент Т0 се появява сигнал Comp, който превключва конвейерния автомат в състояние S0. Достъпът на заявката  Reqk-1  до автомат PCk се забранява и  Reqin=0  (Reqk-1ºReqin). В момент Т1 изчезва сигнал Comp, но тъй като  Reqin=0,  автоматът не се превключва. В момент Т2 достъпът се възобновява с изчезване на заявката Reqk-1. Към автомата се подава логическа нула  Reqk-1=Reqin=0,  която не го превключва. В момент Т3 се появява новата заявка  Reqk-1=1,  т.е.  Reqk-1=Reqin=1 и от този момент нататък е възможно ново превключване на автомата в състояние S1. С други думи тази логика осигурява само едно единствено превключване на всяка новопоявила се заявка. Синтезираната логическа схема, осигуряваща такъв достъп на заявката до конвейерния автомат, е представена на фигура 3.1.14.

 

Фиг. 3.1.14.  Логическа схема за генериране на сигнал Access

 

Както се вижда тя съдържа един асинхронен RS Latch-тригер с инверсно управление.

 

 

3.1.3.3.  Микроконвейерен автомат с два С-елемента

Още в началото на тази глава беше пояснено, че синхронизацията на един изходен сигнал (например сигнал за запис W) с двата входни асинхронни сигнала (Reqin, Ackin) в конвейерния автомат, се осъществява чрез Мюлер С-елемент. Практически този елемент е задължителен в схемата на всеки “handshake” контролер. От изложената по-горе логика на превключване се стига до извода, че сигналът за възстановяване на конвейерния автомат трябва да се синхронизира аналогично с двойката сигнали (S1, Comp), където, както вече беше пояснено, единичното състояние на автомата S1, е еквивалентно със сигнала за запис W. Беше пояснено още, че най-ранният момент за възстановяване на конвейерния автомат е след превключване на тригерите на регистъра фиксатор, който записва данните след предния фронт на сигнала W. Логическата схема за генериране на сигнал Complete за Edge D-тригер, превключващ се по преден фронт, е представена на фигура 3.1.15. Съдържайки схемата на Хуфман, този тригер има време за превключване th=4.t, където с t е оценено времето за превключване на един логически NAND. (Hold time is the minimum amount of time the data signal should be held steady after the clock event so that the data are reliably sampled).

 

Фиг. 3.1.15.  Сигнал Complete за край на запис в динамичен D-тригер

 

На фигура 3.1.16 е представена времедиаграмата за генериране на сигнал Comp в дата случая – при запис на нула и при запис на единица.

 

Фиг. 3.1.16.  Времедиаграма за формиране на сигнал Comp за Edge D-тригер

 

Тъй като тригерите в регистъра фиксатор са много и всеки от тях има индивидуално закъснение, общият сигнал Comp следва да се формира чрез синхронизиране на индивидуалните сигнали от всички тригери. Това прави логическата му схема достатъчно сложна и неикономична за практическа реализация. Тъй като индивидуалните разлики не са големи може да се приеме, че латентността на регистъра фиксатор при запис на нови данни е константна величина. Ето защо с незначителен запас от време (t или 2t) сигналът Comp може да се създаде за целия регистър от една единствена симетрична delay-верига. Това решение е крайно икономично и не обвързва регистъра фиксатор с конвейерния автомат директно.

Отчитайки всички изказани съображения относно синтеза, получената логическа схема на автомата е представена на фигура 3.1.17.

 

Фиг. 3.1.17.  Принципна логическа схема на 4-фазов конвейерен автомат с два С-елемента

 

Както се вижда, схемата съдържа два С-елемента и синтезираната по-горе защита от лъжливо превключване. Защитата прекратява достъпа на заявката Reqk-1 от предходното микроконвейерно звено към текущия автомат PCk след нулиране на RS-Latch тригера. Първият С-елемент С1 представя състоянието S на автомата. Вторият С-елемент С2 генерира сигнал Comp. За целта на вход на този елемент е подаден сигнал W, който се синхронизира със сигнал AckoutºAckk. Последният е постоянно в състояние единица, като пропада в нула за краткото време, когато се осъществява трансфера на данни.

Анализът на процеса на превключване в конвейерния автомат, съвместно със сигнала Access, позволява да бъдат илюстрирани допълнителни негови детайли. Този процес е представен подробно на фигура 3.1.18, където ясно се вижда времевото съотношение между сигналите  Reqk-1  и  Reqin.

 

Фиг. 3.1.18.  Времедиаграма за превключване на автомата

 

След закъснението, което внася DL-веригата, в обратната връзка на елемент С2, пропада сигнала за потвърждение на готовността, тъй като автоматът е в процес на трансфер. Освен това протича процес по възстановяване в изходно състояние. Той започва с кратка нула, подадена към първия С-елемент. Възстановяването на конвейерния автомат в изходно състояние S0 се осъществява чрез кратък нулев импулс, формиран по задния фронт на сигнала потвърждение Ackout  от фронт детектора FD¯ (вижте го във фигура 3.1.17). Това води до  прекратяване на импулса за запис W и веднага след това до нулиране и на втория С-елемент. Със закъснение DL се възстановява и сигнала потвърждение  Ackout=1.

Изходното състояние на автомата е S0, в което той издава потвърждението  Ackout=1  (готовност за даннов трансфер). Превключването на автомата в състояние S1 започва в момент Т0 при две входни единици  (Reqin=Ackin=1).  На времедиаграмата с тъмни вертикални ивици са изразени всички реални закъснения на превключващите се логически елементи. Вторият С-елемент се превключва в единично състояние веднага с появата сигнала за запис W, тъй като по това време  Ackout=1.

Заявката от предходното звено  Reqk-1  губи достъп до текущия автомат в момент Т2. Следващото превключване на автомата стартира момент Т6. Когато текущото звено завърши изчисленията си и предаде получения резултат към следващото звено, ще изчезне идващото от него потвърждението  Ackin,  тъй като то е функция на превключващия се автомат PCk+1.

 

Заключение

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

 

 

3.2.  Асинхронен конвейер с многотактови микроконвейерни звена

 

В глава 2 представихме разработени от нас различни микроконвейерни звена. Общото между тях е, че логическата им структура притежава вътрешна обратна връзка. Това е така, тъй като тези звена реализират итерационен изчислителен процес и са синтезирани като синхронни устройства. Те функционират като такива благодарение на локален тактов генератор. Предвид на вътрешното (локалното) тактуване, микроконвейерните звена от този вид определихме като многотактови. По-късно в този раздел ще бъдат представени и напълно асинхронни многотактови звена. Закъсненията, които такива звена генерират могат да бъдат съществено различни както по между си, така и спрямо еднотактовите, ето защо като завършени устройства те могат да бъдат включвани единствено в състава на асинхронни конвейери. Една от най-съществените характеристики на тези звена се състои в това, че тяхното закъснение не позволява имитация с помощта на Delay-елемент. По тази причина конвейерните автомати, които управляват многотактови звена, не генерират заявките Request с помощта на такива елементи. Тъй като многотактовите конвейерни звена имат собствена памет, конвейерите с такива звена не винаги се нуждаят от допълнителни конвейерни регистри (конвейерни фиксатори).

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

 

 

3.2.1.  Състояния на многотактово микроконвейерно звено

Многотактовото микроконвейерно звено беше дефинирано в предходния раздел 3.1. Обобщената му логическа структура е представена на фигура 3.1.1. Именно такива микроконвейерни звена се имат предвид тук.

Многотактовите микроконвейерни звена са предназначени да реализират различни видове циклически алгоритмични структури, в тялото на които се изчислява някаква функционалност от вида (2.1.4). Итерационните изчисления, които се провеждат в такива звена водят до продължително задържане на общо конвейерния изчислителен процес, което позволява да бъдат определяни по отношение на него още като силно асинхронни. Микроконвейерните звена от разглеждания вид могат трайно да се намират в следните три състояния:

1.      Състояние, условно наречено “Свободно” (“Free”). Същността на това състояние настъпва, когато резултатът от изчисленията в текущото (k-то) звено бъде предаден по изходната шина DataOut към следващото ((k+1)-то) звено и в отговор последното потвърди успешното му приемане. В това състояние логическите връзки в структурата са определени така, че звеното е готово за следващо стартиране. В този смисъл “Free” е информация, която е необходима на предидущото ((k-1)-во) звено, тъй като не е логично текущото звено да бъде стартирано, ако предидущото все още не е свободно;

2.      Състояние, условно наречено “Заето” (“Busy”). В това състояние текущото (k-то) звено се намира по време на циклическите изчисления, изпълнявани от него. По това време входната му даннова шина DataIn е изключена и данните, намиращи се върху нея, не влияят на структурата му. Данните върху изходната му шина DataOut са неактуални, т.е. те са невалидни, така че не следва да се приемат и използват от следващото звено;

3.      Състояние, условно наречено “Готово” (“Ready”). Това състояние е алтернативно на предходното. То настъпва в текущото (k-то) звено в момента, в който изчисленията в него завършат и върху изходната му шина DataOut се установи истинната стойност на резултата. В това състояние звеното поддържа върху изходната шина получения резултат, т.е. не се е освободило от резултата, който се намира единствено и все още само в него. Когато полученият резултат бъде приет в следващото (k+1)-во звено, текущото следва да премине в състояние “Свободно”.

Забележка:  Всички микроконвейерни звена в състава на даден конвейер следва да се установяват принудително в състояние “Free” след включване на захранването, както и в други ситуации, изискващи това състояние. Последното се определя като изходно или начално състояние както за всяко звено поотделно, така и като цяло за конвейера.

По време на функционирането на конвейера, редът, в който състоянията многократно се явяват във всяко отделно звено, е следният:

...   Free”,  Busy”,  Ready”,      Free”,  Busy”,  Ready”,      Free   ...

Състоянията, в които всяко звено в конвейера може да се окаже, се декларират от логическата им схема чрез следните сигнали (сигнали от тип SS):

1.  Сигнал Fk (Free). Издава се след превключване на звеното в състояние “Свободно”. Сигналът Fk е насочен условно в посока назад, т.е. към предидущото (k-1)-во звено;

2.  Сигнал Bk (Busy). Издава се след превключване на звеното в състояние “Заето”. Сигналът Bk е насочен също в посока назад;

3.  Сигнал Rk (Ready). Издава се след превключване на звеното в състояние “Готово”. Сигналът Rk е насочен условно в посока напред, т.е. към следващото (k+1)-во звено.

 

 

3.2.2.  Последователно включване на многотактови микроконвейерни звена

Многотактовите микроконвейерни звена (MPS, Micro-pipeline Stage) се включват в определена последователност според зададения алгоритъм. При това, за организация на конвейерния принцип, между тях е необходимо да се въведе определено управление, което зависи от дефинираните сигнали SS за състоянието и CS за управление. Управлението на връзката между всеки две съседни звена, както вече беше отбелязано, се възлага на управляващ автомат PC (Pipeline Controller), който следва да разпознава състоянията, в които се намират две съседни звена, и да управлява данновия трансфер между тях. С други думи този автомат има задачата да синхронизира съвместната работа на две съседни звена, използвайки сигналите от тип SS, като в отговор на тях издава необходимите управляващи сигнали CS. Предвид на изложените съображения по-горе в точка 3.2.1, конвейерният автомат следва да бъде асинхронен.

На фигура 3.2.1 е илюстриран фрагмент от конвейер, който удовлетворява формулираните току що изисквания.

 

Фиг. 3.2.1.  Микроконвейер с многотактови звена

 

Както се вижда от фигурата, управляващият автомат PСk+1, след текущото звено №k, генерира два управляващи сигнала:

1.  Сигнал Gk+1 (Go). С този сигнал автоматът стартира изчисленията в следващото микроконвейерно звено, т.е. сигналът се подава в посока напред. Издаването на този сигнал трябва да бъде възможно само ако предидущото звено се намира в състояние “Готово”, а следващото – в състояние “Свободно”. Това е ситуация, в която предидущото звено е завършило своите изчисления и поддържа върху изходната си шина получения резултат. В същото време следващото звено е свободно и очаква нови данни за преработка ;

2.  Сигнал Аk (Acknowledgement). С този сигнал автоматът оповестява предидущото k-то звено, че предадените от него данни са успешно приети от следващото (k+1)-во звено. Сигналът Аk се подава условно в посока назад. В отговор на сигнал Аk, предидущото звено трябва да оповести за себе си състояние “Свободно”. Логиката на това състояние за k-то звено се изразява както следва

Графът от следващата фигура 3.2.2 представя функционирането на управляващия автомат PCk+1.

 

Фиг. 3.2.2.  Граф на преходите на конвейерния автомат

 

Началното (изходното) състояние на автомата е означено с S0. В това състояние той поддържа изходния сигнал Аk, който дава основание на звено №(k) да формира за себе си състояние “Свободно”. От това състояние автоматът може да се превключи в противоположното състояние S1 само когато двете съседни звена изпълнят указаното условие за преход:

Сигналът Gk+1 се възприема като стартов от звено №(k+1). След като (k+1)-то звено стартира своята функция, то преминава в състояние “Заето” и формира сигнала “Заето” Вk+1. Този сигнал е причина синхронизиращият автомат да се превключи обратно в изходно състояние S0. От това състояние той издава сигнала Аk, с което уведомява предидущото звено, че данните му са успешно предадени към следващото звено. С това поредният сеанс на обмен в тази степен на конвейера завършва.

Правилното функциониране на последователността от конвейерни автомати трябва да бъде подсигурявано винаги след подаване на сигнал Reset. Установявайки всички елементи на конвейера в изходно състояние, в началния момент този сигнал осигурява за всички микроконвейерни звена състояние “Свободно”. При това всяко звено издава стойност “истина” за сигнал F и за сигнал R. В резултат на това след отпадане на сигнал Reset има опасност всички конвейерни автомати да се превключат в състояние S1, подавайки при това стартовите сигнали G. Това е неправилно, ето защо превключването на всеки автомат е осигурено чрез допълнителен разрешаващ сигнал (Enable) Ek, Ek+1, Ek+2, който се поддържа от RS-Latch тригерите TE (вижте фигура 3.2.1). Тригерите ТЕ се нулират от сигнала Reset. След неговото отпадане, сигналите Ek, Ek+1, Ek+2 имат стойност нула и въпреки че зависимостите (3.2.1) имат стойност “истина”, те не позволяват превключване на конвейерните автомати. Със стартиране на изчисленията в първото звено на конвейера, съответният му сигнал “Заето” установява първия TE тригер в единично състояние, което разрешава превключване на конвейерния автомат едва след завършване на изчисленията в звеното. Останалите TE тригери по веригата продължават да поддържат състояние нула. Те се превключват последователно в състояние единица с напредване на изчисленията в микроконвейера от звено към звено. След излизане от конвейера на първия резултат всички тези тригери ще се намират в единично състояние.

По време на функциониране на конвейера за конвейерния автомат е възможна още една опасна ситуация. Тя се създава в случай, когато дадено звено се забави значително по-дълго в своите изчисления по сравнение със следващата последователност от звена. При това положение изчисленията в следващите звена, които предполагаме приключват значително по-бързо, ще постави тези следващи звена в състояние на изчакване на резултат от задържащото се звено. Така за тях ще се формира ситуация, аналогична на тази след начално установяване по сигнал Reset, която описахме по-горе. Всички те ще са свободни, защото са завършили своите изчисления и са предали успешно на следващото звено получените резултати. Отстраняване на възможността за генериране на лъжливи стартови сигнали G (Go) от автоматите на изчакващите микроконвейерни звена можем да постигнем чрез удържане на разрешаващите TE тригери в нулево състояние, което за текущия автомат постигаме с помощта на сигнал “Заето” от следващия автомат. Логическият синтез на конвейерния автомат според графа на преходите и при отчитане на изложените по-горе съображения, води до принципната логическа схема от фигура 3.2.3.

 

Фиг. 3.2.3.  Принципна логическа схема на конвейерния автомат PCk+1

 

От логическата схема се вижда, че изходно състояние на разрешаващия тригер, когато правият му изход е  (Ek+1=0),  освен от сигнал  Reset, се постига и чрез импулс от детектора на преден фронт Bk+1FD­.  Този импулс маркира началото на изчисленията в звено №(k+1). Установяването на този тригер в единично състояние (Ek+1=1) причинява импулсът от детектора на заден фронт  BkFD¯, който маркира края на изчисленията в звено №k. Импулсното управление на този тригер се изисква от неговата Latch-структура.

След като автоматът се окаже в състояние S1, той издава стартовия сигнал Gk+1

Конвейерният автомат, представен на фигура 3.2.3 е реализиран по структурата на Мур чрез един асинхронен RS-Latch тригер. Вътрешните състояния на автомата са кодирани както следва

Така правият изход реализира стартовия сигнал G, а инверсният изход реализира сигнала за потвърждение A. Поради различната продължителност на изчисленията в две съседни звена, спрямо текущия конвейерен автомат PCk+1 са възможни две различни ситуации, например:

1.        Звено №(k+1) е свободно и очаква да завършат изчисленията в звено №(k);

2.        Обратно, звено №(k) е готово и очаква да края на изчисленията в звено №(k+1).

На времедиаграмата от фигура 3.2.4 са представени тези два случая за трансферния протокол, т.е. за превключване на конвейерния автомат. В първия случай (вижте лявата половина) звено №(k+1) очаква данните от звено №(k). Автоматът е в състояние S0, очаквайки сигнала Rk .

 

Фиг. 3.2.4.  Времедиаграма на трансферния протокол

 

Във втория случай (вижте дясната половина) звено №(k+1) все още работи, докато в същото време предидущото звено №(k) е завършило изчисленията и се намира в състояние “Готов”, издавайки сигнала Rk. Автоматът, който е в състояние S0, с появата на сигнала Fk+1, се превключва в състояние S1.

Преходният процес, който съответства на графа на автомата, е изобразен два пъти – в лявата и в дясната част на времедиаграмата от фигура 3.2.4 и представя стартирането, работата, спирането и повторното стартиране на микроконвейерно звено №(k+1). Анализирайки времедиаграмата от тази фигура, може да се направи извод, че управляващият автомат реализира 4-фазов протокол за трансфер.

 

 

3.2.3.  Верификация на функционирането

Поведението на синтезирания по-горе конвейерен автомат и протокола за трансфер, който той реализира, са експериментирани върху реалната FPGA-логика на чипове Spartan, произвеждани от фирма Xilinx. За целта е синтезиран примерен 3-степенен конвейер от многотактови звена за цикли с неизвестен брой повторения, чиято структура съответства на изложената в раздел 2.5. В модела са заложени параметри, близки до тези на реален изчислителен процес, като звената изпълняват различен брой тактове. Това ни гарантира асинхронност на конвейера като цяло. Моделът е реализиран чрез езика VHDL. Поради ограниченията на тази технология, както и ограниченията и препоръките за правилна симулация на такива модели с Mentor Graphics ModelSim, са използвани принципите за синхронно проектиране. Това наложи включването на допълнителен тактов генератор, означен като Clock_fast. Избраната за сигнала Clock_fast работната честота е значително по-голяма от тази на сигнала Clock, което ни позволи да гарантираме правилното симулиране на асинхронните сигнали в крайния проект.

На фигура 3.2.5 e показан процесът на еднократен старт на конвейeра, т.е. преминаването на една стартирана задача през последователността от микроконвейерни звена.

На времедиаграмата се вижда, че след освобождаване на сигнал Reset всички звена в конвейера се намират в състояние Ready, готови да приемат заявка за стартиране на изчисление. Сигналите на отделните звена са обозначени със съответстващият им индекс според схемата от фигура 3.2.1. Всяко звено се стартира след като получи актуални данни и сигнал за начало на изчисленията.

При постоянно натоварване на звената и различна продължителност на изпълнението в зависимост от входните данни се получава картината показана на фигура 3.2.6. Ясно се вижда паралелното функциониране на трите конвейерни звена, което демонстрира същността на конвейерната организация.

 

 

 

Фиг. 3.2.5.  Еднократен старт на конвейера

 

 

 

Фиг. 3.2.6.  Паралелна работа на микроконвейерни звена

 

 

 

Фиг. 3.2.7.  Превключване на конвейерен автомат

 

На фигура 3.2.7 са показани сигналите на конвейерният автомат между първото и второто звено.

Индексите в означенията се получават при заместването k=0. Първото превключване е в случая, когато предходното звено е заето, а следващото е готово и чака данни. Второто превключване е когато предходното звено е готово и очаква следващото да приеме данните за стартиране на поредното изчисление. Третият случай е аналогичен на първия с тази разлика, че поредното стартиране на свободното звено става след завършване на предходното звено, но само когато то е предало данните си на следващото в конвейера. Процесите в тази времедиаграма са в пълно съответствие с показаните на фигура 3.2.4.

Пълната времедиаграма на съвместните превключвания е приложена на фигура 3.2.8. Тя представя превключванията на всички микроконвейерни звена и конвейерни автомати на продължение на времето при последователно зареждане на задачи в конвейера.

 

 

Фиг. 3.2.8.  Времедиаграма на микроконвейер с многотактови звена

 

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

Във времедиаграмата са включени още и следните сигнали:

§                            Сигнал dataCnt. Това е параметър, управляващ продължителността на изпълнение на първото микроконвейерно звено ;

§                            Сигналът enable е сигнал стартиращ изчисленията в звеното, който се генерира от външна логика ;

§                            Сигналите dataIn_n,  enable_n,  ready_n,  и  dataOut_n  са входно-изходни сигнали на микроконвейерните звена. Индексът n показва номера на звеното, за което се отнасят сигналите ;

§                            Сигналите  b0_n,  r_n,  a_n,  f_n,  b1_n,  и  g_n  са входно-изходни сигнали на конвейерните автомати. Индексът n показва за кое звено се отнасят сигналите ;

§                            Сигналите с индекс  _in  и  _out  се отнасят за управление на външните модули, с които конвейера обменя данни.

На последните абсциси на времедиаграмата е представена извадка на сигналите от конвейерния автомат между първо и второ микроконвейерно звено. Индексите се образуват когато се замести с k=0.

 

 

Заключение

Разглежданият тук вид микроконвейерни звена и последователно им включване в състава на даден конвейер е само един частен случай. Както беше казано в началото, възможни са различни по вид микроконвейерни звена. От това следва, че за един реален алгоритъм е възможно тяхното последователно подреждане в разнообразни съчетания, например: еднотактно звено следвано от многотактно, или многотактно звено следвано от еднотактно. Ако се разгледа по-дълга последователност, възможните комбинации стават повече. Известният класически случай, описан от Съдърланд, съответства на последователност от еднотактни микроконвейерни звена, където управляващият автомат представлява обикновен Мюлер С-елемент.

Докато еднотактните звена се обслужват само от два сигнала, обикновено именувани Request и Acknowledgement, тук за многотактните звена бяха дефинирани няколко възможни такива. Познавайки структурата на многотактните звена обаче може да се твърди, че съществуват предпоставки и за други интерпретации, както и възможности за обобщаване. Отчитайки и споменатите комбинации при последователното подреждане, това ще доведе до необходимост от различни по вид конвейерни автомати.

 

 

3.3.  Нелинейни асинхронни микроконвейери

 

Тук се изправяме пред проблемите на друга, все още не разглеждана алгоритмична структура – разклонената В глава 1, а така също и в раздел 2.1 пояснихме, че хардуерната реализация на общ изчислителен процес предполага наличието и използването на методи за реализация на всички елементарни алгоритмични структури. В предходната глава 2 такива бяха представени за различни видове циклически алгоритмични структури. Тук предстои да бъде изяснена възможността за хардуерна реализация на разклонени структури, които се получават при наличие на условни алгоритмични преходи. Такива структури се определят като нелинейни. За разлика от линейните, които разгледахме в предходните раздели 3.1 и 3.2, нелинейните структури съдържат реализация на паралелни линейни структури, наричани разклонения или кратко клонове.

 

 

3.3.1.  Постановка на проблема

Разглеждаме представената на фигура 3.3.1 структура на примерен алгоритъм, който ще предполагаме е апаратно реализиран и чието изпълнение е конвейерно организирано.

 

Фиг. 3.3.1.  Структура на примерен алгоритъм

 

Има се предвид още, че този алгоритъм е детайлизиран и неговите изпълними блокове са реализирани апаратно с помощта на известни методи, или на методите, изложени в тук в глава 2. В такъв случай всеки изпълним блок от блок-схемата представлява отделно еднотактово или многотактово конвейерно звено, според определенията изложени тук в раздел 3.1 и 3.2. Това означава, че при интерпретацията на алгоритъма, от гледна точка на изпълнимите операции, всеки изпълним блок може да бъде разглеждан най-общо като многотактово конвейерно звено. Нашето разбиране е, че всяко многотактово звено обаче от своя страна може да представлява в своята вътрешност и по-сложна съставна структура от произволни микроконвейерни звена, имаща вид, подобен на показаната. Като методи за управление на структурата в микроконвейерните звена имаме предвид както синхронния, така и асинхронния метод, а така също и всяка тяхна комбинация.

Както се вижда, представения алгоритъм съдържа няколко линейни участъка, но като цяло може да се определи като разклонен. Двете условия за преход CJ (Conditional Jump) формират следните възможни пътища за изчислителния процес:

1.                                                       Begin; 1; 2; 3 (CJ1=true); 4; 5; 6 (CJ2=true); 7; 8; 9; 10; 11; 12;  End .

2.                                                       Begin; 1; 2; 3 (CJ1=true); 4; 5; 6 (CJ2=false); 7; 8; 9; 10; 11; 12;  End .

3.                                                       Begin; 1; 2; 3 (CJ1=false); 4; 5; 6; 7; 8; 9; 12;  End .

където с числата 1, 2, 3, ... , са означени номерата на нивата, през които преминава изпълнението.

Като се има предвид, че всеки алгоритмичен път Begin-End е уникален, съответните последователни микроконвейерни звена в паралелните клонове са поставени в едно и също поредно ниво на конвейера, за който тук те са общо 12. В нива от 4 до 9, в които има по няколко микроконвейерни звена, в момента на всяко отделно изпълнение, работи само съответно включеното в дадения алгоритмичен път звено. Точно в това е същността на свойството общност на понятието алгоритъм. Пътищата са няколко, но ходът на изпълнението на всяка конкретна задача, е единствен.

 

 

Общо разбиране за понятието микроконвейер

Така поставената задача за хардуерна реализация на алгоритъм с условни преходи изисква ново разбиране за понятието микроконвейер, което следва да поясним.

В условията на конвейерна организация данновите връзки между конвейерните регистри се управляват от конвейерни автомати. Това означава, че превключването на всеки конвейерен автомат в ниво с разклонения е в зависимост от стойността на съответното условие за преход. Като продължение на конвейера, след нивото, генериращо условие за преход, се налага конвейерна реализация и на двата алгоритмични клона. Така понятието микроконвейер формално (привидно) се нарушава, тъй като се нарушава общо приетото разбиране за последователно подреждане на микроконвейерни звена. В разглеждания случай обаче присъствието на физическата (апаратната) реализация на всички възможни изчислителни пътеки Begin-End е неизбежно и е следствие от свойството общност на всеки алгоритъм. Колкото и много да са те обаче, всеки един път, по който се развива изчислителният процес на дадена задача, е уникален по това, че преминава последователно през последователно активирани конвейерни звена и точно в този смисъл, точно тези звена образуват една последователна верига, която напълно съответства на понятието микроконвейер. Ето защо, присъствието в схемата на други апаратно реализирани паралелни пътища, не противоречи на общо приетото разбиране за микроконвейер, и като цяло всяка подобна структура, с по-висока степен на общност, също можем да определим като микроконвейер. Изказаните разбирания могат да объркат читателя, ето защо следва да се поясним. Разбирането за понятието ʺмикроконвейерʺ не е като за ʺсвещенна краваʺ, а е много по-гъвкаво и зависи преди всичко от структурата на отделните звена, които могат да бъдат достатъчно елементарни или сложни, както и от контекста на изложението. Дали звеното е цяло устройство или е само един регистър, това няма значение за управлението, т.е. за конвейерния автомат. Ето защо говорим и за микроконвейер и за конвейер. С други думи, можем да приемем, че структурата на примерния алгоритъм, е съставена от няколко конвейера, чиито общи части са обединени така, че тя има едно начало и един край.

 

 

3.3.2.  Нови задачи

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

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

Оригинални конвейерни автомати, управляващи трансфера между еднотактови, многотактови и смесени по тип конвейерни звена ние вече предложихме тук в раздел 3.1 и раздел 3.2. Общото между тях е това, че тези автомати, в цялата им разновидност, поддържат само конвейери с линейна структура, каквито са и множеството структури, разглеждани в публичното пространство, започвайки с цитирания още в началото основополагащ труд на Съдърланд. Апаратната реализация на конвейерно звено с условен алгоритмичен преход ние вече разгледахме в раздел 2.1, където е изложен анализът на проблема и са предложени два варианта за неговата реализация. Общото между тях е това, че стойността на логическото условие за преход CJ се използва в звеното за управление на данновата шина, за да бъдат резултатите насочени към актуалното разклонение, реализирайки по този начин конкретен алгоритмичен път Begin-End. Казаното току що съответства на нива 4 и 7 в схемата от фигура 3.3.1 (обърнете внимание на мястото на хоризонталните линии, които ограничават формалното разделяне на степените, т.е. на звената). Формулираната в раздел 2.1 задача за управление на трансфера на данни в микроконвейер с разклонения е също нова, а нейното общо решение ще бъде изложено тук. Същността на така поставената задача, се състои в синтез на конвейерен автомат, управляващ конвейерното звено, генериращо условието за преход. Логическата стойност на това условие трябва да реши в кой от клоновете трябва да постъпи заявката Request. С тази задача е свързана и задачата за приемане на сигнала потвърждение Acknowledgement от съответното звено, приело заявката. Поради неразривната същност на сигналите Req и Ack ние приемаме задачата за една, въпреки двете отделни решения, които тя притежава.

2. На второ място е задачата за синтез на конвейерен автомат, който може да управлява конвейерни звена в общите точки на алгоритъма. Както може да се види от фигура 3.3.1, в ниво 9 и в ниво 12, входните точки на съответните конвейерни звена обединяват изходите на няколко предходни звена. Постъпването на входа на дадено звено на готови резултати, идващи от няколко предходни звена, разположени топологически паралелно, се изявява като нов и самостоятелен проблем. Същността на неговото решение, се състои в синтез на конвейерен автомат, управляващ приемащото конвейерно звено при паралелно постъпване във времето в общия случай на повече от една заявка Request. В огледален смисъл с тази задача е свързана още една задача – задачата за генериране на сигнал потвърждение Acknowledgement към съответно свързаното предходно звено. Поради неразривната същност на сигналите Req и Ack и тук приемаме задачата за една, но тя също ще притежава две отделни решения.

3. Постъпващите към приемащото звено в общата точка заявки от паралелни предходни звена формулират третата задача, същността на която е изборът на заявка. За решаване на задачата за избор на заявка и приемане на съответните данни, конвейерният автомат на приемащото звено трябва да изпълни арбитрираща процедура. Реализацията на тази процедура представлява третата по ред задача. Задачата за арбитриране на заявки по принцип е известна и за нея са познати различни апаратни решения, но при горните условията на ниво конвейерно управление, тук я приемаме за нова.

4. И на края, четвъртата задача: в общата точка, където се обединяват няколко разклонения, заявките, които придружават получените в тези клонове данни, се отнасят до различни задачи, стартирани преди това в конвейера. Редът, в който съответните им междинни резултати достигат точката на обединяване, съвсем не може да се очаква да съответства напълно на реда, в който са стартирани задачите, на които те принадлежат. С други думи, в приемащото звено, което стои в общата точка, едва ли ще постъпват данни в правилния ред. Така наличието на разклонения в конвейера води до проблем, същността на който се състои в това, че излизащите на изхода му окончателни резултати, едва ли ще бъдат в онзи ред, който съответства на реда на стартиране. Тук явно трябва да се формулира нова, четвърта по ред задача, която изисква въвеждане на цялостна система за идентифициране на реда и съответствието на изходните резултати. Задачата за възстановяване на реда в общ план е известна. На нивото на конвейери от процесорни устройства обаче задачата е софтуерно решима, тъй като на това ниво се изпълняват машинните команди на една програма. По тази причина определено считаме, че условията, при които работят процесорните конвейери, са различни и несравними с тези на изследваните тук конвейери.

Тук по-долу ние представяме решения само за първата от формулираните в точка 2 задачи, отнасящи се и за двата вида трансферни протокола.

 

 

3.3.3.  Микроконвейер с двуфазов протокол за трансфер

Управлението на хода на изчислителния процес, както беше отбелязано, е задача на конвейерните автомати, ето защо същността на първата задача е синтез на конвейерен автомат, зависим от условието за преход. Като първи вариант за решение на тази задача тук е разгледано управление с автомат, използващ Мюлер С-елемент. Автоматите от този вид (фигура 1.1.10) реализират 2-фазов протокол за даннов трансфер (фигура 1.1.6) и бяха подробно представени в глава 1.

На фигура 3.3.2 сме представили част от структура на конвейер, съдържаща звено, което генерира условие за преход CJ. В схемата е изобразена синтезираната за конвейерния автомат на това звено логическа структура. Към конвейерния автомат, управляващ това звено, се отнасят две допълнителни логически схеми, чийто синтез ще представим по-долу: LA (Logic Acknowledgement) – схема за формиране на сигнала AckCJ, и LR (Logic Request) – схема за генериране на актуалните към двете разклонения заявки Reqtrue и Reqfalse.

 

Фиг. 3.3.2.  Структура с конвейерно разклонение

 

В структурата на конвейера са показани още и входните регистри на двата алгоритмични клона, които се явяват следващи звена в хода на изчислителния процес, както и техните конвейерни автомати. Който и от клоновете да бъде избран при конкретното изпълнение на изчисленията, следва да се превключи онзи начален за съответния клон конвейерен автомат, който е определен от актуалната стойност на логическото условие за преход CJ. В началото на всяко от разклоненията стои регистър фиксатор RG_F на микроконвейерно звено, но микрооперация запис по сигнал W ще трябва да изпълни само един от тези регистри.

 

Синтез на сигнал потвърждение към автомата с условен преход

Превключването на конвейерния автомат в звеното с условен преход е функция от два сигнала: Acktrue и Ackfalse, оповестяващи готовността на всеки от клоновете по отделно, т.е. те са “родители” на сигнала AckCJ. Спрямо звеното с условен преход, сигналите Acktrue и Ackfalse са еднакво паритетни, но във времето те са конкурентни. Последното означава, че във времето моментите на тяхно поредно превключване могат и да съвпаднат, при което самите превключвания могат да бъдат както еднакви, така и противоположни в смисъла на новата си логическа стойност. Трябва да се отбележи, че състезателността между тези превключвания е несъстоятелна като се има предвид условието за преход CJ. Стойността на условието за преход е актуална във времето едновременно с изчисления резултат и със заявката ReqCJ, които следва да достигнат автомата в избрания клон. В отговор ще пристигне потвърждението, което обсъждаме в момента (Acktrue или Ackfalse, което зависи от CJ). С други думи, до автомата на звеното с условен преход трябва да бъде допуснато единствено идващото потвърждение от клона, получил заявката, другото трябва да бъде игнорирано. Това е възможно, тъй като докато това потвърждение се върне като отговор на изпратената заявка, звеното все още поддържа актуалната стойност на условието CJ. Единственото, което следва да се съобрази, е каква да бъде логическата стойност на потвърждението. Като имаме предвид, че автоматът на звеното с условен преход обслужва два клона, в общия случай, когато предисторията на неговите превключвания не е известна, не е гарантирано, че връщаната логическа стойност на потвърждението, ще бъде с правилната стойност. Ето защо следва да се отчете завареното състояние на автомата. Например, ако той е в състояние единица, следващото му превключване може да бъде единствено в състояние нула. Това превключване ще се осъществи само ако идващото потвърждение има стойност нула. Тъй като по време на трансфера автоматът на звеното, което предава, е постоянно свързан с автомата на звеното, което приема (връзката се осигурява и поддържа от стойността на условието CJ), то логиката на изказаните по-горе съображения се изразяват чрез следната логическа функция

Потвърждението AckCJ ще има стойността на идващото от съответния клон потвърждение, което изключва необходимостта от конвертиране на тази стойност. Уравнение (3.3.1) ще реализира логическата схема LA (фигура 3.3.2).

 

Синтез на заявките към разклоненията

Конвейерният автомат, управляващ звеното с условен преход, разпространява към следващите звена заявка, отбелязана на фигура 3.3.2 като ReqCJ. За съжаление заявката не може да се подаде директно към входовете на конвейерните автомати в началото на всеки от алтернативните клонове. Съответните запитвания, които следва да получат конвейерните автомати, са означени с Reqtrue за клона “истина” и с Reqfalse за клона “лъжа” и са функция на логическата схема LR. Непосредственото подключване на заявката ReqCJ не е възможно, защото в точката на разклонението тя влиза в сложна функционална връзка с логическата стойност на условието CJ от една страна, и с текущото (завареното) състояние на конвейерния автомат в началото на всеки клон, от друга страна. Това пък се налага от вида на самите автомати, които, както вече беше споменато, използват 2-фазов протокол за управление на трансфера. Последното означава, че всяко тяхно превключване (0®1 и 1®0) причинява запис в регистрите фиксатори и старт на изчисленията в звената. Ако се разглежда превключване в началото на клон от микроконвейера, то освен логическата стойност на условието за преход CJ (0 или 1) следва да се отчете и завареното състояние на съответния автомат. Ще припомним още, че С-елементът се превключва както при съчетаване на две входни единици, така и на две нули. С други думи, сигналите Reqtrue и Reqfalse са функции не само от превключването на сигнала ReqCJ и от стойността на условието CJ, но и от състоянието на конвейерните автомати на входа на разклоненията. Например, ако стойността на условието за преход е единица (CJ=1), това означава, че изчисленията трябва да продължат в клона “истина”. Ако състоянието на автомата в този клон е единица, което се поддържа във времето от Reqtrue=1, то той трябва да се превключи в състояние нула, за да стартира чрез заден фронт на сигнала Wtrue тези изчисления. За да стане това, на входа на този С-елемент трябва да се съчетаят две нули. Не трябва да се забравя и факта, че всяка нова стойност на сигнала ReqCJ (и 0 и 1) представлява по същество нова заявка, излизаща от автомата в звеното на разклонение.

Логиката, която току що беше пояснена, е изразена чрез таблиците на истинност 1 и 2, в които сигналите Wtrue и Wfalse представят състоянието на съответните С-елементи.

 

Таблица 3.3.1.  Заявка към конвейерен автомат в клон “истина”

CJ

Wtrue

ReqCJ

    Reqtrue

0

0

появява се заден фронт 

0,  не се превключва

0

0

появява се преден фронт 

0,  не се превключва

0

1

появява се заден фронт 

1,  не се превключва

0

1

появява се преден фронт 

1,  не се превключва

1

0

появява се заден фронт 

,  превключва се

1

0

появява се преден фронт 

,  превключва се

1

1

появява се заден фронт 

,  превключва се

1

1

появява се преден фронт 

,  превключва се

 

Таблица 3.3.2.  Заявка към конвейерен автомат в клон “лъжа”

CJ

Wfalse

ReqCJ

    Reqfalse

0

0

появява се заден фронт 

,  превключва се

0

0

появява се преден фронт 

,  превключва се

0

1

появява се заден фронт 

,  превключва се

0

1

появява се преден фронт 

,  превключва се

1

0

появява се заден фронт 

0,  не се превключва

1

0

появява се преден фронт 

0,  не се превключва

1

1

появява се заден фронт 

1,  не се превключва

1

1

появява се преден фронт 

1,  не се превключва

 

Въз основа на съставените таблици на истинност са синтезирани следните логически функции

Както се вижда, логиката на заявките Reqtrue и Reqfalse не зависи от заявката ReqCJ, което се очакваше. Зависимостта на заявките Reqtrue и Reqfalse не е от стойността на сигнала ReqCJ, а от времето, т.е. от моментите на превключване на сигнала ReqCJ. Следва да се разбира, че смяната на стойността на ReqCJ, т.е. появата на негов фронт, маркира момента във времето, в който операционната логика на това звено завършва изчисленията си. Този момент не е задължително да съвпада с появата на истинната стойност на условието CJ. В зависимост от сложността на изчислението на CJ, в общия случай следва да се приема, че истинната стойност на CJ може да се появи и по-рано във времето спрямо новия фронт на сигнала ReqCJ или най-късно едновременно с него и никога по-късно от него. В една непосредствената реализация на (3.3.2) и (3.3.3), по-ранното явяване на CJ ще доведе до по-ранно формиране на стойностите на заявките Reqtrue и Reqfalse, а от там и до по-ранно стартиране на изчисленията в съответния клон на конвейера. Това стартиране ще започне със запис на данни в регистъра фиксатор, а те в общият случай все още няма да са достигнали във времето истинните си стойности. Така най-вероятно изчисленията могат да стартират с грешни данни.

Основният извод, който се налага от изложените съображения, е, че формулите (3.3.2) и (3.3.3) определят стойностите на заявките, но моментът, в който те следва да се появят и да подействат, се определя от момента на превключване на сигнала ReqCJ. Или казано по друг начин, новите стойности на заявките Reqtrue и Reqfalse трябва да се явят в отговор на фронт в превключването на сигнал ReqCJ. Последното означава, че формирането на заявките Reqtrue и Reqfalse не е възможно да бъде постигнато само с чиста комбинационна логика.

Изложените разсъждения доказват, че времевата зависимост на изчислените стойности (3.3.2) и (3.3.3) може да се реализира само с помощта на запомнящ елемент – тригер. Тъй като запис трябва да се извършва при всяко превключване на С-елемента, синхронизиращият тригер трябва да бъде от тип DEDTFF (D-тригер, работещ и по двата фронта).

В окончателната принципна логическа схема на конвейерния автомат, представена на фигура 3.3.3, е представено едно предпочитано от нас решение, основаващо се на обикновен D-Latch тригер и два детектора на фронт - FD­ за преден и FD¯ за заден. Логическата схема, която беше отбелязана на фигура 3.3.2 с името LR, съдържа С-елемента на звеното с условен преход, схемата LA, обединяваща потвържденията Acktrue и Ackfalse, както и двете тригерни схеми, генериращи заявките Reqtrue и Reqfalse.

Както се вижда от схемата, пулс-генераторите FD се обединяват в схема ИЛИ и реализират запис по входа С на тригера. Изчислената според (3.3.1) стойност на заявката Reqtrue постъпва по вход D и се съхранява в тригер TL_t до следващия път, когато ще бъде избран същия клон. Стойността на заявката в другия клон се запазва като се презаписва в тригер TL_f. Аналогично е действието на схемата, когато според (3.3.2) е актуална заявката Reqfalse. Нейната стойност се записва в тригер TL_f.

 

Фиг. 3.3.3.  Принципна логическа схема на 2-фазов конвейерен автомат за звено с условен преход

 

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

Тъй като в отговор на изпратената заявка Reqtrue или Reqfalse съответният конвейерен автомат ще се превключи и ще върне по обратната връзка нова стойност за сигнала W, която застрашава надеждността на записа в тригера TL_t или TL_f, то ние сме принудени да я задържим във времето, докато изчезне импулсът за запис от входа С. Закъснението се осигурява от елемента DLW.

 

 

3.3.4.  Микроконвейер с четирифазов протокол за трансфер

Вторият вариант за решение, който представяме по-долу, се отнася за конвейерни автомати, реализиращи 4-фазов протокол за трансфер. На фигура 3.3.4 представяме един от синтезираните в раздел 3.1 автомати, реализиращ 4-фазов протокол с изпреварващо нулиране, върху който е изградено новото решение.

 

Фиг. 3.3.4.  Четирифазов конвейерен автомат

 

Събитията в протокола на този автомат в два последователни работни цикъла (k) и (k+1) на дадено (текущо) микроконвейерно звено, бяха представени в глава 1 на фигура 1.1.7.

 

Синтез за потвърждение към автомата с условен преход

Представяният 4-фазов протокол дава разбирането, че конвейерните автомати, включително и тези в началото на всяко разклонение, очакват поредното си стартиране, намирайки се винаги в нулево състояние. С други думи условията за старт на тези автомати, за разлика от разгледаните преди това 2- фазови, са винаги едни и същи.

В звеното с условен преход, превключването на конвейерния автомат е функция от два сигнала: Acktrue и Ackfalse, оповестяващи готовността на всеки от клоновете по отделно. Логическият анализ на събитията в точката с условен преход е аналогичен на направения за предходния автомат. И тук двата потвърждаващи сигнала са конкурентни във времето. Тъй като заявките имат винаги една и съща логическа стойност, така и потвържденията са еднакви по стойност. С появяването си (фигура 1.1.7, момент 2) всеки един от тези сигнали би могъл да превключи конвейерния автомат на звеното с условен преход, без да се интересува от наличието на другия. Това бихме могли да приемем за нормално, ако обаче е сигурно, че условието за преход CJ (което ще получи стойност със закъснение) ще бъде такова, че изчисленията ще продължат именно в този клон, който е причинил старта. Ако обаче това не е така и се окаже, че изчисленията трябва да продължат в клона с изоставащото (закъсняващото) във времето потвърждение, генерираната вече заявка ReqCJ ще трябва да изчаква съответното събитие.

Тъй като по време на данновия трансфер автоматът на звеното, което предава данните си, е постоянно свързан с автомата на звеното, което ги приема, (връзката се осигурява и поддържа от стойността на условието CJ), обединяването на потвържденията от двата клона се постига чрез логическа дизюнкция. Това положение е аналогично на вече изказаното за 2-фазовия автомат, ето защо логиката на потвърждението AckCJ се изразява с уравнение (3.3.1).

 

Генериране на заявки към разклоненията

От своя страна заявката ReqCJ не е зависима от състоянията на конвейерните автомати в разклоненията. Последното означава, че заявките Reqtrue и Reqfalse са зависими единствено от стойността на условието за преход CJ, което води до следната логика:

Условия за времева зависимост, каквато беше изявена в случая с 2-фазовите автомати, тук не съществуват. Според (3.3.4) и (3.3.5) единичните стойности на заявките Reqtrue и Reqfalse възникват в правилния момент, т.е. в момента, в който възниква заявката ReqCJ. Следователно за формиране на заявките Reqtrue и Reqfalse е необходим само един демултиплексор, управляван от сигнала CJ.

Окончателният вид на схемата на конвейерния автомат в звеното с условен преход е представен на фигура 3.3.5. Звената в останалите линейни участъци на конвейера се управляват от автомати, имащи схемата, показана на фигура 3.3.4.

 

Фиг. 3.3.5.  Четирифазов конвейерен автомат в звено с условен преход

 

Заключение

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

Въпреки че разгледаната тук задача получи своето решение, в цялост и до край, проблемът с конвейерната реализация на общи алгоритмични структури все още не е изчерпан. Той може да се счита за напълно решен при наличие на решения и за останалите задачи, формулирани в началото. Тези четири задачи са неразривно свързани и нямат практическа самостоятелност.

 

 

3.3.1.  Handshake контролер за 3-алтернативен условен преход

 

Въведение

Настоящото изследване е посветено на проблеми в нелинейните асинхронни микроконвейери, съдържащи микроконвейерно звено за изпълнение на операция сравнение на две числа x и y – Compare(x,y). Хардуерната реализация на тази операция, върху различни по вид и формат данни, е представена в раздел 4.7. Компараторът, като елемент в структурата на асинхронно микроконвейерно звено, се превключва с променливо закъснение. За работа в условия на асинхронно управление компараторът притежава допълнителна логическа схема, реализираща модела на фактическото закъснение CD (Completion detection). Синтезът на тази схема е представен в раздел 4.9. Сигналът CD, който тази схема генерира, се използва в качеството на сигнал Request, предназначен за конвейерния автомат, който синхронизира изчислителния процес в звеното с условен преход. Компараторът формира логически стойности на признаците от множеството Con

Con: { LT (Less Than); EQ (equal); GT (Greater Than) }.

Както е илюстрирано на фигура 3.3.1.1, микроконвейерното звено в (k+1)-ва степен на конвейера, реализира операция сравнение чрез цифров компаратор, който генерира признаците на отношението. Специално следва да се отбележи, че единствено при хардуерната реализация на операция сравнение е възможен 3-алтернативният условен алгоритмичен преход, който е изразен в блок-схемата. За този условен преход следва още явно да се изтъкне фактът, че всяко от отклоненията се реализират единствено при единична стойност на съответния флаг. За разлика от обикновения 2-алтернативен условен преход, в настоящия случай, отклонения при нулева стойност на флаговете не са възможни. Тези особености правят 3-алтернативния условен преход уникален и единствено възможен при хардуерна реализация, ето защо представлява актуален проблем.

 

Фиг. 3.3.1.1.  Алгоритмична структура с 3-алтернативен условен преход

 

 

Микроконвейер с двуфазов протокол за трансфер

Управлението на хода на изчислителния процес в микроконвейерите е задача на конвейерните автомати, ето защо логическата схема на автомата в точката на разклонение зависи от типа на условния алгоритмичен преход и от стойностите на генерираните флагове. Решението на проблема с този вид преход, описан в предходния раздел, изисква синтеза на микроконвейерен автомат със специална логическа структура, По-долу е представен и описан логическият синтез на автомат, в чиято структура има само един Мюлер С-елемент. Автоматите от този вид реализират 2-фазов протокол за даннов трансфер.

На фигура 3.3.1.2 е представена логическата структура на микроконвейерен автомат, който управлява звено, което по време на изчисленията, провеждащи се в него, генерира условията за преход от множеството Con. Структурата на конвейера показва трите възможни клона, в които може да отклони хода на изчислителния процес. Конвейерният автомат, управляващ звеното с условен преход, работи с две двойки сигнали. Това са сигналите, свързващи го с предходното звено (Req, Ack) и сигналите, свързващи го със следващото звено (ReqCon, AckCon).

 

Фиг. 3.3.1.2.  Структура с конвейерно разклонение

 

Както може да се види, автоматът работи още със сигналите на флаговете LT, EQ и GT, както и със сигнала на фактическото закъснение CD на изчисленията в текущото звено. Изчисленията в текущото звено стартират след сигнала за запис W на нови данни в конвейерния регистър-фиксатор RG-F. Тук е важно да се разбира, че този сигнал възниква като единица (CD=1) в момента на поява на окончателните стойности на флаговете. На фигура 3.3.1.2 е показано, че неговата задача е да разреши подаването на стойностите на флаговете към логическите схеми LA и LR. Така стойността на заявката ReqCon ще бъде предадена към следващото микроконвейерно звено в съответния клон на условния преход, едва след като завърши превключването на компаратора. Логическата стойност на заявката не се променя от сигнала CD. За 2-фазовите микроконвейерни автомати стойността на заявката съвпада със състоянието на С-елемента, означено CCon. Известно е, че тя има две активни стойности, които се редуват (CCon=0,1,0,1, ...) в процеса на превключване на автомата. Така логическата структура на конвейерния автомат включва схемите LA (Logic Acknowledgement) и LR (Logic Request). Схемата LA има за задача да върне актуалното потвърждение, идващо от автомата на звеното в онзи клон, който последен е осъществил трансфер на данни. Съответно, схемата LR има за задача да предаде заявката и да осъществи трансфер на данни единствено към онзи клон, който е посочен чрез активния флаг от множеството Con. Активен ще бъде онзи клон, чийто флаг има стойност единица.

Конвейерните автомати на входните звена в отделните клонове не са показани на фигура 3.3.1.2. Всеки един от тези автомати има за задача да реализира трансфер на данни, когато е готов и получи заявка за това. Съответният автомат, получил своята заявка (ReqLT, ReqEQ или ReqGT), трябва да се превключи, при което ще генерира импулс за запис (WLT, WEQ или WGT) към съответния регистър фиксатор (RG-F_LT,  RG-F_EQ  или  RG-F_GT). Заедно с това той следва да върне потвърждение от съответния клон за така изпълнения трансфер (AckLT, AckEQ или AckGT).

 

 

Синтез на сигнал потвърждение към автомата с условен преход

Превключването на конвейерния автомат в звеното с условен преход (фигура 3.3.1.2) е функция от трите сигнала AckLT, AckEQ и AckGT. Всеки един от тези сигнали може да бъде отговор на автомат, осъществил трансфер на данни към входното звено в съответния клон. Обединени чрез схемата LA, тези сигнали трябва да формират един общ отговор AckCon към автомата, подал заявката ReqCon.

Спрямо звеното с условен преход, сигналите AckLT, AckEQ и AckGT са еднакво паритетни. Тъй като конвейерните автомати, които се имат предвид тук, са 2-фазови, всяка една от логическите стойности може да бъде актуална за тези сигнали. Във всички случаи обаче тя трябва да бъде и съответна на стойността на изпратената актуална заявка. Трябва да се отбележи, че състезателността между потвържденията е несъстоятелна, като се има предвид условието за преход Con, в което винаги има само една единица. Стойността на условието за преход Con е актуална във времето едновременно с изчисления резултат и със стойността на заявката ReqCon, която следва да достигне автомата в избрания клон. За 2-фазовите конвейерни автомати следва да се помни факта, че те запазват състоянието си (при което поддържат стойността на изпратената заявка), докато не получат потвърждението, че тя е приета. Така в отговор на конкретната заявка ще пристигне (веднага или със закъснение) съответното потвърждение – AckLT, AckEQ или AckGT. Актуалната стойност на съответно пристигащото потвърждение може да бъде както нула, така и единица. До автомата на звеното с условен преход трябва да бъде допуснато единствено идващото потвърждение от клона, получил съответната заявка. Останалите 2 сигнала трябва да бъдат игнорирани. Единственото, което следва да се съобрази, е каква да бъде логическата стойност на потвърждението AckCon, която следва да съответства на очакваната. Съответствието е проблем, тъй като в хода на преминаващите през това звено задачи, автоматът се свързва последователно с различни клонове в структурата.

Като имаме предвид, че автоматът на звеното с условен преход обслужва 3 клона, и в общия случай, когато предисторията на неговите превключвания (от гледна точка на автоматите във отделните клонове) не е известна, то не е гарантирано, че връщаната на входа на схемата LA логическа стойност на потвърждението от съответния клон, ще бъде с правилната за автомата стойност. Ето защо при синтеза на схемата LA следва да се отчете състоянието на двата свързващи се автомата в актуалния момент. Възможните случаи са четири. Например, ако автоматът в условния преход е в състояние единица, следващото му превключване може да бъде единствено в състояние нула. Тогава, това превключване ще се осъществи само, ако идващото потвърждение има стойност нула, тъй като следващото състояние е противоположно. Това е възможно, тъй като докато това потвърждение се върне като отговор на изпратената заявка, звеното все още поддържа актуалната стойност на условието от множеството Con. Тъй като по време на трансфера автоматът на звеното, което предава, е постоянно свързан с автомата на звеното, което приема (връзката се осигурява и поддържа от стойността на условието Con), то логиката на изказаните по-горе съображения може да бъде изразена чрез таблица 1.

В таблицата, завареното състояние на автомата-ресивър е означено с индекс t, а новото му състояние след превключване, с (t+1).

Процесите между автомата-трансмитер, издаващ заявката за трансфер Req и автомата-ресивър, връщащ потвърждението Ack, представени в таблица 1, са валидни и за трите паралелни клона в алгоритъма от фигура 3.3.1.1.

 

Таблица 3.3.1.1.  Определяне правилната стойност на потвърждението Ack

Ново

състояние

на автомата

трансмитер

CT º CCon

Стойност

на новата

заявка

ReqConºCT

Заварено

състояние

на автомата

ресивър

(CR)t

Ново

състояние

на ресивъра

(CR)t+1

Стойност

на

потвърж-

дението

Ack

Необходима

стойност на

потвърж-

дението

0

0

0

1

0

1=()

0

0

1

0

1

1=

1

1

0

1

0

0=

1

1

1

0

1

0=()

 

Като се има предвид, че 2-фазовите конвейерни автомати генерират сигнала Ack като инверсия на състоянието на своя С-елемент, сложната функционалност за конвертиране на връщащото се от автомата-ресивър потвърждение, описана по-горе, може да бъде заобиколена по начин, предложен по-горе в раздел 3.3. Като следствие, логиката, която се вижда и в таблица 1, се изразява чрез следната логическа функция

Единственото, което трябва да бъде осигурено, е правилният момент, в който потвърждението трябва да бъде подадено на (допуснато до) входа на С-елемента. Този момент може да бъде фиксиран единствено от превключването на автомата-ресивър, който преди това е получил (чрез съответния флаг) заявката за трансфер. Тъй като моментът на възникване на стойността на потвърждението по силата на (4) е различен от момента, в който тази стойност трябва да бъде подадена на входа на С-елемента, следва, че тя трябва да бъде временно фиксирана в тригер. Това трябва да бъде D-Edge тригер с превключване по заден фронт. Задният фронт на сигнала за запис W маркира момента, в който тази “заповед” се прекратява. На фигура 3.3.1.3 е представена логическата схема LA, която реализира функция (3.3.1.1) и казаното по-горе.

 

Фиг. 3.3.1.3.  Логическа схема за генериране на потвърждението (схема LA)

 

Състоянието на конвейерния автомат в условния преход, означено CCon, е подадено на данновия вход на D-тригера. Стойността на състоянието се записва в тригера в момент, когато автоматът осъществи данновия трансфер в съответния клон. По тази причина импулсите за запис WLT, WEQ и WGT се използват за запис и на потвърждението AckCon. Флаговете LT, EQ и GT, които автоматът в условния преход продължава да поддържа, селектират чрез логическия елемент в схемата съответния импулс за запис.

 

 

Синтез на заявките към разклоненията

Конвейерният автомат, управляващ звеното с условен преход, разпространява към следващите звена заявка, отбелязана на фигура 3.3.1.2 като ReqCon. Тази заявката не може да се подаде непосредствено към входовете на конвейерните автомати в началото на всеки от алтернативните клонове. Съответните заявки, които следва да получат конвейерните автомати, са означени ReqLT, ReqEQ и ReqGT и са функция на логическата схема LR. Непосредственото подключване на заявката ReqCon не е възможно, защото в точката на разклонението тя влиза в сложна функционална връзка с логическата стойност на условието Con от една страна, и с текущото (завареното) състояние на конвейерния автомат в началото на всеки клон, от друга страна. Това пък се налага от вида на самите автомати, които използват 2-фазов протокол за управление на трансфера. Последното означава, че всяко тяхно превключване (0®1 и 1®0) е работно и трябва да причинява запис в регистрите фиксатори и с това старт на изчисленията в съответното звено. Тъй като условието (LT, EQ или GT), избрало съответния клон, има винаги единична стойност, то остава да се отчете само завареното състояние на съответния конвейерен автомат. Например, ако е изпълнено условието EQ=1, това означава, че изчисленията трябва да продължат в клона “равно”. Ако състоянието на входния автомат в този клон е единица, което се поддържа във времето от заявка със стойност ReqEQ=1, то той трябва да се превключи в състояние нула, за да стартира чрез сигнала WEQ тези изчисления. За да стане това, на входа на неговия С-елемент трябва да се съчетаят две нули.

Ако състоянието на входния автомат в този клон е нула, което се поддържа във времето от заявка със стойност ReqEQ=0, то той трябва да се превключи в състояние единица, за да стартира чрез сигнала WEQ тези изчисления. За да стане това, на входа на неговия С-елемент трябва да се съчетаят две единици.

Логиката на изказаните съображения се изразява чрез таблица 2.

Таблица 3.3.1.2.  Определяне правилната стойност на заявката към избрания клон

Ново

Състояние

на автомата

трансмитер

CT º CCon

Стойност

на новата

заявка

ReqConºCT

Заварено

състояние на

автомата

ресивър

(CR)t

Ново

състояние на

ресивъра

(CR)t+1

Необходима

стойност на заявката

за новото състояние

на ресивъра

0

0

0

1

1=

0

0

1

0

0=

1

1

0

1

1=

1

1

1

0

0=

 

Заключението, което може да се направи от таблица 2, е, че генерираната от автомата-трансмитер стойност на заявката ReqCon, е в съответствие с необходимата за автомата-ресивър стойност, само в случаите, когато новото състояние на автомата-трансмитер е различно от текущото състояние на автомата-ресивър (CT¹CR). Това се вижда в средните два реда на таблица 2.

Когато новото състояние на автомата-трансмитер съвпада с текущото състояние на автомата-ресивър (CT=CR), правилната стойност на заявката, която следва да получи избраният от съответния флаг автомат-ресивър, е инверсна на генерираната.

Описаната по-горе логика е обща за трите заявки ReqLT, ReqEQ и ReqGT и се изразява от следната обща за тях логическа функция

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

Принципната логическа схема за генериране на заявките към отделните клонове е представена на фигура 3.3.1.4.

 

Фиг. 3.3.1.4.  Логическа схема за генериране на заявките (схема LR)

 

В тази схема са включени D-Latch тригери за запис и поддържане на стойността на заявката към всеки от клоновете. Към D-входа на всеки от тригерите TL е подключена логическа схема, реализираща функцията (3.3.1.2), означена RQ. Схемите RQ изчисляват правилната стойност на заявката за съответния клон, а тригерът TL, в който тя се запомня, я поддържат във времето. Стойността на новата заявка ReqCon, респективно ReqLT, ReqEQ или ReqGT, е актуална едва след появата на разрешаващия сигнал CD. Следва да се напомни, че сигналът CD оповестява края на изчисленията в микроконвейерното звено и момента, в който признаците LT, EQ и GT получават истинните си стойности. Предният фронт на този сигнал се задържа във времето чрез елемент DLCD. Закъснението е необходимо за постигане на висока надеждност на запис в D-тригера. Детекторът на преден фронт FD­ формира единичен импулс за запис, който преминава само през онзи И елемент, който е отворен от съответния флаг, като по този начин се извършва запис само в един от тригерите, определен от актуалния признак LT, EQ или GT.

След записа на новата заявка, съответният автомат-ресивър ще се превключи. Новото му състояние CLT, CEQ или CGT съответно трябва да се появи на входа на конвертиращия елемент със закъснение DLW, изчаквайки по този начин изчезването на записващия импулс от С-входа на D-тригера.

Процесът на превключване на така пояснената схема е представен чрез времедиаграма на фигура 3.3.1.5. Илюстрирани са последователно във времето два избрани от таблица 2 случая на превключване на автомата на звеното с условен преход.

 

Фиг. 3.3.1.5.  Времедиаграма на две последователни превключвания

 

От началото на времедиаграмата конкретните превключвания илюстрират случай, при който се предполага появата на флаг EQ=1 и заварени състояния на автоматите според последния ред на таблица 2. При така избрания флаг изчислителния процес се отклонява в клона “равно”. До момент Т0 няма превключвания – автоматът е в състояние 0 (CCon=0). Получил е потвърждението AckCon=1 и очаква следващата заявка Req. Тази заявка се появява в момент Т0 и причинява превключване на автомата, при което новото състояние е 1 (CCon=1). При това превключване в RG-F се записват нови данни, звеното стартира своите изчисления, при което сигналът CD изчезва (CD=0). Докато текат изчисленията превключвания няма. В момент Т1 изчисленията завършват и се появяват сигналите  CD=1  и  EQ=1. Следва лавинообразен процес от превключвания, целящи данновия трансфер към избрания от флага EQ клон на конвейера. Със закъснение DLCD явява импулсът FD­, който ще запише в тригер TL_EQ правилната стойност на заявката ReqEQ=0. Предполага се, че автоматът в този клон очаква тази заявка и се превключва веднага, при което издава импулс за запис WEQ на подаваните данни. Новото състояние на този автомат CEQ е 0 и със закъснение DLW се връща в схема LR (фигура 3.3.1.4). В съответствие с фигура 3.3.1.3 и зависимост (3.3.1.1) се връща новата стойност на потвърждението AckCon=0.

Във втората половина на същата диаграма е илюстрирано следващото превключване на автомата на звеното с условен преход, според първия ред на таблица 2, при който се предполага появата на флаг GT=1. С други думи на времедиаграмата могат да се видят две последователни превключвания на автомата с условен преход CCon®1, и после CCon®0. При втория случай и така избрания флаг в резултат на аналогични превключвания изчислителния процес се отклонява в клона “по-голямо”.

 

 

Заключение

Представените в това изследване резултати се отнасят до реална и многократно срещаща се алгоритмична структура. Нейната оригиналност се състои в хардуерната реализация на условния преход. Именно хардуерната реализация на сравнението прави условния преход уникален в неговите три възможни разклонения. Подобно 3-алтернативно разклонение не е възможно да се постигне с програмни средства.

Тъй като търсената реализация на компютърните изчисления тук е насочена към асинхронно микроконвейерно управление, по естествен път бяха поставени задачите за синтез на съответния микроконвейерен автомат. Цифровият компаратор е елемент в структурата на микроконвейерно звено, генериращо флаговете за преход LT, EQ и GT. И трите изхода на условния преход се осъществяват само при стойност “1” (true). Комбинирани условия за преход (LE, GE и пр.) могат да се осъществят с допълни апаратни средства, реализиращи съответните логически функции (LE=LTÈEQ и пр.). Синтезираният микроконвейерен автомат реализира 2-фазов трансферен протокол.

 

 

3.4.  Управление на звено в обща точка на микроконвейер

 

След като в предходния раздел 3.3 формулирахме четири задачи, свързани със синтеза на хардуерната реализация на алгоритмични структури, съдържащи условни преходи и представихме решението на първа задача, в този раздел ще представим решението на втора и на трета задача.

Разглеждаме примерен алгоритъм със структура, представена на фигура 3.4.1, който е апаратно реализиран и чието изпълнение е конвейерно организирано. Има се предвид още, че този алгоритъм е детайлизиран и неговите изпълними блокове са реализирани апаратно с помощта на методите, изложени в глава 2. Всеки изпълним блок от блок-схемата представлява отделно класическо еднотактово или многотактово микроконвейерно звено, според определенията изложени в раздел 3.1 и раздел 3.2. Както се вижда, представеният алгоритъм може да се определи като разклонен. Условието за преход CJ (Conditional Jump) формира в примерния алгоритъм следните възможни пътища за изчислителния процес:

1.  Begin; 1; 2; (CJ=true); 3; 6;  End ;

2.  Begin; 1; 2; (CJ=false); 3; 4; 5; 6 ;  End ;

където с 1, 2, 3, ... , са означени номерата на степените в конвейера, през които преминава изпълнението.

Микроконвейери, в чиято структура между конвейерните звена има реализирани условни преходи, се определят като нелинейни. Тук е изложено решението на задачата за така наречената обща точка. Под обща точка разбираме точката, в която се обединяват алгоритмичните преходи, идващи от няколко прехождащи я клона. Входът на конвейерното звено в ниво 6 на структурата от фигура 3.4.1 е пример за обща точка, тъй като там се обединяват изходите на два клона от примерния алгоритъм.

 

Фиг. 3.4.1.  Структура на примерен разклонен алгоритъм

 

Главният проблем на общата точка, от гледна точка на приемащото конвейерно звено, се състои в това, че заявките Request, които придружават получените в отделните клонове междинни резултати, от една страна са няколко, а от друга страна са конкурентни във времето. Най-тежката ситуация, в която може да изпадне конвейерният автомат, който ги приема, е случаят на тяхното едновременно появяване. Всяка една от заявките предявява искане да използва конвейерното звено в това ниво. Специално искаме да отбележим, че достигналите до общата точка заявки задължително се отнасят до различни задачи, стартирани преди това в конвейера.

От казаното става ясно, че синтезът на конвейерния автомат на звеното в общата точка трябва да оползотвори следните няколко вида връзки:

1.          Автоматът следва да приема всички заявки Request от предхождащите го паралелни конвейерни клонове, т.е. той трябва да има много входове;

2.          Във връзка със заявките, конвейерният автомат следва да разпространява в обратна посока актуалната стойност на сигналите за потвърждение Acknowledgement. Сигналите от този тип в обратната посока следва да достигат конвейерните автомати във всяко едно предходно разклонение. Истинното потвърждение обаче следва да получи само автоматът в онзи клон, чиято заявка е била приета, по смисъла на предходната точка 1. Сигналите потвърждение следва да са толкова на брой, колкото са входовете за заявки;

3.          От към страната на микроконвейерното звено, следващо звеното в общата точка, конвейерният автомат следва да използва двойката сигнали Reqout и Ackin, реализираща трансферния протокол.

Изложеното по-горе изразява хардуерния аспект на задачата. Тя обаче има и чисто алгоритмичен аспект. Последният характеризира избора на една конкретна заявка. В раздел 3.3 изборът беше определен като задача за арбитриране, имайки предвид неизбежността на спора между заявките за общ ресурс. Задачата за арбитриране на заявки условията на конвейерно управление приемаме за нова, тъй като за нея ще бъдат изказани специални съображения. Казаното до момента за конвейерния автомат в общата точка е илюстрирано на фигура 3.4.2.

 

Фиг. 3.4.2.  Връзки на конвейерен автомат в обща точка

 

Всяка двойка сигнали

 

на конвейерния автомат PC (Pipeline Controller) е свързана със съответния клон, предхождащ общата точка. В подходящия момент автоматът издава сигнала W (Write), с който записва входни данни в конвейерния регистър на звеното в общата точка, като по този начин стартира изчисленията в него.

 

 

3.4.1.  Формулиране на принципи за арбитриране

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

на входа на конвейерния автомат са напълно равнопоставени, т.е. с еднакъв приоритет. Разбирането ни относно това положение не може да бъде друго, тъй като между отделните задачи, стартирани в конвейера, няма никаква връзка или основание за предпочитание. Това, разбира се, усложнява задачата за реализация на избора.

На второ място ще отбележим, че не може да се отрече правото на безусловно обслужване, когато фиксираната заявка е единствена. Фактически в този момент такава заявка печели във времето правото да придвижи изчисленията на своята задача по-нататък в конвейера.

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

На четвърто място, по повод на изказаното по-горе ограничение, трябва да поставим въпроса:  колко назад във времето можем да обслужим една заявка, ако при всяко арбитриране са в наличност всички (k на брой) заявки? Ще припомним, че по същество става дума за избор на задача, която ще продължи изпълнението си в конвейерното звено на общата точка. Това означава, че всяка друга заявка, която не е избрана, ще трябва да се поддържа от своя конвейерен автомат в състояние на очакване. По този начин следва да е ясно, че задачата, чието изпълнение е преминало по не избрания клон, е временно спряна и ще изчака в тази точка своя ред. В това състояние ще се окажат и всички останали не избрани задачи. Те ще чакат освобождаването на звеното в общата точка, когато неговият автомат ще извърши поредния избор. Между временно, към заявките, очакващи обслужване, е възможно отново да се присъедини преди избрана и вече обслужена заявка.

И тук вече можем да кажем, че ако в общата точка са на лице такива екстремни ситуации, като справедлива стратегия за избор, издигаме следната: заявките ще се избират последователно в кръг, при конструктивно заложена посока и ред. Редът може да съответства на естественото номериране на клоновете (1, 2, ... , k), което условно ще направи Конструктора. Тази стратегия гарантира обслужване на заявка от произволен клон след не повече от (k-1) на брой предхождащи обслужвания на заявки от останалите клонове.

Ще илюстрираме горното твърдение по следния начин: нека в регистъра на заявките, означен RG-Req, в даден момент условно са регистрирани заявки от съответните клонове, както е показано на фигура 3.4.3. На фигурата е показана ситуация, при която звената в клоновете от 1 до (k-5), а така също в клоновете (k-3) и (k-2), в текущия момент са заети със своите изчисления и не подават заявки към конвейерния автомат в общата точка. За това съответстващите им тригери от регистър RG_Req са в състояние нула. В същото време крайните звена в клонове (k-4), (k-1) и (k) са завършили своите изчисления и са регистрирали своите заявки към автомата в общата точка.

 

Фиг. 3.4.3.  Цикъл за избор на регистрирана заявка

 

В тази обстановка, заявката Rk-1 би била следващата избрана, ако избраната в текущия момент е Rk-4. Ако поредният избор се пада на заявка Rk-4, както е показано на фигурата, тригерът (k-4) на избраната заявка, трябва да се нулира веднага след това. Това е необходимо за реализация на изказаната стратегия за избор от една страна, а така също и за регистрация на следваща заявка от този клон, от друга страна.

Докато звеното в общата точка обаче изпълнява току що приетата заявка Rk-4, е възможно да пристигнат и да се регистрират заявките Rk-3 и Rk-2. Така при следващия избор вместо Rk-1 ще бъде избрана заявка Rk-3, а това си е чиста проба пререждане. При това Rk-1 е прередена в очакването си както от Rk-3, така и от Rk-2. Следователно, по силата на последователния ред на избор, заявката Rk-1 ще трябва да изчака повече отколкото се е “надявала” първоначално. Въпреки това очакването й няма да бъде повече от вече споменатите (k-1) на брой предхождащи обслужвания.

Ако на заявките не бъде позволено описаното пререждане, то арбитърът ще следва да поддържа отделен регистър RG-F, който да фиксира и съхранява всички новопоявили се заявки. Регистраторът RG-F ще съхранява и актуализира състоянието си до момента, в който всички тригери в RG-Req бъдат нулирани, т.е. когато цикълът на обхождане завърши. В този момент регистър RG_Req следва да приеме регистрираните в RG-F заявки и да започне нов цикъл на обхождане. От своя страна, след нулиране, регистър RG-F отново ще започне регистрация на новопристигнали заявки.

Лесно се съобразява, че и в двата варианта на последователно обслужване, равноправният статут на заявките предпоставя не повече от едно обслужване в рамките на един цикъл на обхождане. Ето защо при построяване на решението ще търсим възможно по-простото техническо решение.

 

 

3.4.2.  Структура на конвейерния автомат в общата точка

Конвейерното звено в общата точка трябва:

1.      Да приеме данни Dj от избрания j-ти клон. За да се постигне това, данновият регистър на звеното трябва да се предхожда от мултиплексор, който ще означим MUX-D;

2.      Да приема избраната заявка Rjin в качеството й на сигнал Reqin към конвейерния автомат, което означава наличие на мултиплексор за входни заявки, който ще означим MUX-R;

3.      Да издава сигнал за потвърждение Ackout, който да разпредели като сигнал Ajout. Последният трябва да получи единствено автоматът на избрания j-ти клон. В направлението на всеки от онези автомати, които не получават това потвърждение, автоматът на звеното в общата точка следва да поддържа трайно във времето стойността на последното потвърждение, което им е изпратил. Казаното означава, че стойността на потвърждението трябва да се запомня в тригер. Достъп до отделните тригери ще осигурява арбитърът чрез генерирания от него код за избор. Тези тригери ще формират регистър на потвържденията RG-Ack.

Управлението на споменатите по-горе логически възли зависи от избора, което означава, че арбитърът ще бъде част от логическата структура на конвейерния автомат в общата точка.

 

 

3.4.3.  Конвейерен автомат с двуфазов протокол

Задачата на конвейерния автомат в общата точка е да издаде в нужния момент сигнал W за запис на данните Dj, излизащи от мултиплексора MUX-D, в конвейерния регистър на звеното. Синтезът на този автомат неизбежно е свързан с очертаващата се логическа структура за управление на звеното в общата точка. Особено внимание ще бъде отделено на събитийния характер на процесите в структурата.

 

Синтез на входящата заявка

Входящите заявки

когато са генерирани от 2-фазови автомати, са потенциални сигнали, при които и двете логически стойности са активни. Както беше изтъкнато в глава 1, при този протокол за трансфер на данни, действен е фронтът (преден или заден) в момента на превключване на конвейерния автомат. Всяко ново превключване на конвейерния автомат причинява запис на данни в конвейерния регистър и с това старт на изчисленията в звеното. По тази причина конвейерните регистри трябва да бъдат построени с тригери от тип DEDTFF. В нашият случай обаче, когато към конвейерния автомат са подадени много заявки, се налага да се реализира избор. Различните и непредсказуеми нива на пристигащите заявки, определено създават допълнителен проблем.

От друга страна, появата на сигнал потвърждение за готовността на звеното в общата точка, също е събитие. Ето защо ние приемаме, че определящ за избора е не моментът на поява на новата входяща заявка, а моментът на поява на потвърждението за готовност на звеното в общата точка, тъй като появата на това потвърждение е следствие от превключване на неговия автомат и е старт за нов избор. Следва да бъде отчетено, че при 2-фазовия протокол, сигналът за потвърждение е също потенциален, с активност и на двете му логически стойности.

Изложените съждения обосновават необходимостта от фиксиране на новите заявки във времето, тъй като не е възможно непосредственото им обслужване. Нововъзникналите заявки следва да се регистрират асинхронно в отделен регистър RG-Req, който беше коментиран в точка 3.4.1. Предвид на казаното може да твърдим, че регистър RG-Req трябва да бъде реализиран чрез асинхронни RS-Latch тригери. За да се прихване моментът на превключване на стойността на заявката, записът на новото превключване в тригер от регистър RG-Req ще се извършва по неговия S вход от две дизюнктивно свързани фронт-детекторни схеми: FD­ за преден и FD¯ за заден фронт

Логиката за нулиране на тригерите в този регистър ще конкретизираме по-късно. Това, което може да бъде казано сега е, че първоначално това ще прави задължителният сигнал Reset. След регистрация, всяка нова заявка съществува на изхода на своя тригер в регистър RG-Req като единица. Нулевата стойност в тригер от този регистър следва да разбираме като липса на нова заявка. С други думи, единиците ще възприемаме като необслужени заявки, измежду които се прави избор, а нулите като липсващи заявки.

В заключение можем да кажем, че RG-Req се явява своеобразен преобразовател на нивото на заявките – от произволни, те ще бъдат съхранявани временно само като единици. Фиксираните заявки ще се подават на арбитър, който ще генерира номера на избраната заявка. Този номер ще се използва като код за управление на мултиплексор MUX-R, през който ще излезе избраната заявка Rj; още ще се използва като код за управление на мултиплексор  MUX-D,  през който ще преминат данните от избрания клон Dj; също и като код за управление на записа на потвърждението Aj към избрания клон в регистър RG-Ack.

Логическата структура на конвейерния автомат за управление на звеното в общата точка е показана на фигура 3.4.4.

 

Фиг. 3.4.4.  Структура на 2-фазов конвейерен автомат в обща точка

 

Ако приемем, че в даден момент конвейерният автомат на звеното в общата точка се превключва, т.е. звеното приема нови данни и стартира изчисленията, това означава, че автоматът му е получил потвърждението Ackin (фигура 3.4.4). Като имаме предвид, че избраната от арбитъра заявка Rj, която трябва да се превъплъти в Reqin, ще има произволна логическа стойност, следва да я преобразуваме така, че да се осъществи правилно предстоящото превключване на автомата.

За целта съставяме таблица на истинност за заявката Reqin.

Логиката за попълване на таблица 3.4.1 е следната (вижте първия ред):

§                            Ако потвърждението Ackin, което получава автоматът в общата точка от следващото звено, е единица, т.е. превключване с преден фронт, и;

§                            ако при това автоматът е заварен в състояние нула;

§                            то той може и следва да се превключи единствено в състояние единица.

За реализация на превключването на автомата в състояние единица, стойността на сигнала Reqin следва да бъде единица. Ако при това, избраната заявка Rj е нула, то следва че

При аналогични съждения са попълнени всички останали редове на таблицата.

 

Таблица 3.4.1.  Логическа стойност на заявката Reqin

Ackin

пристига с

нова стойност

С-елементът е

заварен в

състояние

Избраната

заявка  Rj  има

стойност

С-елементът

трябва да се

превключи в

състояние

За целта

Reqin

трябва да бъде

0

0

0

1

1

0

1

1

 

За таблицата на истинност трябва да поясним, че новата стойност на сигнала Ackin не може да се комбинира със същата стойност за състоянието на С-елемента (става дума за първите 2 колонки), тъй като те образуват комплект, който се отнасят за един и същи автомат, т.е. останалите 4 комбинации в таблицата са невъзможни.

От таблицата на истинност се вижда, че и в двата случая, когато Ackin=Rj необходимата стойност е Reqin=Rj, а когато Ackin¹Rj е необходима инверсната стойност Reqin=not(Rj). От тук следва следното логическо уравнение за сигнала Reqin:

Уравнение (3.4.2) определя логическата схема на конвертора Conv (фигура 3.4.4), който ще преобразува логическата стойност на избраната заявка Rj в необходимата за правилното превключване на С-елемента.

 

Синтез на изходящото потвърждение

След превключването си конвейерният автомат на звеното в общата точка връща сигнал потвърждение Ackout. Той обаче трябва да достигне единствено автомата в j-тия клон, чиято заявка е била избрана. Вече беше пояснено, че логическата стойност на този сигнал не е актуална, тъй като тя най-вероятно не съответства на очакваната за Ajout. Причина за това е 2-фазовият протокол от една страна и множеството паралелни връзки, подключени към звеното в общата точка, от друга. Като отбележим и неизвестния брой предходни превключвания, както и техния случаен ред, то вероятността логическата стойност на потвърждението да съответства на очакваната е нищожна. Логическата стойност на потвърждението Ajout, която трябва да бъде върната на j-тия автомат, зависи от състоянието на последния. Ако той е в състояние единица (Cj=1), това означава, че стойността на заявката, която предава е също единица, т.е. Rj=1 и обратно. Тъй като всяко превключване на Мюлер С-елемента е противоположно, то следва, че новата стойност на входящото потвърждение е противоположна на състоянието, а от там и на заявката. Така следва, че

Тази стойност обаче трябва да се подаде във времето в момент, който е определен от момента на превключване на сигнала Ajout. Подаването на необходимата стойност на потвърждението в съответния момент, може да се постигне единствено чрез съответния тригер (фигура 3.4.4) в регистър RG-Ack. Моментът се маркира от фронтовете на превключване на С-елемента в общата точка, чрез два фронт-детектора FD­ и FD¯, чиято дизюнкция реализира записа в този D-тригер. Инверсният изход на този тригер реализира решението (3.4.3). Тъй като стойността на потвърждението (3.4.3) се подава на D-входовете на всички тригери в регистър RG-Ack, в качеството на сигнал, разрешаващ записа в конкретния j-ти тригер, се използва генерираният от арбитъра код за избор (Bus №). Логическата схема на един произволен j-ти разряд от регистър RG-Ack е показана на фигура 3.4.5.

 

Фиг. 3.4.5.  Тригер за фиксиране на потвърждение

 

Синтез на схемата за арбитриране

Типичното арбитриране се извършва въз основа на приоритет чрез еднотактна логическа схема, известна под името Дейзи-верига. В тези случаи арбитрирането се извършва по външна инициатива чрез издаване на специално предназначен сигнал, привеждащ в действие избора в арбитриращата схема. В нашия случай обаче въвеждането на приоритет е неразумно, ето защо беше решено като справедливо, заявките да бъдат избирани и обслужвани последователно в кръгов ред. Всяка нова процедура за избор трябва да започва от следващата позиция (j+1). Според показания на фигура 3.4.3 пример, след приемане на заявката Rk-4, следващата процедура за избор трябва да започне от позиция (k-3). За разлика от решението ни, представено в книга [1], където тази последователност се постига чрез специален блокиращ код, тук ние прилагаме неактивна комбинационна логическа схема за избор и два регистъра за заявки, които бяха коментирани в точка 3.4.1. Схемата за избор е неактивна, тъй като тя не използва външни сигнали. Направеният от нея избор се поддържа непрекъснато във времето, до следващата промяна в набора от входни заявки. Самият избор е събитие, последствието от което схемата поддържа статично.

На фигура 3.4.6, като пример, представяме синтезираната за целта логическата схема на 4-входов асинхронен арбитър. Арбитър с друга дължина може лесно да се постигне въз основа на представената тук схема чрез добавяне или отстраняване на съответните групи от логически елементи. Схемата на този арбитър е оригинална и напълно асинхронна. Както е доказано в наше изследване, което може да се достъпи по адрес

https://dl.acm.org/citation.cfm?id=1731740.1731751&coll=ACM&dl=ACM ,

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

 

Фиг. 3.4.6.  Логическа схема на 4-входов арбитър

 

Както се вижда, арбитърът съдържа два регистъра – RG-Req и RG-F от асинхронни RS-Latch тригери. Новопоявилите се заявки по входовете R0, R1, R2, R3 се фиксират асинхронно в регистър RG-F чрез единичните импулси, генерирани от фронт-детекторните схеми FD­¯.

Неактивната схема, която извършва избора на текущата заявка, е включена към изходите на регистър RG-Req. Схемата избира една заявка измежду регистрираните, последователно за заявки от №0 до №3, както пожелахме в началото. Благодарение на двойката регистри с разделни функции пререждане от страна на новопоявила се заявка не е възможно. Изказаната дисциплина е възможна при условие, че веднага след потвърждението, се извършва незабавно нулиране на тригера, поддържал избраната заявка до момента. Ето защо нулирането се осъществява от сигнала Ack-FD­¯, който се връща в отговор на приетата заявка, веднага след превключване на конвейерния автомат в новото състояние. Описаният по-горе процес е показан на фигура 3.4.7.

 

Фиг. 3.4.7.  Нулиране на обслужена заявка

 

На фигура 3.4.7 са изобразени двата възможни в 2-фазовия протокол случая – превключването в нула и превключването в единица на потвърждението Ackout след запис на новите данни от звеното в общата точка. Закъснението t, с което се явява новоизбраната заявка (j+1), например, е равно на сумата от закъснението на нулиращия се тригер плюс закъснението на схемата за избор.

По времето на горе описаните действия микроконвейерното звено в общата точка провежда своите нови изчисления. Така, след сигнала Ack-FD­¯, който премахва от списъка приетата заявка, схемата за избор избира нова заявка и пренастройва мултиплексорите MUX-D, MUX-R и демултиплексора DMUX чрез шината Bus№. От своя страна новоизбраната заявка Rj достига конвертора Conv и в крайна сметка достига конвейерния автомат, където ще изчака следващото потвърждение Ackin, предназначено за общата точка. От казаното се разбира, че една процедура за избор протича между две потвърждения Ack-FD­¯.

Независимо колко са единиците в регистър RG-Req, на 4-те изхода на схемата за избор има винаги само една единица. Тя съответства на избраната заявка  Rj, j=0,1,2,3. Ако съдържанието на RG-Req е нула, на нейните 4 изхода има 4 нули. Когато настъпи този факт, това означава, че поредната порция от заявки е обслужена и следва да бъде приета следващата. В момента, в който на изхода на схема за избор се получат 4 нули, дешифраторът EQ1 формира изходна нула. В резултат на това превключване, поставеният след схемата фронт-детектор, генерира единичния импулс FD-EQ¯, който след допълнителното закъснение DL извършва нов запис в регистър RG-Req. Така фиксираните до момента в регистър RG-F заявки се прехвърлят в регистър RG-Req и върху тях започва новият цикъл на арбитриране. Закъснението DL на записващия импулс Write е необходимо за да се предотврати евентуалното противоречие между микрооперация нулиране и микрооперация запис, които следват непосредствено една след друга върху един и същи тригер. Тази част от процеса е илюстрирана с времедиаграмата на фигура 3.4.8.

И на тази времедиаграма са изобразени двата възможни в 2-фазовия протокол случая. Цикълът за обслужване на 4 заявки се намира в интервала begin-end. Вижда се, че закъснението DL на импулса Write трябва да бъде по-голямо от продължителността на фронт-детекторния импулс FD-EQ¯. Това условие е необходимо за надежден запис.

 

Фиг. 3.4.8.  Запис на нова порция заявки

 

Четирибитовата изходна шина от схемата за избор Bus№ се използва в структурата от фигура 3.4.4 за управление на мултиплексорите MUX-R и MUX-D, както и за управление на Е-входовете на тригерите в регистър RG-Ack.

 

Особени ситуации в арбитъра

Първоначално ще поясним микрооперация нулиране. Всеки нов избор на заявка, който прави арбитърът, се приема за реализиран с получаване на потвърждението Ackout (вижте фигура 3.4.4). С появата на това потвърждение се нулират единствено тригерите на обслужената заявка и в двата регистъра RG-Req и RG-F. Това постигат единичните импулси на сигнала Ack-FD­¯ (фигура 3.4.6). Както регистър RG-Req, така и регистър RG-F, са обхванати по входовете R на тригерите си от обратната връзка на шината Bus№. По тази обратна връзка, до схемите И, пред нулиращите входове на тригерите достига единицата на новоизбраната заявка. Преди това обаче тя преминава през закъснението DL. Такива закъснения са включени по пътя и на четирите заявки. Тези закъснения изиграват своята роля в момента на нулиране на тригера на приетата заявка по следния начин – с нулирането на съответния тригер в регистър RG-Req, схемата за избор, включена към неговия изход, сработва, прави нов избор и новата единица, която е на друга позиция, достига по обратната връзка схемата И, стояща пред нулиращия вход на своя тригер, където по това време се подава нулиращият импулс. Съчетаването на тези две единици (избрана заявка и нулиращ импулс) във времето пред R входа на този тригер е недопустимо, тъй като заявката, която той поддържа все още не е приета за обслужване. По тази причина състоянието на този тригер трябва да се запази, което е възможно само ако закъснението DL на новоизбраната заявка е по-голямо от закъснението в обратната връзка и продължителността на нулиращия импулс Ack-FD­¯. С други думи, новоизбраната заявка и нулиращият импулс трябва да се разминат във времето, за да не се превключи входната схема И на тригер, който не следва да бъде нулиран. Описаната ситуация може да се наблюдава върху времедиаграмата от фигура 3.4.8.

Нулирането на тригера на приетата заявка в регистър RG-F се извършва в други условия. От схемата се вижда, че това е възможно само ако в момента на импулса Ack-FD­¯ за фиксиране не е пристигнала нова заявка от същия източник. Появата на импулс за регистрация на нова заявка от източник, чиято досегашна заявка е била току що приета за обслужване, е невъзможно. Това е така, защото като имаме предвид, че такава заявка Rjin (фигура 3.4.6) би се получила само в отговор на потвърждението Ackout, което през демултипликсора DMUX трябва да се изпрати като потвърждение Ajout, за което микроконвейерното звено в съответния клон няма необходимото време. Във друго време този трети вход в схемата И е постоянно разрешен с единица.

Следващата особена ситуация, която ще поясним, се отнася до момента на запис на новата порция заявки от регистър RG-F в регистър RG-Req. В частност разглеждаме ситуация, когато такива заявки в регистър RG-F няма фиксирани до този момент. Последното означава, че след обслужване на последната заявка в предходния цикъл, и след нулиране на съответните й тригери, регистър RG-F се оказва празен. Така, непосредствено следващият след тези събития импулс Write, ще запише в регистър RG-Req нули, т.е. няма да промени неговото съдържание, което в този момент също е нула. Това за тази ситуация означава, че крайните микроконвейерни звена във всички клонове, предхождащи общата точка, все още са заети със своите текущи изчисления и не подават заявки. В същото време всички предидущи заявки са вече обслужени.

Тъй като в тази ситуация сигналът Write е вече употребен, при това неуспешно и не може да бъде генериран повторно, то арбитърът остава в състояние на изчакване. Процесите могат да бъдат възобновени само по инициатива на ново пристигнали заявки, при това въздействащи непосредствено на схемата за избор. Последното означава, че следва да бъде изпълнен директен запис на заявки в регистър RG-Req. Този директен запис се осигурява чрез общата връзка на входните заявки Rj (фигура 3.4.6) с двата регистъра по входа S на тригерите. Записът на първата пристигнала заявка е асинхронен и се осигурява от разрешението, което поддържа дешифратор EQ2. С наличието на заявка в регистър RG-Req се извършва поредното арбитриране. Избраната заявка достига конвейерния автомат на звеното в общата точка, където отдавна я очаква пристигналото там потвърждение от звеното след общата точка. Автоматът се превключва, записва нови данни, звеното стартира изчисленията си и автоматът връща назад потвърждението Ackout. След това процесите се възстановяват и повтарят. Описаната особена ситуация е илюстрирана с времедиаграмата от фигура 3.4.9.

На фигура 3.4.9 е илюстрирана описаната ситуация след заден фронт на сигнала Ackout. Аналогично е положението след негов преден фронт. Новият цикъл на арбитриране започва в момента, означен “begin”, но в описваната ситуация той няма да дочака момента “end”, ако не се появи и фиксира поне една нова заявка. Състоянието без заявки можем да определим като изходно. То следва да се постига в началния момент принудително чрез сигнал Reset, който в схемата от фигура 3.4.6 не е показан. Във времедиаграмата на последната абсциса е показан интервал във времето, през който е възможно пристигането на нови заявки, както и развитието на процеса след появата на първата нова заявка.

 

Фиг. 3.4.9.  Запис при липса на заявки с последващ цикъл

 

 

3.4.4.  Конвейерен автомат с четирифазов протокол

Тук ще представим възможното алтернативно решение – конвейерен автомат с 4-фазов протокол. Избираме ускорен вариант на 4-фазов конвейерен автомат с динамичен тригер и неговия протокол, синтезиран в раздел 3.1. Ускорението постигаме чрез премахване на закъснението DL3 във веригата на сигнала Ackin. Принципната логическа схема на автомата е представена тук на фигура 3.4.10, а на фигура 3.4.11 е представена времедиаграмата на трансферния протокол.

 

Фиг. 3.4.10.  Ускорен конвейерен автомат с изпреварващо нулиране

 

Автоматът съдържа два елемента:  Мюлер С-елемент, който генерира сигнала Write за запис на данни в конвейерния регистър и ТЕ-тригер с динамично управление, който реализира диалога със съседните конвейерни автомати.

На времедиаграмата са изобразени две ситуации на протокола. Първата се характеризира с това, че автоматът е получил заявката Reqin, но все още липсва сигналът потвърждение Ackin. Втората ситуация е обратна – потвърждението Ackin е на лице и очаква да пристигне заявката  Reqin.  И в  двата случая, след като С-елементът открие две едновременни единици в тези входни сигнали, генерира сигнал за запис W. След появата на този сигнал, и с разпространението му към тригер ТЕ, в схемата протича лавинообразен процес и автоматът отново се установява в изходно положение. Към съседните автомати се изпращат сигналите Ackout и Reqout.

 

Фиг. 3.4.11.  Две възможни ситуации в 4-фазовия протокол с изпреварващо нулиране

 

Най-характерното за този протокол е, че истинните значения както на сигнал Request, така и на сигнал Acknowledgement, се явяват единствено като константи единица. Логическата нула се разбира като отсъствие на заявка или на потвърждение. Това положение създава известни облекчения за решаваната тук задача. За микроконвейери с 4-фазов протокол, а така също и за протоколи с изпреварващо потвърждение, за управление на трансфера към звеното в общата точка, предлагаме логическата структура от фигура 3.4.12.

Разглеждаме текущия процес на звеното в общата точка. Нека арбитърът е избрал заявка Rj. В резултат на този избор мултиплексор MUX-R и демултиплексор DMUX са превключени. Така конвейерният автомат на избрания клон е свързан с автомата на звеното в общата точка, при което са в сила еквивалентните връзки:  RjºReqin  и  AckoutºAjout .

Когато в конвейерния автомат на звеното в общата точка се постигне условието за неговото превключване Reqin=Ackin=1, той ще се превключи и ще издаде потвърждението Ackout=1, което като потвърждение Ajout=1, през DMUX ще бъде върнато на j-тия автомат в съответния клон. Според протокола, който имаме предвид, този автомат веднага ще нулира заявката си Rj, както може да се види на фигура 3.4.11. Това постига предния фронт на потвърждението. За разлика от случая с 2-фазовия протокол, тук за разпространение на потвърждението Ajout в обратна посока е достатъчен само комбинационният демултиплексор DMUX. Тази схема поддържа актуалната стойност на потвърждението единствено върху избрания изход. От останалите изходи излизат логически нули, които съответните автомати възприемат като липса на потвърждение. Така тези автомати поддържат само своята заявка и резултата, който звеното им е изчислило.

В резултат на така приетата заявка Rj, в регистъра-фиксатор RG-F на звеното в общата точка, са записани данните Dj и е стартирано поредното изчисление. Още със стартиране на тези изчисления арбитърът следва да нулира тази заявка и да избере следващата заявка.

 

Фиг. 3.4.12.  Структура на конвейерен автомат в общата точка

 

Като имаме предвид вече изложената концепция за самото арбитриране, можем да кажем, че синтезираната логическа схема (фигура 3.4.6) не зависи от вида на протокола за трансфер на данни между микроконвейерните звена. Единственото изменение, което следва да се направи в тази схема, е поставяне на входовете за заявки на фронт-детекторни схеми, работещи само по преден фронт. Според нас това изменение не е основание за ново представяне на схемата от фигура 3.4.6.

 

 

Заключение

Представените тук решения на задачата за синтез на конвейерен автомат, управляващ звено в обща точка на структурата на разклонен микроконвейер, допълва комплекта от решения за постигане на главната цел, поставена в глава 1, за разработване на методи, позволяващи конвейерна реализация на изчислителен процес с обща алгоритмична структура.

От изявените в раздел 3.3 четири нови научни задачи до момента представихме решенията на три от тях. Тези решения са представени както за 2-фазови, така и за 4-фазови конвейерни протоколи. Създадените логически структури могат да имат още множество други варианти и особености, които изискват допълнителни изследвания.

 

 

3.5.  Възстановяване на реда на резултатите, слизащи от микроконвейер

 

Вече няколко пъти имахме повод да споменаваме задачата за възстановяване на реда на слизащите от конвейера решения, ако за това има необходимост. Редът на изходните резултати се нарушава при конвейерна организация на циклически алгоритми от вида с неизвестен брой повторения, описани в раздел 2.9. В този случай редът е нарушен в следствие различната за отделните задачи латентност на обработка в циклическото тяло. Редът на слизащите от конвейера решения е нарушен и при нелинейни конвейери. В този случай редът е възможно да бъде нарушен в следствие на различната продължителност на изчислителния процес в отделните участъци на уникалния път на всяка от задачите в конвейера. Минавайки по различни пътища, крайните резултати достигат изхода на конвейера в ред, който не съответства на първоначалния. Задачата за възстановяване на реда беше формулирана тук в раздел 3.3 и нейното решение ще представим по-долу.

 

 

3.5.1.  Същност на задачата

Въпреки, че в общи линии същността на задачата за възстановяване на реда на изходните резултати беше изложен при нейното формулиране, тук ще я конкретизираме допълнително.

Разглеждаме представената на фигура 3.5.1 структура на примерен алгоритъм, който е апаратно реализиран и чието изпълнение е конвейерно организирано. Ние разбираме този алгоритъм като детайлизиран и хардуерно реализиран. Всеки изпълним блок от блок-схемата на алгоритъма представлява самостоятелно еднотактово или многотактово микроконвейерно звено. Както се вижда, представеният алгоритъм, а така също и самия конвейер, на който съответства, може да се определи като разклонен или още като нелинеен. Условието за преход CJ (Conditional Jump) формира в примерния алгоритъм следните възможни пътища за изчислителния процес:

1.  Begin; 1; 2; (CJ=true); 3; 6;  End ;

2.  Begin; 1; 2; (CJ= false); 3; 4; 5; 6 ;  End .

където с 1, 2, 3, ... , са означени номерата на степените в конвейера, през които преминава изпълнението на една задача.

 

Фиг. 3.5.1.  Структура на примерен алгоритъм

 

Като се има предвид, че всеки алгоритмичен път Begin-End е уникален, съответните последователни конвейерни звена в паралелните клонове са отнесени към едно и също поредно ниво на конвейера, за който тук те са общо 6. Така, към ниво 3 например, са отнесени две конвейерни звена. В момента на изпълнение на всяка отделна задача, достигнала това ниво, съобразно стойността на условието за преход, работи само едно от звената (или лявото или дясното). В общата точка (входа на 6-то ниво), където се обединяват двете разклонения, заявките, придружаващи получените в тези клонове междинни резултати, задължително се отнасят до различни задачи, стартирани преди това в конвейера. Редът, в който тези резултати достигат точката на обединяване, съвсем не може да се очаква да съответства напълно на реда, в който са стартирани задачите, на които те принадлежат. С други думи, в приемащото звено, което стои в общата точка, едва ли ще постъпват данни в правилния ред. Основна причина за тази състезателност е самото разклонение. Като се има предвид различния брой конвейерни звена в клоновете, както и внасяните от тях закъснения, съвсем възможна става ситуацията, при която предният фронт на изчислителния процес на по-късно стартирана задача изпреварва този на по-рано стартирана задача, достигайки общата точка. В резултат на тази възможност, не е правилно да се очаква редът на излизащите от конвейера резултати да съответстват напълно на реда на стартираните задачи. С други думи, резултатът, излязъл първи, едва ли е резултат на първата стартирана в конвейера задача. Ако за по-нататъшните изчисления редът на резултатите е от значение, то той следва да бъде възстановен.

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

Проблемът с възстановяване на реда на слизащи от изчислителен конвейер резултати принципно е разглеждан в литературата. Описаното там решение обаче в повечето случаи е свързано с конвейера на машинните команди в цифровите процесори. В този вид конвейери той се поражда по причина на изкуствено въведения в изпълнителното (execution) ниво паралелизъм. В този смисъл, разглежданите от нас тук причини за възникналия проблем, са коренно различни. И докато на високо (командно) ниво проблемът в голяма степен се решава с програмни средства, то на ниско (операционно) ниво той следва да бъде решен хардуерно. По своята същност тази задача е изключително новаторска.

 

 

3.5.2.  Конвейерна сянка

След направения по-горе извод следва, че резултатите, които се явяват на изхода на конвейера, като резултати на конвейерното звено в последното 6-то ниво на примера, даден по-горе, вероятно няма да са подредени. Това означава, че тези резултати няма да могат да се използват веднага за следващи задачи и ще трябва временно да бъдат съхранявани, докато дойде редът им за това. Тъй като от изхода на конвейера непрекъснато ще слизат готови резултати, най-естественото им съхраняване може да се реализира с буферна памет от тип FIFO. За класически конвейери, в които липсват разклонения, типът FIFO на буфера е естествен. В нашият случай, структурата и стратегията за обслужване на буфера е значително по-сложна, но ние ще запазим това му условно наименование. Нека за начало приемем, че FIFO-буферът има толкова клетки, колкото са нивата в конвейера, т.е. съобразно примера те ще бъдат 6. Нека приемем още, че са завършили изчисленията на 6 последователни стартирания на конвейера и принадлежността на резултатите се изразява с последователността: 4, 2, 1, 5, 3, 6. Така разбираме, че първият резултат, слязъл от конвейера, принадлежи на задачата, която е стартирана четвърта по ред, а резултатът на стартираната като първа е излязъл трети по ред. Последният, 6-ти резултат, е излязъл без да пререди или да бъде изпреварен от други резултати. Числата в примерната последователност не представляват самите резултати, а само техния стартов номер, т.е. на изхода стартовите номера не са подредени в естествен ред, като с това илюстрират изложеното предположение. Ако след поредния запис буферът се запълни, записването в него трябва да бъде блокирано.

Задачата за възстановяване на правилния ред не може да бъде решена само и единствено чрез самите резултати. Необходима е допълнителна информация. Не е трудно да се съобрази, че всеки резултат (и междинен и окончателен) трябва да се придружава от идентификатор, който във всеки един момент ще показва принадлежността му към изпълняваната в конвейера задача. Този идентификатор трябва да слиза от конвейера заедно с окончателния резултат на съответната задача. Идентификаторът следва да бъде използван в последния етап, когато резултатът трябва да бъде записан в конвейерния буфер на правилното място. От тук следва, че конвейерният буфер ще трябва да се управлява по специален алгоритъм, различен от познатия FIFO-алгоритъм.

За да бъдат материализирани горните съждения ще бъде необходимо допълнително хардуерно оборудване в конвейера. Всяко конвейерно звено, заедно с входните данни, ще трябва да приема и идентификатора на тези данни. Звеното ще трябва да съхранява този идентификатор до края на изчисленията, които провежда и да го предава към следващото звено заедно с резултата, който е получило. Следователно конвейерните регистри следва да бъдат допълнени с регистри за съпътстващите идентификатори. Поради пасивната роля на тези регистри, си позволяваме да наречем тяхната съвкупност “сянка” на конвейера, за което фигура 3.5.2 ни дава по-ясна представа.

 

Фиг. 3.5.2.  Положение на регистрите за идентификаторите – “сянка” на конвейера

 

Предлаганата тук идентификационна схема за възстановяване на реда, който следва да заемат резултатите, не се основава на поредовите номера. Използването на поредови номера или на адреси във всеки вариант потенциално застрашава алгоритъма за поддържане на конвейерния буфер от фиксиране на едни и същи тагове (асоциативни признаци). Това се дължи на крайната дължина на логическите възли, които могат да ги генерират. Ето защо тук поредовите номера ще използваме само за пояснение на предлаганата нова стратегия.

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

Взетото решение е илюстрирано на фигура 3.5.2, където зад конвейерните звена като тяхна “сянка” се виждат регистрите RID, съдържащи идентификационните данни.

 

 

3.5.3.  Конвейерен буфер. Алгоритъм за обслужване

Изходните данни (резултати и идентификатори за принадлежността им) са използвани за решаване на поставената задача по начина, илюстриран чрез фигура 3.5.3.

 

Фиг. 3.5.3.  Структура на микроконвейерния буфер

 

В представената на фигурата структура, най-отгоре е показан регистъра-фиксатор RF№6 само на последното конвейерно звено, от което “слизат” готовите резултати и зад него - регистъра с идентификационните данни RID№6, придружаващи резултата.

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

Като пример за работата на конвейера приемаме същата последователност от 6 задачи, завършването на които се предполага във вече посочения ред - 4,2,1,5,3,6.

Паралелно на буфера с входните данни е поставен FIFO-буфер за изходните резултати (BOR). Всяка клетка на този буфер притежава допълнителен бит, представляващ признак (флаг) за съществуване (за присъствие) на резултат FAR (Flag for Available Result), който още не е изчетен, т.е. все още се съхранява в буфера.

Началното състояние на микроконвейерния буфер следва да бъде определено принудително, при което всички негови полета са нулирани. Под микроконвейерен буфер ще разбираме съвкупността от BID и BOR. Предлаганата буферна структура обслужва конвейера по оригинална стратегия, която ще бъде пояснена по-долу.

 

Запис в микроконвейерния буфер

1.      В момента, в който на изхода на конвейера се получи готов резултат, придружаващите го идентификационни данни, използвани като асоциативен признак, извършват асоциативно търсене в буфера с входните данни BID. На фигурата е показан случай с резултата на първата готова задача, която е №4. Съвпадението

(RID№6) º (Address 4)

осигурява достъпа до същия адрес (същата линия) в буфера на изходните резултати BOR. В този смисъл микроконвейерният буфер работи като асоциативна памет;

2.      В така достъпната клетка на буфера за изходни резултати BOR се записва готовият резултат. Според примера, първият излязъл резултат е на задача 4. Заедно с този запис се извършва още и;

3.      Запис на единица в присъединения към отворената клетка бит за присъствие FAR.

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

От всички задачи, работещи в конвейера, тази, чийто резултат следва да бъде записан в изходната клетка на буфера за резултати, ще наричаме най-ранната задача, т.е. това е резултатът на първата от 6-те за примера задачи. Тъй като това е резултат, който е записан в изходната клетка на този FIFO-буфер, същият подлежи на незабавно четене. Тази ситуация може да се разпознае лесно по установената единица в бита за присъствие FAR на тази изходна клетка. С прочитане на резултат от изходната клетка на буфера BOR, същата се счита за свободна, след което се реализира всеобщо придвижване на данните в посока към изхода в пълно съответствие с FIFO-дисциплината на този буфер.

 

Четене от микроконвейерния буфер

Преди да поясним операция четене, трябва да подчертаем още веднъж, че в резултат на поведението при операция  запис,  резултатите на отделните задачи са вече подредени в буфера на изходните резултати в пълно съответствие с реда на стартирането им. Така тяхното четене може да бъде последователно и напълно съответстващо на дисциплината FIFO. Четенето на резултатите, получени от конвейера, е задача на външно устройство, което тук не е обект на внимание. Все пак следва да бъде отбелязано, че на четене подлежи само изходната клетка на FIFO-буфера. Съдържанието на тази клетка е достъпно за четене само когато в нейния бит за присъствие има записана единица. Тази единица играе ролята на сигнал за разрешаване на операция четене, както е илюстрирано на фигура 3.5.3.

След прочитане на резултата от изходната клетка на буфера, цялата линия от полета може да се приеме за свободна. Според дисциплината за обслужване FIFO, съдържанието на буфера се премества към изхода, при което се освобождава входната му линия, в която може да бъде реализиран следващ запис.

 

3.5.4.  Особени ситуации в алгоритъма

Изказаният по-горе алгоритъм следва да се прецизира допълнително. Причина за това са различни ситуации, които могат да бъдат създадени както от входните данни, така и от параметрите на изчислителния процес в конвейера. Имаме предвид както параметрите на конструкцията на отделните конвейерни звена, така и на закъсненията, които допълнително зависят още и от конкретните данни.

 

Задачи с еднакви данни

За начало ще се спрем на ситуация, при която на входа на конвейера, поредно зарежданата задача има входни данни, които съвпадат с входните данни на преди това стартирани задачи, все още съдържащи се в буфера BID. Тук трябва да отбележим, че ако една задача има входни данни, които съвпадат с тези на преди това стартирала задача, то нейният алгоритмичен път Begin-End ще бъде същият. От това следва, че по-късно стартиралата задача не може да изпревари изпълнението на преди това стартиралата задача. Освен това резултатът й ще бъде същия.

При описаното по-горе поведение, фактът, че входните данни съвпадат с тези на други задачи, ще бъде установен в момента, когато първата от така стартираните с еднакви данни задача слиза от конвейера. В този момент (точка №1 в процедурата за запис в микроконвейерния буфер) асоциативното търсене в буфера на входните данни BID ще установи съвпадение с вече съществуващи в него записи.

Тази ситуация е илюстрирана на фигура 3.5.4, където се предполага примерно, че задачи 2, 3 и 6 в предполагаемата последователност  4, 2, 1, 5, 3, 6, имат едни и същи входни данни.

На фигура 3.5.4 е изобразено, че са стартирани 6 задачи, и че първата завършила задача 4 е записала своя резултат. При завършване на следващата задача 2 (както е показано на фигурата) се установява асоциативно съвпадение с признака на задача 3 и на задача 6 (вижте оцветените клетки). Така възниква въпросът: в коя клетка да се запише слизащия от конвейера резултат на задача 2? Възможностите са две:  да се запише само в своята си клетка, както това направи задача 4, или да се запише във всички клетки, генерирали асоциативното съвпадение.

 

Фиг. 3.5.4.  Случай на 3-кратно асоциативно съвпадение

 

Тъй като при еднакви входни данни всички тези задачи (2, 3 и 6) ще получат еднакви резултати, вторият вариант за запис само изпреварва във времето нормалния запис на резултатите за задачи 3 и 6. Това означава за примера, че изчисленията, които ще провеждат задачи 3 и 6 (като задачи следващи вече завършилата №2) ще продължават да се изпълняват в конвейера, но на изхода му могат и да не записват своите резултати, тъй като съответните им клетки ще имат вече вдигнат в единица признак за присъствие. При това положение изчитането на данни ще бъде в правилния ред. Ако обаче се приеме да не се усложнява алгоритъма за управление на буферната памет, задача 3, както и задача 6, при завършване могат да записват своите резултати, без при това да се влияят от вече съществуващия в тях запис.

Ако приемем първия вариант на поведение за така извършваните записи с резултата на задача 2, временното съдържание на микроконвейерният буфер ще бъде каквото е показано на фигура 3.5.5.

 

Фиг. 3.5.5.  3-кратно дублиране на резултата от задача №2

 

 

Запушване на алгоритмични пътища

На второ място ще се спрем на ситуация, при която поредната задача не може да бъде заредена в конвейера, защото не може да се осъществи запис на нейните входни данни в буфера BID. Такъв запис не може да се извърши когато буферът за входни данни е запълнен. Ще разгледаме примерна ситуация върху разглежданата структура от фигура 3.5.1, при условие, че обемът на микроконвейерния буфер продължава да бъде 6 клетки.

Приемаме, че първоначално в конвейера са стартирани последователно 6 задачи. Така входните данни на тези задачи са запълнили буфера за входни данни BID. Ще приемем още, че изпълнението на задачи 1, 2 и 3 е преминало през клона “лъжа” на алгоритъма (микроконвейерни звена в нива 3, 4 и 5), а изпълнението на задача 4 се е отклонило в клон “истина”, където изчисленията в конвейерното звено на този клон (ниво 3) са се задържали продължително време.

При това условие задачи 1, 2 и 3 достигат ниво 6, завършват успешно и записват резултатите си. Нека приемем, че докато задача 4 продължава да се задържа в левия клон на ниво 3, следващите задачи 5 и 6, поемат по пътя на първите три. Ако задача 4 продължава да се задържа, задачи 5 и 6 ще завършат успешно и ще запишат своите резултати. Когато това стане, в буфера на резултатите BOR ще има само една празна клетка – тази за задача 4. Тъй като резултатите на задачи 1, 2 и 3 ще бъдат маркирани с бита за присъствие FAR, те ще бъдат и безпрепятствено прочетени. В резултат на тези четения в изходната клетка на буфера за резултати BOR ще пристигне празната клетка за резултата на задача 4, битът за присъствие в която ще съдържа нула. Така четенията ще бъдат прекратени. Въпреки, че завършилите задачи са 5 на брой (№1, 2, 3, 5 и 6), само първите три от тях (1, 2, 3) ще могат да освободят резултата си. По време на изчитане на резултатите на първите три задачи, FIFO-буферът за входни данни BID ще освобождава входни клетки, което ще бъде предпоставка за зареждане в конвейера на нови три задачи с поредни номера 7, 8 и 9. Ако предположим, че изпълнението на тези задачи тръгне също по десния клон на алгоритъма и изпълнението им изпревари задача 4, те могат да завършат успешно и да запишат своите резултати. Състоянието на конвейерния буфер в този момент можем да илюстрираме чрез фигура 3.5.6.

 

Фиг. 3.5.6.  В очакване на резултата на най-ранната задача

 

Следващата задача №10 няма да може да бъде заредена в конвейера, защото неговият буфер за входни данни е пълен. Този факт може да бъде оповестен чрез установяване в единица на сигнала Full. В този момент всички конвейерни звена в конвейера са в състояние на очакване, с изключение на звеното, в което продължават изчисленията по задача 4. В тази ситуация задача 10 не може да бъде заредена поради това, че буферът за входни данни е пълнен Full=1. Ситуацията в конвейера удивително прилича на запушването на кръвоносен съд от така наречения тромб.

Когато задача 4 излезе от ниво 3 и премине в ниво 6 тя ще завърши и ще запише своя резултат в буфера BOR на конвейера. От този момент нататък всички фиксирани резултати за задачи от 4 до 9 могат да бъдат четени. В момента, в който в конвейерния буфер BID се освободи входната клетка, в конвейера ще стартира задача 10, а по-късно и следващите след нея.

Трябва да приемем, че подобно продължително задържане на изчисленията, може да настъпи във всяко многотактово конвейерно звено. При това в такова продължително задържане могат да изпаднат няколко звена едновременно, което означава наличие на “тромб” в съответните алгоритмични пътища Begin-End.

От направения по-горе анализ следва, че при такива ситуации конвейерът не губи своята работоспособност, но значително снижава производителността си. Ако едно конвейерно звено често изпада в продължително задържане, то изводът е, че мястото на това звено се проявява като “тясно”. Разбира се в такива случаи Конструкторът следва да предприеме спрямо конвейера необходимите структурни промени. Това, което е ясно и в този момент е, че обемът на конвейерния буфер има значение за производителността на конвейера.

 

 

3.5.5.  Буферът като звено в състава на конвейера

Ще поясним въпроса относно връзките на описваната тук структура както с предхождащият я конвейер и в частност връзката с неговото последно звено, така и връзката й с евентуално следващи конвейерни структури и в частност с тяхното първо звено. Независимо какъв протокол за трансфер на данни ще използват конвейерните автомати, това във всички случаи са двете двойки сигнали

(Reqin, Ackin)  и  (Reqout, Ackout).

Ще илюстрираме казаното чрез фигура 3.5.7.

 

Фиг. 3.5.7.  Връзки на последното звено с конвейерния буфер

 

Конвейерното звено, от което слизат готовите резултати, за да постъпят в буфера, се управлява от конвейерен автомат, чийто трансферен протокол не е от значение в момента. След стартиране на изчисленията в последното звено, този автомат изпраща към буферната структура сигнала Reqout. В отговор очаква да получи сигнала Ackin. Тук сме длъжни да поясним как ще се формира закъснението на заявката Reqout. Преди да направим това обаче е необходимо да поясним, че буферът на изходните резултати BOR функционира като линеен конвейер, което означава, че неговата входна клетка ще се управлява от конвейерен автомат. Именно този автомат ще приеме сигнала Reqout. И пак той ще върне сигнала Ackin.

След записа на данни в RG-F и RID (фигура 3.5.7), паралелно във времето стартират два процеса: изчисленията в схемата Logic и асоциативното търсене във буфера за входни данни BOR. Закъснението, което следва да бъде назначено на заявката се избира като по-голямото от двете паралелни закъснения. Първото закъснение е сума от закъснението за запис в RG-F плюс закъснението на изчислението, а второто паралелно закъснение е сума от закъснението за запис в RID плюс закъснението за асоциативното търсене, плюс закъснението за достъп до клетка в буфера за резултати BOR, плюс закъснението за запис отворената клетка на буфер BOR. Сигналът Reqout ще представлява сигнал Reqin за входната клетка на буфера BID. За паметта последният може да се интерпретира като код на операцията запис.

Що се отнася до изходната клетка на буфера BOR, от която се четат подредените резултати, комуникацията е аналогична. При наличие на входен сигнал потвърждение и единица в бита за присъствие на записан резултат, автоматът на изходната клетка ще се превключи, с което ще разреши четенето от тази клетка.

 

 

3.5.6.  Моделиране и експериментиране на буфера

Върху примерния конвейер и синтезирания за него буфер за възстановяване на реда на получаваните резултати беше създаден програмен модел, чрез който системата беше експериментирана и изследвана. В модела конвейерът беше формално представен чрез крайния ориентиран граф G=(Z,U) – фигура 3.5.8.

Означенията в рисунката на графа са следните:

§                    Множеството от върхове Z на графа с мощност M=|Z|, съответства на множеството конвейерни звена (за примера M=7);

§                    Множеството от дъги на графа UÍZ´Z представя множеството от връзки между конвейерните звена;

§                    Чрез множеството N се представя множествo от целочислени тегловни коефициенти, съпоставени на върховете Z на графа G, които указват номерa на нивото на конвейера, за който се отнася съответния връх . Тъй като няколко конвейерни звена могат да принадлежат на едно и също ниво, то броят на върховете, които имат еднакви тегловни коефициенти, е  ≥ 1;

§                    С буква Т e означенo множествo от тегловни коефициенти , съпоставени на върховете на графа  и изразяващи степента на закъснение, което внасят отделните звена в изчислителния процес.

Фиг. 3.5.8.  Граф на примерния конвейер G=(Z,U)

 

При тази формализация, възможните пътища Begin-End за движение на задачите в конвейера ще бъдат решение на задачата за намиране на всички пътища в графа G=(Z,U), от връх “Begin” до връх “End”, които са два фиктивни върха, включени в него:

                     П1:   Begin–z1-z2-z3-z7-End ;

                     П2:   Begin–z1-z2-z4-z5-z6-z7-End .

Предвид спецификата на конкретния случай, при който е на лице разнообразие от обработки в конвейера и с оглед на най-висока ефективност по отношение на памет, графът G=(Z,U) е програмно представен чрез динамични списъци на съседство. При това всеки възел се описва чрез структура, която съдържа полетата: входните данни (структура), забавяне за операцията в звеното и връзки със съседни възли (указатели). Входният и изходният буфери са реализиран като масиви от структури. Във входния буфер, структурата описва входните данни, а в изходния – крайните резултати и готовността им за четене. Алгоритмите, боравещи със структурите, реализират описания алгоритъм на работа на конвейерния буфер.

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

Основният въпрос, на който трябваше да отговорят проведените експерименти беше: как се влияе производителността на конвейера от обема на конвейерния буфер? За всеки експеримент обемът на буфера Q беше задаван в интервала [6, 36] клетки, а броят N на стартираните задачи от 1000 до 10000. Полученото време за изпълнение на зададения брой задачи tS е илюстрирано с графиките от фигура 3.5.9.

 

Фиг. 3.5.9.  Влияние на обема на буфера върху производителността

 

Изводът, който е направен въз основа на анализа на получените резултати е, че с увеличаване обема на конвейерния буфер производителността на системата расте експоненциално, като достига насищане, когато обемът на буфера достигне броя на звената в конвейера. Този положителен ефект се усилва с броя на изпълнените в конвейера задачи.

 

Заключение

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

В резултат на анализа на възможните за конвейерния буфер състояния, установихме необходимостта от сигнала Full, който трябва да бъде функционално свързан с конвейерния автомат на началното (стартовото) звено на конвейера. Конвейерният автомат на стартовото звено следва да бъде блокиран, ако е достигнат от сигнала Full=1. Това означава, че автоматът на стартовото звено на конвейери, които ще притежават изходен буфер за своите резултати, трябва да бъде синтезиран различно. Намираме този резултат за съществен, тъй като той е достатъчно общ и съответства на общата цел, спомената в началото.

 

 

3.6.  Автомати за управление на микроконвейерни звена в общи точки на микроконвейери, съдържащи буфер за възстановяване на реда на изходните резултати

 

Ще разгледаме от друга гледна точка конвейерна система, включваща в състава си конвейерен буфер за възстановяване на реда на слизащите от конвейера резултати. Анализът е необходим за да се докаже, че системата не е застрашена от блокиране на функционирането й, дължащо се на особеното установяване на арбитърните схеми в конвейерните автомати, управляващи конвейерните звена в общите точки на конвейерната структура. Става дума за конвейери, в състава на които са налични конвейерни звена с голяма или твърде голяма латентност, каквито могат да бъдат многотактовите звена, които в общия случай могат да имат твърде сложна алгоритмична структура.

 

3.6.1.  Логическа структура на конвейера

Разглеждаме конвейерна реализация на алгоритми, които съдържат звена, изчисляващи освен резултат, още и стойност на някакво условие за преход. В резултат на това условие в алгоритъма, респективно в конвейера, се получават разклонения. Функционирането на такива общи конвейерни структури е свързано с качествено нови проблеми, които могат да бъдат отстранени чрез решенията на четирите задачи, изявени и формулирани в раздел 3.3.

С помощта примерния алгоритъм, представен на фигура 3.6.1, ще разгледаме условията на работа и възможните ситуации в логическата структура на реализиращия го конвейер, при което ще бъде проверено за конфликтни ситуации при съвместната работа на конвейерния буфер за възстановяване на реда на изходните резултати и на арбитъра в общата точка на алгоритъма.

Както се вижда, структурата на конвейера съдържа 7 звена, организирани в 6 степенен нелинеен конвейер. Показани са съпровождащите звената идентификационни регистри RID, използвани за обслужване на конвейерния буфер. Самият той не е изобразен на фигурата.

Разглеждаме функционирането на конвейерната система при различни предварително предложени условия. Функционирането е представено чрез първите 6 задачи заредени в конвейера и техните крайни резултати, записани в буфера BOR.

 

Фиг. 3.6.1.  Алгоритмична структура на конвейера

 

За означаване на отделните задачи тук в текста е използван стартовият им пореден номер. На  входа на  конвейера, според готовността на входното звено, се зареждат последователно: задача 1, задача 2, задача 3 и т.н. в реда на естествените числа.

 

 

3.6.2.  Конвейерен буфер

Изходните данни (резултати и идентификатори за принадлежността им) са използвани за първоначално изясняване на проблема по начина, илюстриран на фигура 3.6.2.

 

Фиг. 3.6.2.  Структура на микроконвейерния буфер

 

Синтезираната в предходния раздел логическа структура на конвейерния буфер съдържа показаните на фигура 3.6.2 елементи. Освен елементите от структурата на буфера още е показан регистърът фиксатор RF само на последното 7-мо конвейерно звено, от което “слизат” готовите резултати и зад него - регистъра с идентификационните данни RID, придружаващи резултата. Структурата на конвейерния буфер съдържа FIFO-буфер, в който последователно се записват входните данни на всяка новостартирана в конвейера задача (буфер BID). Обърнете внимание – входните данни се подреждат в този буфер в правилния стартов ред. Като пример за работата на конвейера е посочена последователност от 6 задачи, завършването на които се предполага в следната последователност – 4, 2, 1, 5, 3, 6.

Паралелно към буфера на входните данни е поставен FIFO-буфер за изходните резултати (буфер BOR). Всяка клетка на този буфер притежава допълнителен бит, представляващ признак (флаг) за съществуване (за присъствие) на резултат FAR, който още не е изчетен, т.е. все още се съхранява в буфера. Предлаганата буферна структура обслужва конвейера по стратегия, която беше изложена в предходния раздел. При функциониране на конвейерната система (конвейер + буфер за възстановяване на реда) са възможни няколко особени ситуации, които се нуждаят от допълнително изследване, което ще бъде представено по-долу.

 

 

3.6.3.  Управление в общи точки на конвейера

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

 

Алгоритмични пътища, съдържащи звена с голяма латентност

Ще разглеждаме конвейери, които съдържат в произволно място на своята структура, конвейерни звена с голяма латентност. Обикновено такива са многотактовите звена, реализиращи различни циклически изчисления. Функционирането на такива звена може да доведе до ситуация, при която поредната задача не може да бъде заредена в конвейера, защото не може да се осъществи запис на нейните входни данни в конвейерния буфер. Тази ситуация, както и други възможни, са описани в предходния раздел. Ще подложим на анализ поведението на примерната структура от фигура 3.6.1 при такива особени ситуации. Ще приемаме още, че обемът на микроконвейерния буфер е равен на броя на нивата (степените) в конвейера.

 

СЛУЧАЙ  1

Първоначално в конвейера стартираме последователно 6 задачи с номера от 1 до 6. Така входните данни на тези задачи запълват буфер BID. Ще приемем, че изпълнението на задачи 1, 2 и 3 е преминало през клона “лъжа” на алгоритъма (конвейерни звена 4, 5 и 6), а изпълнението на задача 4 се е отклонило в клон “истина”, където изчисленията в конвейерното звено на този клон (звено 3) са се задържали продължително време. При това условие задачи 1, 2 и 3 достигат звено 7, завършват успешно и записват резултатите си в BOR.

Нека приемем, че докато задача 4 продължава да се задържа в левия клон, в звено 3, следващите задачи 5 и 6 поемат по пътя на първите три. Ако задача 4 продължава да се задържа в звено 3, задачи 5 и 6 ще завършат успешно и ще запишат своите резултати в BOR. Когато това стане, в BOR ще има само една празна клетка – тази за задача 4.

Състоянието на конвейерния буфер, съответстващо на този момент, ще илюстрираме с фигура 3.6.3.

 

Фиг. 3.6.3.  Състояние на буфера след първите 6 задачи

 

Тъй като резултатите на задачи 1, 2 и 3 ще бъдат маркирани с бита за присъствие FAR=1, те ще бъдат и безпрепятствeно прочетени, т.е. те ще слязат от конвейера. При всяко четене от изходната клетка на BOR, вътрешното съдържание и на двата буфера се премества в посока към изхода. В случая, в резултат на тези три последователни четения, в изходната клетка на BOR ще пристигне празната клетка за резултата на задача 4. С това четенията ще бъдат прекратени, тъй като в нейния бит за присъствие ще се съдържа нула FAR=0.

Тъй като след всяко четене входната клетка на BID се освобождава, това ще предизвиква зареждане в конвейера на нова задача. Така след изчитане на резултатите, получени за задачи 1, 2 и 3, ще бъдат заредени задачи 7, 8 и 9. Ако предположим, че изпълнението на тези 3 нови задачи преминава по клона “лъжа”, то тяхното окончателно завършване е възможно, при което те ще успеят да запишат своите резултати. Състоянието на конвейерния буфер след завършване и на 9-та задача е показано на фигура 3.6.4.

 

Фиг. 3.6.4.  Състояние на буфера след първите 9 задачи

 

Приемаме, че изчисленията в звено 3 все още не са завършили. Буфер BID е пълен, в резултат на което се е вдигнал флагът Full=1. Задача 10 не може да бъде заредена в конвейера. При това положение звена 7, 6, 5, 4, 2, и 1 се намират в изходно състояние, т.е. съдържанието на техните регистри е без значение, всяко едно от тях връща към по-горното ниво в конвейера сигнал Acknowledgement, но не получава заявка Request. Състоянието на конвейера е привидно статично, в очакване края на изчисленията в звено 3.

Ето в тази ситуация ще анализираме състоянието на арбитъра, който е част от конвейерния автомат в общата точка на алгоритъма. В примерната структура в тази точка се обединяват два клона. Звено 3 в левия клон не подава заявка, защото все още е заето с изчисления. Звено 6 в десния клон също не подава заявка, защото е в изходно състояние. Така към арбитъра не се подава нито една заявка и следователно той се намира в състояние на очакване. Както беше пояснено в точка 3.4.3 това е особено състояние на арбитъра. Само нова заявка може да го изведе от него. В това състояние цялата система може да остане неизвестно дълго време.

Когато изчисленията в звено 3 завършат, то ще подаде заявка към арбитъра в общата точка, който ще го избере безусловно. Така, попадайки в последното ниво, задача 4 ще завърши и нейният резултат ще се запише в изходната клетка на BOR. С това възникват условията за четене на резултати от конвейерния буфер. Още след първото четене на резултат се създават условия за зареждане на задача 10 и на следващите след нея. Така се прекратява временното статично състояние на конвейерната система като цяло.

 

СЛУЧАЙ  2

Първоначално в конвейера стартираме последователно 6 задачи с номера от 1 до 6. Така входните данни на тези задачи запълват буфер BID. Ще приемем, че изпълнението на задачи 1 и 3 е преминало през клона “истина” на алгоритъма (конвейерни звена 1, 2, 3), а изпълнението на задача 2 се е отклонило в клон “лъжа”, с което е изостанала по отношение на задача 3. При това условие задачи 1, 2 и 3 достигат звено 7, завършват успешно и записват резултатите си в BOR в следния ред: 1, 3, 2. Предполагаме този ред, защото задача 2, която се е отклонила по десния клон, където трябва да премине през три последователни конвейерни звена, е завършила със закъснение и е била изпреварена от задача 3.

За целите на този случай ще приемем, че следващите задачи ще се разклонят както следва: задача 4 минава вляво по клон “истина” и започва изчисления в звено 3; задачи 5, 6, 7 и 8 минават вдясно по клон “лъжа”. Ето защо състоянието на конвейерния буфер в този момент съответства на показаното на фигура 5.3.5.

 

Фиг. 3.6.5.  Състояние на буфера след първите 6 задачи

 

Първите три задачи са завършили в реда, който е показан най-вляво на фигурата. В BOR началните три клетки са все още празни, което съответства на момента, в който заредените задачи 4, 5 и 6, се намират в незавършен вид. Задача 4 се намира в звено 3, задача 5 – в звено 2, а задача 6 – в звено 1. Звената в десния клон все още са в изходно състояние.

От този момент нататък е възможно четене на готовите резултати. Процесът на четене е съпроводен с придвижване на вече заредените задачи и със зареждане на нови задачи. Резултатите 1, 2 и 3 напускат буфера.

Тук ще предположим, че задача 5, за разлика от задача 2, се придвижва и се зарежда в звено 5, но с такива данни, които предизвикват продължителни изчисления в звеното. На нейно място в звено 4 попада задача 6, в звено 2 попада задача 7, а в звено 1 – задача 8. И докато звено 5 задържа изчисленията, задача 4 завършва, слиза надолу и записва своя резултат. Състоянието на буфера в този момент е показаното на фигура 3.6.6.

 

Фиг. 3.6.6.  Състояние на буфера след първите 8 задачи

 

Припомняме, че задачи 7 и 8 ще минат в клон “лъжа”, но тъй като задача 5 го е “запушила” те са принудени да чакат. Тъй като резултатът на задача 4 е вече в изходната клетка на BOR, той ще бъде прочетен, след което състоянието на конвейерния буфер ще бъде показаното на фигура 3.6.7.

 

Фиг. 3.6.7.  Състояние на буфера след първите 8 задачи

 

Тъй като задача 5 задържа своите изчисления в звено 5 в клона “лъжа” и в същото време приехме, че следващите задачи ще се отклонят в същия клон, то задача 9 не може да бъде заредена. Входните звена 1, 2 и 4 са блокирани, тъй като не могат да придвижат своите резултати, очаквайки сигнали Acknowledgement, а звената 3, 6 и 7 са в изходно състояние, очаквайки сигнали Request. Състоянието на конвейера е привидно статично, в очакване края на изчисленията в звено 5.

Ще анализираме състоянието на арбитъра, който е част от конвейерния автомат в общата точка на алгоритъма. Звеното 3 в левия клон не подава заявка, защото се намира в изходно състояние. Звеното 6 в десния клон не подава заявка, защото също е в изходно състояние. Така към арбитъра не се подава нито една заявка и следователно той се намира в състояние на очакване. В това състояние цялата система може да остане неизвестно дълго време.

Когато изчисленията по задача 5 в звено 5 завършат, тя ще премине в звено 6. В съответствие с първоначалните предположения ще се придвижат и следващите задачи 6, 7 и 8 – задача 6 в звено 5, задача 7 в звено 4, задача 8 в звено 2. Така звено 1 ще се освободи и в него ще бъде заредена задача 9, която до този момент е изчаквала на входа на конвейера. След като звено 6 завърши своите изчисления то ще подаде заявка към арбитъра, който стои в общата точка. Тази заявка ще бъде единствената, ето защо тя ще бъде избрана безусловно. Така задача 5 ще премине в звено 7, с което ще завърши своето изпълнение. Записвайки резултата на тази задача в изходната клетка на BOR, блокировката на операция четене изчезва. Така се прекратява временното статично състояние на конвейерната система като цяло.

 

СЛУЧАЙ  3

Продължаваме да усложняваме ситуациите, възможни за нашия конвейер. Ще разгледаме първоначалните условия за алгоритмичните пътища на задачите от пример 2, след което ги променяме както следва: задачи 1, 3, 4, 7 и 8 ще минават по левия клон (клон “истина”) в структурата на конвейера. Задачи 2, 5, 6 и 9 ще минават по десния клон (клон “лъжа”) в структурата на конвейера. Отново ще приемем, че латентността на звено 5 за задача 2 е много малка, а за задачи 5 и 9 е значително по-голяма. При тези условия разглеждаме състоянието на конвейерния буфер към момента, в който задача 5 постъпва в звено 5, където ще “заседне” за по-дълго време. В този момент резултатите на задачи 1, 2 и 3 са вече прочетени и не се съдържат в BOR. Задача 4 е на изхода и е записала своя резултат. Задача 6 е в звено 4, задача 7 в звено 3, задача 8 в звено 2 и задача 9 в звено 1. Така съдържанието на конвейерния буфер съответства на показаното на фигура 3.6.8.

 

Фиг. 3.6.8.  Състояние на буфера след първите 4 задачи

 

След прочитане на резултат 4, в конвейера ще се зареди задача 10, тъй като задачи 7 и 8 ще се придвижат вляво по клон “истина” и задача 9 ще слезе в звено 2. Задача 5 продължава да се задържа в звено 5, следващото звено 6 продължава да е в изходно състояние, изчаквайки заявката от звено 5. В същото време задача 7 преминава от звено 3 в изходното звено 7 и след като изчисленията там приключат, то ще подаде заявка за запис на резултат в BOR. Този резултат ще се запише и състоянието на конвейерния буфер ще бъде показаното на фигура 3.6.9.

 

Фиг. 3.6.9.  Състояние на буфера след първите 5 задачи

 

След като задача 7 запише своя резултат, тя освобождава звено 7, което може да приеме задача 8 от звено 3. Последното обаче ще остане в изходно състояние, тъй като следващата задача 9, която се намира в звено 2, иска да премине в десния клон (в звено 4). Това обаче не може да стане, защото този алгоритмичен път не е свободен. Звено 5 все още работи по задача 5, пред него в звено 4 чака задача 6. Така в звено 2 задача 9 ще трябва да чака, което важи и за задача 10, която ще чака в звено 1. Междувременно задача 8 може да приключи изчисленията си в звено 7 и ще запише своя резултат в BOR. След това звено 7, както и звено 3, ще се окажат в изходно състояние. Състоянието на конвейерния буфер ще бъде показаното на фигура 3.6.10.

 

Фиг. 3.6.10.  Състояние на буфера след първите 5 задачи

 

В това състояние конвейерната система ще остане докато не завършат изчисленията по задача 5 в звено 5. Всички звена след общата точка, както и тези, които непосредствено я предхождат, се намират в изходно състояние. Това означава, че арбитърът в общата точка се намира в състояние на очакване, тъй като към него не се подава нито една заявка. В това привидно статично състояние цялата система може да остане неизвестно дълго време.

Когато изчисленията по задача 5 в звено 5 завършат, тя ще премине в звено 6, а на нейно място ще дойде задача 6. В освободилото се звено 4 ще влезе задача 9, а на нейно място от звено 1 ще влезе задача 10. Входното звено 1 ще остане известно време в изходно състояние. В него няма да може да се зареди следващата задача 11, тъй като буферът по това време ще подава сигнала Full=1. Задача 11 ще бъде възможно да бъде заредена едва когато задача 5 запише резултата си в BOR и той бъде прочетен. Така ще се прекрати временното статично състояние на конвейерната система като цяло.

 

СЛУЧАЙ  4

За да обобщим резултатите от анализа, който тук провеждаме, ще разгледаме по-сложната алгоритмична структура, представена на фигура 3.6.11. Както се вижда от нея, алгоритъмът съдържа две условия за преход, които дефинират три възможни пътя begin-end.

Вижда се още, че при конвейерна организация тази структура ще определи 13 последователни нива, като максималният брой конвейерни звена в едно ниво е три. Отделните клонове се обединяват на входа на звено Sa в ниво 10 и на входа на звено Sb в ниво 11, т.е. в структурата има две общи точки, чието състояние ще анализираме.

В съответствие с досегашното разбиране ще приемем, че средното конвейерно звено в 8-мо ниво е звеното с голяма латентност. Ще приемем още, че постъпилите в конвейера задачи са създали в този момент следните условия за преход:

§                           Условие  CJ1=true ;

§                           Условие  CJ2=false .

 

Фиг. 3.6.11.  Структура на примерен алгоритъм

 

В резултат на актуалните стойности на условията за преход и тъй като звеното с голяма латентност временно е “запушило” този алгоритмичен път, всички звена над него, до самия вход, се установяват в състояние на очакване. В структурата от фигура 3.6.11 тези звена са оцветени в червено.

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

Ако звеното с голяма латентност все още продължава да провежда изчисления, то ще остане единственото работещо звено. При това положение към арбитрите и в двете общи точки няма да постъпват заявки и те ще се установят в състояние на очакване. Цялата конвейерна система заема привидно статично състояние.

В този момент задачата, която задържа конвейерната система, се явява най-рано стартираната задача измежду вече заредените в конвейера. Това означава, че изходната клетка на BOR е празна, в очакване на резултата на твърде закъснялата задача и докато той не слезе от конвейера, операция четене от BOR е невъзможна. От своя страна това състояние на конвейерния буфер определя по-нататъшното функциониране на конвейера.

Ще разгледаме още една блок-схема от фигура 3.6.12, в която условията за преход са 5. Възможните уникални алгоритмични пътища в нея са 8:

1.      Begin, 1, 2, CJ1=false, 13, 14, 15, CJ5=false, 19, 20, 21, 22, 23, End;

2.      Begin, 1, 2, CJ1=false, 13, 14, 15, CJ5=true, 16, 17, 18, 21, 22, 23, End;

3.      Begin, 1, 2, CJ1=true, 3, CJ2=false, 6, 7, 8, CJ3=false, 10, CJ4=false, 12, 23, End;

4.      Begin, 1, 2, CJ1=true, 3, 4, CJ2=false, 6, 7, 8, CJ3=false, 10, CJ4=true, 11, 23, End;

5.      Begin, 1, 2, CJ1=true, 3, 4, CJ2=false, 6, 7, 8, CJ3=true, 9, 23, End;

6.      Begin, 1, 2, CJ1=true, 3, 4, CJ2=true, 5, 8, CJ3=false, 10, CJ4=false, 12, 23, End;

7.      Begin, 1, 2, CJ1=true, 3, 4, CJ2=true, 5, 8, CJ3=false, 10, CJ4=true, 11, 23, End;

8.      Begin, 1, 2, CJ1=true, 3, 4, CJ2=true, 5, 8, CJ3=true, 9, 23, End;

 

Фиг. 3.6.12.  Примерна блок-схема

 

В представената структура има 23 микроконвейерни звена и 3 общи точки, като най-близката до изхода е 4-входова. Ще предположим, че в звено №11 е “заседнала” задача с голяма латентност. Ще предположим още, че задачата, която се намира в звено 10 иска да премине в звено 11. За нея това се оказва невъзможно и въпреки, че звено 10 е завършило изчисленията и подава заявка, сигнал за потвърждение от звено 11 не пристига. Така звено 10 остава в състояние на очакване. От тази точка нагоре до входната точка на конвейера за останалите задачи са възможни различни пътища. Ако тези пътища се окажат свободни, тези задачи могат да завършат своите изчисления и да запишат резултатите си в изходния буфер. Такива могат да бъдат  например задачите от звена 9, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 и 23. В резултат на това успешно завършване тези звена ще се окажат свободно състояние, т.е. те ще подават сигнал потвърждение, но няма да получават заявки.

Ако приемем, че задачата в звено 8 иска да премине в звено 10, тя няма да може да направи това, тъй като последното не е свободно. В резултат на това звената над него 7, 6, 5, 4 и 3 се оказват също в състояние на очакване. Ако задачата в звено 2 иска да премине в звено 3, тя също ще се окаже в това състояние. За звено 1 също няма друга възможност.

Всички звена в структурата на конвейера, оцветени в жълто, са в свободно състояние, розовите звена са в състояние на очакване. Работи единствено звено 11. Към 4-входовия арбитър не постъпват заявки и той също е в състояние на очакване. В това състояние конвейерната система е в привидно статично състояние, от което ще излезе сама, когато звено 11 завърши изчисленията си и запише своя резултат в изходния буфер.

 

Заключение

Чрез направения анализ на разгледаните конвейерни системи показахме, че в тях могат да настъпят различни ситуации, но тяхната работоспособност като цяло се запазва. Анализът е достатъчно общ, разглежда различни структури и тяхното поведение и ни дава основание и увереност за надеждността на тези системи. Освен това този анализ ни позволи да формулираме следните изводи:

1.      Наличието на конвейерен буфер за възстановяване на реда на изходните резултати причинява при определени ситуации временни статични състояния на конвейерната система. Тези състояния не са опасни за функционирането й. Основната причина за появата на статичното състояние е липсата на единица в бита за присъствие на резултат в изходната клетка на BOR. В това състояние конвейерният буфер може да бъде празен, частично попълнен или изцяло запълнен.

2.      Опасенията за произволно състояние на арбитърните схеми по време на статичното състояние се оказаха необосновани. Независимо на кое ниво се намира арбитърът, ако неговото конвейерно звено е в изходно състояние, той се намира в същото състояние. На входа му не се подават заявки. Ако арбитърът се намира в последователността от звена, изпаднали в състояние на очакване, то той се намира в същото състояние.

3.      Временното статично състояние, в което може да изпадне конвейерната система, е нормално и не опасно състояние. То се причинява от конвейерни звена с голяма латентност. Главното последствие от това състояние е понижаването на производителността на конвейерната система като цяло. Това следствие трябва да се определи като недостатък, за отстраняването на който следва да се предприемат адекватни мерки.

4.      Логическите схеми, синтезирани за конвейерните автомати, не се нуждаят от допълнителни изменения.

 

 

3.7.  Автомати за управление на микроконвейерни звена в общи точки на конвейерни системи и разгънати цикли

 

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

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

Ще разгледаме условията за функциониране на примерната конвейерна структура, която е представена на фигура 3.6.1 в началото на предходния раздел. Ще предположим следното разпределение на стартираните задачи: приемаме, че всички стартирани задачи ще се отклоняват по двата алгоритмични клона “лъжа” и “истина” редувайки се през една. Това означава, че всички задачи с четни номера (2,4,6,8, ...) ще се отклоняват по клон “лъжа” към звено 4, а всички задачи с нечетни номера (1,3,5,7, ...) ще се отклоняват по клон “истина” към звено 3.

Ще приемем още, че звено 3 е с голяма латентност, в резултат на което всяка от задачите, попаднали в него провежда продължителни изчисления. Нека приемем, че голямата латентност на звено 3 се дължи на това, че то е многотактово циклическо звено, в което се изпълнява циклически алгоритъм от вида с предварително известен брой повторения, който ще означим с r. Ясно е, че при тези условия, когато в самото звено има обратна връзка, изчисленията ще се забавят и задача 3, която след звено 1 и звено 2 желае да премине в звено 3, няма да може да направи това, тъй като в него се намира задача 1. Така задача 3 ще остане в звено 2, където ще чака освобождаването на звено 3, запушвайки по този начин входа на конвейера. В звено 1 е заредена задача 4, която също чака да премине в звено 2. В тези условия конвейерната система се оказва в привидно статично състояние. Работи единствено звено 3.

Ще предложим една нова разновидност на този случай и ще се постараем да изясним качествата на това ново решение. Известно е, че по идея конвейерната организация се стреми към декомпозиция на отделните операции, с което се цели да се постигнат конвейерни звена с приблизително еднаква (малка) латентност. При този подход конвейерът се удължава, т.е. броят на нивата в него се увеличава и става възможно той да се реализира като синхронен. Крайният ефект от увеличения по този начин апаратен разход се компенсира от опростеното управление и увеличената производителност.

Това, което решаваме тук да направим, е замяна на многотактовото конвейерно звено 3 с линеен конвейер, реализиращ неговото пълно алгоритмично разгъване. Последното е напълно възможно за циклите с предварително известен по конструкция брой повторения. За циклите с предварително известен, но променлив брой на повторенията, единствената възможност е реконфигурация на конвейера в участъка с голяма латентност. Въвеждането на напълно разгънатия цикъл на звено 3 в примерната конвейерна структура води до структурата, показана на фигура 3.7.1.

 

Фиг. 3.7.1.  Алгоритмична структура на примерния конвейер с разгънат цикъл

 

Както се вижда, звено 3 е изобразено чрез разгънатия си еквивалент в последователност, която започва от микроконвейерно звено (3.1) и завършва с микроконвейерно звено (3.r). Това означава, че дължината на този линеен участък е от r на брой звена. Като имаме предвид начина, по който се определя общият брой на нивата в конвейера, за примерната структура от фигура 3.7.1, получаваме числото (r+3).

Проблемът, свързан с неправилния ред на получаваните на изхода резултати и при тази нова структура на конвейера, не може да бъде отстранен. Латентността на задачите, попаднали в клон “истина”, по отношение на точката, където се получава резултатът, съответстващ на изчисленията за етап 3 (звено (3.r)), остава същата. Ето защо към конвейера трябва да се включи буфер за възстановяване на реда. Тъй като последният зависи от дължината на конвейера, следва че неговият минимален обем в този случай ще бъде равен на (r+3). Така обемът на апаратните разходи за цялостната реализация на конвейерната система значително нараства.

Следва въпросът заради който в същност беше предложена тази структура – с какво ще се различава начинът на нейното функциониране в сравнение с първоначалния? И така, първото, което ще изтъкнем е, че след като задача 1 постъпи в звено (3.1) и след това се премести в звено (3.2), тя ще освободи звено (3.1). Времето, за което ще се изпълнят всички действия върху задача 1, предвидени за етапа 3, както вече отбелязахме, няма да се промени, то ще остане същото. Задача 1 ще напусне етап 3, когато излезе от звено (3.r). Преминавайки обаче от звено към звено в този неин разгънат вариант на реализация, тя последователно ще освобождава предидущите звена. Така в примерната последователност, когато задача 1 освободи звено (3.1), следващата я задача 3, за която се предполага да тръгне по същия път, няма да се задържа и свободно ще премине от звено 2 във вече свободното звено (3.1).

Основният проблем, който разглеждаме тук, се отнася до поведението на арбитъра, който е част от конвейерния автомат в общата точка на структурата. Ето защо следва да анализираме поведението на конвейерната система и в този случай, аналогично на предходните 4 случая, описани в преходния раздел. Най-напред следва да обърнем внимание на общото функциониране на участъка от конвейера, който замени многотактното звено. Този участък има съвършено нова същност – в него не се наблюдава “засядане” на една задача, което да предизвиква установяване на останалите звена в дълговременни състояния. Всяка задача, попаднала в този участък се придвижва конвейерно и ритмично от звено към звено. При това, следващи задачи спокойно навлизат в същия участък.

В зависимост от това, дали следващите задачи се отклоняват или не и в какъв брой по другия клон, в разглеждания участък е възможно да се наблюдава движение на “мехурчета”. Под мехурчета тук ще разбираме звена, намиращи се в изходно състояние. В това състояние най-напред ще изпада звено (3.1), ако след придвижване на текущата задача към звено (3.2) не постъпи нова задача. Това е напълно възможно, ако следващата задача се отклони в другия клон, както предположихме в началото. Така дължината на участък, примерно от 4 последователни звена (3.k, 3.k+1, 3.k+2, 3.k+3), би се образувал и би се придвижвал в клона “истина”, ако между две задачи, навлезли в тази пътечка има дистанция от 4 задачи, които са се отклонили по другата пътечка.

В резултат на това структуриране на конвейера, неговата ритмичност се стабилизира. Привидно статичните състояния се премахват. Тогава арбитрите, които са част от конвейерните автомати в общите точки на структурата, не са така силно “заплашени” от изпадане в състояние на очакване.

 

Заключение

Показахме, че когато конвейерната система може да бъде синтезирана чрез използване подхода на пълно разгъване на цикли, новите характеристики на конвейерната система са положителни. За повишената производителност обаче се “заплаща” със значителни допълнителни апаратни разходи. Освен това анализът позволи да бъдат формулирани следните изводи:

1.      Разгъване на многотактови циклически конвейерни звена във вид на линеен конвейер е възможно само за цикли с предварително известен и конструктивно постоянен брой на повторенията;

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

3.      За звена, реализиращи цикли от вида с предварително неизвестен брой повторения, подходът за тяхното разгъване не може да бъде приложен;

4.      Конвейерна структура с разгънат цикъл работи значително по-ритмично и в нея не се наблюдават привидно статичните състояния, описани в предходната точка;

5.      Конвейер с напълно разгънати цикли може да се определи като дребнозърнест, тъй като няма да съдържа звено със сложна структура.

 

 

3.8.  Асинхронни циклически микроконвейерни структури с многотактови тела със следусловие

 

В последните два раздела на глава 2 (2.8 и 2.9) представихме циклически микроконвейерни звена с многотактови тела. Синтезът на тези звена беше проведен в условията на синхронен метод за управление. Анализът на тези решения показа, че синхронният метод е предпоставка за значително усложняване и увеличаване на апаратните разходи при реализация на тези звена. Ето защо тук ще бъде разгледан алтернативен вариант на синтеза, основаващ се на асинхронния метод за управление. Първоначално ще разгледаме циклически алгоритмични структури, характеризиращи се със следусловие.

 

3.8.1.  Същност на задачата

Разглеждаме микроконвейерна реализация на циклически алгоритмични структури, които притежават линейно многотактово тяло. На фигура 3.8.1 е илюстрирано разбирането, което имаме за тези структури. Цикъл с еднотактово микроконвейерно звено в тялото е илюстриран чрез лявата блок-схема. Многотактовият вариант на тялото на цикъла е показан чрез дясната блок-схема, като 4-степенна линейна последователност от звената St1, St2, St3 и St4.

Принципна разлика между двата варианта няма. Целта на изследването е разработване на асинхронен метод за управление на такива циклически структури с микроконвейерна организация. Основният водещ мотив при това е постигането на възможно по-висока производителност, в сравнение с всички останали реализации. Първоначалната представа за поставената цел е илюстрирана на фигура 3.8.2. Както може да се види, микроконвейерните звена се управляват от конвейерни автомати PC (Pipeline Controller), които издават импулси за запис на данни към регистрите фиксатори RG-F, след успешно “ръкостискане” на своите съседи.

 

Фиг. 3.8.1.  Алгоритмична структура цикъл със следусловие

 

Ръкостискането се основава на сигналите заявка Request (R) и потвърждение Acknowledgement (A), които автоматите използват в диалога. За простота на рисунката не са изобразени операционните логически схеми, които са неразделна част от всяко микроконвейерно звено, и които реализират същинските изчисления.

 

Фиг. 3.8.2.  Асинхронна конвейерна организация на цикъл

 

Изобразените звена са номерирани от 1 до 7. Тези номера ще бъдат използвани и за означаване на конвейерните автомати, на техните сигнали или връзки, но няма да имат нищо общо с поредовия номер на зарежданите в конвейера задачи.

 

 

3.8.2.  Хардуерен аспект на анализа

В циклическата структура от фигура 3.8.2 има две съществени точки. Това са входната точка (Entrance) и изходната точка (Exit). По своята природа, тези две точки са свързани чрез обратната връзка, която съответства на алгоритмичния преход “лъжа” на условието за край на цикъла СЕС (Condition of End Cycle). Управлението на микроконвейерните звена в тези две точки е в зависимост от логическата стойност на условието за край СЕС. Конвейерните автомати на входното и на изходното звена остават свързани през цялото време на циклическото изчисление. Заявката, която генерира автоматът в изходната точка, трябва да се разклонява, пренасочвайки актуалната си стойност в зависимост от условието СЕС или към автомата на входното звено (Rfalse), или към автомата на звеното в изхода на цикъла (Rtrue). В същото време този автомат ще трябва да формира своето потвърждение въз основа на две входни за него потвърждения – това, което идва от автомата на входното звено (Afalse) и това, което идва от автомата на звеното по изхода на цикъла (Atrue).

Що се отнася до конвейерния автомат, управляващ входното звено на цикъла, той е свързан с две входни заявки – тази, която идва от звеното, предхождащо входната точка (R), и идващата от автомата на изходното звено (Rfalse). В отговор трябва да връща потвърждение или към предходния автомат (А) или към автомата в изходната точка (Afalse).

Началният анализ на логическата структура от фигура 3.8.2 изявява две задачи. Задачите са за синтез на принципните логически схеми на конвейерните автомати в двете точки, които вече коментирахме, тъй като те имат значително по-сложна система за диалог в сравнение с познатите ни за останалите автомати.

 

 

3.8.3.  Организационен аспект на анализа

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

Първият начин съответства на функционирането на еднотактовата циклическа структура (фигура 3.8.1), за която са познати различни варианти от глава 2. Имаме предвид такъв начин на функциониране, при който когато една задача постъпи в структурата, тя не я освобождава, докато изчисленията не завършат. Дори когато циклическото тяло е многотактово, както вече го определихме, задачата се превърта многократно като преминава последователно от звено към звено в тялото. Този вид организация определяме като ниско производителна, защото във всеки момент в конвейерното тяло работи само едно звено, а останалите се намират в изходно състояние. Този вариант на организация е практически безинтересен и ще бъде използван единствено като основа за сравнение.

По-високата производителност изисква ангажирането на всички свободни звена в циклическото тяло на структурата. Конвейерната организация позволява в тялото на цикъла да се въртят едновременно повече от една задачи. Така например, след навлизане на задача №1 в тялото на цикъла, при което звеното във входната точка се освобождава, а входната даннова шина все още не е изключена, в цикъла може да постъпи задача №2. Аналогично, когато тя, следвайки задача 1, освободи звеното във входната точка, на нейно място може да постъпи задача 3.

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

Процесът на зареждане и превъртане на задачи в примерната структура е илюстриран на фигура 3.8.3. Първото връщане на задача 1 по обратната връзка във входното звено е изобразено в такт Tk+8. Преходът на задача 1 от звено 6 в звено 3 се дължи на нулевата стойност на условието СЕС, която звено 6 изчислява за нея. Тази логическа стойност определя данновите връзки в изходната и входната точки, както беше пояснено в началото.

 

Фиг. 3.8.3.  Навлизане на много задачи в цикъла и превъртане

 

Казаното до момента все още не изчерпва изясняването на организационния аспект на функционирането на конвейеризираната циклическа структура. За целите на по-нататъшния анализ ще въведем допълнителна конкретност.

 

 

3.8.4.  Цикъл с предварително известен брой повторения

Когато реализираният цикъл е от вида с предварително известен брой повторения, заредените в неговото тяло задачи се превъртват еднакъв брой пъти. От това следва, че тяхната последователност ще се запази и до момента на последното повторение. Условието за край на цикъла СЕС ще се изпълни за първи път най-напред за задача 1 и тогава тя трябва да излезе от цикъла. След нея по същата причина последователно ще напуснат цикъла и останалите задачи от групата. След като звеното във входната точка бъде освободено, тъй като обратната връзка по това време ще бъде изключена  (СЕС=1), в него може да постъпи нова задача (вижте втората колонка в рисунката от фигура 3.8.4). Така процесът на последователно излизане от цикъла на трите изпълнени задачи №(1, 2, 3) ще бъде съпроводен с последователно зареждане на 3 нови задачи №(4, 5, 6). Схемата от фигура 3.8.4 илюстрира тези процеси.

 

Фиг. 3.8.4.  Процес на излизане на задачи от цикъла

 

Вижда се, че в последния изобразен такт за задача 4 се изчислява условието СЕС=0. С това започва превъртането в тялото на цикъла на втората група задачи.

На кратко можем да кажем, че ако тялото на цикъла е конвейерно реализирано чрез m на брой степени, структурата от фигура 3.8.2 може да работи по едновременното изпълнение на (m-1) брой задачи. В процеса на излизане от цикъла на завършилите задачи в него се зареждат също толкова нови задачи. Ако приемем, че броят на циклическите повторения е n, то латентността на цяла група от (m-1) на брой задачи е почти колкото за една единствена задача. Процесът на излизане на задачи от цикъла, заедно с процеса на зареждане, може да бъде представен чрез времедиаграмата от фигура 3.8.5.

 

Фиг. 3.8.5.  Циклическа активност на 3 групи от по (m-1) задачи

 

На времедиаграмата активните изчисления по задачите от дадена група се застъпват във времето, когато те излизат от цикъла, с навлизането на следващата група задачи. Латентността  t  на всяка задача се представя с израза:

където с  tk  е означена латентността на k-тото звено.

Ако приемем (в най-лошия случай), че латентността tk на всяко звено е константа, равна на максимално възможната за съответното звено, следва че и оценката (3.8.1) е константа. Последното ни дава правото да твърдим, че при тази организация конвейерната циклическа структура е най-малко (m-1) пъти по-производителна по сравнение с еднозадачната организация.

 

 

3.8.5.  Място и време на събитията

За да изявим настъпващите събития ще анализираме по-подробно процеса на преминаване на задачите през изходната и входната точки. Трансферът на данните в тези точки зависи от стойността на условието СЕС. Следва да се помни, че условието СЕС в текущия такт се отнася само за задачата, достигнала изходната точка, и че в следващия такт в същата точка ще бъде изчислено условието на следващата задача. Анализът на функционирането на циклическата структура откроява три различни ситуации във времето:

§         Когато в тялото на цикъла навлизат новите задачи;

§         Когато тези задачи се превъртват последователно и многократно;

§         И когато задачите започват да излизат от цикъла.

След изпълнение на циклическите изчисления за няколко групи задачи, както е показано на фигура 3.8.5, първият и третият случаи се обединяват. Между тях може да видим отличия само при първоначално зареждане на първата група или когато при излизане на дадена група, се окаже че тя е последната.

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

От посоченото следва, че в конвейерната структура трябва да се въведе нов елемент, чиято задача ще бъде да покаже момента, в който циклическото тяло е заредено с необходимия брой задачи. Синтезът на този елемент е следваща, трета задача. Тъй като при начално зареждане на задачи в конвейера все още не е била изчислявана стойност на условието за край на цикъла СЕС, то управлението на данновите връзки във входната точка на цикъла по това време ще се осъществява именно от този елемент. В момента, в който задача 1 достигне звено 6 и за нея бъде изчислена стойност за условието СЕС, управлението на данновите връзки ще поеме тази именно стойност.

Ще анализираме по-подробно последните два такта (k+7) и (k+8) от фигура 3.8.3. След като задача 1 в такт (k+5) попадне в звено 6, започва изчисляването на стойността на условието СЕС. Едновременно с това останалите задачи слизат в тялото, а свободното звено free се премества в обратна посока. В такт (k+6) или (k+7) стойността на условието е вече изчислена и тя е CEC=0. Тази стойност определя данновите връзки в изходната и във входната точки, като образува обратната връзка. С това в такт (k+8) става възможен преходът на задача 1 от звено 6 в звено 3.

В началото на фигура 3.8.4 е изобразен обратният случай, когато CEC=1. При тази стойност данновите връзки в изходната и входната точки на цикъла трябва да се определят така, че обратната връзка да бъде изключена. Така задача 1 ще излезе от цикъла и ще слезе надолу в конвейера в звено 7, а в същото време в звено 3 ще бъде заредена новата задача 4.

В края на процеса, изобразен на фигура 3.8.4, в циклическата структура е заредена новата група задачи №(4,5,6). И тъй като за задача 4, която е в звено 6, е изчислена стойността CEC=0, обратната връзка отново е включена и тази нова група започва своето n-кратното превъртване.

 

 

3.8.6.  Цикъл с предварително неизвестен брой повторения

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

Ходът на изпълнението на всяка отделна задача зависи от текущата стойност на условието за край СЕС, която тя генерира. Ето защо е важно да се анализират събитията в двата случая на това условие, както по отношение на изходната, така и по отношение на входната точки.

Нека приемем, че влезлите в тялото на цикъла задачи 1, 2 и 3 са изпълнили няколко повторения и се намират в положението, показано на фигура 3.8.6, в най-лявата колонка.

 

Фиг. 3.8.6.  Процес на излизане от цикъла

 

Нека за задача 1 звено 6 (фиг. 3.8.2) е генерирало условието СЕС=0. В резултат на това тя преминава по обратната връзка в звено 3. В последствие задачите последователно слизат от звено на звено, като в третата колонка се вижда, че звено 3 отново е свободно. В звено 6 се намира задача 2, за която CEC=1.

Задача 2 излиза от цикъла, а в него влиза нова задача 4. Задача 3 се превърта, а задача 1 излиза от цикъла. Така в края на рисунката в тялото на цикъла остава да се превъртва групата от задачи (4, 3, 5).

Изложеният току що анализ изявява още един нов проблем. Същността на този проблем се състои в реда на излизащите от цикъла задачи. Тъй като броят на повторенията не е известен и е индивидуален за всяка задача, не може да се очаква редът при зареждането им да се повтори при излизането им от цикъла. Така в отделните моменти съставът на групата в цикъла се променя.

В заключение на казаното следва да формулираме за този раздел нова четвърта задача, състояща се във възстановяване (при необходимост) на реда на слизащите от конвейера задачи. Предвид на това, че ние имаме вече решение на тази задача в лицето на микроконвейерния буфер за възстановяване на реда, описан в раздел 3.5, няма да я дискутираме тук.

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

 

 

3.8.7.  Конвейерен автомат на звеното с условие за край на цикъл

Конвейерният автомат на звеното, което генерира условието за край на цикъла СЕС (изходното звено), по същество е свързан са два други конвейерни автомата. Единият автомат управлява звеното, което се намира по изхода от цикъла (звено 7, фигура 3.8.2). В това звено попадат резултатите, получени от циклическите изчисления, когато условието за край бъде изпълнено СЕС=1. По същество, това е изходът “истина” (CEC=true). Другият автомат е този, който управлява звеното във входната точка на цикъла. Връзката с него се осъществява по изхода “лъжа” на условния преход (CEC=false).

 

Конвейерен автомат с 2-фазов протокол за трансфер на данни

Синтезираната логическа структура на конвейерен автомат с 2-фазов протокол, управляващ звеното, което генерира условието за край на цикъла, е представена на фигура 3.8.7.

Разглеждано като част от логическата структура на конвейера, звено 6, което генерира условието за край на цикъла СЕС, независимо какъв е той по вид, има аналогичните проблеми на всяко друго звено, генериращо условие за преход. По тази причина структурното решение за автомата на разглежданото тук звено наподобява решението, което е изложено в раздел 3.3.

Както се вижда от фигурата, сигналът потвърждение ACECin е функция, реализирана от схемата LA (Logic Acknowledgement) от потвържденията Atrue и Afalse, а двете заявки Rtrue и Rfalse се формират от сигнала RCECout в схемата LR (Logic Request).

 

Синтез на сигнал потвърждение

Превключването на конвейерния автомат в последното звено от тялото на цикъла е функция от два входни сигнала: Atrue и Afalse. Последните оповестяват готовността на всеки от клоновете по отделно, т.е. те са “родители” на сигнала ACECin. Поради значително по-голямата сумарна латентност на циклическата структура като цяло, в сравнение с тази на микроконвейерното звено, намиращо се след изхода от цикъла, може да приемем, че по време на циклическите изчисления, потвърждението Atrue е постоянно подадено и очаква момента, когато ще бъде използвано. Потвърждението Atrue идва от звено 7, което се намира след циклическата структура, което поради закъснението в последната се предполага, че вече е завършило своето изчисление. До този момент обаче актуалното потвърждение идва от звеното в клона “лъжа”, а то е Afalse. Това е така по причина на многократните завъртания на цикъла по обратната връзка. В тези условия, актуалното потвърждение пристига в отговор на заявката Rfalse в момент, когато логическата стойност на условието СЕС е стабилно установена във времето. От тук следва, че логическата схема LA ще осъществява само мултиплексиране на двете входни потвърждения, според следната логика.

Сигналът ACECin ще има стойността на идващото от съответния клон потвърждение, в следствие на което не е необходимо конвертиране на тази стойност.

 

Фиг. 3.8.7.  Логическа структура на конвейерен автомат с условие за край на цикъл

 

Следва да отчетем и събитийния характер на новите стойности. Моментът на поява на новата логическа стойност на условието за преход СЕС и моментът на поява на заявката RCECout, както е посочено в раздел 3.3, се състезават във времето.

Резултатът от това състезание е или равен или се печели от СЕС. Мултиплексорът на потвържденията LA, който ще се управлява от условието СЕС, трябва да се превключи не в момента на възникване на новата стойност на условието СЕС, а в момента на появата на заявката RCECout. Това налага състезателността да бъде отстранена, което можем да постигнем единствено с помощта на тригер. В момента на възникване на заявката RCECout този тригер трябва да фиксира стойността на условието СЕС и да я поддържа до следващия такт. Така той ще има още една положителна роля – ще предпазва мултиплексора LA от нежелани превключвания по време на самото изчисление на следващата нова стойност на СЕС.

 

Генериране на заявки към разклоненията

Конвейерният автомат, управляващ звеното с условен преход, разпространява към следващите звена заявка, отбелязана като RCECout. Заявката не може да се подаде директно към входовете на конвейерните автомати в началото на всеки от алтернативните клонове. Съответните запитвания, които следва да получат конвейерните автомати, са означени с Rtrue за клона “истина” и с Rfalse за клона “лъжа” и са функция на логическата схема LR (фигура 3.8.7). Непосредственото подключване на заявката RCECout не е възможно, защото в точката на разклонението тя влиза в сложна функционална връзка с логическата стойност на условието CEC от една страна, и с текущото (завареното) състояние на конвейерния автомат в началото на всеки клон, от друга страна. Това пък се налага от вида на самите автомати, които както вече беше споменато, използват 2-фазов протокол за управление на трансфера. Последното означава, че всяко тяхно превключване (0®1 и 1®0) причинява запис в регистрите фиксатори и старт на изчисленията в звената. Ако се разглежда превключване в началото на клон от микроконвейера, то освен логическата стойност на условието за преход CEC (0 или 1) следва да се отчете и завареното състояние на съответния автомат. Ще отбележим, че С-елементът в схемата на автомата се превключва както при съчетаване на две входни единици, така и на две нули. С други думи сигналите Rtrue и Rfalse са функции не само от превключването на сигнала RCECout, но и от стойността на условието CEC, а така също и от състоянието на конвейерните автомати на входа на разклоненията. Например, ако стойността на условието за преход е нула (CEC=0), това означава, че изчисленията трябва да продължат в клона “лъжа”, т.е. в звено 3, като се затвори за пореден път обратната връзка на цикъла. Единственото, което различава този тип разклонение от обикновеното разклонение, е точно тази няколкократна повторяемост на ситуацията, представляваща същността на структурата цикъл. Ако състоянието на автомата РС3 в този клон, в който ни насочва условието, е единица, което се поддържа във времето до този момент от стойността Rfalse=1, то той трябва да се превключи в ново състояние нула, за да стартира чрез заден фронт на сигнала W тези изчисления. За да стане това, на входа на този С-елемент трябва да се съчетаят две нули. Не трябва да се забравя и факта, че всяка нова стойност на сигнала RCECout (и 0 и 1) представлява по същество нова заявка, излизаща от автомата РС6 на звено 6.

Логиката, която току що беше пояснена, е изразена чрез таблиците на истинност 1 и 2, в които сигналите Wtrue и W представят състоянието на съответните С-елементи. Тук следва да внесем допълнително пояснение. За разлика от случая на обикновено разклонение, където се използваха два сигнала Wtrue и Wfalse, тук вторият сигнал е означен само с W, т.е. без подсказката fasle. Това е така, защото звеното във входната точка не е обикновено начално звено на клон в алгоритъм. В нашият случай входното звено е звено в обща точка. То записва нови данни както в качеството си на начално звено в клон “лъжа”, така и като обикновено звено при първо навлизане на задачи в циклическата структура, ето защо сигналът за запис на това звено е означен само W.

 

Таблица 3.8.1.  Заявка към конвейерен автомат в клон “лъжа”

CEC

W

RCECout

  Rfalse

0

0

появява се заден фронт 

 * ,  превключва се

0

0

появява се преден фронт 

 * ,  превключва се

0

1

появява се заден фронт 

 * ,  превключва се

0

1

появява се преден фронт 

 * ,  превключва се

1

0

появява се заден фронт 

       0,  не се превключва

1

0

появява се преден фронт 

       0,  не се превключва

1

1

появява се заден фронт 

       1,  не се превключва

1

1

появява се преден фронт 

       1,  не се превключва

 

Таблица 3.8.2.  Заявка към конвейерен автомат в клон “истина”

CEC

Wtrue

RCECout

  Rtrue

0

0

появява се заден фронт 

       0,  не се превключва

0

0

появява се преден фронт 

       0,  не се превключва

0

1

появява се заден фронт 

       1,  не се превключва

0

1

появява се преден фронт 

       1,  не се превключва

1

0

появява се заден фронт 

 * ,  превключва се

1

0

появява се преден фронт 

 * ,  превключва се

1

1

появява се заден фронт 

 * ,  превключва се

1

1

появява се преден фронт 

 * ,  превключва се

 

Въз основа на горните таблици на истинност са синтезирани следните логически функции:

Както се вижда, логиката на заявките Rtrue и Rfalse не зависи от заявката RCECout, което се очакваше. Зависимостта на заявките Rtrue и Rfalse не е от стойността на сигнала RCECout, а от времето, т.е. от моментите на неговото превключване. Следва да се разбира, че смяната на стойността на RCECout, т.е. появата на негов фронт, маркира момента във времето, в който операционната логика на това звено завършва изчисленията си. Този момент не е задължително да съвпада с появата на истинната стойност на условието CEC. В зависимост от сложността на изчислението на CEC, в общия случай следва да се приема, че истинната стойност на CEC може да се появи и по-рано във времето спрямо новия фронт на сигнала RCECout или най-късно едновременно с него и никога по-късно от него. В една непосредствена реализация на (3.8.3) и (3.8.4), по-ранното явяване на CEC ще доведе до по-ранно формиране на стойностите на заявките Rtrue или Rfalse, а от там и до по-ранно стартиране на съответния клон на конвейера. Това стартиране ще започне със запис на данни в регистъра фиксатор, а те в общият случай все още няма да са достигнали във времето истинните си стойности. Така най-вероятно изчисленията могат да стартират с грешни данни.

Основният извод, който се налага от така изложените съображения е, че формулите (3.8.3) и (3.8.4) определят стойностите на заявките, но моментът, в който те следва да се появят и да подействат, се определя от момента на превключване на сигнала RCECout. Или казано по друг начин, новите стойности на заявките Rtrue или Rfalse трябва да се явят в отговор на фронт в сигнала RCECout. Последното означава, че формирането на заявките Rtrue и Rfalse, не е възможно да бъде постигнато единствено с комбинационна логика.

Изложените разсъждения доказват, че времевата зависимост на изчислените стойности (3.8.3) и (3.8.4) може да се реализира само с помощта на запомнящ елемент – тригер. Тъй като запис трябва да се извършва при всяко превключване на С-елемента, синхронизиращият тригер трябва да бъде от тип DEDTFF (D-тригер, работещ и по двата фронта). В окончателната логическа схема на конвейерния автомат PC6 (фигура 3.8.8) е представено едно предпочитано от нас решение, основаващо се на обикновен D-Latch тригер и два детектора на фронт - FD­ за преден и FD¯ за заден. Логическата схема, която беше отбелязана с LR във фигура 3.8.7, съдържа С-елемента на звеното с условен преход, схемата LA, обединяваща потвържденията Atrue и Afalse , както и двете тригерни схеми, генериращи заявките Rtrue и Rfalse.

Както се вижда от схемата, пулс-генераторите се обединяват в схема ИЛИ, чийто изход е означен FD_R. Този сигнал реализират запис по входа С на съответния тригер – в тригер TL-CEC винаги, а в другите два тригера, според стойността на условието за край. Изчислената според (3.8.3) логическа стойност на заявката Rtrue постъпва по входа D и се съхранява в тригера до следващия път, когато ще бъде избран същия клон. Сигналът Reset е необходим в началния момент, в който всички конвейерни автомати принудително се установяват в изходно състояние. Аналогична логическа схема формира според (3.8.4) заявката Rfalse към конвейерния автомат в клон “лъжа”.

Тъй като в отговор на изпратената заявка Rtrue или Rfalse съответният конвейерен автомат ще се превключи и ще върне по обратната връзка нова стойност на сигнала W, която застрашава надеждността на записа в D-тригера TL_t или TL_f, то ние сме принудени да я задържим във времето, докато изчезне импулсът за запис от входа С. Закъснението се осигурява от елемента DLW, което се постига конструктивно чрез неравенството  tDLw>tFD.

 

Фиг. 3.8.8.  Логическа схема на 2-фазов конвейерен автомат
за звено с условие за край на цикъл

 

В схемата е включен тригер TL_CEC, който има за задача да запомни логическата стойност на условието за край на цикъла СЕС в момента, когато звеното завърши своите изчисления, т.е. когато се появи заявката RCECout. Така той няма да допусне новата стойност на условието СЕС да манипулира преждевременно мултиплексора на потвържденията, поддържайки стабилна текущата стойност до края на следващото изчисление.

Изходното състояние на тригерите TL_t и TL_f е без значение, но е прието те да се нулират от сигнал Reset. В същото време, принудителното състояние на тригер TL_CEC е единица, което се изисква от конвейерния автомат на звеното във входната точка. Това положение е пояснено чрез времедиаграмата от фигура 3.8.9.

Времедиаграмата изобразява две превключвания на автомата на изходното звено. Първото е при стойност на условието за край CEC=1. Изобразените стойности до този момент на сигналите Wtrue и W са приети за единица и нула съответно, като възможни. Вижда се, че стойността на заявката Rfalse и състоянието на автомата W3 в клона “лъжа” не се променят. В същото време заявката към клон “истина” се превключва. В резултат на това се превключва и съответният автомат – сигналът Wtrue=0. Новото му състояние е отразено със закъснение tDw.

Второто превключване е при стойност на условието за край CEC=0 и следователно актуалната заявка ще бъде насочена в клона “лъжа”. Така заявката Rfalse се превключва в единица. В резултат на това автоматът на звено 3 също се превключва (W3=1), което е отразено във времедиаграмата със същото закъснение tDw.

 

Фиг. 3.8.9.  Две възможни превключвания на автомата на изходното звено

 

 

3.8.8.  Конвейерен автомат на звеното във входната точка

Общата характеристика на звеното във входната точка на цикъла беше изложена в началото. Данновите входове на регистъра фиксатор RG-F в това звено са два. Те трябва да се мултиплексират в зависимост от логическата стойност на условието за край на цикъла СЕС. Като имаме предвид, че тази стойност се съхранява в тригер TL_CEC, който е част от схемата на автомата, управляващ изходното звено, то неговото състояние може да се използва и в схемата на автомата на звеното във входната точка. Това е така, защото съответното зареждане с данни на това звено става по времето на актуалната стойност на условието CEC.

 

Конвейерен автомат с 2-фазов протокол за трансфер

От фигура 3.8.2 се вижда, че автоматът, който управлява звеното в тази точка е свързан със следващото звено традиционно чрез сигналите Request (Rout) и Acknowledgement (Ain). Двустранна е обаче връзката му с автоматите на предходни звена. Фигура 3.8.10 представя синтезираната за този автомат структурна схема.

 

Генериране на заявка

Заявката, която трябва да получи автоматът на звеното във входната точка на цикъла, е означена Rin. Схемата на конвейерния автомат PC3, който управлява звеното във входната точка на цикъла, съдържа мултиплексора MX. Той обединява двете заявки към това звено, означени Rtrue и Rfalse. Мултиплексорът MX се управлява от условието за край на цикъла СЕС, което се поддържа стабилно във времето от тригер TL-CEC (фигура 3.8.8). Това означава, че мултиплексорът ще бъде правилно превключен както при първо влизане в цикъла, така и при всяко завъртане на изчислителния процес по обратната връзка. Това е така, защото след всяко излизане от цикъла, което се реализира при стойност на условието за преход CEC=1, тригер TL-CEC остава в единично състояние. Именно това състояние държи конвейерния автомат на звеното във входната точка включен към предходния автомат PC2, т.е. изгражда връзката Req=Rtrue. Това състояние обяснява и защо сигнал Reset е подаден към S входа на тригер TL-CEC. Алтернативната връзка Req=Rfalse се поддържа по време на циклическите повторения, когато CEC=0. Същото важи и за мултиплексора на данновите шини MXD.

 

Фиг. 3.8.10.  Логическа структура на конвейерен автомат във входна точка на цикъл

 

Логическата стойност на заявката Req, такава каквато излиза от мултиплексора МХ, не винаги е тази, която е актуална за Мюлер С-елемента, на чийто вход Rin следва да бъде подадена. Това неудобство се дължи на 2-фазовия протокол на автомата, който разглеждаме. Според него всяко състояние на С-елемента е работно и то трябва да се изменя на противоположното при всеки старт на микроконвейерното звено. Това означава, че ако С-елементът е в състояние нула (W=0), то при нова заявка той трябва да се превключи в състояние единица. Това е възможно само ако тази заявка се появи като единица. Аналогично е положението за обратното превключване.

Възможното несъответствие между логическата стойност на новата заявка Rout и очакваната стойност Rin налага нейното преобразуване. Така тази стойност ще бъде съобразена със завареното състояние на С-елемента в автомат PC3. За целта съставяме таблица на истинност.

 

Таблица 3.8.3.  Логическа стойност на заявката Rin и потвърждението Aout

Заявката Req

пристига с

нова стойност:

С-елементът е

заварен в

състояние:

С-елементът

трябва да се

превключи в

състояние:

Следователно

Rin  трябва да

има

стойността:

Трябва да бъде

върнато

потвърждение

Aout  със

стойност:

0

1

1

0  (Req)

1

0

1  (Req)

0

1

0

 

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

изразява формално схемата на конвертора Conv (фигура 3.8.10).

Според (3.8.5) входната заявка има пряка връзка с изходното състояние, но тя следва да се осъществява и актуализира само в момента, в който се появява стойността на условието CEC. Този момент се бележи от фронтовете на превключване на заявката RCECout (фигура 3.8.8), които са реализирани от сигнала, означен FD_R. Казаното означава, че връзката (3.8.5) трябва да се осъществи чрез тригер, т.е. заявката Rin трябва да се подаде към С-елемента в нужния момент.

 

Синтез на сигнал потвърждение

След като конвейерният автомат на звеното във входната точка се превключи, той трябва да върне сигнал за потвърждение Aout към звеното, от което е получил заявката. Звеното е било определено от стойността на условието СЕС, следователно пак то определя направлението на актуалното потвърждение. За целта в схемата е включен демултиплексорът DMX. Така, когато СЕС=0, стойността Aout ще бъде насочена към автомата в клона “лъжа”, т.е. AfalseºAout. В обратния случай, когато СЕС=1, стойността Aout ще бъде насочена към автомата в клона “истина”, т.е. AtrueºAout.

При чистото демултипликсиране на сигнал Aout обаче, към неактуалния клон винаги ще се изпраща нова стойност нула. От една страна тази нула може да предизвика неправомерно превключване на конвейерния автомат в този неактуален клон, а от друга страна, тъй като клонът е неактуален, то стойността на потвърждението към него трябва да остава неизменна се във времето, докато той чака обръщение. Последното означава, че стойността на върнатото преди това актуално потвърждение следва да бъде запомнена и поддържана във времето от тригер. Този тригер трябва да променя състоянието си в съответствие с новата стойност на сигнала потвърждение, само когато клонът за който той работи, бъде определен за актуален. С други думи тригерите с това предназначение трябва да са на брой два.

Следващата задача, която трябва да решим, е каква трябва да бъде стойността на сигнала потвърждение. Тъй като конвейерният автомат PC3 на звеното във входната точка би могъл преди този такт да се е превключвал неизвестен брой пъти, то връщаната от него в текущия такт стойност Aout може да не съответства на очакваната от автомат PC2 или от автомат PC6 (вижте фигура 3.8.2). Налага се преобразуване на стойността на сигнала Aout в необходимата, което се дължи на 2-фазовия протокол за управление на данновия трансфер.

Логиката за определяне на актуалната стойност на потвърждението се основава на логиката, по която се превключва Мюлер С-елементът, а именно (вижте например първи ред в таблица 3.8.3), когато автоматът PC3 се е превключил в резултат на получена заявка със стойност нула, към автомата, подал тази заявка, трябва да бъде върнато потвърждение със стойност единица.

Изказаната логика се съдържа в таблица 3.8.3, а решението е

Окончателната принципна логическа схема на конвейерния автомат на звеното във входната точка е представена на фигура 3.8.11.

 

Фиг. 3.8.11.  Логическа схема на 2-фазов конвейерен автомат за входно звено на цикъл

 

Схемата реализира функциите (3.8.5) и (3.8.6) като отчита времевата им зависимост от събитията, които ги формират. Така стойностите на потвържденията Afalse и Atrue се записват в съответния тригер, когато се превключи С-елементът на автомата, а заявката Rin, която той получава, се записва в тригер TL_R от сигнал FD_R. Изходното състояние на автомата определя сигнал Reset.

Ще илюстрираме функционирането на автомата на звеното във входната точка с времедиаграмата от следващата фигура 3.8.12, при следните начални условия: ще приемем, че при предходното превключване автоматът е записал данни по обратната връзка. Това означава, че условието за край е било CEC=0, откъдето следва, че в тригер TL_R има записана нула, т.е. Rin=0. Следва, че С-елементът е в състояние 0 (W=0).

 

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

 

Ще приемем, че при новото превключване автоматът ще запише данни по правата връзка, тъй като ще приемем още, че условието за край ще бъде CEC=1. Ще приемем също, че заявката от предходното звено 2 има стойност Rtrue=1. Последното означава, че тригер TL_t поддържа стойност 1, т.е. Atrue=1.

Новото превключване започва с превключването на заявката RCECout в изходното звено, което ще приемем за единица.

На времедиаграмата, след превключването на заявката RCECout в единица, е изобразено следващото й превключване, което е в нула. При това превключване е прието, че стойността на условието за край на цикъла е CEC=0, което означава, че този път входното звено ще приеме данни по обратната връзка. Вижда се, че превключването зависи от стойността на заявката Rfalse, която е приета да е нула (Rin=Rfalse=0). Тази стойност е поддържана във времето до този момент от стойността Afalse=0. След превключването на автомата (W=0), в клона “лъжа” към автомата на изходното звено се връща потвърждението Afalse=1.

 

 

3.8.9.  Задача трета

По-горе в точка 3.8.5 беше изявена задача, която получи пореден номер три. Тя изисква, в началните тактове, при първоначално зареждане на конвейера със задачи, обратната връзка на циклическото тяло да бъде изключена. При това, данновите връзки на входното звено на тялото на цикъла трябва да се поддържат включени към предходното звено, с което се осигурява зареждане на многостепенното тяло с максимално допустимия брой задачи. Беше определено, че ако степените в конвейеризираното тяло са m на брой, то задачите трябва да бъдат (m-1) на брой. Имат се предвид регистри фиксатори от тип Latch. Обратната връзка трябва да бъде включена веднага след зареждане на този брой задачи. От този момент нататък данновите връзки в изходната и входната точки трябва да се управляват от условието за край на цикъла CEC.

В началния момент, за който важи трета задача, протича процес на зареждане на циклическото тяло със задачи, който е илюстриран с фигура 3.8.3. Както е показано на фигурата, обратната връзка трябва да бъде включена точно в такт (k+7). Заедно с това управлението на входния мултиплексор в този момент трябва да се преотстъпи на условието за карай на цикъла CEC.

Процесът на зареждане на циклическото тяло със задачи е съпроводен с изчислителен процес, който всяко конвейерно звено провежда върху заредените в него данни. Нека се спрем на такт (k+5) от същата фигура. В този момент задача 1 постъпва в изходното звено 6 и стартира своите изчисления. Интересното за тях е това, че те ще получат първата стойност на условието за край на цикъла СЕС. Докато това условие се изчислява, в посока на входната точка се изкачва свободното звено, което в момент (k+7) се оказва в звено 3. Изчислението в звено 6 има латентност t6. В същото време, входното звено ще бъде свободно след време (t5+t4+t3), което е сумарната латентност на останалите предходни звена. След като звено 6 приеме данни от звено 5 и му върне сигнал потвърждение, последното прави същото, т.е. можем да приемем с първо приближение, че тези две съседни звена (6 и 5) стартират своите изчисления почти едновременно. Това ще ни даде възможност да илюстрираме казаното по-горе със следната рисунка, която позволява да се сравнят възможните времеви закъснения

 

 

Тъй като в общия случай латентностите на звената при конкретните изчисления не са ни известни, а така също и броят на степените в конвейера не е известен, както и структурата му не е известна, то са възможни следните отношения на латентността на изходното звено tm m беше означен броя на звената в тялото на цикъла)

Първото отношение съответства на горната рисунка. За изчислителния процес това означава, че изходното звено е завършило своите изчисления и стойността на условието СЕС е готова. Предхождащата структура от звена обаче не е завършила, а може би дори не е заредена до край със задачи. Това означава, че изходното звено ще остане в състояние на очакване, докато настъпи момента, в който ще се свърже с входното звено, от което ще получи сигнал потвърждение и където ще може да управлява входния даннов мултиплексор. Разрешение за това ще му даде решението на трета задача, което предстои да представим.

Второто отношение на (3.8.7) в общия случай е малко вероятно. Според него предходната структура от звена е заредена и е завършила изчисленията си, като очаква управление на обратната връзка от изходното звено. С други думи принудителното управление на входната точка е завършило и е прекратено.

Направеният анализ показва, че във всички случаи, при първоначално зареждане на конвейерното тяло на цикъла, изходното звено все още не е в състояние да управлява автомата на входното звено и процесът на зареждане трябва да се контролира от друг елемент. Този елемент трябва да бъде двоичен брояч по модул (m-1), за да може да отброи необходимия брой заредени в тялото на цикъла задачи. Върху логическата схема от фигура 3.8.11 е проведен допълнителен синтез, в резултат на което е получена окончателната принципна логическа схема на конвейерния автомат, който управлява звеното във входната точка на цикъла, представена на фигура 3.8.13.

 

Фиг. 3.8.13.  Окончателна принципна логическа схема на 2-фазов ковейерен автомат за входно звено на цикъл

 

В схемата се вижда споменатият брояч BCount, който е декрементен. Началното му съдържание е числото (m-1), което се установява по сигнал Reset. Нулевото съдържание на брояча се разпознава от дешифратор, който генерира единица на изхода EQ. Стойността на този сигнал се използва за управление на посочените в схемата връзки. Правата фаза на сигнала EQ забранява разпространението на сигналите  Afalse ,  FD_R  и W в показаните направления. Докато броячът не се нулира, сигналът има стойност нула (EQ=0). Инверсната фаза на сигнала EQ забранява разпространението на сигналите  Rtrue  и  not(W).

Мултиплексорът МХ се управлява от функцията CodeMX

Тази логическа функция изчислява стойност единица винаги, когато съдържанието на брояча е различно от нула, т.е. по време на зареждането на тялото на цикъла със задачи. Докато тази функция има стойност единица, мултиплексорът МХ поддържа вход 1. Така заявката Rtrue достига входа Rin на Мюлер С-елемента. Същата функция трябва да управлява и данновия мултиплексор MXD (фигура 3.8.10). Докато броячът не се нулира, автоматът на звеното във входната точка комуникира с предходното звено 2 (сигнали Ack и Rtrue) и със следващото звено 4 (сигнали Ain и Rout) от тялото на цикъла. Тригерите TL_f, TL_t и TL_R не се превключват и остават в изходно състояние, определено от сигнал Reset. Така, тъй като автоматът на изходното звено 6 ще получава стойност Afalse=0, то ще остава в изходно състояние. В момента, в който броячът се нулира, сигналът EQ получава стойност единица. Забранените до момента връзки се разрешават, а разрешените се забраняват. След достигане на съдържание нула броячът не трябва да функционира. Това означава, че той не трябва да бъде кръгов брояч.

След началното зареждане на задачи в тялото на цикъла, когато задача 1 завърши своите изчисления в звено 5, тя ще поиска да се прехвърли в последното звено 6, подавайки заявка към автомата му. Този автомат няма да може да удовлетвори тази заявка, тъй като достъпът на потвърждението Afalse е блокиран от сигнала EQ=0, въпреки, че тригер TL_f е в единично състояние.

Докато не бъде заредено звеното във входната точка с последната (m-1)-ва за тялото на цикъла задача, забраната от сигнала EQ ще е в сила. Тази забрана ще бъде снета в момента, в който звеното бъде заредено с последната задача, тъй като тогава броячът ще се нулира. С появата на сигнал EQ=1 задача 1 ще премине в последното звено и ще започне изчислението на първата стойност на условието СЕС. През това време следващите задачи ще слязат надолу и когато звеното във входната точка се освободи, в него ще постъпи задача, която ще определи условието СЕС. От този момент нататък схемата от фигура 3.8.13 ще функционира аналогично на схемата от фигура 3.8.11.

 

 

3.8.10.  Конвейерни автомати с 4-фазов протокол за трансфер

Тук сме в положение, което е аналогично на изложеното в точка 3.8.7. Конвейерният автомат на звеното, което генерира условието за край на цикъла СЕС, по същество е свързан са два други конвейерни автомата. Единият автомат управлява звеното, което се намира по изхода от цикъла. В това звено попадат резултатите, получени от циклическите изчисления, когато условието за край СЕС бъде изпълнено. По същество, това е изходът “истина” (CEC=true). Другият автомат е автоматът, който управлява звеното във входната точка на цикъла. Връзката с него се осъществява по изхода “лъжа” (CEC=false).

Вторият вариант на решението, който разработваме и представяме тук по-долу, се отнася за конвейерни автомати, реализиращи 4-фазов протокол за трансфер. Логическата схема на избрания автомат е представена на фигура 3.4.10, а времедиаграмата на неговия трансферен протокол – на фигура 3.4.11. Времедиаграмата е полезна с това, че в нея се вижда импулсният характер на сигнала за запис W. Този именно импулс ще използваме за модифициране на декрементния двоичен брояч на заредените в циклическото тяло задачи.

 

 

3.8.11.  Конвейерен автомат на звеното с условие за край на цикъл

Ако е получена заявката Rin, динамичният D-тригер (структура Edge) в схемата на автомата ще се нулира с пристигане на потвърждението Ain, веднага след което ще регистрира поредния старт W на звеното. Най-същественото положение за този вид автомати, което следва да споменем в аванс, е това, че те генерират стартов сигнал към микроконвейерното звено винаги и единствено при превключването си от нулево в единично състояние

Това положение определя нулевото състояние на автомата като изходно. За яснота ще напомним, че състоянието на конвейерния автомат се изразява от състоянието на С-елемента, тъй като неговият изход управлява съдържанието на регистъра фиксатор в микроконвейерното звено. Тази особеност дава възможност регистрите фиксатори да бъдат изградени от обикновени Latch-тригери. От друга страна, като следствие, единичното състояние изисква автоматичен обратен преход в изходно състояние след всяко превключване. С други думи, единичното състояние съществува за кратко време, под формата на импулс за запис W. С-елементът се нулира веднага след като D-тригерът запомни поредното превключване. Така той е готов за следващото превключване.

 

 

Синтез на сигнал потвърждение

Посоченото по-горе дава разбирането, че конвейерните автомати, включително и тези в началото на всяко разклонение в алгоритмичната структура, очакват поредното си стартиране, намирайки се винаги в нулево състояние. Тъй като заявките имат винаги една и съща логическа стойност, така и потвържденията при своята повторяемост са еднакви по стойност. По този начин условията за старт на тези автомати, за разлика от разгледаните преди това 2-фазови, са винаги едни и същи, което представлява извод със съществена стойност за изложения по-долу синтез.

В звеното с условен преход СЕС (звено 6, фигура 3.8.2), превключването на конвейерния автомат е функция от два сигнала: Atrue и Afalse, оповестяващи готовността на всеки от клоновете по отделно. Става дума за клонът, който започва от входната точка на обратната връзка и съответно за клонът, който наричаме изход от цикъла (фигура 3.8.1). Логическият анализ на събитията в точката с този специфичен условен преход е подобен на направения за предходния 2-фазов автомат.

Поради значително по-голямата сумарна латентност на циклическата структура в сравнение с тази на микроконвейерното звено, намиращо се след изхода от цикъла, може да приемем, че по време на циклическите изчисления, потвърждението Atrue е постоянно подадено и очаква момента, когато ще бъде използвано. Потвърждението Atrue идва от звеното, което се намира след циклическата структура, т.е. то е началното звено в клона “истина”, което поради закъснението в последната, се предполага, че вече е завършило своето изчисление. В примерната структура това е звено 7.

До този момент обаче актуалното потвърждение в звеното с условен преход идва от звеното в клона “лъжа”, а то е означено Afalse. Това е така по причина на многократните циклически завъртания по обратната връзка. В тези условия, актуалното потвърждение пристига в отговор на заявката Rfalse, в момент, когато логическата стойност на условието СЕС е стабилно установена във времето. Мултиплексорът обаче, който ще се управлява от условието СЕС, трябва да се превключи не в момента на възникване на новата стойност на условието СЕС, а в момента на появата на заявката RCECout (фигура 3.8.7).

В предходния случай вече изяснихме характера на състезателността във времето между новата стойност на СЕС и новата стойност на заявката. Тази конкурентност се отстранява аналогично с тригер, който ще фиксира и ще поддържа стойността на условието СЕС до следващия такт, както е показано на фигура 3.8.8. Тъй като по време на трансфера автоматът на звеното, което предава данни, е постоянно свързан с автомата на звеното, което ги приема, (връзката се осигурява и поддържа от стойността на условието CEC), обединяването на потвържденията от двата клона се постига чрез логическа дизюнкция. Това положение е аналогично на вече изказаното за 2-фазовия автомат, ето защо логиката на потвърждението ACECout се изразява с уравнение (3.8.2).

 

 

Генериране на заявки към разклоненията

От своя страна заявката RCECout (фигура 3.8.7) не е зависима от състоянията на конвейерните автомати в разклоненията. Последното означава, че заявките Rtrue и Rfalse са зависими единствено от стойността на условието за преход CEC, което води до следната логика:

Условия за времева зависимост, каквато беше изявена в случая с 2-фазовите автомати, тук не съществуват. Според (3.8.9) и (3.8.10) единичните стойности на заявките Rtrue и Rfalse възникват в правилния момент, т.е. в момента, в който възниква заявката RCECout. Следователно за формиране на заявките Rtrue и Rfalse е необходим само един демултиплексор, управляван от сигнала CEC.

Окончателният вид на логическата схемата на конвейерния автомат на изходното звено е представен на фигура 3.8.14.

Тригерът TL_CEC има за задача да запомни логическата стойност на условието за край на цикъла  СЕС в момента, когато звеното завърши своите изчисления, т.е. когато се появи заявката RCECout. Така той няма да допусне условието СЕС да манипулира преждевременно мултиплексора на потвържденията, а освен това ще поддържа стойността му до края на следващото изчисление.

 

Фиг. 3.8.14.  Четири-фазов конвейерен автомат в звено с условие за край на цикъл

 

 

3.8.12.  Конвейерен автомат на звеното във входната точка

Общата характеристика на звеното във входната точка на цикъла беше изложена в началото. Данновите входове на регистъра фиксатор RG-F в това звено са два. Те трябва да се мултиплексират в зависимост от логическата стойност на условието за край на цикъла СЕС. Като имаме предвид, че тази стойност се съхранява в тригер TL_CEC, който е част от схемата на автомата, управляващ изходното звено, то неговото състояние ще бъде използвано и тук в схемата на автомата на звеното във входната точка. Това е така, защото съответното зареждане с данни на това звено става по времето на актуалната стойност на условието за край на цикъла CEC. Условието не съществува единствено в началния период, когато циклическото тяло се зарежда със задачи за първи път. В този временен интервал и автоматът с разглеждания тук протокол ще прилага решението на третата задача, постигнато за предходния 2-фазов протокол.

На фигура 3.8.15 е представена синтезираната логическа структура на конвейерния автомат PC3 за звеното във входната точка. Показани са предходното и следващото звена с техните автомати PC2 и PC4 и сигнали за диалог. Както се вижда в обкръжението на автомат PC3 се намират мултиплексор MX, демултиплексор DMX и двоичният брояч BCount.

Поради това, че актуалните стойности на сигналите, осъществяващи “ръкостискането” на автоматите, при този протокол не се променят, то не се налага те да се преобразуват. В резултат на това, свързването на автоматите не създава проблеми. Логическите възли MX и DMX също не се съобразяват с тези стойности и ги манипулират такива, каквито са. Всичко казано в точка 3.8.9 за брояча на заредените в тялото на цикъла задачи е в сила и тук. Неговото съдържание ще бъде манипулирано от сигнал W3.

 

Фиг. 3.8.15.  Логическа структура на конвейерен автомат във входна точка на цикъл

 

 

Генериране на заявка

Схемата на конвейерния автомат PC3, който управлява звеното във входната точка на цикъла, съдържа мултиплексора MX. Той обединява двете заявки към това звено, означени Rtrue и Rfalse. Мултиплексорът MX се управлява от условието за край на цикъла СЕС, което се поддържа стабилно във времето от тригер TL-CEC (фигура 3.8.14). Това означава, че мултиплексорът ще бъде правилно превключен както при първо влизане в цикъла, така и при всяко завъртане на изчислителния процес по обратната връзка. Това е така, защото след всяко излизане от цикъла, което се реализира при стойност на условието за преход CEC=1, тригер TL-CEC остава в единично състояние. Именно това състояние държи конвейерния автомат на звеното във входната точка включен към предходния автомат PC2, т.е. изгражда връзката Rin=Rtrue. Това състояние обяснява и защо сигнал Reset е подаден към S входа на тригер TL-CEC. Алтернативната връзка Rin=Rfalse се поддържа по време на циклическите повторения, когато CEC=0. Същото важи и за мултиплексора на данновите шини MXD.

 

 

Синтез на сигнал потвърждение

След превключване, конвейерният автомат генерира сигнал потвърждение Aout, който трябва да се изпрати в отговор на съответния автомат и неговата заявка. По време на началното зареждане това трябва да бъде автоматът на предходното звено PC2, а в последствие автоматът ще избира звено чрез условието за край на цикъла СЕС. Така с отчитане и на изискванията на трета задача, окончателната принципна логическа схема на конвейерния автомат, управляващ звеното във входната точка, е представена на фигура 3.8.16.

 

Фиг. 3.8.16.  Окончателна принципна логическа схема на 4-фазов конвейерен автомат
за входно звено на цикъл

 

От схемата се вижда, че потвърждението Aout се изпраща като сигнал Atrue или като сигнал Afalse през демултиплексор DMX. Този демултиплексор, както и мултиплексорът MX, се управляват от сигнал CodeMX, чиято логика е изразена чрез (3.8.8). Този сигнал управлява още и мултиплексора на данновите връзки MXD (фигура 3.8.15). Сигналът има стойност единица по време на началното зареждане на циклическото тяло със задачи. По този начин възлите MX, DMX и MXD са трайно включени към направлението “истина”. След зареждането тези възли се управляват от условието за край на цикъла СЕС.

 

 

3.9.  Асинхронни циклически микроконвейерни структури с многотактови тела с предусловие

 

Същността на този раздел е аналогична на тази от предходния. По тази причина и схемата на изложението тук е подобна. Разликата е в първоначалната постановка на задачата, която се изразява в това, че тук ще разгледаме циклически алгоритмични структури с предусловие. Промените в схемата на изложението се дължат на различията, които налага изнесеното пред циклическото тяло условие за край на повторенията. Това разместване не е толкова важно от алгоритмична гледна точка, но неговата хардуерна реализация представлява определен интерес и допълва множеството разработени методи за проектиране на микроконвейери, с което възможностите стават по-големи.

 

 

3.9.1.  Същност на задачата

Циклическата алгоритмична структура, която беше разглеждана в предходния раздел, се определя като структура със следусловие (фигура 3.8.1). Структурите със следусловие винаги изпълняват включените в тялото на цикъла изчисления поне един път. Броят на повторенията зависи от условието за край на цикъла СЕС. Конвейерната организация на такава структура налага, както вече видяхме, специална реализация на конвейерните автомати, управляващи звената в изходната и във входната точки. Условието за край на цикъла свързва тези два автомата и управлява тяхното превключване.

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

Тук ще се позовем на теорията на структурното програмиране, където според теоремата на Boem-Jacopini, циклическите алгоритмични структури са определени като основни градивни елементи (елементарни алгоритмични структури). Освен това споменатите по-горе два вида организация, които могат да бъдат преобразувани една в друга. Основавайки се на тези положения тук ще представим анализа на конвейерна структура на цикъл с предусловие и ще търсим неговата техническа реализация. Мотивите ни за това изследване са свързани с реалното съществуване на тази структура от една страна, както и с търсенето на по-съвършената техническа реализация, според основните критерии, прилагани за оценка на хардуерните решения.

На фигура 3.9.1 представяме синтезираната логическа структура на асинхронен микроконвейер за цикъл с предусловие. Примерната линейна циклическа структура, прикачена към звено №3, се съдържа като елемент в основния конвейер, съставен от звената 1, 2, 3, 8 и 9. От фигурата се вижда, че звеното, което изчислява стойността на условието за край на цикъла СЕС, се намира в основното направление на конвейера. В същото време, тялото на цикъла, което е примерно и е съставено от звената 4, 5, 6, и 7, е поставено в обратната връзка. Така входната точка Eentrance и изходната точка Exit, се обединяват в едно звено, управлявано от един конвейерен автомат. За сега това е първият резултат на този анализ, различен от онези, които бяха получени за структурата, която представихме в предходния раздел. Задачата, която изявяваме тук, се отнася до синтез на конвейерния автомат, управляващ входно-изходната точка на цикъла. Както може да се види от фигура 3.9.1, връзките на този автомат са значително по-сложни от тези на автоматите, които бяха синтезирани за структурата със следусловие.

 

Фиг. 3.9.1.  Логическа структура на асинхронен микроконвейер на цикъл с предусловие

 

 

3.9.2.  Синтез на конвейерни автомати за управление на входно-изходното звено

Първото положение, което искаме да отчетем, е във връзка с първоначалното зареждане на конвейерно организираното тяло на цикъла. При начално зареждане конвейерният автомат РС3 следва чрез данновия мултиплексор MXD да поддържа включена входната си даннова връзка към звено №2. Така всяка влязла в звено 3 задача ще изчислява своето условие за край на цикъла СЕС и ако то е изпълнено (СЕС=1), тя ще премине в звено 8, а ако не е изпълнено (СЕС=0), тя ще се отклони в тялото на цикъла и ще премине в звено 4. От казаното следват два извода:

§         Управлението на входните връзки е различно при начално зареждане и при превъртане на вече заредени в тялото задачи. При начално зареждане връзките ще се поддържат от брояч на заредените в тялото задачи, т.е. ще се приложи решението на трета задача, формулирана в предходния раздел 3.8. След нулиране на съдържанието на брояча управлението на входните връзки трябва да се поеме от текущата стойност на условието за край на цикъла;

§         Управлението на изходните връзки във всеки момент се управлява единствено от стойността на условието за край на цикъла СЕС.

Логическият синтез, който представяме по-долу е извършен в два варианта – за 2-фазов и за 4-фазов протокол за трансфер на данни.

 

 

3.9.2.1.  Конвейерен автомат с 2-фазов протокол

Конвейерният автомат РС3 на звеното, в което се изчислява условието за край на цикъла СЕС, за този протокол ще синтезираме въз основа на схемата на Мюлер С-елемент, както и на сигналите, които непосредствено определят неговото състояние. Имаме две двойки сигнали (RCECout, ACECin) и (RCECin, ACECout). Първата двойка сигнали (RCECout, ACECin) свързва този автомат с автоматите на следващите звена РС4 и РС8. По отношение на тези звена, автомат РС3 е автомат на изходното за цикъла звено.

Втората двойка сигнали (RCECin, ACECout) свързва същия автомат с автоматите на предхождащите го звена РС2 и РС7. Така по отношение на тези звена, автомат РС3 е автомат на входното за цикъла звено.

 

 

Синтез на сигналите към следващите звена

Условията за работа на разглеждания конвейерен автомат със следващите звена напълно съвпадат с тези на описания в предходния раздел автомат, управляващ изходното звено. В нашия случай автоматът РС3 е свързан по изходния клон “истина” с автомат РС8, а по изходния клон “лъжа”, с автомат РС4. Така заявката RCECout се разпространява като заявка Rtrue или като заявка Rfalse съответно.

Сигналът потвърждение ACECin обединява сигналите Atrue и Afalse, изпращани в обратна посока от същите звена. Всички съображения, които се отнасят за 2-фазовия протокол и логиката на процесите, изказани за структурата със следусловие, са в сила и тук в условията на цикъл с предусловие, ето защо и техническото решение за тази страна на автомата е същото.

Принципната логическа схема на връзките на автомат РС3 със следващите звена е представена на фигура 3.9.2. В схемата сигнал W4 представя състоянието на конвейерен автомат РС4, който е първият в клона “лъжа”. Сигнал W8 представя състоянието на конвейерен автомат РС8, който е първият в клона “истина” в примерната структура от фигура 3.9.1.

 

Фиг. 3.9.2.  Принципна логическа схема за връзка със следващите звена

 

 

Синтез на сигналите към предходните звена

Двойката сигнали (RCECin, ACECout), както може да се види на фигура 3.9.1, свързва автомат РС3 с предхождащите го конвейерни автомати РС2 и РС7.

Сигналът RCECin се формира в актуалната си стойност или от заявката R2 или от заявката R7. Изборът се определя от условието СЕС. Потвърждението ACECout трябва да се изпрати в обратна посока като А2 или като А7.

Анализът на тази връзка определя конвейерния автомат РС3 като автомат на звеното във входната точка на цикъла. Не се откриват различия в условията за работа на автомата като такъв по сравнение с условията за работа в структурата с следусловие. Това ни дава основание да взаимстваме полученото там решение, което след актуализация на връзките, е представено на фигура 3.9.3.

 

 

3.9.2.2.  Конвейерен автомат с 4-фазов протокол

Отново ще припомним, че най-същественото положение за този вид автомати е това, че те генерират стартов сигнал към микроконвейерното звено, винаги и единствено при превключването си от нулево в единично състояние. Това положение определя нулевото състояние на автомата като изходно. За яснота ще напомним, че състоянието на конвейерния автомат се изразява от състоянието на Мюлер С-елемента, тъй като неговият изход управлява съдържанието на регистъра фиксатор в микроконвейерното звено. Тази особеност дава възможност регистрите фиксатори да бъдат изградени от обикновени Latch-тригери. От друга страна, като следствие, единичното състояние изисква автоматичен обратен преход в изходно състояние след всяко превключване. С други думи, единичното състояние съществува за кратко време под формата на импулс W, който се използва за запис на данни в регистъра фиксатор на микроконвейерното звено.

С-елементът се нулира веднага след като D-тригерът запомни поредното превключване. Така той е готов за следващото превключване.

Както вече беше показано тук на фигура 3.9.1, имаме две двойки сигнали (RCECout, ACECin) и (RCECin, ACECout), които свързват конвейерния автомат РС3 със съседните автомати.

Първата двойка сигнали (RCECout, ACECin) свързва този автомат с автоматите на следващите звена РС4 и РС8.

Втората двойка сигнали (RCECin, ACECout) свързва същия автомат с автоматите на предхождащите го звена РС2 и РС7.

 

Фиг. 3.9.3.  Принципна логическа схема за връзка с предходните звена

 

Единственото нещо, което трябва да поясним, тъй като е различно в цитираното решение, се отнася до импулсите за модификация на съдържанието на брояча на заредените в тялото на цикъла задачи BCountmod(m-1). При начално зареждане на конвейера, тъй като цикълът, който е част от него, е от вида с предусловие, някои задачи е възможно да подминат цикъла и да продължават надолу към звено 8. Това ще се случва винаги, когато за задачата в звено 3 бъде изчислена стойността СЕС=1. Следователно броячът на задачи трябва да брои само фактически заредените в тялото на цикъла задачи, а това са онези, които са записани в звено 4 по сигнал W4. Като имаме предвид импулсния характер на сигналите Write, които генерират С-елементите следва, че в качеството на декрементен импулс (-1) може да бъде използван сигнал W4.

Ще поясним още, че броят на микроконвейерните звена в тялото на цикъла, който беше означен с m в предидущия раздел, включваше и изходното звено, т.е. и звеното, в което се изчислява условието за край на цикъла СЕС. Тук, в случая на цикъл с предусловие, звеното, което изчислява стойността на условието СЕС, не е включено в това количество. Стойността на m се формира само от звената, които стоят в обратната връзка на цикъла.

В резултат на обединението на горните схеми е получена пълната принципна логическа схема на конвейерния автомат PC3, която представяме на фигура 3.9.4.

 

Фиг. 3.9.4.  Пълна принципна логическа схема на конвейерния автомат

 

 

Синтез на сигналите към следващите звена

Условията за работа на автомат РС3 със следващите звена напълно съвпадат с тези на описания в предходния раздел автомат, който управлява изходното звено. В нашия случай автоматът РС3 е свързан по изходния клон “истина” с автомат РС8, а по изходния клон “лъжа”, с автомат РС4. Така заявката RCECout се разпространява като заявка Rtrue или като заявка Rfalse съответно. Сигналът потвърждение ACECin обединява сигналите Atrue и Afalse, изпращани в обратна посока от същите звена.

Всички съображения, които се отнасят за 4-фазовия протокол и логиката на процесите, изказани в предходния раздел за структурата със следусловие, са в сила и тук за структурата с предусловие, ето защо и техническото решение за тази страна на автомата е същото.

Принципната логическа схема на връзките на автомат РС3 със следващите звена е представена на фигура 3.9.5.

 

Фиг. 3.9.5.  Принципна логическа схема за връзка със следващите звена

 

 

Синтез на сигналите към предходните звена

Двойката сигнали (RCECin, ACECout), както може да се види на фигура 3.9.1, свързва автомат РС3 с предхождащите го конвейерни автомати РС2 и РС7. Анализът на тази връзка определя конвейерния автомат РС3 като автомат на звено във входна точка на цикъл. Не се откриват различия в условията за работа на автомата като такъв по сравнение с условията за работа в структурата със следусловие. Това ни дава основание да взаимстваме полученото в предходния раздел решение, което след актуализация на връзките, е представено тук на фигура 3.9.6.

 

Фиг. 3.9.6.  Принципна логическа схема за връзка с предходните звена

 

Сигналът  RCECin  е функция от заявките R2 и R7. След началното зареждане на циклическото тяло със задачи, мултиплексотър МХ за избор на заявка се управлява от условието СЕС, което е съхранено в тригер TL-CEC. До настъпване на този момент връзката на автомат РС3 е с автомат РС2. Тя се поддържа от флага EQ, който отразява съдържанието на брояча на заредените в тялото на цикъла задачи BCount. Както и при 2-фазовия автомат, и тук, в качеството на декрементираща единица се използва импулсът на сигнал W4. Така всеки път, когато при начално зареждане звено 4 приеме нова задача, тя ще бъде отброена в брояча. Появата на сигнал EQ=1 ще означава, че зареждането е завършило и връзките ще бъдат управлявани от стойността на условието СЕС. Потвърждението ACECout трябва да се изпрати в обратна посока като сигнал А2 или като сигнал А7.

И тук, както в предходния случай, импулсите за модификация на съдържанието на брояча на заредените в тялото на цикъла задачи BCountmod(m-1) не се вземат от изхода на автомата PC3. При начално зареждане на конвейера, тъй като цикълът, който е част от него, е от вида с предусловие, някои задачи е възможно да подминат цикъла и да продължават надолу към звено 8. Това ще се случва винаги, когато за задачата в звено 3 бъде изчислена стойността СЕС=1. Следователно броячът на задачи трябва да брои само фактически заредените в тялото на цикъла задачи, а това са онези, които са записани в звено 4 по сигнал W4. Като имаме предвид импулсния характер на сигналите Write, които генерират С-елементите следва, че в качеството на импулс (-1) може да бъде използван сигнал W4. След обединението на горните схеми е получена пълната принципна логическа схема на конвейерния автомат PC3, представена на фигура 3.9.7.

 

Фиг. 3.9.7.  Пълна принципна логическа схема на конвейерния автомат

 

 

3.10.  Общо разположение на циклически тела

 

Отстоявайки позицията за микроконвейерна реализация на алгоритмични структури с общ вид, ще анализираме такива с последователни цикли. Не изключваме и цикли в разклонени алгоритми или даже вложени цикли. Видът на общото взаимно разположение на такива структури е показан на фигура 3.10.1.

 

Фиг. 3.10.1.  Структури с цикли

 

В каквото и положение да се намира една циклическа структура спрямо останалите, тя е напълно самостоятелна и функционира според условието за край, което се изчислява за текущата задача в изходното за цикъла микроконвейерно звено. Дали след това в тялото ще влезе нова задача или ще се превърти по обратната връзка текущата за изходното звено задача, това зависи от стойността на условието СЕС.

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

Нека се спрем например на структура с два последователни цикъла. В тази ситуация вторият цикъл приема задачи от първия. За да приеме задача обаче, същата трябва да излиза от първия цикъл. Ако той не е готов с резултат на задача, такава няма да излиза, което означава, че вторият цикъл ще изпадне в състояние на очакване. При това тук може да се окажем в ситуация на първоначално зареждане със пакет от задачи, или пък това да е поредната влизаща в цикъла задача, ако той е от вида с неизвестен брой повторения. Интересни са ситуациите, които се образуват когато двата последователни цикъла са от вида с отнапред известен брой повторения, но броят на повторенията за всеки един от тях е различен. Тъй като в този случай задачите влизат и излизат от тялото на цикъла в пакет, то при различие в броя на степените в циклическите тела също се създават особени ситуации. Така например, ако броят на задачите, които могат да слязат в пакет от предхождащия цикъл е по-голям от броя на задачите, които следващият цикъл може да приеме, ще се окаже, че част от задачите няма да могат да слязат от конвейера на първия цикъл и ще останат в него. От това ще следват всички негативни последствия за този цикъл, който ще трябва да изчаква. В обратния случай приемащият задачи цикъл може да изпълнява повече на брой задачи, но предхождащият го цикъл не може да осигури. Така той ще трябва да се зареди с нова порция задачи и след като ги изпълни, да дозареди следващия го цикъл, който до този момент ще трябва да изчаква това допълнение. Интересна е ситуацията, при която съотношението между броя на степените в телата на двата цикъла не е кратен. В подобни ситуации, когато се нарушава ритъма или още съгласуваността между конвейерните структурни елементи, следва да се включват буферни памети. Буферните памети се явяват структурни елементи на конвейера и тяхното управление трябва да бъде асинхронно.

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

В резултат на тези кратки съждения можем да твърдим, че реализацията на конвейерни структури, като показаните примерни такива на фигура 3.10.1, не изявява нови задачи, които да са свързани със синтез на нови по вид конвейерни автомати. Увереността ни в това твърдение се дължи на това, че в тези структури не се съдържат други по вид точки, които да са различни от вече разработените. Това са точки с условни преходи, общи точки, входни точки и изходни точки. Новите проблеми, за които по-горе говорихме, са свързани с общата синхронизация на отделните структурни елементи в конвейерите. Вероятно те ще изискват синтез на специализирани и нови по същност структурни елементи, като например вмъкване и синтез на вече споменатите буферни памети, които от своя страна ще генерират нови задачи.

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

 

Заключeние

При подготовката за това изследване не бяха открити публикации, описващи подобни разработки. Работейки обаче върху проблемите на конвейерната реализация на общи по вид алгоритмични структури, не беше възможно да пропуснем циклическите. В частност многотактовите циклически структури, на които се спираме тук, не винаги могат да бъдат разгънати и така тяхната реализация не може да бъде да бъде по-проста. Ето защо това изследване е предстоящо и е актуално.

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

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

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

От друга гледна точка, получените решения създават възможност за изграждане на универсална структура. Конвейерното тяло на тази структура може лесно да бъде подменяно. Това е възможно дори в процеса на реално функциониране. Възможността структурата да бъде реконфигуруема, представлява едно изключително полезно следствие.

 

 

3.11.  Паралелни микроконвейери

 

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

 

3.11.1.  Постановка на задачите

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

A.B + C.D  .                                                        (3.11.1)

В представения израз се съдържат две операции умножение, резултатите от които се събират. Изпълнението на двете операции умножение е съвършено независимо, тъй като е между различни аргументи. Това означава, че тези операции умножение могат да бъдат изпълнени едновременно, т.е. паралелно във времето, стига да са на разположение необходимите технически средства. Дали това ще бъдат микроконвейерни звена със схемни умножители или многотактови циклически звена или пък линейни микроконвейери с разгънати цикли, това по принцип е без значение. Същественото, върху което е съсредоточено нашето внимание, е паралелната форма на организация. Тази форма налага формирането на две изчислителни нишки, чието начало и край е общо. Тези две хардуерни нишки в същност реализират естествения паралелизъм, който съдържа изразът.

Естественият паралелизъм намалява изчислителното време толкова пъти, на колкото паралелни части може да бъде декомпозиран изчислителния процес. Така например, изразът (3.11.1), както вече видяхме, може да се раздели на две паралелни изчисления (операциите умножение A.B и C.D са независими по данни). Така с основание можем да твърдим, че времето за изчисление на този израз при едновременно умножение, ще бъде 2 пъти по-малко.

Степента на паралелизъм се съдържа в самия изчислителен процес. Задачата за неговото откриване и оползотворяване е задача на конструктора. Методът, чрез който той ще може да постигне реализацията на естествения паралелизъм в степента, в която той ще реши, е изложен тук по-долу. Изложеното разбиране за хардуерна реализация на естествен паралелизъм в общия случай може да бъде илюстрирано чрез фигура 3.11.1.

 

Фиг. 3.11.1.  Естествен паралелизъм

 

При проектиране на конвейерното изчисление Конструкторът е този, който трябва да реши каква декомпозиция на зададения логически или алгебрически израз ще извърши. Единственото, което следва да спазва е в него да не съществуват или да не настъпват нови зависимости по данни. Въпросът колко паралелни клона ще предвиди – повече, но с по-малко степени, или по-малко, но с повече степени, отново зависи от него. За това той трябва добре да познава структурата на данните и поведението на междинните резултати, т.е. техните динамични формати по време на изчисленията.

Примерната структура от фигура 3.11.1 съдържа два паралелни клона с еднаква структура и еднакъв брой звена, но в общия случай тя може да има:

1.      Повече от два клона;

2.      Всеки клон да бъде с различна структура;

3.      Всеки клон да е с различен брой степени;

4.      Всеки клон може да има различна обща латентност, която може да зависи както от всички по-горе изброени признаци, така и по причина на различните данни, при еднакви останали условия.

Все пак трябва да изтъкнем същественото за тази структура, а то се състои в следното:

1.      Изчисленията във всички паралелни клонове в точката на разклонение (Fork dot) стартират в един и същи момент. За примера това са звено 2.1 и звено 3.1;

2.      Изчислението в звеното, в което се обединяват резултатите от всички паралелни клонове, стартира само когато всички клонове са получили своите резултати. За примера звеното в общата точка (Join dot) е №4, а резултати идват от звена 2.4 и 3.4.

Тъй като ние организираме изчисленията конвейерно, можем да твърдим, че между точката на разклонение Fork и общата точка Join се намират паралелно стартиращи и работещи микроконвейери, всеки от които може да има обща по вид структура. Имаме предвид, че в структурата на всеки отделен клон може да съдържа като елементи в произволен брой и комбинация от всяко едно от разгледаните тук микроконвейерни звена. Като цяло на тази част от общата структура, заключена между точката на разклонение и точката на обединение, може да се гледа като на линеен конвейер, който има толкова степени, колкото степени има най-дългия от паралелните клонове в нея. В примерната структура от фигура 3.11.1 звено с №1 може да се нарече предаващо, а звено №4 да се нарече приемащо. Въпреки, че тези две точки носят вече въведени и използвани имена, смисълът, който влагаме в тях е различен. Така например точката на разклонение прилича на точката на разклонение при условен преход, но тук условие няма, т.е. разклонението може да определим като безусловно. В много по-голяма степен общата точка прилича на общата точка, която обединява разклонения след условен преход. И все пак има разлика, която се състои в едновременното обединение, т.е. тук в следващото общо звено преминава не един резултат, а всички заедно, както се изисква от израза и неговия краен резултат. Това е така, защото изчисленията във всички паралелни клонове на този участък провеждат изчисления, свързани с една и съща задача. От казаното следва, че в тези две точки следва да бъдат поставени подходящи конвейерни автомати, които да управляват данновия трансфер между съседните звена.

 

 

3.11.2.  Конвейерен автомат в точката на разклонение

Конвейерния автомат в общата точка е автоматът, който зарежда с данни началните звена на всички паралелни клонове и ги стартира. За примерната структура от фигура 3.11.1 това е автоматът на звената 2.1 и 3.1.

На фигура 3.11.2 е представена логическата структура на конвейерен автомат в общата точка заедно със съседните конвейерни автомати и техните микроконвейерни звена.

 

Фиг. 3.11.2.  PCF - конвейерен автомат в точката на разклонение

 

Може да се види уникална ситуация, която не е срещана в разглежданите до сега конвейерни структури. Оказва се, че началните звена в разклоненията, трябва да се командват от един общ за тях автомат. В структурата той е именуван PCF (Pipeline Controller into Fork). Автоматът PCF е общ както за звено 2.1, така и за звено 3.1. Получава се така, защото всички микроконвейерни звена, стоящи в началото на всеки от клоновете, са като едно единствено звено за този автомат, с които той следва да води диалог. Това означава, че заявката Request, която той ще генерира, трябва да бъде разклонена към началните автомати в клоновете. В отговор трябва да получи един сигнал за общо потвърждение Acknowledgement, тъй като това е отговор на едновременното им стартиране. С други думи, заявката е една, тя е обща и се подава едновременно във всички клонове, които стартират едновременно и които връщат общ сигнал потвърждение за това. Така както звено 1 разклонява данновия си изход към следващите клонове, така и управлението повтаря тази структура. Преди разклоненията стои автоматът PCF, а след него, в разклоненията следват конвейерните автомати на следващите звена. Заявките R2.1 и R3.1 в примерната структура са еквивалентни на заявката RFout. Потвърждението AFin е обединение чрез Мюлер С-елемента на сигналите A2.1 и A3.1.

Принципната логическа схема на конвейерния автомат PCF в точката на разклонение, както за условията на 2-фазовия, така и за 4-фазовия трансферен протокол, е еквивалентна на обикновената. Автоматът има две двойки сигнали, означени на фигура 3.11.2 така:

§      Двойката (RFin, AFout), която осигурява диалога с предходния автомат;

§      Двойката (RFout, AFin), която осигурява диалога със следващите автомати.

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

На фигура 3.11.3 представяме логическата схема на многовходов С-елемент, входните функции на който имат следната логика

 

 

Фиг. 3.11.3.  Логическа схема на С-елемент

 

Благодарение на тази логика, стойността на функцията А е единица само когато всички потвърждения Ak получат стойност единица. В същото време, функцията В има стойност нула, само когато всички потвърждения Ak получат стойност нула. При това положение, тези крайни комбинации (111...11) или (000...00) се явяват за кратко време, с по-малка честота.

Функционалността (3.11.2) се реализира с необходимите логически елементи, а правилността на превключването на С-елемента доказва времедиаграмата от фигура 3.11.4. Преди да разгледаме времедиаграмата, трябва да отбележим, че функциите A и B във формула (3.11.2) никога не могат да имат едновременно стойностите (A=1) и (B=0), т.е. комбинацията (A=1) и (B=0) е невъзможна.

 

Фиг. 3.11.4.  Времедиаграма на многовходов С-елемент

 

На времедиаграмата се вижда, че при две входни единици С-елементът се превключва в единица, а при две нули – в нула, което в същност искахме. С това се изчерпва синтезът на конвейерния автомат на звеното в точката на разклонение.

 

 

3.11.3.  Конвейерен автомат в общата точка

Това, което знаем за общата точка е, че изчислението трябва да премине от края на разклоненията в следващото общо за тях звено, което за примерната структура (фигура 3.11.1) е №4. За целта в него трябва да бъдат заредени всички резултати, които предходните звена са получили. От казаното разбираме, че това зареждане е възможно да стане във времето само когато всички предходни звена са завършили своите изчисления.

Своята готовност звената декларират, подавайки заявка към следващото ги звено. Заявките, които ще получи звеното в общата точка на примерната структура, са две:  R2.4out и R3.4out. В общия случай, според (3.11.2), заявките ще бъдат r на брой. В отговор на приетата заявка, конвейерният автомат на звеното в общата точка връща на предходните звена потвърждение A4out. Това потвърждение трябва да бъде разклонено и доведено до всеки автомат в крайното (последното) звено на всеки отделен клон.

След така направения анализ, синтезираната за общата точка структура на конвейерен автомат е представена на фигура 3.11.5.

 

Фиг. 3.11.5.  РС4 - конвейерен автомат в общата точка

 

Както може да се види, автоматът РС4 трябва да обедини всички предходни заявки. За целта е предвидена схемата LR. Синтезът на конвейерния автомат в общата точка е затруднен в смисъла на синхронизацията. В общия случай не е известна латентността на отделните клонове. Колкото и да се старае конструкторът да уеднакви този показател, идеално еднаквата латентност в асинхронния вариант на управление не възможно да бъде постигната, тъй като тя е функция на самите данни. В резултат на едновременното стартиране на конвейерите в разклоненията, всички техни крайни звена се превключват еднакъв брой пъти и състоянията на техните автомати след всяко превключване са едни и същи. Това е много съществен извод за автомати, които използват 2-фазов протокол, тъй като в значителна степен облекчава логическия синтез на схемата LR.

Казаното означава, че логическите стойности на излизащите от крайните автомати заявки, са едни и същи, т.е. те всички са само нули или само единици. Така отпада необходимостта от съгласуване на стойностите на заявките със състоянието на следващия автомат. Остава единствено проблемът с времевата синхронизация. Този проблем се състои в това, че поради различната латентност на отделните разклонения, заявките от крайните звена на отделните клонове ще се появяват в различни моменти. За да се формира обобщената заявка към следващото звено, която в схемата от фигура 3.11.5 е означена R4in, и която трябва да генерира схемата LR, е необходимо да бъде изчакано пристигането на всички заявки. С други думи, задачата, която тук формулираме и която следва да решим, е следната: трябва да се дочака моментът, в който всички заявки ще бъдат със стойност нула или със стойност единица. Тогава тази обща стойност е стойността на сигнала R4in и трябва да бъде подадена към автомата РС4. Задачата за формиране на изходен за схемата LR сигнал при условието за всеобща еднаквост на входните стойности и поддържане на тази стойност в последствие при частично нарушена входна еднаквост, беше вече поставяна и нейното решение е изразено чрез уравнение (3.11.2) и схемата от фигура 3.11.3. Това решение беше използвано в схемата на конвейерния автомат, който управлява звеното в точката на разклонение и следователно ще може да се приложи и в този автомат.

Схемата LA е предназначена за изпращане на потвържденията към всички предходни автомати. В нашия случай, когато не се налага да се съгласува логическата стойност на сигнала със състоянието на предходния автомат излиза, че схемата LA се изражда в обща точка от тип “късо съединение”. Така всички предходни автомати в клоновете ще получат едновременно сигнала потвърждение. На фигура 3.11.6 е показана схемата на автомата в общата точка.

Всяка схема с 2-фазов или с 4-фазов трансферен протокол може да бъде използвана за реализация на автомата РС4 в схемата от фигура 3.11.6. Към нея обаче трябва да бъде добавена схемата на многовходовия С-елемент за обединяваме на входните заявки, а сигналът потвърждение ще следва да се размножи както е показано на схемата.

 

 

Заключение

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

 

Фиг. 3.11.6.  Схема на конвейерен автомат в общата точка

 

Структурата с паралелни конвейери предлага възможности за реконфигурация дори по време на функциониране. Раконфигурацията може да се изпълнява като подмяна, като изхвърляне или като добавяне на паралелни клонове. Във всички отделни случаи обаче конвейерните автомати в характерните точки трябва да имат предварително реализирани контактни точки за сигналите, които ще са необходими.

 

 

3.12.  Суперскаларен микроконвейер

 

В случай, че в структурата на един конвейер се окаже звено с голяма латентност, пропускателната способност на участъка, в който се намира това звено, силно се намалява. От това “страда” цялостният темп на функциониране на конвейера. Получава се запушване, при което, както вече пояснихме в предходни раздели, при тази ситуация звената след запушването се оказват в изходно състояние, а тези преди него – в състояние на очакване.

Ако звеното не може да бъде декомпозирано и остава в своя вид, за облекчаване на пропускателната способност в този раздел ще приложим подхода на апаратното насищане, известен под наименованието суперскаларност. Суперскаларността в случая ще разбиране като добавяне (клониране) на същото микроконвейерно звено още един, два или повече пъти във паралелни връзки.

 

 

3.12.1.  Суперскаларна структура

Ще илюстрираме разбирането за суперскаланост чрез фигура 3.12.1. На фигурата е представен участък от три степени на конвейер, в който звената са номерирани 1, 2, 3. Прието е, че звено номер 2 има голяма латентност, което е изразено чрез по-големия му размер. Разбирането за суперскаларност се изразява в дублиране (клониране) на структурния елемент с голяма латентност. Изобразеното четирикратно дублиране на звено 2 е примерно. Степента на дублиране е въпрос, който ще разгледаме по-късно.

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

 

Фиг. 3.12.1.  4-кратна суперскаларност

 

Както се вижда, в структурата се формират две характерни точки – точката на разклоняване (Fork) и точката на обединяване (Join).

Нека приемем, че в звено 2.1 е заредена задача с номер (k-1), а в звено 2.2 – следващата задача с номер k. В звено 1 се намира задача (k+1). Звено 2.1 и звено 2.2 са заети и провеждат продължителни изчисления. Ще приемем още, че останалите паралелни звена 2.3 и 2.4 са завършили своите изчисления и са предали резултатите си през звено 3 надолу в конвейера. При това положение тези две звена са в изходно състояние и могат да приемат нови задачи за изпълнение.

При завършване на изчисленията всяко от паралелните звена трябва да може да подава заявка за обслужване към конвейерния автомат на звеното в общата точка, което в случая е звено 3. Според своята готовност това звено трябва да може да работи с многото предхождащи го звена, което означава, че неговият конвейерен автомат не е линеен. Това ни заставя да формулираме първата нова и конкретна задача в този раздел – задача за синтез на конвейерен автомат в общата точка на суперскаларната структура.

От своя страна всяко от паралелните звена трябва да бъде в състояние да се стартира с нова задача, независимо от останалите паралелни на него звена. Това е възможно ако всяко едно от паралелните звена се управлява от собствен конвейерен автомат. Ако автоматът на едно свободно паралелно звено получи заявка той ще запише входните данни, а когато завърши изчисленията ще подаде заявка за обслужване към следващото звено. В този смисъл не се разкриват особености за тези автомати и приемаме, че те са обикновени линейни автомати.

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

От казаното следва, че трябва да формулираме още една нова задача – задача за синтез на конвейерен автомат, който да е в състояние да решава задачата за избор върху сигналите за потвърждение, идващи от паралелните звена и да стартира избраното звено, като записва в неговия входен регистър данните, подавани от звено 1.

 

 

3.12.2.  Конвейерен автомат в общата точка

На входа на звено 3 се обединяват данновите шини на всички разклонения. Към конвейерния автомат на това звено се подават много заявки (в примера те
са 4). В какъв ред и в кой момент ще пристигат тези заявки не може да се предвиди. Това зависи от реда, в който са стартирани паралелните звена, от данните с които работи всяко едно от тях и в крайна сметка от закъснението на самите изчисления. Казаното е достатъчно за да направим следните изводи:

1.               Условията за работа на конвейерния автомат в общата точка са аналогични на условията в общата точка на всяка друга нелинейна структура. Това означава, че поставената тук задача за синтез на конвейерен автомат, който управлява звено в общата точка на суперскаларна структура, има решението, което е представено в раздел 3.4., точка 3.4.2.

2.               Редът на резултатите, които, излизайки от паралелните звена попадат в общото звено 3, най-вероятно няма да съответства на реда, в който са стартирани задачите, на които принадлежат. Това налага идентификация на резултатите, което се постига чрез поставяне на тяхната последователност в съответствие със стартовия ред на задачите. Задачата за възстановяване на реда на резултатите беше вече формулирана. Нейното решение е представено в раздел 3.5.

 

 

3.12.3.  Конвейерен автомат в точката на разклонение

Синтезираната за конвейерния автомат в точката на разклонение логическа структура е представена на фигура 3.12.2.

 

Фиг. 3.12.2.  PCF - конвейерен автомат в точката на разклонение “Fork”

 

Вече доказахме, че паралелните конвейерни звена се управляват от собствени конвейерни автомати. Когато едно звено завърши своите изчисления, то подава заявка за обслужване към автомата в общата точка. Тези заявки са означени в структурата така: R2.xoutx е означен произволен за примера номер от 1 до 4). Когато дадена заявка х бъде приета от конвейерния автомат в общата точка, резултатите на съответното звено с номер 2.х се записват във входния регистър фиксатор на звеното в общата точка (звено 3). В отговор автоматът PC2.х получава сигнал за потвърждение със същия номер А2.хin. С това приключва данновият трансфер на звеното 2.х и то е готово за следващо стартиране. Това събитие трябва да бъде запомнено, защото звената са много. За тази цел всяко връщащо се потвърждение А2.хin се фиксира в регистър RG-Ack, който има толкова тригера, колкото е степента на суперскаларност. Всеки бит в този регистър, който е установен в единица означава, че съответното звено в паралелната структура е в състояние на очакване на заявка за трансфер на данни от звено 1. Всеки бит в този регистър, който съдържа нула означава, че съответното звено в паралелната структура или все още продължава своите изчисления, или е подало към следващото звено заявка за обслужване, която още не е приета, т.е. съответното звено не е готово за следващо стартиране.

И така, когато звено 1 завърши своите изчисления, то генерира заявката  R1outºRFin.  Тази заявка трябва да получи едно от свободните микроконвейерни звена в паралелната структура. Кое точно, това е без значение. Следователно тук възниква задачата за избор на звено измежду свободните. Задачата за избор трябва да бъде решена с появата на заявката RFin, която във 2-фазовия вариант на протокола, има два активни фронта (и преден и заден). Чрез фронт-детектор събитието за поява на нова заявка от предходното звено се фиксира на специален тригер, означен в структурата TR, който се установява в единично състояние. Единичният сигнал от правия изход на този тригер се подава в схемата за избор D-C (Daisy-Chain) в качеството на сигнал за избор (Choice). Дейзи-веригата е логическа схема, която изпълнява избор върху присъединените към нея кандидати според логиката “първия срещнат”. Избраният кандидат се поддържа на изхода на схемата D-C до отпадане на активната единица на сигнала за избор Choice. На фигура 3.12.3 е представен вариант на логическата схема на 4-входова дейзи-верига.

 

Фиг. 3.12.3.  4-входова схема за избор на свободно звено

 

Както е показано на схемата, от трите входни единици на изход излиза само най-лявата (първата срещната отляво надясно). Логическата комбинация от изхода на схемата за избор D-C се използва в качеството на код, който управлява превключването на мултиплексора MUX.

Заявката RFin трябва да бъде разпределена и насочена към избраното звено. Освен това обаче нейната стойност трябва да бъде поддържана до следващия път, тъй като до тогава вероятно ще се появяват други заявки RFin, които трябва да бъдат разпределени за други звена. Това означава, че разпределянето на заявката RFin не може да стане единствено чрез демултиплексор. Необходимо е разпределената заявка да бъде фиксирана в тригер. За тази цел в структурата е предназначен регистърът RG-R. Записващият импулс в този регистър представлява строб-импулс, който фронт детекторният импулс FD­¯ изрязва от кода за избор, доставян по шината Bus choice. Кодът за избор се получава след превключването на тригер TR и след превключването на схемата за избор, т.е. със закъснение. Ето защо за надежден запис на заявката RFin в съответния тригер на RG-R е необходимо закъснение, което означаваме DL1. Това закъснение е необходимо за изчакване на формирането на кода за избор, функция на същия фронт детекторен импулс.

Избраната заявка R2.xin, в която се превръща заявката RFin, достига конвейерния автомат РС2.х на избраното свободно звено, който се превключва и издава сигнал W2.x за запис на данни, идващи по данновата шина от звено 1. Превключилият се автомат РС2.х връща през мултиплексор МUХ сигнал потвърждение AFout, предназначен за автомат PC1. С това завършва сеансът за връзка и тригер TR трябва да бъде нулиран. Освен него трябва да бъде нулиран и съответният тригер в регистър RG-Ack, с което се заличава от списъка на свободните звена звеното, което е било стартирано в резултат на описаната процедура. Същото звено може да се регистрира в регистър RG-Ack като свободно едва когато предаде готовия си резултат през общата точка, т.е. когато отново получи потвърждението А2.хin. В структурната схема не са изобразени сигналите за нулиране на тригерите.

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

 

 

3.12.4.  Логическа схема на 2-фазов конвейерен автомат

Вече няколкократно по различни причини ни се налага да разклоняваме заявка за обслужване. Известно е, че това разклоняване е затруднено в условията на 2-фазов протокол от липсата на директно съответствие между логическите стойности на диалоговите сигнали на източника и на приемника. Това в случая се дължи преди всичко на неизвестната предистория на превключването на конвейерния автомат на приемника, който не е единствен в паралелната структура. Ето защо се налага конвертиране на логическата стойност на актуалната заявка.

На фигура 3.12.4 е представена общата част от принципната логическа схема на конвейерния автомат, управляващ суперскаларната структура. Автоматите на паралелните звена не са показани в схемата. С тях обаче са свързани изобразените сигнали R2.xin, A2.xin, както и A2.xout.

 

Фиг. 3.12.4.  Логическа схема на общата част на 2-фазов конвейерен автомат в точката на разклонение

 

Всички тригери в регистър RG-Ack са асинхронни RS-Latch тригери, които се установяват в изходно състояние чрез сигнал Reset, който не показан в схемата. Чрез строб импулсите от фронт детекторите FD­¯ по техния S вход се фиксира появата на всяко потвърждение А2.хin от автомата на звеното в общата точка – звено 3. Всеки тригер от този регистър се нулира в нужния момент индивидуално според кода за избор, който доставя шината, означена Bus choice. Входът R на тригерите в регистър RG-Ack е конюнкция от подадените в него сигнали.

Регистърът на заявките RG-R е изграден от D-Latch тригери. Кодът за избор от шината Bus Choice определя в кой тригер ще се запише нова заявка RFin. Импулсът за запис по входа С е конюнкция от кодa за избор, който разбираме като разреше-ние и строб импулса FD­¯, идващ след закъснение DL1. Стойността на заявката, която се записва и която избраният автомат трябва да получи за да се превключи, се определя от състоянието, в което бива заварен. Последното се декларира от сигнала потвърждение A2.xout, който същият автомат поддържа в този момент. Тази стойност е доставена до входа D на избрания тригер чрез шината Bus A2.xout.

Превключването на сигнала AFout като събитие се “лови” от фронт детекторните схеми за преден и заден фронт FD­¯. Краткият импулс от фронт детектора се използва за нулиране на тригер TR и съответния тригер Т2.х в регистър RG-Ack. Освен това този импулс записва в тригер ТА полагащото се потвърждение A1in, което автомат РС1 следва да получи в отговор на издадената от него заявка R1out.

Нека, като е показано на фигура 3.12.1, разгледаме звено 2.3. На времедиаграмата от фигура 3.12.5 е показан процесът на стартиране на това звено.

 

Фиг. 3.12.5.  Старт на звено 2.3 при заварено състояние 0 и 1

 

Процесът е показан от момента t0, в който звено 1 завършва своите изчисления. В този момент конвейерният автомат РС1 подава новата заявка R1out, която пристигайки в конвейерния автомат PCF, управляващ разклонението, като входна заявка RFin, следва да извърши избор и да стартира избраното звено. Предположено е, че заявката се явява в момент t0 с новата си стойност единица, т.е. R1out = RFin =1. Инверсната стойност на тази заявка се връща чрез тригер ТА като потвърждение A1in, но това става в момента, когато процесът на стартиране на избраното паралелно звено е напълно завършил. Този момент се декларира чрез фронта на превключването AFout.

Фронт детекторът FD­¯ разпознава предния фронт на заявката RFin и формираният от него кратък импулс се явява на вход S на тригер TR, в който това събитие се фиксира. Така QTR=1. Излизащата от правия изход единица (сигнал Choice) влиза в схемата D-C и реализира избора. Кодът за избор на звено 2.3, който схемата D-C формира на своя изход, означен Bus choice, е изобразен с малко закъснение (абсциса Choice), съответстващо на времето за превключване на логическите схеми. В кодовата комбинация, която за нашия пример е 0010, има само една единица. Тази комбинация създава условията за манипулиране на съответните логически възли. В регистър RG-R в случая тя подготвя тригер Т3 за запис на новата заявка R2.3in към избраното звено 2.3. Записът на стойността на заявката извършва задържаният от DL1 строб импулс. Закъснението DL1 на записващия импулс е необходимо за да се изчака превключването на всички логически елементи след появата на фронта в заявката RFin. Както вече пояснихме по-горе, стойността на заявката, която се записва, се определя от завареното състояние на 2-фазовия конвейерен автомат 2.3, представено от сигнала на потвърждението A2.3out, който той поддържа в този момент.

Поради неизвестния брой предходни превключвания на този автомат, той може да бъде заварен както в състояние нула, така и в състояние единица. Приемаме, че завареното състояние на автомат РС2.3 е нула. Това състояние се поддържа от тригер Т3 в регистъра на заявките RG-R, следователно то е нула, т.е. R2.3in=0. Тогава състоянието, в което следва да се превключи автомат РС2.3, е единица. Завареното потвърждение, което този автомат поддържа, има стойност единица, т.е. A2.3out =1. Тази стойност определя новото състояние на тригер Т3, в който се записва единица. Появата на новата стойност на потвърждението A2.3out на входа D на тригер Т3 се отлага във времето чрез закъснителния елемент DL3. Тази нова стойност следва да се появи след изчезване на импулса за запис.

След закъснение DL1 тригер Т3 записва стойността на заявката R2.3in=1. Следва превключване на автомат РС2.3 в единица. Превключването на автомата генерира импулс за запис на данни W2.3, с което в микроконвейерно звено 2.3 стартират нови изчисления. Заедно с това фронтът на върнатото през мултиплексор MUX потвърждение AFout, генерира строб импулс, който със закъснение DL4 нулира тригер TR (QTR=0). На фигура 3.12.2 може да се проследи веригата на съответните сигнали (A2.3out ® AFout ® FD­¯ ® DL4 ® RTR). С появата на строб импулса след превключването на сигнал  AFout  завършва процеса по избор и старт на паралелно звено. В регистър RG-Ack това звено незабавно се маркира като заето (тригер Т2.3 се нулира), схемата за избор минава в изходно състояние, а към автомат РС1 чрез тригер ТА се връща потвърждението A1in.

Описаният процес е представен на фигура 3.12.5 два пъти при едни и същи начални условия, когато заявката към автомата в разклонението има една и съща стойност (в случая R1out=RFin=1). В първия вариант (лявата част на времедиаграмата) завареното състояние на избрания конвейерен автомат е нула, а при втория (дясната част на времедиаграмата) – единица.

 

 

3.12.5.  Особени ситуации в точката на разклонение

Ако при поява на заявка за обслужване от микроконвейерно звено 1 (вижте фигура 3.12.2) винаги има регистрирани свободни звена в паралелната структура, процесът ще протича според времедиаграмата от фигура 3.12.5. Нищо обаче не изключва ситуацията, при която заявката от звено 1 не може да направи избор. Това може да се случи когато нито едно звено в паралелната структура не е свободно, т.е. изчисленията във всички паралелни звена все още продължават. Все пак заявката RFin се е появила и тя ще направи опит за запис в регистър RG-R. Тъй като в регистър RG-Ack няма регистрирани свободни звена, запис в този случай не следва да се прави. Този запис се забранява от сигнал EQ, възникващ като активна нула винаги и по времето, когато липсват регистрирани в регистър RG-Ack свободни звена.

Появата на заявка от звено 1 в тези условия причинява още нейното фиксиране в тригер TR, който установява на изхода си единица. Тази единица в качеството си на сигнал за избор Choice остава установена, но избор фактически няма, тъй като съдържанието на регистър RG-Ack е нулево. И така, заявка от звено 1 има, но опитът тя да бъде разпределена и предадена в суперскаларната структура пропада. Събитието е “изконсумирано” безуспешно и то не може да се повтори. Напомняме, че в това състояние сигналът EQ е блокирал възможността за запис в регистър RG-R. Изход от ситуацията е възможен едва когато някое от паралелните звена 2.x се освободи. Регистрирането на този факт в регистър RG-Ack води до превключване на сигнал EQ в единица и поява на строб импулса FD­. Освен това схемата за избор, която все още се поддържа активна от тригер TR, формира нов код за избор, който след закъснение DL2 записва в RG-R стойността на новата заявка R2.x. Така току що освободилото се паралелно звено ще бъде стартирано отново. След като приеме данните от звено 1, в обратна посока се връща потвърждението AFout., и съответно А1in. С това микроконвейерно звено 1 получава отдавна очакваното потвърждение, а схемата в общата част се възстановява – тригерите TR и Т2.х се нулират.

Нулираният тригер TR забранява записа в регистър RG-R във всички случаи, когато все още е на лице старата стойност на заявката RFin. Опит за такъв запис може да направи сигнал EQ, когато след липса на свободни звена в паралелната структура някои от тях се регистрират като свободни, но в този момент микроконвейерно звено 1 все още е заето и не е подало нова заявка. Липсата на такава се декларира от нулевото състояние на тригер TR.

 

 

3.12.6.  Логическа схема на 4-фазов конвейерен автомат

Вариантите на конвейерни автомати в общата точка и в точката на разклонение при 4-фазов трансферен протокол се синтезират като се изхожда от същата постановка. Ще припомним, че в този случай активното ниво на сигналите Req и Ack е само едно и това е единицата. От последното следва, че необходимите фронт детекторни схеми, които ще разпознават събитията, ще работят само по преден фронт.

Общата част на логическата схема на автомата в точката на разклонение съответства на представената на фигура 3.12.4. Измененията, които са получени се дължат на постоянната единична стойност на актуалните сигнали. Така например в 4-фазовия вариант не е необходимо конвертиране на актуалната стойност на заявката. И тъй като с получаване на потвърждението AFout заявката RFin се нулира, става ненужно съхраняването й. Синтезираната логическа схема на общата част на конвейерния автомат е представена на фигура 3.12.6.

 

Фиг. 3.12.6.  Логическа схема на общата част на 4-фазов конвейерен автомат в точката на разклонение

 

Пристигналата от звено 1 заявка RFin се фиксира в тригер TR. След като кодът за избор превключи демултиплексор DMUX заявката се появява като сигнал R2.x и достига избрания автомат PC2.x (фиг. 3.12.2). Той се превключва и веднага връща потвърждението A2.xout, което излиза през мултиплексор MUX като сигнал AFout. Следва възстановяване на схемата: първо се нулира тригерът Т2.3, с което току що стартираното звено 2.3 се маркира като заето, след това със закъснение DL се нулира тригер TR, с което пропада кода за избор от изхода на схемата D-C.

Ако след регистрация на заявката RFin няма избрано звено (кодът за избор е нула), схемата остава в това състояние, докато не се фиксира свободно звено. С появата на свободно звено, заявката, която автомат РС1 продължава да се поддържа в състояние единица, преодолява демултиплексора, след което процесът протича по описания начин.

Схемата на конвейерния автомат, управляващ звеното в общата точка е аналогична на синтезираната за 4-фазовия протокол в раздел 3.4, точка 3.4.4.

 

Заключение

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

И както в началото обещахме, ще се спрем на степента на дублиране на елемента в паралелната структура. Тази оценка е пряко свързана с производителността на структурата, заради която се разработва. Ако приемем, че равномерният темп на конвейера е оценен с типичното закъснение TDL, а закъснението на интересуващия ни елемент в конвейера е оценено на SDL , то степента на дублиране може да се определи чрез следната формула

При това N-кратно дублиране можем да разчитаме, че за всяка задача, която завършва изчисленията си в звено 1 (според примерната структура от фигура 3.12.1), ще има поне едно звено 2.х, което е свободно и я очаква. По този начин паралелната структура отстранява “тясното” място в конвейера.

Представените тук логически схеми и всички свързани с тях пояснения ние разглеждаме като метод за синтез на суперскаларни конвейерни структури.

 

 

3.13.  Заключителни бележки по глава 3

 

В тази глава са представени всички резултати, получени при изследване на идеята за хардуерна реализация на общи алгоритмични структури в условия на асинхронен метод за управление с конвейерна организация. Създадени са методи за синтез на линейни, нелинейни и паралелни микроконвейерни системи и са изследвани техните свойства. Обобщено могат да бъдат отчетени следните резултати:

1.                                С цел да бъде синтезирано общо и независимо от структурата на конвейерните звена управление на конвейера, е предложена обобщена интерпретация на конвейерната организация, основана на микрооперация запис в конвейерните регистри фиксатори. Положението на операционната логика спрямо регистъра фиксатор в микроконвейерното звено по смисъла на тази интерпретация е без значение. Така главната задача на конвейерния автомат е откриване на момента за запис на нови данни в регистъра фиксатор;

2.                                Установено е, че в асинхронни конвейери, които включват в структурата си еднотактови и многотактови микроконвейерни звена, трябва да използват 4-фазов конвейерен протокол за трансфер на данни. В противен случай многотактовите микроконвейерни звена трябва да бъдат комплектовани с допълнителен Latch регистър фиксатор;

3.                                Синтезирани и изследвани са две оригинални логически схеми на 4-фазови линейни конвейерни автомати. Първият използва D-Latch тригер, а втория използва D-Edge тригер. Изследвана е цялостната структура на линейни микроконвейери, комбиниращи и двата вида микроконвейерни звена. Представен е конвейерния протокол за трансфер на данни между звената;

4.                                Предложен и анализиран е конвейерен интерфейс за синхронни многотактови микроконвейерни звена. Тъй като тези звена имат собствена памет, асинхронните конвейери с такива звена не се нуждаят от допълнителни конвейерни регистри фиксатори;

5.                                Синтезиран е асинхронен конвейерен протокол за линейни асинхронни конвейери със синхронни многотактови звена и оригинална логическа схема на 4-фазов конвейерен автомат, който го реализира;

6.                                Установени са особени ситуации в линейните конвейери, които съдържат многотактови звена, породени от различните им латентности. Тези ситуации характеризират състоянието на конвейерите по време на изчисление и обясняват функционирането на конвейерния автомат;

7.                                Предложен е нелинеен конвейер с микроконвейерно звено, което генерира условие за преход и придава принципно нови възможности на конвейерите. То е стъпка в тяхното развитие, насочена към придобиване на по-голяма общност. Микроконвейерната реализация на условието за преход поражда качествено нови проблеми;

8.                                Анализът на проблемите, произтичащи от нелинейности в конвейера, позволява да бъдат изявени и формулирани четири нови научни задачи:

8.1.     Задача за синтез на конвейерен автомат за асинхронно управление на микроконвейерно звено, генериращо условие за преход;

8.2.     Задача за синтез на конвейерен автомат за асинхронно управление на микроконвейерно звено, реализиращо обща точка в разклонена алгоритмична структура, с неизвестен брой входове;

8.3.     Задача за синтез на справедлива арбитрираща процедура на микроконвейерно ниво и логическа схема за нейната реализация, както и задача за синтез на асинхронен конвейерен автомат, управляващ звено в обща точка на нелинеен конвейер;

8.4.     Задача за възстановяване на реда на слизащите от нелинеен конвейер резултати.

9.                                Решена е Задача 8.1. Синтезирани са две логическите схеми на конвейерен автомат, който управлява микроконвейерно звено, генериращо условие за преход. Автоматите са за 2- и 4-фазов протокол за даннов трансфер;

10.                            Решена е Задача 8.1 във вариант, когато е налице 3-алтернативен условен преход. Същият е възможен само при хардуерно изпълнение на операция сравнение, т.е. чрез цифров компаратор;

11.                            Решени са Задача 8.2 и Задача 8.3. Решението е постигнато чрез анализ и синтез. То включва:

10.1.   Избор на справедлива стратегия за арбитриране;

10.2.   Синтез на логически схеми на конвейерни автомати за асинхронно управление на микроконвейерно звено, генериращо условие за преход. Автоматите са за 2- и 4-фазов протокол за даннов трансфер;

10.3.   Синтез на логическа схема на многовходов асинхронен арбитър, който е инвариантен към вида на конвейерния протокол;

12.                            Решена е Задача 8.4. Решението е постигнато чрез анализ, синтез и изследване на отделните му части и включва:

11.1.   Предложен е идентификатор на зарежданите в конвейера задачи и е разработена система за текущо съхранение на идентификаторите, наречена “конвейерна сянка”;

11.2.   Установена е необходимост от буферна памет за слизащите от конвейера решения и е синтезирана нейната логическа структура;

11.3.   Синтезиран и изследван е алгоритъм за управление на конвейерната буферна памет, чрез който се възстановява реда на готовите резултати. Четенето на резултати от конвейерния буфер е винаги в правилния ред;

11.4.   Показано е, че конвейерния буфер за възстановяване на реда на изходните резултати може да се разглежда като конвейерно звено;

11.5.   Създаден е програмен модел на конвейерната система (нелинеен конвейер допълнен с конвейерен буфер), с помощта на който са проведени експериментални изследвания за функционална връзка между обема на буфера и производителността на конвейерната система. Експерименталните резултати показват, че при обем на буфера равен на броя на конвейерните звена, производителността на системата е най-висока.

13.                            Проведен е анализ на поведението на конвейерния автомат, управляващ микроконвейерното звено в обща точка на нелинейна конвейерна система, чрез който е доказано, че състоянието на очакване, в което може да изпадне арбитърната схема, не нарушава работоспособността на системата;

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

15.                            Извършен е подробен анализ на възможността за асинхронната конвейерна организация и реализация на циклически алгоритмични структури с многотактови циклически тела, които са организирани със следусловие. Формулирани и решени са следните нови задачи:

14.1.   Задача за управление на началното зареждане на конвейерното тяло на цикъла с пакет нови задачи;

14.2.   Задача за възстановяване на реда на излизащите от циклическата структура резултати. Тази задача възниква при цикли с предварително неизвестен брой повторения. Решението на тази задача е аналогично с решението на Задача 8.4., описано по-горе в точка 11;

14.3.   Задача за синтез на конвейерен автомат, който управлява микроконвейерното звено в изходната точка на цикъла. Тази задача е решена в два варианта. Синтезирани и изследвани са принципни логически схеми на автомати с 2- и 4-фазов протокол. Структурата на тези автомати е инвариантна към вида на цикъла;

14.4.   Задача за синтез на конвейерен автомат, който управлява микрокон-вейерното звено във входната точка на цикъла. Решението на тази задача съдържа решението на Задача 14.1 в лицето на двоичния брояч, контролиращ началното зареждане. Решението на поставената задача е изпълнено в два варианта: синтезирани и изследвани са принципни логически схеми на автомати с 2- и 4-фазов протокол. Структурата на тези автомати е инвариантна към вида на цикъла.

16.                            Извършен е подробен анализ на възможността за асинхронната конвейерна организация и реализация на циклически алгоритмични структури с многотактови циклически тела, които са организирани с предусловие. Установено е, че функциите на входната и изходната точка на циклическата алгоритмична структура се обединяват в конвейерния автомат на едно и също микроконвейерно звено, определено като входно-изходно. Структурата на този автомат е инвариантна към вида на цикъла;

15.1.   Синтезирана в два варианта (за двата конвейерни протокола) е принципна логическа схема на конвейерния автомат, който управлява микроконвейерното звено в обединената входно-изходна точка на циклическата структура. Принципните логически схеми на конвейерните автомати съдържат в себе си решението на Задача 14.1;

15.2.   За този вид циклическа структура е в сила Задача 14.2. Решението на тази задача е аналогично с решението на Задача 8.4., което е описано в точка 11.

17.                            Анализирани са възможни общи конвейерни структури, образувани от циклически, които са определяни като последователни, вложени и разклонени. Анализът изявява множество нови проблеми, свързани с общата съгласуваност между отделните конвейерни структурни, както и с общата синхронизация. Частичният анализ обаче е достатъчен за да се изясни, че тези проблеми се нуждаят от допълнителни изследвания, които излизат от рамките на този дисертационен труд;

18.                            Получените хардуерни решения за циклическите структури, от точки 14 и 15 са инвариантни към броя на повторенията. Конвейерната организация с такива автомати представлява единствената възможност за циклически структури от вида с неизвестен брой повторения. Възможността за реконфигурация на тези структури прави решенията многофункционални;

19.                            Предложена е паралелна конвейерна структура, която реализира естествения паралелизъм, съдържащ се в логическите и в алгебрическите изрази. Анализът на паралелната конвейерна структура води до формулиране на две нови задачи:

18.1.   Задача за синтез на конвейерен автомат, който управлява микроконвейерното звено в точката на разклонение. Синтезирана е принципна логическа схема на автомат, която може да бъде модифицирана за всеки конвейерен протокол;

18.2.   Задача за синтез на конвейерен автомат, който управлява микроконвейерното звено в точката на обединение. Синтезирана е принципна логическа схема на автомат, която може да бъде модифицирана за всеки конвейерен протокол;

18.3.   Задачи 18.1 и 18.2 са решени с помощта на синтезираната логическа схема на многовходов Мюлер С-елемент.

20.                            Предложена е суперскаларна конвейерна структура, предназначена да отстранява “тесните” места в конвейера, които съдържат конвейерно звено с голяма латентност. Анализът на поставения проблем позволи да бъдат формулирани следните нови задачи:

19.1.   Задача за синтез на конвейерен автомат, който управлява паралелните звена. Структурата на автомата включва обща и разпределена част. Разпределената част се представя от индивидуалните автомати на паралелните елементи, с които комуникира общата част. Задачата е решена в два варианта – за 2-фазов и за 4-фазов протокол;

19.2.   Задача за синтез на конвейерен автомат, който управлява звеното в общата точка на паралелната структура. Доказано е, че решението на тази задача е аналогично на решението на Задача 8.2, пояснена по-горе в този раздел;

19.3.   Задача за възстановяване на реда на слизащите от суперскаларната структура резултати. Доказано е, че решението на тази задача е аналогично с решението на Задача 8.4;

19.4.   Изведена е формула за определяне степента на дублиране на конвейерното звено в паралелната структура.

Синтезираните в глава 3 логически схеми са напълно оригинални и технически реализации с тяхно използване принадлежат на автора.