23
5. NÁVRH RIADIACICH JEDNOTIEK A. Štruktúrna syntéza riadiaceho synchrónneho sekvenčného obvodu B. Koncepcia mikroprogramovej riadiacej jednotky C. Všeobecný typ mikropríkazu D. Formáty mikroinštrukcií E. Metodika návrhu aplikačno-špecifickej sekvenčnej jednotky SEKV pre MPRJ F. Spôsoby kódovania poľa riadiacich signálov G. Univerzálme sekvenčné adresovacie jednotky H. Zostavenie mikrokódu - strojovej verzie mikroprogramu

5. NÁVRH RIADIACICH JEDNOTIEK - fiit.stuba.skjelemenska/NCS/SLIDE9web.pdf · Stav RJ je vektor (,...,) CLK je synchronizačná, hodinová premenná, časovacia

  • Upload
    lytuyen

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

5. NÁVRH RIADIACICH JEDNOTIEK A. Štruktúrna syntéza riadiaceho synchrónneho sekvenčného obvodu B. Koncepcia mikroprogramovej riadiacej jednotky C. Všeobecný typ mikropríkazu D. Formáty mikroinštrukcií E. Metodika návrhu aplikačno-špecifickej sekvenčnej jednotky SEKV pre MPRJ F. Spôsoby kódovania poľa riadiacich signálov G. Univerzálme sekvenčné adresovacie jednotky H. Zostavenie mikrokódu - strojovej verzie mikroprogramu

A. Štruktúrna syntéza riadiaceho synchrónneho sekvenčného obvodu Riadiacu jednotku (časť) systému možno navrhnúť ako sekvenčný obvod, najčastejšie ako synchrónny. Hoci je našim cieľom syntéza digitálneho systému na úrovni RT, pre úplnosť poukážeme aj na syntézu logiky RJ. Vnútorný kód priraďujúci stavom kódové boolovské vektory (t.j. vektory boolovských hodnôt zvolených stavových premenných), možno zvoliť a pri syntéze obvodu postupovať tak, ako sa to rieši pri návrhu na úrovni logiky. V CAD programoch pre syntézu sekvenčných obvodov (napr. v SIS z UCB - University of California, Berkeley) sa nachádzajú programy pre zostavenie optimálneho kódu stavov a minimalizáciu logických výrazov budiacich a výstupných funkcii obvodu (programom Espresso z UCB). Vychádzame zo známej základnej štruktúry synchrónneho sekvenčného obvodu: KL je kombinačný logický obvod, kombinačná logika Xi, Yj sú vstupy, resp. výstupy Z1,...,Zk sú stavové premenné riadiacej jednotky. Stav RJ je vektor (<Z1>,...,<Zk>) CLK je synchronizačná, hodinová premenná, časovacia udalosť up(CLK=1) D1,...,Dk sú budiace premenné - vstupy preklápacích obvodov V štruktúre môžu byť ľubovoľné preklápacie obvody, napr. aj JK a T typy.

Pri syntéze riadiacej jednotky (sekvenčného obvodu) vychádzame zo špecifikácie RJ. Z tejto špecifikácie extrahujeme prechodovú a výstupnú funkciu FSM a postupujeme známym spôsobom. Pri syntéze logiky sa možno stretnúť so špeciálnymi vnútornými kódmi ako je unitárny a semi-unitárny kód. PRÍKLAD 1: Navrhneme logiku RJ systému VSYS, ktorého štruktúru operačnej časti sme už zostavili v kap.4. Vstupy a výstupy - rozhranie RČ s OČ a s okolím:

Špecifikácia RJ: system RJ-VSYS(TC1, TCP, Tq, Ts, TH, TqS, TqH,ThS,ThH) PORTY vstup IV = (RD,CO,ACK,p) boolovský vektor; // p=1 <=> (I/=0) CLK boolovská hodnota; // hodiny výstup OV = (RI.LD,RI.R,RDO.LD,RDO.R,MEM.R/W,S1,R1,S2,R2,S3,R3) booleovský vektor; OPER STAV stav symbol ∈ { L0,L1,L3,L4,L5,L6,L7,L8,L10,C1,C2,C3,C5 }; proces RiadPr = [RiadCyklus]ω agent RiadCyklus (TC1, TCP, Tq, Ts, TH, TqS, TqH, ThS, ThH) TE es, ef → up(CLK=1); CS (IV=v ; es; u)(u; ef; OV=h); vs pre prípad "(stav,v)" h je L0, RD=1 RDO.R=RI.R=R1=R2=R3=1; L0, CO=1 RDO.R=RI.R=R1=R2=R3=1; L0, RD=0 and C0=0 u; L1, ACK=0 S1=1; L1, ACK=1 u; L3, ACK=1 u; L3, ACK=0 S1=1; L4, u, u; L5, ACK=1 R1=1; L5, ACK=0 u; L6, u MEM.R/W=0; L7, u RI.LD=1; L8, p=1 and ACK=0 S1=1;

