You are on page 1of 17

Protonost

SADRAJ
1. PROTONOST......................................................................................................................................... 2 1.1 Osnovne tehnike za eksploataciju paralelizma.................................................................................... 2 1.2 Protona obrada na nivou instrukcije osnovni koncepti...................................................................3 1.3 Performansne mere.............................................................................................................................. 5 1.4 Tehnika projektovanja protonog procesora .......................................................................................6 1.4.1 ALU instrukcije............................................................................................................................ 6 1.4.2 Instrukcije tipa Load i Store ......................................................................................................... 8 1.4.3 Instrukcija tipa Branch ............................................................................................................... 14

Protonost

1. PROTONOST
1.1 Osnovne tehnike za eksploataciju paralelizma
Kod dananjih raunara postoje sledee dve osnovne tehnike za eksploataciju paralelizma: A. protonost (pipelining) B. umnoavanje (replication) A. Protonost: Sa ciljem da se obavi izraunavanje, kaskadno se povezuje vei broj funkcionalnih jedinica. Ovaj nain obrade slian je fabrikoj liniji za asembliranje nekog proizvoda, kakav je recimo TV aparat, putniko vozilo i dr. Svaka funkcionalna jedinica odgovara odredjenom stepenu izraunavanja, a svako izraunavanje prelazi kroz ceo protono organizovan sistem. Za sluaj da se obavlja samo jedno izraunavanje protoni sistem ne moe da izdvoji paralelizam. No u sluajevima kada se isto izraunavanje obavlja vie puta, tada se izraunavanja u funkcionalnim jedinicama mogu preklapati. Neka protoni sistem ine n funkcionalnih jedinica (stepena) i neka je T vreme potrebno najsporijem stepenu da izvri svoju funkciju. Pod ovim uslovom novo izraunavanje moe da zapone svakog T-tog trenutka. Protoni sistem je popunjen kada sve funkcionalne jedinice obavljaju razliito izraunavanje. Nakon to se protoni sistem popuni, po jedan rezultat (izraunavanje) se dobija svakog T-tog trenutka. Saglasno prethodnom, kada je protoni sistem pun dobija se pojaanje n pod uslovom da se zanemare granini efekti koji odgovaraju punjenju (karakteristino za poetak) i pranjenju (tipino za kraj izraunavanja) protonog sistema. Na osnovu prethodne diskusije jasno se uo~ava da je proto~nost veoma mona tehnika za ubrzanje izvrenja slinih izraunavanja u nizu, pa se zbog toga esto koristi kod savremenih paralelnih arhitektura. Kada su u pitanju paralelni sistemi protonost se moe koristiti na sledea dva nivoa: a) na nivou procesora: mikro-nivo b) izmedju procesora ili vorova: makro-nivo Klasini primeri procesora koji koriste protonu obradu na mikro-nivou su vektor-procesori, skalarni procesori, superprotoni i superskalarni procesori, VLIW procesori, i dr. Tipini reprezenti procesora koji koriste protonu obradu na makro-nivou su komunikacioni procesori, MIMD maine i dr. B. Umnoavanje: drugi prirodan nain da se uvede paralelizam kod raunara je da se umnoe funkcionalne jedinice. Umnoene (replicirane) funkcionalne jedinice mogu istovremeno da obavljaju istu operaciju nad onoliko razliitih podataka koliko postoje razliite funkcionalne jedinice. Svi MIMD raunari, kao VLIW i superskalarni procesori da bi ostvarili paralelizam u radu koriste pristup umnoavanja funkcionalnih jedinica.

Protonost

1.2 Protona obrada na nivou instrukcije osnovni koncepti


Protonost je standardna hardverska tehnika koja se kod raunara koristi za postizanje boljih performansi. Kada se govori o izvrenju instrukcije ono se ostvaruje na taj nain to se obrada instrukcije deli na vei broj fiksnih koraka koji se izvravaju sekvencijalno. Protonu realizaciju instrukcije ine nekolliko hardverskih stepena (stages), S1,...,Sn, medjusobno razdvojeni leevima, L1,.....,Ln. Kako instrukcija prolazi kroz protoni sistem (pipeline), hardver svakog stepena obavlja odredjeni tip obrade. Kada instrukcija napusti protoni sistem ona je u potpunosti izvrena. Princip protone obrade objasniemo na jednom jednostavno organizovanom procesoru nazvan FX-4P. Proto~ni sistem FX-4P u stanju je da obavlja sve Integer i Boolean operacije, a ine ga protoni stepeni IF, ID, EX i WB (vidi Sliku 1a)).
L1 instrukcije S1 IF L2 S2 ID L3 S3 Ex L4 S4 WB

