Skirtumas tarp horizontalaus ir vertikalaus mikroprogramavimo

Kompiuterio centrinio procesoriaus valdymo atminties mikrokodo rašymo procesas vadinamas mikroprogramavimu. Valdymo atminties mikrokodas sugeneruojamas nustačius kompiuterio konfigūraciją ir jo mikroprogramuotą valdymo bloką. Valdymo atmintis yra valdymo bloko dalis, kurioje saugomos visos mikro programos, kurių negalima dažnai keisti. Kiekviena mikroprogramos eilutė reiškia mikro nurodymą, nurodantį vieną ar daugiau mikro operacijų. Mikroinstrukcijos gali būti organizuojamos dviem skirtingais būdais: horizontalia ir vertikalia. Horizontalios mikro instrukcijos nurodo keletą mikro operacijų, kurios vykdomos tuo pačiu metu. Tačiau kraštutiniais atvejais kiekviena horizontali mikroinstrukcija valdo visus sistemos aparatinės įrangos išteklius. Priešingai, vertikali mikroinstrukcija primena įprastą mašininės kalbos formatą, apimantį vieną operaciją ir keletą operandų. Priešingai nei horizontalios mikro instrukcijos, vertikali mikro instrukcija reiškia pavienes mikro operacijas.

Horizontalus mikroprogramavimas

Horizontaliame mikroprogramavime kiekvienas bitas identifikuojamas konkrečiai su vienu valdymo tašku, kuris rodo, kad reikia atlikti atitinkamą mikrooperaciją. Kadangi kiekviena mikro instrukcija yra pajėgi kontroliuoti kelis išteklius vienu metu, ji turi efektyvesnio aparatinės įrangos naudojimo pranašumą ir, be to, jai reikia mažesnio mikro instrukcijų skaičiaus vienai mikroprogramai. Tai leidžia pasiekti didesnį paralelumo laipsnį su minimaliu kodavimo kiekiu ir atskirais valdymo laukais. Tačiau sukurti mikroprogramas, kurios išteklius naudoja optimaliai ar efektyviai, yra sudėtinga užduotis. Horizontalus mikroprogramavimas suteikia didelį lankstumą, nes kiekvienas valdymo blokas yra vienas nuo kito nepriklausomas. Jis yra ilgesnis, todėl paprastai jame yra daugiau informacijos nei vertikaliuose mikro nurodymuose.

Vertikalus mikroprogramavimas

Vertikalus mikroprogramavimas naudoja kintamą formatą ir aukštesnį kodavimo laipsnį, priešingai nei horizontalus mikroprogramavimas. Tai ne tik sutrumpina mikroinstrukcijos trukmę, bet ir neleidžia didėjančiai atminties talpai tiesiogiai paveikti mikroinstrukcijos ilgį. Paprastai kiekviena vertikali mikroinstrukcija reiškia vieną mikroįveikimą. Kodas naudojamas kiekvienai atliekamai mikro operacijai, o dekoderis kodą paverčia individualiais valdymo signalais. Kadangi nurodoma tik mikro operacija, kurią reikia atlikti, mikro instrukcijų laukai yra visiškai išnaudoti. Plius vertikalias mikroprogramas lengviau parašyti nei horizontalias. Vertikali mikroinstrukcija primena įprastą mašininės kalbos formatą, apimantį vieną operaciją ir keletą operandų. Todėl ją lengva naudoti mikroprogramavimui. Paprastai jis susideda iš keturių-šešių laukų, reikalaujančių maždaug 16–32 bitų vienai instrukcijai.

Skirtumas tarp horizontalaus ir vertikalaus mikroprogramavimo

Kodavimas

Vertikalus mikroprogramavimas naudoja kintamą formatą ir aukštesnį kodavimą, priešingai nei horizontalus mikroprogramavimas. Vertikaliame mikroprogramavime valdymo bitai yra užkoduojami su kiekvienu kodu, kuris naudojamas kiekvienam atliktinam veiksmui, ir komandų dekoderis dekoduoja kodą į kelis valdymo signalus. Priešingai, horizontalus mikroprogramavimas apima horizontalias mikro instrukcijas, kurios iš viso nenaudoja koduotės. Jie žymi kiekvieną valdymo bitą duomenų trasoje, priskirtą atskiru bitu mikroinstrukcijų formatu. Kiekvienas valdymo lauko bitas pridedamas prie valdymo linijos.

Seka

Horizontalusis mikroprogramavimas paprastai vykdomas nuosekliai, kad būtų galima nurodyti kitą mikroprogramą mikroprogramoje, panašų į įprastą mašininės kalbos formatą. Kiekvienas bitas yra identifikuojamas atskirai su vienu valdymo tašku, kuris rodo, kad reikia atlikti atitinkamą mikro operaciją. Tada, norint nutraukti seką, reikalingos specialios sąlyginės ir besąlyginės šakos mikro instrukcijos. Vertikaliame mikroprogramavime gali būti naudojama gana adresavimo schema, kurioje reikia kelių bitų, kad būtų galima nurodyti santykinį šuolį pirmyn arba atgal. Tam reikia apskaičiuoti adresą kiekviename žingsnyje.

Dizainas

- Vertikalios mikroprogramos turi geresnį kodo tankį, o tai naudinga kontrolinės saugyklos dydžiui. Vertikali mikroinstrukcija primena įprastą mašininės kalbos formatą, apimantį vieną operaciją ir keletą operandų. Kiekviena vertikali mikro instrukcija žymi vieną mikro operaciją, o operandai gali nurodyti duomenų šaltinį ir šaltinį. Kita vertus, horizontalios mikroprogramos paprastai reiškia keletą mikro operacijų, kurios vykdomos tuo pačiu metu. Ypatingais atvejais kiekviena horizontali mikroinstrukcija vienu metu valdo kelis aparatūros išteklius.

Lankstumas

- Horizontalios mikroprogramos suteikia geresnį lankstumą, nes kiekvienas valdymo blokas yra vienas nuo kito nepriklausomas. Jis yra ilgesnis, todėl paprastai jame yra daugiau informacijos nei vertikaliuose mikro nurodymuose. Horizontalios mikro instrukcijos, turinčios 48 ar daugiau bitų, yra gana dažnos. Horizontalios mikroprogramos turi potencialą pranašumą, nes efektyviau naudojama aparatinė įranga, o tam reikia mikroprogramų, mažesnių mikroprogramų. Kita vertus, vertikalios mikro instrukcijos yra kompaktiškesnės, tačiau mažiau lanksčios nei horizontalios. Todėl vertikalųjį požiūrį lengva naudoti atliekant mikroprogramavimą.

Horizontalus ir vertikalus mikroprogramavimas: palyginimo diagrama

Horizontaliojo ir vertikaliojo mikroprogramavimo santrauka

Priešingai nei horizontalios mikro instrukcijos, vertikali mikro instrukcija reiškia pavienes mikro operacijas. Horizontalios mikroprogramos leidžia pasiekti didesnį paralelės laipsnį su minimaliu kodavimo kiekiu ir atskirais valdymo laukais, o valdymo bitai yra užkoduoti vertikaliose mikroprogramose. Reikia atidžiai pasirinkti vieną iš dviejų metodų. Tačiau praktiškai dizaineriai naudoja horizontalių ir vertikalių mikro instrukcijų formatų derinį, kad gauta struktūra būtų kompaktiška, tačiau efektyvi.