L8, p=1 and ACK=1 u; L8, p=0 S3=1; L10 u u; C1, u RDO.LD=1, MEM.R/W=1; C2, u RI.LD=1; C3, p=1 RDO.LD=1, MEM.R/W=1; C3, p=0 S2=1; C5, u u; g stav := pre prípad "(stav,v)" je L0, RD=1 L1; L0, CO=1 C1; L0, RD=0 and C0=0 L0; L1, ACK=0 L4; L1, ACK=1 L3; L3, ACK=1 L3; L3, ACK=0 L4; L4, u L5; L5, ACK=1 L6; L5, ACK=0 L5; L6, u L7; L7, u L8; L8, p=1 and ACK=0 L4; L8 p=1 and ACK=1 L3; L8, p=0 L10; L10, u L0; C1, u C2; C2, u C3;

C3, p=1 C2; C3, p=0 C5; C5, u L0; TR aft (up(CLK=1), dw(CLK=1), TC1); FA i>=1: aft (up(CLK=1,i), up(CLK=1,i+1), TCP); afto (up(OV=h), ef, 0); FA q = symbol: bef(ef,up(stav = q), Tq); stabi (IV, up(CK=1),Ts, TH); FA q =symbol: stabi (stav=q, ef,TqS, TqH); FA h= boolovský vektor: stabi (OV=h, ef,ThS, ThH); START RiadPr ez; restr RD nand CO; RR => not (RD); CR => not (CO); CO => RR; Zo špecifikácie RČ extrahujeme prechodovú a výstupnú funkciu FSM, ktorý zodpovedá danej špecifikácii. Tento FSM možno v danom prípade priamo získať z toku riadenia a z priradenia riadiacich signálov agentom v globálnom procese PS napr. v tvare programovej schémy.

Globálny proces obmedzenia zo šta L0: EA / (RD and (

(CO and (not((RD nor CO)

L1: Reset / L2; L2: ACK:L3, L4; L3: EA / L2; L4: SetReq / L5; L5: EA / ACK:L6,LL6: ResReq / L7; L7: WriteM / L8; L8: InkrI / L9; L9: (I/=0) and (ACK (I/=0) and (AC (I=0): L10; L10: SetRR / L0; C1: Reset / C2; C2: Add / C3; C3: InkrI / C4; C4: (I/=0):C2, C5; C5: SetCR / L0 ;

Ps zapírtovacieh

not CO) RD) and and (RD

5;

=0): L4K=1): L

saný formou programovej schémy, v ktorom sú zahrnuté aj o mechanizmu špecifikácie (restr) vyzerá takto:

and (not RR)): L1, (not CR) and RR): C1, or RR) and (CO or (not RR))) : L0;

Na návestiach L2, L9 a C4 sa nachádzajúbezoperačné rozvetvenia, ktoré saneinterpretujú ako riadiace stavy. Spôsobriešenia prechodov pri bezoperačnýchrozvetveniach ilustrujeme na prechode zostavu L1 do stavov L3 a L4, kde saobchádza – vypúšťa návestie L2. ,

3,

ACK -ACK

L4 SetReq

L3 EA

L1 Reset

Prechodová tabuľka FSM zapísaného tu ako Moorov typ je: stav vstupný vektor nasl.stav výstupný vektor

L0 RD and (notCO) and (notRR) L1 u L0 CO and (notRD) and (notCR) and RR C1 L0 Cond(L0-L0) */ L0 L1 ACK=0 L4 RDO.R=RI.R=R1=R2=R3=1L1 ACK=1 L3 L3 ACK=1 L3 u L3 ACK=0 L4L4 u L5 S1=1L5 ACK=1 L6 u L5 ACK=0 L5L6 u L7 R1=1 L7 u L8 MEM.R/W=0 L8 p=1 and ACK=0 L4 RI.LD=1 L8 p=1 and ACK=1 L3 L8 p=0 L10

L10 u L0 S3=1C1 u C2 RDO.R=RI.R=R1=R2=R3=1C2 u C3 RDO.LD=1, MEM.R/W=1C3 p=1 C2 RI.LD=1C3 p=0 C5C5 u L0 S2=1

