INFORMATICA 1/1984 METODOLOGIJA SNOVANJA IZVRŠILNEGA PROCESORJA ZA 32-BITNI RACUNALNIŠKI SISTEM MAKSIMILJANGERKEŠ UDK: 681.326 VISOKA TEHNIŠKA ŠOLA, VTO ELEKTROTEHNIKA, MARIBOR Članek podaja pregled postopkov snovanja, uporabljenih pri izdelavi prototipa 32-bitnega izvršilnega procesorja. ki je ses- tavni del 32°-bitnega računalniškega sistema, ki podpira kompleksno instrukcijsko množico. Izvršilni procesor je po predlaganem postopku v začetku definiran kot univerzalni trioperandni operator, ki ga postopoma razgrajujemo vvedno večje detalje. Vrednosti parametrov hrani posebna pomnilna struktura, ki je dopolnjena z delovno pomnilno strukturo in omogoča hranjenje vmesnih rezultatov zaradi interpretacije operacij, definiranih z instrukcijsko množico. Zaradi interpretacije operacij je vpeljana mikroprogramirana krmilna struktura, ki je definirana na podlagi ka- rakterističnih lastnosti mikroprogtamov. DESIGN METHODOLOGY FOR A 32-BIT EXECUTION PROCESSOR FOR A 32-BIT GOMPUTER SYSTEM: Article describes design methods used for a 32-bit execution processor prototype design. 32-bit execution proccessor is relatively high speed uni- versal operator support for a 32-bit computer system based on a complex instruction set. At the beginhing we definfe execution processor as a universal three operand operator. With stepwise refinement it is then decomposed into lower level parts. In and outcomming parameter values are written into I/O register set which is oom- pleted with working register set for holding partial results, generated with interpreted operations, defined by complex instruction set. Because of operations interpretation microprogrammed control structure is defined based qn the cliarac- teristic features of microprogramms. UVOD: Pofazdelitev operacij, pri implementaciji neke računalniš- ke arhitekture, na primerno organizirane sisteme je os- novna naloga vsakega snovanja. V preprostejših primerih' so sheme, ki definirajo povezavo takih sistemov v celoto enostavne, organlzacija sistemov pa je preprosta. Kadar pa je potrebno za implementacijo izdelati modele kom- pleksnih arhitektur, pa je takšna naloga znatno težavnej- ša. Pogosto imajo dominanten vpliv na organizacijo' take- ga modela zahteve po performansah. V našem primeru smo izdelali model organizacije izvr^- šilnega procesorja, ki izvaja operacije določene s kom- pleksno instrukcijsko množico VAX arhitekture. Global- ni tnodel sistema je namreč takšen, da predvideva delitev operacij na instrukcijski in izvršilni del. Pri tem ima in- strukcijski del sistema nalogo strežbe izvršilnemu proce- sorju, ki izvaja zahtevane operacije. Osnovna naloga in- strukcijskega procesorja (strežba) definira lastnost in- strukcijskega dela, ki je vhodno-izhodno intenziven. Med- tem pa je izvršilni del (izvajanje operacij) operacijsko (ntenziven. V nadaljevanju podajamo potek snovanja organlzacije iz- vršilnega procesorja. 1. IZHODIŠČA ZA DEFINIRANJE ORGANIZACIJE IZVRŠILNEGA PROCESORJA Organizacija izvršUnega procesorja je podrejena pospe- šenetnu izvajanju operacij, ki so določene s kompleksno instrukcijsko množico. S stališča instrukcijskega proce- sorja, je izvršilni procesor samo razmeroma zmogljiv operator, ki mu instrukcijski procesor posreduje kodo zahtevane operacije in vrednosti parametrov (operande). izvršilni procesor pa vrne rezultat zahtevane operacije. Analiza instrukcijske množice pokaže, da mora biti izvr- . šilni procesor univerzalnega tipa, da prevladujejo trl ope- randne operacije in da je potrebna interpretacija večine operacij, ki so specificirane s kompleksno instrukcijsko množico. Na podlagi opisanih lastnosti lahko definiramo začetne približke k organizaciji izvršilnega procesorja. Tako lah- ko prvi zahtevi po univerzalnosti priredimo operator uni- verzalnega tipa, trioperandni tip operacij pa ponazprimo po sliki 1.1. Oznake na sllki 1.1 pomenijo: src 1 - prvi operand src 2 - drugi operand Op - univerzalni operator dst - tretji operand (rezultat). 16 . dst — srcl.0p.src2 Slika 1.1: Začetni približek k organizaciji izvršilnega procesorja Shema na sliki 1.1 izpolnjuje samp prvi dve zahtevi iz naše specifikacije. Zahteva po interpretaciji operacij Op = {.Op. |i = 1, 2,' ..., n} namreč predpostavlja, da lahko poljubno operacijo Op iz instrukcijske množice in- terpretiramo deloma ali v celoti z operacijami iz mno- žice elementarnlh operacij E = { e. |j = 1, 2,1..., m] . Sedaj lahko shemo na sliki 1.1 dopolnimo tako, kot to podaja sllka 1.2. Slika 1.2: Dopolnjen mpdel, ki omogoča interpretacijo operacij Oznake na šliki 1.2 pomenijo: . sel - selektorska operacija, ki izbere za pperacijo ope- rand iz src k ali tmp tmp - nabor parametrov, ki omogočajo interpretacijo ' operacij iz Op. tmp ={tmp j e=l ,2,..'. ,qj S tem, dasmo operacije iz 6p hadomestili z operacija- mi iz E smo seveda predpostavili hek krmilni mehanizem, ki poskrbi, da seoperačijeiz Op interpretirajo z opera- cijami iz E. Po predpostavki lahko tedaj operacijo Op. po- nazorimo z eno ali več alternatlvnimi sekvencami, ki ses- tojijo iz operacij {e.} . . Sekvencioniranje ope- racij iz E, tako da bodo ponazorile operacije iz Op, pa je naloga krmilnega mehanizma; ki ga bomo clelinirnli kasneje. • ' Pri takšnem konceptu moramo tedaj za vsako o[X)racijo Opj, kl jo speciflcira ustrezna sekvenca sestavljena z elementl množice E, poskrbeti za selekcijo ustreznlh operacij iz E. Če takšno sekvenco ponazorimo kot niz (e.) moramo v vsaketn koraku iz množice E izbrati rav- no tisto operacljo, ki jo zahteva pripadajoči elemenf ope- racijskega niza. .. : Začetni približek za takšnp operacijo selekcije podaja slika 1.3. Slika 1.3: Začetni približek k selekciji operacij iz E Če posameznim elementom množlce E priredlmo selek- cijske kode sel i=l ,2,... ,m latiko zapišemo tudi začetno krmilno enačbo selekcijske operacije izbrana operacija = sell Ae.VseLAeA/ ... sel Ae . 1 2 2 m m kjer velja: i £ {l, 2,... ,m J , jfc^l,2,...,m}, (ViVj) — sel Asel. . Za izpplnjevanje performančnih zahtev takega operatorja, je potrebno grupiranje operacij iz E v tri osnovne skupi- ne: osnpvne aritmetične in logične pperacijej pperacije ppmika, rptacije, maskiranja in ekstrakcije; operaclje množenja. Šele tako lahko izpplnimp časovne zahteve, saj zahteva vsaka skupina operacij speclfično prganizaci- jo pripadajpčega pperatorja. Sedaj velja: E = rpt U mul U alu kjer je: rot - skupina operacij pomika, rotacije ... mul - skupina operacij mnpženja alu - skupina psnovnih aritmetičnih in logičnih operacij. Ker se lahko v sistemski časovni enptl izvede naenkrat : samo ena operacija iz izbrane skupine operacij lahko tnodel krmiljenja že nekoliko dopolnimo po sliki 1.4. Oznake na slikl poinenijo: . r {Tj |i= I, 2,...,-o\ = rot (in^l k = l,2,...,qj = tnul {at I 1= 1,2 P} =alu. 16 • SHka 1.4: Podrobnejša krmilna shema za izbiro operacije Glede nasliko 1.4 lahko prilagodimo tudi krmilno enačbo, saj smo vpeljali dva nivoja selekcije. Izbrana skupina operacij = sel 1. sk.ArotV Vsel 2. sk. AmulVsel. 3. sk.Aalu sel i. sk. - izbira skupine operacij izbrana operacija 1. sk. = sel 1 Ar V sel 2Ar V .... ... Vsel oAr o izbrana operacija 2. sk. = sel lArn1Vsel 2Am V ... ... Vsel v + t 4 sel - mul alu — rot [ m ikroins trukci j a izbrana operacija 3. sk. = sel 1 Aa^V/ sel 2Aa V ... ... Vsel pAa V celoti pa velja: izbrana operacija = sel 1. sk. A(sellAr V ... ... VseloAr ) o sel 2.sk.A(sell m V---Vsel qAm ) sel 3.sk.A(sellAa V...VselpAa ) 1 p Omenimo, da lahko takšno enačbo realiziramo z bralni- mi potnnilniki. Tako definirana krmilna enačba ima tudi zanimivo lastnost s stališča mikroprogramske realizaci- je. V mikroinstrukcijo lahko namreč vpeljemo vertikalno funkcionalnost polj po sliki 1.5. S tem smo tudi utemeljili enakost selekcijskih kod sel v operacijskih skupinah alu, mul, rot. Čeprav razgradnja modela s tem še rii zaključena, smo Slika 1.5: Zgradba polja mikroinstrukcije osnovne karakteristike snovanja univerzalnega operator- ja že zajeli. 2. DEFINICIJA INTERNE POMNILNE STRUKTURE IZVRŠILNEGA PROCESORJA Za izpeljavo interne pomnilne strukture izvršilnega pro- cesorja vzamemo model izvršilnega procesorja, kt ga pbdaja slika 2.1. Pomen oznak je: M, R - pomnilna struktura v katero vpisuje operande instrukcijski procesor W - pomnilna struktura v katero vpisuje rezultate izvršilni procesor Čeprav je shema pomnilne strukture na vldez nepregled- na, laliko krmilni sistem zelo jasno definiramo. Triope- randni tip operacij namreč zahteva v enem strojnem ci- klu tri adrese operandov ln sicer v začetku strojnega cikla čitanje do dveh lzvornih operandov in ob koncu strojnega cikla destinacijsko adreso rezultata. Tako lah- ko pomnilni strukturi priredimo trladresnl pomnilnlk iz katerega lahko hkrati beremo do clva operanda, vanj pa vpišemo en operand. Operacije pomnilne strukture defi- 17 Slika 2.1: Organizacija izvršilnega procesorja niramo takole: read"A, read B = R read A read B = R AB R D write B = B Ker se čitanje in vpis časovno ne prekrivata, lahkp pre- ko adresne strukture B krmilimo čitanje in vpis opera- clj. kar nekoliko poenostavi strukturo pomnllnika. Po- mnilno strukturo lahko tedaj ponazorimo kot n zapored- nih lokacij. določenih z adresami. Nad vsako lokacijo lahko izvedemo operacijo čitanja ali vpisa. Zgoraj defiT riiramo množico operacij nad lokacijami .pomnilnika oz- načimo s Pp. Slika 2.2 podaja tedaj predlagano krmilno shemo interne pomnilne strukture. Krmilni enačbi A in B strani se glasita: Operacija A = sel 1AR Vsel 2ARAV ...Vsel nAR. A A A = R A (sel lVsel 2V ...Vsel n) A Operacija B = sei 1 A(RnVW )v sel 2A(RDV W )V ... ...Vsel nA(RBV«B) = (RoVWn)A(sel lVsel 2V...Vseln). Ker imamo opravka s tremi strukturami M, R, tmp, W definiramo nad vsako strukturo naslednje operacije: W-WQ. ... Da preprečimo hkraten vpis in čitanje postavimo: WE - odobreno čitanje, WE - odobren vpis. Sedaj lahko krmilni enačbi zapišemo določneje: operacija A = WEA sel M,R A(sellVsel2V ... Vsel p) VWEAsel tmpAA(sellVsel2V... Vsel q) operacija B = VEAsel M, R A(sellVsel2V ...Vsel p) VVEAsel tmpDA(sellVsel2V... Vsel q) sel tmpn A(sellVsel2V...Vsel q) D Slika 2.2: Krmilna struktura pomnUnika - VWEAsel WriA(sellVael2V ... Vsel r) B Slika 2.3 podaja tako definirano krmilno štrukturo pom- nilnika izvršilnega procesorja. Organizacijo interne pomnilne strukture podaja slika 2.4, tako kot jo vidi izvršilni procesor. Razgradnja interne pomnilne strukture izvršilnega proce- sorja s tem še ni žaključena, vendar pa že dosedanji po- stopek dovolj dobro ilustrira potek snovanja. 3. ORGANIZACIJA KRMILNE ENOTE IZVRŠILNEGA PfiOCESORJA Organizacijo krmllne enote izvršilnega procesorja dolo- čimo s pomočjo analize lastnosti diagramov poteka, ki opisujejo operacije, speciftcirane z instrukcijsko množi- co. Diagrami poteka predstavljajo mikroprograme zapl- sane na registerskem nivoju v meta jezlku. Osnovna zna- čilnost mikroprogramov je velika razvejanost. Zaradl ča- sovnih zahtev je potrebno vejitve na eno izmed več mož- nih paralelnih vej izvesti v enetn strojnem ciklu. Naslednja značilnost je, da se identične skupine'mikro- operacij pogosto ponavljajo v mikroprogramih sicer raz- licnlh instrukcij, kar omogoča definiranje prifnernih ma- kroukazov ali podprogramov. Operacije v zankah so si- cer v našem primeru rnanj pogoste, vendar se zaradi ča- 18 WE WE WE Slika 2.3: Krmilna struktura pomnilnika izvršilnega procesorja vhod B izhod A izhod B Slika 2.4: Organizacija interne pomnilne strukture izvršilnega procesorja sovnih zahtev izkaže smotrna realizacija zančnega meha- nlzma, ki omogoča tudi vgnezditev zanke. Zaradi razvejanosti mikroprogramov tedaj adresa nasled- nje mikrolnstrukcije v splošnem ni enollčno določena. Zato si prizadevamo mikroprogramskt pomnllnik otganl- zirati tako, da bi bilo možno vnaprej prebrati vse mikro- instrukcije, ki so možne naslednice mikroinstrukcije v izvajanju. Prvidel naloge torej zahteva, da vsaki mlkroinstrukciji v izvajanju določimo množlco možnih naslednjih mikro- instrukcij. Drugi del naloge pa zahteva. da na podlagl statusov, ki se postavljo med izvajanjem tekože mlkro- instrukcije, izvedemo selekcijo izbrane mlkroinstrukci- je iz prebrane množice mikroinstrukcij. Takšno nalogo je možno rešiti s prtmernim asoclativnim pomnilnlkom. V našem primeru smo ugotovili, da imajo vejitve na do štiri možne veje mnogo višjo frekvenco, kot vejitvo na več kot štiri možne veje. Zato se odločimo, da vejitve na do štiri možne veje realiziramo s paralelnim branjem 19 štirih mlkroinstrukcij, vejitve na več kot štiri veje pa klasično z modificiranjem naslednje adrese mikroinstruk- . cije z ALI funkcljo, vendar samo do štiri mikroinstruk- cije natančno. Dokončna selekcija se opravi enako kot v primeru vejitve na eno izmed štirih možnih vej. Izhodiščno krmilno shemp mikroprogramirane krmilne enote podaja sllka 3.1. Slika 3.1: Izhodiščni model rnikroprogramirahe krmilne enote Začetna predpostavka je, da je mikroprogramov toliko, kot je operacij v množici operacij Op. Na podlagi slike 3.1 lahko zapišemo enačbo za izbiro nikroprograma glede na z.ahtevano operacijo Op . Izbira M = sell AM Vsel2 AM V ... sel i AM.V ..-Vsel nAM l . n Pravila, po katerlh t^če izbira mikroprogramov za Izva- janje, so seveda določena na nivoju instrukcijske množi- ce. Model, s katerim lahko ponazorlmo tako operacijo, ]e pomnilnik, razdeljen.na podmnožice lokaclj, kjer je na vsaki podmnožlci lokacij zapisan mikroprogram. Model krmiljenja izbranega mikroprograma M (selekci- jo mikroinstrukcij) laliko ponazorimo po sliki 3.2. Slika 3.2: Izbira mikrolnstrukcij v mikroprogramu Pravila, po katerih se izbirajo mikroinstrukcije, določi- mo sami. * Krmilna enačba za sliko 3.2 se glasi: izbira m = sel lAm.V sel 2 A m2V • • • '• sel i Am.V .. .V sel t Am . Doslej razvit krmilni model mikroprogramske krmilne enote podaja slika 3.3. Za izbiro m ikroinstrukcij znotraj mikroprograma izbere- mo princlp "next" polja v mikroinstrukclji. Iz slike 3.3 lahko razberemo zanimivo lastnost takega načina izblre naslednje mikroinstrukcije. Z izbiro mikroprograma M omejimo gibanje kazalca, ki izbira mikroinstrukcije na razmeroma omejeno področje lokacij mikroprogramske- ga pomnilnika. Iz tega pa sledi, da je lahko velikost "next" polja znatno krajša od dolžine celotnega adresnega prostora mikroprogramskega pomnilnika. Pri tem je zna- čilna naslednja lastnost takega pristopa: za izbiro mikro- programa lahko updrabimo identični rnehanizem, kot ve- lja za vejitvfeni krmilnik na nižjem abstraktnem nivoju (nivo mikroinstrukcij v izbranem mikroprogramu). Mehanizem razvijemo v poslošeni obliki. Adreso ponazorimo kot binarni vektor: A= * Glede na izhodlščne predpostavke tega razdelka opisani . postopek tvorbe adrese za vejitveni krmilnik v našem pri- meru nekoliko dopolnimo. Bazna adresa ima v našem pri- meru naslednjo obliko: BA= . Izbiro mikroinstrukcije, do štiri mikroinstrukcije natan- čno podaja prvi pomik: 1PA =<0, 0, ..., 0, a5, a4, a^, a^, 0, 0> , 20 Slika 3.3: Model mlkroprogramske krmilne enote izvršilnega procesorja dokončno izbiro mlkroinstrukctje pa določa drugi pomik (izbira ene izmed štirih pomnilnih niatrik) : 2PA= <0, 0 0, Bj, aQ> . Izvedbo tako zasnovane mikroprogramske krmilne enote podaja slika 3.4. Slika 3.4: Organizacija mlkroprogramske krrnilne enote lzvršilnega procesorja Oznake na sliki 3.4 pomenijo: S - sekvencer adres mlkroinstrukclj OU - AU funkcija M - mikroprogramski pomiiHniki sel - operacija selekcije I5 - prekrivalni register Op - univorzalni operator V - krmilnik vejitev Kazgrarinja mikroprogramske krinilne enote s tem še ni zaključena, podane pa so osnovne karakteristike xa naš primer. 4. SEUJKTORSKA OPEHACUA Healizacija selekcijske operactje: sel (sel . koda): sel 1 —- operacija 1 (mikroprogram 1, mlkroinstriik- cija 1, ... ) sol2 —- operacija 2 ( ) selri —- operacija n ( ) izvedemo s |x>rnočjo izraza: . izbira = sel I Am y sel2 Ani^v ... yseln Am V ssgornjein izrazu je: mi- binarni voktor, kjor je: Uj6 {0, 1} . sel. kada je preslikava dofinirana takole: sel. koda: sel. —• 21 sel.koda: kjer je: in Selekcijsko kodo pdgosto zapišemo kot logični produkt ele- mentov s pb zahtevi, da je lahko pravilen en sam produkt v selektorski operaciji. ' • .« Zgled: ; • ... • :-. . • ; ''; '/ •,. .'• -. /' ' Izbiro mikroinstrukcije rn. v rnikroprogramu M. izveileino takole: •. • \ ••.-, ': . . . . sel. koda = 1 za mtkroinstrukcijo m.. Za vse ostale mikroinstrukcije iz M. - { m } ima selek- cijska koda vrednost 0. Tedaj lahko zapišemo: izbraria m. = 0 Am. V 0Am;v • • • V 1A m.v • • • VOAm izbrana m. - \/\m. '••-'. '". '. ' izbrana m. = m. : . • ' l i • . . . • • • • Izbranaml" ^a-Vl'•>;'-Ul'Uo>i'" ',' 5. ZAKLJUČEK . . . • Postopek navzdolnjega snovanja je ilustriran na primeru implementacije izvršilnega procesorja, ki izvaja opera- cije določene s koinpleksno instrukcijsko množico. Za po- nazorltev rezultatov so upoi-abljeni usmerjeni grafi in matematična logika. . i • ' Izhodiščni približek je bil, da lahko model procesorja specificiramo s-selektorsko operacijo, ki ma toliko vej, kot je instrukcij. Vsaka veja takp realizira eno izrned operacij specificiranili s kompleksno inštrukcijsko mno- žico. • . . . . Zaradi interpretacije teh operacij z bolj elementarnimi. operacijami, smo blli prisiljeni definirati lokalne para- metre, katerih vrednosti hrani delovni pomnilnik. Posle- dica interpretacije je tudi mikroprogramska krmilna eno- ta, ki je za programerja na nivoju kompleksne instr.ukcij- skemnožice nevidna. Ilustriran postopek snovanja je bil uporabljen pri izdelavl modela za celotni 32-bitni računalniški sistetn, ki izvaja kompleksno instrukcijsko množico. Osnovna prednost predlaganega postopka snovanja so mno- go krajši časi snovanja, pregledna struktura sistema in vecja zanesljivost realizacije, saj je nevamost neodkritih napak mnogo manjša kbt pri klasičnih postopkih snovanja. 6. LITEKATURA " 1. M. Gerkeš, M. Družovec, M. Pernek: Aplikacija bipolarnega mikroprocesorja, poročilo o delu za le- to 1983, raziskovalna naloga št. 03-2570/796r83, Visoka tehniška šola, VTO Elektrotehnika, Maribor 1983. •. ; 2. S. P. Kartashev, S. I. Kartashev, eds.: Designing and Programming Moderri Computers and Systems, Vol. 1 LSI Modular Computer Systems, Prentice- -Hall, Inc, Englewood Cliffs, N. J., 1982 .3. J.K.Iliffe: Advanced Computer Design, Prentice-Hall International, Inc., London, 1982