takt Cp

a). ^etvoro-stepeni protoni sistem

instrukcije ... i+4 i+3 i+2 i+1 i t0 IF1 t1 IF2 ID1 t2 IF3 ID2 Ex1 t3 IF4 ID3 Ex2 WB1 t4 t5 t6 t7 t

IF5 ID4 Ex3 WB2

ID5 Ex4 WB3

Ex5 WB4

WB5

b). Princip rada protonog sistema

opkd

Rs1

Rs2

Rd

c). Tro-adresni format

Slika 1 FX-4P protoni sistem

Protonost Funkcije koje pojedinano, u okviru protonog sistema FX-4P, obavljaju protoni stepeni S1 do S4 (vidi Sliku 1a)) su sledee: (1) S1-Pribavljanje instrukcije, IF (Instruction Fetch): na osnovu sadraja programskog brojaa, iz adresirane memorijske lokacije pribavlja se instrukcija (format instrukcije je prikazan na Slici 1c)) (2) S2-Dekodiranje instrukcije, ID (Instruction Decode): u toku ovog ciklusa obavljaju se sledee dve aktivnosti: (a) dekodira se opkod i inicijalizira proces interpretacije instrukcije; (b) na osnovu sadraja registarskih specifikatora (polja Rs1 i Rs2 koji odredjuju prvi i drugi izvorini operand instrukcije- vidi Sliku 1c) pribavljaju se (itaju) operandi iz internog registarskog polja CPU-a (internal register-file , tzv. RF polje). (3) S3-Izvrenje, EX (Instruction Execution): obavlja se operacija specificirana opkd poljem instrukcije. (4) S4- Upis rezultata, WB (Result Write Back): rezultat operacije upisuje se u odredini registar, specificiran Rd poljem sa Slike 1c). Rd registar je jedan od registara RF polja.
Napomena: Kod procesora FX-4P, na osnovu formata sa Slike 1c), uo ava se da su oba izvorina operanda, kao i odredini (specificirana poljima Rs1 i Rs2 i Rd, respektivno) registarska. To zna i da se ulazne vrednosti operacija dobavljaju iz RF polja, a takodje se i rezultat operacije upisuje u jedan od registara RF polja. O na inima kako se vri punjenje registra RF polja (operacija tipa Load-register) kao i upis sadraja registre u memoriju, tj. operacije tipa Store-register), ili kako se realizuje operacije tipa Branch i druge, govori emo neto kasnije.

Izvrenje instrukcije ini sekvenca akcija. Akcije se specificiraju semantikom instrukcija. U prethodnom poglavlju smo ukazali da se jedna akcija moe obaviti u toku trajanja jednog ili veeg broja ciklusa. Identifikovaemo sada karakteristine akcije koje se obino, u toku izvrenja instrukcije, izvravaju u sekvencijalnom redosledu. Drugim reima, ukazaemo na problem particije. Svaki protoni stepen se sastoji od kombinacione logike i/ili veoma brze memorije izvedene u formi registarskog polja ili ke memorije. Stepeni su medjusobno razdvojeni, kako je to prikazano na Slici 1, leevima, L1 do L4. Zajednikim taktnim signalom, Cp, vri se sinhronizacija rada sistema na taj nain to svi leevi istovremeno prihvataju podatke od strane protonih stepena. Zajednikim taktnim signalom Cp vri se ''pumpanje'' (tj. guranje) instrukcija kroz protoni sistem. Na poetku procesorskog ciklusa (taktnog perioda) podaci, i/ili upravljaka informacija iz delimino procesirane instrukcije, se pamti (uva) u le Li ( i = 1,..,4). Ovi podaci, i/ili upravljaka informacija, predstavljaju ulaz za logiku stepena Si koju le Li direktno pobudjuje. U toku taktnog perioda, signali se propagiraju kroz kombinacionu logiku, ili pristupaju veoma brzim memorijama stepena Si. Na kraju taktnog perioda procesirani signali se prihvataju od strane lea Li+1. Kada je protoni sistem dobro projektovan, svi stepeni sadre logiku sa priblino jednakim (izbalansiranim) vremenom propagacije signala. Taktni period treba da bude dovoljno dugaak i da njegovo trajanje odgovara najsporijem stepenu. Protoni stepen treba tako projektovati da poetak nove instrukcije (a takodje i kraj instrukcije) koincidira sa poetkom svakog novog taktnog perioda (Slika 1b)). Zbog toga, taktni period odredjuje propusnost (throughput), koja ukazuje na brzinu sa kojom se izvravaju instrukcije. Vreme koje je potrebno jednoj instrukciji da prodje kroz sve blokove protonog sistema zove se latencija (latency). Na primer, ako se protoni sistem sa Slike 2a taktuje sa frekvencijom od 100 MHz, tada je maksimalna propusnost jedna instrukcija na 10ns ili 100 MIPS-a, dok latentnost ovog protonog sistema iznosi 40ns.

