4. Upravljacka jedinica Funkcija upravljacke jedinice Prijenos upravljanja izmedu programa Rekurzivni programi LIFO ili stožna struktura Uporaba stoga AIOR, S. Ribaric 1
Funkcije upravljacke jedinice: Pribavljanje instrukcija Tumacenje instrukcija Generiranje upravljackih signala tijekom instrukcijskog ciklusa Upravljanje slijedom instrukcija: izbor instrukcije prijenos upravljanja s jedne na drugu instrukciju (engl. Instruction sequencing) AIOR, S. Ribaric 2
Najjednostavnija metoda upravljanja slijedom instrukcija: - svaka instrukcija jednoznacno odreduje adresu sljedece: (znacajka prvih racunala prije von Neumannovog doba ) Primjer: EDVAC (Electronic Discrete Variable Computer) Oblik aritmeticke instrukcije: Nedostatak: Povecana duljina instrukcije (Dataflow arhitektura) AIOR, S. Ribaric 3
Druga metoda: - Instrukcija I nalazi se na memorijskoj lokaciji s adresom A i ima jedinstvenu nasljednicu instrukciju I na adresi A+1 PC programsko brojilo sadrži adresu A + 1 (adresu slijedece instrukcije) Adresa slijedece instrukcije (I ) odreduje se povecanjem PC-a: PC PC + k, gdje je k duljina instrukcije I izražena u rijecima (bajtovima) /za procesor RISC k=1/ AIOR, S. Ribaric 4
Prijenos upravljanja izmedu instrukcija koje si nisu slijedne: 1) Instrukcije grananja 2) Instrukcije za prijenos upravljanja izmedu programa 1) Instrukcije grananja Instrukcije bezuvjetnog grananja PC X, gdje je X adresa ciljne instrukcije POZOR: Gornja se operacija izvodi tijekom faze IZVRŠI AIOR, S. Ribaric 5
Instrukcije uvjetnog grananja - Tijekom faze IZVRŠI ispituje se da li je neki uvjet C zadovoljen (C je obicno posljedica neke ranije instrukcije) - Ako je C zadovoljen, tada PC X, u drugim slucajevima PC se ne mijenja (tijekom faze IZVRŠI) AIOR, S. Ribaric 6
2) Instrukcije za prijenos upravljanja izmedu programa P1 program (glavni program) P2 potprogram ili P1 pozivajuci program P2 pozvani program Dva glavna slucaja: 1) Pozivanje potprograma 2) Prekidi AIOR, S. Ribaric 7
1)P1 P2 instrukcije za pozivanje potprograma (engl. Call, jump to subroutine): CALL X, gdje je X ciljna adresa (ili se ciljna adresa racuna na temelju X) prve instrukcije (pot)programa P2. AIOR, S. Ribaric 8
Tijekom faze IZVRŠI instrukcije CALL obavljaju se dva slijedece koraka: 1. Korak: Sadržaj PC-a (koji pokazuje na slijedecu instrukciju u P1) se pohranjuje na za to predodredenu lokaciju S, 2. Korak: X (ili adresa izracunata na temelju X) prenosi se u PC Lokacija S sadrži povratnu adresu AIOR, S. Ribaric 9
Povratak iz programa P2 (P2 P1): Instrukcija povratka (Return; RET) posljednja instrukcija u P2 PC S Problem: Gniježdenje potprograma! AIOR, S. Ribaric 10
Primjer: PDP 8 (ili kako se nekad radilo) JMS SUB ; Jump to Subroutine i) PC se pohranjuje na lokaciju SUB ii) PC se automatski inkrementira podrazumijevajuci da se prva instrukcija potprograma SUB nalazi na adresi SUB + 1 Prijenos upravljanja s potprograma na pozivajuci program: JMP I SUB ; Indirektni skok na SUB!!! Problem gniježdenja potprograma riješen! AIOR, S. Ribaric 11
Nedostatak rješenja: Potprogrami ne mogu pozivati sami sebe (nije omogucena rekurzija) Rekurzivni program P može se prikazati kao kompozicija Π osnovnih instrukcija s i (koje ne sadrže P) i samog programa P: P = Π [s i, P] Primjer: PROLOG predak_od (X,Y) :- roditelj_od (X, Y). predak_od (X, Y) :- roditelj_od (Z, Y), predak_od (X, Z). AIOR, S. Ribaric 12
Primjer: n! = 1 x 2 x 3 x 4 x... n 1! = 1 n! = n x (n-1)! Hanojski tornjevi Fibonaccijevi brojevi: 1) F 0 = 0, F 1 = 1; i 2) F n = F n-1 + F n-2, za n 2 AIOR, S. Ribaric 13
Rješenje problema rekurzije: Uporaba upravljackih stogova Stog LIFO (Last In First Out) služi za pohranu povratnih adresa. CALL SUB 1) PUSH PC 2) PC SUB RETURN 1) POP PC AIOR, S. Ribaric 14
Rekurzivno pozivanje: Begin.. CALL SUB X:. ; X je povratna adresa.. SUB:.. CALL SUB Y:. ; Y povratna adresa.. RETURN. End AIOR, S. Ribaric 15
Stanje stoga: Nakon prvog pozivanja Nakon drugog pozivanja Trece pozivanje, cetvrto pozivanje,... Povratak??? AIOR, S. Ribaric 16
Rekurzivno pozivanje: Begin. N := 3 CALL SUB X:.. SUB:.. N := N 1 IF (N > 0) THEN CALL SUB Y:.. RETURN End AIOR, S. Ribaric 17
Stanje stoga: - Prvi poziv (N = 3) / poziv iz glavnog programa/: - Drugi poziv (N = 2) / poziv iz SUB/: AIOR, S. Ribaric 18
Treci poziv (N = 1) /poziv iz SUB/: Drugi povratak: Prvi povratak: Treci povratak: AIOR, S. Ribaric 19
Primjeri izvedbe stoga: 1) Stog od n k-bitnih rijeci izveden pomocu posmacnih registara 2) Uporaba memorije s izravnim pristupom kao podrucje stoga AIOR, S. Ribaric 20
1) k AIOR, S. Ribaric 21
2) RAM AIOR, S. Ribaric 22
Primjer uporabe stoga Analiza slucaja: MC 68000 Scenarij: 1. Procesor je u korisnickom nacinu rada (User Mode) Poziva se potprogram Nastavlja se izvodenje potprograma 2. Dogodila se iznimka (PREKID) Obrada prekida 3. Vracanje u potprogram 4. Vracanje iz potprograma /primjer detaljno opisan u S. Ribaric, Naprednije arhitekture mikroprocesora, Element, 1997., Zagreb/ AIOR, S. Ribaric 23
Graficki prikaz scenarija: AIOR, S. Ribaric 24
AIOR, S. Ribaric 25
Dijagram stanja za MC 68000 RTE -Return from Exception /povlaštena instrukcija/ AIOR, S. Ribaric 26
CALL POT se izvodi u dva koraka: - PUSH PC - PC POT Povratak: - RET: POP PC Uporaba stoga!!! AIOR, S. Ribaric 27
Na stog se tijekom prijenosa upravljanja s prekinutog na prekidni program (P 1 P 2 ) pohranjuje MINIMALNI KONTEKST: Sadržaj programskog brojila (4 bajta) Sadržaj statusnog registra (2 bajta) Adresa prekidnog programa? AIOR, S. Ribaric 28
Stanja kazala stoga i stogova prije pozivanja potprograma AIOR, S. Ribaric 29
Stanje neposredno nakon grananja u potprogram AIOR, S. Ribaric 30
Dogodio se prekid! (Iznimka se obraduje u nadglednom nacinu) AIOR, S. Ribaric 31
Stanje stogova nakon vracanja u potprogram AIOR, S. Ribaric 32
Stanje stoga nakon vracanja iz potprograma AIOR, S. Ribaric 33
Stanje prije izvodenja programa Stanje nakon izvodenja programa AIOR, S. Ribaric 34
Nacini izvedbe upravljacke jedinice AIOR, S. Ribaric 35
Opis upravljackih signala C OUT - signali koji izravno upravljaju djelovanjem digitalnog sustava za obradu informacije /glavna funkcija upravljacke jedinice/ C IN - signali koji omogucuju utjecaj podataka tijekom njihove obrade omogucavaju donošenje odluke u zavisnosti od rezultata operacije na podacima C IN - prijemni signali (od drugih upravljackih jedinica ili od središnje nadgledne jedinice, npr. start, stop) C OUT - signali prema drugim upravljackm jedinicama (npr. busy, operation completed) AIOR, S. Ribaric 36
Opisivanje djelovanja upravljacke jedinice Dijagram toka i opisni jezici (engl. Description language) - dijagram toka opisuje mikrooperacije i njihov slijed svakoj mikrooperaciji se u dijagramu toka pridružuje skup upravljackih signala {C i,j }koji se moraju aktivirati da bi se mikrooperacija izvršila - sklopovski opisni jezici: RTL (Register Transfer Language), CDL (Computer Design Language), VHDL,... Nacini izvedbe upravljacke jedinice 1) Sklopovska izvedba - sekvencijalni sklopovi (engl. Hardwired control unit) 2) Mikroprogramska izvedba AIOR, S. Ribaric 37
Sklopovska izvedba -tri pristupa: 1) Standardni pristup oblikovanju sekvencijalnih sklopova (uporaba tablica ili dijagrama stanja) 2) Uporaba elemenata za kašnjenje 3) Uporaba brojila sekvenci AIOR, S. Ribaric 38
Tablica stanja Ulazne kombinacije Stanja S 1 S 1,1, Z 1,1 S 1,2, Z 1,2... S, Z 1,m 1,m S 2 S 2,1, Z 1,2 S 2,2, Z 2,2... S, Z 2,m 2,m S 3.................. S n I 1 I 2 S i,j oznacava slijedece stanje........................ S n,1, Z n,1 S n,2, Z n,2... S n,m, Z n,m... I m Z i,j oznacava skup izlaznih signala koji se aktiviraju s I j ako je upravljacka jedinica u stanju S i AIOR, S. Ribaric 39
Dijagram stanja AIOR, S. Ribaric 40
Uporaba elemenata za kašnjenje -razmotrimo problem generiranja slijeda upravljackih signala u vremenskim trenucima t 1, t 2,..., t n t 1 : aktiviraj {C 1,j } t 2 : aktiviraj {C 2,j }........ t n: aktiviraj {C n,j } - Pretpostavimo da je u trenutku t 1 prisutan signal Start(t 1 ) i on ce u trenutku t 1 aktivirati skup signala {C 1,j } koji ce pobuditi jednu (prvu) ili više mikrooperacija - Signal Start(t 1 ) dovodimo na element za kašnjenje (kašnjenje = t 2 t 1 ) izlaz iz elementa za kašnjenje aktivira {C 2,j } itd. -Slijed elemenata za kašnjenje može se upotrijebiti za generiranje upravljackih signala Oblikovanje upravljacke jedinice izravno iz dijagrama toka AIOR, S. Ribaric 41
Primjer Start {C 1,j } {C 2,j } Ne X 1 =1? X 2 =1? Ne {C 3,j } Da {C 4,j } Da {C 5,j } {C 6,j } AIOR, S. Ribaric 42
Odnos: dijagram toka sklopovi {C 1,j } C 1 {C 1,j } {C 2,j } Element za kašnjenje {C 2,j } C 2 C 3 AIOR, S. Ribaric 43
Odnos: dijagram toka sklopovi X=1? Ne X X Da Da Ne AIOR, S. Ribaric 44
Izvedba: {C 1,j } C 1 Element za kašnjenje {C 2,j } C 2 Element za kašnjenje X 1 X 1 X 2 X 1 X 2 {C 4,j } {C 5,j } C k {C 3,j } Element za kašnjenje {C 6,j } AIOR, S. Ribaric 45
Izvedba jednostavnog elementa za kašnjenje dvostruki bistabil (engl. Masterslave) S S Y S Q R R MASTER Y SLAVE R Q S R C Q Q P M-S BISTABIL AIOR, S. Ribaric 46
Cp 1 R 0 1 S 0 1 0 Q 1 0 PROPAGATION DELAY OF OUTPUT Q FROM LEADING EDGE OF THE CLOCK PULSE?? AIOR, S. Ribaric 47