Download ppt - Kontrolna jedinica

Transcript
  • Organizacija raunaraKontrolna jedinica

    */40

    Kontrolna jednicaUpravlja pojedinim koracima u obradi podataka i to na osnovu informacija sadranih u instrukciji koju zahvata iz memorije. Sinhronizuje U/I jedinice, memoriju i aritmetiko-logiku jedinicu.Dva pristupa:direktan (hardverski) imikroprogramski.

    */40

    Instrukcijski ciklusProcesor:dobavlja naredbu (komandu, instrukciju) iz memorije (fetch instruction)interpretira naredbu dekodira je da bi utvrdio koju akciju da izvridobavlja podatke ako naredba zahteva podatke iz memorije ili U/I ureaja (fetch data)procesira podatke ako naredba zahteva izvrenje nekih aritmetikih ili logikih opeacija nad podacimaupis podataka ako naredba zahteva da se rezultat upie u memoriju ili U/I jedinicu.

    */40

    Instrukcijski ciklus

    */40

    Instrukcijski ciklusSvaka instrukcija mainskog jezika se sastoji iz niza koraka (fetch, decode, itd.)Svaki korak se sastoji iz niza mikrooperacijasvaka mikrooperacija predstavlja osnovnu funkcionalnu operaciju u procesoru

    */40

    1. Dobavljanje instrukcije (fetch)FetchPC sadri adresu sledee instrukcijeadresa iz PC se smeta u MAR (MAR PC)adresa dospeva na adresnu magistralukontrolna jedinica zahteva itanje od memorije (signalima na kontrolnoj magistrali)rezultat se smeta na sabirnicu podatakasa sabirnice podataka se rezultat smeta u MBR (MBR memory)za to vreme, PC se uvea za L (PC PC + L, gde je L duina instrukcije)iz MBR, dobavljena instrukcija se smeta u IR (IR MBR)t1: MAR PCt2: MBR memory PC PC + Lt3: IR MBR

    */40

    1. Dobavljanje instrukcije (fetch)t1: MAR PCt2: MBR memory PC PC + Lt3: IR MBR

    */40

    Grupisanje mikroinstrukcijaPravilan redosled mikroinstrukcija se mora potovati (prvo ide MAR PC, pa onda MBR memory)Konflikti se moraju izbegavati (istovremena itanja i pisanja i sl.)zato moe MBR memory i PC PC + L

    */40

    2. Dobavljanje operanadaAko instrukcija zahteva dobavljanje operanada, onda se oni dobave pre izvrenja instrukcijePrimer direktnog adresiranja (MOV R1, [1000]):t1: MAR IR(Address)t2: MBR memoryt3: R1 MBR

    */40

    2. Dobavljanje operanadat1: MAR IR(Address)t2: MBR memoryt3: R1 MBR

    */40

    3. Izvrenje instrukcijeMoe biti razliitog oblikaZavisi od instrukcije koja se izvravaMoe da sadriitanje/pisanje po memorijiulazno/izlazne operacijerad sa registrimaaritmetiko/logike operacije

    */40

    PrimerInstrukcija ADD R1, X koja sabira sadraj R1 i sadraj lokacije X, i rezultat smeta u R1Mikrooperacije:t1: MAR IR(Address) # adresni deo instrukcije u MARt2: MBR memory # sa zadate adrese proitamo i smestimo u MBRt3: R1 R1 + MBR Instrukcija ISZ x koja povea vrednost na lokaciji X i ako je 0, preskoi sledeu operaciju (HP 2100 raunar)Mikrooperacije:t1: MAR IR(Address)t2: MBR memoryt3: MBR MBR + 1t4: memory MBR IF (MBR = 0) THEN PC PC + 2 # 2 je duina svake instrukcije

    */40

    PrimerInstrukcija JMP X koja skae na adresu XMikrooperacije:t1: PC IR(Address)Instrukcija CALL X koja poziva potprogram na adresi XMikrooperacije:t1: MAR SPt2: MBR PC + L # L je duina tekue instrukcije SP SP + LA # LA je duina adrese (32 bita, 64 bita, itd.)t3: memory MBRt4: PC IR(Address)Instrukcija RET kojom se vraa iz potprogramaMikrooperacije:t1: MAR SP LAt2: MBR memory SP SP LA t3: PC MBR

    */40

    4. Provera prekidaTekua vrednost PC se sauva u memoriji da bi se po zavretku prekida moglo nastavitisadraj PC se smeta u MBR (MBR PC)Specijalna adresa (npr. Stack Pointer) se smeta u MAR (MAR SP)MBR se snima u memoriju (memory MBR i SP SP + LAu PC se smeta adresa prekidne rutine (PC interrupt_handler)nakon ovog sledi regularno dobavljanje instrukcije (ali ovaj put od prekidne rutine)t1: MBR PCt2: MAR SPt3: memory MBR SP SP + LAt4: PC interrupt_handler

    */40

    4. Provera prekidat1: MBR PCt2: MAR SPt3: memory MBR SP SP + LAt4: PC interrupt_handler

    */40

    PrefetchNeki od koraka izvrenja instrukcije se mogu preklapati, odn. obavljati istovremeno.dok se instrukcija izvrava, moe se dobavljati sledeaUbrzanje nije duplofetch je bri od izvrenjasvaki skok ponitava prefetchbranch prediction

    */40

    PipeliningPreklapanje svih stepena izvrenja instrukcijeFetch instruction (FI)Decode instruction (DI)Calculate operands (CO)Fetch operands (FO)Execute instructions (EI)Write result (WO)

    */40

    Pipelining

    */40

    Kontrolni signali

    */40

    PrimerCinc CRCinc

    Mikro operacijaTajmingAktivni kontrolni signaliFetcht1: MAR PCt2: MBR memory PC PC + 1t3: IR MBRC2C5, CR (CR read control signal)Cinc (Cinc increment PC)C4Dobavljanje operandat1: MAR IR(Address)t2: MBR memoryt3: IR(Address) MBR(Address)C8,C13C5, CRC4

    */40

    Direktna (hardverska) implementacija kontrolne jediniceKontrolna jedinica je sekvencijalno digitalno koloKoristi se da generie fiksne sekvence kontrolnih signalaImplementira se upotrebom standardnih digitalnih tehnikaKarakteristino za RISC procesorejedna instrukcija po mainskom ciklusumainski ciklus nije takt, ve vreme za dobavljanje operanada iz dva registra, raunanje i smetanje rezultata u registar)operacije registar-registarvelik broj registarajednostavni adresni modovijednostavan format instrukcijasve instrukcije iste duine, pa se dekodiraju brzo

    */40

    Direktna realizacija CU

    */40

    Direktna realizacija CUPrednost nad mikroprogramskim reenjemvea brzina izvrenja operacijamanji broj komponentiManateko je izvesti izmeneteko popraviti greketeko dodati nove instrukcijekomplikovana realizacija i testiranje

    */40

    Primer RISC kodaC program:while(i != j) { if (i > j) i -= j; else j -= i; }Asemblerski kod:; set condition "NE" if (i != j), ; "GT" if (i > j), or "LT" if (i < j)loop CMP Ri, Rj SUBGT Ri, Ri, Rj ; if "GT" (greater than), i = i-j; SUBLT Rj, Rj, Ri ; if "LT" (less than), j = j-i; BNE loop ; if "NE" (not equal), then loop

    */40

    Primer RISC kodaC program:a += (j