Protonost

1.3 Performansne mere


Osnovna ideja protone obrade je da se ostvari preklapanje u izvrenju izmedju sukcesivnih instrukcija ime se tedi na vremenu i poveava propusnost. Skoro svi dananji savremeni procesori koriste tehniku protone obrade ime na jedan indirektan nain postiu bolje performanse u odnosu na strogo sekvencijalno izvrenje. Pre nego to ukaemo na neke performansne mere definisaemo dva pojma koja se odnose na protoni dizajn: 1. protoni ciklus (alternativni pojmovi su procesorski ciklus ili taktni period): perioda taktnog signala, Cp kojim se pobudjuje protoni sistem. Perioda je odredjena od najdueg vremenskog kanjenja potrebnog da se izvri jedna operacija kroz neki od protonih stepena. Tekui protoni procesori operiu sa procesorskim ciklusom koji je reda od 200 ps - 20 ns (tj. 5 GHz 50 MHz) 2. Latencija iniciranja instrukcija: broj procesorskih ciklusa izmedju iniciranja dve susedne instrukcije u programskoj sekvenci. Od performansnih mera protonog sistema ukazaemo na: a) broj procesorskih ciklusa potreban za procesiranje sekvence od k instrukcija iznosi broj_procesorskih_ciklusa = broj_procesorskih_ciklusa_da_se_generie_prvi_rezultat + broj_instrukcija_u_sekvenci - 1 = n + k -1 gde je: n-broj protonih stepeni, a k je duina sekvence instrukcija. b) broj procesorskih ciklusa po instrukciji (CPI) iznosi CPI = (n + k - 1) / k = 1 + (n - 1) / k kada k 1, tada CPI n, a u slu~aju kada k , tada CPI 1, tj. 1 < CPI < n. c) ubrzanje (speedup) protonog sistema u odnosu na neprotoni sistem se definie kao Spro = Tneprotocno / Tprotocno = n * k / (n + k - 1) to znai da Spro n, kada k Vaan faktor koga treba uzeti u obzir kod procene performansi predstavlja dodatno kanjenje koje unosi svaki le u lancu. U sutini vreme potrebno protonom stepenu da procesira podatak jednako je zbiru Tci + Tri , gde je Tci vreme procesiranja signala od strane stepena Si, a Tri predstavlja kanjenje koje unosi le Li . Zbog uticaja kanjenja koje unosi le ubrzanje realnog protonog sistema bie dato sledeom relacijom Spro = (( n - ) * k)/ ( k + n - 1) to znai da Spro n - , kada k

Protonost gde je prekoraenje usled Tri, tj. prekoraenje usled dodatnog vremena, svakog protonog stepena, potrebnog da se ostvari sinhronizovan rad. d) efikasnost protonog sistema koji obavlja izraunavanje (ili niz izraunavanja) se definie kao Eideal = Spro / n = (n * k) / ( n2 + n * k - n) za n = 5 i k = 10, E = 0,714; za n = 5 i k = 100, E = 0,962; za n = 5 i k = 1000, E = 0,996;

1.4 Tehnika projektovanja protonog procesora