*/Cond(L0-L0) = (RD nor CO) and (RD or RR) and (CO or (not(RR))) Neskoršie pri optimalizácií (v kap.6) ukážeme, že stavy L6, L7 a L8 sú zlučiteľné a možno ich nahradiť jedným stavom L8 s výstupným vektorom R1=1, MEM.R/W=0, RI.LD=1

Prechodová tabuľka minimalizovaného Moorovho FSM RJ VSYS je: Stav Vstupný vektor Nasl.stav výstupný vektor L0 RD and (notCO) and (notRR) L1 u L0 CO and (notRD) and (notCR) and RR C1 L0 Cond(L0-L0) */ L0

Z1 L1 ACK=0 L4 RDO.R=RI.R=R1=R2=R3=1 L1 ACK=1 L3

Z2 L3 ACK=1 L3 u L3 ACK=0 L4

Z3 L4 u L5 S1=1Z4 L5 ACK=1 L8 u

L5 ACK=0 L5Z5 L8 p=1 and ACK=0 L4 R1=1, RI.LD=1, MEM.R/W=0

L8 p=1 and ACK=1 L3 L8 p=0 L10

Z6 L10 u L0 S3=1Z7 C1 u C2 RDO.R=RI.R=R1=R2=R3=1Z8 C2 u C3 RDO.LD=1, MEM.R/W=1Z9 C3 p=1 C2 RI.LD=1

C3 p=0 C5Z10 C5 u L0 S2=1*/Cond(L0-L0) = (RD nor CO) and (RD or RR) and (CO or (not(RR)))

V danom príklade použijeme štruktúru sekvenčného obvodu s preklápacími obvodmi typu D a použijeme semi-unitárny kód s 10 stavovými premennými Z1,...,Z10 (pozri tab. dole) a známym spôsobom odvodíme priamo boolovské výrazy pre budiace a výstupné funkcie kombinačnej časti príslušného sekvenčného obvodu. Použijeme druhú, minimalizovanú prechodovú tabuľku. Z1Z2Z3Z4Z5Z6Z7Z8Z9Z10

Princíp zostavenia výrazov budiacich fcií

ACK

ACK

L8, Z5L3, Z2

L1, Z1

L3, Z2D2

ACK.p Z2 L3

L0 0 0 0 0 0 0 0 0 0 0 L1 1 0 0 0 0 0 0 0 0 0 L3 0 1 0 0 0 0 0 0 0 0 L4 0 0 1 0 0 0 0 0 0 0 L5 0 0 0 1 0 0 0 0 0 0 L8 0 0 0 0 1 0 0 0 0 0 L10 0 0 0 0 0 1 0 0 0 0 C1 0 0 0 0 0 0 1 0 0 0 C2 0 0 0 0 0 0 0 1 0 0 C3 0 0 0 0 0 0 0 0 1 0 C5 0 0 0 0 0 0 0 0 0 1 D2 = (Z1+ Z2+ Z5.p).ACK Budiace funkcie: D1 = -Z1.-Z2....-Z10. RD. -CO . -RR (Cond D1 na obr. obvodu značí –CO. –RR) D2 = (Z1+ Z2+ Z5.p).ACK D3 = (Z1+ Z2+ Z5.p).-ACK D4 = Z3 + Z4.-ACK D5 = Z4.ACK D6 = Z5.-p

D7 = -Z1.-Z2....-Z10.CO. -RD. -CR. RR (Cond D7 na obr. obvodu značí –RD.–CR.RR) D8 = Z7+ Z9.p D9 = Z8 D10 = Z9.-p

Výstupné funkcie: C3, Z9..,.RI.LD,..…

L8, Z5 RI.LD

RI.LD = Z5+ Z9 S3 = Z6 RI.R = Z1+ Z7 S1 = Z3 RDO.LD = Z8 R1 = Z1+ Z5+ Z7 RDO.R = Z1+ Z7 S2 = Z10 RI.LD = Z5+ Z9 MEM.R/W = Z8 R2 = Z1+ Z7 R3 = Z1+ Z7

Stav Vstupný vektor Nasl.stav výstupný vektor L0 RD and (notCO) and (notRR) L1 u L0 CO and (notRD) and (notCR) and RR C1 L0 Cond(L0-L0) */ L0

Z1 L1 ACK=0 L4 RDO.R=RI.R=R1=R2=R3=1 L1 ACK=1 L3

Z2 L3 ACK=1 L3 u L3 ACK=0 L4

Z3 L4 u L5 S1=1Z4 L5 ACK=1 L8 u

