Твърда логическа микропрограмна машина - стр
Firmware машина с твърда логика
Обикновено типът микропрограмиран автомат (MPA), който генерира управляващи сигнали, определя името на целия управляващ блок. По този начин контролен блок с твърда контролна логика включва MPA с твърда (хардуерна) логика. При създаването на такъв MPA изходните управляващи сигнали се реализират за сметка на веднъж свързани логически схеми.
Типична структура на микропрограмен автомат с твърда управляваща логика е показана на фиг. 6.6.
Първоначалната информация за CU (виж фиг. 6.2) е: съдържанието на командния регистър, флагове, тактови импулси и сигнали, идващи от управляващата шина.
Ориз. 6.6. Firmware машина с твърда логика
Кодът на операцията, съхраняван в RC, се използва за определяне коя CS и в каква последователност трябва да се формира, докато, за да се опрости логиката на управление, е желателно в CU да има отделен логически сигнал за всеки код на операция (I 0 , I 1 , . I k ). Това може да се реализира с помощта на декодер. Декодерът на операционния код преобразува кода на j-тата операция, идващ от регистъра на командите (RK) в единичен сигнал на j-тия изход.
Машинният цикъл за изпълнение на всяка инструкция се състои от няколко цикъла.Управляващите сигнали, чрез които се изпълнява всяка микрооперация, трябва да се генерират в строго определени моменти от време, следователно всички CS са "обвързани" със синхронизиращи импулси (SI), генерирани от тактовия импулсен възел. SI периодът трябва да е достатъчен, за да гарантира, че сигналите имат време да се разпространят по пътищата на данните и други вериги.Всеки SU е свързан с един от часовниковите периоди в рамките на машинния цикъл. Формирането на сигнали, маркиращи началото на следващия тактов период, се възлага на синхронизатора. Синхронизаторът съдържаброяч на цикли, който отчита SI. Часовниковият възел след завършване на следващия цикъл на работа добавя единица към съдържанието на брояча на цикъла. Към изходите на брояча е свързан тактов декодер, от който се вземат сигналите на тактовите периоди: T 1 . T n . В i-тото състояние на брояча на цикъла, т.е. по време на i-тия цикъл, декодерът на цикъла генерира единичен сигнал на своя i-ти изход. При такава организация трябва да се осигури обратна връзка в CU, с помощта на която в края на командния цикъл броячът на цикъла отново се настройва в състояние T 1 .
Допълнителен фактор, влияещ върху последователността на формиране на CS, е състоянието на информиращите сигнали (флагове), отразяващи напредъка на изчисленията, и сигналите от управляващата шина. Тази информация също се подава на входа на CU и всеки ред се разглежда тук независимо от останалите. Процесът на синтезиране на MPA верига с твърда логика се нарича структурен синтез и се разделя на следните етапи:
избор на типа логически и запаметяващи елементи;
кодиране на автоматни състояния;
синтез на комбинирана схема, която генерира изходни сигнали.
За да се определи методът за реализиране на MPA с твърда логика, е необходимо да се опише вътрешната логика на управляващия блок, който генерира изходните управляващи сигнали като булева функция на входните сигнали. Каноничният метод на структурния синтез
за MPA беше предложен от В. М. Глушков. Според този метод задачата за синтез на автомат се свежда до синтеза на комбинационна схема чрез конструиране на система от логически функции с последващото им минимизиране.
Принципът на конструиране на логически схеми за генериране на управляващи сигнали е илюстриран на фиг. 6.7. Тук е показан фрагмент от схемата, която осигурява генерирането на управляващия сигнал C до в i-тия и S-тия цикъл на изпълнение на командата скод на операция j, а сигналът C k се появява в i-тия цикъл само когато стойностите на информиращите сигнали x 1 = 1 и x 2 = 1 и винаги в S-тия цикъл.
По този начин името "твърда логика" се дължи на факта, че всяка микропрограма съответства на собствен набор от логически схеми с фиксирани връзки между тях. При прилагане на проста система от команди, MPA възлите с твърда логика са икономични и позволяват най-висока производителност от всички възможни методи за конструиране на MPA. С увеличаването на сложността на командната система обаче схемите на автоматите с твърда логика се усложняват, в резултат на което скоростта им намалява. Вторият недостатък на MPA с твърда логика е ниската редовност и следователно големите трудности при поставянето на CU от този тип върху чип с интегрална схема.
Микропрограмируема машина с програмируема логика
Фундаментално различен подход, който прави възможно преодоляването на сложността на CU с твърда логика, е предложен от британския учен М. Уилкс в началото на 50-те години [224]. Идеята се основава на факта, че за иницииране на всяка микрооперация е достатъчно да се формира съответната система за управление на съответната линия за управление, тоест да се преведе такава линия в активно състояние. Това може да бъде представено с помощта на двоичните цифри 1 (активно състояние - SS присъства) и Z (пасивно състояние - няма SR). За да се уточнят микрооперациите, които трябва да бъдат изпълнени в даден цикъл, може да се формира контролна дума, в която всеки бит съответства на една контролна линия. Такава контролна дума се нарича микроинструкция (MC). Така една микроинструкция може да бъде представена чрез контролна дума със собствена комбинация от нули и единици. Последователността от микроинструкции, които реализират определен етап от машинния цикъл, образуват микропрограма. В терминологиятана английски фърмуерът често се нарича firmware, подчертавайки факта, че е кръстоска между хардуер и софтуер. Фърмуерът за всяка VM инструкция и за всеки етап от цикъла на инструкции се поставя в специална памет, наречена фърмуерна памет (PMC). Процесът на формиране на системата за управление може да се реализира чрез последователно (с всеки тактов импулс) извличане на микрокомандите на микропрограмата от паметта и интерпретиране на съдържащата се в тях информация за управляващите сигнали.
Идеята заинтригува много дизайнери на VM, но беше неосъществима, тъй като изискваше използването на бърза памет с относително голям капацитет. Те се върнаха към него отново през 1964 г., по време на създаването на системата IBM 360. Оттогава програмируемите логически контролни устройства станаха изключително популярни и бяха вградени в много виртуални машини. В тази връзка трябва да се спомене принципът на поетапното микропрограмиране, патентован от академик В. М. Глушков, който той за първи път прилага в машината Promin.
Принципът на управление се съхранява в паметта на фърмуера
Отличителна черта на микропрограмируема машина с програмируема логика е съхраняването на микрокоманди под формата на кодове в специализирано устройство за съхранение - микропрограмна памет. Всяка CM команда в тази памет изрично съответства на микропрограма, поради което често устройствата за управление, които включват микропрограмна машина с програмируема логика, се наричат микропрограма.
където N MK е общият брой микроинструкции; N su е общият брой на генерираните управляващи сигнали.
От своя страна необходимият капацитет на паметта на фърмуера е равен на
Информация за това кои управляващи сигнали трябва да се генерират по време на изпълнение на токаМК в кодиран вид се съдържа в микрооперативната част (МО) на микрокомандата. Методът за кодиране на микрооперации до голяма степен определя сложността на хардуера на управляващото устройство и неговите скоростни характеристики. Възможностите за кодиране на управляващи сигнали, използвани в микроинструкциите, могат да бъдат сведени до три групи; минимално кодиране (хоризонтално микропрограмиране), максимално кодиране (вертикално микропрограмиране) и пакетно кодиране (смесено микропрограмиране). Структурите на микропрограмните автомати с различни начини за кодиране на микрооперации са показани на фиг. 6.9 [12, 28J.
При хоризонтално микропрограмиране (виж Фиг. 6.9, а), една цифра се разпределя за всеки управляващ сигнал в микрооперативната част на микроинструкцията ( R mo = N su ). Това ви позволява да формирате произволна комбинация от системи за управление в рамките на една микроинструкция, което осигурява максимален паралелизъм при изпълнение на микрооперациите. В допълнение, няма нужда от декодиране на MO, а изходите на регистъра на микроинструкциите могат да бъдат директно свързани към съответните контролни точки на VM. Въпреки това, широкото използване на хоризонталното микропрограмиране е възпрепятствано от високите разходи за съхранение на микрооперационни части от микроинструкции (E mo = N MK x N cy), и
Активността на използването на PMP се оказва ниска, тъй като с голям брой микрооперации във всеки отделен MC се изпълняват само една или няколко от тях, т.е. по-голямата част от MO битовете съдържат нули.
С максималното (вертикално) кодиране (вижте фиг. 6.9, b) на всяка микрооперация се присвоява специфичен код, например нейният сериен номер в пълния списък с възможни микрооперации. Този код се въвежда в MO. Микрохирургичната част на МС има минимална дължина, определена катодвоичен логаритъм на броя на управляващите сигнали (микрооперации) по формула (6.2). Такъв метод на кодиране изисква минимални хардуерни разходи в PMP за съхраняване на микроинструкции, но има нужда от DSMC декодер, който трябва да преобразува кода на микрооперацията в съответния контролен сигнал. При голям брой CS декодерът въвежда значително забавяне във времето и най-важното е, че във всеки MC се посочва само един управляващ сигнал, който инициира само една микрооперация, поради което дължината на микропрограмата и времето за нейното изпълнение се увеличават.
Последният недостатък се елиминира, когато към изходите на DSHMK е свързан енкодер (Sh) (виж фиг. 6.9, c), което води до увеличаване на броя на SU, образувани едновременно. Естествено, в допълнение към кодовете на отделните микрооперации трябва да се предоставят и кодове, които представляват определени комбинации от микрооперации. За да се увеличи гъвкавостта на енкодера, препоръчително е да се изгради на базата на устройство за съхранение.
Вариантът, показан на фиг. 6.9, c, е рационално, ако
където N D е броят на изходите на декодера. При тези условия хардуерните разходи за съхранение на микрооперативните части на MC са относително малки:
Общият използван капацитет на паметта обаче е
откъдето става ясно, че за близки N MK и N D вариантът губи смисъл.
Минималното и максималното кодиране са двете крайности на широк диапазон от възможни решения на проблема с кодирането на CS. Междинна позиция заема групово или смесено кодиране.
Тук всички управляващи сигнали (микрооперации) са разделени на K групи
В зависимост от принципа на разделяне на микрооперациите на групи се разграничават хоризонтално-вертикално и вертикално-хоризонтално кодиране.
При хоризонтално-вертикалния метод (вж.ориз. 6.9, d) всяка група включва взаимно несъвместими управляващи сигнали (микрооперации), тоест CS, които никога не се срещат заедно в една микроинструкция. В този случай сигналите, които обикновено се формират в един и същ цикъл, се появяват в различни групи. Във всяка група управляващите сигнали се кодират по максимален (вертикален) начин, а групите по минимален (хоризонтален) начин.
На всяка група Y l се разпределя отделно поле в микрооперативната част на MC, чиято обща битова дълбочина е равна на
където JV_ е броят на SS, представени от l-то поле (група).
Общият капацитет на микропрограмната памет на разглежданата опция за кодиране се определя от израза:
При вертикално-хоризонталния метод (виж фиг. 6.9, д) целият набор от контролни сигнали (микрооперации) също е разделен на няколко групи, но групата включва контролни сигнали (микрооперации), които най-често се срещат заедно в един цикъл. Полето MO е разделено на две части: MO 1 и MO 2. Хоризонтално се кодира полето MO 1, чиято дължина е равна на максималния брой управляващи сигнали (микрооперации) в групата, а полето MO 2, указващо принадлежност към определена група, се кодира вертикално. Със смяната на групата се променят и контролираните точки, в които трябва да се подават управляващи сигнали от всяка позиция МО 1. Това се постига с помощта на демултиплексори (DMP), управлявани от груповия номер код от полето МО 2.
При хоризонтални, вертикални и хоризонтално-вертикални методи за кодиране на микрооперации, всяко поле на микроинструкция има фиксирани функции, т.е. извършва се директно кодиране. При непряко кодиране едно от полетата е запазено за интерпретация на други полета. Пример за индиректно кодиране на микрооперации е вертикално-хоризонталнокодиране.
Осигуряване на последователността на изпълнение на микроинструкциите
На фиг. 6.11 показва възможното поставяне на микроинструкции в паметта на фърмуера. Съдържанието на PMP определя последователността от микрооперации, които трябва да бъдат изпълнени на всеки етап от цикъла на обучение, както и последователността от етапи. Всеки етап е представен от съответния фърмуер. Микропрограмите завършват с микроинструкция за разклоняване, която определя следващите стъпки. Контролната памет също така съдържа специален превключвател на фърмуера; в зависимост от текущия код на операцията, той определя коя стъпка за изпълнение на инструкцията трябва да бъде изпълнена.
Повечето от микроинструкциите в микропрограмата се изпълняват последователно, но като цяло редът на микрооперациите не е фиксиран. Поради тази причина е необходимо да се осигури ефективна система за осъществяване на преходите в МС. Скоковете, както безусловни, така и условни, са неразделна част от всеки фърмуер.
определен от кода на операцията на инструкцията;
и променлив формат.
Организация на паметта на фърмуера
Функционалността и структурата на микропрограмните автомати до голяма степен зависят от организацията на паметта за съхранение на микропрограми. Основните начини за организиране на микропрограмната памет могат да бъдат намалени до следните опции [3].
Всяка PMP дума съдържа една микроинструкция. Това е най-простата организация на PMP. Основният недостатък е, че във всеки цикъл на работа на MP A е необходим достъп до паметта на микропрограмата, което води до намаляване на производителността на MP A.
Една PMP дума съдържа няколко микроинструкции. В резултат на това няколко MC се четат едновременно от PMP, което прави възможно увеличаването на скоростта на CU.
Двустепенна памет (фиг. 6.19).Първото ниво е микропаметта, която съхранява микроинструкции. Второто ниво е нанопамет, съдържаща нанокоманди.