Skup instrukcija koje izvrava protoni procesor ima veoma veliki uticaj na njegovu strukturu i funkcionisanje. Imajui ovo u vidu jo u fazi projektovanja protonog procesora mora prvo da se sagleda na koji nain se razliite klase mainskih instrukcija preslikavaju, tj. uklapaju, u protonu strukturu. Klasifikovaemo instrukcije na osnovu sledeeg kriterijuma: kakav je i gde se ostvaruje tok podataka u toku izvrenja instrukcije. Shodno odabranom kriterijumu mogue je identifikovati sledea tri tipa instrukcija: a) ALU aritmetiko/logike b) Load/Store punjenje registra iz memorije/upis stanja registra u memoriju c) Branch grananja, mogu biti uslovna i bezuslovna Sa ciljem da se bolje razume ponaanje ovih klasa instrukcija opisaemo njihov rad na jedan slikovit nain. Naime u zavisnosti od preduzetih aktivnosti u toku obrade instrukcije bie prikazana odgovarajua operacija kao i struktura protonog sistema neophodna da se obavi ta operacija. 1.4.1 ALU instrukcije Analizira}emo prvo kakva treba da bude struktura 32-bitnog procesora kada on izvrava aritmetike instrukcije tipa registar-u-registar. U konkretnom sluaju etvoro-stepeni protoni sistem, koga ine stepeni IF, ID, EX i WB, slian onom prikazan na Slici 1 (tj. FX-4P), ispunjava postavljene zahteve. Detaljnija struktura ovakvog procesora je prikazana na Slici 2. Operacija koja se izvrava je tipa Add R1, R2, R3 ; (R1) (R2) + (R3)

Format instrukcije Add (vidi Sliku 2b)) ine polja Rs1 = Rs2 = Rd svi obima po 5 bitova (RF polje ine 32 registra), opkd polje obima 6 bitova (mogue je kodirati do 64 razliite instrukcije) i polje ostalo veliine 11 bitova (interpretaciju ovih bitova za sada }emo zanemariti).

Protonost
memorija za instrukcije

adresa 32 (PC)

PC
+4 Inc 4

32

1. IF

instrukcija 32

(PC)+4

L1
Add R1 R2 5 R3 5 RF polje (multi32 32 ostalo

2. ID

port memory)

L2
Add R1 (R2) 32 6 5 dekoder ALU op add (R2)+(R3) ALU (R3) 32

3. EX

L3
R1 5 (R2)+(R3) 32

32

4. WB

reg-write

data-in

RF polje

multi-port polje

a) struktura FX-4P
6 opkd 5 Rd 5 Rs1 5 Rs2 11 ostalo

b) format instrukcije Slika 2. Izvrenje ALU instrukcije kod etvoro-stepenog protono organizovanog sistema FX-4P
Napomena: Gradivni blok RF polje prikazan u stepenima ID i WB je jedan isti blok. U sutini to je memorija sa veim brojem pristupa. itanje ovog polja se vri u stepenu ID, a upis u RF polje u stepenu WB.

Stepen IF prenosi kompletnu instrukciju u le L1. U stepenu ID pristupa se izvornim operandima instrukcije koji su locirani u RF polju i dobavljaju se vrednosti izvornih operanada (u konkretnom sluaju to su sadraji registara R2 i R3). Sadraji izvornih operanada zajedno sa opkdom instrukcije i polje odredini registar, R1, se upisuju u le L2, tj. predaju stepenu EX. Stepen EX prihvata ulazne vrednosti i 7

Protonost obavlja operaciju u zavisnosti od opkoda instrukcije, a rezultat zajedno sa poljem odredini registar prosledjuje leu L3. Stepen WB pristupa RF polju koristei odredinu adresu i upisuje (prenosi) rezultantnu vrednost (R2) + (R3) u odredini registar R1. Analizirajui Sliku 2 moemo da zakljuimo sledee: a) sadraj opkda polja instrukcije ostaje nepromenjen sve do stepena EX, tj opkd polju se jednostavno prenosi kroz stepene IF i ID. informacija o

