§ 7.3  Оптимизация на операционната част на микрокомандата

 

 

      Както вече беше посочено, операционната част на всяка микрокоманда съдържа логическите стойности на множеството от управляващи сигнали. Най-естественият начин за представяне на това множество в микрокомандата е, когато за всеки управляващ сигнал в операционната част се определи един разряд. В този разряд се съдържа стойността на управляващия сигнал (0 или 1), според неговата кодировка (7.1.1) и както е показано с примерите в таблиците 7.2.1.1, 7.2.1.2 и 7.2.2.1. Този начин за представяне на управляващите сигнали се нарича хоризонтално кодиране. Същността на това наименование ще стане ясна малко по-късно тук.

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

      Недостатък на това кодиране е, че прави операционната част на микрокомандата твърде голямата по дължина. Броят на управляващите сигнали в реалните устройства обикновено се движи в границите от 30 до 100, но не липсват случаи на много повече сигнали. В същото време голяма част от тези разряди съдържат неактивни управляващи сигнали. Така се стига до положението, че в областта на операционната част на микрокомандата микропрограмната памет съдържа много повече нули отколкото единици, което дава основание да се счита, че в тази си част тя се използува твърде неефективно (като непосредствен пример може да видите съответната област от микропрограмите, представени в таблиците 7.2.1.1, 7.2.1.2 и 7.2.2.1).

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

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

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

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

      Увеличаването на броя на управляващите сигнали с единица в (7.3.2) цели осигуряване на излишък в кодовите комбинации, което от своя страна дава възможност да се реализират празни микрокоманди (празни тактове).

      Методът, при който в операционната част на микрокомандата не се изобразява множеството управляващи сигнали, а неговият двоичен код, се нарича вертикално кодиране. Така се определя, че дължината на операционната част на микрокомандата е равна на дължината на кодовата комбинация. Примерно, при тридесет управляващи сигнала n=30, според зависимостта (7.3.2), за дължината на операционната част на микрокомандата се получава L=5[b], което представлява 6-кратно намаляване на дължината на полето по сравнение с необходимите 30 бита, в случай на хоризонтално кодиране. Намалената дължина на операционната част на микрокомандата води до съответното намаляване и на размерите на микропрограмната памет МПП.

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

 

Фиг. 7.3.1.  Вертикална декомпозиция на микрокомандата

 

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

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

 

Фиг. 7.3.2.  Дешифриране на управляващите сигнали при вертикално кодиране

      Ако трябва да се приложи този метод към алгоритъма от фигура 7.2.1.3, в който се използуват 8 управляващи сигнала, за операционната част на микрокомандата могат да бъдат отделени 4 разряда. Тази дължина на операционната част (ОЧ) е достатъчна за 16 комбинации, от които в дешифратора е достатъчно да бъдат реализирани само 8. Избраните при такава реализация комбинации следва да са известни на програмиста. Свободните комбинации той може да използува за реализиране на микрокоманди без управляващи сигнали, т.е. на празен такт, какъвто в посочения алгоритъм е необходим.

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

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

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

      Елементите  (pj)r  на всяко подмножество

са еднозначно свързани с точно определен управляващ сигнал  УСi. Така се получава, че всеки управляващ сигнал е кодиран от една страна чрез принадлежността си към съответното подмножество, а от друга страна и чрез поредният си номер, като елемент в него. Кодът се изразява чрез индекса за принадлежност  (j,r). Така се получава, че за да се изрази един управляващ сигнал в дадена микрокоманда, в нейната операционна част следва да се изрази индексът му за принадлежност.

      При вертикално-хоризонталният метод за кодиране, принадлежността към съответното подмножество j се кодира вертикално, а порядковият номер на елемента r, се кодира хоризонтално. Това означава, че в полето ОЧ на микрокомандата се определят две подполета - едно за изобразяване на номера на подмножеството и второ за изобразяване на елементите на подмножествата, както е показано на фигура 7.3.4.

 

Фиг. 7.3.4.  Структура на операционната част на микрокоманда при вертикално-хоризонтално кодиране

 

      Дължината L1 на първото поле се определя според зависимостта