L5 ACK=0 L5Z5 L8 p=1 and ACK=0 L4 R1=1, RI.LD=1, MEM.R/W=0

L8 p=1 and ACK=1 L3 L8 p=0 L10

Z6 L10 u L0 S3=1Z7 C1 u C2 RDO.R=RI.R=R1=R2=R3=1 Z8 C2 u C3 RDO.LD=1, MEM.R/W=1Z9 C3 p=1 C2 RI.LD=1

C3 p=0 C5Z10 C5 u L0 S2=1

Štruktúra riadiacej jednotky

Vnútorný kód sme mohli zvoliť iným spôsobom, napr. ako optimálny kód pri minimálnom počte stavových premenných k >= log211 > 3, teda pre k = 4. Tento kód by sme mohli zostaviť napr. Armstrongovou metódou (pozri predmet Logické systémy, pokúste sa o to). Sú možné aj iné prístupy. Jeden uvedieme v príkladoch 2 a 3. Pri voľbe vnútorného kódu a pri syntéze kombinačnej logiky možno použiť príslušné programy návrhového softvéru SIS UCB. POZNÁMKA ku štruktúre kombinačnej logiky: Zabezpečenie správneho štartovania globálneho procesu podľa obmedzení v špecifikácií (v položke restr) je rešpektované vo výrazoch pre budiace funkcie, v logickom obvode RJ je zahrnuté v podobe podmienok CondD1 a CondD7. POZNÁMKA k priebehu signálu MEM.R/W. Pri zápise sa najčastejšie vyžaduje nasledujúci priebeh (ktorý by vyplynul z presnej špecifikácie statickej RAM pamäti, čo sme tu neurobili, pamäť sme špecifikovali iba hrubo): Pri MEM.R/W=0 sa pamäť nastaví na zápis údaja vo vstupe DI a vlastný zápis nastane až pri up(MEM.R/W=1). Tento priebeh treba vytvoriť aj v danej RJ. V stave L4 alebo L5 možno nastaviť MEM.R/W na 0 a v stave L8 vyvolať zmenu MEM.R/W z 0 na 1. Pri čítaní z MEM má byť MEM.R/W = 1 (pri exekúcií COMPUTE môže byť trvale nastavený na 1). Požadovaný priebeh premennej MEM.R/W má výstup -Q preklápacieho obvodu pre REQ.

Hodnota -REQ=0 práve v stavoch L4 a L5 a preklopí sa na hodnotu 1 v stave L8. Z tejto analýzy vyplýva, že výstup RJ pre MEM.R/W sa odvodí od komplementárneho výstupu REQ.

AKO JE TO S DISCIPLÍNOU ČASOVANIA Pri analýze disciplíny časovania v špecifikácii riadiacej jednotky (RJ) a pri jej analýze v štruktúre operačnej časti, ktorej špecifikácia jednotlivých prvkov (registrov RI, RDO; pamäti RAM MEM; sčítačky; inkrementačného obvodu; obvodu pre predikát p) je daná (v zvolenej knižnici), zistíme nasledujúce skutočnosti: 1. Každý stav riadenia (t.j. stav RJ) q sa nastavuje po udalosti up(CLK=1) a je stabilný v intervale < t(ef) -TqS, t (ef) +TqH > a výstupný vektor h priradený stavu q je stabilný v intervale < t(ef) -ThS, t(ef) +ThH>. Situácia môže teda vyzerať takto:

Interval vo vnútri riadiaceho cyklu, v ktorom je stav a aj výstupný vektor stabilný nazývame stabilnou časťou cyklu. Táto časť je v ideálnom prípade čo najbližšia dĺžke riadiaceho cyklu.

2. Vstupný vektor RJ musí byť stabilný v okolí udalosti up(CLK=1) s daným predstihom TS a presahom TH, pretože pri tejto udalosti sa zapisuje nový stav do registra stavu obvodu. Takáto podmienka musí byť splnená aj pre státusové (stavovo-informačné) premenné S, ktoré sú výstupmi OČ a vstupmi RJ. V príklade VSYS je takouto premennou, napr. "p" a jej hodnota sa nastavuje po zápise do registra RI teda je k dispozícií iba v stabilnej časti cyklu. 3. Synchronizácia zápisu údajov do registrov RI a RDO je daná udalosťou up(CK=1) v synchronizačnom vstupe CK registrov. Je zrejmé, že údaj zapisovaný do registra pri up(CK=1) a pri LD=1 musí byť stabilný v okolí up(CK=1) s danými parametrami (predstihom a presahom). Riadiace premenné registrov typu LD, ktoré sú riadiacimi vstupmi C v OČ musia byť stabilné v okolí up(CK=1). 4. Pretože riadiace premenné pre OČ nastavuje RJ s oneskorením za up(CLK=1), podmienky uvedené vyššie máme šancu splniť iba ak zápis do registrov, teda up(CK=1) vhodne posunieme voči up(CLK=1). Môžeme to urobiť napr. tak, že vytvoríme vstup CK = neg CLK (t.j. pomocou negátora v RJ vytvoríme negáciu CLK, rátame pritom s reálnym oneskorení negátora TCC).