b) na slian nain polje instrukcije kojim se specificira odredini registar, Rd (konkretno je to R1), se prenosi kroz stepene IF, ID i EX sve dok se njegov sadraj ne interpretira u stepenu WB, za potrebe selekcije registra R1 iz RF polja, radi upisa rezultata izraunavanja. Zadravajui nepromenjen sadraj odredjenih polja instrukcije, u toku prolaska te instrukcije kroz protone stepene mogue je insertovati nove instrukcije a da pri tome prethodne jo nisu zavrene. Isto tako se moe uoiti da u trenutku kada n-ta instrukcija vri upis u RF polje (n+2)-a instrukcija ita RF polje. Istovremeno operacije upis i itanje sadraja istog registra nisu dozvoljene, ali je dozvoljen istovremeni pristup razliitim registrima (RF polje je multiport memorija, koja u konkretnom sluaju (Slika 2) ima dva porta za itanje i jedan za upis).

1.4.2 Instrukcije tipa Load i Store Kod instrukcija tipa Load i Store u okviru aktivnosti koje obavljaju protoni stepeni vri se pristup memorijama za podatke. Saglasno ovome moe se izvesti jedan alternativni nain prikazivanja rada protonog sistema koji za odgovarajui protoni stepen u prvi plan postavlja pristup memoriji (keu) za podatke (vidi Sliku 3)
IF
M A R instrukciona memorija M D R

ID
memorija podataka RF polje ili ke

EX
I R

WB
M D R memorija podataka RF polje ili ke

ALU

a)

Protonost
procesor pribavljanje instrukcija ke za instrukcije pribavljanje podataka ke za podatke

glavna memorija

b) Slika 3. Alternativni nain prikazivanja rada protonog sistema u toku jedinstvenog procesorskog ciklusa
Napomena: MAR-memorijsko adresni registar; MDR-registar za uvanje podataka iz/ka memoriji; IR-instrukcioni registar.

