Você está na página 1de 275

ARHITEKTURA RAUNARA (pregled principa i evolucije)

Miroslav Hajdukovi

ELEKTRONSKO IZDANJE VERZIJA 2 NOVI SAD, 2004.

PREDGOVOR
Cilj ove knjige je da stvori funkcionalno zaokruenu sliku o radu raunara. Zbog toga je akcenat stavljen na pregled celine, a ne na razradu detalja. Knjiga se, zato, zaustavlja na logikom niovu i ne uputa se u razmatranje digitalnih sklopova, prisutnih ispod tog nivoa. Za izlaganje, po autorovom miljenju, sutinskih principa funkcionisanja raunara, koristi se hipotetski raunar KONCEPT. Njegov razvoj je voen idejom da se na to jednostavniji nain podri izvravanje programa, izraenih procedurnim programskim jezicima. Izlaganje kree od funkcionalnog opisa procesora, nastavlja se opisom njegovog korienja na asemblerskom nivou i zavrava se izlaganjem osnova funkcionisanja ostalih delova hipotetskog raunara KONCEPT. Da italac ove knjige ne bi ostao samo na poznavanju principa funkcionisanja hipotetskog raunara, izloena je i evolucija elektronskih raunara, sa posebnim osvrtom na karakteristike raunara u pojedinim evolucionim fazama i na faktore koji su usmeravali ovu evoluciju. Posebna panja je posveena raunarima koji su izvrili znaajan uticaj na trite i ija upotreba nije bila ograniena samo na pojedina podruja primene. Autor se zahvaljuje svom saradniku arku ivanovu za uloeni napor prilikom izrade crtea, za paljivo itanje rukopisa i ukazivanje na mnotvo greaka, kao i za sugestije koje su pomogle da se rukopis pobolja. Verzija 2 ove knjiga je nastala ispravljanjem greaka koje su uoene u tekstu njene prve verzije, kao i pojanjavanjem i proirenjem delova ovog teksta koji su bili nedovoljno razumljivi studentima.

SADRAJ 1. UVOD 1.1 POJAM ARHITEKTURE RAUNARA 1.2 MODEL RAUNARA OSOBINE PROCEDURNIH PROGRAMSKIH JEZIKA PRIMER OPTEG OPISA OBRADE PODATAKA MEMORIJA PROCESOR ADRESIRANJE SKUP NAREDBI ASEMBLER I KOMPAJLER 1.3 FIZIKA OSNOVA MODELA RAUNARA 1.4 PITANJA BROJNI SISTEMI I PREDSTAVE BROJEVA 2.1 ARITMETIKA OGRANIENOG BROJA CIFARA 2.2 PREDSTAVLJANJE REALNIH BROJEVA 2.3 BINARNI BROJNI SISTEM 2.4 ARITMETIKA OGRANIENOG BROJA CIFARA U BINARNOM BROJNOM SISTEMU 2.5 PREDSTAVLJANJE VREDNOSTI REALNOG I ZNAKOVNOG TIPA U BINARNOM BROJNOM SISTEMU 2.6 PITANJA ASEMBLERSKO PROGRAMIRANJE 3.1 NIVOI PROGRAMIRANJA 3.2 ARHITEKTURA NAREDBI PROCESORA KONCEPT 3.3 ASEMBLERSKI JEZIK KONCEPT 3.4 PRIMERI ASEMBLERSKIH PROGRAMA RAUNANJE NAJVEEG ZAJEDNIKOG DELIOCA IZLAZAK VAN OPSEGA KOD NEOZNAENIH CELIH BROJEVA IZLAZAK VAN OPSEGA KOD OZNAENIH CELIH BROJEVA RUKOVANJE MAINSKOM NORMALIZOVANOM FORMOM RUKOVANJE LOGIKIM VREDNOSTIMA RAUNANJE VREDNOSTI CELOBROJNOG IZRAZA RUKOVANJE NIZOVIMA RUKOVANJE SLOGOVIMA TUMAENJE NAINA ADRESIRANJA ZA UPRAVLJAKE NAREDBE 3.5 POTPROGRAM 3.6 MAKRO 3.7 STEK 3.8 PITANJA 1 1 1 1 2 2 3 3 4 4 5 8 9 9 13 14 17 23 26 27 27 28 35 38 38 39 40 40 41 41 42 43 44 44 48 55 60

2.

3.

4.

MEMORIJA I PROCESOR RAUNARA KONCEPT 4.1 ORGANIZACIJA MEMORIJE RAUNARA KONCEPT 4.2 KODIRANJE I MAINSKI FORMATI NAREDBI PROCESORA KONCEPT 4.3 ORGANIZACIJA PROCESORA KONCEPT 4.4 UPRAVLJANJE PROCESOROM KONCEPT MIKRO-POTPROGRAMI POJEDINIH OPERANADA MIKRO-PROGRAMI IZVRAVANJA INICIJALNI MIKRO-PROGRAM 4.5 UPRAVLJAKA JEDINICA PROCESORA KONCEPT 4.6 UPRAVLJANJE PREKIDAIMA IZ UPRAVLJAKE JEDINICE PROCESORA KONCEPT 4.7 UPRAVLJANJE PREKIDAIMA IZVAN UPRAVLJAKE JEDINICE PROCESORA KONCEPT 4.8 MAINSKI OBLICI MIKRO-PROGRAMA 4.9 MAINSKI OBLICI MIKRO-POTPROGRAMA 4.10 SADRAJI ADRESNIH MEMORIJA MIKRO-PROGRAMA I MIKRO-POTPROGRAMA 4.11 RAZMATRANJE RADA PROCESORA KONCEPT 4.12 PITANJA 5. RAUNAR KONCEPT 5.1 ORGANIZACIJA RAUNARA KONCEPT 5.2 ULAZNI I IZLAZNI UREAJI RAUNARA KONCEPT KOMANDNI JEZIK TASTATURA EKRAN RAUNAR KONCEPT SA ZNAKOVNIM ULAZOM I IZLAZOM ZNAKOVNA INTERAKCIJA KORISNIKA I RAUNARA MONITOR 5.3 VRSTE MEMORIJE 5.4 OPERATIVNI SISTEM 5.5 PREKLJUIVANJE 5.6 PREKID 5.7 SABIRNICA 5.8 VIEKORISNIKI RAD 5.9 PITANJA 6. SISTEMSKI PROGRAMI 6.1 EDITOR 6.2 ASEMBLER 6.3 MAKRO PRETPROCESOR 6.4 LINKER 6.5 LOUDER 6.6 DIBAGER 6.7 PITANJA

61 61 64 69 73 74 77 80 81 85 89 91 94 97 98 99 101 101 103 103 104 105 107 108 111 112 117 121 124 131 135 140 143 143 144 148 150 158 158 159

7.

8.

ARHITEKTURA RAUNARA 7.1 PRECIZIRANJE POJMA ARHITEKTURE RAUNARA 7.1 POKRETAI RAZVOJA ARHITEKTURE RAUNARA 7.2 PITANJA EVOLUCIJA ARHITEKTURE RAUNARA 8.1 EVOLUCIONI PERIODI 8.2 PERIOD OKO 1950. GODINE 8.3 PERIOD OKO 1960. GODINE 8.4 PERIOD OKO 1970. GODINE ARHITEKTURA NAREDBI ZA IBM SYSTEM/360 ARHITEKTURA NAREDBI ZA DEC PDP11 OSOBINE MAGNETNOG DISKA ORGANIZACIJA SABIRNICE ORGANIZACIJA ASOCIJATIVNE MEMORIJE SKRIVENA MEMORIJA VIRTUELNA MEMORIJA MEMORIJSKA HIJERARHIJA PROBLEM SINHRONIZACIJE 8.5 PERIOD OKO 1980 GODINE ARHITEKTURA NAREDBI ZA DEC VAX11/780 ARHITEKTURA NAREDBI ZA INTEL 8086 SEGMENTNA ORGANIZACIJA RADNE MEMORIJE ARHITEKTURA NAREDBI ZA INTEL 80386 PRINCIP RADA MIA OSOBINE GRAFIKIH TERMINALA PRINCIPI RADA LOKALNIH MREA VIEPROCESORSKI RAUNARI SA ZAJEDNIKOM SABIRNICOM 8.6 PERIOD OKO 1990. GODINE RISC PROCESORI IEEE 754 STANDARD ZA ARITMETIKU REALNIH BROJEVA ARHITEKTURA NAREDBI ZA MIPS INTEL PENTIUM PRO PROCESOR EVOLUCIJA MASOVNE MEMORIJE UTICAJ RISC PROCESORA NA VIRTUELNU MEMORIJU SPOJNE MREE BARIJERNA SINHRONIZACIJA 8.7 PERIOD OKO 2000. GODINE UGRAENI RAUNARI RADNE STANICE SERVERI PARALELIZAM UNUTAR PROCESORA ARHITEKTURA NAREDBI ZA INTEL ITANIUM 8.8 PITANJA

161 161 162 163 164 164 164 167 172 188 189 192 192 196 198 200 203 204 205 216 217 219 221 223 224 225 226 228 239 243 244 245 245 246 247 255 256 256 256 257 259 260 261

9.

PROCENA OSOBINA RAUNARA 9.1 NAIN PROCENE OSOBINA RAUNARA 9.2 PITANJA LITERATURA

266 266 268 269

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

1. UVOD
1.1 POJAM ARHITEKTURE RAUNARA
Arhitektura raunara (computer architecture) se bavi problemima upotrebe i pravljenja raunara. Posmatrano sa stanovita arhitekture raunara, upotreba raunara se svodi na njegovo programiranje, jer je namena raunara da izvrava programe. Rezultati programiranja zavise od osobina skupa naredbi raunara. Ovim osobinama se bavi arhitektura naredbi (instruction set architecture). Cilj pravljenja raunara je ostvarenje ili implementacija (implementation) njegove arhitekture naredbi. Implementacija arhitekture naredbi obuhvata organizaciju (organization) i izvedbu (hardware) raunara. Organizacija raunara se bavi organizacionim komponentama koje obrazuju raunar, njihovom namenom i funkcijom, kao i meusobnim odnosima ovih komponenti. Izvedba raunara se bavi problemima proizvodnje pomenutih komponenti. Pojam arhitekture raunara obuhvata i arhitekturu naredbi i njenu implementaciju. Izmeu arhitekture naredbi i njene implementacije postoji meuzavisnost, jer implementacija odraava i ograniava arhitekturu naredbi.

1.2 MODEL RAUNARA


Na arhitekturu naredbi utiu programski jezici koji se koriste za programiranje raunara. Za trino prihvaene raunare je karakteristino da su prilagoeni procedurnim (imperativnim) programskim jezicima. Njihov tipian predstavnik je programski jezik C. OSOBINE PROCEDURNIH PROGRAMSKIH JEZIKA Procedurni programski jezici omoguuju opisivanje obrada podataka koji pripadaju celom, realnom, znakovnom ili logikom skupu. Ovi skupovi se nazivaju i prosti tipovi, jer se njihove vrednosti ne mogu ralanjivati na prostije sastojke. Prosti tipovi se nazivaju i osnovni tipovi (fundamental types), jer predstavljaju osnovu za opisivanje svih obrada podataka. Za opisivanje obrada podataka koriste se operacije procedurnih programskih jezika koje omoguuju rukovanje vrednostima prostih tipova. U ovakve operacije spadaju aritmetike, relacione i logike operacije. Optost opisima obrada podataka daju promenljive. Svaku promenljivu karakteriu njeno ime, tip i vrednost. Promenljivoj se dodeljuje vrednost njenog tipa posredstvom operacije dodele. Za optost opisa obrada podataka su vane i upravljake operacije. Zahvaljujui njima redosled obavljanja operacija nije samo sekvencijalni, nego i alternativni i repetitivni.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Promenljive, vrednosti prostih tipova i operacije (upravljake i one za rukovanje promenljivim i vrednostima prostih tipova) predstavljaju osnovne elemente procedurnih programskih jezika PRIMER OPTEG OPISA OBRADE PODATAKA Kao primer opteg opisa obrade podataka moe da poslui nalaenje najveeg zajednikog delioca (NZD) neoznaenih brojeva a i b, za koje vai: a = nNZD b = mNZD Za odreivanje najveeg zajednikog delioca neoznaenih brojeva a i b potrebno je koeficijente n i m svesti na 1. To se moe postii ponavljanjem oduzimanja: |a-b| = |n-m|NZD tako da se, nakon svakog oduzimanja, promenljivoj sa veom vrednou dodeli razlika. Precizan postupak nalaenja najveeg zajednikog delioca opisuje sekvenca programa, izraena programskim jezikom C:
unsigned int a = 12; unsigned int b = 10; while (a!=b) if (a>b) a = a-b; else b = b-a;

Po izvravanju prethodne sekvence vai: a = b = NZD = 2 (radi jednostavnosti, optost prethodne sekvence je ograniena na odreivanje najveeg zajednikog delioca neoznaenih brojeva 12 i 10). MEMORIJA Prirodno je da model raunara, namenjen za izvravanje programa koji su izraeni procedurnim programskim jezicima, podri sva tri bitna elementa ovih jezika. Za podrku promenljivim, potrebna je memorija (memory), sastavljena od niza lokacija. Lokacije omoguuju predstavljanje promenljivih prostih tipova, ako mogu da sadre vrednosti prostih tipova (koje se dodeljuju ovim promenljivim). Svaka lokacija poseduje jednoznanu (numeriku) adresu (brojevi 0, 1, 2, ...), po kojoj se razlikuje od drugih lokacija. Pored adrese, lokacija moe da poseduje i posebnu oznaku ili labelu (label). Kada postoji, labela se koristi umesto adrese. Labela odgovara imenu promenljive koju predstavlja labelirana lokacija. Za lokacije je vana osobina univerzalnosti, koja podrazumeva da svaka lokacija moe da sadri vrednost bilo kog prostog tipa i adresu. Univerzalnost

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

lokacija se postie kodiranjem svih vrednosti realnog, znakovnog i logikog tipa vrednostima celog tipa, odnosno podskupom celih brojeva, koji pripadaju celom tipu. Zbog univerzalnosti lokacija, javlja se problem vieznane interpretacije sadraja lokacija. Preuzimanje vrednosti promenljive, kao i dodela vrednosti promenljivoj, podrazumeva pristupanje lokacijama, radi itanja (preuzimanja), ili pisanja (izmene) sadraja lokacija. PROCESOR Za podrku operacijama potreban je procesor (processor), sastavljen od sklopova i registara. Sklopovi omoguuju obavljanje pojedinih operacija (namenjenih za rukovanje vrednostima prostih tipova), a registri sadre vrednosti prostih tipova koje se obrauju u toku obavljanja pojedinih operacija. Registri se razlikuju od memorijskih lokacija po tome to se nalaze u procesoru i po tome to nisu oznaeni adresom ili labelom, nego posebnom oznakom. Pre obavljanja operacije, procesor preuzima oznaku operacije i njene operande. Operandi su ili vrednosti prostih tipova na koje se operacija odnosi, ili adrese lokacija na koje se operacija odnosi, odnosno, jednom reju, vrednosti. Oznaka operacije odreuje sklop u kome se obrauju vrednosti zadane operandima. Oznaka operacije i operandi obrazuju naredbu (instruction) procesora. Procesor obavlja operacije u toku izvravanja svojih naredbi. Redosled izvravanja naredbi je odreen programom. ADRESIRANJE Operandi se dele na ulazne i izlazne. Ulazni operandi odreuju (ulazne) vrednosti, koje se obrauju u toku izvravanja naredbi. Izlazni operandi odreuju (izlazne) lokacije, u koje se smetaju rezultati izvravanja naredbi. Ulazni operand se naziva neposredni (immediate) operand, kada mu odgovara ulazna vrednost. Neposredni operandi su potrebni, radi konstanti. Ulazni operand se naziva direktni (direct) operand, kada mu odgovara adresa memorijske lokacije sa ulaznom vrednou, odnosno, naziva se registarski (register) operand, kada mu odgovara oznaka registra sa ulaznom vrednou. Izlazni operand se naziva direktni operand, kada mu odgovara adresa izlazne memorijske lokacije, odnosno, naziva se registarski operand, kada mu odgovara oznaka izlaznog registra. Direktni i registarski operandi su potrebni, radi promenljivih prostih tipova. Ulazni operand se naziva indirektni (register indirect) operand, kada mu odgovara oznaka registra sa adresom memorijske lokacije sa ulaznom vrednou. Izlazni operand se naziva indirektni operand, kada mu odgovara oznaka registra sa adresom izlazne memorijske lokacije. Indirektni operandi su potrebni, radi pokazivakih promenljivih. Ulazni operand se naziva indeksni (indexed) operand, kada mu odgovaraju posebna vrednost (indeks) i oznaka registra, iji sadraj u sumi sa prethodnim indeksom daje adresu memorijske lokacije sa ulaznom vrednou.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Izlazni operand se naziva indeksni operand, kada mu odgovaraju posebna vrednost (indeks) i oznaka registra, iji sadraj u sumi sa prethodnim indeksom daje adresu izlazne memorijske lokacije. Indeksni operandi su potrebni, na primer, radi promenljivih sloenih tipova (niz ili slog). Odreivanje ulaznih vrednosti, odnosno izlaznih lokacija, se naziva i adresiranje, pa tako postoje neposredno, direktno, registarsko, indirektno i indeksno adresiranje. SKUP NAREDBI Zahvaljujui kodiranju vrednosti realnog, znakovnog i logikog tipa vrednostima celog tipa, skup naredbi procesora se svodi na podskup aritmetikih operacija, kao i na logike i upravljake operacije. Od aritmetikih operacija dovoljno je da procesor podri celobrojno sabiranje i oduzimanje, jer se ostale aritmetike operacije mogu izraziti pomou celobrojnog sabiranja i oduzimanja. I relacione operacije se svode na celobrojno oduzimanje desnog operanda relacije od levog i zakljuivanje o relaciji na osnovu vrednosti i predznaka razlike, jer: 1. relacija = vai, ako je razlika 0, 2. relacija <> vai, ako je razlika razliita od 0, 3. relacija < vai, ako je razlika negativna, 4. relacija >= vai, ako je razlika pozitivna ili 0, 5. relacija > vai, ako je razlika pozitivna, a 6. relacija <= vai, ako je razlika negativna ili 0. Slino prethodnom, operacija dodele se svodi na sabiranje (ulaznog operanda sa nulom i odlaganje zbira u izlaznu lokaciju). Logike operacije obuhvataju logiko i, logiko ili i logiko ne, a upravljake operacije bezuslovnu ili uslovnu izmenu redosleda izvravanja naredbi programa. ASEMBLER I KOMPAJLER Lokacije mogu da sadre i naredbe ako se delovi naredbi (oznaka operacije i operandi) kodiraju celim brojevima. Kod operacije i kodovi operanada naredbe obrazuju mainsku naredbu. Mainski format naredbe propisuje kako se interpretiraju cifre celog broja koji predstavlja mainsku naredbu. Simbolika predstava mainske naredbe (u kojoj se koriste simbolike oznake za operaciju i operande) se naziva asemblerska naredba. Mainske naredbe pripadaju mainskom jeziku, a asemblerske naredbe pripadaju asemblerskom jeziku. Izvravanju asemblerskih naredbi obavezno prethodi njihovo prevoenje u mainski oblik. Prevoenje asemblerskog programa, sastavljenog od asemblerskih naredbi, u mainski program, sastavljen od mainskih naredbi, obavlja poseban program prevodilac, koji se naziva asembler. Slino asembleru, prevoenje programa, sastavljenog od iskaza procedurnog programskog jezika, u asemblerski (mainski) program obavlja poseban program prevodilac, koji se naziva kompajler.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

1.3 FIZIKA OSNOVA MODELA RAUNARA


Za pravljenje prethodno opisanog modela raunara dovoljna je fizika osnova koja omoguuje predstavljanje celih brojeva, jer su vrednosti prostih tipova i delovi naredbi predstavljeni (kodirani) celim brojevima. Cifre celih brojeva se mogu predstaviti raznim nivoima fizikih veliina, kao to su elektrini napon ili jaina magnetnog polja. Praktini razlozi sugeriu korienje samo 2 nivoa fizikih veliina, odnosno 2 nivoa signala. To je dovoljno: za prikaz cifara binarnog brojnog sistema (0 : nula, 1 : jedan), ali i za prikaz logikih vrednosti (0 : netano, 1 : tano). Podudarnost cifara binarnog brojnog sistema i logikih vrednosti omoguuje da se aritmetike operacije za binarni brojni sistem opiu logikim funkcijama, pod uslovom da se binarne cifre interpretiraju kao logike vrednosti. To potvruje tablica sabiranja za binarni brojni sistem sa slike 1.2.1. a 0 0 1 1 B 0 1 0 1 a+b 0 1 1 0 prenos 0 0 0 1

Slika 1.2.1 Tablica sabiranja za binarni brojni sistem Ako se cifre iz tablice sa slike 1.2.1 interpretiraju kao logike vrednosti, tada trea kolone ove tablice opisuje logiku funkciju iskljuivo ili (exclusive or): a^b Oznaka ^ predstavlja operator programskog jezika C za logiku operaciju iskljuivo ili. etvrta kolona ove tablice opisuje logiku funkciju i (and): a&b Oznaka & predstavlja operator programskog jezika C za logiku operaciju i. Prethodno dozvoljava da se raunar napravi kao fiziki ureaj koji memorie logike vrednosti i obavlja logike funkcije. Tako, voltmetar iz elektrinog kola sa slike 1.2.2 pokazuje vrednost logike funkcije i: a&b ako stanja prekidaa (0 : otvoren, 1 : zatvoren) zavise od vrednosti logikih promenljivih a i b.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

a b 1V

Slika 1.2.2 Elektrino kolo - ekvivalent logike funkcije i Pod istim uslovima, voltmetar iz elektrinog kola sa slike 1.2.3 pokazuje vrednost logike funkcije ili (or): a|b Oznaka | predstavlja operator programskog jezika C za logiku operaciju ili.

1V

Slika 1.2.3 Elektrino kolo - ekvivalent logike funkcije ili Elektrina kola omoguuju i ostvarenje logike negacije. Tako voltmetar iz elektrinog kola sa slike 1.2.4 pokazuje vrednost logike funkcije negirano i (nand): ~(a&b) Oznaka ~ predstavlja operator programskog jezika C za logiku operaciju negacije.

a b 1V V

Slika 1.2.4 Elektrino kolo - ekvivalent logike funkcije negirano i

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Pomou logike funkcije negirano i se mogu izraziti sve ostale logike funkcije. Ako se kao operator logike funkcije negirano i odabere oznaka : ab ~(a&b) tada sledei primeri pokazuju kako se pojedine logike funkcije mogu izraziti pomou logike funkcije negirano i: a & b = (a b) (a b) a ^ b = (a a) (b b) a | b = ((a a) b) (a (b b)) a b = (a b) ((a a) (b b)) Iz prethodnog sledi da se za ostvarenje svih logikih funkcija moe koristiti jedan isti tip elektrinog kola. U elektrinim kolima ulogu prekidaa ima tranzistor. Pored ulaznog i izlaznog izvoda, koji su prikazani u sastavu svakog od prekidaa na crteima prethodnih elektrinih kola, tranzistor ima i trei, upravljaki izvod. On odreuje provodnost tranzistora, odnosno, stanje prekidaa. Na upravljaki izvod tranzistora dovodi se, na primer, nivo signala koji odgovara vrednosti neke logike promenljive, odnosno nivo signala koji odgovara vrednosti neke logike funkcije, kao to je naponski nivo, prikazan na voltmetrima iz prethodnih elektrinih kola. Ako se u sastavu prekidaa ne prikazuju upravljaki izvodi (kao to je to uraeno, radi jednostavnosti, na crteima prethodnih elektrinih kola), tada je za svaki prekida neophodno navesti njegovu upravljaku logiku funkciju. Podrazumeva se da njena vrednost odreuje stanje prekidaa, odnosno, da ta vrednost odreuje nivo signala na upravljakom izvodu tranzistora. Argumenti ovakve upravljake logike funkcije su logike vrednosti. Oni odreuju njenu vrednost, pa, na taj nain, omoguuju upravljanje prekidaima. Zato se ovakvi argumenti mogu nazvati argumenti prekidaa. Na primer, ako logika funkcija: f(a,b) = a&b opisuje upravljanje nekim prekidaem, tada od njenih logikih argumenata a i b zavisi da li je prekida otvoren ili zatvoren, pa oni predstavljaju argumente dotinog prekidaa. Lokacije, i memorijske lokacije i registri procesora, se izvode kao nizovi elija, nazvanih biti. Svakom bitu odgovara poseban fiziki ureaj, kao to je flipflop, sposoban za memorisanje jedne binarne cifre. Sve lokacije se sastoje od istog i ogranienog broja bita, organizovanih u bajte i rei. Ograniena veliina lokacija odreuje raspon operanada, odnosno najvei i najmanji operand.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Lokacije se izvode pomou sekvencijalnih kola koja omoguuju pamenje binarnih cifara, a sklopovi procesora se izvode pomou kombinacionih kola koja ostvaruju pojedine logike funkcije. Iako su principi, na kojima se zasniva rad raunara, jednostavni, nije ni malo jednostavno od principa stii do pouzdanih i jeftinih komponenti, podesnih za pravljenje praktino upotrebljivog raunara. Problemi pravljenja praktino upotrebljivog raunara izlaze van okvira ove knjige, jer je ona posveena samo izgradnji funkcionalno zaokruenog modela raunara. Ipak, namena ove knjige je da itaoca pripremi i za suoavanje sa problemima koji se sreu pri pravljenju praktino upotrebljivog raunara.

1.4 PITANJA
1. 2. 3. 4. 5. 6. 7. 8. 9. Kakvo je znaenje pojma arhitekture raunara? Koji su bitni elementi modela raunara? ta poseduje svaka lokacija? Kako se moe interpretirati sadraj lokacije u kojoj se nalazi broj 0? Kakve vrste adresiranja postoje? Koje naredbe obuhvata skup naredbi? Od kojih delova sa sastoje naredbe? Po emu se razlikuju asemblerska i mainska naredba? ta omoguuje da aritmetike operacije budu opisane pomou logikih funkcija? 10. Kakva je vanost logike funkcije negacije? 11. Kakva je uloga argumenata prekidaa?

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

2. BROJNI SISTEMI I PREDSTAVE BROJEVA


2.1 ARITMETIKA OGRANIENOG BROJA CIFARA
Celi brojevi se uvaju u lokacijama u pozicionoj predstavi, jer ona olakava obavljanje aritmetikih operacija. Zahvaljujui pozicionoj predstavi celih brojeva, postupak sabiranja i oduzimanja, za neoznaene cele brojeve, se svodi na direktnu primenu tablice sabiranja na parove korespondentnih cifara. Za oznaene cele brojeve postupak sabiranja i oduzimanja se komplikuje zbog odreivanja predznaka rezultata. Problematian je sluaj, kada su sabirci raznih predznaka. U ovom sluaju predznak rezultata je jednak predznaku sabirka sa veom apsolutnom vrednou. Nakon odreivanja predznaka, sledi potpisivanje sabiraka na ispravan nain, radi oduzimanja apsolutne vrednosti manjeg sabirka od apsolutne vrednosti veeg sabirka. Dopisivanjem ovako dobijene razlike iza prethodno odreenog predznaka nastaje traeni zbir. Vano svojstvo pozicione predstave celih brojeva je da, za ogranien broj cifara, ona dozvoljava predstavljanje oznaenih celih brojeva kao neoznaenih, eliminiui tako komplikacije prilikom njihovog sabiranja i oduzimanja. To pokazuje sledei primer: 68+(-57) = 68+(-57)+1000+(-1000) = 68+943+(-1000) = 1011+(-1000) = 11 Ako se u prethodnom primeru posmatraju samo 3 najmanje znaajne cifre, a podrazumeva se dodavanje i oduzimanje 10 3, kao i zanemarivanje prenosa sa najznaajnije od prikazanih cifara, tada se sabiranje oznaenih celih brojeva 68 i -57 moe prikazati kao: 068 (68) +943 (-57+1000) 011 (1011-1000) Broj 943 se naziva (trocifrena) komplement 10 predstava broja -57. Iz prethodnog primera sledi da se odreivanje n cifarske komplement 10 predstave negativnog broja svodi na njegovo sabiranje sa 10 n. Meutim, pomenuta komplement 10 predstava se moe odrediti i na drugi nain. On podrazumeva da se za svaku cifru brojnog sistema odredi njen komplement, odnosno cifra koja dopunjava posmatranu cifru do najvee cifre u brojnom sistemu. Na primer, za dekadni brojni sistem, sa najveom cifrom 9, komplement cifre 3 je cifra 6, jer vai 3+6=9, a komplement cifre 0 je cifra 9, jer vai 0+9=9. Namena komplemenata je da zamene pojedine cifre apsolutne vrednosti negativnog broja, prethodno dopunjene vodeim nulama do ukupnog broja cifara. Ovaj postupak se zove

10

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

komplementiranje. Njegovom primenom nastaje komplement 9 predstava negativnog broja. Uveavanjem komplement 9 predstave negativnog celog broja za 1 nastaje komplement 10 predstava negativnog broja. Komplement 10 predstava pozitivnog celog broja nastaje njegovim dopunjavanjem vodeim nulama do ukupnog broja cifara. U sluaju prethodnog primera, trocifrena komplement 10 predstava celog broja 68 je 068. Trocifrena komplement 9 predstava celog broja -57 je 942. Ona nastaje komplementiranjem cifara celog broja 057. Trocifrena komplement 10 predstava celog broja -57 je 943. Ona je za 1 vea od trocifrene komplement 9 predstave istog celog broja. U komplement 10 predstavi oznaenih celih brojeva, sve cifre nose vrednost broja, ali najznaajnija cifra ima i dodatnu ulogu, jer ukazuje na predznak broja. Tako, za komplement 10 predstavu pozitivnih celih brojeva, najznaajnija cifra je uvek 0, a za komplement 10 predstavu negativnih celih brojeva, najznaajnija cifra je uvek 9. Komplement predstava oznaenih celih brojeva pojednostavljuje procesor, jer omoguuje da se aritmetika oznaenih brojeva obavlja kao i aritmetika neoznaenih brojeva (znai, bez posmatranja predznaka brojeva). Tako sabiranje brojeva -7 i 2 moe da bude obavljeno kao sabiranje njihovih trocifrenih komplement 10 predstava 993 i 002, uz direktnu primenu tablice sabiranja na parove korespondentnih cifara i bez razmatranja predznaka. Na ovaj nain kao rezultat sabiranja se dobije 995, a to je trocifrena komplement 10 predstava broja -5. U nastavku su prikazane neke vrednosti trocifrene komplement 10 predstave oznaenih celih brojeva (njima korespondentne vrednosti, sa predznakom, su navedene u zagradama): 099 098 ... 001 000 999 ... 902 901 900 (+99) (+98) (+1) (0) (-1) (-98) (-99) (-100)

U komplement 10 predstavi, broj negativnih brojeva je za jedan vei od broja pozitivnih brojeva. Aritmetike operacije celih brojeva u komplement 10 predstavi daju celi broj u komplement 10 predstavi. To ilustruje primer oduzimanja:

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

11

010 -011 999

(+10) (+11) (-1)

Prilikom obavljanja aritmetikih operacija, prenos sa najznaajnijeg mesta u komplement 10 predstavi celih brojeva se uvek zanemaruje. Za aritmetiku ogranienog broja cifara vezan je problem pojave cifara koje izlaze van opsega, uvedenog ograniavanjem broja posmatranih cifara. Kod neoznaenih celih brojeva, ije sve cifre nose samo vrednost, do izlaska van opsega dolazi nakon pojave prenosa sa najznaajnijeg mesta: 999 +999 998 U prethodnom primeru se pojavio netaan rezultat, jer se prenos ne moe prikazati u 3 cifre. Kod oznaenih celih brojeva u komplement 10 predstavi, ija najznaajnija cifra pokazuje da li je re o pozitivnom (0) ili negativnom (9) broju, pojava cifre razliite od 0 ili 9 u najznaajnijoj poziciji broja ukazuje na izlazak van opsega: 050 +050 100 U prethodnom primeru na pojavu netanog rezultata ukazuje neodgovarajua cifra u njegovoj najznaajnijoj poziciji. Vano je zapaziti da interpretacija rezultata zavisi od interpretacije brojeva. Ako se u pretposlednjem primeru celi brojevi interpretiraju kao oznaeni u trocifrenoj komplement 10 predstavi, tada je rezultat taan (u ovom sluaju prenos se zanemaruje). Slino, ako se celi brojevi iz poslednjeg primera interpretiraju kao neoznaeni, tada je rezultat taan, jer nema prenosa sa najznaajnije pozicije. Kod odreivanja relacija, izlazak van opsega pri celobrojnom oduzimanju desnog operanda relacije od levog ne izaziva probleme, nego pomae da se izvede ispravan zakljuak o vaenju relacije. Tako, za neoznaene cele brojeve: 1. relacija = vai, ako je rezultat oduzimanja 0, 2. relacija <> vai, ako rezultat oduzimanja nije 0, 3. relacija < vai, ako se pri oduzimanju javi izlazak van opsega (u obliku prenosa), 4. relacija >= vai, ako se pri oduzimanju ne javi izlazak van opsega ili je rezultat 0,

12

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

5. relacija > vai, ako se pri oduzimanju ne javi izlazak van opsega i rezultat nije 0, a 6. relacija <= vai, ako se pri oduzimanju javi izlazak van opsega (u obliku prenosa) ili je rezultat 0. Za oznaene cele brojeve: 1. relacija = vai, ako je rezultat oduzimanja 0, 2. relacija <> vai, ako rezultat nije 0, 3. relacija < vai, ako je rezultat negativan (najznaajnija cifra 9) ili se pri oduzimanju izae van opsega (najznaajnija cifra 8), 4. relacija >= vai, ako je rezultat pozitivan (najznaajnija cifra 0) ili se pri oduzimanju izae van opsega (najznaajnija cifra 1) ili je rezultat 0, 5. relacija > vai, ako je rezultat pozitivan (najznaajnija cifra 0) ili se pri oduzimanju izae van opsega (najznaajnija cifra 1), a 6. relacija <= vai, ako je rezultat negativan (najznaajnija cifra 9) ili se pri oduzimanju izae van opsega (najznaajnija cifra 8) ili je rezultat 0. Vaenje prethodnog se moe pokazati na primerima svih tipinih odnosa koji se mogu pojaviti u nekoj relaciji. Za relaciju < sve tipine odnose pokrivaju primeri sa slike 2.1.1. levi operand 88 99 99 19 -99 -19 -99 -88 desni operand 99 88 -99 -19 99 19 -88 -99 < da ne ne ne da da da ne razlika (trocifrena komplement 10 predstava) 088-099 = 989 099-088 = 011 099-901 = 198 019-981 = 038 901-099 = 802 981-019 = 962 901-912 = 989 912-901 = 011

Slika 2.1.1 Primeri vaenja relacije < Aritmetika ogranienog broja cifara zahteva viestruku preciznost, kada se operacije odnose na vrednosti iji broj cifara je vei od broja cifara lokacije. U ovom sluaju, delovi vrednosti se uvaju u raznim lokacijama, a operacije se obavljaju za deo po deo ovih vrednosti. Za aritmetiku ogranienog broja cifara ne vae zakoni aritmetike, jer, zbog mogueg izlaska van opsega, rezultat zavisi od redosleda obavljanja operacija. To potkrepljuje sledei primer za trocifrenu preciznost: (200+800)-500 <> 200+(800-500)

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

13

u kome su navedeni neoznaeni celi brojevi. U toku formiranja levog zbira dolazi do izlaska van opsega, pa je on u optem sluaju razliit od desnog zbira, u kome se ne javlja izlazak van opsega.

2.2 PREDSTAVLJANJE REALNIH BROJEVA


Potpuna poziciona predstava je nepraktina za realne brojeve, jer ona, na primer, podrazumeva da se u broju: 0.000000127 koristi 6 nula za odreivanje poloaja znaajnih cifara iza take. Manje prostora zauzima normalizovana forma, u kojoj eksponent odreuje poloaj znaajnih cifara: 1.2710-7 Jo manje prostora je potrebno za mainsku normalizovanu formu (floatingpoint), koja sadri samo predznak realnog broja, njegovu frakciju (fraction, significand) i podeeni eksponent (biased exponent, excess). Frakcija obuhvata znaajne cifre broja. Podrazumeva se da iza prve od znaajnih cifara dolazi decimalna taka. Eksponent je podeen dodavanjem konstante podeavanja, tako da se ne mora voditi rauna o njegovom predznaku i da se olaka poreenje mainskih normalizovanih formi. Prethodni broj u mainskoj normalizovanoj formi (u 10 mesta) izgleda: 0031270000 Posmatrano s leva u desno, prva cifra prethodnog broja sadri predznak (0 : +, 1 : -), a druge dve cifre sadre podeeni eksponent. Poto 2 mesta omoguuju da eksponent bude u rasponu od -9 do +9, eksponent se podeava dodavanjem broja 102-1=10 kao konstante podeavanja, pa je raspon podeenog eksponenta od 1 do 19. Ovako podeeni eksponent omoguuje poreenje mainskih normalizovanih formi bez njihovog raspakivanja, pri emu se mora uraunati uticaj predznaka na rezultat poreenja. Preostalih sedam cifara sadri frakciju. Podrazumeva se da iza prve cifre frakcije dolazi decimalna taka. Predstava realnih brojeva u ogranienom broju cifara ne samo da ograniava dijapazon realnih brojeva koji se mogu predstaviti, nego ograniava i preciznost, jer iz datog dijapazona moe da se precizno predstavi samo ogranien broj realnih brojeva. Greka predstave realnih brojeva, koji ne mogu precizno da se predstave, raste sa veliinom eksponenta i kree se od 10-15 do 103 za prethodnu mainsku normalizovanu formu u 10 mesta. Tolika je razlika apsolutnih vrednosti 2 najmanja

14

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

susedna realna broja: 0011000000 i 0011000001, odnosno 2 najvea susedna realna broja: 0191111110 i 0191111111. U aritmetici normalizovane forme, predznak, podeeni eksponenti i frakcije se posmatraju odvojeno. Prvo se odredi predznak rezultata. Sabiranje i oduzimanje zapoinje izjednaavanjem eksponenata. Uvek se manji eksponent izjednaava sa veim, uz pomeranje decimalne take u frakciji i, eventualno, odbacivanje prekobrojnih cifara. Zatim sledi sabiranje ili oduzimanje frakcija. Na kraju se, eventualno, normalizuje rezultat. Na primer, sabiranju brojeva: 0031270000 (1.2710-7) +0091000001 (1.00000110-1) obavezno prethodi izjednaavanje eksponenta prvog broja sa eksponentom drugog broja, pri emu se odbacuju prekobrojne cifre frakcije 2 i 7. Tako nastaju brojevi: 0090000001 (0.00000110-1) (odbaene su prekobrojne cifre 2 i 7) +0091000001 (1.00000110-1) 0091000002 (1.00000210-1) Kod mnoenja, eksponenti se sabiraju, uz umanjivanje njihovog zbira za konstantu podeavanja 10, a frakcije se mnoe. Kod deljenja, eksponenti se oduzimaju, uz dodavanje njihovoj razlici konstante podeavanja, a frakcije se dele. U oba sluaja, na kraju, eventualno, sledi normalizacija rezultata. Prethodno ilustruje primer mnoenja: 0112000000 (2.010) 0124000000 (4.0102) 0138000000 (8.0103) U aritmetici normalizovane forme do izlaska van opsega (s leva, ali i s desna) dolazi samo u eksponentu, jer se prekobrojne cifre frakcije odbacuju. Odbacivanje prekobrojnih cifara frakcije moe da uzrokuje ozbiljne greke, naroito, ako u operaciji uestvuju realni brojevi koji se veoma razlikuju po apsolutnoj vrednosti. Primer za takvu vrstu greaka prua sabiranje vrlo mnogo malih realnih brojeva. Kada apsolutna vrednost zbira postane toliko velika, da su sve cifre frakcija preostalih sabiraka prekobrojne, tada ne dolazi do uveanja zbira, iako on moe biti manji od zbira preostalih (zanemarenih) sabiraka.

2.3 BINARNI BROJNI SISTEM


U binarnom brojnom sistemu koriste se samo cifre 0 i 1, njegova baza (radix) je 210, a brojevi se predstavljaju u pozicionoj predstavi. Pri prelasku iz decimalnog u binarni brojni sistem i obratno, neophodna je konverzija brojeva.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

15

Konverzije brojeva iz brojnog sistema s jednom bazom u brojni sistem s drugom bazom se zasnivaju na izjednaavanju pozicionih predstava pomenutih brojeva, radi izdvajanja nepoznatih cifara. Pri tome u ovim predstavama se koriste cifre brojnog sistema u kome se rauna. Postupak konverzije zahteva da se posebno obavlja konverzija celog, a posebno konverzija razlomljenog dela broja. Do izdvajanja nepoznatih binarnih cifara, pri konverziji celog broja iz decimalnog u binarni brojni sistem, dolazi kada se konvertovani broj deli bazom binarnog brojnog sistema. U primeru, koji sledi, koriste se cifre decimalnog brojnog sistema, jer se u njemu rauna: ...+d1101+d0100 610 0 3 1 1 1 0 610 = = = = = = = = ...+b121+b020 (ostatak deljenja) (kolinik) (ostatak deljenja) (kolinik) (ostatak deljenja) (kolinik)

...+b121+b020 |:2 b0 ...+b221+b120 |:2 b1 ...+b321+b220 |:2 b2 1102

Do izdvajanja nepoznatih binarnih cifara, pri konverziji razlomljenog broja iz decimalnog u binarni brojni sistem, dolazi kada se konvertovani broj mnoi bazom binarnog brojnog sistema. U sledeem primeru koriste se cifre decimalnog brojnog sistema, jer se u njemu rauna: d-110-1+d-210-2+... 0.375 0 0.75 1 0.5 1 0 0.37510 = = = = = = = = b-12-1+b-22-2+... (celi deo proizvoda) (razlomljeni deo proizvoda) (celi deo proizvoda) (razlomljeni deo proizvoda) (celi deo proizvoda) (razlomljeni deo proizvoda)

b-12-1+b-22-2+... |2 b-1 b-22-1+b-32-2+... |2 b-2 b-32-1+b-42-2+... |2 b-3 0.0112

Algoritam konverzije razlomljenog broja iz decimalnog u binarni brojni sistem ne mora da ima kraj. To pokazuje primer konvertovanja razlomljenog broja 0.210, prikazan na slici 2.3.1:

16

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

razlomljeni deo proizvoda 0.2 0.4 0.8 0.6 0.2

proizvod (2) 0.4 0.8 1.6 1.2 0.4

celi deo proizvoda 0 = b-1 0 = b-2 1 = b-3 1 = b-4 0 = b-5

Slika 2.3.1 Konvertovanje razlomljenog broja 0.2 10 U primeru sa slike 2.3.1 se javlja beskonana periodinost, pa je rezultat konverzije priblian: 0.210 0.00112 Konverzija celog broja iz binarnog u decimalni brojni sistem se svodi na mnoenje cifara konvertovanog broja bazom binarnog brojnog sistema. U sledeem primeru koriste se cifre decimalnog brojnog sistema, jer se u njemu rauna: ...+b222+b121+b020 X10 X10 X10 X10 X10 X10 610 = = = = = = = = ((...+b2)2+b1) 2+b0

1102 ((b2) 2+b1) 2+b0 b2 = 1 X102+b1 = 12+1 = 3 X102+b0 = 32+0 = 6 6 1102

Konverzija razlomljenog broja iz binarnog u decimalni brojni sistem se svodi na deljenje cifara konvertovanog broja bazom binarnog brojnog sistema. U sledeem primeru koriste se cifre decimalnog brojnog sistema, jer se u njemu rauna: b-12-1+b-22-2+b-32-3+... = (b-1+(b-2+(b-3+...)/2)/2)/2

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

17

X10 X10 X10 X10 X10 X10 X10 0.187510

= = = = = = = =

0.00112 (b-1+(b-2+(b-3+(b-4)/2)/2)/2)/2 b-4 = 1 X10/2+b-3 = 1/2+1 X10/2+b-2 = 1.5/2+0 X10/2+b-1 = 0.75/2+0 X10/2 = 0.375/2 0.00112

= = = =

1.5 0.75 0.375 0.1875

Poto konverzija 0.210 daje priblino 0.00112, a konverzija 0.00112 daje 0.187510, sledi da je: 0.210 0.187510 odnosno da je greka aproksimacije 0.0125 10. Za skraeno predstavljanje brojeva iz binarnog brojnog sistema koristi se heksadecimalni brojni sistem, jer jedna heksadecimalna cifra zamenjuje etiri binarne cifre. U heksadecimalnom brojnom sistemu koriste se cifre 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A(1010), B(1110), C(1210), D(1310), E(1410) i F(1510). Njegova baza je 1610, a brojevi se predstavljaju u pozicionoj predstavi. Konverzija broja iz binarnog u heksadecimalni brojni sistem se sastoji od zamena po etiri binarne cifre jednom heksadecimalnom cifrom. Pre toga se binarni broj dopuni vodeim nulama do broja cifara koji je deljiv sa 4: 10111112 = 5F16 010111112 = 027+126+025+124+123+122+121+120 = (023+122+021+120)24+(123+122+121+120)20 = 010124+111120 = 5161+F160 (eksponenti i baza 16 su prikazani u decimalnom brojnom sistemu). Konverzija broja iz heksadecimalnog u binarni brojni sistem se sastoji od zamene svake heksadecimalne cifre binarnim ciframa.

2.4 ARITMETIKA OGRANIENOG BROJA CIFARA U BINARNOM BROJNOM SISTEMU


I u binarnom brojnom sistemu sabiranje i oduzimanje neoznaenih celih brojeva se sastoji od direktne primene tablice sabiranja na parove korespondentnih cifara. U narednim primerima se smatra da je broj binarnih cifra ogranien na 8:

18

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

00000101 +00000011 00001000

(5) (3) (8)

00000101 -00000011 00000010

(5) (3) (2)

Za oznaene cele brojeve koristi se komplement 2 predstava, radi izbegavanja komplikacija kod njihovog sabiranja i oduzimanja. Komplement 2 predstava pozitivnih celih brojeva nastaje njihovim dopunjavanjem vodeim nulama (do ukupnog broja cifara). Komplement 2 predstava negativnih celih brojeva nastaje dodavanjem jedinice komplement 1 predstavi negativnih celih brojeva. Komplement 1 predstava negativnih celih brojeva nastaje tako, to se u njihovoj apsolutnoj vrednosti, prethodno dopunjenoj vodeim nulama, svaka nula zameni jedinicom i obrnuto: 00000010 11111101 11111110 komplement 2 predstava celog broja +2 komplement 1 predstava celog broja -2 komplement 2 predstava celog broja -2

U nastavku slede neke vrednosti osmocifrene komplement 2 predstave oznaenih celih brojeva (njima korespondentne decimalne vrednosti, sa predznakom, su navedene u zagradama): 01111111 01111110 ... 00000001 00000000 11111111 ... 10000010 10000001 10000000 (+127) (+126) (+1) (0) (-1) (-126) (-127) (-128)

I u komplement 2 predstavi, broj negativnih brojeva je za jedan vei od broja pozitivnih brojeva. Kod neoznaenih celih brojeva, pojava prenosa sa najznaajnijeg mesta ukazuje na izlazak van opsega. Kod oznaenih celih brojeva u komplement 2 predstavi, pojava neodgovarajue cifre na najznaajnijem mestu rezultata ukazuje na izlazak van opsega (na primer, kod sabiranja dva pozitivna cela broja, pojava cifre 1 na najznaajnijem mestu zbira nedvosmisleno ukazuje na izlazak van opsega). Sve sluajeve izlaska van opsega, kod sabiranja oznaenih celih brojeva u komplement 2 predstavi, pregledno prikazuje tabela na slici 2.4.1.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

19

najznaajniji bit prvog sabirka (S1) 0 0 0 0 1 1 1 1

najznaajniji bit drugog sabirka (S2) 0 0 1 1 0 0 1 1

najznaajniji bit zbira (Z) 0 1 0 1 0 1 0 1

izlazak van opsega 0 1 0 0 0 0 1 0

Slika 2.4.1 Izlasci van opsega kod sabiranja oznaenih celih brojeva u komplement 2 predstavi U tabeli sa slike 2.4.1, cifre iz prve tri kolone se interpretiraju kao celi brojevi, a cifre iz etvrte kolone se interpretiraju kao logike vrednosti. Ako se cifre u sve etiri kolone interpretiraju kao logike vrednosti, tada iz prethodne tabele sledi da je logika funkcija izlaska van opsega kod sabiranja: ((~S1)&(~S2)&Z)|(S1&S2&(~Z)) Sve sluajeve izlaska van opsega, kod oduzimanja oznaenih celih brojeva u komplement 2 predstavi, pregledno prikazuje tabela na slici 2.4.2. najznaajniji bit umanjenika (U1) 0 0 0 0 1 1 1 1 najznaajniji bit umanjioca (U2) 0 0 1 1 0 0 1 1 najznaajniji bit razlike (R) 0 1 0 1 0 1 0 1 izlazak van opsega 0 0 0 1 1 0 0 0

Slika 2.4.2 Izlasci van opsega kod oduzimanja oznaenih celih brojeva u komplement 2 predstavi

20

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

U tabeli sa slike 2.4.2, cifre iz prve tri kolone se interpretiraju kao celi brojevi, a cifre iz etvrte kolone se interpretiraju kao logike vrednosti. Ako se cifre u sve etiri kolone interpretiraju kao logike vrednosti, tada iz prethodne tabele sledi da je logika funkcija izlaska van opsega kod oduzimanja: ((~U1)&U2)&R)|(U1&(~U2)&(~R)) Interpretacija rezultata aritmetikih operacija zavisi od interpretacije brojeva. Na primer, kod sabiranja neoznaenih celih brojeva: 11111111 +11111111 11111110 (255) (255) (254)

dolazi do izlaska van opsega, jer se javlja prenos sa najznaajnijeg mesta binarnog celog broja. Kod sabiranja neoznaenih celih brojeva: 01000000 +01000000 10000000 (64) (64) (128)

ne dolazi do izlaska van opsega, jer se ne javlja prenos sa najznaajnijeg mesta binarnog celog broja. Ali, izmena interpretacije brojeva u prethodna dva primera povlai za sobom i izmenu interpretacije rezultata. Tako, kod sabiranja oznaenih celih brojeva u komplement 2 predstavi: 11111111 +11111111 11111110 (-1) (-1) (-2)

ne dolazi do izlaska van opsega, jer je predznak rezultata ispravan. Prenos sa najznaajnijeg mesta binarnog celog broja se zanemaruje, jer je re o komplement 2 predstavi brojeva. Slino, kod sabiranja oznaenih celih brojeva u komplement 2 predstavi: 01000000 +01000000 10000000 (+64) (+64) (-128)

dolazi do izlaska van opsega, jer se javlja neodgovarajua cifra na najznaajnijem mestu rezultata.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

21

I u binarnom brojnom sistemu, odreivanje relacija se svodi na oduzimanje desnog operanda relacije od levog i na zakljuivanje o vaenju relacije na osnovu toga: 1. da li je razlika jednaka nuli ili je razliita od nule, 2. da li je razlika negativna ili pozitivna, 3. da li se, pri oduzimanju neoznaenih celih brojeva, javlja izlazak van opsega u obliku prenosa ili ne, odnosno, 4. da li, pri oduzimanju oznaenih celih brojeva, razlika izlazi van opsega ili ne. Za opisivanje karakteristika razlike zgodno je uvesti posebne logike promenljive: N (nula), M (minus), P (prenos) i V (van opsega). Tako logika promenljiva N sadri 1, ako je razlika jednaka nuli. U suprotnom, ona sadri 0. Ova logika promenljiva je jednaka negaciji logikog ili svih cifara razlike. Logika promenljiva M sadri 1, ako je razlika negativna. U suprotnom, ona sadri 0. Ova logika promenljiva je jednaka najznaajnijoj cifri razlike. Logika promenljiva P sadri 1, ako se pri oduzimanju neoznaenih celih brojeva javi prenos. U suprotnom, ona sadri 0. Ova logika promenljiva je jednaka prenosu sa najznaajnijeg mesta pri oduzimanju. Logika promenljiva V sadri 1, ako, pri oduzimanju oznaenih celih brojeva, razlika izae van opsega. U suprotnom, ona sadri 0. Ova logika promenljiva je jednaka vrednosti logike funkcije izlaska van opsega kod oduzimanja. Pri odreivanju relacija, svakoj od prethodne etiri logike promenljive dodeljuje se, po oduzimanju, odgovarajua vrednost. To se radi zbog vieznane interpretacije operanada relacija. Meutim, zakljuak o vaenju relacije se oslanja samo na logike promenljive koje su znaajne za vaeu interpretaciju poreenih vrednosti. To pokazuju tabele sa slika 2.4.3 i 2.4.4. Tabela sa slike 2.4.3 sadri pregled logikih izraza od ije vrednosti zavisi vaenje pojedinih relacija za neoznaene brojeve. relacija vai = <> < >= > <= ako je taan logiki izraz N ~N P ~P (~P)&(~N) P|N

Slika 2.4.3 Prikaz uslova vaenja relacija za neoznaene brojeve Tabela sa slike 2.4.4 sadri pregled logikih izraza od ije vrednosti zavisi vaenje pojedinih relacija za oznaene brojeve.

22

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

relacija vai = <> < >= > <=

ako je taan logiki izraz N ~N M^V ~(M^V) ~(M^V)&(~N) (M^V) |N

Slika 2.4.4 Prikaz uslova vaenja relacija za neoznaene brojeve Razumevanje logikih izraza, navedenih u tabeli sa slike 2.4.4 za relacije <, >=, >, i <=, zahteva posmatranje sluajeva u kojima su oba operanda pozitivna, odnosno negativna, odnosno u kojima su operandi razliitih predznaka. Tako, tabela sa slike 2.4.5 sadri pregled karakteristinih sluajeva vaenja relacije <. levi operand + + + desni operand + + + < da da da ne ne ne M 1 1 0 1 0 0 1 0 V 0 0 1 0 0 0 1 0

Slika 2.4.5 Pregled karakteristinih sluajeva vaenja relacije < Relacija < vai, ako su oba njena operanda pozitivna, a levi je manji od desnog. Tada je razlika uvek negativna i nije van opsega (M = 1 i V = 0). Relacija < vai i kada je njen levi operand negativan, a desni pozitivan. Tada je razlika uvek ili negativna i nije van opsega (M = 1 i V = 0), ili pozitivna i van opsega (M = 0 i V = 1). Relacija < vai i ako su njena oba operanda negativna, a levi je manji od desnog. Tada je razlika uvek negativna i nije van opsega (M = 1 i V = 0). Relacija < ne vai, kada su oba njena operanda pozitivna, a levi nije manji od desnog. Tada je razlika uvek pozitivna i nije van opsega (M = 0 i V = 0). Relacija < ne vai ni ako je njen levi operand pozitivan, a desni negativan. Tada je razlika uvek ili pozitivna i nije van opsega (M = 0 i V = 0), ili negativna i van opsega (M = 1 i V = 1). Relacija <

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

23

ne vai ni kada su njena oba operanda negativna, a levi nije manji od desnog. Tada je razlika uvek pozitivna i nije van opsega (M = 0 i V = 0). I u binarnom brojnom sistemu, aritmetika ogranienog broja cifara zahteva viestruku preciznost, kada se operacije odnose na vrednosti iji broj cifara je vei od broja cifara lokacije. U ovom sluaju, delovi vrednosti se uvaju u raznim lokacijama, a operacije se obavljaju za deo po deo ovih vrednosti. Takoe, ni u binarnom brojnom sistemu za aritmetiku ogranienog broja cifara ne vae zakoni aritmetike, jer je, zbog mogunosti izlaska van opsega, rezultat zavisan od redosleda obavljanja operacija. To potkrepljuje sledei primer za osmobitnu preciznost: (10000100+10100000)-10000000 <> 10000100+(10100000-10000000) u kome su navedeni neoznaeni celi brojevi (u toku formiranja levog zbira dolazi do izlaska van opsega, pa je on u optem sluaju razliit od desnog zbira, u kome se ne javlja izlazak van opsega).

2.5 PREDSTAVLJANJE VREDNOSTI REALNOG I ZNAKOVNOG TIPA U BINARNOM BROJNOM SISTEMU


Mainska normalizovana forma se koristi i u binarnom brojnom sistemu za predstavljanje vrednosti realnog tipa. U nastavku se koristi 8 cifarskih pozicija za mainsku normalizovanu formu, u kojoj, gledajui s leva u desno, prva pozicija sadri predznak (0 : +, 1 : -). Naredne 4 pozicije sadre podeeni eksponent. Kao konstanta podeavanja koristi se vrednost 24-1=10002=8. Ona se sabira sa eksponentima koji mogu biti u rasponu od -8 do 7, pa se podeeni eksponenti nalaze u dijapazonu od 00002=0 do 11112=15. Poslednje 3 pozicije sadre tri manje znaajne cifre frakcije. Preostala, najznaajnija cifra frakcije je uvek 1, jer, kod normalizovane forme, taka dolazi iza prve znaajne cifre frakcije, razliite od 0. To je, u binarnom brojnom sistemu, cifra 1, pa se ona ne prikazuje u frakciji. Znai, frakcija je uvek razliita od nule, jer se podrazumeva da je njena najznaajnija cifra 1. Zato se za predstavljanje nule rezervie nulta vrednost podeenog eksponenta. Slede primeri brojeva, predstavljenih u mainskoj normalizovanoj formi: 101010002 000000002 010000002 010010112 011100012 -1.00022-3 0.0 +1.000220 +1.011221 +1.001226 -0.12510 +1.010 +2.7510 +72.010

I u binarnom brojnom sistemu predstava realnih brojeva u ogranienom broju cifara ograniava i dijapazon realnih brojeva, koji se mogu predstaviti, i preciznost, jer iz datog dijapazona moe da se precizno predstavi samo ogranien broj realnih

24

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

brojeva. Pri tome, greka predstave realnih brojeva, koji ne mogu precizno da se predstave, raste sa veliinom eksponenta i kree se od 2-10 do 24 za prethodnu mainsku normalizovanu formu u 8 mesta. Prethodno uvedena pravila za aritmetiku normalizovane forme vae i u binarnom brojnom sistemu. Znai, do izlaska van opsega (s leva, ali i s desna) dolazi samo u eksponentu, jer se prekobrojne cifre frakcije odbacuju. Odbacivanje prekobrojnih cifara frakcije moe da uzrokuje ozbiljne greke. Za predstavljanje znakova u bilo kom brojnom sistemu neophodno je kodirati znakove celim brojevima. Takvo kodiranje uspostavlja ASCII (American Standard Code for Information Interchange) standard. Postoji sedmobitna i osmobitna verzija ovog standarda. Ovaj standard predvia sledee kodove za slova: A : 4116 ... Z : 5A16 a : 6116 ... z : 7A16 Prikazani kodovi se odnose samo na slova engleskog alfabeta. Za cifre su predvieni sledei kodovi: 0 : 3016 ... 9 : 3916 Kodiranje je predvieno i za posebne znakove, kao to su: razmak (prazno) : 2016 ! : 2116 ... ali i za upravljake znakove, kao to su: nova linija (line feed) : 0A16 ... najava znakova koje interpretira ekran (escape) : 1B16 ... U sedmobitnoj verziji ASCII standarda, znakovi nacionalnih alfabeta zamenjuju pojedine od znakova ASCII standarda ( : [, : ], : ^, : @, : \, : {, : }, : ~, : , : |). Osmobitna verzija ASCII standarda koristi dodatnih 128

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

25

znakova za reprezentovanje znakova nacionalnih alfabeta. Poto takvih znakova ima mnogo vie od 128, uvedene su kodne strane (code page) za grupe pojedinih nacionalnih alfabeta. Svaka kodna strana sadri 256 znakova, a da bi se kodovi znakova interpretirali u skladu sa kodnom stranom, neophodno je za tekst vezati podatak o vaeoj kodnoj strani. Meutim, ni ovaj pristup ne nudi zadovoljavajue reenje (naroito ne za jezike poput kineskog). Zato je predloen UNICODE standard, koji uvodi esnastobitne kodove za pojedine znakove. Prvih 256 kodova odgovara ASCII kodovima za kodnu stranicu Latin-1, a ostali kodovi su podeljeni u zone koje su dodeljene pojedinim nacionalnim alfabetima. Postojanje znakovnih kodova za cifre omoguuje da lokacije sadre brojeve ne samo u internom (binarnom) obliku, nego i u znakovnom obliku. Na primer, binarni broj: 100000012 moe biti smeten u jednu 8 bitnu lokaciju, ali i u 8 ovakvih lokacija: 3116 3016 3016 3016 3016 3016 3016 3116 U prethodnom primeru svaka binarna cifra je predstavljena svojim znakovnim kodom, pa zauzima jednu 8 bitnu lokaciju. Konverzija broja iz znakovnog u interni oblik zahteva (1) da se iz znakovnog koda svake cifre odredi njena interna predstava i (2) da se interna predstava cifre smesti u odgovarajuu poziciju. To se postie (1) oduzimanjem znakovnog koda cifre nula od znakovnog koda posmatrane cifre datog broja i (2) mnoenjem tako dobijene razlike odgovarajuim stepenom broja 2 (baze brojnog sistema). Prethodni postupak se ponavlja za znakovne kodove svih cifara datog broja idui sa leva u desno. Konverzija broja iz internog u znakovni oblik zahteva (1) da se za internu predstavu svake cifre odredi njen znakovni kod i (2) da se znakovni kodovi poreaju u odgovarajuem redosledu. To se postie (1) dodavanjem znakovnog koda cifre nula na vrednost svake cifre iz interne predstave broja i (2) i smetanjem dobijenog znakovnog koda cifre u odgovarajuu lokaciju. Kodiranje vrednosti raznih tipova celim brojevima stvara mogunost vieznane interpretacije celih brojeva. Na primer, celi binarni broj 01001011 se moe interpretirati kao celi decimalni broj 75, kao realan decimalni broj 2.75, ali i kao znak K. Zbog razliite interpretacije, neophodna je konverzija, kada se vrednost jednog tipa dodeljuje promenljivoj drugog tipa. Na primer, ako se, bez konverzije, realnoj promenljivoj dodeli binarni broj 01001011, koji odgovara celom decimalnom broju 75, tada e ova promenljiva dobiti vrednost koja odgovara realnom decimalnom broju 2.75, jer binarni broj 01001011 predstavlja mainsku normalizovanu formu za +1.01121. Zato je potrebno, pre dodele, izvriti konverziju binarne vrednosti 01001011 u binarnu vrednost 01110001. Ona

26

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

odgovara binarnom broju +1.00126. To je priblina predstava binarnog broja +1.00101126. Znai, nakon konverzije, ova promenljiva e dobiti vrednost koja odgovara realnom decimalnom broju 72.0, to je priblina vrednost realnog decimalnog broja 75.0: 7510=10010112=1.001011261.00126=7210=01110001mainska normalizovana forma

2.6 PITANJA
1. Zato je uvedena komplement predstava oznaenih brojeva (objasniti na primeru sabiranja dva oznaena broja razliitih predznaka)? 2. Zato se ignorie prenos kod aritmetike brojeva u komplement predstavi? 3. Kakva je posledica injenice da je broj negativnih brojeva vei od broja pozitivnih brojeva u komplement predstavi? 4. Kada je potrebna viestruka preciznost (objasniti na primeru)? 5. Zato je potrebna normalizovana forma? 6. Koji su delovi mainske normalizovane forme? 7. Zato je uvedena konstanta podeavanja? 8. Kako se obavlja aritmetika brojeva predstavljenih mainskom normalizovanom formom (objasniti na primeru)? 9. Kako se obavljaju konverzije brojeva iz jednog u drugi brojni sistem (objasniti na primeru)? 10. Kako se odreuje izlazak van opsega kod sabiranja i oduzimanja brojeva u komplement 2 predstavi? 11. Zato su uvedene logike promenljive N, M, P i V? 12. Kako se odreuje vaenje relacija za neoznaene i oznaene brojeve? 13. Zato zakoni aritmetike ne vae za aritmetiku ogranienog broja cifara (objasniti na primeru)? 14. Kako izgleda mainska normalizovana forma za binarni brojni sistem (objasniti na primeru)? 15. Kako se konvertuje znakovna predstava broja u njegovu internu predstavu (objasniti na primeru)? 16. Kako se konvertuje interna predstava broja u njegovu znakovnu predstavu (objasniti na primeru)? 17. Kako se konvertuje vrednost iz jednog u drugi tip (objasniti na primeru)?

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

27

3. ASEMBLERSKO PROGRAMIRANJE
3.1 NIVOI PROGRAMIRANJA
Asemblersko programiranje se zasniva na korienju asemblerskih naredbi. Ono se nalazi na viem nivou od mainskog programiranja, koje koristi mainske naredbe. U ovom sluaju vii nivo podrazumeva apstrakciju (zanemarivanje). Tako, u primeru asemblerskog programiranja, apstrakcija znai zamenarivanje mainskih formata naredbi (ije poznavanje je neophodno za mainsko programiranje, a nebitno za asemblersko programiranje). Na jo viem nivou se nalazi programiranje procedurnim programskim jezicima, koje potpuno zanemaruje arhitekturu naredbi, jer se zasniva na vrlo uoptenom modelu raunara. Zato se procedurni programski jezici svrstavaju u grupu programskih jezika visokog nivoa, dok se mainski i asemblersli programski jezici svrstavaju u grupu programskih jezika niskog nivoa. Programiranje programskim jezicima niskog nivoa je tee od programiranja programskim jezicima visokog nivoa, jer zahteva detaljno poznavanje arhitekture naredbi. Razmiljanje na nivou arhitekture naredbi odvlai panju od sutine reavanog problema i tako uzrokuje razne greke. Iz istih razloga su programi, pisani programskim jezicima niskog nivoa, manje pregledni i tei za odravanje nego programi pisani programskim jezicima visokog nivoa. Ali, programiranje na nivou arhitekture naredbi ima i svoje prednosti, jer dozvoljava korienje svih mogunosti raunara. Zato je programiranje programskim jezicima niskog nivoa neizbeno uvek kada je potrebno na poseban nain iskoristiti mogunosti raunara. Mainske jezike je opravdano koristiti samo ako ne postoje prevodioci za asemblerske ili proceduralne programske jezike (asembleri i kompajleri). Poznavanje mainskih jezika je neophodno i za pravljenje pomenutih prevodilaca. Asemblerske jezike je opravdano koristiti, ne samo kada ne postoje prevodioci za proceduralne programske jezike (kompajleri) ili kada se ovakvi prevodioci prave, nego i u sluajevima koji zahtevaju da se mogunosti raunara iskoriste do krajnjih granica (za ta je neophodno vladanje arhitekturom naredbi koju sakrivaju programski jezici visokog nivoa). Radi olakavanja asemblerskog programiranja, razvoj asemblerskih programa je uputno zapoeti preciziranjem algoritma. Za to je zgodno koristiti, kad god je mogue, sredstva tipina za programske jezike visokog nivoa. Nakon preciziranja algoritma, panja se moe potpuno koncentrisati na izraavanje algoritma asemblerskim naredbama. Ovakav pristup asemblerskom programiranju smanjuje mogunost greke, jer u svakom momentu ograniava broj detalja o kojima se mora voditi rauna. Arhitektura naredbi, koju odraava svaki asemblerski jezik, se uvek odnosi na odreen procesor, pa se zato svaki asemblerski jezik vezuje za neki procesor. U ovoj knjizi je to hipotetski procesor, nazvan KONCEPT, ije ime ukazuje da je

28

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

njegova prevashodna namena da omogui shvatanje principa na kojima se zasniva rad raunara.

3.2 ARHITEKTURA NAREDBI PROCESORA KONCEPT


Memorija procesora KONCEPT ima do 232 lokacija, od kojih svaka sadri 32 binarne cifre, nazvane biti, pri emu krajnje desni bit (oznaen kao B0) odgovara najmanje znaajnoj binarnoj cifri, a krajnje levi bit (oznaen kao B31) odgovara najznaajnijoj binarnoj cifri. Pristupanje memorijskoj lokaciji podrazumeva pristupanje svim njenim bitima. Svaka memorijska lokacija ima dovoljno bita za prihvatanje adrese bilo koje memorijske lokacije. Adrese svih moguih memorijskih lokacija obrazuju adresni prostor raunara KONCEPT. Adresni prostor odreuje najvei mogui broj memorijskih lokacija. Procesor KONCEPT ima ukupno 16 registara opte namene, oznaenih kao R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14 i R15. Svaki od registara opte namene ovog procesora je organizovan kao memorijska lokacija. Procesor KONCEPT ima i status registar, koji je organizovan kao memorijska lokacija. Njegov (najmanje znaajan) bit SR0 sadri logiku promenljivu N (nula), bit SR1 logiku promenljivu M (minus), bit SR2 logiku promenljivu P (prenos), a bit SR3 logiku promenljivu V (van opsega). Od naina adresiranja, procesor KONCEPT podrava neposredno, direktno, registarsko, indirektno i indeksno adresiranje. U repertoaru naredbi procesora KONCEPT nalaze se naredbe za celobrojnu aritmetiku: SABERI, SABERI_P, ODUZMI, ODUZMI_P i UPOREDI. SABERI je aritmetika naredba, koja omoguuje sabiranje cele vrednosti, odreene prvim (ulaznim) operandom (PO), sa celom vrednou, odreenom drugim (ulaznim) operandom (DO), i odlaganje zbira u lokaciju, odreenu treim (izlaznim) operandom. Izvravanje ove naredbe ne menja vrednosti ulaznih operanada. Ako jedan od ulaznih operanada ima vrednost 0, tada izvravanje ove naredbe dovodi do prebacivanja vrednosti preostalog ulaznog operanda u lokaciju odreenu izlaznim operandom. Tabela sa slike 3.2.1 opisuje sabiranje korespondentnih bita prvog i drugog operanda, oznaenih kao POi i DOi, pri emu se zbir i prenos oznaavaju kao Zi i Pi+1, a prenos iz sabiranja prethodnog para bita kao Pi (i = 0, ... , 31):

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

29

POi 0 0 0 0 1 1 1 1

DOi 0 0 1 1 0 0 1 1

Pi 0 1 0 1 0 1 0 1

Zi 0 1 1 0 1 0 0 1

Pi+1 0 0 0 1 0 1 1 1

Slika 3.2.1 Tabela sabiranja parova bita (za P0 se smatra da je uvek 0). Ako se cifre iz svih pet kolona prethodne tabele interpretiraju kao logike vrednosti, tada iz prethodne tabele sledi vaenje sledeih logikih funkcija: Zi = POi^DOi^Pi Pi+1 = ((POi|DOi)&Pi)|(POi&DOi) Nakon sabiranja, menjaju se vrednosti logikih promenljivih N, M, P i V. Njihove nove vrednosti odreuju logike funkcije: N = ~(Z31|Z30||Z0) M = Z31 P = P32 V = ((~PO31)&(~DO31)&Z31)|(PO31&DO31&(~Z31)) (vrednost logike promenljive V odreuje logika funkcija izlaska van opsega kod sabiranja). SABERI_P je aritmetika naredba, koja omoguuje sabiranje cele vrednosti, odreene prvim (ulaznim) operandom (PO), sa celim vrednostima, odreenim drugim (ulaznim) operandom (DO) i zateenim sadrajem logike promenljive P (prenosom), kao i odlaganje zbira u lokaciju, odreenu treim (izlaznim) operandom. Izvravanje ove naredbe ne menja vrednosti ulaznih operanada. Ova naredba omoguuje sabiranje u viestrukoj preciznosti, jer u zbir ukljuuje i zateeni prenos, preostao iza prethodnog sabiranja. Naredba SABERI_P se razlikuje od naredbe SABERI samo po tome to kao vrednost zateenog prenosa P0 uzima vrednost logike promenljive P. ODUZMI je aritmetika naredba, koja omoguuje oduzimanje od cele vrednosti -umanjenika, odreene prvim (ulaznim) operandom (PO), cele vrednosti umanjioca, odreene drugim (ulaznim) operandom (DO), i odlaganje razlike u

30

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

lokaciju, odreenu treim (izlaznim) operandom. Izvravanje ove naredbe ne menja vrednosti ulaznih operanada. Tabela sa slike 3.2.2 opisuje oduzimanje korespondentnih bita prvog i drugog operanda, oznaenih kao POi i DOi, pri emu se razlika i prenos oznaavaju kao Ri i Pi+1, a prenos iz oduzimanja prethodnog para bita kao Pi (i = 0, ... , 31): POi 0 0 0 0 1 1 1 1 DOi 0 0 1 1 0 0 1 1 Pi 0 1 0 1 0 1 0 1 Ri 0 1 1 0 1 0 0 1 Pi+1 0 1 1 1 0 0 0 1

Slika 3.2.2 Tabela oduzimanja parova bita (za P0 se smatra da je uvek 0). Ako se cifre iz svih pet kolona prethodne tabele interpretiraju kao logike vrednosti, tada iz prethodne tabele sledi vaenje sledeih logikih funkcija: Ri = POi^DOi^Pi Pi+1 = ((DOi|Pi)&(~POi))|(DOi&Pi) Nakon oduzimanja, menjaju se i vrednosti logikih promenljivih N, M, P i V. Njihove nove vrednosti odreuju logike funkcije: N = ~(R31|R30||R0) M = R31 P = P32 V = ((~PO31)&DO31&R31)|(PO31&(~DO31)&(~R31)) (vrednost logike promenljive V odreuje logika funkcija izlaska van opsega kod oduzimanja). ODUZMI_P je aritmetika naredba, koja omoguuje oduzimanje od cele vrednosti, odreene prvim (ulaznim) operandom (PO), celih vrednosti, odreenih drugim (ulaznim) operandom (DO) i zateenim sadrajem logike promenljive P (prenosom), kao i odlaganje razlike u lokaciju, odreenu treim (izlaznim) operandom. Izvravanje ove naredbe ne menja vrednosti ulaznih operanada. Ova naredba omoguuje oduzimanje u viestrukoj preciznosti, jer u razliku ukljuuje i

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

31

zateeni prenos, preostao iza prethodnog oduzimanja. Naredba ODUZMI_P se razlikuje od naredbe ODUZMI samo po tome to kao vrednost zateenog prenosa P0 uzima vrednost logike promenljive P. UPOREDI je aritmetika naredba koja omoguuje oduzimanje od cele vrednosti, odreene prvim (ulaznim) operandom (PO), cele vrednosti, odreene drugim (ulaznim) operandom (DO) i postavljanje vrednosti logikih promenljivih N, M, P i V u skladu sa razlikom. Ova naredba se razlikuje od aritmetike naredbe ODUZMI jedino po tome to ne zahteva trei operand. Izvravanje naredbe UPOREDI ne menja vrednosti ulaznih operanada. Izvravanje ove naredbe omoguuje utvrivanje koja relacija vai izmeu vrednosti njenih ulaznih operanada, tako to, u skladu sa tom relacijom, postavlja vrednosti logikih promenljivih N, M, P i V (za odreivanje vrednosti ovih logikih promenljivih koriste se iste logike funkcije kao kod aritmetike naredbe ODUZMI). Procesor KONCEPT podrava logike naredbe: I, ILI i NE, koje omoguuju pristupanje pojedinim bitima lokacija. Pristupanje pojedinim bitima lokacija je osnovna namena i naredbi LEVO i DESNO, pa se one svrstavaju u istu grupu sa logikim naredbama. I je logika naredba, koja omoguuje odreivanje logikog i korespondentnih bita binarnih vrednosti, odreenih prvim (ulaznim) operandom (PO) i drugim (ulaznim) operandom (DO). Rezultat izvravanja ove naredbe se odlae u lokaciju, odreenu treim (izlaznim) operandom. Izvravanje ove naredbe ne menja vrednosti ulaznih operanada. Obrazovanja bita rezultata (R i) od bita ulaznih operanda (POi i DOi, za i = 0, ... , 31), opisuje logika funkcija: Ri = POi&DOi Nakon izvravanja naredbe I, menjaju se i vrednosti logikih promenljivih N, M, P i V. Njihove nove vrednosti odreuju logike funkcije: N = ~(R31|R30||R0) M = R31 P=0 V=0 ILI je logika naredba, koja omoguuje odreivanje logikog ili korespondentnih bita binarnih vrednosti, odreenih prvim (ulaznim) operandom (PO) i drugim (ulaznim) operandom (DO). Rezultat izvravanja ove naredbe se odlae u lokaciju, odreenu treim (izlaznim) operandom. Izvravanje ove naredbe ne menja vrednosti ulaznih operanada. Obrazovanja bita rezultata (R i) od bita ulaznih operanda (POi i DOi, za i = 0, ... , 31) opisuje logika funkcija: Ri = POi|DOi

32

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Nakon izvravanja naredbe ILI, menjaju se i vrednosti logikih promenljivih N, M, P i V. Njihove nove vrednosti odreuju logike funkcije: N = ~(R31|R30||R0) M = R31 P=0 V=0 NE je logika naredba, koja omoguuje negiranje bita binarne vrednosti, odreene prvim (ulaznim) operandom (PO). Rezultat izvravanja ove naredbe se odlae u lokaciju, odreenu drugim (izlaznim) operandom. Izvravanje ove naredbe ne menja vrednost ulaznog operanda. Obrazovanje bita rezultata (R i) od bita ulaznog operanda (POi, za i = 0, ... , 31) opisuje logika funkcija: Ri = ~POi Nakon izvravanja naredbe NE, menjaju se i vrednosti logikih promenljivih N, M, P i V. Njihove nove vrednosti odreuju logike funkcije: N = ~(R31|R30||R0) M = R31 P=0 V=0 LEVO je naredba, koja omoguuje pomeranje svih bita binarne vrednosti, odreene prvim (ulaznim) operandom (PO), za jedno mesto u levo. Rezultat izvravanja ove naredbe se odlae u lokaciju odreenu drugim (izlaznim) operandom. Izvravanje ove naredbe ne menja vrednost ulaznog operanda. Rezultat pomeranja u levo bita binarne vrednosti ulaznog operanda je jednak njenom mnoenju brojem 2, pa naredba LEVO omoguuje mnoenje tim brojem. Obrazovanje bita rezultata (Ri) od bita ulaznog operanda (POi, za i = 0, ... , 30) opisuju logike funkcije: Ri+1 = POi R0 = 0 Nakon izvravanja naredbe LEVO, menjaju se i vrednosti logikih promenljivih N, M, P i V. Njihove nove vrednosti odreuju logike funkcije:

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

33

N = ~(R31|R30||R0) M = R31 P = PO31 V = PO31^ PO30 DESNO je naredba, koja omoguuje pomeranje svih bita binarne vrednosti, odreene prvim (ulaznim) operandom (PO), za jedno mesto u desno. Rezultat izvravanja ove naredbe se odlae u lokaciju odreenu drugim (izlaznim) operandom. Izvravanje ove naredbe ne menja vrednost ulaznog operanda. Rezultat pomeranja u desno bita binarne vrednosti ulaznog operanda je jednak njenom deljenju brojem 2, pa naredba DESNO omoguuje deljenje oznaenih brojeva brojem 2 (ako je deljenik negativan, tada se ispravan kolinik dobije tek kada se rezultatu pomeranja doda sadraj koga, nakon pomeranja, ima logika promenljiva P). Obrazovanje bita rezultata (Ri) od bita ulaznog operanda (POi, za i = 0, ... , 30) opisuju logike funkcije: Ri = POi+1 R31 = PO31 Nakon izvravanja naredbe DESNO, menjaju se i vrednosti logikih promenljivih N, M, P i V. Njihove nove vrednosti odreuju logike funkcije: N = ~(R31|R30||R0) M = R31 P = PO0 V=0 Mainski oblici prethodnih naredbi se smetaju, u redosledu izvravanja, u memorijske lokacije sa uzastopnim rastuim adresama. Zahvaljujui tome, adrese ovakvih memorijskih lokacija su, ujedno, i adrese (mainskih) naredbi koje se nalaze u dotinim memorijskim lokacijama, pa tako one ukazuju na redosled izvravanja ovih naredbi. Ovakav, sekvencijalni redosled izvravanja naredbi je nepromenljiv i nije podesan za sluajeve u kojima obrada podataka zavisi od vrednosti obraivanih podataka. Za ovakve sluajeve potrebno je nesekvencijalno izvravanje naredbi, u kome se redosled izvravanja naredbi odreuje dinamiki (u toku izvravanja). Upravo to omoguuju uslovne i bezuslovne upravljake naredbe. Procesor KONCEPT podrava vie uslovnih upravljakih naredbi. Jedini operand svake uslovne upravljake naredbe odreuje adresu ciljne naredbe koja se izvrava nakon izvravanja pomenute uslovne upravljake naredbe i to samo ako je ispunjen uslov ove uslovne upravljake naredbe. U suprotnom, izvrava se mainska naredba koja sledi iza pomenute uslovne upravljake naredbe. Tabela sa

34

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

slike 3.2.3 sadri oznake svih uslovnih upravljakih naredbi i logike izraze koji odreuju uslov svake od ovih naredbi: oznaka uslovne upravljake naredbe SKOI_ZA_= ili SKOI_ZA_N SKOI_ZA_<> ili SKOI_ZA_NE_N SKOI_ZA_< ili SKOI_ZA_P SKOI_ZA_>= ili SKOI_ZA_NE_P SKOI_ZA_> SKOI_ZA_<= SKOI_ZA__< SKOI_ZA__>= SKOI_ZA__> SKOI_ZA__<= SKOI_ZA_M SKOI_ZA_NE_M SKOI_ZA_V SKOI_ZA_NE_V uslov uslovne upravljake naredbe N ~N P ~P (~P)&(~N) P|N M^V ~(M^V) (~(M^V))&(~N) (M^V) |N M ~M V ~V

Slika 3.2.3 Pregled uslovnih upravljakih naredbi Oznake uslovnih upravljakih naredbi, koje se nalaze u istom redu tabele sa slike 3.2.3, predstavljaju sinonime. Jedini rezultat izvravanja svake od uslovnih upravljakih naredbi je, eventualno, izmena redosleda izvravanja naredbi, dok vrednosti logikih promenljivih N, M, P i V ostaju neizmenjene. Zbog uloge koju imaju za uslovne naredbe, logike promenljive N, M, P i V se zajedno nazivaju i uslovni biti (condition codes). Za uslovne upravljake naredbe nije vano kako i kada su postavljeni uslovni biti. Ako je vrednosti ovih bita postavilo izvravanje naredbe UPOREDI, tada uslovne upravljake naredbe SKOI_ZA_= SKOI_ZA_<>, SKOI_ZA_<, SKOI_ZA_>=, SKOI_ZA_> i SKOI_ZA_<= omoguuju dinamike izmene redosleda izvravanja naredbi, zavisno od vaenja relacija za neoznaene cele brojeve, a uslovne upravljake naredbe SKOI_ZA_=, SKOI_ZA_<>, SKOI_ZA__<, SKOI_ZA__>=, SKOI_ZA__> i SKOI_ZA__<= omoguuju isto za oznaene cele brojeve. Procesor KONCEPT podrava bezuslovne upravljake naredbe: SKOI i POZOVI. SKOI je bezuslovna upravljaka naredba, iji jedini operand odreuje adresu ciljne naredbe koja se izvrava nakon izvravanja naredbe SKOI. Jedini rezultat izvravanja upravljake naredbe SKOI je izmena redosleda izvravanja naredbi (vrednosti uslovnih bita ostaju neizmenjene).

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

35

POZOVI je bezuslovna upravljaka naredba, iji jedini operand odreuje adresu ciljne naredbe koja se izvrava nakon izvravanja naredbe POZOVI. Pored izmene redosleda izvravanja naredbi, izvravanje upravljake naredbe POZOVI menja i sadraj registra R15, tako to u njega smeta adresu naredbe koja sledi iza naredbe POZOVI. Adresa, smetena u registar R15, se naziva povratna adresa (return address), jer omoguuje da, nakon odlaska na izvravanje ciljne naredbe (koju odreuje operand naredbe POZOVI), usledi povratak na izvravanje naredbe koja sledi iza naredbe POZOVI. Jedini rezultat izvravanja upravljake naredbe POZOVI je izmena redosleda izvravanja naredbi i smetanje povratne adrese u registar R15 (vrednosti uslovnih bita ostaju neizmenjene).

3.3 ASEMBLERSKI JEZIK KONCEPT


Asemblerski jezik odreuje pravila sastavljanja (sintaksu) i znaenje (semantiku) asemblerskih naredbi i programa. Ova pravila se mogu zadati precizno i koncizno pomou EBNF (Extended Backus-Naur Form) notacije. U ovoj notaciji ime pravila se navodi sa leve strane strelice ( ->), a sa desne strane stelice se navode simboli koji opisuju generisanje nekog elementa jezika. Element jezika, koji je izgenerisan na osnovu nekog pravila, se koristi umesto imena tog pravila. EBNF notacija koristi razmak za radvajanje simbola, vertikalnu crtu ( |) za razdvajanje alternativnih simbola, okrugle zagrade za grupisanje simbola, uglaste zagrade za oznaavanje simbola koji se mogu pojaviti nijednom ili jednom i vitiaste zagrade za oznaavanje simbola koji se mogu pojaviti nijednom, jednom ili vie puta. Kada znakovi, koje koristi EBNF notacija (strelica, razmak, vertikalna crta, okrugle, uglaste i vitiaste zagrade), predstavljaju simbole jezika, tada se oni navode izmeu navodnika. Primer pravila u EBNF notaciji je naveden u nastavku:
malo_slovo > a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|r|s||t|u|v|z|

Prethodno pravilo oznaava da se jedno od slova, navedenih sa desne strane strelice, koristi umesto imena malo_slovo. Analogno znaenje ima i pravilo cifra:
cifra > 0|1|2|3|4|5|6|7|8|9

Obrazovanje heksadecimalnog broja opisuje pravilo:


heksadecimalni_broj > 0{cifra|A|B|C|D|E|F}

(heksadecimalni broj zapoinje nulom, iza koje mogu da slede cifre ili velika slova A, B, C, D, E, F). Podrazumeva se da heksadecimalni broj sadri najvie do 9 znakova. Obrazovanje labele opisuje pravilo:
labela > malo_slovo{malo_slovo|cifra|_}

36

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Podrazumeva se da labela moe da sadri najvie do 30 znakova i da je obavezno jedinstvena u asemblerskom programu. Obrazovanje neposrednog operanda opisuje pravilo:
neposredni_operand > heksadecimalni_broj|#labela

Kao neposredni operand slui vrednost navedenog heksadecimalnog broja ili adresa memorijske lokacije koju oznaava navedena labela. Obrazovanje direktnog operanda opisuje pravilo:
direktni_operand > labela

Kao direktni operand slui memorijska lokacija koju oznaava navedena labela. Ako je direktni operand ulazni, sadraj ove lokacije predstavlja ulaznu vrednost, a ako je direktni operand izlazni, ova lokacija se koristi kao izlazna lokacija. Obrazovanje registarskog operanda opisuje pravilo:
registarski_operand > R(0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15)

Kao registarski operand slui registar sa navedenom oznakom. Ako je registarski operand ulazni, sadraj ovog registra predstavlja ulaznu vrednost, a ako je registarski operand izlazni, ovaj registar se koristi kao izlazna lokacija. Obrazovanje indirektnog operanda opisuje pravilo:
indirektni_operand > [registarski_operand]

Kao indirektni operand slui memorijska lokacija iju adresu sadri navedeni registar. Ako je indirektni operand ulazni, sadraj adresirane lokacije predstavlja ulaznu vrednost, a ako je indirektni operand izlazni, adresirana lokacija se koristi kao izlazna lokacija. Obrazovanje indeksnog operanda opisuje pravilo:
indeksni_operand > (heksadecimalni_broj|labela)[registarski_operand]

Kao indeksni operand slui memorijska lokacija iju adresu odreuje zbir dve komponente. Jedna komponenta je navedeni heksadecimalni broj ili adresa memorijske lokacije koju oznaava navedena labela, a druga komponenta je sadraj navedenog registra. Ako je indeksni operand ulazni, sadraj adresirane lokacije predstavlja ulaznu vrednost, a ako je indeksni operand izlazni, adresirana lokacija se koristi kao izlazna lokacija. Obrazovanje ulaznog operanda opisuje pravilo:

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

37

ulaz -> neposredni_operand |direktni_operand |registarski_operand |indirektni_operand |indeksni_operand

a obrazovanje izlaznog operanda opisuje pravilo:


izlaz -> direktni_operand |registarski_operand |indirektni_operand |indeksni_operand

Obrazovanje razmaka opisuje pravilo:


razmak > { }

(izmeu apostrofa se nalazi razmak). Obrazovanje nove linije opisuje pravilo:


nova_linija > nova linija{ }

(izmeu apostrofa se nalaze upravljaki znak nova linija i razmak). Obrazovanje obine asemblerske naredbe opisuje pravilo:
naredba -> nova_linija [labela] razmak ((SABERI|SABERI_P|ODUZMI|ODUZMI_P|I|ILI) razmak ulaz,ulaz,izlaz |(NE|LEVO|DESNO) razmak ulaz,izlaz |UPOREDI razmak ulaz,ulaz)

Obrazovanje upravljake asemblerske naredbe opisuje pravilo:


upravljaka_naredba -> nova_linija [labela] razmak (SKOI |SKOI_ZA_=|SKOI_ZA_N |SKOI_ZA_<>|SKOI_ZA_NE_N |SKOI_ZA_<|SKOI_ZA_P |SKOI_ZA_>=|SKOI_ZA_NE_P |SKOI_ZA_> |SKOI_ZA_<= |SKOI_ZA__< |SKOI_ZA__>= |SKOI_ZA__> |SKOI_ZA__<= |SKOI_ZA_M |SKOI_ZA_NE_M |SKOI_ZA_V |SKOI_ZA_NE_V |POZOVI) razmak ulaz

38

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Asemblerske naredbe u mainski oblik prevodi asembler. Podrazumeva se da on smeta mainske oblike naredbi u memorijske lokacije. Meutim, asembleru se mora izriito navesti da zauzme i eventualno inicijalizuje memorijske lokacije za promenljive. To omoguuju asemblerske direktive. Asemblerska direktiva ZAUZMI omoguuje zauzimanje vie memorijskih lokacija. Njen jedini operand odreuje broj memorijskih lokacija koje se zauzimaju. Asemblerska direktiva NAPUNI omoguuje zauzimanje jedne memorijske lokacije, iji sadraj odreuje jedini operand ove direktive. Obrazovanje asemblerskih direktiva opisuje pravilo:
direktiva -> nova_linija [labela] razmak (ZAUZMI|NAPUNI) razmak heksadecimalni_broj

Vano je uoiti da su direktive upuene asembleru (prevodiocu), a ne procesoru. Znai, direktive nisu izvrne (one izazivaju zauzimanje memorijskih lokacija, u koje se smetaju podaci). Za razliku od njih, naredbe su upuene procesoru, pa su, prema tome, izvrne (njima odgovaraju memorijske lokacije koje sadre mainske oblike naredbi). Obrazovanje tela asemblerskog programa opisuje pravilo:
telo -> {direktiva|naredba|upravljaka_naredba}

Uputno je da, u telu asemblerskog programa, sve direktive prethode naredbama, radi spreavanja da se sadraj memorijske lokacije, predviene za smetanje podataka, upotrebi kao mainski oblik naredbe. Obrazovanje celog asemblerskog programa, ili njegovog zasebnog dela, opisuje pravilo:
program -> nova_linija POETAK telo nova_linija KRAJ

Podrazumeva se da izvravanje asemblerskog programa zapoinje od prve asemblerske naredbe iz njegovog tela i (sekvencijalno) tee ka poslednjoj asemblerskoj naredbi iz njegovog tela, ako upravljake naredbe ne izmene redosled izvravanja naredbi.

3.4 PRIMERI ASEMBLERSKIH PROGRAMA


RAUNANJE NAJVEEG ZAJEDNIKOG DELIOCA Raunanje najveeg zajednikog delioca opisuje asemblerski program:

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

39

a b ponovo

vee manje kraj

POETAK NAPUNI NAPUNI UPOREDI SKOI_ZA_= SKOI_ZA_< ODUZMI SKOI ODUZMI SKOI SKOI KRAJ

0C 0A a,b kraj manje a,b,a ponovo b,a,b ponovo kraj

Telo asemblerskog programa zapoinje opisom zauzimanja i inicijalizacije ( NAPUNI) dve memorijske lokacije, za promenljive a i b. Zatim sledi opis poreenja (UPOREDI) vrednosti promenljivih a i b. Ako su pomenute vrednosti jednake, promenljive a i b sadre najvei zajedniki delilac, pa sledi odlazak (SKOI_ZA_=) u beskonanu petlju, koja oznaava kraj programa. Ako je vrednost promenljive a manja od vrednosti promenljive b (SKOI_ZA_<), vrednost promenljive b se umanjuje za vrednost promenljive a. U suprotnom, vrednost promenljive a se umanjuje za vrednost promenljive b. U oba sluaja, nakon izmene vrednosti vee promenljive, sledi opet poreenje vrednosti ovih promenljivih. IZLAZAK VAN OPSEGA KOD NEOZNAENIH CELIH BROJEVA Otkrivanje izlaska van opsega, kod sabiranja neoznaenih celih brojeva u dvostrukoj preciznosti, opisuje asemblerski program:
a_donji a_gornji b_donji b_gornji s_donji s_gornji greka POETAK NAPUNI NAPUNI NAPUNI NAPUNI ZAUZMI ZAUZMI NAPUNI SABERI SABERI_P SKOI_ZA_P SKOI SABERI SKOI KRAJ 0FFFFFFFF 0FFFFFFFF 0FFFFFFFF 0FFFFFFFF 01 01 0 a_donji,b_donji,s_donji a_gornji,b_gornji,s_gornji van_opsega kraj 01,0,greka kraj

van_opsega kraj

Za promenljive a i b, ije vrednosti se sabiraju, zauzete su i inicijalizovane po dve lokacije. Isto vai i za promenljivu s, u koju se smeta suma. Prvo se sabiraju (SABERI) manje znaajni (donji) delovi vrednosti promenljivih a i b. Zatim se sabiraju (SABERI_P) znaajniji (gornji) delovi vrednosti ovih promenljivih i prenos iz prethodnog sabiranja. Pojava prenosa u drugom sabiranju ukazuje na izlazak van

40

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

opsega (SKOI_ZA_P), to predstavlja greku i oznaava se smetanjem vrednosti 1 u promenljivu greka. IZLAZAK VAN OPSEGA KOD OZNAENIH CELIH BROJEVA Otkrivanje izlaska van opsega, kod sabiranja oznaenih celih brojeva u dvostrukoj preciznosti, opisuje asemblerski program:
a_donji a_gornji b_donji b_gornji s_donji s_gornji greka POETAK NAPUNI NAPUNI NAPUNI NAPUNI ZAUZMI ZAUZMI NAPUNI SABERI SABERI_P SKOI_ZA_V SKOI SABERI SKOI KRAJ 0FFFFFFFF 0FFFFFFFF 0FFFFFFFF 0FFFFFFFF 01 01 0 a_donji,b_donji,s_donji a_gornji,b_gornji,s_gornji van_opsega kraj 01,0,greka kraj

van_opsega kraj

Jedina razlika ovog i prethodnog programa je u nainu otkrivanja izlaska van opsega, nakon sabiranja znaajnijih delova vrednosti promenljivih a i b. U sluaju sabiranja oznaenih celih brojeva, na izlazak van opsega ukazuje postavljenost logike promenljive V (SKOI_ZA_V). RUKOVANJE MAINSKOM NORMALIZOVANOM FORMOM Rukovanje mainskom normalizovanom formom binarne predstave realnih brojeva zahteva pristupanje pojedinim bitima lokacija. Ako se za mainsku normalizovanu formu koristi cela lokacija (32 bita), tada prvi bit s leva moe da sadri predznak broja, narednih 7 bita mogu da sadre podeeni eksponent (za podeavanje se koristi konstanta 2 7-1=10000002), a preostalih 24 bita mogu da sadre 24 manje znaajna bita frakcije (najznaajniji bit frakcije je uvek 1 i ne prikazuje se). Sledi primer broja predstavljenog u upravo opisanoj mainskoj normalizovanoj formi: 11000000100000000000000000000000 = -1.10000000000000000000000020 = -1.510 Zauzimanje memorijske lokacije za realnu promenljivu i smetanje u nju prethodne vrednosti u mainskoj normalizovanoj formi, opisuje naredna asemblerska direktiva:
realan NAPUNI 0C0800000

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

41

Izmenu samo predznaka vrednosti prethodne realne promenljive, opisuje asemblerska naredba:
I realan,07FFFFFFF,realan

a vraanje predznaka na prethodnu vrednost, opisuje asemblerska naredba:


ILI realan,080000000,realan

Izdvajanje eksponenta i njegovo pomeranje za 24 mesta u desno, radi njegove pripreme za aritmetiku eksponenata, opisuju asemblerske naredbe:
I SABERI DESNO ODUZMI SKOI_ZA_NE_N realan,07F000000,R1 018,0,R2 R1,R1 R2,01,R2 ponovo

ponovo

RUKOVANJE LOGIKIM VREDNOSTIMA Dodelu (logike) vrednosti relacionog izraza dvema promenljivim, opisuje sekvenca programa, izraena programskim jezikom C:
int a,b; char c,d; ... c = (a!=b); d = c;

Prethodnoj sekvenci programa odgovara sekvenca asemblerskog programa:


a b c d ZAUZMI ZAUZMI ZAUZMI ZAUZMI ... SABERI UPOREDI SKOI_ZA_<> SABERI SABERI 01 01 01 01 01,0,c a,b dalje 0,0,c c,0,d

dalje

(konstante 01 i 0 predstavljaju vrednosti logikih promenljivih c i d). RAUNANJE VREDNOSTI CELOBROJNOG IZRAZA Dodeljivanje vrednosti celobrojnog izraza promenljivoj opisuje sekvenca programa, izraena programskim jezikom C (podrazumeva se da izraz sadri samo neoznaene cele vrednosti, za koje izlazak van opsega nije mogu):

42

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

int a,b,c; ... c = (a-b)*2+(a+b)/2;

Prethodnoj sekvenci programa odgovara sekvenca asemblerskog programa:


a b c ZAUZMI ZAUZMI ZAUZMI ... ODUZMI LEVO SABERI DESNO SABERI 01 01 01 a,b,c c,c a,b,R0 R0,R0 c,R0,c

RUKOVANJE NIZOVIMA Brojanje dana sa srednjom dnevnom temperaturom iz posmatranog intervala temperatura, i to u odreenom periodu godine, opisuje sekvenca programa, izraena programskim jezikom C:
int t[365]; int prvi,poslednji,donja,gornja,i; int broj = 0; ... for (i=prvi;i<=poslednji;i++) if ((t[i]>=donja)&&(t[i]<=gornja)) broj++;

(tabela t sadri srednje dnevne temperature za 365 dana u godini, promenljive prvi i poslednji sadre redne brojeve dana na granicama zadanog perioda u godini, promenljive donja i gornja sadre temperaturne granice posmatranog intervala temperatura, promenljiva i slui kao indeks elemenata tabele t, a promenljiva broj sadri broj dana u odreenom periodu godine, u kojima je srednja dnevna temperatura iz posmatranog intervala). Prethodnoj sekvenci programa odgovara sekvenca asemblerskog programa:

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)


t prvi poslednji donja gornja broj ZAUZMI ZAUZMI ZAUZMI ZAUZMI ZAUZMI NAPUNI ... SABERI SKOI UPOREDI SKOI_ZA__< UPOREDI SKOI_ZA__> SABERI SABERI UPOREDI SKOI_ZA_<= 016D 01 01 01 01 0 prvi,0,R0 provera t[R0],donja naredni t[R0],gornja naredni broj,01,broj R0,01,R0 R0,poslednji ponovo

43

ponovo

naredni provera

(registar R0 sadri indeks elemenata tabele t, naredba sa labelom ponovo i etiri naredbe iza nje odgovaraju if iskazu, a poslednje tri naredbe iz prethodne sekvence asemblerskog programa odgovaraju poveanju indeksa i proveri kraja for iskaza). RUKOVANJE SLOGOVIMA Dodelu vrednosti slogu, koji sadri predstavu vremena, izraenu brojem sati, minuta i sekundi, opisuje sekvenca programa, izraena programskim jezikom C:
struct {int int int b = a; vreme sat; minut; sekund;} a,b; ...

Prethodnoj sekvenci programa odgovara sekvenca asemblerskog programa:


a b ZAUZMI ZAUZMI ... SABERI SABERI SABERI SABERI SABERI SABERI 03 03 0,0,R0 a[R0],0,b[R0] R0,01,R0 a[R0],0,b[R0] R0,01,R0 a[R0],0,b[R0]

Za slog promenljive a i b su zauzete po tri memorijske lokacije. Registar R0 sadri relativnu udaljenost polja ovih promenljivih od poetnih memorijskih lokacija ovih promenljivih.

44

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

TUMAENJE NAINA ADRESIRANJA ZA UPRAVLJAKE NAREDBE Jedini ulazni operand svake upravljake naredbe odreuje adresu ciljne naredbe od koje se (eventualno) nastavlja izvravanje programa nakon izvravanja upravljake naredbe. Kao pomenuta adresa mogu posluiti: vrednost neposrednog operanda, sadraj registra i sadraj memorijske lokacije koju oznaavaju indirektni ili indeksni operand. Meutim, sadraj memorijske lokacije koju oznaava direktni operand ne moe biti interpretiran kao adresa, jer ova lokacija sadri mainsku naredbu. Zato direktni operand zahteva poseban tretman, kada se navede uz upravljaku naredbu. Poto je za upravljake naredbe interesantna adresa, a ne sadraj memorijske lokacije koju oznaava labela iz direktnog operanda, prirodno je da se direktni operand interpretira kao neposredni, kada se navede uz upravljaku naredbu.

3.5 POTPROGRAM
Potprogram omoguuje opisivanje izraunavanja vrednosti, odnosno opisivanje rukovanja strukturama podataka (vrednostima sloenih tipova). Opis potprograma prate njegovi pozivi. Razdvajanje opisa i poziva potprograma omoguuje korienje (poziv) potprograma samo na osnovu poznavanja njegove namene, a bez poznavanja njegovog opisa. To je naroito vano za postepen razvoj programa, jer znai da se svaki potprogram moe koristiti (pozivati) i pre dovrenja njegovog opisa, pod uslovom da je njegova namena precizirana. Optost opisu potprograma daje upotreba parametara, koja omoguuje da se potprogram odnosi na sve vrednosti iz skupa vrednosti, odreenog tipom parametara. Svako izvravanje potprograma se odnosi na konkretne vrednosti ovih parametara, koje se nazivaju argumenti. Njih odreuje poziv potprograma. Do izvravanja potprograma dolazi nakon njegovog poziva. U pozivu potprograma se odredi povratna adresa, od koje se nastavlja izvravanje programa, nakon izvravanja potprograma. Izvravanje potprograma zapoinje u ulaznoj taki opisa potprograma, a zavrava u izlaznoj taki ovog opisa. U ulaznoj taki potprograma se zauzimaju lokacije za lokalne promenljive potprograma, a u izlaznoj taki potprograma se ove lokacije oslobaaju. Lokalne promenljive potprograma se nazivaju i dinamike, jer postoje samo u toku izvravanja potprograma, za razliku od statikih ili globalnih promenljivih koje postoje za sve vreme izvravanja programa i koje su definisane van potprograma. Podruje vaenja (scope) ili opseg ili doseg lokalnih promenljivih je od mesta njihove definicije do kraja potprograma, a podruje vaenja globalnih promenljivih je od mesta njihove definicije do kraja programa. Potprogrami se dele na funkcije i procedure. Funkcije omoguuju opisivanje izraunavanja vrednosti, odnosno preuzimanje vrednosti promenljive. One imaju jedan ili vie ulaznih parametara (sa statusom lokalnih promenljivih) i

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

45

jednu povratnu vrednost. Povratna vrednost funkcije se koristi u izrazu, koji sadri poziv funkcije. Procedure omoguuju opisivanje izmena vrednosti promenljivih. One mogu da imaju vie ulaznih parametara, ali i vie ulazno-izlaznih parametara. Raunanje najveeg zajednikog delioca moe biti opisano u obliku funkcije. U nastavku je naveden ovakav opis funkcije, izraen programskim jezikom C:
int nzd(int a,int b) {while (a!=b) if (a>b) a = a-b; else b = b-a; return(a);};

Ulazni parametri a i b, opisa ove funkcije, odreuju vrednosti za koje se rauna najvei zajedniki delilac. Najvei zajedniki delelilac se vraa kao povratna vrednost funkcije nzd. Ako su x, y i z celobrojne promenljive, tada poziv funkcije nzd:
z = nzd(12,10);

dodeljuje promenljivoj funkcije:


z = nzd(x,y);

najvei zajedniki delilac celih brojeva 12 i 10, a poziv iste

dodeljuje promenljivoj z najvei zajedniki delilac vrednosti promenljivih x i y. Raunanje najveeg zajednikog delioca moe biti opisano i u obliku procedure. U nastavku je naveden ovakav opis procedure, izraen programskim jezikom C:
void nzd(int a,int b,int *c) {while (a!=b) if (a>b) a = a-b; else b = b-a; *c = a;};

Ulazni parametri a i b, opisa ove procedure, odreuju vrednosti za koje se rauna najvei zajedniki delilac. Najvei zajedniki delilac se dodeljuje ulazno-izlaznom parametru c. Ako su x, y i z celobrojne promenljive, tada poziv procedure nzd:
nzd(12,10,&z);

46

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

dodeljuje promenljivoj procedure:


nzd(x,y,&z);

najvei zajedniki delilac celih brojeva 12 i 10, a poziv iste

dodeljuje promenljivoj z najvei zajedniki delilac vrednosti promenljivih x i y. Potprogrami nisu iskljuivo vezani za programske jezike visokog nivoa. Opisi i pozivi potprograma se mogu javiti i u asemblerskom programu, ali su detalji opisivanja i poziva potprograma preputeni programeru. On se mora pobrinuti za prenos argumenata, za odlazak na izvravanje potprograma i za povratak iz potprograma, nakon njegovog izvravanja. Asemblerski jezik KONCEPT, olakava zadatak programera, jer sadri upravljaku naredbu POZOVI, koja omoguuje, ne samo odlazak na izvravanje potprograma, nego i smeta povratnu adresu u registar R15. Zahvaljujui tome, povratak iz potprograma omoguuje upravljaka naredba SKOI, ako se, kao njen operand, navede oznaka registra R15. Preostali registri procesora KONCEPT mogu biti iskorieni za prenos argumenata, za ta je neophodna usaglaenost opisa i poziva potprograma. Uz pretpostavku da se registar R1 koristi za smetanje vrednosti prvog ulaznog parametra, registar R2 za smetanje vrednosti drugog ulaznog parametra, a registar R0 za smetanje povratne vrednosti funkcije, asemblerski ekvivalent opisa funkcije nzd izgleda:
nzd UPOREDI SKOI_ZA_= SKOI_ZA_< ODUZMI SKOI ODUZMI SKOI SABERI SKOI R1,R2 kraj manje R1,R2,R1 nzd R2,R1,R2 nzd R1,0,R0 R15 y

vee manje kraj

Ako su za celobrojne promenljive x, lokacije:


x y z NAPUNI NAPUNI ZAUZMI 09 03 01

zauzete i inicijalizovane memorijske

tada asemblerske naredbe:


SABERI SABERI POZOVI SABERI 0C,0,R1 0A,0,R2 nzd R0,0,z

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

47

opisuju poziv asemblerskog ekvivalenta funkcije nzd, u kome se izrauna najvei zajedniki delilac celih brojeva 10 i 12, a povratna vrednost ove funkcije dodeli promenljivoj z. U prethodnom primeru, u registre R1 i R2 se smeste argumenti pre odlaska na izvravanje potprograma, a nakon povratka iz potprograma sadraj registra R0 (povratna vrednost) se smesti u promenljivu z. Slino, asemblerske naredbe:
SABERI SABERI POZOVI SABERI x,0,R1 y,0,R2 nzd R0,0,z

opisuju poziv asemblerskog ekvivalenta funkcije nzd, u kome se rauna najvei zajedniki delilac vrednosti promenljivih x i y, a povratna vrednost ove funkcije dodeli promenljivoj z. Uz pretpostavku da se registar R1 koristi za smetanje vrednosti prvog ulaznog parametra, registar R2 za smetanje vrednosti drugog ulaznog parametra, a registar R3 za smetanje adrese treeg ulazno-izlaznog parametra, asemblerski ekvivalent opisa procedure nzd izgleda:
nzd UPOREDI SKOI_ZA_= SKOI_ZA_< ODUZMI SKOI ODUZMI SKOI SABERI SKOI R1,R2 kraj manje R1,R2,R1 nzd R2,R1,R2 nzd R1,0,[R3] R15 y

vee manje kraj

Ako su za celobrojne promenljive x, lokacije:


x y z NAPUNI NAPUNI ZAUZMI 09 03 01

zauzete i inicijalizovane memorijske

tada asemblerske naredbe:


SABERI SABERI SABERI POZOVI 0C,0,R1 0A,0,R2 #z,0,R3 nzd

opisuju poziv asemblerskog ekvivalenta procedure nzd, u kome se izrauna najvei zajedniki delilac celih brojeva 10 i 12 i dodeli ulazno-izlaznoj promenljivoj z. U prethodnom primeru, pre odlaska na izvravanje potprograma, u registre R1 i R2 se

48

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

smeste vrednosti iji najvei zajedniki delilac se rauna, a u registar R3 se smesti adresa memorijske lokacije, namenjene za prihvatanje izraunatog najveeg zajednikog delioca. Slino, asemblerske naredbe:
SABERI SABERI SABERI POZOVI x,0,R1 y,0,R2 #z,0,R3 nzd

opisuju poziv asemblerskog ekvivalenta procedure nzd, u kome se izrauna najvei zajedniki delilac vrednosti promenljivih x i y i dodeli ulazno-izlaznoj promenljivoj z.

3.6 MAKRO
Korienje potprograma uvek poveava broj izvravanih naredbi, ime se produava vreme izvravanja programa. Pored toga, korienje potprograma nekad izaziva i poveanje duine programa, to znai da treba vie memorijskih lokacija za smetanje mainskog oblika programa. Prethodno se moe pokazati na primeru opisa i poziva asemblerskog ekvivalenta procedure nzd:
x y z nzd NAPUNI NAPUNI ZAUZMI ... UPOREDI SKOI_ZA_= SKOI_ZA_< ODUZMI SKOI ODUZMI SKOI SABERI SKOI ... SABERI SABERI SABERI POZOVI 09 03 01 R1,R2 kraj manje R1,R2,R1 nzd R2,R1,R2 nzd R1,0,[R3] R15 x,0,R1 y,0,R2 #z,0,R3 nzd

vee manje kraj

Ako bi poziv potprograma bio zamenjen modifikovanim opisom potprograma, tada bi prethodnoj sekvenci asemblerskog programa odgovarala sledea sekvenca:

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

49

x y z nzd

vee manje kraj

NAPUNI NAPUNI ZAUZMI ... UPOREDI SKOI_ZA_= SKOI_ZA_< ODUZMI SKOI ODUZMI SKOI SABERI

09 03 01 x,y kraj manje x,y,x nzd y,x,y nzd x,0,z

(posledice izvravanja prethodne dve sekvence asemblerskog programa nisu identine, jer poslednja sekvenca, za razliku od prve, menja vrednosti promenljivih x i y). Iz prethodnih primera sledi da se, po svakom pozivu, izvri 5 naredbi manje u pristupu u kome modifikovani opis potprograma zamenjuje njegov poziv, nego u sluaju u kome poziv dovodi do izvravanja opisa potprograma. Zavisnost broja naredbi (odnosno duine) programa od broja poziva potprograma za ova dva pristupa je prikazana, za prethodni primer, u tabeli sa slike 3.6.1. broj naredbi kada istovremeno postoje i opis i poziv potprograma 13 17 21 broj naredbi kada modifikovani opis zamenjuje poziv potprograma 8 16 24

broj poziva 1 2 3

Slika 3.6.1 Zavisnost broja naredbi od broja poziva asemblerskog ekvivalenta potprograma nzd Znai, sa stanovita duine programa, u posmatranim sluajevima sa slike 3.6.1 je bolje zamenjivati poziv potprograma modifikovaim opisom potprograma, ako se potprogram poziva manje od tri puta. Dobre osobine pristupa u kome pozivi dovode do izvravanja opisa potprograma se mogu kombinovati sa dobrim osobinama pristupa u kome modifikovani opisi potprograma zamenjuju njegove pozive. To se postie, ako svaki poziv potprograma automatski bude zamenjen njegovim modifikovanim opisom, u kome su parametri zamenjeni argumentima. Ovakvi pozivi potprograma se nazivaju veliki, odnosno makro (macro) pozivi, jer ih zamenjuju modifikovane naredbe, sadrane u opisima potprograma koji se nazivaju makro definicije. Zamenu ili supstituciju makro poziva modifikovanim naredbama iz makro definicije obavlja poseban program koji se naziva makro pretprocesor (macro

50

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

preprocessor). On procesira (obrauje) programski tekst pre asemblera i tako, pravei tekstualne izmene, priprema tekst asemblerskog programa za asembliranje (slika 3.6.2).

Asemblerski program sa makro definicijama i makro pozivima

MAKRO PRETPROCESOR

Asemblerski program

Slika 3.6.2 Uloga makro pretprocesora U toku izmena programskog, teksta zameni makro poziva naredbama iz makro definicija obavezno prethodi modifikacija ovih naredbi. U toku nje parametre iz makro definicija zamenjuju argumenti iz makro poziva. Zadatak makro pretprocesora se znatno pojednostavljuje, ako u tekstu asemblerskog programa svaka makro definicija prethodi svojim makro pozivima. Makro definicije i makro pozivi su namenjeni makro pretprocesoru (kao to su direktive namenjene asembleru), pa zato makro pozivi nisu izvrni (kao ni direktive). Prema tome, makro definicije mogu sadrati i direktive, koje zamenjuju odgovarajue makro pozive. Makro je bolje koristiti od potprograma, ako se potprogram poziva samo jednom, odnosno uvek kada primena makroa nudi krae programe. Za opis obrazovanja makro definicija i makro poziva zgodna je EBNF notacija. Tako, pravilo:
veliko_slovo > A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|R|S||T|U|V|Z|

zadaje repertoar znakova, potreban za obrazovanje makro imena. Obrazovanje makro imena opisuje pravilo:
ime > veliko_slovo{veliko_slovo|cifra|_}

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

51

Podrazumeva se da makro ime sadri najvie do 30 znakova i da je obavezno jedinstveno u asemblerskom programu. Obrazovanje makro parametara opisuje pravilo:
parametar > labela|ime

Parametar je obavezno jedinstven u makro definiciji. Obrazovanje makro argumenata opisuje pravilo:
argument > heksadecimalni_broj[(+|-|*|/)(heksadecimalni_broj|parametar)] |parametar[(+|-|*|/)(heksadecimalni_broj|parametar)] |direktni_operand |registarski_operand |indirektni_operand |indeksni_operand

Neophodno je da argument bude usaglaen sa ulogom parametra koga zamenjuje. Kada se kao argument pojavi celobrojni izraz, ija oba operanda su heksadecimalni brojevi, tada makro pretprocesor izrauna izraz i dobijenu vrednost koristi kao argument. Obrazovanje makro definicije opisuje pravilo:
makro_definicija -> nova_linija ime razmak MAKRO razmak {parametar[,]} telo nova_linija KRAJ

Iz prethodnog pravila sledi da se telo makro definicije ne razlikuje od tela asemblerskog programa. Obrazovanje makro poziva opisuje pravilo:
makro_poziv -> nova_linija [labela] razmak ime razmak {argument[,]}

Obrazovanje proirenog tela asemblerskog programa, odnosno proirenog tela makro definicije, opisuje pravilo:
telo -> {direktiva|naredba|upravljaka_naredba|makro_definicija|makro_poziv}

U makro pozivu se koristi ime prethodno definisanog makroa, sa ijim parametrima se, po broju i mestu, slau argumenti poziva. Makro pozive zamenjuju tela makroa, u kojima su parametri zamenjeni argumentima. Parametri se mogu pojaviti svugde u telu makro definicije (na primer, na mestu: labele, imena naredbe, imena direktive, operanda, parametra ili argumenta). Makro omoguuje uvoenje sinonima pojedinih naredbi, koji poveavaju itljivost (razumljivost) asemblerskih programa. Na primer, makro definicija:

52
PREBACI

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)


MAKRO SABERI KRAJ ulaz,izlaz ulaz,0,izlaz

uvodi sinonim za naredbu Tako makro poziv:


PREBACI

SABERI,

koji odgovara posebnom sluaju njene primene.

R1,R2

zamenjuje naredba:
SABERI R1,0,R2

Drugi koristan sinonim za naredbu SABERI, uvodi makro definicija:


ANULIRAJ MAKRO SABERI KRAJ lokacija 0,0,lokacija

Tako makro poziv:


ANULIRAJ R5

zamenjuje naredba:
SABERI 0,0,R5

Makro definicija:
NATRAG MAKRO SKOI KRAJ

R15

uvodi sinonim za naredbu SKOI, koji opisuje povratak iz potprograma. Tako makro poziv:
NATRAG

zamenjuje naredba:
SKOI R15

Makro definicija:

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

53

NZD nzd

vee manje kraj

MAKRO UPOREDI SKOI_ZA_= SKOI_ZA_< ODUZMI SKOI ODUZMI SKOI PREBACI KRAJ

a,b,c a,b kraj manje a,b,a nzd b,a,b nzd a,c

opisuje raunanje najveeg zajednikog delioca. Makro poziv:


NZD R1,R2,R3

zamenjuju naredbe:
nzd UPOREDI SKOI_ZA_= SKOI_ZA_< ODUZMI SKOI ODUZMI SKOI SABERI R1,R2 kraj manje R1,R2,R1 nzd R2,R1,R2 nzd R1,0,R3

vee manje kraj

Viestruki pozivi makroa NZD u jednom asemblerskom programu izazivaju viestruku pojavu istih labela (navedenih u telu ovog makroa). Ovaj problem se reava ili korienjem parametara na mestu spornih labela, ili preputanjem makro pretprocesoru da, u ovakvim sluajevima, sam generie jedinstvene labele. Telo makro definicije moe sadrati drugu makro definiciju. Pri tome poziv unutranjeg makroa obavezno sledi iza poziva vanjskog makroa, jer je tek tada unutranja makro definicija potpuno oblikovana (njen konaan izgled, u optem sluaju, zavisi od argumenata poziva vanjskog makroa). To znai, na primer, da je mogue napisati optu makro definiciju koja opisuje aritmetiku u dvostrukoj preciznosti. Na osnovu ovakve definicije mogu se stvoriti makro definicije koje opisuju sabiranje ili oduzimanje u dvostrukoj preciznosti. Prethodno ilustruje makro definicija:
DVOSTRUKO NAZIV MAKRO MAKRO OPERACIJA1 OPERACIJA2 KRAJ KRAJ NAZIV,OPERACIJA1,OPERACIJA2 gornji1,donji1,gornji2,donji2,gornji3,donji3 donji1,donji2,donji3 gornji1,gornji2,gornji3

(prethodna makro definicija zanemaruje izlazak van opsega). Makro poziv:

54

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)


DVOSTRUKO SABERI_2,SABERI,SABERI_P

zamenjuje makro definicija:


SABERI_2 MAKRO SABERI SABERI_P KRAJ gornji1,donji1,gornji2,donji2,gornji3,donji3 donji1,donji2,donji3 gornji1,gornji2,gornji3

koja opisuje sabiranje u dvostrukoj preciznosti, a makro poziv:


DVOSTRUKO ODUZMI_2,ODUZMI,ODUZMI_P

zamenjuje makro definicija:


ODUZMI_2 MAKRO ODUZMI ODUZMI_P KRAJ gornji1,donji1,gornji2,donji2,gornji3,donji3 donji1,donji2,donji3 gornji1,gornji2,gornji3

koja opisuje oduzimanje u dvostrukoj preciznosti. Makro pretprocesor omoguuje oblikovanje, ne samo makro definicija, nego i drugih delova asemblerskog programa, ako podrava uslovno asembliranje. Za uslovno asembliranje je potrebna uslovna direktiva koja odreuje pod kojim uslovom makro pretprocesor proputa na asembliranje deo asemblerskog programa, sadran u telu uslovne direktive. Obrazovanje uslova uslovne direktive opisuje pravilo:
uslov > (heksadecimalni_broj|parametar) (=|<>|>|<|>=|<=) (heksadecimalni_broj|parametar)

(uslov uslovne direktive ima oblik relacije, od ijeg vaenja zavisi tanost uslova). Obrazovanje uslovne direktive opisuje pravilo:
uslovna_direktiva -> nova_linija USLOVNO razmak uslov telo nova_linija KRAJ

Telo uslovne direktive se obrazuje na isti nain kao i telo asemblerskog programa ili makro definicije. Uslovna direktiva je upuena makro pretprocesoru (znai, nije izvrna). Obrazovanje proirenog tela asemblerskog programa, makro definicije i uslovne direktive opisuje pravilo:

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

55

telo -> {direktiva |naredba |upravljaka_naredba |makro_definicija |makro_poziv |uslovna_direktiva }

Pomou uslovne direktive je mogue, na primer, opisati obrazovanje tabele, iji prvi element sadri vrednost 0, a naredni elementi vrednosti prvih n stepena broja 2. Obrazovanje ovakve tabele opisuje naredna makro definicija koja sadri rekurzivne makro pozive. Kraj rekurzije nastupa, kada prestane vaiti uslov uslovne direktive.
TABELA MAKRO USLOVNO TABELA NAPUNI KRAJ USLOVNO NAPUNI KRAJ KRAJ stepen stepen > 0 stepen/02 stepen stepen = 0 stepen

Makro poziv:
stepeni TABELA 08

zamenjuju direktive:
stepeni NAPUNI NAPUNI NAPUNI NAPUNI NAPUNI 0 01 02 04 08

3.7 STEK
U naredbi POZOVI je predvieno uvanje samo jedne povratne adrese (jer samo toliko prostora ima u registru R15), pa zato ova naredba direktno ne podrava poziv potprograma iz potprograma, ili rekurzivne pozive potprograma, kada se mora sauvati vie (unapred nepoznat broj) povratnih adresa. Povratne adrese se koriste u obrnutom redosledu od redosleda svog nastanka (jer nastaju u pozivu potprograma, a koriste se pri povratku iz potprograma). Znai, kao prva se koristi povratna adresa koja je poslednja nastala, a kao poslednja povratna adresa koja je prva nastala, jer se prvi zavrava poslednje pozvani potprogram. Opisani redosled nastajanja i korienja povratnih adresa dozvoljava da se za njihovo privremeno uvanje koristi niz memorijskih lokacija, u koji se povratne adrese smetaju u jednom smeru, a iz koga se povratne adrese preuzimaju u drugom smeru. Uz

56

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

pretpostavku da su adrese memorijskih lokacija iz ovog niza uzastopne i rastue, tada memorijska lokacija sa poetka niza ima najmanju, a memorijska lokacija sa kraja niza najveu adresu. Ako se povratne adrese smetaju u pomenuti niz od njegovog kraja ka njegovom poetku, a preuzimaju iz pomenutog niza u suprotnom smeru, poev od lokacije, do koje je niz bio popunjen, tada je za rukovanje nizom jedino vano znati adresu lokacije, do koje je niz popunjen. Od ove lokacije se nastavlja punjenje niza ka njegovom poetku, odnosno, od nje se niz prazni ka njegovom kraju. Drugim reima, sve napunjene lokacije niza su koncentrisane na njegovom kraju, a sve slobodne lokacije na njegovom poetku). Ovako organizovan niz memorijskih lokacija se naziva stek (stack). Numerika adresa lokacije, do koje je stek popunjen, se obino uva u registru, koji se naziva pokaziva steka (stack pointer). Na slici 3.7.1 je prikazan izgled steka. nie adrese prazan deo steka popunjeni deo steka vie adrese vrh steka
<-

...

pokaziva steka

... Slika 3.7.1 Izgled steka

Rukovanje stekom obuhvata: zauzimanje memorijskih lokacija za stek, pripremu steka za korienje (odnosno, inicijalizaciju pokazivaa steka), smetanje sadraja u stek i preuzimanje sadraja iz steka. Opti opis rukovanja stekom sadri naredna makro definicija:
STEK stek PRIPREMI_STEK MAKRO ZAUZMI MAKRO SABERI KRAJ MAKRO ODUZMI PREBACI KRAJ MAKRO PREBACI SABERI KRAJ KRAJ veliina,R veliina #stek,veliina,R sadraj R,01,R sadraj,[R] sadraj [R],sadraj R,01,R

NA_STEK

SA_STEKA

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

57

Jedina dva parametra prethodne makro definicije slue za odreivanje: veliine steka i oznake registra pokazivaa steka. Oni omoguuju potpuno oblikovanje makro definicija, sadranih u makro definiciji STEK. Makro definicija STEK je napravljena uz pretpostavku da je broj lokacija steka uvek vei od broja sadraja koji se smetaju na stek. Takoe, podrazumeva se da se stek ispravno koristi, odnosno da se sa steka preuzimaju samo u njega smeteni sadraji. Makro poziv:
STEK 0100,R12

zamenjuju sledea direktiva i makro definicije:


stek PRIPREMI_STEK ZAUZMI MAKRO SABERI KRAJ MAKRO ODUZMI PREBACI KRAJ MAKRO PREBACI SABERI KRAJ 0100 #stek,0100,R12 sadraj R12,01,R12 sadraj,[R12] sadraj [R12],sadraj R12,01,R12

NA_STEK

SA_STEKA

koje dovode do zauzimanja 256 memorijskih lokacija (10016) za stek, do odreivanja registra R12 kao pokazivaa steka i do oblikovanja makro definicija PRIPREMI_STEK, NA_STEK i SA_STEKA (korienje prve od njih obavezno prethodi korienju poslednje dve). Stek se koristi, ne samo za uvanje povratnih adresa, nego i za prenos argumenata u potprogram. Skup lokacija na steku, koje sadre povratnu adresu i argumente se naziva frejm (stack frame). Frejm nastaje prilikom poziva potprograma, a nestaje po povratku iz potprograma. Lokacijama frejma se moe pristupati posredstvom pokazivaa steka, ali tada probleme stvaraju izmene pokazivaa steka (koje stalno menjaju udaljenost frejma od vrha steka), kao i istovremeno postojanje vie frejmova na steku. Zato je bolje koristiti poseban registar za pristup lokacijama frejma. Takav registar se naziva pokaziva frejma (base pointer). On pokazuje na baznu lokaciju ili bazu frejma. Da bi se za svaki od istovremeno postojeih frejmova mogao odrediti njegov pokaziva, zgodno je uvezati frejmove. To se postie ako baza najmlaeg frejma sadri pokaziva prethodnog frejma i tako dalje. Podrazumeva se da aktivni pokaziva frejma pokazuje na bazu najmlaeg frejma. Pored povratne adrese, argumenata i pokazivaa prethodnog frejma, frejm moe da sadri i lokalne (dinamike) promenljive. Slika 3.7.2 prikazuje mogui izgled ovakvog frejma.

58

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

nie adrese

frejm

vie adrese

... lokalna promenljiva m ... lokalna promenljiva 1 pokaziva prethodnog frejma povratna adresa argument 1 argument 2 ... argument n ... Slika 3.7.2 Izgled frejma

<-

pokaziva steka

<-

pokaziva frejma

Za pristup lokacijama frejma sa slike 3.7.2 zgodno je indeksno adresiranje, koje koristi pokaziva frejma i relativnu udaljnost lokacije frejma od njegove baze. Ako registar R11 sadri pokaziva frejma, tada poreenje argumenta 1 i argumenta 2 sa slike 3.7.2 opisuje naredba:
UPOREDI 02[R11],03[R11]

Stvaranje frejma je vezano za poziv potprograma. Ono se moe objasniti na primeru za poziv procedure nzd, (izraene programskim jezikom C):
nzd(x,y,&z);

Stvaranje frejma za prethodni poziv opisuje asemblerska sekvenca:


x y z ZAUZMI ZAUZMI ZAUZMI ... NA_STEK NA_STEK NA_STEK NA_STEK POZOVI SA_STEKA SABERI 01 01 01 #z y x R15 nzd R15 R12,03,R12

Pri tome se podrazumeva da registar R12 sadri pokaziva steka, da registar R11 sadri pokaziva frejma i da pozvani asemblerski ekvivalent procedure nzd izgleda:

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

59

nzd

ponovo

vee manje kraj

NA_STEK PREBACI NA_STEK UPOREDI SKOI_ZA_= SKOI_ZA_< ODUZMI SKOI ODUZMI SKOI PREBACI PREBACI SA_STEKA SA_STEKA NATRAG

R11 R12,R11 R10 02[R11],03[R11] kraj manje 02[R11],03[R11],02[R11] ponovo 03[R11],02[R11],03[R11] ponovo 04[R11],R10 02[R11],[R10] R10 R11

Stanje na steku, neposredno pre izvravanja naredbe 3.7.3. nie adrese


... R10 R11 <-R12 <-R11

UPOREDI,

je prikazano na slici

frejm

R15 x y #z

vie adrese

...

Slika 3.7.3 Primer frejma Donje 4 lokacije frejma sa slike 3.7.3 nastanu izvravanjem naredbi koje prethode naredbi POZOVI iz poziva potprograma nzd, a preostale dve lokacije nastanu izvravanjem prve 3 naredbe iz ovoga potprograma. Izvravanja pretposlednje 2 naredbe ovoga potprograma ponite prve 2 lokacije frejma, a izvravanja poslednje dve naredbe iz poziva ovoga potprograma ponite poslednje 4 lokacije frejma. Koritenje steka moe da uzrokuje dinamike greke u izvravanju programa (na primer, ako se ispostavi da, za neko izvravanje programa, broj lokacija steka nije dovoljan za smetanje svih sadraja). Za rukovanje stekom nisu predviene posebne naredbe, a ni posebni naini adresiranja u arhitekturi naredbi procesora KONCEPT, da bi ovaj procesor bio to jednostavniji. Kada bi procesor KONCEPT podravao stek, tada bi u njegovom repertoaru naredbi trebalo da postoje naredbe koje su ekvivalentne makroima NA_STEK, SA_STEKA i NATRAG. U tom sluaju bi naredbe POZOVI i NATRAG trebalo da koriste stek umesto registra R15.

60

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

3.8 PITANJA
1. U emu je razlika izmeu programskih jezika visokog i niskog nivoa? 2. Kada je neophodno koristiti programske jezike niskog nivoa (objasniti na primeru)? 3. ta je adresni prostor? 4. Koju namenu ima status registar? 5. Koje grupe naredbi postoje u skupu naredbi procesora KONCEPT? 6. Koji razlozi utiu na postavljanje uslovnih bita kod pojedinih naredbi (objasniti na primeru)? 7. Kako se dele upravljake naredbe? 8. emu slui povratna adresa? 9. U emu je razlika izmeu asemblerskih naredbi i direktiva? 10. U emu je razlika izmeu otkrivanja izlaska van opsega kod oznaenih i neoznainih brojeva? 11. Kako se interpretira direktno adresiranje kod upravljakih naredbi i zato? 12. Koju ulogu ima potprogram? 13. U emu je razlika izmeu parametara i argumenata? 14. U emu je razlika izmeu globalnih i lokalnih promenljivih? 15. U emu je razlika izmeu statikih i dinamikih promenljivih? 16. ta se deava u toku poziva potprograma? 17. Kako se dele potprogrami? 18. U emu je razlika izmeu ulaznih i ulazno-izlaznih parametara? 19. Koju ulogu ima makro? 20. Na osnovu kojih kriterijuma se porede potprogrami i makroi? 21. ta je zadatak makro pretprocesora (objasniti na primeru)? 22. Kako se izbegava viestruka pojava istih labela iz makro definicije pri makro proirenju? 23. Da li makro poziv moe da se pojavi u makro definiciji (objasniti na primeru)? 24. Da li makro definicija moe da se pojavi u makro definiciji (objasniti na primeru)? 25. Zato su uvedene uslovne direktive (objasniti na primeru)? 26. Za ta se koristi stek? 27. ta je potrebno za rukovanje stekom? 28. Od kojih delova se sastoji stek frejm? 29. ta izaziva pojavu dinamikih greaka u toku izvravanja programa?

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

61

4. MEMORIJA I PROCESOR RAUNARA KONCEPT


4.1 ORGANIZACIJA MEMORIJE RAUNARA KONCEPT
Memorijska lokacija ili re (word) obuhvata 32 bita ili 4 bajta (byte) od po 8 bita i odraava pozicionu predstavu binarnog broja. Znai, krajnje desni bit memorijske lokacije sadri najmanje znaajnu cifru, a njen krajnje levi bit sadri najznaajniju cifru (slika 4.1.1).

...
31 1 0

Slika 4.1.1 Raspored bita u memorijskoj lokaciji Memorijskim lokacijama se pristupa: ili radi itanja (preuzimanja) sadraja, ili radi pisanja (izmene) sadraja. Istovremeno se pristupa svim bitima memorijskih lokacija (svi biti se paralelno prenose iz lokacije, odnosno u lokaciju). Principijelni prikaz memorijske lokacije je naveden na slici 4.1.2.

ulazne linije

...
izlazne linije

Slika 4.1.2 Principijelni izgled memorijske lokacije Kada se zatvore prekidai na ulaznim linijama (a svi prekidai na ulaznim linijama se istovremeno zatvaraju), tada nivo signala u svakoj od ulaznih linija (0 ili 1) odreuje novi sadraj bita memorijske lokacije u koji linija ulazi. Slino, kada se zatvore prekidai na izlaznim linijama (a svi prekidai na izlaznim linijama se istovremeno zatvaraju), tada sadraj bita memorijske lokacije (0 ili 1) odreuje nivo signala u izlaznoj liniji koja izlazi iz tog bita. Ulazni prekidai omoguuju pisanje sadraja memorijske lokacije, a izlazni prekidai omoguuju itanje sadraja memorijske lokacije. Zbog naina izvedbe memorijskih lokacija, njihov sadraj nije definisan u toku pisanja. Zato su pisanje i itanje sadraja memorijske lokacije

62

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

meusobno iskljuivi, to znai da se ulazni i izlazni prekidai iste memorijske lokacije istovremeno ne zatvaraju. Svi ulazni prekidai jedne memorijske lokacije imaju isto upravljanje i iste argumente (jer su svi istovremeno otvoreni ili zatvoreni). Isto vai i za sve izlazne prekidae pomenute memorijske lokacije. Zato se svi ulazni prekidai jedne memorijske lokacije predstavljaju samo jednim prekidaem, a svi izlazni prekidai pomenute memorijske lokacije drugim prekidaem (slika 4.1.3).

32

32

Slika 4.1.3 Pojednostavljeni principijelni izgled memorijske lokacije Pojednostavljeni principijelni prikaz memorije sadri samo niz memorijskih lokacija od kojih se memorija sastoji. Memorijske lokacije se meusobno razlikuju po adresama, jer svaka memorijska lokacija ima jedinstvenu adresu. To je iskorieno u pojednostavljenom principijelnom prikazu memorije i svaka od prikazanih memorijskih lokacija je oznaena svojom adresom. Adrese su navedene u heksadecimalnom obliku ispred ulaznih linija prikazane memorijske lokacije (slika 4.1.4).
00000000 00000001 32
FFFFFFFF

32

32

...

32

32

32

Slika 4.1.4 Pojednostavljeni principijelni izgled memorije Jednoznano upravljanje ulaznim i izlaznim prekidaima neke memorijske lokacije se moe ostvariti, ako se osloni na njenu adresu (koja je jednoznana) i na vrstu pristupanja ovoj memorijskoj lokaciji. Radi toga se pojedini biti A i (i = 0, ... , 31) adrese memorijske lokacije koriste kao argumenti prekidaa. Iz istog razloga kao argumenti prekidaa se koriste i posebne logike promenljive (itanje) i P (pisanje), koje odreuju vrstu istupanja memorijskoj lokaciji. Pri tome se podrazumeva da logika promenljiva ima vrednost 1 samo za vreme itanja, a da logika promenljiva P ima vrednost 1 samo za vreme pisanja i da u svakom momentu najvie jedna od ove dve logike promenljive ima vrednost 1.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

63

Uz prethodne pretpostavke, upravljanje ulaznim prekidaima memorijske lokacije sa adresom 0000000016 opisuje funkcija: P&(~A31)&(~A30)&...&(~A1)&(~A0) a upravljanje izlaznim prekidaima memorijske lokacije sa adresom 0000000016 opisuje funkcija: &(~A31)&(~A30)&...&(~A1)&(~A0) Slino, upravljanje ulaznim prekidaima memorijske lokacije sa adresom 0000000116 opisuje funkcija: P&(~A31)&(~A30)&...&(~A1)&A0 a upravljanje izlaznim prekidaima memorijske lokacije sa adresom 0000000116 opisuje funkcija: &(~A31)&(~A30)&...&(~A1)&A0 Na isti nain, upravljanje ulaznim prekidaima memorijske lokacije sa adresom FFFFFFFF16 opisuje funkcija: P&A31&A30&...&A1&A0 a upravljanje izlaznim prekidaima memorijske lokacije sa adresom FFFFFFFF16 opisuje funkcija: &A31&A30&...&A1&A0 Sve funkcije, koje opisuju upravljanje prekidaima memorijskih lokacija, su tako definisane, da je uvek najvie jedna od njih tana. To znai da su u bilo kom trenutku zatvoreni samo ulazni, ili samo izlazni prekidai najvie jedne memorijske lokacije. Za ovakve funkcije se kae da dekodiraju adresu memorijske lokacije. One se, zato, nazivaju dekoderske funkcije. Za opisivanje funkcionisanja memorije podjednako su vani i memorijska adresa i sadraji logikih promenljivih i P, jer memorijska adresa odreuje, odnosno adresira memorijsku lokaciju kojoj se pristupa, a vrednosti logikih promenljivih i P odreuju da li se toj memorijskoj lokaciji pristupa radi itanja, ili radi pisanja. U sluaju itanja, memorijski izlaz zavisi od zateenog sadraja adresirane memorijske lokacije, a u sluaju pisanja, memorijski ulaz odreuje novi

64

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

sadraj adresirane memorijske lokacije. Prethodno navedeno je dovoljno za potpun principijelni prikaz memorije (slika 4.1.5).
adresne linije

32 memorijski ulaz

...

memorijski izlaz

linije podataka 32 P

Slika 4.1.5 Principijelni izgled memorije Memorijskoj adresi odgovaraju adresne linije, memorijskom ulazu i izlazu odgovaraju linije podataka, a logikim promenljivim P i odgovaraju upravljake linije. Svaka memorijska lokacija moe da sadri ceo broj, realan broj (u mainskoj normalizovanoj formi), logiku konstantu ili etiri znaka (od kojih svaki zauzima po jedan bajt). U poslednjem sluaju, racionalno korienje memorijskih lokacija podrazumeva programsko smetanje (pakovanje) znakova u bajte memorijske lokacije i njihovo programsko preuzimanje (raspakivanje) iz bajta memorijske lokacije. Sa stanovita korisnika, praktinije je reenje u kome je mogue direktno pristupiti ne samo rei, nego i polurei, pa i bajtu. Ono nije usvojeno za memoriju raunara KONCEPT, jer uslonjava njenu organizaciju.

4.2 KODIRANJE I MAINSKI FORMATI NAREDBI PROCESORA KONCEPT


Mainski format svake naredbe sadri njen kod i kodove njenih operanada. Poto sve naredbe nemaju isti broj operanada, mainski formati raznih naredbi se razlikuju, ne samo po kodovima koje sadre, nego i po broju kodova. Ako se naredbe razvrstaju po osnovu broja i vrste operanada, tada svakoj od vrsta naredbi odgovara po jedan tip mainskog formata naredbi. Sve naredbe procesora KONCEPT se razvrstavaju, po osnovu broja i vrste operanada, u est vrsta. U prvoj vrsti su naredbe sa dva ulazna i jednim izlaznim operandom, u drugoj vrsti su naredbe sa jednim ulaznim i jednim izlaznim operandom, a u treoj vrsti je naredba poreenja, sa dva ulazna operanda. Podrazumevajui operand svih naredbi iz prethodne tri vrste je status registar (on je ravnopravan izriitim operandima ovih naredbi). etvrtoj vrsti naredbi pripada

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

65

samo naredba bezuslovnog skoka, sa samo jednim operandom. U petoj vrsti su naredbe uslovnog skoka, sa jednim izriitim operandom i status registrom kao podrazumevajuim operandom. estoj vrsti naredbi pripada samo naredba poziva potprograma, sa jednim izriitim operandom i registrom R15 kao podrazumevajuim operandom. Za kod svake naredbe je vano, ne samo da omogui razlikovanje raznih naredbi, nego i da omogui razlikovanje raznih tipova mainskih formata naredbi. Zato se kod naredbe sastoji od koda vrste naredbe (koji odreuje tip mainskog formata naredbe) i od relativnog koda naredbe (koji omoguuje razlikovanje naredbi iste vrste). Za kodiranje prethodnih est vrsta naredbi dovoljna je jedna heksadecimalna cifra. Takoe, jedna heksadecimalna cifra je dovoljna i za relativno kodiranje naredbi unutar svake od vrsta naredbi, jer ni u jednoj od njih nema vie od esnaest naredbi. Obe heksadecimalne cifre koda naredbe zauzimaju jedan bajt (iji znaajniji biti sadre kod vrste naredbe). Kao to se vrste naredbi razlikuju po broju svojih operanada, tako se i vrste operanada razlikuju po broju i osobinama svojih elemenata. Od devet vrsta operanada (pet ulaznih i etiri izlazna), est vrsta operanada ukljuuje registar (registarski, indirektni i indeksni operandi, svi i ulazni i izlazni), a pet vrsta operanda ukljuuje vrednost, odnosno adresu (neposredni operand, ali i direktni i indeksni operandi, oba i ulazni i izlazni). Zato se kod operanda sastoji od koda vrste operanda i koda registra (njegovog rednog broja). Za kodiranje devet vrsta operanada dovoljna je jedna heksadecimalna cifra. Slino, za kodiranje registara, je, opet, dovoljna jedna heksadecimalna cifra, jer registara ima tano esnaest. Prema tome, obe heksadecimalne cifre koda operanda zauzimaju jedan bajt (iji znaajniji biti sadre kod vrste operanda). Radi pravilnosti, kodovi operanada, koji ne ukljuuju registar, zauzimaju takoe jedan bajt, iako se manje znaajna polovina bajta, namenjena za kod registra, ne koristi. Za pojedine vrste operanada (neposredni, direktni i indeksni) uz kod operanda je potrebno navesti i osam heksadecimalnih cifara. One sadre vrednost neposrednog operanda, adresu direktnog operanda ili komponentu adrese indeksnog operanada. Ovih dodatnih osam heksadecimalnih cifara zauzima jednu celu dodatnu re. Za kod naredbe i najvie tri koda operanada dovoljna je jedna re. Ova obavezna re je prisutna u mainskim formatima svih vrsta naredbi, iako, za vrste naredbi sa manje od tri operanda, svi njeni bajti nisu iskorieni. Najznaajniji bajt obavezne rei sadri kod naredbe, a iza njega slede kod prvog i, eventualno, kodovi drugog i treeg operanda. Uz obaveznu re, mainski formati naredbi, zavisno od vrste operanada, sadre i do tri dodatne rei. Dodatne rei se navode u redosledu odgovarajuih operanada. Znai, dodatna re prvog operanda uvek prethodi dodatnim reima drugog i treeg operanda, jasno, kada one postoje, a dodatna re drugog operanda uvek prethodi dodatnoj rei treeg operanda, jasno, kada ona postoji (slika 4.2.1).

66
8

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

kod naredbe

8 8 8 obavezna kod 1. operanda kod 2. operanda kod 3. operanda re 1. dodatna re 2. dodatna re 3. dodatna re

Slika 4.2.1 Izgled mainskog formata naredbe Izbor koda vrste naredbe, relativnog koda naredbi i koda vrste operanda je proizvoljan. Kao kod registra slui njegov redni broj (0: R0, 1: R1, 2: R2, 3: R3, ...). Za pojedine vrste operanada odabrani su kodovi:
0 1 2 3 4 5 6 7 8 neposredni (ulazni) operand direktni ulazni operand direktni izlazni operand registarski ulazni operand registarski izlazni operand indirektni ulazni operand indirektni izlazni operand indeksni ulazni operand indeksni izlazni operand.

Naredbama iz prve vrste naredbi odgovaraju kodovi:


00 01 02 03 04 05 SABERI SABERI_P ODUZMI ODUZMI_P I ILI

Prva heksadecimalna cifra odgovara kodu vrste naredbi. Mainski format ove vrste naredbi obuhvata obaveznu re i do tri dodatne rei. Tako, za asemblersku naredbu:
SABERI R0,R1,R2

mainski format obuhvata samo obaveznu re:


00303142

Za asemblersku naredbu:
SABERI R0,01,z

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

67

mainski format obuhvata, pored obavezne, i dve dodatne rei:


00300020 00000001 asresa z

Manje znaajne polovine treeg i etvrtog bajta obavezne rei se ne koriste, jer odgovarajui operandi ne ukljuuju registar. Prva dodatna re sadri vrednost drugog, neposrednog operanda, a druga dodatna re sadri adresu treeg, direktnog operanda, ijih 8 heksadecimalnih cifara je zamenjeno tekstom adresa z. Slino, za asemblersku naredbu:
ODUZMI x,y,z

mainski format obuhvata ukupno etiri rei:


02101020 adresa x adresa y adresa z

Naredbama iz druge vrste naredbi odgovaraju kodovi:


10 11 12 NE LEVO DESNO

Prva heksadecimalna cifra odgovara kodu vrste naredbi. Mainski format ove vrste naredbi obuhvata obaveznu re i do dve dodatne rei. Tako, za asemblersku naredbu:
NE x[R11],R1

mainski format obuhvata, pored obavezne rei, i jednu dodatnu re:


107B4100 adresa x

Poslednji bajt obavezne rei se ne koristi, a dodatna re sadri adresu prvog, indeksnog operanda, ijih 8 heksadecimalnih cifara je zamenjeno tekstom adresa x. Jedinoj naredbi iz tree vrste naredbi odgovara kod:
20 UPOREDI

Prva heksadecimalna cifra odgovara kodu vrste naredbi. Mainski format ove vrste

68

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

naredbi obuhvata obaveznu re i do dve dodatne rei. Tako, za asemblersku naredbu:


UPOREDI [R14],[R15]

mainski format obuhvata samo obaveznu re:


205E5F00

Poslednji bajt obavezne rei se ne koristi. Jedinoj naredbi iz etvrte vrste naredbi odgovara kod:
30 SKOI

Prva heksadecimalna cifra odgovara kodu vrste naredbi. Mainski format ove vrste naredbi obuhvata obaveznu re i, eventualno, jednu dodatnu re. Tako, za asemblersku naredbu:
SKOI R15

mainski format obuhvata samo obaveznu re:


303F0000

Poslednja dva bajta obavezne rei se ne koriste. Naredbama iz pete vrste naredbi odgovaraju kodovi:
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D SKOI_ZA_= / SKOI_ZA_<> / SKOI_ZA_< / SKOI_ZA_>= / SKOI_ZA_> SKOI_ZA_<= SKOI_ZA__< SKOI_ZA__>= SKOI_ZA__> SKOI_ZA__<= SKOI_ZA_M SKOI_ZA_NE_M SKOI_ZA_V SKOI_ZA_NE_V SKOI_ZA_N SKOI_ZA_NE_N SKOI_ZA_P SKOI_ZA_NE_P

Prva heksadecimalna cifra odgovara kodu vrste naredbi. Mainski format ove vrste naredbi obuhvata obaveznu re i, eventualno, jednu dodatnu re. Tako, za asemblersku naredbu:
SKOI_ZA_= x

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

69

mainski format obuhvata, pored obavezne rei, i jednu dodatnu re:


40000000 adresa x

Zbog specifine interpretacije direktnog operanda u okviru upravljakih naredbi, u drugom bajtu obavezne rei je naveden kod neposrednog operanda. Poslednja dva bajta obavezne rei se ne koriste. Dodatna re sadri adresu memorijske lokacije koju oznaava direktni operand, pri emu je 8 heksadecimalnih cifara ove adrese zamenjeno tekstom adresa x. Jedinoj naredbi iz este vrste naredbi odgovara kod:
50 POZOVI

Prva heksadecimalna cifra odgovara kodu vrste naredbi. Mainski format ove vrste naredbi obuhvata obaveznu re i, eventualno, jednu dodatnu re. Tako, za asemblersku naredbu:
POZOVI x

mainski format obuhvata, pored obavezne rei, i dodatnu re:


50004F00 adresa x

Zbog specifine interpretacije direktnog operanda u okviru upravljakih naredbi, u drugom bajtu obavezne rei je naveden kod neposrednog operanda. Trei bajt obavezne rei sadri kod vrste operanda za podrazumevajui operand R15. Poslednji bajt obavezne rei se ne koristi. Dodatna re sadri adresu memorijske lokacije koju oznaava direktni operand, pri emu je 8 heksadecimalnih cifara ove adrese zamenjeno tekstom adresa x.

4.3 ORGANIZACIJA PROCESORA KONCEPT


Mainske naredbe se uvaju u memorijskim lokacijama sa uzastopnim rastuim adresama. To znai, na primer, da se prva dodatna re naredbe nalazi uvek u memorijskoj lokaciji koja ima za 1 veu adresu od adrese memorijske lokacije sa obaveznom reju iste naredbe. Takoe, memorijska lokacija sa obaveznom reju naredbe ima za 1 veu adresu od adrese memorijske lokacije sa poslednjom reju njoj prethodee naredbe. Tako, na primer, sekvenci asemblerskih naredbi:
SABERI SKOI R1,01,R1 R15

70

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

odgovaraju mainske naredbe:


00310041 00000001 303F0000

Prva mainska naredba se sastoji od obavezne rei na adresi n i od dodatne rei na adresi n+1, a druga mainska naredba se sastoji od obavezne rei na adresi n+2. Izvravanju svake mainske naredbe mora da prethodi njeno prebacivanje iz memorije u procesor. To je potrebno da bi procesor dobio na raspolaganje vrstu operacije (navedenu u obaveznoj rei naredbe) i operande (navedene u obaveznoj rei naredbe i, eventualno, u njenim dodatnim reima). Procesor moe da proita, odnosno dobavi obaveznu re, ako poseduje njenu adresu. U toku itanja obavezne rei procesor prvo upuuje njenu adresu po adresnim linijama ka memoriji. Istovremeno on upuuje ka memoriji i signal itanja po odgovarajuoj upravljakoj liniji. Zatim procesor preuzima sa linije podataka obaveznu re. Za njeno uvanje namenjen je poseban registar naredbe. Obavezna re usmerava dalji rad procesora, na primer, tako to kodovi operanada, odnosno kodovi naina adresiranja, pokazuju gde je operand. Tako, za neposredno adresiranje, operand se nalazi u dodatnoj rei. Za direktno adresiranje, u dodatnoj rei se nalazi adresa operanda, a za indeksno adresiranje, u dodatnoj rei je komponenta adrese operanda. U svakom od ova tri sluaja, da bi dobavio operand, procesor mora proitati dodatnu re. Proitana adresa ili komponetna adrese se uva u posebnom registru adrese, a dobavljeni operandi se uvaju u posebnim registrima 1. i 2. operanda. itanju dodatne rei prethodi odreivanje njene adrese. To se postie uveavanjem za 1 adrese prethodno proitane obavezne ili dodatne rei. Za uvanje adrese dobavljane rei namenjen je poseban registar, nazvan programski broja (program counter), jer uveavanje njegovog sadraja za 1 odgovara brojanju dobavljanih rei programa. Konstanta 1, kojom se uveava sadraj programskog brojaa, se uva u posebnom registru konstante. Procesor moe da pristupi obavljanju operacije tek kada raspolae njenim kodom i njenim operandima. Za obavljanje operacija je zaduena aritmetikologika jedinica. Delove procesora (na primer, njegove registre) spajaju vezne linije. Na njima se nalaze prekidai, ijim zatvaranjem se uspostavlja veza izmeu pojedinih delova procesora. Za upravljanje stanjima prekidaa iz veznih linija zaduena je upravljaka jedinica. Organizacija procesora KONCEPT je prikazana na slici 4.3.1 (prekida P37 omoguuje da istovremeno prema memoriji krenu sadraj registra adrese i, na primer, sadraj registra 1. operanda).

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)


P1 P3 P5 P7 P9 P11 P13 P15 P17 P19 P21 P23 P25 P27 P29 P31 P33 P35

71

registar adrese R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 status registar registar konstante programski broja registar 1. operanda registar 2. operanda

P2 32 P4 P6 P8 P10 P12 P14 P16 P18 P20 P22 P24 P26 P28 P30 P32 P34 P36 P37 P38 P40 P42 P44 P45 32

adresne linije

aritmetiko logika jedinica

P39 P41 P43

Linije podataka
P

P46

registar naredbe
32

upravljaka jedinica

Slika 4.3.1 Organizacija procesora KONCEPT Registar naredbe, registar adrese, registri 1. i 2. operanda, programski broja i registar konstante spadaju u registre posebne namene. U ove registre spadaju i status registar, kao i registri iz aritmetiko-logike i upravljake jedinice.

72

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Obavljanje operacija se svodi na proputanje podataka, koji odgovaraju pojedinim operandima, kroz odabrane sklopove aritmetiko-logike jedinice. Na taj nain se ovi podaci transformiu u rezultat operacije. Transformisani podaci se uvaju u posebnim registrima 1. i 2. podatka, a rezultat se smeta u poseban registar rezultata. Poto obavljanje operacije utie na uslovne bite status registra, u aritmetiko-logikoj jedinici postoje poseban ulazni status registar i izlazni status registar. Organizacija aritmetiko-logike jedinice je prikazana na slici 4.3.2.
32

P47

P48

P49

ulazni status registar


28 P50

registar 1. podatka
32

registar 2. podatka
32

P51

P52

P53

P54

P55

P56

P57

saberi

oduzmi

ili

ne

levo

desno

32

izlazni status registar


P58

registar rezultata
P59

32

Slika 4.3.2 Organizacija aritmetiko-logike jedinice Sklopovi saberi, oduzmi, i, ili, ne, levo i desno aritmetiko-logike jedinice ostvaruju logike funkcije pojedinih naredbi procesora KONCEPT. Ulazni status registar (sa oznakom USR i sa oznakom USRj za bit j) je namenjen za smetanje sadraja, zateenog u status registru. U izlaznom status

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

73

registru se, bez izmena, preuzima sadraj 28 znaajnijih bita ulaznog status registra, dok se sadraj 4 najmanje znaajna (uslovna) bita obrazuje u toku obavljanja operacije, odreene kodom izvravane naredbe. Da bi rezultat obavljanja operacija sabiranja i oduzimanja mogao da zavisi i od zateenog prenosa, posebna vezna linija spaja P bit ulaznog status registra (USR2) sa sklopovima koji su oznaeni natpisima saberi i oduzmi. Aktivnost procesora je periodina, a svaki period obuhvata dve faze: fazu dobavljanja i fazu izvravanja naredbe. U fazi dobavljanja se dobavlja obavezna re mainske naredbe i smeta u registar naredbe. Pri tome se koristi i uveava sadraj programskog brojaa. U fazi izvravanja se izvrava naredba ija obavezna re je dobavljena u fazi dobavljanja. U izvravanju naredbe se dobavljaju dodatne rei njenog mainskog formata, i to samo kada to zahtevaju vrste operanada izvravane naredbe. Dobavljanje dodatnih rei se ne razlikuje od dobavljanja obavezne rei. U dobavljanju dodatnih rei uestvuje registar adrese.

4.4 UPRAVLJANJE PROCESOROM KONCEPT


Upravljanje procesorom KONCEPT se svodi na upravljanje njegovim prekidaima s ciljem njihovog dovoenja u zadana stanja. Na primer, zatvaranje pojedinih prekidaa uspostavlja fiziki put izmeu izlaza jednog i ulaza drugog registra i omoguuje prenos sadraja iz prvog u drugi registar. Podrazumeva se da pomenuti prekidai ostaju zatvoreni u toku obavljanja ovakve elementarne radnje procesora. Poto se aktivnost procesora sastoji od obavljanja elementarnih radnji poput prethodno pomenute, upravljanje procesorom ima ciklian karakter. U svakom ciklusu ono prevodi prekidae u stanja koja omoguuju obavljanje jedne ili vie meusobno nezavisnih elementarnih radnji i zadri ih u tim stanjima dok se data elementarna radnja ne zavri. Pretpostavka je da svi ciklusi imaju isto trajanje. Na nivou ciklusa je mogue precizno opisati i fazu dobavljanja i fazu izvravanja. Faza dobavljanja se sastoji od pet ciklusa: 1. ciklus: programski broja adresne linije (P40, P37) 1 linije podataka registar naredbe (P46) 2. ciklus: programski broja registar 1. podatka (P40, P37, P48) 3. ciklus: registar konstante registar 2. podatka (P38, P37, P49) 4. ciklus: saberi (P51) 5. ciklus: registar rezultata programski broja (P59, P39) Svaki red u opisu ciklusa je posveen posebnoj elementarnoj radnji procesora. Elementarne radnje iz istog ciklusa se obavljaju istovremeno, a elementarne radnje iz raznih ciklusa se obavljaju sekvencijalno. Za elementarne radnje, namenjene prenosu sadraja, strelica oznaava smer u kome se sadraj prenosi. Na primer, u prvoj elementarnoj radnji 1. ciklusa, sadraj programskog brojaa se prenosi na

74

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

adresne linije. Sadraj, koji se prenosi na adresne i druge linije procesora, ostaje prisutan na njima samo u toku trajanja ciklusa. Elementarne radnje omoguuju ne samo prenos sadraja na raznim relacijama, nego i aktiviranje pojedinih sklopova aritmetiko-logike jedinice. To je, na primer, sluaj sa jedinom elementarnom radnjom 4. ciklusa. Oznake prekidaa, ija zatvaranja omoguuju obavljanje neke elementarne radnje, se navode izmeu malih zagrada za tu elementarnu radnju. U 1. od prethodnih 5 ciklusa, obavezna re mainske naredbe dospe u registar naredbe. Adresu memorijske lokacije sa obaveznom reju sadri programski broja. Njegov sadraj se uvea za 1 u preostala 4 ciklusa. Nakon toga programski broja sadri adresu naredne memorijske lokacije. U svakom od ciklusa, koje procesor posveti jednoj naredbi, obavi se elementarni deo dotine naredbe. Zato se moe rei da u toku ciklusa procesor obavi jednu mikro-naredbu ukupne naredbe. Vie mikro-naredbi obrazuje mikroprogram. Tako fazi dobavljanja odgovara mikro-program dobavljanja. Za fazu dobavljanja je vezan jedan mikro-program, a za fazu izvravanja vezano je vie mikro-programa. Njihov broj je jednak broju vrsta naredbi, ako mikro-programi izvravanja svake od vrsta naredbi opsluuju sve dozvoljene kombinacije operanada. To je ostvarljivo, ako se za svaku vrstu operanda uvede poseban mikro-potprogram, jer tada bilo koju dozvoljenu kombinaciju operanada izraava odgovarajua kombinacija poziva njihovih mikro-potprograma. Za poziv mikro-potprograma iz mikro-programa, odnosno za povratak u mikro-program, neophodne su posebne mikro-naredbe, dok je za prenos argumenta u mikropotprogram, odnosno za vraanje vrednosti iz mikro-potprograma, dovoljan neki od registara posebne namene. To moe biti, na primer, registar 2. operanda. MIKRO-POTPROGRAMI POJEDINIH OPERANADA Mikro-potprogram neposrednog operanda izgleda: 1. ciklus: programski broja adresne linije (P40, P37) 1 linije podataka registar 2. operanda (P43) 2. ciklus: programski broja registar 1. podatka (P40, P37, P48) 3. ciklus: registar konstante registar 2. podatka (P38, P37, P49) 4. ciklus: saberi (P51) 5. ciklus: registar rezultata programski broja (P59, P39) 6. ciklus: povratak u mikro-program U 1. ciklusu, ulazna vrednost, iz dodatne rei mainske naredbe, dospe u registar 2. operanda. Numeriku adresu memorijske lokacije sa dodatnom reju sadri programski broja. Njegov sadraj se uvea za 1 u naredna 4 ciklusa. Mikro-potprogram direktnog ulaznog operanda izgleda:

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

75

1. ciklus: programski broja adresne linije (P40, P37) 1 linije podataka registar adrese (P1) 2. ciklus: programski broja registar 1. podatka (P40, P37, P48) 3. ciklus: registar konstante registar 2. podatka (P38, P37, P49) 4. ciklus: saberi (P51) 5. ciklus: registar rezultata programski broja (P59, P39) 6. ciklus: registar adrese adresne linije (P2) 1 linije podataka registar 2. operanda (P43) 7. ciklus: povratak u mikro-program U 1. ciklusu, dodatna re mainske naredbe dospe u registar adrese. Numerika adresa memorijske lokacije iz programskog brojaa se uvea za 1 u naredna 4 ciklusa. U 6. ciklusu, ulazna vrednost dospe u registar 2. operanda. Mikro-potprogram direktnog izlaznog operanda izgleda: 1. ciklus: programski broja adresne linije (P40, P37) 1 linije podataka registar adrese (P1) 2. ciklus: programski broja registar 1. podatka (P40, P37, P48) 3. ciklus: registar konstante registar 2. podatka (P38, P37, P49) 4. ciklus: saberi (P51) 5. ciklus: registar rezultata programski broja (P59, P39) 6. ciklus: registar adrese adresne linije (P2) 1 P registar 2. operanda linije podataka (P44, P45) 7. ciklus: povratak u mikro-program U toku 1. ciklusa, dodatna re mainske naredbe dospe u registar adrese. Numerika adresa memorijske lokacije iz programskog brojaa se uvea za 1 u naredna 4 ciklusa. U 6. ciklusu izlazna vrednost dospe u izlaznu lokaciju. Mikro-potprogram registarskog ulaznog operanda izgleda: 1. ciklus: RX registar 2. operanda (PRX=2X+4,P37,P45,P43) 2. ciklus: povratak u mikro-program U 1. ciklusu, ulazna vrednost (iz registra RX) dospe u registar 2. operanda. Mikro-potprogram registarskog izlaznog operanda izgleda:

76

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

1. ciklus: registar 2. operanda RX (P44, P45,PRX=2X+3) 2. ciklus: povratak u mikro-program U 1. ciklusu, izlazna vrednost dospe u izlazni registar RX. Mikro-potprogram indirektnog ulaznog operanda izgleda: 1. ciklus: RX adresne linije (PRX=2X+4) 1 linije podataka registar 2. operanda (P43) 2. ciklus: povratak u mikro-program U 1. ciklusu, ulazna vrednost dospe u registar 2. operanda. Mikro-potprogram indirektnog izlaznog operanda izgleda: 1. ciklus: RX adresne linije (PRX=2X+4) 1 P registar 2. operanda linije podataka (P44, P45) 2. ciklus: povratak u mikro-program U 1. ciklusu, izlazna vrednost dospe u izlaznu lokaciju. Mikro-potprogram indeksnog ulaznog operanda izgleda: programski broja adresne linije (P40, P37) 1 linije podataka registar adrese (P1) 2. ciklus: programski broja registar 1. podatka (P40, P37, P48) 3. ciklus: registar konstante registar 2. podatka (P38, P37, P49) 4. ciklus: saberi (P51) 5. ciklus: registar rezultata programski broja (P59, P39) 6. ciklus: registar adrese registar 1. podatka (P2, P48) 7. ciklus: RX registar 2. podatka (PRX=2X+4, P49) 8. ciklus: saberi (P51) 9. ciklus: registar rezultata registar adrese (P59, P1) 10. ciklus: registar adrese adresne linije (P2) 1 linije podataka registar 2. operanda (P43) 11. ciklus: povratak u mikro-program 1. ciklus: U 1. ciklusu, dodatna re mainske naredbe dospe u registar adrese. Numerika adresa memorijske lokacije iz programskog brojaa se uvea za 1 u naredna 4 ciklusa. U sledea 4 ciklusa, adresa memorijske lokacije sa ulaznom vrednou

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

77

dospe u registar adrese, a u 10. ciklusu ulazna vrednost dospe u registar 2. operanda. Mikro-potprogram indeksnog izlaznog operanda izgleda: programski broja adresne linije (P40, P37) 1 linije podataka registar adrese (P1) 2. ciklus: programski broja registar 1. podatka (P40, P37, P48) 3. ciklus: registar konstante registar 2. podatka (P38, P37, P49) 4. ciklus: saberi (P51) 5. ciklus: registar rezultata programski broja (P59, P39) 6. ciklus: registar adrese registar 1. podatka (P2, P48) 7. ciklus: RX registar 2. podatka (PRX=2X+4, P49) 8. ciklus: saberi (P51) 9. ciklus: registar rezultata registar adrese (P59, P1) 10. ciklus: registar adrese adresne linije (P2) 1 P registar 2. operanda linije podataka (P44, P45) 11. ciklus: povratak u mikro-program 1. ciklus: U 1. ciklusu, dodatna re mainske naredbe dospe u registar adrese. Numerika adresa memorijske lokacije iz programskog brojaa se uvea za 1 u naredna 4 ciklusa. U sledea 4 ciklusa, adresa izlazne (memorijske) lokacije dospe u registar adrese, a u 10. ciklusu izlazna vrednost dospe u izlaznu lokaciju. Kraim mikro-programima odgovaraju efikasniji naini adresiranja. MIKRO-PROGRAMI IZVRAVANJA Mikro-program izvravanja 1. vrste izgleda: 1. ciklus: 2. ciklus: 3. ciklus: 4. ciklus: 5. ciklus: 6. ciklus: 7. ciklus: 8. ciklus: 9. ciklus: 10. ciklus: poziv mikro-potprograma (prvog) ulaznog operanda registar 2. operanda registar 1. operanda (P44, P45, P41) poziv mikro-potprograma (drugog) ulaznog operanda status registar ulazni status registar (P36, P47) registar 1. operanda registar 1. podatka (P42, P37, P48) registar 2. operanda registar 2. podatka (P44, P37, P49) saberi (P51)/(P50, P51)/ oduzmi (P52)/(P50, P52)/ i (P53)/ ili (P54) izlazni status registar status registar (P58, P35) registar rezultata registar 2. operanda (P59, P43) poziv mikro-potprograma (treeg) izlaznog operanda

U 1. ciklusu se pozove mikro-potprogram (prvog) ulaznog operanda (kodiranog u

78

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

obaveznoj rei mainske naredbe), radi smetanja prve ulazne vrednosti u registar 2. operanda. Prva ulazna vrednost se zatim prebaci, u 2. ciklusu, u registar 1. operanda. Na taj nain, registar 2. operanda se oslobodi za prijem druge ulazne vrednosti. To se desi u 3. ciklusu, nakon poziva mikro-potprograma (drugog) ulaznog operanda (kodiranog u obaveznoj rei mainske naredbe). U naredna 3 ciklusa pripreme se radni registri aritmetiko-logike jedinice. Do obavljanja operacije (kodirane u obaveznoj rei mainske naredbe) dolazi u 7. ciklusu (u opisu ovog ciklusa, alternativne mikro-naredbe su razdvojene znakom /). U sledea 2 ciklusa novi sadraj dospe u status registar, a izlazna vrednost u registar 2. operanda. Na kraju, u 10. ciklusu, pozove se mikro-potprogram (treeg) izlaznog operanda (kodiranog u obaveznoj rei mainske naredbe), radi smetanja izlazne vrednosti u izlaznu lokaciju. Mikro-program izvravanja 2. vrste izgleda: 1. ciklus: 2. ciklus: 3. ciklus: 4. ciklus: 5. ciklus: 6. ciklus: 7. ciklus: poziv mikro-potprograma (prvog) ulaznog operanda status registar ulazni status registar (P36, P47) registar 2. operanda registar 1. podatka (P44, P37, P48) ne (P55) / levo (P56) / desno (P57) izlazni status registar status registar (P58, P35) registar rezultata registar 2. operanda (P59, P43) poziv mikro-potprograma (drugog) izlaznog operanda

U 1. ciklusu se pozove mikro-potprogram (prvog) ulaznog operanda (kodiranog u obaveznoj rei mainske naredbe), radi smetanja ulazne vrednosti u registar 2. operanda. U naredna 2 ciklusa pripreme se radni registri aritmetiko-logike jedinice. Do obavljanja operacije (kodirane u obaveznoj rei mainske naredbe) dolazi u 4. ciklusu (u opisu ovog ciklusa, alternativne mikro-naredbe su razdvojene znakom /). U sledea 2 ciklusa novi sadraj dospe u status registar, a izlazna vrednost u registar 2. operanda. Na kraju, u 7. ciklusu, pozove se mikro-potprogram (drugog) izlaznog operanda (kodiranog u obaveznoj rei mainske naredbe), radi smetanja izlazne vrednosti u izlaznu lokaciju. Mikro-program izvravanja 3. vrste izgleda: 1. ciklus: 2. ciklus: 3. ciklus: 4. ciklus: 5. ciklus: 6. ciklus: 7. ciklus: 8. ciklus: poziv mikro-potprograma (prvog) ulaznog operanda registar 2. operanda registar 1. operanda (P44, P45, P41) poziv mikro-potprograma (drugog) ulaznog operanda status registar ulazni status registar (P36, P47) registar 1. operanda registar 1. podatka (P42, P37, P48) registar 2. operanda registar 2. podatka (P44, P37, P49) oduzmi (P52) izlazni status registar status registar (P58, P35)

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

79

U 1. ciklusu se pozove mikro-potprogram (prvog) ulaznog operanda (kodiranog u obaveznoj rei mainske naredbe), radi smetanja prve ulazne vrednosti u registar 2. operanda. Prva ulazna vrednost se zatim prebaci, u 2. ciklusu, u registar 1. operanda. Na taj nain, registar 2. operanda se oslobodi za prijem druge ulazne vrednosti. To se desi u 3. ciklusu, nakon poziva mikro-potprograma (drugog) ulaznog operanda (kodiranog u obaveznoj rei mainske naredbe). U naredna 3 ciklusa pripreme se radni registri aritmetiko-logike jedinice. Do oduzimanja druge ulazne vrednosti od prve ulazne vrednosti, radi njihovog poreenja, dolazi u 7. ciklusu. U poslednjem, 8. ciklusu, novi sadraj (koji izraava relaciju izmeu poreenih vrednosti) dospe u status registar. Mikro-program izvravanja 4. vrste izgleda: 1. ciklus: poziv mikro-potprograma ulaznog operanda 2. ciklus: registar 2. operanda programski broja (P44, P45, P39) U 1. ciklusu se pozove mikro-potprogram ulaznog operanda (kodiranog u obaveznoj rei mainske naredbe), radi smetanja ulazne vrednosti u registar 2. operanda. Ova ulazna vrednost predstavlja adresu memorijske lokacije sa obaveznom reju naredbe ije izvravanje je sledee na redu. Izvravanje ove naredbe se omogui u 2. ciklusu, kada ulazna vrednost dospe u programski broja. Mikro-program izvravanja 5. vrste izgleda: 1. ciklus: 2. ciklus: poziv mikro-potprograma ulaznog operanda ? registar 2. operanda programski broja (P44, P45, P39)

U 1. ciklusu se pozove mikro-potprogram ulaznog operanda (kodiranog u obaveznoj rei mainske naredbe), radi smetanja ulazne vrednosti u registar 2. operanda. Ova ulazna vrednost predstavlja adresu memorijske lokacije sa obaveznom reju naredbe ije izvravanje je sledee na redu, ako je ispunjen uslov (kodiran u obaveznoj rei mainske naredbe). Izvravanje ove naredbe se omogui u 2. ciklusu, kada ulazna vrednost dospe u programski broja. To se desi samo ako je pomenuti uslov ispunjen (zavisnost mikro-naredbe iz drugog ciklusa od ispunjenosti pomenutog uslova je oznaena upitnikom). Mikro-program izvravanja 6. vrste izgleda: 1. ciklus: 2. ciklus: 3. ciklus: 4. ciklus: 5. ciklus: poziv mikro-potprograma ulaznog operanda registar 2. operanda registar 1. operanda (P44, P45, P41) programski broja registar 2. operanda (P40, P45, P43) registar 1. operanda programski broja (P42, P45, P39) poziv mikro-potprograma (implicitnog) izlaznog operanda

80

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

U 1. ciklusu se pozove mikro-potprogram ulaznog operanda (kodiranog u obaveznoj rei mainske naredbe), radi smetanja ulazne vrednosti u registar 2. operanda. Ova ulazna vrednost predstavlja adresu memorijske lokacije sa obaveznom reju naredbe ije izvravanje je sledee na redu. Izvravanje ove naredbe se omogui u 2. i 4. ciklusu, kada ulazna vrednost dospe u programski broja. U 3. i 5. ciklusu, zateeni sadraj programskog brojaa (povratna adresa) se smesti u implicitni izlazni operand (registar R15). INICIJALNI MIKRO-PROGRAM Procesor moe da zapone izvravanje nekog programa tek kada programski broja sadri adresu ulazne naredbe tog programa, od koje poinje njegovo izvravanje. Ova adresa se naziva ulazna adresa programa. Znai, procesor moe da zapone svoju aktivnost izvravanjem nekog programa, ako, na poetku rada procesora, u programski broja dospe ulazna adresa tog programa. Pod pretpostavkom da nulta memorijska lokacija uvek sadri ulaznu adresu programa, ijim izvravanjem procesor zapoinje svoju aktivnost, poetak rada procesora opisuje inicijalni mikro-program: 1. ciklus: 0000000016 adresne linije 1 linije podataka programski broja (P39)

Nastavak rada procesora opisuje slika 4.4.1.

inicijalni mikro-program

mikro-program dobavljanja

mikro-programi i=1,...,6

mikro-potprogramj j=1,...,9

Slika 4.4.1 Opis prelazaka izmeu mikro-programa i mikro-potprograma (crtkano i takasto su prikazani alternativni prelasci) Inicijalni mikro-program aktivira mikro-program dobavljanja, koji aktivira jedan od mikro-programa izvravanja. Oni pozivaju mikro-potprograme. Do povratka iz mikro-potprograma u mikro-programe izvravanja ne dolazi samo za uslovne upravljake naredbe iji uslov nije ispunjen. Tada mikro-potprogram aktivira mikro-program dobavljanja. Inae dolazi do povratka u mikro-program izvravanja, koji zatim aktivira mikro-program dobavljanja.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

81

Uslovne upravljake naredbe, iji uslov nije ispunjen, predstavljaju izuzetak, jer one ne izazivaju skok na ciljnu naredbu. Poto nije potrebno smetati adresu ciljne naredbe u programski broja, nije potreban ni povratak iz pozvanog mikropotprograma u mikro-potprogram izvravanja. Zato, umesto toga, mikropotprogram direktno aktivira mikro-program dobavljanja, radi dobavljanja naredbe koja sledi iza pomenute uslovne upravljake naredbe.

4.5 UPRAVLJAKA JEDINICA PROCESORA KONCEPT


Trajanje ciklusa, odnosno vreme obavljanja mikro-naredbi nije zanemarljivo, jer se fiziki signali prostiru konanom brzinom kroz fiziki ekvivalent veznih linija procesora i kroz sklopove aritmetiko-logike jedinice. Mikro-naredba je obavljena uspeno tek kada fiziki signali preu ceo put, predvien za tu radnju. Ovakav put nastane zatvaranjem odgovarajuih prekidaa. Zadatak upravljake jedinice je da, pre obavljanja mikro-naredbi dovede prekidae u potrebno stanje i da ih zadri u tom stanju dok se pomenute mikro-naredbe ne obave. Upravljaka jedinica utie na stanja prekidaa posredstvom njihovih argumenata. Kako su svi argumenti prekidaa logike vrednosti, za smetanje svakog od ovih argumenata dovoljan je po jedan bit posebnog upravljakog registra (sa oznakom UR i sa oznakom URj za bit j). Na taj nain od sadraja upravljakog registra zavisi stanje pojedinih prekidaa. Prema tome, sadraj upravljakog registra odreuje koja mikro-naredba se izvrava u datom ciklusu i ujedno predstavlja mainski oblik izvravane mikronaredbe. Izvravanju mikro-naredbe obavezno prethodi njeno dobavljanje, u toku koga se mainski oblik mikro-naredbe smeta u upravljaki registar. Iz prethodnog sledi da izmeu ponaanja procesora na nivou mikro-naredbi i na nivou naredbi postoji jasna slinost. Glavna razlika izmeu ponaanja procesora na ova dva nivoa je u obimu posla koji se obavlja. Dobavljanje mikro-naredbe je vezano za poetni deo ciklusa, na primer, za prvi poluciklus, dok je izvravanje mikro-naredbe vezano za zavrni deo ciklusa, za drugi poluciklus. Razlikovanje poluciklusa dobavljanja od poluciklusa izvravanja omoguuje posebna logika promenljiva T (takt). Ona periodino menja vrednost, tako da uvek sadri vrednost 1 u poluciklusu dobavljanja, a vrednost 0 u poluciklusu izvravanja. Fizika realizacija periodinih izmena vrednosti ove logike promenljive se oslanja na korienje elektronskih oscilatora, koji omoguuju stvaranje signala pravilnog perioda. Pravilna periodinost izmene vrednosti logike promenljive T uvodi pojam vremena, pa se izmene njene vrednosti mogu prikazati vremenskim dijagramom (slika 4.5.1).
1 0

Slika 4.5.1 Vremenski dijagram periodine izmene vrednosti promenljive T

82

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Za uvanje mainskih oblika mikro-naredbi potrebna je posebna mikroprogramska memorija. Veliinu njenih lokacija odreuje broj bita u mainskim oblicima mikro-naredbi. Broj lokacija mikro-programske memorije zavisi od ukupnog broja mikro-naredbi u svim mikro-programima i mikro-potprogramima. U sluaju procesora KONCEPT, taj broj ne prelazi 256 mikro-naredbi, pa je za mikroprogramsku memoriju dovoljno 256 lokacija. To istovremeno znai da je za adresu lokacije mikro-programske memorije potrebno 8 bita. U toku dobavljanja mikro-naredbi, u upravljaki registar se prebacuju sadraji odgovarajuih lokacija mikro-programske memorije. Za izvravanja mikroprograma i mikro-potprograma je potrebno da se njihove mikro-naredbe dobavljaju i izvravaju u redosledu u kome su navedene u mikro-programima i mikropotprogramima. To je mogue ostvariti bez posebnog programskog brojaa, ako mainski oblik svake mikro-naredbe u najmanje znaajnih 8 bita sadri adresu naredne mikro-naredbe, odnosno, adresu lokacije mikro-programske memorije sa mainskim oblikom naredne mikro-naredbe. Ali, ova, naredna adresa ne sme biti u upravljakom registru za vreme dobavljanja naredne mikro-naredbe, jer se tada smeta novi sadraj u upravljaki registar, pa njegov dotadanji sadraj, ukljuujui i narednu adresu, nije pristupaan. Zato, uz upravljaki registar, postoji i registar sekvence (sa oznakom RS i sa oznakom RSj za bit j). Da bi naredna adresa bila raspoloiva u poluciklusu dobavljanja, ona se prebacuje iz upravljakog registra u registar sekvence u poluciklusu izvravanja i to neposredno nakon poluciklusa dobavljanja, u toku koga je ona dospela u upravljaki registar. Procesor KONCEPT zapoinje svoju aktivnost izvravanjem inicijalnog mikro-programa, ako se, na poetku rada procesora, u registru sekvence nalazi adresa ulazne (i jedine) mikro-naredbe inicijalnog mikro-programa. Ovu, ulaznu adresu inicijalnog mikro-programa sadri poseban inicijalni registar. Pre poetka rada procesora, sadraj inicijalnog registra se prebacuje u registar sekvence. Otkrivanje poetka rada procesora KONCEPT omoguuje posebna logika promenljiva R, koja ima vrednost 0 kada procesor ne radi, a vrednost 1 dok god procesor radi. Izmene vrednosti ove logike promenljive utiu na izmene vrednosti logike promenljive T. Tako, logika promenljiva T ima vrednost 0 dok god istu vrednost ima i logika promenljiva R. Ove dve logike promenljive istovremeno izmene vrednost sa 0 na 1. Vrednost logike promenljive T se periodino menja dok god logika promenljiva R zadrava vrednost 1. Vremenski dijagram izmena vrednosti logikih promenljivih R i T sadri slika 4.5.2.
1 0 1 0

R T

R T

... ...

Slika 4.5.2 Vremenski dijagram periodine izmene vrednosti promenljivih R i T

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

83

Za jedinu mikro-naredbu inicijalnog mikro-programa kao naredna adresa slui ulazna adresa mikro-programa dobavljanja. Naredna adresa poslednje mikronaredbe mikro-programa dobavljanja se ne koristi, jer postoji vie mikro-programa izvravanja, pa izbor jedne od njihovih ulaznih adresa zavisi od vrste naredbe. Zato se ulazna adresa mikro-programa izvravanja odreuje iz koda vrste naredbe. Najjednostavnije reenje je da kod vrste naredbe bude jednak ulaznoj (8 bitnoj) adresi odgovarajueg mikro-programa. Ali ono nije prihvatljivo, jer su za kod vrste naredbe predviena samo 4 bita u obaveznoj rei mainskog oblika naredbe. Zato je neophodna konverzija koda vrste naredbe u ulaznu adresu odgovarajueg mikroprograma izvravanja. Ovu konverziju obavlja posebna adresna memorija mikroprograma. Za svaki kod vrste naredbe u ovoj memoriji postoji 8 bitna lokacija sa ulaznom adresom odgovarajueg mikro-programa izvravanja. Ovih lokacija ima 16, jer etvorobitni kod vrste naredbe dozvoljava postojanje 16 raznih kodova vrsta naredbi. Prema tome, kod vrste naredbe slui kao adresa odgovarajue lokacije adresne memorije mikro-programa, u kojoj se nalazi ulazna adresa odgovarajueg mikro-programa izvravanja. Ulazna adresa mikro-potprograma se odreuje iz koda vrste operanda na isti nain na koji se ulazna adresa mikro-programa izvravanja odreuje iz koda vrste naredbe. Znai, za svaki kod vrste operanda u posebnoj adresnoj memoriji mikropotprograma postoji 8 bitna lokacija sa ulaznom adresom odgovarajueg mikropotprograma. Ovih lokacija ima 16, jer etvorobitni kod vrste operanda dozvoljava postojanje 16 raznih kodova vrsta operanada. Prema tome, kod vrste operanda slui kao adresa odgovarajue lokacije adresne memorije mikro-potprograma, u kojoj se nalazi ulazna adresa odgovarajueg mikro-potprograma. Poto u optem sluaju naredba sadri vie operanada, kod aktuelnog operanda se uva u posebnom registru operanda (sa oznakom RO i sa oznakom ROj za bit j). Za poslednju mikro-naredbu svakog od mikro-programa izvravanja kao naredna adresa slui ulazna adresa mikro-programa dobavljanja. Naredna adresa mikro-naredbe za poziv mikro-potprograma predstavlja povratnu adresu za pozvani mikro-potprogram. Ona se smeta u poseban povratni registar, a koristi se umesto naredne adrese poslednje mikro-naredbe mikropotprograma. Sadraji mikro-programske memorije, kao i adresnih memorija mikroprograma i mikro-potprograma su nepromenljivi (jer su odreeni arhitekturom naredbi procesora KONCEPT). Zato je za njih dovoljno predvideti samo itanje njihovih lokacija. Isto vai i za inicijalni registar. Pored pomenutih memorija, radnih registara i veznih linija, upravljaka jedinica sadri i logike promenljive 1, 2 i 3 ije vrednosti utiu na rad memorija iz upravljake jedinice, kao i logike promenljive P i , ije vrednosti utiu na rad memorije raunara KONCEPT (slika 4.5.3). Vrednost svake od ovih logikih promenljivih zavisi od posebnih argumenata.

84

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

4 32 P60 8 P61 8 P62 8 8 registar operanda 4 2 P63 8 1

adresna memorija mikro-programa

adresna memorija mikro-potprograma povratni registar registar sekvence P64 8 P65 8

12 P66 inicijalni registar 12

mikro-programska memorija 41 upravljaki registar 12 P67

Slika 4.5.3 Organizacija upravljake jedinice U upravljaku jedinicu ulazi snop sa 32 linije, koji polazi od registra naredbe (sa oznakom RN i sa oznakom RNj za bit j). Njegove 4 najznaajnije linije prenose kod vrste naredbe do adresne memorije mikro-programa. Najmanje znaajne 24 linije ovoga snopa su podeljene u tri grupe od po 8 linija. Svaka od njih je namenjena za prenoenje jednog od kodova operanada do registra operanda. Linije iz najznaajnije grupe stiu do prekidaa P60, a linije iz najmanje znaajne grupe stiu do prekidaa P62. Sadraj najznaajnija 4 bita ovog registra, sa kodom vrste operanda, stie do adresne memorije mikro-potprograma. Kao adresa lokacije mikro-programske memorije slui: 1. ili sadraj neke od lokacija adresne memorije mikro-programa, 2. ili sadraj neke od lokacija adresne memorije mikro-potprograma, 3. ili sadraj povratnog registra, 4. ili sadraj najmanje znaajnih 8 bita registra sekvence.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

85

Izbor jednog od ova 4 izvora adrese zavisi od sadraja logikih promenljivih 1 i 2, odnosno od stanja prekidaa P64 i P65. Da bi argumenti logikih promenljivih 1 i 2, odnosno argumenti prekidaa P64 i P65, bili raspoloivi u poluciklusu dobavljanja (u kome se sadraj adresirane lokacije mikro-programske memorije prebacuje u upravljaki registar), za ove argumente su predviena 4 najznaajnija bita registra sekvence. U ove (kao i u preostale) bite registra sekvence u poluciklusu izvravanja se prebacuje sadraj korespondentnih 12 najmanje znaajnih bita upravljakog registra, kada je zatvoren prekida P67. Istovremeno i na isti nain se u bite povratnog registra prebacuje sadraj najmanje znaajnih 8 bita upravljakog registra, ako je zatvoren prekida P63. Do itanja lokacije adresne memorije mikro-programa (mikro-potprograma) dolazi samo kada logika promenljiva 1 (2) sadri logiku vrednost 1. Slino, do itanja lokacije mikro-programske memorije dolazi samo kada logika promenljiva 3 sadri logiku vrednost 1. Na isti nain sadraji logikih promenljivih P i odreuju kada dolazi do pisanja i itanja lokacija memorije raunara KONCEPT. Logike promenljive P i su oznaene na isti nain kao i odgovarajue upravljake linije, jer nivo signala u ovim linijama uvek zavisi od sadraja ovih promenljivih. Pre poetka rada procesora KONCEPT, sadraj inicijalnog registara se prebaci u registar sekvence. U toku rada procesora KONCEPT, naizmenino se ponavljaju ciklusi dobavljanja i izvravanja mikro-naredbi. U ciklusu dobavljanja svake mikro-naredbe, upravljaki registar se puni sadrajem odgovarajue lokacije mikro-programske memorije, pa jedino tada logika promenljiva 3 ima vrednost 1. Ponaanje procesora (njegove upravljake jedinice) u ciklusima dobavljanja mikro-naredbi zavisi od sadraja 4 najznaajnija bita registra sekvence, jer oni sadre argumente prekidaa P64 i P65, kao i argumente logikih promenljivih 1 i 2. U pojedinim od ciklusa izvravanja mikro-naredbi (zavisno od toga da li je zatvoren prekida P60, P61 ili P62), registar operanda se puni sadrajem 8 odgovarajuih bita registra naredbe.

4.6 UPRAVLJANJE PREKIDAIMA IZ UPRAVLJAKE JEDINICE PROCESORA KONCEPT


Uloga prekidaa P66 je da pre poetka rada procesora omogui punjenje registra sekvence sadrajem inicijalnog registra. To se desi kada procesor ne radi, pa je jedini argument ovog prekidaa P66 logika promenljiva R. Upravljanje ovim prekidaem opisuje funkcija: ~R Prekida P66 je jedini prekida koji je zatvoren kada procesor ne radi. Svi ostali prekidai (koji se nalaze i u upravljakoj jedinici i van nje) se zatvaraju samo kada procesor radi, pa je zato logika promenljiva R obavezni argument svih ostalih

86

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

prekidaa. Isto vai i za logiku promenljivu T, jer ona odreuje poluciklus u kome se prekidai zatvaraju. Logike promenljive R i T predstavljaju zajednike argumente prekidaa i logikih promenljivih koje upravljaju pristupima memorijama. Pored zajednikih postoje i posebni argumenti koji utiu samo na pojedine prekidae i logike promenljive. Punjenja registra sekvence omoguuje prekida P67. Ona se deavaju u poluciklusima izvravanja, pa upravljanje prekidaem P67 opisuje funkcija: R&(~T) Posebni argument logike promenljive 1 se nalazi u bitu RS8. Njenu vrednost odreuje funkcija: R&T&RS8 Zahvaljujui prethodnoj funkciji, logika promenljiva 1 moe da ima vrednost 1 samo u poluciklusu dobavljanja. Logika promenljiva 2, se razlikuje od prethodne logike promenljive samo po tome to se njen posebni argument nalazi u bitu RS 9. Njenu vrednost odreuje funkcija: R&T&RS9 Do itanja sadraja lokacije mikro-programske memorije dolazi u svakom poluciklusu dobavljanja, pa vrednost logike promenljive 3 odreuje funkcija: R&T Uloga prekidaa P64 je da na kraju izvravanja mikro-potprograma uputi povratnu adresu iz povratnog registra u mikro-programsku memoriju, radi dobavljanja naredne mikro-naredbe mikro-programa (iz koga je mikro-potprogram pozvan) i radi nastavljanja izvravanja ovog mikro-programa. Do nastavljanja izvravanja ovog mikro-programa ne dolazi samo za uslovne upravljake naredbe (pete vrste) i to samo kada njihov uslov nije ispunjen. Tada se naredbe izvravaju sekvencijalno, pa nema potrebe za izmenom vrednosti programskog brojaa, jer on ve sadri adresu naredbe ije izvravanje je na redu. U ovoj situaciji, umesto povratne adrese (iz povratnog registra), koristi se naredna adresa poslednje mikronaredbe mikro-potprograma, koja omoguuje prelazak na izvravanje mikroprograma dobavljanja. Do zatvaranja prekidaa P64 dolazi (1) samo u poluciklusu dobavljanja, (2) kada upravljaki argument RS10 ima vrednost 1 i (3) ako se ne izvrava uslovna upravljaka naredba (pete vrste), ili ako je ispunjen uslov izvravane uslovne upravljake naredbe.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

87

Proveru da se izvrava uslovna upravljaka naredba omoguuju 4 najznaajnija bita registra naredbe RNi (i = 28, 29, 30, 31) u kojima se nalazi kod vrste naredbe. Ovu proveru opisuje logika funkcija USLOVNI_SKOK: (~RN31)&RN30&(~RN29)&(~RN28) Prethodna funkcija ima vrednost 1 samo kada se u registru naredbe nalazi kod vrste naredbe uslovnih upravljakih naredbi (01002). Ova funkcija tako dekodira uslovne upravljake naredbe. Proveru ispunjenosti uslova izvravane uslovne naredbe omoguuju logike funkcije Di (i = 0, ... , 13). Svaka od njih je vezana za jednu uslovnu upravljaku naredbu i ima vrednost 1, ako se izvrava dotina naredba i ako je uslov te naredbe ispunjen. Poto relativni kod uslovne upravljake naredbe sadre druga (po znaaju) 4 bita registra naredbe, a ispunjenost uslova ove naredbe zavisi od sadraja 4 najmanje znaajna bita status registra, kao argumenti logikih funkcija Di slue sadraji pomenutih bita registra naredbe RNi (i = 24, 25, 26, 27) i sadraji uslovnih bita status registra: D0: (~RN27)&(~RN26)&(~RN25)&(~RN24)&N D1: (~RN27)&(~RN26)&(~RN25)&RN24&(~N) D2: (~RN27)&(~RN26)&RN25&(~RN24)&P D3: (~RN27)&(~RN26)&RN25&RN24&(~P) D4: (~RN27)&RN26&(~RN25)&(~RN24)&(~P)&(~N) D5: (~RN27)&RN26&(~RN25)&RN24&(P|N) D6: (~RN27)&RN26&RN25&(~RN24)&(M^V) D7: (~RN27)&RN26&RN25&RN24&(~(M^V)) D8: RN27&(~RN26)&(~RN25)&(~RN24)&(~(M^V))&(~N) D9: RN27&(~RN26)&(~RN25)&RN24&((M^V)&N) D10: RN27&(~RN26)&RN25&(~RN24)&M D11: RN27&(~RN26)&RN25&RN24&(~M) D12: RN27&RN26&(~RN25)&(~RN24)&V D13: RN27&RN26&(~RN25)&RN24&(~V) (SKOI_ZA_=) (SKOI_ZA_<>) (SKOI_ZA_<) (SKOI_ZA_>=) (SKOI_ZA_>) (SKOI_ZA_<=) (SKOI_ZA__<) (SKOI_ZA__>=) (SKOI_ZA__>) (SKOI_ZA__<=) (SKOI_ZA_M) (SKOI_ZA_NE_M) (SKOI_ZA_V) (SKOI_ZA_NE_V)

Prethodne funkcije dekodiraju uslov i njegovu ispunjenost. Ako se uvede logika funkcija USLOV_TAAN: D0|D1|D2|D3|D4|D5|D6|D7|D8|D9|D10|D11|D12|D13 tada upravljanje prekidaem P64 opisuje funkcija: R&T&RS10&(~USLOVNI_SKOK| USLOV_TAAN)

88

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Uloga prekidaa P65 je da na kraju izvravanja mikro-naredbe uputi narednu adresu iz registra sekvence u mikro-programsku memoriju, radi dobavljanja naredne mikro-naredbe mikro-programa ili mikro-potprograma. Ovaj prekida se zatvara (umesto prekidaa P64) i pri izvravanju uslovnih upravljakih naredbi (pete vrste), kada uslov nije ispunjen, pa se, umesto povratne adrese, koristi naredna adresa izvravane mikro-naredbe. Do zatvaranja prekidaa P65 dolazi (1) samo u poluciklusu dobavljanja, (2) kada upravljaki argument RS11 ima vrednost 1 ili kada upravljaki argument RS10 ima vrednost 1, a izvrava se uslovna upravljaka naredba (pete vrste), iji uslov nije ispunjen. Proveru neispunjenosti uslova izvravane uslovne naredbe omoguuju logike funkcije Ni (i = 0, ... , 13). Svaka od njih je vezana za jednu uslovnu upravljaku naredbu i ima vrednost 1, ako se izvrava dotina naredba, a njen uslov nije ispunjen. Poto relativni kod uslovne upravljake naredbe sadre druga (po znaaju) 4 bita registra naredbe, a ispunjenost uslova ove naredbe zavisi od sadraja 4 najmanje znaajna bita status registra, kao argumenti logikih funkcija Ni slue sadraji pomenutih bita registra naredbe RNi (i = 24, 25, 26, 27) i sadraji uslovnih bita status registra: N0: (~RN27)&(~RN26)&(~RN25)&(~RN24)&(~N) N1: (~RN27)&(~RN26)&(~RN25)&RN24&N N2: (~RN27)&(~RN26)&RN25&(~RN24)&(~P) N3: (~RN27)&(~RN26)&RN25&RN24&P N4: (~RN27)&RN26&(~RN25)&(~RN24)&(P|N) N5: (~RN27)&RN26&(~RN25)&RN24&(~P)&(~N) N6: (~RN27)&RN26&RN25&(~RN24)&(~(M^V)) N7: (~RN27)&RN26&RN25&RN24&(M^V) N8: RN27&(~RN26)&(~RN25)&(~RN24)& ((M^V)&N) N9: RN27&(~RN26)&(~RN25)&RN24&(~(M^V))&(~N) N10: RN27&(~RN26)&RN25&(~RN24)&(~M) N11: RN27&(~RN26)&RN25&RN24&M N12: RN27&RN26&(~RN25)&(~RN24)&(~V) N13: RN27&RN26&(~RN25)&RN24&V (SKOI_ZA_=) (SKOI_ZA_<>) (SKOI_ZA_<) (SKOI_ZA_>=) (SKOI_ZA_>) (SKOI_ZA_<=) (SKOI_ZA__<) (SKOI_ZA__>=) (SKOI_ZA__>) (SKOI_ZA__<=) (SKOI_ZA_M) (SKOI_ZA_NE_M) (SKOI_ZA_V) (SKOI_ZA_NE_V)

Prethodne funkcije dekodiraju uslov i njegovu neispunjenost. Ako se uvede logika funkcija USLOV_NETAAN: N0&N1&N2&N3&N4&N5&N6&N7&N8&N9&N10&N11&N12&N13 tada funkcija prekidaa P65 izgleda: R&T&(RS11|RS10&USLOVNI_SKOK& USLOV_NETAAN)

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

89

Na slici 4.6.1 su navedene funkcije koje opisuju upravljanje prekidaima od P60 do P63, odnosno koje odreuju vrednosti logikih promenljivih P i . prekida/logika promenljiva P60 P61 P62 P63 P logika funkcija R&(~T)&UR12 R&(~T)&UR13 R&(~T)&UR14 R&(~T)&UR15 R&(~T)&UR16 R&(~T)&UR17

Slika 4.6.1 Upravljanje prekidaima od P60 do P63 i odreivanje vrednosti logikih promenljivih P i Za uvanje svakog od posebnih argumenata prekidaa od P60 do P63 i posebnih argumenata logikih promenljivih P i predvien je zaseban bit upravljakog registra. Isto vai i za posebne argumente prekidaa od P1 do P59.

4.7 UPRAVLJANJE PREKIDAIMA IZVAN UPRAVLJAKE JEDINICE PROCESORA KONCEPT


Prekidai od P3 do P34 omoguuju pristup registrima opte namene. Poto na njihovo upravljanje utie redni broj registra, kao posebni argumenti ovih prekidaa se javljaju sadraji 4 najmanje znaajna bita ROi (i = 0, 1, 2, 3) registra operanda, u kojima se nalazi pomenuti redni broj. Njegovo dekodiranje opisuju funkcije REGISTARi (i = 0, ... , 15): REGISTAR0: (~RO3)&(~RO2)&(~RO1)&(~RO0) REGISTAR1: (~RO3)&(~RO2)&(~RO1)&RO0 REGISTAR2: (~RO3)&(~RO2)&RO1&(~RO0) REGISTAR3: (~RO3)&(~RO2)&RO1&RO0 REGISTAR4: (~RO3)&RO2&(~RO1)&(~RO0) REGISTAR5: (~RO3)&RO2&(~RO1)&RO0 REGISTAR6: (~RO3)&RO2&RO1&(~RO0) REGISTAR7: (~RO3)&RO2&RO1&RO0 REGISTAR8: RO3&(~RO2)&(~RO1)&(~RO0) REGISTAR9: RO3&(~RO2)&(~RO1)&RO0 REGISTAR10: RO3&(~RO2)&RO1&(~RO0) REGISTAR11: RO3&(~RO2)&RO1&RO0 REGISTAR12: RO3&RO2&(~RO1)&(~RO0) REGISTAR13: RO3&RO2&(~RO1)&RO0 REGISTAR14: RO3&RO2&RO1&(~RO0) REGISTAR15: RO3&RO2&RO1&RO0

90

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Neparni prekidai P2x+3 (x = 0, ... , 15) iz ove grupe omoguuju pisanje registara opte namene, pa imaju isti posebni argument (u bitu UR20). Slino tome, parni prekidai P2x+4 (x = 0, ... , 15) omoguuju itanje registara opte namene, pa imaju isti posebni argument (u bitu UR21). Na upravljanje prekidaima od P50 do P57, koji omoguuju aktiviranje sklopova aritmetiko-logike jedinice, utiu kodovi izvravanih naredbi. Zato se kao njihovi posebni argumenti javljaju sadraji najznaajnijih 8 bita registra naredbe RNi (i = 24, ... , 31) sa kodom naredbe. Dekodiranje naredbi opisuju funkcije sa slike 4.7.1. SABERI (~RN31)&(~RN30)&(~RN29)&(~RN28)&(~RN27)&(~RN26)&(~RN25)&(~RN24) SABERI_P (~RN31)&(~RN30)&(~RN29)&(~RN28)&(~RN27)&(~RN26)&(~RN25)&RN24 ODUZMI (~RN31)&(~RN30)&(~RN29)&(~RN28)&(~RN27)&(~RN26)&RN25&(~RN24) ODUZMI_P (~RN31)&(~RN30)&(~RN29)&(~RN28)&(~RN27)&(~RN26)&RN25&RN24 I (~RN31)&(~RN30)&(~RN29)&(~RN28)&(~RN27)&RN26&(~RN25)&(~RN24) ILI (~RN31)&(~RN30)&(~RN29)&(~RN28)&(~RN27)&RN26&(~RN25)&RN24 NE (~RN31)&(~RN30)&(~RN29)&RN28&(~RN27)&(~RN26)&(~RN25)&(~RN24) LEVO (~RN31)&(~RN30)&(~RN29)&RN28&(~RN27)&(~RN26)&(~RN25)&RN24 DESNO (~RN31)&(~RN30)&(~RN29)&RN28&(~RN27)&(~RN26)&RN25&(~RN24) UPOREDI (~RN31)&(~RN30)&RN29&(~RN28)&(~RN27)&(~RN26)&(~RN25)&(~RN24) Slika 4.7.1 Funkcije koje opisuju dekodiranje naredbi Poto prethodne dekoderske funkcije jednoznano odreuju sklop koji se aktivira, svi prekidai iz ove grupe imaju isti posebni argument (u bitu UR 37). Prekidai P51 zahtevaju dodatni poseban argument (u bitu UR 38), da bi se sklop za sabiranje mogao koristiti za uveanje programskog brojaa i za izraunavanje adrese kod indeksnog adresiranja. Na slici 4.7.2 su navedene funkcije koje opisuju upravljanje prekidaima od P1 do P59.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

91

prekida P1 P2 P2x+3 (x = 0, ... , 15) P2x+4 (x = 0, ... , 15) P35 P36 P37 P38 P39 P40 P41 P42 P43 P44 P45 P46 P47 P48 P49 P50 P51 P52 P53 P54 P55 P56 P57 P58 P59

logika funkcija R&(~T)&UR18 R&(~T)&UR19 R&(~T)&UR20&REGISTARx R&(~T)&UR21&REGISTARx R&(~T)&UR22 R&(~T)&UR23 R&(~T)&UR24 R&(~T)&UR25 R&(~T)&UR26 R&(~T)&UR27 R&(~T)&UR28 R&(~T)&UR29 R&(~T)&UR30 R&(~T)&UR31 R&(~T)&UR32 R&(~T)&UR33 R&(~T)&UR34 R&(~T)&UR35 R&(~T)&UR36 R&(~T)&UR37&(SABERI_P|ODUZMI_P) R&(~T)&((UR37&(SABERI|ODUZMI_P))|UR38) R&(~T)&UR37&(ODUZMI|ODUZMI_P|UPOREDI) R&(~T)&UR37&I R&(~T)&UR37&ILI R&(~T)&UR37&NE R&(~T)&UR37&LEVO R&(~T)&UR37&DESNO R&(~T)&UR39 R&(~T)&UR40

Slika 4.7.2 Upravljanje prekidaima od P1 do P59

4.8 MAINSKI OBLICI MIKRO-PROGRAMA


Sadraj inicijalnog registra je: 1000000000002. Kada ovaj sadraj dospe u regisar sekvence, on u poluciklusu dobavljanja izazove zatvaranje prekidaa P65 i punjenje jedine mikro-naredbe inicijalnog mikro-programa u upravljaki registar. Mainski oblik inicijalnog mikro-programa sadri slika 4.8.1.

92

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

heksadecimalna adresa i binarni sadraj znaenje jedininih bita lokacije mikro-programske memorije sadraja lokacije 4 3 2 1 0 biti biti 09876543210987654321098765432 1098 76543210 40 -> 12 11 -> 8 00 00000000000000100000000100000 1000 00000001 P39, P65

Slika 4.8.1 Mainski oblik inicijalnog mikro-programa Mainski oblik mikro-programa dobavljanja sadri slika 4.8.2.
heksadecimalna adresa i binarni sadraj lokacije mikro-programske memorije 4 3 2 1 0 09876543210987654321098765432 1098 76543210 00000001000001001000000100000 1000 00000010 00000100000001001000000000000 1000 00000011 00001000000000011000000000000 1000 00000100 00100000000000000000000000000 1000 00000101 10000000000000100000000000000 0001 00000000 znaenje jedininih bita sadraja lokacije biti biti 40 -> 12 11 -> 8 P46,P40,P37, P65 P48,P40,P37 P65 P49,P38,P37 P65 P51 P65 P59,P39 1

01 02 03 04 05

Slika 4.8.2 Mainski oblik mikro-programa dobavljanja Mainski oblik mikro-programa izvravanja 1. vrste sadri slika 4.8.3.
heksadecimalna adresa i binarni sadraj lokacije mikro-programske memorije 4 3 2 1 0 09876543210987654321098765432 1098 76543210 00000000000000000000000001001 0010 00000111 00000000110010000000000001010 0010 00001000 00000010000000000100000000000 1000 00001001 00000100000100001000000000000 1000 00001010 00001000010000001000000000000 1000 00001011 00010000000000000000000000000 1000 00001100 01000000000000000010000000000 1000 00001101 10000000001000000000000001100 0010 00000001 znaenje jedininih bita sadraja lokacije biti biti 40 -> 12 11 -> 8 P63,P60 2 P45,P44,P41,P63,P61 2 P47,P36 P65 P48,P42,P37 P65 P49,P44,P37 P65 P50/P51/.../P54 P65 P58,P35 P65 P59,P43,P63,P62 2

06 07 08 09 0A 0B 0C 0D

Slika 4.8.3 Mainski oblik mikro-programa izvravanja 1. vrste Mainski oblik mikro-programa izvravanja 2. vrste sadri slika 4.8.4.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)


heksadecimalna adresa i binarni sadraj lokacije mikro-programske memorije 4 3 2 1 0 09876543210987654321098765432 1098 76543210 00000000000000000000000001001 0010 00001111 00000010000000000100000000000 1000 00010000 00000100010000001000000000000 1000 00010001 00010000000000000000000000000 1000 00010010 01000000000000000010000000000 1000 00010011 10000000001000000000000001010 0010 00000001

93

0E 0F 10 11 12 13

znaenje jedininih bita sadraja lokacije biti biti 40 -> 12 11 -> 8 P63,P60 2 P47,P36 P65 P48,P44,P37 P65 P55/P56/P57 P65 P58,P35 P65 P59,P43,P63,P61 2

Slika 4.8.4 Mainski oblik mikro-programa izvravanja 2. vrste Mainski oblik mikro-programa izvravanja 3. vrste sadri slika 4.8.5.
heksadecimalna adresa i binarni sadraj lokacije mikro-programske memorije 4 3 2 1 0 09876543210987654321098765432 1098 76543210 00000000000000000000000001001 0010 00010101 00000000110010000000000001010 0010 00010110 00000010000000000100000000000 1000 00010111 00000100000100001000000000000 1000 00011000 00001000010000001000000000000 1000 00011001 00010000000000000000000000000 1000 00011010 01000000000000000010000000000 1000 00000001 znaenje jedininih bita sadraja lokacije biti biti 40 -> 12 11 -> 8 P63,P60 2 P45,P44,P41,P63,P61 2 P47,P36 P65 P48,P42,P37 P65 P49,P44,P37 P65 P52 P65 P58,P35 P65

14 15 16 17 18 19 1A

Slika 4.8.5 Mainski oblik mikro-programa izvravanja 3. vrste Mainski oblik mikro-programa izvravanja 4. i 5. vrste sadri slika 4.8.6 (razlikovanje bezuslovnih i uslovnih upravljakih naredbi omoguuju funkcije prekidaa P64 i P65).
heksadecimalna adresa i binarni sadraj znaenje jedininih bita lokacije mikro-programske memorije sadraja lokacije 4 3 2 1 0 biti biti 09876543210987654321098765432 1098 76543210 40 -> 12 11 -> 8 1B 00000000000000000000000001001 0010 00011100 P63,P60 2 1C 00000000110000100000000000000 1000 00000001 P45,P44,P39 P65

Slika 4.8.6 Mainski oblik mikro-programa izvravanja 4. i 5. vrste Mainski oblik mikro-programa izvravanja 6. vrste sadri slika 4.8.7.

94

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)


heksadecimalna adresa i binarni sadraj lokacije mikro-programske memorije 4 3 2 1 0 09876543210987654321098765432 1098 76543210 00000000000000000000000001001 0010 00011110 00000000110010000000000000000 1000 00011111 00000000101001000000000000000 1000 00100000 00000000100100100000000000000 1000 00100001 00000000000000000000000001010 0010 00000001 znaenje jedininih bita sadraja lokacije biti biti 40 -> 12 11 -> 8 P63,P60 2 P45,P44,P41 P65 P45,P40,P43 P65 P45,P42,P39 P65 P63,P61 2

1D 1E 1F 20 21

Slika 4.8.7 Mainski oblik mikro-programa izvravanja 6. vrste

4.9 MAINSKI OBLICI MIKRO-POTPROGRAMA


Mainski oblik mikro-potprograma neposrednog operanda sadri slika 4.9.1.
heksadecimalna adresa i binarni sadraj lokacije mikro-programske memorije 4 3 2 1 0 09876543210987654321098765432 1098 76543210 00000000001001001000000100000 1000 00100011 00000100000001001000000000000 1000 00100100 00001000000000011000000000000 1000 00100101 00100000000000000000000000000 1000 00100110 10000000000000100000000000000 0100 00000001 znaenje jedininih bita sadraja lokacije biti biti 40 -> 12 11 -> 8 P43,P40,P37, P65 P48,P40,P37 P65 P49,P38,P37 P65 P51 P65 P59,P39 P64/P65

22 23 24 25 26

Slika 4.9.1 Mainski oblik mikro-potprograma neposrednog operanda Mainski oblik mikro-potprograma direktnog ulaznog operanda sadri slika 4.9.2.
heksadecimalna adresa i binarni sadraj lokacije mikro-programske memorije 4 3 2 1 0 09876543210987654321098765432 1098 76543210 00000000000001001000001100000 1000 00101000 00000100000001001000000000000 1000 00101001 00001000000000011000000000000 1000 00101010 00100000000000000000000000000 1000 00101011 10000000000000100000000000000 1000 00101100 00000000001000000000010100000 0100 00000001 znaenje jedininih bita sadraja lokacije biti biti 40 -> 12 11 -> 8 P40,P37,P1, P65 P48,P40,P37 P65 P49,P38,P37 P65 P51 P65 P59,P39 P65 P43,P2, P64/P65

27 28 29 2A 2B 2C

Slika 4.9.2 Mainski oblik mikro-potprograma direktnog ulaznog operanda Mainski oblik mikro-potprograma direktnog izlaznog operanda sadri slika 4.9.3.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)


heksadecimalna adresa i binarni sadraj lokacije mikro-programske memorije 4 3 2 1 0 09876543210987654321098765432 1098 76543210 00000000000001001000001100000 1000 00101110 00000100000001001000000000000 1000 00101111 00001000000000011000000000000 1000 00110000 00100000000000000000000000000 1000 00110001 10000000000000100000000000000 1000 00110010 00000000110000000000010010000 0100 00000000

95

2D 2E 2F 30 31 32

znaenje jedininih bita sadraja lokacije biti biti 40 -> 12 11 -> 8 P40,P37,P1, P65 P48,P40,P37 P65 P49,P38,P37 P65 P51 P65 P59,P39 P65 P45,P44,P2,P P64

Slika 4.9.3 Mainski oblik mikro-potprograma direktnog izlaznog operanda Mainski oblik mikro-potprograma registarskog ulaznog operanda sadri slika 4.9.4 (RX = 2X+4).
heksadecimalna adresa i binarni sadraj znaenje jedininih bita lokacije mikro-programske memorije sadraja lokacije 4 3 2 1 0 biti biti 09876543210987654321098765432 1098 76543210 40 -> 12 11 -> 8 33 000000001010000010010000000000 1000 0000001 P45,P43,P37,PRX P64/P65

Slika 4.9.4 Mainski oblik mikro-potprograma registarskog ulaznog operanda Mainski oblik mikro-potprograma registarskog izlaznog operanda sadri 4.9.5 (RX = 2X+3). slika

heksadecimalna adresa i binarni sadraj znaenje jedininih bita lokacije mikro-programske memorije sadraja lokacije 4 3 2 1 0 biti biti 09876543210987654321098765432 1098 76543210 40 -> 12 11 -> 8 34 00000000110000000000100000000 0100 00000000 P45,P44,PRX P64

Slika 4.9.5 Mainski oblik mikro-potprograma registarskog izlaznog operanda Mainski oblik mikro-potprograma indirektnog ulaznog operanda sadri slika 4.9.6 (RX = 2X+4).
heksadecimalna adresa i binarni sadraj znaenje jedininih bita lokacije mikro-programske memorije sadraja lokacije 4 3 2 1 0 biti biti 09876543210987654321098765432 1098 76543210 40 -> 12 11 -> 8 35 00000000001000000001000100000 0100 00000001 P43,PRX, P64/P65

Slika 4.9.6 Mainski oblik mikro-potprograma indirektnog ulaznog operanda Mainski oblik mikro-potprograma indirektnog izlaznog operanda sadri slika 4.9.7 (RX = 2X+4).

96

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

heksadecimalna adresa i binarni sadraj znaenje jedininih bita lokacije mikro-programske memorije sadraja lokacije 4 3 2 1 0 biti biti 09876543210987654321098765432 1098 76543210 40 -> 12 11 -> 8 36 00000000110000000001000010000 0100 00000000 P45,P44,PRX,P P64

Slika 4.9.7 Mainski oblik mikro-potprograma indirektnog izlaznog operanda Mainski oblik mikro-potprograma indeksnog ulaznog operanda sadri slika 4.9.8 (RX = 2X+4).
heksadecimalna adresa i binarni sadraj lokacije mikro-programske memorije 4 3 2 1 0 09876543210987654321098765432 1098 76543210 00000000000001001000001100000 1000 00111000 00000100000001001000000000000 1000 00111001 00001000000000011000000000000 1000 00111010 00100000000000000000000000000 1000 00111011 10000000000000100000000000000 1000 00111100 00000100000000000000010000000 1000 00111101 00001000000000000001000000000 1000 00111110 00100000000000000000000000000 1000 00111111 10000000000000000000001000000 1000 01000000 00000000001000000000010100000 0100 00000001 znaenje jedininih bita sadraja lokacije biti biti 40 -> 12 11 -> 8 P40,P37,P1, P65 P48,P40,P37 P65 P49,P38,P37 P65 P51 P65 P59,P39 P65 P48,P2 P65 P49,PRX P65 P51 P65 P59,P1 P65 P43,P2, P64/P65

37 38 39 3A 3B 3C 3D 3E 3F 40

Slika 4.9.8 Mainski oblik mikro-potprograma indeksnog ulaznog operanda Mainski oblik mikro-potprograma indeksnog izlaznog operanda sadri slika 4.9.9 (RX = 2X+4).
heksadecimalna adresa i binarni sadraj lokacije mikro-programske memorije 4 3 2 1 0 09876543210987654321098765432 1098 76543210 00000000000001001000001100000 1000 01000010 00000100000001001000000000000 1000 01000011 00001000000000011000000000000 1000 01000100 00100000000000000000000000000 1000 01000101 10000000000000100000000000000 1000 01000110 00000100000000000000010000000 1000 01000111 00001000000000000001000000000 1000 01001000 00100000000000000000000000000 1000 01001001 10000000000000000000001000000 1000 01001010 00000000110000000000010010000 0100 00000000 znaenje jedininih bita sadraja lokacije biti biti 40 -> 12 11 -> 8 P40,P37,P1, P65 P48,P40,P37 P65 P49,P38,P37 P65 P51 P65 P59,P39 P65 P48,P2 P65 P49,PRX P65 P51 P65 P59,P1 P65 P45,P44,P2,P P64

41 42 43 44 45 46 47 48 49 4A

Slika 4.9.9 Mainski oblik mikro-potprograma indeksnog izlaznog operanda

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

97

4.10 SADRAJI ADRESNIH MEMORIJA MIKRO-PROGRAMA I MIKRO-POTPROGRAMA


Adresna memorija mikro-programa ima vie lokacija od broja vrsta naredbi. U lokacijama koje odgovaraju pojedinim vrstama naredbi, nalaze se ulazne adrese odgovarajuih mikro-programa. U preostalim lokacijama je zgodno da se nalazi ulazna adresa posebnog mikro-programa oporavka. Njegov zadatak je da zapone novu fazu dobavljanja i tako omogui oporavak od greaka u izvravanju, koje su posledica pojave kodova nepostojeih vrsta naredbi. Mainski oblik mikroprograma oporavka sadri slika 4.10.1.
heksadecimalna adresa i binarni sadraj lokacije mikro-programske memorije 4 3 2 1 0 09876543210987654321098765432 1098 76543210 4B 00000000000000000000000000000 1000 00000001 znaenje jedininih bita sadraja lokacije biti biti 40 -> 12 11 -> 8 P65

Slika 4.10.1 Mainski oblik mikro-programa oporavka Sadraj lokacija adresne memorije mikro-programa je prikazan na slici 4.10.2.
adresna heksadec. heksadec. adresa sadraj lokacije lokacije 0 06 1 0E 2 14 3 1B 4 1B 5 1D od 6 do F 4B memorija mikro-programa prikazani sadraj lokacije predstavlja ulaznu adresu: mikro-programa mikro-programa mikro-programa mikro-programa mikro-programa mikro-programa mikro-programa izvravanja izvravanja izvravanja izvravanja izvravanja izvravanja oporavka 1. 2. 3. 4. 5. 6. vrste vrste vrste vrste vrste vrste

Slika 4.10.2 Sadraj lokacija adresne memorije mikro-programa Adresna memorija mikro-potprograma ima vie lokacija od broja vrsta operanada. U lokacijama, koje odgovaraju pojedinim vrstama operanada, nalaze se ulazne adrese odgovarajuih mikro-potprograma. U preostalim lokacijama je zgodno da se nalazi ulazna adresa posebnog mikro-potprograma oporavka. Njegov zadatak je da zapone novu fazu dobavljanja i tako omogui oporavak od greaka u izvravanju, koje su posledica pojave kodova nepostojeih vrsta operanada. Mikro-potprogram oporavka se ne razlikuje od istoimenog mikroprograma. Sadraj lokacija adresne memorije mikro-potprograma je prikazan na slici 4.10.3.

98

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

adresna memorija mikro-potprograma heksadec. heksadec. prikazani sadraj lokacije adresa sadraj predstavlja ulaznu adresu: lokacije lokacije 0 22 mikro-potprograma neposrednog operanda 1 27 mikro-potprograma direktnog ulaznog operanda 2 2D mikro-potprograma direktnog izlaznog operanda 3 33 mikro-potprograma registarskog ulaznog operanda 4 34 mikro-potprograma registarskog izlaznog operanda 5 35 mikro-potprograma indirektnog ulaznog operanda 6 36 mikro-potprograma indirektnog izlaznog operanda 7 37 mikro-potprograma indeksnog ulaznog operanda 8 41 mikro-potprograma indeksnog izlaznog operanda od 9 do F 4B mikro-programa oporavka

Slika 4.10.3 Sadraj lokacija adresne memorije mikro-potprograma

4.11 RAZMATRANJE RADA PROCESORA KONCEPT


Pre poetka rada procesora KONCEPT, sadraj inicijalnog registra se prebaci u registar sekvence, zahvaljujui zatvaranju prekidaa P66 (slika 4.11.1).
R T priprema dobavljanja jedine mikro-naredbe inicijalnog mikro-programa

dobavljanje jedine mikro-naredbe inicijalnog mikro-programa

izvravanje jedine mikro-naredbe inicijalnog mikro-programa i priprema dobavljanja prve mikro-naredbe mikro-programa dobavljanja

dobavljanje prve mikro-naredbe mikro-programa dobavljanja

Slika 4.11.1 Vremenski dijagram rada procsora KONCEPT Poetni sadraj registra sekvence dovodi do punjenja upravljakog registra sadrajem prve lokacije mikro-programske memorije (sa adresom 00 16). Na taj nain, u upravljaki registar dospe mainski oblik jedine mikro-naredbe inicijalnog mikro-programa, ije izvravanje dovodi do smetanja sadraja prve memorijske lokacije (sa adresom 0000000016) u programski broja. Nakon toga, u upravljaki registar se smesti sadraj druge lokacije mikro-programske memorije (sa adresom 0116). Time se za izvravanje spremi prva mikro-naredba mikro-programa dobavljanja. Prvo izvravanje ovog mikro-programa dovodi do prebacivanja u

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

99

registar naredbe sadraja memorijske lokacije iju adresu sadri programski broja. Ako ova memorijska lokacija sadri, na primer, obaveznu re naredbe:
SABERI 01,0,R0

(ija mainska predstava zauzima tri uzastopne memorijske lokacije, jer obuhvata obaveznu i dve dodatne rei: 0000004016 0000000116 0000000016), tada iza izvravanja poslednje mikro-naredbe mikro-programa dobavljanja sledi izvravanje mikro-programa izvravanja naredbi 1. vrste (sa ulaznom adresom 06 16). Nakon izvravanja prve mikro-naredbe ovog mikro-programa, sledi izvravanje prve mikro-naredbe mikro-potprograma neposrednog operanda (sa adresom 22 16). Po izvravanju poslednje mikro-naredbe ovog mikro-potprograma, sledi izvravanje druge mikro-naredbe mikro-programa izvravanja naredbi 1. vrste (sa adresom 0716). Nakon njenog izvravanja, sledi opet izvravanje prve mikro-naredbe mikropotprograma neposrednog operanda (sa adresom 2216). Po izvravanju poslednje mikro-naredbe ovog mikro-potprograma, sledi izvravanje tree mikro-naredbe mikro-programa izvravanja naredbi 1. vrste (sa adresom 0816). Iza izvravanja poslednje mikro-naredbe ovog mikro-programa (sa adresom 0D 16), sledi izvravanje prve mikro-naredbe mikro-potprograma registarskog izlaznog operanda (sa adresom 3416). Nakon izvravanja jedine mikro-naredbe ovog mikro-potprograma, sledi opet izvravanje prve mikro-naredbe mikro-programa faze dobavljanja (sa adresom 0116).

4.12 PITANJA
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ta je cilj dekodiranja adrese? Koje linije ulaze u memoriju? ta se nalazi u obaveznoj rei? ta se nalazi u dodatnoj rei (objasniti na primeru)? Koji naini adresiranja zahtevaju dodatnu re (objasniti na primeru)? Kakvu ulogu ima registar naredbi? Kakvu ulogu ima programski broja? Kakvu ulogu ima registar adrese? Kakvu ulogu imaju registar 1. i 2. operanda? Koji registri posebne namene postoje u aritmetiko-logikoj jedinici? Kakvu ulogu imaju sklopovi aritmetiko-logike jedinice? Od kojih faza se sastoji period aktivnosti procesora? ta je mikro-naredba? ta je mikro-program? Koje vrste mikro-programa postoje? Kakva je namena mikro-potprograma? ta se deava u procesoru tokom izvravanja pojedinih mikro-programa i mikro-potprograma (objasniti na primeru)?

100

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.

Koju ulogu ima inicijalni mikro-program? Od ega zavisi duina procesorskog ciklusa? ta se nalazi u upravljakom registru? Kakvu ulogu ima logika promenljiva T? ta odreuje veliinu i broj lokacija mikro-programske memorije? Kako se odreuje redosled izvravanja mikro-naredbi? ta odreuje poetak aktivnosti procesora? Zato su uvedene adresne memorije mikro-programa i mikropotprograma? Koji registri posebne namene postoje u upravljakoj jedinici? ta sadri registar sekvence? Kada je zatvoren prekida P66? Kada logike promenljive 1, 2 i 3 imaju vrednost 1? Kada se zatvaraju prekidai P64 i P65? Odakle stiu adrese u mikro-programsku memoriju? Za koje prekidae je vezano dekodiranje rednog broja registra? Za koje prekidae je vezano dekodiranje koda naredbe? ta sadri mikro-programska memorija (objasniti na primeru)? ta se desi u sluaju pojave nedefinisanog koda naredbe ili nedefinisanog koda operanda? Kako zapoinje aktivnost procesora (objasniti na primeru)?

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

101

5. RAUNAR KONCEPT
5.1 ORGANIZACIJA RAUNARA KONCEPT
Slika 5.1.1 prikazuje raunar, sastavljen od procesora i memorije.
adresne linije linije podataka P

PROCESOR

32 32

MEMORIJA

Slika 5.1.1. Organizacija raunara sastavljenog od procesora i memorije Raunar koji se sastoji samo od procesora i memorije je neupotrebljiv, jer nema naina da se izvana izmeni ili pregleda sadraj memorijskih lokacija, pa ni da se utie na rad raunara, a ni da se taj rad prati. Ovakav raunar postaje upotrebljiv, ako se obezbedi vanjski uticaj na nivoe signala u upravljakim linijama (P i ), kao i u adresnim linijama i u linijama podataka. Takoe, potrebno je i prikazati nivoe signala u linijama podataka, koji odraavaju binarne, odnosno logike vrednosti. Za vanjski uticaj na nivoe signala neophodne su mehanike sklopke, a za prikazivanje nivoa signala potrebne su svetlosne diode (slika 5.1.2).
adresne linije linije podataka LED P

PROCESOR

32 32

MEMORIJA

S1 S2 S3 S4 32 32 1 32

1 1

...

Slika 5.1.2. Organizacija raunara KONCEPT

102

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Oznaka S1 se odnosi na 66 meusobno povezanih mehanikih sklopki, koje imaju 2 poloaja i sve se uvek nalaze u istom poloaju. Zatvaranje ovih sklopki zaustavlja rad procesora i omoguuje uticanje na nivoe signala u upravljakim linijama (P i ), ali i u adresnim linijama i u linijama podataka. Otvaranjem ovih sklopki zapoinje rad procesora. Oznaka S2 se odnosi na mehaniku sklopku sa 3 poloaja (levo, neutralno, desno), koja omoguuje uticanje na nivoe signala u upravljakim linijama P i . Postavljanje ove sklopke u desni poloaj dovodi na nivo 1 signal u liniji P, a postavljanje ove sklopke u levi poloaj dovodi na nivo 1 signal u liniji . Oznaka S3 se odnosi na 32 meusobno nezavisne mehanike sklopke, svaka sa po 2 poloaja, koje omoguuju uticanje na nivoe pojedinih signala u adresnim linijama. Zatvaranje svake od ovih sklopki dovodi na nivo 1 signal u korespondentnoj adresnoj liniji. Oznaka S4 se odnosi na 32 meusobno nezavisne mehanike sklopke, svaka sa po 2 poloaja, koje omoguuju uticanje na nivoe pojedinih signala u linijama podataka. Zatvaranje svake od ovih sklopki dovodi na nivo 1 signal u korespondentnoj liniji podataka. Oznaka LED se odnosi na 32 meusobno nezavisne svetlosne diode, koje omoguuju prikazivanje nivoa pojedinih signala u linijama podataka. Svaka od ovih svetlosnih dioda svetli samo ako je u njenoj liniji signal na nivou 1. Mehanike sklopke i svetlosne diode se nalaze na upravljakoj tabli (slika 5.1.3).
raunar ne radi raunar radi procesor ne radi (R) S1 adresne sklopke 0 S31 1 S431 LED podataka L31 sklopke podataka 0 S41 1 0 S40 1 procesor radi (R) neutralno S2 0 S30 1 1 P

S0 0 S331 0 1

...

...

...

L1

L0

Slika 5.1.3. Upravljaka tabla raunara KONCEPT

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

103

Upravljaka tabla sadri i sklopku S0, sa 2 poloaja. Kada je u desnom poloaja, ova sklopka omoguuje rad raunara, jer tada dovodi napajanje do njegovih sklopova. Ako je ova sklopka u suprotnom poloaju, tada raunar ne radi, jer su njegovi sklopovi bez napajanja. Za sklopke S3 i S4 se podrazumeva da dovode signal na nivo 1 kada su u desnom poloaju. Indeks uz oznake ovih sklopki, kao i uz oznake svetlosnih dioda (L), pokazuje za koju od linija su vezane odgovarajue sklopke, odnosno svetlosne diode. Pisanje memorijske lokacije zapoinje dovoenjem sklopke S2 u neutralni poloaj, a sklopke S1 u levi poloaj. Zatim se sklopke S3 i S4 postavljaju u poloaje odreene adresom pomenute memorijske lokacije i njenim novim sadrajem. Kada se svaka od sklopki S3 i S4 dovede u eljeni poloaj, sklopka S2 se dovodi u desni poloaj i time se izmeni sadraj pomenute memorijske lokacije. itanje memorijske lokacije zapoinje dovoenjem sklopke S2 u neutralni poloaj, a sklopke S1 u levi poloaj. Zatim se sklopke S3 postavljaju u poloaje odreene adresom pomenute memorijske lokacije. Kada se svaka od sklopki S3 dovede u eljeni poloaj, sklopka S2 se dovodi u levi poloaj. Dok se ona nalazi u levom poloaju, svetlosne diode odraavaju sadraj pojedinih bita pomenute memorijske lokacije. Do izvravanja datog programa dolazi nakon prebacivanja sklopke S1 u desni poloaj, ako se, prethodno, u prvu memorijsku lokaciju (sa adresom 0000000016) smesti ulazna adresa ovog programa. Kraj izvravanja programa se prepoznaje po pravilnoj izmeni stanja svetleih dioda, ako se na kraju programa nalazi beskonana petlja (jer se tada ponavlja izvravanje iste naredbe, to znai da se u linijama podataka neprekidno ponavljaju iste kombinacije nivoa signala, odreene reima mainskog oblika ove naredbe).

5.2 ULAZNI I IZLAZNI UREAJI RAUNARA KONCEPT


Upravljaka tabla je nepregledna, pa je njeno korienje sporo i bremenito grekama. Zato je bolje binarnu komunikaciju korisnika i raunara, koju namee upravljaka tabla, zameniti znakovnom komunikacijom. To podrazumeva da se, za saoptavanje komandi raunaru, ne koriste poloaji prekidaa, nego nizovi znakova. KOMANDNI JEZIK Znakovni oblik komandi za pisanje (P) memorijske lokacije, za itanje () memorijske lokacije i za pokretanje izvravanja (I) programa, opisuje pravilo komandnog jezika (command language), navedeno u EBNF notaciji:
komanda -> P razmak heksadecimalni_broj,heksadecimalni_broj | razmak heksadecimalni_broj |I razmak heksadecimalni_broj

104

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Heksadecimalni brojevi predstavljaju argumente komandi. Prvi od njih oznaava adresu memorijske lokacije, a drugi oznaava novi sadraj ove memorijske lokacije. TASTATURA Znakovna komunikacija korisnika i raunara zahteva posebne ulazne i izlazne ureaje. Ulazni ureaj ima oblik tastature, sa dirkama koje pripadaju pojedinim znakovima. Pritisak na dirku generie kod, dodeljen znaku kome dirka pripada. Radi jednostavnosti se moe smatrati da su kodovi pojedinih znakova smeteni u lokacije posebne memorije tastature i da pritisak na dirku zatvara prekida koji omoguuje itanje koda znaka iz odgovarajue lokacije memorije tastature (slika 5.2.1).
memorija tastature kod znaka1 kod znaka2 dirka1 dirka2 memorija dirkan

...
kod znakan

Slika 5.2.1 Organizacija tastature Sa stanovita procesora, zgodno je da generisani kod dospe u neku predodreenu memorijsku lokaciju, iz koje procesor moe da ita ovaj kod kao i svaki drugi podatak. Prema tome, sa strane procesora, ova lokacija se ne razlikuje od ostalih memorijskih lokacija. Ona se ipak razlikuje od obinih memorijskih lokacija, jer je direktno vezana za tastaturu, sa koje prima svoj sadraj. Zbog toga, ovakva lokacija ne pripada memoriji, nego posebnom sklopu, koji se naziva kontroler tastature, a iji je osnovni zadatak je da posreduje izmeu tastature i procesora. Pomenuta lokacija se naziva registar podataka (kontrolera) tastature. Podrazumeva se da registar podataka tastature uvek sadri kod znaka koji odgovara poslednje pritisnutoj dirki tastature. Da bi se spreilo da procesor viestruko preuzme kod istog znaka izmeu dva uzastopna pritiska dirki tastature, neophodno je oznaiti kada se u registru podataka tastature nalazi nepreuzet, a kada ve preuzet kod znaka. Radi toga se uvodi registar stanja (kontrolera) tastature, koji sa strane procesora lii na obinu memorijsku lokaciju, a iji biti odraavaju stanje kontrolera tastature i automatski se menjaju pri izmenama stanja ovog kontrolera. Nulti bit registra stanja tastature oznaava da li registar podataka tastature sadri preuzet ili nepreuzet kod znaka. Kada je kod znaka preuzet, ovaj bit sadri vrednost 0, a kada je kod znaka nepreuzet, ovaj bit sadri vrednost 1. Inicijalni sadraj ovoga bita je uvek vrednost 0. Pritisak bilo koje dirke tastature izaziva

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

105

smetanje koda odgovarajueg znaka u registar podataka tastature, kao i smetanje vrednosti 1 u nulti bit registra stanja tastature. itanje registra podataka tastature izaziva smetanje vrednosti 0 u nulti bit registra stanja tastature. Nema smisla itati registar podataka tastature dok se u nultom bitu registra stanja tastature ne pojavi vrednost 1. Retko itanje registra podataka tastature, ree od pritiskanja dirki tastature, ima za posledicu gubljenje kodova znakova. U ovakvoj situaciji novi kod istiskuje zateeni iz registra podataka tastature, jer zauzima njegovo mesto, a u nulti bit registra stanja tastature se smeta vrednost 1. Sa stanovita procesora, ulazni ureaj u obliku tastature predstavljaju dva registra kontrolera tastature, koje ima smisla samo itati. Na ovaj nain, kontroler tastature sakriva od procesora detalje funkcionisanja tastature i nudi jednoobrazan nain pristupanja bilo kojoj tastaturi (slika 5.2.2).
adresne linije linije podataka registar podataka tastatura 32 8 registar stanja

32

Slika 5.2.2 Organizacija kontrolera tastature Za kontroler tastature se podrazumeva da 8 bitni kod, generisan u tastaturi, odlazi u 8 najmanje znaajnih bita registra podataka tastature. EKRAN Izlazni ureaj ima oblik ekrana sa takama koje mogu biti osvetljene ili neosvetljene. Ove take su grupisane u (pravougaone) matrice, od kojih svaka obrazuje znakovnu poziciju za prikazivanje jednog znaka. Oblik znaka obrazuju osvetljene take znakovne pozicije, pri emu se iz koda znaka odreuje koje take su osvetljene. Radi jednostavnosti se moe smatrati da kodovi pojedinih znakova predstavljaju adrese lokacija posebne memorije ekrana. Podrazumeva se da broj bita svake od ovih lokacija odgovara broju taaka znakovne pozicije, a sadraj svakog bita odreuje osvetljenost korespondentne take znakovne pozicije (slika 5.2.3).

106

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

memorija ekrana take matrice znaka 1 take matrice znaka 2

kod znakai izaziva zatvaranje prekidaai prekida1 prekida2 ekran prekidan

...
take matrice znaka n

Slika 5.2.3 Organizacija ekrana Znakovne pozicije ekrana iz iste horizontale obrazuju liniju ekrana. Znak se uvek prikazuje u znakovnoj poziciji koja sadri poseban znak, nazvan kursor. Novi znak smenjuje kursor, a kursor se pomera horizontalno u sledeu, prvu desnu znakovnu poziciju iste linije. Kada se popune sve pozicije date linije, kursor prelazi u prvu (krajnje levu) znakovnu poziciju naredne (donje) linije. Ako se kursor nalazi u poslednjoj (krajnje desnoj) znakovnoj poziciji poslednje linije, tada se sadraj svih linija pomera vertikalno na gore, tako to se znak iz svake znakovne pozicije pomera vertikalno u prvu gornju znakovnu poziciju. Opisano pomeranje sadraja svih linija na gore dovodi do istiskivanja sadraja prve linije (sa vrha) ekrana, radi oslobaanja prostora u poslednjoj liniji (sa dna) ekrana. Upravljaki znakovi omoguuju izbor znakovne pozicije u kojoj se prikazuje znak, jer po ekranu pomeraju kursor u izabranu znakovnu poziciju. Na primer, upravljaki znak nova linija (line feed) pomera vertikalno kursor po ekranu u znakovnu poziciju ispod znakovne pozicije u kojoj je zateen kursor. To moe izazvati prethodno opisano pomeranje sadraja svih linija ekrana. Slino tome, upravljaki znak poetak linije (carriage return) pomera kursor u prvu znakovnu poziciju linije u kojoj se kursor nalazi. Sa stanovita procesora, zgodno je da se kod prikazivanog znaka smesti u neku predodreenu memorijsku lokaciju, iz koje se taj kod upuuje na ekran. Prema tome, sa strane procesora ova lokacija se ne razlikuje od ostalih memorijskih lokacija. Ona se ipak razlikuje od obinih memorijskih lokacija, jer je direktno vezana za ekran. Zato ovakva lokacija ne pripada memoriji, nego posebnom sklopu, koji se naziva kontroler ekrana. Njegov osnovni zadatak je da posreduje izmeu ekrana i procesora. Pomenuta lokacija se naziva registar podataka (kontrolera) ekrana. Podrazumeva se da registar podataka ekrana sadri kod znaka koji je poslednji upuen na prikazivanje. Da bi se spreilo da procesor upisuje u registar podataka ekrana kodove prikazivanih znakova bre nego to se njihovi oblici mogu prikazati, neophodno je oznaiti kada je prikazan znak iji kod je upisan u registar podataka ekrana. Radi toga se uvodi registar stanja (kontrolera) ekrana, koji sa

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

107

strane procesora lii na obinu memorijsku lokaciju, a iji biti odraavaju stanje kontrolera ekrana i automatski se menjaju pri izmenama stanja ovog kontrolera. Nulti bit registra stanja ekrana oznaava da li je znak, iji kod je u registru podataka ekrana, prikazan ili ne. Kada je znak prikazan, ovaj bit sadri vrednost 1, a kada znak nije prikazan, ovaj bit sadri vrednost 0. Inicijalni sadraj ovoga bita je uvek vrednost 1. Upisivanje koda znaka (koji se prikazuje) u registar podataka ekrana izaziva smetanje vrednosti 0 u nulti bit registra stanja ekrana. Prikazivanje ovog znaka izaziva smetanje vrednosti 1 u nulti bit registra stanja ekrana. Nema smisla upisivati kod novog znaka u registar podataka ekrana, dok se u nultom bitu registra stanja ekrana ne pojavi vrednost 1. Suvie brzo pisanje kodova znakova u registar podataka ekrana, bre od prikazivanja znakova na ekranu, ima za posledicu gubljenje prikazivanih znakova. U ovakvoj situaciji novi kod istiskuje zateeni iz registra podataka ekrana, zauzimajui njegovo mesto, a u nulti bit registra stanja ekrana se smeta vrednost 0. Sa stanovita procesora, izlazni ureaj u obliku ekrana predstavljaju dva registra kontrolera ekrana. Na ovaj nain kontroler ekrana sakriva od procesora detalje funkcionisanja ekrana i nudi jednoobrazan nain pristupanja bilo kom ekranu (slika 5.2.4).
adresne linije linije podataka P registar stanja registar podataka ekran 8

32 32

Slika 5.2.4 Organizacija kontrolera ekrana Za kontroler ekrana se podrazumeva da se 8 bitni kod, koji ide ka ekranu, preuzima iz 8 najmanje znaajnih bita registra podataka ekrana. Funkcionisanje izlaznog ureaja, u obliku matrinog tampaa, se sutinski ne razlikuje od prethodno opisanog funkcionisanja ekrana. RAUNAR KONCEPT SA ZNAKOVNIM ULAZOM I IZLAZOM Upotrebljiva verzija raunara KONCEPT se sastoji od procesora, memorije, tastature i ekrana (slika 5.2.5).

108

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

PROCESOR

32 32

adresne linije linije podataka P

MEMORIJA

TASTATURA

TERMINAL

EKRAN

Slika 5.2.5 Organizacija raunara KONCEPT sa znakovnim ulazom i izlazom Na slici 5.2.5 kvadrati sa natpisima TASTATURA i EKRAN obuhvataju i kontrolere i fizike ureaje, okrenute korisniku. Poto se, sa stanovita procesora, registri podataka i registri stanja kontrolera ne razlikuju od obinih memorijskih lokacija, oni zamenjuju obine memorijske lokacije kojima po pravilu odgovaraju najvie adrese. Prema tome, za toliko lokacija se smanjuje ukupan broj obinih memorijskih lokacija. ZNAKOVNA INTERAKCIJA KORISNIKA I RAUNARA Komandu, koja se sastoji od niza znakova, korisnik saoptava raunaru pomou tastature. Pritiskom na odgovarajuu dirku tastature korisnik unosi, s leva u desno, jedan po jedan znak komande. Za unesene znakove je vano da se prikau na ekranu, da bi korisnik mogao da uoi eventualno pogreno unesen znak. Ispravljanje pogreno unesenih znakova se zasniva na njihovom ponitavanju. Znakovi se ponitavaju jedan po jedan, s desna u levo. Znai, prvi se ponitava poslednje unesen znak. Ponitavanju znakova je posveena posebna dirka tastature. Pritisak na ovu dirku (za ponitavanje) generie kod odgovarajueg upravljakog znaka ponitavanja (delete). Prikaz unesenih znakova na ekranu se naziva eho, a unos znakova i ispravljanje pogreno unesenih znakova se naziva editiranje. Zbog eha i editiranja, korisnik doivljava tastaturu i ekran kao jedinstven ureaj, koji se naziva terminal.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

109

Oblik neposredne komunikacije korisnika i raunara, koji se javlja u editiranju, se naziva interaktivni rad. Nakon ispravnog unosa svih znakova komande, sledi prepoznavanje vrste komande i izdvajanje njenih argumenata. Zatim dolazi ili do izmene sadraja navedene memorijske lokacije (u sluaju prve komande P), ili do prikazivanja na ekranu, u heksadecimalnom obliku, sadraja navedene memorijske lokacije (u sluaju druge komande ), ili do pokretanja izvravanja korisnikog programa (u sluaju tree komande I). Prepoznavanje vrste komande, izdvajanje njenih argumenata i njeno izvravanje se zajedno nazivaju interpretiranje komande. Interpretiranje komande nastupa tek nakon njenog saoptavanja, znai, nakon unosa svih njenih znakova, odnosno, po zavretku editiranja. Za oznaavanje kraja saoptavanja komande slui posebna dirka tastature. Pritisak na ovu dirku (za kraj unosa) generie kod odgovarajueg upravljakog znaka kraja unosa (enter). Interpretiranje komandi je u nadlenosti posebnog programa, koji se naziva interpreter komandi. Pre preuzimanja komande, interpreter komandi na ekranu prikazuje poseban znak prompt, kojim saoptava korisniku da je spreman za preuzimanje komande:
for(;;) { prikai prompt; prevedi interpreter u stanje sa grekom; preuzmi komandu; if (prvi znak komande je P) if (sledi heksadecimalni broj) if (sledi zarez) if (sledi heksadecimalni broj) { prevedi interpreter u stanje bez greke; izmeni sadraj navedene memorijske lokacije; }; else if (prvi znak komande je ) if (sledi heksadecimalni broj) { prevedi interpreter u stanje bez greke; prikai sadraj navedene memorijske lokacije; }; else if (prvi znak komande je I) if (sledi heksadecimalni broj) { prevedi interpreter u stanje bez greke; pokreni izvravanje korisnikog programa; if (interpreter je u stanju sa grekom) { prikai poruku greke; }; };

U toku prepoznavanja komandi, interpreter komandi sistematski ispituje sve dozvoljene mogunosti (predviene komandnim jezikom), a izvravanju komande pristupa im prepozna ispravnu komandu i izdvoji njene argumente. Pri izdvajanju, argumenti se prevode iz znakovnog u interni oblik. Obrnuto se deava kod prikazivanja (u heksadecimalnom obliku) sadraja memorijskih lokacija.

110

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Za pokretanje izvravanja programa (komanda I) najbolje je da korisniki program bude u obliku potprograma, ije izvravanje se pokree naredbom POZOVI, a zavrava naredbom NATRAG. Na taj nain se, po izvravanju korisnikog programa, automatski nastavlja izvravanje interpretera komandi. Opisani interpreter komandi podrazumeva da se korisniki programi unose u mainskom obliku. Preuzimanje znakova (koji obrazuju komande), odnosno prikazivanje znakova (koje sadre memorijske lokacije) nalazi se u nadlenosti posebnog programa koji se naziva drajver (driver) terminala. On se sastoji od 2 potprograma koji podravaju 2 operacije. Prva, ulazna operacija je namenjena za preuzimanje znakova sa terminala (sa tastature), a druga, izlazna operacija je namenjena za prikaz znakova na terminalu (na ekranu). Ove dve operacije omoguuju korienje terminala bez poznavanja detalja njegovog funkcionisanja. Na taj nain, oni objedinjuju tastaturu i ekran u jedinstven ureaj. U ulaznoj operaciji se obavljaju preuzimanje, eho i editiranje preuzetih znakova. Preuzeti znakovi se odlau u ulaznu memorijsku zonu koja se naziva ulazni bafer. Ulazni bafer pripada programu kao to je interpreter komandi, iz koga je ulazna operacija pozvana. Poziv ulazne operacije sadri, kao argumente, adresu poetka i duinu ulaznog bafera. Opisana ulazna operacija omoguuje preuzimanje samo znakova koji pristignu sa tastature nakon njenog poziva. Preuzimanje jednog znaka u okviru ulazne operacije opisuje sledea asemblerska sekvenca:
ekaj_tastaturu UPOREDI SKOI_ZA_= PREBACI registar_stanja_tastature,0 ekaj_tastaturu registar_podataka_tastature,R0

Podrazumeva se da je registar_stanja_tastature labela registra stanja tastature, da je registar_podataka_tastature labela registra podataka tastature i da je preuzeti znak, odnosno njegov kod, smeten u registar R0. Eho preuzetog znaka u okviru ulazne operacije opisuje sledea asemblerska sekvenca:
ekaj_ekran UPOREDI SKOI_ZA_= PREBACI registar_stanja_ekrana,0 ekaj_ekran R0,registar_podataka_ekrana

labela registra stanja ekrana, da je registra podataka ekrana i da se znak, odnosno kod znaka, iji eho se vri, nalazi u registru R0. U obe prethodno navedene asemblerske sekvence ulazne operacije prisutno je radno ekanje (busy waiting, polling). Ono se sastoji od ponavljanja provere da li je ispunjen uslov, neophodan za preuzimanje, odnosno za eho znaka. Ovakva provera se ponavlja do ispunjenja pomenutog uslova.
registar_stanja_ekrana registar_podataka_ekrana labela

Podrazumeva se da je

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

111

Izvravanje prethodno navedenih asemblerskih sekvenci se ponavlja dok se ne preuzme ili zadani broj znakova, koji odgovara duini ulaznog bafera, ili upravljaki znak kraja unosa. Preuzimanje upravljakog znaka ponitavanja izaziva, ne samo izbacivanje poslednjeg znaka iz ulaznog bafera, nego i izbacivanje tog znaka sa ekrana. To zahteva vraanje kursora u znakovnu poziciju koja prethodi njegovoj zateenoj znakovnoj poziciji i smetanje razmaka u novu znakovnu poziciju kursora, radi ponitavanja u njoj zateenog znaka. U izlaznoj operaciji se obavlja samo prikaz znakova. On se ne razlikuje od eha znakova. Prikaz znakova se ponavlja, dok se ne prikae i poslednji od znakova iz izlazne memorijske zone koja se naziva izlazni bafer. Izlazni bafer pripada programu kao to je interpreter komandi, iz koga je izlazna operacija pozvana. Poziv izlazne operacije sadri, kao argumente, adresu poetka i duinu izlaznog bafera, koja odreuje broj prikazivanih znakova. MONITOR Iz prethodno izloenog proizlazi da se, pored procesora, memorije i terminala, kao ravnopravni delovi raunara KONCEPT javljaju drajver terminala i interpreter komandi. Oni se zajedno nazivaju monitor. Monitor predstavlja programski deo raunara. On se prikazuje u obliku hijerarhije slojeva, u kojoj se u viem sloju nalazi interpreter komandi, a u niem sloju drajver terminala (slika 5.2.6). interpreter komandi drajver terminala Slika 5.2.6 Slojevita struktura monitora U okviru monitora interpreter komandi se nalazi iznad drajvera terminala, jer se oslanja na ovaj drajver tako to poziva njegovu ulaznu operaciju radi preuzimanja znakova komandi i tako to poziva njegovu izlaznu operaciju radi prikaza rezultata izvravanja komandi. Ispod monitora se nalaze preostali delovi raunara, na koje se monitor oslanja. Iznad monitora su korisniki programi koji se oslanjaju na monitor, jer pozivaju operacije drajvera terminala. Prethodno opisana organizacija monitora podrazumeva dva nivoa njegovog korienja: (1) interaktivni nivo i (2) programski nivo. Na interaktivnom nivou korisnici direktno koriste komande interpretera komandi, a na programskom nivou se, iz korisnikih programa, pozivaju operacije drajvera terminala. Verzija raunara KONCEPT, koju obrazuju procesor, memorija, terminal i monitor, sadri upravljaku tablu na kojoj su samo dve sklopke. Prva od njih je sklopka napajanja. Ona ima 2 stabilna poloaja. Kada je sklopka napajanja u jednom poloaju, raunar radi (njegovi sklopovi imaju napajanje), a kada se ona

112

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

nalazi u drugom poloaju, raunar ne radi (njegovi sklopovi nemaju napajanje). Druga sklopka omoguuje korisniku da pokrene rad procesora iz poetka (reset). Ona ima jedan stabilan poloaj (u kome logika promenljiva R sadri vrednost 1) i jedan nestabilan poloaj (u kome logika promenljiva R sadri vrednost 0). Dovoenje ove sklopke u nestabilan poloaj uzrokuje da procesor zapone rad iz poetka, ime se procesor dovodi u poznato stanje. Na ovaj nain se, na primer, ponovo aktivira monitor, kada korisniki program upadne u beskonanu petlju. Aktiviranje monitora znai da se pokrene izvravanje njegovog interpretera komandi, koji, posredstvom drajvera terminala, stupa u interakciju sa korisnikom. Za automatsko aktiviranje monitora neophodno je da prva memorijska lokacija (sa adresom 0000000016) sadri ulaznu adresu monitora. Takoe, neophodno je da su sadraj prve memorijske lokacije i sadraji memorijskih lokacija sa naredbama monitora nepromenljivi, odnosno da se sadraji ovih lokacija mogu samo itati.

5.3 VRSTE MEMORIJE


Za smetanje naredbi monitora nisu zgodne obine memorijske lokacije, poto njihov sadraj moe biti izmenjen, a nehotine izmene njihovog sadraja mogu ugroziti funkcionalnost monitora, a to znai i upotrebljivost raunara KONCEPT. Za reavanje problema smetanja naredbi monitora nije dovoljno poznavati samo organizaciju memorije, nego i njena tehnoloka svojstva. Po tehnologiji izrade, memorije se razvrstavaju na poluprovodnike i magnetne. Poluprovodnike memorije se dele na RAM (random access memory) i ROM (read only memory). Prve dozvoljavaju i pisanje i itanje svojih lokacija, pa su podesne za memoriju raunara. One nisu postojane, jer gube sadraj pri nestanku napajanja. Druge dozvoljavaju samo itanje svojih lokacija. One su zato podesne za nultu memorijsku lokaciju (sa adresom 0000000016), kao i za memorijske lokacije, predviene za smetanje naredbi monitora. One su postojane, jer njihov sadraj, koji je upisan posebnim postupkom, nije zavisan od napajanja. Magnetnih memorija ima vie vrsta, a njihov tipian predstavnik je disk (slika 5.3.1).

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

113

Slika 5.3.1 Principijelni izgled magnetnog diska Na magnetnom disku memorisani sadraji se nalaze u obliku magnetnih zapisa, rasporeenih u koncentrinim krunim stazama koje glava (za itanje i pisanje) diska opisuje na magnetnom premazu rotirajuih ploa diska. I glava diska je pokretna, s tim da se ona pomera radijalno, znai ili od centra ili ka centru rotacije ploa diska. Staze diska su podeljene u sektore iste veliine. Radi razlikovanja staza i sektora, svakoj stazi, a i svakom sektoru na njoj, se pridruuje jednoznaan broj. Jedinica itanja i pisanja diska je blok, koji obuhvata sve bajte jednog ili eventualno vie sektora. Za itanje, odnosno za pisanje bloka diska, neophodno je pozicionirati glavu diska iznad odgovarajue staze i iznad odgovarajueg sektora na ovoj stazi. Disk sadri pomonu memoriju (u RAM izvedbi), veliku bar 1 blok, u koju se smeta sadraj pri itanju bloka iz sektora, odnosno iz koje se preuzima sadraj pri pisanju bloka u sektor. Poto dozvoljava i itanje i pisanje blokova, i disk je podesan za memoriju raunara. Disk je, kao i sve magnetne memorije, postojan, jer njegov sadraj ne zavisi od napajanja. Iako i poluprovodnike memorije (u RAM izvedbi) i diskovi poseduju svojstva potrebna za memoriju raunara, ipak ni jedna od ove dve vrste memorije nije idealno prilagoena pomenutoj nameni. Mana poluprovodnikih memorija (u RAM izvedbi) je njihova nepostojanost i mali kapacitet. Za razliku od diska, cena bita ove vrste memorija je previsoka za masovnu upotrebu. S druge strane, mana diska je njegova brzina. Za razliku od poluprovodnikih memorija, disk je, zbog svojih pokretnih delova, mnogo sporiji od procesora. Zato poluprovodnike memorije slue za privremeno smetanje sadraja koji su potrebni za rad procesora, a diskovi slue za trajno odlaganje sadraja. Prema tome, memorija se sastoji od

114

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

radne (poluprovodnike) memorije, ija brzina je priblina brzini procesora, a iji kapacitet je mali, i masovne (magnetne) memorije, koja je znatno sporija od procesora, ali je postojana i ima veliki kapacitet. Sadraji, trajno pohranjeni u masovnoj memoriji, se prebacuju u radnu memoriju samo kada su potrebni za rad procesora. Do prebacivanja u suprotnom smeru dolazi samo radi trajnog pohranjivanja sadraja. Jedinica prenosa sadraja izmeu radne i masovne memorije je blok. Prenos bloka na ovoj relaciji nije mogu bez komunikacije izmeu procesora i diska, u toku koje procesor saoptava disku brojeve staze i sektora, a disk, kao sporiji ureaj, diktira dinamiku prenosa. Komunikacija procesora i diska se sutinski ne razlikuje od komunikacije procesora i tastature (ekrana), pa je prirodno da se osloni na posredovanje kontrolera diska. Pri tome, registar podataka (kontrolera) diska omoguuje, ne samo prenos bajta bloka u oba smera, nego i prenos broja staze i broja sektora od procesora ka disku. Nulti bit registra stanja (kontrolera) diska pokazuje kada je komunikacija mogua, a prvi i drugi bit ovog registra slue za oznaavanje smera prenosa bloka. Kada nulti bit registra stanja diska sadri vrednost 1, tada procesor moe preuzeti ili izmeniti sadraj registra podataka diska. Registar podataka diska nije spreman za novi prenos sve dok ovaj bit sadri vrednost 0. Pristupanje procesora registru podataka diska dovodi do smetanja vrednosti 0 u nulti bit registra stanja diska. Sadraj ovoga bita postane jednak vrednosti 1, im registar podataka diska postane spreman za novi prenos. Inicijalni sadraj nultoga bita registra stanja diska je vrednost 1. Kada prvi bit registra stanja diska sadri vrednost 1, tada se blok prenosi na disk, a kada drugi bit registra stanja diska sadri vrednost 1, tada se blok prenosi sa diska. Procesor smeta vrednost 1 u jedan od ova dva bita, zavisno od smera prenosa bloka. Pri tome, on pie u registar stanja diska ne menjajui sadraj nultog bita ovog registra. Smetanje vrednosti 1 u prvi ili drugi bit registra stanja diska oznaava poetak prenosa bloka. Postavljeni bit se automatski anulira na kraju prenosa bloka, kada se prenese njegov poslednji bajt. Organizacija kontrolera diska je prikazana na slici 5.3.2.
adresne linije registar podataka 8 linije podataka P 32 8 registar stanja disk

32

Slika 5.3.2 Organizacija kontrolera diska

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

115

U prenosu bajta izmeu diska i registra podataka diska uestvuje samo 8 najmanje znaajnih bita ovog registra. Stanje prekidaa na liniji, koja ide od registra podataka diska do diska, zavisi od sadraja prvog bita registra stanja diska, a stanje prekidaa na liniji, koja ide od diska do registra podataka diska, zavisi od sadraja drugog bita registra stanja diska. Prenos bloka zapoinje procesor, smetanjem oznake smera prenosa u registar stanja diska. Zatim sledi radno ekanje, dok registar podataka diska ne postane spreman za prijem broja staze. Nakon smetanja broja staze u registar podataka diska sledi radno ekanje, dok ovaj registar ne postane raspoloiv za prijem broja sektora. Po smetanju broja sektora u registar podataka diska, za svaki bajt prenoenog bloka se ponavlja radno ekanje, dok pomenuti bajt ne doe sa diska u registar podataka diska, odnosno dok on ne ode iz registra podataka diska na disk, to zavisi od smera prenosa. Prethodno opisani postupak korienja diska je sakriven u drajveru diska, koji brine da pristup registrima kontrolera diska bude u skladu sa pravilima njihove upotrebe. Pored toga, drajver diska pojednostavljuje korienje diska, jer dozvoljava da se, umesto broja staze i sektora, upotrebljavaju samo redni brojevi blokova koji se prenose na disk i sa diska. Jasno, zadatak drajvera diska je da redni broj bloka pretvori u broj staze i broj sektora. Drajver diska sadri 2 potprograma koji podravaju 2 operacije. Prva je ulazna operacija, namenjena za itanje sadraja bloka, a druga je izlazna operacija namenjena za pisanje sadraja bloka. Uz poziv ulazne operacije kao argumenti se navode adresa ulaznog bafera i redni broj bloka, iji sadraj se prebacuje u ulazni bafer, a uz poziv izlazne operacije se navode adresa izlaznog bafera i redni broj bloka, u koji se prebacuje sadraj izlaznog bafera. Podrazumeva se da baferi pripadaju programu iz koga se dotina operacija poziva. Za prenos bloka na disk i sa diska su potrebne posebne komande komandnog jezika. Radi ovih komandi se proiruje pravilo koje opisuje komandni jezik u EBNF notaciji:
komanda -> P | |I |N |S razmak razmak razmak razmak razmak heksadecimalni_broj,heksadecimalni_broj heksadecimalni_broj heksadecimalni_broj heksadecimalni_broj,heksadecimalni_broj heksadecimalni_broj,heksadecimalni_broj

Komanda N omoguuje prenos bloka na disk tako to poziva izlaznu operaciju drajvera diska. Komanda S omoguuje prenos bloka sa diska tako to poziva ulaznu operaciju drajvera diska. Obe komande imaju dva argumenta u obliku heksadecimalnih brojeva. Prvi od njih odgovara adresi bafera, a drugi rednom broju bloka koji uestvuje u prenosu.

116

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Uvoenje prethodne dve komande zahteva proirenje interpretera komandi. Prema tome, u gornjem sloju monitora se nalazi proireni interpreter komandi, a u donjem sloju su drajver terminala i drajver diska (slika 5.3.3). proireni interpreter komandi drajver terminala drajver diska Slika 5.3.3 Slojevita struktura proirenog monitora Nova verzija raunara KONCEPT sadri procesor, radnu memoriju, terminal, masovnu memoriju i monitor (slika 5.3.4).
adresne linije linije podataka P

PROCESOR

32 32

RADNA MEMORIJA

TERMINAL

MASOVNA MEMORIJA (DISK)

Slika 5.3.4 Organizacija raunara KONCEPT sa radnom i masovnom memorijom Na slici 5.3.4 kvadrati sa natpisom terminal i masovna memorija obuhvataju i kontrolere i odgovarajue fizike ureaje. Radna memorija ima manje lokacija od broja koji doputa adresni prostor raunara KONCEPT, zbog visoke cene radne memorije. Najvei deo lokacija radne memorije je u RAM izvedbi, a samo mali deo ima ROM izvedbu, radi monitora.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

117

5.4 OPERATIVNI SISTEM


Monitor olakava korienje raunara, jer omoguuje znakovnu komunikaciju korisnika i raunara. Ali, korienje raunara na nivou monitora zahteva poznavanje detalja, kao to su, na primer, mainski formati naredbi. Pored toga, korisnik je prisiljen i da vodi evidenciju o korienju masovne i radne memorije. Ova evidencija obuhvata podatke o slobodnim i zauzetim blokovima, odnosno o slobodnim i zauzetim memorijskim lokacijama, pri emu se za zauzete blokove, odnosno za zauzete memorijske lokacije navodi ta im je sadraj. Zbog toga je korienje raunara na nivou monitora komplikovano, a to znai i neproduktivno. Za jednostavnije i produktivnije korienje raunara je neophodno da se korisnika panja ne skree na detalje koji su nevani sa stanovita korisnika. Korisnik raunara je sutinski zainteresovan za upotrebu sadraja koji su trajno pohranjeni u blokovima masovne memorije. Za njega je sporedno gde se ti sadraji nalaze i kakvu internu predstavu imaju. Znai, ako se interna predstava ovakvih sadraja nazove datoteka (file), korisnik je zainteresovan za sadraje datoteka, ali ne i za njihovu internu predstavu. Svi sadraji, smeteni u masovnu memoriju, su organizovani u obliku datoteka. Prema tome, i mainski oblici programa se uvaju u masovnoj memoriji kao datoteke. Pre izvravanja, mainski oblici programa se privremeno smetaju u lokacije radne memorije. Pri tome, za korisnika je sporedno kako i gde se smeta mainski oblik programa, odnosno kakva je interna predstava ovakvog programa u toku njegovog izvravanja, jer je korisnik sutinski zainteresovan samo za rezultate angaovanja procesora na pomenutom izvravanju programa. Znai, ako se angaovanje procesora na izvravanju programa nazove proces (process), korisnik je zainteresovan za rezultate aktivnosti procesa, ali ne i za njihovu internu organizaciju. Koncept datoteke omoguuje razdvajanje upotrebe sadraja datoteka od potrebe poznavanja njihove interne organizacije. Zahvaljujui ovom razdvajanju, korisnik ne mora da poznaje nain uvanja sadraja datoteka, odnosno, organizaciju blokova masovne memorije, jer brigu o tome u kojim blokovima je sadraj datoteke, koliko je sadraj datoteke dugaak i slino preuzima poseban programski modul za rukovanje datotekama. Da bi koncept datoteke imao praktinu vrednost, ovaj modul mora da sadri potprograme koji podravaju operacije za rukovanje datotekama. Primeri takvih operacija su operacija za stvaranje ili unitenje datoteke, odnosno operacije za preuzimanje i izmenu njenog sadraja. Za rukovanje datotekama neophodno je razlikovanje datoteka. Zato, svakoj datoteci, pri njenom stvaranju, korisnik pridruuje ime koje je sastavljeno od znakova iz nekog predodreenog skupa. Ostvarenje koncepta datoteke se zasniva na korienju deskriptora datoteke, koji obuhvata atribute datoteke, kao to su njena veliina, redni brojevi blokova sa sadrajem datoteke, vreme nastanka datoteke i slino. Modul za rukovanje datotekama rukuje deskriptorima datoteka.

118

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Koncept procesa omoguuje razdvajanje upotrebe (izvravanja) programa od potrebe poznavanja njihove interne predstave. Zahvaljujui ovom razdvajanju, korisnik ne mora da poznaje ni detalje organizacije lokacija radne memorije sa mainskim oblicima naredbi programa, a ni mainske formate naredbi, jer brigu o tome u kojim lokacijama radne memorije su mainski oblici naredbi programa i slino preuzima poseban programski modul za rukovanje procesima. Da bi koncept procesa imao praktinu vrednost, ovaj modul mora da sadri potprograme koji podravaju operacije za rukovanje procesima. Primeri takvih operacija su operacije za stvaranje ili unitenje procesa. Ostvarenje koncepta procesa se zasniva na korienju deskriptora procesa, koji obuhvata atribute procesa, kao to su stanje procesa ili podatak o poloaju slike procesa u radnoj memoriji. Slika procesa (process image) obuhvata mainske oblike naredbi izvravanog programa, vrednosti promenljivih, vezanih za njegovo izvravanje i, eventualno, sadraj steka, takoe vezan za izvravanje pomenutog programa. Modul za rukovanje procesima rukuje deskriptorima procesa. Rukovanje datotekama i procesima se oslanja na rukovanje slobodnim blokovima, odnosno slobodnim memorijskim lokacijama, radi njihovog zauzimanja i oslobaanja. Dok blokove zauzima i oslobaa samo modul za rukovanje datotekama, memorijske lokacije zauzimaju i oslobaaju i modul za rukovanje datotekama i modul za rukovanje procesima. Zato se rukovanje slobodnim blokovima preputa modulu za rukovanje datotekama, a za rukovanje slobodnim memorijskim lokacijama se uvodi poseban modul za rukovanje radnom memorijom, koji sadri potprograme koji podravaju operacije za zauzimanje i oslobaanje lokacija radne memorije. Prema tome, na modul za rukovanje radnom memorijom se oslanjaju moduli za rukovanje datotekama i procesima. Takoe, modul za rukovanje procesima se oslanja na modul za rukovanje datotekama, jer se mainski oblici programa od kojih nastaju slike procesa nalaze u datotekama koje se nazivaju izvrne datoteke. Izvrne datoteke sadre inicijalne slike procesa. Moduli za rukovanje procesima, datotekama i radnom memorijom se oslanjanju na drajvere. Na primer, sva tri modula koriste drajver terminala za prikaz poruka, a modul za rukovanje datotekama koristi drajver diska za pristupanje blokovima diska. Drajveri obrazuju modul za rukovanje kontrolerima. Moduli za rukovanje procesima, datotekama, radnom memorijom i kontrolerima zajedno obrazuju operativni sistem (operating system), ija struktura je prikazana na slici 5.4.1. modul za rukovanje procesima modul za rukovanje datotekama modul za rukovanje radnom memorijom modul za rukovanje kontrolerima Slika 5.4.1 Slojevita struktura operativnog sistema

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

119

Slojevita struktura operativnog sistema odraava meusobni odnos delova od kojih se on sastoji, jer se moduli iz viih slojeva oslanjaju na module iz niih slojeva tako to pozivaju njihove operacije. Operativni sistem predstavlja programski deo raunara. Ispod operativnog sistema su preostali delovi raunara, na koje se operativni sistem oslanja. Iznad operativnog sistema su korisniki programi, koji se oslanjaju na operativni sistem, jer pozivaju operacije njegovih modula. Iz strukture operativnog sistema sledi da on objedinjuje raznorodne delove raunara u skladnu celinu i, uz to, sakriva od korisnika detalje funkcionisanja ovih delova koji nisu bitni za korienje raunara. Nakon usvajanja koncepata datoteke i procesa, direktno pristupanje pojedinim blokovima i memorijskim lokacijama postaje, ne samo suvino, nego i opasno, jer omoguuje proizvoljne izmene deskriptora datoteka i procesa, to moe da ugrozi ispravan rad operativnog sistema. Zato komandni jezik, koji se oslanja na operativni sistem, ne sme da sadri komande za direktno pristupanje blokovima i memorijskim lokacijama. Za jedinu preostalu komandu, namenjenu za pokretanje izvravanja programa, dovoljno je da odgovara imenu izvrne datoteke. Prema tome, zadatak interpretera komandi je da preuzme ime izvrne datoteke i da od modula za rukovanje procesima zatrai stvaranje odgovarajueg procesa. Po stvaranju, procesor se posveti stvorenom procesu, tako da nastavak izvravanja interpretera komandi usledi tek nakon kraja aktivnosti stvorenog procesa. Da bi obavio svoj zadatak, interpreter komandi se oslanja na modul za rukovanje kontrolerima (na njegov drajver terminala), radi znakovne komunikacije sa korisnikom. Korienje imena, koje ne odgovara izvrnoj datoteci, kao komande interpretera komandi predstavlja greku, jer takva datoteka ne sadri inicijalnu sliku procesa, pa modul za rukovanje procesima na osnovu njenog sadraja ne moe da stvori proces. Prema tome, jedino imena izvrnih datoteka predstavljaju ispravne komande interpretera komandi. Interpreter komandi spada u korisnike programe i nalazi se u korisnikom sloju iznad operativnog sistema. Zahvaljujui interpreteru komandi, postoje dva nivoa korienja operativnog sistema: (1) interaktivni nivo i (2) programski nivo. Na interaktivnom nivou korisnici su u komunikaciji sa interpreterom komandi, a na programskom nivou korisniki programi pozivaju operacije pojedinih modula operativnog sistema. Programski nivo se naziva i nivo poziva (operacija) operativnog sistema ili nivo sistemskih poziva. Interaktivni nivo i nivo sistemskih poziva obrazuju dva razliita korisnika interfejsa prema operativnom sistemu. Operativni sistem se prema korisnikim programima odnosi kao prema svojim potprogramima. Oigledan primer takvog odnosa operativnog sistema i korisnikih programa pruaju programi napisani u programskom jeziku C. Svaki C program sainjavaju potprogrami (funkcije), meu kojima se nalazi obavezno i potprogram (funkcija) sa imenom main. Podrazumeva se da izvravanje C programa

120

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

zapoinje izvravanjem potprograma (funkcije) main, koga poziva operativni sistem, zapoinjui tako aktivnost odgovarajueg procesa. Rad na interaktivnom nivou operativnog sistema je mogu samo ako postoje izvrne datoteke, ija imena slue kao komande interpretera komandi. U suprotnom sluaju, nema mogunosti za komunikaciju korisnika i raunara. Zato uz operativni sistem obavezno dolaze izvrne datoteke, koje odgovaraju posebnim, sistemskim programima, kao to su editor, prevodilac (asembler ili kompajler), makro pretprocesor, povezilac ili linker (linker), punilac ili louder (loader) i dibager (debugger). U nadlenosti editora su stvaranja i izmene tekst (znakovnih) datoteka. Zadatak asemblera je prevoenje asemblerskog programa u mainski oblik, a zadatak kompajlera je prevoenje programa, napisanog u programskom jeziku visokog nivoa, u mainski oblik. Oba prevodioca pronalaze program u odgovarajuoj izvornoj (programskoj tekst) datoteci, a rezultat prevoenja, mainski oblik programa koji je nespreman za interakciju sa operativnim sistemom, smetaju u objektnu datoteku. Zadatak makro pretprocesora je da vri tekstualne izmene izvornih datoteka. Poto njegova aktivnost prethodi aktivnosti prevodilaca, on se esto javlja i kao njihov poetni deo. Linker stvara izvrnu datoteku. Ona sadri inicijalnu sliku procesa, odnosno mainski oblik programa koji je spreman za interakciju sa operativnim sistemom. Louder uestvuje, esto kao deo operativnog sistema, u stvaranju slike procesa, koja nastaje na osnovu inicijalne slike procesa. Dibager omoguuje nadgledanje izvravanja korisnikih programa, radi otkrivanja i otklanjanja greaka. Kao sistemski programi se javljaju i pomoni programi za rukovanje datotekama. Oni omoguuju pregledanje i izmene imena postojeih datoteka, prepisivanje sadraja iz datoteke u datoteku, unitavanje datoteka i slino. Ovakvi pomoni programi su ponekad deo inerpretera komandi. Svi sistemski programi koriste operativni sistem na nivou sistemskih poziva. Operativni sistem i sistemski programi stvaraju uopten model raunara, ije poznavanje je sasvim dovoljno, ne samo za korisnike gotovih programa, nego i za aplikacione programere. Ovaj model je nedovoljan samo za sistemske programere, koji se bave razvojem operativnih sistema i sistemskih programa. Monitor i operativni sistem nude dva razliita pogleda na raunar. Korisnik monitora vidi raunar kao mainu koja rukuje blokovima i memorijskim lokacijama, a korisnik operativnog sistema vidi raunar kao mainu koja rukuje datotekama i procesima. Poto raunar zapoinje rad izvravanjem monitora, prirodno je da se pokretanje operativnog sistema osloni na monitor. Komande monitora su dovoljne da se blokovi, koji sadre operativni sistem, odnosno, koji sadre mainske oblike modula operativnog sistema, prebace sa diska u radnu memoriju, i da se, zatim, pokrene izvravanje operativnog sistema. Ali, takav nain pokretanja operativnog sistema je spor, jer se mora prebaciti veliki broj blokova, i bremenit grekama. Zato se pokretanju operativnog sistema posveuje poseban program, nazvan inicijalni louder (bootstrap loader). On se pokree uz pomo monitora. Za izvrni oblik inicijalnog loudera se rezervie jedan, na primer, nulti

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

121

blok (boot block). Prema tome, na poetku rada raunara monitor proita sa nultog bloka izvrni oblik inicijalnog loudera, smesti ga u radnu memoriju i zapone njegovo izvravanje. U toku svog izvravanja inicijalni louder prebaci u radnu memoriju module operativnog sistema i zapone njegovo izvravanje. Prethodno opisani nain pokretanja operativnog sistema dozvoljava korisniku da, pokretanjem jednog od vie inicijalnih loudera, odabere za rad jedan od vie operativnih sistema, i na taj nain stvori za sebe najbolje radno okruenje.

5.5 PREKLJUIVANJE
Radno ekanje (deavanja dogaaja van procesora), prisutno u radu drajvera, je izvor neracionalnog troenja procesorskog vremena. Umesto radnog ekanja, bolje je koristiti procesor u vieprocesnom reimu rada. U ovom reimu rada u radnoj memoriji istovremeno postoji vie slika procesa, a procesor se prekljuuje (context switch) sa procesa ija aktivnost je postala zavisna od deavanja dogaaja van procesora, na proces za iju aktivnost jedino nedostaje procesor. Od istovremeno postojeih procesa, ije slike se istovremeno nalaze u radnoj memoriji, uvek je samo jedan u stanju aktivan, a ostali su ili u stanju eka (deavanje vanjskog dogaaja) ili u stanju spreman (znai, za aktivnost im nedostaje samo procesor). Za prekljuivanje je neophodno da bar jedan od neaktivnih istovremeno postojeih procesa bude u stanju spreman. Radi toga postoji poseban, uvek spreman proces. Njegov jedini zadatak je da angauje procesor kada nema drugih istovremeno postojeih procesa. Tada aktivnost ovoga procesa predstavlja radno ekanje nove komande interpretera komandi. Uvek spreman proces angauje procesor i kada su svi ostali istovremeno postojei procesi u stanju ekanja. Tada aktivnost ovoga procesa predstavlja radno ekanje deavanja odgovarajueg dogaaja. Do prekljuivanja procesora dolazi (1) na kraju aktivnosti procesa i (2) kada nastavak aktivnosti procesa zavisi od deavanja vanjskog dogaaja, kao to je obavljanje ulaza/izlaza vezanog za terminal ili disk. Zato se ovakvo prekljuivanje naziva ulazom-izlazom voeno prekljuivanje. Do ulazom-izlazom voenog prekljuivanja dolazi, na primer, kada nastavak aktivnosti procesa zavisi od preuzimanja znaka sa tastature terminala. Za ulazom-izlazom voeno prekljuivanje je karakteristino da u stanje eka prelazi do prekljuivanja aktivni proces (sa koga se procesor prekljuuje), a da u stanje aktivan prelazi spreman proces (na koga se procesor prekljuuje). Ovakvo prekljuivanje se poziva iz drajvera, radi izbegavanja radnog ekanja, ali i iz korisnikog programa, na kraju njegovog izvravanja, i to posredstvom modula za rukovanje procesima. Zato se potprogram ili operacija prekljuivanja nalazi u posebnom modulu za rukovanje procesorom, nazvanom tako, jer on odluuje o angaovanju procesora tako to bira proces kome e se posvetiti procesor. Modul za rukovanje procesorom se nalazi ispod modula za rukovanje kontrolerima, jer njegov potprogram prekljuivanja pozivaju operacije drajvera. Na slici 5.5.1 je prikazana slojevita struktura operativnog sistema, proirenog modulom za rukovanje procesorom.

122

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

modul za rukovanje procesima modul za rukovanje datotekama modul za rukovanje radnom memorijom modul za rukovanje kontrolerima modul za rukovanje procesorom Slika 5.5.1 Slojevita struktura proirenog operativnog sistema Svi istovremeno postojei procesi su upueni na iste resurse raunara, kao to su procesor, radna i masovna memorija. Uz pretpostavku da su svi istovremeno postojei procesi nezavisni, odnosno da imaju sopstvene zone radne memorije i sopstvene datoteke, kojima ne pristupaju drugi istovremeno postojei procesi, kao deljeni resurs se javljaju samo procesorski registri. Zato se, u prekljuivanju procesora, sadraji ovih registara prvo sauvaju, na primer u registarskom baferu procesa koga procesor naputa, a zatim se ovi registri napune prethodno sauvanim sadrajima iz registarskog bafera procesa kome se procesor posveuje. Podrazumeva se da registarski bafer sadri posebnu lokaciju za smetanje sadraja svakog registra koji je relevantan za prekljuivanje. Prirodno je da registarski bafer predstavlja deo deskriptora procesa. Prekljuivanje procesora se obavlja u toku izvravanja potprograma prekljuivanja. Njegovo izvravanje se poziva iz jednog procesa, a po zavretku ovog izvravanja aktivnost nastavlja drugi proces. Pretpostavka je da pre poziva potprograma prekljuivanja, u registar R0 bude smetena adresa registarskog bafera deskriptora procesa sa koga se procesor prekljuuje, a da u registar R1 bude smetena adresa registarskog bafera deskriptora procesa na koga se procesor prekljuuje. Podrazumeva se da su prethodno zateeni sadraji registara R0 i R1 sauvani na steku. Asemblerski oblik potprograma prekljuivanja izgleda:

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)


PREBACI POETAK MAKRO SABERI KRAJ MAKRO PREBACI SABERI KRAJ MAKRO PREBACI SABERI KRAJ IZBACI IZBACI IZBACI IZBACI IZBACI IZBACI IZBACI IZBACI IZBACI IZBACI IZBACI IZBACI IZBACI IZBACI UBACI UBACI UBACI UBACI UBACI UBACI UBACI UBACI UBACI UBACI UBACI UBACI UBACI UBACI SKOI KRAJ ulaz, izlaz ulaz,0,izlaz R R,[R0] R0,01,R0 R [R1],R R1,01,R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R15

123

IZBACI

UBACI

prekljuivanje

Prethodni potprogram prekljuivanja je napravljen pod pretpostavkom da registarski bafer sadri 14 lokacija, namenjenih za smetanje sadraja registara od R2 do R15. On se ne brine o sadraju status registra, jer se podrazumeva da on nije auran nakon poziva potprograma. Kljunu ulogu u prekljuivanju ima registar R15, jer sadri povratnu adresu. Izmenom njegovog sadraja se menja i povratna adresa, a to znai i proces ija aktivnost se nastavlja nakon izvravanja potprograma prekljuivanja. Pri tome se podrazumeva da tokom stvaranja procesa, u lokaciju registarskog bafera njegovog deskriptora, rezervisanu za sadraj registra R15, bude smetena adresa lokacije ulazne naredbe iz slike stvaranog procesa. Na taj nain, nakon prvog prekljuivanja procesora na ovaj proces, izvravanje zapoinje od pomenute naredbe.

124

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

5.6 PREKID
Ulazom-izlazom voeno prekljuivanje je u potpunosti podreeno poveanju iskorienja procesora. Zato, do ulazom-izlazom voenog prekljuivanja dolazi samo kada se ustanovi da procesor ne moe biti vie korisno angaovan u okviru aktivnog procesa. Pri tome, prekljuivanju obavezno prethodi (1) pronalaenje spremnog procesa na koga e se procesor prekljuiti i (2) izmena stanja vie istovremeno postojeih procesa. Pomenute izmene stanja obuhvataju ne samo aktivan proces, sa koga se procesor prekljuuje, odnosno spreman proces, na koga se procesor prekljuuje, nego i procese u stanju ekanja, ako su se u meuvremenu desili vanjski dogaaji koji omoguuju nastavljanje njihove aktivnosti. Zato se, u okviru prethodnih izmena stanja procesa, proverava da li se neki od pomenutih vanjskih dogaaja desio, radi eventualnog prevoenja odgovarajueg procesa iz stanja ekanja u stanje spreman. Ovakve provere deavanja vanjskih dogaaja su uvek i samo vezane za ulazom-izlazom voeno prekljuivanje. Zato, ovakvo prekljuivanje ne nudi brzu reakciju procesora na deavanje vanjskih dogaaja, jer do pomenute reakcije ne dolazi neposredno po deavanju vanjskog dogaaja, nego tek u okviru prvog prekljuivanja, koje usledi iza deavanja pomenutog vanjskog dogaaja. Izmeu dva ulazom-izlazom voena prekljuivanja moe da se desi vie uzastopnih vanjskih dogaaja iste vrste, kao to su uzastopni pritisci dirki tastature. Posledica je da, na primer, kod znaka moe da bude istisnut iz registra podataka tastature pre nego to ga procesor preuzme. Na ovaj nain prouzrokovan gubitak koda znaka ini znakovnu komunikaciju nepouzdanom, a interaktivni rad praktino nemoguim. U prethodnom primeru, procesor pravovremeno reaguje na deavanje vanjskog dogaaja, ako preuzme svaki kod znaka iz registra podataka tastature neposredno po njegovom prispeu u ovaj registar. To se desi, ako svaki pritisak na dirku tastature izazove izvravanje posebnog potprograma drajvera terminala, koji je zaduen za preuzimanje znaka iz registra podataka tastature. Za ostvarenje prethodnog neophodno je da izvravanje pomenutog potprograma drajvera terminala prekine zateenu aktivnost procesora, ali tako da se na kraju ovog izvravanja prekinuta aktivnost procesora nastavi, kao da nije bilo njenog prekidanja. Znai, u optem sluaju, deavanje vanjskog dogaaja, kao to je pritisak na dirku tastature, ili prikazivanje znaka na ekranu, ili kraj prenosa jednog bajta izmeu diska i njegovog kontrolera, izaziva prekid (interrupt) aktivnosti procesora. U okviru prekida pokree se izvravanje potprograma koji se naziva obraiva prekida (interrupt handler). Ulazna adresa ovog potprograma se naziva vektor (vector) obraivaa prekida ili samo vektor. Izvravanje ovoga potprograma se naziva obrada prekida. Prekidi se, po svom poreklu, dele u vrste, kao to su prekid tastature, prekid ekrana ili prekid diska. Svakoj vrsti prekida je pridruen jedan obraiva prekida. Prekide izazivaju kontroleri nakon deavanja odgovarajueg vanjskog dogaaja. Pri tome oni obavetavaju procesor o vrsti prekida i tako omoguuju procesoru da zapone odgovarajuu obradu prekida.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

125

Svaku vrstu prekida kodira jednoznaan ceo broj. On se naziva broj vektora, jer ukazuje na vektor obraivaa prekida, pridruenog dotinoj vrsti prekida. Za prenos broja vektora od kontrolera ka procesoru podesne su linije podataka (koje povezuju svaki od kontrolera sa procesorom). Poto ove linije nisu uvek slobodne, kontroler ne upuuje samoinicijativno broj vektora procesoru, nego ga prvo samo obavesti o prekidu. Za to slui posebna linija najave prekida (interrupt request). Tek kada linije podataka postanu slobodne, procesor zahteva od kontrolera broj vektora. Za to slui posebna linija potvrde prekida (interrupt acknowledge) Po prijemu, procesor koristi broj vektora kao indeks posebne tabele (vektora) prekida (interrupt vector table), iji elementi sadre vektore obraivaa prekida. Na taj nain, procesor konvertuje broj vektora vrste prekida u vektor obraivaa prekida, pridruenog pomenutoj vrsti prekida. Tabela prekida se nalazi na predodreenom mestu radne memorije, na primer u prvih n njenih lokacija. Podrazumeva se da je nulta lokacija i dalje rezervisana za ulaznu adresu monitora. Za obradu prekida je dovoljno smestiti vektor obraivaa prekida u programski broja. Ali, prethodno se mora sauvati zateeni sadraj programskog brojaa, inae se prekinuta aktivnost ne moe nastaviti. Isto vai i za status registar, jer se i njegov sadraj menja u obradi prekida. Za uvanje zateenog sadraja programskog brojaa slui registar R13, a za uvanje zateenog sadraja status registra slui registar R14. Ovakva namena registara R13 i R14 onemoguava njihovu upotrebu kao registara opte namene (isto vai i za registar R15, u koga se smeta povratna adresa pri pozivu potprograma). Procesor se ne brine o sadraju preostalih registara opte namene, jer je racionalnije da se na poetku obrade prekida sauvaju, a na kraju obrade prekida vrate zateeni sadraji samo onih registara opte namene koji se koriste u obradi prekida. Obraivai prekida nisu obini potprogrami, jer je za njihov kraj vezano vraanje u programski broja i status registar sadraja koji su u ovim registrima zateeni pre poetka obrade prekida i sauvani u registrima R13 i R14. Za vraanje ovih sadraja u pomenute registre namenjena je posebna naredba procesora KONCEPT, nazvana NASTAVI, jer omoguuje nastavljanje prekinute aktivnosti procesora. U registrima R13 i R14 ima mesta samo za po jedan sadraj programskog brojaa i status registra. Zato procesor KONCEPT ne dozvoljava da jedna obrada prekida bude prekinuta, radi druge obrade prekida. Znai, sve obrade prekida su istog nivoa. Omoguenost, odnosno onemoguenost obrade prekida pokazuje peti bit (SR4) status registra, koji se naziva bit prekida. Prekidi su omogueni kada ovaj bit sadri vrednost 1, a onemogueni kada on sadri vrednost 0. Procesor automatski onemoguuje obradu prekida neposredno pre poetka svake obrade prekida.

126

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

U sluaju prekida raznih nivoa, kada svaku obradu prekida moe da prekine hitnija obrada prekida, za uvanje zateenih sadraja programskog brojaa i status registra se koristi stek (i tada je neophodna procesorska podrka rukovanju stekom). Precizan opis aktivnosti procesora u sluaju prekida je sadran u mikroprogramu prekida. Njegov mainski oblik sadri mikro-programska memorija, a njegovu ulaznu adresu sadri poseban registar prekida upravljake jedinice, iji sadraj je stalan, kao i sadraj inicijalnog registra (slika 5.6.1).

4 32 P60 8 P61 8 P62 8 8 registar operanda 4 2 P63 8 1

adresna memorija mikro-programa

adresna memorija mikro-potprograma povratni registar registar sekvence P64 8 P65 8 P68 8

12 P66 inicijalni registar 12

registar prekida

mikro-programska memorija 41 upravljaki registar 12 P67

Slika 5.6.1 Organizacija upravljake jedinice koja podrava prekide Zatvaranje prekidaa P68 dovodi do izvravanja mikro-programa prekida. To se desi samo nakon zahteva od kontrolera, ako je obrada prekida omoguena, a linije podataka slobodne. Na postojanje zahteva od kontrolera ukazuje vrednost 1 logike promenljive PREKID. Prekidi su omogueni kada bit prekida (SR4) sadri vrednost 1. Linije podataka su uvek slobodne neposredno pre nego procesor

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

127

zapone fazu dobavljanja naredbe. Znai, ako su prekidi omogueni, tada, nakon pojave zahteva za obradom prekida, preostaje samo da se saeka nastupanje faze dobavljanja naredbe, da bi, umesto izvravanja mikro-programa dobavljanja, zapoelo izvravanje mikro-programa prekida. Do nastupanja faze dobavljanja naredbe dolazi nakon smetanja ulazne adrese mikro-programa dobavljanja u povratni registar ili u registar sekvence. Otkrivanje nastupanja faze dobavljanja naredbe omoguuju biti povratnog registra i registra sekvence. Tako, sadraji bita PRi (i = 0, ..., 7) povratnog registra slue kao argumenti logike funkcije PR: (~PR7)&(~PR6)&...&(~PR1)&PR0 a sadraji najmanje znaajnih 8 bita RSi (i = 0, ..., 7) registra sekvence slue kao argumenti logike funkcije RS: (~RS7)&(~RS6)&...&(~RS1)&(~RS0) Ove dve logike funkcije imaju vrednost 1 samo ako pomenuti biti povratnog registra, odnosno registra sekvence, sadre ulaznu adresu mikro-programa dobavljanja. Da bi umesto izvravanja mikro-programa dobavljanja, zapoelo izvravanje mikro-programa prekida, neophodno je da se, umesto prekidaa P64 ili P65, zatvori prekida P68. Poto do zatvaranja prekidaa P64, odnosno prekidaa P65, dolazi samo kada bit RS10, odnosno bit RS11 registra sekvence ima vrednost 1, na upravljanje prekidaem P68 utiu ova dva bita. Upravljanje prekidaem P68 zavisi i od bita prekida (SR4), kao i od postojanja zahteva za obradom prekida (PREKID). To opisuje logika funkcija P: SR4&PREKID Takoe, upravljanje prekidaem P68 zavisi i od nastupanja faze dobavljanja naredbe (PR ili RS). Prema tome, upravljanje prekidaem P68 opisuje funkcija: R&T&P&((RS10&PR)|(RS11&RS)|(RS10&RS)) Radi spreavanja istovremenog zatvaranja prekidaa P68 i nekog od prekidaa P64 ili P65, neophodno je izmeniti upravljanje prekidaima P64 i P65. Izmenjeno upravljanje prekidaem P64 opisuje funkcija: ~(P&PR) &R&T&RS10&(~USLOVNI_SKOK|USLOV_TAAN) a izmenjeno upravljanje prekidaem P65 opisuje funkcija: ~(P&RS) &R&T&(RS11|RS10& USLOVNI_SKOK& USLOV_NETAAN)

128

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Obrade prekida komplikuje injenica da svaki od kontrolera moe istovremeno zatraiti obradu svog prekida. U tom sluaju, redosled obrada prekida zavisi od prioriteta kontrolera koji zahtevaju pomenute obrade. Dodela (statikih) prioriteta kontrolerima se zasniva na serijskom povezivanju (daisy chaining) ovih kontrolera linijom potvrde prekida. Na ovaj nain, kontroler ima vii prioritet to je blie procesoru. Najvii prioritet ima kontroler koji je najblii procesoru, jer do njega prvo stigne potvrda prekida. On tu potvrdu prosleuje dalje (prema sledeem kontroleru) samo ako nije zahtevao obradu prekida. U suprotnom sluaju, on potvrdu prekida ne prosleuje dalje, sve dok se njegov prekid ne obradi. Na isti nain se, prema svojim sledbenicima, odnose i preostali kontroleri. Organizacija raunara KONCEPT koji podrava prekide je prikazana na slici 5.6.2.
NAJAVA PREKIDA adresne linije linije podataka P POTVRDA PREKIDA TERMINAL

PROCESOR

32 32

RADNA MEMORIJA

POTVRDA PREKIDA MASOVNA MEMORIJA (DISK)

Slika 5.6.2 Organizacija raunara KONCEPT koji podrava prekide Vrednost logike promenljive PREKID je uvek jednaka nivou signala u liniji NAJAVA PREKIDA. Za uvanje broja vektora u svakom kontroleru je predvien poseban registar broja vektora, iji izlaz vodi na linije podataka, a stanje izlaznog prekidaa zavisi

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

129

od nivoa signala na liniji POTVRDA PREKIDA. Prema tome, kada prvi od kontrolera, koji su traili obradu prekida, primi, preko linije POTVRDA PREKIDA, signal nivoa 1, on automatski uputi prema procesoru sadraj svog registra broja vektora po linijama podataka. Sadraj registra broj vektora odreuje nivo signala u linijama podataka dok god je u liniji POTVRDA PREKIDA nivo signala 1. Podrazumeva se da kontroleri koji su blii procesoru, ne ometaju obradu prekida kontrolera koji su dalje od procesora, ako je ona ve poela, nego saekaju njen kraj, pa tek onda iskoriste svoj privilegovani poloaj. Znai, kontroleri reaguju na promenu signala sa nivoa 0 na nivo 1 u liniji POTVRDA PREKIDA. Mikro-program prekida izgleda: 1. ciklus: programski broja R13 (P40, P45, P29) 2. ciklus: status registar R14 (P36, P37, P45, P31) 3. ciklus: 0 SR4 4. ciklus: 1 POTVRDA PREKIDA linije podataka registar adrese (P1) 5. ciklus: registar adrese adresne linije (P2) 1 linije podataka programski broja (P39) U prvom i drugom ciklusu se sauvaju zateeni sadraji status registra i programskog brojaa, a u treem ciklusu se onemogue prekidi. Za to je neophodan poseban pristup bitu prekida status registra, u toku koga se njegov sadraj izmeni, a sadraj ostalih bita status registra ostane neizmenjen. U etvrtom ciklusu se preuzme broj vektora, u petom se on konvertuje u ulaznu adresu obraivaa prekida, a ona se smesti u programski broja. Time se omogui dobavljanje prve naredbe obraivaa prekida i iza toga zapone obrada prekida. Naredba NASTAVI nema izriitih operanada, ali ima 4 podrazumevajua operanda: programski broja, status registar i registre R13 i R14. Prema tome, ona ne pripada ni jednoj od postojeih est vrsta naredbi procesora KONCEPT, pa zahteva sopstveni mikro-program: 1. ciklus: R13 programski broja (P30, P37, P45, P39) 2. ciklus: R14 status registar (P32, P37, P45, P35) Izvravanje ovog mikro-programa omoguuje nastavljanje prekinute aktivnosti procesora i ujedno omoguuje prekide, jer u status registar vraa sadraj koji je prethodio prekidu, pa je, prema tome, omoguavao prekide. Naredba NASTAVI omoguuje, posredno, izmenu sadraja status registra (koji je inae nepristupaan na drugi nain, jer ne moe da se pojavi kao operand bilo koje naredbe). To se postie, kada se, pre izvravanja naredbe NASTAVI,

130

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

izmeni sadraj registra R14, jer tada izvravanje ove naredbe smesti u status registar izmenjeni sadraj registra R14. Za obradu prekida nije potrebno prekljuivanje, jer se obrada prekida obavi kao deo aktivnosti prekinutog procesa. Ali, obrada prekida moe izazvati prekljuivanje, ako prevede u stanje spreman proces ija aktivnost je hitnija od aktivnosti prekinutog procesa. Radi odreivanja procesa ija aktivnost je najhitnija, uvode se prioriteti procesa i podrazumeva se da je aktivnost najprioritetnijeg procesa najhitnija. Obraivai prekida obino pripadaju modulu za rukovanje kontrolerima. U nadlenosti ovog modula je i izmena sadraja tabele prekida. Zahvaljujui tome, obraiva prekida moe da bude i u bilo kom modulu operativnog sistema, pod uslovom da se njegov vektor, posredstvom modula za rukovanje kontrolerima, smesti u odgovarajui element tabele prekida. Zadatak operativnog sistema je da, na poetku rada raunara, inicijalizuje tabelu prekida i da zatim inicijalizuje status registar, smetajui u njegov bit prekida vrednost 1, radi omoguavanja prekida, jer je pretpostavka da su prekidi onemogueni na poetku rada raunara. Prekidi izazivaju podelu drajvera na gornji i donji deo. Izmeu njih se nalaze baferi, namenjeni za razmenu podataka izmeu gornjeg i donjeg dela drajvera. Gornji deo drajvera se sastoji od potprograma koji podravaju operacije, namenjene slojevima koji se nalaze iznad sloja sa drajverima. Ovakve operacije omoguuju, na primer, znakovnu komunikaciju izmeu korisnika i raunara ili prenos blokova na disk i sa diska. U izvravanju ovih operacija dolazi do zaustavljanja aktivnosti procesa i do prekljuivanja procesora, ako nisu ispunjeni uslovi za nastavljanje pomenutih aktivnosti (na primer, ako nisu prispeli oekivani znakovi sa tastature ili ako nije prispeo oekivani blok sa diska). Donji deo drajvera se sastoji od obraivaa prekida, okrenutih kontrolerima koji reaguju na deavanje vanjskih dogaaja. Obrade prekida omoguuju nastavljanje prethodno zaustavljenih aktivnosti procesa i dovode do prekljuivanja procesora na neki od ovih procesa, ako je on prioritetniji od prekinutog procesa. Za obrade prekida je vano da obuhvate samo neodlone stvari, a sve ostalo prepuste procesima, jer se na taj nain skrauju periodi u toku kojih su prekidi onemogueni i tako se skrauje vreme reakcije na prekide. Procesi koji preuzimaju podatke od obraivaa prekida, radi nastavljaja njihove obrade, se nazivaju pozadinski (background) procesi. U sluaju drajvera terminala, donji deo drajvera sainjavaju obraiva prekida tastature i obraiva prekida ekrana. Do obrade prekida tastature dolazi im pristigne znak u registar podataka tastature. U ovoj obradi, prispeli znak se prebacuje u ulazni bafer drajvera terminala. Ulazni bafer omoguuje unos znakova unapred (pre nego ih neki proces zatrai), jer u ulaznom baferu prispeli znakovi ostaju sve dok ih ne preuzme neki od procesa, i to posredstvom operacije gornjeg dela drajvera terminala. Ako je ulazni bafer prazan, aktivnost ovih procesa se zaustavlja do njegovog punjenja.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

131

Do obrade prekida ekrana dolazi im registar podataka ekrana postane spreman za prijem novog znaka (im je prethodni znak prikazan). U ovoj obradi, registar podataka ekrana se puni znakom iz izlaznog bafera drajvera terminala, jasno, kada on nije prazan. U izlazni bafer znakove smetaju procesi, opet posredstvom potprograma gornjeg dela drajvera terminala. Kada se izlazni bafer napuni, aktivnost ovih procesa se zaustavlja do njegovog pranjenja. U sluaju drajvera diska, donji deo drajvera sainjava obraiva prekida diska. Do obrade prekida diska dolazi kada kontroler diska zavri trenutnu aktivnost i prekidom objavi da je mogu pristup registru podataka diska. U ovoj obradi, obavlja se jedan od koraka u postupku korienja diska i to onaj koji je na redu. To moe biti, na primer, saoptavanje broja staze ili sektora, odnosno prenos narednog bajta bloka. Pri tome se bajti prenoenog bloka smetaju u bafer drajvera diska ili preuzimaju iz njega. Aktivnost procesa, koji je posredstvom operacije iz gornjeg dela drajvera diska zatraio prenos bloka, se nastavlja tek kada se postupak korienja diska zavri, odnosno, kada se bajti bloka prenesu u eljenom smeru, znai u bafer diska ili iz njega. Prekidi omoguuju istovremeni i nezavisan rad procesora i kontrolera, jer, dok kontroler opsluuje svoj ureaj, procesor je posveen procesu ija aktivnost ne zavisi od ovog kontrolera. Nakon obavljanja svog zadatka, kontroler prekidom o tome obavetava procesor i, eventualno, izaziva njegovo prekljuivanje. I dok su, tako, aktivnost procesora i kontrolera asinhrone, aktivnost kontrolera i ureaja, koga kontroler opsluuje, su sinhrone. Za sinhronizaciju kontrolera i pomenutog ureaja koristi se princip rukovanja (handshaking). Kao to rukovanje nije mogue bez jednog partnera, tako ni saradnja kontrolera i njegovog ureaja nije mogua, ako za nju nisu spremne obe strane. Svoju spremnost za saradnju kontroler oznaava smetanjem vrednosti 1 u posebnu logiku promenljivu KONTROLER, koja odreuje nivo signala na veznoj liniji, usmerenoj od kontrolera ka ureaju. Na isti nain postupa i ureaj sa svojom logikom promenljivom UREAJ, koja odreuje nivo signala na veznoj liniji, usmerenoj od ureaja ka kontroleru. I kontroler i ureaj stupaju u meusobnu interakciju samo kada su signali u obe vezne linije na nivou 1. Obaranje signala na nivo 0 u bilo kojoj od ove dve vezne linije, zaustavlja meusobnu interakciju kontrolera i njegovog ureaja.

5.7 SABIRNICA
Suvie esti prekidi trae procesorsko vreme (koje se troi na izvravanje mikro-programa prekida, kao i na obradu prekida). Broj prekida se ne moe smanjiti dok god je procesor centralna taka raunara i dok mora da posreduje pri prenosu svih podataka izmeu preostalih delova raunara. Znai, tek po stvaranju uslova za direktan kontakt izmeu delova raunara, kao to su, na primer, radna i masovna memorija, postaje mogue znaajno smanjenje broja prekida. U ovakvim okolnostima, kontroler diska ne bi morao da prekida procesor, radi prenosa svakog bajta podataka na relaciji radna memorija - kontroler diska, nego bi mogao

132

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

samostalno da obavi prenos svih bajta bloka i da, zatim, prekidom o tome obavesti procesor. To znai da bi, ako blok sadri, na primer, 512 bajta, umesto 512 prekida bio samo 1 prekid. Da bi prethodno opisano bilo mogue, potrebno je drugaije povezati delove raunara i dati izvesnu samostalnost pojedinim kontrolerima. Za direktan kontakt bilo koja dva dela raunara neophodno je postojanje veznih linija koje povezuju sve delove raunara. Ovakve vezne linije se nazivaju sabirnica ili magistrala (bus). Pomenuti direktan kontakt kontrolera diska i radne memorije se naziva direktan memorijski pristup ili skraeno DMA (direct memory access). Kontroler koji je osposobljen za direktni memorijski pristup se naziva DMA kontroler. Za DMA kontrolere se podrazumeva da zauzimaju sabirnicu, radi pristupa radnoj memoriji. Kada sabirnicom gospodari procesor, DMA kontroler od procesora zahteva korienje sabirnice tako to pridrui vrednost 1 posebnoj logikoj promenljivoj ZAHTEV koja odreuje nivo signala u istoimenoj veznoj liniji (bus request). Procesor dozvoljava korienje sabirnice kontroleru, kada pridrui vrednost 1 posebnoj logikoj promenljivoj DOZVOLA, koja odreuje nivo signala u istoimenoj veznoj liniji (bus grant). Direktan memorijski pristup zapoinje procesor, kada DMA kontroleru diska saopti: 1. broj staze, 2. broj sektora, 3. broj bajta za prenos, 4. adresu prve od lokacija radne memorije koje uestvuju u prenosu i, na kraju, 5. smer prenosa. Za smetanje svakog od prva 4 podatka postoji poseban registar u DMA kontroleru diska koji podrava direktan memorijski pristup. Uz to, ovaj kontroler sadri jo registar stanja diska i registar podataka diska. Smer prenosa se smeta u registar stanja diska, a registar podataka diska uestvuje u prenosu bajta izmeu diska i njegovog DMA kontrolera, odnosno izmeu DMA kontrolera diska i lokacija radne memorije. Podrazumeva se da se izmeu lokacija radne memorije i registra podataka diska prenosi svaki od 32 bita, ali opisani DMA kontroler diska koristi samo 8 najmanje znaajnih bita. DMA kontroler diska trai dozvolu za korienje sabirnice, kada postane spreman za prenos bajta na relaciji izmeu lokacije radne memorije i registra podataka diska. Po dobijanju ove dozvole, on pristupi odgovarajuoj lokaciji radne memorije, radi prenosa pomenutog bajta iz registra podataka diska ili u njega. Nakon prenosa svakog bajta, DMA kontroler diska oslobaa sabirnicu pridruivanjem vrednosti 0 logikoj promenljivoj ZAHTEV, to navede procesor da preuzme sabirnicu, pridruivanjem vrednosti 0 logikoj promenljivoj DOZVOLA. Uz to, DMA kontroler diska umanji za vrednost 1 sadraj registra sa brojem bajta za prenos, da bi otkrio kada su svi bajti preneseni. To se desi kada, nakon umanjenja, ovaj registar sadri vrednost 0. Tada DMA kontroler diska prekidom obavetava

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

133

procesor da je prenos zavren. U suprotnom sluaju, on povea za vrednost 1 sadraj registra sa pomenutom adresom i tako odredi adresu lokacije radne memorije koja uestvuje u narednom prenosu. Vrlina direktnog memorijskog pristupa je da on smanjuje angaovanje procesora na obradi prekida, jer znaajno smanjuje broj prekida. Njegova mana je do on usporava rad procesora kad god mu uzima sabirnicu, jer procesor mora da saeka da DMA kontroler zavri korienje sabirnice, da bi mogao da pristupi radnoj memoriji. Procesor i DMA kontroler ne smetaju jedan drugom samo ako istovremeno nemaju potrebu za korienjem sabirnice. To se desi kada procesor pristupa svojim registrima, dok DMA kontroler pristupa radnoj memoriji. Procesor moe da dozvoli korienje sabirnice kad god je u ciklusu dobavljanja mikronaredbe, jer mu tada sabirnica nije potrebna. Ali, kada dozvoli DMA kontroleru diska da koristi sabirnicu, procesor ne sme da zapone izvravanje mikro-naredbe koja pristupa radnoj memoriji, sve dok mu sabirnica ne postane raspoloiva. To znai da poetak izvravanja svake od mikro-naredbi zavisi i od vrednosti logikih promenljivih DOZVOLA, P i . Verzija raunara KONCEPT, koji sadri procesor, radnu memoriju, terminal, masovnu memoriju, sabirnicu i operativni sistem, prikazana je na slici 5.7.1.

134

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

adresne linije linije podataka P NAJAVA PREKIDA 32 POTVRDA PREKIDA 32 ZAHTEV DOZVOLA

SABIRNICA

PROCESOR

RADNA MEMORIJA

TERMINAL

MASOVNA MEMORIJA (DISK)

Slika 5.7.1 Organizacija raunara KONCEPT zasnovanog na sabirnici Na slici 5.7.1 kvadrati sa natpisom terminal i masovna memorija obuhvataju i kontrolere i odgovarajue fizike ureaje. U sluaju da postoji vie diskova, njihovi DMA kontroleri se serijski povezuju linijom DOZVOLA. Ovo se radi iz istih razloga zbog kojih su kontroleri

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

135

serijski povezani linijom POTVRDA PREKIDA. Prema tome, to je DMA kontroler diska blii procesoru, on ima vii prioritet u korienju sabirnice. DMA kontroler ima svojstva jednostavnih procesora, jer obavlja aritmetike operacije i upravlja sabirnicom. Dok ovakav kontroler koristi sabirnicu, procesor ne reaguje na prekide. Vezne linije P, , NAJAVA PREKIDA, POTVRDA PREKIDA, ZAHTEV i DOZVOLA se nazivaju upravljake linije sabirnice.

5.8 VIEKORISNIKI RAD


Periodini prekidi omoguuju ravnomernu raspodelu procesorskog vremena izmeu raznih procesa, ako izazivaju kruno prekljuivanje procesora s jednog od ovih procesa na drugi. Periodine prekide izaziva sat. To je digitalni sklop sastavljen od kristalnog oscilatora koji generie impulse pravilnog perioda i od brojaa tih impulsa. Sat generie prekid kada broja izbroji zadani broj impulsa. Brojanje prekida (otkucaja) sata je osnova za praenje proticanja vremena, odnosno za uvoenje pojma sistemskog vremena koje se izraava kao broj prekida sata. Sat je neophodan za viekorisniki rad, u toku koga vie korisnika istovremeno koristi raunar. Pri tome, svaki od njih raspolae sopstvenim terminalom, posredstvom koga ostvaruje interakciju sa svojim procesima. Zahvaljujui praenju proticanja sistemskog vremena, mogue je obezbediti periodino prekljuivanje procesora sa procesa jednog korisnika na proces drugog korisnika i tako stvoriti privid da raunar istovremeno opsluuje vie korisnika. Ovaj privid se temelji na velikoj brzini procesora. Viekorisniki rad stvara mogunost za nehotino ili namerno meusobno ometanje korisnika. Dovoljno je da proces jednog korisnika neovlateno izmeni sadraj memorijskih lokacija koje pripadaju slici procesa drugog korisnika. Zatita od meusobnog ometanja korisnika se zasniva na spreavanju procesa da pristupaju memorijskim lokacijama koje ne pripadaju njihovim slikama. To se moe ostvariti ako se za svaki proces uvede njegov poseban logiki adresni prostor i tako razdvoje slike raznih procesa. Slike procesa se i dalje nalaze u obinom ili fizikom adresnom prostoru. Logiki adresni prostor se sastoji od logikih adresa koje se pretvaraju u fizike adrese iz fizikog adresnog prostora. Pre pretvaranja, proverava se ispravnost logike adrese, radi detektovanja pokuaja izlaska procesa iz njegovog logikog adresnog prostora. Podrazumeva se da uvedeni logiki adresni prostor obuhvata niz od n memorijskih lokacija sa logikim adresama od 0 do n-1. Najvea logika adresa zove granina adresa. Ona se menja od procesa do procesa, jer je veliina logikog adresnog prostora odreena brojem memorijskih lokacija, potrebnih za smetanje slike procesa. Pojava logike adrese vee od granine adrese predstavlja pokuaj izlaska van logikog adresnog prostora procesa (van njegove slike) i tretira se kao greka. Otkrivanje ovakve greke se sastoji od poreenja logike i granine adrese, a zasniva se na vaenju nejednaine:

136

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

2n > 2i (n > 0, i = 0, ... , n-1) Prethodna nejednaina ukazuje da se poreenje logike i granine adrese svodi na poreenje korespondentnih bita ovih adresa i to od znaajnijih ka manje znaajnim bitima. im se pronau razliiti korspondentni biti, odmah je jasno da je vea adresa iji bit sadri 1. Poreenje bita Li logike adrese sa korespondentnim bitom Gi granine adrese opisju Vi (vee) i Mi (manje) za i = 31, ... , 0: Vi = Li&(~Gi) Mi = (~Li)&Gi One pokazuju da li je i-ti bit logike adrese vei ili manji od i-tog bita granine adrese. Uz pomo prethodnih logikih funkcija, proveru da li je logika adresa vea od granine adrese opisuje logika funkcija V: V = V31|(~M31&(V30|(~M30&( ... (V1|(~M1&V0)) )))) U sluaju greke, kada je logika adresa vea od granine adrese, V je tano i ukazuje na pokuaj izlaska van logikog adresnog prostora. Logiku adresu je mogue pretvoriti u fiziku samo ako je V netano. Za pretvaranje logike adrese u fiziku je vano uoiti da se logiki adresni prostori raznih procesa mogu istovremeno preslikati u isti fiziki adresni prostor tako da se: 1. logike adrese od 0 do n1-1 logikog adresnog prostora prvog procesa preslikaju u fizike adrese od 0 do n1-1 fizikog adresnog prostora, 2. da se logike adrese od 0 do n2-1 logikog adresnog prostora drugog procesa preslikaju u fizike adrese od n1 do n1+n2-1 fizikog adresnog prostora i tako dalje (slika 5.8.1).

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

137

logike adrese logikih adresnih prostora logiki adresni prostor prvog procesa logiki adresni prostor drugog procesa logiki adresni prostor treeg procesa 0

fizike adrese fizikog adresnog prostora 0

...
n1-1 0 n1-1 n1

...
n2-1 0 n1+n2-1 n1+n2

fiziki adresni prostor

...
n3-1 n1+n2+ n3-1

...

Slika 5.8.1 Preslikavanje logikih adresnih prostora raznih procesa u fiziki adresni prostor Slika 5.8.1 ukazuje da se pretvaranje logike adrese u fiziku svodi na sabiranje logike adrese sa baznom adresom, koja odgovara fizikoj adresi od koje se logiki adresni prostor dotinog procesa preslikava u fiziki adresni prostor. Granina i bazna adresa karakteriu proces, odnosno njegovu sliku i menjaju se od procesa do procesa. Za uvanje granine i bazne adrese potrebni su posebni registri, koji se nazivaju granini (limit) i bazni (base) registar. Poto se sadraji ovih registara razlikuju od procesa do procesa, oni se menjaju u toku prekljuivanja, poput sadraja ostalih procesorskih registara opte namene. Uz granini i bazni registar, za poreenje logike i granine adrese potreban je komparator, koji implementira logiku funkciju V. Za pretvaranje logike adrese u fiziku potreban je sabira, koji sabira logiku i baznu adresu. Slika 5.8.2 prikazuje postupak pretvaranja logike adrese u fiziku.

138

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

logika adresa granini registar

32 komparator 32 ~V bazni registar

sabira

fizika adresa

Slika 5.8.2 Postupak pretvaranja logike adrese u fiziku Postupak pretvaranja logike adrese u fiziku se nalazi u nadlenosti posebnog sklopa koji se oznaava skraenicom MMU (Memory Management Unit ili jedinica za upravljanje memorijom). Ovaj sklop moe biti u okviru procesora ili van njega. U svakom sluaju, u MMU ulazi logika adresa, a iz njega, eventualno, izlazi fizika adresa, koja se upuuje ka sabirnici. Fizika adresa odlazi ka sabirnici samo nakon uspene provere ispravnosti logike adrese, ako vai ~V. Suprotan sluaj, u kome je provera ispravnosti logike adrese neuspena, jer vai V, predstavlja izuzetak (exception). U sluaju pojave izuzetka, neophodno je prekinuti aktivni proces, jer on zahteva pristupanje nedozvoljenoj memorijskoj lokaciji. Zbog toga su izuzeci podvrsta prekida. Zadatak MMU je da ukae na izuzetak. Procesor reaguje na izuzetak tako to pokree mikro-program izuzetka, koji se od mikro-programa prekida razlikuje samo po nainu dobavljanja broja vektora. Poto je izuzetak rezultat aktivnosti procesora, prirodno je da procesor samostalno obezbedi broj vektora, na primer, iz posebnog registra broja vektora, koji se nalazi u okviru procesora, a iji sadraj je predodreen i nepromenljiv. Ovaj broj vektora indeksira element tabele prekida sa vektorom, odnosno ulaznom adresom obraivaa izuzetka. Adresa obraivaa izuzetka se preuzima iz tabele prekida i smeta u programski broja tokom izvravanja mikro-programa izuzetka. Zadatak obrade izuzetka je da zaustavi nedozvoljenu aktivnost procesa, uz registrovanje mesta njene pojave. Na mesto pojave nedozvoljene aktivnosti procesa ukazuje sadraj programskog brojaa, zateen u njemu u trenutku izuzetka. Na ovaj nain moe se otkriti i otkloniti greka koja je izazvala nedozvoljenu aktivnost procesora. Za uvanje ulazne adrese mikroprograma izuzetka, potrebno je proiriti upravljaku jedinicu procesora KONCEPT posebnim registrom izuzetka. Uloga ovoga registra se ne razlikuje od uloge registra prekida, iako se, prirodno, funkcije njihovih izlaznih prekidaa razlikuju, jer mikro-program izuzetka poinje da se izvrava im se ustanovi nedozvoljena aktivnost procesa. On, znai, prekida i izvravanje mikro-programa ili mikropotprograma u toku koga se desi izuzetak. Onemoguavanje izuzetaka nema smisla. Izuzeci se razlikuju od prekida: 1. po tome to MMU, a ne kontroler otkriva pojavu izuzetka, 2. po tome to broj vektora izuzetka pribavlja procesor, a ne kontroler, 3. po tome to obrada izuzetka poinje odmah po njegovom otkrivanju i 4. po tome to izuzeci ne mogu biti onemogueni.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

139

Za preuzimanje i izmenu sadraja graninog i baznog registra neophodne su posebne naredbe procesora. Ako bi pravo pristupanja ovim registrima imali svi procesi, tada bi oni mogli da svojevoljno preslikavaju logiki adresni prostor u fiziki i da tako obezvrede zatitu, odnosno da proveru logike adrese uine besmislenom. Zato je pravo pristupanja graninom i baznom registru iskljuiva privilegija operativnog sistema. Radi uspostavljanja ovakve privilegije, neophodno je razlikovati privilegovane naredbe od neprivilegovanih naredbi procesora, kao i privilegovani reim rada procesora (kernel, superuser mode) od neprivilegovanog reima rada procesora (user mode). U privilegovane naredbe procesora spadaju naredbe za preuzimanje i izmenu sadraja graninog i baznog registra. Izvravanje privilegovanih naredbi je dozvoljeno samo u toku privilegovanog reima rada procesora, dok je izvravanje neprivilegovanih naredbi mogue i u privilegovanom i u neprivilegovanom reimu rada procesora. Privilegovani reim rada procesora je rezervisan samo za izvravanje operativnog sistema, a neprivilegovani reim rada procesora je predvien za izvravanje svih korisnikih programa. U privilegovanom reimu rada nije obavezna provera ispravnosti logikih adresa, jer operativni sistem upravlja celom radnom memorijom, pa je prirodno i da pristupa svim njenim lokacijama. Deo fizikog adresnog prostora, u koji se preslikava logiki adresni prostor procesa i kome proces pristupa u neprivilegovanom reimu rada procesora, se naziva korisniki prostor (user space). Fiziki adresni prostor, kome pristupa operativni sistem u privilegovanom reimu rada procesora, se naziva sistemski prostor (kernel space). U procesoru KONCEPT, za oznaavanje aktuelnog reima rada procesora moe da poslui esti bit status registra (SR5), koji se naziva bit privilegije. Kada je procesor u privilegovanom reimu rada, tada bit privilegije sadri vrednost 1. U suprotnom sluaju, on sadri vrednost 0. Da bi se spreile neovlatene izmene bita privilegije, naredba NASTAVI se, takoe, svrstava u privilegovane naredbe. Poto ovu naredbu sadre, kao svoju poslednju naredbu, obraivai prekida i izuzetaka, pre obrade prekida i izuzetaka neophodno je procesor prevesti u privilegovani reim rada. To zahteva proirenje mikro-programa prekida i izuzetka, radi smetanja vrednosti 1 u bit privilegije status registra. Za to je neophodan poseban pristup bitu privilegije status registra, u toku koga se njegov sadraj izmeni, a sadraj ostalih bita status registra ostane neizmenjen. Zbog korienja privilegovane naredbe, obraivai prekida i izuzetaka ulaze u sastav operativnog sistema. Pokuaj izvravanja privilegovanih naredbi u neprivilegovanom reimu rada predstavlja nedozvoljenu aktivnost, na koju, takoe, reaguje mikro-program izuzetka. Ova vrsta izuzetka se otkriva na osnovu koda izvravane naredbe i sadraja bita privilegije status registra. Kao izuzetak se mogu tretirati i pojave kodova nepostojeih naredbi ili naina adresiranja, pa i neispravnih operanada, kao to je, na primer, pojava

140

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

vrednosti 0 u ulozi delioca za naredbu deljenja kod procesora koji podravaju ovakvu naredbu. Neprivilegovani reim rada, rezervisan za izvravanje korisnikih programa, spreava da sistemski pozivi budu u obliku obinih poziva potprograma. U ovom sluaju je problematino adresiranje pozivanih operacija operativnog sistema, jer se one nalaze van slike procesa, a to znai i van njegovog korisnikog prostora. Da bi se izbeglo korienje nedozvoljenih adresa, operacije operativnog sistema se oblikuju kao obraivai izuzetaka, a sistemski pozivi se oslanjaju na posebnu naredbu procesora za svesno izazivanje izuzetka ( IZAZOVI). Na mestu jedinog operanda ovakve naredbe navodi se broj vektora, dodeljenog pozivanoj operaciji operativnog sistema. Izvravanje ove naredbe se svodi na izvravanje mikroprograma izuzetka. Prema tome, ovakav sistemski poziv, pored poziva traene operacije, izaziva i prevoenje procesora iz neprivilegovanog u privilegovani reim rada. Pri tome nema mogunosti za zloupotrebu prelaska iz neprivilegovanog u privilegovani reim rada procesora. Poto sistemski pozivi zahtevaju korienje specifinih asemblerskih naredbi, oni se sakrivaju unutar posebnih sistemskih potprograma. Ovakvi sistemski potprogrami obrazuju sistemsku biblioteku. Zahvaljujui sistemskoj biblioteci, pozivanje operacija operativnog sistema se svodi na pozivanje potprograma iz sistemske biblioteke.

5.9 PITANJA
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Zato procesor i memorija nisu dovoljni za uspean rad raunara? ta omoguuju komande komandnog jezika? Kako se unose znakovi sa tastature? Kako se prikazuju znakovi na ekranu? ta je zadatak kontrolera? Od ega se sastoji kontroler? Ko vri eho znakova? ta je potrebno za interaktivni rad? Kako se interpretiraju komande? ta je drajver? Od ega se sastoji drajver tastature? Od ega se sastoji terminal? ta je radno ekanje? ta je monitor? Koliko nivoa korienja monitora postoji? Kada se aktivira monitor? Koje vrste memorije postoje? Zato se istovremeno koriste i poluprovodnike i magnetne memorije? Na kom principu radi disk? Kako radi drajver diska? ta je datoteka?

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

141

22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61.

ta sadri deskriptor datoteke? ta je proces? ta sadri deskriptor procesa? ta je operativni sistem? Od kojih modula se sastoji operativni sistem? ta je zadatak pojedinih modula operativnog sistema? ta sadri slika procesa? Od kojih komandi se sastoji komandni jezik operativnog sistema? ta su sistemski pozivi? Koji sistemski programi postoje? Po emu se razlikuju monitor i operativni sistem? Kako se pokree operativni sistem? ta je vieprocesni reim rada? Zato je vaan vieprocesni reim rada? ta je zadatak prekljuivanja? U kojim stanjima moe biti proces? Kada dolazi do prekljuivanja kod ulazom-izlazom voenog prekljuivanja? ta sadri registarski bafer? ta se deava u toku prekljuivanja? Zato je uveden prekid? Ko izaziva prekid? ta je vektor obraivaa prekida? Kakvu ulogu ima broj vektora obraivaa prekida? ta sadri tabela prekida? Kako se koriste linije najave i potvrde prekida? Izvravanjem koje naredbe se zavrava obrada prekida? ta pokazuje bit prekida? Kada moe da zapone obrada prekida? Kako upravljanje prekidima utie na upravljaku jedinicu? Kako se reava problem istovremene pojave vie prekida? ta se deava u toku izvravanja mikro-programa prekida? Kojoj vrsti naredbi pripada naredba nastavi? Zato se prioriteti dodeljuju procesima? Koji modul operativnog sistema moe da sadri obraivae prekida? Kako prekidi utiu na drajvere? ta je zadatak pozadinskih procesa? Zato pojedine operacije drajvera uzrokuju zaustavljanje procesa (objasniti na primeru)? Zato je potrebna sabirnica? Po emu se DMA kontroleri razlikuju od obinih kontrolera? Ko pokree rad DMA kontrolera?

142

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87.

ta se deava u toku aktivnosti DMA kontrolera? Kada DMA kontroler zavrava rad? emu slue linije zahtev i dozvola? Zato je uveden viekorisniki rad? ta su neophodni preduslovi za viekorisniki rad? ta omoguuju logiki adresni prostori? ta je granina adresa? Kako se preslikava logika adresa u fiziku adresu? ta sadre bazni i granini registar? Na kom principu radi komparator? Kakav zadatak ima sabira? Koju ulogu ima MMU? Kada se javlja izuzetak? ta je cilj obrade izuzetka? Po emu se razlikuju prekidi i izuzeci? Zato se uvode privilegovane naredbe? Ko sme da izvrava privilegovne naredbe? U kom reimu rada procesora se izvravaju korisniki programi? ta je korisniki prostor? Koliko ima korisnikih prostora? ta je sistemski prostor? ta pokazuje bit privilegije? Za ta se koriste izuzeci? Bez ega nisu mogui sistemski pozivi? ta sadre sistemski potprogrami? ta omoguuje sistemska biblioteka?

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

143

6. SISTEMSKI PROGRAMI
6.1 EDITOR
Editor je namenjen za zadavanje sadraja novih tekst datoteka i za izmene sadraja postojeih tekst datoteka. On koristi ekran terminala za prikazivanje (dela) sadraja tekst datoteke. Na ekranu je prikazani sadraj organizovan u linije, iako tekst datoteka moe da ima drugaiju unutranju organizaciju. Ona, na primer, moe da bude organizovana kao niz znakova u kome se nalaze kodovi znakova sadraja datoteke, kao to su kodovi slova, cifara, posebnih znakova ili upravljakog znaka nova linija. U ovako organizovanoj tekst datoteci istoj liniji ekrana pripadaju znakovi datoteke koji se nalaze: 1. izmeu njenog poetka i prve pojave pomenutog upravljakog znaka, 2. izmeu dve uzastopne pojave ovog upravljakog znaka i 3. izmeu poslednje pojave ovog upravljakog znaka i kraja tekst datoteke. Poto se ekranska i unutranja organizacija tekst datoteke razlikuju, u toku editiranja je neophodno obe organizacije odravati aurnim, da bi stanje na ekranu uvek odraavalo stanje u tekst datoteci. Aktivnost editora usmerava korisnik pomou posebnih editorskih komandi. Zadavanje editorskih komandi zahteva korienje ili posebnih dirki tastature, ili posebnih kombinacija obinih dirki tastature, ili posebnog pokazivakog ureaja. Kao komande editora mogu da se koriste znakovi, ali je tada potrebno razlikovati znakove komandi od znakova sadraja tekst datoteke. Zato se u ovom sluaju uvode komandni i znakovni reim rada editora. U komandnom reimu rada, svi znakovi, pristigli sa tastature, predstavljaju znakove komandi. U znakovnom reimu rada, svi preuzeti znakovi postaju deo sadraja datoteke. Za prelazak iz jednog u drugi reim rada editora potrebna je posebna dirka tastature. U toku zadavanja znakova tekst datoteke, mogua su dva podreima rada editora. U jednom od njih (insert), pristigli znakovi se umeu izmeu postojeih znakova, a u drugom (overwrite), pristigli znakovi zamenjuju postojee znakove. Efekat, koji na ekransku i unutranju organizaciju ima unos znaka, zavisi od podreima rada i od unesenog znaka. Za ekransku organizaciju tekst datoteke, kursor oznaava znakovnu poziciju ekrana od koje se prikazani sadraj tekst datoteke menja. Unos svakog znaka izaziva pomeranje kursora u sledeu znakovnu poziciju ekrana, namenjenu za naredni znak, i smetanje unesenog znaka u prethodnu poziciju kursora. Pri tome, ako se znakovi umeu, pomeranje kursora izaziva pomeranje svih znakova koji na ekranu dolaze iza njega. Kod unutranje organizacije tekst datoteke u obliku niza znakova, kursoru odgovara indeks elementa niza, poev od koga se sadraj elemenata ovog niza menja. Ako se znakovi umeu, za svaki pristigli znak se stvara mesto u nizu pomeranjem sadraja svih elemenata ovog niza za jedno mesto prema kraju niza, poev od indeksiranog

144

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

elementa. Zatim se ovaj indeks uvea za vrednost 1. Dok za unutranju organizaciju nema razlike izmeu pristizanja upravljakog znaka nova linija i ostalih znakova, za ekransku organizaciju, pristizanje pomenutog upravljakog znaka podrazumeva poseban postupak, jer tada dolazi do pomeranja kursora u prvu znakovnu poziciju naredne linije, uz odgovarajue pomeranje znakova koji slede iza njega. Editor se oslanja na drajver terminala koji za vreme aktivnosti editora ne interpretira znakove, ne vri njihov eho, niti editiranje, nego sve to stigne sa tastature preputa editoru. Radi podrke editora, drajver terminala, pored obinog, mora da ima i poseban, editorski reim rada.

6.2 ASEMBLER
Asembler je namenjen za analizu asemblerskog programa, sadranog u programskoj datoteci, radi prepoznavanja pojedinih naredbi i direktiva i radi generisanja njihovih mainskih oblika. U analizi programske datoteke, asembler preuzima znak po znak njenog sadraja i proverava da li je preuzeti znak u saglasnosti sa pravilima programskoj jezika koja opisuju obrazovanje asemblerskog programa. Ovakva analiza ima dva nivoa: leksiki (lexical) i sintaksni (syntax). Cilj leksike analize je prepoznavanje ispravnih rei u obliku nizova znakova koji ne sadre separatore, odnosno koji ne sadre ni razmake, ni upravljake znakove nova linija, a obrazovani su po pravilima programskog jezika. Cilj sintaksne analize ili parsiranja (parsing) je prepoznavanje ispravnih reenica, odnosno redosleda rei, obrazovanih po pravilima programskog jezika. Leksiku i sintaksnu analizu usmeravaju pravila programskog jezika. Tako, na primer, pravilo program sugerie da niz znakova iz programske datoteke treba da zapone znakovima POETAK. Naredno pravilo, telo, kao i sledea pravila, sugeriu da iza rei POETAK treba da sledi upravljaki znak nova linija i eventualno razmaci, pa ili malo slovo, kojim zapoinje labela, ili veliko slovo, kojim zapoinje ime naredbe ili direktive. Nastavak analize zavisi od prepoznatog sluaja i pravila koja se mogu dalje primeniti. Prema tome, asembliranje otpoinje traenjem, od poetka programske datoteke, prvog znaka, razliitog od separatora. To mora biti znak P, a iza njega moraju slediti preostali znakovi rei POETAK i bar jedan separator. Zatim se opet trai znak razliit od separatora. Ako se pronae malo slovo, tada je re o poetnom znaku labele, pa se trai separator, a svi pre njega pronaeni znakovi, koji moraju biti ili malo slovo ili cifra ili podvlaka, predstavljaju preostale znakove labele. Zatim se opet trai prvi znak, koji nije separator, a koji mora da bude veliko slovo, jer labela prethodi ili naredbi, ili direktivi. Nastavak asembliranja zavisi od pronaene naredbe ili direktive. U prethodnom opisu analize programske datoteke se prepliu leksika i sintaksna analiza. Pojava neoekivanog znaka u bilo kom momentu asembliranja ukazuje na sintaksnu greku i tada sledi oporavak od ove greke. On se sastoji od pronalaenja prvog znaka od koga se moe uspeno nastaviti asembliranje. Oporavak od greke se obino svodi na traenje prve pojave upravljakog znaka nova linija, jer se

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

145

greka najee odnosi na asemblersku naredbu ili direktivu, sadranu u samo jednoj liniji programskog teksta. Nakon prepoznavanja naredbe, mogue je generisati njen mainski oblik. Za generisanje obavezne rei potrebno je raspolagati kodovima naredbe i naina adresiranja. Kodovi naredbi se mogu preuzeti iz tabele naredbi (opcode table), iji elementi sadre imena i kodove naredbi. Na primer, za procesor KONCEPT tabela naredbi je prikazana na slici 6.2.1. Ime naredbe i njen kod Ime naredbe i njen kod Ime naredbe i njen kod
DESNO I ILI LEVO NE ODUZMI ODUZMI_P POZOVI SABERI SABERI_P 43 4D 42 4C 46 49 48 47 20 01 SKOI SKOI_ZA_< SKOI_ZA_<= SKOI_ZA_<> SKOI_ZA_= SKOI_ZA_> SKOI_ZA_>= SKOI_ZA_M SKOI_ZA_N SKOI_ZA_NE_M 30 42 45 41 40 44 43 4A 40 4B SKOI_ZA_NE_N SKOI_ZA_NE_P SKOI_ZA_NE_V SKOI_ZA_P SKOI_ZA_V SKOI_ZA__< SKOI_ZA__<= SKOI_ZA__> SKOI_ZA__>= UPOREDI 41 43 4D 42 4C 46 49 48 47 20

Slika 6.2.1 Tabela naredbi Tabela naredbi je sortirana po imenima naredbi, radi breg pretraivanja, kao to je binarno pretraivanje. Kodovi operanada se mogu programski generisati, kada se prepozna odgovarajui operand. Kada se odredi kod naredbe ili kod operanda, on se upisuje u odgovarajui bajt memorijske lokacije koja je rezervisana za generianje obavezne rei. Ako operand zahteva dodatnu re, odgovarajui sadraj se upisuje u memorijsku lokaciju koja je rezervisana za generisanje dodatne rei. To ne predstavlja problem, ako se u dodatnu re smeta heksadecimalni broj koji je naveden u sastavu operanda. Meutim, ako je u sastavu operanda navedena labela, tada odreivanje njene adrese nuno prethodi popunjavanju odgovarajue dodatne rei. Ako labela prethodi naredbi, kao adresa labele slui adresa poetka ove naredbe, odnosno adresa memorijske lokacije u kojoj se nalazi obavezna re ove naredbe. U sluaju da labela prethodi direktivi, kao adresa labele slui adresa poetka ove direktive, odnosno adresa prve od memorijskih lokacija koje ova direktiva zauzima za smetanje podataka. Prema tome, kada se odredi adresa poetka naredbe ili direktive, kojoj prethodi labela, ta adresa se pridruuje labeli. Radi uvanja adresa labela zgodno je uvesti tabelu labela (symbol table), iji elementi sadre labele i njihove adrese. Tabela labela se dopunjava kada se naie na definiciju labele, odnosno kada se naie na liniju u kojoj labela prethodi naredbi ili direktivi. I za tabelu labela je zgodno da bude sortirana po labelama, radi breg pretraivanja. Prema tome, kada zatreba adresa labele, dovoljno je pretraiti tabelu

146

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

labela, radi pronalaenja labele i preuzimanja njene adrese. Meutim, problem se javlja kada se labela koristi pre definisanja, jer tada tabela labela ne sadri korienu labelu, pa se njena adresa ne moe preuzeti iz tabele labela. Ovaj problem se javlja kod skokova kod kojih upravljaka naredba prethodi ciljnoj naredbi. Ovakvi skokovi se nazivaju referenciranje unapred (forward references). Zbog referenciranja unapred, asembliranje se obino organizuje u dva prolaza. U prvom prolazu se analizira tekst asemblerskog programa, radi popunjavanja tabele labela. U drugom prolazu se isti tekst analizira jo jednom, radi generisanja mainskih oblika naredbi i direktiva. U prvom prolazu tabela labela se dopunjava im se naie na definiciju labele. Poto su za odreivanje adresa labela potrebne adrese poetaka naredbi ili direktiva kojima labele prethode, pre asembliranja se mora predvideti za koje memorijske lokacije se asemblira asemblerski program, odnosno u koje memorijske lokacije e biti smeten odgovarajui mainski program. Prirodno je pretpostaviti da se mainski program smeta od poetka logikog adresnog prostora. Adresi njegovog poetka odgovara, znai, nulta logika adresa. Ako se zna adresa poetka prve naredbe ili direktive, tada se adrese poetaka ostalih naredbi ili direktiva odreuju na osnovu injenice da je adresa poetka svake naredbe ili direktive uvek jednaka zbiru adrese poetka i duine prethodne naredbe ili direktive. Prema tome, ako se uvede posebna promenljiva broja lokacija (location counter) i inicijalizuje na nulu, tada ona sadri adresu poetka prve naredbe ili direktive. Nakon prepoznavanja prve naredbe ili direktive i njenog analiziranja, radi odreivanja njene duine, sledi uveavanje vrednost brojaa lokacija za tu duinu, pa on sadri adresu poetka druge naredbe ili direktive. Ako se isti postupak ponovi za svaku naredbu ili direktivu, u brojau lokacija e se uvek nalaziti adresa poetka naredbe ili direktive ija analiza je na redu. Na ovaj nain, kada se u toku analize naredbe ili direktive otkrije definicija labele, tada njenu adresu sadri broja lokacija. Na slici 6.2.2 su prikazane uzastopne vrednosti brojaa lokacija pre analize svake naredbe i direktive iz asemblerskog programa za raunanje najveeg zajednikog delioca. Asemblerski programa
POETAK a NAPUNI b NAPUNI ponovo UPOREDI SKOI_ZA_= SKOI_ZA_< vee ODUZMI SKOI manje ODUZMI SKOI kraj SKOI KRAJ 0C 0A a,b kraj manje a,b,a ponovo b,a,b ponovo kraj

Broja lokacija
0 0 1 2 5 7 9 13 15 19 21 23

Slika 6.2.2 Vrednosti brojaa lokacija

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

147

Na slici 6.2.3 je prikazana tabela labela, nastala u toku prvog prolaza asemblera, nakon analize asemblerskog programa sa slike 6.2.2. Labela
a b kraj manje ponovo vee

Adresa
0 1 21 15 2 9

Slika 6.2.3 Tabela labela Mainski oblik programa, nastao u toku drugog prolaza asemblera, se naziva objektna sekvenca. Nju sainjavaju mainske naredbe i podaci. Na slici 6.2.4 je prikazana objektna sekvenca, nastala u toku drugog prolaza asemblera, nakon analize asemblerskog programa sa slike 6.2.2. Adrese lokacija
00000000 00000001 00000002 00000003 00000004 00000005 00000006 00000007 00000008 00000009 0000000A 0000000B 0000000C 0000000D 0000000E 0000000F 00000010 00000011 00000012 00000013 00000014 00000015 00000016

Objektna sekvenca
0000000C 0000000A 20101000 00000000 00000001 40000000 00000015 42000000 0000000F 02101020 00000000 00000001 00000000 30000000 00000002 02101020 00000001 00000000 00000001 30000000 00000002 30000000 00000015

Komentar
POETAK a NAPUNI b NAPUNI ponovo UPOREDI 0C 0A a,b

SKOI_ZA_= SKOI_ZA_< vee ODUZMI

kraj manje a,b,a

SKOI manje ODUZMI

ponovo b,a,b

SKOI kraj SKOI KRAJ

ponovo kraj

Slika 6.2.4 Objektna sekvenca (prve dve kolone u tabeli sadre heksadecimalne brojeve)

148

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

U toku asembliranja se otkrivaju ne samo sintaksne, nego i neke semantike greke. Otkrivanje semantikih greaka je vezano za pretraivanje tabele naredbi i tabele labela. Na primer: 1. neuspeno pretraivanje tabele naredbi ukazuje na pogreno ime naredbe, 2. uspeno pretraivanje tabele labela u prvom prolazu asemblera, u toku dopune ove tabele, ukazuje na ponovno definisanje postojee labele, a 3. neuspeno pretraivanje tabele labela u drugom prolazu asemblera ukazuje na korienje nedefinisane labele. Objektnoj sekvenci odgovara mainski oblik programa, koji je nespreman za interakciju sa operativnim sistemom. Objektna sekvenca se smeta u objektnu datoteku, koja nije itljiva kao tekst datoteka, jer njeni svi bajti ne sadre kodove vidljivih znakova. Pored objektne sekvence, objektna datoteka sadri i adresu ulazne mainske naredbe od koje zapoinje izvravanje objektne sekvence. Ova ulazna adresa se naziva i ulazna taka (entry point) objektne sekvence. Ulazna adresa odgovara ulaznoj labeli koja prethodi ulaznoj naredbi asembliranog programa i navedena je kao operand posebne ulazne direktive. Obrazovanje ove direktive opisuje pravilo:
ulazna_direktiva -> nova_linija ULAZ razmak labela

U nastavku je prikazan asemblerski program sa slike 6.2.2 ija labela je oznaena kao ulazna labela ovog programa:
POETAK a NAPUNI b NAPUNI ponovo UPOREDI SKOI_ZA_= SKOI_ZA_< vee ODUZMI SKOI manje ODUZMI SKOI kraj SKOI ULAZ KRAJ 0C 0A a,b kraj manje a,b,a ponovo b,a,b ponovo kraj ponovo

ponovo

6.3 MAKRO PRETPROCESOR


Makro pretprocesor je namenjen za analizu programske datoteke, radi prepoznavanja makro definicija, makro poziva i uslovnih direktiva i radi tekstualnih izmena sadraja ove datoteke. Kada je makro pretprocesor samostalan program, tada on preuzima izvorni tekst asemblerskog programa iz ulazne programske datoteke, a smeta izmenjeni tekst asemblerskog programa u izlaznu programsku datoteku. Makro pretprocesiranje se zasniva na leksikoj i sintaksnoj analizi. Kada se u makro pretprocesiranju prepozna makro definicija, tada se njeno ime smesti u

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

149

tabelu makro imena, a njeno telo se smesti u tabelu makro tela. U tabeli makro imena iza svakog imena makroa slede redni broj poetnog i redni broj zavrnog elementa tabele makro tela, u kojima se nalazi telo odgovarajue makro definicije. Pre smetanja u tabelu makro tela, telo makro definicije se izmeni tako to se svi parametri zamene njihovim rednim brojevima. Da bi se oni razlikovali od brojeva prisutnih u telu makro definicije, redni brojevi parametara zapoinju (posebnim) znakom &. Na primer, slika 6.3.1 sadri prikaz tabele makro imena i tabele makro tela nakon prepoznavanja makro definicija:
PREBACI MAKRO ulaz,izlaz SABERI ulaz,0,izlaz KRAJ MAKRO lokacija SABERI 0,0,lokacija KRAJ

ANULIRAJ

Tabela makro imena


PREBACI ANULIRAJ 1 2 1 2 1 2

Tabela makro tela


SABERI &1,0,&2 SABERI 0,0,&1

Slika 6.3.1 Tabela makro imena i tabela makro tela (druga i trea kolona tabele makro imena sadre odgovarajee redne brojeve, navedene u prvoj koloni tabele makro tela) Nakon prepoznavanja makro poziva, njegovi argumenti se smeste u tabelu argumenata, i to tako da se svaki argument nalazi u elementu iji indeks je jednak rednom broju odgovarajueg parametra. Na ovaj nain se uspostavlja korespondencija parametara i argumenata, koja olakava zamenu parametara argumentima. Na primer, slika 6.3.2 sadri tabelu argumenata za makro poziv:
PREBACI R1,R2

redni broj 1 2

Argument
R1 R2

Slika 6.3.2 Tabela argumenata Po popunjavanju tabele argumenata, pretrauje se tabela makro imena, radi pronalaenja imena i, posredstvom njega, tela makro definicije koja odgovara prepoznatom makro pozivu. Zatim se linija sa makro pozivom zameni linijama iz pronaenog tela, u kojima su prethodno redni brojevi parametara zamenjeni argumentima. Pre uvrtavanja linija tela makro definicije u izlaznu programsku datoteku, neophodno je svaku liniju ponovo analizirati, jer linije tela makro

150

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

definicije mogu sadrati nove makro pozive ili makro definicije. Zbog toga makro pretprocesor sadri rekurzivne pozive. Rekurzivni pozivi su potrebni i zbog uslovnih direktiva. Makro pretprocesiranje ili prethodi prvom prolazu asembliranja ili se u njega ugrauje, ali tako da se asemblerska analiza primenjuje na linije koje su rezultat makro pretprocesiranja. Za makro pretprocesiranje karakteristine semantike greke su: poziv nedefinisanog makroa, ponovno definisanje postojeeg makroa i neslaganje broja argumenata makro poziva sa brojem parametara makro definicije. Otkrivanje ovih greaka se zasniva na korienju tabele makro imena, tabele makro tela i tabele argumenata.

6.4 LINKER
Zasebno asembliranje esto korienih asemblerskih potprograma je dragoceno, jer se tako izbegava ponavljanje asembliranja ovih potprograma zajedno sa asembliranjem programa koji ih pozivaju. Zasebnim asembliranjem programa i potprograma nastaju njihove zasebne objektne datoteke. Zadatak linkera je da zasebne objektne sekvence programa i potprograma, preuzete iz raznih objektnih datoteka, linkuje (povee) u jednu izvrnu sekvencu programa, radi stvaranja inicijalne slike procesa i njenog smetanja u izvrnu datoteku. U postupak linkovanja (povezivanja) linker ukljuuje i objektne sekvence sistemskih potprograma iz sistemske biblioteke, da bi omoguio interakciju korisnikih programa i operativnog sistema. Za svaku od zasebnih objektnih sekvenci, koje linker povezuje u jednu izvrnu sekvencu, u toku asembliranja je predvieno da poinje od nulte logike adrese. Nakon povezivanja, samo jedna objektna sekvenca poinje od nulte logike adrese. Adrese poetaka svih ostalih objektnih sekvenci su relocirane (pomerene) za broj memorijskih lokacija koje su zauzele prethodno smetene objektne sekvence. Ovaj broj memorijskih lokacija predstavlja konstantu relokacije. Relokacija (relocation) moe da stvori probleme, kada mainske naredbe iz pomerenih objektnih sekvenci sadre u svojim dodatnim reima adrese, jer su te apsolutne adrese tane samo pod pretpostavkom da sve objektne sekvence poinju od nulte logike adrese. Nakon relokacije objektne sekvence, njene apsolutne adrese nisu tane, jer i dalje pokazuju na lokacije koje su predviene za smetanje dotine objektne sekvence, a ne na lokacije u koje je objektna sekvenca stvarno dospela nakon linkovanja. Na slici 6.4.1 je prikazana objektna sekvenca, ije su apsolutne adrese oznaene strelicom.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

151

Adrese lokacija
00000000 00000001 00000002 00000003 00000004 00000005 00000006 00000007 00000008 00000009 0000000A 0000000B 0000000C 0000000D 0000000E 0000000F 00000010 00000011 00000012 00000013 00000014 00000015 00000016

Objektna sekvenca
0000000C 0000000A 20101000 00000000 00000001 40000000 00000015 42000000 0000000F 02101020 00000000 00000001 00000000 30000000 00000002 02101020 00000001 00000000 00000001 30000000 00000002 30000000 00000015

Apsolutna adresa

Komentar
POETAK a NAPUNI b NAPUNI ponovo UPOREDI 0C 0A a,b

<<SKOI_ZA_= <SKOI_ZA_< <vee <<<SKOI <manje <<<SKOI <kraj <ULAZ KRAJ ponovo SKOI kraj ponovo ODUZMI b,a,b ponovo ODUZMI a,b,a manje kraj

Slika 6.4.1 Objektna sekvenca sa oznaenim apsolutnim adresama (prve dve kolone u tabeli sadre heksadecimalne brojeve) Apsolutne adrese se javljaju kada se labela koristi u sastavu neposrednog, direktnog i indeksnog adresiranja. Ako se objektna sekvenca sa slike 6.4.1 relocira, na primer, za jednu lokaciju, tada ni jedna od apsolutnih adresa vie nije tana. Ali ako se, nakon relokacije, svaka od prethodnih apsolutnih adresa uvea za vrednost konstante relokacije, koja u ovom primeru ima vrednost 1, apsolutne adrese opet postaju tane. Znai, problem relokacije (relocation problem) linker moe da rei korekcijom apsolutnih adresa, odnosno uveavanjem apsolutnih adresa za konstantu relokacije. Ovakva korekcija apsolutnih adresa se naziva statika relokacija (static relocation). Da bi linker znao gde se u objektnoj sekvenci nalaze apsolutne adrese, asembler mora da generie tabelu relokacije (relocation dictionary) sa logikim adresama lokacija objektne sekvence, koje sadre apsolutne adrese. Tabela relokacije se nalazi u objektnoj datoteci zajedno sa objektnom sekvencom. Za primer objektne sekvence sa slike 6.4.1 tabela relokacije je prikazana na slici 6.4.2.

152

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Heksadecimalne adrese
00000003 00000004 00000006 00000008 0000000A 0000000B 0000000C 0000000E 00000010 00000011 00000012 00000014 00000016

Slika 6.4.2 Tabela relokacije Problem relokacije ne postoji, ako ne postoje apsolutne adrese. To moe biti sluaj, na primer, kod upravljakih naredbi, ako se u njihovoj dodatnoj rei navede meusobna udaljenost upravljake i ciljne naredbe umesto apsolutne adrese ciljne naredbe. Meusobna udaljenost upravljake i ciljne naredbe se izraava kao broj rei koje se nalaze izmeu kraja upravljake naredbe i poetka ciljne naredbe. Ova udaljenost predstavlja relativnu adresu ciljne naredbe u odnosu na upravljaku naredbu. Iz relativne adrese se moe odrediti apsolutna adresa ciljne naredbe, kada se relativna adresa sabere sa sadrajem programskog brojaa koji se nalazi u njemu nakon dobavljanja relativne adrese iz dodatne rei. Ovakav nain adresiranja se naziva relativno adresiranje (PC-relative addressing). Relativno adresiranje predstavlja oblik indeksnog adresiranja, u kome se podrazumeva korienje programskog brojaa umesto registra opte namene. Nakon uvoenja relativnog adresiranja, podrazumeva se da se direktno adresiranje interpretira kao relativno, kada se koristi u upravljakim naredbama. Poto se relativno adresiranje koristi samo u upravljakim naredbama koje imaju samo ulazne operande, za oznaavanje relativnog adresiranja u obaveznoj rei je dovoljan samo jedan kod, na primer kod 9. Na slici 6.4.3 je prikazan primer objektne sekvence sa slike 6.4.1 u kojoj se podrazumeva korienje relativnog adresiranja za upravljake naredbe.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

153

Adrese lokacija
00000000 00000001 00000002 00000003 00000004 00000005 00000006 00000007 00000008 00000009 0000000A 0000000B 0000000C 0000000D 0000000E 0000000F 00000010 00000011 00000012 00000013 00000014 00000015 00000016

Objektna sekvenca
0000000C 0000000A 20101000 00000000 00000001 40900000 0000000E 42900000 00000006 02101020 00000000 00000001 00000000 30900000 FFFFFFF3 02101020 00000001 00000000 00000001 30900000 FFFFFFED 30900000 FFFFFFFE

Apsolutna adresa

Komentar
POETAK a NAPUNI b NAPUNI ponovo UPOREDI 0C 0A a,b

<<SKOI_ZA_= SKOI_ZA_< vee <<<SKOI manje <<<SKOI kraj SKOI ULAZ KRAJ ponovo kraj ponovo ODUZMI ponovo b,a,b ODUZMI kraj manje a,b,a

Slika 6.4.3 Objektna sekvenca sa relativnim adresama i oznaenim preostalim apsolutnim adresama (prve dve kolone u tabeli sadre heksadecimalne brojeve) Relativne adrese su oznaeni celi brojevi u komplement 2 predstavi. To znai, kada je ciljna naredba posle upravljake naredbe, relativna adresa je pozitivna. Na primer, relativne adrese u lokacijama sa logikim adresama 616 i 816 sa slike 6.4.3 su pozitivne. Kada je ciljna naredba pre upravljake naredbe, relativna adresa je negativna. Na primer, relativne adrese u lokacijama sa logikim adresama E16, 1416 i 1616 sa slike 6.4.3 su negativne. Na relativne adrese ne utie relokacija objektne sekvence, jer se relokacijom ne menja relativni poloaj mainskih naredbi u objektnoj sekvenci. Zato relativne adrese ne izazivaju problem relokacije. Problem relokacije ne izazivaju ni apsolutne adrese iz objektnih sekvenci koje nisu relocirane. Zasebna asembliranja izazivaju ne samo problem relokacije, nego i problem spoljanjih referenci (external reference problem). Spoljanje reference se javljaju kada se iz programa ili potprograma poziva zasebno asembliran potprogram, jer se tada referencira (koristi) spoljanja labela koja nije definisana u programu ili potprogramu pozivaocu, nego u pozivanom potprogramu. Takve spoljanje labele asembler oznaava kao nedefinisane labele. Poto adrese spoljanjih labela nisu

154

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

poznate u toku asembliranja, kao njihova adresa koristi se 0. Da bi linker mogao da koriguje ove adrese, asembler formira tabelu nedefinisanih labela (external reference table). Njeni elementi sadre nedefinisane, odnosno spoljanje labele i logike adrese lokacija koje treba korigovati pomou adresa ovih spoljanjih labela. I ova tabela ulazi u sastav objektne datoteke. Pomou tabele nedefinisanih labela, linker moe da utvrdi koje lokacije iz objektne sekvence treba korigovati, kao i adrese kojih spoljanjih labela treba koristiti za ovu korekciju. Ulogu spoljanjih labela imaju ulazne labele. Da bi linker mogao da rei problem spoljanjih referenci, asembler mu posredstvom objektne datoteke prosleuje tabelu ulaznih labela (entry point table). Njeni elementi sadre ulazne labele i njihove adrese. Ulaznih labela ima vie, ako se istovremeno asemblira vie asemblerskih potprograma, jer svaki od njih ima svoju ulaznu labelu, oznaenu pomou posebne ulazne direktive. U ovakvom sluaju se podrazumeva da ulazna labela iz prve od ulaznih direktiva predstavlja ulaznu labelu cele objektne sekvence. Na slici 6.4.4 je prikazana objektna sekvenca programa koji poziva nezavisno asemblirani potprogram nzd, radi odreivanja najveeg zajednikog delioca brojeva 12 i 10. Argumenti se prosleuju pozivanom potprogramu posredstvom registara R1 i R2. Da bi bio jednostavniji, ovaj program ne koristi povratnu vrednost potprograma nzd i zavrava se beskonanom petljom. Uz objektnu sekvencu ovog programa su navedene tabela relokacije, tabela nedefinisanih labela i tabela ulaznih labela. Adrese lokacija
00000000 00000001 00000002 00000003 00000004 00000005 00000006 00000007 00000008 00000009

Objektna sekvenca
00000041 0000000C 00000000 00000042 0000000A 00000000 50900000 00000000 30900000 FFFFFFFE

Nedefinisana adresa

Komentar
POETAK primer SABERI 0C,0,R1

SABERI

0A,0,R2

POZOVI <kraj SKOI ULAZ KRAJ

nzd kraj primer

Tabela relokacije
-

Tabela nedefinisanih labela


nzd primer 00000007 00000000

Tabela ulaznih labela Slika 6.4.4 Objektna sekvenca i tabele relokacije, nedefinisanih i ulaznih labela programa (prve dve kolone u tabeli sadre heksadecimalne brojeve)

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

155

U objektnoj sekvenci, prikazanoj na slici 6.4.4, potrebno je korigovati lokaciju sa logikom adresom 716, na koju pokazuje strelica. Ova lokacija treba da sadri relativnu adresu koja se odreuje na osnovu adrese spoljanje labele nzd. Na slici 6.4.5 je prikazana objektna sekvenca potprograma nzd koji odreuje najvei zajedniki delioc neoznaenih celih brojeva navedenih u registrima R1 i R2. Najvei zajedniki delioc predstavlja povratnu vrednost i prosleuje se posredstvom registra R0. Uz objektnu sekvencu su navedene tabela relokacije, tabela nedefinisanih labela i tabela ulaznih labela. Adrese lokacija
00000000 00000001 00000002 00000003 00000004 00000005 00000006 00000007 00000008 00000009 0000000A 0000000B 0000000C 0000000D

Objektna sekvenca
20313200 40900000 00000008 42900000 00000003 02313231 30000000 FFFFFFF8 02323132 30000000 FFFFFFF5 00310030 00000000 303F0000 nzd

Komentar
POETAK UPOREDI SKOI_ZA_= SKOI_ZA_< vee ODUZMI SKOI ODUZMI SKOI SABERI SKOI ULAZ KRAJ R1,R2 kraj manje R1,R2,R1 nzd R2,R1,R2 nzd R1,0,R0 R15 nzd

manje

kraj

Tabela relokacije
-

Tabela nedefinisanih labela


-

Tabela ulaznih labela


nzd 00000000

Slika 6.4.5 Objektna sekvenca i tabele relokacije, nedefinisanih i ulaznih labela potprograma (prve dve kolone u tabeli sadre heksadecimalne brojeve) U toku rada linker preuzima objektne sekvence i sve tabele iz objektnih datoteka koje su obuhvaene linkovanjem. On tada odredi adrese poetaka objektnih sekvenci na osnovu njihovih duina i formira tabelu objektnih sekvenci (object module table). U ovoj tabeli se nalaze ulazne labele objektnih sekvenci,

156

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

duine objektnih sekveci i adrese njihovih poetaka. Na slici 6.4.6 je prikazana tabela objektnih sekvenci za program sa slike 6.4.4 i potprogram sa slike 6.4.5. Ulazna labela objektne sekvence
primer nzd

Duina objektne sekvence


10 14

Adresa poetka objektne sekvence


0 10

Slika 6.4.6 Tabela objektnih sekvenci Adresa poetka objektne sekvence je ujedno njena konstanta relokacije, pa se pomou nje moe izvriti relokacija svih adresa iz njenih tabela. Nakon relokacije, tabela nedefinisanih labela programa sa slike 6.4.4 se nije promenila, jer je konstanta relokacije programa jednaka nuli, dok se adresa labele nzd iz tabele ulaznih labela potprograma sa slike 6.4.5 uveala za vrednost 10 (A16), jer je tolika konstanta relokacije potprograma. Pomou odgovarajuih konstanti relokacije se, zatim, vri relokacija apsolutnih adresa pojedinih objektnih sekvenci, radi reavanja problema relokacije. Da bi se reio problem spoljanjih referenci, sve tabele ulaznih labela se spajaju u jednu tabelu spoljanjih labela (global symbol table). Za primere sa slika 6.4.4 i 6.4.5 tabela spoljanjih labela je prikazana na slici 6.4.7. Tabela spoljanjih labela
primer nzd 00000000 0000000A

Slika 6.4.7 Tabela spoljanjih labela (druga kolona u tabeli sadri heksadecimalne brojeve) Za svaku od labela iz tabela nedefinisanih labela se pronalazi njena adresa u tabeli spoljanjih labela. Ova adresa se koristi za korekciju lokacija odgovarajue objektne sekvence. Ako neka od tabela nedefinisanih labela sadri labelu koja ne postoji u tabeli spoljanjih labela, re je o nedefinisanoj labeli, odnosno o greci koja se otkriva u toku linkovanja. Nakon reavanja problema relokacije i problema spoljanjih referenci, objektne sekvence se mogu spojiti u jednu izvrnu sekvencu. Za program sa slike 6.4.4 i potprogram sa slike 6.4.5 izvrna sekvenca je prikazana na slici 6.4.8.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

157

Adrese lokacija
00000000 00000001 00000002 00000003 00000004 00000005 00000006 00000007 00000008 00000009 0000000A 0000000B 0000000C 0000000D 0000000E 0000000F 00000010 00000011 00000012 00000013 00000014 00000015 00000016 00000017

Izvrna sekvenca
00000041 0000000C 00000000 00000042 0000000A 00000000 50900000 00000002 30900000 FFFFFFFE 20313200 40900000 00000008 42900000 00000003 02313231 30000000 FFFFFFF8 02323132 30000000 FFFFFFF5 00310030 00000000 303F0000

Komentar
primer SABERI 0C,0,R1

SABERI

0A,0,R2

POZOVI kraj nzd SKOI UPOREDI SKOI_ZA_= SKOI_ZA_< vee ODUZMI SKOI ODUZMI SKOI SABERI SKOI

nzd kraj R1,R2 kraj manje R1,R2,R1 nzd R2,R1,R2 nzd R1,0,R0 R15

manje

kraj

Slika 6.4.8 Tabela izvrne sekvence (prve dve kolone u tabeli sadre heksadecimalne brojeve) Lokacija sa logikom adresom 7 izvrne sekvence sa slike 6.4.8 sadri relativnu adresu 2, koja je odreena kao razlika adrese 10 spoljanje labele nzd i za 1 uveane pomenute logike adrese 7: 10-(7+1) Adresa 10 (A16) odreuje poetak ciljne naredbe, a adresa 7+1 odreuje kraj upravljake naredbe. Rad linkera se obino obavlja u dva prolaza. Prvi prolaz je namenjen za formiranje tabele objektnih sekvenci, za relokaciju tabela i za formiranje tabele spoljanjih labela. Drugi prolaz je posveen reavanju problema relokacije i problema spoljnih referenci i stvaranju izvrne sekvence. Redosled objektnih sekvenci u izvrnoj sekvenci zavisi od redosleda u kome se navode objektne datoteke u komandi kojom se pokree linker. Ulazna adresa izvrne sekvence je jednaka ulaznoj adresi njene prve objektne sekvence.

158

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

6.5 LOUDER
Izvravanju programa obavezno prethodi njegovo punjenje, odnosno prepisivanje njegove izvrne sekvence iz izvrne datoteke u radnu memoriju, radi formiranja slike procesa. To podrazumeva i pripremu sadraja graninog i baznog registra, radi pretvaranja logikih adresa u fizike. Postupak pretvaranja logikih adresa u fizike se naziva i dinamika relokacija (dynamic relocation), jer sadraj baznog registra predstavlja konstantu relokacije, koja se u toku izvravanja dinamiki dodaje na logike adrese da bi se formirala fizika adresa. Punilac se javlja kao zaseban program, kada se, na primer, izvrni programi prebacuju sa razvojnog raunara na ciljni raunar, koji nema sistemske programe.

6.6 DIBAGER
Dibager je namenjen za omoguavanje nadgledanja izvravanja programa, radi praenja izmena sadraja lokacija (promenljivih) i otkrivanja ta izaziva pojavu neoekivanih (pogrenih) sadraja u njima. Bez dibagera, praenje izvravanja programa se svodi na prikazivanje sadraja unapred, pre izvravanja programa, odabranih promenljivih. Sa dibagerom je mogue prikazivati sadraje bilo koje promenljive, odabrane u toku izvravanja programa. Dibagiranje se zasniva na mogunosti prekidanja izvravanja programa ili pre izvravanja svake, ili samo pre izvravanja odreene, dinamiki odabrane procesorske naredbe, i to radi aktiviranja dibagera. Po aktiviranju, dibager omoguuje pregledanje zateenih sadraja memorijskih lokacija, registara opte namene i nekih registara posebne namene, na primer, programskog brojaa ili status registra. Dibagiranje se oslanja na poseban korani reim rada procesora (single step). Procesor se nalazi u ovom reimu rada, kada poseban bit traga (trace bit) status registra (na primer, bit SR6 kod procesora KONCEPT) sadri vrednost 1. Ovaj bit se zove bit traga, jer omoguuje praenje traga izvravanja programa. U koranom reimu rada procesora se podrazumeva da dobavljanju svake naredbe prethodi izvravanje mikro-programa izuzetka, radi aktiviranja dibagera koji ima oblik obraivaa izuzetka. Na taj nain, korani reim rada omoguuje nadgledanje izvravanja svake naredbe, kao i praenje izmena sadraja svih ili samo pojedinih lokacija. Za dibagiranje je zgodno da postoji i posebna naredba zamke (trap), ije izvravanje se svodi na izvravanje mikro-programa izuzetka. Izvravanje ove naredbe dovodi do aktiviranja dibagera i bez koranog reima rada procesora. Ovakva naredba ubrzava izvravanje dibagiranog programa, jer omoguuje da aktiviranje dibagera prethodi izvravanju samo pojedinih, a ne svih naredbi. Dibager se aktivira pre izvravanja odabrane naredbe, ako se, na primer, njen mainski oblik dinamiki zameni mainskim oblikom naredbe zamke. Podrazumeva se da, odmah po svom aktiviranju, dibager umesto mainskog oblika naredbe zamke

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

159

vrati prethodno sauvani mainski oblik odabrane naredbe. Umesto privremenih izmena izvrnog oblika programa, dibager moe da smesti adresu odabrane naredbe u neki od posebnih dibagerskih registara. Tada do aktiviranja dibagera dolazi kada sadraj programskog brojaa postane jednak sadraju jednog od dibagerskih registara. Nadgledanje izvravanja programa usmerava korisnik pomou (znakovnih) komandi, upuenih dibageru. Ove komande prevode procesor u korani reim rada, postavljaju zamku na odreeno mesto u programu, prikazuju (uz odgovarajue interpretiranje) sadraj lokacija, ali i zavravaju izvravanje programa.

6.7 PITANJA
1. U emu je razlika izmeu ekranske i unutranje organizacije tekst datoteka (objasniti na primeru)? 2. Koji reimi i podreimi rada editora postoje? 3. Kako editor utie na rad drajvera terminala? 4. ta je leksika analiza? 5. ta je sintaksna analiza? 6. Kako asembler pronalazi sintaksne greke (objasniti na primeru)? 7. Kako se obavlja oporavak od sintaksnih greaka? 8. ta sadri tabela naredbi (objasniti na primeru)? 9. Kada se popunjava tabela naredbi? 10. ta sadri tabela labela (objasniti na primeru)? 11. Kada se popunjava tabela labela? 12. Kako asembler odreuje adrese labela (objasniti na primeru)? 13. Kako nastaje objektna sekvenca (objasniti na primeru)? 14. Kako asembler pronalazi semantike greke (objasniti na primeru)? 15. Koliko prolaza ima asembler i koji su im zadaci? 16. Kako bi radio jednoprolazni asembler? 17. ta je namena ulazne direktive? 18. ta sadre tabela makro imena i tabela makro tela (objasniti na primeru)? 19. Kada makro pretprocesor popunjava tabelu argumenata (objasniti na primeru)? 20. Kako bi radio makro pretprocesor, ako makro definicije ne bi morale da prethode makro pozivima? 21. Zato se makro pretprocesiranje oslanja na rekurzivne pozive (objasniti na primeru)? 22. Kako nastaje problem relokacije (objasniti na primeru)? 23. ta je konstanta relokacije (objasniti na primeru)? 24. Gde se javljaju apsolutne adrese (objasniti na primeru)? 25. Kako se reava problem relokacije (objasniti na primeru)? 26. ta sadri tabela relokacije (objasniti na primeru)? 27. Zato se uvodi relativno adresiranje (objasniti na primeru)?

160

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.

Kako nastaju relativne adrese (objasniti na primeru)? Kada i kako se odreuje relativna adresa iz apsolutne adrese? Zato se javlja problem spoljanjih referenci (objasniti na primeru)? ta sadri tabela nedefinisanih labela (objasniti na primeru)? ta sadri tabela ulaznih labela (objasniti na primeru)? Kada tabela ulaznih labela sadri vie od jednog elementa (objasniti na primeru)? U kakvom odnosu se nalaze tabele nedefinisanih i tabele ulaznih labela (objasniti na primeru)? ta sadri tabela objektnih sekvenci (objasniti na primeru)? Zato se relociraju adrese iz tabela nedefinisanih labela i iz tabela ulaznih labela (objasniti na primeru)? ta sadri tabela spoljanjih labela (objasniti na primeru)? Kako nastaje izvrna sekvenca (objasniti na primeru)? Koliko prolaza ima linker i koji su im zadaci? Da li jednoprolazni asembler deo svog posla moe da prepusti linkeru? Ko obavlja statiku relokaciju, a ko obavlja dinamiku relokaciju? Gde se nalazi konstanta relokacije u toku obavljanja dinamike relokacije? Kako se izvravaju programi u koranom reimu rada procesora (objasniti na primeru)? Kakvu ulogu ima bit traga? Zato je uvedena naredba zamke? Kakvu ulogu imaju dibagerski registri? Da li je bolji pristup dibagiranju, zasnovan na korienju naredbe zamke, ili pristup koji se oslanja na dibagerske registre?

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

161

7. ARHITEKTURA RAUNARA
7.1 PRECIZIRANJE POJMA ARHITEKTURE RAUNARA
Arhitektura raunara obuhvata arhitekturu naredbi i organizaciju i izvedbu raunara. U nadlenosti arhitekture naredbi se nalazi potpun opis procesora, koga sainjavaju opisi: 1. skupa naredbi, 2. vrsta operanada, 3. naina adresiranja, 4. adresnog prostora, 5. memorijskih lokacija i 6. registara raunara. Skup naredbi sadri: 1. naredbe prenosa podataka, 2. naredbe za rukovanje bitima, 3. aritmetike naredbe, 4. upravljake naredbe, 5. sistemske naredbe (kao to je, na primer, naredba sistemskog poziva) i 6. ulazno-izlazne naredbe. Vrste operanada odreuju predstave vrednosti podranih tipova podataka, kao to su: 1. celi tip, 2. realni tip (floating-point), 3. znakovni tip i 4. logiki tip. U okviru naina adresiranja opisuju se naini pristupanja operandima, koji su: 1. ili neposredno deo naredbe, 2. ili se nalaze direktno u registrima i memorijskim lokacijama, 3. ili im se pristupa posredstvom adresa, smetenih u registre i memorijske lokacije, uz eventualno automatsko modifikovanje pomenutih adresa. Za adresni prostor su bitne vrste i raspon adresa memorijskih lokacija, za memorijske lokacije je bitna njihova veliina, a za registre su bitni njihov broj, veliina i namena. Organizacija raunara se bavi principijelnim ostvarenjem funkcionalnosti raunara, odnosno utvrivanjem vrsta organizacionih komponenti raunara, njihovih osobina i naina njihovog kombinovanja. Kao organizacione komponente raunara javljaju se procesor, radna memorija, masovna memorija, kontroleri,

162

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

ulazni i izlazni ureaji, sabirnica, ali i sistemski programi, poput operativnog sistema ili kompajlera. Izvedba raunara obuhvata reavanje tehnolokih i proizvodnih problema, kao to su, na primer, problemi projektovanja i proizvodnje logikih kola, ali i problemi projektovanja i proizvodnje sistema za napajanje, sistema za rashlaivanje i slino.

7.2 POKRETAI RAZVOJA ARHITEKTURE RAUNARA


Arhitektura raunara uvek odraava njegovu namenu, ali tako da upotrebljena tehnologija bude iskoriena na najcelishodniji nain. Zbog toga je, prilikom oblikovanja arhitekture raunara, izbor tehnikih reenja uvek podreen optimizaciji, iji cilj je ostvarenje najpovoljnijeg odnosa funkcionalnosti raunara i njegovih proizvodnih trokova (koji predstavljaju priblino dve treine njegove maloprodajne cene). Proizvodni trokovi raunara se sastoje od direktnih trokova, nastalih u toku proizvodnih aktivnosti preduzea i od indirektnih trokova, nastalih u toku preostalih (neproizvodnih) aktivnosti preduzea. Direktni trokovi su vezani za pravljenje svakog raunara i obuhvataju cenu komponenti, trokove rada, trokove garancije i slino. U indirektne trokove spadaju trokovi istraivanja i razvoja, trokovi marketinga, trokovi prodaje, trokovi odravanja proizvodnih pogona, ali i porezi, dobit, kamate na kredite i slino. Iako indirektni trokovi nisu direktno vezani za pravljenje pojedinih raunara, oni optereuju cenu svakog raunara, jer se ravnomerno rasporeuju po svakom proizvedenom raunaru. Sniavanje cene raunara je vezano za smanjenje proizvodnih trokova. Obaranje direktnih proizvodnih trokova je posledica tehnolokog napretka koji izazove sniavanje cene komponenti ili omogui vii stepen automatizacije proizvodnje i tako dovede do smanjenja trokova rada. Nia cena raunara stvara uslove za njegovu primenu u novim oblastima, a tada, zbog irenja trita, dolazi do poveanja proizvodnje raunara. Znaajnije poveanje proizvodnje ima dvostruke posledice. S jedne strane, ono uzrokuje dodatno sniavanje cene, jer se indirektni trokovi raspodeljuju na vei broj proizvedenih raunara, pa manje optereuju cenu svakog od njih. Sa druge strane, ono obezbeuje dodatna sredstva za istraivanje i razvoj, jer smanjenje udela indirektnih trokova u ceni pojedinog raunara ne mora biti proporcionalno poveanju proizvodnje. Pomenuto dodatno sniavanje cene raunara i tehnoloki napredak, izazvan intenziviranjem istraivanja i razvoja, dovode do novog ciklusa irenja trita raunara sa ve opisanim posledicama. Opisana pozitivna povratna sprega izmeu sniavanja cena i proirenja trita raunara predstavlja snaan zamajac razvoja. Pojava prvog elektronskog raunara opte namene, podesnog ne samo za numerike, nego i za poslovne obrade, predstavlja polaznu taku prethodno opisane razvojne povratne sprege, zasnovane na brzom napredovanju poluprovodnikih tehnologija. Ova povratna sprega je uzrokovala buran razvoj raunara, odnosno

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

163

dovela je do brze evolucije arhitektura raunara. U ovoj knjizi se, zato, pojam raunar odnosi na elektronski raunar opte namene, a evolucija arhitektura raunara se prati od pojave prvog elektronskog raunara opte namene, proizvedenog za trite.

7.3 PITANJA
1. 2. 3. 4. 5. 6. 7. 8. ta se nalazi u nadlenosti arhitekture naredbi? Koje su tipine vrste naredbi? Koje su tipine vrste operanada? Koji su tipini naini pristupanja operandima? Koja svojstva karakteriu adresni prostor? Koja svojstva karakteriu registre procesora? Koje su tipine organizacione komponente raunara? Na koje vrste trokova se dele proizvodni trokovi raunara i ta oni obuhvataju? 9. Kako dolazi do sniavanja cene raunara? 10. Koja povratna sprega predstavlja zamajac razvoja raunara?

164

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

8. EVOLUCIJA ARHITEKTURE RAUNARA


8.1 PERIODI EVOLUCIJE
Razvoj arhitekture raunara je prolazio kroz vie evolucionih faza. One se vezuju za periode dominacije pojedinih od poluprovodnikih tehnologija, iji razvoj je izazvao evoluciju arhitekture raunara. Evolucione faze priblino obuhvataju prelaze izmeu decenija, raunajui od pojave prvog elektronskog raunara opte namene, proizvedenog za trite. One predstavljaju osnovu za podelu raunara u generacije, pri emu se smatra da raunari, proizvedeni u okviru jedne evolucione faze, pripadaju istoj generaciji. Podela raunara u generacije je uslovna, jer su u svakoj od evolucionih faza postojala preklapanja izmeu dominantne (zrele) i nastupajue poluprovodnike tehnologije (iji vrhunac je tek nailazio). Prema tome, u okviru istih generacija raunara meali su se uticaji raznih poluprovodnikih tehnologija. Pored toga, usavravanje svake od ovih tehnologija se na slian nain odraavalo na arhitekturu raunara, to znai da su razne generacije raunara prolazile kroz sline razvojne cikluse.

8.2 PERIOD OKO 1950. GODINE


U 1951. godini na trite Sjedinjenih Amerikih Drava isporuen je prvi elektronski raunar opte namene, nazvan UNIVAC I (UNIVersal Automatic Computer). Njegovi autori J. Presper Eckert i John W. Mauchly su prethodno predvodili grupu sa Pensilvanija univerziteta, koja je 1946. godine zavrila prvi elektronski raunar opte namene. Ovaj raunar je nazvan ENIAC (Electronic Numerical Integrator And Calculator). Njegova radna memorija je sadrala samo obraivane podatke, dok su programi runo zadavani posredstvom upravljake table. Nameru prethodno pomenute grupe da napravi raunar sa radnom memorijom predvienom za smetanje i programa i podataka opisao je 1945. godine njen lan John von Neumann. On je opisani raunar nazvao EDVAC (Electronic Discrete Variable Automatic Computer). U 1946. godini John von Neumann je, kao koautor, objavio opis usavrene verzije raunara sa radnom memorijom predvienom za smetanje i programa i podataka, kasnije nazvanog IAS (po nazivu institucije Institute for Advanced Study Prinston univerziteta, u okviru koje je pomenuti opis nastao). U ova dva rada su izloeni sutinski principi funkcionisanja elektronskih raunara opte namene sa radnom memorijom predvienom za smetanje i programa i podataka. Prvi ovakav (u punom obimu funkcionalan) raunar, pod imenom EDSAC (Electronic Delay Storage Automatic Calculator), napravila je u Velikoj Britaniji 1949. godine grupa sa Kembrid univerziteta, koju je predvodio Maurice Wilkes. U 1953. godini IBM (International Business Machines Corporation, tada vodei proizvoa poslovne opreme, prisutan na tritu od 1896. godine) isporuio

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

165

je na trite Sjedinjenih Amerikih Drava svoj prvi elektronski raunar opte namene pod imenom IBM 701. Prethodno, u 1944. godini, IBM je napravio prvi elektro-mehaniki raunar opte namene, nazvan MARK I. Idejni tvorac projekta ovoga, kao i kasnije napravljena 3 raunara, nazvana MARK II, MARK III i MARK IV, je Howard Aiken sa Harvard univerziteta. Poslednja dva modela su bili elektronski raunari opte namene sa razdvojenim radnim memorijama za programe i za podatke. Ovakav pristup je, po mestu nastanka, nazvan harvardska arhitektura. Na slici 8.2.1 je prikazana hronologija vanih dogaaja za razvoj raunara.
MARK I EDVAC ENIAC EDSAC UNIVAC I IBM 701

1944

1945

1946

1949

1951

1953

Slika 8.2.1 Hronologija vanih dogaaja za razvoj raunara UNIVAC I i IBM 701 pripadaju raunarima prve generacije, ija tipina organizacija je prikazana na slici 8.2.2.

ULAZNI UREAJ

RADNA MEMORIJA

PROCESOR

MASOVNA MEMORIJA

IZLAZNI UREAJ

Slika 8.2.2 Tipina organizacija raunara prve generacije Upravljake, adresne i linije podataka povezuju procesor i preostale organizacione komponente raunara prve generacije sa slike 8.2.2. Procesori prve generacije raunara su izraivani u tehnologiji elektronskih cevi (elektronska cev trioda je napravljena 1906. godine). Radne memorije su zasnivane na raznim tehnologijama, pa su tako koriene, na primer, i elektrostatike radne memorije, kod kojih su naelektrisanja taaka na ekranu katodne cevi predstavljala binarne vrednosti. Jedinice magnetnih traka su koriene kao masovne memorije. itai

166

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

buenih traka ili kartica su predstavljali ulazne ureaje, a na mestu izlaznih ureaja su se nalazili buai traka i kartica, kao i tampai. Centralni poloaj procesora u organizaciji je imao za posledicu da bez njegovog uea nije bio mogu prenos podataka izmeu bilo koje dve organizacione komponente raunara prve generacije. Za prenos podataka izmeu radne memorije, sa jedne strane, i ulaznih i izlaznih ureaja, odnosno, masovne memorije, sa druge strane, postojale su posebne ulazno-izlazne naredbe. Radi njih, ukupan adresni prostor raunara je podeljen na memorijski adresni prostor, kome su pripadale samo lokacije radne memorije, i na ulazno-izlazni adresni prostor, kome su pripadale samo lokacije koje su predstavljale ulazne i izlazne ureaje, odnosno jedinice masovne memorije. Prema tome, ista adresa je oznaavala dve lokacije, zavisno od toga da li je interpretirana kao adresa memorijskog ili adresa ulazno-izlaznog adresnog prostora. Druga interpretacija adresa je bila mogua samo u okviru ulazno-izlaznih naredbi. Raunari prve generacije su bili namenjeni prevashodno za numerike proraune, kao to su, na primer, raunanja tablica trigonometrijskih funkcija. Ipak, oni nisu podravali aritmetiku pomine take (floating-point arithmetic), jer je ona bila suvie komplikovana za tehnologiju elektronskih cevi. Oni, takoe, nisu podravali ni potprograme, a ni rukovanje elementima nizova. Identina obrada uzastopnih elemenata niza je zahtevala ponavljanje modifikacija mainskih naredbi programa, radi pripremanja u mainskim naredbama adresa lokacija radne memorije sa vrednostima pojedinih elemenata. Raunari prve generacije su korieni na interaktivan nain, pri emu su programeri, posredstvom upravljake table, bili u neposrednoj komunikaciji sa raunarom za vreme izvravanja svojih programa. Programeri su u poetku bili upueni na korienje mainskog jezika, a kasnije i na korienje asemblerskog jezika. Ve kod raunara prve generacije brzinu procesora, odnosno broj izvrenih mainskih naredbi u jedinici vemena, ograniavala je samo raspoloiva tehnologija, dok je brzinu radne memorije, odnosno broj pristupa njenim lokacijama u jedinici vremena ograniavala cena raspoloivih tehnologija. Primena najskuplje tehnologije je bila i ostala prihvatljiva kod procesora, ali ne i kod radne memorije, jer je procesor sastavljen od neuporedivo manje komponenti nego radna memorija. To znai da se ve kod raunara prve generacije javila ozbiljna disproporcija izmeu brzine procesora i brzine radne memorije (da se i ne pominje disproporcija brzine procesora i brzine ostalih, mehaniki zasnovanih organizacionih komponenti raunara prve generacije). Ozbiljna mana raunara prve generacije je bila njihova slaba iskorienost. Nju su uzrokovali: 1. interaktivni nain rada (dok je programer ispravljao greke u svom programu, raunar je bio uglavnom neiskorien), 2. modifikovanje programa u toku njihovog izvravanja (to je zahtevalo punjenje programa pre svakog novog izvravanja) i

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

167

3.

uee procesora u prenosu svakog podatka izmeu bilo koja dve organizacione komponente raunara prve generacije (u toku ega je, zbog radnog ekanja, procesorsko vreme neracionalno korieno).

8.3 PERIOD OKO 1960. GODINE


Tehnoloku osnovu raunara druge generacije su inili diskretni poluprovodnici i magnetne jezgrice (magnetic core). Tranzistori su napravljeni 1948. godine, a magnetne jezgrice su napravljane 1949. godine. Diskretni poluprovodnici su istisnuli elektronske cevi, jer su imali niu cenu, bili manji, bri i pouzdaniji, a imali su i manju potronju energije i manje toplotno zraenje. Magnetne jezgrice su istisnule do tada koriene memorijske tehnologije, jer su omoguile pravljenje veih i pouzdanijih radnih memorija po nioj ceni. U tehnologiji magnetnih jezgrica binarne vrednosti su predstavljala dva stanja magnetizacije prstena, napravljenog od magnetnog materijala, kroz koji su prolazili elektrini provodnici. Na slici 8.3.1 je prikazana principijelna organizacija radne memorije, zasnovane na magnetnim jezgricama.
bit1 bit2

re1

re2

re3

Slika 8.3.1 Principijelna organizacija radne memorije, zasnovane na magnetnim jezgricama Slika 8.3.1 sadri primer radne memorija sa 3 rei od po 2 bita. Svaki bit je predstavljen jednom magnetnom jezgricom. Selekciju rei omoguuju provodnici rei, a pisanje i itanje bita omoguuju provodnici bitj. Pisanje jedinice u bit j rei i je podrazumevalo prevoenje odgovarajue magnetne jezgrice u eljeno magnetno stanje. Do toga je dolazilo ako se i kroz provodnik rei i kroz provodnik bitj u zadanom smeru propusti struja, ija jaina je bila jednaka polovini vrednosti

168

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

neophodne za eljenu magnetizaciju. itanje ovako predstavljenih bita rei i se sastojalo od proputanja struje magnetizacije kroz provodnik rei u suprotnom smeru od onog koji je korien za pisanje i od interpretacije stanja provodnika bit j. U ovim provodnicima se indukovala struja, ako se pri itanju menjalo stanje magnetizacije magnetne jezgrice, pa je itanje bilo destruktivno. Ovakvu memoriju je karakterisalo ne samo vreme pristupa lokaciji (access time), nego i vreme u kome su se mogla napraviti ovakva dva uzastopna pristupa, a koje je nazvano vreme ciklusa (cycle time). Vremenu pristupa je odgovaralo vreme koje protekne izmeu postavljanja zatheva za pristupom i obavljanja eljenog pristupa, na primer, vreme izmeu postavljanja zahteva za itanjem lokacije i dobijanja njenog sadraja. Vreme ciklusa je bilo due od vremena pristupa, jer je ukljuivalo i obnovu sadraja, eventualno ponitenog pri itanju lokacije. To znai da je do novog pristupa lokaciji memorije dolazilo tek nakon obnove sadraja prethodno proitane lokacije. Primena poluprovodnike tehnologije je omoguila pojavu nove vrste organizacionih komponenti raunara, nazvanih kontroleri, specijalizovanih za pojedine poslove, kao to je, na primer, upravljenje ulaznim i izlaznim ureajima ili jedinicama masovne memorije. Sloenost kontrolera je zavisila od njihove uloge. Tako, na primer, najjednostavniji kontroleri su samo multipleksirali linije, dok su najsloeniji kontroleri upravljali nizom ulaznih i izlaznih ureaja ili jedinica masovne memorije. U drugom sluaju, kontroleri su imali oblik jednostavnijih procesora, posveenih odreenom zadatku. Zato su ovakvi kontroleri nazivani i procesori posebne namene (input output processor), a njihove osobine su bile u potpunosti podreene njihovom zadatku. Na primer, u skupu naredbi ovakvih kontrolera su se nalazile: 1. upravljake naredbe, 2. naredbe za upravljanje pojedinim ulaznim i izlaznim ureajima ili jedinicama masovne memorije (poput naredbe za premotavanje magnetne trake) i 3. naredbe za prenos podataka izmeu radne memorije i ulaznog ili izlaznog ureaja, odnosno jedinice masovne memorije. Procesori posebne namene nisu, za razliku od procesora opte namene, bili predvieni, pa ni raspoloivi za izvravanje korisnikih programa. Tipina organizacija raunara druge generacije je prikazana na slici 8.3.2.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

169

ULAZNI UREAJ

...

IZLAZNI UREAJ

MASOVNA MEMORIJA

...

MASOVNA MEMORIJA

KONTROLER ulaznih i izlaznih ureaja

PROCESOR

KONTROLER masovne memorije

KONTROLER (multiplekser) radne memorije

RADNA MEMORIJA

Slika 8.3.2 Tipina organizacija raunara druge generacije Na slici 8.3.2 isprekidane linije odgovaraju upravljakim linijama, a pune linije odgovaraju upravljakim, adresnim i linijama podataka. Kontroler radne memorije je bio zaduen samo za multipleksiranje linija. Na mestu kontrolera ulaznih i izlaznih ureaja i kontrolera masovne memorije su se nalazili procesori posebne namene. Oni su ravnopravno pristupali radnoj memoriji, kao i procesor opte namene. Zahvaljujui tome, procesor opte namene je u radnoj memoriji mogao da ostavi ulazno-izlazni program, namenjen za procesor posebne namene i da pokrene njegovu aktivnost, zaustavljajui svoju aktivnost dok traje aktivnost procesora posebne namene. Osobine raunara druge generacije su zavisile od toga da li su bili namenjeni za poslovne obrade, kao, na primer, IBM 1401, ili za numerike obrade, kao, na primer, IBM 7094. U drugom sluaju, procesori su podravali aritmetiku pomine take. Takoe, postojala je i podrka za potprograme, a potreba za modifikovanjem programa je izbegnuta uvoenjem indeksnog naina adresiranja, kod koga su (efektivne) adrese, na primer, elemenata niza, odreivane u toku izvravanja naredbi sabiranjem nepromenljivog dela adrese, sadranog u mainskom formatu izvravane naredbe, i promenljivog dela adrese, sadranog u indeksnom registru. Kod raunara druge generacije je postojala arenolikost u pogledu broja adresa u okviru mainskih formata naredbi. Zavisno od raunara, broj adresa je varirao od 3 do 0. Ako je u mainskom formatu naredbe bio predvien prostor za 3 adrese, tada su se u naredbama, kao to je naredba sabiranja, mogli izriito oznaiti i ulazni operandi sa 2 sabirka i izlazni operand, namenjen za zbir. U suprotnom

170

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

sluaju, ako je bilo predvieno manje adresa, za neke od operanada se podrazumevalo da se nalaze u predodreenim lokacijama. Tako, za naredbe sabiranja kod dvo-adresnih raunara se podrazumevalo da jedan operand odgovara jednom sabirku, a da drugi operand odgovara drugom sabirku do obavljanja operacije i zbiru nakon obavljanja operacije. Za naredbe sabiranja jedno-adresnih raunara se podrazumevalo da se jedan od sabiraka nalazi u posebnom registru procesora, nazvanom akumulator, gde se smetao (akumulirao) i zbir. Ili, za naredbe sabiranja nula-adresnih raunara se podrazumevalo da se oba sabirka nalaze na vrhu steka, gde se odlagao i zbir. Za jedno-adresne raunare, kao to je bio, na primer, IBM 7094, vezan je pojam akumulatorske arhitekture (accumulator architecture), a za nula-adresne raunare, kao to je bio, na primer, Burroughs B5000, vezan je pojam stek arhitekture (stack architecture). Skup naredbi raunara sa akumulatorskom arhitekturom obavezno je sadrao i naredbe za rukovanje akumulatorima, a skup naredbi raunara sa stek arhitekturom obavezno je sadrao i naredbe za rukovanje stekom. Smanjenje broja adresa u mainskom formatu naredbe je smanjivalo veliinu memorije, potrebne sa smetanje mainskih naredbi, ali je, istovremeno, uzrokovalo i poveanje broja mainskih naredbi u programu, jer su bile neophodne dodatne mainske naredbe, na primer, za smetanje podrazumevajuih operanada u akumulator ili u stek. Prema tome, efekat smanjenja broja adresa u mainskim formatima naredbi je ponitavalo poveanje broja mainskih naredbi u programu. Za raunare druge generacije je vezana pojava programskih jezika visokog nivoa, kao to su: 1. FORTRAN (FORmula TRANslation, iji razvoj je od 1954. do 1957. godine obavila grupa koju je predvodio John Backus, a koju je finansirao IBM) i 2. COBOL (COmmon Business Oriented Language, iju specifikaciju, zavrenu 1959. godine, je nadzirao CODASYL, Conference On DAta SYstems Languages). Programski jezici visokog nivoa su ponudili uopteni programski model raunara (druge generacije) i tako omoguili njihovo programiranje bez poznavanja detalja njihovog funkcionisanja. Programski jezici visokog nivoa su zahtevali postojanje kompajlera, koji su programe, pisane programskim jezicima visokog nivoa, prevodili u mainski oblik. Zahvaljujui kompajlerima, programi, pisani programskim jezicima visokog nivoa, su postali prenosivi sa raunara na raunar. Takoe, pojavile su se biblioteke esto korienih potprograma i linkeri, namenjeni za spajanje nezavisno kompiliranih programa i potprograma. Ograniena veliina radne memorije raunara druge generacije je terala programere da samo deo izvravanog programa i samo deo obraivanih podataka dre u radnoj memoriji, a ostatak u masovnoj memoriji. Radi toga su razvijene i posebne tehnike za preklapanje (overlaying) delova programa, ije istovremeno prisustvo u radnoj memoriji nije bilo potrebno. Na ovaj nain radna i masovna

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

171

memorija su tretirani kao dva nivoa memorijske hijerarhije, kojom je upravljao korisniki program, tako to je inicirao prebacivanje svojih delova sa jednog nivoa memorijske hijerarhije na drugi. Na slici 8.3.3 su prikazani primeri preklapanja.
MASOVNA MEMORIJA PROGRAM POTPROGRAM 1 RADNA MEMORIJA PROGRAM POTPROGRAM 1 RADNA MEMORIJA PROGRAM POTPROGRAM 3 RADNA MEMORIJA PROGRAM

POTPROGRAM 4

POTPROGRAM 2

POTPROGRAM 2

... ...
POTPROGRAM 3

...

POTPROGRAM 4

...
Slika 8.3.3 Primeri preklapanja potprograma u radnoj memoriji Oslanjanje samo na programske jezike visokog nivoa, i iz toga proizalo nepoznavanje detalja funkcionisanja raunara druge generacije, je onemoguilo programere da ove raunare koriste na interaktivan nain, uobiajen za raunare prve generacije. To je imalo za posledicu da je nestao jedan od uzroka neracionalnog korienja raunarskog vremena. Umesto interaktivnog naina rada, za raunare druge generacije je uvedena praksa da programeri svoje programe, pripremljene na buenim karticama, predaju operaterima (osoblju, zaduenom za opsluivanje raunara). Operateri bi prikupljene programe jedan za drugim putali na izvravanje (batch processing), a rezultate njihovog izvravanja, na primer, u obliku tampanih izvetaja, zajedno sa buenim karticama, vraali programerima. Na ovaj nain, raunar je bio zaposlen dok god je bilo korisnikih programa, spremnih za izvravanje. Radi podrke ovakvog naina rada, razvijeni su i prvi operativni sistemi (batch monitor, batch system). Njihove mogunosti su bile vrlo skromne i dozvoljavale su, na primer, samo kompilaciju programa, kao i punjenje i izvravanje njegovog mainskog oblika.

172

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Raunari druge generacije nisu koristili potencijalni paralelizam u radu procesora opte i posebne namene, jer je procesor opte namene, nakon pokretanja procesora posebne namene, zaustavljao svoju aktivnost do zavretka rada procesora posebne namene, pa vreme procesora opte namene nije bilo najbolje korieno. To je, zbog njihove visoke cene, bilo nedopustivo. Pored toga, neinteraktivni nain rada je ozbiljno umanjio produktivnost programera, koji su esto dugo ekali izmeu predavanja kartica sa svojim programom i dobijanja rezultata njegovog izvravanja. Na kraju, upravljanje memorijskom hijerarhijom je bio suvian, a i preteak posao za mnoge programere.

8.4 PERIOD OKO 1970. GODINE


Tehnoloku osnovu raunara tree generacije su inila integrisana kola (integrated circuit) i magnetni diskovi (magnetic disk). Tehnologija integrisanih kola je omoguila smetanje minijaturnog elektronskog kola, sastavljenog od nekoliko tranzistora, kondenzatora, dioda ili otpornika, na povrinu silikonske ploice. Ovakva ploica, upakovana u zatitni omota sa kontaktnim izvodima, je nazvana ip (chip). Ova tehnologija je istisnula tehnologiju diskretnih poluprovodnika, zbog nie cene, vee brzine i vee pouzdanosti, a manje potronje energije i manjeg toplotnog zraenja. Primena tehnologije integrisanih kola je izazvala snienje cene, izmeu ostalog, zato to je omoguila automatizaciju proizvodnje. Pojava magnetnih diskova nije oznaila kraj, nego samo izmenu naina upotrebe magnetnih traka. One su i dalje koriene za arhiviranje podataka, kao i za prenoenje podataka sa raunara na raunar, znai za poslove kod kojih je sekvencijalni pristup podacima bio zadovoljavajui. U svim ostalim sluajevima, kod kojih je mogunost nesekvencijalnog pristupa bila vana, odnosno kod kojih je bilo bitno da pristup podacima bude to bri, magnetni diskovi su istisnuli magnetne trake, tako da je jedinica magnetnog diska postala sinonim za masovnu memoriju. Primena tehnologije integrisanih kola je omoguila proizvoaima raunara tree generacije da znatno poprave odnos cene i funkcionalnosti (price/performance) svojih proizvoda. To se moglo postii zadravanjem iste funkcionalnosti, uz smanjenje cene, ili poboljanjem funkcionalnosti uz zadravanje cene. Jedna grupa proizvoaa raunara tree generacije je pomenuti odnos popravila pre svega poboljavanjem funkcionalnosti svojih proizvoda, dok se druga grupa proizvoaa odluila za skromniju funkcionalnost, ali i za znatno niu cenu svojih proizvoda. Kao rezultat prvog pristupa nastali su veliki raunari (mainframe), a kao rezultat drugog pristupa nastali su mini-raunari (minicomputer). Pomenuti nazivi su bili posledica, ne samo injenice da su cene i mogunosti mini-raunara predstavljale samo deli cene i mogunosti velikih raunara, nego i injenice da su fizike dimenzije mini-raunara bile znatno manje od fizikih dimenzija velikih raunara. Tako, na primer, procesor mini-raunara je

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

173

mogao da stane na jednu tampanu plou (printed-circuit board), dok je procesor velikog raunara zauzimao vie tampanih ploa. Za pojavu velikih raunara je vezana ideja familije raunara. Svi raunari iz jedne familije su imali istu osnovnu arhitekturu naredbi, ali su se razlikovali po ceni i po mogunostima, kao to su brzina rada procesora, veliina radne i masovne memorije, ili broj ulaznih i izlaznih ureaja. Familija raunara je omoguila korisnicima da u nabavci raunara krenu od modela sa najniom cenom i sa najmanjim mogunostima i da kasnije, u skladu sa poveanjem svojih potreba, bez tekoa preu na skuplje i monije modele. Ideja familije raunara je olakala i posao standardizacije, pa je zato imala pozitivan uticaj i na proizvodnju raunara. Zahvaljujui upravo ideji familije raunara i ogromnom trinom uspehu modela iz familije velikih raunara IBM 360/370, namenjenih i za poslovne i za numerike obrade, IBM je postao vodei proizvoa raunara uopte. Za razliku od velikih raunara, okrenutih tritu poslovnih i numerikih obrada, mini-raunari su prve primene nali u upravljanju industrijskim procesima, jer su mogli da im budu u potpunosti posveeni, zahvaljujui svojoj niskoj ceni. Ovakve primene su podrazumevale vezivanje za mini-raunare raznih ureaja, kao to su senzori ili izvrni organi. Poto nisu mogli da proizvedu svaki od takvih ureaja, za proizvoae mini-raunara je bilo vano da potaknu nezavisnu proizvodnju pomenutih ureaja za svoje mini-raunare. Takoe, poto nisu mogli ni da pripreme poseban model mini-raunara za svaku od raznovrsnih primena, za proizvoae mini-raunara je bilo vano da korisnici samostalno prilagoavaju mini-raunare svojim potrebama. I jedno i drugo je omogueno zahvaljujui pristupu otvorene arhitekture (open architecture). Ovaj pristup se zasnivao na publikovanju potpune specifikacije sabirnice, namenjene za povezivanje svih preostalih organizacionih komponenti mini-raunara. Na taj nain, nezavisni proizvoai su mogli da prave nove organizacione komponente mini-raunara, odnosno da prave sopstvene kontrolere, posredstvom kojih su njihovi ureaji mogli da budu zakaeni na sabirnicu i da tako budu ugraeni u mini-raunar. Takoe, korisnici su mogli samostalno da nabavljaju organizacione komponente miniraunara od raznih proizvoaa i da od njih sklapaju sopstveni mini-raunar. Zahvaljujui, izmeu ostalog, i ovakvom pristupu, familija mini-raunara PDP-11 (Programmed Data Processor), organizovana oko sabirnice, nazvane Unibus, je doivela veliki trini uspeh, a njen proizvoa, DEC (Digital Equipment Corporation), je postao vodei proizvoa mini-raunara. Tipina organizacija mini-raunara je prikazana na slici 8.4.1.

174

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

JEDINICE MASOVNE MEMORIJE

ULAZNO IZLAZNI UREAJI

PROCESOR

RADNA MEMORIJA

KONTROLER

KONTROLER

SABIRNICA

Slika 8.4.1 Tipina organizacija mini-raunara Sabirnica se sastojala od upravljakih, adresnih i linija podataka, namenjenih za meusobno povezivanje pojedinih parova organizacionih komponenti raunara, koji su za nju zakaeni. Jedinice masovne memorije su obuhvatale i jedinice magnentih diskova i jedinice magnetnih traka. Ulazno-izlazni ureaji su obuhvatali itae buenih kartica ili traka, tampae, ali i terminale, namenjene za dvosmernu komunikaciju sa raunarom. Izmeu kontrolera su postojale velike razlike, na primer, po broju ureaja koje su opsluivali, ili, na primer, po tome da li su imali DMA svojstva. Poboljanje odnosa cene i funkcionalnosti raunara tree generacije je imalo za posledicu da je vreme programera postalo dragocenije od vremena raunara, pa se prirodno nametnulo pitanje kako funkcionalnost raunara tree generacije podrediti potrebama poveanja produktivnosti programera. To se, pre svega, moglo postii pronalaenjem naina za interaktivno korienje raunara tree generacije, da bi programeri mogli da nadgledaju izvravanja svojih programa i da tako u njima bre otkrivaju i otklanjaju greke. Racionalnijem troenju programerskog vremena je doprinosila i automatizacija upravljanja raunarom, kao to je automatizacija upravljanja memorijskom hijerarhijom. Na produktivnost asemblerskih programera, iji broj u periodu oko 1970. godine uopte nije bio zanemarljiv, povoljno je uticalo i proirenje arhitekture naredbi novim naredbama, radi pribliavanja izraajnosti asemblerskih naredbi iskazima programskih jezika visokog nivoa. Izraajnost asemblerskih naredbi se pribliavala iskazima programskog jezika visokog nivoa na sledee naine: 1. proirenjem skupa naredbi, radi pokrivanja ne samo optih, nego i posebnih sluajeva, 2. podrkom veeg broja tipova podataka, 3. poveanjem raspoloivih naina adresiranja i 4. omoguavanjem slobodnijeg kombinovanja naina adresiranja u okviru naredbi, tako da svi operandi mogu biti u registrima (register-register

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

175

architecture), u memorijskim lokacijama (memory-memory architecture) i tako dalje. Ovakav pristup je doveo do CISC (Complex Instruction Set Computer) raunara sa veoma kompleksnom arhitekturom naredbi. Za upravljanje njihovim procesorima je bilo potrebno generisati mnotvo sekvenci raznih kombinacija upravljakih signala. To se praktino nije moglo ostvariti pomou oiene (hardwired) upravljake jedinice (slika 8.4.2), zbog njene preterane kompleksnosti i previsoke cene.
povratno stanje upravljake jedinice (iz status registra) kombinacija upravljakih signala sledee stanje upravljake jedinice

takt poetno stanje upravljake jedinice (iz registra naredbi) upravljaka jedinica

Slika 8.4.2 Organizacija oiene upravljake jedinice Za upravljanje CISC procesoprioma upotrebljena je mikro-programska (microprogrammed) upravljaka jedinica. Vano je uoiti da je duina ciklusa procesora zavisila od duine ciklusa mikro-programske memorije njegove mikroprogramske upravljake jedinice, jer se preuzimao sadraj jedne od lokacija ove memorije u svakom od procesorskih ciklusa. Mikro-programsku upravljaku jedinicu je predloio Maurice Wilkes jo 1951. godine, ali je njena prva pojava na tritu vezana za raunare IBM 360/370 familije, jer su tek tada sazreli tehnoloki uslovi za njenu upotrebu. Prve mikroprogramske upravljake jedinice raunara tree generacije su se oslanjale na mikroprogramsku memoriju nepromenljivog sadraja (ROM, Read Only Memory), koja je imala oblik diodne matrice. Vreme pristupa i vreme ciklusa ovakve memorije se nisu razlikovali i bili su dovoljno kratki, posmatrano sa stanovita duine procesorskog ciklusa. Primena mikro-programske upravljake jedinice je omoguila veliku fleksibilnost raunara, jer je za izmenu funkcionalnosti raunara bilo dovoljno napraviti nove mikro-programe. Ovakva aktivnost je nazvana mikro-programiranje. Mikro-programiranje je omoguilo emulaciju (oponaanje) jednog raunara pomou drugog raunara. Za to je bilo dovoljno napisati interpreter mainskih naredbi prvog raunara u obliku mikro-programa drugog raunara. Pored toga, mikro-programiranje je bilo zasluno i za bolje iskorienje procesorskog vremena, jer su sloenije naredbe i naini adresiranja uticali na smanjenje broja pristupa

176

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

radnoj memoriji i na due angaovanje procesora nakon svakog od pomenutih pristupa (slika 8.4.3).
vreme izvravanja dve naredbe faza faza faza faza dobavljanja izvravanja dobavljanja izvravanja vreme faza dobavljanja faza izvravanja

vreme izvravanja jedne sloenije ekvivalentne naredbe

Slika 8.4.3 Poreenje izvravanja dve naredbe i jedne sloenije ekvivalentne naredbe Smanjenje broja pristupa radnoj memoriji je bilo vano, jer je vreme ciklusa radne memorije, napravljene od magnetnih jezgrica, trajalo kao 10 procesorskih ciklusa, pa je svako pristupanje radnoj memoriji zaustavljalo aktivnost procesora u trajanju od 10 njegovih ciklusa. Zato je, na primer, bilo bolje da se u okviru izvravanja jedne naredbe obradi element niza i pripremi sadraj indeksnog registra za obradu narednog elementa istog niza, nego da se isti posao obavi u toku izvravanja dve naredbe. Ovakvo smanjenje broja naredbi u programu je bilo racionalno i sa stanovita korienja radne memorije. Racionalno korienje radne memorije je bilo vano, jer je tehnologija magnetnih jezgrica praktino ograniavala veliinu radnih memorija. One su esto imale znatno manje lokacija od broja omoguenog adresnim prostorom, ne samo kod velikih raunara sa 24 bitnim adresnim prostorom, kao kod modela iz IBM 360/370 familije, nego i kod mini-raunara sa 16 bitnim adresnim prostorom, kao kod modela iz PDP-11 familije. Radi skraenja programa, formati mainskih naredbi raunara tree generacije su bili promenljive duine. Duina ovih formata je zavisila, ne samo od vrste naredbe, nego i od duine njenih operanada. Za raunare tree generacije, koji su za svaku naredbu vezivali samo jednu kombinaciju naina adresiranja, mainski formati naredbi nisu sadrali posebne kodove naina adresiranja, jer je nain adresiranja mogao biti odreen iz koda naredbe. Ovaj pristup je bio tipian za IBM. U sluaju raunara koji su dozvoljavali kombinovanje raznih naina adresiranja u okviru iste naredbe, mainski format naredbi je obavezno sadrao i kodove naina adresiranja. Ovaj pristup je bio tipian za DEC. Za drugi pristup je bila karakteristina tenja da se omogui ortogonalnost

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

177

(nezavisnost) naredbi i naina adresiranja, odnosno, da se omogui kombinovanje svih naina adresiranja u okviru svake naredbe. Nepovoljna iskustva sa stek i akumulatorskim arhitekturama su uzrokovala da se procesori raunara tree generacije ne oslanjaju na stek ili na akumulatore, nego na registre opte namene. Zato je za ove raunare vezan pojam arhitekture registara opte namene (general purpose register architecture). U mainskom formatu naredbi, adrese registara opte namene su bile ravnopravne adresama lokacija radne memorije, a zahvaljujui promenljivom formatu, naredbe raunara tree generacije su sadrale do 3 ovakve adrese. Radna memorija raunara tree generacije je bila organizovana u 8 bitne bajte. Pored adresiranja svakog bajta, postojala je i mogunost adresiranja rei. Pri tome se javila razlika u pogledu poretka bajta unutar rei (slika 8.4.4).
bajti memorije 0 1 A B little endian re B A 1 0 big endian re A B 0 1

...

Slika 8.4.4 Dva naina organizovanja bajta u rei Po jednom pristupu (nazvanom little endian), bajt sa najviom adresom u rei se nalazio na njenom najznaajnijem mestu, a po drugom pristupu (nazvanom big endian), bajt sa najviom adresom u rei se nalazio na njenom najmanje znaajnom mestu. Prvi pristup je usvojio, na primer, DEC, a drugi, na primer, IBM. Prema tome, prilikom prenosa podataka sa raunara jednog proizvoaa na raunar drugog proizvoaa, bilo je neophodno voditi rauna o poretku bajta u rei. Za raunare tree generacije je vezano objedinjavanje memorijskog adresnog prostora i ulazno-izlaznog adresnog prostora u jedinstven adresni prostor. Ovakav pristup je nazvan memorijski preslikani ulaz izlaz (memory-mapped input output), a prvi ga je primenio DEC. Prednost ovoga pristupa je bila u eliminisanju posebnih ulazno-izlaznih naredbi i u jedinstvenom nainu tretiranja svih lokacija, i onih koje su pripadale radnoj memoriji, ali i onih koje su pripadale kontrolerima. Mana memorijski preslikanog ulaza izlaza je bila u smanjenju broja lokacija u radnoj memoriji, jer je izvestan broj adresa dodeljen registrima kontrolera. Raunari tree generacije su stvorili preduslove za bolju iskorienost procesora, jer su omoguili istovremeni rad procesora i kontrolera (SPOOLing, Simultaneous Peripheral Operation On Line). Znai, nakon pokretanja aktivnosti kontrolera, procesor je mogao nastaviti svoju aktivnost, ako ona nije zavisila od rezultata pokrenute aktivnosti kontrolera. Pri tome su kontroleri koristili mehanizam prekida (interrupt), da bi obavestili procesor o zavretku svoje aktivnosti. Mehanizam prekida je sporadino korien i u pojedinim raunarima prve i druge

178

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

generacije, ali je postao opteprisutan tek u raunarima tree generacije. Da bi aktivnosti procesora i kontrolera uvek bile preklopljene, neophodno je bilo na koristan nain angaovati procesor, kad god je nastavak njegove dotadanje aktivnosti zavisio od rezultata pokrenute aktivnosti kontrolera. Pristup multiprogramiranja (multiprogramming) je ponudio sistematian nain da se procesor uvek dri zaposlen u prethodno opisanoj situaciji. Ideja multiprogramiranja je podrazumevala da se u radnoj memoriji uvek istovremeno nalazi vie meusobno nezavisnih mainskih programa i da se procesor prekljuuje (context switch) sa izvravanja jednog na izvravanje drugog programa, im, u toku izvravanja prvog programa, pokrene aktivnost nekog kontrolera. Prema tome, dok su u radnoj memoriji postojali programi za ija izvravanja nisu bili potrebni rezultati aktivnosti nekog kontrolera, dotle je postojala mogunost da se procesor korisno angauje, nakon to pokrene aktivnost nekog od kontrolera. Ali, istovremeno prisustvo vie programa u radnoj memoriji je stvorilo mogunost za njihove nenamerne ili zlonamerne interakcije. Za takvu interakciju je bilo dovoljno da se u toku izvravanja jednog od programah izmeni sadraj lokacije radne memorije koja je pripadala drugom programu. Zato je uspena primena multiprogramiranja zavisila od postojanja mehanizma zatite, namenjenog da, u toku izvravanja programa, sprei pristupanje lokacijama radne memorije koje nisu dodeljene izvravanom programu. Primer takvog mehanizma zatite predstavlja razlikovanje logikog i fizikog adresnog prostora i korienje graninog i baznog registra za transformaciju logikih adresa u fizike. Pored toga, multiprogramiranje je zahtevalo ili proirenje radne memorije ili njeno racionalnije korienje, da bi ona mogla da prihvati to vie programa, radi to dueg korisnog angaovanja procesora. Broj istovremeno prisutnih programa u radnoj memorji je nazvan stepen multiprogramiranja (degree of multiprogramming). Multiprogramiranje je stvorilo preduslove za ravnomernu raspodelu procesorskog vremena izmeu izvravanja raznih programa (timesharing). Za ovakvu raspodelu jedino je bilo potrebno izazivati prekide u pravilnim vremenskim intervalima, radi prekljuivanja procesora sa jednog programa na drugi. U ovakvim okolnostima, korisnicima su nedostajali jo samo terminali za neposrednu komunikaciju sa sopstvenim ili sistemskim programima, kao to su interpreter komandi ili editor. Ovakva vrsta interaktivnog rada nije zahtevala poznavanje detalja funkcionisanja raunara tree generacije, nego samo poznavanje pravila korienja pojedinih sistemskih programa. Pri tome, zahvaljujui ogromnoj razlici u brzini rada procesora i korisnika, jedan procesor je mogao da opslui vie korisnika, odnosno da, ravnomerno raspodeljujui svoje vreme na svakog od njih, stvori kod korisnika privid da im je raunar potpuno posveen. Ovakva vrsta interaktivnog rada je dovela do rairene upotrebe znakovnih video terminala. Pored toga, ona je omoguila korisnicima da meusobno dele skupe ureaje, kao to su ploteri, na primer, ali je i olakala razmenu programa i podataka izmeu korisnika, to je stvorilo uslove za razne oblike meusobne saradnje korisnika.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

179

Ograniena veliina radne memorije raunara tree generacije, izazvana praktinim razlozima, nije spreila irenje primene multiprogramiranja i interaktivnog rada samo zahvaljujui osobini lokalnosti izvravanja programa, odnosno zapaanju da procesor pristupa samo pojedinim grupama lokacija u toku izvravanja pojedinih delova programa. Praenje izvravanja programa je pokazalo da verovatnoa pristupanja lokacijama programa nije ravnomerna i da je za neke lokacije ubedljivo vea, nego za druge. Tako je zapaeno da, po gruboj proceni, 90% vremena izvravanja programa otpada na izvravanje njegovih 10% naredbi, a slian odnos vai i za pristupanje lokacijama sa podacima. Prostorna lokalnost (spatial locality) izvravanja programa je vezana za izvravanja delova programa u toku kojih procesor pristupa lokacijama sa uzastopnim adresama. Za ove lokacije se, zbog uzastopnih adresa, kae da obrazuju stranicu (page). Prostorna lokalnost je uzrokovana, izmeu ostalog, sekvencijalnim izvravanjem programa i organizovanjem podataka u nizove i slogove. Vremenska lokalnost (temporal locality) izvravanja programa je vezana za izvravanja delova programa u toku kojih procesor ponavlja pristupanje pojedinim lokacijama iz iste stranice. Ova vrsta lokalnosti je uzrokovana, izmeu ostalog, postojanjem petlji (loop) u programima. Osobina lokalnosti izvravanja programa je sugerisala zakljuak da, u toku izvravanja pojedinih delova programa, procesor pristupa samo podskupu svih lokacija programa, obrazovanom od jedne ili vie stranica. Ovakav podskup lokacija je nazvan radni skup (working set). Iskustvo je pokazalo da se radni skup sporo menja u toku vremena. Prema tome, za izvravanje programa nije bilo potrebno da celi program bude u radnoj memoriji, nego je bilo dovoljno da se u radnoj memoriji nalazi samo njegov radni skup. To je, dalje, znailo da stepen multiprogramiranja nije odreen brojem programa koji istovremeno mogu da stanu u radnu memoriju, nego brojem njihovih radnih skupova koji istovremeno mogu da stanu u radnu memoriju. Pri tome se podrazumevalo da se programi nalaze u masovnoj memoriji i da se, po potrebi, kopije sadraja njihovih stranica prebacuju izmeu masovne i radne memorije, kada postanu deo radnog skupa, odnosno kada prestanu biti deo radnog skupa. Poto je jedinica prenosa izmeu masovne i radne memorije bila blok, prebacivane kopije sadraja stranica su obuhvatale jedan ili vie blokova. Iz injenice da u toku svog izvravanja celi program ne mora biti u radnoj memoriji, nego u masovnoj memoriji, sledi da veliinu programa ne ograniava veliina radne, nego veliina masovne memorije. To znai da fiziki adresni prostor, koga obrazuju adrese raspoloive radne memorije, nije dovoljan za adresiranje svih lokacija programa, jer veliina programa prelazi kapacitet radne memorije. Radi izvravanja ovakvih programa potreban je prividni ili virtuelni (virtual) adresni prostor, koga koristi procesor. Veliina virtuelnih adresa (iz virtuelnog adresnog prostora) je odreena formatom mainskih naredbi procesora. Prema tome, virtuelni adresni prostor ograniava veliinu programa, a fiziki adresni prostor ograniava veliinu radnih skupova. Postojanje dva adresna prostora

180

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

zahteva da svaka virtuelna adresa, upuena iz procesora, bude pretvorena (address mapping) u fiziku pre nego stigne do radne memorije, odnosno do sabirnice. Za ovo prevaranje je zaduen kontroler virtuelne memorije (MMU, Memory Management Unit). Na slici 8.4.5 je prikazan poloaj kontrolera virtuelne memorije u organizaciji raunara.

PROCESOR VIRTUELNA ADRESA KONTROLER VIRTUELNE MEMORIJE FIZIKA ADRESA RADNA MEMORIJA

Slika 8.4.5 Poloaj kontrolera virtuelne memorije u organizaciji raunara Pretvaranje virtuelne adrese u fiziku ima smisla samo ako u lokaciji radne memorije postoji kopija sadraja lokacije iju virtuelnu adresu je emitovao procesor. U suprotnom sluaju, pretvaranju adresa obavezno prethodi prebacivanje stranica. Prvo se eventualno prebacuje kopija sadraja neke stranice programa iz radne u masovnu memoriju, da bi se ouvale eventualne izmene ovog sadraja i da bi se oslobodio prostor u radnoj memoriji. Zatim se prebacuje kopija sadraja potrebne stranice programa iz masovne u radnu memoriju. Ovakav pristup, u kome se kopije stranica prebacuju po zahtevu (demand paging), podrazumeva izazivanje posebnog straninog prekida (page fault), kad god se ustanovi da radna memorija ne sadri kopiju potrebne stranice. Izazivanje straninog prekida dovodi do aktiviranja obraivaa straninog prekida, zaduenog za prebacivanje kopija stranica. Da bi se ustanovilo koje stranice izvravanog programa imaju kopije u radnoj memoriji, potrebna je odgovarajua evidencija. Radi njenog stvaranja, virtuelni i fiziki adresni prostor su podeljeni u virtuelne i fizike stranice iste veliine. Zahvaljujui tome, svaka lokacija pripada samo jednoj stranici i u virtuelnom i u fizikom adresnom prostoru, a adresa svake lokacije se sastoji od adrese virtuelne ili fizike stranice (page number), kojoj lokacija pripada, i od unutranje adrese (offset) lokacije u ovoj stranici. Prema tome, pretvaranje virtuelne adrese u fiziku podrazumeva zamenu adrese virtuelne stranice adresom fizike stranice, jer se unutranja adresa ne menja. Za ovo pretvaranje, kao i za

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

181

proveru da li se u nekoj od fizikih stranica nalazi kopija sadraja virtuelne stranice sa adresiranom lokacijom programa, potrebna je tabela stranica (page table). Njeni elementi uspostavljaju korespondenciju izmeu virtuelnih i fizikih stranica. Pri tome adresa virtuelne stranice slui kao indeks elementa tabele stranica sa adresom korespondentne fizike stranice ili sa oznakom da dotinoj virtuelnoj stranici ne korespondira fizika stranica. Na slici 8.4.6 je prikazan primer podele virtuelne i radne memorije u virtuelne i fizike stranice, kao i primer preslikavanja virtuelnih stranica sa adresama 00 i 10 i fizike stranice sa adresama 0 i 1.
STRANICE VIRTUELNE MEMORIJE 00 S00 S01 S02 S03 01 S10 S11 S12 S13 10 S20 S21 S22 S23 11 S30 S31 S32 S33 ADRESA VIRTUELNE STRANICE 00 01 10 11 00 01 10 11 00 01 10 11 00 01 10 11 UNUTRANJA ADRESA LOKACIJE FIZIKE STRANICE U RADNOJ MEMORIJI 0 S00 S01 S02 S03 S20 S21 S22 S23 00 01 10 11 00 01 10 11

TABELA STRANICA 00 01 10 11 0 1 -

ADRESA FIZIKE STRANICE

UNUTRANJA ADRESA LOKACIJE

Slika 8.4.6 Tabela stranica Na slici 8.4.6 je prikazano da fizika stranica 0 sadri kopiju virtuelne stranice 00 i da fizika stranica 1 sadri kopiju virtuelne stranice 10. Kada procesor zatrai pristup lokaciji sa virtuelnom adresom 1011 (lokaciji 3 sa sadrajem S23 iz virtuelne stranice 2), kontroler virtuelne memorije konsultuje element tabele stranica sa indeksom 2 i u njemu pronae adresu fizike stranice 1. Nakon zamene adrese virtuelne stranice 10 pronaenom adresom korespondentne fizike stranice 1 od virtuelne adrese 1011 nastane fizika adresa 111 lokacije sa kopijom traenog

182

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

sadraja S23. Da procesor zatrai pristup lokaciji sa virtuelnom adresom 0110, kontroler virtuelne memorije bi ustanovio da u elementu tabele stranica sa indeksom 1 nema adrese fizike stranice, pa bi izazvao stranini prekid. Aktivirani obraiva prekida bi oslobodio jednu od fizikih stranica, u nju bi smestio kopiju potrebne virtuelne stranice, a u odgovarajui element tabele stranica bi smestio adresu osloboene fizike stranice. Nakon obrade straninog prekida, procesor bi ponovo zatraio pristup lokaciji sa virtuelnom adresom 0110, a kontroler virtuelne memorije bi ponovo zapoeo pretvaranje date virtuelne adrese u fiziku adresu. Pretvaranje virtuelne adrese u fiziku usporava procesor, odnosno smanjuje broj izvravanih mainskih naredbi u jedinici vremena, jer zahteva dodatne pristupe radnoj memoriji, radi rukovanja tabelom stranica. Zato je vano da pristupanje tabeli stranica bude kratkotrajno, poto od njega zavisi duina pretvaranja virtuelne adrese u fiziku. To nije bilo mogue postii bez korienja brze poluprovodnike memorije. Njena veliina, ograniena cenom, je bila nedovoljna za smetanje cele tabele stranica, ali je bila dovoljna za uvanje kopija nekoliko njenih elemenata. Da bi se znalo koje kopije elemenata tabele stranica se uvaju u lokacijama brze memorije, uz njih se, u istim lokacijama, uvaju i indeksi pomenutih elemenata. To znai, da su lokacije brze memorije sadrale i virtuelnu adresu stranice i njoj korespondentnu fiziku adresu stranice. Na taj nain, za svaku virtuelnu adresu, nastalu u procesoru, bilo je mogue proveriti da li njenu adresu virtuelne stranice sadri neka lokacija brze memorije, radi eventualnog preuzimanja korespondentne adrese fizike stranice iz iste lokacije brze memorije. Ova provera je bila neophodna, jer nije postojao drugi nain za uspostavljanje jednoznane korespondencije izmeu adresa virtuelnih stranica i lokacija brze memorije. Poto pristupanje adresama fizikih stranica iz lokacija brze memorije nije bilo posredstvom adresa lokacija brze memorije, nego posredstvom delova sadraja ovih lokacija, odnosno posredstvom adresa virtuelnih stranica, prisutnih u njima, ovakva brza memorija je nazvana asocijativna memorija (associative memory, translation lookaside buffer). Na slici 8.4.7 prikazan je primer asocijativne memorije sa 2 lokacije.
DVOBITNE ADRESE VIRTUELNIH STRANICA 00 10 JEDNOBITNE ADRESE KORESPONDENTNIH FIZIKIH STRANICA 0 1

Slika 8.4.7 Asocijativna memorija sa 2 trobitne lokacije (sadraj njenih lokacija odgovara tabeli stranica sa slike 8.4.6)

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

183

Osobina lokalnosti izvravanja programa je omoguavala da se, i uz malu veliinu asocijativne memorije, u njoj dovoljno esto pronalaze adrese virtuelnih stranica i njima korespondentne adrese fizikih stranica. Ako adresa virtuelne stranice nije bila pronaena u asocijativnoj memoriji, ona je koriena kao indeks elementa tabele stranica, smetene u radnoj memoriji. Ovakvo pristupanje lokacijama radne memorije nije, u proseku, suvie produavalo pretvaranje virtuelne adrese u fiziku, ako je bilo retko, na primer, ako se deavalo samo u 10 od 100 sluajeva. Uz ovakvu pretpostavku, verovatnoa pogotka (hit), odnosno verovatnoa pronalaenja adrese virtuelne stranice u asocijativnoj memoriji je bila 0.9, a verovatnoa promaaja (miss) je bila 0.1. Ako se prihvati da je pristupanje asocijativnoj memoriji trajalo 1 procesorski ciklus, a da je pristupanje radnoj memoriji trajalo 10 procesorskih ciklusa, tada je srednje vreme pronalaenja adrese fizike stranice iznosilo: 0.91+0.110 = 1.9 procesorskih ciklusa. U sluaju promaaja, sadraj asocijativne memorije je auriran, da bi primio adresu virtuelne stranice, koja je izazvala promaaj, kao i korespondentnu adresu fizike stranice. Zahvaljujui tome to je u svom sastavu imao asocijativnu memoriju, kontroler virtuelne memorije je mogao dovoljno brzo da obavi pretvaranje virtuelne adrese u fiziku i da tako omogui automatizaciju memorijske hijerarhije, sastavljene od radne i masovne memorije. Preduslov za ovakvu automatizaciju je bilo oslanjanje masovne memorije na tehnologiju magnetnih diskova i mogunost direktnog pristupanja blokovima diska. Postavljanje kontrolera virtuelne memorije izmeu procesora i radne memorije je olakalo meusobnu zatitu programa, izvravanih u reimu multiprogramiranja, jer su iste virtuelne adrese iz raznih programa, pretvarane u razliite fizike adrese, pa nije bilo mogunosti za pristupanje tuim lokacijama radne memorije. Da bi tabela stranica bila nepristupana za neovlatene izmene, bilo je neophodno uvesti privilegovani i neprivilegovani reim rada procesora. Pojava memorijske hijerarhije je bila rezultat potrebe za memorijom velikog kapaciteta (izraenog brojem bajta), kratkog vremena pristupa (bajtu ili grupi bajta) i niske cene (po jednom bajtu). Poto su vreme pristupa i cena bili obrnuto proporcionalni, bez memorijske hijerarhije veliki kapacitet su mogle praktino imati samo memorije sa dugakim vremenom pristupa, jer su jedino one imale prihvatljivo nisku cenu. Meutim, obrazovanje memorijske hijerarhije, sastavljene od memorije velikog kapaciteta i dugakog vremena pristupa i od memorije malog kapaciteta i kratkog vremena pristupa, je omoguilo da se, po prihvatljivoj ceni, dobiju memorije velikog kapaciteta, a kratkog srednjeg vremena pristupa. Srednje vreme pristupa je bilo kratko, ako je sadraj memorije malog kapaciteta i kratkog vremena pristupa dovoljno esto zadovoljavao potrebe izvravanja programa. To je

184

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

bilo mogue postii zahvaljujui osobini lokalnosti izvravanja programa, pa nije bilo potrebe za estim pristupanjem memoriji velikog kapaciteta i dugakog vremena pristupa. Na taj nain su mogle da se pomire krajnosti. To potvruje i primer virtuelne memorije, iji kapacitet je bio jednak kapacitetu masovne memorije, a ije srednje vreme pristupa je bilo blisko vremenu pristupa radne memorije. Jasno, prethodno je vailo pod uslovom da je sadraj radne memorije dovoljno esto zadovoljavao potrebe izvravanja programa, to je bilo mogue zahvaljujui osobini lokalnosti izvravanja programa. Tako, na primer, ako su potrebni sadraji pronalaeni u radnoj memoriji proseno u 9999 od 10000 sluajeva, znai, ako je verovatnoa pogotka bila 0.9999, a verovatnoa promaaja bila 0.0001, i ako je vreme pristupa radnoj memoriji bilo 10 procesorskih ciklusa, a vreme pristupa masovnoj memoriji bilo 10000 procesorskih ciklusa, tada je srednje vreme pristupa virtuelnoj memoriji iznosilo: 0.999910+0.000110000 = 10.999 procesorskih ciklusa. Vano je uoiti da je ideja memorijske hijerarhije nala primenu i u kontroleru virtuelne memorije, radi skraenja srednjeg vremena pretvaranja virtuelne adrese u fiziku, odnosno, radi skraenja srednjeg vremena pronalaenja adrese fizike stranice. U ovom sluaju hijerarhiju su inile asocijativna memorija iz kontrolera virtuelne memorije i radna memorija. Pristup, slian prethodnom, je doveo do obrazovanja memorijske hijerarhije, sastavljene od brze poluprovodnike memorije i radne memorije, s ciljem skraenja srednjeg vremena pristupa radnoj memoriji. Taj cilj se moe ostvariti, ako se u lokacijama brze memorije dovoljno esto nalaze kopije sadraja lokacija radne memorije, potrebne za izvravanje programa, pa dovoljno esto izostaje pristupanje radnoj memoriji. Za brzu memoriju, u ovom sluaju, se koristi naziv skrivena memorija ili ke (cache) memorija, jer njeno postojanje nije vidljivo za programe, odnosno, ne zahteva njihove izmene i jedino utie na skraenje vremena njihovog izvravanja. Skrivena i radna memorija se dele u linije (line). Svaka od ovih linija se sastoji od istog broja lokacija sa uzastopnim adresama. Izmeu skrivene i radne memorije prebacuju se kopije sadraja celih linija, jer to sugerie prostorna lokalnost izvravanja programa, koja uzrokuje poveavanje verovatnoe pristupanja sadrajima lokacija sa uzastopnim adresama. Prema tome, adresa svake lokacije se sastoji od adrese linije (line number), kojoj lokacija pripada, i od unutranje adrese lokacije u svojoj liniji (offset). I skrivena memorija je organizovana kao asocijativna memorija, jer ima suvie malo lokacija da bi se adresa linije sa traenom lokacijom radne memorije mogla koristiti za indeksiranje lokacije skrivene memorije. To znai da lokacije skrivene memorije uvaju ne samo kopiju sadraja linije, nego i njenu adresu (slika 8.4.8).

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

185

KOPIJA LINIJE SASTAVLJENE OD DVOBITNA DVE REI ADRESA LINIJE 11 S22 0 S23 1

UNUTRANJE ADRESE REI LINIJE

Slika 8.4.8 Skrivena memorija sa jednom lokacijom (ona sadri kopije lokacija sa fizikim adresama 110 i 111 sa slike 8.4.6) Za svaku adresu lokacije radne memorije, emitovanu iz procesora, proverava se da li skrivena memorija sadri adresu linije sa ovom lokacijom. Ako se u nekoj lokaciji skrivene memorije pronae adresa pomenute linije, tada ta lokacija sadri kopiju ove linije, pa nije potreban pristup radnoj memoriji. U suprotnom sluaju, neizbean je pristup lokaciji radne memorije, kao i auriranje skrivene memorije, da bi u njoj uvek bile kopije poslednje korienih sadraja lokacija radne memorije. Skrivena memorija se nalazi u kontroleru skrivene memorije, zaduenom za upravljanje memorijskom hijerarhijom, sastavljenom od skrivene i radne memorije (slika 8.4.9).

PROCESOR FIZIKA ADRESA KONTROLER SKRIVENE MEMORIJE FIZIKA ADRESA RADNA MEMORIJA

Slika 8.4.9 Poloaj kontrolera skrivene memorije u organizaciji raunara

186

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Izmeu virtuelne i skrivene memorije postoji principijelna slinost, jer i jedna i druga smanjuju srednje vreme pristupa lokaciji programa. Meutim, izmeu njih postoje i razlike, na primer u pogledu sadraja lokacija asocijativnih memorija, ili u pogledu reakcije na promaaj prilikom pretraivanja asocijatinvih memorija. Skrivena memorija se moe kombinovati i sa virtuelnom memorijom. U tom sluaju ona skrauje srednje vreme pristupa virtuelnoj memoriji (slika 8.4.10).

PROCESOR VIRTUELNA ADRESA KONTROLER VIRTUELNE MEMORIJE FIZIKA ADRESA KONTROLER SKRIVENE MEMORIJE FIZIKA ADRESA RADNA MEMORIJA

Slika 8.4.10 Kombinacija virtuelne i skrivene memorije Princip virtuelne memorije, razvijene za raunar druge generacije, opisao je J. Fotheringham 1961. godine. Upotrebu virtuelne memorije rairili su raunari tree generacije, pre svih raunari iz IBM 370 familije. Skrivenu memoriju je predloio Maurice Wilkes 1965. godine. Ona je prvi put primenjena 1968. godine u raunaru IBM 360/85. Koncepti multiprogramiranja, interaktivnog rada i virtuelne memorije su zahtevali veoma sloene operativne sisteme, zaduene, na primer, za reagovanje na prekide, za prekljuivanje, kao i za prebacivanje kopija sadraja stranica izmeu masovne i radne memorije. Za operativne sisteme raunara tree generacije su vezani pojava sistema datoteka (file system), uvoenje praenja korienja raunara tree generacije, radi naplaivanja usluga, kao i uvoenje pojma virtuelne maine (virtual machine). Ovaj pojam je imao dva znaenja. Prvo od njih se odnosilo na radno okruenje koje su, sa jedne strane, stvarali operativni sistem, odnosno njegovi sistemski pozivi i interpreter komandnog jezika, a sa druge strane sistemski

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

187

programi, poput editora, na primer. Drugo znaenje ovoga pojma se odnosilo na stvaranje privida da je svakom korisniku raspoloiv primerak celog raunara, odnosno njegova cela arhitektura naredbi. Operativnim sistemima raunara tree generacije pripada, na primer, operativni sistem UNIX, koga su razvili Ken Thompson i Dennis Ritchie. UNIX je razvijen za mini-raunare. Za potrebe njegovog razvoja je napravljen programski jezik C, iji je autor Dennis Ritchie. Ozbiljna mana raunara tree generacije se odnosila na nepredvidivost odziva u interaktivnom radu, to je negativno uticalo na produktivnost programera. Odziv je bio nepredvidiv, jer je zavisio od broja programa na ije izvravanje je raspodeljivano procesorsko vreme. RADNA MEMORIJA Osnovna organizaciona jedinica radne memorije je osmobitni bajt. Iako svaki bajt poseduje jedinstvenu adresu, jedinica pristupa radnoj memoriji nije bajt, nego re. Veliina rei je obino jednaka veliini procesorskog registra, da bi se odjednom, u jednom navratu, mogao prebaciti sadraj celog registra izmeu radne memorije i procesora. Na slici 8.4.11 je prikazana organizacija radne memorije, sastavljene od dvobajtnih rei.
ADRESE ADRESE PRIMARNIH SEKUNDARNIH REI REI 1 bajt 1 bajt 0 0 3 bajt 3 bajt 2 2 5 bajt 5 bajt 4 4 bajt 7 bajt 6 6

...
Slika 8.4.11 Organizacija radne memorije, sastavljene od dvobajtnih little endian rei Rei radne memorije, kojima se moe pristupiti u jednom navratu, se nazivaju primarne rei (aligned words). Za radnu memoriju sa slike 8.4.11 to su rei sa adresama 0, 2, 4, ..., koje obuhvataju bajte 0 i 1, 2 i 3, 4 i 5, ... (slika 8.4.11). Adrese ovih rei su deljive sa 2 bez ostatka. Pristupanje sekundarnim reima (non-aligned words) sa adresama 1, 3, 5, ..., koje obuhvataju bajte 1 i 2, 3 i 4, 5 i 6, ... (slika 8.4.11), se odvija u dva navrata. U svakom od njih se pristupi odgovarajuoj primarnoj rei, radi preuzimanja jednog od traenih bajta. Na primer, pristupanje rei sa adresom 1 zahteva pristupanje primarnim reima sa adresama 0 i 2, radi dobavljanja bajta sa adresama 1 i 2. Prethodno opisani princip vai i kada je radna memorija raunara sastavljena od rei sa 4, 8 ili vie bajta.

188

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Ograniavanje pristupa samo na primarne rei radne memorije pojednostavljuje procesor, jer tada nije potreban automatizam za ostvarenje pristupanja sekundarnim reima. ARHITEKTURA NAREDBI ZA IBM SYSTEM/360 Arhitektura naredbi za IBM SYSTEM/360 praktino podrava adresni prostor od 24 bita, koji je organizovan u bajte, sa pristupom samo primarnim reima. Ona omoguuje rukovanje binarnim vrednostima velikim 1, 2 i 4 bajta, realnim vrednostima od 8 bajta (floating-point), decimalnim ciframa izraenim kao etvorobitne vrednosti (packed decimal) i nizovima znakova (string). U ovoj arhitekturi su na raspolaganju 16 registara od 32 bita (registri opte namene), 4 registra od 64 bita za realne brojeve (floating-point) i status registar (program status word), koji sadri programski broja i uslovne bite (condition codes). Ova arhitektura omoguuje privilegovani nain rada procesora (supervisory mode). Ona podrava 5 naina adresiranja, koji predstavljaju kombinacije neposrednog, registarskog i indeksnog adresiranja. Mainski formati naredbi ove arhitekture izgledaju (polja regi sadre kod registra i):
8 4 4

kod naredbe

reg1 reg2

Za prethodni RR (register-register) mainski format naredbi se podrazumeva da se 1. operand naredbe nalazi u registru reg1, da se 2. operand naredbe nalazi u registru reg2 i da se rezultat naredbe smeta u registar reg1.
8 4 4 4 12

kod naredbe

reg1 reg2 reg3

odstojanje

Za prethodni RX (register-indexed) mainski format naredbi se podrazumeva da se 1. operand naredbe nalazi u registru reg1, da se 2. operand naredbe nalazi u memorijskoj lokaciji sa adresom reg2+reg3+odstojanje i da se rezultat naredbe smeta u registar reg1.
8 4 4 4 12

kod naredbe

reg1 reg2 reg3

odstojanje

Za prethodni RS (register-storage) mainski format naredbi se podrazumeva da se 1. operand naredbe nalazi u memorijskoj lokaciji sa adresom reg3+odstojanje, da se

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

189

2. operand naredbe nalazi u registru reg2 i da se rezultat naredbe smeta u registar reg1.
8 8 4 12

kod naredbe

vrednost

reg1

odstojanje

Za prethodni SI (storage-immediate) mainski format naredbi se podrazumeva da se vrednost smeta u memorijsku lokaciju sa adresom reg1+odstojanje.
8 8 4 12 4 12

kod naredbe

duina

reg1

odstojanje1

reg2

odstojanje2

Za prethodni SS (storage-storage) mainski format naredbi se podrazumeva da se 1. operand naredbe nalazi u memorijskoj lokaciji sa adresom reg1+odstojanje1, da se 2. operand naredbe nalazi u memorijskoj lokaciji sa adresom reg2+odstojanje2 i da se rezultat naredbe smeta u memorijsku lokaciju sa adresom reg1+odstojanje1 (duina oznaava broj memorijskih lokacija na koje se naredbe primenjuje). Sve naredbe ne koriste sva polja iz prikazanih mainskih formata naredbi na prethodno opisani nain. U takve naredbe spadaju upravljake naredbe. Na primer, kod uslovnih upravljakih naredbi RX formata, polje reg1 se koristi za izraavanje uslova, a suma sadraja reg2, sadraja reg3 i odstojanja (displacement) se smeta u programski broja, ako je uslov ispunjen. Arhitektura naredbi za IBM SYSTEM/360 obuhvata sledee vrste naredbi: 1. naredbe za rukovanje podacima (na primer, za prenos i konverziju podataka), 2. naredbe za rukovanje bitima (logike naredbe i naredbe pomeranja), 3. naredbe za celobrojnu binarnu aritmetiku (obuhvaene sve aritmetike operacije), 4. naredbe za celobrojnu decimalnu aritmetiku (obuhvaene sve aritmetike operacije), 5. naredbe za aritmetiku realnih brojeva (obuhvaene sve aritmetike operacije), 6. upravljake naredbe, 7. sistemske naredbe i 8. ulazno-izlazne naredbe. ARHITEKTURA NAREDBI ZA DEC PDP11 Arhitektura naredbi za DEC PDP11 podrava adresni prostor od 16 bita, koji je organizovan u bajte, sa pristupom samo primarnim reima. Ona omoguuje rukovanje binarnim vrednostima velikim 1 i 2 bajta, kao i realnim vrednostima (floating-point) velikim 4 i 8 bajta. U ovoj arhitekturi su na raspolaganju 8 registara

190

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

od 16 bita (registri opte namene), od kojih jedan slui kao pokaziva steka (stack pointer), a drugi kao programski broja. Pored njih, postoji i status registar (status word), koji sadri uslovne bite (condition codes). Ova arhitektura omoguuje privilegovani nain rada procesora sa 2 nivoa privilegovanog rada (kernel state, supervisor state). Ona podrava registarsko adresiranje, indirektno adresiranje sa samouveanjem, indirektno adresiranje sa samoumanjenjem, indeksno adresiranje, indirektno adresiranje, dvostruko indirektno adresiranje sa samouveanjem, dvostruko indirektno adresiranje sa samoumanjenjem i indeksno indirektno adresiranje. Svi naini adresiranja se oslanjanju na registre. Naini adresiranja sa samouveanjem (samoumanjenjem) podrazumevaju da se sadraj korienog registra automatski uvea (umanji) nakon obavljanja naredbe. Dvostruka indirekcija znai da korieni registar sadri adresu memorijske lokacije sa adresom operanda. Indeksna indirekcija znai da je rezultat indeksnog adresiranja adresa memorijske lokacije sa adresom operanda. Kombinovanje programskog brojaa sa indirektnim adresiranjem sa samouveanjem odgovara neposrednom adresiranju. Slino, kombinovanje programskog brojaa sa dvostruko indirektnim adresiranjem sa samouveanjem odgovara apsolutnom adresiranju (u kome se koristi apsolutna adresa). Kombinovanje programskog brojaa sa indeksnim adresiranjem odgovara relativnom adresiranju, a kombinovanje programskog brojaa sa indeksnim indirektnim adresiranjem odgovara relativnom indirektnom adresiranju. Mainski formati naredbi ove arhitekture izgledaju:
10 3 3

kod naredbe

kod operanda

kod registra

Za prethodni mainski format naredbi jedini operand je odreen kodom operanda (koji odreuje nain adresiranja) i kodom registra (koji odreuje registar na koga se oslanja navedeni nain adresiranja). Zavisno od naina adresiranja, ovaj mainski format moe zauzeti 2 ili 4 bajta.
4 3 3 3 3

kod naredbe

kod operanda kod registra 1 kod operanda kod registra 2 1 2

Za prethodni mainski format naredbi 1. operand je odreen kodom operanda 1 i kodom registra 1, 2. operand je odreen kodom operanda 2 i kodom registra 2, a

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

191

rezultat naredbe se smeta na odredite koje odreuje 2. operand. Zavisno od naina adresiranja, ovaj mainski format moe zauzeti 2, 4 ili 6 bajta.
12 4

kod naredbe

kod uslovnih bita

Za prethodni mainski format naredbi se podrazumeva da jedini operand oznaava uslovne bite koje naredba postavlja na 1 ili na 0.
7 3 3 3

kod naredbe

kod registra 1 kod operanda kod registra 2

Za prethodni mainski format naredbi 1. operand odreuje kod registra 1 (podrazumeva se registarsko adresiranje), 2. operand je odreen kodom operanda i kodom registra 2, a rezultat naredbe se smeta na odredite koje odreuje 1. ili 2. operand, zavisno od naredbe. Kada ovaj mainski format odgovara naredbi poziva potprograma, tada kod registra 1 odreuje registar u koji se smeta povratna adresa, a kod operanda i kod registra 2 zajedno odreuju adresu ciljne naredbe. Zavisno od naina adresiranja, ovaj mainski format moe zauzeti 2 ili 4 bajta.
13 3

kod naredbe

kod registra

Prethodni mainski format naredbi odgovara naredbi povratka iz potprograma. Kod registra odreuje registar sa povratnom adresom.
8 8

kod naredbe

relativna adresa

Prethodni mainski format odgovara upravljakim naredbama za koje se podrazumeva relativno adresiranje. Znai ciljna adresa se odreuje kao zbir relativne adrese (offset) i sadraja programskog brojaa. Arhitektura naredbi za DEC PDP11 obuhvata sledee vrste naredbi: 1. naredbe za rukovanje podacima (na primer, za prenos i konverziju podataka), 2. naredbe za rukovanje bitima (logike naredbe i naredbe pomeranja), 3. naredbe za celobrojnu binarnu aritmetiku (obuhvaene sve aritmetike operacije), 4. naredbe za aritmetiku realnih brojeva (obuhvaene sve aritmetike operacije), 5. upravljake naredbe i

192

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

6. sistemske naredbe. OSOBINE MAGNETNOG DISKA Magnetne diskove karakterie srednje vreme pristupa (bloku) diska (average disk access time). Ono zavisi od srednjeg vremena pomeranja (seek time) glave diska iznad staza, od srednjeg vremena rotacije (rotational delay) sektora ispod glave diska, od vremena prenosa (transfer time) bloka izmeu disk jedinice i njenog kontrolera, kao i od vremena kontrolera (controler time), koje on troi pri prenosu bloka od i do radne memorije. Prema tome, srednje vreme pristupa diska je jednako sumi srednjeg vremena pomeranja, srednjeg vremena rotacije, vremena prenosa i vremena kontrolera. ORGANIZACIJA SABIRNICE Zadatak sabirnice je da povee razne organizacione komponente raunara, radi ostvarenja razmene podataka izmeu pojedinih parova ovih komponenti. Zato u sastav sabirnice ulaze, ne samo linije koje povezuju organizacione komponente raunara, nego i upravljaka logika, koja ureuje pristup linijama sabirnice i razmenu signala po tim linijama. U svakom od parova organizacionih komponenti, koji razmenjuju podatke posredstvom sabirnice, jedna od komponenti ima ulogu aktivne strane (bus master), a druga ulogu pasivne strane (bus slave). Ista komponenta u raznim situacijama moe da bude i pasivna i aktivna strana (na primer, DMA kontroler). Aktivna strana zapoinje razmenu podataka po zauzimanju sabirnice, a pasivna strana uestvuje u ovoj razmeni. Pri tome, zavisno od smera prenosa, postoje dve vrste razmene podataka: transakcija pisanja i transakcija itanja. Kod transakcije pisanja, aktivna strana upuuje ka sabirnici adresu podatka, oznaku vrste transakcije i podatak, a kod transakcije itanja, aktivna strana upuuje na sabirnicu samo adresu podatka i oznaku vrste transakcije. Pasivna strana preuzima sa sabirnice adresu da bi na osnovu nje ustanovila da li se transakcija odnosi na nju. Ako se transakcija odnosi na nju, ona na osnovu oznake vrste transakcije odreuje ta se od nje trai. Za transakciju pisanja, ona samo preuzima podatke sa sabirnice. Za transakciju itanja ona na sabirnicu upuuje adresirani podatak, koga preuzima aktivna strana. Transakcije itanja su podeljene (split transaction), ako sabirnicu mogu da koriste druge aktivna i pasivna strana, nakon to je prva aktivna strana isporuila svojoj pasivnoj strani adresu podatka i oznaku vrste transakcije, a pre nego aktivna strana dobije adresirani podatak. Osobine sabirnice, kao to su broj i vrsta njenih linija, njena propusnost (broj bajta koje ona moe da prenese u jedinici vremena), kao i najvei broj organizacionih komponenti koji mogu istovremeno biti na nju zakaeni, zavise od vrste komponenti koje sabirnica povezuje, kao i od njihove meusobne udaljenosti. Ako su unapred poznate karakteristike ovih komponenti i njihove meusobne udaljenosti, tada je vreme sabirnice mogue podeliti na intervale podjednake

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

193

duine, tako da transakcije traju unapred zadani broj ovakvih intervala. Sabirnice, kod kojih je aktivnost za nju vezanih komponenti usklaena sa poecima pojedinih intervala, se nazivaju sinhrone sabirnice (synchronous bus). One u svom sastavu imaju posebnu upravljaku liniju, za prenos sinhronizacionog signala (sa sata). Svaki od ovih signala oznaava poetak jednog intervala. Ako neka od komponenti u ulozi pasivne strane ne moe da zavri svoj deo transakcije u zadanom broju intervala, tada ona koristi vie intervala. Radi ovakvih komponenti, sinhrone sabirnice sadre posebnu upravljaku liniju, po kojoj pomenute komponente u zavrnom intervalu alju signal kraja transakcije. Transakcija nije zavrena dok se taj signal ne pojavi. Duina intervala je zavisna, ne samo od karaktera komponenti, nego i od duine sabirnice, da bi u toku jednog intervala signali mogli da stignu s kraja na kraj sabirnice. Upravljanje sinhronim sabirnicama je jednostavno, pa se na njega ne troi mnogo vremena. Zato, uz dovoljan broj adresnih i linija podataka, uz kratke intervale, kao i uz obavljanje svih transakcija u minimalnom broju intervala, sinhrone sabirnice imaju veoma visoku propusnost. One se uglavnom koriste za povezivanje procesora i radnih memorija. Tada njihova duina ne prelazi pola metra. Za raznovrsne organizacione komponente, koje se nalaze na veim meusobnim udaljenostima, od vie metara, praktino je teko ostvariti sinhronizovan rad, jer signal sa sata ne moe da stigne istovremeno do svih komponenti. Zbog vee udaljenosti, razlike u vremenima putovanja ovog signala do raznih komponenti nisu zanemarljive. Zato se saradnja ovakvih komponenti zasniva na dogovaranju (handshaking). Ono se ostvaruje razmenom signala, za ta su neophodne posebne upravljake linije. Na primer, pasivna strana alje po ovakvoj liniji aktivnoj strani signal potvrde, kojim potvruje prijem podataka kod transakcije pisanja, odnosno, kojim najavljuje slanje podataka kod transakcije itanja. Sabirnice, koje zahtevaju dogovaranje aktivne i pasivne strane, se nazivaju asinhrone sabirnice (asynchronous bus). Potovanje protokola razmene signala, ije trajanje mora da uzme u obzir najgore pretpostavke, uzrokuje da asinhrone sabirnice imaju manju propusnost od sinhronih sabirnica. Ovakva poreenja imaju smisla samo ako su sabirnice izvedene u istoj tehnologiji. Za uspean prenos podataka neophodno je spreiti da vie aktivnih strana istovremeno pokrenu svoje transakcije. Zato pokretanju transakcije obavezno prethodi zauzimanje sabirnice. U sluaju kada na istu sabirnicu moe biti vezano vie procesora, zgodno je da u zauzimanju sabirnice posreduje poseban arbitar sabirnice (arbiter). Da bi zauzela sabirnicu, aktivna strana upuuje signal zahteva (bus request) po posebnoj upravljakoj liniji koja vodi ka arbitru sabirnice. Sabirnica je dodeljena aktivnoj strani do koje stigne signal odobrenja (bus grant) po posebnoj upravljakoj liniji koja vodi od arbitra sabirnice. Aktivna strana objavljuje da je zauzela sabirnicu upuivanjem signala zauzea (bus busy) po posebnoj upravljakoj liniji koja vodi ka arbitru sabirnice. Taj signal ostaje aktivan

194

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

dok god aktivna strana koristi sabirnicu. Ako je sabirnica zauzeta u trenutku pojave signala zahteva, arbitar sabirnice eka oslobaanje sabirnice, pa tek onda odobrava njeno ponovno zauzimanje. Pri tome, nema smetnje da vie aktivnih strana po istoj upravljakoj liniji upuuje signal zahteva ka arbitru sabirnice, pod uslovom da upravljaka linija, namenjena za signal odobrenja, serijski (daisy chaining) povezuje aktivne strane (slika 8.4.12).
aktivna strana 1 aktivna strana 2

arbitar sabirnice

...

...

linija odobrenja linija zahteva linija zauzea

sabirnica

...
Slika 8.4.12 Serijsko vezivanje aktivnih strana linijom odobrenja U sluaju serijskog vezivanja aktivnih strana linijom odobrenja, sabirnicu zauzima prva aktivna strana do koje stigne signal odobrenja. Ona taj signal ne proputa dalje. Ovakav nain zauzimanja sabirnice je jednostavan, ali ima manu da statiki dodeljuje vii prioritet aktivnoj strani koja je fiziki blie arbitru sabirnice. Ovaj problem se izbegava, ako izmeu arbitra sabirnice i svake od aktivnih strana postoje posebne linije za signale zahteva i odobrenja (independent requesting). Mogue je i kombinovanje prethodna dva pristupa, tako da svaka od vie upravljakih linija, namenjena za signal odobrenja, serijski povezuje vie aktivnih strana. Na upravljanje sabirnicom se troi manje vremena, ako se, nakon pripreme prenosa, ne prenosi samo jedan, nego vie podataka u nizu. Tada se vreme, potroeno za pripremu prenosa, rasporeuje na svaki od prenosa u nizu. Zato sabirnice omoguuju, ne samo jedinini (single word), nego i grupni (multiple word) prenos. Veliina podatka, koji se u jednom navratu prenosi sabirnicom, zavisi od broja linija podataka. Vei broj linija podataka obezbeuje veu propusnost sabirnice. Radi sniavanja cene, nekada se linije podataka koriste i za prenos adrese. Ovakvo vremensko multipleksiranje linija sabirnice smanjuje njenu propusnost. Broj linija, kao i propusnost sabirnice, obrnuto su proporcionalni njenoj duini. Zato najdue sabirnice, dugake vie metara, sadre samo od 8 do 16 linija podataka i koriste posebne protokole, radi pravilne interpretacije sadraja linija podataka. Namena sabirnice u potpunosti oblikuje njene osobine. Tako se razlikuju: 1. memorijske sabirnice (posveene povezivanju procesora i radnih memorija),

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

195

2. ulazno-izlazne sabirnice (posveene povezivanju kontrolera masovnih memorija i kontrolera ulaznih i izlaznih ureaja) i 3. sistemske sabirnice (posveene povezivanju procesora, radnih memorija i kontrolera). Memorijske sabirnice imaju najveu propusnost i najmanju duinu, a ulaznoizlazne sabirnice imaju najmanju propusnost i najveu duinu. Osobine sistemskih sabirnica su izmeu osobina memorijskih i ulazno-izlaznih sabirnica. Sistemska sabirnica se koristi kao jedina sabirnica kod mini-raunara. Memorijska i ulazno- izlazna sabirnica se sreu kod velikih raunara, kod kojih je vano da aktivnosti radi ulaza i izlaza podataka to manje ometaju rad procesora. Na slici 8.4.13 je prikazana organizacija raunara sa memorijskom i ulaznoizlaznom sabirnicom.

PROCESOR

KONTROLER VIRTUELNE MEMORIJE KONTROLER SKRIVENE MEMORIJE

RADNA MEMORIJA MEMORIJSKA SABIRNICA KONTROLER ULAZNO IZLAZNA SABIRNICA

KONTROLER

KONTROLER

JEDINICE MASOVNE MEMORIJE

...

ULAZNO IZLAZNI UREAJI

Slika 8.4.13 Organizacija raunara sa memorijskom i ulazno-izlaznom sabirnicom Sabirnice su najee standardizovana organizaciona komponenta raunara.

196

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

ORGANIZACIJA ASOCIJATIVNE MEMORIJE Zadatak asocijativne memorije je da brzo pronae sadraj koji korespondira zadanoj adresi. Kada asocijativna memorija opsluuje kontroler virtuelne memorije, ovaj sadraj predstavlja traenu fiziku adresu, a kada asocijativna memorija opsluuje kontroler skrivene memorije, ovaj sadraj predstavlja traenu liniju. Izmeu zadane adrese i traenog sadraja se uspostavi korespondencija, kada se oni, kao ureeni par, smeste u neku lokaciju asocijativne memorije. Kada zadana adresa postane deo ovakvog ureenog para, ona se naziva referentna adresa. Pored bita, predvienih za smetanje ureenog para, sastavljenog od referentne adrese i njoj korespondentnog sadraja, svaka lokacija asocijativne memorije sadri i poseban bit popunjenosti, namenjen za podatak o popunjenosti dotine lokacije. Brzo pronalaenje traenog sadraja omoguuju komparatori, koji zadanu adresu porede sa prisutnom referentnom adresom iz popunjene lokacije asocijativne memorije. Kada je broj komparatora jednak broju lokacija asocijativne memorije (slika 8.4.14), tada ona ima punu asocijativnost (full associativity).
zadana adresa referentna adresa korespondentni sadraj bit popunjenosti

komparatori

lokacije asocijativne memorije

Slika 8.4.14 Asocijativna memorija (od 4 lokacije) sa punom asocijativnou Kod asocijativne memorije sa punom asocijativnou, zadana adresa se istovremeno poredi sa svim prisutnim referentnim adresama. Poreenje je uspeno, odnosno ostvaren je pogodak, ako se zadana adresa podudari sa nekom od prisutnih referentnih adresa. Tada sadraj, uparen sa dotinom referentnom adresom, predstavlja traeni sadraj. Ako se zadana adresa ne podudari ni sa jednim od prisutnih referentnih adresa, poreenje je neuspeno, odnosno ostvaren je promaaj. Tada sleduje punjenje neke od lokacija asocijativne memorije novim ureenim parom, kada izvan asocijativne memorije bude pronaen sadraj koji korespondira zadanoj adresi. Za punjenje se odabira bilo koja od nepopunjenih lokacija asocijativne memorije. Ako su sve lokacije asocijativne memorije popunjene, za punjenje se oslobaa lokacija sa najstarijim uspenim poreenjem. Ovakav kriterijum izbora lokacije za punjenje je u skladu sa principom lokalnosti po kome lokacija sa uspenim poreenjem u neposrednoj prolosti ima veu verovatnou za uspeno poreenje u neposrednoj budunosti, od lokacija sa neuspenim poreenjima u neposrednoj prolosti. Za brzo pronalaenje lokacije asocijativne

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

197

memorije sa najstarijim uspenim poreenjem, zgodno je lokacije uvezati u listu. Na njen poetak uvek dolazi lokacija sa najnovijim uspenim poreenjem, tako da na njen kraj prirodno dospeva lokacija sa najstarijim uspenim poreenjem. Ovakav pristup predstavlja realizaciju algoritma, oznaenog skraenicom LRU (least recently used). On je primenljiv samo ako je izvezivanje lokacije iz liste, radi njenog uvezivanja na poetak liste mogue izvesti bez usporavanja rada asocijativne memorije. Ekonomski razlozi sugeriu smanjenje broja komparatora, kada asocijativna memorija ima mnogo lokacija. To se moe postii modularnom organizacijom asocijativne memorije, u kojoj na svaki modul dolazi po jedan komparator. Za primer asocijativne memorije sa slike 8.4.14 broj komparatora se moe prepoloviti, ako se lokacije asocijativne memorije organizuju u dva modula sa po dve lokacije (slika 8.4.15).
zadana adresa referentna korespondentni sadraj bit adresa popunjenosti 0 1 0 1 komparatori lokacije asocijativne memorije adrese lokacija iz prvog modula adrese lokacija iz drugog modula

Slika 8.4.15 Asocijativna memorija (od 4 lokacije) sa dvostrukom asocijativnou Asocijativna memorija sa slike 8.4.15 ima dvostruku asocijativnost (2-way set-associativity). Kada je broj komparatora manji od broja lokacija asocijativne memorije, kao kod asocijativne memorije sa dvostrukom asocijativnou, tada svaki komparator poredi zadanu adresu sa prisutnom referentnom adresom iz samo jedne lokacije svog modula. Za izbor lokacije koristi se deo bita zadane adrese. Ovi biti tada ne uestvuju u poreenju, jer se podrazumevaju, pa se oni iskljuuju iz referentne adrese. Referentna adresa moe dospeti samo u lokacije, koje adresiraju biti iskljueni iz nje, jer se iskljueni biti podrazumevaju samo za dotine lokacije. U primeru sa slike 8.4.15 za adresiranje lokacija asocijativne memorije dovoljan je jedan, na primer najmanje znaajni bit zadane adrese. Za sluaj da je zadana adresa 11101110, njeni znaajniji biti 1110111 se istovremeno porede sa referentnim adresama iz nultih lokacija oba modula. Lokacije sa istim adresama iz raznih modula asocijativne memorije obrazuju skupove. U istu listu se uvezuju samo lokacije iz istog skupa, radi pronalaenja lokacije sa najstarijim uspenim poreenjem (LRU algoritam). Broj komparatora asocijativne memorije se moe svesti na 1, ako sve lokacije asocijativne memorije obrazuju jedan modul (slika 8.4.16).

198

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

zadana adresa

referentna korespondentni sadraj bit adresa popunjenosti 00 01 10 11 lokacije asocijativne memorije adrese lokacija iz jedinog modula

komparator

Slika 8.4.16 Asocijativna memorija (od 4 lokacije) sa jednostrukom asocijativnou Ovakva asocijativna memorija ima jednostruku asocijativnost (1-way setassociativity, direct mapped). U primeru sa slike 8.4.16 jedini komparator poredi zadanu adresu sa prisutnom referentnom adresom iz lokacije koju adresiraju dva, na primer najmanje znaajna bita zadane adrese. Poto se oni podrazumevaju, oni ne uestvuju u poreenju, pa njih ne sadri referentna adresa. Za sluaj da je zadana adresa 11111100, njeni znaajniji biti 111111 se istovremeno porede sa referentnom adresom iz nulte lokacije. Iskustvo pokazuje da asocijativna memorija sa dvostrukom asocijativnou nije loija od dvostruko vee asocijativne memorije sa jednostrukom asocijativnou. To se objanjava injenicom da je svim zadanim adresama, sa istim najmanje znaajnim bitima, na raspolaganju samo jedna lokacija asocijativne memorije sa jednostrukom asocijativnou, a dve lokacije asocijativne memorije sa dvostrukom asocijativnou. Na poboljanje rada asocijativne memorije utiu poveanje broja njenih lokacija, kao i poveanje njenog stepena asocijativnosti, iako znaaj poveanja stepena asocijativnosti opada iznad etvorostruke asocijativnosti, izmeu ostalog i zbog poveanja sloenosti asocijativne memorije. Asocijativne memorije se oslanjaju na najbre (najskuplje) tehnologije, da bi to bre obavljale svoj zadatak, pa to ograniava i broj njihovih lokacija i broj komparatora. SKRIVENA MEMORIJA Kontroler skrivene memorije podrava operacije itanja i pisanja. U toku obavljanja ovih operacija, on proverava da li se u nekoj od lokacija njegove asocijativne memorije nalazi kopija linije sa sadrajem lokacije koju adresiranju dotine operacije. Za uspean rad skrivene memorije je vano da prethodna provera to ee ima pozitivan ishod, na primer da verovatnoa pogotka (hit) bude, vea od 0.8, jer mnogo promaaja (miss) znaajno produava srednje vreme pristupa. Tako, za asocijativnu memoriju sa vremenom pristupa od 2 procesorska ciklusa, za radnu memoriju sa vremenom pristupa od 10 procesorskih ciklusa i za verovatnou pogotka 0.9, srednje vreme pristupa je 2.8 procesorskih ciklusa, a za verovatnou pogotka 0.7, srednje vreme pristupa je 4.4 procesorskih ciklusa. Vreme pristupa u

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

199

sluaju promaaja je viestruko due od vremena pristupa u sluaju pogotka, jer ukljuuje pristup sadraju lokacije iz radne memorije, kao i prenos kopija sadraja svih lokacija linije izmeu radne i asocijativne memorije. Upravljanje skrivenom memorijom se razlikuje za pomenute dve vrste operacija, kao i za sluajeve pogotka i promaaja u okviru iste vrste operacija. Tako, pogodak kod itanja sadraja ne zahteva pristup radnoj memoriji, a promaaj dovodi do pristupa radnoj memoriji, radi prebacivanja kopije sadraja linije iz radne memorije u asocijativnu memoriju. Operacija pisanja sadraja adresirane lokacije je dugotrajnija od operacije itanja kopije sadraja adresirane lokacije, jer podrazumeva pristupanje radnoj memoriji. Pri tome, u sluaju pogotka, odmah se menja kopija adresiranog sadraja u lokaciji skrivene memorije, a pristupanje radnoj memoriji se moe odloiti do trenutka kada se pomenuta lokacija asocijativne memorije oslobaa. Tek tada se izbacivana kopija linije upisuje u radnu memoriju (write back), i to samo ako je izmenjena. Radi toga, svakoj lokaciji asocijativne memorije se dodaje bit izmenjenosti (modify bit), koji se pri svakom pisanju postavlja na vrednost 1. Odlaganje pisanja u radnu memoriju smanjuje broj pristupanja radnoj memoriji, ali po cenu da su sadraji pojedinih lokacija radne memorije neaurni. Ako je to neprihvatljivo, tada svako pisanje kopije adresiranog sadraja u lokaciji skrivene memorije prati i pristupanje radnoj memoriji (write trough). U sluaju promaaja pri pisanju sadraja adresirane lokacije, jedan pristup je da se menja samo sadraj adresirane lokacije u radnoj memoriji (write around), to je opravdano samo ako nema naknadnih izmena sadraja iste lokacije. Drugi pristup je da se kopija sadraja adresirane lokacije radne memorije prebaci u skrivenu memoriju (write allocate), radi izmene i naknadnog vraanja u radnu memoriju. Pri tome se uvek prebacuje sadraj cele linije. Ovaj pristup ima prednost, ako se sadraj adresirane lokacije naknadno menja. Slika 8.4.17 sadri pregled prethodno opisanih sluajeva. itanje za pogodak za promaaj pisanje za pogodak iz asocijativne memorije iz radne memorije, uz auriranje asocijativne memorije u asocijativnu uz odlaganje pisanja u radnu memoriju memoriju (write back) uz pisanje u radnu memoriju (write trough) uz auriranje asocijativne memorije u radnu (write allocate) memoriju bez auriranja asocijativne memorije (write around)

za promaaj

Slika 8.4.17 Pregled sluajeva itanja i pisanja skrivene memorije

200

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Koncepti skrivene memorije i memorijski preslikanog ulaza izlaza nisu u saglasnosti, jer ulazno-izlazni ureaji mogu da izmene sadraj lokacija iz radne memorije, i da tako uine neaurnim njihove kopije u skrivenoj memoriji. Reenje ovoga problema je da skrivena memorija ne sadri kopije sadraja lokacija kojima pristupaju ulazno-izlazni ureaji. Alternativno reenje, da kontroleri ulazno-izlaznih ureaja pristupaju radnoj memoriji posredstvom skrivene memorije, nije dobro, jer tada ovi kontroleri ometaju rad procesora. VIRTUELNA MEMORIJA Kontroler virtuelne memorije podrava operacije itanja i pisanja. U toku obavljanja ovih operacija, on proverava da li se u nekoj od lokacija njegove asocijativne memorije nalazi fizika adresa stranice koja korespondira zadanoj virtuelnoj adresi stranice (slika 8.4.18).
adresa virtuelne stranice unutranja adresa

virtuelna adresa

asocijativna memorija

...

tabela stranica

...

adresa fizike stranice

fizika adresa

Slika 8.4.18 Pretvaranje virtuelne adrese u fiziku Pretvaranje virtuelne adrese u fiziku se ubrzava, ako asocijativna memorija sadri zadanu adresu virtuelne stranice i njoj korespondentnu adresu fizike stranice. U suprotnom sluaju, proverava se u tabeli stranica da li adresiranoj virtuelnoj stranici odgovara fizika stranica. Ako odgovara, obavi se pretvaranje virtuelne adrese u fiziku, zamenom adrese virtuelne stranice korespondentnom

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

201

adresom fizike stranice. Uz to se aurira asocijativna memorija, tako to se u neku od njenih lokacija, odabranih po LRU algoritmu iz skupa moguih lokacija, smeste pomenuta adresa virtuelne stranice i njoj korespondentna adresa fizike stranice. Meutim, ako adresiranoj virtuelnoj stranici ne odgovara fizika stranica, odnosno ako je odgovarajui element tabele stranica nepopunjen, generie se stranini prekid. Zadatak obraivaa ovog prekida je: (1) da obezbedi slobodnu fiziku stranicu, (2) da u nju smesti kopiju adresirane virtuelne stranice i (3) da aurira odgovarajui element tabele stranica, radi uparivanja adrese virtuelne stranice i adrese odgovarajue fizike stranice, to za sobom povlai i auriranje asocijativne memorije. Po zavretku obrade straninog prekida, nastavlja se pretvaranje zadane virtuelne adrese u fiziku adresu. Na popunjenost elementa tabele stranica ukazuje njegov bit popunjenosti. Obezbeivanje slobodne fizike stranice podrazumeva oslobaanje jedne od zauzetih fizikih stranica, ako su sve fizike stranice zauzete. To obuhvata auriranje tabele stranica, radi raskidanja postojee veze izmeu adrese neke virtuelne stranice i adrese oslobaane fizike stranice, kao i prebacivanje sadraja oslobaane fizike stranice na disk, ako je njen sadraj izmenjen. Zato svaka izmena sadraja fizike stranice mora da ostane zabeleena. Radi toga se za svaku fiziku stranicu vee bit izmene (modify bit, dirty bit). On se automatski postavlja pri svakoj izmeni sadraja fizike stranice. Prilikom izbora fizike stranice za oslobaanje, dobro je primenjivati LRU algoritam. Radi toga je potrebno beleiti svako pristupanje sadraju, odnosno referenciranje sadraja fizike stranice. Zato se za svaku stranicu vee i bit referenciranja (reference bit). On se automatski postavlja pri svakom pristupanju sadraju fizike stranice. Podrazumeva se da se bit referenciranja ponitava u pravilnim vremenskim intervalima, da podatak o referenciranju ne bi zastario. Bit izmene i bit referenciranja su vezani za fiziku stranicu i uvaju se u elementu tabele stranica u kome je njena adresa. To znai da se kopije ovih bita nalaze i u lokaciji asocijativne memorije, kada ona sadri adresu njihove fizike stranice. Prilikom izbacivanja adrese fizike stranice iz asocijativne memorije, kopije za nju vezanih bita izmene i referenciranja se prepisuju u odgovarajui element tabele stranica. Ovi biti se ponitavaju, kada se njihova fizika stranica oslobaa. Za elemente tabele stranica je zgodno da, pored bita izmene i bita referenciranja, sadre i bit zabrane prebacivanja linija sadraja fizike stranice u skrivenu memoriju. To je vano za stranice kojima pristupaju kontroleri ulaznoizlaznih ureaja. Za veliki adresni prostor i malu stranicu, tabela stranica postaje predugaka. Na primer, za adresni prostor od 32 bita i stranicu od 29 (512) bajta, tabela stranica ima 223 elemenata i minimalno zauzima 2 25 bajta (32 megabajta), ako se za svaki element predvide po 4 bajta. Za ovako veliku tabelu nema dovoljno prostora u radnoj memoriji, pogotovo u uslovima multiprogramiranja, kada svakom

202

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

izvravanom programu odgovara posebna tabela stranica. Zbog toga se trenutno nekorieni delovi tabele stranica smetaju u masovnu memoriju, to produava srednje vreme pristupa virtuelnoj memoriji, jer zahteva troenje vremena na prebacivanje delova tabele stranica izmeu radne i masovne memorije. Zato je veoma vano smanjiti veliinu tabele stranica. To se moe postii poveanjem veliine stranica, ali, za krae programe koji ne koriste sve stranice virtuelnog adresnog prostora, efikasnije reenje je organizacija tabele stranica u dva (ili vie) nivoa. Pri tome se na prvom nivou nalazi tabela, iji elementi sadre adrese tabela na drugom nivou. Elementi tabela sa drugog nivoa sadre fizike adrese stranica. Kada tabela stranica ima dva nivoa, najznaajniji biti virtuelne adrese indeksiraju elemente tabele stranica sa prvog nivoa. Preostali biti sadre adresu virtuelne stranice i unutranju adresu. Adresa virtuelne stranice indeksira element tabele sa drugog nivoa. Adresu ove tabele sadri indeksirani element tabele sa prvog nivoa (slika 8.4.19).
indeks tabele stranica 1. nivoa adresa virtuelne stranice

unutranja adresa

virtuelna adresa

tabela stranica 1. nivoa

...

...
tabele stranica 2. nivoa

...

adresa fizike stranice

fizika adresa

Slika 8.4.19 Tabela stranica iz dva nivoa

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

203

Prednost organizacije tabele stranica u dva nivoa je da ona zahteva postojanje samo tabele sa prvog nivoa i samo korienih tabela sa drugog nivoa. Njih ima malo za kratke programe, jer oni zauzimaju malo stranica. Na primer, ako postoji 2n virtuelnih stranica, toliko elemenata ima odgovarajua tabela stranica. Za tabelu stranica iz dva nivoa, tabela stranica sa prvog nivoa ima 2 m elemenata (m<n), a 2m tabela stranica sa drugog nivoa imaju po 2 n-m elemenata. Kada se koristi samo jedna tabela stranica sa drugog nivoa, to je mogue ako programu ne treba vie od 2n-m virtuelnih stranica, za tabele stranica sa oba nivoa treba ukupno 2m+2n-m elemenata, to je znatno manje od 2 n elemenata. Za n=8 i m=4 u prvom sluaju treba 24+24= 25 elemenata, to je znatno manje od 28 elemenata. Virtuelne adrese koristi procesor, ali je zgodno da ih koriste i kontroleri. Da bi to bilo mogue, neophodno je osposobiti kontrolere za pretvaranje virtuelnih adresa u fizike, ali i osposobiti operativni sistem, tako da podrava i ovakvo pretvaranje adresa. MEMORIJSKA HIJERARHIJA Ideja memorijske hijerarhije je zasnovana na osobini lokalnosti izvravanja programa, a njen cilj je da kombinovanjem memorija raznih cena, kapaciteta i vremena pristupa ostvari to vei kapacitet ukupne memorije, po to nioj ceni i uz to krae srednje vreme pristupa. Pri tome, na viim nivoima memorijske hijerarhije se nalaze memorije manjeg kapaciteta, vie cene i kraeg vremena pristupa. Ovo vreme je krae delom zbog skupocenije tehnologije, a delom zbog toga to manja memorija uvodi manje kanjenja signala. Memorijska hijerarhija ima etiri osnovna nivoa. Na prvom (najviem) nivou, nalaze se procesorski registri. Zato se kapacitet ovoga nivoa izraava u bajtima, a vreme pristupa odgovara procesorskom ciklusu. Na drugom nivou nalazi se skrivena memorija. Njen kapacitet se izraava u kilobajtima, a vreme pristupa je oko 2 procesorska ciklusa. Na treem nivou nalazi se radna memorija. Njen kapacitet se izraava u megabajtima, a vreme pristupa je priblino 10 procesorskih ciklusa. Na etvrtom (najniem) nivou nalazi se masovna memorija. Njen kapacitet se izraava u gigabajtima, a vreme pristupa je priblino 10 6 procesorskih ciklusa. Do prebacivanja kopija sadraja sa niih na vie nivoe dolazi kada se otkrije da na najviem nivou nema kopije potrebnog sadraja. Ovo se naziva promaaj, za razliku od pogotka, kada se na najviem nivou pronae kopija potrebnog sadraja. O prebacivanju kopija sadraja lokacija sa drugog na prvi nivo brine kompajler, odnosno, mainske naredbe koje on generie. O prebacivanju kopija sadraja linija sa treeg na drugi nivo brine procesor, odnosno njegov kontroler skrivene memorije. O prebacivanju kopija sadraja stranica sa etvrtog na trei nivo brinu procesor, odnosno njegov kontroler virtuelne memorije i operativni sistem. Prebacivanje kopija sadraja stranica sa etvrtog nivoa na trei nivo pokree procesor, ali, poto je to prebacivanje znatno dugotrajnije od prekljuivanja,

204

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

procesor ne eka na kraj prebacivanja, nego se prekljuuje na izvravanje drugog programa. Zato u ovom prebacivanju uestvuje i operativni sistem. Prebacivanje kopije sadraja linije sa treeg na drugi nivo je znatno krae od prekljuivanja, pa zato procesor pokree ovakvo prebacivanje i eka njegov kraj. U svakom sluaju, procesor podrava memorijsku hijerarhiju, ako brzo proverava da li postoji kopija traenog sadraja u viim nivoima memorijske hijerarhije, i ako izaziva odgovarajui prekid, radi aktiviranja operativnog sistema, kada se na treem nivou memorijske hijerarhije ne pronae kopija sadraja traene stranice. Verovatnoa promaaja zavisi od veliine linije/stranice. Ako su linije/stranice suvie male, tada se u njima ne nalaze kopije sadraja svih lokacija koje su obuhvaene prostornom lokalnou izvravanja programa, pa se tada esto javljaju promaaji. S druge strane, ako su linije/stranice prevelike, tada ih moe manje stati u drugi/trei nivo memorijske hijerarhije, pa to uzrokuje este promaaje. Zato se veliina linija kree od 4 do 128 bajta, a veliina stranica od 512 do 8192 bajta. PROBLEM SINHRONIZACIJE Potreba za brim reagovanjem raunara na vanjske dogaaje zahteva da se vreme obrade prekida skrati. Zato obraiva prekida obavlja samo neodloan deo posla, a ostalo preputa pozadinskom procesu. Pozadinski proces preuzima od obraivaa prekida podatke posredstvom deljenog bafera. Ako obrada prekida prekine pozadinski proces u preuzimanju podataka iz deljenog bafera i izmeni sadraj ovog bafera, pozadinski proces e preuzeti deo starog i deo novog sadraja ovog bafera. Na primer, to moe da se desi, ako obraiva prekida u deljeni bafer smeta koordinate pozicije kursora na ekranu, a pozadinski proces preuzima ove koordinate da bi prikazao kursor u odgovarajuoj poziciji na ekranu. Ako je deljeni bafer do prekida sadrao koordinate (0,0) i ako je obrada prekida izmenila ove koordinate na (1,1), tada je pozadinski proces mogao pre prekida da preuzme apscisu 0, a posle prekida ordinatu 1. Rezultat ovakvog sleda dogaaja je prikazivanje kursora na pogrenoj poziciji (0,1). Opisani problem se naziva problem sinhronizacije. On se reava onemoguavanjem prekida dok pozadinski proces preuzima sadraj deljenog bafera. Time se spreava da za vreme preuzimanja sadraja ovog bafera taj sadraj bude izmenjen. Problem sinhronizacije se javlja i izmeu procesa koji dele neki resurs raunara, a predstavlja direktnu posledicu nepredvidivosti prekljuivanja procesora sa procesa na proces. Prekljuivanja su nepredvidiva, jer ih izazivaju obraivai prekida, ija aktiviranja imaju sluajnu prirodu. Tako, ako dva procesa koriste isti tampa, tada njihov meusobni nesinhronizam moe da uzrokuje izmeanost znakova koje su oni uputili na isti tampa. Problem deljenih resursa se reava zauzimanjem deljenog resursa pre njegovog korienja samo za jedan proces i oslobaanjem tog resursa nakon njegovog korienja. To podrazumeva i privremeno zaustavljanje aktivnosti procesa, kada oni pokuaju da zauzmu

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

205

prethodno zauzeti deljeni resurs. Zaustavljeni procesi nastavljaju svoju aktivnost jedan po jedan tek kada deljeni resurs bude mogue zauzeti za nekog od njih, to se desi nakon oslobaanja dotinog resursa. Zauzimanje i oslobaanje resursa podrazumeva izmenu stanja resursa. Stanja resursa su slobodan i zauzet. Ona se mogu reprezentovati vrednostima 0 i 1 (respektivno). Za uvanje stanje resursa potrebna je posebna deljena memorijska lokacija. Ova lokacija stanja resursa je deljena, jer joj pristupaju razni procesi prilikom zauzimanja i oslobaanja resursa. Zauzimanje resursa podrazumeva izmenu njegovog stanja. Ova izmena se ostvaruje pisanjem vrednosti 1 u lokaciju stanja resursa. I oslobaanje resursa podrazumeva izmenu njegovog stanja. Ova izmena se ostvaruje pisanjem vrednosti 0 u lokaciju stanja resursa. Meutim, prilikom zauzimanja resursa, pre izmene njegovog stanja, mora se proveriti da li je resurs ve zauzet. Prema tome, pisanju vrednosti 1 u lokaciju stanja resursa, mora da prethodi itanje te lokacije. Poto su itanje i pisanje memorijskih lokacija nezavisne operacije, izmeu njih moe doi do obrade prekida. To znai da, nakon to jedan proces u okviru zauzimanja resursa proita lokaciju stanja resursa, obrada prekida moe izazvati prekljuivanje procesora na drugi proces. Ako taj drugi proces pokua da zauzme isti resurs, i on e proitati lokaciju stanja istog resursa. Na ovaj nain e oba procesa e preuzeti istu vrednost iz lokacije stanja resursa. Ako je preuzeta vrednost 0, oba procesa e zakljuiti da je resurs slobodan i zauzee ga. Nakon toga je mogu meusobni nesinhronizam ovih procesa. Problem se ne bi javio, ako bi u toku zauzimanja resursa itanje i pisanje lokacije stanja ovog resursa bili nedeljivi. Njihova nedeljivost se moe ostvariti eksplicitnim ili implicitnim onemoguenjem prekida. Eksplicitno onemoguenje prekida podrazumeva izmenu bita prekida u registru stanja. Implicitno onemoguenje prekida podrazumeva postojanje mainske naredbe, ije izvravanje obuhvata i itanje i pisanje iste memorijske lokacije. Ako se obezbedi nedeljivost itanja i pisanja lokacije stanja resursa, tada najvie jedan proces moe da zatekne resurs u stanju slobodan, jer se u lokaciju stanja resursa upisuje vrednost 1 odmah po itanju vrednosti 0. Prema tome, do oslobaanja resursa svi procesi mogu preuzeti samo vrednost 1 iz lokacije stanja resursa.

8.5 PERIOD OKO 1980 GODINE


Tehnoloku osnovu raunara etvrte generacije su inila visoko integrisana kola (LSI, Large Scale Integration). Tehnologija visoke integracije se oslanjala na gotovo potpuno automatizovano projektovanje i omoguavala je gotovo potpuno automatizovanu masovnu proizvodnju, to je dovelo do velikog sniavanja cene. Pored toga, na ovaj nain proizvedeni ipovi (sa stotinama hiljada tranzistora na sebi) su imali prednosti u pogledu pouzdanosti, brzine rada, potronje energije i toplotnog zraenja. Zahvaljujui tehnologiji visoke integracije, poluprovodnike memorije (RAM, Random Access Memory) su istisnule iz upotrebe memorije sa magnetnim jezgricama, jer su omoguile pravljenje veih i pouzdanijih radnih memorija sa

206

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

kraim vremenom pristupa i niom cenom. Po nainu funkcionisanja poluprovodnike memorije su podeljene na statike SRAM (Static RAM) i dinamike DRAM (Dynamic RAM). Kod statikih memorija, za uvanje binarnih vrednosti su sluile elije, organizovane kao flip-flop, koje su sadrale do 6 tranzistora. Kod dinamikih memorija, za uvanje binarnih vrednosti su sluile elije koje su sadrale tranzistor i kondenzator, iji naboj je predstavljao binarnu vrednost. Ovakve elije su zahtevale periodino osveavanje, da bi se nadoknadilo pranjenje kondenzatora. Njihovo itanje je, iz istih razloga, bilo potencijalno destruktivno. Zato je vreme ciklusa dinamike memorije bilo due od vremena njenog pristupa, za razliku od statike memorije, izmeu ijeg vremena ciklusa i vremena pristupa nije bilo razlike. I statike i dinamike memorije su imale dvodimenzionalnu organizaciju, radi obaranja proizvodne cene ipova. Tako su za 2n adresnih linija bila potrebna 2 dekodera. Jedan je dekodirao n adresnih linija reda, a drugi je dekodirao n adresnih linija kolone kvadratne matrice. Oba dekodera su imala n ulaza i 2n izlaza. Jednodimenzionalna organizacija je zahtevala jedan dekoder sa 2n ulaza i sa 22n izlaza (slika 8.5.1).
16 selektorskih linija (po jedna za svaku memorijsku lokaciju)

adresa

. . . .

dekoder za jednodimenzionalnu organizaciju 4x4 selektorskih linija (po dve za svaku memorijsku lokaciju) dekoderi za dvodimenzionalnu organizaciju

adresa

Slika 8.5.1 Primer jedno i dvodimenzionalne organizacije radne memorije sa 16 lokacija Za proizvodnju elije DRAM ipa bilo je potrebno manje komponenti nego za proizvodnju elije SRAM ipa, pa je DRAM ip sadrao vie elija od SRAM ipa. Zbog toga je DRAM ip imao vei kapacitet od SRAM ipa za istu cenu, odnosno cena jednog bita DRAM ipa je bila nia od cene jednog bita SRAM ipa.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

207

Meutim, vreme pristupa DRAM ipa je bilo due od vremena pristupa SRAM ipa. Iz prethodnog je sledilo da su DRAM ipovi bili podesni za radnu memoriju, dok su SRAM ipovi bili podesni za skrivenu memoriju. Zato je kod DRAM ipova u prvom planu bilo poveanje njihovog kapaciteta i sniavanje njihove cene. Tome je doprinosilo i smanjenje broja adresnih linija DRAM ipova na polovinu, uz njihovo vremensko multipleksiranje, tako da su adresne linije prvo prenosile adresu reda, a onda adresu kolone. To je jo vie produavalo vreme pristupa DRAM ipa. Prema tome, za isti nain proizvodnje, DRAM ip je imao 16 puta vei kapacitet od SRAM ipa, od 8 do 16 puta due vreme pristupa i oko 10 puta niu cenu bita. Primena tehnologije visoke integracije je stvorila uslove za poboljanje mogunosti raunara, kao to je, na primer, proirenje adresnog prostora na 32 bita. Takav pristup je doveo do pojave velikih raunara etvrte generacije, kao to su raunari iz serije IBM 370-XA (eXtended Architecture), koja je predstavljala poboljani produetak IBM 370 familije raunara. Isti pristup je omoguio i pojavu mini-raunara etvrte generacije, koji su se, po osobinama kao to je primena koncepata virtuelne i skrivene memorije, ili proirenje adresnog prostora na 32 bita, pribliili velikim raunarima etvrte generacije. Ipak izmeu velikih i mini-raunara je i dalje ostao jaz u pogledu brzine, veliine masovne memorije, broja terminala i, svakako, cene. Grupi mini-raunara etvrte generacije su pripadali raunari iz serije DEC VAX (Virtual Address eXtension), nastali kao poboljani nastavak PDP11 familije raunara. Drugi nain primene tehnologije visoke integracije je vodio u smeru sniavanje cene, na raun skromnije funkcionalnosti. Kao rezultat ovakvog pristupa, nastali su mikro-raunari (microcomputer). Pomenuti naziv je bio posledica, ne samo injenice da su cene i mogunosti mikro-raunara predstavljale samo deli cene i mogunosti mini i velikih raunara etvrte generacije, nego i injenice da su fizike dimenzije mikro-raunara bile znatno manje od fizikih dimenzija mini i velikih raunara. Tako je celi mikro-raunar zauzimao samo jednu tampanu plou, a njegov mikro-procesor (microprocessor) samo jedan ip. Za proizvoae, koji su iskoristili tehnologiju visoke integracije za sniavanje cena, na raun skromnije funkcionalnosti svojih proizvoda, karakteristine su mikro-procesorske familije ipova. Ovakve familije su nastajale oko pojedinih mikro-procesora i omoguavale su korisnicima da samostalno prave sopstvene mikro-raunare. Meu ovakvim proizvoaima prednjaio je Intel, koji je jo 1971. godine izbacio na trite prvi (etvoro bitni) mikro-procesor Intel 4004, a 1972. godine 8 bitni mikro-procesor Intel 8080. Njega je pratila Motorola, koja je 1974. godine izbacila na trite svoj 8 bitni mikro-procesor Motorola 6800. Prvi mikro-procesori su bili veoma skromnih mogunosti, imali su akumulatorske arhitekture, a njihova pojava je tek nagovestila buran razvoj mikroprocesorskih familija. Do njega je dolo krajem sedamdesetih godina, kada su se pojavili 16 bitni mikro-procesori kao to su Intel 8086 i Motorola 68000. Pojava ova dva mikro-procesora je oznaila poetak razvoja dve familije mikro-procesora (Intel 80x86 i Motorola 680x0), koje su imale ogroman uticaj na trite. Razvoj

208

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

mikro-procesora se kretao u smeru poboljanja njihove funkcionalnosti, ime su se oni pribliavali mogunostima mini-raunara etvrte generacije. Proirenje mogunosti mikro-procesora se zasnivalo na korienju dodatnih ipova, koji su nazivani periferni procesori (peripheral processor), ako nisu bili namenjeni za odreeni mikro-procesor, a ako su bili namenjeni za odreeni mikro-procesor, tada su nazivani koprocesori (coprocessor). Ovakvi ipovi su bili specijalizovani za pojedine poslove, kao to je rukovanje virtuelnom memorijom, ili kao to je aritmetika realnih brojeva (na primer, Intel 8087 arithmetic coprocessor). Meu ipovima proizvedenim u tehnologiji visoke integracije postojali su i ipovi, namenjeni za sklapanje procesora eljenih osobina, kao to je, na primer, bio ip sa segmentnom aritmetiko-logikom jedinicom (bit-sliced arithmetic-logic unit), koji je omoguavao pravljenje aritmetiko-logike jedinice sa eljenom preciznou. Zahvaljujui veoma niskoj ceni mikro-raunara, prve njihove primene su vezane za razne oblike automatskog upravljanja. Ovakve primene su uticale da proizvoai mikro-raunara usvoje pristup otvorene arhitekture. Na primer, Intel je takav pristup zasnovao na svojoj Multibus sabirnici, a Motorola na svojoj VME sabirnici. Zato nije sluajno da se tipina organizacija mikro-raunara nije razlikovala od tipine organizacije mini-raunara tree generacije. U okviru primena, vezanih za automatsko upravljanje, mikro-raunari su bili esto potpuno posveeni veoma jednostavnim poslovima, kao to je bilo, na primer, prikupljanje podataka u reimu prozivke (polling). U toku prozivke, mikro-procesori su neprekidno proveravali stanja pojedinih izvora podataka, radi otkrivanja prispea podataka i radi njihovog preuzimanja i uvanja do trenutka njihovog prosleivanja. Ovakav nain rada je stavljao mikro-procesor u poziciju da posreduje u prenosu svih podataka, pa se tada organizacija mikro-raunara nije razlikovala, po nainu rada, od organizacije raunara prve generacije. Primene, vezane za automatsko upravljanje, su dovele do pojave mikroraunara na ipu, nazvanih mikro-kontroleri (microcontroller), kao to su, na primer, bili mikro-kontroler Intel 80186 ili Motorola 6801. Niska cena mikro-raunara je omoguila da se oni nau u ulozi kontrolera, na primer, mini-raunara etvrte generacije i da budu potpuno posveeni poslovima upravljanja ureajima, kao to su ulazni i izlazni ureaji ili jedinice masovne memorije. Tako, u sluaju tipine organizacije mini-raunara etvrte generacije, uloga kontrolera ulaznih i izlaznih ureaja, kao i kontrolera jedinica masovne memorije dodeljena je mikro-raunarima (slika 8.5.2).

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

209

PROCESOR

KONTROLER VIRTUELNE MEMORIJE KONTROLER SKRIVENE MEMORIJE

JEDINICE MASOVNE MEMORIJE

ULAZNO IZLAZNI UREAJI

RADNA MEMORIJA

KONTROLER

... KONTROLER

SABIRNICA

Slika 8.5.2 Tipina organizacija mini-raunara etvrte generacije Skrivena memorija se zasnivala na SRAM ipovima, a radna memorija se zasnivala na DRAM ipovima. Ulazno-izlazni ureaji su obuhvatali video terminale i tampae. Postavljanje kontrolera skrivene memorije izmeu sabirnice i kontrolera virtuelne memorije omoguuje da do skrivene memorije stiu samo fizike adrese, ime se izbegava problem pojave vieznanih virtuelnih adresa u skrivenoj memoriji. Mikro-raunari su omoguili interaktivni rad predvidivog odziva, jer su, zahvaljujui niskoj ceni, mogli u potpunosti biti posveeni jednom korisniku. Za ovakve, personalne raunare vezana je masovna upotreba grafikih terminala, iji ekran je sadrao matricu taaka ili piksela (PIXEL, PIcture matriX ELement), od kojih je svaka bila zasebno pristupana. Grafiki terminali su olakali interaktivni rad, jer su komunikaciju sa raunarom sveli na izbor mogunosti, prikazanih u obliku pregledno rasporeenih tekstualnih objanjenja (menu) ili crtea (icon). Uz prisustvo odgovarajueg pokazivakog ureaja (mouse), smanjena je upotreba tastature i pojednostavljen je i ubrzan rad korisnika. Za personalne raunare je vezana pojava magnetnih disketa (floppy diskette), koje su, bar u tom segmentu trita, istisnule magnetne trake, preuzimajui od njih arhivsku ulogu. Na trite personalnih raunara najvei uticaj je izvrio IBM, kada je 1981. godine izbacio IBM PC model personalnog raunara, koji je bio baziran na mikro-procesorskoj familiji Intel 8088 (verzija mikro-procesora Intel 8086, sa 8 bitnom sabirnicom). Operativni sistem MS-DOS (MicroSoft Disk Operating System) ovog personalnog raunara je proizveo Microsoft. IBM PC je imao otvorenu arhitekturu, to je dozvolilo mnogim proizvoaima da samostalno prave i prodaju njegove verne kopije (clone). Personalni raunari su otvorili novi i ogroman segment trita, sa izuzetno velikim povratnim uticajem na razvoj raunara. Nain upotrebe

210

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

personalnih raunara je diktirao da oni imaju sopstveno rashlaivanje i da ne zahtevaju posebno klimatizovane prostorije. Mana personalnih raunara je bila da su onemoguili saradnju korisnika, jer je svaki korisnik imao svoj raunar, izolovan od ostalih raunara. Da bi se omoguila saradnja korisnika, bilo je neophodno povezati personalne raunare. Vezivanje personalnih raunara kao terminala za mini ili velike raunare posredstvom telefonskih linija je omoguavalo korisnicima da ouvaju oblike saradnje, kao to je razmena poruka i datoteka ili deljenje skupih raunarskih resursa. U ovakvim okolnostima, personalni raunari su emulirali terminale i omoguavali su korisnicima interaktivni rad u reimu ravnomerne raspodele procesorskog vremena mini i velikih raunara. Pri tome, na oba kraja telefonske linije, i sa strane personalnog raunara i sa strane mini ili velikog raunara, je bilo neophodno prisustvo modema. Modem je obavljao modulaciju i demodulaciju, odnosno pretvarao digitalne signale jednosmerne struje u analogne signale naizmenine struje i obrnuto. Potreba meusobnog povezivanja, ne samo personalnih, nego i mini i velikih raunara, je dovela do razvoja lokalnih (LAN, Local Area Network) i globalnih (WAN, Wide Area Network) mrea raunara. Lokalne mree su omoguavale meusobno povezivanje raunara ija udaljenost nije prelazila nekoliko kilometara. Za to su korieni posebni komunikacioni kanali, sa propusnou od nekoliko miliona bita u sekundi. Globalne mree su omoguavale meusobno povezivanje raunara udaljenih hiljadama kilometara. Za to su koriene javne telefonske linije sa propusnou od najvie nekoliko hiljada bita u sekundi. Prve globalne mree su razvijene za raunare tree generacije (ARPAnet, Advanced Research Project Agency), ali su ule u rairenu upotrebu tek za raunare etvrte generacije. Mree raunara su omoguile saradnju korisnika raznih raunara, ali pod uslovom da korisnici unapred znaju koju vrstu usluga mogu da dobiju na kome od tuih raunara, kao i da poznaju osobine ne samo svog, nego i osobine tuih raunara. To je oteavalo saradnju korisnika, jer su se raunari, povezani mreom, meusobno veoma razlikovali, poto su poticali od razliitih proizvoaa i imali razliite operativne sisteme. Da bi se bar donekle umanjile komplikacije saradnje korisnika, iji raunari su bili povezani mreom, odnosno, da bi se smanjio broj injenica, ije poznavanje je bilo neophodno za ovakvu saradnju, napravljeni su mreni operativni sistemi (network operating system). Oni su objedinili sisteme datoteka raznih raunara, povezanih mreom, u jedinstven sistem datoteka. Mreni operativni sistemi su predstavljali dogradnju postojeih operativnih sistema. Zahvaljujui mrenim operativnim sistemima, korisnici su mogli da pristupaju datotekama sa drugih, razliitih raunara kao svojim datotekama. Zadatak mrenog operativnog sistema je bio da prepozna kada korisnik eli da pristupi datoteci na tuem raunaru i da to omogui bez obzira na razlike izmeu korisnikog i tueg raunara. Iako su olakavali saradnju korisnika, mreni operativni sistemi nisu

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

211

potpuno sakrivali od korisnika postojanje mree, jer nije bilo mogue idealno (potpuno) objediniti razliite sisteme datoteka u jedinstven sistem datoteka. Zahvaljujui tehnologiji visoke integracije, raunari etvrte generacije su bili znatno bri od raunara tree generacije. Uprkos tome, oni nisu bili dorasli potrebama velikih nauno tehnikih prorauna, koji su sadrali numerike obrade ogromnog broja podataka i morali da budu zavreni u srazmerno kratkom vremenu. Na primer, obimni prorauni buduih temperatura vazduha, zasnovani na sloenim simulacionim modelima atmosfere, mogli su da poslue kao osnova vremenske prognoze samo ako su bili zavreni u relativno kratkom roku nakon prikupljanja trenutnih temperatura. Da bi se, u okviru postojee tehnologije, odgovorilo na ovakve zahteve, bilo je potrebno omoguiti to vie istovremenih obrada nezavisnih podataka. To nije bilo mogue bez paralelizma u radu procesora. Ovakav paralelizam se mogao ostvariti (1) uvoenjem vie procesora opte namene u organizaciju raunara etvrte generacije, ali i (2) preklapanjem rada pojedinih sastavnih delova jednog procesora. Prvi pristup je zasnovan na mogunosti pravljenja komercijalnih vieprocesorskih raunara sa zajednikom sabirnicom. Drugi pristup je zasnovan na zapaanju da se izvravanje mainskih naredbi svakako sastoji od vie relativno nezavisnih aktivnosti, kao to su dobavljanje mainske naredbe, njeno dekodiranje, dobavljanje njenih operanada, obavljanje operacije i odlaganje rezultata. Sekvencijalno obavljanje ovih aktivnosti je zapoljavalo u svakom trenutku samo pojedine delove procesora. Razlaganje izvravanja naredbe na meusobno nezavisne korake iste duine, jednake ciklusu procesora, i posveivanje posebnog dela procesora svakom od ovih koraka, omoguilo je preklapanje rada ovih delova. Pri tome se podrazumevalo da su ovakvi delovi ili stepeni (stage) povezani u protone strukture (pipeline). Svaki, stepen iz protone strukture je preuzimao od svog prethodnika rezultate njegovog rada, a svom sledbeniku iz protone strukture je prosleivao rezultat svog rada. Aktivnost svih zaposlenih stepena je zapoinjala istovremeno, jer su svi koraci bili iste duine. Znai, u prvom koraku rada procesora, prvi stepen je dobavljao prvu mainsku naredbu. Zatim, u drugom koraku, prvi stepen je dobavljao drugu mainsku naredbu, dok je drugi stepen dekodirao prvu mainsku naredbu. U treem koraku, prvi stepen je dobavljao treu mainsku naredbu, drugi stepen je dekodirao drugu mainsku naredbu, a trei stepen je dobavljao prvi operand prve mainske naredbe, i tako dalje (slika 8.5.3).

212

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

ciklusi 1. naredba 2. naredba 3. naredba 4. naredba 5. naredba ... procesora 1. dobavljanje naredbe 2. dekodiranje dobavljanje naredbe naredbe 3. dobavljanje dekodiranje dobavljanje operanada naredbe naredbe 4. obavljanje dobavljanje dekodiranje dobavljanje naredbe operanada naredbe naredbe 5. odlaganje obavljanje dobavljanje dekodiranje dobavljanje rezultata naredbe operanada naredbe naredbe 6. odlaganje obavljanje dobavljanje dekodiranje ... rezultata naredbe operanada naredbe 7. odlaganje obavljanje dobavljanje ... rezultata naredbe operanada 8. odlaganje obavljanje ... rezultata naredbe 9. odlaganje ... rezultata ... ... Slika 8.5.3. Preklapajui nain rada procesora sa protonom strukturom Organizacija procesora sa protonom strukturom je zahtevala punu meusobnu nezavisnost stepena protone strukture, radi preklapanja njihovih aktivnosti. Pored toga, ona je zahtevala i pravovremeno (istovremeno) pripremanje podataka za svaki od zaposlenih stepena. Na primer, bilo je neophodno stvoriti uslove da u istom procesorskom ciklusu budu dobavljeni mainski oblik jedne i operand druge naredbe. Pri tome, svi stepeni protone strukture nisu uvek bili zaposleni, jer je izvravanje razliitih naredbi obuhvatalo razliit broj koraka. Na primer, za obavljanje naredbe sabiranja celih brojeva bio je dovoljan samo 1 korak, dok su za obavljanje naredbe sabiranja realnih (floating-point) brojeva bila potrebna bar 4 koraka: (1) poreenje eksponenata, (2) podeavanje frakcija, (3) sabiranje frakcija i (4) normalizacija rezultata. Zato su, na primer, stepeni, posveeni pojedinim koracima sabiranja realnih brojeva, uvek bili nezaposleni, kada su izvravane samo naredbe celobrojnog sabiranja. Pod pretpostavkom da se posmatraju izvravanja naredbi koja obuhvataju k koraka i da se svaki korak zavri u toku jednog procesorskog ciklusa sa trajanjem od t vremenskih jedinica, za m izvravanja naredbi bez preklapanja potrebno je:

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

213

mkt = m(k 1)t + mt


vremenskih jedinica. Znai, srednje vreme izvravanja jedne naredbe bez preklapanja je:

kt = (k 1)t + t
vremenskih jedinica. Pod prethodnim, uslovima za m izvravanja naredbi sa preklapanjem potrebno je:

(k 1)t
vremenskih jedinica da se napuni protona struktura i uspostavi puno preklapnje. Nakon toga u svakom od narednih m ciklusa se zavri po jedna naredba. Prema tome, za m izvravanja naredbi sa preklapanjem potrebno je ukupno:

(k 1)t + mt
vremenskih jedinica. Znai, srednje vreme izvravanja jedne naredbe sa preklapanjem je:

(k 1) t + t
m
vremenskih jedinica. Ovo srednje vreme je priblino jednako vremenu jednog procesorskog ciklusa za veliko m, jer je tada preklapanje dugotrajno, pa se vreme punjenja protone strukture raspodeljuje na veliki broj preklopljenih izvravanja naredbi. Iz prethodnog sledi da se srednje vreme izvravanja naredbe smanjuje kada k postaje vee, jer se tada izvravanje naredbe razlae na vie kraih koraka, pa procesorski ciklus moe biti krai. Meutim, za veliko k broj stepena protone strukture je veliki, pa je veliko i kanjenje signala u njoj. Zato praktini razlozi ograniavaju duinu protone strukture. Puni efekat preklapanja izostaje ako se smanji dugotrajnost preklapanja. Do toga dovodi pojava meuzavisnosti naredbi, kada rezultat izvravanja jedne naredbe predstavlja operand druge naredbe. To dovodi do zaustavljanja punjenja protone strukture drugom naredbom, dok njen neophodni operand ne postane raspoloiv. Na ovaj nain se protona struktura prazni. Isti efekat imaju izvravanja upravljakih naredbi, kao i obrade prekida.

214

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Verovatnoa meuzavnisnosti naredbi je proporcionalna duini protone strukture. to je ona dua, sa vie stepena, preklapa se izvravanje vie naredbi, pa tako rastu izgledi da se meu njima pojave meusobno zavisne naredbe. Znai, na dugotrajnost preklapanja utie arhitektura naredbi, jer je lake ostvariti dugotrajna preklapanja izvravanja jednostavnijih naredbi, poto je za njih protona struktura kraa, pa se preklapa izvravanje manje naredbi. Poveavanju dugotrajnosti preklapanja su mogli da doprinesu kompajleri, ako su, pri generisanju mainskog programa, u njemu rasporeivali mainske naredbe tako da su maksimalno razdvajali meusobno zavisne naredbe. Pri tome ne sme doi do izmene znaenja programa. Dugotrajnost preklapanja je bilo mogue ostvariti za istovrsne obrade dugakih nizova podataka, tipinih za velike nauno tehnike proraune. Za ovakve proraune je bilo tipino i da se izvravanje iste naredbe ponavlja za dugake nizove ili vektore podataka. Da bi se izbeglo viestruko dobavljanje i dekodiranje iste naredbe, bilo je uputno uvesti vektorske naredbe. One su omoguile da se, nakon jednog dobavljanja i dekodiranja, ista operacija primenjuje na vektore podataka. Vektori podataka su bili smeteni ili u uzastopnim lokacijama radne memorije ili u posebnim vektorskim registrima procesora. U prvom sluaju, mainski oblik vektorske naredbe je sadrao poetne adrese vektora podataka, a u drugom sluaju, on je sadrao adresu grupe vektorskih registara. Vektorske naredbe se najee odnose na aritmetiku realnih brojeva. U toku izvravanja takvih vektorskih naredbi ostvaruju se dugotrajna preklapanja raznih koraka koji pripadaju obradama raznih elemenata vektora podataka. Izvravanje vektorskih naredbi je zahtevalo da se u svakom procesorskom ciklusu pristupa jednom elementu vektora podataka. Ako je koriena radna memorija sa vremenom pristupa od n procesorskih ciklusa, tada je bila potrebna modularna organizacija radne memorije (interleaved memory) u kojoj radnu memoriju sainjava n nezavisnih memorijskih modula. Pod pretpostavkom da su uzastopni elementi vektora podataka ravnomerno raspodeljeni po lokacijama ovih modula, istovremeno pokretanje itanja po jednog elementa vektora podataka iz lokacija razliitih memorijskih modula, bi, nakon n procesorskih ciklusa, dovelo do preuzimanja n uzastopnih elemenata vektora podataka. Preklapanje isporuke pojedinih od ovih n elemenata sa istovremenim pristupanjem novoj grupi od n uzastopnih elemenata, bi obezbedilo da srednje vreme pristupa elementu vektora podataka bude priblino jednako jednom procesorskom ciklusu. Ravnomerna raspodela elemenata vektora podataka po raznim memorijskim modulima se automatski ostvaruje kada manje znaajni biti adrese memorijske lokacije adresiraju memorijski modul, a znaajniji biti ove adrese predstavljaju lokalnu adresu modula (slika 8.5.4).

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

215

adresa lokacije modula 000 010 100 110 001 011 101 111

adresa modula

Slika 8.5.4 Modularno organizovana radna memorija sa osam lokacija raspodeljenih u dva memorijska modula Zahvaljujui prethodnoj interpretaciji adresa memorijskih lokacija, prvi element vektora podataka dospeva u nultu lokaciju memorijskog modula 0, drugi u nultu lokaciju memorijskog modula 1 i tako dalje. Prema tome, kada se adresa prvog elementa vektora podataka uputi ka modularno organizovanoj radnoj memoriji sa slike 8.5.4, najznaajniji biti ove adrese istovremeno adresiraju 2 lokacije iz raznih memorijskih modula. Zato je mogue istovremeno pristupiti tim lokacijama. Pod uslovom da se uvek pristupa svim uzastopnim elementima vektora podataka, srednje vreme pristupa svakom elementu odgovara polovini vremena pristupa jednoj lokaciji. Modularna organizacija radne memorije omoguuje procesoru i kontrolerima da istovremeno pristupaju raznim modulima, jasno, ako postoje nezavisni pristupni putevi, to, takoe, doprinosi brem radu raunara. Za uspeno korienje vektorskih naredbi i modularno organizovane radne memorije, neophodna je podrka kompajlera, radi pretvaranja repetitivnih delova programa, pisanih programskim jezicima visokog nivoa, u vektorske naredbe. Raunari etvrte generacije, iji su procesori radili u reimu preklapanja i uz to podravali vektorske naredbe, odskakali su po broju obraenih podataka u jedinici vremena od ostalih raunara etvrte generacije, pa su zasluili ime superraunari (supercomputer). Super-raunari su, pored vektorske jedinice, namenjene za podrku vektorskih naredbi, sadravali i preklapajuu skalarnu jedinicu, namenjenu za podrku obinih ili skalarnih naredbi. Mogunosti super-raunara su bile veoma impresivne, naroito kada su se posmatrali kratkotrajni periodi u kojima je ostvareno puno preklapanje u radu vektorske jedinice. Poto su ove mogunosti bile dorasle zahtevima velikih nauno tehnikih prorauna, super-raunari su svojom

216

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

pojavom otvorili novi segment trita raunara. Iako je pojava prvih raunara iji su procesori radili u reimu preklapanja vezana za drugu generaciju raunara (IBM 7030 ili Control Data Corporation CDC 6600, na primer), a pojava prvih vektorskih raunara vezana za treu generaciju raunara (Control Data Corporation STring ARray, CDC STAR-100, i Texas Instruments Advanced Scientific Computer, TI ASC), tek je tehnologija visoke integracije stvorila uslove za puni trini prodor super-raunara. Uspostavljanje stabilnog trita super-raunara je vezano za pojavu super-raunara Cray-1, koga je 1976. godine proizveo Cray Research. Mogunosti super-raunara su poveavane multipliciranjem procesora, kao u sluaju superraunara Cray X-MP, koji se pojavio na tritu 1985. godine. ARHITEKTURA NAREDBI ZA DEC VAX11/780 Arhitektura naredbi za DEC VAX11/780 podrava adresni prostor od 32 bita, koji je organizovan u bajte. Ona podrava virtuelnu memoriju. Ova arhitektura omoguuje rukovanje binarnim vrednostima velikim 1, 2, 4, 8 i 16 bajta, realnim vrednostima od 4, 8 i 16 bajta (floating-point), decimalnim ciframa izraenim kao etvorobitne vrednosti (binary-coded decimal), nizovima znakova (character string) i nizovima cifara (numeric string). U ovoj arhitekturi je na raspolaganju 16 registara od 32 bita, od kojih jedan slui kao pokaziva frejma (frame pointer), drugi slui kao pokaziva steka (stack pointer), a trei kao programski broja. Pored njih, postoji i status registar (processor status word), koji sadri uslovne bite (condition codes). Ova arhitektura omoguuje privilegovani nain rada procesora sa 3 nivoa privilegovanog rada (kernel mode, executive mode, supervisor mode). Ona podrava registarsko adresiranje, indirektno adresiranje sa samouveanjem, indirektno adresiranje sa samoumanjenjem, 4 vrste indeksnog adresiranja, indirektno adresiranje, dvostruko indirektno adresiranje sa samouveanjem i 3 vrste indeksnog indirektnog adresiranja. Svi prethodni naini adresiranja se oslanjanju na registre. Pored njih, postoje jo 4 naina adresiranja (literal addressing mode), namenjena za male konstante, tako da ukupno ima 16 naina adresiranja. Naini adresiranja sa samouveanjem (samoumanjenjem) podrazumevaju da se sadraj korienog registra automatski uvea (umanji) nakon obavljanja naredbe. Dvostruka indirekcija znai da korieni registar sadri adresu memorijske lokacije sa adresom operanda. Indeksna indirekcija znai da je rezultat indeksnog adresiranja adresa memorijske lokacije sa adresom operanda. Kada se indeksno adresiranje koristi za pristupanje elementima nizova, tada se sabiraju poetna adresa niza sa proizvodom indeksa traenog elementa i duine ovog elementa, izraene u bajtima. Ovakav proizvod se naziva skalirani (scaled) indeks. Kod ostalih vrsta indeksnog adresiranja nema skaliranja, nego se sadraj registra sabira sa navedenim odstojanjem (displacement). Kombinovanje programskog brojaa sa indirektnim adresiranjem sa samouveanjem odgovara neposrednom adresiranju. Slino, kombinovanje programskog brojaa sa dvostruko indirektnim adresiranjem sa samouveanjem odgovara apsolutnom adresiranju, u kome se koristi apsolutna

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

217

adresa. Kombinovanje programskog brojaa sa indeksnim adresiranjem odgovara relativnom adresiranju, a kombinovanje programskog brojaa sa indeksnim indirektnim adresiranjem odgovara relativnom indirektnom adresiranju. Mainski format naredbi ove arhitekture izgleda:
8

kod naredbe

Mainski format naredbi obavezno obuhvata bajt sa kodom naredbe. Iza slede eventualno jo jedan bajt sa kodom naredbe i bajti za operande. Operanada moe biti od 0 do 6. Za sve operande su dozvoljeni svi naini adresiranja, jasno, kada imaju smisla, tako da je ostvarena puna ortogonalnost naredbi i naina adresiranja. Naini adresiranja se kodiraju kao kod arhitekture naredbi za DEC PDP11, uz razliku da kodovi operanda i registra zahtevaju po 4 bita. Arhitektura naredbi za DEC VAX11/780 obuhvata sledee vrste naredbi: 1. naredbe za rukovanje podacima (na primer, za prenos i konverziju podataka), 2. naredbe za rukovanje bitima (logike naredbe i naredbe pomeranja), 3. naredbe za celobrojnu binarnu aritmetiku (obuhvaene sve aritmetike operacije), 4. naredbe za celobrojnu decimalnu aritmetiku (obuhvaene sve aritmetike operacije), 5. naredbe za aritmetiku realnih brojeva (obuhvaene sve aritmetike operacije), 6. upravljake naredbe i 7. sistemske naredbe. ARHITEKTURA NAREDBI ZA INTEL 8086 Arhitektura naredbi za INTEL 8086 podrava adresni prostor od 20 bita, koji je organizovan u bajte. Ovaj adresni prostor nije raspoloiv ceo, nego su uvek raspoloiva samo njegova 4 segmenta sa 16 bitnim lokalnim adresnim prostorima: segment naredbi (code segment), segment steka (stack segment), segment podataka (data segment) i dodatni segment (extra segment). Prvi segment je namenjen za pristup mainskim naredbama, drugi za pristup steku, a poslednja dva za pristup podacima. Poloaj pristupanih segmenata odreuju njihove poetne ili bazne (base) adrese koje se nalaze u 16 bitnim segmentnim registrima CS (code segment), SS (stack segment), DS (data segment) i ES (extra segment). Zavisno od sadraja njihovih segmentnih registara, segmenti se mogu i preklapati. Adresa memorijske lokacije se odreuje kao suma skalirane bazne adrese segmenta i njegove unutranje (offset) adrese. Svrha skaliranja bazne adrese je da se ona dopuni sa 4 bita i postane

218

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

20 bitna adresa pre sabiranja. Zato se skaliranje sastoji od mnoenja bazne adrese sa 16, odnosno, od njenog dopunjavanja s desna sa 4 nule. Ova arhitektura omoguuje rukovanje binarnim vrednostima velikim 1 i 2 bajta, decimalnim ciframa izraenim kao etvorobitne vrednosti (packed decimal) i nizovima znakova (character string). Pored 4 segmentna registra, ova arhitektura nudi jo 4 registra podataka AX, BX, CX i DX od 16 bita. Znaajniji (high) i manje znaajan (low) bajt svakog od ovih registara se moe posmatrati kao zaseban registar od 8 bita. Njihove oznake su AH, AL, BH, BL, CH, CL, DH i DL (respektivno). Uloga registara podataka je delom unapred odreena, jer se oni koriste kao podrazumevajui registri. Tako su AX i DX podrazumevajui registri za mnoenje, deljenje i ulaz-izlaz, a CX registar je podrazumevajui za rukovanje nizovima znakova. Postoje i 4 adresna registra od 16 bita: SP (stack pointer), BP (base pointer, frame pointer), SI (source index register) i DI (destination index register). I njihova uloga je delom unapred odreena. Na kraju, postoje jo programski broja IP (instruction pointer) od 16 bita i status registar FLAGS od 8 bita koji sadri uslovne bite (condition code). Arhitektura naredbi za INTEL 8086 podrava neposredno adresiranje, registarsko adresiranje, direktno adresiranje, indirektno adresiranje (pomou registara BX, BP, SI i DI) i 3 vrste indeksnog adresiranja. Dve vrste indeksnog adresiranja se razlikuju samo po upotrebljenim registrima (indexed adresiranje koristi registre SI i DI, a base adresiranje koristi registre BX i BP). Trea ukljuuje po dva registra u indeksno adresiranje (based indexed adresiranje obuhvata parove registara, sastavljene od BX ili BP registara i od SI ili DI registara). Mainski format naredbi ove arhitekture izgleda:
8

prefiks
8

kod naredbe

Mainski format naredbi obavezno obuhvata bajt sa kodom naredbe. Njemu moe da prethodi prefiks koji, na primer, menja podrazumevajui segment za naredbu sa ovim prefiksom. Pri tome se podrazumeva da se svaka naredba i svaki od njenih naina adresiranja odnose na neki segment. Tako se upravljake naredbe odnose na segment naredbi, naredbe za rukovanje stekom na segment steka, a ostale naredbe uglavnom na segment podataka ili na dodatni segment. Iza koda naredbe mogu da slede do 4 dodatna bajta razliitog znaenja. Oni mogu da sadre: 1. unutranju adresu od 16 bita i baznu adresu segmenta od 16 bita, 2. oznake dva registra (od kojih je jedan namenjen za indirektno adresiranje) i, eventualno, odstojanje (displacement) od 8 ili 16 bita,

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

219

3. neposredni operand od 8 ili 16 bita, ali i 4. relativnu adresu od 8 bita. Vrsta dozvoljenih operanada se menja od naredbe do naredbe, tako da ne postoji ortogonalnost naredbi i naina adresiranja. Arhitektura naredbi za INTEL 8086 obuhvata sledee vrste naredbi: 1. naredbe za rukovanje podacima (na primer, za prenos i konverziju podataka), 2. naredbe za rukovanje bitima (logike naredbe i naredbe pomeranja), 3. naredbe za celobrojnu binarnu aritmetiku (obuhvaene sve aritmetike operacije), 4. naredbe za celobrojnu decimalnu aritmetiku (obuhvaene sve aritmetike operacije), 5. upravljake naredbe, 6. sistemske naredbe i 7. ulazno-izlazne naredbe. SEGMENTNA ORGANIZACIJA RADNE MEMORIJE Segmentna organizacija radne memorije, pomenuta kod arhitekture naredbi za INTEL 8086, omoguuje racionalno korienje radne memorije. Na primer, ako jedan segment sadri mainske naredbe, drugi stek a trei podatke, tada segment naredbi mogu da dele slike svih procesa koje odgovaraju izvravanju istog programa. Za takvo korienje segmenata vano je osigurati zatitu koja spreava: 1. da proces izlazi van svojih segmenata i 2. da se segmenti nenamenski koriste. Zatita od izlaska van segmenta se moe ostvariti primenom ideje graninog i baznog registra, jer svaki segment ima svoju duinu i svoju baznu adresu. Segment naredbi se namenski koristi, ako mu se pristupa samo radi izvravanja naredbi, dok se segmenti steka i podataka namenski koriste ako im se pristupa radi itanja ili pisanja memorijskih lokacija. Spreavanje nenamenskog korienja segmenata zahteva uvoenje prava pristupa segmentu, kao to su pravo izvravanja, pravo itanja i pravo pisanja segmenta. Ispravno korienje segmenata podrazumeva da se za svaki proces vee posebna tabela segmenata. Za svaki segment procesa u ovakvoj tabeli segmenata postoji poseban element sa baznom adresom segmenta, duinom segmenta, pravima pristupa segmentu i podatkom da li je element popunjen. Logike adrese iz adresnog prostora segmentirane radne memorije se sastoje od adrese segmenta i od njegove unutranje adrese. Adresa segmenta indeksira element tabele segmenata, radi korienja njegovog sadraja za proveru da unutranja adresa nije vea od duine segmenta i da proces ima pravo na traeni pristup adresiranoj lokaciji segmenta. Ako je provera uspena, fizika adresa nastaje spajanjem bazne adrese segmenta i njegove unutranje adrese (slika 8.5.5).

220

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

adresa unutranja segmenta adresa logika adresa

duina segment naredbi segment steka segment podataka

prava

bazna adresa

+
tabela segmenata

bit popunjenosti

fizika adresa

Slika 8.5.5 Pretvaranje logike adrese u fiziku kod segmentirane radne memorije Prethodno opisana osnovna segmentacija se pretvara u punu segmentaciju, ako se broj segmenata povea, tako da biblioteke potprograma ili grupe promenljivih mogu biti smetene u zasebne segmente. Na ovaj nain je mogue ostvariti deljenje pojedinih biblioteka potprograma ili grupa promenljivih izmeu raznih procesa. U ovom sluaju ima smisla pojedinim procesima davati samo pojedinana prava pristupa pojedinim segmentima, na primer samo pravo itanja deljenog segmenta sa grupom promenljivih. Mogunost deljenja velike biblioteke potprograma je uslov za racionalno korienje ne samo radne, nego i masovne memorije. Takva deljena biblioteka (shared library) se ne mora uopte linkovati za pojedine programe, pa na taj nain ne mora zauzimati prostor u raznim izvrnim datotekama. Dovoljno je da svaka od izvrnih datoteka, koja sadri pozive potprograma deljene biblioteke, sadri i informaciju da je deljena biblioteka potrebna za vreme izvravanja programa. Pomenuta informacija omoguuje da se na poetku izvravanja programa proveri da li se potrebna deljena biblioteka nalazi u nekom od segmenata radne memorije. Ako se ne nalazi, ona se puni u segment radne memorije koji je za nju predvien. Nakon provere i eventualnog punjenja, u odgovarajui element tabele segmenata se smetaju duina segmenta deljene biblioteke, prava pristupa ovom segmentu i njegova bazna adresa. Nakon toga mogu se pozivati potprogrami ove biblioteke kao da je ona statiki linkovana za izvravani program. Povezivanje biblioteke potprograma za program neposredno pre njegovog izvravanja se naziva dinamiko linkovanje (dynamic linking). Deljene biblioteke se nazivaju i dinamiki linkovane biblioteke ili DLL (dynamic link library). Za segmentaciju je zgodno da se osloni na virtuelnu memoriju da bi segmenti mogli biti vei od fizike memorije. Ovakav spoj se naziva stranina segmentacija (paged segmentation), jer se segmenti sastoje od celog broja stranica, pa se njihova

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

221

duina izraava kao broj stranica. U ovom sluaju elementi tabele segmenata ne sadre baznu adresu segmenta, nego poetnu adresu tabele stranica dotinog segmenta, a logika adresa se sastoji od adrese segmenta, od adrese virtuelne stranice i od unutranje adrese. Adresa segmenta indeksira element tabele segmenata koji omoguuje proveru da li je adresa virtuelne stranice ispravna i da li je traeni pristup dozvoljen. U sluaju ispravne provere, indeksirani element tabele segmenata sadri poetnu adresu tabele stranica segmenta. Njene elemente indeksira adresa virutelne stranice, radi pronalaenja adrese fizike stranice i njenog spajanja sa unutranjom adresom (slika 8.5.6).
adresa segmenta poetna adresa tabele stranica prava segmenta adresa virtuelne stranice unutranja adresa

logika adresa

duina

...
tabela segmenata

...
bit popunjenosti tabele stranica segmenata

adresa fizike stranice

unutranja adresa

fizika adresa

Slika 8.5.6 Pretvaranje logike adrese u fiziku kod stranine segmentacije ARHITEKTURA NAREDBI ZA INTEL 80386 Arhitektura naredbi za INTEL 80386 podrava fiziki adresni prostor od 24 bita, koji je organizovan u bajte. Ona podrava segmentaciju, virtuelnu memoriju i

222

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

straninu segmentaciju. Segmentacija uvodi logiki adresni prostor od 16383 segmenta sa 20 bitnim lokalnim adresnim prostorima. Istovremeno je pristupano samo 6 segmenta: segment naredbi, segment steka i 4 segmenta podataka. Podaci o segmentima, kao to su njegova 32 bitna bazna adresa, njegova 20 bitna duina i prava pristupa, se nalaze u tabelama segmenata. Postoji jedna globalna tabela segmenata za celi raunar, a za svaki proces moe biti vezana lokalna tabela segmenata. Adrese pristupanih segmenata se nalaze u 16 bitnim segmentnim registrima CS (code segment), SS (stack segment), DS (data segment), ES (extra segment), FS i GS. Sadraji ovih registara indeksiraju tabelu segmenata, radi pretvaranja logike adrese u lineranu adresu, koja odgovara fizikoj ili virtuelnoj adresi, to zavisi od okolnosti. Logika adresa se sastoji od 16 bitne adrese segmenata, koja se nalazi u nekom od segmentnih registara, i od 32 bitne unutranje (offset) adrese segmenta. Linearna adresa ima 32 bita i nastaje kao suma 32 bitne bazne adrese segmenta i njegove 32 bitne unutranje adrese. Virtuelna memorija ima tabelu stranica u dva nivoa. Virtuelna adresa se sastoji od 10 bitnog indeksa tabele stranica sa prvog nivoa, 10 bitne adrese virtuelne stranice i 12 bitne unutranje adrese. Stranina segmentacija kombinuje prethodno opisanu segmentaciju i virtuelnu memoriju, tako da se prvo logika adresa pretvara u linearnu, odnosno virtuelnu adresu, a onda se virtuelna adresa pretvara u fiziku adresu. Ova arhitektura omoguuje rukovanje binarnim vrednostima velikim 1, 2 i 4 bajta, decimalnim ciframa izraenim kao etvorobitne vrednosti (BCD, binary coded decimal) i nizovima znakova (character string). Pored 6 segmentnih registra, ova arhitektura nudi jo 4 registra podataka EAX, EBX, ECX i EDX od 32 bita. Postoje i 4 adresna registra od 32 bita: ESP (stack pointer), EBP (base pointer, frame pointer), ESI (source index register) i EDI (destination index register). Na kraju, postoje jo programski broja EIP (instruction pointer) od 32 bita i status registar EFLAGS od 32 bita koji sadri uslovne bite (condition code). Ova arhitektura omoguuje privilegovani nain rada procesora sa 3 nivoa privilegovanog rada (kernel, system services, custom extensions). Arhitektura naredbi za INTEL 80386 podrava neposredno adresiranje, registarsko adresiranje, direktno adresiranje, indirektno adresiranje i 3 vrste indeksnog adresiranja. Dve vrste indeksnog adresiranja se razlikuju po tome to jedna ne ukljuuje, a druga ukljuuje skaliranje. Trea vrsta indeksnog adresiranja podrazumeva istovremeno korienje obe prethodne vrste indeksnog adresiranja. Mainski format naredbi ove arhitekture izgleda:

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)


8

223

prefiks (0 do 4 bajta)
8

kod naredbe (1 do 2 bajta)


8

kod naina adresiranja


8

podaci o indeksnom adresiranju


8

odstojanje (0, 1, 2 ili 4 bajta)


8

neposredni operand (0, 1, 2 ili 4 bajta) Mainski format naredbi obavezno obuhvata bajt sa kodom naredbe. Njemu mogu da prethode do 4 prefiksa koji, na primer, omoguuju menjanje podrazumevajueg segmenta za naredbu iji kod sledi iza prefiksa. Pri tome se podrazumeva da se svaka naredba i svaki od njenih naina adresiranja odnose na neki segment. Tako se upravljake naredbe odnose na segment naredbi, naredbe za rukovanje stekom na segment steka, a ostale naredbe uglavnom na segment podataka ili na dodatni segment. Iza koda naredbe mogu da slede kod naina adresiranja, podaci o indeksnom adresiranju, poput podatka o skaliranju, iznos odstojanja (displacement) i neposredni operand. Arhitektura naredbi za INTEL 80386 obuhvata sledee vrste naredbi: 1. naredbe za rukovanje podacima (na primer, za prenos i konverziju podataka), 2. naredbe za rukovanje bitima (logike naredbe i naredbe pomeranja), 3. naredbe za celobrojnu binarnu aritmetiku (obuhvaene sve aritmetike operacije), 4. naredbe za celobrojnu decimalnu aritmetiku (obuhvaene sve aritmetike operacije), 5. upravljake naredbe, 6. sistemske naredbe i 7. ulazno-izlazne naredbe. Ova arhitektura nudi posebnu podrku multiprogramiranju (multitasking) i dibagiranju. Ona emulira arhitekturu naredbi za INTEL 8086. PRINCIP RADA MIA Mi registruje svoje pomeranje po x ili y osi pomou mehanikih ili nekih drugih davaa pozicije. Kada to pomeranje bude vee od neke unapred zadane vrednosti, on ka raunaru alje poruku sa podacima o relativnoj promeni pozicije. Ovakva poruka sadri izmenu x i y pozicije, kao i stanje dirki mia. Do slanja ovakve poruke dolazi i kada se izmeni stanje bilo koje dirke mia.

224

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

OSOBINE GRAFIKIH TERMINALA Osobine grafikog terminala zavise od njegovog grafikog adaptera koji u svom sastavu ima poluprovodniku video memoriju i video kontroler. Video memorija sadri piksele koji se prikazuju na ekranu, a video kontroler upravlja prikazivanjem ovih piksela na ekranu. Od broja lokacija video memorije zavisi broj piksela koji moe biti prikazan. Ako je grafiki terminal crno beli (monohromatski), za predstavljanje svakog piksela dovoljan je 1 bit video memorije, ili, eventualno, 1 bajt za predstavljanje raznih nijansi sivog. Za grafike terminale u boji potrebna su i do 3 bajta za predstavljanje jednog piksela, po jedan bajt za predstavljanje nijanse svake od 3 osnovne boje. Video memorija ima dva ulaza (dual port memory). Jedan od njih je okrenut sabirnici i omoguuje pristupanje lokacijama video memorije, radi preuzimanja ili izmena njihovih sadraja. To je potrebno za operacije, kao to je, na primer, pomeranje prozora po ekranu grafikog terminala (bit BLT operation, bit BLock Transfer). Drugi ulaz video memorije je okrenut ka video kontroleru (ekranu) i omoguuje periodino osveavanje ekrana (slika 8.5.7).

EKRAN

VIDEO KONTROLER

VIDEO MEMORIJA

SABIRNICA

Slika 8.5.7 Dvoulazna video memorija i video kontroler Propusnost drugog ulaza je znatno via od propusnosti prvog ulaza, zbog velike brzine osveavanja ekrana. Zbog toga, na ekranu moe da se pojavi samo delimino izmenjen sadraj video memorije. Da bi se to spreilo, i ujedno podrala animacija, u grafiki terminal se ugrauju dve video memorije, tako da se sadraj jedne prikazuje na ekranu, dok se menja sadraj druge. Poto veliina video memorije znaajno utie na cenu grafikog terminala, vano je pronai nain da se smanji broj bita po pikselu. To se moe postii, na primer, kada istovremeno nisu

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

225

potrebne sve nijanse boja iz palete, nego samo njihov mali podskup. Tako, ako su potrebne samo 4 odabrane nijanse od, na primer, 224 nijansi, tada su za svaki piksel dovoljna 2 bita. Pri tome, sadraji ova 2 bita indeksiraju elemente posebne tabele boja (color palette, color table, color map, video look-up table), koja sadri potpune kodove nijansi (znai, svaki od 4 elementa ove tabele je velik 3 bajta). U ovakvoj organizaciji video memorije, zadatak programera je da utie i na piksele, ali i na tabelu boja. Grafiki terminal se nalazi neposredno uz raunar, nije fiziki udaljen od njega, jer je video memorija grafikog terminala vezana za sabirnicu raunara. PRINCIPI RADA LOKALNIH MREA Lokalne mree omoguuju prenos poruka, sastavljenih od jednog ili vie paketa. Prenos poruka se odvija u skladu sa posebnim komunikacionim protokolima, koji precizno opisuju ponaanje poiljaoca i primaoca poruke. Na primer, ovakvi protokoli odreuju kako se poruke rastavljanju na pakete u toku slanja i kako se od paketa obrazuju poruke u toku prijema. Dve najpoznatije vrste lokanih mrea su eternet (Ethernet) i mrea sa putujuim etonima (token ring, token bus). I jedna i druga vrsta lokalnih mrea se sastoji od prenosnika signala i od kontrolera koji upravljaju prenosom signala. One se razlikuju po nainu na koji kontroleri stiu pravo da emituju pakete. I kod jedne i kod druge vrste lokalnih mrea u svakom momentu najvie jedan kontroler ima pravo emitovanja, a svi ostali kontroleri sluaju. Za mree sa putujuim etonom se podrazumeva da se svi paketi prenose od kontrolera do kontrolera u predodreenom redosledu i uvek u istom smeru. Pri tome, izmeu kontrolera cirkulie jedan poseban paket sa etonom. Kontroler, koji primi ovaj paket, ima pravo da emituje jedan svoj paket. Nakon toga, on prosleuje dalje paket sa etonom, to uradi i kada nema sopstveni paket za emitovanje. Za eternet mree je karakteristino da kontroleri prate stanje prenosnika signala i da zapoinju emitovanje im ustanove da nema tue emisije. Pri tome, oni nastavljaju da prate stanje prenosnika signala i u toku svoje emisije, radi, eventualnog, otkrivanja kolizije, odnosno, istovremenog poetka vie emisija. U sluaju kolizije, svaki od kontrolera, koji su istovremeno zapoeli emisiju, odlae emitovanje za period sluajne duine, radi izbegavanja ponovne kolizije. Ako nema kolizije, kontroler nastavlja sa emitovanjem do kraja paketa, koji ukupno sadri do 1530 bajta. Ovakav nain dobijanja prava za emitovanje se oznaava skranicom CSMA/CD (Carrier Sense Multiple Access with Collision Detection). Eternet mree su najrairenija vrsta lokalnih mrea. Njihova duina se kree do jednog kilometra. Na jednu eternet mreu se kai do 1024 raunara, to je definisano formatom paketa. Eternet mree nisu dobre za velika optereenja (preko 50%), jer im tada propusnost opada bre od poveanja optereenja zbog uticaja kolizija, iji broj ubrzano raste na veim optereenjima. Mree sa putujuim etonom su dobre za

226

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

velika optereenja, jer i za najvea optereenja garantuju minimalnu propusnost svakom poiljaocu poruka. VIEPROCESORSKI RAUNARI SA ZAJEDNIKOM SABIRNICOM Standardne sabirnice, koje sadre arbitar i podravaju vie aktivnih strana, pruaju prirodnu osnovu za izgradnju vieprocesorskih raunara, jer dozvoljavaju da vie procesora bude istovremeno zakaeno na njih. Mana ovakvog reenja je da se na nju moe zakaiti mali broj procesora, zbog zaguenja sabirnice. Ovaj problem moe da se rei korienjem vie sabirnica, ali po cenu due razmene podataka izmeu organizacionih komponenti raunara, zakaenih na razne sabirnice. Pri tome se podrazumeva da postoji jedinstven adresni prostor, tako da svaki procesor moe da pristupi bilo kojoj lokaciji radne memorije, uz razliita vremena pristupa raznim lokacijama. Na slici 8.5.7 je prikazana organizacija vieprocesorskog raunara sa vie lokalnih i globalnih sabirnica. Na ovoj ideji je zasnovan, na primer, NonStop multiprocesor, koga je krajem sedamdesetih godina proizveo Tandem.

PROCESOR

RADNA MEMORIJA

...
LOKALNE SABIRNICE

PROCESOR

RADNA MEMORIJA

KONTROLER

KONTROLER

GLOBALNE SABIRNICE

Slika 8.5.7 Organizacija vieprocesorskog raunara sa vie lokalnih i globalnih sabirnica Ideja korienja vie sabirnica ima krajnost u unakrsnoj matrici (crossbar), Ona obezbeuje da izmeu svakog procesora i modula radne memorije postoji posebna sabirnica (slika 8.5.8).

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

227

PROCESOR

PROCESOR

MODUL RADNE MEMORIJE

MODUL RADNE MEMORIJE

Slika 8.5.8 Unakrsna matrica Kvadrati na mestima susreta horizontalnih i vertikalnih sabirnica unaksne matrice simbolizuju prekidae, koji omoguuju dinamiko uspostavljanje direktinih veza izmeu pojedinih procesora i modula radne memorije. Tako, svaki procesor, pored svoje horizontalne sabirnice, uvek koristi i jednu vertikalnu sabirnicu. Unakrsne matrice su koriene kod velikih raunara tree generacije za povezivanje raznih organizacionih komponenti (Burroughs B5000, CDC Cyber-70 model 74). Mana unakrsnih matrica je da za veliki broj prekidaa one imaju visoku cenu, veliko kanjenje i malu pouzdanost. Skrivena memorija doprinosi smanjuju optereenja sabirnice, jer dok god se u skrivenoj memoriji nalaze kopije sadraja adresiranih lokacija, nema potrebe za izlazak na sabirnicu, radi pristupanja radnoj memoriji. Zato se skrivena memorija koristi za izbegavanje zaguenja sabirnice u vieprocesorskim raunarima, kod kojih su svi procesori zakaeni na istu sabirnicu (slika 8.5.9).

PROCESOR

PROCESOR

KONTROLER SKRIVENE MEMORIJE

...

KONTROLER SKRIVENE MEMORIJE

MODUL RADNE MEMORIJE

...

MODUL RADNE MEMORIJE

SABIRNICA

Slika 8.5.9 Viseprocesorski raunar sa jednom sabirnicom i skrivenim memorijama

228

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Da bi skrivene memorije mogle biti koriene na nain prikazan na slici 8.5.9, neophodno je obezbediti usaglaenost sadraja raznih skrivenih memorija (cache coherency). Do neusaglaenosti sadraja raznih skrivenih memorija dolazi kada razni procesori istovremeno menjaju razne kopije sadraja iste lokacije. Ovakve neusaglaenosti se spreavaju, ako svi kontroleri skrivenih memorija prate aktivnosti na sabirnici (snoopy), radi ponitavanja (write invalidate) ili izmene (write broadcast) kopija sadraja lokacija, ije adrese su se pojavile na sabirnici u okviru transakcije pisanja. Pri tome je radna memorija izdeljena u module, radi primene podeljenih transakcija. Symmetry multiprocesor, koga je krajem osamdesetih godina na trite izbacio Sequent, predstavlja primer multiprocesora u okviru koga su mogla da se zakae do 32 Intel 80386 procesora na istu sabirnicu sa 64 linije podataka. Pri tome se izmeu svakog od ovih procesora i sabirnice nalazila posebna 64 kilobajtna skrivena memorija (write back, write invalidate). Osobenost vieprocesorskih raunara je da se kod njih problem sinhronizacije procesa ne moe reiti onemoguenjem prekida, jer kod njih nesinhronizam procesa nije posledica prekida i time izazvanih nepredvidivih prekljuivanja, nego je posledica stvarnog paralelizma procesa. Poto, dva procesa mogu biti istovremeno aktivna na raznim procesorima vieprocesorskog raunara, oni mogu pristupati deljenim memorijskim lokacijama u nepredvidivom redosledu. To znai da, u primeru zauzimanja resursa, dva procesa mogu istovremeno zapoeti zauzimanje istog resursa. U ovakvim okolnostima neophodnu nedeljivost itanja i pisanja lokacije stanja resursa obezbeuje zakljuavanje sabirnice za vreme obavljanja ovih operacija. To se moe ostvariti pomou posebne upravljake linije za zakljuavanje sabirnice (lock). Ovo zakljuavanje moe biti eksplicitno ili implicitno. Eksplicitno zakljuavanje sabirnice omoguuje posebna naredba, tako to, na primer, zakljuava sabirnicu u toku izvravanja sledee naredbe. Implicitno zakljuavanje sabirnice podrazumeva postojanje mainske naredbe koja zakljua sabirnicu, na primer, u toku itanja i pisanja jedne memorijske lokacije. Vano pitanje je ta uraditi sa procesom vieprocesorskog raunara nakon neuspenog pokuaja zakljuavanja nekog resursa. Ako e resurs biti zauzet krae od vremena potrebnog za prekljuivanje, tada ima smisla ponavljati iznova zakljuavanje resursa dok se u tome ne uspe. Ovakvo ponavljanje zakljuavanja resursa predstavlja oblik radnog ekanja (spinning, spin lock, spin waiting). Ono je prihvatljivo samo ako je kratkotrajno. Meutim, ak i kada je kratkotrajno, ono moe da zagui sabirnicu, ako se vie procesa, sa raznih procesora, nalazi istovremeno u ovakvom radnom ekanju.

8.6 PERIOD OKO 1990. GODINE


Pojava tehnologije veoma visoke integracije (VLSI, Very Large Scale Integration), koja je omoguila smetanje vie miliona tranzistora na jedan ip, stvorila je uslove za dalje poboljavanje mogunosti raunara. Tako su se pojavili jo moniji super-raunari, poput Cray Y-MP, na primer, a veliki raunari su dobili

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

229

neke osobine super-raunara, kao to su vektorske naredbe, kod raunara iz IBM ESA/370 serije, nastale kao proirenje IBM 370 familije raunara. Najvei miniraunari su se pribliili, po mogunostima, velikim raunarima, kao DEC VAX 8800, a mikro-raunari, zasnovani, na primer, na mikro-procesorima Intel 80486 ili Motorola 68040, su dobili obeleja mini i velikih raunara, kao to je podrka aritmetici realnih brojeva, na primer. Ipak, cene super, velikih, mini i mikroraunara su se i dalje meusobno razlikovale priblino za po red veliine. To je bilo posledica injenice da su veliki raunari bili namenjeni za najvee poslovne obrade, koje su zahtevale podrku stotinama terminala ili disk jedinica, dok je zadatak mikro-raunara bio da opsluuju samo po jednog korisnika, bez obzira da li je re o slabijem personalnom raunaru sa MS-DOS operativnim sistemom ili o monijoj radnoj stanici sa UNIX operativnim sistemom. Mini-raunari su pokrivali primene izmeu prethodne dve krajnosti, a korienje super-raunara je bilo ogranieno na velike nauno tehnike proraune. Zahvaljujui primeni tehnologije veoma visoke integracije, mikroprogramske memorije su postale dovoljno velike da podre i najsloeniju arhitekturu naredbi, pa je sloenost arhitekture naredbi velikih, mini i mikroraunara dostigla svoj vrhunac. Skupovi naredbi su sadrali vie stotina naredbi, a podrani su na desetine naina adresiranja i tipova podataka. Meutim, tehnologija veoma visoke integracije je omoguila i znatno skraenje procesorskih ciklusa, pod uslovom da se upravljanje procesorom osloni na oienu upravljaku jedinicu. To nije bilo mogue postii bez temeljitog pojednostavljenja CISC arhitekture naredbi, jer je za nju bila neophodna mikro-programska upravljaka jedinica. Ovo pojednostavljenje se zasnivalo na smanjenju broja naredbi u skupu naredbi, kao i na smanjenju broja podranih naina adresiranja i tipova podataka. Raunari sa pojednostavljenom arhitekturom naredbi su oznaeni skraenicom RISC (Reduced Instruction Set Computer). Ovako pojednostavljena arhitektura naredbi je dozvolila da se upravljanje procesorom prepusti oienoj upravljakoj jedinici i da se u znaajnijoj meri ostvari preklapanje rada nezavisnih delova procesora, kao kod procesora super-raunara, ija je arhitektura naredbi takoe bila jednostavna. Na taj nain je ne samo skraen procesorski ciklus, nego je i smanjen prosean broj procesorskih ciklusa po naredbi sa 5 do 10, koliko je iznosio za CISC procesore, na svega 1 do 2 procesorska ciklusa, koliko je iznosio za RISC procesore. Ujedno je i znaajno olakano projektovanje procesora. Na neosporne prednosti RISC pristupa ukazali su: 1. rezultati IBM 801 projekta, koga je krajem sedamdesetih godina vodio John Cocke, 2. osobine RISC-I i RISC-II procesora, koje je na Berkli univerzitetu poetkom osamdesetih godina razvila grupa na ijem elu je bio David A. Patterson i 3. osobine MIPS procesora, koji je na Stanford univerzitetu poetkom osamdesetih godina razvila grupa na ijem elu je bio John L. Hennessy.

230

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Nakon toga, svi veliki proizvoai raunara su usvojili RISC pristup. Tako su nastali RISC procesori: Motorola 88000, Intel i860, IBM RS/6000 i DEC ALPHA, navedeni u hronolokom redosledu pojave na tritu. Skraenje procesorskog ciklusa, koje je omoguila tehnologija veoma visoke integracije, je bilo prirodna posledica smanjenja veliine tranzistora, odnosno, poveanja njihovog broja na ipu. Smanjenje veliine tranzistora po svim dimenzijama na polovinu, uz isti napon i snagu, uetvorostruuje brzinu tranzistora, uz napomenu da pod tim uslovima 4 puta vie tranzistora na ipu emituje i 4 puta veu toplotu. Vea brzina tranzistora znai manje kanjenje signala, pri njihovom prolasku kroz tranzistor, a to dalje znai da signal ima veu brzinu prostiranja i da mu je potrebno krae vreme da proe kroz ip. Zato procesorski ciklus moe da bude krai. Skraenju procesorskog ciklusa je doprinosilo i smanjenje veliine ipa, odnosno, skraenje ukupnog puta signala, to je, takoe, bila usputna posledica RISC pristupa. Smanjenje veliine ipa je izazvalo i smanjenje njegove proizvodne cene, jer je, zbog tehnologije proizvodnje, na istu povrinu (wafer) moglo da stane vie ipova (die), pa su se na njih rasporeivali priblino konstantni trokovi proizvodnje. Ubrzanje raunara, zasnovano na skraenju procesorskog ciklusa ima svoja fizika ogranienja, jer je skraenje procesorskog ciklusa ogranieno injenicom da brzina prostiranja signala ne moe prei brzinu svetlosti od oko 3108 metara u sekundi. To ograniava veliinu raunara, odnosno njegov prenik (diameter). Prenik raunara je jednak polovini puta koji signali mogu da preu u jednom procesorskom ciklusu, jer se podrazumeva da signali odlaze, na primer od procesora ka radnoj memoriji, i da se vraaju, na primer od radne memorije ka procesoru. Tako je ciklus DEC ALPHA 21164 procesora, koji se pojavio na tritu 1995. godine, iznosio oko 3.33 nano (10-9) sekunde. Za to vreme signal je mogao da pree duinu od oko jednog metra, ako se kretao brzinom svetlosti, pa je polovina te duine predstavljala prenik raunara, zasnovanog na ovom procesoru. I poveanje brzine tranzistora i njihovog broja na ipu imaju svoja fizika ogranienja. Tako, u proteklom periodu razvoja poluprovodnikih tehnologija, brzina tranzistora i njihov broj na procesorskom ipu su se udvostruavali svake 3 godine. Broj tranzistora na memorijskom DRAM ipu se uetvorostruavao svake 3 godine, uz poveanje njihove brzine za treinu svakih 10 godina. Ovakvu pravilnost razvoja poluprovodnikih tehnologija je sredinom ezdesetih godina uoio Gordon Moore, jedan od osnivaa Intel-a. Meutim, takva razvojna linija ne moe da bude stalna, bar ne u pomenutim poluprovodnikim tehnologijama. Minijaturizacija tranzistora je mogua samo do granice nakon koje elektronske komponente postaju nepouzdane zbog meusobne interakcije. Slino, poveanje brzine tranzistora je mogue samo do granice nakon koje emitovanje toplote postaje nepremostiv problem. Upravo zbog problema hlaenja, brzina tranzistrora na DRAM ipovima je rasla znatno sporije od njihovog broja na ipu.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

231

Pobrojana fizika ogranienja poveanja brzine raunara su postala vana, kada su njihove granine mogunosti postale nedovoljne za reavanje praktino znaajnih problema, kao to je, na primer, problem obrade radarskih i televizijskih slika sa satelita. Svaka ovakva slika se sastojala od 1010 piksela, a njena obrada je zahtevala oko 103 operacija po pikselu. Poto je svakog dana sa satelita pristizalo na stotine slika, za obradu svih piksela je bilo potrebno dnevno obraditi oko 10 15 operacija, ili, priblino, 1010 operacija u sekundi. Uz pretpostavku da je za svaku od ovih operacija dovoljan jedan procesorski ciklus, raunar bi mogao da obradi sve slike, pristigle sa satelita, ako bi imao procesorski ciklus 10 -10 sekundi, odnosno, ako njegov prenik ne bi bio vei od 1.5 centimetra! Jasno, reavanje problema, kao to je obrada satelitskih slika, se moralo osloniti na istovremenu, odnosno paralelnu obradu nezavisnih podataka. Obrada satelitskih slika je obuhvatala prijem i obradu pojedinih piksela slike. Serijski prenos piksela je iskljuio mogunost njihovog istovremenog prijema. Meutim, obrade pojedinih piksela su bile nezavisne, pa su mogle biti istovremene. Prema tome, prenos piksela predstavlja nereducibilan deo obrade satelitske slike, koga nije mogue skratiti primenom paralelizma, dok obrada pojedinih piksela predstavlja reducibilan deo obrade satelitske slike, koga je mogue skratiti primenom paralelizma. Ako na sekvencijalnu obradu svih piksela satelitske slike otpada k-ti deo ukupnog vremena t njene sekvencijalne obrade (0<k<1), tada (1-k)-ti deo ukupnog vremena otpada na prenos svih njenih piksela. Znai, proizvod:

(1 k )t
odgovara vremenu prijema svih piksela satelitske slike, a proizvod:

kt
odgovara vremenu sekvencijalne obrade svih piksela slike. Uz pretpostavku da se istovremeno obavljaju obrade n piksela (n 1010), tada vreme paralelne obrade svih piksela satelitske slike iznosi:

kt n
dok se vreme prijema ovih piksela ne menja. Prema tome, ukupno vreme paralelne obrade satelitske slike iznosi:

(1 k )t + kt
n

232

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Primena paralelizma u obradi satelitske slike je dovela do poboljanja koje se izraava kao odnos vremena potrebnog za sekvencijalnu i vremena potrebnog za paralelnu obradu slike:

t n

(1 k )t + kt (1 k ) + k

1 n

Prethodni odnos se moe primeniti na svaku obradu podataka koja ima nepromenljiv deo, na koga primena paralelizma nema uticaja, i promenljiv deo, na kog primena paralelizma ima uticaja. Prema tome, veliina poboljanja, izazvanog primenom paralelizma, zavisi od toga koliki udeo (k) u ukupnom vremenu obrade svih podataka ima reducibilan deo koji se skrauje zahvaljujui primeni paralelizma, kao i od toga koliki stepen paralelizma (n) je mogu, odnosno koji broj istovremenih obrada pojedinih podataka je mogu. Pri tome:

1 1 k
predstavlja graninu vrednost pomenutog poboljanja. Stvarno poboljanje se pribliava svojoj graninoj vrednosti samo za visok stepen paralelizma, kada parametar n ima veoma veliku vrednost. Na prethodno opisane domete primene paralelizma ukazao je G. M. Amdahl jo 1967. godine. Primena paralelizma dovodi do znaajnijeg skraenja obrada podataka samo ako je da njen nepromenljiv deo veoma kratak i ako je mogui stepen paralelizma visok. Upravo te osobine imala je obrada satelitskih slika. Kod nje su postojali uslovi za masovni paralelizam, jer je stepen paralelizma mogao da raste do 10 10. Pored toga, sve istovremene obrade su bile identine, jer su pikseli obraivani na isti nain, i jednostavne, jer su obraivane jednobitne vrednosti, koje su reprezentovale pojedine piksele. To je dozvoljavalo da se napravi paralelni raunar sa vie od 10000 jednostavnih jednobitnih procesora, koji su nazvani procesni elementi. Oni su mogli da u dovoljno kratkom vremenu obrade sve piksele slike. Uz ne suvie kratak procesorski ciklus od 10 -6 sekundi, svaki od ovakvih procesnih elemenata mogao je da obavi 106 jednociklinih operacija u sekundi, pa je 104 procesnih elemenata moglo da obavi 1010 operacija u sekundi. Meutim, mana ovakvog paralelnog raunara je da je on bio specijalizovan samo za reavanje problema obrade satelitskih slika. Iz prethodnog sledi da se uspeh u primeni paralelnih raunara ostvarivao na raun njihove optosti, odnosno da je zavisio od njihove specijalizovanosti za reavanje pojedinih klasa problema.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

233

Uspena primena paralelnih raunara je zavisila, pre svega, od njihovog programiranja. Za programiranje paralelnih raunara nisu bili podesni programski jezici visokog nivoa, jer su oni predstavljali apstrakciju raunara koji sekvencijalno izvravaju programe, izvravajui naredbe u redosledu odreenom u programu. Redosled izvravanja naredbi je bio vaan, jer su naredbe opisivale izmene stanja promenljivih, a konano stanje ovih promenljivih je zavisilo od redosleda izmena njihovih stanja. Ovakav model raunanja (computational model) je nazvan model upravljakog toka (control flow model, control driven model), jer su na redosled izvravanja naredbi uticale upravljake naredbe, izmenom stanja programskog brojaa. Znai, nakon opisivanja sekvencijalnog reenja problema pomou programskog jezika visokog nivoa, programer je morao da pronae nezavisne delove programa, koji su mogli da se izvravaju paralelno. Nakon njihovog pronalaenja, sledilo je i preureenje programa, radi stvaranja uslova da potencijalni paralelizam postane mogu. Potreba izriitog opisivanja paralelizma je izazvala dogradnju postojeih sekvencijalnih programskih jezika visokog nivoa. Tako su nastali konkurentni programski jezici (concurrent programming language). Korienje konkurentnih programskih jezika je sloenije od korienja sekvencijalnih programskih jezika. Zato se javila potreba za pronalaenjem naina izraavanja algoritama kod kojih je paralelizam prirodna posledica pravljenja algoritma, a ne rezultat posebnog napora programera. Tako je, na primer, nastao model toka podataka (data flow model, data driven model). On je podrazumevao da se meuzavisnost operacija, sadranih u obradi podataka, oznai vezivanjem izlaznih operanada jedne operacije za ulazne operande druge operacije. Tako nastaje usmereni graf, u iji vorovima se nalaze okviri. Svaki okvir sadri polje za kod operacije, polja za ulazne operande i polje za izlazni operand (slika 8.6.1).
b c d + b c d *

+ *

usmereni graf izraza (a+b)*(c-d)

usmereni graf okvira izraza (a+b)*(c-d)

Slika 8.6.1 Princip toka podataka

234

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Model toka podataka je uspostavio redosled samo za meusobno zavisne operacije. Sve druge operacije, iji ulazni operandi su raspoloivi, odnosno, iji okviri su popunjeni, mogu da se izvravaju u bilo kom redosledu, znai i paralelno. Iako je model toka podataka nudio prirodni paralelizam, on nije posedovao optost modela upravljakog toka, pa nije doiveo ozbiljniju praktinu primenu. Za ovaj model su bile potrebne posebne organizacije raunara, okrenute popunjavanju okvira i selekciji popunjenih okvira, kao i posebni funkcionalni programski jezici. Nepostojanje zgodnog naina za opisivanje paralelizma i iz toga proizala visoka cena razvoja konkurentnih programa su bili donekle ublaeni pojavom oblika paralelizma koji su nevidljivi za programere. U ovakve oblike paralelizma je spadalo preklapanje rada stepena protone strukture procesora, koje je dovodilo do smanjenja srednjeg broja ciklusa po naredbi i tako ubrzavalo izvravanje korisnikih programa i to bez ikakve intervencije programera. Ipak, prethodno je zahtevalo asistenciju kompajlera, u ijoj nadlenosti je bilo rasporeivanje mainskih naredbi na nain koji ne menja funkcionalnost programa, a koji omoguuje vee preklapanje rada stepena protone strukture procesora. Pojava paralelizma, koji je bio nevidljiv za programera, se javljala i kao posledica prisustva vie od jednog procesora opte namene u raunaru. Ovi procesori su omoguavali: 1. ili poveanje propusnosti raunara, odnosno poveanje broja izvrenih programa u jedinici vremena, 2. ili poveanje raspoloivosti raunara, odnosno, spreavali su da kvar jednog procesora onemogui rad raunara. Vie procesora opte namene je ugraivano jo u raunare prve generacije, radi poveavanja njihove raspoloivosti. Takva praksa je postala redovna kod najmonijih raunara ve od tree generacije raunara, radi poveanja njihove propusnosti. Prisustvo vie procesora u organizaciji raunara nije zahtevalo bilo kakvu intervenciju programera, jer je rukovanje ovim procesorima bilo u nadlenosti operativnog sistema. Ipak, programeri su mogli svesno da iskoriste prisutstvo vie procesora za istovremeno izvravanje raznih programa, namenjenih za reavanje pojedinih potproblema istog problema. Ovakva izvravanja su obrazovala protonu strukturu, ako su rezultati jednog izvravanja prosleivani drugom posredstvom datoteka. Na primer, takvu strukturu su mogli da obrazuju pretprocesor, kompajler i linker programa napisanih programskim jezikom C, ako su se istovremeno izvravali na raznim procesorima. Ovakav paralelizam je karakterisala saradnja nekoliko procesora koji su izvravali razne programe, radi obrade razliitih podataka, a meusobnu saradnju su ostvarivali povremenom razmenom podataka. On se sutinski razlikovao od masovnog paralelizma, karakteristinog po angaovanju velikog broja procesnih elemenata na identinoj obradi razliitih podataka, kao kod obrade satelitskih slika. Poto je u prvom sluaju svaki procesor izvravao poseban program, radi obrade posebnih podataka, ovakav

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

235

paralelni raunar je karakterisalo vie tokova naredbi i vie tokova podataka. Engleska skraenica za ovaj naziv je MIMD (Multiple Instruction stream Multiple Data stream). U sluaju masovnog paralelizma, svaki procesni element je izvravao isti program, radi obrade posebnih podataka, pa je ovakav paralelni raunar karakterisao jedan tok naredbi i vie tokova podataka. Engleska skraenica za ovaj naziv je SIMD (Single Instruction stream Multiple Data stream). SIMD raunar predstavljala pooptenje vektorske jedinice procesora super-raunara, kod kojih je vie raznih podataka bilo obraivano na isti nain, ali u reimu preklapanja. Raunar sa jednim procesorom je karakterisao samo jedan tok naredbi i jedan tok podataka. Engleska skraenica za ovaj naziv je SISD (Single Instruction stream Single Data stream). Preostali sluaj kombinovanja posmatranih brojeva tokova naredbi i podataka je odgovarao paralelnom raunaru sa vie tokova naredbi i sa jednim tokom podataka. Engleska skraenica za ovaj naziv je MISD (Multiple Instruction stream Single Data stream). Prethodnu klasifikaciju aritektura raunara je predloio M. J. Flynn jo 1966. godine. Pri tome je MISD raunar uveden vie da upotpuni klasifikaciju, nego to je imao praktinu vrednost. U MISD raunare bi spadao, na primer, paralelni raunar, specijalizovan za prepoznavanje oblika (pattern recognition), kod koga svi procesori preuzimaju iste podatke, ali svaki od njih ih obrauje na razliit nain, radi provere da li podaci pripadaju odreenoj vrsti, odnosno da li odgovaraju odreenom obliku. Definiciji MISD raunara donekle odgovara sistoliki raunar (systolic array), sastavljene od prostorno pravilno rasporeenih procesnih elemenata, koji su meusobno povezani, da bi kroz njih prolazili podaci u toku svoje obrade (slika 8.6.2).

PROCESNI ELEMENT PROCESNI ELEMENT

RADNA MEMORIJA

...
PROCESNI ELEMENT

Slika 8.6.2 Sistoliki raunar Sistoliki raunari su usko specijalizovani za reavanje odreenih problema, kao to je brza furijeova transformacija, na primer. Jedini tok naredbi SIMD raunara obrazuju skalarne i vektorske naredbe. One dolaze do skalarne jedinice, koja izvrava skalarne naredbe, a vektorske naredbe

236

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

upuuje procesnim elementima, od kojih je sastavljena vektorska jedinica (slika 8.6.3).


VEKTORSKA JEDINICA PROCESNI ELEMENT SKALARNA JEDINICA PROCESNI ELEMENT SPOJNA MREA

...
PROCESNI ELEMENT

Slika 8.6.3 SIMD raunar Skalarna jedinica upravlja procesnim elementima iz vektorske jedinice. Svaki od procesnih elemenata u svom sastavu sadri sopstvenu radnu memoriju, kojoj moe da pristupa i skalarna jedinica. Svi aktivni procesni elementi sinhrono (istovremeno) izvravaju istu vektorsku naredbu, obraujui pri tome podatak iz sopstvene radne memorije. Zato nema potrebe za posebnim programskim usklaivanjem rada procesnih elemenata. Radi meusobne saradnje, procesni elementi su povezani posebnom spojnom mreom (interconnection network). Veze koje spajaju skalarnu jedinicu sa procesnim elementima predstavljaju snopove adresnih, upravljakih i linija podataka, posredstvom kojih skalarna jedinica pristupa lokacijama lokalnih radnih memorija procesnih elemenata, odnosno upravlja radom procesnih elemenata. SIMD raunari su specijalizovani za reavanje pojedinih klasa problema, kao to je obrada satelitskih slika. Oni predstavljaju dodatak raunarima opte namene. Naredbe izvravanog programa sa raunara opte namene dolaze do skalarne jedinice SIMD raunara, a u obrnutom smeru, nakon izvravanja programa, teku rezultati obrade. Za SIMD raunare je izraen problem pouzdanosti, jer to je vei broj procesnih elemenata to je manja verovatnoa da su svi oni istovremeno ispravni. Za razliku od SIMD raunara, kod koje je rad procesnih elemenata sinhron, kod MIMD raunara procesori su nezavisni, pa nema vremenske usklaenosti njihovog rada. Zato je osnovni problem kod MIMD raunara kako programski uskladiti, odnosno sinhronizovati rad procesora, tako da meusobno uspeno sarauju. Poto se saradnja procesora ostvaruje razmenom podataka, zadatak sinhronizacije je da osigura konzistentnost podataka, odnosno da sprei da procesori pristupaju podacima iju obradu drugi procesori nisu zavrili. To se ostvaruje ili potovanjem strogih pravila pri pristupanju lokacijama zajednike radne memorije,

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

237

kojoj svi procesori ravnopravno pristupaju, ili potovanjem protokola razmene poruka po komunikacionim linijama koje povezuju procesore. U prvom sluaju, zajednika radna memorija je sastavljena od nezavisnih memorijskih modula, tako da razni procesori mogu istovremeno da pristupaju raznim modulima (slika 8.6.4).
MODUL RADNE MEMORIJE1 SPOJNA MREA

PROCESOR1

...
PROCESORn

...
MODUL RADNE MEMORIJEm

Slika 8.6.4 Multiprocesor Procesori pod istim uslovima pristupaju lokacijama zajednike radne memorije, ako su podjednako udaljeni od njenih modula. Pri tome, procesori i moduli zajednike radne memorije moraju da budu na to kraoj meusobnoj udaljenosti, da bi vreme pristupa lokacijama zajednike radne memorije bilo to krae. Zbog toga se za ovakvu organizaciju kae da je vrsto spregnuta (tightly coupled), a ovakvi MIMD raunari su nazvani multiprocesori (multiprocessor). Zajednika radna memorija olakava programiranje, jer bilo koji procesor moe da izvrava bilo koji od nezavisnih programa i, pri tome, da pristupa bilo kom podatku. To oslobaa programera potrebe da poznaje sve detalje organizacije multiprocesora. Meutim, praktini razlozi spreavaju ukljuivanje velikog broja procesora u multiprocesor, jer tada zajednika radna memorija i spojna mrea postaju usko grlo, ije otklanjanje ima suvie visoku cenu. Problem proirljivosti (scalability) multiprocesora se donekle ublaava uvoenjem modula zajednike radne memorije sa razliitim vremenima pristupa. Ovakvi multiprocesori se oznaavaju skraenicom NUMA (Non Uniform Memory Access). Ovakav pristup podrazumeva pridruivanje svakog od modula zajednike radne memorije jednom od procesora, tako da je vreme pristupa lokacijama sopstvenih modula znatno krae od vremena pristupa lokacijama tuih modula. NUMA pristup se oslanja na pretpostavku da procesori najee pristupaju svom modulu zajednike radne memorije. Mana ovoga pristupa je da programer mora da poznaje detalje organizacije NUMA multiprocesora, da bi na najbolji nain rasporedio programe i podatke po modulima radne memorije. Ovo je neophodno jer svi procesori nisu u identinom poloaju, pa ne mogu da izvravaju sve programe i da pristupaju svim podacima pod istim uslovima.

238

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Problema proirljivosti nije izraen kod MIMD raunara u kojima se saradnja procesora zasniva na razmeni poruka. U ovom sluaju, svaki procesor poseduje sopstvenu radnu memoriju, kojoj je samo on pristupa, a spojna mrea povezuje procesore (slika 8.6.5).

RADNA MEMORIJA

PROCESOR

...
RADNA MEMORIJA PROCESOR

SPOJNA MREA

Slika 8.6.5 Multiraunar Sopstvena radna memorija daje procesorima veliku samostalnost. Pri tome, na mestima svakog od parova sastavljenih od procesora i radne memorije moe da bude potpun raunar. Zbog meusobne nezavisnosti, ovakvi raunari mogu da budu na velikim meusobnim udaljenostima, pa se za ovakvu organizaciju kae da je labavo spregnuta (loosely coupled). Ovakvi MIMD raunari su nazvani multiraunari (multicomputer). Poto razmena poruka po potencijalno veoma dugakim komunikacionim linijama predstavlja jedini nain saradnje raunara koji ulaze u sastav multiraunara, oni su meusobno prilino izolovani. To zahteva od programera da poznaju detalje organizacije multiraunara, radi ispravne raspodele programa i podataka. Ovde je vanost ispravne raspodele vea nego kod NUMA multiprocesora, jer nema mogunosti za direktno pristupanje programima ili podacima iz tuih radnih memorija, pa je odgovornost programera vea, a njegov zadatak tei. Raunari iz multiraunara su tipino meusobno povezani eternet lokalnom mreom (slika 8.6.6).

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

239

PROCESOR

RADNA MEMORIJA

...
SABIRNICE

PROCESOR

RADNA MEMORIJA

KONTROLER ETERNET MREA

KONTROLER

Slika 8.6.6 Multiraunar organizovan oko eternet lokalne mree U sklopu multiraunara moe biti vie eternet mrea. Njihovo spajanje omoguuju posebni ureaji (bridge, gateway, router). Vie spojenih eternet mrea obrazuju internet. Broj, vrsta i prostorni raspored raunara, zakaenih za lokalnu mreu, odreuje i menja po svojim potrebama korisnik. Prema tome, lokalne mree omoguuju korisniku da oblikuje organizaciju ovakvog multiraunara po svojoj volji. Kvar pojedinih raunara iz multiraunara ne izaziva obavezno kraj rada celog multiraunara, nego, eventualno, samo njegovo usporenje, odnosno produenje vremena odziva. Zato je multiraunar prirodna osnova za primene kod kojih je vaan nastavak rada i nakon pojave pojedinanih kvarova, odnosno za primene koje zahtevaju posedovanje otpornosti na kvarove (fault tolerance). Ovakve primene se oslanjaju na vie raunara, koji mogu, na primer, istovremeno da obavljaju iste poslove i da razmenjuju rezultate svojih aktivnosti, radi njihovog poreenja. Ako se pojave razliiti rezultati, tada se, kao ispravan, usvaja rezultat koga je proizvelo vie raunara (majority voting). Mogue je i da samo jedan, glavni raunar obavlja zadani posao, a da dodatni, rezervni (stand by) raunar prati njegov rad. Glavni raunar periodino prolazi kroz taku oporavka, u kojoj razmenjuje poruke sa rezervnim raunarom, da bi dokazao da je ispravan, i da bi ostavio podatke o stanju obrade. Na osnovu ovih podataka, u sluaju kvara glavnog raunara, rezervni raunar moe da rekonstruie obradu od poslednje take oporavka. RISC PROCESORI RISC procesori su u potpunosti podreeni poveanju brzine izvravanja programa. Njihova pojava je usledila nakon to su programski jezici visokog nivoa istisnuli iz iroke upotrebe asemblerske jezike, pa je tako opao znaaj izraajnosti asemblerskih naredbi, a briga o racionalnom korienju mogunosti arhitekture naredbi je prela u iskljuivu nadlenost kompajlera.

240

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Skupovi naredbi RISC procesora sadre uglavnom samo neophodne naredbe, kao to su naredbe prenosa podataka izmeu lokacija radne memorije i registara procesora, naredbe celobrojne aritmetike i aritmetike realnih brojeva, kao i logike i upravljake naredbe. Uz to, RISC procesori uglavnom dozvoljavaju samo neposredno, registarsko, i indeksno adresiranje. Oni uglavnom podravaju samo celobrojne i realne tipove podataka (raznih preciznosti). Izvedba RISC procesora zauzima mnogo manje prostora, nego izvedba CISC procesora. To se direktno koristi za skraivanje procesorskog ciklusa, ali i za poveanje broja registara opte namene, za proirenje adresnog prostora, za poveanje paralelizma u radu procesora, za ugradnju skrivene memorije u procesor, kao i za prebacivanje upravljanja virtuelnom memorijom u nadlenost procesora. Vei broj registara opte namene (32 i vie) omoguuje dranje vrednosti vie promenljivih u procesoru i tako, smanjujui potrebu za pristupanjem radnoj memoriji, ubrzava izvravanje programa. Isti efekat ima i uvoenje vie skupova registara (register window), pri emu svaki skup registara podrava izvravanje razliitog potprograma, ime se izbegava korienje steka u radnoj memoriji. Vei adresni prostor, na primer, 64 bita, kao kod DEC ALPHA procesora, je potreban, jer se prosena veliina programa udvostrui svake godine, odnosno zauzme jedan bit vie u adresnom prostoru. Za RISC procesore je vano poveanje paralelizma u njihovom radu. To se postie, na primer, uvoenjem vie nezavisnih linija (three-bus architecture) koje od registara vode do aritmetiko-logike jedinice i natrag (slika 8.6.7).
registri

...

aritmetiko logika jedinica

Slika 8.6.7 Vezivanje registara i aritmetiko-logike jedinice pomou 3 sabirnice Ovakva veza (datapath) registara i aritmetiko-logike jedinice omoguuje da u jednom procesorskom ciklusu sadraji dva registra stignu do aritmetiko-logike jedinice, kao i da se rezultat njene aktivnosti smesti u trei registar. Paralelizam u radu RISC procesora se poveava, na primer, preputanjem prvom stepenu njegove protone strukture da uveava programski broja, to

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

241

podrazumeva da je ovaj stepen osposobljen za sabiranje. Postojanje vie nezavisnih stepeni za obavljanje celobrojne aritmetike ili aritmetike realnih brojeva omoguuje i paralelno izvravanje vie naredbi, kao to su naredbe za celobrojnu aritmetiku i za aritmetiku realnih brojeva. Procesori, koji mogu da izvravaju istovremeno vie naredbi, na primer, do 4, kao IBM RS/6000 i DEC ALPHA, se nazivaju superskalari (superscalar). Ugradnja skrivene memorije u RISC procesore doprinosi poveanju brzine izvravanja programa. U tom pogledu, posebno je vano razdvajanje skrivene memorije na deo namenjen samo za naredbe i na deo namenjen samo za podatke, jer tada dobavljanja naredbi i njihovih operanada mogu da se potpuno preklapaju. Na skrivenu memoriju se moe sa uspehom primeniti i ideja memorijske hijerarhije, pa se tako javljaju skrivene memorije u dva nivoa. Na viem nivou je manja skrivena memorija, sa kraim vremenom pristupa, a na niem nivou je vea skrivena memorija sa duim vremenom pristupa. Gornji nivo skrivene memorije se pribliava svojim vremenom pristupa potrebama procesora, a donji nivo svojim kapacitetom utie na smanjenje verovatnoe promaaja. Dva nivoa skrivene memorije su, na primer, ugraena u RISC procesor DEC ALPHA 21164, tako da se na viem nivou nalaze dve skrivene memorije, svaka sa po 8 kilobajta, pri emu je jedna namenjena za mainske naredbe, a druga za podatke, dok se na niem nivou nalazi jedna skrivena memorija sa 96 kilobajta. Brzini izvravanja programa doprinosi i ubrzanje pretvaranja virtuelne adrese u fiziku, koje je posledica prebacivanja upravljanja virtuelnom memorijom u nadlenost procesora. Formati mainskih naredbi RISC procesora su pravilni, znai imaju isti raspored polja i istu duinu za sve naredbe. To omoguuje bre dekodiranje i vee preklapanje izvravanja naredbi, jer u ovakvim mainskim naredbama nema dodatnih rei, kao kod mainskih formata promenljive duine, pa one ne mogu izazvati odlaganje dobavljanja naredne mainske naredbe. Iz istih razloga, za svaku vrstu mainske naredbe su, u njenom mainskom kodu, predodreeni naini adresiranja. Tako je indeksno adresiranje predvieno samo za naredbe prenosa podataka (load i store), koje jedine mogu da pristupe lokacijama radne memorije, radi prenosa njihovog sadraja u registre procesora, ili u obrnutom smeru. Aritmetike i logike naredbe pristupaju samo sadrajima registara procesora i, eventualno, neposrednim operandima, prisutnim u mainskom formatu naredbe. Za upravljake naredbe je predvieno ili registarsko adresiranje, kod koga je odredina adresa u nekom od registara procesora, ili relativno adresiranje, kod koga odredina adresa nastaje kao zbir neposredne vrednosti iz mainskog formata naredbe i sadraja nekog od registara procesora. Ovakvo ogranieno korienje naina adresiranja doprinosi preklapanju izvravanja naredbi, jer se tako izbegava da se podudare, na primer, iste vrste pristupanja radnoj memoriji u toku izvravanja raznih naredbi. Nepromenljivost mainskih formata naredbi uzrokuje da je veliina

242

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

neposrednih operanada ograniena, jer je za njih na raspolaganju samo deo bita iz mainskog formata naredbi. Veliina ubrzanja rada RISC procesora zavisi od kompajlera. Njegov zadatak je ne samo da generie najbolje nizove mainskih naredbi, nego i da mainske naredbe u ovim nizovima tako rasporedi, da se ostvari to dugotrajnije preklapanje njihovih izvravanja. Tako, kompajler razdvaja meusobno zavisne naredbe, kod kojih, na primer, rezultat izvravanja jedne naredbe predstavlja ulazni operand druge i ije preklapanje nije mogue. Meusobno zavisne naredbe se razdvajaju umetanjem izmeu njih drugih, nezavisnih mainskih naredbi. Ovakvo, statiko rasporeivanje je naroito vano za uspean rad super-skalara. Poto postojanje status registara sputava slobodu kompajlera kod statikog rasporeivanja, RISC procesori uglavnom ne sadre status registre, nego u registre opte namene odlau vrednosti 0 ili 1 kao rezultat provere vaenja nekog uslova. Za provere vaenja pojedinih uslova, kao to su vee, manje i slino, postoje posebne naredbe. Uz njih obino postoje i uslovne upravljake naredbe, koje dovode do izmene toka izvravanja programa, zavisno od toga da li neki registar sadri vrednost 0 ili vrednost 1. Alternativa je i da se naredbe provere i uslovne upravljake naredbe spoje u jednu naredbu, ije izvravanje zahteva dvostruko vie ciklusa od preostalih naredbi. Poto i izvravanje upravljakih naredbi skrauje duinu preklapanja, kompajler ima zadatak da izbacuje ovakve naredbe iz mainskog programa, kad god je to mogue. Na primer, kompajleri prevode petlje (loop) sa unapred zadanim i nepromenljivim brojem ponavljanja, tako, da zadani broj puta ponove generisanje tela takvih petlji (loop unrolling). Na taj nain upravljake naredbe postaju suvine, a generisani niz mainskih naredbi osigurava dugotrajno preklapanje njihovog izvravanja. Negativan uticaj upravljakih naredbi se neutralie i preklapanjem njihovog izvravanja sa izvravanjem naredbi koje ne zavise od izvravanja pomenutih upravljakih naredbi. Kompajler jedino ne moe da neutralie uticaj prekida na skraivanje duine preklapanja. Zadatak kompajlera je i da obezbedi da se najee koriene vrednosti nalaze u registrima procesora, jer se tako izbegava pristupanje radnoj memoriji. Upravljake naredbe su problematine za RISC procesore, jer protoni reim rada ovih procesora uzrokuje da se dobavljanje nove naredbe preklapa sa dekodiranjem upravljake naredbe. Prema tome, da bi se izbegao zastoj (stall) punjenja protone strukture, odnosno, da bi se izbeglo skraenje duine preklapanja, pre izvravanja upravljake naredbe mora se odluiti da li se dobavlja naredba iza nje ili njena ciljna naredba. Takva odluka se zasniva na dinamikom predvianju ishoda izvravanja upravljakih naredbi. Loe predvianje dovodi do izvravanja pogrenih naredbi. Ono se prekida im bude poznat ishod izvravanja upravljake naredbe, ali tada sleduje ponitavanje efekata pogreno izvrenih naredbi. Da bi to bilo mogue, neophodno je koristiti ili privremene lokacije za smetanje rezultata izvravanja pogrenih naredbi, ili sauvati vrednosti koje su ovi rezultati izmenili.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

243

Dinamiko predvianje ishoda izvravanja upravljakih naredbi se zasniva na pamenju ishoda njihovih prethodnih izvravanja i na pretpostavci da e ponovljena izvravanja imati isti ishod. Kompajler moe da doprinese tanosti dinamikog predvianja, ako postoji nain da ostavi podatak o sigurnim ishodima izvravanja upravljakih naredbi. Poveanju duine preklapanja naredbi moe da doprinese i izvravanje naredbi van redosleda (out of order). Na primer, kada se dobavi zavisna naredba, za ije izvravanje je potreban rezultat izvravanja prethodne naredbe, umesto zastoja u punjenju protone strukture, moe se nastaviti sa dobavljanjem sledee naredbe. Na taj nain, odlaganje izvravanja zavisne naredbe nije problematino, dok iza nje ima nezavisnih naredbi. Radi otkrivanja zavisnosti naredbi, u toku njihovog izvravanja procesor vodi evidenciju (scorebording) o korienju svojih resursa, kao to su registri. Za registre ovakva evidencija obuhvata podatak da li izvravane naredbe itaju ili piu neki od registara. Kada se dobavi nova naredba koja ita iz nekog registra, a za taj registar je ve evidentirano da jedna od izvravanih naredbi pie u njega, tada je jasno da nova naredba zavisi od jedne od izvravanih naredbi. Meuzavisnost naredbi se moe otkloniti, kada one ne prosleuju jedna drugoj rezultate svog rada, nego samo koriste isti registar. Tako, ako izvravana naredba ita iz nekog registra, a nova naredba pie u isti registar, tada je meuzavisnost ovih naredbi mogue otkloniti korienjem rezervnog registra procesora za drugu naredbu (register renaming, Tomasulo algorithm). Uz RISC procesore su neophodne velike radne memorije, jer su njihovi mainski programi znatno dui od mainskih programa CISC procesora. Za RISC procesore je karakteristino da podravaju memorijski preslikani ulaz izlaz, kao i da potuju IEEE 754 standard za aritmetiku realnih brojeva. IEEE 754 STANDARD ZA ARITMETIKU REALNIH BROJEVA IEEE 754 standard definie 3 formata mainske normalizovane forme realnih brojeva: 1. jednostruka preciznost od 32 bita sa najznaajnijim bitom za predznak, narednih 8 bita za podeeni eksponent (excess 127 exponent) i preostalih 23 za frakciju, 2. dvostruka preciznost od 64 bita sa najznaajnijim bitom za predznak, narednih 11 bita za podeeni eksponent (excess 1023 exponent) i preostalih 52 za frakciju, 3. proirena preciznost od 80 bita koja je namenjena za interno korienje u toku raunanja, radi smanjivanja greke, izazvane odbacivanjem prekobrojnih cifara. Ovaj standard definie i denormalizovane (denormalized) brojeve. Oni se koriste za predstavljanje manjih vrednosti od onih koje se mogu predstaviti mainskom normalizovanom formom. Na taj nain se problem potkoraenja (underflow) ublaava. IEEE 754 standard uvodi i oznake za beskonano (infinity) i

244

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

neodreeno (not a number), koje nastaju kao rezultat deljenja konanog broja nulom ili deljenja beskonanog sa beskonanim. Znai, ove oznake mogu da se koriste u aritmetikim operacijama realnih brojeva. ARHITEKTURA NAREDBI ZA MIPS RISC procesori, kao to su MIPS, INTEL 860, MOTOROLA 88000 i SPARC, imaju slinu arhitekturu. Arhitektura naredbi za MIPS podrava adresni prostor od 32 bita, koji je organizovan u bajte. Ona omoguuje rukovanje binarnim vrednostima velikim 1, 2 i 4 bajta, kao i realnim vrednostima od 4 i 8 bajta (floating-point). U ovoj arhitekturi je na raspolaganju 16 registara od 32 bita ili 16 registara od 64 bita za realne brojeve. Ova arhitektura podrava virtuelnu memoriju. Ona podrava neposredno, registarsko i indeksno adresiranje. Mainski formati naredbi ove arhitekture izgledaju:
6 5 5 5 5 6

kod naredbe ulazni reg1 ulazni reg2 izlazni reg

konstanta

kod naredbe

Prethodni mainski format naredbi odgovara aritmetikim i logikim naredbama, iji ulazni operandi su u registrima oznaenim kao ulazni reg1 i ulazni reg2, a izlazni operand se smeta u registar oznaen kao izlazni reg. Ovaj mainski format odgovara i naredbama pomeranja koje koriste polje konstanta.
6 5 5 16

kod naredbe

ulazni reg

izlazni reg

konstanta

Prethodni mainski format naredbi odgovara naredbama prenosa podataka.


6 5 5 16

kod naredbe ulazni reg1 ulazni reg2

konstanta

Prethodni mainski format odgovara upravljakim naredbama. Za uslovne upravljake naredbe se podrazumeva: (1) da njihov uslov zavisi od rezultata poreenja sadraja dva registra ili (2) da je taj uslov odreen sadrajem registra, u kome se nalazi kod logike vrednosti (0 ili 1).
6 26

kod naredbe

konstanta

Prethodni mainski format odgovara bezuslovnim upravljakim naredbama. Arhitektura naredbi za MIPS obuhvata sledee vrste naredbi: 1. naredbe za rukovanje podacima (za prenos podataka), 2. naredbe za rukovanje bitima (logike naredbe i naredbe pomeranja),

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

245

3. naredbe za celobrojnu binarnu aritmetiku (obuhvaene sve aritmetike operacije), 4. naredbe za aritmetiku realnih brojeva (obuhvaene sve aritmetike operacije), 5. upravljake naredbe i 6. sistemske naredbe. INTEL PENTIUM PRO PROCESOR Arhitektura naredbi za INTEL PENTIUM PRO je proirena, u donosu na arhitekturu naredbi za INTEL 80386, naredbama za aritmetiku realnih brojeva, naredbama za rukovanje potronjom energije, naredbama za multimedijalne primene (MMX), kao i manjim brojem drugih naredbi razliite namene. Naredbe za rukovanje potronjom energije su namenjene, pre svega, raunarima sa baterijskim napajanjem. Naredbe za multimedijalne primene olakavaju obradu zvuka i slike, jer podravaju SIMD model obrade podataka. INTEL PENTUIM PRO procesor je super-skalar koji moe da izvri do 3 naredbe u jednom procesorskom ciklusu (three-way superscalar). Unutar ovoga procesora se nalazi RISC jezgro sa 12-stepenom protonom strukturom, koja dozvoljava izvravanje naredbi van redosleda. Naredbe RISC jezgra predstavljaju mikro-naredbe za naredbe INTEL PENTIUM PRO procesora. Ovaj procesor se oslanja na dva nivoa skrivene memorije. Prvi nivo sainjavaju skrivena memorija za podatke (L1 data cache) i skrivena memorija za naredbe (L1 instruction cache), svaka od po 8 kilobajta. Drugi nivo (L2 cache) se sastoji od 256 kilobajtne statike poluprovodnike memorije, spojene sa procesorom posebnom 64-bitnom sabirnicom. EVOLUCIJA MASOVNE MEMORIJE Tehnologija magnetnih diskova se uspostavila kao glavni oslonac masovne memorije, jer je uspeno pratila porast zahteva, zahvaljujui svom stalnom usavravanju. Tako je proseno svake 3 godine udvostruavan kapacitet diskova, a njihovo srednje vreme pristupa se smanjivalo za oko treinu u toku 10 godina. Rast kapaciteta se zasnivao na poveanju gustine magnetnog zapisa. Zahvaljujui tome, dimenzije magnetnih diskova su se smanjivale, kao i njihovo srednje vreme pristupa, jer su se smanjivale kako udaljenosti susednih staza, tako i njihova duina. Zato su glave diskova za krae vreme prelazile sa staze na stazu, kao to je i svaka staza prolazila za krae vreme ispod njih. Srednje vreme pristupa diska se moe smanjiti na svoj k-ti deo, ako se koristi k diskova u nizu (disk array), tako da se istovremeno pristupa blokovima na raznim diskovima. Ovaj pristup se zasniva na ideji koja je primenjena kod modularne organizacije radne memorije. On je poznat pod skraenicom RAID (redundant array of independent disks). Za RAID je standardizovano 6 razliitih organizacija, oznaenih kao RAID 0, RAID 1, RAID 2, RAID 3, RAID 4 i RAID 5. Prva podrava

246

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

smanjenje srednjeg vremena pristupa, jer omoguuje raspodelu susednih blokova na 4 diska. Znai, u proseku je mogue pristupiti nizu od 4 susedna bloka za vreme pristupa jednom bloku. Meutim mana prve organizacije je nedovoljna pouzdanost, jer je ona upotrebljiva samo ako su sva 4 diska ispravna. Ovde je vano uoiti da je verovatnoa da sva 4 diska budu ispravna je manja od verovatnoe da bilo koji od njih bude pojedinano ispravan. Druga i ostale organizacije poveavaju pouzdanost, tako to uvode redundantne (dodatne, rezervne) diskove. Na primer, druga organizacija koristi 8 diskova, 4 kao osnovna i 4 kao rezervna, tako da rezervni diskovi predstavljaju kopiju osnovnih diskova. Preostale organizacije poveavaju pouzdanost korienjem kodova za otkrivanje i oporavak od greaka. Tehnologija optikih diskova nudi vei kapacitet od tehnologije magnetnih disketa, pa su zato optiki diskovi preuzeli od magnetnih disketa arhivsku ulogu. Primer optikog diska je CD (compact disc). CD koristi lasersku tehnologiju da izmeni optika svojstva podloge na koju se u obliku spirale upisuju podaci. Radi univerzalne upotrebe optikih diskova, za organizaciju podataka, odnosno za sistem datoteka optikog diska postoji meunarodni standard ISO 9660. Zahvaljujui njemu isti optiki disk moe da se koristi na svim raunarima. Postoje 3 vrste optikih diskova, oznaene kao CD-ROM (read only memory), CD-R (recordables) i CD-RW (rewritables). Prva vrsta se proizvodi pomou posebnih matrica i ovakve optike diskove raunari mogu samo itati. Druga vrsta optikih diskova koristi tehnologiju koja omoguuje raunarima da piu na optike diskove. Meutim, jednom upisani podaci na ovakav optiki disk ne mogu biti kasnije izbrisani. Posebna podvarijanta ovakvih optikih diskova dozvoljava njihovo dopisivanje. Ovakvi optiki diskovi nose oznaku CD-XA. Prilikom svakog dopisivanja, pravi se novi sadraj optikog diska, u kome mogu biti izostavljene neke prethodno upisane datoteke, to stvara iluziju da se datoteke mogu izbrisati. Trea vrsta optikih diskova koristi tehnologiju koja dozvoljava viestruko pisanje i brisanje podataka. Optiki diskovi sa oznakom DVD (digital versatile disk) koriste noviju tehnologiju, pa imaju viestruko vei kapacitet od prethodne 3 vrste optikih diskova (4.7 gigabajta i vie prema 700 megabajta). Tehnologija poluprovodnikih diskova, zasnovanih na FLASH memorijskim ipovima, nudi znatno manju potronju energije od prethodne dve tehnologije i znatno krae vreme pristupa, ali uz znatno viu cenu, pa je njena primena ograniena samo na sluajeve u kojima njene prednosti opravdavaju njenu izuzetno visoku cenu. UTICAJ RISC PROCESORA NA VIRTUELNU MEMORIJU Adresni prostor od 64 bita, koga uvode pojedini RISC procesori, izaziva pojavu suvie velikih tabela stranica, tako da one prevazilaze ukupnu memoriju raunara. Na primer, za stranice velike 212 (4 kilobajta), tabela stranica ima 252 elemenata, odnosno zauzima 255 bajta, ako njeni elementi zauzimaju po 8 bajta. Zato se, umesto tabele stranica, koristi invertovana tabela stranica (inverted page

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

247

table). Broj njenih elemenata je jednak broju fizikih stranica radne memorije, tako da je svakoj fizikoj stranici pridruen element ove tabele, iji indeks adresira dotinu fiziku stranicu. Na invertovanu tabelu stranica se primenjuje princip rada asocijativne memorije sa jednostrukom asocijativnou. Znai deo bita iz zadane adrese virtuelne stranice slui da indeksira element invertovane tabele stranica i da, ujedno, adresira fiziku stranicu, pridruenu dotinom elementu. Ako indeksirani element sadri, kao referentnu adresu, preostale bite iz zadane adrese virtuelne stranice, tada se njena kopija nalazi u fizikoj stranici, pridruenoj dotinom elementu. Svaki element invertovane tabele stranica sadri bit popunjenosti dotinog elementa i bite (referentne) adrese virtuelne stranice, ija kopija se nalazi u fizikoj stranici koja je pridruena dotinom elementu (slika 8.6.8). 000 001 010 011 100 101 110 111 Slika 8.6.8 Organizacija invertovane tabele stranica Za indeksiranje elemenata invertovane tabele stranica sa slike 8.6.8 mogu posluiti 3 najmanje znaajna bita adrese virtuelne stranice. Preostali biti predstavljaju referentni deo njene adrese. Ako indeksirani element invertovane tabele stranica ne sadri referentni deo adrese virtuelne stranice, tada njoj ne korespondira fizika stranica. U tom sluaju neophodno je: (1) osloboditi fiziku stranicu koja je pridruena indeksiranom elementu, (2) u nju smestiti kopiju dotine virtuelne stranice i (3) referentni deo njene adrese smestiti u indeksirani element. Organizacija invertovane tabele stranica sa slike 8.6.8 podrazumeva da svakoj adresi virtuelne stranice odgovara samo jedan element invertovane tabele stranica, kao i da sve adrese virtuelnih stranica sa ista 3 najmanje znaajna bita koriste isti element invertovane tabele stranica. SPOJNE MREE Spojne mree omoguuju povezivanje raznih organizacionih komponenti raunara. One omoguuju serijski prenos podataka koji su organizovani u poruke. Spojne mree imaju pravilan oblik i decentralizovano upravljanje. Njihov pravilan oblik omoguuje automatsko odreivanje puta podataka kroz spojnu mreu. Upravljanje spojnim mreama je decentralizovano, jer se odluke o izboru puta

248

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

donose lokalno u okviru spojne mree, a na osnovu adresnog dela poruke koja se serijski prenosi. Osobine spojnih mrea zavise od komponenti koje one povezuju. Za spojne mree, koje povezuju procesore i module radne memorije, je bitno da ponude to vei broj nezavisnih puteva izmeu procesora i modula radne memorije, da bi to vie procesora moglo istovremeno da pristupa razliitim modulima radne memorije. Pri tome je vano da ovakve spojne mree uzrokuju to manje kanjenje. Ovakve spojne mree se zasnivaju na 22 prekidaima, koji omoguuju paralelnu i unakrsnu vezu izmeu svoja 2 ulaza i svoja 2 izlaza (slika 8.6.9).

Slika 8.6.9 Stanja prekidaa sa 2 ulaza i 2 izlaza Pomou ovakvih prekidaa, mogue je ostvariti istovremenu vezu izmeu 2 procesora i 2 modula radne memorije (slika 8.6.10).
MODUL RADNE MEMORIJE MODUL RADNE MEMORIJE

PROCESOR

PROCESOR

Slika 8.6.10 Primer upotrebe prekidaa sa 2 ulaza i 2 izlaza Za povezivanje vie od 2 procesora sa vie od 2 modula radne memorije, potrebno je vie 22 prekidaa, rasporeenih u vie stepeni. Zato se ovakva spojna mrea naziva viestepena prekidaka mrea (multistage switching network). Pravila rasporeivanja prekidaa u viestepenoj prekidakoj mrei, kao i pravila njihovog meusobnog povezivanja se dobro uoavaju na primeru povezivanja jednog procesora sa 4 modula radne memorije. Da bi se ostvarila ovakva veza, jedini procesor se vee za ulaz jednog prekidaa. Pri tome se izlazi

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

249

ovog prekidaa vezuju za ulaze druga dva prekidaa, iji izlazi su vezani za po jedan modul radne memorije. Prvi od pomenuta 3 prekidaa pripada prvom stepenu viestepene prekidake mree, a preostala 2 prekidaa pripadaju njenom drugom stepenu (slika 8.6.11).
00 00 00 00 MODUL RADNE MEMORIJE MODUL RADNE MEMORIJE MODUL RADNE MEMORIJE MODUL RADNE MEMORIJE

PROCESOR

01

01

01

01

10

10

11

11

Slika 8.6.11 Princip rada dvostepene prekidake mree Ulazi i izlazi prekidaa sa slike 8.6.11 su oznaeni binarnim brojevima, da bi se istaklo pravilo povezivanja prekidaa iz raznih stepeni viestepene prekidake mree. Po ovom pravilu, izlaz prekidaa iz jednog stepena se povezuje sa ulazom prekidaa iz sledeeg stepena, tako da binarna oznaka ulaza nastaje krunim pomeranjem za jedno mesto u levo bita iz binarne oznake izlaza. Ovakav nain povezivanja prekidaa iz raznih stepeni se naziva izmeani spoj (shuffle exchange). Podrazumeva se da je binarna oznaka svakog modula radne memorije sa slike 8.6.11 jednaka binarnoj oznaci izlaza prekidaa iz drugog stepena, na koji je dati modul povezan. Ovakva binarna oznaka ulazi u sastav poruke koja odgovara transakciji itanja ili pisanja. Ovu poruku upuuje procesor ka odgovarajuem modulu radne memorije. Izmeani spoj omoguuje svakom prekidau da odredi svoje stanje na osnovu bita binarne oznake modula radne memorije, sadrane u poruci koja je stigla do njega. Na taj nain svaki prekida daje svoj doprinos povezivanju procesora i traenog modula radne memorije. Pri tome, prvi bit ovakve binarne oznake odreuje stanje prekidaa iz prvog stepena, a drugi bit odreuje stanje prekidaa iz drugog stepena. Na isti nain se tretiraju i ostali biti, ako ima vie od 2 stepena. Podrazumeva se da svaki od prekidaa usmerava poruku na

250

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

gornji izlaz, ako njemu namenjeni bit sadri vrednost 0. Inae, poruka odlazi na donji izlaz prekidaa. Stanje prekidaa odreuje poruka koja prva stigne do jednog od njegova 2 ulaza. Znai, poruka koja odgovara transakciji, usmerenoj ka modulu radne memorije sa binarnom oznakom 11, prolazi kroz donji izlaz jedinog prekidaa iz prvog stepena i kroz donji izlaz donjeg prekidaa iz drugog stepena. Na taj nain se uspostavlja veza izmeu procesora i pomenutog modula radne memorije. Ova veza opstaje dok se zahtevana transakcija ne obavi. Opisani nain upravljanja prekidaa omoguuje svakom prekidau da samostalno odreuje svoje stanje, to je primer decentralizovanog upravljanja. Za vezivanje 4 procesora i 4 modula radne memorije dovoljna su 4 prekidaa, rasporeena u 2 stepena (slika 8.6.12).
00 00 00 00 00 00 MODUL RADNE MEMORIJE MODUL RADNE MEMORIJE MODUL RADNE MEMORIJE MODUL RADNE MEMORIJE

PROCESOR

PROCESOR

01

01

01

01

01

01

PROCESOR

10

10

10

10

10

10

PROCESOR

11

11

11

11

11

11

Slika 8.6.12 Primer upotrebe dvostepene prekidake mree Spojna mrea sa slike 8.6.12 se naziva omega viestepena prekidaka mrea. Ona omoguuje, na primer, istovremene veze procesora i modula radne memorije sa istim binarnim oznakama. Ove binarne oznake su navedene uz procesore i uz module radne memorije. Omega viestepena prekidaka mrea spada u blokirajue viestepene prekidake mree, jer ne omoguuje istovremenu vezu bilo kog procesora i bilo kog modula radne memorije. Na primer, dok je uspostavljena veza izmeu procesora 00 i modula radne memorije 01, dotle je blokirana, odnosno onemoguena veza izmeu procesora 10 i modula radne memorije 00. Postoje i neblokirajue viestepene prekidake mree, kao to su Bene viestepene prekidake mree. Pored njih, postoje i viestepene prekidake

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

251

mree koje povezuju razliit broj ulaza i izlaza, kao to su Banian viestepene prekidake mree. Prednost viestepenih prekidakih mrea u odnosu na unakrsne matrice je da uz znatno manje prekidaa ostvaruju priblino istu funkciju. U prethodnom primeru omega viestepene prekidake mree bila su potrebna samo 4 prekidaa za povezivanje 4 procesora sa 4 modula radne memorije, za razliku od 16 prekidaa, neophodnih za istu funkciju kod unakrsne matrice. Ipak, proirljivost multiprocesora, zasnovanih na viestepenim prekidakim mreama, je ograniena brojem prekidaa, jer je kanjenje viestepene prekidake mree proporcionalno broju prekidaa. BBN Butterfly, koga je na trite sredinom osamdesetih godina izbacio BBN LAB., predstavlja primer multiprocesora, zasnovanog na viestepenoj prekidakoj mrei. Njegova posebnost je da je svaki procesor posebnom sabirnicom spojen sa jednim od modula radne memorije, zbog ega BBN Butterfly spada u NUMA multiprocesore. Kod njega je vreme pristupa lokalnom modulu radne memorije, posredstvom posebne sabirnice, 2 mikrosekunde, dok je vreme pristupa preostalim modulima radne memorije, posredstvom viestepene prekidake mree, 6 mikrosekundi. Osnovni gradivni modul BBN Butterfly sadri 16 procesora Motorola 68000 i 16 modula radne memorije, od kojih svaki ima 1 megabajt. BBN Butterfly se moe proirivati do 256 procesora i 256 modula radne memorije (slika 8.6.13).

PROCESOR

MODUL RADNE MEMORIJE

PROCESOR

VIESTEPENA PREKIDAKA MREA

MODUL RADNE MEMORIJE

...
PROCESOR

...
MODUL RADNE MEMORIJE

Slika 8.6.13 Organizacija BBN Butterflay multiprocesora Viestepene prekidake mree spadaju u dinamike spojne mree, jer uspostavljaju i raskidaju spojne puteve izmeu procesora i modula radne memorije. Statike spojne mree uspostavljaju trajnu (nepromenljivu) vezu izmeu svojih

252

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

vorova. One su podesne za povezivanje procesnih elemenata iz vektorske jedinice kod SIMD raunara, prilagoenih reavanju odreene klase problema, kod koje je unapred poznat oblik saradnje procesnih elemenata. To dozvoljava da se direktno poveu procesni elementi ija saradnja je neophodna. Dvodimenzionalna mrea (mesh, grid) predstavlja tipian primer statike spojne mree (slika 8.6.14).

Slika 8.6.14 Primer dvodimenzionalne mree Zacrnjeni kvadrati iz vorova dvodimenzionalne mree sa slike 8.6.14 predstavljaju prekidae. Za njih su vezani procesni elementi koji nisu prikazani na slici 8.6.14. Na taj nain svaki procesni element je vezan direktno za svoje horizontalne i vertikalne susede, pa samo njima moe direktno da alje poruke, odnosno samo od njih moe direktno da prima poruke. Rubni procesni elementi mogu biti povezani na razne naine. Kod spiralnog naina povezivanja, procesni element na desnom kraju svake horizontale je vezan za procesni element na levom kraju naredne horizontale, a kod cilindrinog naina povezivanja, meusobno su spojeni rubni procesni elementi sa istih horizontala, odnosno vertikala. Dvodimenzionalne mree su koriene za povezivanje procesnih elemenata iz vektorskih jedinica dva namenska SIMD raunara, oba proizvedena za potrebe NASA (National Aeronautics and Space Administration). Prvi, ILLIAC IV (ILLInois Automatic Computer), je bio namenjen za matrine operacije i za reavanje parcijalnih diferencijalnih jednaina. On je bio proizveden krajem ezdesetih godina, imao je 88 procesnih elemenata, namenjenih za aritmetiku realnih brojeva u 64 bita. U okviru svakog od ovih procesnih elemenata bila je lokalna radna memorija od 16 kilobajta. Drugi, MPP (Massively Parallel Processor), je bio namenjen za obradu satelitskih slika. On je bio proizveden krajem sedamdesetih godina, imao je 128128 procesnih elemenata, namenjenih za jednobitne operacije. U okviru svakog od ovih procesnih elemenata bila je lokalna radna memorija od 1024 bita. Statike spojne mree nisu podesne samo za razmenu poruka izmeu direktno povezanih vorova. One mogu uspeno da podre i razmenu poruka izmeu bilo koja 2 vora i bez potpunog meusobnog povezivanja svih vorova, pod uslovom da se na jednostavan i uniforman nain pronalaze najkrai putevi izmeu bilo kog para vorova. Za to je potrebno da se u vorovima statike spojne mree nalaze komunikacioni procesori, namenjeni samo za podrku razmene

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

253

poruka. Ako se ovakvi vorovi oznae binarnim brojevima, i ako su direktno povezani samo vorovi ije oznake se razlikuju u samo jednoj binarnoj cifri, tada svaki komunikacioni procesor moe da odredi najkrai put za bilo koju poruku samo na osnovu binarnih oznaka izvorinog i odredinog vora iz poruke koju prenosi. Zato je dovoljno otkriti razliite parove korespondentnih binarnih cifara iz izvorinog i odredinog vora. Ako za broj ovih parova n vai n>1, tada se izmeu izvorinog i odredinog vora nalazi n-1 vorova, ije posredovanje je neophodno za uspenu razmenu poruka. Pri tome, binarna oznaka prvog posrednika se razlikuje u samo jednom bitu od binarne oznake izvorita, i sve tako do poslednjeg posrednika, ija binarna oznaka se razlikuje u jednom bitu od binarne oznake odredita. Prema tome, izmenom jednog i to proizvoljno odabranog bita binarne oznake izvorita, po kome se ona razlikuje od binarne oznake odredita, nastaje ili binarna oznaka posrednika ili binarna oznaka odredita. Ovakve statike spojne mree sa, na primer, 8 vorova obrazuju (trodimenzionalnu) kocku, a sa 16 vorova obrazuju etvorodimenzionalnu hiperkocku (hypercube). etvorodimenzionalna hiperkocka je prikazana na slici 8.6.15.

0011 0001 0010 0000 0100 0101

0111 1001 0110 1000

1011 1101 1010 1100

1111

1110

Slika 8.6.15 Primer etvorodimenzionalne hiperkocke Crni kvadrati sa slike 8.6.15 predstavljaju prekidae. Dimenzije hiperkocke odreuju najveu moguu od minimalnih udaljenosti bilo koja 2 vora. Ovu udaljenost obrazuju ivice hiperkocke. Za etvorodimenzionalnu hiperkocku ta udaljenost je 4. Tako, na primer, za vorove sa binarnim oznakama 0000 i 1111, rezultat logike operacije iskljuivo ili je 1111. Prema tome, izmena bilo kog bita binarne oznake izvorinog vora daje binarnu oznaku vora posrednika, koji je na putu ka odredinom voru. Ponavljanje ovoga postupka za binarne oznake posrednikih i odredinog vora omoguuje odreivanje binarnih oznaka svih posrednikih vorova koji su na najkraem putu do odredinog vora. Statika spojna mrea u obliku hiperkocke se koristi i u SIMD i u MIMD raunarima. CM-1 (Connection Machine) predstavlja primer SIMD paralelnog raunara, koga je na trite poetkom osamdesetih godina izbacila Thinking

254

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Machines Corporation. On je namenjen za simbolike obrade, karakteristine za probleme vetake inteligencije, kao to su uparivanja (pattern matching), ili pretraivanja (search), a koje se oslanjanju na kompleksne pokazivake strukture i meusobnu komunikaciju sluajno odabranih procesnih elemenata. Za povezivanje procesnih elemenata, osnovni gradivni modul CM-1 sadri dvanaestdimenzionalnu hiperkocku sa 4096 vorova, meusobno povezanih sa 24576 dvosmernih linija, koje obrazuju ivice hiperkocke. U svakom od ovih vorova se nalazi jedan komunikacioni procesor i 16 jednobitnih procesnih elemenata, svaki sa po 4096 bita lokalne radne memorije. Ovi procesni elementi su povezani u dvodimenzionalnu mreu. Komunikacioni procesori posreduju u razmeni poruka izmeu procesnih elemenata iz raznih vorova. Prema tome, osnovni gradivni modul CM-1 sadri 65536 jednobitnih procesnih elemenata i 268 megabita radne memorije. Intel hypercube ili iPSC (Intel Personal SuperComputer), koji se pojavio sredinom osamdesetih godina, predstavlja primer multiraunara, zasnovanog na hiperkocki. Osnovni gradivni modul iPSC sadri petodimenzionalnu hiperkocku od 32 vora, a mogue je kombinovanje do 4 ovakva gradivna modula. U svakom voru se nalazi Intel 80286 procesor sa koprocesorom za aritmetiku realnih brojeva i sa 512 kilobajta lokalne radne memorije. Debelo drvo (fat-tree) predstavlja drugi primer statike spojne mree koja podrava razmenu poruka izmeu bilo koja 2 vora (slika 8.6.16).
00 01 02 03

00

01

10

11

20

21

30

31

10 11

12 13 14 15

Slika 8.6.16 Primer debelog drveta za 16 vorova Crni kvadrati sa slike 8.6.16 predstavljaju prekidae sa 4 ulaza i 2 izlaza, a crni krugovi predstavljaju procesore koji su na njih povezani. Debelo drvo je korieno u CM-5 (Connection Machine) multiprocesoru koga je na trite sredinom devedesetih godina izbacila Thinking Machines Corporation. I ovaj multiprocesor je bio napravljen od trino raspoloivih mikroprocesora.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

255

BARIJERNA SINHRONIZACIJA Primena multiprocesora u sloenim iteracionim numerikim proraunima je dovela do pojave potrebe za posebnom vrstom usklaivanja aktivnosti vie procesa koji su pridrueni razliitim procesorima. U ovakvim iteracionim proraunima svaki proces moe da pree na narednu iteraciju, tek kada svi procesi zavre tekuu iteraciju. Ovakvo usklaivanje aktivnosti se naziva sinhronizaciona barijera (barrier synchronization) i zahteva brojanje procesa koji su zavrili tekuu iteraciju, odnosno, koji su stigli do sinhronizacione barijere. Radi toga je potrebno odabrati posebnu lokaciju zajednike radne memorije, nazvanu broja i nameniti je za brojanje procesa, pristiglih do sinhronizacione barijere. Kada proces stigne do sinhronizacione barijere, on preuzima i uvea sadraj brojaa za vrednost 1. Pri tome se ne sme dozvoliti da vie procesa, jedan za drugim, proitaju isti sadraj brojaa i da zatim, nakon uveanja proitanog sadraja za vredost 1, opet, jedan za drugim, upiu uveani sadraj natrag, jer tada broja nee sadrati ispravan broj procesa, pristiglih do sinhronizacione barijere. Znai, potrebna je nedeljivost itanja, uveanja i pisanja vrednosti brojaa. Sinhronizaciona barijera se moe ostvariti pomou procesorske naredbe itaj-uveaj-pii (fetch-and-add). Uslov je da izvravanje te naredbe zauzme broja, koji je naveden kao operand naredbe, tako da izmeu itanja i pisanja ove lokacije nisu dozvoljeni drugi pristupi brojau. Ovakvo zauzimanje brojaa moe da obezbedi spojna mrea, ali i poseban kontroler memorijskog modula. Za ispravno brojanje procesa, pristiglih do sinhronizacione barijere, je vano da broja u poetku sadri vrednost 0. Pri tome, svaki od procesa, pristiglih do sinhronizacione barijere, ostaje uz barijeru u radnom ekanju dok god je sadraj brojaa manji od ukupnog broja procesa. Kada i poslednji proces pristigne do sinhronizacione barijere, sadraj brojaa vie nije manji od ukupnog broja procesa, pa svi procesi mogu prei na narednu iteraciju. Pri tome, sadraj brojaa ne sme biti anuliran, da bi svaki od procesa, koji se nalaze u radnom ekanju, ustanovio da su svi procesi stigli do sinhronizacione barijere. U meuvremenu, procesi koji su preli u narednu iteraciju mogu da uveaju broja. Zato, da bi se isti broja koristio za sinhronizacionu barijeru i u narednoj iteraciji, neophodno je da, prilikom narednog dolaska do sinhronizacione barijere, procesi ostanu u radnom ekanju dok je sadraj brojaa vei od ukupnog broja procesa. Pri tome se podrazumeva da poslednji proces, koji na kraju naredne iteracije stigne do sinhronizacione barijere, anulira broja. Precizan opis protokola, koga mora da potuje svaki od procesa, da bi se ostvarila sinhronizaciona barijera, opisuje funkcija barrier, napisana programskim jezikom C:
void barrier(int *counter) { char state; state = (*counter < NUMBER); if(fetch_and_add(counter) == (2*NUMBER-1)) *counter = 0; while(state == (*counter < NUMBER)); };

256

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

Za izvravanje funkcije fetch_and_add se podrazumeva da odgovara izvravanju procesorske naredbe za itanje i uveavanje. Znai, poziv ove funkcije vraa zateenu vrednost brojaa i, uz to, uveava broja za 1. Konstanta NUMBER odgovara ukupnom broju procesa (procesora), parametar counter predstavlja broja, a lokalna promenljiva state odreuje za svaki proces posebno da li on eka da sadraj brojaa bude ili ne bude manji od ukupnog broja procesa. Dok izvravaju funkciju barrier procesi se nalaze u radnom ekanju.

8.7 PERIOD OKO 2000. GODINE


Nastavak usavravanja tehnologije veoma visoke integracije je omoguio smetanje na desetine miliona tranzistora na jedan ip. To je omoguilo da se u mikroprocesorskoj tehnoligiji realizuju ideje koje su nekada bile iskljuivo vezane za velike i super-raunare. Tako je izbrisana granica izmeu mikro, mini, velikih, a delom i super-raunara, a kao prirodnija se nametnula podela na ugraene (embedded) raunare, radne stanice (desktop computer, workstation) i servere. Ugraeni raunari predstavljaju upravljaki deo raznih ureaja. Radne stanice opsluuju pojedinane korisnike i omoguuju ne samo njihov lokalni rad, nego i pristup Internetu. Serveri posredstvom Interneta pruaju razne usluge korisnicima radnih stanica. UGRAENI RAUNARI Ugraeni raunari su vezani za primene sa vie ili manje strogim ogranienjima na vreme koje je raspoloivo za obradu podataka (real-time systems). Ovakve primene esto podrazumevaju obradu govornih, video i drugih signala. Specifini zahtevi ovakvih obrada, kao to su precizni numeriki prorauni za vrlo dugake nizove podataka, su doveli do posebne vrste procesora, koji se oznaavju skraenicom DSP (digital signal processor). Za ugraene raunare je vana mala potronja energije i mogunost rada u nepovoljnim uslovima visoke ili niske temperature, visoke vlanosti, vibracija, prisustva praine i agresivnih materija, jer ureaji, u koje su oni ugraeni, obino imaju baterijsko napajanje i predvieni su za rad na otvorenom prostoru ili u industrijskim pogonima. RADNE STANICE Radne stanice imaju bitne karakteristike nekadanjih velikih raunara, kao to su veliki adresni prostor, virtuelna memorija, vie sabirnica ili velika masovna memorija. Na slici 8.7.1 je prikazana organizacija radne stanice, zasnovane na PENTIUM procesoru.

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

257

PENTIUM PROCESOR

DRUGI NIVO SKRIVENE MEMORIJE

memorijska sabirnica

RADNA MEMORIJA

PCI KONTROLER PCI (Peripheral Component Interconnect) sabirnica USB (poluprovodniki) DISK USB (Universal Serial Bus) sabirnica

SCSI KONTROLER

USB KONTROLER

GRAFIKI ADAPTER

DISK

SCSI (Small Computer System Interface) sabirnica

EKRAN

MI

TASTATURA

CD

DISK ISA KONTROLER

IDE (Integrated Drive Electronics) sabirnica ISA (Industry Standard Architecture) sabirnica ZVUNA KARTICA

MODEM

TAMPA

Slika 8.7.1 Organizacija radne stanice koja je zasnovana na PENTIUM procesoru SERVERI Serveri se dele na multiprocesore i multiraunare. Multiprocesore karakterie deljena radna memorija (shared-memory systems). Ona je sastavljena od vie modula. Njoj, posredstvom spojne mree, mogu pristupati svi procesori. Njihova saradnja se ostvaruje razmenom podataka posredstvom istih memorijskih lokacija. To stvara probleme, jer razni procesori pristupaju istim memorijskim lokacijama u

258

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

nepredvidivom redosledu, koga jo komplikuje injenica da sadraj iste memorijske lokacije moe biti repliciran u vie skrivenih memorija. Zato je potrebno definisati pravila ponaanja memorije (memory semantycs) koja ograniavaju mogui redosled pristupanja istim memorijskim lokacijama. Ovakva pravila oblikuju modele konzistentnosti (consistency models). Tako, stroga konzistentnost (strict consistency) podrazumeva potpunu serijalizaciju pristupa, jer garantuje da svako itanje iste memorijske lokacije preuzima poslednju vrednost, koja je upisana u tu lokaciju. Stroga konzistentnost je suvie kruta, jer smanjuje stepen paralelizma u multiprocesoru. Sekvencijalna konzistetnost (sequential consistency) dozvoljava da svako itanje iste memorijske lokacije ne preuzima poslednju vrednost, koja je upisana u nju, nego moe da preuzme i neku stariju vrednost, uz garanciju da svaki procesor vidi isti redosled upisivanja vrednosti za svaku memorjsku lokaciju. Postoje i drugi, jo labaviji modeli konzistentnosti, koji su laki za izvedbu, a daju dovoljno pravilnosti za pisanje programa, ije ponaanje je predvidivo. Posebnu podvrstu multiprocesora predstavljaju COMA (cache only memory access) multiprocesori. Njihova celokupna deljena radna memorija se ponaa kao skrivena memorija. Znai svaki procesor ima njenu kopiju. O konzistentnosti ovih kopija se brinu posebni protokoli (cache coherence protocols). Primer multiprocesora je SEQUENT NUMA-Q 2000. Njegov osnovni gradivni modul sadri 4 INTEL PENTIUM PRO procesora i 4 giga bajta radne memorije. Ove gradivne module objedinjuju u multiprocesor posebni kontroleri koji su meusobno povezani. Svaki od ovih kontrolera poseduje skrivenu memoriju od 32 megabajta, a svi zajedno su odgovorni za usaglaenost sadraja svih skrivenih memorija. Multiraunare karakterie distribuirana radna memorija (distributed-memory system). Poto svaki raunar ima sopstvenu lokalnu radnu memoriju, koja je nepristupana za druge raunare, razmena poruka je jedini nain njihove saradnje. Razmena poruka se oslanja na posebne biblioteke. One realizuju odgovarajue komunikacione protokole i olakavaju komunikaciju procesa, aktivnih na raznim raunarima, omoguujui njihovu sinhronizaiciju. Uslovna podela multiraunara se zasniva na karakteristikama raunara od kojih su multiraunari sastavljeni. U klasi super-raunara se nalaze multiraunari, sastavljeni od procesora sa sopstvenom lokalnom radnom memorijom, koji su povezani brzim, namenski razvijenim spojnim mreama. Ovakvi multiraunari se oznaavaju skraenicom MPP (massively parallel processors). U klasi klastera (cluster, cluster of workstations) se nalaze multiraunari koji su sastavljeni od radnih stanica, povezanih komercijalnim spojnim mreama. Kao komercijalne spojne mree koriste se eternet mree, prekidai (switch) i sistemske mree (SAN, storage or system area network). Prekidai omoguuju prenos poruka sa svojih ulaznih na svoje izlazne linije. Njihova komercijalna primena je vezana za pojavu prekidaa na ipu, kao to je 6464 prekida, sa 64 ulazne i 64 izlazne linije. Sistemske mree istiskuju

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

259

ulazno-izlazne sabirnice. One su izvorno namenjene za povezivanje jedinica masovne memorije sa raunarom na udaljenostima do 100 metara. Primer MPP multiraunara je CRAY T3E. On sadri do 2048 procesora DEC ALPHA 21164, svaki sa do 2 gigabajta radne memorije. Ovi procesori su povezani dvosmernom trodimenzionalnom mreom (full-duplex 3D torus) u kojoj je svaki vor povezan sa 4 suseda iz svoje ravni i sa po jednim susedom iz gornje i donje ravni. Za vezu 512 vorova ovakva trodimenzionalna mrea ima 888 vorova. Pored toga, procesori su povezani i posebnom mreom za razmenu poruka, na koju su zakaeni i razni ulazno-izlazni ureaji i ureaji masovne memorije. Primer klaster multiraunara je GOOGLE. On je namenjen za pretraivanje Interneta (search engine). Jedan njegov klaster se sastoji se od 3200 radnih stanica. U sastav jedne radne stanice ulazi CELERON ili PENTIUM III procesor, 256 megabajta radne memorije, dva 40 gigabajtna diska i napajanje sa hlaenjem. Radne stanice su rasporeene u 40 ormara. Svaki ormar sadri 80 radnih stanica i dva 4040 prekidaa, tako da se u jednoj polovini ormana nalazi 40 radnih stanica i jedan 4040 prekida. Svaka od ovih 40 radnih stanica je povezana 100 megabitnom linijom za prekida iz iste polovine ormana, a on je povezan po jednom gigabitnom linijom za dva 128128 prekidaa koji GOOGLE klaster povezuju na Internet. PARALELIZAM UNUTAR PROCESORA Razvoj tehnologije visokog stepena integracije je prvo omoguio uvoenje protone strukture u procesor, radi izvravanja priblino 1 procesorske naredbe u jednom procesorskom ciklusu, a zatim je omoguio uvoenje vie protonih struktura u procesor (super-skalari) i izvravanje vie procesorskih naredbi u jednom procesorskom ciklusu (multiple-issue processors). Takva vrsta paralelizma unutar procesora ne zahteva programersku asistenciju, jer je na nivou procesorskih naredbi (instruction level parallelism) i mogua je izmeu nezavisnih naredbi koje pronalazi ili procesor ili kompajler. Broj istovremeno izvrenih naredbi u jednom procesorskom ciklusu zavisi od broja protonih struktura procesora, ali i od broja raspoloivih nezavisnih naredbi. Jedan nain da se povea broj raspoloivih nezavisnih naredbi je da se izvravanje pojedinih naredbi zapone pre nego to je poznato da li e one uopte biti izvravane (speculative execution). Efekti izvravanja tih naredbi se prihvataju kada se ispostavi da je njihovo izvravanje bilo potrebno. U suprotnom se javlja problem ako je njihovo izvravanje izazvalo izuzetak. Zato se obrada ovakvog izuzetka mora odloiti do trenutka kada je sigurno da je izvravanje naredbe bilo potrebno. Drugi nain da se povea broj raspoloivih nezavisnih naredbi je da programer oznai nezavisne delove svog programa. Tada je redosled izvravanja naredbi (thread) precizno odreen samo za svaki od nezavisnih delova istog programa, ali ne i izmeu njih. Poto su naredbe iz nezavisnih delova istog

260

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

programa meusobno nezavisne, one se mogu izvravati u proizvoljnom redosledu (thread level parallelism). Prema tome, izvravanja naredbi iz nezavisnih delova istog programa mogu istovremeno poinjati (simultaneous multithreading), kad god za to postoje raspoloivi resursi u procesoru. Istovremeno izvravanje vie naredbi komplikuje reakciju na prekide. Problem se javlja zbog izvravanja naredbi van redosleda i tekoe da se spolja precizno ustanovi ta se u procesoru deavalo u trenutku prekida. Prekidi su precizni (precise interrupt), ako pokretanju mehanizma prekida prethodi zavretak svih zapoetih izvravanja naredbi. U suprotnom su prekidi neprecizni (imprecise interrupt). Pristup super-skalara je da u svakom procesorskom ciklusu istovremeno zaponu izvravanje raspoloivih naredbi. Pri tome, broj raspoloivih naredbi varira od ciklusa do ciklusa, a za neke od njih se kasnije ispostavlja da su zavisne, to stvara probleme. Ovakav pristup ne garantuje puno iskorienje mogunosti procesora. Bolje iskorienje njegovih mogunosti bi se postiglo, ako bi u svakom ciklusu procesor zapoinjao izvravanje fiksnog broja naredbi, sa tanom naznakom koje od njih su nezavisne, pa mogu da se paralelno izvravaju. Za ovakve naredbe, ije izvravanje zapoinje istovremeno, se moe smatrati da obrazuju jednu veliku naredbu, pa se za ovakve procesore kae da imaju dugaak mainski format naredbe. Engleska skraenica ovog naziva je VLIW (very long instruction word). Poto je paralelizam izmeu ovakvih naredbi eksplicitno oznaen, raunari sa ovakvim procesorima se nazivaju raunari sa eksplicitnim paralelnim naredbama. Engleska skraenica ovog naziva je EPIC (explicitly parallel instruction computers). Da bi u svakom ciklusu bilo mogue zapoeti izvravanje fiksnog broja naredbi, potrebna je asistencija kompajlera. Zadatak kompajlera je da pripremi ovakve naredbe i da oznai koje od njih su nezavisne. Da bi preklapanje izvravanja ovakvih naredbi bilo jednostavnije i bez zadrki, vano je eliminisati uslovne upravljake naredbe. To se moe postii, ako se primeni koncept predikatskih naredbi (predicated instruction). Njihovo izvravanje zapoinje proverom vaenja zadanog predikata (uslova) koji je vezan za predikatsku naredbu. Ako predikat vai, izvravanje se nastavlja, inae se obustavlja. Predikat moe biti definisan sadrajem posebnog predikatskog registra, koga postavlja posebna naredba. Prema tome, uslovne upravljake naredbe se mogu potpuno eliminisati, ako ostale naredbe postanu predikatske. U ovakvoj situaciji, alternativno obavljanje jedne ili druge obrade istih podataka, zavisno od ispunjenosti nekog uslova, se osvaruje pomou predikatskih naredbi, tako da jednu obradu opisuje jedna sekvenca predikatskih naredbi, vezanih za vaenje pomenutog uslova, a drugu obradu opisuje druga sekvenca predikatskih naredbi, vezanih za vaenje suprotnog uslova. ARHITEKTURA NAREDBI ZA INTEL ITANIUM INTEL ITANIUM spada u RISC EPIC procesore. Arhitektura naredbi ovog procesora podrava 64-bitni adresni prostor. U ovoj arhitekturi na raspolaganju su

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

261

128 registara opte namene od 64 bita, 128 registra za realne brojeve od 82 bita, 64 predikatska registra (predicate registers) od 1 bita za predikate predikatskih naredbi, 8 registara za indirektne skokove (branch registers) od 64 bita i razne druge namenske registre. Mainski format svenja (bundle) naredbi ove arhitekture izgleda:
41 41 41 5

Njegova prva 3 polja su namenjena za 3 mainske naredbe. Svaka od ovih mainskih naredbi u 4 najznaajnija bita sadri kod naredbe, a u 6 najmanje znaajnih bita sadri kod predikatskog registra. Sadraj ostalih bita zavisi od vrste naredbe, kojih ima 111. U poslednjem polju svenja se nalazi 5 bitni kod vrste naredbi u svenju. On olakava dekodiranje naredbi iz svenja. Poto se podrazumeva eksplicitno oznaavanje paralelnih naredbi, koje mogu obuhvatati naredbe iz jednog ili vie svenjeva, kod vrste naredbi u svenju sadri i oznaku pozicije u svenju poslednje od naredbi iz grupe paralelnih naredbi. Na taj nain grupu paralelnih naredbi ine sve naredbe koje se nalaze izmeu dve zastopne oznake u istom ili raznim svenjevima, zavisno od sluaja. Implementacija ove arhitekture se oslanja na 3 nivoa skrivene memorije.

8.8 PITANJA
1. ta je harvardska arhitektura? 2. Koju tehnologiju su koristili raunari prve generacije? 3. U emu je razlika izmeu memorijskog i ulazno-izlaznog adresnog prostora? 4. ta je brzina procesora? 5. ta je brzina memorije? 6. Koje mane su imali raunari prve generacije? 7. Koju tehnoloigju su koristili raunari druge generacije? 8. ta je vreme pristupa? 9. ta je vreme ciklusa? 10. ta su procesori posebne namene? 11. Koliko mesta za operande je predvieno u mainskim formatima naredbi kod akumulatorskih arhitektura? 12. Koliko mesta za operande je predvieno u mainskim formatima naredbi kod stek arhitektura? 13. Koji je razlog smanivanja broja mesta za operande u mainskim formatima naredbi? 14. ta je preklapanje? 15. ta su mane raunara druge generacije? 16. Koju tehnologiju su koristili raunari tree generacije?

262

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55.

U emu je razlika izmeu velikih i mini-raunara? ta su familije raunara? Koju vrstu primena raunara su omoguili mini-raunari? ta je otvorena arhitektura? ta su CISC raunari? Kakvu upravljaku jedinicu koriste CISC raunari? ta je emulacija? Zato CISC raunari imaju sloene naredbe? ta je ortogonalnost naredbi? Koji naini organizovanja bajta u rei postoje u praksi? ta je memorijski preslikani ulaz-izlaz? ta je stepen multiprogramiranja? ta je lokalnost izvravanja? Koje vrste lokalnosti izvravanja postoje? ta je radni skup? U emu se izraava veliina stranice? ta je virtuelni adresni prostor? Od ega zavisi veliina virtuelnih adresa? Ko je zaduen za pretvaranje virtuelne adrese u fiziku adresu? Od kojih delova se sastoje virtuelna i fizika adresa? ta sadri tabela stranica? Koliko elemenata ima tabela stranica? Kako se pretvara virtuelna adresa u fiziku adresu (objasniti na primeru)? Ko izaziva stranine prekide? ta je zadatak obraivaa straninog prekida? Zato kontroler virtuelne memorije sadri asocijativnu memoriju? ta sadre lokacije asocijativne memorije koja se nalazi u kontroleru virtuelne memorije? Kako virtuelna memorija pomae meusobnu zatitu programa? ta je cilj memorijske hijerarhije? Koju ulogu ima skrivena memorija? Kako je organizovana skrivena memorija? ta sadre lokacije skrivene memorije? Gde se nalazi skrivena memorija? U emu su slinosti i razlike virtuelne i skrivene memorije? Zato iza procesora prvo dolazi kontroler virtuelne memorije, pa onda kontroler skrivene memorije? Da li je mogu obrnuti redosled? Za ta su bili zadueni operativni sistemi raunara tree generacije? ta je virtuelna maina? ta su mane raunara tree generacije? U emu je razlika izmeu primarnih i sekundarnih rei radne memorije?

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

263

56. U emu je razlika arhitektura naredbi za IBM SYSTEM/360 i za DEC PDP11? 57. Od ega zavisi brzina rada magnetnog diska? 58. Koje vrste transakcija podrava sabirnica? 59. ta su podeljene transakcije? 60. U emu je razlika izmeu sinhronih i asinhronih sabirnica? 61. Koje linije koristi arbitar sabirnice? 62. Zato se u istom raunaru koriste i memorijska i ulazno-izlazna sabirnica? 63. Kako radi asocijativna memorija? 64. Kako se, na osnovu broja komparatora, dele asocijativne memorije? 65. Koji sluajevi su mogui prilikom itanja i pisanja skrivene memorije? 66. Zbog ega skrivena memorija i memorijski preslikani ulaz-izlaz nisu saglasni koncepti? 67. Kako radi virtuelna memorija? 68. ta sadri element tabele stranica? 69. Kako se smanjuju memorijski zahtevi tabele stranica? 70. Koji nivoi obrazuju memorijsku hijerarhiju? 71. Ko upravlja prenosom podataka izmeu pojedinih nivoa memorijske hijerarhije? 72. U kojim situacijama se javlja problem sinhronizacije? 73. Na emu se zasniva reavanje problema sinhronizacije? 74. Po emu se razlikuju statike i dinamike memorije? 75. ta je namena statikih i dinamikih memorija? 76. ta je mikro-kontroler? 77. Zato su uvedene mree raunara? 78. Zato su uvedeni mreni operativni sistemi? 79. emu tei srednje vreme izvravanja naredbi sa preklapanjem? 80. ta je preduslov za preklapajui nain rada procesora? 81. ta ometa ostvarenje punog efekta preklapanja? 82. Zato su uvedene vektorske naredbe? 83. Kako modularno organizovana radna memorija podrava vektorske naredbe? 84. Koja svojstva imaju super-raunari? 85. Koliko naina adresiranja podrava arhitektura naredbi za DEC VAX11/780? 86. ta je skaliranje indeksa? 87. Da li arhitektura naredbi za INTEL 8086 podrava ortogonalnost naredbi i naina adresiranja? 88. Kako segmentna organizacija radne memorije omoguuje njeno racionalno korienje? 89. Zato se uvode prava pristupa segmentu?

264

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

90. ta sadri tabela segmenata? 91. Od kojih delova se sastoji logika adresa segmentno organizovane radne memorije? 92. Kako se pretvara logika adresa segmentno organizovane radne memorije u fiziku adresu? 93. ta je preduslov korienja deljenih biblioteka potprograma? 94. Zato je uvedena stranina segmentacija? 95. Od ega se sastoji logika adresa kod stranine segmentacije? 96. Kako se pretvara logika adresa kod stranine segmentacije u fiziku adresu? 97. Koliko nivoa ima tabela stranica virtuelne memorije kod arhitekture naredbi za INTEL 80386? 98. Kako radi mi? 99. Od ega se sastoji grafiki terminal? 100. emu slui tabela boja grafikog terminala? 101. Kako radi eternet? 102. Kako radi mrea sa putujuim etonima? 103. Kada je bolje koristiti eternet, a kada mreu sa putujuim etonima? 104. Gde je slaba taka vieprocesorskih raunara sa zajednikom sabirnicom? 105. emu slui unakrsna matrica? 106. Kako skrivene memorije otklanjanju zaguenje sabirnice? 107. Kako se reava problem usaglaenosti sadraja skrivenih memorija kod vieprocesorskih raunara sa zajednikom sabirnicom? 108. Kako se reava problem sinhronizacije kod vieprocesorskih raunara sa zajednikom sabirnicom? 109. ta je prouzrokovalo pojavu RISC arhitekture? 110. Na emu se zasniva skraenje procesorskog ciklusa RISC arhitekture? 111. Koja su fizika ogranienja skraenja procesorskog ciklusa? 112. Od ega zavisi prenik raunara? 113. Da li skrivena memorija utie na prenik raunara? 114. Od ega zavisi veliina poboljanja koga omoguuje paralelizam u obradi podataka? 115. Kakvi modeli raunanja postoje? 116. Koji oblici paralelizma su nevidljivi za programere? 117. Kako se na osnovu broja tokova naredbi i broja tokova podataka dele raunari? 118. U koju klasu raunara spadaju sistoliki raunari? 119. emu slui spojna mrea? 120. ta je glavna mana SIMD raunara? 121. Koja je osnovna razlika izmeu multiprocesora i multiraunara? 122. Po emu su specifini NUMA multiprocesori?

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

265

123. Sa stanovita programiranja da li su bolji multiprocesori, NUMA multiprocesori ili multiraunari? 124. ta je internet? 125. Kako se postie otpornost na kvarove? 126. Kako se poveava paralelizam u radu RISC procesora? 127. Da li RISC procesori podravaju ortogonalnost naredbi i naina adresiranja? 128. Po emu se arhitektura RISC procesora razlikuje od arhitekture CISC procesora? 129. Kakvu ulogu kompajleru dodeljuje RISC arhitektura naredbi? 130. Zato je vano dinamiko predvianje ishoda izvravanja upravljakih naredbi kod RISC procesora? 131. Kakvu vanost ima izvravanje naredbi van redosleda? 132. Zato su uvedeni denormalizovani brojevi? 133. Da li INTEL PENTIUM PRO procesor spada u RISC procesore? 134. Kakvu vrstu masovne memorije oznaava skraenica RAID? 135. Koje vrste optikih diskova postoje? 136. Zato je uvedena invertovana tabela stranica? 137. Kako funkcioniu viestepene prekidake mree? 138. Koje vrste statikih spojnih mrea postoje? 139. Kako se automatski odreuje put poruke za hiperkocku? 140. ta je cilj barijerne sinhronizacije? 141. ta su ugraeni raunari? 142. ta su radne stanice? 143. ta su serveri? 144. Kako se dele serveri? 145. ta povezuje radne stanice iz klastera? 146. ta omoguuje izvravanje vie procesorskih naredbi u jednom procesorskom ciklusu? 147. Kako se poveava broj raspoloivih procesorskih naredbi koje se istovremeno izvravaju? 148. Da li programer moe pomoi u poveavanju broja raspoloivih nezavisnih naredbi? 149. Od ega se sastoji VLIW format naredbe? 150. Zato su vane predikatske naredbe za EPIC raunar? 151. Kako izgleda mainski format naredbe za INTEL ITANIUM?

266

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

9. PROCENA OSOBINA RAUNARA


9.1 NAIN PROCENE OSOBINA RAUNARA
Za uspean rad raunara, neophodno je usaglasiti raznorodne komponente koje ulaze u njegov sastav. Raznorodnost ovih komponenti oteava njihovo usaglaavanje, ali i procenu ukupnih osobina raunara. Sa stanovita procene osobina raunara, procesor karakteriu veliina procesorskih naredbi i vreme njihovog izvravanja. Vreme izvravanja procesorske naredbe je odreeno trajanjem procesorskog ciklusa i njihovim brojem u procesorskoj naredbi. Poto razliite procesorske naredbe sadre razliit broj procesorskih ciklusa, procesor karakterie proseno vreme izvravanja procesorskih naredbi. Ono se obino ne odreuje kao aritmetika sredina, nego kao suma proizvoda verovatnoa izvravanja pojedinih vrsta procesorskih naredbi i vremena potrebnih za njihovo izvravanje. Ovakve verovatnoe se odreuju empirijski. Primer tako odreenih verovatnoa izvravanja pojedinih vrsta procesorskih naredbi, poznat pod nazivom Gibson mix, dodeljuje naredbama prenosa izmeu registara procesora i lokacija radne memorije verovatnou 0.31, uslovnim naredbama verovatnou 0.17, naredbama celobrojne aritmetike verovatnou 0.07, naredbama aritmetike realnih brojeva verovatnou 0.12, a ostalim naredbama verovatnou 0.33. Ako se zna srednji broj ciklusa po procesorskoj naredbi, tada se procesor karakterie vremenom njegovog ciklusa, ili, jo ee, taktom, odnosno frekvencijom (brojem procesorskih ciklusa u jedinici vremena). Kolinik frekvencije procesora i srednjeg broja procesorskih ciklusa po procesorskoj naredbi predstavlja srednji broj naredbi koje procesor moe da izvri u jedinici vremena ili frekvenciju naredbi. Ovakav srednji broj naredbi se obino izraava u milionima naredbi u sekundi. Engleska skraenica naziva ovakve jedinice je MIPS (million instructions per second). Na primer, RISC procesor sa procesorskim ciklusom od 10-8 sekundi ima frekvenciju 100 megaherca. Ako prosena naredba ovoga procesora traje 2 procesorska ciklusa, tada ovaj procesor moe u proseku da izvri 50 miliona procesorskih naredbi u sekundi (50 MIPS). Vano je naglasiti da MIPS nije podesna mera za meusobno poreenje procesora, zbog velikih razlika izmeu skupova naredbi razliitih vrsta procesora. Na primer, CISC procesori, kao to su procesori iz DEC VAX serije, omoguuju da se, u okviru izvravanja jedne procesorske naredbe, preuzmu dva operanda iz radne memorije, obavi njihovo sabiranje, i zbir smesti u radnu memoriju. Za isti posao su, kod tipinih RISC procesora, potrebne 4 procesorske naredbe. Iz istih razloga nije uputno porediti procesore ni na osnovu broja operacija aritmetike realnih brojeva koje oni mogu da obave u jedinici vremena. Engleska skraenica naziva ovakve jedinice je megaFLOPS ili MFLOPS (million floating-point operations per second).

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

267

Sa stanovita procene osobina raunara, radnu memoriju karakteriu veliina njene rei, ukupan broj rei i vreme ciklusa. Reciprona vrednost vremena memorijskog ciklusa odreuje propusnost radne memorije, odnosno broj itanja/pisanja lokacija radne memorije u jedinici vremena. Sa stanovita procene osobina raunara, sabirnicu karakterie propusnost (bandwidth), koja se izraava brojem bajta u sekundi. Sa stanovita procene osobina raunara, disk, kao sinonim za masovnu memoriju, karakteriu veliina bloka, ukupan broj blokova i srednje vreme pristupa (bloku diska). Ovo vreme je jednako sumi srednjeg vremena pomeranja, srednjeg vremena rotacije, vremena prenosa i vremena kontrolera. Srednje vreme pomeranja obino daje proizvoa, podrazumevajui ravnomerno pristupanje svim blokovima diska. Reciprona vrednost vremena pristupa odreuje propusnost diska, odnosno broj itanja/pisanja blokova diska u jedinici vremena. Na primeru prethodne etiri organizacione komponente raunara se moe pokazati problematinost njihovog usaglaavanja. Da bi procesor mogao da radi punom brzinom, do njega mora da stigne odgovarajui broj mainskih naredbi i podataka. To nije mogue bez odgovarajue propusnosti sabirnice i radne memorije. Skrivena memorija moe da dovede u sklad pomenute komponente, ali za dovoljno visoku verovatnou pogodaka. Vano je uoiti da ta verovatnoa zavisi od izvravanog programa. Poseban problem predstavlja propusnost diska, jer ona zavisi i od osobina operativnog sistema i od karakteristka izvravanog programa. Prethodno ukazuje da uspenost raunara podjednako zavisi od: 1. osobina i usaglaenosti njegovih organizacionih komponenti, 2. od osobina izvravanog programa, odnosno od toga da li u njemu preovlauju prorauni, interaktivni rad ili ulaz i izlaz podataka, 3. od operativnog sistema, ali i 4. od kompajlera. Zbog uticaja vie raznorodnih uzroka, teko je predvideti (proceniti) ponaanje raunara u raznim situacijama. Iz istih razloga je problematino i poreenje raunara na osnovu osobina njihovih pojedinih organizacionih komponenti. Zato se provera uspenosti arhitekture raunara, kao i poreenje raznih raunara, zasnivaju na posmatranju raunara kao celine, odnosno na posmatranju vremena potrebnog za izvavanje reprezentativnih programa (benchmark). Za ovakva poreenja je vano da na raznim raunarima budu obezbeeni isti uslovi, znai isti operativni sistem i isti kompajler. Nekada se, kao reprezentativni programi, koriste delovi odabranih programa (kernel, livermore loop, linpack), za koje se pretpostavlja da mogu da pokau osobine raunara kao celine. S istom namerom se prave i posebni programi (sintetic benchmark, whetstone, dhrystone), u kojima se nastoji obezbediti da izvravanja pojedinih vrsta naredbi budu u odnosu zapaenom kod odreene klase korisnikih programa. Meutim, najbolji reprezentativni programi su programi koje korisnik upotrebljava, jer jedino oni mogu ukazati na raunar koji najbolje odgovara korisnikovim potrebama.

268

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

9.2 PITANJA
1. 2. 3. 4. Od ega zavisi vreme izvravanja procesorske naredbe? Od ega zavise osobine raunara kao celine? ta oteava procenu osobina raunara? Na emu se zasnivaju praktino upotrebljiva meusobna poreenja raunara?

Miroslav Hajdukovi - Arhitektura raunara (pregled principa i evolucije)

269

LITERATURA
U pisanju ove knjige autor je koristio sledee izvore: HENNESSY, J.L., PATTERSON D.A.: Computer Organization and Design, The Hardware / Software Interface, second edition, San Francisco, CA: Morgan Kaufman, 1998. TANENBAUM, A.S.: Structured Computer Organization, Upper Saddle River, NJ: Prentice Hall, 1999. HENNESSY, J.L., PATTERSON D.A.: Computer Architecture A Quantitative Approach, third edition, San Francisco, CA: Morgan Kaufman, 2003. Za potpunije upoznavanje materije vezane za arhitekturu raunara autor preporuuje prethodno pomenute knjige. Preporuene knjige sadre iscrpan pregled literature iz oblasti arhitekture raunara.

Você também pode gostar