§ 3.8  Обща организация на изпълнимите операции

Common organization of executable operations

 

 

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

      Функцията представлява мултиплексиране на резултатите от множеството изпълними операции Z(k) на изхода на схемата чрез кода за идентификация Sk. На практика обаче оптимални схемни решения могат да се получат чрез прилагане единствено на методиките за проста разделителна (или не разделителна) функционална декомпозиция на логическите функции. За съжаление на ниво логически структури приложението на тези методи е крайно затруднено. Най-удачно тези методи се прилагат на ниво логически възли, при това заедно с походите за структуриране с разпределена логика или със съсредоточена логика (вижте книга [2], където последните понятия са определени).

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

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

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

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

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

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

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

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

·         Различни схеми за откриване на препълването;

·         Различни схеми за формиране на признаците на резултата;

·         Необходимите допълнителни разряди както отляво, така и отдясно на разрядната мрежа;

·         Възможност за различни схеми за закръгляне; възможност за работа както с по-дълги, така и с по-къси формати на данните;

·         Възможност за подаване на +1 в различни разряди (във връзка с получаването на допълнителен код);

·         Възможност да бъде "прозрачен" по отношение на един от входовете си;

·         Възможност да бъде нулиран (ако е натрупващ);

·         Възможност да изпълнява поразрядните логически операции;

·         и други;

което прави възела многофункционален. В резултат на това функционално обогатяване логическият възел се получава обикновено като управляем суматор (вижте книга [2]).

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

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

·         Връзки с произволна организация;

·         Връзки с магистрална организация.

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

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

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

 

Фиг. 3.8.1.  Схеми за организация на връзките

 

      При това, приемането на данни в Рг.А по управляващ сигнал УС1, може да бъде организирано например еднофазно, с предварително нулиране, по правите входове на тригерите; в същото време приемането на данни по управляващ сигнал УС2 може да бъде например парафазно, т.е. за един такт; а приемането по управляващ сигнал УС3 да бъде само в част от разрядите на регистъра. Този пример трябва да покаже, че комбинационната схема, която реализира функциите на възбуждане на входовете на всеки тригер на дадения регистър, е твърде конкретна и зависима от броя и вида на микрооперациите, назначени в дадения възел, както и от вида на тригерите, реализиращи регистъра, които също могат да бъдат различни както по структура, така и по информационни входове.

      В същото време магистралната организация на връзките за същия възел (фигура 3.8.1 – Рг.Б), въвежда ограничения спрямо вида на връзката, която е само една - еднофазна или парафазна. Функциите за възбуждане на входовете на тригера се опростяват за сметка на комплектоването на управляващите сигнали УС1, УС2 и УС3 по двойки: (УС1, УСLOAD), (УС2, УСLOAD) и (УС3, УСLOAD). По същество във втората схема управляващите сигнали УС1, УС2, УС3 са пренесени към изходите на възлите, предаващи данни, където трябва да управляват излизането на данните върху магистралата. Записът на данните, поставени в даден момент върху магистралата, в регистър Рг.Б, се осъществява чрез управляващия сигнал УСLOAD.

      Магистралната организация е свързана с проблема, наречен "късо съединение". Този проблем възниква във връзка с окъсяването на едноименните изходи на свързаните възли. Така например, линия №5 в магистралата, е общ проводник на всички изходи на тригерите №5, от свързаните регистри. За да не възниква късо съединение между тези изходи се налага да се извърши развързване. Развързването на изходите може да бъде реализирано по два начина:

·         Логически, с помощта на мултиплексор;

·         Физически, с помощта на буфери с три състояния.

      И в двата случая, за осъществяване на магистрален обмен между два възела, е необходимо едновременното издаване на управляващите сигнали от двойката (УСi, УСLOAD). За гарантиране на висока надеждност на записа обаче е препоръчително показаното на фигура 3.8.2 разположение на сигналите във времето, при което в рамките на такта могат да се различат три фази:

1. Мултиплексиране “залепване” на данните непосредствено към входовете на тригерите. В този времеви интервал данните (логическите стойности) от изходите на тригерите трябва да превключат изходните буфери и разпространявайки своя електрически потенциал по връзките, да достигнат входовете на приемащите елемент, където трябва да превключат разпределителната логика докато се установят със стабилна логическа стойност и да очакват непостредственото си записване;

2. Акт на запис. Това е времеви интервал, необходим за надежно превключване на фиксиращите (записващите) логически елементи;

3. “Отлепване” на данните. След края на записа отнемането на истинните стойности на данните от входовете на запомнящите елементи също отнема известно време, преди да се инициира следваща микроперация.

 

Фиг. 3.8.2.  Взаимно разположение на управляващите сигнали във времето

 

      Не може да се отрече влиянието и на третия критерий - бързодействието. Както е изяснено в книга [3], проектирането на една логическа структура се основава на вече синтезиран за поставения проблем алгоритъм. Именно във възможното многообразие при реализацията на този алгоритъм следва да се осъществи оптималният избор в смисъла на този критерий – бързодействие. В много от случаите, постигането на максимално бързодействие води до включване на повече възли и изграждане на произволни връзки, т.е. с известна апаратна "разточителност". Така например, ако връзките между възлите в логическата структура имат магистрална организация, това означава, че не е възможен обмен на информация паралелно във времето между различни двойки възли. Магистралната организация опростява управлението, но снижава бързодействието на алгоритмите.

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

      В резултат на изложените по-горе най-общи постановки са възможни два вида организация на операционната част на АЛУ:

·         Логическа структура с общи микрооперации ;

·         Логическа структура със собствени микрооперации .

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

 

 

Следващият раздел е:

3.8.1  Логически структури с общи микрооперации   ( Logical structures with common microoperations )