Kao to se mo`e uo~iti sa Slike 3 u toku jednog procesorskog ciklusa memoriji za podatke istovremeno se pristupa na dva mesta, u stepenu ID i stepenu WB, a memoriji za instrukcije jedanput, u stepenu IF. Ovakav nain rada automatski sugerie da memoriju za instrukcije treba razdvojiti od memorije za podatke. Obino, na nivou sistema obe memorije se implementiraju kao ke-za-instrukcije i ke-za-podatke.(vidi Sliku 3 b)). Uobi~ajeno, dananji RISC procesori se realizuju kao Load/Store maine, pa je pogodno kod ovakvih maina da postoji jo jedan protoni stepen koji bi obavljao aktivnost tipa pristup-memoriji. Memorijske adrese za obe, Load i Store, operacije, izraunavale bi se putem registarsko indirektnog naina adresiranja. Ovakav pristup nalae da protoni sistem ine sledeih pet stepeni: S1: FI pribavljanje instrukcije S2: DI dekodiranje/pribavaljanje operanada iz RF polja S3: EX izvrenje ALU operacije ili izraunavanje efektivne adrese S4: MA pristup memoriji radi upisa podataka ili itanje memorijskog operanda S5: WB upis rezultata operacije u RF polje Stepen S3 se koristi za izraunavanje efektivne adrese instrukcije kojom se vri pristup memoriji, ili za obavljanje aritmetiko/logikih operacija kod instrukcija tipa regista-u-registar. Stepen S5 se ne koristi od strane instrukcija koje vre upis u memoriju (Store instrukcija). Na Slici 4 prikazan je nain korienja protonih stepena za instrukcije tipa Load, Store kao i aritmetiko/logikih. Sistem sa Slike 4 a) je peto-stepeni sa jednim stepenom namenjen za pristup memoriji. Kao to se vidi sa Slike 4 b) samo se instrukcija Load procesira u sva pet stepena; aritmetiko/logike instrukcije ne koriste usluge MA stepena (samo prolaze kroz njega bez procesiranja); instrukcija Store ne koristi usluge stepena WB. Treba ipak naglasiti da neiskoriavanje nekog od protonih stepena od strane odredjene instrukcije ne doprinosi smanjenju propusnosti sistema. Peto-stepeni protono organizovan sistem prikazan na Slici 4 a) naziva}emo ga u daljem tekstu procesor FX-5P.

Protonost
S1 IF
pribljavanje instrukcije

S2 ID
pribavljanje operanda iz RF polja

S3 EX
izvrsenje (izracunavanje)

S4 MA
pristup memoriji

S5 WB
upis rezultata u RF polje

a) jedinice
Load

IF

ID

EX

MA

WB

Store

IF

ID

EX

MA

aritmeticke/ logicke

IF

ID

EX

WB

b) iskorienost Slika 4. Peto-stepeni protoni sistem, FX-5P, sa jednim stepenom za pristup memoriji Na Slici 5a), ilustracije radi, prikazano je izvrenje instrukcije Lw R1, 100(R2) ; (R1) M(100+R2)

Format instrukcije Load prikazan je na Slici 5b). Aktivnosti koje se, kod FX-5P, preduzimaju su sledee: 1. u okviru stepena IF pribavlja se instrukcija i upisuje u le L1 2. u stepenu ID, na osnovu specifikacije adrese izvorinog registra R2, ita se iz RF polja sadraj registra R2 i upisuje u L2. Neposredna vrednost imm = 100 koja, u konkretnom sluaju, predstavlja 16-bitna konstanta, pomou specijalizovanog hardverskog bloka sign-ext znakovno se proiruje na 32 bita i upisuje u L2

3. U treem stepenu vri se dekodiranje opkd polja, tako da blok dekoder generie upravljaki signal ALU_op = add pomou koga se izdaje nalog ALU jedinici da sabere vrednosti oba ulazna operanda. Rezultat ALU-a je (R2)+100 i predstavlja izraunatu efektivnu adresu koja se upisuje u L3. 4. U etvrtom stepenu, MA, na osnovu efektivne adrese, pristupa se memoriji za podatke. Sa memorijske lokacije M(R2+100) ita se podatak koji se upisuje u le L4. 5. U zadnjem stepenu u registar R1 koji pripada RF polju upisuje se prethodno proitani sadraj dobavljen iz memorije podataka. 10

Protonost
memorija za instrukcije

adresa 32 (PC)

PC
+4 Inc 4

32

1. IF

instrukcija 32

(PC)+4

L1
Lw R1 R2 5 100 16 RF polje

2. ID

reg_Read data_out 32 sign_ext 32

L2
Lw R1 (R2) 32 6 5

100 32

3. EX

dekoder

ALU_op add

ALU

L3
R1 5 (R2)+100 32 mem_Read_adr 32 data_out R1 M((R2)+100)

32

4. MA L4

memorija podataka

5. WB

5 reg_write

32 data_in

RF polje

a) nain izvrenja instrukcije


6 opk d 5 Rd 5 Rs 16 imm

b) Format instrukcije Load Slika 5. Izvrenje instrukcije Lw R1, 100(R2) Na Slici 6a) prikazan je nain izivrenja instrukcije Store (konkretnije Sw R4, 200(R3)) na procesoru FX-5P. Aktivnosti koje se preduzimaju u okviru izvrenja ove instrukcije su sledee: 11

Protonost 1. U okviru stepena IF pribavlja se instrukcija i upisuje u le L1 2. U stepenu ID obavljaju se sledee akcije: a) na osnovu specifikacije registarskih polja R4 i R3 itaju se odgovarajui sadraji registara iz RF polja i upisuju u le L2 b) 16-bitna neposredna vrednost imm = 200 znakovno se proiruje na 32 bita i upisuje u le L2 3. U okviru stepena EX dekodira se opkd instrukcije i ALU jedinici izdaje nalog za sabiranje ulaznih operanada. Izlaz ALU-a predstavlja efektivna memorijska adresa memorije podataka u koju treba upisati sadraj registra R4 4. U stepenu MA sadraj registra R4 upisuje se u memoriju podataka na lokaciji (R3) + 200.

5. U okviru stepena WB, instrukcijom Store nije specificirana nikakva aktivnost.

12

Protonost
memorija za instrukcije

adresa 32 (PC)

PC
+4 Inc 4

32

1. IF

instrukcija 32

(PC)+4

L1
Sw R4 R3 reg_Read reg_Read data_out 200 5 5 data_out 16 RF polje

2. ID

sign_ext 32 32 32 Sw (R4) (R3) 32 6 32 dekoder ALU_op add ALU 200 32

L2

3. EX

L3
(R4) 32 (R3)+200 32

32

4. MA L4

data_in

mem_Write_adr

memorija podataka

5. WB
RF polje

a) Nain izvrenja instrukcije


6 opkd 5 Rt 5 Rs 16 imm

b) format instrukcije Store Slika 6. Izvrenje instrukcije Sw R4, 200 (R3)

13

Protonost

1.4.3 Instrukcija tipa Branch Instrukcije grananja (Branch) formiraju razliitu klasu instrukcija u odnosu na aritmetiko/logike i Load/Store instrukcije. Razlika se sastoji u tome to instrukcije tipa Branch upisuju novu vrednost u programski broja, PC. Instrukcije grananja mogu biti uslovne, pa ih tada nazivamo Bcc (Branch Conditional), ili bezulsovne, poznate kao Jump (Jump Unconditional). Format instrukcije Branch za uslovne i bezuslovne instrukcije grananja je jedinstven i oblika je kao na Slici 7.
6 opk d 11 cond <3..0> 5 rs 5 rt 16 cilj-adr

Slika 7. Format instrukcije Branch Jedna od interpretacije etvoro-bitnog polja cond koje je sastavni deo opkd polja je prikazana na Slici 8:
Cond:={ c<3..0>=0 0 ; ne granaj se nikad c<3..0>=1 1branch (granaj se) uvek na cilj_adr, instrukcija Jump ; c<3..0>=2 ; rs rt = 0; if rs rt = 0 branch na cilj_adr c<3..0>=3 ; rs rt if rs - rt branch na cilj_adr 0; 0 c<3..0>=4 ; rs rt > 0; if rs > rt branch na cil_adr c<3..0>=5 ; rs rt < 0; if rs < rt branch na cilj_asr
. . . . . .

vrednost uslova c<3..0> od 6 do 15 definisane su na slici 9

Slika 8 Format instrukcije tipa Branch Polja rs i rt su registri ije se vrednosti uporedjuju, a polje cilj_adr predstavlja ciljnu adresu grananja. Spisak svih instrukcija tipa Branch prikazan je na Slici 9.

14

Protonost
Tip instrukcije nikad se ne granaj uvek se granaj (bezuslovni skok) granaj se ako je nula granaj se ako je nije nula granaj se ako je parnost parna granaj se ako je parnost neparna granaj se ako postoji prenos granaj se ako ne postoji prenos granaj se ako je negativan granaj se ako je pozitivan granaj se ako ima premasaj granaj se ako nema premaaj Mnemonik Marker uslova koji se testira -----

Jnev Jump Bz Bnz Bpe Bpo Bc Bnc Bsn Bsp Bo Bno

C<3..0>=0 C<3..0>=1 C<3..0>=2 C<3..0>=3 C<3..0>=6 C<3..0>=7 C<3..0>=8 C<3..0>=9 C<3..0>=10 C<3..0>=11 C<3..0>=12 C<3..0>=13

If {z}=1 go to cilj_adr else next_adr; If {z}=0 go to cilj_adr else next_adr; If {p}=1 go to cilj_adr else next_adr; If {p}=0 go to cilj_adr else next_adr; If {c}=1 go to cilj_adr else next_adr; If {c}=0 go to cilj_adr else next_adr; If {s}=1 go to cilj_adr else next_adr; If {s}=0 go to cilj_adr else next_adr; If {o}=1 go to cilj_adr else next_adr; If {o}=0 go to cilj_adr else next_adr;

Kombinacije C<3..0>=4 i 5 su rezervisane za Bgt (branch if greater then), i Bet (branch if less then), dok su ostale dve kombinacije ostavljene za budua proirenja

Slika 9. Spisak instrukcija tipa Branch Analizom Slike 9 moemo da zakljuimo sledee: bezuslovna instrukcija grananja Jump je specijalan sluaj instrukcije Branch instrukcija Jnev sa programerske take gledita nema smisla, ali je uvedena zbog jednostavnije realizacije hardvera za grananje

Na Slici 10 prikazano je izvrenje uslovne instrukcije grananja Bz R4, R0, 500 ; if R4 - R0 = 0 go to (PC) + 4 + 500, else next_adr

Instrukcija Br (branch zero) komparira sadraje registara R4 i R0. Za sluaj da su njihove vrednosti identine razlika e biti 0, i postavie se marker uslova Z = {1} . Ako je Z = {1} obavie se grananje na cilju adresu cilj_adr, a za sluaj da je Z = {0} izvrava se naredna instrukcija u sekvenci ( na adresu next_adr), tj. ona koja neposredno sledi iza instrukcije Bz. Uobiajena je praksa, da projektanti procesora uvek rezerviu registar R0 kao lokaciju gde se uva konstanta 0 (konstanta 0 se esto puta javlja u programima pa je bolje da se ona generie u okviru samog procesora, a ne da se dobavlja iz memorije kao neposredna vrednost ime se znaajno postie na ubrzanju programa). Implikacije ovakvog pristupa, na primer kod instrukcije Bz R4, R0, adr1, su sledee: 15

Protonost Razlika R4 - R0 jednaka je pravoj vrednosti registra R4 jer se oduzimanjem 0 nita ne menja, a postavljaju se samo markeri uslova kakvi su Z zero, S sign, P parity, O overflow, C carry, i dr. Aktivnosti koje su tipine za rad svakog od protonih stepena u toku izvrenja instrukcije Bz R4, R0, 500 su sledee: 1. u okviru aktivnosti stepena IF iz memorije se pribavlja opkd instrukcije Bz R4, R0, adr1 i upisuje u le L1. Dodatno u L1 upisuje se i stanje PC-a koje ukazuje na adresu naredne instrukcije u programu (tj. (PC)+4) 2. u okviru aktivnosti stepena ID obavlja se sledee: a) na osnovu specifikacije polja R4 i R0 iz odgovarajuih registara RF polja pribavljaju se sadraji (R4) i (R0), respektivno b) 16-bitno polje ciljna_adr = 500 znakovno se poriruje na 32 bita. Znakovno proirena vrednost upisuje se u le L2. 3. Protoni stepen EX obavlja sledee aktivnosti: Gradivni blok ALU_1&Select_Logika uporedjuje sadraj registra R4 i R0. Uporedjivanje se obavlja operacijom oduzimanja, (R4) - (R0). Ovu funkciju obavlja ALU_1. Kao rezultat oduzimanja postavljaju se markeri uslova (Z,S,P,C,O). Select_logika u zavisnosti od stanja markera uslova, kao i koji se od uslova testira, postavlja svoj izlaz Condition na vrednost True 1 (kada je uslov grananja ispunjen), ili False 0 (kada uslov grananja nije ispunjen). Izlaz Condition se dovodi na Sel multipleksera MUX koji je sastavni deo logike IF stepena, a koristi se da selektuje koji e se od ulaza MUX-a propustiti na njegov izlaz, tj. dovesti na ulaz PC-a. Kada se ulaz_0 MUX-a propusti na izlaz, program produava sa izvrenjem naredne instrukcije u sekvenci, a kada se ulaz-1 propusti na izlaz obavlja se grananje na adresi cilj_adr. ii) Gradivni blok ALU_2 obavlja sabiranje vrednosti (PC)+4 i znakovno pro{irenog razmetaja 500. To znai da protoni sistem koga analiziramo, kada je re o instrukcijama tipa Branch, podrava PC relativno adresiranje sa razmetajem. Vrednost na izlazu ALU_2 jednaka je cilj_adr = ((PC)+4) + 500, i odgovara adresi grananja za sluaj da je uslov grananja ispunjen 4. Protoni stepen MA ne obavlja nikakvu aktivnost 5. Protoni stepen WB ne obavlja nikakvu aktivnost. i)

16

Protonost
memorija za instrukcije

adresa 32 (PC)

PC +4 Inc 4

32

1. IF

instrukcija 32

M 1 U X 0 1

sel (PC)+4

L1
Bz R4 R0 reg_Read reg_Read data_out 6 data_out sign_ext 32 32 32 Bz (R4) 32 6 de ko de r D1 (R0) 32 de ko de r D2 32 ALU_op add 500 500 16 5 5

32 (PC)+4

2. ID

RF polje 32

L2

(PC)+4 32

3. EX

ALU_op sub

ALU_1 & selekt_logika

ALU_2

cilj_adr Condition= Time/False 1

32

L3

4. MA

L4

5. WB
RF polje

Slika 9. Izvrenje instrukcije Bz R4, R0, 500

17

You might also like