Presnú analýza časovacej disciplíny v implementácií danej primárnej architektúry treba verifikovať - existujúcimi metódami formálnej verifikácie časovania alebo simuláciou. Tu treba formálne spätne špecifikovať konkrétne implementácie OČ a RČ a verifikovať splnenie ich časovacích pravidiel pre konkrétne časové parametre v prepojení RČ a OČ (t.j. v danej primárnej architektúre).

VSYS – Štruktúra celého systému

X

DEKOMPOZÍCIA RIADIACEJ JEDNOTKY Riadiacu jednotku sme zostavili na základe globálneho opisu jej správania jedným FSM. Pri syntéze možno vychádzať aj z dekompozície RJ na paralelne v čase vykonávané a komunikujúce subsystémy, jednotlivo opísané samostatnými FSM. PRÍKLAD 2: Na príklade procesora CPU si ilustrujeme spôsob dekompozície riadiacej jednotky, pri ktorej sa správanie (príslušný stavový stroj M opisujúci celkové správanie v diskrétnom čase) rozloží na viacero častí. Sleduje sa pritom tento cieľ: Vytvoriť základnú zložku MT riadenia, t.j. stavový stroj, ktorého stavy T0,...,Tk reprezentujú základné riadiace cykly, ktorými MT prechádza pri exekúcií jednotlivých inštrukcií. MT obsahuje všetky typy riadiacich cyklov, ktorých počet je daný najdlhšou cestou prechodového grafu "globálneho" stavového stroja M. Jednotlivé stavy (riadiace cykly) možno pritom pri niektorých inštrukciách preskočiť (ich vynechať). Vychádzame z prechodového grafu FSM Moorovho typu RJ CPU, opisujúceho globálne správane RJ v diskrétnom čase (nasledujúci obr.). Zostavíme MT a ďalšie dva stavové stroje MIR a MC, ktoré v svojich stavoch nesú informácie o prijatej inštrukcii resp. o hodnote obsahu registra AC. Tri stavové stroje pracujú paralelne a vzájomne komunikujú.

Globálny opis RJ CPU jedným FSM:

Tu vidíme stavový stroj MT, ako hlavnú zložku glo-bálneho stavového stroja RJ CPU, a ďalšie dve zložky MIR (pre nasta-venie do inštruk-čných stavov) a MC (pre nastavenie

podmienkových stavov podľa ob-sahu akumulátora AC), ktoré "pra-cujú" paralelne. Pri zostavení stavo-vých strojov sme naznačili, že po signále Res=1 sa všetky stavové stroje, vykonáva júce svoju funkciu súbežne, nastavia do začiatočných stavov T0, S0, S<.

Jednotliví agenti (mikrooperácie) na OČ sa vykonajú pri dole uvedených stavoch stavových strojov: LdMAR||InkrPC : T0 SetMRd : T2 + T6.(SLD + SADD) LdIR : T3 MovIR-MAR : T5.(SLD + SADD) MovIR-MAR||LdMBR : T5.SST SetMWr : T6.SST LdAC : T7.SLD AddAC : T7.SADD MovIR-PC : T6.SBRN Z uvedených vzťahov možno odvodiť pri zvolenom vnútornom kóde výrazy pre jednotlivé riadiace výstupy RJ. Vidno, že pri stavoch T1 a T4 sa realizujú iba prázdni agenti EA. Uvedený spôsob rozkladu je možné napr. vidieť pri procesoroch spoločnosti Intel pri systémoch x86. PRÍKLAD 3: Podobný rozklad ako v PRÍKLADE 2 možno použiť aj pri systéme VSYS (avšak menej efektívne). V tomto prípade zostavíme stavový stroje MT a MIR. Prechodové grafy sú na nasledujúcich obrázkoch. Hodnoty výstupných vektorov priradených jednotlivým stavom v MT sa zostavia podobne ako v PRÍKLADE 2 (pokúste sa o to!)