а дължината L2 на второто поле се определя от най-обемистото подмножество:

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

(n+1)  =  m.r  =  m.L2  .                     (7.3.6)

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

(n + 1)   <   m.L2                    (7.3.7)

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

      При описаното разбиване (7.3.3) дължината на операционната част на микрокомандата се определя от сумата L1+L2=L. Ако съвсем формално се приеме, че даденото като пример в предидущите случаи множество (7.3.1) с обем n=30, е разбито на 5 равномощни подмножества, всяко от които има по 6 елемента, то според казаното до момента, за операционната част на микрокомандата с вертикално-хоризонтално кодиране на управляващите сигнали, се получава следния формат: L1=3[b], L2=6[b],  L=3+6=9[b].  Общата дължина е с 4 бита по-дълга от тази при чисто вертикалното кодиране, но е с 21 бита по-къса от тази при чисто хоризонталното кодиране. Това изразява компромисът, който правят двата основни метода при своето съчетаване в разгледания метод.

      Структурата на микрокомандата от фигура 7.3.4 позволява да се направят следните разсъждения: тъй като елементите на различните подмножества при извличането си от микропрограмната памет попадат в едно и също място - Рг.МК, то разпространението им като управляващи сигнали следва да се уточнява чрез кода за принадлежност към съответното подмножество. За целта, към изхода на регистъра на микрокомандата, трябва да се изгради схемата, показана по-долу на фигура 7.3.5.

 

Фиг. 7.3.5.  Формиране на управляващите сигнали при вертикално-хоризонтално кодиране

 

      От нея се вижда, че превръщането на елементите на подмножеството (ЕПМ) в управляващи сигнали  {УС}j ,  j=1, 2, ... , m  се постига чрез разрешаващ сигнал, формиран от съответния изход на дешифратора на кода на подмножеството - КПМ.

      Ако се обърне внимание на факта, че всички елементи на помножеството в Рг.МК са кодирани хоризонтално, което означава че присъстват едновременно, може да се направи следния извод - при разбиване на изходното множество от управляващи сигнали (7.3.1), в едно и също подмножество следва да попадат онези управляващи сигнали, които според алгоритъма за функциониране, действат в един и същи такт. Това разпределение ще им даде възможност да попаднат в една микрокоманда, с което ще се запазят скоростните възможности на микропрограмата. Освен това, максималният брой едновременно действащи управляващи сигнали (според алгоритъма), както и техните възможни комбинации с други управляващи сигнали, са една предпоставка за избор на обема r на подмножествата. Веднъж определен този обем, като следствие може да определи според (7.3.6) или (7.3.7) броя на подмножетвата m. От тези резултати следва конкретният формат на операционната част на микрокомандата показана на фигура 7.3.4, както и реализацията, показана на фигура 7.3.5.

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

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

 

Фиг. 7.3.6.  Структура на операционната част на микрокоманда при хоризонтално-вертикално кодиране

 

      Операционната част на микрокомандата е съставена от m на брой подполета и всяко от тях съдържа код на елемент (КЕ). Дължината на подполетата L1, L2, и т.н. Lm, е различна и зависи от обема на съответното подмножество. Тъй като елементите на подмножествата са кодирани вертикално, то дължините на техните кодове се определят както следва:

т.е. дължините са функция с излишък от обема на подмножествата.

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

L  =  L1+L2+    +Lm  .                        (7.3.9)

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

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

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

 

Фиг. 7.3.7.  Дешифриране на управляващите сигнали при хоризонтално-вертикално кодиране

 

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

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

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

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

където Т е периодът на тактовия генератор, а ti e необходимата продължителност на всяка микрокоманда, а  i=1,2,3,…  е поредния номер.

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

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

където  ki е коефициент за удължаване на продължителността, който представлява цяло число.

      Така всяка микрокоманда следва да съдържа своя коефициент за продължителност, който трябва да се указва в структурата й в отделно поле - поле за продължителност. Дължината на това поле се определя така:

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

 

Фиг. 7.3.8.  Микрокоманда с управлявана продължителност

 

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

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

 

 

http://www.tyanev.com/home.php?s=399&lang=bg&mid=18&mod=1&b=12