Sie sind auf Seite 1von 548

prof. dr. sc.

Slobodan Ribari

Graa raunala
ARHITEKTURA I ORGANIZACIJA RAUNARSKIH SUSTAVA I I

prof. dr. sc. Slobodan Ribari

GRAA RAUNALA
ARHITEKTURA I ORGANIZACIJA RAUNARSKIH SUSTAVA
1. izdanje

2011.

SADRAJ
Q 1. ARHITEKTURA RAUNARSKOG SUSTAVA 1.1. Uvod 1.2. Osnovni raunski modeli 1.3. Upravljaki tok, tok podataka i upravljanje slijedom izvravanja na temelju zahtjeva 1.3.1 Upravljaki tok 1.3.2. Tok podataka 1.3.3 Upravljanje zahtjevom 1.3.4.Turingov stroj 1.3.5. k-ta konfiguracijaTS-a 1.3.6. Von Neumannov model 1.4. Arhitektura, organizacija i graa raunarskog sustava 1.4.1. Definicija arhitekture raunarskog sustava 1.5 Klasifikacija arhitekture raunarskog sustava 1.5.1. Flynnova klasifikacija 2. VON NEUMANNOV MODEL RAUNALA : 2.1. Uvod 2.1.1. Nulta generacija - generacija mehanikih strojeva za raunanje (1644. - 1945.) 2.1.2. Prva generacija - elektronika raunala s elektronskim cijevima (1945. - 1955.) 2.1.3. Druga generacija raunala - tranzistor kao graevna komponenta (1955.-1965.) 2.1.4.Trea generacija - integrirani sklopovi (1965.-1980.) 2.1.5. etvrta generacija raunala - sklopovi vrlo visokog stupnja integracije (1980. - ?) 2.2. Funkcijske jedinice von Neumannovog modela raunala 2.2.1. Upravljaki tok, instrukcijski tok i tok podataka u Neumannovom modelu raunala 2.2.2. Aritmetiko-logika jedinica 2.2.3. Upravljaka jedinica 2.2.4. Memorijska jedinica 2.2.5. Ulazno-izlazna jedinica 2.3. Jednostavno mikroraunalo - von Neumannov model raunala 2.4. Von Neumannovo raunalo - raunalo SISD 2.5. UsporedbaTuringovog stroja i von Neumannovog modela raunala 3. POJEDNOSTAVLJENI MODELI CISC I RISC PROCESORA 3.1. Uvod 3.2. Pojednostavljeni model CISC procesora 3.3. Primjer izvoenja programa 3.4. Stanje na vanjskim sabirnicama 3.5. Pojednostavljeni model RISC procesora 3.5.1. Aritmetike i logike instrukcije 3.5.2. Instrukcije za pristup memoriji 3.5.3. Instrukcije grananja 3.5.4. Mjeovite instrukcije 4. PERFORMANSA RAUNALA 4.1. Uvod: performansa, cijena i omjer cijene i performanse 4.2. Mjere performanse 4.2.1 .MIPS - Millions of Instructions per Second 4.2.2. FLOPS - Floating-point Operations per Second 4.2.3. SPEC (System Performance Evaluation Cooperative) mjera 4.2.4 Sintetini ispitni programi 43. Amdahlov zakon 1 1 3 4 5 7 9 10 16 18 18 18 23 25 31 31 31 32 32 33 33 35 37 39 41 46 47 48 55 56 59 59 59 64 70 77 81 85 89 91 93 93 95 98 100 100 105 106

5. ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK 5.1. Zbirni jezik 5.1.1. Izvrljive instrukcije i pseudoinstrukcije 5.1.2. Makroinstrukcije 5.2. Razlozi uporabe zbirnog jezika 5.3. Dvoprolazni asembler 5.4. Postupak prevoenja zbirnog programa 5.5. Punilac (engl. loader) 6. UPRAVLJAKA JEDINICA 6.1. Uvod 6.2. Prijenos upravljanja unutar istog programa 6.3. Prijenos upravljanja izmeu razliitih programa 6.3.1. Prijenos upravljana izmeu pozivajueg i pozvanog programa 6.4. Rekurzivne programske procedure (rekurzivni potprogrami) 6.4.1. Stog 6.4.2. Izvedba stoga 6.5. Prijenos upravljanja izmeu prekinutog i prekidnog programa 6.6. Primjer uporabe stoga - analiza sluaja za MC 68000

107 107 109 112 115 116 120 121 123 123 125 125 126 131 134 142 145 147

7. SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE 159 7.1. Put podataka i upravljaka jedinica 159 7.2. Dva osnovna naina oblikovanja upravljake jedinice 163 7.3. Sklopovska upravljaka jedinica 165 7.3.1. Izvedba upravljake jedinice uporabom generatora sljedova - analiza sluaja 166 7.3.2. Sklopovske sastavnice upravljake jedinice ostvarene na temelju generatora sljedova.. 182 7.3.3. Instrukcijski dekoder 182 7.3.4. Generator sljedova po modulu n 183 7.3.5. Generator signala vremenskog voenja 186 7.4. Mikroprogramirana upravljaka jedinica 187 7.4.1. Signal vremenskog voenja mikroprogramirane upravljake jedinice 194 7.5. Nanoprogramirana upravljaka jedinica 201 7.6. Formati mikroinstrukcija - horizontalno i vertikalno mikroprogramiranje 203 7.6.1 Izravno upravljanje 204 7.6.2. Grupiranje bitova - minimalno kodiranje (engl. minimal encoding) 204 7.6.3. Viestruki formati mikroinstrukcija 206 7.6.4. Horizontalno i vertikalno mikroprogramiranje 208 8. ARITMETIKO-LOGIKA JEDINICA 8.1. Uvod: bit, rije, bajt i znakovi 8.2. Prikaz brojeva 8.2.1. Prikaz cijelih brojeva 8.2.2. Prikaz brojeva s pominim zarezom (floating-point number) 8.2.3. Binarno kodirani dekadski brojevi 8.3. Binarna aritmetika 8.3.1. Zbrajanje dvaju binarnih brojeva 8.3.2. Paralelno zbrajalo 8.3.3. Serijsko zbrajalo 8.3.4. Oduzimanje dvaju binarnih brojeva 8.3.5. Oduzimanje pomou komplementa binarnog broja 8.3.6. Paralelno zbrajalo s predvianjem bita prijenosa (engl. carry lookahead) 8.3.7 Mnoenje 8.3.7.1. Mnoenje nepredznaenih brojeva 8.3.7.2. Mnoenje brojeva predoenih u notaciji dvojnog komplementa 8.3.7.3. Boothov algoritam 8.3.8. Dijeljenje 8.3.9. Posmak 8.3.10 Bavasti posmani sklop 8.4. Aritmetike operacije brojevima s pominim zarezom 211 211 212 212 215 219 220 220 224 225 226 228 229 232 232 235 235 240 244 249 252

8.5. Oblikovanje jednostavne aritmetiko-logike jedinice-analiza sluaja 8.5.1. Aritmetika sekcija 8.5.2. Logika sekcija 8.5.2.1. Logika operacija ISKLJUIVO ILI 8.5.2.2. Logika operacija NE 8.5.2.3. Logika operacija ILI 8.5.2.4. Logika operacija 1 9. MEMORIJSKI SUSTAV 9.1. Uvod 9.2. Memorijska hijerarhija 9.3. Osnovne organizacijske i tehnoloke znaajke memorijskog sustava 9.4. Glavna ili radna memorija 9.4.1 Projektiranje memorijskog modula 9.5. Porodice DRAM 9.6. Ubrzanje rada memorije 9.7. Kod za ispravljanje pogreaka 9.8. Sekundarna memorija 9.8.1. Magnetska diskovna memorija 9.8.2 Organizacija podataka na disku 9.8.3. Statiki i dinamiki parametri diskovne jedinice 9.8.4. Priruna diskovna memorija (engl. disk cache) 9.9. Polje diskova RAID (Redundant Array of Inexpensive Disks) 9.10. Savitljivi disk (engl. floppy disk) 9.11. Magnetska vrpca 9.12. Optike memorije 9.12.1. CD-ROM 9.12.2. CD-R, CD-RW i DVD 10. PRIRUNA MEMORIJA 10.1. Uvod 10.2. Djelovanje prirune memorije 10.3. Performansa prirune memorije 10.4. Organizacija prirune memorije 10.4.1. Nain smjetanja blokova u blone prikljuke prirune memorije 10.4.1.1. Priruna memorija s potpuno asocijativnim preslikavanjem 10.4.1.2. Priruna memorija s izravnim preslikavanjem 10.4.1.3. Priruna memorija sa skupnim asocijativnim preslikavanjem 10.5. Nain zamjene blokova 10.5.1. Veliina bloka i kapacitet prirune memorije 10.5.2. Nain obnavljanja sadraja glavne memorije 10.5.2. Nain pribavljanja bloka iz glavne memorije 10.6. Koherencija prirune memorije 10.7. Priruna memorija - analiza sluaja procesor MC 68030

256 258 260 261 262 262 262 265 265 265 269 271 278 284 285 289 290 291 293 295 297 299 305 305 306 306 307 311 311 316 319 320 321 321 323 327 329 331 333 333 334 335

11. VIRTUALNA MEMORIJA 337 11.1. Uvod 337 11.2. Fiziki i virtualni adresni prostor 338 11.3. Adresno preslikavanje 339 11.3.1. Denningov model virtualne memorije 341 11.4. Stranienje 346 11.4.1 .Translacijski spremnikTLB (engl.Translation Lookaside Buffer) 349 11.5. Segmentacija i segmentacija sa stranienjem 353 11.6. Zamjena i pribavljanje stranica 353 11.7. Virtualna memorija i priruna memorija 354 11.8. Virtualni memorijski sustav - integracija translacijskog spremnika TLB, prirune memorije i virtualne memorije 354 12. SABIRNICE 359

12.1. Uvod 12.2. Vodei i pratei moduli 12.3. Sabirniki ciklus i sabirniki protokol 12.4. Sabirnika arbitraa 12.5. Sabirnice osobnih raunala (PC sabirnice) 12.6. Ulazno-izlazne sabirnice: USB, FireWire i SCSI 13. ULAZNO-IZLAZNI SUSTAV 13.1. Uvod 13.2. Ulazno-izlazni upravlja 13.3. Naini izmjene podataka 13.3.1. Programirani ulazno-izlazni prijenos podataka 13.3.2. Prekidni ulazno-izlazni prijenos podataka 13.4. Analiza sluaja - vektorski prekid procesora MC 68000 13.5. Izravni pristup memoriji DMA - Direct Memory Access 14. PROTONOST 14.1. Uvod 14.2. Protone strukture u raunarskom sustavu 14.3. Instrukcijska protona struktura 14.3.1. Podrobniji dijagram stanja instfukcijskog ciklusa 14.4. Instrukcijska protona struktura za RISC procesore 14.4.1. Potrebne sklopovske preinake u protonom RISC procesoru 14.4.2. Ostvarivanje cilja: jedna instrukcija u jednoj periodi signala vremenskog voenja 14.5. Instrukcijska protona struktura za CISC procesore 14.6. Instrukcijska protona struktura CISC procesora MC 68060 - analiza sluaja 14.7. Hazardi u instrukcijskoj protonoj strukturi 14.7.1. Strukturni hazard 14.7.2. Podatkovni hazard 14.7.3. Upravljaki hazard 14.7.4. Predvianje grananja 14.7.5. Precizni i neprecizni prekid (iznimka) 14.8. Superskalarni procesori 14.8.1. Naini izdavanja i zavravanja instrukcija u superskalarnoj arhitekturi procesora 15. VIEPROCESORSKI SUSTAVI, VIEJEZGRENII GRAFIKI PROCESORI 15.1. Oblici i razine paralelizma 15.1.1. Paralelizam na razini instrukcija 15.1.2. Paralelizam na razini dretvi i procesa 15.1.3. Paralelizam na korisnikoj razini 15.1.4. Podatkovni paralelizam 15.2. Paralelne arhitekture: vieprocesorski SIMD, vektorski procesori i MIMD sustavi 15.2.1. Vieprocesorski SIMD sustavi 15.2.2. Vektorski procesori 15.3. Multiprocesorski sustavi - vieprocesorski MIMD sustavi 15.3.1. Koherencija prirune memorije u multiprocesorskom sustavu 15.3.2. Sinkronizacija procesa i dretvi 15.4. Visedretvenost i simultana viedretvenost 15.5 Viejezgreni procesori 15.5.1 IBM POWER4 dvojezgreni procesor 15.5.2. Ultra SPARCT1 i T2 15.5.3. AMD Opteron X4 2356 15.5.4.1MB POWER5 dvojezgreni SMT procesor, POWER6 i POWER7 15.5.5. Ocjena performansi multiprocesora 15.6. Grafiki procesori (grafike procesne jedinice) 15.6.1. NVIDlATesla - unificirana arhitektura za grafiku i raunanje LITERATURA KAZALO POJMOVA

359 363 363 371 377 381 393 393 395 398 398 406 417 425 429 429 433 434 437 439 440 444 445 447 449 449 451 457 461 463 463 468 473 473 474 479 483 484 486 486 487 497 500 506 509 512 512 514 517 521 524 524 528 533 537

PREDGOVOR
Knjiga koji se nalazi pred Vama obrauje vanu temu iz podruja raunarstva kojoj se u sreditu pozornosti nalaze raunalo; raunarski sustav te graa, arhitektura i organizacija raunarskog sustava. Raunalo (engl. computer) jest sloeni programirljivi stroj koji je oblikovan tako da automatski obavlja slijed ili sljedove aritmetikih i logikih operacija. Oni su odreeni programom koji se moe relativno jednostavno mijenjati i tako stroj ini univerzalnim te se moe rabiti u razliitim napravama i sustavima - od mobitela, igraaka, sustava za upravljanje industrijskim i proizvodnim procesima pa sve do vrlo sloenih primjena na podruju znanstvenog raunanja (engl. computational science, scientific computing). U hrvatskom jeziku rabimo i izraze raunalni sustav i raunarski sustav (engl. computer system) i esto ih razlikujemo po tome to raunalni sustav" smatramo uim pojmom koji se prvenstveno odnosi na graevne komponente samog raunala i njihovo meudjelovanje uzpomo minimalne programske opreme - jezgre operacijskog sustava koja stroj ini uporabnim. Pod izrazom raunarski sustav" esto podrazumijevamo raunalo kojem su pridrueni razliiti periferni ureaji i programska oprema - odjezgre operacijskog sustava pa sve do namjenskih ili aplikacijskih programa kojima se omoguuje djelotvorna obrada i interakcija korisnika ili grupe korisnika sa sustavom, ali i raunalnog sustava s okolinom ili pak s drugim raunalnim sustavima. S obzirom na potonje jezine nijanse, govorimo o ugraenom raunalnom sustavu (engl. embedded computer system), a ne o ugraenom raunarskom sustavu. Raunarstvo (engl. computing) jest znanstvena disciplina koja se bavi oblikovanjem i izgradnjom sklopovskih i programskih sustava te je usmjerena na iskoritavanje prednosti koje nude raunarski sustavi: obrada; strukturiranje, pohrana i pretraivanje razliitih vrsta informacija, potpora znanstvenim istraivanjima, oblikovanje komunikacijskih i zabavnih multimedijskih okruenja te oblikovanje raunarskih sustava koji se inteligentno ponaaju. Znanstveno raunanje (engl. computational science, scientific computing) bavi se oblikovanjem matematikih modela i kvalitativnom analizom metoda i tehnika koje se rabe u raunarskom sustavu za analizu i rjeavanje sloenih znanstvenih problema iz podruja kao to su numerika simulacija, dubinska analiza podataka, postupci optimizacije i si. Graa raunala, arhitektura i organizacija raunarskih sustava bave se digitalnim raunalima; raunarskim sustavima i sueljem sklopovske i programske opreme. Knjiga je zamiljena kao udbenik koji omoguuje sustavni, postupni uvod u to sloeno znanstveno podruje koje je podvrgnuto vrlo brzim i uestalim tehnolokim promjenama. Uvjeren sam da su zamisli i osnovni koncepti izloeni u knjizi takvi da su uporabni za razumijevanje, oblikovanje i odravanje raunarskih sustava, i to od jednostavnih ugraenih raunalnih sustava, osobnih raunala pa sve do posluitelja i raunarskih vieprocesorskih SIMD i MIMD sustava. Posebnu pozornost posvetio sam opisu zamisli i temelja arhitekture raunarskog sustava koji su vremenski nepromjenjivi i u velikoj mjeri ne ovise o burnom razvoju tehnologije vrlo visokog stupnja integracije (VLSI - Very Large Scale Integration) koja omoguuje integraciju preko milijardu tranzistora na komadiu silicija neto veem od potanske marke. Osim temeljnih zamisli i arhitektonskih koncepata, knjiga sadrava podrobne opise vieprocesorskih i paralelnih sustava, superskalarnih procesora, viedretvenih i simultano viedretvenih arhitektura procesora; viejezgrenih procesora te opise multiprocesorskih grafikih jedinica. Brojni primjeri i analize sluaja kojima se ilustriraju pojedini arhitektonski koncepti, uvjeren sam, omoguit e itateljima lake razumijevanje i savladavanje gradiva.

Knjiga je plod mojih dugogodinjih predavanja o arhitekturi i organizaciji raunarskih sustava te grai raunala na Fakultetu elektrotehnike i raunarstva (FER), Fakultetu organizacije i informatike (FOI), Prirodoslovno-matematikom fakultetu (PMF) Sveuilita u Zagrebu, Tehnikom fakultetu Sveuilita u Rijeci, Elektrotehnikom fakultetu Sveuilita u Osijeku te Fakultetu elektrotehnike, strojarstva i brodogradnje (FESB) Sveuilita u Splitu. Udbenikje prvenstveno namijenjen visokokolskoj nastavi na tehnikim i njima srodnim fakultetima, meutim, neka poglavlja nude gradivo koje se moe obraivati u srednjim kolama informatikog i elektrotehnikog usmjerenja. Na kraju; elim se zahvaliti svima koji su doprinijeli da ovo djelo bude pred vama. Posebno se zahvaljujem suradnicima sa Zavoda za elektroniku; mikroelektroniku, raunalne i inteligentne sustave (ZEMRIS), FER koji su itali dijelove rukopisa u nastajanju i sudjelovali u raspravi oko nekih bitnih detalja: prof. dr. sc. Urou Peruku za raspravu u vezi s disipacijom snage procesora, prof. dr. sc. eljki Mihajlovi za paljivo itanje dijela teksta koji se odnosi na raunalnu grafiku i grafike procesore i brojne korisne sugestije; prof dr. sc Marinu Golubu za komentare vezane za procese, dretve i viedretvenost te asistentu Branku Samariji, dipl. ing., za paljivo itanje dijela teksta i niz primjedbi posebno za 2., 3. i 15. poglavlje knjige. Zahvaljujem se i recenzentima akademiku prof dr. sc Leu Budinu, prof. dr. sc. Nikoli Paveiu, Fakulteta za elektrotehniko, Univerza v Ljubljani, prof dr. sc. Ivi Ipiu, Tehniki fakultet, Sveuilite u Rijeci i Milanu Korau, dipl. ing. koji su brojnim primjedbama, komentarima i sugestijama doprinijeli kakvoi rukopisa. Zahvalu dugujem i gici Ani Rutar, prof. koja je uspjeno i s puno razumijevanja koordinirala posao koji se odnosio na tehniki dio nastanka knjige. Zahvaljujem se i lektorici gici Dijani Stilinovi, prof koja je savjesno ispravila rukopis i odmjerenim intervencijama u potpunosti sauvala njegov duh. Zahvaljujem se i ilustratoru gospodinu Goranu Obrovcu koji je izradio vie od 350 slika na temelju rukom nacrtanih podloga. U Zagrebu 7. oujka 2011. Autor

S. RIBARI - GRAA RAUNALA

1. POGLAVLJE

ARHITEKTURA RAUNARSKOG SUSTAVA


1.1. UVOD
Vrlo pojednostavljeno, obradu podataka (engl. data processing) moemo opisati kao svrsishodnu aktivnost koja ima za cilj dobivanje traene informacije iz raspoloivih podataka. Obino obrada informacija objedinjuje aktivnosti kao to su pohrana i obrada velikih koliina podataka, slanje, odnosno upuivanje traene informacije prema odreditu te njezino ponovno pohranjivanje. U postupku obrade podataka moemo identificirati tri glavne sastavnice (komponente): podatke, algoritam i izvritelja. Podaci su objekti u obradi i moraju biti predoeni u obliku koji je prilagoen izvritelju. Algoritam predstavlja preciznu uputu ili "recept" izvritelju kojom se opisuje transformacija poetnih ili ulaznih podataka u procesu obrade u traenu informaciju. Postupak transformacije grupiran je u korake algoritma. Svaki algoritam ima svojstva odreenosti, konanosti i irinu primjene, odnosno definirano podruje uporabe. Izvritelj moe biti ovjek ili stroj. Primjer 1.1. Ilustrirajmo algoritam i njegova svojstva na primjeru Euklidovog algoritma (Euklid, 400. p.n.e) kojim se rjeava sljedei problem: za zadana dva prirodna broja a i b treba nai najveu zajedniku mjeru, odnosno najvei cijeli broj kojim su oba prirodna broja djeljiva bez ostatka. 1. korak: Promotri dva broja: a i b. Prijei na sljedei korak. 2. korak: Usporedi brojeve. Prijei na sljedei korak. 3. korak: Ako su promatrani brojevi jednaki, svaki daje traeni rezultat -obustavi postupak raunanja. Ako brojevi nisu jednaki, prijei na sljedei korak. 4. korak: Ako je prvi promatrani broj manji od drugog, zamijeni im mjesta. Prijei na sljedei korak. 5. korak: Oduzmi drugi broj od prvog i promatraj taj drugi broj i ostatak. Prijei na korak 2.

1. POGLAVLJE: ARHITEKTURA RAUNARSKOG SUSTAVA

Odreenost se Euklidovog algoritma ogleda u tome stoje u svakom koraku precizno naznaeno to se mora poduzeti i na koji se sljedei korak u postupku treba prijei. Algoritam je tako sroen da jami da e se za svaka dva prirodna broja a i b u konanom broju koraka nai najvea zajednika mjera. Podruje uporabe Euklidovog algoritma su prirodni brojevi. Moemo uoiti da je algoritam namijenjen i prilagoen ovjeku kao izvritelju. ovjek razumije upute u svakom koraku kao to su "promotri" "prijei" "usporedi" "obustavi" ali moe obaviti i operacije kao to su "zamijeni" ili "oduzmi". Kako bi izgledao algoritam namijenjen raunalu kao izvritelju? Odgovor na to pitanje ostavljam itatelju. Oblik algoritma u velikoj mjeri ovisi o sposobnosti izvritelja. Jedan od uobiajenih pristupa obradi podataka je i onaj koji se temelji na transformaciji ulaznih podataka u traeni rezultat na temelju raunanja. Takav pristup ima posebno znaenje u tzv. intenzivnim postupcima numerike obrade podataka (engl. numbercrunching). Formalno, postupak raunanja moe se definirati na sljedei nain: Raunanje je proces odreivanja izlazne supstitucije, za zadanu odreenu ulaznu supstituciju, koja se pokorava svim specifinim svojstvima, odnosno ogranienjima problema. Da bismo zornije predoili potonju definiciju, trebamo pojasniti znaenje "ulazne supstitucije", "izlazne supstitucije" i "ogranienje problema" Njihovo emo znaenje prikazati na problemu naprtnjae. Primjer 1.2. Pretpostavimo da imamo naprtnjau nosivosti {ili kapaciteta) C kilograma te da pred sobom imamo N predmeta koje bismo eljeli ponijeti u naprtnjai. Svaki od predmeta ima svoju vrijednost v. i svoju teinu w., i = 1 , 2 , N . Budui da sve predmete ne moemo ponijeti zbog ogranienog kapaciteta naprtnjae, potrebno je nai predmete, odnosno udjele predmeta koje emo ponijeti tako da u naprtnjai koju nosimo imamo najveu vrijednost, a pritom ne prekoraimo nosivost naprtnjae. (Opaska: predmeti se mogu rastaviti na dijelove ija je vrijednost proporcionalna njihovoj teini.) Parametri i varijable problema su: C - nosivost (kapacitet) naprtnjae [kg], N - ukupan broj predmeta, v; i = 1 , 2 , N - vrijednost svakog predmeta [$], w.; i = 1 , 2 , N - teina svakog od predmeta [kg], F.; i = 1,2,..., N - udio svakog od predmeta koji e se ponijeti u naprtnjai, Pmaks - maksimalna vrijednost predmeta (ili udjela predmeta) u naprtnjai [$]. Ulaznu supstituciju dobivamo tako da za zadane parametre problema unesemo njihove vrijednosti. Pretpostavimo daje naprtnjaa nosivosti 14 kg te da imamo tri predmeta za koje znamo teinu i vrijednost. Ulazna supstitucija je sljedea: C - 14 kg, N = 3, v-} = 3 0 $ , W | =4kg,V2 = 4 8 $ , W2 = 6 kg, V3 = 50 $, VV3 = 7 kg. Rjeenje se mora pokoravati specifinim ogranienjima - ne smije se prekoraiti kapacitet naprtnjae (C = 14 kg) i mora zadovoljavati zahtjev da je vrijednost predmeta u naprtnjai maksimalna (P ).

S. RIBARI - GRAA RAUNALA

Rjeenje problema jest izlazna supstitucija. U naem sluaju ona glasi: U naprtnjau stavljamo: Cijeli predmet 1 i cijeli predmet 2 te 4/7 predmeta 3. Ukupna vrijednost u naprtnjai je 106,57 $, stoje ujedno i maksimalna vrijednost koju moemo ponijeti (Pmaks). Algoritam koji e nas dovesti do eljenog rjeenja, odnosno do izlazne supstitucije je: 1. korak: Razvrstaj objekte na temelju omjera vrijednosti i teine: predmet 2 = 48/6 = 8 $/kg; predmet 1 = 30/4 =7,5 $/kg; predmet 3 = 50/7 = 7,14 $/kg 2. korak: Ponavljaj sve dok se naprtnjaa ne prenatrpa: Iz skupa predmeta uzmi predmet s najveim omjerom vrijednost teina i smjesti ga cijelog u naprtnjau. 3. korak: Izvadi iz naprtnjae posljednji predmet kojim je prekoraen kapacitet naprtnjae i razdijeli ga tako da upravo njegovi dijelovi popune naprtnjau. I ovaj je algoritam namijenjen ovjeku kao izvritelju. Kako bi izgledao stroj koji bi mogao izvoditi algoritam u ovakvom izvornom obliku? To bi trebao biti inteligentan stroj s vidnom percepcijom i drugim senzorima (npr. teine, pritiska, dodira), opremljen mehanikim hvataljkama, bazom znanja i strojem za zakljuivanje te sueljem za razumijevanje prirodnog jezika.

1.2. OSNOVNI RAUNSKI MODELI


U ovoj emo se knjizi baviti samo izvriteljem - strojem koji se temelji na raunskom modelu (engl. computational model) definiranom kao von Neumannovmodel. Raunski model predstavlja viu razinu apstrakcije od arhitekture raunala i programskog jezika. On se opisuje skupom triju apstrakcija: 1. temeljnim elementima koji sudjeluju u raunanju; 2. modelom kojim se opisuje problem i 3. izvrnim modelom. Prva apstrakcija opisuje elemente i operacije koje se na elementima mogu izvoditi. Na primjer, u von Neumannovom modelu temeljni elementi koji sudjeluju u raunanju jesu podaci koji su predstavljeni imenima da bi se omoguilo razlikovanje brojnih razliitih podataka u postupku raunanja. Tako imenovani podaci obino se u programskim jezicima nazivaju varijablama i implementirani su u arhitekturi raunala pomou adresa memorijskih lokacija i adresa (imena) registara. Operacije se izvode nad podacima - svaki definirani tip podataka ima i definirani skup operacija. Model kojim se opisuje problem odnosi se na stil i metode opisa problema. Stilovi su proceduralni i deklarativni. Proceduralnim stilom opisuje se postupak raunanja u obliku algoritma. Deklarativnim stilom opisuju se sve injenice i odnosi koji su relevantni za zadani problem. Dvije se metode koriste za izraavanje odnosa i injenica. Prva upotrebljava funkcije, a druga primjenjuje opis odnosa i injenica u obliku predikata.

12 1. POGLAVLJE: ARHITEKTURA RAUNARSKOG SUSTAVA

Primjer 1.3. Prikalmo jednostavan primjer proceduralnog i deklarativnog stila opisivanja problema raunanja 'n'faktorijela uporabom jezika slinom Pascalu. Proceduraini stil if n 0 then f a c := 1 else fac :=1; f o r i : = 1 t o n do fac :=i * fac;

end; Deklarativni stil fac fac (0) (n >0) 1 n *fac(n-l);

Izvrni model definiran je trima sastavnicama: tumaenjem kako se izvodi raunanje, izvrnom semantikom i upravljanjem slijedom izvravanja. Na primjer, u von Neumanovom modelu raunanja problem je opisan kao slijed instrukcija (uputa) koje rukuju imenovanim podacima i odreuju slijed upravljanja. Raunanje se u von Neumannovom modelu tumai kao izvravanje zadanog slijeda instrukcija. Izvrna semantika moe se promatrati kao pravilo koje propisuje kako se izvodi pojedini korak raunanja. Von Neumannov model temelji se na semantici prijelaza stanja. Ona odreuje kako e se za svaku instrukciju promijeniti trenutno stanje stroja. Osim semantike prijelaza stanja, koja se rabi i uTuringovom modelu raunanja, koriste se semantika toka podataka (engl. dataflow semantic) i redukcijska semantika (engl. reduction semantic) koje su namijenjene raunskom modelu temeljenom na toku podataka (engl dataflow) i redukcijskom raunskom modelu. Upravljanje slijedom izvravanja moe se temeljiti na upravljakom toku (engl. control-driven execution), toku podataka (engl. data-driven) i upravljanju zahtjevom (engl. demand-driven)

1.3. UPRAVLJAKI TOK, TOK PODATAKA I UPRAVLJANJE SLIJEDOM IZVRAVANJA NA TEMELJU ZAHTJEVA
Da bismo prikazali osnovne znaajke pojedinih naina upravljanja slijedom izvravanja, posluit emo se jednostavnim modelom instrukcije koji je predoen n-torkom argumenata: (arg 1 arg 2... arg n), gdje su argumenti operatori (odreuju operaciju na podacima), vrijednosti podataka (operandi i rezultati), adrese operanada, adresa rezultata te adrese koje upuuju na sljedeu instrukciju. Ovakav oblik zapisa instrukcije doputa nam prikaz izvravanja slijeda instrukcija i u raunskim modelima koji se korjenito razlikuju od von Neumannovog modela. Za tri razliita naina upravljanja slijedom izvravanja prikazat emo primjer izvoenja programa koji se moe u viem programskom jeziku zapisati samo jednom naredbom: z = (a*5) + (c*d).

S. RIBARI - GRAA RAUNALA

1.3.1 UPRAVLJAKI TOK


Upravljanje slijedom izvravanja na temelju upravljakog toka zasniva se na pretpostavci da u modelu postoji program koji se sastoji od slijeda instrukcija. Slijed izvravanja implicitno je zadan slijedom instrukcija. Uz to, doputena je uporaba eksplicitnih upravljakih instrukcija kojima se moe specificirati ciljna instrukcija koja je izvan implicitno definiranog slijeda izvravanja. Program za z = (a *5) + (c *d) u obliku slijeda instrukcija za model raunanja koji se temelji na upravljakom toku sastoji se od slijeda triju instrukcija: (* a 5 z1) (* c d z2) (+z1 z2z), gdje su * i + operatori, 5 vrijednost operanada, a,c\d adrese operanada, z7 i z2 adrese meurezultata iz adresa memorijske lokacije na koju se pohranjuje rezultat. U ovom emo primjeru pretpostaviti da su na memorijskim lokacijama a, ci d pohranjeni podaci 2,4 i 7. Argument koji upuuje izvoenje na sljedeu instrukciju u ovom modelu raunanja nije element instrukcije. Slika 1.1 prikazuje izvravanje programa. Crtkana linija oznaava upravljaki tok koji je samo jedan i kojim se prenosi upravljanje slijedno s instrukcije na sljedeu instrukciju u slijedu. Pune linije na slici 1.1 oznaavaju pozivanje (referenciranje) memorijskih lokacija koje sadravaju vrijednosti operanada ili na koje se pohranjuju meu rezultati i rezultati operacija. Slijed izvravanja implicitno je odreen. Kao to je ve spomenuto, implicitni slijed izvravanja moe se promijeniti uporabom eksplicitnih upravljakih instrukcija koje imaju operatore tipa GOTO i JUMP.
upravljaki

( *

z1 )

c:(4)

d :(7)

z1:( )

z:( )

SI. 1.1 Izvravanje programa u raunskom modelu temeljenom na upravljakom toku

Slika 1.2 prikazuje izvravanje programa za paralelan raunski model temeljen na upravljakom toku. U sluaju kada se eksplicitno oznaavaju instrukcije koje se mogu paralelno izvesti rabe se instrukcije s operatorima tipa FORKl JOIN. Instrukcija s operatorom FORK

14 1. POGLAVLJE: ARHITEKTURA RAUNARSKOG SUSTAVA

uviestruuje upravljaki tok. Na primjer, instrukcija (FORKi2 2) formira upravljaki tok u dvije grane i omoguuje istodobno izvravanje instrukcija (*a5z 1) i (*cdz2). Argument /2 u instrukciji FORKi2 2 oznaava mjesto nastanka novih, dodatnih upravljakih tokova, a argument 2 predstavlja vrijednost sinkronizacijskog brojila pomou kojeg se sinkroniziraju upravljaki tokovi. Instrukcija s operatorom JOIN sinkronizira upravljake tokove i nakon izvoenja instrukcija (*a5z1) i (*cdz2) stapa ih u jedinstven upravljaki tok. Sinkronizacija se ostvaruje tako da svaka instrukcija s JOIN operatorom umanjuje vrijednost sinkronizacijskog brojila za 1. U trenutku kada vrijednost sinkronizacijskog brojila dostigne vrijednost 0, upravljaki tokovi se stapaju.
upravljaki I tok

FORK

i2

2 )

c:(4)

d : ( 7)

a:(2)

L
zl )

t
d z2 )

I Z1 :( )

*
i T

(JOIN )

*
I
z2 z )

(JOIN )

z2:( )

z1

tok podataka

I
z:( )

SI. 1.2 Izvravanje programa u paralelnom raunskom modelu temeljenom na upravljakom toku s eksplicitno oznaenim paralelno izvodljivim instrukcijama

Izvravanje programa za paralelni raunski model temeljen na upravljakom toku moe se ostvariti i uporabom instrukcija koje eksplicitno pomou posebnog argumenta odreuju sljedeu instrukciju. Upravljanje se s instrukcije na instrukciju prenosi upravljakim znakama (engl. control token). Slika 1.3 prikazuje izvravanje programa u paralelnom raunskom modelu s upravljakim znakama. Argumenti u instrukcijama oblika in/m (npr. /3//) odreuju sljedeu instrukciju in i poloaj argumenta m u toj instrukciji koji oekuje upravljaku znaku. Argument oblika ( ) oznaava mjesta koja zahtijevaju upravljake znake. Instrukcije se izvravaju u trenutku kada dobiju potreban broj upravljakih znaki. Na primjer, instrukcija /3 izvrit e se kada upravljake znake upuene iz instrukcija i l i /2 stignu u argumente ( ) i ( ) (slika 1.3).

S. RIBARI - GRAA RAUNALA

iO : ( . . . il/O I
_ _ _ _ _ _ J

i 2/0 ) I
L _

_ _

a : (2)

i l : (( ) * a 5 zl

i3/0 )

\2 : (( ) * c d z2 13/1 )

i .u
c : (4) d : (7) z2 : ( )

zl : ( )

i3 : ( ( ) ( ) +

tt

r z1 z2 z )

'

Z : ( )

1-

SI. 1.3 Izvravanje programa u paralelnom raunskom modelu temeljenom na upravljakom toku s upravljakim znakama

Iz prethodnih triju jednostavnih primjera izvoenja programa mogu se izdvojiti neke osnovne znaajke raunskih modela temeljenih na upravljakom toku: tok upravljanja je slijedan. Uporabom posebnih operatora moe se upravljati tokom izvoenja programa, za paralelni se raunski model tok upravljanja uviestruuje uporabom specijalnih operatora ili primjenom upravljakih znaki, tok ili tokovi upravljanja i tokovi podataka odvojeni su, podaci (operandi) se prosljeuju izmeu instrukcija posredno - putem memorijskih lokacija to ih instrukcije meusobno dijele (pohranjuju i itaju sadraje memorijskih lokacija), argumenti instrukcija mogu biti izravno i vrijednosti operanada, tako da se smanjuje broj referenciranja memorije.

1.3.2. TOK PODATAKA


Instrukcije za model raunanja temeljenom na toku podataka imaju elemente kao to su operator, vrijednost operanda, argumenti oblika ( ) koji predstavljaju tzv. kalupe, odnosno mjesta predviena za znake podataka te argumente oblika in/m koji upuuju rezultat operacije (znaku operanda s vrijednosti) na m-ti poloaj argumenta ( ) u instrukciji in. Slika 1.4 prikazuje izvravanje programa z= (a * 5) + (c*d) u raunskom modelu temeljenom na toku podataka. Instrukcija se u tom modelu izvrava u trenutku kada su joj raspoloivi svi operandi, odnosno kada su u instrukciji popunjeni znakama podataka svi kalupi tj. argumenti oblika ( ).

1. POGLAVLJE: ARHITEKTURA RAUNARSKOG SUSTAVA

Instrukcije /7 i /2 (slika 1.4) izvravaju se neovisno jedna o drugoj, odnosno paralelno ako su im operandi (2, odnosno 4 i 7) istodobno raspoloivi. Rezultati njihovih izvravanja (10, odnosno 28) izravno se prosljeuju instrukciji /3 koja se aktivira u trenutku kada su popunjena operandima oba njezina argumenta oblika ( ).

i1 : { * ( ) 5 i 3/0 )

12 : ( * ( ) (

) 3/1 )

13 : ( + ( ) ( )

z/1 )

il : ( * ( ) 5 i3/0 )

12 : { * ( ) (

ii

) i3/1 )

10

13 : ( + < ) ( )

i
z/1 )

1 2 8

11 : ( * ( ) 5 13/0 )

i2 : ( * ( ) ( ) i3/1 )

11

13 : { + ( ) ( )

z/1 )

38

SI. 1.4 Izvravanje programa u raunskom modelu temeljenom na toku podataka

Primjer izvravanja programa za taj model pokazuje neke njegove osnove znaajke: upravljaki tok stopljen je s tokom podataka, tok podataka uvjetuje izvravanje instrukcija: instrukcije se izvravaju u trenutku kada su im raspoloivi svi potrebni operandi, odnosno kada su popunjeni svi kalupi instrukcije, meurezultati se izravno prosljeuju meu instrukcijama, nakon izvravanja instrukcije, ulazni podaci za instrukciju (oni koji su bili smjeteni u kalupima) nisu vie raspoloivi za tu niti za bilo koju drugu instrukciju, vrijednost operanada mogu biti argumenti instrukcije. Na temelju navedenih znaajki moe se zakljuiti da se model s tokom podataka korjenito razlikuje od raunskog modela s upravljakim tokom. Napomenimo jo jednom da se von Neumannov model temelji na modelu s upravljakim tokom.

S. RIBARI - GRAA RAUNALA 17

1.33 UPRAVLJANJE ZAHTJEVOM


Osnovna znaajka raunskog modela upravljanog zahtjevom je ta da zahtjev za rezultatom pobuuje operacije koje e taj rezultat proizvesti. Na primjer, za na se program z=fo*5J+fc*dJzahtijevavrijednostzaz(slika1.5).SIika1.5prikazujeizvravanjeprogramau raunskom modelu upravljanom zahtjevom. U nekoj se instrukciji zahtijeva vrijednost za z. To e prouzrokovati izvravanje instrukcija (u skladu s definicijom za z) koje e generirati zahtijevanu vrijednost. Vrijednost za z dobiva se redukcijom definicije (slika 1.5): (2 * 5) + (4 * 7) 10 + 28 38. To je i razlog zbog kojeg se obino takvi modeli nazivaju i redukcijski modeli, a raunala koja se temelje na tom modelu nazivaju se redukcijska raunala. a:(2) c : ( 4 ) d:(7)

r*
il : ( * a 5 ) i2 : ( * c d )

( . . . z . . . ) = > ( . . . ( + il \2 )...)=> ^ ( . . . (( * a 5 ) ( * c d ) ) . . . ) => = > ( . . . ( + ( * 2 5 ) ( * 4 7 ) ) . . )=* = M . . . ( + 10 28 ) . . . ) = > ( . . . 38 . . . )


SI. 1.5 Izvravanje programa u raunskom modelu upravljanom zahtjevom

Osnovne znaajke raunskog modela upravljanog zahtjevom su: nema dodatnih ogranienja u pogledu upravljanja slijedom izvravanja instrukcija osim onih koja su postavljena zahtjevima za rezultatom, ne rabi se koncept pohranjivanja i obnavljanja vrijednosti (nema varijabli), doputeno je gnijeenje zahtjeva za rezultatima. Tri su osnovna raunska modela koji se temelje na konceptu podataka: 1. Turingov model, 2. von Neumannov model, 3. model toka podataka. Spomenimo neke raunske modele koji se ne temelje na konceptu podataka - to su objektno temeljeni modeli (engl. object-based model] u kojima se manipulira objektima slijedom poruka, aplikativni modeli u kojima su temeljni elementi koji sudjeluju u raunanju argumenti, a problem je opisan skupom definicija funkcija koje se vrednuju, i predikatni raunski modeli koji koriste elemente skupove predikata (engl. predicate-logic-based) i u kojima se opisi problema predoavaju Hornovim klauzulama kojima se izraavaju pravila i injenice.

10

1. POGLAVLJE: ARHITEKTURA RAUNARSKOG SUSTAVA

1.3.4. TURINGOV STROJ


Britanski znanstvenik A. M.Turing je 1936. objavio lanak "On Computable Numbers, with an Application to the Entscheidungsproblem" u Proc. of the London Math. Society, u kojem je opisao apstraktni stroj - izvritelj koji se u njegovu ast naziva Turingov stroj a raunski model na kojem se temelji stroj Turingov model. Osnovna znaajka stroja je da se postupak raunanja ralanjuje na vrlo jednostavne, gotovo nedjeljive elementarne operacije. Formalno, Turingov stroj (TS) moe se opisati n-torkom TS = (Q, S,T,P,b,q o , qf ,S), gdje je Q konaan skup unutarnjih stanja stroja, S konaan skup vanjske abecede stroja, T je skup elemenata vanjske abecede kojem je izuzet prazni simbol (engl. blank) b, skup naredbi za pomak glave za itanje i pisanje P, q0 poetno stanje stroja, q f konano stanje stroja i logika funkcija stroja 6 : S x Q - S x P x Q , gdje x oznaava Kartezijev produkt. Da bismo razumjeli formalnu definiciju TS, uvedimo i objasnimo sve sastavnice stroja. TS ima vanjsku memoriju koja se predoava beskonanom vrpcom, odnosno vrpcom neogranienom s lijeva i desna. Vrpca je podijeljena na polja pri emu svako polje vrpce moe istodobno sadravati samo jedan znak ili simbol iz skupa vanjske abecede S.TS barata konanim brojem simbola s^ s2,..., b,..., sk koji su elementi skupa S = {s^ s2, ...,b,..., sk}. U skupu S nalazi se i prazni simbol b koji ima vanu ulogu u radu stroja. Upisivanjem praznog simbola u neko polje vrpce, brie se simbol koji se prethodno nalazio u tom polju. Jo jednu znaajku ima simbol b - on je neovisan o problemu koji se rjeava Turingovim strojem i pojavljuje se kao univerzalni simbol u svim problemima. Jednako tako, ako se vrpca poetno promatra kao prazna, ako nema upisanih simbola u poljima - podrazumijeva se da tada svako polje sadrava simbol b. Neki izraz zapisan na vrpci predstavljen je simbolima vanjske abecede koji su razliiti od b. Upis simbola u polje na vrpci ili itanje simbola koji je upisan u polju obavlja se pominom glavom za itanje i pisanje (krae R/W glava; Read - itaj; Write - pii) koja se pozicionira na dotinom polju. Stroj ima i dvije unutarnje memorije: memoriju q koja pohranjuje trenutno unutarnje stanje stroja i memoriju p koja pamti trenutnu naredbu za pomak R/Wglave. Naime, skup naredbi za pomak R/W glave P sastoji se od triju naredbi: pomak ulijevo L, pomak udesno D i nema pomaka N (ili 0). Naredbe za pomak L ili D podrazumijevaju pomak R/W glave za samo jedno polje u odnosu na trenutni poloaj glave. Obrada informacije odvija se u logikom bloku L. U njemu je realizirana tzv. logika funkcija stroja S : S x Q - + S x P x Q , koja preslikava ulaznu dvojku koja se sastoji od trenutno promatranog simbola (simbola koji je upisan u polju nad kojim se nalazi R/W glava) i trenutnog unutarnjeg stanja stroja koje je zapameno u unutarnjoj memoriji q, u izlaznu trojku: simbol vanjske abecede koji e se upisati u promatrano polje na vrpci, naredbe za pomak R/W glave koja e se pohraniti u unutarnjoj memoriji p te novog unutarnjeg stanja stroja koje e se pohraniti u unutarnjoj memoriji q. Slika 1.6 prikazuje Turingov stroj.

S. RIBARI - GRAA RAUNALA

11

beskonana vrpca (vanjska memorija)

Si. 1.6. Turingov stroj

p {N, L, 0}

RadTS-a odvija se na sljedei nain: na samom poetku rada stroja on se nalazi u unutarnjem stanju q 0 (inicijalno ili poetno stanje stroja, stanje stroja na poetku prvog takta), a na vrpci je zapisan poetni niz simbola iz skupa vanjske abecede.Taj se niz tumai kao ulazna ili poetna informacija, odnosno ulazna supstitucija. Definira se i poloaj R/W glave, odnosno specificira se nad kojim se poljem na vrpci ona nalazi; rad stroja odvija se u taktovima, odnosno u diskretnim vremenskim trenucima. Tijekom jednog takta stroj pomou R/W glave ita simbol s. koji je pohranjen u promatranom polju na vrpci, u logikom se bloku stroja L dvojka (sj7 qm), gdje je q m trenutno unutarnje stanje stroja, preslikava u trojku (s., p, qk), gdje je s. simbol koji e se upisati u promatrano polje na vrpci, p je naredba za pomak R/W glave koja e se pohraniti u unutarnjoj memoriji p a qk je novo unutarnje stanje stroja koje e se pohraniti u unutarnjoj memoriji q; na kraju tekueg takta R/W glava e se pomaknuti ulijevo (naredba L) ili udesno (naredba D), ali samo zajedno polje u odnosu na promatrano polje ili se pak nee pomaknuti (naredba N ili 0) - u skladu s naredbom za pomak glave koja je pohranjena u p; novi e takt stroj zapoeti s unutarnjim stanjem stroja qk i promatranjem simbola u polju nad kojim se nalazi R/W glava, napredovanjem taktova stroj poetnu informaciju preoblikuje u (meu)informaciju; - na kraju svakog takta znaci zapisani na vrpci stroja predstavljaju odgovarajuu (meu)informaciju, u trenutku kada stroj dostigne konano stanje q f stroj se zaustavlja (nema vie napredovanja taktova), a informacija koja je zapisana na vrpci tumai se kao rezultat obrade, odnosno izlazna supstitucija.

12

1. POGLAVLJE: ARHITEKTURA RAUNARSKOG SUSTAVA

Koje su to jednostavne i skoro nedjeljive operacije koje izvrava TS? Prvo je to operacija zamjene znaka i promjena unutarnjeg stanja stroja: znak s. mijenja se u s., pri emu je i * j. Ako je / = j znak se u promatranom polju ne mijenja. Ako je s. = b, podsjetimo se bje prazni simbol, onda se znak u promatranom polju brie. mijenja se, u skladu s logikom funkcijom stroja 6: (s., qm) (s., p, qk), unutarnje stanje stroja iz qm u qk. Ako je m-k, tada se unutarnje stanje ne mijenja, odnosno q m = qk. Druga je elementarna operacija pomak R/W glave, i to: ako je naredba L, R/W glava se na kraju tekueg takta pomie samo za jedno polje ulijevo, ako je naredba D, R/W glava se na kraju tekueg takta pomie samo za jedno polje udesno, ako je naredba N (ili 0) R/W glava se ne pomie - ostaje nad promatranim poljem. Naglasimo jo jednom da se obrada informacije odvija u logikom bloku L i ona je definirana logikom funkcijom stroja 6. Slika 1.7 prikazuje logiki blok L kao "crnu kutiju" koja ulaznu dvojku preslikava u izlaznu trojku.

s. i

q ~m

s
SL 1.7 Logiki blok L kao "crna kutija"

qk

"Program"za TS predstavlja realizaciju logike funkcije stroja 6. Logiku funkciju stroja moemo predoiti pomou tablice preslikavanja (engl. look-up table) koja se naziva funkcionalna shema Turingovog stroja. Slika 1.8 prikazuje organizaciju tablice preslikavanja za TS, odnosno organizaciju funkcionalne sheme stroja. Tablica je organizirana na sljedei nain: u prvom retku tablice navode se sva unutarnja stanja stroja (osim konanog stanja qf). Prvi stupac tablice ine simboli vanjske abecede (elementi skupa S). (Opaska: polje tablice (1, 1) na sjecitu prvog retka i prvog stupca jest prazno polje (slika 1.8)). Unutarnja polja tablice preslikavanja sadravaju trojke (s, p, q), gdje je sGS, p G P i q G Q . Pretpostavimo da se na poetku nekog takta TS nalazi u stanju q m te da R/W glava ita simbol sjf trojka koja odgovara preslikavanju dvojke (s., qm) u skladu s funkcijom 8, odreuje se tako da se potrai sadraj u polju koje se nalazi na sjecitu retka s. i stupca q m u tablici preslikavanja (slika 1.8).

S. RIBARI - GRAA RAUNALA

13

elementi vanjske abecede

trojka

trojka

unutarnja stanja stroja {osim qf)

Primjer 1.4. Pretpostavimo da je vanjska abeceda TS-a definirana skupom S = {a, tarnjih stanja Q = {qQt q1 q2, q3, q f }. b} a skup unu-

Slika 1.9 prikazuje funkcionalnu shemu stroja kojom je predoena logika funkcija stroja. Na poetku nekog takta, pretpostavimo da R/W glava ita simbol i da se TS nalazi u stanju q2. Trojku kao izlaz iz logikog bloka L nalazimo u polju tablice preslikavanja koje se nalazi na sjecitu retka koji odgovara simbolu vanjske abecede p i stupca koji odgovara stanju q2: (a, L, q3). Dakle, stroj e u polju nad kojim se nalazi R/W glava zamijeniti znak p sa znakom a, prijei e u unutarnje stanje q 3 i pomaknut e glavu za jedno polje ulijevo.

b a

aDq, PLq 2 |Dq, bDq,

|Lq, |Lq2 |Lq2 aDq3

{5Nq 3 aDq, aLq3 pLq,

|Dq, P L q3 a L q, |Dqf

P
i

SI. 1.9. Funkcionalna shema stroja {Primjer 1.4.)

14

1. POGLAVLJE: ARHITEKTURA RAUNARSKOG SUSTAVA

Primjer 1.5. Pretpostavimo da je na vrpci TS zapisan proizvoljni dekadski broj. elimo napisati program za TS koji inkrementira (poveava za jedan) taj broj. Poetno, stroj se nalazi u stanju q0, a R/W glava se nalazi na nepoznatoj poziciji lijevo od najmanje znaajne znamenke broja. Odredimo sastavnice TS-a: Problem odreuje skup vanjske abecede - njega uz prazni simbol b ine i sve znamenke dekadskog brojevnog sustava S = {0,1, 2, 3,4, 5,6, 7, 8, 9, b}. Skup unutarnjih stanja TS-a je Q = ^ q 2 ,..., qf}. Vidimo da se u skupu Q nalaze poetno stanje stroja q0 i konano stanje q f i odreen broj radnih unutarnjih stanja stroja q , qr.... Broj tih radnih unutarnjih stanja stroja ovisi o algoritmu kojim emo rijeiti zadani problem. Openito, podrazumijeva se da "elegantnije" rjeenje ima manji broj radnih unutarnjih stanja. Ponudimo rjeenje: Dekadski brojevni sustav je pozicijski to znai da operaciju inkrementiranja moramo zapoeti tako da inkrementiramo najmanje znaajnu znamenku broja koji je inicijalno zapisan na vrpci. Budui da nam je jedino poznato da se na samom poetku rada stroja R/W glava nalazi negdje lijevo od najmanje znaajne znamenke, tj. nad praznim poljima ili nad poljem u kojem je zapisana bilo koja znamenka dekadskog broja, prvo trebamo R/W glavu pozicionirati na polje vrpce stroja koje sadrava najmanje znaajnu znamenku broja. Kada stroj pozicionira R/W glavu nad tim poljem, onda je problem skoro rijeen: Ako je promatrana znamenka 0, stroj upisuje 1, ne pomie R/W glavu i zaustavlja se (prelazi u stanje q f ), ako je promatrana znamenka 1, upisuje na to mjesto 2 i zaustavlja se. Za vrijednosti promatrane najmanje znaajne znamenke od 0 do 8 vrijedi isto: treba upisati znamenku ija je vrijednost za 1 vea od promatrane znamenke i zaustaviti rad stroja. Ako je najmanje znaajna znamenka 9, stroj treba upisati u promatrano polje 0, ali i nastaviti s radom jer se tada jedinica prenosi na znaajnije mjesto zapisanog broja.

%
0 1 2 3 4 5 6 7 8 9 b 0Dq, 1Dq, 2Dq, 3Dq, 4Dq, 5Dq, 6Dq, 7Dq, 8Dq, 9Dq, bDq0 0Dq, 1Dq, 2Dq, 3Dq, 4Dq, 5Dq, 6Dq, 7Dq, 8Dq, 9Dq, bLq2 1Nqf 2Nqf 3Nqf 4Nqf 5Nqf 6Nqf 7Nqf 8Nqf 9Nqf 0Lq2 1 N qf

Tabltca 1.1. Funkcionalna shema stroja (Primjer 7.5.)

S. RIBARI - GRAA RAUNALA

15

Rjeenje problema, tj. program za TS predoen funkcionalnom shemom stroja koja predstavlja logiku funkciju stroja ima oblik (Tablica 1.1.): Prikaimo rad TS za prethodno napisani program. Pretpostavimo da je na vrpci zapisan broj 1269. Slika 1.10 prikazuje vrpcu i poloaj R/W glave na poetku rada stroja (stroj je u stanju q0).

R/W glava stanje: q 0


1.10 Poetno stanje TS-a (Primjer /.5.)

Uporabom programa (Tablica 1.1.) obavljaju se sljedee operacije: 1. takt: (b,q 0 )->(b,D,q 0 ) komentar: R/W glava se pomie udesno i stroj ostaje u stanju q 0 2. takt: (b, q0) (b, D, q0) komentar: R/W glava se pomie udesno i stroj ostaje u q 0 3.takt:(1,q)->(1,D,qi) 4. takt: (2, (2, D, 5. takt: (6,q,) ->(6, D , ^ ) 6. takt: (9, q,) 7. takt: (b, (9, D, q,) (b, L, q2); komentar: stroj je naao prazno polje desno od najmanje znaajne znamenke i pozicionirao je glavu na najmanje znaajnoj znamenci broja, (0, L, q2); komentar: inkrementira se najmanje znaajna znamenka, (7, N, q f ); komentar: stroj "prenosi"jedinicu s najmanje znaajnog mjesta, inkrementira znamenku na znaajnijoj poziciji i zaustavlja se. komentar: stroj i dalje "trai" najmanje znaajnu znamenku,

8. takt: (9, q2) 9. takt: (6, q2)

R/W glava stanje: q f


SI. 1.11 Sadraj vrpce i poloaj glave R/W nakon zavretka programa {Primjer 1.5.)

Primjer 1,6. Napiimo program za TS kojim se inkrementira proizvoljni broj predoen u binarnom brojevnom sustavu (postupak e temeljiti na pravilu za zbrajanje binarnih brojeva: 0 + 0 = 0; 0 + 1 = 1; 1 + 0 = 1 i 1 + 1 = 0 uz prijenos 1 na znaajnije mjesto). Pretpostavimo da je poznat poetni poloaj R/W glave - ona se nalazi na poziciji najmanje znaajne binarne znamenke broja. Skup simbola vanjske abecede je S = {0,1, b}. Skup unutarnjih stanja stroja je Q = {q0, q f }. (Opaska: u ovom elegantnom rjeenju q 0 je ujedno i radno unutarnje stanje stroja).

16

1. POGLAVLJE: ARHITEKTURA RAUNARSKOG SUSTAVA

Funkcionalna shema stroja ima oblik prikazan u Tablici 1.2.:

0 1 b Tablica 1.2. Funkcionalna shema TS-a (Primjer 1.6.)

1Nqf OLq 0 1Nq f

Prikaimo izvoenje programa za binarni broj poetno zapisan na vrpci (Slika 1.12): 100111. b 0 0 Z X R/W glava stanje: q0
SI. 1.12 Poetno stanje TS-a (Primjer 7.6.)

1 > takt; 2. takt 3. takt 4. takt

(1, q0)

(0, L, q0)

(1,q 0 )-((), L,q0) (0, q0) (1,N, qf)

Rezultat izvoenja programa prikazanje na slici 1.13. s-

1 Z K

5
-S

R/W glava stanje: qf SI. 1.13 Rezultat izvoenja programa (Primjer 1.6.) Ovaj primjer inkrementiranja binarnog broja posebno je zanimljiv jer emo ga razmotriti i za von Neumanov raunski model, odnosno za von Neumannov model raunala te ih usporediti.

1.3.5. k-TA KONFIGURACIJA TS-A


Tijekom izvoenja programa kaemo da TS prelazi iz konfiguracije u konfiguraciju, gdje se konfiguracija promatra kao potpuni opis stanja stroja na poetku nekog (npr. k-tog) takta. k-ta konfiguracija Turingovog stroja sastoji se od slike vrpce s informacijom koja je zapisana na njoj na poetku k-tog takta, pri emu je prikazan i poloaj R/W glave te oznaeno unutarnje stanje stroja (takoer na poetku k-tog takta).

S. RIBARI - GRAA RAUNALA

17

Primjer 1.7. Prikaimo 1.19. konfiguraciju TS za program (Primjer 1.5.) i poetnu informaciju zapisanu na vrpci stroja: 1269. 1. konfiguracija (stanje stroja na poetku 1. takta; (slika 1.14)):
8-

z s
R/W glava stanje: q 0
SI. 1.14 Prva konfiguracija

9. konfiguracija (stanje stroja na poetku 9. takta; (slika 1.15)):

R/W glava stanje: q 2


SI. 1.15 Deveta konfiguracija

Uoavate da se k-ta konfiguracija, na alost, ne moe izravno odrediti, ve je potrebno "odvrtiti" program tako da se odrede slijedno sve k'-konfiguracije, k' < k, poevi od 1. konfiguracije. Uvoenjem koncepta k-konfig u racije moemo kazati da se program TS-a izvodi tako da stroj, zapoevi od 1. konfiguracije, tijekom napredovanja taktova prelazi iz konfiguracije u konfiguraciju u skladu s funkcionalnom shemom stroja. Nain izvoenja programa i konani ishod (rezultat) za TS moemo klasificirati u dva glavna sluaja. Pretpostavimo daje poetna informacija zapisana na vrpci i oznaimo je sa JL 1. Sluaj: Nakon konanog broja taktova stroj se zaustavlja (dostie unutarnje stanje qf) i pritom je na vrpci zapisana informacija Kaemo: Stroj je primjenjiv za poetnu informaciju 2. Sluaj: Stroj nikad ne staje (ne dostie unutarnje stanje qf). Kaemo: Stroj je neprimjenjiv za poetnu informaciju Ji. Analogiju s ova dva sluaja moemo nai i za izvoenje programa raunalom. Naime, ako je program ispravno napisan, on e obraditi ulazne podatke, pohraniti i prikazati rezultat obrade te se "vratiti" pod upravljanje operacijskog sustava raunala. No ako je sluajprerauje je u informaciju ili rezultat (B.

18

1. POGLAVLJE: ARHITEKTURA RAUNARSKOG SUSTAVA

no ugraena neka pogreka (npr. beskonana programska petlja), program nee zavriti i preostaje nam da tzv. "mekim"reetom (npr. pritiskom na tipke Ctrl - alt-del) iii sklopovskim reetom (npr. pritiskom na crveni ili crni gumb oznaen kao RESET) nasilno prekinemo njegovo izvoenje. Navedimo neke bitne znaajke Turinovog stroja: 1. TS je apstraktni izvritelj, 2. rad stroja odvija se u taktovima - diskretnim vremenskim trenucima, 3. stroj ima neogranienu vanjsku memoriju predoenu vrpcom podijeljenom na polja i R/W glavu koja se tijekom jednog takta moe pomaknuti samo za jedno polje, 4. stroj ima unutarnju memoriju q i p u kojoj pamti unutarnje stanje stroja i naredbu za pomak R/W glave, 5. obrada informacije odvija se u logikom bloku L koji predstavlja realizaciju logike funkcije stroja 6, 4. ovisno o poetnoj informaciji J l programa zapisanog u funkcionalnoj shemi stroja mogua su dva sluaja izvoenja, i to kada je stroj primjenjiv za poetnu informaciju kada je stroj neprimjenjiv za poetnu informaciju JL

1.3.6. VONNEUMANNOV MODEL


U ovom emo se potpoglavlju osvrnuti samo na osnovne znaajke von Neumannovog raunskog modela jer emo raunalu koje se temelji na tom modelu namijeniti posebno poglavlje. Temeljni element koji sudjeluje u raunanju, odnosno predstavlja objekt obrade u von Neumannovom raunskom modelu je podatak predoen pozicijskim brojevnim sustavom (obino binarnim sustavom). Podacima su dodijeljena imena i promatraju se kao varijable. Operacije se izvode nad podacima. Svakom tipu podataka pridruen je skup operacija. Von Neumannov model raunanja rabi za opis problema slijed instrukcija (koje ine program) i koje se slijedno (sekvencijalno) izvravaju i na taj nain ulazne podatke pretvaraju (transformiraju) u traeni rezultat. Izvrna semantika, odnosno pravilo koje propisuje kako se izvode instrukcije temelji se na semantici prijelaza stanja koja odreuje za svaku instrukciju promjenu stanja modela. Nain prijenosa upravljanja s instrukcije na instrukciju obavlja se na temelju upravljakog toka. Tokovi podataka i upravljaki tokovi odvojeni su.

1.4. ARHITEKTURA, ORGANIZACIJA I GRAA RAUNARSKOG SUSTAVA


1.4.1. DEFINICIJA ARHITEKTURE RAUNARSKOG SUSTAVA
Izraz arhitektura raunala (engl. computer architecture) pojavio se ezdesetih godina prolog stoljea u jednoj od vodeih svjetskih tvrtki na podruju IT (informacijske tehnologije), IBM-u (International Business Machines). Upotrebljavao se za opisivanje programskog modela raunala iz serije IBM 360 na razini asemblera (engl. assembly language), tj. zbirnog

S. RIBARI - GRAA RAUNALA

19

jezika koji je vrlo blizak strojnom jeziku. Strojni jezik (engl. machine language) sastoji se od instrukcija koje su razumljive sklopovlju raunala i koje su kodirane sljedovima 0 i 1. Slijed takvih instrukcija predstavlja program u strojnom jeziku kojim se korak-po-korak specificira postupak raunanja. Zbirni jezik (ili asemblerski jezik) je jezik kojim se strojne instrukcije predoavaju obino dvo- ili troslovanim oznakama, koje se nazivaju mnemonici, te je time omoguen prikaz programa za ljude u itljivijem obliku. Instrukcije u zbirnom jeziku moraju se prevesti u instrukcije strojnog jezika. Prevoenje je jedan-naprema-jedan, tj. jednoj instrukciji u zbirnom jeziku odgovara jedna instrukcija strojnog jezika. Prevodilac za zbirni jezik obino se naziva asembier, dakle isto kao i zbirni jezik, to moe zbunjivati itatelja. Primjer 1.8. Instrukcija kojom se zbrajaju dva broja bit e u zbirnom jeziku predoena addr3,r2,rl gdje mnemonik add specificira operaciju zbrajanja (troslovana oznaka nas asocira na zbrajanje; add u engleskom znai zbroji), a rl i r2 odreuju dva izvora podataka (registre), a odredite rezultata odreeno je kao registar r3. Ova e se instrukcija prevesti, na primjer, u strojnu instrukciju oblika: 00100000110001000001000000000000 U ovom je sluaju strojna instrukcija niz od 32 bita. Dva su raunala imala istu arhitekturu ako su imala jednak skup strojnih instrukcija. Na ovaj nain opisana arhitektura raunala obino se oznaava kao ISA (Instruction Set Architecture) i sadrava opise elemenata kao to su skup strojnih instrukcija, tipovi podataka koji su izravno podrani sklopovljem procesora, naini adresiranja te registri "vidljivi" programeru na razini instrukcija u zbirnom jeziku. S vremenom se pojam arhitektura raunala proirio tako da se ona neto openitije moe definirati kao slika raunarskog sustava kojom se sustav predoava programeru u strojnom jeziku, ali i programeru koji pie prevodioce (engl. compiler) za vie programske jezike kojim se naredbe u viim programskim jezicima prevode u strojne instrukcije. Odnosno, program napisan u viem programskom jeziku (npr. u C; C++ ili Pascalu) prevodi se u slijed strojnih instrukcija koji se naziva objektni program (engl. object program). Neki znanstvenici pod arhitekturom raunala podrazumijevaju algoritme koji se rabe u osnovnim funkcijskim jedinicama raunarskog sustava (upravljaka jedinica, aritmetikologika jedinica, ulazno-izlazna jedinica, memorija) bez obzira jesu li algoritmi ostvareni sklopovljem ili programima. E. C. Joseph arhitekturu raunala promatra funkcionalno usmjerenom, poput arhitekture u modernom graevinarstvu. On definira arhitekturu raunarskog sustava kao nain ureenja strukture i organizacije sustava nizom postupaka koji su nuni za ostvarenje ciljeva oblikovanja, a to su poveanje:propusnosti (engl. throughput), odnosno poveanje procesne moi ili performanse sustava, prilagodljivosti (engl. flexibility) - mogunost uporabe sustava na razliitim podrujima ljudske djelatnosti, pouzdanosti (engl. reliability) - to je mogue vei vremenski razmak izmeu dva ispada iz rada uslijed sklopovske ili programske pogreke i raspoloivosti (engl. availability) - to dulje vrijeme u kojem je sustav raspoloiv korisniku (vrijeme u kojem raunarski sustav ispravno djeluje, a ne nalazi se u postupku ispitivanja ili redovitog odravanja). Jedan od vrlo vanih ciljeva arhitekture raunala, posebno s gle-

20

1. POGLAVLJE: ARHITEKTURA RAUNARSKOG SUSTAVA

dita proizvoaa raunarskih sustava Jest i postizanje stoje mogue nie cijene sustava. Tonije, postizanje stoje mogue veeg omjera izmeu performanse raunarskog sustava i njegove cijene. Naime, raunarski sustav sa to veim omjerom performansa/cijena je konkurentniji na tritu i privlaniji potencijalnom kupcu, a time proizvoau osigurava profit i sredstva koja ulae u razvoj novih proizvoda. U posljednje se vrijeme spominje jo jedan od ciljeva arhitekture raunala, a to je ekoloko zbrinjavanje raunalnog otpada, odnosno izbor materijala za izgradnju raunala koji je ekoloki razgradljiv ili se moe reciklirati. Ostvarivanje svih ciljeva - od poveanja propusnosti, to nie cijene raunarskog sustava pa sve do ekolokog zbrinjavanja raunalnog otpada - postie se zahvatima na trima sastavnim podrujima arhitekture: sklopovskoj opremi (engl. hardware), programskoj opremi (engl. software) i na podruju koje se bavi problemom odnosa ovjeka i raunala te nainima uporabe raunala (engl. humanware). Arhitektura raunarskog sustava moe se promatrati kao distribucija funkcija po zadanim razinama vieslojnog modela, gdje svaka razina predstavlja odreenu apstraktnu predodbu raunala (slika 1.16).

namjenski sustav jezini procesori (prevodioci) upravljanje logikim


resursima

TO

O TO J*. E 0 3 U) O

Q.

upravljanje fizikim
resursima

sredinja procesna jedinica (izvravanje programa)


ulazno-izlazni sustav

upravljaki sklopovi

upravljaki sklopovi

komunikacijski putovi i ureaji

memorija

SI. 1.16 Arhitektura raunarskog kao distribucija funkcija u vieslojnom modelu

S. RIBARI - GRAA RAUNALA

21

Prva, najvia razina naziva se arhitektura sustava i predstavlja sliku sustava s motrita korisnika koji preko namjenskog sustava (slika 1.16) koristi raunalo. Namjenski sustav ine namjenski programi koje obino isporuuje proizvoa zajedno s raunalom ili programi koji se mogu nabaviti od nezavisnih isporuitelja ("programskih kua"). Tipini namjenski programi jesu oni za pretraivanje i sortiranje podataka, pretraivanje teksta, programi kojima se rjeavaju problemi s podruja matematike, tehnike i poslovanja itd. Na neto nioj razini apstrakcije raunalo se korisniku predstavlja preko viih programskih jezika. U tom se sluaju komunikacija, odnosno interakcija izmeu korisnika (programera) i raunala ostvaruje pomou jezinih procesora koji mogu podravati razliite vrste jezika (vii programski jezici kao to su C, C++, Pascal, FORTRAN, Basic, Logo i si., upravljaki jezici, jezici za oblikovanje i rukovanje bazama podataka). Razine 1.-4. (slika 1.16) odnose se na funkcije koje su (obino) ostvarene programski s tim da su jezini procesori, upravljanje logikim resursima i upravljanje fizikim resursima razine koje odgovaraju funkcijama operacijskog sustava raunala. Upravljanje logikim resursima obuhvaa funkcije kao to su upravljanje virtualnom memorijom, upravljanje bazama podataka, upravljanje postupcima obrade u mreama raunala, dok upravljanje fizikim resursima podrazumijeva funkcije rukovanja memorijom (glavnom ili radnom, sekundarnom), upravljanje procesorom (njegovo dodjeljivanje, odnosno dodjeljivanje vremena procesora razliitim programima) i upravljanje drugim ureajima raunarskog sustava. Razine 5 . - 1 0 . odnose se na funkcije koje su ostvarene sklopovski. Razina 5. koja se odnosi na funkciju izvravanja programa obino se naziva arhitektura procesora ili arhitektura sredinje procesne jedinice; dok se razine 6. - 9. odnose na funkcije koje se klasificiraju u arhitekturu ulazno-izlaznog sustava i raunalnih mrea. Funkcije u razinama 8. i 10. odnose se na arhitekturu memorijskog sustava. Na slici 1.16 moemo opaziti crtkane vertikalne linije u razinama 5. - 8., koje odgovaraju funkcijama dodijeljenim sklopovskoj opremi. Crtkane linije odreuju funkcije koje su zaista realizirane sklopovljem i one koje su ostvarene "programski" odnosno mikroprogramom . Naime, na podruju arhitekture raunala moe se govoriti o tzv. dualizmu sklopovske i programske opreme (kao to se u modernoj fizici govori o dualizmu mase i energije). Pojednostavljeno, dualizam sklopovske i programske opreme oituje se u tome da se skoro sve to je realizirano u sklopovlju moe ostvariti i programski, i obratno. Na primjer, upravljaka jedinica procesora moe se realizirati sklopovski, ali i programski (mikroprogramom), prevodioci za vie programske jezike obino su programski izvedeni, ali postoje procesori koji imaju sklopovski ostvarene prevodioce (procesori izravno izvrne arhitekture; engl. direct-execution architecture). Definiciju arhitekture raunarskog sustava temeljit emo na hijerarhijskom modelu sustava koji je prikazan na slici 1.17. Najniu razinu, predoenu jezgrom prstenaste strukture, ini sklopovlje, odnosno sklopovska oprema ili hardver. Openito, pod tim se razumijeva sve materijalno od ega je raunalo sastavljeno: svi mehaniki dijelovi, elektriki i elektroniki dijelovi. U uem smislu, pod sklopovskom emo opremom podrazumijevati elektronike sastavne dijelove: sklopove realizirane u tehnologiji visokog (LSI - Large Scale Integration) i vrlo visokog stupnja integracije (VLSI - Very Large Scale lntegration).Je tehnologije omoguuju izvedbu vrlo sloenih sklopova s nekoliko stotina tisua ili stotina milijuna tranzistora na ipu (engl. chip) - komadiu silicija neto veem od potanske marke. Naglasimo da je ova najnia razina zaduena za izvoenje programa, bez obzira jesu li oni napisani u viem programskom jeziku ili zbirnom jeziku (asembleru).

22

1. POGLAVLJE: ARHITEKTURA RAUNARSKOG SUSTAVA

Sljedeu razinu u modelu ini jezgra operacijskog sustava. Zadatak je jezgre operacijskog sustava da rukovodi i dodjeljuje osnovne resurse raunala (procesor, odnosno vrijeme procesora, memoriju, ulazno-izlazne ureaje, sistemske programe i datoteke) na temelju potreba zadataka, procesa i dretvi (engl. thread) razliitih (korisnikih) programa koji se istodobno izvravaju u raunarskom sustavu. Sljedeu viu razinu modela ine preostali dijelovi operacijskog sustava kao to su prevodioci za razliite vie programske jezike (C, C++, Pascal, FORTRAN, Basic, Prolog, Lisp,...), interpreteri (engl. interpreter), punioci (engl. foader), poveznici (engl. linker), ureivai teksta (editori; engl. editor), programi za otkrivanje pogreaka (engl. debugger) i ve spomenuti namjenski programi. interpreter je program koji analizira naredbu po naredbu programa i za razliku od prevodioca, izvrava je umjesto da generira objektni program koji e se kasnije izvriti. Punilac jest usluni program kojim se izvrljivi program tj. objektni program smjeta u glavnu memoriju i time biva spreman za izvoenje. Povez/7/Tcje usluni program za povezivanje kojim se razliiti prevedeni programi ili programski moduli povezuju u oblik pogodan za izvravanje.

SI. 1.17 Hijerarhijski model raunarskog sustava

S. RIBARI - GRAA RAUNALA

23

Vrlo esto se funkcije punioca i poveznika objedinjuju u usluni program koji se naziva povezni punilac (engl. linking loader). Ureiva teksta, odnosno editor je takoer usluni program koji se koristi za unos i modifikaciju podataka u tekstualnom obliku. Takvi podaci mogu biti naredbe u viem programskom jeziku ili pak tekst nekog izvjea ili knjige napisane u prirodnom jeziku. Najviu razinu u modelu raunala ine ljudi koji su korisnici raunala. Oni svoje zadatke prosljeuju, putem namjenskih programa ili programa napisanim (obino) u viim programskim jezicima, kroz nie razine modela sklopovlju koje uz sudjelovanje operacijskog sustava izvrava te zadatke. Potrebno je napomenuti da je dokumentacija (korisnika i servisna) sastavni dio svake od razina u hijerarhijskom modelu arhitekture. U skladu s predloenim hijerarhijskim modelom raunarskog sustava i opisanim razliitim pristupima arhitekturi moemo ponuditi sljedeu dovoljno openitu definiciju arhitekture. Arhitektura raunarskog sustava je dio raunarske znanosti koji se odnosi na oblikovanje raunarskih sustava radi ostvarivanja osnovnih ciljeva kao to su vea performansa, prilagodljivost, pouzdanost i raspoloivost uz to je mogue niu cijenu, odnosno, to je mogue vei omjer performansa/cijena. To se postie uporabom niza tehnika, postupaka i zahvata u svim hijerarhijskim razinama - od sklopovlja, programske oprema pa sve do razine interakcije ovjeka i stroja. Vrlo esto se susreemo i s izrazom graa i organizacija raunala (engl. computer organization). Pod tim se pojmovima podrazumijevaju podrobni opisi pojedinih sastavnica raunala (aritmetika jedinica, logika jedinica, upravljaka jedinica, memorijska jedinica, ulaznoizlazne jedinice, sabirnice) i konfiguracija koje te sastavnice oblikuju. Organizacija obuhvaa i opise njihova povezivanja te naine meudjelovanja. U kontekstu organizacije raunala spominje se i realizacija pod ime se podrazumijevaju detalji koji se odnose na sklopovske strukture i osnovne sklopovske graevne sastavnice (komponente) u tehnologiji visokog stupnja integracije koje se rabe u konstrukciji raunarskog sustava.

1.5 KLASIFIKACIJA ARHITEKTURE RAUNARSKOG SUSTAVA


Postojanje razliitih raunskih modela i razliitih definicija, pristupa te poimanja arhitekture raunala uvjetovalo je i postojanje razliitih pokuaja njezine klasifikacije. Tako, na primjer, P. C. Treleaven predlae klasifikaciju arhitekture raunala na temelju upravljanja slijedom izvravanja u osnovnim raunskim modelima: i) arhitektura raunala s upravljakim tokom, ii) arhitektura raunala upravljana tokom podataka, iii) arhitektura raunala upravljana zahtjevom. Raunala koja se svrstavaju u i) su raunala koja se temelje na konvencionalnom von Neumannovom modelu i njegovim izvedenicama, dok su raunala iz ii) i iii) takve arhitekture koja se korjenito od njih razlikuju.

24

1. POGLAVLJE: ARHITEKTURA RAUNARSKOG SUSTAVA

SI. 1.18 Klasifikacija arhitekture raunala na temelju odnosa viih programskih jezika i raunala

Budui da se na najviim razinama apstrakcije raunarski sustav predoava korisniku kao stroj koji izvrava programe u viim programskim jezicima, G. J. Mayers predlae klasifikaciju na temelju odnosa viih programskih jezika i raunala (slika 1.18). Ona je predoena sljedeim putovima koji povezuju programe napisane u viim programskim jezicima i stroj: i) Put 0 - arhitektura s tradicionalnim pristupom: postupkom prevoenja, uporabom prevodioca, programi napisani u viem programskom jeziku pretvaraju se u programe u strojnom jeziku niske razine (engl. low-level machine language); ii) Put 1- arhitektura koja premouje jaz izmeu viih programskih jezika i stroja tako da se programi napisani u viem programskom prevode u programe u strojnom jeziku vie razine (engl. higher-level machine language). Osnovna razlika izmeu strojnog jezika niske razine i strojnog jezika visoke razine je u tome to potonji ima strojne instrukcije koje su bliske naredbama u viem programskom jeziku i stroj sklopovski podrava operacije koje su njima odreene. Arhitektura s tim znaajkama naziva se jezino usmjerena arhitektura (engl. language directed architecture); iii) Put 2 - arhitektura raunala koja omoguuje uporabu vieg programskog jezika kao zbirnog jezika (engl. assembly language) i prevoenje u odnosu jedan naprema jedan, tj. svakoj naredbi u viem programskom jeziku odgovara jedna instrukcija u strojnom jeziku. Takva se arhitektura naziva arhitektura visoke jezine razine (engl. high-level language architecture);

S. RIBARI - GRAA RAUNALA

25

iv) Put 3 - arhitektura omoguuje izravno izvravanje programa napisanog u viem programskom jeziku, i to bez prevoenja. Pojednostavljeno, to znai daje svaka naredba u viem programskom jeziku izravno podrana sklopovljem. Takva se arhitektura naziva izravno izvrna arhitektura (engl. direct-execution architecture). Arhitektura raunala moe se klasificirati i s obzirom na promjenjivost strukture raunala, i to na: i) statiku arhitekturu u kojoj nisu mogue programski upravljane promjene konfiguracije raunala, ii) rekonfigurabilnu arhitekturu u kojoj su pod programskim upravljanjem doputene promjene veza izmeu razliitih funkcijskih jedinica raunala (npr. promjena veza izmeu procesora i memorijskih modula), iii) dinamiku arhitekturu koja omoguuje potpunu promjenjivost sustava pod programskim upravljanjem. Na primjer, 64-bitno raunalo se po potrebi rekonfigurira u jedno 32-bitno raunalo i dva 16-bitna raunala.

1.5.1. FLYNNOVA KLASIFIKACIJA


U uvodnom smo dijelu, razmatrajui obradu podataka naveli podatke i algoritam kao dvije od tri osnovne sastavnice obrade. Algoritam se stroju predoava programom, a njegovo je izvravanje definirano slijedom instrukcija. Na odreenoj razini apstrakcije, dinamiki promatrano, tijekom izvoenja programa moemo govoriti o toku podataka (D5) i instrukcijskom toku (iS) koji se uspostavljaju izmeu funkcijskih jedinica stroja. Upravo su tok podataka i instrukcijski tok posluili M. J. Flynnu za jednu od ope prihvaenih klasifikacija arhitekture raunala. Tipovi arhitekture prema Flynnovoj klasifikaciji mogu se predoiti u dvodimenzionalnom prostoru koji je odreen brojem tokova podataka i brojem instrukcijskih tokova (slika 1.19).
tok podataka SIMD MIMD

SISD

MISD

instrukcijski tok

SI. 1.19 Prikaz Flynnove klasifikacije u prostoru broj tokova podataka - broj instrukcijskih tokova

Na slici 1.19 uoavamo etiri toke oznaene sa SISD, SIMD, MIMD i MISD - one oznaavaju etiri osnovna tipa arhitekture:

26

1. POGLAVLJE: ARHITEKTURA RAUNARSKOG SUSTAVA

i) SISD (Single Instruction Stream Single Data Stream) - raunalo s jednostrukim instrukcijskim tokom i jednostrukim tokom podataka. Arhitektura SISD predstavlja arhitekturu sekvencijalnog raunala temeljenog na von Neumannovom raunskom modelu; i i) SIMD (Single Instruction Stream Multiple Data Stream) - raunalo s jednostrukim instrukcijskim tokom i viestrukim tokom podataka. U ovu se kategoriju svrstavaju paralelna raunala (nazivaju se i matrina raunala) koja se obino sastoje od velikog broja procesora ili procesnih elemenata koji istodobno izvravaju istu instrukciju na razliitim podacima; i i i) MIMD ( Multiple Instruction Stream Multiple Data Stream) - raunalo s viestrukim instrukcijskim tokom i viestrukim tokom podataka. Multiprocesorski sustavi, odnosno paralelni raunarski sustavi s dva i vie procesora priblino jednakih performansi, pri emu svaki od njih ima pristup zajednikoj memorijskoj jedinici i svi dijele ulaznoizlazne jedinice, a pritom djeluju pod jednim operacijskim sustavom, predstavljaju ovaj tip arhitekture; iv) MISD (Multiple Instruction Stream Single Data Stream) - raunalo s jednostrukim in- , strukcijskim tokom i viestrukim tokom podataka.Teorijski strogo gledano, raunala ! ovog tipa arhitekture ne mogu se fiziki realizirati. Nemogue je, naime, ostvariti da se istodobno vie razliitih instrukcija izvrava na istim podacima (slino kao to u fizici makro svijeta nije mogue da se dva razliita tijela istodobno nalaze na istom mjestu). No dogovorno u ovu kategoriju uvrtavamo protona (engl. pipeline) raunala i raunarske sustave koji se temelje na sistolikim poljima. Prikaimo shematski pojedine tipove arhitekture pomou veza meu memorije (MU - memory unit), upravljakih jedinica (CU - control unit) i jedinica za obradu (PU - processor unit - procesna jedinica ili PE - processing element - procesni element). Slika 1.20 prikazuje arhitekturu tipa SISD. Vidimo da samo jedan instrukcijski tok (IS) i jedan tok podataka (DS) izviru iz memorijske jedinice (MU). Instrukcije se dovode do upravljake jedinice (CU) gdje se dekodiraju. Dekodirani instrukcijski tok i tok podataka "susreu" se u jedinici za obradu PU u kojoj se tok podataka preoblikuje. Uoavamo da se preoblikovani podaci ponovo dovode u memorijsku jedinicu koja predstavlja izvori ponor toka podataka.
IS

SI. 1.20 Shematski prikaz arhitekture tipa SISD

Na slici 1.21 shematski je prikazana arhitektura tipa SIMD. Vidimo da se instrukcijski tok (IS) koji izvire iz memorije dovodi u upravljaku jedinicu (CU) gdje se dekodira. Upravljaka jedinica dekodirani instrukcijski tok upuuje na n identinih jedinica za obradu (PE). (Opaska: obino raunalo SIMD kategorije ima vrlo veliki broj jedinica za obradu koje su relativno jednostavne pa se vrlo esto nazivaju procesnim elementima - PE).

S. RIBARI - GRAA RAUNALA

27

A
^

DS

LM,

DS

PE2

DS

LM2

DS

skupovi podataka prema/od raunalu domainu

PEn

DS

LM n

DS n

fc

SL1.21 Shematski prikaz SIMD kategorije arhitekture

U raunalu SIMD kategorije arhitekture imamo n razliitih tokova podataka DS17 DS2,..., DSn od kojih svaki izvire iz svoje privatne ili lokalne memorije (LM., i = 1 , 2 , n ) . Identian instrukcijski tok IS i n razliitih tokova podataka susreu se u jedinicama za obradu (PE., i = 1,2, ..., n). I ovdje uoavamo daje svaki tok podataka dvosmjeran - od LM. do PE. i obratno. Raunalo SIMD kategorije arhitekture jest paralelno raunalo - istodobno se obrauju podaci iz n tokova podataka. Ono se obino upotrebljava kao posebno raunalo na podruju obrade gdje se zahtijeva rukovanje velikim grupama ureenih i istodobno raspoloivih podataka kao to su vektori, matrice, viedimenzionalna polja (npr. obrada vremenskih modela, obrada satelitskih snimaka) te se obino koriste uz raunalo konvencionalne arhitekture koje ima ulogu raunala domaina (engl. host computer). Raunalo domain alje podatke u lokalne memorije LM., i = 1,2,..., n i specificira koji zadatak treba raunalo SIMD arhitekture obaviti. Napomenimo da procesni elementi PE., i = 1, 2,..., n mogu biti organizirani kao jednodimenzionalna i viedimenzionalna polja s razliitim uzorcima lokalnih veza izmeu procesnih elemenata (npr. veza sa etiri ili osam bliih susjeda u dvodimenzionalnom polju, veza s bliim /c-kubnim susjedima, veza potpunog mijeanja (engl. perfect shuffle) i si.). Slika 1.22 prikazuje raunalo tipa arhitekture MIMD. Ono ima memoriju koju meusobno dijeli n upravljakih jedinica (CU., i = 1, 2,..., n) i n jedinica za obradu (PU., i = 1, 2 , n ) . Iz meusobno dijeljene memorije MU istodobno izvire n razliitih instrukcijskih tokova i n razliitih tokova podataka. Svi se oni susreu u n jedinica za obradu. Raunala tipa MIMD su paralelna raunala i obino se nazivaju multiprocesorski (raunarski) sustavi. Kako je dobiveno raunalo paralelne arhitekture? Ako na trenutak djelomino prekrijemo sliku 1.22 tako da moemo vidjeti samo gornji dio slike koji prikazuje elemente CU1# PU1 i dio dijeljene memorije MU, tada vidimo da to nije nita drugo negoli dio koji predstavlja SISD kategoriju arhitekture (slika 1.20). Pojednostavljeno, moemo protumaiti da se MIMD kategorija arhitekture dobiva uviestruenjem struktura koje odgovaraju SISD arhitekturi. Na slici 1.23 shematski je predoena arhitektura raunala MISD. Kao to smo ve napisali, strogo teorijski gledano raunalo tipa MISD ne moe se fiziki realizirati, ali u tu kategoriju

28

1. POGLAVLJE: ARHITEKTURA RAUNARSKOG SUSTAVA

arhitekture ipak svrstavamo protona raunala. Istaknimo, ve na ovom mjestu, da je koncept protonosti iznimno vaan i da se nezaobilazno pojavljuje u arhitekturi suvremenih raunala te da e se posebno poglavlje u ovoj knjizi posvetiti upravo njemu.

SI. 1.22 Shematski prikaz M I M D kategorije arhitekture

Na slici 1.23 vidimo da n razliitih instrukcijskih tokova (IS., i = 1,2,..., n) izvire iz memorijske jedinice MU. Istodobno, iz memorije izvire samo jedan tok podataka DS.Tok podataka protjee kroz jedinice za obradu (PU, i = 1,2,..., n) i u svakoj jedinici biva preoblikovan u skladu s dekodiranim instrukcijskim tokovima. I u ovom sluaju moemo ustvrditi da je rije o paralelnoj arhitekturi u kojoj se istodobno izvrava n instrukcija najednom toku podataka.

S. RIBARI - GRAA RAUNALA

29

& 1.23 Shematski prikaz MISD kategorije arhitekture

S. RIBARI - GRAA RAUNALA

31

2. POGLAVLJE

VON NEUMANNOV MODEL RAUNALA


2.1. UVOD
Jedan od najznaajnijih lanaka na podruju arhitekture raunala "Uvodna rasprava o logikom oblikovanju elektronikog raunskog ureaja" (izvorni naslov: "Preliminary Discussion of the Logical Design of an Electronic Computing Instrument") autora A. W. Burksa, H. H. Goldsteina i von J. Neumanna, objavljen je 1946., dakle petnaestak godina prije pojave izraza "arhitektura raunala" Taj je lanak imao dalekosene posljedice i utjecao je na arhitekturu sljedeih etiriju generacija raunala. Naravno, i prije 1946. postojala su ozbiljna nastojanja u realizaciji stroja za raunanje, odnosno raunala. Njihov povijesni razvoj moe se predoiti generacijama raunala - od nulte generacije koja odgovara mehanikim raunalima pa sve do etvrte generacije koja se temelji na tehnologiji vrlo visokog stupnja integracije VLSI {Very Large Scale Integration). (Opaska: neki autori navode i petu generaciju raunala koja se temelji na konceptima umjetne inteligencije (engl. artificial intelligence), ali tehnoloka podloga i tih raunala je VLSI). Opiimo, ukratko po generacijama raunala, samo jedan mali isjeak iz burne povijesti razvoja strojeva za raunanje, odnosno raunala.

2.1.1. NULTA GENERACIJA - GENERACIJA MEHANIKIH STROJEVA ZA RAUNANJE (1644. - 1945.)


B. Pascal je u razdoblju izmeu 1642. i 1644. godine izgradio stroj koji je mogao obavljati raunske operacije zbrajanja i oduzimanja. Godine 1673. G. W. Leibniz oblikovao je mehaniki raunski stroj koji je, uz zbrajanje i oduzimanje, mogao obavljati i raunske operacije mnoenja i dijeljenja. Bio je to ekvivalent "depnim kalkulatorima" sa etiri funkcije tri stoljea kasnije. C. Babbage je 1822. izgradio diferencijskistroj (engl. difference engine) koji se temeljio na raunu konanih diferencija. C. Babbage je, takoer, 1834. zapoeo rad na analitikom stroju (engl. analytical engine) koji je obavljao etiri osnovne raunske operacije i korjenovanje te je trebao biti raunski stroj ope namjene. On je zamislio stroj koji se sastoji od etiriju jedinica: memorije (ili spremnika), jedinice za raunanje (izvorno nazvane mili - to na engleskom znai pogon ili mlin), ulazne jedinice (itaa buenih kartica) i izlazne jedinice (pisaa i buaa kartica). Analitiki je stroj bio programirljiv - itao je instrukcije s buenih kartica i izvravao ih. Iz memorije je dohvaao dva broja predoena u dekadskom brojevnom sustavu,obavljaooperaciju u jedinici za raunanjete pohranjivao rezultat natrag u memoriju.

32

2. POGLAVLJE: VON NEUMANNOV MODEL RAUNALA

Slijed buenih kartica odreivao je program koji se mogao upotrijebiti za vie skupova podataka. Na alost, analitiki stroj nije bio nikad dovren zbog problema s mehanikom izradom koja je zahtijevala tisue i tisue vrlo precizno izraenih zupanika i osovina to je u 19. stoljeu bilo tehnoloki neizvodivo. Raunski stroj koji se moe promatrati kao prekretnica u tehnolokom smislu sa potpuno mehanikih strojeva na elektromehanike raunske strojeve bio je stroj nazvan Z1, njemakog istraivaa K. Zusea (1934.-1936.) koji se temeljio na elektromehanikim relejima. H. Aiken je 1944. u Harvardu, Sjedinjene Amerike Drave, izgradio elektromehaniko raunalo Mark I koje se smatra prvim amerikim raunalom ope namjene. Ono je pohranjivalo 72 rijei od kojih je svaka bila predstavljena s 23 dekadske znamenke, a instrukcije su se izvravale za 6 sekundi.

2.1.2. PRVA GENERACIJA - ELEKTRONIKA RAUNALA S ELEKTRONSKIM CIJEVIMA (1945. - 1955.)


Tijekom ratne 1943. za razbijanje ifriranih poruka, odnosno dekriptiranje njemakih poruka u Engleskoj je izgraeno raunalo COLOSSUS koje se smatra prvim elektronikim raunalom. Ono je imalo oko dvije tisue elektronskih cijevi, a u razvoju raunala sudjelovao je A.Turing. Iste su godine J. Mauchley i J. P. Eckert zapoeli s izgradnjom raunala ENIAC (Electronic Numerical Integrator And Computer). Ono je imalo oko 18000 elektronskih cijevi i 1500 releja, teilo je oko 30 tona, a za arenje elektronskih cijevi, anodne izvore i ventilatore za hlaenje bila mu je potrebna snaga od 140 kW! Raunalo je bilo zavreno 1946. Mnogi smatraju da je povijest suvremenih raunala zapoela upravo s ENIAC-om. M.Wilkes je na Sveuilitu u Cambridgeu 1949. izgradio raunalo EDSAC (Electronic Delay Storage Automatic Computer) koje se smatra prvim elektronikim raunalom s pohranjivanjem programa. Dok su J. Mauchley i J. P. Eckert radili na EDVAC-u (Electronic Discrete Variabile Automatic Computer) koji je trebao biti nasljednik ENIAC-a, J. von Neumann, koji je inae sudjelovao u projektu ENIAC, doao je u Institut za napredna istraivanja (Institute for Advanced Study) u Princeton, SAD, te zapoeo projekt izgradnje raunala I AS. Raunalo I AS zavreno je 1952. i svojim konceptima predstavlja osnovne temelje dananjih raunala. Osnovni model raunala, opisan u lanku koji smo spomenuli na poetku ovog poglavlja, poznat je kao von Neumannov model raunala. Skoro istodobno dok je von Neumann radio na oblikovanju IAS raunala, na MIT-u su razvijali 16-bitno raunalo Whirlwind I koje je prvo raunalo za upravljanje u stvarnom vremenu (engl. real-time control). U sklopu Whirlwind projekta izumljena je memorija s magnetskim jezgricama (engl. magnetic core memory). Godine 1953. tada mala tvrtka IBM zapoinje s proizvodnjom raunala IBM 701.

2.1.3. DRUGA GENERACIJA RAUNALA - TRANZISTOR KAO GRAEVNA KOMPONENTA (1955. - 1965.)
Poluvodiku elektroniku komponentu tranzistor izumili su 1948. trojica istraivaa J. Bardeen, W. Brattain i W. Shockley. Tranzistor moemo pojednostavljeno predoiti kao sklopku s dva stanja (iskljueno/ukljueno; engl. off/ori) koja je elektriki upravljana.

S. RIBARI - GRAA RAUNALA

33

r
B

j ,

Izum tranzistora predstavljao je revoluciju na podruju raunarske tehnologije i u kasnim je pedesetim godinama u potpunosti potisnuo elektronske cijevi. Prvo raunalo izgraeno na temelju tranzistora bilo je TX-0 (Transistorized experimental computer 0) (u MIT Lincoln Laboratoryju). Godine 1960. tvrtka DEC (Digital Equipment Corporation) na trite plasira prvo malo raunalo (miniraunalo) PDP-1 ija je cijena bila oko 120 tisua dolara. Godine 1965. DEC proizvodi 12-bitno miniraunalo PDP-8 ija je cijena bila samo 16 tisua dolara, Tvrtka DEC prodala je preko 50 tisua raunala PDP-8. Tvrtka IBM je 1961. proizvela vrlo popularno malo poslovno raunalo IBM 1401, a odmah sljedee godine IBM 7094 koje je bilo jedno od vodeih raunala za uporabu na znanstvenom podruju (engl. scientific computing). Tvrka CDC (Control Data Corporation) je 1964. izgradila prvo superraunaio CDC 6600 za znanstvenu primjenu. Vodei istraiva na projektu bio je Seymour Cray koji e kasnije osnovati svoju tvrtku i graditi superraunala Cray I, II,..., Cray-XMP itd. Openito, pod superraunalom se podrazumijeva raunarski sustav koji svojim raunskim sposobnostima, odnosno performansom, udovoljava zahtjevima obrade na podruju vodeih istraivanja u znanosti i inenjerstvu.

2.1.4. TREA GENERACIJA - INTEGRIRANI SKLOPOVI (1965. - 1980.)


Izum postupka kojim se deseci tranzistora mogu integrirati na komadiu silicija i oblikovati u integrirani sklop ili ip (R. Noyce, 1958.) najavio je jo jednu prekretnicu u izgradnji raunala. Zahvaljujui integriranim sklopovima bilo je mogue graditi manja, bra i jeftinija raunala. U treoj generaciji raunala poluvodike memorije zamjenjuju memorije s magnetskim jezgricama, a brzina poluvodikih memorija doputa uporabu mikroprogramiranja u izvedbi upravljakih jedinica. Nadalje, integrirani sklopovi zbog svoje niske cijene doputaju gradnju sustava s naglaenim stupnjem paralelnosti (uviestruenje jedinica za obradu, izvedba protonih instrukcijskih i aritmetikih struktura) te vieprogramski rad (engl. multiprogramming) pri kojem se u memoriji raunala istodobno nalazi vie korisnikih programa, a pritom operacijski sustav omoguuje istodobno izvoenje dijelova pojedinih programa). Spomenimo neka raunala i porodice raunala iz tree generacije: IBM System/360 Model 30,40,50 i 65, UNIVAC 1100 te DEC-ove PDP-11 i VAX 11 porodice raunala. Prvo se vektorsko superraunaio Cray I pojavilo na tritu 1974. U drugoj polovini 1971. pojavljuje se na tritu prvi 4-bitni mikroprocesor Intel 4004 koji je bio predvien kao kalkulatorski ip. Prvi 8-bitni mikroprocesor ope namjene Intel 8008 pojavit e samo godinu dana kasnije. Godine 1974. pojavljuje se druga generacija 8-bitnih mikroprocesora iji su tipini predstavnici Motorola 6800 i Intel 8080 te nagovjetavaju revoluciju na podruju raunala.

2.1.5. ETVRTA GENERACIJA RAUNALA - SKLOPOVI VRLO VISOKOG STUPNJA INTEGRACIJE (1980. - ?)
Zahvaljujui razvoju tehnologije vrlo visokog stupnja integracije VLSI (Very Large Scale Integration), koja omoguuje, uz nisku cijenu, realizaciju integriranih sklopova koji su poetkom 80-ih imali desetke tisua pa onda stotine tisua, a danas stotine milijuna tranzi-

34

2. POGLAVLJE: VON NEUMANNOV MODEL RAUNALA

stora, raunarski sustavi postaju dostupni vrlo irokom spektru korisnika i koriste se u svim sferama ljudske djelatnosti. Poveanje broja tranzistora integriranih na ipu opisuje Mooreov zakon koji govori da se broj tranzistora na ipu udvostruuje svakih 18 - 24 mjeseca. Slika 2.1 ilustrira razvoj tehnologije VLSI na primjeru dinamike poluvodike memorije (DRAM - Dinamic Random Access Memory). Na y-osi oznaen je kapacitet jednog memorijskog ipa izraen u K bitovima (Kb) (K = 1024, odnosno 210) a na x-osi razdoblje od 1976. do 2008. godine. Kapacitet DRAM-a priblino se uetverostruivao svake tri godine, tako se, na primjer, kapacitet DRAM ipa sa 16 Kb (1977.) poveao na 1 Gb (G = 230) (2008.). (Opaska: u daljnjem tekstu s b oznaavat emo bit a s B bajt (osam bita).)

godina pojavljivanja SI. 2.1 Poveanje kapaciteta DRAM ipa

etvrtu generaciju raunala oznaila je industrija osobnih raunala. IBM-ova osobna raunala temeljena na Intelovom mikroprocesoru Intel 8088, koja su se pojavila na tritu 1981., postala su najprodavanija raunala u povijesti. Osim tvrtke IBM, pojavili su se proizvoai osobnih raunala kao to su Commodore, Apple, Amiga i Atari koji su temeljili dizajn na tzv. non-IntelCPU, tj. mikroprocesorima drugih proizvoaa. Da bi se dobila predodba o broju mikroprocesora koji se rabe u razliitim raunarskim sustavima - osobnim raunalima, posluiteljima (engl. server), radnim stanicama, ali i u ugraenim raunalnim sustavima - moemo navesti daje samo 1998. bilo prodano 120 milijuna Intelovih procesora porodice 80x86,74 milijuna Motorolinih procesora MC 68000, 54 milijuna procesora MIPS, 50 milijuna procesora ARM i 13 milijuna procesora PowerPC. Prema nekim izvorima u 2004. bilo je na svijetu oko 6,4 milijarde stanovnika i 0,8 milijarde osobnih raunala pa je u prosjeku svaki osmi stanovnik Zemlje imao osobno raunalo. Naglasimo jo jednom, mikroprocesori se ne koriste samo kao graevne sastavnice raunala ope namjene, oni se rabe za izgradnju ugraenih raunalnih sustava koji se kao sastavnice ugrauju u proizvode kao to su videoigre, kuanske naprave, laserski pisai, mobilni telefoni, automobili itd. Na primjer, od 54 milijuna isporuenih procesora MIPS 1998., samo je 1% koriten za raunarske sustave ope namjene, dok je preostali dio koriten u ugraenim raunalnim sustavima. etvrta generacija raunala, zahvaljujui razvoju tehnologije, ali i arhitekture raunala, obiljeena je procesorima vrlo velikih performansi, na primjer 64-bitni procesor Intel Xeon (2005.) ima za faktor 6500 veu performansu u odnosu na VAX 11/780 (1978.).

S.RIBARI- GRAA RAUNALA

35

Godine 1980. javlja se i novi pristup arhitekturi raunala, nazvan RISC (Reduced Instruction Set Computer), koji se za razliku od tradicionalnog pristupa arhitekturi CISC (Complex Instruction Set Computer) temelji na jednostavnijoj, ali broj izvedbi procesora. Navedimo neke od znaajki procesora i raunarskih sustava etvrte generacije: paralelizam na razini instrukcija - procesori koji izvravaju istodobno vei broj instrukcija (superskalarni RISC i CISC procesori), vieprocesorski sustavi na ipu, odnosno viejezgreni procesori (engl. multicore microprocessor), viedretveni procesori (engl. muItithread processor), poveani kapacitet prirune memorije (engl. cache memory), procesori za multimedijsku primjenu temeljeni na vrlo dugim instrukcijskim rijeima -VLIW (Very Long Instruction Word). Razvoj tehnologije sklopovskih sastavnica snano je utjecao na brzinu raunala. Tablica 2.1. prikazuje broj osnovnih operacija u sekundi ovisno o tehnologiji koja se rabi u izvedbi sklopova. Osnovna operacija je ona koja je izravno podrana sklopovljem, npr. operacija zbrajanja dvaju brojeva. Tehnologija - sastavnica elektromehanika - releji elektronika - elektronske cijevi elektronika - tranzistor mikroelektronika - sklopovi niskog stupnja integracije mikroelektronika - sklopovi srednjeg stupnja integracije mikroelektronika - sklopovi vrlo visokog stupnja integracije Godina 1940. 1945. 1950. 1960. 1980. 2000. Broj osnovnih operacija u sekundi 10 103 IO4 105 106 109

: r a Z1. Broj osnovnih operacija u sekundi ovisno o tehnologiji

2.2. FUNKCIJSKE JEDINICE VON NEUMANNOVOG MODELA RAUNALA


Von Neumann, Burks i Goldstine u ve spomenutom su lanku iznijeli osnovne zahtjeve koji su posluili kao ishodite za odreivanje arhitekture raunala: i) raunalo treba imati opu namjenu i potpuno automatsko izvoenje programa. Pod potpuno automatskim izvoenjem programa podrazumijevali su potpunu neovisnost raunala o operateru od trenutka zapoinjanja izvoenja programa, tj. tijekom izvoenja programa ne zahtijevaju se intervencije operatera; ii) raunalo treba, osim podataka potrebnih za raunanje (ulazne vrijednosti, granine vrijednosti, tablice funkcija), pohranjivati meurezultate i rezultate raunanja; iii) raunalo treba imati i sposobnost pohranjivanja programa u obliku slijeda instrukcija.

36

2. POGLAVLJE: VON NEUMANNOV MODEL RAUNALA

Neke od izravnih posljedica ishodinih zahtjeva jesu: instrukcije su u raunalu svedene na numeriki kod, tako da se podaci i instrukcije pohranjuju u jednakom obliku i na jednaki nain u istoj jedinici. Ta se jedinica naziva memorija ili spremnik (engl. memory, storage), odnosno memorijska jedinica; budui da je raunalo prvenstveno stroj za raunanje, mora imati jedinicu koja obavlja aritmetike operacije. Ta se jedinica naziva aritmetika jedinica. No stroj treba izvoditi i logike operacije (logiko I, ILI, NE, ISKLJUIVO ILI) koje trebaju biti podrane u jedinici za raunanje pa je aritmetika jedinica nazvana aritmetiko-logika jedinica; raunalo mora imati jedinicu koja tumai i razumije instrukcije svedene na numeriki kod, a uz to upravlja slijedom izvravanja instrukcija (osigurava potpuno automatsko izvoenje programa). Taj je zadatak povjeren upravljakoj jedinici (engl. control unit); raunalo treba komunicirati s vanjskim svijetom (korisnikom, procesom, drugim raunalom). Jedinice koje omoguuju takvu komunikaciju nazivaju se ulazno-izlazne jedinice.

SI. 2.2 Model von Neumannovog raunala

S. RIBARI - GRAA RAUNALA

37

Slika 2.2 prikazuje model von Neumannovog raunala. Ono se sastoji od etiri osnovne funkcijske jedinice: aritmetiko-logike, upravljake, memorijske i ulazno-izlazne jedinice.

2.2.1. UPRAVLJAKI TOK, INSTRUKCIJSKI TOK I TOK PODATAKA U NEUMANNOVOM MODELU RAUNALA
Funkcijske jedinice raunala povezane su tokom podataka, instrukcijskim tokom i tokom upravljakih signala. Veinu upravljakih signala generira upravljaka jedinica na temelju tumaenja instrukcije. Na slici 2.2 debljom punom debljom linijom oznaen je tok podataka, instrukcijski tok oznaen je tanjom punom linijom, a crtkanom linijom tok upravljakih signala. Promotrimo tok podataka i instrukcijski tok. Vidimo da oba izviru iz memorijske jedinice jer su podaci i instrukcije pohranjeni u toj jedinici. Izmeu memorijske jedinice i aritmetikologike jedinice uspostavljenje dvosmjeran tok podataka: podaci (operandi) koji sudjeluju u aritmetikim ili logikim operacijama dohvaaju se iz memorije, a nakon obavljene operacije podaci koji predstavljaju rezultat obrade pohranjuju se natrag u memorijsku jedinicu. Potrebno je napomenuti da memorijska jedinica nema sposobnost obrade, odnosno ne moe obavljati niti aritmetike niti logike operacije nad operandima. Uoavamo (slika 2.2) da nema izravnog toka podataka izmeu memorijske jedinice i ulazno-izlazne jedinice. Izmjena podataka izmeu memorijske jedinice i ulazno-izlazne jedinice (a time i veza s vanjskim svijetom) u von Neumannovom modelu raunala ostvaruje se neizravno: podaci (rezultat obrade) iz memorijske jedinice upueni ulazno-izlaznoj jedinici moraju proi kroz aritmetiko-logiku jedinicu. Jednako tako, podaci iz ulazno-izlazne jedinice (ulazni podaci) upueni memoriji moraju proi kroz aritmetiko-logiku jedinicu. To je ujedno i razlog postojanju dvosmjernog toka podataka izmeu aritmetiko-logike jedinice i ulaznoizlazne jedinice. Prethodno opisani smjerovi podataka odgovaraju dvjema operacijama: izlaznoj operaciji {smjer podataka od memorijske jedinice prema ulazno-izlaznoj jedinici) i ulaznoj operaciji (smjer podataka od ulazno-izlazne jedinice prema memorijskoj jedinici). Obje su operacije odreene strojnim instrukcijama. Vidimo da aritmetiko-logika jedinica nepotrebno sudjeluje u izmjeni podataka izmeu memorijske i ulazno-izlazne jedinice. To ujedno znai da tijekom izmjene podataka izmeu memorije i ulazno-izlazne jedinice ona ne moe obavljati svoj osnovni zadatak - aritmetike ili logike operacije. Da bi se to izbjeglo, von Neumannov model raunala modificiran je tako da je uspostavljen izravan tok podataka izmeu memorijske i ulazno-izlazne jedinice (slika 2.3).

38

2. POGLAVLJE: VON NEUMANNOV MODEL RAUNALA

SI. 2.3 Model von Neumannovog raunala s izravnim pristupom memoriji D M A

Izravna veza izmeu memorijske i ulazno-izlazne jedinice naziva se izravan pristup memoriji (engl. DMA - Direct Memory Access). Prijenosom podataka na tom putu upravlja poseban DMA upravljaki sklop pa je omoguen istodobni prijenos podataka i obrada u aritmetiko-logikoj jedinici. Tok podataka uspostavljenje i izmeu ulazno-izlazne jedinice koja obino predstavlja suelje (engl. interface) s ulazno-izlaznim (perifernim) ureajima (prika-j zna jedinica, zaslon, pisa, mi, tipkovnica i si.). Instrukcijski tok usmjeren je od memorijske prema upravljakoj jedinici. U skladu s ishodinim zahtjevima (instrukcije svedene na numeriki kod i pohranjene u istoj memorijskaj jedinici kao i podaci) nema razlike u obliku prikaza podataka i instrukcija. Jedino usmjeren nost toka izmeu memorijske jedinice i upravljake jedinice odreuje da se na tom sport nom putu nalaze instrukcije. Instrukcije, odnosno numeriki kodirane instrukcije tumaa se (de kod i raj u) u upravljakoj jedinici i na temelju njihova dekodiranja upravljaka jedinica] generira sljedove upravljakih signala kojima pobuuje sklopove u aritmetiko-logikaj jedinici, ali i operacije u ostalim funkcijskim jedinicama. Na primjer, ako je dekodirana irv] strukcija takva da odreuje operaciju dohvata podatka iz memorijske jedinice, upravljaka] e jedinica generirati upravljaki signal ITAJ (engl. READ) i uputiti ga memorijskoj jedinicu

S. RIBARI - GRAA RAUNALA

39

Na temelju zadatka upravljake jedinice oekujemo da svi upravljaki signali izviru iz nje. No na slici vidimo da postoje i upravljaki signali usmjereni prema upravljakoj jedinici. Istina, u prvotnom von Neumannovom modelu tako usmjereni signali nisu postojali, ali vrlo brzo se pokazala potreba za njima jer se posebni upravljaki signali, generirani od ulazno-izlazne jedinice, koriste za prekid izvoenja tekueg programa, odnosno izvedbu prekidnog sustava (engl. interrupt system) kojim se ostvaruje jedan od osnovnih naina izmjena podataka izmeu vanjskog svijeta i raunala. Obino se signalne linije kojima se prenose ti upravljaki signali nazivaju prekidne linije, a signali zahtjev za prekid (engl. Interrupt Request - IRQ). Sa slika 2.2 i 2.3 uoavamo da su aritmetiko-logika i upravljaka jedinica prikazani u zajednikom okviru. Razlog tome je to se objedinjenje aritmetiko-logike jedinice s najnunijom memorijom (radnim registrima) i upravljakom jedinicom naziva sredinja (centralna) procesna jedinica (engl. CPU - Central Processing Unit; Central Processor Unit) ili samo procesor. (Opaska: kada procesoru pridruimo preostale funkcijske jedinice, periferne ureaje i odgovarajuu programsku opremu, govorimo o raunalu, odnosno raunarskom sustavu.)

X.

2. ARITMETIKO-LOGIKA JEDINICA
Aritmetiko-logika jedinica sastoji se od sklopova koji obavljaju aritmetike i logike operacije na podacima (ti se podaci nazivaju operandi) te registara za privremeno pohranjivanje operanada i rezultata. Unato dugoj povijesnoj tradiciji uporabe dekadskog brojevnog sustava u raunskim strojevima, i tome da je dekadski brojevni sustav ovjeku najprikladniji, von Neumann, Burks i Goldstine odluili su se za osnovu digitalnog raunala uzeti binarni brojevni sustav. Osim jednostavnije tehnoloke izvedbe sklopova (oito je jednostavnije realizirati sklop s dva diskretna stanja (0 i 1) negoli sklop s deset diskretnih stanja ( 0 , 1 , 2 , 9 ) ) i ekonominijeg prikazivanja brojeva, razlog tome bio je i to to "raunalo nije samo aritmetiki raunski stroj, ve po svojoj prirodi treba biti i logiki. Logiki sustavi su sustavi koji barataju s dva stanja istinito - lano, odnosno 0 ili 1".

2.1.
Pokuajmo ocijeniti ekonominost brojevnog sustava koji e posluiti kao podloga za izgradnju sklopova te nai optimalni brojevni sustav. Drugim rijeima, zanima nas koju bazu brojevnog sustava trebamo izabrati da bi cijena sklopova za prikaz brojeva u zadanom opsegu od 0 do N-1 bila najnia. Potpuno opravdano pretpostavljamo da e cijena sklopova biti proporcionalna broju potrebnih brojevnih mjesta i broju diskretnih stanja koje svaka znamenka na brojevnom mjestu moe poprimiti: c = k n B, pri emu je c cijena (npr. u $), k je pretvorbena konstanta koja omoguuje da se dobije cijena u pretpostavljenim novanim jedinicama, nje broj potrebnih brojevnih mjesta i Bje baza brojevnog sustava, odnosno broj diskretnih stanja koje znamenka moe poprimiti. Pretpostavimo da elimo predoiti brojeve samo u opsegu od 0 do 999 u dekadskom brojevnom sustavu. Cijena sklopova iznosi: c = k x 3 x 1 0 = 30k

40

2. POGLAVLJE: VON NEUMANNOV MODEL RAUNALA

gdje je 3 broj potrebnih mjesta, a 10 broj diskretnih stanja koje svaka znamenka moe zauzeti. Ako se pak odluimo za binarni brojevni sustav (B = 2), tada cijena iznosi: c = k x 10x 2 = 20k pri emu 10 odgovara broju potrebnih brojevnih mjesta za prikaz brojeva u opsegu 0 999, a 2 je broj diskretnih stanja. Na primjer, 999 (dekadno) predoeno je s deset binarnih znamenki: 1111100111. Vidimo da je binarni brojevni sustav ekonominiji - zahtijeva niu cijenu izvedbe sklopova. Koji je brojevni sustav optimalan? Za ishodite e nam posluiti izraz za cijenu c= kx nxB pri emu za pozicijske brojevne sustave vrijedi da je: N - Bn Logaritmirajmo lijevu i desnu stranu izraza (2.2): N - Bn / log dobivamo: log N = n log B n = log N / log B Uvrstimo izraz (2.4) u jednadbu (2.1): c = k (log N / log B) B Traimo vrijednost za B za koju e funkcija c postii svoj minimum: dc - 0 dB = /c log A/ dB slijedi log B - log e = 0, dakle B = e. Rezultat je pomalo udan - baza optimalnog brojevnog sustava bi trebala biti e = 2.71828... (baza prirodnog logaritma ln)! Budui da B treba biti cijeli broj, trebamo izabrati izmeu broja 2 i 3. Zbog lake tehnoloke izvedbe sklopova odluujemo se za bazu B = 2 i smatramo je optimalnom. Aritmetiko-logika jedinica von Neumannovog raunala IAS imala je sklop za zbrajanje (zbrajalo) i sklop za posmak (engl. shifter) kojim se podatak posmie ulijevo ili udesno za I jedno ili vei broj mjesta. Osim toga, imala je i dva 40-bitna registra za privremeno pohra-| njivanje operanada i rezultata: registar AC (koji se naziva akumulator) i registar MQ kop' je upotrebljavao kao "proirenje" akumulatora AC za potrebe pohrane rezultata operacija! mnoenja i dijeljenja. Naime, te operacije daju rezultat dvostruke duljine operanada (801 bitova) pa se 40 znaajnijih bitova rezultata smjeta u AC, a 40 manje znaajnih bitova u MQ. Budui da je aritmetiko-logika jedinica raunala IAS imala samo zbrajalo i sklop za l9B-BWB)\age log2 B (2.5) (2.3) (2.4)
(2.1)

(2.2)

S. RIBARI - GRAA RAUNALA

41

posmak, operacija oduzimanja izvravala se zbrajanjem umanjenika (minuenda) i potpunog komplementa (engl. two's complement) odbitnika (suptrahenda). Mnoenje i dijeljenje nije bilo izvedeno sklopovljem, ve se izvravalo pod programskim upravljanjem izvoenjem uzastopnih operacija zbrajanja, odnosno oduzimanja i posmaka (podsjetimo se dualizma sklopovske i programske opreme; poglavlje 1.) Operandi su u IAS raunalu imali duljinu od 40 bita: 39 bitova bilo je namijenjeno za znamenke, a jedan bit za predznak. Zato je izabrana duljina operanda od 40 bita? Pozornost von Neumanna i ostalih autora bila je usmjerena na oblikovanje raunala koje e rjeavati numerike zadatke (npr. numeriko rjeavanje parcijalnih diferencijalnih jednadbi). Na temelju analize tadanjih matematikih problema (1946.) i stvarnih tehnolokih ogranienja doli su do potrebnog kapaciteta radne memorije i duljine rijei, odnosno duljine operanda: 4096 rijei duljine 40 bita. Naime, duljina od 40 bita omoguuje tonost raunanja na dvanaest decimala (2~40 je priblino 0.9 10"12). Brojevi su bili prikazani u obliku predznanih razlomljenih brojeva s vrstim pominim zarezom (engl. fixed-point) u rasponu od +0.999999999998 do -0.999999999998. Brojevi koji su se nalazili izvan tog raspona morali su biti skalirani, odnosno normalizirani.

'2.2.3. UPRAVLJAKA JEDINICA


Upravljaka jedinica na temelju dekodiranja strojne instrukcije generira sve potrebne upravljake signale za vremensko voenje i upravljanje ostalim jedinicama raunala. Ti se signali dovode u tzv. upravljake toke i njima se aktiviraju sklopovi u pojedinim funkcijskim jedinicama. Uz to, upravljaka jedinica zaduena je za automatsko izvravanje programa - upravljanje slijedom izvravanja instrukcija kojima je predoen algoritam obrade. Svaki je korak algoritma predstavljen jednom strojnom instrukcijom ili slijedom strojnih instrukcija. One odreuju elementarne operacije koje sklopovlje moe izvesti. Slika 2.4 prikazuje format strojne instrukcije IAS raunala. Pod formatom strojne instrukcije razumijeva se oblik (organizacija) strojne instrukcije s oznaenim poljima (nizovima binarnih znamenki 0 i 1) kojima je naznaena funkcija. bO operacijski kod
Si. 2.4 Format strojne instrukcije IAS raunala

b7 b8 adresno polje

b19

Strojna instrukcija je duljine 20 bitova (bO - bi9) i organizirana je u dva polja: osam bitova (bO - b7) predstavljaju polje operacijskog koda (op) (engl. opcode - operation code). Ono odreuje operaciju koja e se izvriti. Svakoj strojnoj instrukciji iz skupa instrukcija jednoznano je pridruen 8-bitni operacijski kod. To znai da IAS moe imati skup strojnih instrukcija koji se sastoji od maksimalno 256 instrukcija (28 = 256). Drugo, 12-bitno polje (b8 - b19) je adresno polje koje sadrava adresu memorijske lokacije na kojoj se nalazi podatak (operand). Svakoj memorijskoj lokaciji u memorijskoj jedinici jednoznano je pridruena adresa to znai da se binarnim slijedom iz adresnog polja moe izravno adresirati 4096 memorijskih lokacija (212 = 4096). 12-bitna duljina adresnog polja ujedno je i odreivala ukupni kapacitet memorije: 4096 40-bitnih rijei. Strojne instrukcije koje imaju samo jedno adresno polje nazivaju se jednoadresne strojne instrukcije.

42

2. POGLAVLJE: VON NEUMANNOV MODEL RAUNALA

Vidimo da je duljina memorijske rijei (40 bita) prilagoena duljini rijei podataka (40 bita), dok je duljina strojne instrukcije 20 bitova. To je omoguilo da se dvije strojne instrukcije smjetaju u jednu memorijsku lokaciju: lijeva strojna instrukcija i desna strojna instrukcija (slika 2.5).
bO operacijski kod b7 b8 adresno polje lijeva instrukcija bi 9 b20 b27 b28 adresno polje desna instrukcija b39 operacijski kod

SI. 2.5 Lijeva i desna strojna instrukcija IAS raunala

Program se izvrava tako da upravljaka jedinca pribavlja (engl. fetch) instrukcije u kodiranom obliku iz memorijske jedinice (u IAS raunalu istodobno se pribavljaju dvije strojne instrukcije: lijeva i desna), dekodira ih i u skladu s njihovom funkcijom generira upravljake signale na temelju kojih funkcijske jedinice (aritmetiko-logika jedinica, memorijska jedinica, ulazno-izlazna jedinica) izvode potrebne operacije. Podsjetimo se da je algoritam obrade u obliku slijeda strojnih instrukcija pohranjen u memorijskoj jedinici u kojoj su pohranjeni i podaci. Raunalo s takvom znaajkom naziva se raunalo s pohranjivanjem programa. Jedno se pitanje samo od sebe namee: ako su podaci i strojne instrukcije predoene binarnim kodovima i ako su pohranjeni u istoj memorijskoj jedinici, kako se zna to je podatak, a to instrukcija i razlikuju li se oni na temelju slijeda bitova? Odgovor je pomalo neoekivan: na temelju slijeda bitova nije mogue razlikovati podatak od strojne instrukcije. Za podrobnije objanjenje ovog odgovora molim itatelja za malo strpljenja nai emo ga ve u ovom poglavlju. Za IAS raunalo kaemo da je akumulatorsko orijentiran stroj zato to sredinju ulogu u izvoenju aritmetikih operacija ima spremnik - registar: akumulator AC. Razmotrimo kako e se izvoditi aritmetike operacije koje zahtijevaju dva operanda, npr. C = A + B, gdje su A i B operandi. Openito, moemo napisati C = f(A, B). Ako ovaj izraz promatramo u svjetlu strojnih instrukcija, onda bismo mogli rei da funkciji f odgovara polje operacijskog koda, a da A i B predstavljaju adrese izvorita operanada, dok je C adresa odredita rezultata. U skladu s time, mogli bismo oekivati da strojne instrukcije budu troadresne, odnosno da imaju sljedei format: op kod, adresno poljel, adresno polje 2, adresno polje 3, pri emu adresna polja 1 i 2 predstavljaju adrese izvorita, a adresno polje 3 adresu odredita. No strojna instrukcija IAS raunala je jednoadresna. Kako se jednoadresnom instrukcijom moe podrati operacija koja zahtijeva tri adrese? To je rijeeno na sljedei nain. U akumulatoru AC nalazi se jedan od operanada (AC je izvorite jednog operanda), drugi se operand nalazi u memorijskoj jedinici i on je odreen 12-bitnom adresom iz adresnog polja strojne instrukcije. Odredite rezultata je akumulator AC. Dakle, umjesto C = f(A, B) moemo napisati A = f(A, M), gdje A odgovara akumulatoru AC, a M odgovara adresi memorijske lokacije. Jasno, nakon obavljene specificirane operacije operand u AC je"izgubljen"jer se u akumulatoru AC sada nalazi rezultat. Raunalo IAS imalo je pet osnovnih tipova strojnih instrukcija koji su mogu razvrstati na: 1. instrukcije za prijenos (premjetanje) podataka (engl. data transfer), 2. instrukcije za obradu podataka (engl. dataprocessing) 3. ulazno-izlazne instrukcije, 4. instrukcije za upravljanje izvravanjem programa (engl. program controf), 5. instrukcije s djelominom zamjenom (engl. partialsubstitution).

S. RIBARI - GRAA RAUNALA

43

Prva etiri tipa instrukcija karakteristina su i za dananja raunala. Instrukcije s djelominom zamjenom bile su strojne instrukcije koje su mijenjale samo adresno polje strojnih instrukcija. Pomou njih su programi mogli preoblikovati svoje strojne instrukcije tijekom izvoenja i onda se ista instrukcija mogla primjenjivati na drugom skupu podataka. Ovakva se mogunost, da program mijenja sam sebe, vrlo brzo pokazala kao neprikladna jer oteava ispitivanje ispravnosti rada programa i otkrivanja pogreaka u programu te se poetkom ezdesetih godina prolog stoljea naputa uporaba instrukcija za modifikacije adresnog dijela strojnih instrukcija. Tablica 2.2. prikazuje neke od osnovnih tipova strojnih instrukcija IAS raunala. kcije Instrukcija AC := MQ AC := M(X) M(X) := AC MQ := M(X) AC :=-M(X) AC:=|M(X)| AC := - |M(X)| AC := AC + M(X) AC = AC + |M(X)| AC = AC - M(X) AC = AC - |M(X)| AC.MQ := MQxM(X) MQ.AC := AC / M(X) AC := AC x 2 AC := AC/2 go to M(X, 0:19) go to M(X, 20:39) if AC > 0 then go to M(X, 0:19) ^ .sijanje Opis Prenesi sadraj registra MQ u registar AC Prenesi sadraj memorijske lokacije X u AC Prenesi sadraj AC u memorijsku lokaciju X Prenesi M(X) u MQ Prenesi - M(X) u AC Prenesi apsolutnu vrijednost sadraja memorijske lokacije X u AC Prenesi minus |M(X)| u AC Zbroji sadraje memorijske lokacije X i AC te rezultat pohrani u AC Zbroji apsolutnu vrijednost M(X) i sadraj AC Oduzmi M(X) od AC Oduzmi |M(X)| od AC Pomnoi MQ s M(X) i pohrani produkt u obliku rijei dvostruke duljine u AC i MQ Podijeli AC s M(X) i kvocijent pohrani u AC a ostatak u MQ Pomnoi AC s dva (posmak ulijevo za jedno mjesto) Podijeli AC s dva (posmak udesno za jedno mjesto)

Uzmi sljedeu instrukciju iz lijeve polovine rijei M(X) Uzmi sljedeu instrukciju iz desne polovine rijei M(X) Ako AC sadrava nenegativni broj uzmi sljedeu instrukciju iz lijeve polovine M(X) if AC > 0 then go to M(X, 20:39) Ako AC sadrava nenegativni broj, uzmi sljedeu instrukciju iz desne polovine M(X) Zamijeni adresno polje lijeve instrukcije u M(X) s 12 M(X, 8:19) := AC(28:39) krajnje desnih bitova AC Zamijeni adresno polje desne instrukcije u M(X) s 12 M(X, 28:39) :=AC (28:39) krajnje desnih bitova AC

2-2. Neki od osnovnih tipova strojnih instrukcija IAS raunala

44

2. POGLAVLJE: VON NEUMANNOV MODEL RAUNALA

Slika 2.6 prikazuje organizaciju sredinje procesne jedinice, tj. procesora raunala IAS. Dvije se strojne instrukcije smjetene u jednoj 40-bitnoj rijei, koja je pribavljena iz memorijske jedinice, privremeno smjetaju u memorijski registar podataka MDR. Iz MDR registra desna se strojna instrukcija smjeta u instrukcijski registar IR. Lijeva se strojna instrukcija pohranjuje u privremeni registar CR. Operacijski kod (8 bita) desne instrukcije prosljeuje se sklopu za dekodiranje (izvorno se taj sklop naziva funkcijska tablica), a preostalih se 12 bitova (adresno polje) prenosi u memorijski adresni registar MAR. MAR sadrava adresu operanda koji e se dohvatiti iz memorijske jedinice i sudjelovati u zadanoj operaciji. Nakon to se desna strojna instrukcija izvede, iz privremenog se registra CR premjeta lijeva instrukcija u instrukcijski registar IR i izvodi se na prethodno opisan nain. Sadraj 12-bitnog registara PC povean za jedan pokazuje na sljedeu memorijsku rije koja sadrava sljedee dvije strojne instrukcije programa. Ako je bila dekodirana strojna instrukcija grananja ili skoka (sljedea strojna instrukcija nije ona koja je uzastopna u programu), onda se njezino adresno polje, umjesto u registar MAR, premjeta u programsko brojilo PC. Na taj je nain pripremljena adresa memorijske rijei koja sadrava dvije instrukcije koje e se sljedee pribaviti. r -,
. aritmetiko-logika jedinica ^ (40)
*

. 40 /
/

akumulator AC

registar MQ y ik 40 / / '40

iV
40 / /
/

(40)

'40

aritmetiki sklopovi

40 /

' 40

prema memoriji i ulazno-izlaznim jedinicama

SI. 2.6 Organizacija sredinje procesne jedinice raunala IAS

S. RIBARI - GRAA RAUNALA

45

Zapamtimo; programsko brojilo PC sadrava adresu sijedee strojne instrukcije (odnosno, u raunalu IA5 adresu memorijske lokacije koja sadrava instrukcijski par), a instrukcijski registar IR sadrava instrukciju ije je izvoenje upravo u tijeku. U raunalu IAS programsko se brojilo nazivalo upravljako brojilo CC (Control Counter), a instrukcijski se registar nazivao registar funkcijske tablice FR (Function Table Register). Izvoenje strojne instrukcije odvija se u dvije faze (obje se faze nazivaju i instrukcijski ciklus): PRIBAVI (engl. fetch) i IZVRI (engl. execute). Tijekom faze PRIBAVI upravljaka jedinica pribavlja strojnu instrukciju iz memorijske jedinice te se dogaa sljedee: 1. korak: M(PC) IR; iz memorije se pribavlja (ita se) strojna instrukcija i smjeta u instrukcijski registar IR (Opaska: u raunalu IAS pribavljaju se dvije strojne instrukcije smjetene u 40-bitnoj rijei.); adresa strojne instrukcije nalazi se u programskom brojilu PC; 2. korak: PC + 1 PC; sadraj programskog brojila PC poveava se za jedan i time odreuje strojnu instrukciju koja neposredno slijedi za instrukcijom koja je upravo pribavljena; u skladu s opaskom iz 1. koraka u raunalu IAS odreuje se par strojnih instrukcija iz slijeda; 3. korak: dekodira se operacijski kod strojne instrukcije koja je bila pribavljena u 1. koraku. Treim se korakom zavrava faza PRIBAVI. Upravljaka jedinica prelazi u fazu IZVRI. Za vrijeme faze IZVRI, upravljaka jedinica, ovisno o ishodu dekodiranja operacijskog koda, generira sljedove upravljakih signala kojima pobuuje operacije izravno podrane sklopovljem, na primjer, prijenos podataka iz memorijske jedinice, prijenos podataka izmeu registra i aritmetiko-logikih sklopova, aktiviranje aritmetiko-logikih sklopova, prijenos podataka memorijskoj jedinici, promjena vrijednosti programskog brojila (ako je rije o strojnoj instrukciji grananja ili skoka) i si. Na primjer, faza IZVRI, za aritmetiku operaciju zbroji (add) moe biti predoena sljedeim koracima: 4. korak: M(MAR) MDR; dohvati podatak (operand) iz memorijske jedinice i smjesti ga u memorijski registar podataka MDR; adresa memorijske lokacije na kojoj se nalazi operand odreena je sadrajem memorijskog adresnog registra MAR; 5. korak: AC + MDR AC; izvedi operaciju zbrajanja; rezultat operacije smjeta se u akumulator AC. Izvoenjem posljednjeg koraka u fazi IZVRI, upravljaka se jedinica vraa na 1. korak faze PRIBAVI i nastavlja se faza PRIBAVI. Ritam izmjene PRIBAVI - IZVRI nastavlja se sve dok se ne izvede strojna instrukcija za zaustavljanje rada (HaIt). Slika 2.7 prikazuje dijagram stanja instrukcijskog ciklusa za von Neumannov model raunala. Napomenimo da se u suvremenim procesorima promjene stanja PRIBAVI - IZVRI dogaaju i nekoliko stotina milijuna puta u sekundi. (Opaska: u literaturi (L. Budin i sur.) koriste se i nazivi "dohvat instrukcije"za fazu PRIBAVI te "obavljanje operacije"za fazu IZVRI.) U memorijskoj su jedinici pohranjeni podaci i strojne instrukcije u istom obliku - kao nizovi 0 i 1. Kako upravljaka jedinica razlikuje strojnu instrukciju i podatak? Na temelju binarnog niza nije ih mogue razlikovati. Strojna instrukcija i podatak mogu se razlikovati jedino na temelju stanja upravljake jedinice. Ako se upravljaka jedinica nalazi u fazi PRIBAVI, tada se rije pribavljena iz memorijske jedinice smatra strojnom instrukcijom (ili parom strojnih

46

2. POGLAVLJE: VON NEUMANNOV MODEL RAUNALA

instrukcija u raunalu IAS) i smjeta se u instrukcijski registar IR, odnosno u sluaju raunala IAS - desna strojna instrukcija smjeta se u IR, a lijeva u registar CR. Ako se, meutim, upravljaka jedinica nalazi u fazi IZVRI, rije koja se dohvaa iz memorijske jedinice tumai se kao podatak (operand). Jednako tako, ako se tijekom faze IZVRI rije pohranjuje u memorijsku jedinicu, onda je to podatak ili rezultat neke aritmetike ili logike operacije.

SI. 2.7 Dijagram stanja instrukcijskog ciklusa za von Neumannov model raunala

2.2.4. MEMORIJSKA JEDINICA


Memorijska jedinica IAS raunala bila je, za dananje stanje razvoja tehnologije, vrlo skromnog kapaciteta: 4096 40-bitnih rijei, dakle 4 K 40-bitnih rijei (1 K = 210). No izvedba 163840 bistabila, tj. 4096 40, bila je zbog tadanjih tehnolokih ogranienja ocijenjena kao neizvediva. Priklonili su se rjeenju u kojem je memorijska jedinica bila realizirana uporabom elektronskih cijevi slinih katodnoj cijevi koje su bile razvijene u tvrtki RCA, Princeton. Te su se elektronske cijevi nazivale Selectron i za izvedbu memorijske jedinice uporabljeno je 40 takvih Selectrona - svaki od njih bio je kapaciteta 4096 bita. Svaka je elektronska cijev pohranjivala bitove u obliku tamnih (0) i svijetlih polja (1), a zaslon cijevi osvjeavao se elektronskim snopom. Elektronski se snop rabio i za itanje i upisivanje podataka u Selectron, tako da je to bila memorija s izravnim pristupom do eljenog poloaja (engl. random access memory). Naime, za memorije s izravnim pristupom vrijedi da je vrijeme pristupa memorijskoj lokaciji neovisno o poloaju te lokaciji u memorijskoj jedinici. Brzina memorijske jedinice tj. vrijeme pristupa (engl. memory access time) bilo je 50 ^is. Memorijska jedinica nema sposobnosti obrade podatka, ve moe izvoditi dvije vrlo vane operacije - pohranu podatka i dohvaanje prethodno pohranjenog podatka. Dohvaanje podatka opisano je operacijom itanja (engl. Read), a pohrana podatka operacijom pisanja (engl. Write). Rije iz memorije dohvaa se tako da se adresa memorijske lokacije iji se sadraj eli dohvatiti (proitati) smjeta u memorijski adresni registar MAR i time adresa postaje raspoloiva na adresnoj sabirnici, a zatim upravljaka jedinica generira upravljaki signal itaj koji se alje memorijskoj jedinici. Izabrana se rije, nakon isteka vremena pristupa memoriji, npr. 50 ^is (za raunalo IAS), prenosi preko puta podataka (sabirnice podataka) procesoru i smjeta u memorijski registar podataka MDR. Napomenimo da operacija itanja nije destruktivna operacija, odnosno ona ne "rui" ili ne mijenja sadraj proitane memorijske lokacije.

S. RIBARI - GRAA RAUNALA

47

Operacija pisanja izvodi se na sljedei nain: podatak koji se eli pohraniti u memorijskoj jedinici smjeta se u memorijski registar podataka MDR i time postaje raspoloiv na putu podataka (sabirnici podataka) izmeu procesora i memorije, adresa memorijske lokacije na kojoj se eli pohraniti podatak postavlja se u memorijski adresni registar MAR i time adresa postaje raspoloiva na adresnoj sabirnici. Upravljaka jedinica generira upravljaki signal Pii i alje ga memorijskoj jedinici. Nakon isteka vremena pristupa memoriji, podatak biva pohranjen na izabranoj memorijskoj lokaciji. Operacija pisanja je, uvjetno reeno, destruktivna u smislu daje novi podatak koji se pohranjuje na eljenu memorijsku lokaciju, "prebrisao" stari sadraj na toj memorijskoj lokaciji. Von Neumann, Burks i Goldstine, svjesni da postoje mnogi vani razredi problema koji zahtijevaju vei kapacitet memorijske jedinice od 4096 rijei, razmatraju hijerarhijsku organizaciju memorije. Ona se sastoji od radne (primarne ili glavne) memorije, sekundarne memorije i tree razine - tzv. neaktivne memorije (engl. dead store). Radna je memorija bila u IAS raunalu ostvarena Selectronima i izravno je podravala rad procesora. Ona je ujedno bila i najbra memorija u predloenoj hijerarhijskoj organizaciji. Sekundarnom memorijom, koja je veeg kapaciteta od radne memorije, jeftinija (cijena po bitu je manja), ali sporija, upravlja raunalo i ona predstavlja njegov sastavni dio. Sekundarna je memorija kao medij za pohranu podataka koristila magnetsku icu ili svjetlosno osjetljiv film. Trea razina memorije jest neaktivna memorija i ona nije sastavni dio raunala. Ona se po potrebi ukljuuje u raunalo. Od memorije u drugoj razini razlikuje se samo po raspoloivosti (zahtijeva runi zahvat operatera da bi se ukljuila u raunalo).

2.2.5. ULAZNO-IZLAZNA JEDINICA


Raunalo IAS razmjenjivalo je podatke s okolinom, odnosno operaterom. Za to su bile predviene ove jedinice: grafika izlazna jedinica i teleprinter s pomonom magnetskom icom. Kao grafika izlazna jedinica posluile su elektronske cijevi Seiectron koje su imale svjetla polja na pozicijama na kojima su bile pohranjene jedinice (1) i tamna polja koja su odgovarala nulama (0). Teleprinter s pomonom magnetskom icom upotrebljavao se kao ulazno-izlazna jedinica. Oprema teleprintera bila je preinaena tako da je omoguavala i upis podataka s buene papirne vrpce na magnetsku icu, i obratno. Strojna instrukcija INPUT(X, N) specificirala je prijenos N podataka od ulazne jedinice procesoru i onda pohranu na N slijednih memorijskih lokacija, zapoevi s memorijskom lokacijom s adresom X. Slino, strojna instrukcija OUT(X, N) odreivala je prijenos N slijednih podataka iz memorijske jedinice, zapoevi s memorijskom lokacijom s adresom X, prema izlaznoj jedinici. I u ovom je sluaju na putu podataka bio i procesor. Raunalo IAS bilo je jednokorisniko raunalo (engl. single-user oriented) - doputalo je istodobni rad samo jednom korisniku i zato se izmjena podataka s vanjskim svijetom obavljala pod izravnim upravljanjem procesora. Autori raunala IAS razmatraju mogunost istodobnog rada ulazno-izlazne jedinice i procesora, meutim, zbog tehnolokih ogranienja odustaju od takve izvedbe.

48

2. POGLAVLJE: VON NEUMANNOV MODEL RAUNALA

2.3. JEDNOSTAVNO MIKRORAUNALO VON NEUMANNOV MODEL RAUNALA


U ovom smo poglavlju veliku pozornost posvetili von Neumannovom raunskom modelu i IAS raunalu. Osnovni razlog za to je to je taj model, tijekom skoro pola stoljea, odredio osnovne zamisli u oblikovanju raunala i snano utjecao na arhitektonske znaajke suvremenih raunala. Zamisli kao to je raunalo ope namjene, svoenje podataka i instrukcija na numeriki (binarni) kod, njihovo pohranjivanje u istoj memorijskoj jedinici, etiri osnovne funkcijske jedinice (aritmetiko-logiko jedinica, upravljaka jedinica, memorijska jedinica, ulazno-izlazna jedinica) i etiri osnovna razreda strojnih instrukcija (instrukcije za prijenos (premjetanje) podataka, instrukcije za obradu podataka, ulazno-izlazne instrukcije, instrukcije za upravljanje izvravanjem programa) odreuju znaajke koje nalazimo u suvremenim raunalima. Naravno, za vie od pet desetljea von Neumannov model raunala doivio je brojne promjene i poboljanja koja su se snano odrazila na njihovoj performansi, pouzdanosti, raspoloivosti, prilagodljivosti i dramatinom padu cijene raunala. Veliku je zaslugu za sve to imao strahoviti tehnoloki napredak, posebno mikroelektronike, odnosno tehnologije visokog stupnja integracije. Da bismo potkrijepili tvrdnju o snanom utjecaju von Neumannovog modela na generacije raunala koje su mu slijedile, razmotrimo mikroraunalo na slici 2.8. Taj jednostavan sustav temeljenje na 8-bitnom mikroprocesoru MC 6800 (procesoru ostvarenom u tehnologiji visokog stupnja integracije LSI - Large Scale Integration). Sve su ostale njegove funkcijske jedinice takoer realizirane u tehnologiji LSI tako da je tiskana ploica na kojoj se nalazi cijeli sustav veliine dlana. Je li raunalo sa slike 2.8. takvo da se zaista temelji na von Neumannovom modelu? Pokuajmo identificirati njegove osnovne funkcijske jedinice. Blok (slika 2.8) s oznakom MPU to je kratica Microprocessor Unit oito predstavlja procesor realiziran u LSI tehnologiji (ip) koji objedinjuje dvije funkcijske jedinice - upravljaku jedinicu i aritmetiko-logiku jedinicu. Blok s oznakom ROM (Read Only Memory) predstavlja memorijski ip koji zbog svoje izvedbe trajno pohranjuje sadraj (on ostaje sauvan i ne brie se nakon prestanka napajanja). Osim toga, sadraj ROM-a ne moe se mijenjati strojnim instrukcijama tijekom izvoenja programa. Naravno, sadraj ROM-a moe se strojnim instrukcijama itati i zato takvu vrstu memorije nazivamo ispisna memorija. Zbog takvih se njezinih znaajki u ispisnoj memoriji pohranjuju podaci koji se ne mijenjaju te stalni programi (npr. programi koji ine jezgru operacijskog sustava). ip s oznakom RAM (Random Access Memory) predstavlja memorijsku jedinicu, odnosno memoriju s izravnim pristupom. Ona tijekom izvoenja programa doputa i upisivanje i itanje podataka. Prestankom napajanja njezin se sadraj brie. Zakljuimo, ipovi ROM i RAM predstavljaju treu funkcijsku jedinicu - memorijsku jedinicu. ipovi oznaeni s PIA (Peripheral Interface Adapter) i ACIA (Asynchronous Communication Interface Adapter), gdje su PIA i ACIA komercijalni nazivi sklopova, predstavljaju ulaznoizlazne jedinice mikroraunala. PIA omoguuje paralelni prijenos podataka izmeu mikroraunala i perifernih ureaja (i/ili vanjskog svijeta). Preko linija PA0-PA7 i PB0-PB7 (slika 2.8; oznaene samo s PA i PB) prenose se 8-bitni podaci (2 puta po 8 bita). Podsjetimo se, paralelni je prijenos podataka takav prijenos pri kojem je svakom bitu podatka dodijeljena jedna linija (vodi) za prijenos i cijeli se podatak prenosi istodobno. Smjer prijenosa podataka preko linija PAO - PA7 i PBO - PB7 odreuje se tijekom incijalizacije PIA koja se obavlja programom. Kaemo da je PIA prog ram irijiv sklop jer mu se poetna konfiguracija i nain rada odreuje programom.

S. RIBARI - GRAA RAUNALA

49

AB0-AB15

DB0-DB7

SI. 2.8 Jednostavno mikroraunalo temeljeno na mikroprocesoru M C 6800 (tvrtka Motorola)

50

2. POGLAVLJE: VON NEUMANNOV MODEL RAUNALA

PIA ima jo dva para linija kojima je povezana s vanjskim svijetom: CA1 i CA2, te CB1 i CB2. Te se linije nazivaju linije za rukovanje (engl. handshaking) i njima se ostvaruje izmjena upravljakih signala izmeu raunala i vanjskog svijeta. Ti signali slue za ostvarivanje jednostavnih protokola koji se koriste u izmjeni podataka i omoguuju pouzdani prijenos podataka. ip ACIA je ulazno-izlazna jedinica koja podrava serijski prijenos podataka izmeu mikroraunala i vanjskog svijeta. Serijski prijenos podataka je takav da se jednom signalnom linijom prijenosi bit po bit podatka (kaemo u obliku "vlaka impulsa"). Linija oznaena s Rx (Receive) (slika 2.8) je prijemna signalna linija kojom se podaci iz vanjskog svijeta prenose u raunalo. Linija Tx (Transmit) (slika 2.8) jest predajna linija kojom se podaci alju u vanjski svijet ACIA je takoer programirljivsklop i u fazi inicijalizacije programom se odreuju detalji naina njegova rada. Na slici 2.8. uoavate da ACIA ima jo i druge signalne linije (CTS, DCD, RTS,...) - one su namijenjene posebnom sklopu modemu koji omoguuje prijenos serijskih podataka telefonskim linijama (paricama). Opisali smo glavne sastavnice mikroraunala sa slike 2.8: MPU, ROM, RAM PIA i ACIA. Te su graevne sastavnice osnovne funkcijske jedinice koje odgovaraju von Neumannovom modelu raunala, samo to su one realizirane u LSI tehnologiji. Na slici vidimo i blok oznaen s dock - to je ip koji ima funkciju generatora signala vremenskog voenja odnosno takta. Naime, raunalo je, poput Turingovog stroja, diskretni vremenski stroj u kojem je trenutak svake promjene odreen signalom vremenskog voenja ili"clockom"- kako mi to u argonu nazivamo. Signal vremenskog voenja ("clock") je periodiki signal odreene frekvencije ija se velika stabilnost frekvencije postie uporabom kristalnog oscilatora. Zapravo, ovo mikroraunalo rabi dva signala vremenskog voenja (kaemo da koristi "dvofazni signal" vremenskog voenja): c|)l i cj>2 (slika 2.8). Za mikroraunalo sa slike 2.8. frekvencija oba signala vremenskog voenja jest 1 MHz; (M = 106). Budui da signal vremenskog voenja odreuje vremenske trenutke u kojima se mijenja stanje u sklopovlju, jasno je da frekvencija signala vremenskog voenja utjee na brzinu izvoenja programa, odnosno na performansu raunala (dananja osobna raunala imaju frekvenciju 3 i vie GHz (G = 109)). (Opaska: kada ne govorimo o kapacitetu memorije obino za K, M ili G podrazumijevamo sljedee: K = 103, M = 106 i G = 109.) Sve su aktivnosti mikroraunala sinkronizirane signalom vremenskog voenja - signal se dovodi procesoru MPU (oba signala: c > j 1 i <|>2), ali i ROM-u (<|>2), RAM-u (<(>2), PlA-i ($2) i AClA-i (<|>2) (slika 2.8). Blok oznaen na slici 2.8 sa start up predstavlja relativno jednostavan sklop za poetno uputanje u rad mikroraunala, odnosno za vraanje mikroraunala u poetno stanje (u argonu kaemo "resetiranje"). Sklop ima obino gumb oznaen s RESET. Korisnik pritiskom na taj gumb, preko sklopa start up, aktivira ulaznu upravljaku liniju oznaenu s kojom se raunalo postavlja u poetno stanje. Aktiviranje RESET {RESET 0) znai za procesor iznimku, odnosno prekid vrlo visoke razine. Slika 2.8 moe nam posluiti i za tumaenje toga kako se fiziki u raunalu ostvaruje tok podataka, instrukcijski tok i tok upravljakih signala, odnosno kako se ostvaruje komunikacija meu funkcijskim jedinicama. Na slici vidimo tri komunikacijska puta kojima su funkcijske jedinice povezane: put podataka (engl. data bus), put upravljakih signala (engl. control bus) i adresni put (engl. address bus). Svaki od tih putova, koji se naziva sabirnica (engl. bus), fiziki predstavlja skup linija (vodia) kojim se prenose signali (koji svojim razinama odgovaraju logikoj "0" i logikoj "1"). S obzirom na namjenu sabirnice, govorimo o sabirnici podataka (ili podatkovnoj sabirnici), upravljakoj sabirnici i adresnoj sabirnici.

S. RIBARI - GRAA RAUNALA

51

Tok podataka i instrukcijski tok ostvareni su pomou sabirnice podataka. Ona je dvosmjerna jer doputa prijenos od procesora prema drugim funkcijskim jedinicama (memorijskoj i ulazno-izlaznim jedinicama), ali i prijenos od navedenih funkcijskih jedinica prema procesoru. Odmah ovdje navedimo jedan vaan detalj: referentna toka u analizi ponaanja raunalnog sustava i odreivanju smjerova prijenosa jest procesor, koji ima ulogu vodeeg modula (engl. master module) jer on upravlja cijelim raunarskim sustavom. Ostale funkcijske jedinice imaju ulogu prateeg modula (engl. slave) i one "posluno" obavljaju zadatke koje im upuuje vodei modul - procesor. Budui daje procesor odreen kao referentna toka, onda se linije usmjerene od procesora prema ostalim jedinicama nazivaju izlaznim, a one u suprotnom smjeru ulaznim linijama. Analogno tome, ako kaemo da se izvodi operacija itanja (engl. read), to znai da vodei modul, tj. procesor "ita" podatak, odnosno pristupa nekoj memorijskoj lokaciji ili nekom registru u ulazno-izlaznim jedinicama i dohvaa taj podatak (podatak predstavlja ulazni podatak za procesor). Sabirnica se podataka za mikroraunalo na slici 2.8. sastoji od osam linija (ili vodia) oznaenih s DBO, DB1,..., DB7. Linija DBO slui za prijenos najmanje znaajnog bita podatka, dok e linija DB7 prenositi najznaajniji bit podatka (prijenos je paralelan). Za sabirnicu podataka DBO - DB7 kaemo da je 8-bitna, tj. da je "irine" od osam bita. Kako se njome ostvaruje instrukcijski tok i tok podataka? Kad je upravljaka jedinica u stanju PRIBAVI, iz memorijske se jedinice pribavlja podatak koji se tumai kao strojna instrukcija, odnosno sastavnica strojne instrukcije (ako se ona sastoji od vie 8-bitnih rijei). Podatak - strojna instrukcija - preko sabirnice podataka prenosi se procesoru. Tijekom faze IZVRI podaci koji se dohvaaju iz memorijske jedinice ili se alju memorijskoj jedinici, preko sabirnice podataka predstavljaju elemente toka podataka. Zakljuimo, dvosmjerna sabirnica podataka predstavlja komunikacijski put kojim se ostvaruje instrukcijski tok i tok podataka. Upravljaki signali koje generira upravljaka jedinica alju se ostalim funkcijskim jedinicama pomou upravljake sabirnice. Ona se sastoji od pojedinanih linija (vodia)_kojima se prenose upravljaki signali. Na primjer, izlazna upravljaka linija oznaena kao /?/1/1/prenosi upravljaki signal "itaj" (/?/W = 1) ili "Pii" (/?/ W = 0) memorijskoj jedinici, odnosno ipu RAM i time odreuje operaciju koju treba obaviti memorijska jedinica. Paljivi e itatelj primijetiti da se taj signal dovodi i do ulazno-izlaznih jedinica (PIA i ACIA; slika 2.8), a o razlozima za to bit e rijei u poglavlju o ulazno-izlaznim jedinicama. Paljivi e itatelj takoer primijetiti da se upravljaki signal RAA/ ne dovodi memorijskom modulu ROM - razlog tome je to je ROM samo ispisna memorija tako da se ve samim izborom tog modula odreuje operacija itanja. Skup upravljakih linija ini upravljaku sabirnicu. U sluaju mikroraunala sa slike 2.8 sabirnice ine linije oznaene s R/\N, (j>2, VMA, RESET i IRQ. Upravljaka linija IRQ je ulazna linija i njome upravljaju ulazno-izlazne jedinice (na slici 2.8 vidi se da IRQ "izvire" i iz PIA i ACIA). Ta se upravljaka linija naziva prekidna linija, a signal koji ona prenosi je zahtjev za prekid. Aktivno stanje signala IRQ (IRQ = 0) znai procesoru da je neka ulazno-izlazna jedinica zahtijevala prekid izvoenja tekueg programa. Na slici 2.8 vidimo jo jednu sabirnicu - adresnu sabirnicu koja je irine esnaest bita ABO AB15. Ona je iznimno vana jer pomou nje procesor odreuje kojoj lokaciji u memorijskoj jedinici ili kojem registru u ulazno-izlaznoj jedinici eli pristupiti. Von Neumanov model raunala koristi adrese koje su jednoznano dodijeljene svakoj sastavnici kojoj procesor

52

2. POGLAVLJE: VON NEUMANNOV MODEL RAUNALA

moe pristupiti: svaka memorijska lokacija ima jednoznano pridruenu adresu, svaki registar u bilo kojoj funkcijskoj jedinici takoer ima jednoznano pridruenu adresu. Na temelj u jed noznane adrese procesor izabire sastavnicu s kojom eli komunicirati. Vano je napomenuti da se naelo jednoznanostiadrese u raunalnom sustavu mora strogo potovati - ne smiju u raunalu postojati npr. dvije memorijske lokacije s istom adresom, dva registra ili dvije funkcijske jedinice s istom adresom. Ako se to naelo ne potuje, raunalo nee ispravno funkcionirati, tovie moe imati za posljedicu kvar sklopovske sastavnice (npr. posebnih pogonskih sklopova; engl. driver, koji su suelni sklopovi na sabirnici raunala). Analogija, s potovanjem naela jednoznanosti adrese, jest dobro ureen grad u kojem ne smiju postojati dvije ili vei broj ulica s istim imenom ili, pak, vie zgrada s jednakim kunim brojem u istoj ulici. Naravno, kad se ta jednoznanost ne bi potovala, pisma i druge potanske poiljke bilo bi nemogue uruiti pravom primatelju. Slino je i s "porukama" koje alje procesor. Adresna sabirnica je jednosmjerna - ona izvire iz procesora i njome se adresa koju generira procesor prenosi svakoj funkcijskoj jedinici. Funkcijske jedinice "oslukuju" adresnu sabirnicu i ako utvrde da je na njoj adresa koja upravo odgovara adresi koja je njima dodijeljena, aktiviraju se te obavljaju zadatak koji im je procesor odredio na temelju stanja upravljakih signala. Primjer 2.2. Slika 2.9 prikazuje detalj prikljuenja memorijske jedinice RAM (slika 2.8) na sabirnicu podataka DBO - DB7, upravljaku sabirnicu te adresnu sabirnicu ABO - AB15. Adresna sabirnica je irine 16 bita i odreuje ukupan adresni prostor od 65356 adresa (216): od 0000 - FFFF (heksadekadno), tj. ukupno 64 K lokacija (K = 210). ip RAM ima etiri ulazna prikljuka oznaena s E (engl. enable - omogui) i dva ulazna prikljuka oznaena s Ti ulazni prikljuci slue za izbor ipa na temelju adrese. ip je izabran, tj. omoguen i postaje aktivan ako je zadovoljen sljedei uvjet: istodobno moraju sve logike vrijednosti signala na prikljucima oznaenima s E i E poprimiti aktivno stanje, dakle redom = 0, = 0, = 0, = 0, 1 i E-1. Na slici 2.9 vidimo da su adresne linije A7 - A15, preko logikih sklopova ILI prikljuene na etiri ulaza oznaena s , a da je na dva prikljuka E doveden signal vremenskog voenja <j)2. (Opaska: radi jednostavnosti adresne linije, oznaavat emo krae samo s A i pripadajuim brojem, npr. A7 = AB7). U skladu s prethodno navedenim uvjetom, RAM e biti izabran i "oivjeti" kada je stanje na adresnoj sabirnici sljedee (slika 2.9): A7 = 0, A8 = 0 i A9 = 0; logiko ILI A7 + A8 + A9 je tada 0, A10 = 0 i A11 = 0; logiko ILI A10 + A11 je tada 0, A12 = 0 i A13 = 0; logiko ILI A12 + A13 je tada 0, A14 = 0 i A15 = 0; logiko ILI A14 + A15 je tada 0, (odnosno kada su sve adresne linije od A7 do A15 u logikoj nuli) i kada je istodobno zadovoljeno da su dva ulaza E u jedinici. Budui da se na prikljuke E dovodi signal $2, koji je periodiki, ulazi E e biti u aktivnom stanju u ritmu signala vremenskog voenja (j>2 (odnosno kada njegova amplituda poprima visoku vrijednost koja se moe tumaiti kao logiko 1).

S. RIBARI - GRAA RAUNALA

53

SI. 2.9 Detalj prikljuenja memorijske jedinice RAM

Sedam najmanje znaajnih adresnih linija AO - A6 dovodi se izravno na prikljuke RAM-a oznaene s AO - A6. Binarne vrijednosti na adresnim linijama AO do A6 odreuju adresu memorijske lokaciju u RAM-u. Sada moemo, konano, odrediti adresni potprostor koji zauzima RAM sa slike 2.9. Stanje adresnih linija od A7 do A15 mora biti sljedee: A15 A14 A13 A12 A11 A10 A9 0 0 0 0 0 0 0 A8 0 A7 0

Adresne linije A0 do A6 poprimaju vrijednosti 0 ili 1, ovisno o kojoj se memorijskoj lokaciji u ipu RAM eli pristupiti. Ovih nam sedam adresnih linija govori koliki je kapacitet memorijskog ipa. Zbog naela jednoznanosti adrese tih sedam adresnih linija (A0 - A6) odreuje 128 memorijskih lokacija (27), od adrese 00 do 7F (heksadekadno). Kapacitet RAM-a sa slike 2.9 je 128 x 8 bita ili 128 bajtova. Odredimo adresni potprostor koji RAM sa slike 2.9 zauzima:

A15 0 0 0 0 :o 0 0 ; 0 0 0 0 0 u

A14 A13 A12 A11 A10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

A9 0 0 0 0 0 0 0 0 0 0 0 0 0 0

A8 0 0 0 0 0 0 0 0 0 0 0 0 0 0

kl 0 0 0 0 0 0 0 0 0 0 0 0 0 0

A6 0 0 0 0 0 0 0 0 0

A5 0 0 0 0 0 0 0 0 0

A4 0 0 0 0 0 0 0 0 0

A3 0 0 0 0 0 0 0 0 1

A2 0 0 0 0 1 1 1 1 0

A1 0 0 1 1 0 0 1 1 0

A0 0 1 0 1 0 1 0 1 0

Adresa 0000 0001 0002 0003 0004 0005 0006 0007 0008

. .

l 1 o 0

1 1

1 1

1 1

1 1

1 1

1 1

0 1

007E 007F

54

2. POGLAVLJE: VON NEUMANNOV MODEL RAUNALA

Adresni potprostor koji zauzima RAM dio je veliine od samo 128 adresa od ukupnog adresnog prostora od 64 K i definiran je adresama: 0000 - 007F. Budui da sedam najmanje znaajnih adresnih linija (A0 - A6) koje se dovode na prikljuke ipa oznaene s A0 - A6 ne utjeu na izbor RAM-a, ve samo na izbor rijei u RAM-u (uz uvjet da su adresne linije A7 - A15 poprimile odgovarajue vrijednosti), onda se obino adresa sklopa prikazuje u obliku: A15 A14 A13 A12 A l i 0 0 0 0 0 0 A10 0 A9 0 A8 0 A7 X A6 X A5 X A4 X A3 X X A2 X A1 , A0

gdje X oznaava bilo 0 bilo 1 (X se tumai kao "nije vano"; engl. don'tcare). Primjer 2.3. Odredimo adresni potprostor u kojem se pojavljuje ulazno-izlazna jedinica ACIA. Prikljuci ipa ACIA koji su u vezi s njezinim adresiranjem jesu (slika 2.10): RS (Register Select) - prikljuak za izbor registra u ACIA. Samo na temelju RS-a moemo zakljuiti da se ACIA javlja procesoru kao sklop koji ima dva registra (jedan kad je RS = 0 i drugi kad je RS = 1), CS0 (Chip Select) - prikljuak za izbor ipa (ima istu funkciju kao prikljuak E u prethodnom primjeru), CS1 (Chip Select) - prikljuak za izbor ipa (ima istu funkciju kao prikljuak E u prethodnom primjeru), CS2 (Chip Select) - prikljuak za izbor ipa (ima istu funkciju kao prikljuak u prethodnom primjeru).
RS CSO CS1
S2

DB0 - DB7

D0-D7

AC I IA

02

IRQ R/W Tx Rx CT5 DCD RTS R/W

SI. 2.10 Detalj prikljuenja ulazno-izlazne jedinice ACIA

Uvjet da bude ip ACIA izabran je sljedei: istodobno moraju biti CS0 = 1 (na CS0 se dovodi adresna linija A3), CS1 = 1 (naCSI se dovodi logiko I: A14 VMA). Signal VMA (Valid Memory Address) upravljaki je signal koji generira procesor i oznaava daje adresa koja se trenutno nalazi na adresnoj sabirnici valjana, i konano, CS2 = 0 (na CS2 se dovodi logiko ILI: A1 + A 2 + A4 + A5 + A6 + A7 + A 8 +A9 +A10 +A11 + A12 + A13 + A15). Adresnom linijom A0 koja se dovodi na prikljuak RS izabire se jedan od dva registara u ACIA.

S. RIBARI - GRAA RAUNALA

55

Na temelju navedenih uvjeta moemo odrediti adresni potprostor koji zauzima ACIA:

A15 A14 A13 A12 A11 A10 A9


0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0

A8
0 0

A7
0 0

A6
0 0

A5
0 0

A4
1 1

A3
0

A2
0 0

A1 AO Adresa
0 1 0 4008 4009.

Dakle ACIA se javlja procesoru na dvjema sljednim adresama: 4008 i 4009 (heksadekadno), odnosno adresu ACIA moemo prikazati i kao: A15 A14 A13 A12 A l i A10 A9 A8 A7 A6 A5 A4 0 1 0 0 0 0 0 0 0 0 0 0 1 gdje X oznaava 0 ili 1. A3 0 A2 0 A1 A0 X,

2.4. VON NEUMANNOVO RAUNALO - RAUNALO SISD


Raunala temeljena na von Neumannovom modelu razvrstavamo, u skladu s Flynnovom klasifikacijom, u SISD (Single Instruction Stream Single Data Stream) - arhitekturu raunala s jednim instrukcijskim tokom i jednim tokom podataka. Zaista, ako paljivo promotrimo sliku 2.2 vidimo da model ima samo jedan tok podataka i samo jedan instrukcijski tok. Pritom oba izviru iz memorijske jedinice, a "susreu" se u aritmetiko-logikoj jedinici. tovie, fizika realizacija putova za prijenos podataka i instrukcija je takva da se isti put (sabirnica podataka) koristi za oba toka. To ima za posljedicu da istodobno na tom putu ne mogu postojati i jedan i drugi tok pa je obrada strogo slijedna (sekvencijalna). Nadalje, ako analiziramo aktivnosti tijekom instrukcijskog ciklusa (faze PRIBAVI i IZVRI), moemo utvrditi da je posebno intenzivan promet i instrukcija i podataka izmeu procesora i memorijske jedinice: Tijekom faze PRIBAVI procesor obavezno jednom ili vie puta uzastopce pristupa memorijskoj jedinici pribavljajui strojnu instrukciju. Tijekom faze IZVRI, ovisno o vrsti operacije koju treba izvesti, procesor takoer za veinu operacija pristupa memorijskoj jedinici da bi dohvatio operande ili pak pohranio rezultat. Pojednostavljeno, model von Neumanovog raunala mogao bi se predoiti slikom 2.11. Vidimo daje na toj razini apstrakcije raunalo prikazano samo procesorom, memorijskom jedinicom i spojnim putom izmeu njih. Promet se podataka (u irem znaenju te rijei jer su i strojne instrukcije svedene na binarni kod) odvija spojnim putem, a brzina obrade oito ovisi o njegovoj propusnosti. Naalost, propusnost spojnog puta takva je da se samo jedan podatak ili samo jedna strojna instrukcija mogu u vremenu prenijeti izmeu procesora i memorijske jedinice. J. Backus, jedan od autora programskog jezika FORTRAN, u kritici von Neumannovog modela raunala nazvao je taj spojni put "von Neumannovim uskim grlom" Bacus tvrdi da mora postojati"... manje primitivan nain..."ostvarivanja obrade podatka negoli je to "pumpanje" ogromne koliine podataka naprijed-natrag kroz taj spojni put.

56

2. POGLAVLJE: VON NEUMANNOV MODEL RAUNALA

"von Neumannovo usko grlo"

SI. 2.11 Pojednostavnjeni model von Neumannovog raunala

U knjizi emo se susresti s procesorima i raunalima koji se temelje na von Neumannovim zamislima arhitekture, ali koji upotrebljavaju paralelizam na razliitim razinama i predstavljaju otklon u odnosu na izvorni von Neumannov koncept. Jedan od otklona je i harvardska arhitektura raunala (nazvana po mjestu Harvard i zamisli koju je koristilo raunalo Mark I) u kojoj se razlikuju memorijska jedinica za pohranu podataka i memorijska jedinica za pohranu instrukcija.

2.5. USPOREDBA TURINGOVOG STROJA I VON NEUMANNOVOG MODELA RAUNALA


U prvom smo se poglavlju detaljnije upoznali sTuringovim strojem (TS), a u ovom smo poglavlju podrobnije opisali raunalo temeljeno na von Neumannovom modelu. Usprkos tomu to je TS apstraktni izvritelj i nije posluio kao model u oblikovanju stvarnih raunskih strojeva, zanimljivo gaje usporediti s von Nemannovim modelom raunala. Memorijska jedinica TS-a, nazvana vanjska memorija, s lijeva je i s desna neograniena vrpca podijeljena na polja u kojima se pohranjuje po jedan simbol iz vanjske abecede. Neogranienost vrpce tumaimo tako to po potrebi moemo vrpci dodavati proizvoljan broj polja s lijeve ili desne strane. Pristup se podacima pohranjenim na vrpci ostvaruje R/W glavom. Pristup podacima je sekvencijalan - vrijeme, odnosno broj taktova potreban za dohvat podatka ovisi o trenutnom poloaju R/W glave i poloaju polja u kojem se nalazi eljeni podatak. R/W glava tijekom jednog takta moe se pomaknuti samo za jedno polje (ulijevo ili udesno) u odnosu na njezin trenutni poloaj. Poljima na vrpci nisu dodijeljene adrese, ve se podacima pristupa na temelju poloaja R/W glave. Stroj ima posebne naredbe za pomak glave (N, L, D). Osim vanjske memorije, TS ima i dvije jednostavne unutarnje memorije za pohranu stanja stroja i naredbe za pomak R/W glave. U vanjskoj memoriji pohranjuju se poetni podaci, meurezultati i konaan rezultat. Program se ne pohranjuje u vanjskoj memoriji. S obzirom na to da je rije o apstraktnom izvritelju, nema ogranienja u obliku i nainu prikaza podataka.

S. RIBARI - GRAA RAUNALA

57

Rad TS-a odvija se u taktovima kojima su definirani diskretni vremenski trenuci i u kojima TS mijenja svoje stanje. Rad stroja zamiljen je tako da se tijekom svakog takta dva pristupa vrpci: ita se simbol upisan u polju nad kojim se nalazi R/W glava, upisuje se (novi) simbol u promatrano polje. Memorijska jedinica von Neumannovog modela raunala je memorija ogranienog kapaciteta sastavljena od konanog broja memorijskih lokacija. Svakoj je memorijskoj lokaciji jednoznano pridruena adresa. Pristup podacima je izravan - temelji se na adresi memorijske lokacije pri emu vrijeme pristupa ne ovisi o mjestu gdje je podatak pohranjen. U memorijskoj se jedinici pohranjuju poetni podaci, meurezultati, rezultati i programi u istom obliku - sljedova nula i jedinica. Rad se raunala odvija takoer u taktovima - diskretnim vremenskim trenucima koji su definirani signalom vremenskog voenja.Tijekom instrukcijskog ciklusa procesor pristupa jednom ili vie puta memorijskoj jedinici radi pribavljanja strojne instrukcije (faza PRIBAVI) te nijednom, jednom ili vie puta tijekom faze IZVRI (broj pristupa memorijskoj jedinici ovisi o operaciji koja je odreena operacijskim kodom strojne instrukcije). Obrada informacije u TS-u odvija se u logikom bloku stroja L u kojem je realizirana logika funkcija stroja 6 : S x Q - ^ S x P x Q . Obrada podataka u von Neu man novom raunalu odvija se u aritmetiko-logikoj jedinici. Program za TS, odnosno algoritam obrade predstavlja realizaciju logike funkcije stroja 6 koja je u obliku funkcionalne sheme Turingovog stroja pohranjena u logikom bloku stroja L Algoritam obrade u von Neumannovom raunalu predoen je programom koji se sastoji od slijeda strojnih instrukcija. Program je pohranjen u memorijskoj jedinici u kojoj su pohranjeni i podaci. Vanjska memorija TS-a ima ulogu i ulazno-izlazne jedinice, dok von Neu ma novo raunalo ima posebnu ulazno-izlaznu jedinicu. Postoji slinost izmeu vanjske memorije TS-a kao prikazne jedinice i memorijske jedinice IAS raunala koja je realizirana elektronskim cijevima Selectron. U tom se sluaju memorijska jedinica raunala moe promatrati i kao izlazna grafika jedinica.

S. RIBARI - GRAA RAUNALA

59

3. POGLAVLJE

POJEDNOSTAVLJENI MODELI CISC I RISC PROCESORA


3.1. UVOD
Procesor smo pojednostavljeno opisali kao objedinjenje dviju funkcijskih jedinica: upravljake i aritmetiko-logike jedinice. Dananji su procesori realizirani u tehnologiji vrlo visokog stupnja integracije VLSI i ostvareni su na komadiu silicija pribline veliine potanske marke te se obino nazivaju mikroprocesori (prefiks mikro treba nas asocirati na mikroelektroniku). Tehnologija vrlo visokog stupnja integracije omoguuje ostvarivanje procesora koji imaju brojne i vrlo sloene sklopove. Na primjer, mikroprocesor Intel Pentium 4 (2001. godina) na komadiu silicija povrine 217 mm 2 (priblinih dimenzija: 14.7 mm x 14.7 mm) ima 42.000.000 tranzistora, viejezgreni procesor POWER7 ostvaren je na ipu povrine 567 mm2 i ima 1,2 milijarde tranzistora! Prefiks mikro u daljnjem emo tekstu knjige zanemariti jer se podrazumijeva da su procesori ostvareni u tehnologiji visokog stupnja integracije. Razumijevanje rada procesora, poznavanje osnovnih funkcija upravljake jedinice, funkcije pojedinih registara i sklopova aritmetiko-logike jedinice, poznavanje stanja na internim sabirnicama procesora (ali i vanjskim sabirnicama: sabirnici podataka, upravljakoj i adresnoj sabirnici) jedan je od osnovnih preduvjeta uspjenog oblikovanja i kvalitetnog odravanja raunarskih sustava ope namjene ili ugraenih raunalnih sustava. U ovom emo poglavlju opisati dva modela procesora: jedan 8-bitni procesor sa znaajkama CISC (Complex Instruction Set Computer) arhitekture i jedan 32-bitni procesor sa znaajkama RISC (Reduced Instruction Set Computer). Naravno, usput emo istaknuti i pojasniti neke arhitektonske znaajke svojstvene CISC i RISC procesorima.

3.2. POJEDNOSTAVLJENI MODEL CISC PROCESORA


Model 8-bitnog CISC procesora prikazanje na slici 3.1. Prije negoli se upustimo u podrobni opis pojedinih sastavnica modela, odgovorimo na pitanje: Na temelju kojih se znaajki procesori klasificiraju kao 8-, 16-, 32- ili 64-bitni? Obino se promatraju sljedee arhitektonske znaajke: duljina registara podataka (broj bitova), irina interne sabirnice - spojnog puta u procesoru i duljina podataka (operanada) kojima se izravno koriste sklopovi u aritmetiko-

60

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

logikoj jedinici. Na primjer, ako su registri podataka koji se rabe za pohranjivanje operanada i rezultata 8-bitni, ako je irina interne sabirnice 8-bitna i ako su sklopovi aritmetikologike jedinice 8-bitni, onda se procesor jednoznano moe klasificirati kao 8-bitni. No ponekad nije tako jednostavno, procesor moe imati 32-bitne registre podataka, 16-bitnu internu sabirnicu i dvije 16-bitne aritmetiko-logike jedinice koje se mogu promatrati i kao jedna 32-bitna jedinica. U takvom se sluaju teko moe govoriti jednoznano o npr. 16-bitnom ili 32-bitnom procesoru. Obino se tada priklanjamo klasifikaciji proizvoaa, ali uz to vrlo esto rabimo i izraz kao to je pseudo 16-bitni ili pseudo 32-bitni procesor.

signal vremenskog voenja

SI. 3.1 Model 8-bitnog CISC procesora

Model procesora (slika 3.1) ima 8-bitni registar podataka AC koji se naziva akumulator: On ima jednaku funkciju kao i 40-bitni akumulator u von Neumannovom IAS raunalu: upotrebljava se za privremeno pohranjivanje jednog od operanada koji sudjeluje u aritmetikoj ili logikoj operaciji. Osim toga, akumulator AC slui kao odredite rezultata izvedene aritmetike ili logike operacije (registar je dobio naziv akumulator zato to se kod ponavljajuih postupaka raunanja u njemu "akumulira" rezultat). U skladu s von Neumannovim modelom raunala, akumulator AC sudjeluje i u ulaznim i izlaznim operacijama, odnosno izmjeni podataka izmeu raunala i vanjskog svijeta. U tom sluaju akumulator AC ima ulogu "odskone daske": svaki ulazni podatak na svom putu iz ulazno-izlazne jedince mora biti privremeno pohranjen u akumulatoru AC, a zatim premjeten u memorijsku jedinicu i obratno, svaki izlazni podatak mora biti, na svom putu od memorijske jedinice prema ulazno-izlaznoj jedinici, privremeno pohranjen u akumulatoru AC. Naravno, ovo ne vrijedi ako se prijenos ostvaruje izravnim pristupom memoriji DMA (vidi poglavlje 2.).

S. RIBARI - GRAA RAUNALA

61

Sastavnica modela je i 8-bitni privremeni registar 77? koji je povezan s jednim od dva ulaza u aritmetiko-logiku jedinicu i slui za privremeno pohranjivanje jednog od podataka koji sudjeluje u aritmetikoj ili logikoj operaciji. 8-bitna aritmetiko-logika jedinica (ALU - Aritmetic Logic Unit) izvrava osnovne aritmetike i logike operacije s jednim (unarne) ili s dva operanda (binarne operacije) kao to su: inkrementiranje (poveavanje za jedan), posmak operanda, pretvorba u jedinini ili potpuni komplement, zbrajanje, oduzimanje te logike operacije I, ILI i ISKLJUIVO ILI. Registar SR- statusni registar (esto se naziva i registar uvjeta) povezan je s ALU i sastoji se od bistabila koji se nazivaju dojavni bista bili ili zastavice (engl. flag). Prema funkciji, one se mogu razvrstati na: i) zastavice za indikaciju stanja koja su nastala kao posljedica izvoenja neke aritmetike ili logike operacije, ii) zastavice za indikaciju glavnih stanja procesora, iii) zastavice za rukovanje prekidom i oznaavanje prekidnih razina. Zastavice se iz skupine i) automatski postavljaju (poprimaju vrijednost 1) ili briu (poprimaju vrijednost 0) ovisno o rezultatu aritmetikih i logikih operacija. Zastavice iz skupine i) promatraju se kao pojedinani bistabiii i obino imaju jednoslovane oznake: C, H, N, Z, V, gdje je C (engl. Carry) - zastavica prijenosa koja pokazuje da se dogodio prijenos iz najznaajnijeg bita rezultata, H (engl. Half Carry) - zastavica polovinog prijenosa - prijenosa iz bitovne pozicije b3 u b4, N (engl. Negative) - zastavica predznaka, Z (engl. Zero) - zastavica nule, V (engl. Overflow) - zastavica preljeva. Podrobnije emo zastavice iz skupine i) opisati kada bude rijei o aritmetiko-logikoj jedinici. Za sada navedimo samo da strojne instrukcije uvjetnog grananja obino koriste zastavice iz skupine i). O zastavicama iz skupine ii) i iii) bit e rijei u poglavljima koja se odnose na obradu prekida i iznimaka, odnosno na naine prijenosa upravljanja sjedne programske strukture na drugu. Primjer 3.1. Jedan od bistabila SR registra - zastavica s oznakom Z (od engl. Zero - nula) automatski e se postaviti u logiko"! "(kaemo da je zastavica "postavljena" ili da je u jedinici) ako je rezultat aritmetike ili logike operacije takav da su svi bitovi rezultata jednaki 0. Strojna instrukcija uvjetnog grananja brzr (Branch if Zero - granaj ako nula) ispituje stanje zastavice Z i ako je Z = 1 obavit e se grananje u programu (izvoenje programa uputit e se na ciljnu instrukciju koja neposredno ne slijedi instrukciji brzr). Sastavnica pojednostavljenog modela procesora jest i upravljaka jedinica. Ona se sastoji od sklopova za dekodiranje strojnih instrukcija i sklopova koji generiraju sljedove upravljakih signala u skladu s tumaenjem operacijskog koda instrukcije. Ti signali upravljaju prijenosom podataka izmeu registara, izmeu registra i sklopova aritmetiko-logike jedinice, aktiviraju sklopove za izvravanje aritmetikih ili logikih operacija ili izazivaju inkrementiranje sadraja programskog brojila i si. Upravljaki signali odreuju i smjer prijenosa podataka izmeu procesora i memorijske jedinice (upravljaki signal itaj, Pii, odnosno R/W; R - read, W - write) ili izmeu procesora i u lano-izlazne jedinice. Sve se te operacije sinkroniziraju signalom vremenskog voenja < > j (engl. clock) (slika 3.1). Upravljaki signali koji su potrebni ostalim funkcijskim jedinicama raunala (memoriji i ulazno-izlaznim jedinicama) prenose se signalnim linijama koje formiraju upravljaku sabirnicu raunala.

62

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC1RISC PROCESORA

Model procesora koristi tzv. jednofazni signal vremenskog voenja. Pretpostavit emo da je frekvencija signala vremenskog voenja 1MHz, odnosno perioda mu je l^is (IO 6 s). Slika 3.2 prikazuje signal vremenskog voenja (|>. Ponovimo jo jednom, dogaaji u procesoru i drugim funkcijskim jedinicama raunala odvijaju se u tono utvrenim diskretnim trenucima.

SI. 3.2 Signal vremenskog voenja (engl. clock) < ( > (perioda 1 [is)

Sastavni dijelovi pridrueni upravljakoj jedinici su i 16-bitni registar nazvan programsko brojilo PC (engl. Program Counter), 8-bitni instrukcijski registar IR (engl. Instruction Register) te 16-bitni registar brojilo podataka DC (engl. Data Counter). Funkcije pojedinih registara su sljedee: Programsko brojilo PC sadrava adresu sljedee strojne instrukcije - one koja e biti pribavljena u sljedeem instrukcijskom ciklusu. (Opaska: u nekim procesorima registar koji ima funkciju programskog brojila ima oznaku IP (engl. Instruction Pointer) - kazaljka na instrukciju.) Instrukcijski registar IR sadrava strojnu instrukciju ije je izvoenje upravo u tijeku, odnosno u naem e modelu procesora instrukcijski registar IR sadravati 8-bitni operacijski kod strojne instrukcije u tijeku. 16-bitno brojilo podataka DC sadrava adresu memorijske lokacije na kojoj se nalazi operand ili na koju se treba pohraniti rezultat operacije. Interna sabirnica irine 8 bita predstavlja komunikacijski put za sve sastavnice modela i omoguuje prijenos podataka izmeu pojedinih registara podataka i upravljakih registara, aritmetiko-logike jedinice i upravljake jedinice. Interna sabirnica kao skup linija vodia izvedena je na samom procesorskom ipu. Sa internom su sabirnicom povezana i dva registra: 16-bitni memorijski adresni registar MAR (engl. Memory Address Register) koji predstavlja "izvor" za vanjsku adresnu sabirnicu (ABO - AB15) te 8-bitni memorijski registar podataka MDR (engl. Memory Data Register) koji predstavlja izvor i ponor dvosmjerne vanjske sabirnice podataka (DBO - DB7). Registri MAR i MDR predstavljaju suelje procesora s ostalim funkcijskim jedinicama raunala. Izraz "vanjska sabirnica" odnosi se na sabirnicu raunala (vidi poglavlje 2.). (Opaska: esto se memorijski adresni registar MAR naziva i adresni meuspremnik (engl. address buffer), a memorijski registar podataka MDR naziva se jo i meuspremnik podataka (engl. data buffer)). Strojna se instrukcija u procesoru izvrava u dvije faze: PRIBAVI i IZVRI (vidi poglavlje 2.). Procesor tijekom faze PRIBAVI postavlja sadraj programskog brojila PC na adresnu sabirnicu ABO - AB15 tako da se manje znaajan bajt (PCO - PC7) i znaajniji bajt (PC8 - PC15) programskog brojila slijedno prenose preko 8-bitne interne sabirnice procesora u 16-bitni memorijski adresni registar MAR. Upisom 16-bitnog sadraja u memorijski adresni registar MAR on (sadraj) se pojavljuje na adresnoj sabirnici ABO - AB15. Ujedno, upravljaki sklo-

S. RIBARI - GRAA RAUNALA

63

povi generiraju upravljaki signal itaj i alju ga na upravljaku sabirnicu raunala (upravljaka linija itaj). (Opaska: stvarni procesori, za razliku od naeg modela procesora, imaju obino umjesto izdvojenih upravljakih linija itaj i Pii jednu upravljaku liniju R/W, pri emu R/W= 1 odgovara signalu itaj, a R/ W= 0 znai Pii). Memorijska jedinica, koja je prikljuena na vanjsku sabirnicu, "oslukuje" adresnu sabirnicu i dekodira postavljenu adresu (adresu koja je prisutna na adresnoj sabirnici) da bi se omoguio pristup do odgovarajue memorijske lokacije. Za nekoliko stotina nanosekundi, npr. 400 ns - to odgovara vremenu pristupa memoriji, sadraj izabrane memorijske lokacije bit e proitan i pojavit e se na vanjskoj sabirnici podataka DBO - DB7. Taj se podatak preko memorijskog registra podataka MDR i preko interne sabirnice procesora usmjerava i zatim pohranjuje u 8-bitnom instrukcijskom registru IR. Pohranjeni se podatak u registru IR tumai kao operacijski kod instrukcije. Ovoj cijeloj prii odgovara zapis: M(PC) IR (vidi 1. korak faze PRIBAVI, poglavlje 2.). Interni sklopovi procesora poveavaju sadraj programskog brojila PC za 1; (PC + 1 -PC). 8-bitna rije (bajt) koja je smjetena u instrukcijskom registru IR sadrava operacijski kod strojne instrukcije. No strojne se instrukcije veinom sastoje od dva ili vie bajtova. Dekoder u upravljakoj jedinici dekodira operacijski kod instrukcije te na temelju njega dobiva dvije vane stvari: informaciju koja se operacija tijekom faze IZVRI mora izvriti i informaciju o duljini strojne instrukcije, tj. od koliko se bajtova sastoji instrukcija. Ako je upravljaka jedinica na temelju operacijskog koda utvrdila da se strojna instrukcija sastoji samo od jednog bajta (daje rije o instrukciji koja u operacijskom kodu sadrava i informaciju o izvoru operanda i odreditu rezultata, npr. strojna instrukcija COMA - komplementiraj sadraj akumulatora AC ima izvorite operanda u akumulatoru AC i rezultat (jedinini komplement akumulatora AC) pohranjuje u akumulator AC), tada upravljaka jedinica prelazi u fazu IZVRI. Ako je, pak, upravljaka jedinica na temelju operacijskog koda utvrdila da se instrukcija sastoji od dvaju ili vie bajtova, faza PRIBAVI se nastavlja: sadraj programskog brojila PC smjeta se kao i u prethodnom ciklusu faze PRIBAVI, na adresnu sabirnicu, upravljaka jedinica generira upravljaki signal itaj. Bajt dohvaen iz specificirane memorijske lokacije se sabirnicom podataka DBO - DB7 preko registra MDR i interne sabirnice prenosi u brojilo podataka DC. Sadraj programskog brojila PC ponovo se poveava za 1. Ako ni sada nije pribavljena kompletna instrukcijska rije, faza PRIBAVI nastavlja se i izvode se prethodno opisane aktivnosti. Na kraju faze PRIBAVI, kada su konano pribavljeni svi bajtovi od kojih se sastoji strojna instrukcija, programsko brojilo PC mora sadravati adresu sljedee strojne instrukcije. Upravljaka jedinica prelazi u fazu IZVRI. Tijekom faze IZVRI upravljaka jedinica, u skladu s tumaenjem operacijskog koda, generira sljedove upravljakih signala koji pobuuju sklopove u aritmetiko-logikoj jedinici, prijenose izmeu registara, prijenos podataka izmeu procesora i memorijske jedinice ili procesora i ulazno-izlazne jedinice. Nakon to su obavljene sve zahtijevane aktivnosti potrebne za izvrenje operacije specificirane operacijskim kodom, upravljaka jedinica prelazi u fazu PRIBAVI i kree u pribavljanje sljedee strojne instrukcije. Slika 3.3 prikazuje dijagram toka aktivnosti tijekom instrukcija skog ciklusa.

64

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

SI. 3.3 Dijagram toka instrukcijskog ciklusa

3.3. PRIMJER IZVOENJA PROGRAMA


Na primjeru izvoenja jednostavnog programa za na model prikazat emo kako djeluje procesor. Pretpostavimo da se program sastoji samo od jedne strojne instrukcije: INC $05FF. Instrukcija INC $05FF, zapisana u skladu s pravilima za zbirni jezik, tumai se kao: inkrementiraj sadraj memorijske lokacije ija je adresa 05FF (heksadekadno), odnosno 0000 0101 1111 1111 (binarno). Operacijski kod instrukcije INC je 7C (heksadekadno), odnosno 0111 1100 (binarno). Simbol $ upotrebljava se kao znak asembleru (prevodiocu za zbirni jezik) da slijede oznake zapisane heksadekadno. Podsjetimo se, u Primjeru 1.6. napisali smo program za Turingov stroj koji takoer inkrementira binarni broj zapisan na vrpci stroja. U memoriji raunala, na slijednim memorijskim lokacijama s adresama 0100, 0101, 0102, ... pohranjen je program. Slika 3.4 prikazuje program (adrese i sadraj memorijskih lokacija zapisani su heksadekadno samo radi jednostavnijeg zapisa), uz to je prikazan i sadraj memorijske lokacije 05FF koji je 23 (heksadekadno). Podatak na memorijskoj lokaciji 05FF imat e ulogu operanda. Vidimo da se strojna instrukcija sastoji od tri bajta koja su slijedno pohranjena u memoriji.

S. RIBARI - GRAA RAUNALA

65

adresa

sadraj

0100 0101 0102

7C 05 FF

INC $05FF inkrementiraj sadraj memorijske lokacije s adresom 05FF

05FE 05FF 0600


SI. 3.4 Prikaz programa i podataka u memorijskoj jedinici raunala

23

Primjeujemo, duljina memorijske rijei je jedan bajt (osam bita) i svakoj je memorijskoj lokaciji jednoznano pridruena adresa. Za takvu organizaciju memorijske jedinice kaemo da ima bajtnu adresnu zrnatost Slika 3.5 prikazuje poetni uvjet - sadraje registara procesora neposredno prije zapoinjanja programa. Uvjet je samo jedan - sadraj programskog brojila PC mora sadravati adresu prve strojne instrukcije naeg programa. To znai: (PC) = 0100. Poetni sadraji drugih registara procesora nisu vani.
AC
15

DC

15

PC 0100

upravljaki Signal

upravljaki signal

upravljaki signal

i n t e r n a sabirnica

15

upravljaki ^signal

TR
upravljaki signal upravljaki signal

IR
upravlj. signal

DB7 dekoder SR a r i t m e t i k o - l o g i ka jedinica (ALU)


upravljaki signal

DB0

AB15 adresna sabirnica

AB0

sabirnica podataka

O t u s n i registar Registar uvjeta)

upravljaki signali upravljaki sklop itaj upravljaka sabirnica Pii upravljaka jedinica

0
signal vremenskog voenja

SI. 3.5 Poetni uvjet - sadraji registara procesora neposredno prije uputanja u rad (startanja)

66

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

Prije negoli se upustimo u tumaenje izvoenja samog programa, objasnimo kako je u memoriji raunala unesen program i kako je poetna adresa programa smjetena u programsko brojilo PC. Najjednostavnije je objanjenje, za sada, da raunalni sustav ima vrlo jednostavnu jezgru operacijskog sustava koja se naziva monitor i koja podrava jednostavan unos podataka u memoriju preko heksadekadne tipkovnice, definiranja poetne adrese programa (unos u PC) te uputanje u rad (startanje) programa s poetne adrese. Procesor se, odnosno njegova upravljaka jedinica, nakon uputanja u rad nalazi u fazi PRIBAVI. Sadraj se programskog brojila PC preko interne sabirnice i memorijskog adresnog registra MAR postavlja na vanjsku adresnu sabirnicu i upravljaka jedinica generira upravljaki signal itaj. Pribavlja se 8-bitna rije (7C) s memorijske lokacije ija je adresa 0100 (heksadekadno). Ona se preko sabirnice podataka alje procesoru. Istodobno se sadraj programskog brojila PC poveava za 1. Pribavljeni bajt - operacijski kod - smjeta se u instrukcijski registar IR (procesor je u fazi PRIBAVI). Slika 3.6 prikazuje stanje procesora nakon pribavljanja prvog bajta instrukcije.

SI. 3.6 Stanje registara nakon pribavljanja operacijskog koda strojne instrukcije

Stanje registara neposredno nakon pribavljanja operacijskog koda instrukcije moemo zapisati na sljedei nain (slika 3.6): sadraj programskog brojila: (PC) = 0101, sadraj instrukcijskog registra (IR) = 7C, sadraj memorijskog registra podataka (MDR) = 7C, sadraj memorijskog adresnog registra (MAR) = 0100, sadraji ostalih registara ostali su nepromijenjeni.

S. RIBARI - GRAA RAUNALA

67

Sadraj se instrukcijskog registra (IR) 0111 1100 (binarno) dekodira i tumai kao: Poveaj za 1 vrijednost operanda ija je adresa sadrana u dva bajta koja slijede ovom operacijskom kodu. Moemo primijetiti da se zaista u operacijskom kodu nalazi informacija o operaciji koja se treba izvriti, ali i vana informacija od koliko se 8-bitnih rijei (bajtova) sastoji kompletna strojna instrukcija.Tonije, u operacijskom se kodu nalazi informacija o nainu adresiranja. Naime,... ija je adresa sadrana u dva bajta koja slijede ovom operacijskom kodu govori nam da instrukcija koristi izravni nain adresiranja koji je karakteristian po tome to preostala dva bajta instrukcijske rijei predstavljaju izravnu (direktnu) adresu memorijske lokacije na kojoj se nalazi operand. Sve se ove aktivnosti dogaaju tijekom jedne periode signala vremenskog voenja. Upravljaka jedinica na temelju informacije dobivene dekodiranjem operacijskog koda instrukcije "zna" da strojna instrukcija nije u potpunosti pribavljena - nedostaju jo dvije manje znaajne 8-bitne rijei koje ine strojnu instrukciju. Upravljaka jedinica ostaje u fazi PRIBAVI i u sljedeoj periodi signala vremenskog voenja pribavlja sljedei, tj. drugi bajt strojne instrukcije, i to tako da: sadraj programskog brojila PC postavi na adresnu sabirnicu raunala, generira upravljaki signal itaj. Poveava se sadraj programskog brojila PC za 1. Nakon isteka vremena pristupa memoriji s memorijske se lokacije 0101 (heksadekadno) dohvaa njezin sadraj 05 (heksadekadno) te se preko sabirnice podataka prenosi procesoru i smjeta u brojilo podataka DC i to u njegov znaajniji dio (DC8 - DC15). Podsjetimo se, 05 je znaajniji bajt adrese memorijske lokacije na kojoj se nalazi operand, a brojilo podataka DC sadrava adresu operanda. Neposredno, nakon pribavljanja znaajnijeg bajta adrese operanda stanja registara procesora su: programsko brojilo: (PC) = 0102, instrukcijski registar: (IR) = 7C, brojilo podataka: (DC) = 05 --, sadraj memorijskog registra podataka (MDR) = 05 i

sadraj memorijskog adresnog registra (MAR) = 0101. Protekla je jo jedna perioda signala vremenskog voenja. Upravljaka jedinica ostaje u fazi PRIBAVI i pribavlja trei bajt instrukcijske rijei - manje znaajan bajt adrese operanda FF: sadraj programskog brojila PC postavlja se preko memorijskog adresnog registra MAR na adresnu sabirnicu, generira se upravljaki signal itaj te se nakon isteka vremena pristupa memoriji na sabirnici podataka pojavljuje podatak FF (heksadekadno) koji predstavlja manje znaajan bajt 16-bitne adrese. On e se smjestiti u manje znaajan bajt registra brojila podataka DC. Naravno, tijekom i ove periode vremenskog voenja sadraj se programskog brojila PC poveava za jedan. Stanje registara neposredno nakon pribavljanja manje znaajnog bajta adrese operanda je: programsko brojilo: (PC) = 0103, instrukcijski registar: (IR) = 7C, brojilo podataka: (DC) = 05FF, sadraj memorijskog registra podataka (MDR) = FF, sadraj memorijskog adresnog registra (MAR) = 0102. Faza PRIBAVI za instrukciju INC $05FF zavrena je. Vidimo da je sadraj programskog brojila PC 0103 (heksadekadno) i da pokazuje na sljedeu strojnu instrukciju (podsjetimo se,

68

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

program je niz slijednih strojnih instrukcija). Ocijenimo potrebno vrijeme za fazu PRIBAVI instrukcije INC $05FF: Za fazu PRIBAVI procesor je trebao tri periode signala vremenskog voenja (za na model procesora trebalo mu je 3|lis jer je perioda signala vremenskog voenja 1 fx). Ako se na trenutak pretpostavi da 8-bitni instrukcijski registar IR i 16-bitni registar brojilo podataka DC tvore jedan 24-bitni registar, dobivamo situaciju prikazanu na slici 3.7.
instrukcijski registar | registar: brojilo podataka

01111100 7C
IR format instrukcije: DC

00000101 05

11111111 FF

operacijski kod
SI. 3.7 Instrukcijska rije sastavljena od 3 bajta

adresa operanda

Vidimo sa slike 3.7 da je format strojne instrukcije jednak formatu instrukcije von Neumannovog raunala. Strojna instrukcija sastoji se od 8-bitnog operacijskog koda i 16-bitnog adresnog polja. Adresno polje instrukcije u von Neumanovom raunalu bilo je 12 bita. Kao to smo ve spomenuli, za pribavljanje instrukcijske rijei naem 8-bitnom procesoru bile su potrebne tri periode signala vremenskog voenja, dok bi procesoru s rijei duljine 24 bita i vie taj isti postupak obavio u jednoj periodi signala vremenskog voenja. Vratimo se nastavku izvoenja instrukcije INC$05FF. Nakon faze PRIBAVI upravljaka jedinica prelazi u fazu IZVRI. Ona se sastoji u dobavljanju operanda s memorijske lokacije 05FF. Tijekom etvrte periode signala vremenskog voenja postavlja se sadraj brojila podataka DC na adresnu sabirnicu i generira se upravljaki signal itaj. Podatak s memorijske lokacije 05FF preko sabirnice podataka prenosi se u procesor. Upravljaki signali usmjeravaju taj podatak preko interne sabirnice u 8-bitni privremeni registar TR koji se nalazi na ulazu u aritmetiko-logiku jedinicu. Naravno, dohvaeni se podatak smatra podatkom-operandom jer je upravljaka jedinica u fazi IZVRI. Radoznali e se itatelj upitati zato se dohvaeni podatak nije smjestio u akumulator AC kada je on prvenstveno namijenjen pohrani operanada. Odgovor je sljedei: smjetanje dohvaenog podatka u akumulator AC "rui" njegov prethodni sadraj, a uz to instrukcija INC ne specificira sudjelovanje akumulatora AC u njezinom izvoenju. Vano je naglasiti da je akumulator AC sastavnica programskog modela procesora, dok privremeni registar TR to nije. Pojednostavljeno, programski model procesora ine sve sastavnice procesora koje su "vidljive" i dohvatljive programeru u strojnom ili zbirnom jeziku (poglavlje 5.). Stanje registara nakon dohvata operanda je sljedee: programsko brojilo: (PC) = 0103, instrukcijski registar: (IR) = 7C, brojilo podataka: (DC) = 05FF, privremeni registar: (TR) = 23. Primjeujemo da se sadraj programskog brojila PC nije promijenio - on i dalje pokazuje na adresu sljedee instrukcije. Napomenimo, da se u naelu, sadraj programskog brojila

S. RIBARI - GRAA RAUNALA

69

PC tijekom faze IZVRI ne mijenja, osim kad se izvravaju instrukcije grananja. Tijekom pete periode signala vremenskog voenja, upravljaka jedinica aktivira sklop za inkrementiranje u aritmetiko-logikoj jedinici te se izvodi operacija TR + 1 TR, odnosno poveava se za jedan vrijednost operanda 23, i nova se vrijednost (24) prenosi natrag u privremeni registar TR. Stanje registara nakon pete periode signala vremenskog voenja je sljedee: programsko brojilo: (PC) = 0103, instrukcijski registar: (IR) = 7C, brojilo podataka: (DC) = 05FF, privremeni registar: (TR) = 24.

Uoavamo da je aktivnost u petoj periodi signala vremenskog voenja interna aktivnost procesora - ne zahtijeva se komunikacija procesora s memorijskom niti s ulazno-izlaznom jedinicom. Budui da procesor tijekom te periode ne koristi sabirnicu raunala (adresnu sabirnicu, sabirnicu podataka i upravljaku sabirnicu), on se elektriki odspaja od sabirnice tako da mu odgovarajue signalne linije prelaze u stanje visoke impedancije. Na taj nain sabirnica raunala biva raspoloiva nekom drugom privremeno vodeem modulu, npr. DMA upravljakom sklopu koji moe ovu periodu iskoristiti za izravan prijenos podataka izmeu memorije i ulazno-izlazne jedinice. Faza IZVRI jo nije okonana. Za vrijeme este periode signala vremenskog voenja mora se sadraj brojila podataka DC 05FF, preko registra MAR, postaviti na adresnu sabirnicu, a rezultat (24) iz privremenog registra TR prenijeti preko interne sabirnice u memorijski registar podataka MDR i time na sabirnicu podataka i, jo uz to, upravljaka jedinica mora generirati upravljaki signal Pii. Nakon isteka vremena pristupa memoriji rezultat operacije inkrementiranja bit e pohranjen natrag na memorijsku lokaciju 05FF. Time je faza IZVRI okonana. Stanje registara procesora: programsko brojilo: (PC) = 0103, instrukcijski registar: (IR) = 7C, brojilo podataka: (DC) = 05FF, privremeni registar: (TR) = 24. Promijenjeni sadraj memorijske lokacije 05FF je: M(05FF) = 24. Upravljaka jedinica iz faze IZVRI prelazi u fazu PRIBAVI te se ponavlja postupak - pribavlja se prva rije nove instrukcije s memorijske lokacije 0103. Na temelju potonje analize vidimo da relativno jednostavna instrukcija INC M, gdje je M 16-bitna adresa operanda zahtijeva 6 perioda signala vremenskog voenja i daje tijekom njezina izvoenja promet izmeu procesora i memorijske jedinice bio vrlo velik - od 6 perioda signala vremenskog voenja, pet je utroeno u komunikaciji procesora s memorijom (tri za pribavljanje strojne instrukcije (faza PRIBAVI), jedna za dohvat operanda (faza IZVRI) i jo jedna za pohranu rezultata (faza IZVRI)). to e se dogoditi ako za program pohranjen u memoriji (slika 3.4) promijenimo poetni uvjet i postavimo poetnu vrijednost programskog brojila PC na 05FF? U tom e sluaju tijekom faze pribavi procesor dohvatiti sadraj memorijske lokacije 05FF, tj. 23 i smjestiti ga u instrukcijski registar IR. Dakle, 23 e biti operacijski kod instrukcije. Vidimo, daje 23, koji je

70

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

u sluaju poetne vrijednosti programskog brojila (PC) = 0100, bio operand (podatak) sada postao dio instrukcije, odnosno operacijski kod instrukcije. Potvrdimo jo jednom, ono to smo napisali u drugom poglavlju: Strojna instrukcija i podatak mogu se razlikovati jedino na temelju stanja upravljake jedinice {je li u stanju pribavi ili u stanju izvri).

3.4. STANJE NA VANJSKIM SABIRNICAMA


Pri prikazu izvoenja "programa" koji se sastojao samo od jedne instrukcije ponaali smo se kao da imamo neku vrstu "magine lupe" pomou koje smo mogli promatrati sadraje registara procesora i pratiti izvoenje strojne instrukcije. U stvarnosti, naalost, nemamo takvu "maginu lupu" kojom bismo mogli prodrijeti u silicijski ip i u stvarnom vremenu pratiti promjene sadraja tijekom izvoenja pojedinih instrukcija. U stvarnosti nam preostaje jedino promatrati stanja na vanjskim sabirnicama: sabirnici podataka, adresnoj sabirnici i upravljakoj sabirnici. To moemo jer imamo fiziki pristup sabirnikim linijama. Posebnim instrumentom - logikim analizatorom prikljuujemo se njegovim ispitnim sondama na sabirnike linije i moemo promatrati i snimati njihova stanja. Naravno, moramo razumjeti i znati tumaiti ta stanja jer ona imaju posebnu vanost u razumijevanju rada procesora, ali i u dijagnostikim postupcima pri otklanjanju greaka u sustavu temeljenom na procesoru. Pokuajmo utvrditi i nacrtati stanja na vanjskim sabirnicama tijekom izvoenja strojne instrukcije INC $05FF. Zakljuili smo da se ona izvodi u est perioda signala vremenskog voenja < ( > . Saetak aktivnosti tijekom tih est perioda jest: Faza PRIBAVI: 1. perioda na adresnu sabirnicu ABO - AB15 postavlja se sadraj programskog brojila PC (ABO - AB15 = 0100 (heksadekadno)); aktivira se upravljaki signal itaj (itaj 1); nakon isteka vremena pristupa memoriji na sabirnicu podataka postavlja se podatak - operacijski kod instrukcije (DB0 - DB7 = 7C (heksadekadno)); 2. perioda na adresnu sabirnicu postavlja se sadraj programskog brojila PC (pozor: tijekom 1. periode njegov se sadraj poveao za 1) (ABO - AB15 = 0101 (heksadekadno)); aktivira se upravljaki signal itaj (itaj 1); nakon isteka vremena pristupa memoriji na sabirnicu podataka postavlja se podatak - znaajniji bajt adrese operanda (DB0 - DB7 = 05 (heksadekadno)); 3. perioda na adresnu sabirnicu postavlja se sadraj programskog brojila PC (pozor: tijekom 2. periode njegov se sadraj poveao za 1) (ABO - AB15 = 0102 (heksadekadno)); aktivira se upravljaki signal itaj (itaj 1); nakon isteka vremena pristupa memoriji na sabirnicu podataka postavlja se podatak - manje znaajniji bajt adrese operanda (DB0 - DB7 = FF (heksadekadno)); Ovim se faza PRIBAVI zavrava i upravljaka jedinica prelazi u fazu IZVRI.

4. perioda na adresnu sabirnicu postavlja se sadraj brojila podataka DC (ABO - AB15 = 05FF (heksadekadno)); aktivira se upravljaki signal itaj (itaj 1); nakon isteka vremena pristupa memoriji na sabirnicu podataka postavlja se 8-bitni podatak - operand (DBO - DB7 = 23 (heksadekadno)); 5. perioda nema aktivnosti na vanjskim sabirnicama - procesor se elektriki odspaja od sabirnice - postavlja linije vanjske sabirnice u stanje visoke impedancije; 6. perioda na adresnu sabirnicu postavlja se sadraj brojila podataka DC (ABO - AB15 = 05FF (heksadekadno)); na sabirnicu podataka postavlja se sadraj privremenog registra TR (DBO - DB7 = 24 (heksadekadno)); aktivira se upravljaki signal Pii (Pii 1).

Sada moemo nacrtati stanje na adresnoj sabirnici ABO - AB15, sabirnici podataka DBO DB7 i upravljakoj sabirnici (upravljake linije itaj i Pii). Sve to emo promatrati u ritmu signala vremenskog voenja < j > . Budui da nam je signal vremenskog voenja referentni signal, njega emo prvog nacrtati, a zatim slijedi stanje na adresnoj sabirnici, upravljakoj sabirnici i konano, sabirnici podataka. (Opaska: umjesto crtanja stanja na svim adresnim linijama ABO - AB15 uobiajeno je da se u tijekom periode signala vremenskog voenja, simbolino prikae da su neke adresne linije u logikoj "0" a neke u logikoj "1", a izmeu tih se signala napie heksadekadna vrijednost koja predstavlja adresu na sabirnici. Slino vrijedi i za sabirnicu podataka DBO - DB7.) Slika 3.8 prikazuje stanje na sabirnicama tijekom izvoenja instrukcije INC$05FR
perioda
#1

perioda #2

perioda

perioda

perioda

perioda

/ \ / \ / \
^ 0100 ^^ 0101 ^^ 0102 ^

\
05FF )

/ \
* * * * * *

/ \ ,
( )
5 F F

tW

V-AB15
GtBj

t.

/ \
vrijeme pristupa memoriji

\ / \

t T.

\
, ...

th

D 6 7

tw

faza pribavi (fetch)

faza izvri (execute)

legenda: * * - stanje visoke impedancije

SI. 3.8 Vremenski dijagram stanja na sabirnicama za instrukciju INC$05FF

72

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

Primjer 3.2. Pretpostavimo da je strojna instrukcija koja slijedi instrukciji INC$Q5EF instrukcija LDA $07 te da njoj slijedi instrukcija . Slika 3.9 prikazuje sa^ajmemorije. Instrukcija LDA $07 odreuje operaciju "punjenja" (ptnemonik LDA specificira operaciju Load - puni) akumulatora AC s podatkom koji se nalazi na memorijskoj lokaciji 0007(heksadekadno). Instrukcija LDA koristi adreslranje nulte memorijske stranice (raspon adresa od 0000 do 00FF) ili kako se jo naziva izravno kratko adreslranje. Znaajka ovog naina adresiranja je da je dovoljna adresna komponenta duljine samo jednog bajta. Podrazumijeva se da je znaajniji bajt adrese 00 (heksadekadno). Dakle, adresa memorijske lokacije s koje e se dohvatiti podatak i smjestiti u akumulator AC je: 0007 (heksadekadno).
adresa ^ sadraj

0006
0007 0008 A3

00FF 0100 0101 0102 0103 0104 0105 0106 7C 05 FF 96 07 43 sljedea inst. } LDA $07 INC $05FF

SI. 3.9 Prikaz sadraja dijela memorije za Primjer 3.2. Operacijski kod instrukcije LDA je 96 (heksadekadno), a instrukcija se sastoji od dva bajta: operacijskog koda i manje znaajnog bajta adrese operanda (07). Instrukcija COMA pretvara poetni sadraj akumulatora AC u njegov jedinini komplement Instrukcija COMA ima operacijski kod 43 (heksadekadno) i duljine je samo jednog bajta. Ako pretpostavimo daje sadraj memorijske lokacije 0007 A3: M(0007)=A3, tada posljedica izvoenja programskog odsjeka: LDA $07 COMA je (AC) = 5C; u akumulatoru AC je pohranjen jedinini komplement operanda A3.

S. R1BARI - GRAA RAUNALA

73

Slika 3.10 prikazuje stanje na sabirnicama tijekom izvoenja gornjeg programskog odsjeka. Vidimo i ovdje da tijekom faze I Z V R I instrukcija COMA ne koristi vanjsku sabirnicu te da se procesor elektriki odspaja od sabirnice.
perioda #1 perioda #2 perioda #3 perioda #4 perioda

perioda

/ \ / \
^ 0103 ^^ 0104

1
^^

\
0007

/ \ / \ ./ \ ..
p.
* #

AB0-AB15

^^

0105

^ 4

itaj

/ \
i")
'

\ / \
4 )

* *

t p.

Pii

* *

h w

DBO - DB7

* *

vnjeme pristupa memoriji

wgenda:
" * - stanje visoke impedancije faza pribavi faza izvri

>4-

faza pribavi

faza izvri

Si. 3.10 Vremenski dijagram stanja na sabirnicama {Primjer3.2.)

Ako analiziramo model procesora i primjer izvoenja instrukcija (INC $05FF, LDA $07, COMA), uoit emo da je procesor akumulatorsko orijentiran procesor, da su mu strojne instrukcije promjenjive duljine (jedan bajt, dva bajta ili tri bajta) te da vrijeme njihova izvoenja varira od dvije do est perioda signala vremenskog voenja - ovisno sloenosti strojne instrukcije. Osim toga, vidimo da pored instrukcije LDA i STA (engl. store - pohrani), procesor komunicira u fazi IZVRI s memorijom i instrukcijom INC koja je po svom znaenju aritmetika. Ove nabrojene znaajke u velikoj mjeri odreuju arhitekturu CISC (Complex Instruction Set Computer) pa emo potpuno opravdano opisani model 8-bitnog procesora smatrati CISC modelom (bez obzira na njegovu jednostavnost). Upoznali smo se pojednostavljenim modelom procesora i analizirali izvoenje strojnih instrukcija, meutim, postavlja se pitanje koliko se model procesora razlikuje od modela stvarnih 8-bitnih procesora. U priruniku za 8-bitni mikroprocesor MC 6800 moemo nai sljedee podatke koji se odnose na instrukciju INC (Tablica 3.1.) Nain adresirana Instrukcija Mnemonik Izravni (engl. Direct Extended) operacijski kod (OP) inkrement INC C7 broj perioda H 6 broj bajtova

(#)
3

Oblica 3.1. Detalj iz prirunika za mikroprocesor M C 6800

74

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC I RISC PROCESORA

Iz tablice 3.1 vidimo da je broj perioda signala vremenskog voenja potreban za izvoenje strojne instrukcije INC jednak broju perioda za na model procesora. Duljina strojne instrukcije iznosi tri bajta kao i u naem modelu. Slika 3.11 prikazuje model mikroprocesora MC 6800. Vidimo da se model MC 6800 razlikuje samo u nekoliko detalja: MC 6800 je takoer^laimulato*sko orijentiran procesor, ali ima dva akumulatora: A i B; osim programskog registra PC,)MC 6800 ima 16-bitni registar SP (Stack Pointer) registar kazalo stoga i 16-bitni indeksni registar IX.
sabirnica podataka DB0-DB7

meuspremnik podataka MDR

(8)

interna sabirnica

akumulator

(8)

akumulator

(8)

instrukcijski registar

(8)

IX indeksni registar
(16)

programsko brojilo sklopovi za dekodiranje SP kazalo stoga

P C

( 1 6 )

ALU

( 1 6 )

registar zastavice (CCR) uvjeta

^
adresni meuspremnik MAR

sklopovi za vremensko voenje i upravljaki sklopovi

( 1 6 )

signal vremenskog voenja i upravljaki signali

adresna sabirnica

AB0-AB15

Slika 3.11

Model mikroprocesora MC 6800 Funkciju registra kazala stoga SP upoznat emo u nastavku kada bude rijei o stogu. Indeksni se registar upotrebljava pri indeksnom nainu adresiranja, pri kojem se adresa (ili tonije adresna komponenta) u instrukcijskoj rijei i sadraj indeksnog registra pribrajaju u cilju odreivanja stvarne (efektivne) adrese operanda. Na primjer, ako je sadraj 16-bitnog indeksnog registra (IX) = 0300 (heksadekadno), a instrukcija LDA koristi indeksni nain adresiranja: LDA 2,X, pri emu je, u skladu s asemblerom ,X oznaka indeksnog naina adresiranja, onda e sadraj akumulatora biti napunjen sa sadrajem memorijske lokacije ija je adresa 0302 jer se ona dobiva kao 0300 + 2, pri emu je 2 adresna komponenta sadrana u instrukciji LDA 2,X.

S. RIBARI - GRAA RAUNALA

75

Indeksnom registru pridruene su strojne instrukcije poput LDX (napuni indeksni registar), STX (pohrani sadraj indeksnog registra), INX (inkrementiraj sadraj indeksnog registra) i DX(dekrementiraj sadraj indeksnog registra) kojima se olakava pristup strukturama podataka koje su pohranjene u memoriji. Mikroprocesor MC 6800 koristi dvofazni signal vremenskog voenja, odnosno signale <j>l i 4 > 2
sadraj PC-a na adresnu sabirnicu sadraj p r o g r a m s k o g brojila PC poveava se za 1

< D 1
02

/
podaci se postavljaju na vanjsku sabirnicu podataka podaci su prihvaeni u procesoru ili memoriji

SI. 3.12 Dvofazni signal vremenskog voenja

(slika 3.12). Signal <j)1 zaduen je za sinkronizaciju aktivnosti na adresnoj sabirnici, a 2 za sinkronizaciju aktivnosti na sabirnici podataka.
#1

4 1 "V

#2

#3

>4

"V

"\n

/
R/W

\
\ d Z Z t
adresa (znaajniji bajt)

\
C 3 .........
adresa (manje znaajniji bajt)

\
= C Z > : .
podatak iz akumulatora

00-D7

SI. 3.13 Vremenski dijagram stanja na sabirnicama za instrukciju STAA$010F (MC 6800)

76

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

Slika 3.13 prikazuje stanje na sabirnici raunala koje se temelji na MC 6800 (na slici su oznaene vremenske meuzavisnosti signala c > j 1 i aktivnosti na adresnoj sabirnici, odnosno signala <j)2 i aktivnosti na sabirnici podataka) za instrukciju STA A $010F; pohrani sadraj akumulatora A na memorijsku lokaciju 010F. Slika 3.14 prikazuje model 8-bitnog mikroprocesora Intel 8080. Mikroprocesor ima jedan 8-bitni akumulator A, ali ima i est 8-bitnih registara ope namjene B, C, D, E, H i L koji kad se pojavljuju u paru B - C , D - E i H - L ine 16-bitne registre. Registarski par oznaen kao W - Z ima funkciju registra brojila podataka. S obzirom na znaajke modela, mikroprocesor Intel 8080 moemo promatrati kao registarsko orijentirani procesor.
sabirnica podataka DB0-D87

memorijski registar podataka MDR


(8)

interna sabirnica (8 bita)

akumulator (A)

(8)

privremeni registar (TMP)

instrukcijski registar

w B

(8) (8) (8) (8)

(8) (8) (8) (8) ^

(8)

x/
ALU
zastavice (8)

SZ
sklopovi za dekodiranje

D H

kazalo stoga SP programsko brojilo PC

sklop za inkrementiranje/dekrementiranje

upravljaki signali

N 7

^
memorijski adresni registar MAR ^

sklopovi za vremensko voenje i upravljaki sklopovi

signal vremenskog voenja i upravljaki signali

adresna sabirnica AB0-AB15

SI. 3.14 Model mikroprocesora Intel 8080

S. RIBARI - GRAA RAUNALA

77

r
i

>

3.5. POJEDNOSTAVLJENI MODEL RISC PROCESORA


Slika 3.15 prikazuje pojednostavljeni model 32-bitnog RISC procesora. Odmah moemo uoiti neke bitne arhitektonske znaajke koje ga razlikuju od pojednostavljenog 8-bitnog CISC procesora: procesor je registarsko orijentiran stroj - ima 32 32-bitna registra ope namjene (RO - R31) i ima tri 32-bitne interne sabirnice - sabirnicu operanda A, sabirnicu operanda B i sabirnicu rezultata C.Trosabirnika interna struktura upuuje na to da se posebna panja posvetila poboljanju performanse procesora. Naime, iskustvo i analize pokazali su da samo jedna interna sabirnica kao komunikacijski put predstavlja usko grlo u djelovanju procesora i time negativno utjee na performansu procesora. Na primjer, za osnovnu operaciju zbrajanja sadraja dvaju registara iz skupa registara ope namjene, u sluaju jedne interne sabirnice, operandi se moraju slijedno u vremenu prenijeti u aritmetiko-logiku jedinicu. U sluaju trosabirnike strukture, oba se operanda iz skupa registara ope namjene prenose istodobno (jedan sabirnicom operanada A, a drugi sabirnicom operanada B), istodobno je mogue prenijeti i rezultat prethodne aritmetike ili logike operacije preko sabirnice rezultata C u odredini registar u skupu registara ope namjene. Dakle, istodobno se izvode dvije operacije itanja i jedna operacija upisa u skupu registara ope namjene. Naravno, zahtijeva se posebna izvedba skupa registara - on mora biti organiziran kao dvoizlazni za operaciju itanja i jednoulazni za operaciju pisanja. Analize pokazuju da se, na primjer, osnovne instrukcije tipa add (zbroji) i Id (puni) ubrzavaju u odnosu na jednosabirniku izvedbu procesora za 48% i vie posto. Uoimo jo jednu znaajku modela - registri ope namjene (RO - R31), instrukcijski registar IR, programsko brojilo PC te suelni registri - memorijski adresni registar MAR i memorijski registar podataka MDR - svi su oni duljine 32 bita. Model RISC procesora opisat emo na ISA (Instruction Set Architecture) razini. Prikazat emo njegov programski model i podrobno opisati skup strojnih instrukcija. Podsjetimo se, programski model procesora ine one njegove sastaynjce koje su vidljive i dohvatljive programeru kada programira u zbirnom jeziku (aseraoeru\ Lijevi dio slike 3.16 prikazuje programski model procesora koji se sastoji samo pd 32 32^bitna registra ope namjene (RO - R31), 32-bitnog programskog brojila PC i 32-bitnog instrukcijskog registra IR. Desni dio slike 3.16 predstavlja model memorijske jedinice (memorije) za raunalo temeljeno na RISC procesoru. Vidimo da je memorija, unato tomu to je procesor 32-bitni, bajtno organizirana i da ima bajtnu adresnu zrnatost - svakoj memorijskoj rijei koja je duljine 8-bita jednoznano je pridruena adresa. Usprkos bajtnoj adresnoj zrnatosti, procesor moe dohvatiti samo 32-bitnu rije - 4 slijedna bajta. etiri se bajta dohvaena iz memorije smjetaju u 32-bitni registar tako da najmanje znaajnom bajtu registra odgovara bajt s najviom memorijskom adresom (slika 3.17). Takav se nain ureenja slijeda bajtova naziva Big-Endian Byte Ordering.

78

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

C sabirnica

A sabirnica

B sabirnica

SI. 3.15 Pojednostavljeni model 32-bitnog procesora RISC

S. RIBARI - GRAA RAUNALA

79

b31 RO R1 R2

bo

b7

bo

32 32-bitna registra ope namjene

R29 R30 R31 232 bajta

b31

bo

PC

b31 IR

bo

232-3
232-2 2 32 -1

programski model RISC procesora

radna memorija

SI. 3.16 Programski model raunala RISC Primjer 3.3. Obino se, posebice u novijim procesorima, duljina rijei procesora ne poklapa s duljinom rijei u memoriji koju smatramo fizikom jedinicom informacije - onoj kojoj je jednoznano pridruena adresa. U sluaju naeg modela RISC imamo 32-bitnu rije procesora, a fizika jedinica informacije je bajt - svakom je bajtu u memoriji jednoznano pridruena adresa. Glede naina smjetanja slijeda bajtova u registre procesora razlikujemo dvije osnovne organizacije: i) ureenje slijeda batova slijeva udesno ili ureenje po njihovim rastuim adresama (engl. Big-Endian Byte Ordering). U tom se ureenju bajt koji ima najviu memorijsku adresu smjeta na poziciju najmanje znaajnog bajta u registru procesora. Slijedno tome, bajt s najniom adresom nalazi se na poziciji najznaajnijeg bajta u registru procesora. Slika 3.17 prikazuje ureenje slijeda bajtova po njihovim rastuim adresama; i i) u reenje si ij ed a bajtova zdesna ulijevo i I i ureenje po njihovim padajuim adresama (engl. Little-Endian Byte Ordering). U tom sluaju najmanje znaajan bajt u registru ima najniu adresu (slika 3.18), a najznaajniji bajt odgovara bajtu koji u memoriji ima najviu adresu.

80

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

sadraj

adresa

AC 01 FF 7C

aaaa aaaa+1 aaaa+2 aaaa+3 aaaa+4


smjer rasta adresa

bajt b31 b24 b23 b16 b15 b8 b7 b0

AC

01

FF

7C
i

memorija

32-bitni registar

najznaajniji bit

najmanje znaajan bit

SI. 3.17 Ureenje slijeda batova slijeva udesno (Big-Endian Byte Ordering)
sadraj adresa

AC
01

aaaa aaaa+1 aaaa+2 aaaa+3 aaaa+4

FF 7C

i
bajt b31 b24 b23 b16 blS b8 b7 bO

smjer rasta adresa

7C

FF

01

AC

memorija

32-bitni registar
najznaajniji bit najmanje znaajan bit

SI. 3.18 Ureenje slijeda bajtova zdesna ulijevo (Little-Endian Byte Ordering)

Opiimo model RISC procesora na razini strojnih instrukcija. Sve su instrukcije u skupu strojnih instrukcija "vrste" duljine (32 bita). To je jedna od osnovnih znaajki RISC procesora. Druga osnovna znaajka RISC procesora je reduciran skup strojnih instrukcija, odnosno relativno mali broj strojnih instrukcija. Instrukcije se mogu podijeliti na: i) aritmetike i logike instrukcije, ii) instrukcije za pristup memoriji, iii) instrukcije grananja, iv) mjeovite instrukcije.

S. RIBARI - GRAA RAUNALA

81

3.5.1. ARITMETIKE I LOGIKE INSTRUKCIJE


Aritmetike i logike instrukcije moemo razvrstati na one koje specificiraju operacije s jednim operandom (unarne) i one koje odreuju operacije s dva operanda (binarne). Format aritmetike ili logike instrukcije s jednim operandom prikazanje na slici 3.19.
31 27 26 22 21 76 2 1 bO

op

ra

ne koristi se

rc

ne koristi se

SI. 3.19 Format aritmetike ili logike instrukcije s jednim operandom

Instrukcija je organizirana na sljedei nain: pet najznaajnijih bitova (bitovne pozicije 27 - b31) predstavljaju operacijski kod instrukcije. Na temelju njegove duljine moe se zakljuiti da e se skup strojnih instrukcija sastojati od maksimalno 32 razliite instrukcije (25). Naime, podsjetimo se, i za instrukcije vrijedi naelo jednoznanosti - svakoj instrukciji pripada jednoznana bitovna kombinacija sadrana u polju operacijskog koda. Polje ra (bitovne pozicije 22-26) sadrava 5-bitnu kombinaciju koja odreuje jedan od 32 registra u skupu registara ope namjene, tj. registar R[ra], koji e imati ulogu odredita rezultata. 5-bitno polje rc (bitovne pozicije 2-6) odreuje izvorite operanda, odnosno registar R[rc]. Ostala bitovna polja (slika 3.19) na pozicijama bO- bi 7 i b / 7 - b21 u ovom se formatu instrukcije ne koriste. Grupu aritmetikih i logikih instrukcija s jednim operandom ine samo dvije instrukcije: Aritmetika instrukcija: neg ra, rc ; R[ra]- - R[rc],

kojom se izvodi potpuni komplement na operandu dohvaenom iz registra R[rc] i rezultat smjeta u registar R[ra]. Logika instrukcija: notra, rc ; R[ra] <- R[rc],

koja iz registra R[rc] dohvaa operand, pretvara ga u jedinini komplement i smjeta ga u odredini registar R[ra]. Primjer 3.4. Na slici 3.20 prikazanje format strojne instrukcije neg r16> r22. Operacijski kod instrukcije je 01111 (binarno). Odredimo to e biti posljedica izvoenja ove instrukcije ako su neposredno prije njezina izvoenja sadraji registara R[16] = 00000000 i R[22] = 00000AFF.
31 27 26 22 21 17 6 2 1 bO

01111

10000

ne koristi se

10110

ne koristi se

SI. 3.20 Format instrukcije neg r16, r22

Nakon izvoenja instrukcije sadraji registara R[16] i R[22] bit e sljedei: R[22j = 00000AFF - sadraj izvorinog registra se ne mijenja, R[16] = FFFFF501 - registar R[16] sadrava potpuni komplement, tj. negativnu vrijednost operanda OOOOOAFF.

82

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

Grupu aritmetikih i logikih instrukcija s dvama operandima ine instrukcije: add ra, rb, rc ; R[ra] - R[rb] + R[rc] sub ra, rb, rc ; R[ra] - R[rb] - R[rc] and ra, rb, rc or ra, rb, rc ; R[ra] - R[rb] A R[rc]; pri emu A oznaava logiko I ; R[ra]- R[rb] v R[rc]; pri emu v oznaava logiko ILI

Slika 3.21 prikazuje format za gornje strojne instrukcije. Ve iz njihovih mnemonika vidimo da su instrukcije takve da rabe tri adresna polja - dva za specifikaciju izvora operanada rb i rc te jedno za specifikaciju odredita za rezultat ra.
b31 b27 b26 b22 b21 b17 b16 b12 b i 1 bO

op

ra

rb

rc

ne koristi se

SI. 3.21 Format aritmetike ili logike instrukcije s dvama operandima

Uoavamo da je format instrukcije troadresni. Svakoje adresno polje duljine 5 bitova i slui za specifikaciju registara u skupu registra koji e sudjelovati u operaciji. Troadresni format instrukcije svojstven je za RISC procesore i u njemu se zrcali jedan od zahtjeva koji je u skladu s RISC naelom oblikovanja procesora: Svi operandi koji sudjeluju u aritmetikim ili logikim operacijama moraju se prethodno nalaziti u registrima iz skupu registara ope namjene. Za takav tip instrukcija kaemo da su registar - registar. Osnovni razlog za takav zahtjev jest smanjiti promet podataka izmeu procesora i memorijske jedinice to vodi ubrzanju operacija. U naelu vrijedi daje pristup memorijskoj jedinici vremenski jedna od najzahtjevnijih operacija. Za model CISC procesora razmatrali smo instrukciju tipa INCM, gdje je M adresa memorijske lokacije, koja je s obzirom na mjesto izvora i odredita operanda instrukcija tipa memorija - memorija. Instrukcije koje obavljaju aritmetiku ili logiku operaciju na operandu koji je pohranjen u memoriji, a zatim rezultat operacije pohranjuju natrag u memoriju, nisu doputene u RISC arhitekturi. U grupi aritmetikih i logikih instrukcija nalaze se instrukcije koje koriste usputno ili ukljuno adresiranje (engl. immediate) u kojem je vrijednost operanda neposredno ukljuena u samoj instrukciji (u polju c2) (slika 3.22). Za model RISC procesora to su sljedee instrukcije: addi ra, rb, c2 ; R [ra] - R[rb] + c2 andi ra, rb, c2 ; R[ra] <- R[rb] A C2 (logiko I) ori ra, rb, c2 ; R[ra]- R[rb] v c2. (logiko ILI) Zadnje slovo u tro- ili etveroslovanom mnemoniku i (immediate) upuuje nas na to daje rije o instrukciji koja koristi usputni nain adresiranja (engl. immediate addressing). Naravno, i operacijski se kodovi ovih instrukcija razlikuju od instrukcija add, and i or. Na primjer, operacijski kod za instrukciju add je 01100, dok je za instrukciju addi 01101. Podsjetimo se, u potpoglavlju 3.3. rekli smo da se u operacijskom kodu nalazi i informacija o nainu adresiranja. Slika 3.22 prikazuje format strojne instrukcije koja koristi usputno adresiranje.
b31 b27 b26 b22 b21 b17 b16 bO

op

ra

rb

c2

SI. 3.22 Format strojne koja koristi usputno adresiranje

S. RIBARI - GRAA RAUNALA

83

Vidimo da je polje c2 predvieno za smjetanje usputnog podatka u instrukciji duljine 17 bitova (bO- b 76). Taj se usputni podatak treba pretvoriti u 32-bitni i tek onda moe sudjelovati u aritmetikoj ili logikoj operaciji. Pretvorba 17-bitnog podatka u 32-bitni, neposredno prije negoli se izvede specificirana aritmetika ili logika operacija, obavlja se u aritmetiko-logikoj jedinici posebnim postupkom koji se naziva irenje bita predznaka (eng\. sign-extended) koji emo opisati u dijelu ovog pot poglavlja instrukcije za pristup memoriji. Razlozi uporabe usputnog naina adresiranja dvojaki su: djelotvorno se iskoritava memorija (na istoj memorijskoj lokaciji na kojoj je pohranjena instrukcija pohranjen je i podatak), ubrzava se izvoenje programa (ve se tijekom faze PRIBAVI dohvaa i operand koji je ukljuen u instrukciji). U skupu aritmetikih i logikih instrukcija nalaze se i posmane instrukcije (engl. shift instruction). One posmiu operand ulijevo, udesno ili kruno za broj binarnih mjesta od 0 - 31. Slika 3.23 prikazuje format posmane instrukcije.
b31 b27 b26 b22 b21 bi 7 bi 6 b5 b4 bO

op

ra

rb

ne koristi se

iznos

SI. 3.23 Format posmane instrukcije 5-bitno polje (pozicije b27 - b31) sadrava operacijski kod kojim se specificira jedna od operacija posmaka (shr-posmak udesno, shra- aritmetiki posmak udesno, sh/-posmak ulijevo, shc - kruni posmak), 5-bitno polje ra odreuje odredini registar R[ra] u koji e se smjestiti posmaknuti operand, a 5-bitno polje rb specificira izvor operanda, tj. registar R [rb]. Pet najmanje znaajnih bitova (bO - b4) instrukcije sadrava 5-bitni nepredznaeni cijeli broj kojim se specificira za koliko e se mjesta operand posmaknuti (od 0 - 31 binarnih mjesta). Na primjer, instrukcija (slika 3.24) shr rl2, r14,5 posmie operand dobavljen iz R[14] za 5 mjesta udesno i rezultat pohranjuje u R[12].
b31 b27 b26 b22 b21 b17 b i b5 b4 bO

11010

01100

01110

ne koristi se

00101

op kod

ra

rb

iznos p o s m a k a

SI. 3.24 Format instrukcije shr r12, rl4,5 U modelu RISC razlikujemo dvije vrste posmanih instrukcija udesno: logiki posmak udesno shr i aritmetiki posmak udesno shra. Slika 3.25 prikazuje oba naina posmaka udesno. Pri logikom posmaku udesno za 1s n <; 31, n najznaajnijih bitovnih pozicija poprima vrijednost 0. Aritmetiki posmak udesno izvodi se tako da se najznaajniji bit operanda ne posmie, ve ostaje sauvan na tom mjestu i iri se za n - 1 mjesta udesno. Nakon toga mu se pridruuju ulanavanjem bitovi izvornog operanda b31 - bn.

prije logikog posmaka udesno a) logiki posmak udesno

nakon logikog posmaka udesno

prije aritmetikog posmaka udesno

bit predznaka ostaje sauvan

( 3
>s

nakon aritmetikog posmaka udesno

b) aritmetiki posmak udesno

SI. 3.25 Logiki a) i aritmetiki posmak udesno b)

Primjer 3.5. Prikaimo kako se izvodi aritmetiki posmak posmanom instrukcijom: shra ra, rb, n shra (:=op = 11011(2)) R[ra] <31...0> <- [n@R[rb] <31 >) # R[rb] <31...n>,

gdje n@ R[rb] <31 > oznaava operaciju pojavljivanja n puta bita predznaka izvornog operanda, a # ulanavanje. Na primjer za: shra r4, r5,6 ako je R[5] = 10100010000000111111111111111001 i R[4] = xxxx..... n =6 R[5] <31>=1 n@1 = 6@1 =111111 konaan rezultat aritmetikog posmaka udesno za 6 mjesta je: R[4] = 111111 10100010000000111111111111 Umjesto 5-bitnog nepredznaenog cijelog broja, smjetenog na bitovom pozicijama bOb4 posmane instrukcije (slika 3.23) kojim se specificira za koliko e se mjesta operand posmaknuti, moe se u posmanim instrukcijama specificirati registar iz skupa registara u kojem e pet najmanje znaajnih bitova odreivati iznos posmaka. U tom sluaju instrukcije: sh ra, rb, rc ; posmakni R[rb] udesno za broj mjesta odreen u R[rc] i pohrani rezultat u R[ra] ; posmakni (aritmetiki) R[rb] udesno za broj mjesta odreen u R[rc] i pohrani rezultat u R[ra] ; posmakni R[rb] ulijevo za broj mjesta odreen u R[rc] i pohrani shl ra, rb, rc rezultat u R[ra] shc ra, rb, rc ; kruno posmakni R[rb] za broj mjesta odreen u R[rc] i pohrani rezultat u R[ra] imaju format prikazan na slici 3.26. shra ra, rb, rc xxx

S. RIBARI - GRAA RAUNALA

85

b31

b27 b26

b22 b21

b i 7 bi 6

b12 b i 1

b5 b4

bO

op

ra

rb

rc

ne koristi se

00000

SI. 3.26 Format posmane instrukcije za sluaj kada je iznos posmaka pohranjen u registru R[rc]

3.5.2. INSTRUKCIJE ZA PRISTUP MEMORIJI


Arhitektura RISC vrlo se esto naziva i load-store arhitektura zato to je jedna od vanih znaajki RISC procesora da se jedino strojnim instrukcijama vrste load i store moe pristupiti memoriji. Na primjer, ve smo spomenuli, instrukcija / A / C g d j e je M adresa memorijske lokacije, nije doputena u RISC arhitekturi. Model RISC procesora ima etiri instrukcije load, od toga dvije "prave" (Id i Idr) za dohvat operanda iz memorije i smjetanje u jedan od registara u skupu registara ope namjene te dvije instrukcije (la i lar) koje se rabe za oblikovanje 32-bitne adrese i njezino smjetanje u jedan od registara u skupu registara ope namjene.
b31 b27 b26 b22 b21 b17 b16 bO

op

ra

rb

c2

SI. 3.27 Format instrukcije za pristup memoriji: Id, lar i st

Opiimo prvo instrukciju load (mnemonik Id). Slika 3.27. prikazuje format instrukcije Id. Instrukcija se izvodi tako da se dohvaeni podatak iz memorije pohranjuje u odredini registar koji je odreen 5-bitnim poljem ra. Adresa memorijske lokacije s koje se dohvaa podatak odreuje se na temelju 17-bitne vrijednost koja je smjetena u polju c2 (slika 3.27), i to na sljedee naine: ako je polje rb jednako 00000, onda je to "signal" upravljakoj jedinici da se 32-bitna adresa memorijske lokacije formira uporabom 17-bitne vrijednosti smjetene u polju c2 na koju se primjenjuje postupak irenja bita predznaka (signal-extended). Slika 3.28 pojanjava postupak irenja bita predznaka. Bit na bitovnoj poziciji bi6 predstavlja bit predznaka 17-bitne konstante upisane u polju c2. On se postupkom irenja bita predznaka kopira na sve bitovne pozicije od b17 do b31 i na taj nain oblikuje 32-bitnu vrijednost koja se tumai kao 32-bitna adresa. Dakle, ako je b 16 jednako 0, onda e bitovi na bitovnim pozicijama od b17o b31 poprimiti vrijednost 0. U sluaju kada je b16 jednako 1, onda e bitovi na bitovnim pozicijama od b17 do b31 poprimiti vrijednost 1. Ovakav nain adresiranja, odnosno odreivanja efektivne adrese naziva se u RISC modelu izravan ili direktan.

86

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

bi 6

c2

bo

irenje bita predznaka

b16

C2

bO

irenje bita predznaka

SL 3.28 Postupak irenja bita predznaka

Primjer 3.6. Instrukcija u zbirnom jeziku: Id r2,65 ; R[2] - M [65] ima format prikazan na slici 3.29. Instrukcija ovako zapisana, bez specifikacije rb podrazumijeva da je rb - 0. Operacijski kod instrukcije Id je 00001, ra je 00010 i c2 je: b16

0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1,

bO

i odgovara vrijednosti 65 (dekadno). irenjem bita predznaka dobiva se 32-bitna adresa memorijske lokacije koja je izvor operanda: b31 b16 b O 000001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

Efektivna, 32-bitna adresa je 00000041 (heksadekadno). (Opaska: pod efektivnom adresom razumijeva se konana adresa pomou koje se pristupa podatku - operandu ili pomou koje se pristupa odreditu - lokaciji na kojoj se pohranjuje podatak (ili rezultat neke operacije).)
b31 b27 b26 b22 b21 b17 b16 bO

00001

00010

00000

00000000001000001

op SI. 3,29 Format instrukcije Id r2,65

ra

rb

c2

ako je, meutim, polje rb razliito od 0, tada se adresa memorijske lokacije oblikuje kao c2 + R[rb], pri emu se, neposredno prije zbrajanja, konstanta c2 pretvara irenjem bita predznaka u 32-bitnu vrijednost. Ovaj se nain adresiranja naziva bazno adresiranje s pomaknuem

S. RIBARI - GRAA RAUNALA

87

(engl. based, displacement addressing mode). Vano je napomenuti da se efektivna adresa izvorita rauna tijekom izvoenja instrukcije (engl. run time), a ne tijekom prevoenja programa. Ako c2 ima vrijednost 0, onda je rije o registarsko posrednom ili registarsko indirektnom nainu adresiranja jer je adresa izvorita odreena 32-bitnim sadrajem registra R[rb]. Instrukcija loadaddress (mnemonik/a) je specifina load instrukcija koja ne dohvaa operand iz memorije, ve samo slui za oblikovanje 32-bitne adrese koja e biti pohranjena u jednom od registara iz skupa registara ope namjene. Na primjer, instrukcija: la ra, c2 ; R [ra] - c2 na temelju 17-bitne konstante c2, irenjem bita predznaka oblikuje 32-bitnu adresu i pohranjuje je u R[ra]. Instrukcija la koristi i bazno adresiranje s pomaknuem: la ra, c2(rb) ; R[ra] <-c2 + R[rb] U oba se potonja sluaja na c2 primjenjuje irenje bita predznaka. Napomenimo jo da se za bazno adresiranje s pomaknuem efektivna adresa koja e biti smjetena u R[ro] rauna tijekom izvoenja programa (a ne tijekom prevoenja). Instrukcija store (mnemonik st) koristi jednak format instrukcije kao load ali izvodi "obrnutu" operaciju: pohranjuje sadraj specificiranog registra u memoriju. I ovdje vrijedi: ako je rb = 0, onda se adresa odredita dobiva irenjem bita predznaka 17-bitne vrijednosti upisane u polju c2. ako je rb * 0, onda se efektivna adresa odredita dobiva kao c2 + R[rb]. Primjer 3.7. Slika 3.30 prikazuje format instrukcije: st r22,27(r6) ; M[27 + R[6]] <- R[22]
b16 bo

00011

10110

00110

00000000000011011

op SL 3.30 Format instrukcije str22,27(r6)

ra

rb

c2

Primjer instrukcija st koja koristi registarsko posredni nain adresiranja: str 16,0(r9) pohranit e sadraj registra R[16] na memorijsku lokaciju ija je adresa sadrana u registru R[9],tj.M[R[9]]-R[16]. Primjer 3.8. Za model CISC procesora razmatrali smo instrukciju tipa INCM, gdje je M adresa memorijske lokacije, koja je s obzirom na mjesto izvora i odredita operanda instrukcija tipa memorija-memorija. Instrukcije koje obavljaju aritmetiku ili logiku operaciju na operandu koji je pohranjen u memoriji, a zatim rezultat operacije pohranjuju natrag u memoriju, nisu doputene u RISC arhitekturi. To znai da se operacija s jednakim rezultatom

88

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

kao stoje rezultat izvoenja CISC instrukcije INCM mora nadomjestiti u RISC procesoru sa sljedeim programskim odsjekom: Id ra, c2(rb) addi ra, raj st ra, c2(rb) ; R[ra] <- M[c2 + R [rb]] ; R [ra] - R [ra] + 1 ; M[c2 -f R[rb]) R [ra]

Prije negoli objasnimo instrukcije koje koriste relativni ili odnosni nain adresiranja Idr, str i lar, pogledajmo ogranienja izravnog ili direktnog adresiranja kod kojeg se efektivna adresa odreuje samo na temelju irenja bita predznaka. Pretpostavimo da je 17-bitna vrijednost zapisana u polju c2 pozitivna. U skladu s notacijom potpunog komplementa to znai da je najznaajniji bit [bi6) jednak 0. Raspon 17-bitne konstante je u tom sluaju 00000000000000000 - 01111111111111111 (binarno). irenjem bita predznaka odreen je adresni potprostor: 00000000 - 0000FFFF (heksadekadno). Pretpostavimo da je sada 17-bitna konstanta negativna (najznaajniji bit je 1). U tom je sluaju raspon konstante 10000000000000000 - 11111111111111111 (binarno). irenjem bita predznaka odreenje drugi adresni potprostor: FFFF0000 - FFFFFFFF (heksadekadno) kojem se moe pristupiti instrukcijama Id ili sf izravnim nainom adresiranja. Svaki od ta dva potprostora veliine je 64 K (216) bajtova.To je samo mali dio od ukupnog adresnog prostora veliine 4G (232) bajtova. Pristup operandima koji su pohranjeni izvan spomenuta dva potprostora ostvaruje se uporabom registarsko posrednog naina adresiranja i baznog adresiranja s pomaknuem. Instrukcija loadrelative (mnemonik/r): Idr ra, cl ;R[ra] <-M[PC + c7] ima format instrukcije prikazan na slici 3.31.
b31 b27 b26 b22 b21 bO

op
SI. 3.31 Format instrukcije Idr i str

ra

cl

Efektivna se adresa izvorita operanda PC + c1 rauna tijekom izvoenja programa i relativna je u odnosu na trenutni sadraj programskog brojila PC. Primjeujemo da je ovaj nain adresiranja slian baznom adresiranju s pomaknuem samo to sada ulogu baznog registra preuzima programsko brojilo PC. Pomaknue je sadrano u 22-bitnom instrukcijskom polju cl (slika 3.31) tako da je omogueno adresiranje operanada u rasponu od 221 u odnosu na sadraj programskog brojila PC. Relativni nain adresiranja ini instrukcije, a time i programe premjestivim (engl. relocatable) - programski moduli i njima pripadajui podaci mogu se premjetati u memoriji bez mijenjanja pomaknua (jer je njihov poloaj definiran tekuim sadrajem programskog brojila PC). Primjer 3.9. Instrukcija: Idr rl 6,-65 dohvaa operand s memorijske lokacije M[PC - 65] i smjeta ga u R[16].

S. RIBARI - GRAA RAUNALA

89

Slika 3.32 prikazuje format instrukcije. 5-bitni operacijski kod instrukcije je 00010, a 22-bitna konstanta (pomaknue) je 3FFFBF.
b31 b27 b26 b22 b21 bO

00010
op S I 3.32 Format instrukcije Idrr16, -65

10000
ra

1111111111111110

111111

cl

Instrukcija store relative (mnemonik str) ima isti format kao i instrukcija Idr (slika 3.31 ): strra, cl ; M[PC + cl]- R[ra]

pohranjuje sadraj registra R[ra] na memorijsku lokaciju s efektivnom adresom PC + cl. Ako paljivije pogledamo klasifikaciju tipova instrukcija za na model RISC procesora, uoit emo da nema strojnih instrukcija za ulazne i izlazne operacije. Razlog tomu je to RISC procesor koristi memorijsko ulazno-izlazno preslikavanje (engl. memory mapped I/O) u kojem se adrese registra ulazno-izlaznih jedinica smatraju dijelom memorijskog adresnog prostora te se tim registrima pristupa instrukcijama load i store. U tom sluaju instrukcija st ima funkciju izlazne instrukcije (out), a instrukcija Id funkciju ulazne instrukcije (in).

3.5.3. INSTRUKCIJE GRANANJA


Instrukcije grananja imaju vanu ulogu - one su jedan od preduvjeta automatskom izvoenju programa jer se, u pojedinim njegovim tokama (ovisno o vrijednosti neke varijable), moe izabrati alternativni put izvravanja programa - granati u programu, tj. prenijeti upravljanje na neku ciljnu instrukciju koja nije slijedna instrukcija u programu. Instrukcije grananja izvode se tako da se tijekom faze IZVRI modificira sadraj programskog brojila PC. Na taj je nain odreena ciljna instrukcija koja e biti pribavljena u sljedeoj fazi PRIBAVI. Model RISC procesora ima dvije vrste instrukcija grananja: branch (mnemonik br) i branch and link (mnemonik brl). Slika 3.33 prikazuje format instrukcije br.
b31 b27 b26 b22b21 b17b16 b12 b i 1 b3 b2 b0

op

ne koristi se

rb

rc

ne koristi se

Cond

SI. 3.33 Format instrukcije br

Opiimo format instrukcije. Operacijski kod instrukcije, kao i kod svih ostalih formata za na model RISC procesora, zauzima pet najznaajnijih bitovnih pozicija (b27-b31). Polja b22 - b26 se ne koriste. Polje rb (bitovne pozicije b17~ b21) odreuju registar R[rb] koji sadrava 32-bitnu adresu ciljne instrukcije. Sadraj registra R[rb] bit e prenesen u programsko brojilo PC tijekom faze IZVRI. Polje rc odreuje registar R[rc] iji e sadraj biti ispitan. Ovisno o ishodu tog ispitivanja tijekom izvoenja instrukcije grananja donijet e se odluka hoe li se grananje dogoditi. Ako uvjet grananja nije ispunjen, program e se nastaviti sa sljedeom instrukcijom u slijedu. Tri najmanje znaajna bita instrukcije, oznaena s Cond, odreuju koji se uvjet grananja ispituje. On (uvjet grananja) je i odreen mnemonikom instrukcije grananja:

90

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

mnemonik brriv, brlnv br, brl brzr, brlzr brnz, brlnz brpl, brlpl brmi, brlmi

Cond <2...0> 000 001 010 011 100 101

Uvjeti grananja nikada bezuvjetno (uvijek granaj) ako je R[rc] = 0 ako je R[rc] * 0 ako je R[rc]<31> = 0 ako je R[rc] < 0

Polje rc specificira registar iji e se sadraj ispitati, a polje rb odreuje registar koji sadrava adresu ciljne instrukcije (slika 3.33). Na primjer, instrukcija "granaj ako je nula" brzrr31,r1 ; PC R[31] ako je R[1] = 0 bit e prevedena asemblerom u oblik u kojem e tri najmanje znaajna bita 32-bitne instrukcije imati vrijednost 010 i time odrediti uvjet koji se ispituje. No treba pripaziti, naime sve instrukcije vrste br (br, brzr brnz brpl brmi) imaju isti operacijski kod (01000), ali se razlikuju po 3-bitnoj kombinaciji sadranoj u polju Cond Na neki nain, ovo 3-bitno polje moemo promatrati kao "proirenje" operacijskog koda. Osim instrukcija uvjetnog grananja, u skupu instrukcija nalaze se i instrukcije bezuvjetnog grananja: br i brl. Za te instrukcije 3-bitno polje Cond ima vrijednost 001. Instrukcije ne ispituju bilo kakav uvjet, ve obavljaju grananje smjetanjem sadraja registra R[rb] u programsko brojilo PC. Instrukcija branch and link (mnemonik brl) ima operacijski kod 01001 i izvodi se tako da prije grananja pohranjuje sadraj programskog brojila PC u jedan od registara u skupu registara ope namjene (koji poprima ulogu tzv. poveznog registra), a zatim u zavisnosti od uvjeta grana na ciljnu instrukciju. Na primjer, instrukcija "povei i granaj ako je sadraj registra R[rc] pozitivan" brlpl ra, rb, rc izvodi se tako da se prvo sadraj programskog brojila PC smjeta u R [ra], zatim se ispituje uvjet je li sadraj registra R[/r] pozitivan, i ako je, onda se sadraj registra R[rb] smjeta u programsko brojilo PC. Ako uvjet nije ispunjen, sadraj R[rc] nije pozitivan, grananje se nee dogoditi, ali e se sadraj programskog brojila PC ipak pohraniti u R[ra]. Instrukcija brl ima format slian instrukciji br (slika 3.33) samo to su sada bitovne pozicije b22 - b26 namijenjene adresi registra ra. Instrukcije vrste branch and link koriste se u postupcima prijenosa upravljanja izmeu glavnog programa (ili pozivajueg programa) i potprograma (ili pozvanog programa), gdje povezni registar pohranjuje povratnu adresu (o tome vie i podrobnije u poglavlju o upravljakoj jedinici). Moemo primijetiti pomalo"udne"instrukcije brnv(branch never-nikad ne granaj) i brlnv (branch and link never - povei i nikad ne granaj) - instrukcija brnv nee nikada obaviti grananje, ali zato troi vrijeme potrebno za njezino izvoenje te se moe koristiti za vremensku sinkronizaciju (vidi instrukciju nop). Instrukcija brlnv takoer ne grana, ali je posljedica njezinog izvoenja, bez obzira to nema grananja, pohranjivanje tekueg sadraja programskog brojila PC u registar R[ra].

S. RIBARI - GRAA RAUNALA

91

I jo jedno zapaanje, na model RISC procesora nema statusni registar SR sa zastavicama koje koriste instrukcije uvjetnog grananja, ve se uvjeti izravno utvruju ispitivanjem sadraja registra R[rc]. (Opaska: RISC procesori imaju statusni registar koji se obino naziva PSW (Procesor Status Word) u kojem se nalaze zastavice uvjeta, zastavice za indikaciju glavnih stanja procesora te zastavice za rukovanje prekidom. U tom sluaju, kao to je bio sluaj u modelu CISC procesora, instrukcije uvjetnog grananja ispituju stanje zastavica i na temelju njih se donosi odluka o grananju.)

3.5.4. MJEOVITE INSTRUKCIJE


U ovu skupinu svrstavamo strojne instrukcije no operation (mnemonik nop) i instrukciju stop (mnemonik stop). Instrukcija nop (operacijski kod 00000), kao to i sam naziv govori, ne radi nita. Naravno, njezino izvoenje "troi" procesorsko vrijeme te se ona koristi za vremensku sinkronizaciju, npr. u komunikaciji raunala s vanjskim procesom. U protonoj arhitekturi procesora ima vrlo vanu ulogu u razrjeavanju hazarda tako da je jednako zastupljena u skupu instrukcija CISC i RISC procesora (vidi poglavlje Protonost). Instrukcija stop (operacijski kod 00001) upotrebljava se za zaustavljanje stroja na specificiranoj toki programa. Slika 3.34 prikazuje instrukcijski format za nop i stop instrukcije. Vidimo da je instrukcija duljine 32-bita, ali se koristi samo pet najznaajnijih bitova (polje operacijskog koda).
b31 b27 b26 b0

op
SI. 3.34 Format instrukcije nop i stop

ne koristi se

Na kraju ovog potpoglavlja zanima nas koliko se na model RISC procesora razlikuje od stvarnog modela. Slika 3.35 prikazuje blok-shemu ARM 6 procesora RISC arhitekture. Vidimo da procesor ima tri glavne interne sabirnice (A, B, ALU sabirnica), 32-bitnom aritmetiko-logiku jedinicu sa sklopovljem za mnoenje na temelju Boothovog algoritma (8. poglavlje) te skup registara ope namjene od 32 32-bitna registra. ARM procesor ima i pomalo neuobiajenu znaajku - programsko brojilo PC i statusni registri smjeteni su u registrima u skupu registara ope namjene.

92

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

sabirnica podataka SI. 3.35 ARM 6 procesor RISC arhitekture

S. RIBARI - GRAA RAUNALA

93

4. POGLAVLJE

PERFORMANSA RAUNALA
4.1. UVOD: PERFORMANSA, CIJENA I OMJER CIJENE I PERFORMANSE
Veliki se napori na podruju arhitekture raunala ulau u poveanje performanse raunala. Sve odluke tijekom oblikovanja raunarskog sustava - od paljivog definiranja i oblikovanja skupa strojnih instrukcija pa sve do implementacijskih tehnika kao to su protonost (engl. pipelining), priruna memorija (engl. cache), predvianja grananja, paralelizam na razini funkcijskih jedinica, procesa, instrukcija i dretvi, samo prividno nisu prvenstveno motivirane unapreenjem performanse raunala, meutim, vode upravo poveanju performanse. Naravno, kada se govori o performansi raunala, potrebno je precizno definirati to je to performansa raunala. Drugi vaan atribut raunarskog sustava jest njegova cijena. Zahvaljujui razvoju tehnologije, mogue je izgraditi raunalo koje je bre od bilo kojeg do danas raspoloivog (komercijalnog) raunala, meutim, njegova cijena moe biti ograniavajui imbenik koji e sprijeiti realizaciju takva raunala. Obino vrijedi da se raunalo s najveom performansom koju mu doputa tehnoloka izvedba nee realizirati jer je omjer cijene i performanse takav da je raunalo neisplativo, odnosno predstavlja nekonkurentan proizvod na bespotednom tritu raunala. Pored same cijene raunala uzima se u obzir i ukupna cijena tijekom njegova "ivotna vijeka" (engl. life-cycle cost) koja ukljuuje iznos jamstva, cijenu servisa, trokove za programsku i sklopovsku nadogradnju te trokove ekolokog zbrinjavanja nakon njegova ivotnog vijeka. Obino se, kada govorimo openito o performansi nekog tehnikog sustava, suoavamo s njezinom vieznanosti jer u velikoj mjeri ovisi o motritu ocjenjivaa ili korisnika. Dobru su ilustraciju dali D. A. Patterson i J. L. Hennessy kad su za razliite vrste putnikih zrakoplova pokuali nai onaj zrakoplov koji je "najbolje performanse". Tablica 4.1. prikazuje osnovne znaajke (broj mjesta u zrakoplovu, domet, brzina i cijenu zrakoplova) za pet tipova putnikih zrakoplova.

94

4. POGLAVLJE: PERFORMANSA RAUNALA

Zrakoplov Airbus A310 Boeing 747 Boeing 777 BAC/Sud Concorde Douglas DC-8-50

Broj mjesta u zrakoplovu 250 470 375 130 145

Domet (km) 8300 6700 7450 6400 14000

Brzina (km/h) 895 980 980 2200 875

Cijena (IO6 $} 120 200 180 350 80 |i

Tablica 4.1. Osnovne znaajke za pet tipova putnikih zrakoplova

Koji od zrakoplova iz Ta bi ice 4.1. ima najveu performansu? Ako na to pitanje odgovaraju putnici koji su zainteresirani da do odredita stignu u najkraem vremenu, onda bi odgovor bio da je to nadzvuni zrakoplov BAC/Sud Concorde (za trenutak zanemarimo da je povuen iz uporabe). No ako je udaljenost odredita kamo putnik eli stii 8750 km, onda e zrakoplov Douglas DC-8-50 imati najveu performansu, bez obzira to mu za to treba 10 sati, a Concordeu samo oko 4 sata. Razlog tome je dodatno slijetanje Concordea jer se ciljano odredite nalazi izvan njegovog dometa, vrijeme potrebno da putnici napuste zrakoplov, vrijeme potrebno za formalnosti u zranoj luci, vrijeme punjenja zrakoplova Concorde gorivom, vrijeme potrebno za ukrcavanje putnika, vrijeme potrebno za polijetanje itd. Ako performansu ocjenjuje aviokompanija, onda e performansu definirati na temelju tzv. propusnosti (engl. throughput) koja je definirana kao umnoak broja putnika (odnosno, broja mjesta u zrakoplovu) i brzine zrakoplova. U tom e sluaju zrakoplov Boeing 747 imati najveu performansu. S motrita agencije FAA (Federal Avion Administration) najveu performansu ima tip zrakoplova koji je najsigurniji. Promatrati samo performansu, a zanemariti cijenu koja je potrebna da bi se ta performansa ostvarila nije ba uputno. Ako uzmemo u obzir propusnost kao mjeru performanse (s gledita aviokompanije) i cijenu zrakoplova, onda je prema omjeru cijena/propusnost najbolji zrakoplov Boeing 747. Naravno, ovo je razmatranje vrlo, vrlo pojednostavnjeno, jer kada bi zaista postojao jedinstveni kriterij koji se odnosi na performansu zrakoplova, onda bi sve aviokompanije imale istu vrstu zrakoplova. Slino kao to postoje razliiti pogledi na performansu zrakoplova, postoje i razliiti pogledi na performansu raunala, odnosno raunarskog sustava. Na primjer, ako promatramo dva raunala koja izvode identian program, onda emo raunalo koje bre izvri program smatrati raunalom koje ima veu performansu. Za dva raunarska sustava u nainu rada vremenskom podjelom (engl. timesharing), s toke motrita rukovoditelja centra za automatsku obradu podataka (AOP), bri je onaj raunarski sustav koji je zavrio vie zadataka ili poslova tijekom dana ili nekog definiranog vremenskog intervala. S druge strane, individualnog korisnika koji koristi raunske usluge AOP centra zanima samo vrijeme odgovora {e ngl. response time, turnaround time, elapsed time) koje je definirano kao vrijeme koje protekne od trenutka zapoinjanja pa do trenutka zavretka njegova programa. Vrijeme odgovora esto se naziva i vrijeme izvravanja (engl. execution time, wall clock time) - ono podrazumijeva ukupno vrijeme koje je potrebno da raunalo zavri zadatak i ukljuuje vrijeme pristupa memoriji i diskovima, vrijeme potrebno za ulazno-izlazne aktivnosti, vrijeme "kuanskih poslova" operacijskog sustava i procesorsko vrijeme izvravanja (engl. CPU execution time). esto se umjesto vremena izvravanja kao osnove za odreivanje performanse sustava upotrebljava samo procesorsko vrijeme izvravanja (ono se kratko naziva i

S. RIBARI - GRAA RAUNALA

95

procesorsko vrijeme (engl. CPU time)). Na taj se nain ele izluiti promjenjivi i teko procjenjivi drugi utjecaji (vrijeme potrebno za ulazno-izlazne aktivnosti, vrijeme kuanskih poslova operacijskog sustava) koji u vieprogramskom sustavu ne ovise samo o odreenom korisnikom programu. U tom se sluaju performansa moe definirati kao: Performansa = 1 / (procesorsko vrijeme). Procesorsko se vrijeme moe podijeliti na vrijeme koje procesor troi za izvoenje korisnikog programa (korisniko procesorsko vrijeme) i vrijeme procesora za izvoenje funkcija operacijskog sustava koje su namijenjene izvoenju upravo tog korisnikog programa (sistemsko procesorsko vrijeme). Teko je, meutim, precizno odrediti granicu izmeu korisnikog i sistemskog procesorskog vremena jer je teko tono razlikovati koje su funkcije operacijskog sustava izriito namijenjene jednom, a koje ostalim korisnikim programima. Pri usporedbi performansi dvaju raunala esto namjerno zanemarujemo sistemsko procesorsko vrijeme, odnosno ukupno procesorsko vrijeme promatramo kao korisniko procesorsko vrijeme. Ako se ocjena performanse raunala temelji na vremenu odgovora, onda se koristi izraz performansa sustava, a odnosi se na odziv sustava kada je sustav optereen samo tim korisnikim programom (kada je rije o vieprogramskom, odnosno viekorisnikom raunarskom sustavu). Performansa koja u obzir uzima samo procesorsko vrijeme obino se naziva performansa procesora (engl. CPUperformance).

4.2. MJERE PERFORMANSE


Raunala su vremenski diskretni strojevi - u diskretnim vremenskim trenucima dolazi do promjene stanja u sklopovima stroja. Razmaci izmeu tih diskretnih trenutaka odreeni su periodom signala vremenskog voenja (ili taktnog signala) T (engl. clock cycle, clock tick, clock period). Perioda T odreena je frekvencijom signala vremenskog voenja f (engl. clock rate): T= 1 / f Osnovna mjera performanse procesora, s motrita korisnika, temelji se na procesorskom vremenu koje je potrebno za izvoenje programa: (procesorsko vrijeme) = Ncp xT, (1) odnosno: (procesorsko vrijeme) = Ncp / f gdje je Ncp broj perioda signala vremenskog voenja potreban za izvoenje programa, T perioda signala vremenskog voenja, a f frekvencija signala vremenskog voenja. Performansa procesora je: Performansa = 1 / (procesorsko vrijeme)

96

4. POGLAVLJE: PERFORMANSA RAUNALA

Primjer 4.1. Frekvencija signala vremenskog voenja je f = 4 GHz, a broj perioda signala vremenskog voenja koji je potreban za izvoenje programa neka je Ncp = 1 290 000. Procesorsko vrijeme je 1290000 / (4 x 109) = 322500 x 10"9 (procesorsko vrijeme) =0.3225 ms Performansa je: Performansa = 1 / (procesorsko vrijeme) = 1 / (0.3225 x 10~3) Performansa = 3.1 x IO3 s_1 U izrazu za performansu procesora (2) izravno se ne pojavljuje broj izvrenih instrukcija u programu. Broj perioda signala vremenskog voenja potreban za izvoenje programa Ncp jednak je umnoku broja izvrenih instrukcija u programu i prosjenog broja perioda signala vremenskog voenja po instrukciji. Prosjean broj perioda po instrukciji oznait emo s CPI (clock cycles per instruction). Procesorsko vrijeme tada se rauna kao: (procesorsko vrijeme) = (broj izvrenih instrukcija u programu) x CPI x T, odnosno: (procesorsko vrijeme) = ((broj izvrenih instrukcija u programu) x CPI) / f (4) (3)

Jednadbe (3) i (4) sadravaju tri vane arhitektonske znaajke koja utjeu na performansu procesora: prosjean broj perioda signala vremenskog voenja po instrukciji (CPI), frekvenciju signala vremenskog voenja (f) i broj izvrenih instrukcija u programu. U prvoj i treoj arhitektonskoj znaajki odraavaju se karakteristike skupa strojnih instrukcija. Da bismo dobili procesor sa to je mogue veom performansom, procesorsko vrijeme treba biti to je mogue krae, a to znai u skladu s jednadbom (4), treba smanjiti prosjean broj perioda po instrukciji (CPI), poveati frekvenciju signala vremenskog voenja (f) i smanjiti broj (izvrenih) instrukcija u programu. Na alost, sva su ova tri faktora meusobno ovisna. Na primjer, da bi se smanjio broj prosjenih perioda signala vremenskog voenja po instrukciji (CPI), strojne instrukcije trebaju biti jednostavnije, odnosno odreivati jednostavnije operacije. Raspoloivost samo jednostavnih instrukcija, meutim, poveava broj instrukcija u programu jer se u tom sluaju jedna sloenija instrukcija mora zamijeniti veim brojem jednostavnijih instrukcija. Na primjer, instrukcija incM (inkrementiraj sadraj memorijske lokacije M) se mora zamijeniti trima instrukcijama: ldrl,M, addir1,1 i stM,rh Poveanje frekvencije signala vremenskog voenja f znai smanjenje ukupnog raspoloivog vremena za izvoenje instrukcije, to uz pretpostavku "ouvanja jednake koliine posla" koju instrukcija treba obaviti znai poveanje broja perioda signala vremenskog voenja po instrukciji. S druge strane, tehnoloke znaajke sklopova takoer odreuju granice do kojih se frekvencija signala vremenskog voenja moe poveavati. Jedno od ogranienja poveanja frekvencije signala vremenskog voenja jest i disipacija snage procesora, odnosno problemi koji nastupaju uslijed zagrijavanja silicijskog ipa na kojem je implementiran procesor. Naime, primarni uzrok disipacije snage je tzv. dinamika disipacija koja se odnosi na snagu, odnosno potroak snage tijekom promjena stanja logikih sklopova u procesoru (engl. switching). Snaga je u tom sluaju proporcionalna frekvenciji, ukupnom kapacitivnom optereenju svakog od tranzistora i kvadratu napona. Budui da su frekvencija i snaga meusobno korelirani, jasno je da poveanje frekvencije utjee na snagu, a time i na probleme odvoenja topline koja se razvija u silicijskom ipu.

S. RIBARI - GRAA RAUNALA

97

Na primjer, procesor AMD Opteron X4 koji radi na frekvenciji 2.5 GHz ima snagu^oko 120 W koja se pretvara u toplinu na ipu povrine neto vee od 1 cm2 i koju treba odvoditi da bi se osigurali normalni radni uvjeti za procesor. Jedno od rjeenja koje je omoguilo porast frekvencije signala vremenskog voenja je i smanjenje napona napajanja pa je u posljednjih 20 godina napon napajanja s 5V reduciran na samo IV (obratite pozornost da dinamika disipacija snage ovisi o kvadratu napona). Tablica 4.2. prikazuje porast frekvencije signala vremenskog voenja (engl. clock rate) i snage za osam generacija Intelovih procesora (u razdoblju od 25 godina). Na temelju podataka iz tablice vidi se povezanost izmeu frekvencije i snage. Naravno, broj tranzistora integriranih na ipu utjee na iznos snage, odnosno na disipaciju snage. CPI ovisi i o arhitektonskim znaajkama procesora i raunala, npr. o strukturi i organizaciji procesora, ali i o memorijskom sustava raunala te o mjeavini tipova instrukcija koje se rabe u programu. Procesor 80286 80386 80486 Pentium Pentium Pro Pentium 4 VVillamette Pentium 4 Prescott ore 2 Kentsfield Godina 1982. 1985. 1989. 1993. 1997. 2001. 2004. 2007. Frekvencija signala vremenskog voenja [MHz] 12.5 16 25 66 200 2000 3600 2667 Snaga[W] 3.3 4.1 4.9 10.1 29.1 75.3 103 95

"ablica 4.2 Porast frekvencije signala vremenskog voenja i snage za osam generacija Intelovih procesora

Primjer 4.2. Ilustrirajmo odnos frekvencije signala vremenskog voenja (f) i prosjenog broja perioda signala vremenskog voenja za instrukciju (CPI). Pretpostavimo da imamo dva raunala (raunalo A i raunalo B) s istim skupom strojnih instrukcija, odnosno njihovi su procesori jednaki na razini ISA (Instruction SetArchitecture). Raunala izvravaju jednak program. Raunalo A radi s frekvencijom signala vremenskog voenja fA = 1.8 GHz. Raunalo B radi s frekvencijom signala vremenskog voenja fB = 1.0 GHz. Raunala A i B, budui da imaju jednake procesore na razini ISA, imaju i jednak broj izvrenih instrukcija za program. Oznaimo s l broj izvrenih instrukcija za program. Stroj A ima prosjean broj perioda signala vremenskog voenja za instrukciju CPIA jednak 2.0, stroj B ima CPIB jednak 1.2. Koje je raunalo bre i za koliko? Broj perioda signala vremenskog voenja za program (raunalo A): I x 2.0 Broj perioda signala vremenskog voenja za program (raunalo B): I x 1.2

98

4. POGLAVLJE: PERFORMANSA RAUNALA

Izraunajmo procesorsko vrijeme za raunalo A: (procesorsko vrijemeA) = I x 2.0 x (1 /(1.8 x IO9)) = (1.111 x 10 9 )l Izraunajmo procesorsko vrijeme za raunalo B: (procesorsko vrijemeB) = I x 1.2 x (1 / (1.0 x 109) = (1.2 x 10"9) I Raunalo A je bre, i to za faktor: ((1.2 x 109) 0/(1.111x10" 9 ) I) = 1.08. U jednadbi (4) koristi se prosjean broj perioda signala vremenskog voenja po instrukciji CPI, odnosno broj potrebnih perioda signala vremenskog voenja za izvrenje nekog programa rauna se kao: (broj izvrenih instrukcija u programu) x CPI. Razliite strojne instrukcije imaju razliita vremena trajanja, odnosno za njihovo se izvoenje zahtijeva razliit broj perioda signala vremenskog voenja, a i njihova je uestalost pojavljivanja u programima razliita. Za toniju ocjenu broja potrebnih perioda signala vremenskog voenja za neki program uzima se u obzir prosjeno trajanje svakog tipa instrukcije CPI. i broj izvrenih instrukcija tog tipa C, gdje / oznaava tip instrukcije (npr. instrukcije tipa registar - memorija, registar - registar, memorija - memorija). U tom je sluaju ukupan broj potrebnih perioda signala vremenskog voenja za neki program: S(CP/,xC,.) /=1 pri emu je n broj razliitih tipova instrukcija koje se pojavljuju u programu.

4.2.1. MIPS - MILLIONS OF INSTRUCTIONS PER SECOND


Jedna od vrlo esto upotrebljavanih mjera za izraavanje performanse jest MIPS (Millions of Instructions Per Second) koja nam govori koliko milijuna instrukcija procesor izvri u jednoj sekundi: MIPS = (broj izvrenih instrukcija u programu) / (vrijeme izvravanja programa x 106) Ovako definirana mjera za performansu naziva se prirodan MIPS (engl. nativeMIPS) i intuitivno je razumljiva: bra raunala imaju vei MIPS. No mjera MIPS izraava samo broj instrukcija u jedinici vremena, ali nam nita ne govori o sposobnosti tih instrukcija, odnosno o sloenosti operacija koje one odreuju. Problemi koji nastaju ako se eli MIPS koristiti za usporeivanje performansi raunala su sljedei. Dva se raunala s razliitim skupovima instrukcija ne mogu usporeivati na temelju te mjere jer se broj instrukcija u programu razlikuje. Nadalje, mjera MIPS razlikuje se za isto raunalo ovisno o programu koji se izvrava tako da raunalo nema jednu mjeru za performansu izraenu u MIPS. Ako u izraz za MIPS uvrstimo umjesto vremena za izvravanje programa, izraz za procesorsko vrijeme (jednadba (4)) dobivamo: MIPS = f / (CPI x 106). Da bi itatelj dobio predodbu o performansama procesora izraenim pomou mjere MIPS, posluit e mu slika 4.1 koja prikazuje MIPS performansu i trend njezina porasta na temelju procesorskih porodica Intel Pentium i njegovih prethodnika 80x86, porodice Motorola 68000 i MIPS R 10000. Na slici 4.1 je uz porast performanse procesora prikazan i porast kapaciteta memorijskog ipa za DRAM (dinamiku memoriju s izravnim pristupom; poglavlje 9.) koji se pokorava Mooreovom zakonu.

S. RIBARI - GRAA RAUNALA

99

TIPS
procesor^

Tb

Legenda:
9 G= IO 12
k = 103 M = 106

T=10

nemorija

GIPS

R10000 Pentium ll^ Pentium^^* ^ ^ 680 80486^^ Mb \Mb 1 Mb


O

1 Gb
9J 5U 6 IYIL. M h% ^

Gb

Legenda: kb = 2' bita Mb = 220 bita Gb = 230 bita Tb = 2< bita

64Mb

80386 68000 ^ ^ MIPS 80286^ / > kb 64kb

Mb

kIPS

1980

1990
godina

2000

kb 2010

SI. 4.1 Performansa procesora izraena pomou mjere MIPS te trend njezina porasta

| Primjer 4.3. Procesor RISC arhitekture ima frekvenciju signala vremenskog voenja 500 MHz, a budui da je oblikovan u skladu s izvornim naelima RISC, ima CPI = 1 (u svakoj se periodi signala vremenskog voenja izvede jedna strojna instrukcija). Njegova performansa izraena mjerom MIPS iznosi: MIPS = (500 x 106) / (1 x 106) = 500, to znai da procesor RISC izvodi 500 milijuna instrukcija u sekundi. Uz mjeru prirodan MIPS koriste se jo dvije mjere: vrni MIPS (engl. peak MiPS) i relativni MIPS (engl. relativeMIPS). Vrni MIPS dobiva se izborom mjeavine strojnih instrukcija kojom se minimizira CPI ak i uz uvjet daje ta mjeavina instrukcija potpuno neupotrebljiva u takvom programu. Da bi se mjera MIPS mogla upotrijebiti i za usporeivanje performansi raunala koja imaju razliite skupove strojnih instrukcija, uvedena je mjera relativni MIPS. Ona je definirana kao: relativni MIPS = MIPSref (Vrijemeref / Vrijememjer), gdje je MIPSref dogovorena mjera MIPS za referentno raunalo, Vrijemeref je vrijeme potrebno za izvrenje programa na referentnom raunalu i Vrijernem.er vrijeme potrebno za izvrenje istog programa na raunalu kojem se mjeri performansa. Relativni MIPS proporcionalan je vremenu izvravanja samo za dani program i iste ulazne podatke. Osamdesetih godina prolog stoljea raunalo dugovjene arhitekture VAX 11/780

100

4. POGLAVLJE: PERFORMANSA RAUNALA

(tvrtka DEC) bilo je izabrano kao referentno raunalo i bila mu je dogovorno dodijeljena performansa 1 MIPS. U literaturi nailazimo na performansu procesora izraenu s MOPS - Millions of Operations Per Second koja nam govori koliko milijuna operacija procesor izvodi u jednoj sekundi. 2a razliku od mjere MIPS, ovdje su operacije obino izabrane samo one koje su odreene jednostavnim aritmetikim i logikim instrukcijama.

4 .2.2.

FLOPS - FLOATING-POINT OPERATIONS PER SECOND


U znanstvenim i komercijalnim primjenama raunala rabe se operacije brojevima s pominim zarezom (zbrajanje, oduzimanje, mnoenje i dijeljenje) (engl. floating-point operation) gdje su operandi predoeni u obliku eksponent-mantisa i doputaju vrlo precizna raunanja. Podaci predoeni u obliku eksponent-mantisa obino se u viim programskim jezicima specificiraju kljunim rijeima kao: float, real, double precision. Za takva je podruja primjene zanimljiva performansa raunala izraena mjerom FLOPS (Floating-point Operations Per Second) - brojem operacija brojevima s pominim zarezom u sekundi. Ta je mjera, iako i ona ovisi o tipovima operacija brojevima s pominim zarezom koje se u programu koriste, za korisnika je bitnija od MIPS-a. Ona se razlikuje od MIPS-a po tomu to su operacije brojevima s pominim zarezom sloenije i to bez sklopovlja namijenjenog upravo tim operacijama usporavaju rad raunala, ak i kada je mjera MIPS za takva raunala vrlo velika (prisjetimo se dualizma izmeu sklopovlja i programske opreme). Nadalje, uporaba operacija brojevima s pominim zarezom zahtijeva i dodatne instrukcije koje su zaduene za "kuanske poslove" u vezi s tim operacijama kao to su dohvat opera nada i pohranjivanje rezultata operacija brojevima s pominim zarezom. I ovdje, kao i u sluaju mjere MIPS, vrijedi da se performansa FLOPS odnosi samo na odreeni program i ne moe se generalizirati kao jedinstvena mjera za performansu raunala. Performansa suvremenih raunala izraava se u MFLOPS (106 FLOPS), GFLOPS (109 FLOPS), TFLOPS (1012 FLOPS) i PFLOPS (1015 FLOPS); P - peta.

Primjer 4.4. Aritmetika jedinica Pentium procesora moe generirati rezultat 64-bitne operacije s pominim zarezom u jednoj periodi signala vremenskog voenja. Za Pentium 90 (koji radi s frekvencijom 90 MHz) performansa je 90 MFLOPS-a. Da bi itatelj dobio predodbu o performansi procesora izraenoj pomou mjere FLOPS, navodimo neke podatke koji vrijede na poetku 21. stoljea: stolna raunala (engl. desktop computer) imaju performansu reda GFLOPS-a, superraunala (engl. supercomputer) reda TFLOPS. Oekivana je performansa procesora koja se nalaze trenutno u razvoju PFLOPS (peta FLOPS = 1015 FLOPS)!

4.2.3.

SPEC (SYSTEM PERFORMANCE EVALUATION COOPERATIVE) MJERA


Zbirka programa koju korisnik svakodnevno i uestalo koristi predstavlja dobru podlogu za procjenu performanse novog raunala. Radno optereenje raunala (engl. workload"1.

S. RIBARI - GRAA RAUNALA

101

definirano je programima iz zbirke i uestalou njihova izvoenja. U postupku procjene performanse dva ili vie raunala korisnik moe usporediti njihova vremena odgovora. Primjer 4.5. Pretpostavimo da se zbirka programa sastoji od 6 programa: P7 - P6. Slika 4.2 prikazuje vrijeme odgovora dvaju razliitih raunala za zbirku programa.

ajnato 1
P1
-.alo 2

P2

P3

P4

P5

P6

P1

P2

P3

P4

P5

P6
vrijeme

SI. 4.2 Vrijeme odgovora raunala 1 i raunala 2 za zbirku programa iz radnog optereenja

Vidimo da raunalo 2 ima veu performansu (krae ukupno vrijeme odziva) uz pretpostavku da su uestalosti izvoenja programa jednake. No ako je radno optereenje takvo da se programi P2 i P5 izvode s veom uestalou od drugih programa, moe se pokazati da je raunalo 1 bolji stroj za zadano radno optereenje. Naalost, korisnik je rijetko u situaciji da ima na raspolaganju raunalo ili raunala koja namjerava kupiti i za koja bi mogao procijeniti performansu na temelju iscrpnog eksperimentiranja s programima iz radnog optereenja. Nadalje, vrlo mu esto nisu ni raspoloivi niti poznati svi programi koji e u budunosti initi radno optereenje raunala. U tim se sluajevima procjena performanse temelji na ispitnim programima (engl. benchmark). Ispitni programi su realni ili umjetni programi koji su izabrani ili oblikovani za usporedbenu procjenu performansi raunala ili procesora. Zbirka ispitnih programa (engl. benchmark suite) sastoji se od paljivo izabranih programa koji trebaju cjelovito predstavljati odreen razred primjene. Procijenjena performansa na temelju ispitnih programa ima vrijednost za korisnika u onoj mjeri u kojoj se radno optereenje podudara sa zbirkom ispitnih programa. S druge strane, razliite zbirke ispitnih programa olakavaju usporedbu razliitih procesora i raunala. Zbirke ispitnih programa omoguuju da isporuitelji raunalne opreme, ali i nezavisne tvrtke procjenjuju razliite procesore i raunala te objavljuju dobivene rezultate i na taj nain olakavaju potencijalnim kupcima izbor stroja. Potrebno je napomenuti da su ispitni programi prvenstveno namijenjeni procjeni performansi kada je raspoloiva sklopovska oprema i kada su na raspolaganju prevodioci (engl. compiler) koji su potrebni za prevoenje programa iz zbirke ispitnih programa. Veina je prevodioca takva da imaju

102

4. POGLAVLJE: PERFORMANSA RAUNALA

u sebi ugraene optimizacijske postupke koji se mogu ukljuiti ili iskljuiti. Da bi se izbjeglo podeavanje prevodioca svakom od programa iz zbirke ispitnih programa, treba se za cjelokupnu zbirku postaviti jedinstvena kombinacija optimizacijskih zastavica kojima se definira nepromjenjivi skup optimizacijskih postupka. Godine 1988. vodei su svjetski proizvoai raunalne opreme i sustava (IBM, Sun Microsystems, Appolo Comp., MIPS Computer Systems, Hewlett-Packard, Intel i drugi) osnovali udrugu SPEC (System Performance Evaluation Cooperative) kojoj je osnovni zadatak bio definirati i oblikovati standardan skup ispitnih programa za procjenu performanse. Na temelju tako definiranog skupa ispitnih programa ostvaruje se osnovni cilj: objektivnost procjene performanse, i to tako da niti jedan ispitni program niti postupak prevoenja tih programa ne mogu biti orijentirani i prilagoeni raunalnom sustavu nekog odreenog proizvoaa. Naime, do 1988. proizvoai su performansu raunala oglaavali na temelju paljivo izabranih ispitnih programa koji su upravo za njihova raunala pokazivala veu performansu u odnosu na druge konkurente na tritu.To su postizali uporabom relativno kratkih ispitnih programa i njima posebno prilagoenim prevodiocima koji su prepoznavali programske odsjeke tih programa i generirali posebno djelotvorne odsjeke objektnog koda. Prva se zbirka ispitnih programa SPEC sastojala se od dvije skupine ispitnih programa: Cint89 - etiri programa za cjelobrojnu obradu (engl. integer-processing program); Cfp89 - est programa koji su imali veliki broj operacija brojevima s pominim zarezom (dvostruke preciznosti) (engl. doubie-precision floating-point operation). Svih deset programa bili su dovoljno sloeni (napisani u C i FORTRAN-u) i mogli su se rabiti za rjeavanje stvarnih problema. SPEC 89 ispitna metoda pretpostavlja generiranje deset SPEC omjera (engl. SPECratio) razliitih rezultata procjene performanse. Svaki od njih definirao je omjer izmeu vremena izvravanja /-tog programa iz zbirke Cint89 i/ili Cfp89 na raunalu VAX 11/780 i ispitnom raunalu. Integralna mjera za performansu raunala SPECmark indeks predstavlja geometrijsku sredinu deset pojedinanih SPEC omjera: [To SPECmark = 10/JJ SPEComjerf TT gdje Oj oznaava a1 x a2 x ... x an. /=1 *
M

Raunalo VAX 11/780 bilo je referentno raunalo i imalo je po definiciji 1 SPECmark. Primjer 4*6. Pretpostavimo da umjesto 10 ispitnih programa imamo samo tri ispitna programa A, B i C. Ispitivanja su pokazala da su vremena izvravanja tih triju programa na referentnom raunalu: t*A = 60s, t ^ = 25s i ^ = 50s. Vremena izvravanja na ciljanom raunaiu (onom kojem procjenjujemo performansu) su: = 45s, = 20s i t=c = 60s.

S. RIBARI - GRAA RAUNALA

103

Omjeri izmeu vremena izvravanja na referentnom raunalu i vremena izvravanja na ciljanom raunalu su: o t = t*A / f A = 1.333, o2 = t*B / r B = 1,250 i o3 = t* c / = 0.833. Integralna mjera za performansu ciljanog raunala izraena geometrijskom srednjom

x o2 x o3 = Vi .333x1.25x0.833= 1.115
Na temelju dobivenog rezultata za ovaj bismo pojednostavljeni primjer mogli pretpostaviti da je performansa ciljanog raunala za faktor 1.115 vea od performanse referentnog raunala. Dvije mjere, SPECint89 i SPECfp89, daju dvije procjene performanse raunala - jednu za cjelobrojnu obradu i jednu za obradu podataka predoenih brojevima s pominim zarezom. Integralna mjera za performansu raunala SPECmarkindeks nam u sluaju ispitnih programa iz zbirke Cint89 i/ili C fp89 govori koliko je puta performansa ciljanog raunala vea u odnosu na performansu za referentno raunalo tj. VAX 11/780. Na primjer, ako smo dobili da je SPECint89 jednak 5.5, to znai da ciljano raunalo za zbirku cjelobrojnih ispitnih programa ima za faktor 5.5 veu performansu. Slika 4.3 prikazuje porast performanse procesora (u razdoblju 1978. - 2005.) relativno u odnosu na VAX 11/780 koji je uzet kao referentni stroj. Performansa je dobivena na temelju SPECint ispitnih programa. Vidimo da, npr. Intel Xeon (3 GHz) ima 4195 puta veu performansu u odnosu na VAX 11/780, a 64-bitni Intel Xeon (3.6 GHz) ak 6505 puta (!). g *0000
64-bit Intel Xeon, 3.6 GHz Intel Xeon, 3.6 GHz 6505 A M D Opteron, 2.2 G H z j Intel Pentium 4,3.0 GHz j r ^ S 4195 A M D Athlon, 1.6 G H z y ^ ^ Intel Pentium III, ^ O G H z ^ r ^ Alpha 21264A, 0.7 GHz Aloha 21264,0.6 GHz ^ T 7 1267 xT* 993 '

i P l

looo

Alpha 21164,0.6 G H z ^ g Alpha 21164,0.5 G H z ^ ^ Alpha 21164A, 0.3 G H z ^ ^ Alpha 21064A, 0.3 G H z ^ > PowerPC604,0.1 GHz Alpha 21064,0.2 GHz HP PA-RISC, 0.05 GHz IBM RS6000/540 / jr MIPS M 2 0 0 0 # ^ 24 '

-tov

100

1 1

MIPSM/120>r^i8
10 Sun-4/260/O9" VAX 8700

. /

VAX-11/780

0 <
1978 1980

""""T"^...
1982

**l,5VAlH1/785

"" i

i
1988

i
1990

i
1992

i
1994

i
1996

i
1998

i
2000

i ...
2002

*'
2004

i
2006 godine

1984

1986

Si. 4.3 Porast performanse procesora u odnosu na VAX 11 /780 (izvor: J. L. Hennessy, D. A. Patterson)

104

4.

POGLAVLJE: PERFORMANSA RAUNALA

Od 1989. mijenjale su se zbirke ispitnih programa od zbirke SPEC89, preko SPEC92, SPEC95 SPEC2000 do SPEC2006, ali i referentna raunala (VAX 11/780, SPARC Station 10/40, radna stanica s 296MHz UltraSPARC II procesorom) pa je bilo do danas ukupno 70 ispitnih programa u razliitim ispitnim zbirkama. Zbirka ispitnih programa SPEC92 sastoji se od 6 cjelobrojnih ispitnih programa napisanih u programskom jezku C (espresso - program za minimizaciju logikih funkcija; 13500 linija koda; li - LISP interpreter za rjeavanje problema 9 kraljica, 7413 linija koda; eqntott - program za prevoenje Booleovih jednadbi u tablice istinitosti, 3376 linija koda; compress - program za kompresiju podataka uporabom Lempel-Ziv postupka kodiranja 1503 linija koda; sc - raunanje s UNIX tablinim kalkulatorom, 8116 linija koda; gcc - GNU C prevodilac, 85589 linija koda) i 14 ispitnih programa s operacijama brojevima s pominim zarezom (12 napisanih u FORTRAN-u i 2 u programskom jeziku C). Tu zbirku programa ine programi za simulaciju sklopova (spice2g6,18476 linija koda), za simulaciju metodom Monte Carlo (doduc, 5334 linija koda), pa sve do programa za rjeavanje problema iz podruja hidrodinamike (hydro2d, 4461 linija koda). Zbirka ispitnih programa SPEC CPU 2006 sastoji se od 12 cjelobrojnih ispitnih programa (CINT 2006) od kojih je devet napisano u programskom jeziku C, a preostala tri u C++ te 17 ispitnih programa koji koriste operacije brojevima s pominim zarezom CFP 2006 (engl. floating-point benchmark) (6 u FORTRAN-u, 4 u C++, 3 u C i 4 mjeovito FORTRAN i C). Zbirku cjelobrojnih ispitnih programa sastavljaju programi od GNU C prevodioca (gcc), programa za igranje aha (sjeng), preko programa za igranje goa (go) do simulacije quantum raunala (libquantum). Zbirka ispitnih programa koji koriste operacije brojevima s pominim zarezom sastoji se od programa za modeliranje metodom konanih elemenata, preko programa za raspoznavanje govora do programa za molekularnu dinamiku i dinamiku fluida. Napomenimo da su samo tri ispitna programa iz zbirke SPEC89 "preivjela" i ostala ukljuena u zbirku SPEC2006. Udruga SPEC nudi i ispitne programe koji su namijenjeni procjeni performanse raunala - posluitelja (engl. server) orijentiranih prema radu s datotekama SPECSFS (file server benchmark) i wefc>-posluiteljima SPEC Web. Primjer 4.7. Za zbirku SPECfp2000 od 14 ispitnih programa koji koriste operacije brojevima s pominim zarezom i referentno raunalo Sun Ultra 5 i ciljano raunalo temeljeno na 64-bitnom Intel Itanium 2 dobiveni su rezultati prikazani u tablici 4.3. Opaska: informaciju o ispitnim programima moete nai na i http://www.spec.org/cpu20Q0/CFP200Q

S. RIBARI - GRAA RAUNALA

105

wupwise

1600 3100 1800 2100 1400 2900 2600 1300 1900 2200 2000 2100

56.1 70.7 65.8 50.9 108.0 40.0

28,52 43.85 27.36 41.26 12.96 72.50 123.80 35.81

swim
mgrid applu mesa galgel art equake facerec ammp lucafs fma3d sixtrac apsi SPECmark

21.0
36.3 86.9 132.0 107.0 131.0

21.86
16.67 18.70 16.03 15.99 11.25 27.12

1100 2600

68.8
231.0

ica 4.3. Rezultati ispitivanja performansi za raunalo temeljeno na 64-bitnom Itanium 2 procesoru (zbirka SPECfp2000)

4.2.4 SINTETINI ISPITNI PROGRAMI


Sintetini ispitni programi su lani" programi koji ne rjeavaju niti raunaju nita korisno ve svojom strukturom oponaaju statistiku koja se odnosi na uestalost tipova operacija i opera nada dobivenu analizom velikog skupa programa. Dva najpoznatija sintetika ispitna programa su Whetstone i Dhrystone. Whetstone ispitni program razvijen je 1972. i bio je izvorno napisan u programskom jeziku Algol (kasnije u FORTRAN-u, Pascalu i jeziku C). Izvorno se temeljio na statistici ponaanja programa koji su se izvravali na raunalu KDF9 u National Physical Laboratory, Engleska. Ispitni program Whetstone namijenjen je prvenstveno procjeni performanse za obradu podataka predoenih brojevima s pominim zarezom. Performansa se izraava u MWIPS [Millions of Whetstone Instructions Per Second). Dhrystone program razvijen je 1984. i predstavlja cjelobrojni ispitni program. Zajednika znaajka oba ispitna programa jest da su relativno kratki - nekoliko stotina linija koda u viem programskom jeziku i pogodni su za "ugaanje" parametara optimizirajuih prevodioca to u izvjesnoj mjeri naruava objektivnost dobivenih procjena performanse.

106

4. POGLAVLJE: PERFORMANSA RAUNALA

AMDAHLOV ZAKON
Poveanje performanse raunala jedan je od osnovnih ciljeva koji se eli ostvariti uporabom razliitih metoda, postupaka i tehnika na podruju arhitekture raunala. Poboljanje, koje se ogleda u kraem procesorskom vremenu izvravanja, pokorava se Amdahlovom zakonu koji definira daje poveanje performanse dobiveno odreenim poboljanjem ogranieno iznosom u kojem se ta poboljana znaajka arhitekture koristi: (procesorsko vrijeme izvravanja nakon poboljanja) = (procesorsko vrijeme na koje se poboljanjem utjecalo / iznos poboljanja) + (procesorsko vrijeme izvravanja na koje se poboljanjem nije utjecalo). Amdahlov zakon moemo izraziti i jednadbom za ukupno ubrzanje obrade s: 1 f + (1-0 <min
p

'7

gdje je f dio na koji se poboljanjem ne utjee, p iznos poboljanja. Primjer 4.8* Pretpostavimo da je procesorsko vrijeme izvravanja za neki program 100 sekundi i da bai se :ati brzinu mnoenja ako da nam prosklopovlje za poveati gram bude 2.5 puta ubrzanje za faktor 5.0? Dio na koji se je f = 0.20. Za ul 1 . ( 1 <m,n p TP020f ( >7 $ = 2.5,

2.5 020+

020+
iz ega slijedi: 5.0 = odnosno

(1~ 020)

0.20p+0.80

p +4= = p. Vidimo da nema rjeenja, odnosno da nije mogue nai iznos poboljanja p kojim bi se brzina izvoenja poveala za faktor 5!

S. RIBARI - GRAA RAUNALA

107

5. POGLAVLJE

ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK


5.1. ZBIRNI JEZIK
U uvodnim smo poglavljima ve naglasili daje sklopovlju procesora jedino razumljiv strojni jezik (engl. machine language) u kojem su instrukcije i podaci predoeni sljedovima nula i jedinica. Instrukcije i podaci u obliku binarnih brojeva procesoru su prirodni i njima se djelotvorno koristi. No za ovjeka dugi sljedovi nula i jedinica predstavljaju skoro nepremostivu potekou u razumijevanju i pri njihovoj uporabi. Da bi se premostio jezini jaz izmeu sklopovlja i ovjeka, razvijeni su vii programski jezici kao to su FORTRAN, Cobol, Basic, Pascal, C, C++, Java, LISP, Prolog i mnogi drugi koji omoguuju korisniku pisanje programa na puno vioj razini apstrakcije koja doputa uporabu rijei i simbola kojima se ovjek mnogo lake koristi. Vii programski jezici pruaju niz prednosti u odnosu na programiranje u strojnom jeziku: i) doputaju programeru razmiljanje i izraavanje na prirodniji nain, uporabom oznaka na engleskom ili nekom drugom jeziku i primjenu algebarske notacije pa programi vie nalikuju tekstu nego dugakim tablicama binarno kodiranih simbola, ii) vii programski jezici podravaju razliite tipove podataka kao to su brojevi s pominim zarezom (engl. floating-point numbers) jednostruke ili viestruke tonosti, znakovi (engl. character), strukturirani tipovi podataka kao to su jedno- i viedimenzionalna polja (engl. array), zapisi (engl. record), nizovi znakova (engl. character string) i redovi (ili repovi) (engl. queue), iii) vii programski jezici oblikovani su tako da su prilagoeni namjeni to olakava programiranje na specifinom podruju. Na primjer, FORTRAN, C i C++ su namijenjen za znanstveno raunanje, Cobol za poslovne aplikacije, LISP i Prolog za podruje umjetne inteligencije i si., iv) programiranje u viim programskim jezicima viestruko poveava produktivnost programera, v) veina viih programskih jezika, uz neka proirenja, podrava samodokumentiranje programa (engl. self-documenting) kojim se poveava njegova itljivost, te se lake razumije njegova funkcija pa je time lake i odravanje programa, vi) programi napisani u viim programskim jezicima prenosivi su - postupkom prevoenja pretvaraju se u binarni oblik koji je izvodljiv, u naelu, u bilo kojem raunalu.

108

5. POGLAVLJE: ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK

Jasno je, meutim, da programi napisani u viem programskoj jeziku moraju biti prevedeni i raunalu predstavljeni u strojnom jeziku. Prevoenje se obavlja programima koji su sastavni dio operacijskog sustava - prevodiocima (engl. compiler). Oni prevode program napisan u viem programskom jeziku - naziva se izvorni program - (engl. source program) u objektni program ili izvrljivi binarni program (engl. executable binary program). U mnogim se sluajevima, meutim, pojavljuje potreba za pisanjem programa u jeziku koji je vrlo blizak strojnom jeziku i nalazi se samo jednu razinu apstrakcije iznad njega. Takav se jezik naziva zbirni jezik ili asemblerski jezik (engl. assembly language). Naredba se u zbirnom jeziku predoava dvo-, tro- ili etveroslovanim simbolima (nazivamo ih mnemonici) koji imaju znaenje operacijskog koda u strojnoj instrukciji (polje operacijskog koda; slika 5.1), zatim slovanom i/ili slovano-numerikom oznakom registara, memorijske lokacije ili operanda (polje operanda) koji sudjeluju u specificiranoj operaciji. Nadalje, zbirni jezik doputa programeru uporabu oznaka koje se nazivaju labele (engl. label), koje se nalaze u polju labela i slue za identifikaciju odreenih memorijskih rijei koje sadravaju instrukcije ili podatke. Osim toga, omogueno je i dokumentiranje programa pisanjem komentara u za to posebno predvieno polje uz svaku instrukciju (polje komentara). Program napisan u zbirnom jeziku je takoer sklopovlju nerazumljiv i mora se prevesti u objektni program, tonije u objektnu datoteku (engl. object file), koja pored binarno predoenih strojnih instrukcija i podataka sadri i informaciju potrebnu povezniku (engl. linker) i puniocu (engl. loader). Program koji izvorni program napisan u zbirnom jeziku pretvara u objektni program naziva se asembler (engl. assembler). (Opaska: vrlo se esto zbirni jezik u argonu naziva samo asembler" (umjesto asemblerski jezik), jednako kao i prevodilac, to u nekim situacijama moe izazivati zabunu.) Komentari pridrueni instrukcijama slue samo za dokumentiranje izvornog programa te se tijekom prevoenja zanemaruju. START
polje labele

MOVE.W
polje operacijskog koda

PRIV,DO
polje operanda

; dohvati

rije s memorijske lokacije PRIV polje komentara

SI. 5.1. Oznake odgovarajuih polja u instrukciji u zbirnom jeziku

^ t) straktur^ u zbirnom jeziku: START MOVE. W. PRIV, DO

; dohvati rije s memorijske lokacije PRIV

START je labela koja se nalazi u polju labela, MOVE je mnemonik koji oznaava operacij u premjetanja podataka, . w je sufiks pridruen mnemoniku i odreuje da je podatak duljine rijei (npr. 16-bita), PRIV je simbol (labela) koja oznaava memorijsku lokaciju koja je izvor operanda, DO je oznaka registra koji ima funkciju odredita, a dohvati rije s memorijske lokacije PRIVje komentar koji e asembler tijekom prevoenja ignorirati. Slika 5.1 prikazuje odgovarajua polja u instrukciji u zbirnom jeziku. Potonja e se instrukcija, na primjer, asemblerom za procesor MC 68000 prevesti u strojhu instrukciju predoenu ovim slijedom nula i jedinica: 0011 0000 0011 10000100 0000 0000 0000 uz pretpostavku da je PRIV = $4000 adresa memorijske lokacije. (Znak $ ispred broja

' l i l i ; :

S.RIBARI- GRAA RAUNALA

109

oznaava asembleru da slijedi zapis broja u heksadekadnoj notaciji.). Strojna e se instrukcija pohraniti u memoriji na etiri slijedne memorijske lokacije (svaka lokacija ima duljinu rijei od osam bita, odnosno duljinu jednog bajta).

5.1.1. IZVRLJIVE INSTRUKCIJE I PSEUDOINSTRUKCIJE


Instrukcije u zbirnom jeziku mogu se podijeliti na izvrijive instrukcije (engl. executable instruction) i instrukcije koje su namijenjene upravljanju postupkom prevoenja (engl. assembler directive). Izvrijive se instrukcije asemblerom prevode u strojni jezik, dok se instrukcijama namijenjenim upravljanju asemblerom ne dodjeljuju binarni kodovi. Instrukcije za upravljanje asemblerom nazivaju se i pseudoinstrukcije. I one se su u zbirnom jeziku predstavljaju dvo-, tro- ili etveroslovnim oznakama koje takoer asociraju na osnovnu funkciju upravljanja asemblerom.

Razmotrimo i upoznajmo se s nekim uobiajenim pseudoinstrukcijama: NAM (name) dodjeljuje simboliko ime programu; ORG {origin} govori asembleru gdje e podaci Hi program biti pohranjeni u memorijskoj jedinici; DS (define storage) nalae asembleru rezervaciju dijela memorijskog prostora; DC (define constant) nalae asembleru da pohrani konstantu u memoriju prije negoli e se izvriti program; EQU (equate) izjednaava simboliko ime s numerikom vrijednosti; END (end) oznaava asembleru da je to kraj izvornog programa i da nita vie nije preostalo za prevoenje. Ilustrirajmo njihovu uporabu na jednostavnom programu napisanom u zbirnom jeziku za procesor MC 68000 (bez uputanja u ono to program zapravo radi): DATA EQU $6000 ; oznaci DATA dodijeljena je vrijednost $6000 PROGRAM EQU $4000 ; poetna adresa programa ORG DATA ; poevi od adrese $6000 bit e pohranjeni podaci VALUE DS.B 1 ;rezerviran je 1 bajt u memoriji na adresi $6000 DS.B 1 ; jo je 1 bajt rezerviran u memoriji na adresi $ 6001 - poravnanje na granicu rijei RESULT DS .W 1 ; rezervirana su dva slijedna bajta na $6002 i $6003 MASK EQU $000F ; oznaci MASK je pridruena vrijednost $000F ORG PROGRAM ; program zapoinje na memorijskoj lokaciji $4000 START MOVE. B VALUE, DO AND. B #MASK, DO MOVE. B DO, RESULTH-1 MOVE.B VALUE, DO LSR.B #4, DO MOVE.B DO, RESULT RTS END S TART ; pseudoinstrukcija oznaava kraj programa i pokazuje na poetak programa ($4000)

110

5. POGLAVLJE: ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI

JEZIK

Ispis prevedenog izvornog programa izgledao bi ovako: 00006000 DATA EQU 00004000 PROGRAM EQU 00006000 006000 006001 006002 00000001 00000001 00000002 OOOOOOOF 00004000 004000 004004 004008 00400C 004010 004012 004016 10386000 C03C000F 11C06003 10386000 E80S 11C06002 4E75 START RESULT MASK VALUE ORG DS.B DS.B DS.W EQU ORG MOVE.B AND. B MOVE. B MOVE.B LSR.8 MOVE.B RTS END

$6000 $4000 DATA 1 1 1 $000F PROGRAM VALUE, DO #MASK, DO DO, RESULT+1 VALUE"- DO #4/ 1 DO, RESULT START

Pseudoinstrukcijama DATA EQU $6000 i PROGRAM EQU $4000 dodijelili smo oznakama (labelama) DATA i PROGRAM vrijednosti 6000 (heksadekadno), odnosno 4000 (heksadekadno). Labeia DATA definira poetnu adresu memorijskog prostora u kojem e se pohraniti podaci, a labeia PROGRAM oznaava adresu memorijske lokacije prve izvrljive instrukcije programa. .
i

Pseudoinstrukcija ORG DATA odreuje da e podaci biti pohraftjeni u memoriji zapoevi od memorijske 6000 (heksadekadno). Za podatak VALUE, uporabom pseudoinstrukcije VALUE DS.B 1 rezervirana je jedna memorijska lokacija (8-bitna) s adresom 6000 (heksadekadno). Sljedea pseudoinstrukcija DS.B 1 slui samo za tzv. poravnanje na granicu rijei (engl. align on word boundary) 16-bitne rijei RESULT. Naime, procesor MC 68000 zahtijeva poravnanje adrese podatka duljine rijei (oznaka . W) tako da ona bude parna. Pseudoinstrukcijom RESULT DS.W 1 predviaju se za pohranu rezultata dvije memorijske lokacije 6002 i 6003 (heksadekadno). Pseudoinstrukc^a M A S K EQU $00 OF dodjeljuje simbolikom imenu MASK vrijednost 000F (heksadekadno). Pseudoinstrukcijom ORG PROGRAM odreujemo poetak izvrljivog dijela programa. Prva se izvrljiva instrukcija (MOVE. B VALUE , DO) kojom zapoinje program nalazi na adresi 4000 (heksadekadno). Objektni program, tj. strojni program u kojem su instrukcije i podaci predoeni binarno, pohranjen umemoriji s poetnom adresom $004000 izgledao W ovako: 004000 00010000 00111000 * \

01100000
00000000 004004 11000000

S. RIBARI - GRAA RAUNALA

111

004008

00400C

004010 004012

00111100 00000000 00001111 00010001 11000000 01100000 00000011 00010000 00111000 01100000 00000000 11101000

00001000 00010001
11000000 01100000 00000010 01001110 01110101

004016 _

Na temelji oblika prethodnog objektnog programa zamislite kako bi izgledalo programiranje izravno u strojnom jeziku! (Opaska: u knjizi za izradu primjera programa za procesor MC 68000 koriteni su ureiva teksta (editor), asembler i simulator EASy68K v5.90 koji itatelj moe besplatno skinuti" s http://www.easy68k.com) Pogledajmo to program iz Primjera 5.2. radi! Programom se rastavlja (raspakirava) bajt koji je pohranjen na lokaciji VALUE na dva 4-bitna dijela (engl. nibble) te se oni pohranjuju u dvije uzastopne lokacije RESULT i RESULT+1. Na primjer, ako je (VALUE) = 4A, odnosno (6000) = 4A, nakon izvoenja programa dobiva se (RESULT) = 04 i (RESULT+1) = 0A, odnosno (6002) = 04 i (6003) = 0A. Programski model procesora MC 68000 prikazan je na slici 6.18 (poglavlje Upravljaka jedinica). Izvedimo prethodni program instrukciju po instrukciju. Pretpostavimo daje poetni sadraj memorijskih lokacija 6000 4A, dok je 6002 i 6003 jednak 00. Nakon izvoenja instrukcije MOVE.B VALUE, DO u registru DO nalazi se 0000004A. Instrukcijom AND.B #MASK, DO izvodi se logika operacija I maske koja ima vrijednost 000F i sadraja registra DO, rezultat se pohranjuje u DO: 0000004A 000F O O O O O O O A Sadraj registra DO je sada OOOOOOOA. Instrukcijom MOVE.B DO, RESULT+1 se najmanje znaajan bajt registra DO pohranjuje na memorijsku lokaciju RESULT+1, odnosno na 6003. Dobivamo (6003) = 0A.

112

5. POGLAVLJE: ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK

Instrukcijom MOVE.B VALUE, DO ponovno punimo najmanje znaajan bajt registra DO s 4A: (DO) = 0000004A. Sljedeom instrukcijom LSR.B #4, DO posmiemo najmanje znaajan bajt registra DO za 4 mjesta udesno. Rezultat posmaka za etiri mjesta udesno je (DO) = 00000004. Konano, instrukcijom MOVE.B DO, RESULT se najmanje znaajan bajt registra DO pohranjuje na memorijsku lokaciju RESULT, odnosno na 6002. Nakon izvoenja programa imamo raspakirani bajt 4A u (6002) = 04 i (6003) = OA.

5.1.2. MAKROINSTRUKCIJE
Tijekom programiranja u zbirnom se jeziku esto pojavljuje potreba za viekratnim ponavljanjem jednakog slijeda instrukcija u brojnim i razliitim mjestima izvornog programa. Najjednostavnije je svaki put prepisati taj slijed instrukcija kada se pojavi potreba za njim. No ako je slijed dug i ako se esto koristi, zbirni program postaje predug i nepregledan. Druga je mogunost da se taj slijed preoblikuje u potprogram te da se on poziva kadgod je potreban. Taj pristup, meutim, ima nedostatak jer zahtijeva uporabu dviju dodatnih instrukcija (za pozivanje potprograma i za vraanje iz potprograma) i dodatno procesorsko vrijeme za njihovo izvoenje. Jednostavno i djelotvorno rjeenje problema uestalog ponavljanja jednakog slijeda instrukcija u zbirnom jeziku dobiva se uporabom makroinstrukcije (engl. macroinstruction). Makroinstrukcija - nova korisniko definirana problemsko orijentirana instrukcija zamjenjuje slijed instrukcija i tako se izbjegava viekratno ponavljanje jednakog slijeda instrukcija u zbirnom programu. Potrebno je naglasiti da e asembler tijekom postupka prevoenja zamijeniti makroinstrukciju i umjesto nje umetnuti u zbirni program slijed instrukcija (postupak se naziva ekspanzija). Pri upotrebi makroinstrukcije razlikujemo tri faze: i) definiranje makroinstrukcije, ii) pozivanje, iii) zamjenu, odnosno ekspanziju. Definicija makroinstrukcije sadrava: zaglavije kojim se daje ime makroinstrukciji, tijelo - slijed instrukcija u zbirnom jeziku kraj. Makroinstrukcija se definira pomou dvije organizacijske pseudoinstrukcije: MACRO i

ENDM. IME MACRO


slijed instrukcija u zbirnom jeziku

ENDM
Primjer 5.3. Pretpostavimo da se u naem izvornom programu u zornom jeziku za procesor MC 68000 uestalo pojavljuje potreba za slijedom instrukcija (programskim odsjekom) koji broji znakove u nekom nizu znakova. Poetna adresa niza znakova neka se nalazi

S. RIBARI - GRAA RAUNALA

113

u adresnom registru A4, a utvrena duljina niza znakova neka se pohranjuje u registru podataka D8. Svaki od niza znakova kojima utvrujemo broj znakova zavrava ASCII nuli znakom (vrijednost 0} koji se takoer broji.

OPET

MOVE.B MOVE. B ADD . B CMP.B BNE

# 0 , D8 ; postavi brojilo u 0 (A4) + , DO ; dohvati prvi znak i pohrani ga u DO # 1 , D8 ; inkrementiraj brojilo znakova # 0 , DO ; je li znak nuli - kraj niza? OPET ; nije - dohvati sljedei znak u nizu

(Opaska: instrukcije MOVE. B # 0 , DO, ADD.B #1, D8 i CMP.B #0, DO koriste usputni nain (engl. immediate) u kojem je podatak sastavni dio instrukcije. U zbirnom jeziku za MC 68000 taj je nain adresiranja oznaen povisiiicom (#) koja prethodi vrijednosti podatka. Instrukcija MOVE.B (A4) +, DO koristi tzv. registarsko indirektno (neizravno) adresiranje s postinkrementiranjem (engl. address register indirect with postincrement) u kojem adresni registar/u naem sluaju A4, sadrava adresu memorijske lokacije, a procesor nakon dohvata podatka s memorijske lokacije odreene sadrajem adresnog registra modificira sadraj adresnog registra u skladu s duljinom operanda (za 1,2, ili 4) u naem sluaju (&k) + 1 jer je operand duljine jednog bajta (.B). Nakon izvrenja instrukcije MOVE . B (A4) +, DO novi je sadraj adresnog registra pokazuje na sljedei znak u nizu.) Budui da se potonji slijed instrukcija u naem izvornom programu pojavljuje vie puta, upotrijebit emo makroinstrukciju i dati joj ime BROJI. Definirajmo makroinstrukciju BROJI: BROJI OPET MACRO MOVE.B MOVE. B ADD.B CMP. B BNE ENDM # 0 , D8 ; postavi brojilo u 0 (A4) + , DO ; dohvati prvi znak i pohrani ga u DO #1, D8 ; inkrementiraj brojilo znakova #0, DO ; je li znak nuli - kraj niza? OPET ; nije - dohvati sljedei znak u nizu

Pogledajmo sada kako e izgledati izvorni program bez uporabe makroinstrukcije, a kako s njom: i) bez uporabe makroinstrukcije

MOVEA.L MOVE.B MOVE.B ADD.B

Nizi,

A4

; postavi kazaljku na prvi znak u nizu N I Z 1 ; postavi brojilo u 0 ; dohvati prvi znak i pohrani ga u DO ; inkrementiraj brojilo znakova

OPET

# 0 , D8 ( A 4 ) + , DO #1, D8

114

5. POGLAVLJE: ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK

CMP.B BNE MOVE. B

#0, DO OPET D8, COUNT 1

; je ti znak nuli - kraj niza? ; nije - dohvati sljedei znak u nizu : pohrani duljinu N I Z 1 u COUNT1

MOVEA.L MOVE.B MOVE.B ADD.B CMP.B BNE MOVE. B

NI22,

A4

; postavi kazaljku na prvi znak u nizu NIZ2 ; postavi brojilo u 0 ,; dohvati prvi znak i pohrani ga u DO ; inkrementiraj brojilo znakova ; je li znak nuli - kraj niza? ; nije - dohvati sljedei zn^k u nizu : pohrani duljinu NIZ2 u COUNT2

OPET

#0, D8 <A4)+, DO # 1 , D8 # 0 , DO OPET D8, COUNT2

OPET

MOVEA.L MOVE.B MOVE.B ADD.B CMP.B BNE MOVE .B

N123, A4 # 0 , D8 (A4)+ r DO # 1 , D8 # 0 , DO OPET D8, COUNTS

; postavi kazaljku na prvi znak u nizu NIZ3 ; postavi brojilo u 0 ; dohvati prvi znak i pohrani ga u DO ; inkrementiraj brojilo znakova ; je li znak nuli - kraj niza? ; nije - dohvati sljedei nak u nizu : pohrani duljinu N I Z 3 U COUNT3

ii) uporabom makroinstrukcije:

MOVEA.L BROJI OPET MACRO MOVE.B MOVE.B ADD.B CMP.B BNE ENDM MOVE. B

N I Z 1 , A4

; postavi kazaljku na prvi znak u nizu NIZ1

40,

D8 ( A 4 ) + , DO # 1 , D8 # 0 , DO OPET

; postavi brojilo u 0 ; dohvati prvi znak i pohrani ga u DO ; inkrementiraj brojilo znakova ; je li znak nuli - kraj niza? ; nije - dohvati sljedei znaku nizu

D8, COUNT 1

: pohrani duljinu NIZl u COUNT1

S. RIBARI - GRAA RAUNALA

115

.MOVEA.L BROJI MOVE.B

N I Z 2 , A4

; postavi kazaljku na prvi znak u nizu NIZ2

D8, COUNT2

: pohrani duljinu NIZ2 u GOUNT2

MOVE A . L BROJI MOVE. B

N I Z 3 , A4

; postavi kazaljku na prvi znak u nizu NIZ3

D8 , COUNT3

: pohrani duljinu NIZ3 u COUNT3

U ii) vidimo da se samo jednom u izvornom programu pojavljuje programski odsjeak, odnosno definicija makroinstrukcije, a nakon toga se u izvornom programu rabi samo makroinstrukcija BEOJI. Naglasimo jo jednom, tijekom prevoenja e asembler zamijeniti makroinstrukciju slijedom instrukciji koje se nalaze izmeu MACRO i ENDM (postupak ekspanzije). Ekspanzija se dogaa pri svakom pojavljivanju makroinstrukcije - pomou/tnakroinstrukcije se ne postie uteda memorijskog prostora potrebnog za

Jednak slijed instrukcija pogodan za uporabu makroinstrukcije moe, meutim, ukljuivati razliite naine specifikacije operanada (npr. razliite registre) pri svakom koritenju. Taj problem rjeavaju makroinstrukcije koje imaju listu formalnih parametara koji e se zamijeniti stvarnim parametrima tijekom prevoenja. U tom sluaju definicija makroinstrukcije izgleda ovako:

IME MACRO a, b, C
slijed instrukcija u zbirnom jeziku

ENDM,
gdje su a, b i c parametri koji se prenose.

5.2. RAZLOZI UPORABE ZBIRNOG JEZIKA


Programiranje u zbirnom jeziku teko je i mukotrpno. Pisanje programa u zbirnom jeziku zahtijeva puno vie vremena nego pisanje programa s istom funkcijom u viem programskom jeziku. Koji su onda razlozi programiranja u zbirnom jeziku? Dva su temeljna razloga: i) veliina objektnog (izvrljivog binarnog) programa i brzina njegova izvoenja. U mnogim je sluajevima objektni program (program u strojnom jeziku), koji je generiran prevodiocem za vii programski jezik, puno vei, odnosno zauzima puno vie memorije od objektnog programa dobivenog prevoenjem programa u zbirnom jeziku uporabom asemblera. Razlog tome je to prevodilac za vii programski jezik treba generirati kod koji je dovoljno openit da moe raditi u razliitim sluajevima

116

5. POGLAVLJE: ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK

i za razliite konfiguracije raunala. Programi u zbirnom jeziku pisani su ciljano za odreeni procesor tako da se mogu koristiti bre strojne instrukcije koje nisu izravno raspoloive postupkom prevoenja programa u viem programskom jeziku. Na primjer, za dijeljenje s dva, prevodilac za vii programski jezik generirat e strojnu instrukciju DIV (divide), dok e programer u zbirnom jeziku za dijeljenje sa dva upotrijebiti instrukciju SHR (shift right) koja posmie podatak udesno za jedno mjesto. Instrukcija SHR izvodi se mnogo bre od instrukcije DIV; ii) neke procedure zahtijevaju izravan i potpuni pristup sklopovlju procesora, odnosno raunala, koji nije ostvariv u viim programskim jezicima. Na primjer, postupci rukovanja prekidima niske razine (engl. low-level interrupt) i rukovanje zamkama (engl. trap) u operacijskom sustavu ili pak postupci upravljanja u ugraenim raunalima za rad u stvarnom vremenu. Primjer 5.4. Ugraeno raunalo (engl embedded computer) koje se u automobilu koristi za upravljanje sustavom koenja mora brzo i predvidljivo odgovoriti na dogaaje u vanjskom svijetu (npr. na proklizavanje kotaa na zaleenoj povrini). Objektni program mora jamiti dae ugraeno raunalo generirati odgovor na podraaj iz vanjskog svijeta u tono odreenom intervalu - na primjer za 800 ns od trenutka kada senzor otkrije (detektira) proklizavanje. To jamstvo, naalost, ne daje objektni program, tj. izvrljivi binarni program koji je generiran prevoenjem izvornog programa napisanog u viem programskom jeziku. Razlog je prevodilac koji generira objektni program koji je dovoljno openit i ne vodi strogo brigu o izboru procesoru raspoloivih strojnih instrukcija i vremenu njihova izvravanja. S druge strane, programer u zbirnom jeziku ima pregled i upravljanje nad izvoenjem svake strojne instrukcije, posebice nad vremenom trajanja njezinog izvoenja i moe programom tono definirati trenutak ili vremenski interval u kojem e raunalo odgovoriti signalom upuenom sustavu za koenje. Ugraena raunala koja se koriste u pametnim karticama (engl. smart card), mobilnim telefonima, djejim igrakama, video i glazbenim ureajima za zabavu, igraim konzolama i si. moraju zadovoljiti stroge zahtjeve u pogledu brzine, cijene i potroka snage te se obino programiraju u zbirnom jeziku jer su mnoge takve aplikacije kritine i u pogledu raspoloivog memorijskog prostora i vremena izvoenja.

5.3. DVOPROLAZNI ASEMBLER


Izvorni se program u zbirnom jeziku sastoji od niza redaka instrukcija i pseudoinstrukcija. Svaki redak sadrava instrukciju u zbirnom jeziku koja, zapravo, predstavlja tekst napisan u skladu sa sintaksom zbirnog jezika (labela, polje operacijskog koda, polje operanda, polje komentara). Prevodilac za zbirni jezik (asembler) trebao bi itati redak po redak izvornog programa i prevoditi ga u strojni jezik. Postupak bi bio zavren kada i posljednja instrukcija programa bude prevedena. No stvari nisu tako jednostavne - zbirni jezik koristi labele ili oznake za simboliko oznaavanje adresa memorijskih lokacija, konstanti i vrijednosti operanada koje uslonjavaju postupak prevoenja. Na primjer, asembler prethodnim postupkom ne moe prevesti instrukciju grananja na ciljnu instrukciju koja je oznaena labelom ako se ta ciljna lokacija nalazi u retku koji asembler nije jo proitao, i to zato to redak tek slijedi i moe se nalaziti negdje pri kraju programa. Asembler u trenutku prevoenja

S. RIBARI - GRAA RAUNALA

117

instrukcije grananja ne zna adresu ciljne instrukcije i ne moe prevesti instrukciju grananja sve dok ne proe skoro kroz cijeli program. Taj se problem prepoznaje kao problem referenciranja unaprijed (engl. forward reference problem). Primjer 5.5, Prikaimo problem referenciranja unaprijed. Za programski odsjeak u zbirnom jeziku:

LOOP

MOVE. L MOVE.W BEQ. S MOVE.W ADD.L

DO, D2 LENGHT, D1 DONE (AO) +, D2 D2, DO

; granaj na DONE ako je LENGTH - 0

DONE

BNE MOVE.L

LOOP DO, TOTAL

(Opaska: u instrukciji BEQ. S DONE sufiks . S se upotrebljava, u skladu s zbirnim jezikom za MC 68000, kao oznaka prevodiocu da se koristi referenciranje unaprijed te da je ciljna instrukcija na udaljenosti (broj bajtova) koja se moe izraziti duljinom jednog bajta.) U trenutku kada asembler ita redak: BEQ. S DONE ; granaj na DONE ako je LENGTH = 0

ne moe prevesti instrukciju u strojni kod jer mu je simbolika adresa DONE, odnosno adresa ciljne instrukcije nepoznata. Problem referenciranja unaprijed obino se rjeava tako da asembler dvaput ita tekst zbirnog programa. Svako se takvo itanje naziva prolaz (engl. pass) pa se takav asembler naziva dvoprolazni asembler. U prvom prolazu asembler gradi tablicu simbola (engl. symbol table) koja sadrava sve simbole i njihove vrijednosti. Simboli su ili labele, ili vrijednosti koje su dodijeljene simbolikim imenima uporabom pseudoinstrukcija, npr. MASK EQU $ 0 0 0 F. Da bi dodijelio vrijednost simbolu koji se nalazi u polju labele instrukcije, asembler treba znati adresu te instrukcije koju e ona stvarno imati tijekom izvravanja objektnog programa. To znai da asembler prolazei kroz zbirni program mora svakoj instrukciji i podatku pridruiti adresu. To se postie uporabom posebnog brojila koje se naziva brojilo instrukcijskih lokacija (engl. ILC - Instruction Location Counter) iju vrijednost asembler obnavlja tijekom prevoenja. Na poetku prvog prolaza, inicijalno, vrijednost brojila instrukcijskih lokacija postavljena je na 0. itanjem svake instrukcije u retku, asembler poveava njegovu vrijednost u skladu duljinom instrukcije (npr. brojem bajtova ili, openito, brojem rijei od kojih se ta instrukcija sastoji). Kada asembler naie na pseudoinstrukciju, ORG postavlja vrijednost brojila na onu koju odreuje ta pseudoinstrukcija.

118

5. POGLAVLJE: ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK

Primjer 5,6. Za program iz primjera 5.2 prikaimo vrijednosti brojila instrukcijskih lokacija: Duljina DATA PROGRAM VALUE RESULT MASK START EQU EQU ORG DS.B DS.B DS.W EQU ORG MOVE*B AND.B MOVE.B ; MOVE,B LSR.B MOVE.B V RTS $6000 $4000 DATA 1 1 1 $000F $4000 VALUE, DO #MASK, DO DO, RESULT+1 VALUE, DO # 4 , DO DO, RESULT
-

1 1 2

ILC 0000 0000 6000 6000 6001 6002 6003 4000 4000 4004 4008 40OC 4010 4012 4016

4 4

4 2 bajtd^ti^

Opaska: duljltia

Tijekom prvog prolaska asembler osim tablice simbola generira jo i tablicu pseudoinstrukcijai t ^ l i c u o p ^ operacijskih kodoya sadrava mnemonik institrfe^ d z n a ^ tb asembleru biti p o ^ i ^ i ^htog^r^^^^tes^^ kr^u ^ vrijednosti brojila Instrukcijskih lokacija, asembler generira konanu tablicu simbola. Illlllllllll^ ' Za program iz pmr^m^ na temelju starija brojila instrukcijskih lokacija ILC tablica s i m b o l a ^ t ^ ^ ^ o ^ta^tc^

DATA MASK PROGRAM VALUE RESULT START Tablica 5.1, Tablica simbola Polje dodatne informacije moe sadravati duljinu polja pridruenog simbolu, informaciju mijenja ti simbol vrijednost ako se program puni na razliitim adresama, je li simbol doseljiv izvan tog programskog modula i si. 000F 4000 6000 6002 4000
-

5.RIBARICI- GRAA RAUNALA

119

Tijekom prvog prolaska asembler utvruje jesu li instrukcije u zbirnom jeziku napisane u skladu sa sintaksom zbirnog jezika. Na primjer, ako je neki mnemonik asembleru nepoznat ili ako se komentar pojavljuje u polju operanada, ili ako tablica simbola sadrava viestruko definiran isti simbol, ili pak sadrava nedefiniran simbol (nije mu dodijeljena vrijednost), onda e asembler signalizirati greku i generirati listu s izvjetajem o grekama. U tom se sluaju obustavlja daljnji postupak prevoenja. Ako nema pogreaka, asembler prolazi jo jednom (drugi prolaz) kroz izvorni program redak po redak. Ako redak sadrava instrukciju, asembler umee binarni uzorak koji odgovara toj instrukciji u objektni program koji postupno "raste" prolaskom asemblera redak po redak kroz izvorni program. U svakoj liniji asembler rjeava i simboliko referenciranje zamjenom simbola s njemu pridruenoj vrijednosti (koju nalazi u tablici simbola ili tablici pseudioinstrukcija). Ako redak sadrava pseudoinstrukciju kojom se definira vrijednost podatka (npr. DC - Define Constant), asembler e umetnuti odgovarajuu vrijednost koja e biti pohranjena na toj adresi. Uz sve to, asembler tijekom drugog prolaza obavlja aritmetike operacije koje su potrebne da bi se odredile vrijednosti pomaknua u sluaju instrukcija grananja (engl. branch offset). Na kraju postupka prevoenja asembler generira i informaciju koja je potrebna povezniku (engl. linker) kao to je, npr. vrijednost vanjskih simbola / labela (onih koje program referencira u drugim programskim modulima) te vrijednost simbola koji oznaava poetak programa. Primjerice, za program iz primjera 5.6. asembler EASy68K e nakon uspjenog prevoenja generirati ispis koji sadri strojni kod, ispis izvornog programa te poruke:

No errors detected No warnings generated


a tome e slijediti ispis tablice simbola:

SYMBOL TABLE INFORMATION Symbol-name Value DATA MASK PROGRAM RESULT START VALUE 6000 F 4 000 6002 4 000 60 00

Asembler generira objektnu datoteku koja sadrava binarni prikaz programa i podataka te dodatnu informaciju koja je potrebna povezniku i puniocu: i) zaglavlje datoteke u kojem se opisuje veliina i poloaj dijelova koji su sastavni dijelovi te datoteke; ii) tekstualni segment - sadrava strojni kod programa; iii) podatkovni segment - sadrava binarni prikaz podataka iz izvornog programa; iv) informaciju o premjestivosti - pokazuje na instrukcije i podatke koji ovise o apsolutnim adresama. Referenciranje takvih instrukcija i podataka mora se mijenjati ako se program premjeta u memoriji; v) tablicu simbola koja sadrava adrese vanjskih labela (onih koje program referencira u drugim programskim modulima) i listu nerijeenih referenciranja;

120

5. POGLAVLJE: ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK

vi) informaciju potrebnu za otkrivanje i otklanjanje pogreaka

- saet opis naina prevo-

enja tako da program za otkrivanje pogreaka moe nai korespondenciju izmeu adrese svake instrukcije i retka u kojem se instrukcija nalazi u izvornom programu. Slika 5.2. prikazuje shematski strukturu objektne datoteke.
informacija potrebna za otkrivanje pogreaka

zaglavlje datoteke

tekstualni segmenti

podatkovni segment

informacija o premjestivosti

tablica simbola

SI. 5.2 Struktura objektne datoteke

5.4. POSTUPAK PREVOENJA ZBIRNOG PROGRAMA


Slika 5.3 prikazuje postupak dobivanja objektnog programa kad se program sastoji od nekoliko izvornih programa (programskih modula) koji su napisani u zbirnom jeziku. Svaki se od njih nezavisno prevodi asemblerom u objektni program - izvrljivi binarni program. Programski modul obino referencira potprograme i podatke koji su definirani u drugim programskim modulima ili u knjinici programa (engl. program library) u kojoj se nalaze ve gotovi programi. Poveznik (engl. linker) kombinira i povezuje objektne programe i programe iz knjinice programa u izvrljivu datoteku (engl. executable file) tj. konani objektni program koji raunalo moe izvesti.

SI. 5.3 Postupak dobivanja objektnog programa kada se program sastoji od nekoliko izvornih programa

Postupak prevoenja instrukcija iz zbirnog jezika u strojne instrukcije predstavlja preslikavanje 1 - 1 , odnosno instrukciji u zbirnom jeziku dodjeljuje se pripadajua strojna instrukcija. Vrlo se esto u sloenim primjenama kombiniraju programi napisani u viem programskom jeziku s programima napisanim u zbirnom jeziku (tzv. hibridni pristup). Ovi posljednji koriste se za dijelove koji su vremenski kritini. Slika 5.4 prikazuje putove prevoenja programa koji su napisani u viim programskim je-

5.RIBARICI- GRAA RAUNALA

121

zicima i programa u zbirnom jeziku. Vidimo da zbirni jezik moe imati dvostruku ulogu: prevodilac prevodi program napisan u viem programskom jeziku (izvorni program) u program u zbirnom jeziku, a zatim se on asemblerom prevodi u objektni program. U drugoj je ulozi izvorni program napisan u zbirnom jeziku i asemblerom se prevodi u objektni program. Vidimo na slici 5.4 da prevodilac moe izravno prevesti program napisan u viem programskom jeziku u objektni program (bez generiranja zbirnog programa). Prevodioci koji ne generiraju program u zbirnom jeziku bri su od onih koji zahtijevaju i asembler na putu prevoenja. No takvi prevodioci koji izravno generiraju objektni program moraju obaviti mnoge zadatke koje obavlja i asembler (odreivanje adresa i kodiranje instrukcija sljedovima nula i jedinica).

SI. 5.4 Putovi prevoenja programa

5.5. PUNILAC (ENGL. LOADER)


Izlaz iz poveznika ima oblik datoteke koja se pohranjuje u sekundarnoj memoriji. Punilac je zaduen za prijenos te datoteke u radnu memoriju. Ovisno o raspoloivom memorijskom prostoru isti program moe biti smjeten u razliitim dijelovima memorije za svako njegovo izvravanja. Punilac je zaduen za prilagoavanje svih adresa programa u skladu sa stvarnim lokacijama na kojima je program pohranjen. Poveznik pretpostavlja da se objektni program pohranjuje u memoriji na lokaciji s adresom 0. No ako je stvarna poetna adresa A, tada se sve apsolutne adrese moraju poveati za A Taj zadatak treba obaviti punilac Punilac obavlja sljedee glavne funkcije: i) na temelju informacije iz zaglavlja objektne datoteke odreuje potreban memorijski prostor za tekstualni i podatkovni segment, ii) kopira tekstualni i podatkovni segment iz objektne datoteke u radnu memoriju, iii) mijenja adrese (poveava ih za A) gdje je to potrebno, iv) postavlja parametre programa (ako ih program ima) na stog jer se program promatra kao procedura koju poziva programska rutina koja je sastavni dio operacijskog sustava, v) inicijalizira sadraje svih registara ukljuujui i registar kazalo stoga, vi) grana na pobudniprogram (engl. start-up routine) koji poziva glavni programski modul prevedenog programa. Nakon povratka iz glavnog programskog modula, pobudni program zavrava program sistemskim pozivom te vraa upravljanje operacijskom sustavu.

5.RIBARICI- GRAA RAUNALA

128

6. POGLAVLJE

UPRAVLJAKA JEDINICA
6.1. UVOD
Upravljaka jedinica generira upravljake signale i njima pobuuje i koordinira sve aktivnosti unutar procesora, ali i u svim ostalim funkcijskim jedinicama raunala (u memorijskoj jedinici, ulaznim-izlaznim jedinicama). Upravljaka jedinica procesora mora openito podrati etiri sljedee temeljne funkcije: i) uspostavljanje odreenog stanja tijekom svakog instrukcijskog ciklusa (podsjetimo se, instrukcijski ciklus jedne strojne instrukcije ine dvije faze: PRIBAVI i IZVRI), ii) odreivanje sljedeeg stanja na temelju trenutnog stanja, stanja zastavica u statusnom registru i stanja na ulaznim upravljakim linijama procesora, iii) pohranjivanje informacije koja opisuje tekue stanje u kojem se procesor nalazi, iv) generiranje upravljakih signala za izmjenu podataka izmeu procesora i drugih funkcijskih jedinica. Primjer 6.1. Ako je tijekom instrukcijskog ciklusa ulazno-izlazna jedinica generirala zahtjev za prekid koji je signalnom linijom upuen procesoru i ako je stanje prekidne zastavice I (interrupt) u statusnom registru takvo da je prekid omoguen, tada e upravljaka jedinica odrediti da je sljedee stanje - stanje koje odgovara posluivanju prekidnog zahtjeva (funkcija ii)), a ne dohvat sljedee instrukcije iz slijeda instrukcija. No prije negoli krene na izravno posluivanje prekida, upravljaka jedinica mora pohraniti informaciju koja opisuje tekue stanje u kojem se procesor nalazi (funkcija iii)). Upravljaka jedinica treba generiranim slijedom upravljakih signala podrati pribavljanje instrukcije, dekodiranje instrukcije, njezino izvravanje te prijenos upravljanja s instrukcije na instrukciju u programu (engl. instruction sequencing). Prijenos upravljanja s instrukcije na instrukciju preduvjet je automatskog izvoenja programa. Na prvi pogled, najjednostavnija metoda upravljanja slijedom izvoenja instrukcija jest ona koja je koritena u raunalu EDVAC (Electronic Discrete Variable Computer) (J. Mauchley i J. P. Eckert, 1945.): svaka strojna instrukcija ima adresno polje koje sadrava adresu instrukcije koja e se sljedea izvriti. Format instrukcije prikazan je na slici 6.1. Primjeujemo da je instrukcija etveroadresna: adrese u adresnim poljima A1 i A2 odreuju memorijske lokacije na kojima su se nalazili operandi, adresno polje A3 specificira memorijsku lokaciju na kojoj e se pohraniti rezultat operacije (npr. rezultat zbrajanja ili mnoenja). Adresno polje A4 odreuje memorijsku lokaciju na kojoj se nalazi sljedea instrukcija.

124

6. POGLAVLJE: UPRAVLJAKA JEDINICA

adresno polje A1

adresno polje A2

adresno polje A3

adresne polje A4

op5

I r operacijski
i

adresa S ;ljedee instrukcije

kod

adrese operanada (adrese izvorita podataka)

adresa rezultata (adresa odredita)

SL 6.1 Format strojne instrukcije za raunalo EDVAC

Nedostatak predloenog rjeenja oit je: instrukcija koja osim polja operacijskog koda ima etiri adresna polja koja sadravaju adrese memorijskih lokacija (izvorita operanada, odredite rezultata te kazaljku na sljedeu instrukciju) zahtijevaju veliki broj bitova, odnosno veliku duljinu. Na primjer, uz pretpostavku da je polje operacijskog koda duljine 8 bita, a kapacitet radne memorije skromnih 4K, potrebna duljina instrukcije je 8 + 4 x 12 = 56 bita. Druga metoda odreivanja instrukcije koja e se sljedea izvriti zasniva se na opravdanoj pretpostavci da program predstavlja niz strojnih instrukcija koje su uzastopno pohranjene na slijednim memorijskim lokacijama. To znai, ako se instrukcija ^ nalazi na adresi A, onda ona ima jednoznano odreenu nasljednicu - instrukciju l2 koja se nalazi na memorijskoj lokaciji kojoj je adresa A + 1. Paljivi e itatelj u ovome prepoznati vanu ulogu registra programskog brojila PC iji se sadraj tijekom faze PRIBAVI automatski inkrementira tako da na kraju faze PRIBAVI pokazuje na sljedeu instrukciju. Zaista, ulogu etvrtog adresnog polja - kazaljke na sljedeu instrukciju preuzelo je programsko brojilo PC. Ovisno o duljini instrukcije (broja rijei od kojih se sastoji instrukcija) i adresne zrnatosti memorije (poglavlje 3.), sadraj programskog brojila poveava se za razliite vrijednosti.

Procesori CISC arhitekture imaju promjenjivu duljinu instrukcije (npr. od 2 do 22 bajta) ovi$n<* o vrsti e p e r ^ c ^ ^ t i pc^toika i nainu adresiranja pa se sadraj programskog brojila PC tijekom faze PRIBAVI poveava za vrijednost od 2 do 22. Procesori RISC arhitekture imaju "vrstu"duljinu instrukcije. Na primjer, 32-bftni RISC procesor ima duljinu instrukcije 32 bita pa se sadraj programskog brojila PC tijekom faze PRIBAVI poveamo za CISC procesore sadraj se programskog brojila tijekom faze PRIBAVI mijenja u PC promjenjiv i ovisi o duljini Instrukcije ije je pribavljanje u tijeku; . . . . za RISC procesore sadraj se programskog brojila tijekom faze PRIBAVI mijenja u PC PC + k, gdje je k konstanta i ovisi o"vrstoj"duljini Instrukcije i adresnoj zrnatosti memorije. Automatsko izvoenje programa zahtijeva i prijenos upravljanja s instrukcije na instrukciju kada one nisu slijedne: nasljednica instrukcije je ciljna instrukcija koja nije na adresi A + k. Razlikujemo dva glavna sluaja prijenosa upravljanja s instrukcije l1 na ciljnu instrukciju lc: i) prijenos upravljanja unutar istog programa; ii) prijenos upravljanja izmeu razliitih programa.

5.RIBARICI- GRAA RAUNALA

130

6.2. PRIJENOS UPRAVLJANJA UNUTAR ISTOG PROGRAMA


Prijenos upravljanja s instrukcije na instrukciju kada one nisu slijedne unutar istog programa obavlja se instrukcijama grananja (njih smo ve upoznali u poglavlju 3.). Razlikujemo instrukcije bezuvjetnog i uvjetnog grananja. Ponaanje instrukcije bezuvjetnog grananja moemo opisati ovako: PC<-X, gdje je X adresa ciljne instrukcije ili adresna sastavnica na temelju koje se moe odrediti adresa ciljne instrukcije. Pozor, promjena sadraja programskog brojila obavlja se tijekom faze IZVRI instrukcije grananja. Sadraj programskog brojila PC mijenja se bezuvjetno, odnosno ne provjeravaju se bilo kakvi uvjeti na temelju kojih bi se mogla sprijeiti promjena sadraja programskog brojila.

I ,

Izvoenje instriHccfje l^ezuvjetnog g r ^ M M ^ asocira na ^ J g Ima ^ p o s t ^ taKifK)} tijekom ft^ IZV^Hn&ruk^^ tako da ee u sljedeoj fazi PRIBAVI biti pribavljena (ciljna) instrukcija s memorijske

Instrukcija uvjetnog grananja izvodi se tako da se tijekom njezine faze IZVRI ispituje je li uvjet C zadovoljen ili ispunjen (C je obino posljedica neke prethodne instrukcije) i ako je uvjet C zadovoljen, tada se modificira sadraj programskog brojila PC - X. Ako uvjet nije zadovoljen, sadraj programskog brojila PC se u fazi IZVRI ne mijenja, to znai da se u sljedeoj fazi PRIBAVI pribavlja slijedna instrukcija u programu (nema grananja na ciljnu instrukciju) - pribavlja se instrukcija koja neposredno slijedi instrukciji grananja. U poglavlju 3. smo vidjeli da se zastavice statusnog registra SR sadravaju informaciju o rezultatu neke aritmetike ili logike instrukcije te da njihovo stanje ispituju instrukcije uvjetnog grananja (model CISC procesora). U naem primjeru RISC modela vidjeli smo da same instrukcije uvjetnog grananja ispituju izravno sadraj registra R[rc] u skupu registara ope namjene i ovisno o njegovom sadraju modificiraju sadraj programskog brojila (granaju ili ne granaju na ciljnu instrukciju).

6.3. PRIJENOS UPRAVLJANJA IZMEU RAZLIITIH PROGRAMA


Suvremeni stil programiranja u prvi plan stavlja upotrebu programskih procedura. One su temelj strukturiranih programa. Pod procedurom se obino podrazumijeva program, odnosno dio programa koji je napisan u viem programskom jeziku i kojem je dodijeljeno ime. Procedura obino provodi operacije na podacima koji su definirani pomou parametara. Procedura se moe pozivati s bilo kojeg mjesta u programu s razliitim parametrima za svaki poziv. One su temelj strukturnih programa. Veliki su programi organizirani u manje jedinice - procedure koje su pogodnije za rukovanje, jednostavnije za ispitivanje ispravnosti

124

6. POGLAVLJE: UPRAVLJAKA JEDINICA

djelovanja te jednostavnije za razumijevanje i dokumentiranje. Programi su organizirani kao skup procedura koje se meusobno pozivaju. Pozivi procedura predstavljaju zapravo prijenos upravljanja s jednog programa na drugi. Obino proceduru napisanu u zbirnom jeziku (asembleru) nazivamo potprogram. Razlikujemo i program koji poziva potprogram. On se esto naziva i glavni program, dok se pozvani naziva potprogram. No s obzirom da se pozivi mogu gnijezditi, tj. potprogram moe pozivati drugi potprogram, taj trei potprogram itd., koristimo nazive pozivajui program (engl. calling) - onaj koji poziva, i pozvani program (engl. called) - onaj koji se poziva. Prijenos upravljanja slian je kao i kod instrukcija uvjetnog ili bezuvjetnog grananja, ali s jednom vanom razlikom: kad se obavi zadatak definiran pozvanom procedurom (potprogram om), upravljanje se mora vratiti na instrukciju u pozivajuem programu, koja neposredno slijedi instrukciji koju je proceduru pozvala. Drugi vaan sluaj prijenosa upravljanja izmeu dva programa koji je sloeniji od prethodno opisanog sluaja dogaa se tijekom prekida (engl. interrupt). U tom sluaju govorimo o prekinutom programu - programu ije je izvoenje prekinuto zahtjevom za prekid, i prekidnom programu - programu na koje se prenosi upravljanje i koji obino posluuje ulaznoizlaznu jedinicu koja je generirala zahtjev za prekid. Prijenos upravljanja izmeu programa moe nastati uslijed iznimke (engl. exception) (Primjer 6.4.). Pod iznimkom podrazumijevamo posebne okolnosti kojima se naruava normalno stanje procesora i izvoenje tekueg programa. Prekidi se mogu promatrati kao podskup iznimke. Primjer 6.4. Iznimke mogu biti dvojake: i) vanjske iznimke su posebne okolnosti izazvane dogaajerp izvan procesora. Na primjer, vanjski je ureaj generirao zahtjev za prekid ili se pak dogodila pogreka na sabirnici, ili je aktiviran signal za ponovno uputanje procesora u rad (reset); ii) unutarnje iznimke su posebne okolnosti kao posljedica dogaaja unutar procesora. Na primjer, tijekom izvoenja instrukcije za cjelobrojno dijeljenje sklopovlje procesomutvrujedaJe djelitelj jednako ili je procesor otkrto

6.3.1. PRIJENOS UPRAVLJANA IZMEU POZIVAJUEG I POZVANOG PROGRAMA


Razmotrimo prvo jednostavniji sluaj - prijenos upravljanja izmeu pozivajueg i pozvanog programa, odnosno glavnog programa i potprograma. U skupu strojnih instrukcija nalazimo instrukcije za prijenos upravljanja s pozivajueg programa (oznaimo ga s P}) i pozvanog programa (potprograma) - oznaimo ga s P2 (slika 6.2). Oznaimo tu strojnu instrukciju mnemonikom CALL koja u polju operanda ima oznaku X: CALL X, gdje je X adresa (ili se ciljna adresa odreuje na temelju X) ciljne instrukcije - prve instrukcije potprograma (slika 6.2).

5.RIBARICI- GRAA RAUNALA

132

P
prva instrukcija odreena na temelju X

slijed in struke i

CALL;

instrukcija koja neposredno slijec instrukciji CALL X u P ,

RET

SI. 62 Odnos izmeu pozivajueg P1 i pozvanog programa P2

Tijekom faze IZVRI instrukcija CALL X izvodi se u dva slijedna koraka: 1. korak: Sadraj PC-a (koji pokazuje na sljedeu instrukciju u Pl; slika 6.2) pohranjuje se na za to predodreenu memorijsku lokaciju S: S PC; 2. korak: X (ili adresa izraunata na temelju X) prenosi se u PC: PC - X. Posljedica 1. koraka je pohrana povratne adrese na memorijsku lokaciju S. Posljedica izvoenja 2. koraka je priprema programskog brojila PC za dohvat ciljne instrukcije (prve instrukcije pozvanog (pot)programa) u sljedeoj fazi PRIBAVI. Prijenos upravljanja natrag s pozvanog potprograma P2 na pozivajui (glavni) program P1 obavlja se strojnom instrukcijom RET (return). Ona je posljednja instrukcija u programu ? r Tijekom njezine faze IZVRI obavlja se sljedee: PC<-S, sadraj memorijske lokacije S, koja sadrava povratnu adresu, smjeta se u programsko brojilo PC. U sljedeoj fazi PRIBAVI pribavlja se instrukcija iz P1 i to ona koja neposredno slijedi instrukciji CALL X. Naalost ovako opisana CALL X instrukcija ne podrava gnijeenje poziva programa. Slika 6.3 prikazuje to e se dogoditi ako program P1 instrukcijom CALL X poziva (pot)program P2, a ovaj instrukcijom CALL Y poziva (pot)program P3. Uporabom samo memorijske lokacije S u kojoj se pohranjuje povratna adresa dogaa se sljedee: nakon prvog poziva na memorijsku lokaciju S pohranjuje se adresa instrukcije 1 (slika 6.3). Nakon drugog poziva na S se pohranjuje adresa instrukcije 2, pri emu je bespovratno izgubljena povratna adresa koja pokazuje na instrukciju 1. Izvoenjem instrukcije RET u (pot)programu P3 uzima se sadraj iz S i smjeta u programsko brojilo PC te se upravljanje prenosi na instrukciju 2. Za sada je sve u redu, meutim, instrukcijom RET u (pot)programu P2 smjeta se sadraj iz S u PC - upravljanje e se prenijeti na instrukciju 2 istog (pot)programa (na memorijskoj lokaciji S pohranjena je adresa instrukcije 2!) - prijenos upravljanja natrag na program P1 nee se nikada dogoditi. Problem gnijeenja je ozbiljan problem jer je na temelju analiza uzoraka pozivanja i vraanja iz procedura za programe napisane u viim programskim jezicima utvren neprekinuti

124

6. POGLAVLJE: UPRAVLJAKA JEDINICA

slijed gnijeenja, odnosno dubina gnijeenja pet i vie. Slijed gnijeenja prekida se instrukcijom RET. Procesor mora podrati i na razini strojnih instrukcija pozivanje i gnijeenje poziva potprograma.

SI. 6.3. Problem gnijeenja poziva u sluaju instrukcije CALL X kada se ona izvodi u sljedea dva koraka: S - PC i PC <- X, pri emu je S memorijska lokacija predviena za pohranu povratne adrese

Kako se problem gnijeenja rjeavao u raunarskoj povijesti? Opisat emo dva naina prije negoli predloimo zadovoljivo rjeenje. Arhitekti u tvrtki DEC (Digital Equipment Computer) problem gnijeenja rijeili su za malo raunalo PDP-8 na sljedei nain: svaki pozvani (pot)program P. imao je "zaglavlje" S. - memorijsku lokaciju na kojoj se pohranjivala povratna adresa. S se nalazila na mjestu na kojem je trebala biti prva instrukcija pozvanog programa. Prva prava instrukcija pozvanog programa nalazila se na memorijskoj lokaciji koja slijedi neposredno zaglavlju. Pozivanje potprograma izvodila je instrukcija JMS X (Jump to Subroutine) tako da se povratna adresa, tj. sadraj programskog brojila pohranjivala u zaglavlje potprograma X - lokaciju S]t nova vrijednost programskog brojila X automatski se inkrementirala tako da je njegov sadraj X+1 pokazivao na prvu instrukciju potprograma. Kod sljedeeg (gnijeenog) poziva nova se povratna adresa pohranjivala u zaglavlje pozvanog potprograma. Trag povratnih adresa bio je sauvan. Vraanje natrag - prijenos upravljanja s pozvanog na pozivajui program obavljalo se instrukcijom JMPIX (Jump indirect to X).To je instrukcija indirektnog (neizravnog) skoka koja se izvodi tako da se program grana na ciljnu adresu X, ali se sadraj memorijske lokacije X ne tumai kao instrukcija, ve adresa na kojoj se sljedea instrukcija nalazi. Primjer 6.5, '

Pretpostavimo da je sadraj 16-bitne memorijske lokacije M jednak (M)=03FF (heksadekadno) i daje sadraj memorijske lokacije (G3FF) - 01B7. Izvoenjem "obine" instrukcije JMP M sadraj e programskog brojila na kraju njezine faze IZVRI biti (PC) = 03FF to znai da e se tijekom sljedee faze PRIBAVI dohvatiti prva rije nove instrukcije tj. 01B7. No izvoenjem instrukcije indirektnog skoka JMP I M sadraj programskog brojila P e na kraju njezine faze IZVRI biti (PC) = 01B7 to znai da e se tijekom sljedee faze PRIBAVI dohvatiti prvarijeInstrukcije koja je smjetena na memorijskoj lokaciji 01B7.

5. RIBARICI - GRAA RAUNALA

134

Instrukcijom JMPIX, gdje je X adresa zaglavlja potprograma dohvaala se povratna adresa i uspjeno se obavljalo vraanje iz ugnijeenih (pot)programa (slika 6.4).
pohranjuje se adresa pohranjuje

SL 6.4 Rjeenje problema gnijeenja poziva uporabom instrukcija JMS i JMP IX

Opisano rjeenje zaista podrava gnijeenje proizvoljne dubine, ali ima jedan nedostatak - ne podrava rekurzivno pozivanje (pot)programa. Drugo emo rjeenje problema gnijeenja prikazati s ve poznatim elementima. Sjetimo se instrukcije brl (Branch and link) za na model RISC procesora (poglavlje 3.):
brira, rb ; R[ra] <- PC, PC - R[rb]

Instrukcija brl ra, rb pohranjuje povratnu adresu ujedan od registara u skupu od 32 registra ope namjene R[ra], a zatim puni programsko brojilo PC s 32-bitnim sadrajem registra

Rlrbl
Ako sadraj registra R[rb] predstavlja adresu prve instrukcije pozvanog (pot)programa, dogodit e se grananje, odnosno prijenos upravljanja s P na P . Povratak se obavlja instrukcijom bezuvjetnog grananja:
brra ; PC <- R[ra]

kojom se sadraj registra R[ra], koji je povratna adresa, smjeta u programsko brojilo PC. Gnijeenje pozivanja i uspjeno vraanje iz potprograma omogueno je uporabom instrukcija brl ra, rb i br ra i paljivim izborom registara iz skupa registra ope namjene.

Primjer
Pretpostavimo da registar R[28] sadrava adresu potprograma P2, registar R[29] potprograma P3 i registar R[23] adresu potprograma P4. Iz glavnog programa P1 pozvat e se potprogramP^ imtrukcyom: brirZm ;R[2]<-PC,PC<-R[28] pri emu se povratna adresa pohranjuje u registar R[2].

124

6.

POGLAVLJE: UPRAVLJAKA JEDINICA

Potprogram P2 poziva potprogram P3 izvoenjem instrukcije:


brl r3, r29,

pri emu se povratna adresa pohranjuje u R[3], I konano, iz P3 se poziva potprogram P 4: 4"
brlr15,r23

pri emu se povratna adresa pohranjuje u registru R[15]. Vraanje se iz ugnijeenih programa obavlja se instrukcijama brrIS, brr3, br r2. Slika 6.5 prikazuje slijed pozivanja i vraanja iz potprograma za prethodni primjer.
P.

Mr2fr28

brifis

SI. 6.5 Primjer pozivanja i vraanja iz potprograma uporabom instrukcija brl ra, rb \brrb

Naalost, ni ovo rjeenje ne podrava rekurzivno pozivanje (pot)programa. Prije negoli pogledamo kako se rukuje rekurzivnim procedurama (ili rekurzivnim potprogramima), razmotrimo jo jedan vaan detalj u vezi s programskim procedurama - prijenos parametara izmeu pozivajueg i pozvanog programa. Naime, esto je potrebno pozvanom programu prenijeti neke parametre ili, pak, pozvani program mora vratiti neke vrijednosti. Postoje tri glavna naina prijenosa parametara: i) prijenos parametara preko registara (engl. parameter passing via registers), ii) prijenos parametara preko memorijskih lokacija (engl. parameter passing in memory), i i i) prijenos parametara preko stoga (engl. stack) (engl. passing parameters on the stack). U nainu i) pozivajui program priprema podatke koji su potrebni pozvanom programu tako da ih pohranjuje u registre procesora. Pozvani program prije povratka sprema rezultate u registre kojima moe pristupiti pozivajui program. Broj raspoloivih registara je ograniavajui imbeniku ovom jednostavnom nainu izmjene podataka. Pri prijenosu parametara preko memorijskih lokacija parametri se pohranjuju izravno na memorijske lokacije odmah nakon instrukcije za poziv potprograma. Potprogram mora u tom sluaju modificirati povratnu adresu u skladu s dobavljenim parametrima.

5. RIBARICI - GRAA RAUNALA

136

Trei nain prijenosa parametra temelji se na uporabi stoga, i to tako da se parametri polau na stog, a potprogram ih skida s vrha stoga i premjeta u registre procesora. Podrobnije o prijenosu parametara nainima ii) i iii) upoznat emo se neto kasnije u ovom poglavlju. Primjer 6.7. Ilustrirajmo programskim odsjekom za MC 68000 prijenos parametara preko registara. {Opaska: programski model procesora MC 68000 prikazan je na slici 6.18.) Pretpostavimo da treba prenijeti potprogramu SUBR dva parametra: duljinu spremnika podataka BUFL i njegovu poetnu adresu BUFFER. Programski odsjeak pozivajueg (glavnog) programa izgleda ovako: MOVE . w #BUFL, DO ; duljinu spremnika pohrani u registar DO MOVEA. L #BUFFER, AO ; poetna adresa spremnika u A0 JSR SUBR ; poziv potprograma SUBR (Opaska: instrukcija MOVE. W #BUFL, DO koristi usputni nain adresiranja (engl. immediate) u kojem je podatak sastavni dio instrukcije (poglavlje 5.). Na primjer, ako je BUFL jednako 0100 (hekshdekadao) onda e se instrukcija MOVE. W #BUFL, DO prevesti u 303C 0100 (heksadekadno) a posljedica njezina izvoenja bit e smjetanje 0100 (heksadekadno) u registar DO.). Instrukcija MOVEA, L #BUFFER, AO (MOVEA - Move to Address R^gister) smjetava poetnu adresu spremnika u adresni registar A0. Tako na primjer, ako je spremnik BUFFER veliine 256 bajtova odreen s: DATA EQU $4000 ORG DATA BUFFER DS.B 256 instrukcija MOVEA. L #BUFFER, A0 prevest e se u 207C 00004000. Nakon prijenosa upravljana instrukcijom JSR SUBR, pozvani potprogram ima parametre BUFL i BUFFER u registru DO, odnosno registru A0.

6.4. REKURZIVNE PROGRAMSKE PROCEDURE (REKURZIVNI POTPROGRAMI)


Najjednostavnije moemo definirati rekurzivnu programsku proceduru ili rekurzivni pot-

program kao programsku strukturu koja sama sebe poziva. Formalno, rekurzivni program (procedura ili potprogram) P moe se prikazati kao kompozicija n osnovnih instrukcija Sj (koje ne sadravaju P) i samog programa P: P = IIP [Sj, P]. Uoavamo da se rekurzivni program P pojavljuje na lijevoj i desnoj strani potonjeg izraza. Primjer 6.8. U viem programskom jeziku PROLOG, koji se koristi na podruju umjetne inteligencije, moemo precizno definirati pretka sa injenicom da su nai roditelji nai (prvi) preci, ali i injenicom da su i preci naih roditelja nai preci, kao i to da su preci naih predaka nai preci:

124

6. POGLAVLJE: UPRAVLJAKA JEDINICA

predakod (X,Y):- roditelj_od (X, Y). predak_od (X, Y)roditelj_od (Z, Y), predak_od (X, Z). Prva nam naredba govori daje X predak od Y ako je X roditelj od Y (u POLOG-u se znak tumai kao "ako"). Druga nam naredba govori da je X predak od Y ako je Z roditelj od Y i ako je X predak od Z (u PROLOG-u se znak, (zarez) tumai kao logiko I). Iz matematike, ali i iz programiranja poznajemo rekurziju. Na primjer, faktorijela n! ima reku rzivn u definiciju: 1.0! = 1; i 2. za n > 0, (n+1)! = (n + 1) (n!) Uoava se da se u rekurzivnoj definiciji faktorijela nalazi s lijeve i desne jednakosti. Drugi su primjer Fibonaccijevi brojevi koji se rekurzivno mogu definirati kao: 1.F0 = O.F, = 1:i 2. Fn = Fn-1 + Fn-2 , za n G Z+ i n a 2. Iz programiranja poznajemo problem Hanojskih tornjeva koji se jednostavno rjeava uporabom rekurzije. Prikaimo vrlo openito rekurzivno pozivanje potprograma najednom primjeru (slika 6.6):
glavni program rekurzivni potprogram SUB

SI. 6.6 Prikaz rekurzivnog pozivanja

Glavni program u jednom trenutku instrukcijom CALL SUB poziva potprogram SUB. Povratna adresa u glavni program je A. Prenosi se upravljanje na potprogram SUB. Izvode se instrukcije u potprogramu SUB i u jednom se trenutku izvodi instrukcija u pozvanom potprogramu CALL SUB - potprogram SUB sam sebe poziva! Predviena povratna adresa je B. Ovim se pozivom ponovo prenosi izvoenje na prvu instrukciju potprograma (oznaena labelom SUB). Ponovo se izvodi slijed instrukcija u potprogramu i ponovo se s CALL SUB poziva potprogram itd. Ovako predoena rekurzivna struktura, osim to ilustrira samopozivanje nema nikakav praktian znaaj. Naime, rekurzivno pozivanje e se dogaati do beskonanosti (naravno, teorijski razmatrano) (slika 6.7).

5. RIBARICI - GRAA RAUNALA

138

oo

CALLSUB A:

SI. 6.7 Rekurzivno pozivanje do beskonanosti

Da se rekurzivni program ne bi pozivao do beskonanosti, potrebno je u rekurzivni program ugraditi dodatni kontrolni "mehanizam" kojim e se ograniiti broj rekurzivnih pozivanja. Slika 6.8 ilustrira takav dodatni "mehanizam". Vidimo da e se u tom sluaju samopozivanje obavljati sve dok je N > 0. Ako je, na primjer, poetna vrijednost za N bila 3 (definirali smo je u glavnom programu i prenosimo je kao parametar rekurzivnom potprogramu), onda potprogram SUB samo dva puta poziva samog sebe.
glavni program rekurzivni potprogram SUB

SUB:

N: = 3 CALLSUB A:

N: = N-1 IF (N>0)THEN CALLSUB B:

RET

SI. 6.8. Kontrolirano samopozivanje potprograma

Rjeenje problema rekurzivnog pozivanja i uspjenog vraanja iz rekurzivnih poziva nudi stog (engl. stack).

124

6. POGLAVLJE: UPRAVLJAKA JEDINICA

6.4.1. STOG
Stog se obino definira kao LIFO (Last In First Out -zadnji unutra, prvi van) dinamika struktura podataka. S implementacijske toke motrita stog predstavlja LIFO memorijsku strukturu koja ukljuuje vremensku sastavnicu u svoje ureenje podataka:"najstariji"podatakje na dnu stoga, dok je "najmlai" (onaj koji je posljednji pohranjen ili poloen na stog) na vrhu stoga. Stogom se rukuje samo dvjema operacijama: i) poloi podatak na stog (engl. push), ii) uzmi podatak sa stoga (engl. pop ili pull). Treba posebno naglasiti da obje operacije imaju pristup samo vrhu stoga. Izvoenjem operacija push i pop dinamiki se mijenja stog - kaemo da on "raste" kada se podaci polau na vrh stoga i da se on "smanjuje" kada se podaci uzimaju s vrha stoga. Rast ili smanjivanje stoga "prati" poseban registar koji se naziva kazalo stoga SP (engl. stack pointer). (Opaska: registar kazalo stoga se u literaturi (npr., L. Budin i sur.) naziva i kazaljka stoga). Kazalo stoga SP sadrava adresu stoga, i to tako da njegov sadraj pokazuje na vrh stoga, odnosno na memorijsku lokaciju koja odgovara vrhu stoga. Sadraj kazala stoga se automatski mijenja izvoenjem push i pop operacija, i to na sljedei nain: polaganjem podatka na vrh stoga (operacija push) sadraj kazala stoga SP automatski se umanjuje - kaemo da stog raste u smjeru padajuih adresa; uzimanjem podatka s vrha stoga (operacija pop) sadraj kazala stoga SP automatski se poveava - kaemo da se stog smanjuje u smjeru rastuih adresa; Obino me studenti pitaju to je razlog takvom pomalo neobinom pravilu da stog raste u smjeru padajuih adresa - osim objanjenja da su razlozi povijesni, nema drugog (opravdanog) razloga. (Opaska: za registar kazalo stoga koristi se i naziv registar kazaljke stoga (L. Budin i sur.)) Primjer 6.9. Slika 6.9 prikazuje stanje stoga i sadraj kazala stoga SP prije i poslije izvoenja operacija push i pop. Primjeujemo da u oba sluaja (izvoenje push i pop) sadraj kazala stoga SP prati "disanje" stoga. Operacijom pop svrha stoga uzetje podatak meutim, kako je ta operacija zapravo itanje sadraja memorijske lokacije, a ona nije destruktivna, podatak b e ostati u memoriji, ali nije vie element stoga, itatelj se moe u to jednostavno uvjeriti - ako se nakon stoje izvedena operacija pop izvede operacija push (npr. push d), podatak d e "prekriti" a sadraj kazala stoga SP e poprimiti vrijednost mmmm-4 (slika 6.10). Neki procesori imaju instrukcije s mnemonicima PUSH (ili PSH) i POP (ili PUL) namijenjene operacijama sa stogom. Procesor MC 68000 nema instrukcije push i pop ve umjesto njih koristi instrukciju MOVE, Na primjer, instrukcija

MOVE/L DO, - (A7)


pohranjuje 32-bitni sadraj registra DO na vrh stoga, dakle ima funkciju operacije push. (Opaska: potonja instrukcija rabi registarsko indirektno (neizravno) adresiranje s predekre-

mentiranjem (engl. address register indirect with predecrement) kojim prije negoli se odredi
adresa odredita operanda procesor oduzima 1 od sadraja adresnog registra (A7), koji ima funkciju kazala stoga, za svaki bajt operanda - stog raste u smjeru padajuih adresa.)

5.RIBARICI- GRAA RAUNALA

140

ft

an

...

..

'Ci-:

mmmmxissMt.

lili e ili e
E

ft

" . . - - . - -o :

- a E

" "

SI. 6.9 Stanje stoga i sadraj kazala stoga SP prije i poslije izvoenja operacija push i pop Procesor MC 68000 obavija zadatak operacije uzimanja podatka s vrha stoga (pop) instrukcijom

MOVE.L (A7)+, D O
kojom se s vrha stoga 32-bitni podatak premjeta u registar podataka DO. Potonja instrukcija rabi registarsko indirektno (neizravno) adresiranje s postinkrementiranjem

(engl. address register indirect with postincrement; poglavlje 5.) - stog se smanjuje u smjeru rastuih adresa.

124

6. POGLAVLJE: UPRAVLJAKA JEDINICA

mmmm -6 mmmm -5 mmmm - 4 rrimmm -3 m m rrt m - 2 mmmm trt m n r tm registar kazalo stoga SP mmmm-3

mmmm-6 mmmm-5 mmmm -4 mm m m-3 mmmm -2 mmmm mmmm SI. 6.10 Podatak b nije element stoga i zato e se "prekriti" operacijom push d Razumijevanje djelovanja stonog mehanizma (stoga i registra kazala stoga SP) iznimno je vano jer se on koristi u postupcima grananja u potprograme, u postupcima rekurzivnog pozivanja programskih procedura (rekurzivnih potprograma) te u posluivanju prekida, odnosno iznimaka. Na stog se privremeno pohranjuju podaci kao to su: povratna adresa koja osigurava pravilan povratak iz potprograma ili procedura; parametri i rezultati koji se izmjenjuju izmeu pozivajueg i pozvanog programa; tekui status ili stanje procesora koje je nuno potrebno za pravilan povratak iz prekidnog programa i iznimki te za pravilan nastavak prekinutog programa; korisniko definirani podaci LIFO strukture. Budui da razlikujemo podatke koji su namijenjeni upravljakim funkcijama i podatke koji su korisniko orijentirani i koji se pohranjuju u stog, moemo oekivati da e procesori podravati vie stonih struktura koje se mogu klasificirati kao upravljake i korisnike. Vratimo se sada problemu pozivanja potprograma i rekurzivnog pozivanja potprograma, odnosno programskih procedura. Ve smo spomenuli da se problem rekurzivnog pozivaa
registar kazalo stoga SP

mmmm -4

5.RIBARICI- GRAA RAUNALA

142

nja i uspjenog vraanja iz rekurzivnih poziva moe rijeiti uporabom stoga. Uz pretpostavku da upravljaka jedinica procesora podrava stoni mehanizam, moemo sada preinaiti funkciju CALL instrukcije i to na sljedei nain: Tijekom faze IZVRI instrukcija CALL X izvodi se u dva slijedna koraka, ali tako da u prvom koraku koristi stog: 1. korak: Pohranjuje se sadraj programskog brojila PC na stog (operacija push PC); (Povratna adresa se privremeno pohranjuje na stog), 2. korak: X (ili adresa izraunata na temelju X) prenosi se u PC: PC <- X. Tako definirano ponaanje CALL X instrukcije zahtijeva i preinaku instrukcije vraanja iz potprograma RET. Ona se sada izvodi tako da uzima s vrha stoga povratnu adresu i smjeta je u programsko brojilo PC.Tijekom faze IZVRI strojna instrukcija RET izvodi operaciju:
pop PC

Ovdje moramo napomenuti da instrukcija RET uzima s vrha stoga "na slijepo" podatke koji se smatraju da su povratna adresa, meutim, ako je u meuvremenu sadraj stoga modificiran, moe se dogoditi da "skinuti" podaci s vrha stoga nisu povratna adresa. I f ' . ' " . ' v V^

i I

J i

Pretpostavimo da pozivajui program P1 poziva potprogram SUBR. Nakon to potprogram SUBRobavi^adatak, instrukcijom RET prenosi upravljanje natrag na pozivajui program P r Pretpostavimo daje A 32-bitna povratna adresa (adresa instrukcije u programu P1 koja neposredno slijedi instrukciji CALL) te da je memorija u kojoj je organiziran stog bajtno adresno zrnata. Slika 6.11 a) prikazuje stanje stoga i kazala stoga SP neposredno prije grananja u potprogram, dika 6.11 b) prikazuje njihovo stanje neposredno nakon grananja u potprogram te, konano, slika 6.11 c) prikazuje stanje stoga i kazala stoga SP neposredno nakori povratka u pozivajui program. Na slici 6.11 b) vidimo da je 32-bitna povratna adresa (koju smo oznaili $ A) zapravo sadraj programskog koja se nalazi na adresi A. Povratna je adresa zapisana u obliku slijeda od 4 bajta: od PC[7:0] - oznaava najmanje znaajan bajt povratne adrese, do PC[31; 24] - oznaava najznaajniji bajt povratne adrese. Na slici 6.11 c) vidimo daje stanje stoga i kazala stoga identino onom kofe je bilo neposredno prije pozivanja potprograma SUBR. Ono to zamjeujemo jesttiag izvoenja-sadraji itremor^skih toMc^a^ ali pozor sada ova etiri bajta PC[7:0] - PC[3 V24] nisu elementi koji pripadaju stogu.

124

6. POGLAVLJE: UPRAVLJAKA JEDINICA

bajt

registar kazalo stoga SP mmmm -4

a) fegstar kazalo stoga SP mni fniit mmmm -7 mmmm -6


mmmm -8

11111 l U U i i f g j
- ^ m in irt " 3 ililililili^^ v/IIP . ; . mm:1 lili' 1R

Sto

- .

gjK igg

BiliSffifB! mmmm -5
V -;

P C 17:

registar k a z a t o stoga SP

S i l i l M
mmmm-1 K ^ S l i l l l l l l ;
mmsmmr

Slit:

SI. 6.11

(Opaska: opisane operacije odreene instrukcijama CALL i RET koje rabe stog, ovisno o vrsti procesora, imaju razliite mnemonike. Na primjer, procesor MC 68000 koristi mnemonik

5.RIBARICI- GRAA RAUNALA

144

JSR (Jump to Subroutine) koji odreuje operaciju pozivanja potprograma, te mnemonik RTS (Return from Subroutine) za povratak iz potprograma. Naravno, obje instrukcije rabe stog za pohranu povratne adrese, odnosno za uzimanje povratne adrese s vrha stoga.) Primjer 6.11. Sada kad smo se upoznali sa stogom i njegovom ulogom u prijenosu upravljanja izmeu pozlvajueg i pozvanog programa, moemo pogledati i prijenos parametara preko memorijskih lokacija (engl. parameter passing in memory) za procesor NIC 68000. (Opaska: ovdje nam je potrebno poznavanje mehanizma stoga samo radi razumijevanja "ugaanja" povratne adrese.) Pretpostavimo da elimo kao i u Primjeru 6.7, prenijeti potprogramu SUBR dva parametra: duljinu spremnika podataka BOFL i njegovu poetnu adresu BUFFER. Parametri koji se prenose mogu se smjestiti neposredno poslije instrukcije JSR (JSR - Jump to Subroutine) kojom se poziva potprogram. Odsjeak pozivajueg programa izgleda ovako: JSR DC.W SUBR BUFL ; poziv potprograma SUBR

DC. L
...

BUFFER
; sljedea "prava* instrukcija u po2^vajuem programu

(Opaska: najcon izvoenja JSR SUBR na stogu bit e pohranjena adresa koja odgovara adresi pseudoinstrukcije DC. W BUFL. Naravno, to nije prava povratna adresa jer oekujemo da povratak bude na instrukciju koja neposredno s///ed/drugoj pseudoinstrukciji Potprogram SUBR prvo pohranjuje na stog prethodne vrijednosti registara koje e koristiti i nakon toga uzima parametre i, konano, ugaa povratnu adresu: SUBR MOVEM. L DO /AO-AL, - (A 7) , 00, AO i At
i

MOVEA.L 12 (A7), AI
MOVE.W (AL)+, DO MOVEA.L ( A l ) +, AG M0VE.L A l , 12 (A7)

; povratna aifesa popuje na BUFL


ISMJE^BTI^BPQ ;smjestipogitniiaras^

(Opaska: instrukcija MOVEM. L DO / AO-AL, - (Al) pohranjuje sadraje 32-bitnih registara DO, AO i A1 na stog uporabom registarsko indirektnog (neizravnog) adresiranja

s predekrementiranjem (engl. address register indirect with predecrement) kojim prije


negoli se odredi adresa odredita operanda procesor oduzima 1 od sadraja adresnog ij registra A7 bit e umanjen za 4 jer je operand specificiran s ,L. Instrukcijom MOVEM. L (Move Multiple - viestruko premjetanje) uporabom adresiranja adresnim registrom A7 s predekrementiranjem ostvaruje se operacija polaganja triju 32-bitnih sadraja specificiranih registara (DO, AO, AT) na stog pri emu se sadraj tiraa 12.) setriregina stog. ilika za analizu stanja stoga i kazala stoga, tj. registra A7.

' 5 ( D . 2 U ^ ^ (

ill

, U .>

>

PQ

spiiili i i l l p ifiliii

iliis

ipeiiiWl
*. IS 5

8 f 3 .' 1

4 ,' J 3 E 'Jv'Misfit ilflllt &

spgiiei

5.RIBARICI- GRAA RAUNALA

141

SUBR

MOVEM.L DO/AL, -(Al) MOVE.W 12 (A7), DO MOVEA. L 14 ( A 7 ) , A l

; pohrani "stare" sadraje registara ;duljinu spremnika pohrani u DO ; poetna adresa spremnika je u A1

U ovom sluaju nije potrebno ugaati povratnu adresu jer se nakon vraanja starih sadraja registara DO i A l instrukcijom MOVEM. L (A7) + , D O / A l na vrhu stoga nalazi prava povratna adresa. itatelju savjetujem da paljivo analizira stanja stoga tako da nacrta stog i prati promjene stanja stoga i sadraja kazala stoga SP tijekom izvoenja potonje opisanih operacija. Naravno, preporuujem i uporabu EASy68K asemblera i simulatora za analizu stanja stoga. itatelju ostavljamo da se sam uvjeri da instrukcije CALL X i RET koje se temelje na stonom mehanizmu podravaju gnijeenje poziva procedura i vraanje iz njih.

Razmotrimo kako e se tim instrukcijama podrati rekurzivno pozivanje i vraanje iz rekurzivno pozvanih procedura. Pozovimo se na sliku 6.8 na kojoj smo ilustrirali situaciju kada se rekurzivna procedura poziva iz glavnog programa, a zatim se rekurzivno poziva jo dvaput. Slika 6.12 prikazuje stanje stoga. Nakon prvog poziva potprograma SUB (poziva iz glavnog programa) na stog se pohranjuje povratna adresa A (slika 6.12 a)). Prenosi se upravljanje na prvu instrukciju rekurzivnog potprograma SUB. Slika 6.12 b) prikazuje stanje stoga nakon prvog rekurzivnog poziva - na stogu je pohranjena povratna adresa B. (Vrijednost varijable N = 2). Nakon toga se izvodi slijed instrukcija u rekurzivnom potprogramu i ponovo se samopoziva potprogram SUB. (Vrijednost varijable N = 1). Na stog se ponovo polae povratna adresa B. Slika 6.12 c) prikazuje stanje stoga. Ponovo se izvodi slijed instrukcija zapoevi od prve instrukcije rekurzivnog potprograma. U tom prolasku N-1 poprima vrijednost 0 i umjesto rekurzivnog pozivanja nastavlja se slijed instrukcija potprograma do instrukcije RET. Slika 6.12 d) prikazuje stanje stoga neposredno nakon prvog izvoenja instrukcije RET: S vrha stoga uzeta je povratna adresa B i nastavlja se slijed instrukcija potprograma s instrukcijom kojoj je ciljna adresa B. Nakon toga, ponovo se izvodi instrukcija RET koja sa vrha stoga uzima ponovo povratnu adresu B. Slika 6.12 e) prikazuje stanje stoga neposredno nakon drugog povratka iz rekurzivno pozvanog potprograma SUB. Konano, nakon jo jednog prolaska kroz slijed instrukcija od ciljane adrese B do instrukcije RET, instrukcija RET uzima s vrha stoga povratnu adresu A i prenosi upravljanje na glavni program (slika 6.12 f)).

124

6. POGLAVLJE: UPRAVLJAKA JEDINICA

SP

SP

--

^^lilMfilli

b)

SP

B s i SS

SP

II iiiiiiiiiiBsisii:iiiiiiiisiiiii
,
f\ i^ti^f^rt

. '

, '- '

a i s f i i

s a n

laillBllgiii
d)

SP SP

e)

f)

SL 6.12 Stanje stoga tijekom rekurzivnog pozivanja i vraanja iz rekurzivno pozvanog potprograma; a) prvi poziv (N = 3) - poziv potprograma SUB iz glavnog programa; b) drugi poziv (N = 2) - rekurzivni poziv iz potprograma SUB; c) trei poziv {N = 1) - rekurzivni poziv iz potprograma SUB; d) prvi povratak iz rekurzivnog potprograma; e) drugi povratak iz rekurzivnog potprograma; f) stanje stoga i kazala stoga SP nakon povratka u glavni program

6.4.2. IZVEDBA STOGA


Stog je iznimno vana sastavnica raunala. On se moe u procesoru, odnosno raunalu

realizirati programski ili sklopovski.


Programska izvedba stoga temelji se na odreenom broju memorijskih lokacija koje su obino dio radne memorije raunala. Takvoj se izvedbi uz obavezni registar kazalo stoga SP obino pridruuju jo i dvije kazaljke koje odrava operacijski sustav raunala (slika

5.RIBARICI- GRAA RAUNALA

143

6.13). One pokazuju i omeuju memorijski potprostor koji je dodijeljen stogu - kazaljka BR pokazuje na memorijsku lokaciju koja ima najviu adresu i odgovara dnu stoga, a kazaljka LR pokazuje na memorijsku lokaciju koja ima najniu adresu u potprostoru dodijeljenom stogu (napomenimo, stog raste prema padajuim vrijednostima adresa). Stvarno "disanje" stoga prati, naravno, registar kazalo stoga SP. Ove spomenute kazaljke BR i LR slue za otkrivanje kritinih situacija koje se, bez obzira na veliinu memorijskog potprostora namijenjenom stogu, mogu dogoditi. To su preljev stoga (engl. stack overflow) i podljev stoga (engl. stack underflow). Preljev stoga nastupa kada se operacijama push stog popuni tako

SI. 6.13 Programski realiziran stog

Podljev stoga nastupa kada brojnim uzastopnim operacijama pop dostigne dno stoga, odnosno kada sadraj kazala stoga SP premai vrijednost koja definirana kazaljkom BR. Primjer 6.13. /

Zna se dogoditi, posebice programeru poetniku, da raunalo odnosno operacijski sustav raunala, umjesto oekivanog prikaza rezultata izvoenja programa na zaslonu ispie poruku "System stack overflowTo upravo znai da je zbog logike pogreke u programu broj polaganja podatka (ili povratnih adresa) na stog bio takav da je premaen prostor predvien za podruje sistemskog stoga. U skupu strojnih instrukcija postoje instrukcije koje omoguuju programeru definiranje poetne vrijednosti kazala stoga SP. Na primjer, procesor MC 68000 koristi instrukciju:

MOVE An, USP


kojom se 32-bitni sadraj adresnog registra An premjeta u korisniko kazalo stoga. Neto kasnije emo vidjeti da je to povlatena instrukcija koja se moe izvesti samo u nadglednom nainu rada (engl. supervised mode) procesora. 8-bitni procesor MC 6800, prethodnik procesora MC 68000, ima instrukciju LDS (Load Stack Pointer - puni kazalo stoga). Na primjer, instrukcijom

LDS #$1400

124

6. POGLAVLJE: UPRAVLJAKA JEDINICA

koja koristi usputni naina adresiranja 16-bitno kazalo stoga SP poprima vrijednost 1400 (heksadekadno). Sklopovski realizirani stog sastoji se od n internih registara koji ine LIFO strukturu i koji su izvedeni na procesorskom ipu. Prednost takve izvedbe jest velika brzina, a nedostatak je ograniena, relativno mala dubina stoga. Sklopovski ostvaren stog zahtijeva i dodatno sklopovlje za otkrivanje preljeva i podljeva. Slika 6.14 prikazuje sklopovsku izvedbu stoga koji je dubine n k-bitnih rijei. Stog je ostvaren pomou k posmanih n-bitnih sklopova (posmanih registara sR1 - sRk). Operaciji push odgovara posmak udesno, a operaciji pop posmak ulijevo. Posmanim registrima pridodano je brojilo po modulu n i kombinacijski logiki sklop koji na temelju razlike broja push i pop operacija detektira preljev, odnosno podljev.
vrh stoga

SI. 6.14 Sklopovski ostvaren stog

(Opaska: itatelj moe dobiti zorniju predodbu o sklopovski ostvarenom stogu ako sliku 6.14zakreneza 90 u smjeru kazaljke na satu.)

5.RIBARICI- GRAA RAUNALA

145

r ,5. PRIJENOS UPRAVLJANJA IZMEU PREKINUTOG I PREKIDNOG PROGRAMA


Ve smo spomenuli da se drugi vaan sluaj prijenosa upravljanja izmeu dva programa dogaa tijekom prekida. Slika 6.15 prikazuje shematski odnos izmeu prekinutog i prekidnog programa. Na prvi je pogled slika 6.15 vrlo slina slici 6.11 a) (sluaj pozivanja potprograma). No postoje neke vrlo bitne razlike. Prijenos upravljanja u sluaju poziva potprograma obavlja se pod uvjetima koje moemo smatrati kontroliranim: trenutak prijenosa upravljanja odreen je instrukcijom CALL. U sluaju prekida, trenutak kada e se dogoditi prijenos upravljanja, odnosno kada e pristii procesoru zahtjev za prekid nije poznat. Zahtjev za prekid generira ulazno-izlazni ureaj, a trenutak ovisi o stanju vanjskog svijeta ije aktivnosti nisu sinkronizirane s aktivnostima procesora ili raunalnog sustava. Dakle, zahtjev za prekid moe biti generiran u bilo kojem trenutku tijekom izvoenja programa. Procesor ne odgovara trenutno na zahtjev (u t = 0 s), ve se mora zavriti instrukcija ije je izvoenje bilo u tijeku. Postojanje zahtjeva za prekid i zavretak instrukcije tijekom koje je zahtjev generiran jo nije dovoljan uvjet za prihvaanje prekida. Naime, procesor se moe zatititi od prekida tako da ne reagira na zahtjev ako je prekid maskiran ili onemoguen. Prekid se maskira postavljanjem jedne ili vie prekidnih zastavica u statusnom registru SR. Procesori koji imaju hijerarhijsku vierazinsku organizaciju prekida zahtijevaju kao uvjet prihvaanja prekida da razina zahtjeva za prekid bude via od razine trenutno kodiranog prekida pomou prekidnih zastavica u statusnom registru SR. Razlog postojanja mogunosti neprihvaanja prekida jest injenica da vrlo esto postoje kritini programski odsjeci koji ne smiju biti prekinuti. Zbog nepoznavanja trenutka, odnosno instrukcije nakon koje e zahtjev za prekid prihvatiti, procesor mora osim povratne adrese pohraniti i sadraj statusnog registra SR prije negoli grana na prvu instrukciju prekidnog programa. Zato sadraj statusnog registra SR? U stanju zastavica statusnog registra ogleda se stanje procesora koje je bilo neposredno prije nego to je zahtjev za prekid prihvaen. Informacija pohranjena u statusnom registru predstavlja dodatnu minimalnu informaciju koja daje nadu da e se stanje procesora, koje je bilo neposredno prije prekida, moi rekonstruirati.
prekinuti program prekidni program

IF zahtjev za p r e k i

RTI

SI. 6.15 Shematski prikaz odnosa prekinuti i prekidni program

124

6. POGLAVLJE: UPRAVLJAKA JEDINICA

Povratna adresa i stanje statusnog registra definiraju tzv. minimalni kontekst (engl. minimal context). Taj se minimalni kontekst tijekom "kuanskih poslova" prijenosa upravljanja s prekinutog na prekidni program pohranjuje na stog.

registar kazalo stoga SP m mm m -2 m m m m -1


' "
1

mmmm -2

t.
;

m mm m

a)

registar kazalo stoga SP m mmm -8

b)

mmmm -8
mmmm -7 m mmm -6 m mmm -5 m mmm -4 m mmm -3 m mmm -2 m m m m -1 mmmm

SR [15:8] SR [7:0] PC [31 :24] PC [23:16] PC [15:8] PC [7:0]

registar kazalo stoga SP m m mm -2


r"

C)

SI. 6,16 Stanje stoga tijekom prijenosa upravljana s prekinutog na prekidni program i natrag; a) stanje stoga i kazala stoga SP neposredno prije prihvaanja prekida; b) stanje stoga i kazala stoga SP neposredno nakon prijenosa upravljanja na prekidni program; c) stanje stoga i kazala stoga SP neposredno nakon vraanja iz prekidnog programa

S. R1BARI - GRAA RAUNALA

147

Druga vana razlika je u tome stoje u sluaju poziva potprograma adresa prve instrukcije potprograma sadrana u samoj instrukciji CALL X (gdje je X adresa ili adresna sastavnica na temelju koje se odreuje adresa prve instrukcije potprograma). U sluaju prekida, adresa prve instrukcije prekidnog programa odreuje se tako da se identificira uzronik prekida, dakle ulazno-izlazni ureaj koji je generirao zahtjev za prekid. Tek kad se utvrdi uzronik prekida, odreen je i prekidni program koji se treba izvriti. Uzronik prekida identificira se na razliite naine - najjednostavniji nain je da procesor uvijek odlazi na isti prekidni program i u njemu prozivanjem potencijalnih uzronika prekida utvruje tko je zaista generirao zahtjev za prekid. Druga mogunost je uporaba metode vektorskog prekida u kojoj uzronik prekida, nakon to od procesora primi signal da je prekid prihvaen, alje procesoru jedinstveni, npr. 8-bitni kod koji je identifikator uzronika prekida. Na temelju tog vektorskog broja procesor tijekom "kuanskih poslova" prijenosa upravljanja rauna ciljnu adresu prve instrukcije prekidnog programa. U poglavlju 13. itatelj e nai podroban opis organizacije prekidne strukture procesora. Prekidni program zavrava instrukcijom tipa RTI (Return from interrupt) ili RTE (Return from Exception) - povratak iz prekida ili povratak iz iznimke. Ova instrukcija uzima s vrha stoga minimalni kontekst tj. povratnu adresu i sadraj statusnog registra, i rasporeuje ga u programsko brojilo PC i statusni registar SR. Budui da emo posebno poglavlje posvetiti prekidu, ovdje samo kao saetak zapamtimo da se prijenos upravljanja s prekinutog na prekidni program obavlja tako da se minimalni kontekst pohranjuje na stog. Povratak iz prekidnog programa izvodi se strojnom instrukcijom (tipa RTI ili RTE) kojom se s vrha stoga uzima minimalni kontekst i rasporeuje tako da povratna adresa "ide" u programsko brojilo PC, a preostali se dio minimalnog konteksta pohranjuje u statusni registar SR. Slika 6.16 prikazuje stanje stoga neposredno prije prihvaanja prekida (6.16. a)), neposredno nakon prijenosa upravljanja na prekidni program (6.16 b)) i, konano, stanje stoga neposredno nakon vraanja iz prekidnog programa (pretpostavili smo da je povratna adresa 32-bitna, a statusni registar SR 16-bitni, adresna zrnatost memorije bajtna).

6.6. PRIMJER UPORABE STOGA ANALIZA SLUAJA ZA MC 68000


Da bismo utvrdili gradivo vezano za problem prijenosa upravljanja s razliitih programa, analizirat emo stanje stogova u raunalu na bazi 16-bitnog procesora MC 68000 tijekom jednog realnog scenarija kojeg moemo opisati na sljedei nain. 1. procesor je u korisnikom nainu rada i izvodi korisniki program; 2. korisniki program poziva potprogram instrukcijom JSR (Jump to Subroutine) i nastavlja se izvoenja korisnikog potprograma; 3. tijekom izvoenja korisnikog potprograma generiran je zahtjev za prekid. Zahtjev je takve razine da biva prihvaen; 4. upravljanje se prenosi na prekidni program. Prekidni se program izvodi u nadglednom nainu rada procesora; 5. nakon to je izvren prekidni program, prenosi se upravljanje instrukcijom RTE (Return from Exception) na potprogram koji je bio prekinut; 6. iz potprograma se instrukcijom RTS (Return from Subroutine) vraamo u pozivajui (glavni) korisniki program.

SUBR

potprogram

prekidni program

JSR SUBR

RTE

SI. 6.17 Grafiki prikaz scenarija za analizu sluaja

Slika 6.17 prikazuje potonji scenarij (U - korisniki nain rada (engl. User Mode); S - nadgledni nain rada (engl. Supervisor Mode). Na je zadatak odrediti stanje stogova u tokama koje su neposredno prije prijenosa upravljanja i toaka neposredno nakon prijenosa upravljanja izmeu pojedinih programskih struktura (glavnog korisnikog programa, korisnikog potprograma i prekidnog programa). Paljivi itatelj ve je primijetio da smo upotrijebili mnoinu - stanje stogova, a ne stanje stoga. Vrlo brzo bit e jasno zato. Slika 6.18 prikazuje programski model procesora MC 68000. Procesor je registarski orijentiran i ima dvije skupine registara ope namjene: 32-bitne registre podataka oznaene s DO - D7. Registri podataka mogu pohranjivati operande duljine bajta (oznaka B), duljine rijei -16-bita (oznaka W) i duljine duge rijei, odnosno 32 bita (oznaka L). Vano je napomenuti da operacije s podacima duljine 8 bita i 16-bita utjeu samo na manje znaajan dio 32-bitnog registra podataka. Na primjer, instrukcijom MOVE.B utjee se samo na osam najmanje znaajnih bitova registra podataka dok preostala 24 znaajnija bita ostaju nepromijenjena. Druga skupina registara ope namjene su sedam 32-bitnih adresnih registra A0 - A6. Program koristi te registre za pohranu memorijskih adresa (kazaljki na memorijske lokacije). Zrnatost adresnih registara je 16-bitna i 32-bitna rije. Instrukcije koje premjetaju podatke (MOVE) u te registre utjeu na svih 32 bita. Tako, na primjer, ako se pohranjuje 16-bitna vrijednost u neki od adresnih registara, promijenit e se svih 32 bita, i to tako da e postupkom irenja bita predznaka 16-bitne vrijednosti, bitovne pozicije bi6 -b37 odredinog registra poprimiti vrijednost bita predznaka. Osmi 32-bitni adresni registar A7 je registar kazalo stoga SP. Fiziki procesor MC 68000 ima dva registra kazala stoga: korisniko kazalo stoga USP (User Stack Pointer) oznaeno s A7 i nadgledno (ili sistemsko) kazalo stoga (Supervisor Stack Pointer) SSP oznaeno s A7'. Naime, procesor MC 68000 je procesor naprednije arhitekture i podrava viekorisniki rad te ima i dva osnovna naina rada: korisniki nain (engl. User Mode) - predvien za izvoenje
korisnikih programa i nadgledni nain (engl. Supervisor Mode) - predvien za izvoenje

programa operacijskog sustava. Vano je zapamtiti da istodobno ne mogu biti aktivna oba kazala stoga - koje e biti aktivno zavisi od toga u kojem se nainu rada nalazi procesor.

5.RIBARICI- GRAA RAUNALA

149

31

15 DO Dl D2 03

V D4 D5 D6

registri podataka

15 statusni registar SR

sistemski bajt status registra

korisniki bajt status registra

SI. 6,18 Programski model procesora MC 68000

Programsko brojilo PC takoer je sastavnica programskog modela. Ono je duljine 32-bita, meutim, stvarna duljina adrese koju ono sadrava ovisi o stvarnoj irini adresne sabirnice (za MC 68000 stvarna, upotrebljiva duljina je 24 bita, za MC 60012 31 bit te za MC 68020 32 bita). 16-bitni statusni registar SR podijeljen je na manje znaajan bajt koji sadrava zastavice X, N, Z, V i C koje su korisniki orijentirane zastavice (nose zajedniko ime CCR - Condition Code Register) i znaajniji bajt koji predstavlja nadgledni ili sistemski bajt

124

6. POGLAVLJE: UPRAVLJAKA JEDINICA

statusnog registra SR koji je dohvatljiv samo kada se procesor nalazi u nadglednom nainu rada. U nadglednom nainu moe se pristupiti cijelom statusnom registru SR. Zastavice u sistemskom bajtu su S, T, l2, i l0. Slika 6.19 prikazuje organizaciju 16-bitnog statusnog registra SR. u
bi 5 b!3 nagledni bajt SR

H
b7

korisniki bajt SR

H
bo

'a

'1

'o

Zastavice: C (Carry) - zastavica prijenosa V (Overflow) - zastavica preljeva (aritmetikog) Z (Zero) - zastavica nule N (Negative) - zastavica negativna vrijednost X (Extend) - zastavica proirenja L,\) l0 (Interrupt Mask) - prekidne zastavice S (Supervisor) - nadgledna zastavica T (Trace Mode) - zastavica praenja

SI. 6.19 Organizacija statusnog registra SR i znaenje zastavica

Spomenuli smo ve da procesor ima dva naina rada: nadgledni i korisniki nain rada. Objasnimo u emu je razlika i kako se iz jednog naina rada prelazi u drugi nain rada. Slika 6.20 prikazuje dijagram stanja kojim se opisuju ta dva naina rada te naini prijelaza iz jednog u drugo stanje. Uputanjem u rad procesora - iznimkom najvie razine RESET (u raunarskom argonu kaemo "resetiranjem") procesor se postavlja u nadgledni nain rada. Bitna znaajka tog naina rada jest da procesoru stoje na raspolaganju sve instrukcije koje se nalaze u skupu strojnih instrukcija - zato emo taj nain rada proglasiti povlatenim ili privilegiranim nainom rada. Indikacija da se procesor nalazi u povlatenom, tj. nadglednom nainu rada je stanje zastavice S - ona je postavljena (ima vrijednost 1). Usput, spomenimo da se uputanjem u rad brie zastavica praenja T (T = 0) i time se onemoguuje izvoenje programa korak po korak, a prekidne zastavice l0 -1 2 poprimaju vrijednost 111 i time se procesor titi od zahtjeva za prekid (osim razine zahtjeva 7).
Dijagram stanja za MC 68000

reset

zastavica

zastavica S=0

RTE (instrukcija)

SI. 6.20 Dijagram stanja naina rada za MC 68000

Nadgledni nain rada namijenjen je obino programima koji su sastavni dio operacijskog sustava. Procesor moe prijei u manje povlateni nain rada koji se naziva korisniki nain

S, RIBARI - GRAA RAUNALA


r

151

tako da u nadglednom nainu instrukcijom pristupi sistemskom ili nadglednom bajtu statusnog registra SR i obrie zastavicu S (postavi je u 0). Na primjer, povlatenom instrukcijom

EORI #MASK, SR
gdje je MASK usputni 16-bitni podatak koji ima vrijednost 2000 (heksadekadno) koji e s operacijom ISKLJUIVO ILI sa sadrajem registra SR zastavicu S postaviti u 0. Slika 6.21 objanjava kako se zastavica S postavlja u 0. Instrukcija je povlatena jer se njome pristupa sistemskom bajtu registra SR.
zastavica S b15 sadraj statusnog registra SR b13 b8 b7 bO

T 0 0

'2

'o

N z

b8
vrijednost MASK

1 0 0 0 0 0 0 0 0 0 0 0

0 0

b7
rezultat instrukcije EORI

bO

0
\
zastavica S

'2

'l

" o

S I .6 , 2 1

Logika operacija ISKLJUIVO ILI izmeu MASK i sadraja statusnog registra SR ima za posljedicu brisanje zastavice S

Brisanjem zastavice S procesor prelazi u korisniki nain rada. Korisniki nain rada je manje privilegiran, a to se ogleda u tome to se u tom nainu rada ne mogu izvoditi privilegirane instrukcije. Taj je nain rada predvien za izvoenje korisnikih programa. Kako znamo koje su to privilegirane instrukcije? Privilegirane instrukcije su one instrukcije koje operacijskom sustavu doputaju pristup podacima i registrima kojima se ostvaruju funkcije rasporeivanja zadataka (engl. task scheduling) i rukovanja iznimkama ili prekidima (engl. exception/interrupt handling). Izvoenjem takvih instrukcija utjee se na stanje procesora i stanje svih korisnikih programa. U programskom priruniku za procesor MC 68000 svaka takva instrukcija oznaena je kao privilegirana instrukcija. to e se dogoditi ako se u korisnikom nainu rada pokua izvesti privilegirana instrukcija? Prvo, ona se nee izvriti, ali e izazvati iznimku koja se naziva "povreda privilegiranosti" (engl. Privilege violations). Tijekom obrade te iznimke, ovisno o funkciji operacijskog sustava, obino se prekida i odgaa (suspendira) daljnje izvoenje takvog korisnikog programa s prateom porukom daje dolo do povrede privilegiranosti. Vratimo se dijagramu stanja naina rada. Brisanjem zastavice S procesor se naao u manje povlatenom korisnikom nainu rada. On je namijenjen izvoenju korisnikih programa. Procesor ostaje u tom nainu rada i jedino iznimkom ili prekidom moe se vratiti u nadgledni nain rada. Vano je znati da se programi kojima se obrauju iznimke ili prekidi izvode u povlatenom nadglednom nainu rada. Nakon obrade iznimke ili prekida povlatenom se instrukcijom RTE (Return from Exception) rekonstruira stanje (sadraj statusnog registra SR i programskog brojila PC)

124

6. POGLAVLJE: UPRAVLJAKA JEDINICA

procesora koje je bilo neposredno prije prihvaanja iznimke ili prekida. Na taj se nain procesor vraa u korisniki nain rada - u stanje u kojem je bio neposredno prije prihvaanja prekida.
adrese mmmm -4 m mmm -3 m mm m -2 m m m m -1 USP (korisniko kazalo stoga)

32 - bitni registar A7

krisniki stog

n n n r> - 8 n nnn-7 nnnn-6 n nnn-5 n ri n n - 4 nnnn-3 n nnn-2 n n n n -1 n nnn n nnn+1 nnnn+ 2 nnnn+3 n n ri n + 4 32 - bitni registar A7' SSP (nadgleno kazalo stoga)

nadgledni (sistemski) stog

Si. 6.22 Stanje stogova i kazala stoga neposredno prije grananja u korisniki potprogram

Naravno, ako se iznimka ili prekid dogodila u nadglednom nainu rada, procesor e se instrukcijom RTE vratiti u taj isti nain rada (petlja oznaena s RTE; slika 6.20). U skladu s naim scenarijem, procesor se nalazi u korisnikom nainu rada. Korisniki stog je potencijalno aktivan i na njegov vrh pokazuje aktivno korisniko kazalo stoga USP (adresni

5.RIBARICI- GRAA RAUNALA

153

registar A7). Registar USP sadrava 32-bitnu adresu mmmm. Nadgledni je stog organiziran negdje drugdje u radnoj memoriji. Naravno, prostori dodijeljeni korisnikom stogu i nadglednom stogu ne smiju se prekrivati. Budui da se procesor nalazi u korisnikom nainu rada, nadgledna stona struktura je neaktivna ili "zamrznuta". "Zamrznuti" 32-bitni sadraj nadglednog kazala stoga SSP (adresni registar A7') je nnnn. Slika 6.22. prikazuje stanje stogova neposredno prije grananja u korisniki potprogram.
USP mmmm-4 mmmm-3 mmmm-2 mmmm-1 mmmm mmmm+ 1 mmmm+ 2 korisniki stog povratna adresa iz potprograma

mmmm-4

PC [31:0] - povratna adresa

l : : ,

n nnn-8 nnnn-7 n n n n -6 n nnn-5 n n n n -4 nnnn-3 n nnn-2 n n n n -1 nnnn n nnn+1 n nnn+2 nnnn+ 3 n nnn+ 4 SSP

SL 6,23 Stanje stogova i kazala stogova neposredno nakon grananja u korisniki potprogram

Izvoenjem instrukcije JSR SUBR (slika 6.17) prenosi se upravljanje s korisnikog programa na korisniki potprogram. Procesor i dalje ostaje u korisnikom nainu rada a tijekom

124

6. POGLAVLJE: UPRAVLJAKA JEDINICA

prijenosa upravljanja na aktivan stog (a to je korisniki stog) pohranjuje se 32-bitna povratna adresa. Sadraj korisnikog kazala stoga umanjuje se za 4 (stog raste u smjeru padajuih adresa). Nadgledna stona struktura i dalje je"zamrznuta". Slika 6.23 prikazuje stanje stogova neposredno nakon grananja u potprogram.

SL 6.24 Stanje stogova neposredno nakon prihvaanja prekida

Za vrijeme izvoenja potprograma ulazno-izlazna jedinica generirala je zahtjev za prekid


On se prekidnim linijama , IPLO, IPL1 i IPL2 (IPL - Interrupt Priority Level) prosljeuje proce-

soru. Aktivno stanje (0) na tim trima linijama odreuje razinu zahtjeva za prekid: linija IPLO doprinosi razini "teinom"2, linija IPL 1 21 i linija IPL2 doprinosi ukupnoj razini zahtjeva za

5. RIBARICI - GRAA RAUNALA

155

prekid teinom 22. Na primjer, ako je IPL0 = 0, IPL1 = Q i ako je (PL2 - 1, onda je razina zahtjeva za prekid 3. Uz pretpostavku daje razina zahtjeva za prekid vea od razine prekida kodirane prekidnim zastavicama l1 i l2 u statusnom registru SR (pri emu ako je l0 = 1, zastavica doprinosi teini 2, ^ s teinom 2\ i l2 s teinom 22) zahtjev za prekid bit e prihvaen. Za na e primjer, ako je razina zahtjeva za prekid 3, on biti prihvaen za sljedee kombinacije stanja prekidnih zastavica: l2 ^ lQ = 0 0 0 (kodirana razina 0), 0 0 1 (kodirana razina 1) i 0 1 0 (kodirana razina 2). Zahtjev za prekid je prihvaen. Prekid kao vrsta iznimke obrauje se u nadglednom nainu rada procesora. Trenutni se sadraj statusnog registra SR interno privremeno pohranjuje u, za korisnika,nevidljivi" interni registar. Zastavica S u statusnom registru SR se automatski postavlja u 1. Procesor, automatski, u okviru svojih "kuanskih poslova" pohranjuje minimalni kontekst (povratnu adresu i sadraj statusnog registra, i to onaj koji je bio neposredno prije prihvaanja prekida interno pohranjen) na aktivan stog. Aktivan stog je nadgledni stog (korisniki stog je sada "zamrznut"). Na nadgledni e se stog pohraniti 6 bajtova: etiri bajta koji ine 32-bitnu povratnu adresu i 2 bajta - sadraj statusnog registra SR. Obratite pozornost da e u tako pohranjenom sadraju statusnog registra SR zastavica S biti jednaka 0 jer je neposredno prije prihvaanja prekida procesor bio u korisnikom nainu rada. Sadraj nadglednog kazala stoga umanjuje se za 6. Slika 6.24 prikazuje stanje stogova neposredno nakon prihvaanja prekida. Uoavamo da se na vrhu nadglednog stoga nalazi pohranjen minimalni kontekst, a na vrhu korisnikog stoga imamo pohranjenu povratnu adresu koja omoguuje povratak iz korisnikog potprograma u korisniki (glavni) program. Izvodi se prekidni program kojim se posluuje uzronik prekida. Posljednja instrukcija u prekidnom programu (slika 6.17) je povlatena instrukcija RTE. Njezinim se izvoenjem s vrha nadglednog stoga uzima minimalni kontekst i rasporeuje se u statusni registar SR (stanje procesora neposredno prije prekida) i programsko brojilo PC (povratna adresa za povratak u korisniki potprogram). Slika 6.25 prikazuje stanje stogova nakon vraanja iz prekidnog programa. Vidimo da je sadraj nadglednog kazala stoga SSP povean za 6 te da 4 bajta programskog brojila PC i dva bajta statusnog registra SR nisu vie elementi nadglednog stoga (ostaje samo trag izvoenja RTE instrukcije). Zahvaljujui vraanju "starog" sadraja statusnog registra SR natrag u SR procesor je ponovo u korisnikom nainu rada i izvodi (preostale) instrukcije iz korisnikog potprograma. Izvoenjem posljednje instrukcije u potprogramu RTS s vrha korisnikog stoga (nadgledni stog je "zamrznut") uzima se povratna adresa i smjeta se u programsko brojilo PC. Upravljanje se vraa na glavni korisniki program. Slika 6.26 prikazuje stanje stogova neposredno nakon povratka iz potprograma. Ako usporedimo sliku 6.22, koja prikazuje stanje stogova i kazala stoga neposredno prije grananja u korisniki potprogram, i sliku 6.26 (Stanje stogova neposredno nakon vraanja iz potprograma), vidimo da su stanja stogova i sadraji kazala stogova jednaki: (USP) = mmmm, (SSP) = nnnn, samo to je ostao trag izvoenja u skladu s naim scenarijem - sadraji memorijskih lokacija mmmm -1, mmmm - 2, mmmm - 3, mmmm - 4 u memorijskom prostoru predvienom za korisniki stog te sadraji memorijskih lokacija od nnnn - 1 do nnnn - 6 koje su predviene za nadgledni stog (slika 6.27). Naglasimo jo jednom da sadraji spomenutih memorijskih lokacija nisu vie elementi niti korisnikog, niti nadglednog stoga.

124

6. POGLAVLJE: UPRAVLJAKA JEDINICA

USP m m m m -4 m mmm -3 m mmm -4

korisniki stog

SR [15:8] SR [7:0] PC [31 :24] PC [23:16] PC [15:8] nnnn-1 PC [7:0] SSP

. -

nadgleni stog

r:
. ' / -

,
, .

bajt

SI. 6.25 Stanje stogova neposredno nakon izvoenja R T E instrukcije

5. RIBARICI - GRAA RAUNALA

157

PC [31 :24] PC [23: 16] PC [15:8] mmmm-1 PC [7:0] USP

mmmm
m mmm+1

i^^&sMMmam,
korisniki stog

5R [15:8] SR [7:0] PC [31 :24] PC [23:16] n nnn-2 n n n n -1 nnrin PC [15:8] PC [7:0] SSP

~ ~ " ".. " .i

...

nadgledni stog

Si. 6.26 Stanje stogova neposredno nakon vraanja iz potprograma

124

6. POGLAVLJE: UPRAVLJAKA JEDINICA

Si. 6.27 Usporedba stanja stogova; a) stanje stogova i kazala stogova USP i SSP prije izvoenja programa; b) stanje stogova i kazala stogova USP i SSP nakon izvoenja programa

5.RIBARICI- GRAA RAUNALA

159

7. POGLAVLJE

SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE


7.1. PUT PODATAKA I UPRAVLJAKA JEDINICA
U 6. smo se poglavlju upoznali s osnovnim funkcijama upravljake jedinice procesora. Opis njezinih funkcija bio je na razini strojnih instrukcija i nismo se uputali u podrobnosti izvedbe upravljake jedinice. U ovom emo poglavlju opisati dva osnovna pristupa izvedbi upravljake jedinice i time itatelju predstaviti izravnu vezu izmeu strojnih instrukcija i sklopovlja koje tumai te instrukcije i generira upravljake signale koji pobuuju sklopove potrebne za izvravanje instrukcija. Procesor, koji se sastoji od dviju funkcijskih jedinica: aritmetiko-logike i upravljake jedinice, moemo predoiti i kao sloeni digitalni sustav koji ima dvije sastavnice: put podataka
(engl. datapath) i upravljaku jedinicu (engl. control unit). Put podataka predstavlja sloenu

sklopovsku strukturu koja se sastoji od sklopova koji izvravaju aritmetike i logike operacije, registara za privremeno pohranjivanje operanada i rezultata te prijenosnih putova podataka (jedne ili vie internih sabirnica). Svaka od tih sastavnica puta podataka ima jednu ili vie "upravljakih toaka" u koje se dovode upravljaki signali kojima se odreuje (mikro)operacija koja e se izvesti na podacima koji se upravo nalaze na putu podataka. Upravljaka jedinica generira upravljake signale i upuuje ih putu podataka. Oni ulaze u upravljake toke i odreuju operaciju i vrijeme izvrenja operacije te usmjeravaju podatke na putu podataka. Upravljaka jedinica pomou upravljakih signala na taj nain konfigurira put podataka u skladu sa strojnom instrukcijom, odnosno programom. Slika 7.1 prikazuje jednostavan procesor predoen dvjema sastavnicama: putom podataka i upravljakom jedinicom. Put se podataka u ovom jednostavnom procesoru sastoji od skupa registara ope namjene koji slui za privremeno pohranjivanje operanada i rezultata, prijenosnih putova organiziranih kao interne sabirnice, dvije jedinice F1 i F2 koje obavljaju osnovne aritmetike i logike operacije, operacije posmaka te multipleksora koji usmjeravaju podatake na putu podataka. Upravljakim signalima na upravljakim ulazima multipleksora 1 izabire se koji e se podaci usmjeriti prema skupu registara ope namjene, a

160

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

put podataka

upravljaka jedinica

a)
izlaz izbor registra 1 za itanje izbor registra 2 za itanje izbor registra za upis ulaz za podatke [data in) [data out)

skup registara ope namjene


izlaz (data out)

pii [write) b)

SL 7.1 Jednostavan procesor ; a) put podataka i upravljaka jedinica; b) skup registra izveden kao jednoulazna i dvoizlazna memorija

5.RIBARICI- GRAA RAUNALA

161

signalima na upravljakim ulazima multipleksora 2 odreuju se podaci koji e biti usmjereni prema jedinicama F7 ili F . Pomou upravljakih signala koji se dovode u upravljaku toku u skupu registara ope namjene specificiraju se registri koji e biti izvorita operanada ili registar koji e posluiti kao odredite za rezultat, odnosno odreuje se hoe li se izvesti operacija itanja ili pisanja. Slika 7.1 b) prikazuje izvedbu skupa registara ope namjene koji je na putu podataka izveden kaojednoulazna i dvoizlazna memorija (engl. one write port & two read ports). Upravljake toke dodijeljene jedinicama F1 i F2 slue za izbor aritmetike ili logike operacije i operacije posmaka. Logikim vrijednostima upravljakih signala i trenutkom njihovog generiranja upravljaka jedinica dinamiki konfigurira put podataka u skladu sa zahtjevima instrukcije ije je izvoenje u tijeku. Na slici 7.1 uoavamo i signalne linije koje su usmjerene od puta podataka prema upravljakoj jedinici - tim se linijama dojavljuju stanja koja mogu nastupiti izvoenjem aritmetikih ili logikih operacija u jedinicama F1 i F2, npr. rezultat je nula, rezultat je negativan, dogodio se preljev kod aritmetike operacije ili prijenos iz najznaajnije bitovne pozicije rezultata (engl. carry). Put podataka za jednostavne izvedbe procesora moe se predoiti kao linearni put podataka koji je jednak za sve instrukcije, pri emu upravljaki signali odreuju hoe li se ili nee dogoditi aktivnost na odreenom dijelu puta podataka. Sloenije izvedbe procesora imaju
put podataka organiziran kao protoni put podataka (engl. pipelined data path) kojim je

omogueno da se istodobno vie strojnih instrukcija u razliitim fazama izvoenja izvrava na putu podataka. Sloeni suvremeni procesori (superskalarni procesori) imaju razgranate putove podataka koji doputaju istodobno izvoenje vie strojnih instrukcija u razliitim granama puta podataka. Uz sve to, svaka od tih grana puta podataka moe biti ostvarena kao protoni put podataka, odnosno protona grana puta podataka. Oito je da tako sloen put podataka zahtijeva kompleksnu upravljaku jedinicu koja svojim signalima mora rukovoditi podacima i operacijama u svim protonim granama puta podataka. Primjer 7.1. Put podataka obino ukljuuje ove glavne sastavnice: skup registara (registre ope namjene) i privremene registre; aritmetiko-logiku jedinicu, odnosno sklopove koji obavljanju aritmetike i logike operacije; posmani sklop; internu sabirnica (ili vie njih); posebne (upravljake) registre (npr, registar vektora iznimaka, privremeni registar za pohranjivanje stanja procesora tijekom izvoenja nekih upravljakih instrukcija); programsko brojilo PC koje se takoer moe nalaziti na putu podataka i na taj nain pojednostavnjuje raunanje efektivne adrese operanda ili odredita. No u procesorima koji imaju vrlo velike performanse, programsko brojilo ima posebne sklopove za poveanje njegova sadraja i raunanje efektivne adrese operanada (rezultata) pa se postie preklapanje raunanja adrese s operacijama u aritmetiko-iogikoj jedinici. Izvedba puta podataka izravno utjee na performansu procesora. Jedno od mjerila uspjenosti izvedbe puta podataka jest vrijeme potrebno za izvoenje temeljne operacije na putu

162

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

podataka - vremenski cikius puta podataka

(engl. data path cycle time). On mora biti sto je

mogue krai. Temeljna operacija na putu podataka sastoji se od dohvata (itanja) operanada iz skupa registara ope namjene, izvoenja npr. aritmetike operacije na njima te pohranjivanja rezultata natrag u jedan od registara u skupu registara. Ocijenimo vremenski ciklus puta podataka za temeljnu operaciju na putu podataka: R[1]:= R[2] + R[3] za jednostavan procesor sa slike 7.1. a). Da bi se izvela ova temeljna operacija, upravljaka jedinica mora generirati sljedee upravljake signale: upravljaki signal za izbor registra R2 i upravljaki signal za izbor registra R3 u skupu registara ope namjene te upravljaki signal kojim se skupu registara nalae operacija itanja. Skup registara ope namjene izveden je kao jednoulazna i dvoizlazna
memorija (engl. one write port & two read ports) pa je o m o g u e n istodobni pristup

dvama ope rand i ma, ali i upis rezultata u istoj periodi signala vremenskog voenja (slika 7.1 b)); upravljaki signal koji se dovodi u upravljaku toku (upravljaki ulaz multipleksora 2) i kojim se operandi upuuju u jedinicu F^ upravljaki signal kojim se u jedinici F1 aktivira sklop za zbrajanje (zbrajalo); upravljaki signal koji se dovodi u upravljaku toku (upravljaki ulaz multipleksora 1) kojim se rezultat usmjerava prema skupu registara ope namjene; upravljaki signal za izbor odredinog registra R1 i signal kojim se nalae upis rezultata u taj registar (operacija "pii").

Slika 7.2 prikazuje vremensku skladnost generiranih upravljakih signala tijekom jedne periode signala vremenskog voenja kojom je podrana opisana temeljna operacija. Vidimo da se ova operacija izvodi u jednoj periodi signala vremenskog voenja (engl. single clock cycle). Mnoge jednostavnije strojne instrukcije mogu se izvesti u jednoj periodi signala vremenskog voenja koja odgovara vremenskom ciklusu puta podataka. No sloenije strojne instrukcije, posebno one iz skupa instrukcija CISC (Complex Instruction Set Computer) procesora zahtijevaju vei broj perioda signala vremenskog voenja, odnosno vei broj osnovnih vremenskih ciklusa puta podataka (engl. multicycle operation).
<

perioda signala vremenskog voenja

izbor F1 (multipleksor 2) izbor zbrajala

izbor odredinog registra "pii"

SL 7.2 Vremenska skladnost upravljakih signala za temeljnu operaciju R[1]:= R[2] + R[3]

5.RIBARICI- GRAA RAUNALA

163

2. DVA OSNOVNA NAINA OBLIKOVANJA UPRAVLJAKE JEDINICE


Tijekom relativno kratkog, ali burnog povijesnog razvoja arhitekture raunala iskristalizirala su se dva osnovna pristupa oblikovanja upravljake jedinice procesora: i) sklopovski pristup; ii) mikroprogramski pristup. U sklopovskom se pristupu upravljaka jedinica promatra kao sekvencijalni logiki sklop ili konani automat (engl. finite-state machine) koji generira sljedove upravljakih signala kao odgovor na iz memorije pribavljenu strojnu instrukciju, moebitne vanjske uvjete i stanje zastavica statusnog registra (slika 7.3). Uobiajeni ciljevi u oblikovanju takvim pristupom
su minimizacija broja sklopovskih komponenti i postizanje to je mogue vee brzine dje-

lovanja. Ostvarivanje prvog cilja - minimizacija broja sklopovskih komponenti u izvedbi upravljake jedinice opravdana je kada se zna da upravljaka jedinica zauzima velik dio povrine silicijskog ipa (ukupna raspoloiva povrina silicijskog ipa kree se od oko 50 mm2 za 16-bitne mikroprocesore do oko 500 mm2 za viejezgrene procesore). Primjerice, upravljaka jedinica 8-bitnog procesora MC 6800 zauzimala je oko 58% cjelokupne povrine procesorskog ipa, 16-bitni procesor MC 68000 treba oko 69% povrine silicija za upravljaku jedinicu, a za neke 32-bitne procesore upravljaka jedinica zauzima vie od 80% povrine ipa. S druge strane, ne smije se zanemariti i potroak snage, naime vei broj komponenti i sve vea brzina sklopovlja, odnosno via frekvencija signala vremenskog voenja, prouzrokuje sve vei potroak snage, a to izaziva velike probleme vezane za hlaenje procesorskog ipa. Na primjer, Intelov procesor 80386 (1989.) radio je na frekvenciji 25MHz i imao potroak od 4.9 W, dok je Pentium 4 Prescott (2004.) radio na frekvenciji 3.6 GHz i ima potroak snage 103 W (otprilike kao klasina arulja s arnom niti). Jasno je da se zauzeem veeg dijela procesorskog ipa upravljakom jedinicom smanjuje prostor za izvedbu puta podataka koji izravno utjee na performansu procesora (viestruke aritmetike i logike jedinice, protona izvedba, razgranati protoni putovi podataka). Jednom kada je upravljaka jedinica realizirana sklopovskim pristupom, jedini nain za izvedbu bilo kakve promjene u njezinom ponaanju zahtijeva potpuni redizajn. Takva se jedinica obino naziva "vrsto oiena"(engl. hardwired).

7.3 Shematski prikaz sklopovske izvedbe upravljake jedinice

164

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

Mikroprogramiranje predstavlja alternativni pristup oblikovanju upravljake jedinice procesora. Slika 7.4 prikazuje strukturu mikroprogramirane upravljake jedinice. Sredinja graevna sastavnica upravljake jedinice je upravljaka memorija (ili mikroprogramska memorija) (engl. control memory) u kojoj su pohranjeni "upravljaki signali" u formatu poput strojnih instrukcija u programu. U tom obliku pohranjene upravljake signale nazivamo mikroinstrukcijama. Sljedovi mikroinstrukcija ine jedan ili vei broj programa koji se nazivaju mikroprogramima. Upravljaka memorija mikroprogramirane upravljake jedinice pohranjuje vie mikroprograma: Svakoj strojnoj instrukciji iz instrukcijskog skupa odgovara jedan mikroprogram koji e se pobuditi na temelju operacijskog koda strojne instrukcije i, moebitno, na temelju vanjskih uvjeta ili stanja zastavica statusnog registra. Izvoenjem mikroprograma pribavljat e se mikroinstrukcije (upravljaki signali) iz mikroprogramske memorije i upuivat e se upravljakim tokama u putu podataka. Zakljuimo, mikroprogramska memorija sadrava skup mikroprograma kojima se oponaa (emulira) skup strojnih instrukcija procesora. Neki autori (M. Flynn, i M. D. MacLaren, L. L. Rakoczi) ovako realiziranu upravljaku jedinicu zorno predoavaju i nazivaju "raunalo u raunalu" (engl. computer-within-computer) jer, vidjet emo uskoro, upravljaka jedinica tijekom izvoenja mikroprograma prolazi kroz "mikrofazu - pribavi" - kada se dohvaa mikroinstrukcija i "mikrofazu - izvri" - kada se mikroinstrukcija izvrava, odnosno kada upravljaki signali aktiviraju sklopove na putu podataka.

put podataka

Si. 7.4 Struktura mikroprogramirane upravljake jedinice

5.RIBARICI- GRAA RAUNALA

165

Mikroprogramski pristup izvedbi upravljake jedinice omoguuje bolji i sistematini dizajn jer su upravljaki signali "formatirani" u mikroinstrukcije, a izmjena upravljakih signala ili slijeda upravljakih signala svodi se samo na promjenu sadraja jedne ili vie memorijskih lokacija mikroprogramske memorije. Zbog naina izvedbe u kojem su upravljaki signali "ugraeni" u neku vrstu "softvera"tj. programa niske razine, ovako se oblikovana upravljaka jedinica naziva mikroprogramska (engl. microprogrammed), ali i firmwired (za razliku od sklopovske izvedbe koja se naziva i hardwired). Mnogi autori istiu mikroprogramski pristup kao najbolju metodu oblikovanja upravljake jedinice. Mikroprogramirana jedinica je, meutim, skuplja od sklopovski realizirane upravljake jedinice, a vrlo esto i sporija zato to zahtijeva dodatno vrijeme za pribavljanje mikroinstrukcije iz mikroprogramske memorije (vrijeme potrebno za mikrofazu - pribavi). Procesori CISC arhitekture koji imaju veliki i raskoan skup strojnih instrukcija, u naelu, imaju upravljaku jedinicu realiziranu mikroprogramiranjem. Procesori RISC arhitekture koji imaju mali skup jednostavnih (ali ekstremno brzih) strojnih instrukcija koriste sklopovski realiziranu upravljaku jedinicu.

7.3. SKLOPOVSKA UPRAVLJAKA JEDINICA


Sklopovski pristup izvedbi upravljake jedinice moe se temeljiti na: i) standardnom pristupu oblikovanja sekvencijalnih logikih sklopova (ili konanih automata) uporabom tablica stanja i primjenom kombinacije graevnih sastavnica sa znaajkama niskog stupnja integracije - SSI (Small Scale Integration, npr. osnovni logiki sklopovi) i sastavnica sa znaajkama srednjeg stupnja integracije - MSI
(Medium Scale Integration, npr. brojila, dekoderi);

ii) uporabi elemenata za kanjenje za generiranje upravljakih signala i njihovu vremensku sinkronizaciju; iii) uporabi generatora upravljakih vremenskih impulsa (ili generatora sljedova) (engl.
timing pulse generator, sequencer) i kombi nacijskih sklopova.

Naravno, u izvedbi suvremenih procesora graevne sastavnice temelje na tehnologiji vrlo visokog stupnja integracije VLSI. Slika 7.5 prikazuje organizaciju upravljake jedinice koja je ostvarena na temelju standardnog pristupa i primjenom graevnih sastavnica kao to su osnovni logiki sklopovi, dekoderi, multipleksori, registri i brojila. Instrukcijski dekoder tumai operacijski kod instrukcije i pobuuje odgovarajuu izlaznu liniju (jednu od 2n linija, gdje je n broj bitova operacijskog koda). Na temelju pobuene linije, vanjskih uvjeta i/ili stanja zastavica u statusnom registru te na temelju povratnih signala iz sklopovske upravljake matrice, sklopovi za generiranje sljedeeg stanja pobuuju signale koji odgovaraju vremenskom slijedu izvoenja elementarnih operacija koje se nazivaju mikrooperacije (u kontekstu upravljake jedinice termin mikrooperacija oznaava jednostavnu, primitivnu, skoro nedjeljivu operaciju koja je izravno i u potpunosti podrana sklopovljem, npr. postavljanje podatka na internu sabirnicu, prijenos podataka izmeu dva registra, inkrementiranje sadraja registra ili brojila, aktiviranje sklopa u aritmetikologikoj jedinici). Sklopovska upravljaka matrica na temelju signala iz sklopova za generiranje sljedeeg stanja oblikuje upravljake signale koji se dovode u upravljake toke na

166

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

putu podataka i pobuuju odgovarajue mikrooperacije. Kao stoje ve spomenuto, jedan dio upravljakih signala dovodi se natrag sklopovima za generiranje sljedeeg stanja.
osnovni signal vremenskog voenja

SI. 7.5 Organizacija upravljake jedinice ostvarena na temelju standardnog pristupa oblikovanja sekvencijalnih sklopova

7.3.1. IZVEDBA UPRAVLJAKE JEDINICE UPORABOM GENERATORA SLJEDOVA - ANALIZA SLUAJA


U ovom emo potpoglavlju sustavno opisati postupak oblikovanja upravljake jedinice procesora koja se temelji na uporabi generatora sljedova, odnosno generatora upravljakih vremenskih impulsa. Prije negoli krenemo u opis postupka, prikaimo izvedbu upravljakih signala za mikrooperaciju koja e se najee pojavljivati na putu podataka. To je mikrooperacija prijenosa sadraja izmeu dva registra - jednog izvorinog registra Rm (slika 7.6.) i jednog odredinog registra Rn. Pretpostavit emo da je prijenosni put za podatke interna sabirnica IntBUS; (slika 7.6). Vanu ulogu u prijenosu imaju upravljake toke na koje se dovode upravljaki signali C1 i C2. Upravljaka toka na koju se dovodi upravljaki signal C1 realizirana je sklopovima s tri stanja (engl. three-state gate). Takav sklop (slika 7.7 a1)) funkcionira "normalno" kada je upravljaki ulaz C aktivan (logika "1"), tj. prosljeuje ulaznu binarnu vrijednost na izlaz. No ako je upravljaki signal C neaktivan (logika "0"), izlaz je elektriki odspojen, tj. izlazni otpor je jednak vrlo velikom otporu bez obzira na vrijednost ulaznog signala A (je li logika "0" ili "1"). Tada se sklop nalazi u treem, odnosno neaktivnom stanju. Ovisno o izvedbi sklopa s tri stanja moe se ponaati i kao invertor (engl. three-state invertergate) (slika 7.7 a2) i a4)) ili biti neinvertirajui (engl. three-state buffergate) (slika 7.7 al) i a3)). Osim toga, sklop s tri stanja moe imati upravljaki ulaz C takav daje on definiran kao aktivan kad je u logikoj "0" (slika 7.7 a3) i a4)). Pojednostavljeno, sklop s tri stanja moemo promatrati kao zasun koji je otvoren i "proputa" signal s ulaza na izlaz ako je stanje njegovog upravljakog signala aktivno (slika 7.7 b)).

5. RIBARICI - GRAA RAUNALA

167

Vratimo se slici 7.6. Aktiviranjem signala C1 postavlja" se sadraj registra Rmna sabirnicu IntBus. Druga upravljaka toka, na koju se dovodi upravljaki signal C 2 ,je"puni registar"(englJoad register) - aktivan signal na tom ulazu ima za posljedicu unos podatka u registar Rn. Slika 7.8 prikazuje valne oblike upravljakih signala C1 i C2 kojima se ostvaruje prijenos sadraja iz registra Rm u Rn. Za opis mikrooperacija koristit emo notaciju slinu RTL-u (Register Transfer Language) - sklopovskom jeziku za opisivanje sklopovlja. Tako, na primjer, prijenos izmeu registara predoit emo s Rm Rn. Obino se uz opis mikrooperacije s lijeve strane ispisuje i logiki uvjet koji mora biti zadovoljen da bi se mikrooperacija izvela. Operaciju prijenosa sadraja izmeu registara Rm-> Rn preko interne sabirnice moemo opisati u dva koraka: C:R 1 m IntBUS C2: IntBUS -> R n
b31 b30 b2 b1 bO

IntBUS

SI. 7.6 Sklopovska izvedba mikrooperacije prijenosa podataka izmeu dva registra posredstvom interne sabirnice

Prije oblikovanja upravljake jedinice procesora pogledajmo njegovu strukturu (slika 7.9). To je vrlo jednostavan 32-bitni akumulatorsko orijentiran procesor s jednom internom sabirnicom. Pretpostavit emo da se skup strojnih instrukcija sastoji od samo 8 instrukcija koje su prikazane u tablici 7.1.

168

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

Y=A a koje C=1 Y Y=veliki izlazni otpor (tree stanje) ako je C=0

Y=A ako je C=1

Y=veliki izlazni otpor (tree stanje) ako je C=0 a 2)

al)

Y=Aakoje C=0 Y Y=veliki izlazni otpor (tree stanje) ako je C=1 a3) a) Y

Y=A ako je C=0

Y=veliki izlazni otpor (tree stanje) ako je C=1 a4)

C=0

C=1

C=0 b)

C=1

SI. 7.7 Sklop s tri stanja; a) izvedbe sklopa s tri stanja; b) tumaenje ponaanja sklopa s tri stanja

R - IntBUS

t IntBUS - R _

SI. 7.8 Valni oblici upravljakih signala C1 i C2 kojima se ostvaruje prijenos sadraja iz registra Rm u Rn

5.RIBARICI- GRAA RAUNALA

169

DB0-DB31

adresna sabirnica

SI. 7.9 Struktura jednostavnog 32-bitnog procesora

170

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

-M

ldaX staX addaX andaX coma jmpX jmpzX shra

M[X] A

A; sadraj memorijske lokacije X premjesti u akumulator A M[X]; sadraj akumulatora A pohrani na memorijsku lokaciju X

A + M[X] - A ; zbroji A M[Xj A X A; izvedi logiko 1

A; izvedi jedinini komplement PC; granaj na instrukciju koja se nalazi na ciljnoj adresi X PC; uvjetno grananje

ako je A = 0 onda X

posmak sadraja akumulatora A udesno

Tablica 7.1. Skup strojnih instrukcija ne koristi se b31 b29 b23 bO

operacijski kod SI. 7.10 Format instrukcije za jednostavan 32-bitni procesor

24-bitno adresno polje

Sve su instrukcije 32 bita duljine. Slika 7.10 prikazuje format instrukcije. Vidimo da je polje operacijskog koda duljine 3 bita - jednoznano odreuje 8 instrukcija, dok je adresno polje 24-bitno i time odreuje izravno adresirljivi prostor veliine 16 M 32-bitnih rijei (224). Bitovi b24 - b28 ne koriste se u instrukciji te mogu posluiti za moebitno poveanje izravno adresirljivog prostora ili proirenje skupa instrukcija (u nekoj novoj verziji procesora). Mali skup instrukcija i vrsta duljina strojne instrukcije znaajka je procesora RISC arhitekture. Na procesor, meutim, nije RISC procesor - akumulatorsko je orijentiran i ima aritmetike i logike instrukcije koje nisu vrste registar-registar (vidi poglavlje 3.). injenica da su sve instrukcije jednake duljine pojednostavit e sklopovlje koje podrava fazu PRIBAVI jer e ona biti jednaka za sve instrukcije. Na slici 7.9 vidimo da aritmetiko-logika jedinica (ALU) ima dva ulaza P i Q. Na ulaz P izravno je prikljuen 32-bitni akumulator A, dok se na ulaz Q dovodi podatak koji je trenutno postavljen na 32-bitnu Internu sabirnicu IntBUS. Aritmetiko-logika jedinica na izlazu ima interni ALU registar (IntRegALU) u kojem se privremeno pohranjuje rezultat aritmetiko-logike operacije (upravljaki signal C15) koji e se aktiviranjem upravljakog signala C6 postaviti na internu sabirnicu (slika 7.9). Na taj je nain uklonjen neeljeni utjecaj izlaza sklopovlja aritmetiko-logike jedinice na podatke koji se nalaze na internoj sabirnici. Upravljake toke na putu podataka koje su realizirane logikim sklopovima s tri stanja oznaene su na slici 7.9 kruiima, a upravljake toke za unos podataka u registre ili specifikaciju operacije u aritmetiko-iogikoj jedinici oznaene su podebljanom vertikalnom crticom na kojoj zavrava vrh strelice linije upravljakog signala. Opiimo aktivnosti tijekom faze PRIBAVI i odredimo njihov vremenski slijed: 1. korak: PC MAR; prenesi sadraj 24-bitnog programskog brojila PC u memorijski adresni registar MAR;

5.RIBARICI- GRAA RAUNALA

171

Vremenski slijed aktivnosti za 1. korak faze PRIBAVI je: O,: PC-HntBUS <P2: IntBUS MAR, lijeva strana gornjih izraza oznaava logiki uvjet koji mora biti ispunjen da bi se izvela (mikro)operacija specificirana na desnoj strani izraza. Signali <l> i = 1,2,... izlazi su iz generatora sljedova (slika 7.11). Uoavamo da su izlazi iz generatora sljedova <!>. i = 1, 2,n, impulsi koji su vremenski pomaknuti tako da se meusobno ne preklapaju. Nakon n uzastopce generiranih impulsa ponavlja se periodino slijed generiranih signala <D. i = 1,2,..., n.
start stop clock reset

w w w generator sljedova (modul n)

w w

clock = signal vremenskog voenja

hH

<t>3

perioda sljedova (modul n)

SI. 7.11 Generator sljedova (generator upravljakih vremenskih impulsa)

2. korak: M[MAR] MDR; proitaj sadraj memorijske lokacije ija je adresa iz MAR postavljena na adresnu sabirnicu ABO- AB23. Pribavljeni sadraj pohrani u MDR; Vremenski slijed upravljakih signala kojim se izvodi 2. korak faze PRIBAVI je: <i>3: itaj sadraj memorijske lokacije M <4 itaj sadraj memorijske lokacije M i pohrani sadraj u MDR; Ovdje smo predvidjeli da operacija vremenski odgovara trajanju dvaju impulsa generatora sljedova to je opravdano jer se moe oekivati da je vrijeme pristupa radnoj memoriji (memorijskoj jedinici raunala) dulje negoli je vrijeme potrebno za izvoenje mikrooperacije na putu podataka. Tijekom <I>4 unosi se podatak sa (vanjske) sabirnice podataka DBO - D B 3 1 u MDR.

172

7.

POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

3. korak: PC +1 PC i MDR(OP) IR; inkrementiraj sadraj programskog brojila PC i prenesi tri najznaajnija bita koja predstavljaju operacijski kod instrukcije u instrukcijski registar IR; Ove se dvije mikrooperacije mogu izvesti istodobno tj. paralelno jer je sklop za inkrementiranje programskog brojila PC dodijeljen lokalno PC-u i za tu operaciju se ne koristi interna sabirnica IntBUS. Vremenski slijed za 3. korak faze PRIBAVI je: PC +1 PC, MDR(OP) IntBUS IntBUS IR 4. korak: dekodiranje operacijskog koda; Vremenski slijed za 4. korak je: <I>7: dekodiranje operacijskog koda Trajanje faze PRIBAVI odgovara vremenu trajanja sedam upravljakih vremenskih impulsa: - <I>7. Uz pretpostavku da je vrijeme trajanja jednog upravljakog vremenskog impulsa jednako periodi signala vremenskog voenja (clock; slika 7.11), a frekvencija tog signala je tako izabrana da njegova perioda (T= 1/f) odgovara vremenu izvoenja osnovne mikrooperacije, onda faza PRIBAVI zahtijeva vrijeme 7 xT.

C0 C, C2 C3 C4 C5 C6 C7 C8 C9 C,o C
C,3 C,4

add and com Read Write

ALU upravljanje ALU upravljanje ALU upravljanje Upravljanje memorijom Upravljanje memorijom Upravljanje sabirnicom Upravljanje sabirnicom Upravljanje sabirnicom Upravljanje sabirnicom Upravljanje sabirnicom Upravljanje registrom Upravljanje registrom Upravljanje registrom Upravljanje registrom Upravljanje registrom Upravljanje registrom Upravljanje registrom Upravljanje registrom

P + Q; zbroji P-Q
p

itanje (Read) pisanje (Write) MDR IntBUS

ii ] j
,

^ M D R ^ A L U

IntRegALU -> IntBUS A PC IR IntBUS IntBUS IntBUS A PC IR MAR MDR ili (DB0-DB31) IntRegALU PC j | MDR I j
i

Ea

La Lpc
L,r

pc E ir

j f [

IntBUS IntBUS IntBUS IntBUS IntBUS ALU PC + 1

it

^ M A R " M 'D R " 'A L U


Inc Sh

C,5 C C,7

posmak udesno akum. A

Tablica 7.2. Popis upravljakih signala

5.RIBARICI- GRAA RAUNALA

173

Da bi se podrala faza PRIBAVI i faza IZVRI za svaku od strojnih instrukcija za na procesor, upravljaka jedinica mora generirati upravljake signale C0 - C i dovesti ih u upravljake toke na putu podataka.Tablica 7.2. sadrava popis upravljakih signala, njihove simbole i mikrooperacije koji oni pobuuju. Tablica 7.2. nuna nam je za dizajn upravljake jedinice. Upravljaki signali kojima e biti aktivirane mikrooperacije za cjelovitu fazu PRIBAVI su: Vremenski trenutak Upravljaki signali Mikrooperacija 01 <t>, L 03 <P4 Os 06 <P7 C8 Co, C I,J C3 C3, C14 C16, C5 C5,C12 PC-HntBUS IntBUS - MAR itanje mem. lokacije (DB0-DB31) MDR PC + 1 PC, MDR(OP) IntBUS IntBUS -HR dekodiranje op. koda

Upravljaka jedinica generirajui sljedove upravljakih signala: C8 - (C8, C 13 )- C3 - (C3, C14) (C16, C5) - (C5, C12) u trenucima odreenim s <I>1 - <I>7 izvest e fazu PRIBAVI. Opiimo fazu IZVRI za svaku strojnu instrukciju: instrukcija fdaX; operacijski kod = 000 1. korak: MDR (ADRESA) MAR; 24-bitnu adresu operanda iz MDR prenesi u MAR

(Opaska: neposredno nakon zavretka faze PRIBAVI u registru MDR nalazi se 32-bitna instrukcija iji je format prikazan na slici 7.10.) Vremenski slijed aktivnosti za 1. korak faze IZVRI je: 0>8: MDR(ADRESA) IntBUS 09: IntBUS MAR 2. korak: M[MAR] MDR

Vremenski slijed aktivnosti za 2. korak faze IZVRI je: <X>10: itaj (Read) sadraj memorijske lokacije M <I>n: itaj (Read) sadraj memorijske lokacije M i pohrani sadraj u MDR; 3. korak: MDR A; prenesi operand u akumulator A

Vremenski slijed aktivnosti za 3. korak faze IZVRI je: 0 12 : MDR-IntBUS d>13: IntBUS A Upravljaki signali kojima e biti aktivirane mikrooperacije za cjelovitu fazu IZVRI za instrukciju ldaX su: Vremenski trenutak <D9 O10 <Dn <J>13 Upravljaki signali C5 C5,C13 C3 C3,C14 C5 C5,C10 Mikrooperacija MDR IntBUS IntBUS MAR itanje mem. lokacije (DB0-DB31) MDR MDR IntBUS IntBUS- A

174

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

Faza IZVRI za strojnu instrukciju IdaXtraje 6 vremenskih intervala koji odgovaraju trajanju upravljakog vremenskog impulsa pa je ukupno vrijeme potrebno za izvoenje instrukcije IdaX jednako -<I>7 odnosno 13 vremenskih intervala (od toga su 4 vremenska intervala "potroena" na pristup (radnoj) memoriji, odnosno vie od 30% vremena trajanja instrukcijskog ciklusa). instrukcija staX; 1. korak: MDR(ADRESA) operacijski kod = 001 MAR; 24-bitnu adresu operanda iz MDR prenesi u MAR

Vremenski slijed aktivnosti za 1. korak faze IZVRI je: <Dg: 09: 2. korak: A MDR(ADRESA) -> IntBUS IntBUS MAR

MDR; sadraj akumulatora A smjesti u MDR

Vremenski slijed aktivnosti za 2. korak faze IZVRI je: <D10: On: A - IntBUS IntBUS-MDR

3. korak: MDR - M[MAR]; pohrani sadraj MDR registra u memoriju Vremenski slijed aktivnosti za 3. korak faze IZVRI je: <I>12: <I>13: pii (Write); pohrani sadraj na memorijsku lokaciju pii (Write); pohrani sadraj na memorijsku lokaciju

Upravljaki signali kojima e biti aktivirane mikrooperacije za cjelovitu fazu IZVRI za instrukciju staX jesu: Vremenski trenutak 08 % <D10 <>n <I>12
13

Upravljaki signali C5 C5,C13 C7 C7,C14 C. 4 CA 4

Mikrooperacija MDR - IntBUS IntBUS-MAR A IntBUS Write Write IntBUS - MDR

Instrukcija staX takoer zahtijeva 13 vremenskih intervala za svoje izvoenje. instrukcija addaX; operacijski kod = 010

1. korak: MDR(ADRESA) - MAR; 24-bitnu adresu operanda iz MDR prenesi u MAR Vremenski slijed aktivnosti za 1. korak faze IZVRI je: Os: <X>9: MDR (ADRESA)-IntBUS IntBUS - MAR

2. korak: M[MAR] - MDR; dohvati operand iz memorije Vremenski slijed aktivnosti za 2. korak faze IZVRI je: <I>10: itaj (Read) sadraj memorijske lokacije M itaj (Read) sadraj memorijske lokacije M i pohrani sadraj u MDR 3. korak: A + MDR - A; zbroji sadraj akumulatora A i operand iz MDR-a

5.RIBARICI- GRAA RAUNALA

175

Vremenski slijed aktivnosti za 3. korak faze IZVRI je: MDR-^ lntBUS;P + Q IntRegALU 12" < I >1 IntRegALU IntBUS 3 * IntBUS A 14' Upravljaki signali kojima e biti aktivirane mikrooperacije za cjelovitu fazu IZVRI za instrukciju addaX su: Vremenski trenutak Upravljaki signali Mikrooperacija MDR IntBUS IntBUS MAR itanje mem. lokacije (DB0-DB31) MDR IntBUS MDR, P + Q IntRegALU IntRegALU IntBUS IntBUS A

*io < 3 > 1 1 < 1 > 1 2


13

C3 c 5' c 0' c15

1 4

Instrukcija adda X izvodi se u 14 vremenskih intervala, pri emu svaki interval odgovara vremenu trajanja upravljakog vremenskog impulsa. instrukcija anda X; 1. korak: MDR(ADRESA) operacijski kod = 011 MAR; 24-bitnu adresu operanda iz MDR prenesi u MAR

Vremenski slijed aktivnosti za 1. korak faze IZVRI je: 08: MDR (ADRESA) IntBUS <I>9: IntBUS MAR 2. korak: M[MAR] O10: <f>n: MDR itaj (Read) sadraj memorijske lokacije M itaj (Read) sadraj memorijske lokacije M i pohrani sadraj u MDR; A; (logika operacija I)

Vremenski slijed aktivnosti za 2. korak faze IZVRI je:

3. korak: A MDR

Vremenski slijed aktivnosti za 3. korak faze IZVRI je: MDR IntBUS; P - Q IntRegALU (logika operacija I) < P12' IntRegALU IntBUS 13* IntBUS A < P14' Potrebni upravljaki signali su: Vremenski trenutak Upravljaki signali < J >
"5

QC
10

13

o o

12

13

1 4

C3 c3 c14 c 5' c S ' c1 5 c "6 c c 10

Mikrooperacija MDR -> IntBUS IntBUS MAR itanje mem. lokacije (DB0-DB31) MDR IntBUS MDR, P Q IntRegALU IntRegALU IntBUS IntBUS A

176

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

instrukcija coma; 1. korak: A Og: 09: O10:

operacijski kod = 100

A; jedinini komplement IntRegALU IntRegALU IntBUS A IntBUS

Vremenski slijed aktivnosti za 1. korak faze IZVRI je:

Vremenski slijed aktivnosti za 1. korak faze IZVRI je: Vremenski trenutak <Dg 0>9 d>10 Upravljaki signali C2,C15 C6 C6,C10 Mikrooperacija P - * IntRegALU IntRegALU IntBUS IntBUS A

Faza IZVRI za instrukciju coma traje tri vremenska intervala, odnosno instrukcija coma zahtijeva 10 vremenskih intervala. instrukcija jmpX; 1. korak: MDR(ADRESA) operacijski kod = 101 PC

Vremenski slijed aktivnosti za 1. korak faze IZVRI je: Vremenski trenutak 0>8 % Upravljaki signali C5 C 5 ,C Mikrooperacija MDR(ADRESA) IntBUS IntBUS PC

Instrukcija jmpX je "brza" instrukcija koja zahtijeva samo 9 vremenskih intervala. instrukcija jmpzX; 1. korak: MDR(ADRESA) operacijski kod = 110 PC ako je A = 0 inae nema promjene sadraja PC-a Mikrooperacija MDR(ADRESA) IntBUS IntBUS PC

Vremenski slijed aktivnosti za 1. korak faze IZVRI je: Vremenski trenutak Upravljaki signali <I>O 0>9 instrukcija shra; 1. korak: Shr A A CJ ako je A= 0 onda C5, C n operacijski kod =111

Vremenski slijed aktivnosti za 1. korak faze IZVRI je: Vremenski trenutak Upravljaki signali <I>8 C17 Shr A

Mikrooperacija A; posmak udesno

Slika 7.12 prikazuje organizaciju sklopovske upravljake jedinice s generatorom sljedova. 3-bitni operacijski kod se iz instrukcijskog registra IR alje na ulaz instrukcijskog dekodera. Instrukcijski dekoder je kombinacijski sklop koji ima n = 3 ulaza i 2n = 8 izlaza. Svaki od izlaza odgovara jednoj od 8 strojnih instrukcija. Dekoder se jo naziva i "jedan od 2n" ime asocira da je samo jedan od 2n izlaza aktivan (logiko"1") za neku odreenu n-bitnu kombinaciju na njegovom ulazu. Primjerice, ako je na ulazu u instrukcijski dekoder binarna kombinacija 000 (operacijski kod instrukcije ldaX), onda e biti aktivan izlaz oznaen na slici s l0. Ako je na ulazu binarna kombinacija 100 (operacijski kod instrukcije coma), onda e biti

S. RIBARI - GRAA RAUNALA

aktivan samo izlaz l4 (slika 7.12). Na slici 7.12 vidimo da se izlazi iz instrukcijskog dekodera (l Q - l7)"susreu"s izlazima iz generatora sljedova u dijelu koji je oznaen kao"kombinacijski sklopovi". Izlaz iz tog dijela su upravljaki signali C0 - C17 tako da opravdano moemo pretpostavljati da se sinteza upravljakih signala temelji na logikim kombinacijama izlaza iz instrukcijskog dekodera i izlaza iz generatora sljedova. Zbog toga moemo postaviti hipotezu da se upravljaki signali C i = 0, 1,2,..,, 17 mogu opisati logikom jednadbom oblika:
16 { f

7 7
m

(7.1)
/

y=i V

m=0

gdje 5) oznaava logiku operaciju ILI a logiku operaciju I, pri emu je m = 0,1, 2,..., 7 izlaz iz instrukcijskog dekodera, a j = 1,2,3, ...,16 izlaz iz generatora sljedova. Za upravljake signale koji se generiraju i za potrebe faze PRIBAVI pretpostavit emo da je uz <., j = 1, 2,..., 7 drugi lan operacije logiko I uvijek jednak "1" (tijekom aktivnosti u vremenskim intervalima <&. j = 1,2,..., 6,7 izlaz iz instrukcijskog dekodera nije definiran niti je vaan).
start stop clock reset

generator sljedova (po modulu 16)

C D ,
Ida X staX addaX

CD.

w V w w w w kombinacijski sklopovi A=0

instrukcijski dekoder

arida X coma jmp X jmpzX shra

b31

bO

UT
c c c

TT
c17

/R instrukcijski registar 51. 7.12 Organizacija sklopovske upravljake jedinice s generatorom sljedova

Pogledajmo je li hipoteza valjana. Na primjer, pogledajmo kada je upravljaki signal C3 aktivan za fazu IZVRI pojedinih strojnih instrukcija: Za instrukciju ldaX; aktivan izlaz iz instrukcijskog dekodera l0 vrijedi: U fazi IZVRI za instrukciju ldaX, tijekom upravljakih vremenskih impulsa <I>10 i biti aktivan upravljaki signal C3 (vidi opis faze IZVRI za ldaX): C3 = <J>1010 + <J>n l0; ovdje + oznaava logiku operaciju ILI treba

178

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

Za instrukciju stoX; aktivan izlaz iz instrukcijskog dekodera


= 10 lI + 11 I2* ^3 2

ne zahtijeva se signal C3.

Za instrukciju adda X: aktivan izlaz iz instrukcijskog dekodera l2 vrijedi: Za instrukciju onda X: aktivan izlaz iz instrukcijskog dekodera I vrijedi: C 0 (3 I + 01 ^3 = ^10 1I 3 Ostale strojne instrukcije u fazi IZVRI ne rabe upravljaki signal C3, meutim, on se zahtijeva tijekom faze PRIBAVI, i to: c3 = a > 3 . i + o 4 - i . Ako sada objedinimo sve gornje izraze za C3 dobivamo: C = 0 3 1 + <I> l+O 4 1 + 0 10 'o odnosno c 3 = 0 3 + 0 4 + O10 (l + l2 + l3) + O,, (l0 +l2 + y .
(7.2)
n 'o

l+O I ^ +<J>1 1 '2 l+ I ^ +<t>11 I3 ' ^ 1 0 '2 ^ O ^ 1 0 '3


!

Ako sada usporedimo logiki izraz za C3 vidimo da je zaista oblika koji odgovara obliku logike jednadbe (7.1). Na temelju logike jednadbe (7.2) za upravljaki signal C3 moemo jednostavno i izravno sintetizirati taj upravljaki signal. Slika 7.13 prikazuje kombinacijski dio upravljake jedinice u kojem je oblikovan upravljaki signal C3. , .

^ 1 0

1 1

kombinacijski sklopovi

SI. 7.13 Kombinacijski dio upravljake jedinice (sinteza upravljakog signala

5.RIBARICI- GRAA RAUNALA

179

Kako bi izgledala sinteza upravljakih signala samo za fazu PRIBAVI? Na temelju analize aktivnosti u fazi PRIBAVI dobili smo ovakav rezultat: Vremenski trenutak Upravljaki signali Mikrooperacija PC IntBUS C IntBUS MAR 13 itanje mem. lokacije c (DB0-DB31) MDR PC + 1 PC, MDR(OP) IntBUS IntBUS IR dekodiranje op. koda 4> Slika 7.14 prikazuje kombinacijski dio upravljake jedinice s detaljem koji se odnosi samo na sintezu upravljakih signala potrebnih tijekom faze PRIBAVI. Na slici vidimo da je sklopovima u ravnini"l" dovedena logika "1" na jedan od dva ulaza - ona se moe smatrati kao izlaz iz bistabila FB (naziva se Fetch bistabil) kojim se oznaava stanje ili faza PRIBAVI. Dekodiranje operacijskog koda, kao posljednja aktivnost u fazi PRIBAVI (stanje bistabila FB = 1), obavlja se u upravljakoj jedinici tijekom <I>7. Kada upravljaka jedinica prijee u fazu IZVRI, izlaz bistabila FB se automatski resetira, odnosno postavlja u"0".
CD, CD, CD, O, Qc (D, ...

C3

c5

c8

cu

c13

c14

c16

SI. 7.14 Kombinacijski dio upravljake jedinice (sinteza dijela upravljakih signala potrebnih za fazu PRIBAVI)

180

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

Uoavamo da kombinacijski sklopovi upravljake jedinice imaju pravilnu strukturu - sastoje se od prve ravnine logikih sklopova I, a zatim od ravnine logikih sklopova ILI. Pravilna struktura ovog oblika podsjea na strukturu koju poznajemo kao programirljiva logika polja PLA (Programmable Logic Array) u kojima se prema potrebama korisnika ostvaruju veze meu sklopovima u "I" i "ILI" ravnini. Slika 7.15 ilustrira jednostavan troulazni PLA sklop koji ima u Travnini 3 logika sklopa I, a u ravnini"ILI"samo dva logika sklopa ILI. Sklop ima dva izlaza. Naravno, ovo je samo ilustracija - dananji stupanj tehnologije doputa izvede'Ti "ILI" ravnina sa stotinama tisua logikih sklopova.
programirljive veze

programirljive veze

SI. 7.15 Jednostavan PLA sklop

Pri kaimo kako izgleda detalj sinteze upravljakih sklopova za fazu IZVRI za instrukcije jmpX i jmpzX. (Opaska: izlaz iz instrukcijskog dekodera l5 (slika 7.12) aktivan je tijekom faze j IZVRI za instrukciju jmpX, odnosno l6 za instrukciju jmpzX). Na temelju opisa upravljakih j signala za instrukciju jmpX: Vremenski trenutak 3> Vremenski trenutak < * > a> Upravljaki signali C 5 ,c Upravljaki signali C C5, ako je A= 0 onda C n Mikrooperacija MDR(ADRESA) i upravljakih signala za instrukciju jmpzX: Mikrooperacija MDR(ADRESA) IntBUS IntBUS -> PC IntBUS IntBUS -> PC

moemo odrediti kombinacijski dio upravljake jedinice (slika 7.16). Vremenski najzahtjevnije strojne instrukcije su addaX i anda X (14 vremenskih intervala^ zatim im slijede staXi IdaX(13 vremenskih intervala), coma (10 vremenskih intervala), jmm X\jmpzX(9 vremenskih intervala) i shra (8 vremenskih intervala). Uoavamo da su vremen-l ski najzahtjevnije upravo one strojne instrukcije koje u fazi IZVRI pristupaju memoriji] Na primjer, instrukcija addaX ima jedan od operanada u memoriji i mora ga tijekom faze] IZVRI dohvatiti iz memorije. Jednako tako, vidimo da, naalost, obavezne instrukcije a ]

izmjenu podataka izmeu procesora i memorije (staXi ldaX) imaju relativno dugo vrijeme izvoenja. Kada bi radna memorija svojom brzinom (vremenom pristupa) pratila brzinu sklopova u procesoru, onda bismo mogli smanjiti vrijeme izvoenja instrukcija staX \lda X za dva vremenska intervala (jedan za fazu PRIBAVI i jedan za fazu IZVRI) pa bismo tako ubrzali izvoenje tih instrukcija za neto vie od 15%.
0O O (Dq V " l " a k o je A=0

SI. 7.16 Kombinacijski dio upravljake jedinice (sinteza dijela upravljakih signala potrebnih za fazu IZVRI za instrukcije jmpX\ jmpzX)

182

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

instrukcija $taX; Vremenski trenutak <I> <t> 10 n


12

operacijski kod = 001 Upravljaki signali

aktivan izlaz instrukcijskog dekodera ft Mikrooperacija MDR IntBUS IntBUS MAR A-IntBUS IntBUS -+MDR Write Write

C5,c13

4>13 /cfaXi staXsu: = <f> 1 +<t> T =# J+ J 1 2 1. 1 3 1 11 8 V T 8 'l T 1 :<J> j 1 'i 1 1 ^10 1 I C,o

9 1

12 0

13 0

7.3.2. SKLOPOVSKE SASTAVNICE UPRAVLJAKE JEDINICE OSTVARENE NA TEMELJU GENERATORA SLJEDOVA


Na slici 7.12 prikazana je organizacija sklopovske upravljake jedinice s generatorom sijedova. Prikaimo sklopovsku izvedbu pojedinih sastavnica.

73.3. INSTRUKCIJSKI DEKODER


Tablica 7.3. prikazuje tablicu kombinacija ili tablicu istinitosti (engl. truth table) za dekoder.

A 0 0 0 0 1 1 1 1

B 0 0 1 1 0 0 1 1

c
0 1 0 1 0 1 0 1

'o 1 0 0 0 0 0 0 0

I,
0 1 0 0 0 0 0 0

2 0 0 1 0 0 0 0 0

'3 0 0 0 1 0 0 0 0

< 4 0 0 0 0 1 0 0 0

l5 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0

'7 0 0

0
0 0 0 0 1 ]

Tablica 7.3. Tablica istinitosti za dekoder

S. RIBARI - GRAA RAUNALA

183

Slika 7.17 prikazuje izvedbu instrukcijskog dekodera. c c


B B A A

r i >

l=ABC

I =ABC

r i >
=ABC

= ABC

I4 = A B C

l5= A B C

= ABC

l=ABC

C C B B A A

SI. 7.17 Instrukcijski dekoder

7.3.4. GENERATOR SLJEDOVA PO MODULU N


Slika 7.11 prikazuje generator sljedova vremenskih upravljakih impulsa. On se moe realizirati uporabom prstenastog brojila (engl. ring counter) koje se dobiva ako se posmanom registru izlaz spoji s ulazom (slika 7.18). Drugi je nain primjena brojila po modulu n i dekodera (slika 7.19).

184

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

T,

posmak udesno (signal vremenskog voenja) C D

T0

T1

T2

T n-1 ,
posmani registar

SL 7.18 Izvedba generatora sljedova uporabom prstenastog brojila

T,

T2

15

signat vremenskog voenja SL 7.19 Izvedba generatora sljedova uporabom brojila po modulu n i dekodera

Slika 7.20 prikazuje izvedbu generatora sljedova koja je prilagoena funkciji upravlja jedinice. Osnovnom sklopu pridodana je upravljaka logika (RS bistabil s logikim sklo vima I i ILI).

S. RIBARI - GRAA RAUNALA

185

C D C D C D
2

C D

^ 1 6

reset SI. 7.20 Izvedba generatora sljedova (za potrebe upravljake jedinice procesora)

Postavljanjem signala "start" u logiku jedinicu zapoinje generiranje sljedova vremenskih upravljakih impulsa u ritmu signala vremenskog voenja (clock) - omogueno je brojilo i dekoder. Aktiviranjem upravljakog signala "stop" zaustavlja se rad generatora. Upravljakim signalom "reset" vraa se generator u poetno stanje i zapoinje generiranje sljedova od upravljakog vremenskog impulsa. Za potrebe upravljake jedinice generator sljedova generira signale 0 1 - 0 1 6 (modul 16). Na temelju analize trajanja strojnih instrukcija za na model procesora, vidjeli smo da instrukcije traju razliiti broj vremenskih intervala upravljakih impulsa: addaXi anda X (14 vremenskih intervala), sta Xi Ida X (13 vremenskih intervala), coma (10 vremenskih intervala), jmpXi jmpzX(9 vremenskih intervala) i shra (8 vremenskih intervala). Budui da svaka nova faza PRIBAVI zapoinje s vremenskim upravljakim signalom <1^, da bismo ubrzali rad procesora, umjesto "praznog hoda" od stvarnog kraja tekue instrukcije do novog vremenskog upravljakog signala resetirat emo generator sljedova. Slika 7.21 prikazuje nain kako se smanjuje "prazan hod"za pojedine instrukcije. Na slici 7.21 vidimo, na primjer, da se za dekodirane instrukcije jmpX i jmpzX (izlazi l5 i l6 iz instrukcijskog dekodera, slika 7.12) koje traju svaka po ukupno 9 vremenskih intervala, <M> generira signal "reset" sinkrono sa O10 koji se dovodi na upravljaki ulaz generatora sljedova. Na taj se nain "utedjelo" vrijeme od do 0 16 , odnosno 6 vremenskih intervala. Za najbru strojnu instrukciju shra koja traje 8 vremenskih intervala postie se ubrzanje za 7 vremenskih intervala jer se generator sljedova resetira tijekom <I>9.

186

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

instrukcijski dekoder

SL 7.21

Nain ubrzanja rada procesora smanjivanjem "praznog hoda"

73.5. GENERATOR SIGNALA VREMENSKOG VOENJA


Za realizaciji generatora sljedova trebamo i generator signala vremenskog voenja (clock)Na slici 7.22 prikazana je izvedba oscilatora s kristalom (astabil s kristalom) koji daje veliku stabilnost frekvencije osciliranja ("frekvencije clocka").
kristal

clock

9-L

>
t>

>

SI. 7.22 Izvedba generatora signala vremenskog voenja

S. RIBARI - GRAA RAUNALA

187

7.4. MIKROPROGRAMIRANA UPRAVLJAKA JEDINICA


M.V. VVilkes je 1951. opisao izvedbu mikroprogramirane upravljake jedinice kojoj su osnovne znaajke pravilna struktura, modularnost i velika prilagodljivost. Mikroprogramiranje, kao to smo ve spomenuli, predstavlja sustavnu metodu izvedbe upravljake jedinice i omoguuje jednostavnu promjenu skupa strojnih instrukcija. Promjena instrukcija postie se jednostavnom izmjenom sadraja mikroprogramske memorije.

SI. 7.23 Pojednostavljeni model procesora

188

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

Izvedbu mikroprogramirane upravljake jedinice prikazat emo na pojednostavljenom modelu procesora koji je prikazan na slici 7.23. Put podataka temelji se na trima internima sabirnicama: lijevoj sabirnici operanada (L), desnoj sabirnici operanada (R) i sabirnici rezultata koju emo nazivati i glavna sabirnica (MB). Sve su interne sabirnice irine 16 bita. Procesor je akumulatorsko orijentiran - ima dva 16-bitna akumulatora: akumulator A koji je spojen na sabirnicu operanada L i akumulator B koji je spojen na sabirnicu operanada R. Akumulator B ima kao izlaz"pravu" vrijednost (B) ili jedinini komplement (?). Oba akumulatora kao odredita rezultata ili operanada imaju i vezu s glavnom sabirnicom MB. Programsko brojilo PC i statusni registar SR svojim su izlaznim linijama prikljueni na desnu sabirnicu R. Pretpostavit emo da je programsko brojilo PC 16-bitno. Izlaz 16-bitne aritmetiko-logike jedinice spojen je na ulaz posmanog sklopa. Izlaz posmanog sklopa S dovodi se na glavnu sabirnicu MB. Na glavnu sabirnicu prikljuenje i kombinacijski sklop ZT (Zero Tester) za ispitivanje je li rezultat koji je trenutno na glavnoj sabirnici MB jednak 0. Na slici opaamo da su oznaeni i pristupi glavnoj sabirnici IN i OUT koji predstavljaju osnovu za realizaciju izmjene podataka s vanjskim svijetom. Upravljaka jedinica ima strukturu mikroprogramirane jedinice. Ona zahtijeva svoj interni signai vremenskog voenja i to, u naem sluaju, trofazni signal s fazama P(0), P(1) i P(2). Tijekom P(0) odvijaju se aktivnosti koje odgovaraju fazi "mikro-izvri", P(1) odgovara prijenosu adrese sljedee mikroinstrukcije u mikroprogramski adresni registar H, a tijekom P(2) pribavlja se mikroinstrukcija iz upravljake (mikroprogramske) memorije CM (faza"mikro-pribavi") i smjetava u mikroinstrukcijski registar F. Postojanje "privatnog" signala vremenskog voenja koji je namijenjen mi krop rog ram i ranoj upravljakoj jedinici opravdava predodbu jedinice kao "raunala u raunalu". Slika 7.24 prikazuje podrobniju organizaciju upravljake jedinice. Podsjetimo se, u potpoglavlju 7.2. napisali smo da svakoj strojnoj instrukciji odgovara jedan mikroprogram pohranjen u upravljakoj memoriji. Poetna adresa mikroprograma odreuje se na temelju operacijskog koda strojne instrukcije. Adresa svake sljedee mikroinstrukcije u mikroprogramu moe se dobiti na sljedee naine (slika 7.24): i) poveanjem sadraja mi kro programskog adresnog registra H (registar H potpuno se opravdano naziva i mikroprogramsko brojilo jer pokazuje na sljedeu mikroinstrukciju); i i) prijenosom adresnog polja CNA {Control Next Address) iz pribavljene mikroinstrukcije u registar H; i i i) prijenosom adresnog polja CNA iz pribavljene mikroinstrukcije uz utjecaj stanja zastavica iz statusnog registra SR na vrijednost adrese (izlaz iz logike za grananje u mikroprogramu). Prema funkciji bitovi mikroinstrukcije mogu se grupirati u sljedea tri polja: i) polje namijenjeno upravljakim funkcijama, odnosno polje upravljakih signala koj se izravno ili preko dekodera dovode u upravljake toke na putu podataka; ii) polje za upravljanje slijedom mikroinstrukcija; iii) polje namijenjeno ouvanju prilagodljivosti, na primjer reprogramiranju upravljake jedinice. U naem sluaju je to tzv. emit polje koje sadrava konstantu ija se vrijednost moe proslijediti na lijevu sabirnicu L.

S. RIBARI - GRAA RAUNALA

189

vanjski uvjeti

uvjeti (zastavice statusnog registra SR)

SI. 7.24 Prikaz podrobnije organizacije mikroprogramirane upravljake jedinice

Slika 7.25 prikazuje format mikroinstrukcije. Mikroinstrukcija je duljine 32-bita. Potrebno je napomenuti duljina rijei procesora (8,16,32 ili 64- bita) nema izravne veze s duljinom mikroinstrukcije. Na procesor je 16-bitne arhitekture, a format mikroinstrukcije je 32-bitni.
polje za odreivanje sljedee mikroinst. A 3, CA 2 b29 CB 3 b27 b26 b25 b24 b23 COP CSH CMB 3 b19 b]8 bi 7 b16 b,5 b,4 b13 CAB 2 CBB 2 32 bita CST 2 , CNA 6 1 b8 b7 EM 8 b0

polje namjenjeno upravljakim funkcijama


^

emit polje

2 ! 2

k SI. 7.25 Format mikroinstrukcije

190

7 . POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

Svaki bit ili grupa bitova u pojedinim poljima CA - CST mikroinstrukcije odreuje pojedine mikrooperacije koje e se izvesti na odreenom dijelu puta podataka. Tako na primjer, dvobitno polje CA odreuje mikrooperacije prijenosa sadraja akumulatora A i 8-bitne konstante iz emit polja EM na lijevu sabirnicu L. Tablica 7.4. prikazuje vrijednosti bitova b30 i b31 mikroinstrukcije (polje CA) i odgovarajue mikrooperacije.

00 01

Nema prijenosa na lijevu sabirnicu L F(EM) - 0 L(0-7,8-15); konstanta iz emit polja smjetava se na 8 manje znaajnih linija (LSB) sabirnice L 0 - F(EM) L(0-7,8-15); konstanta iz emit polja smjetava se na 8 znaajnijih linija (MSB) sabirnice L A L; na L se smjetava 16-bitni sadraj akumulatora A |

10 11
Tablica 7.4. Upravljanje lijevom sabirnicom L

Tako, na primjer, dvobitna kombinacija 01 u polju CA pribavljene mikroinstrukcije pobuuje mikrooperaciju kojom e se 8-bitna konstanta sadrana u emit polju mikroinstrukcije postaviti na osam manje znaajnih linija lijeve sabirnice (znaajnijih osam linija L poprimaju vrijednost 0). Tablica 7.5. prikazuje mikrooperacije koje su odreene trobitnim poljem CB koje slui za upravljanje prijenosom na desnu sabirnicu R.

000 001

Nema prijenosa na desnu sabirnicu R B R; prijenos 16-bitnog sadraja akumulatora B na desnu sabirnicu (R) B R ; prijenos jedininog komplementa sadraja akumulatora B na desnu sabirnicu R PC R; prijenos sadraja programskog brojila PC na desnu sabirnicu SR R ; prijenos sadraja statusnog registra SR na desnu sabirnicu Ne koristi se (predvieno za nadogradnju) Ne koristi se (predvieno za nadogradnju) Ne koristi se (predvieno za nadogradnju) j I

010

011

100 101
...

111
Tablica 7.5. Upravljanje desnom sabirnicom R

5. RIBARI - GRAA RAUNALA

191

Tablica 7.6. opisuje dvobitno polje COP koje se odnosi na upravljanje aritmetiko-logikom jedinicom (u naem je sluaju to samo sklop potpuno zbrajalo).

00 01 10 11

Nema aktivnosti Zbroji dva 16-bitna podatka s Cin (Carry In) = 0 Zbroji dva 16-bitna podatka sCjn(Carry In) = 1 Logika operacija I

ablica 7.6. Upravljanje aritmetiko-logikom jedinicom

Tablica 7.7. prikazuje mikrooperacije pobuene kombinacijom bitova u polju CSH (upravljanje posmanim sklopom)

00 01 10 11
Tablica 7.7. Upravljanje posmanim sklopom

Q Q Q

MB, Q = S ;nema posmaka MB, Q = shr S ;posmak udesno za jedno mjesto MB, Q = shl S ;posmak ulijevo za jedno mjesto

Ne koristi se (predvieno za nadogradnju)

Tablica 7.8. opisuje trobitno polje CMB. Ono odreuje vezu glavne sabirnice MB s ostalim sastavnicama procesora.

{ } i j

000 001 oio 011

Nema prijenosa MB MB MB MB A ;prijenos 16-bitnog podatka sa sabirnice MB u akumulator A B prijenos 16-bitnog podatka sa sabirnice MB u akumulator B PC ;prijenos 16-bitnog podatka sa sabirnice MB u PC SR prijenos 16-bitnog podatka sa sabirnice MB u statusni registar SR

i i i j f j !

ioo ioi 110 ni

MB OUT/prijenos 16-bitnog podatka sa sabirnice MB prema ulazno-izlaznom podsustavu IN MB ;unos podatka iz ulazno-izlaznog podsustava

Ne koristi se (predvieno za nadogradnju)

Tablica 7.8 Upravljanje glavnom sabirnicom MB

192

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

Prije nego to opiemo znaenje polja CAB (bitovi b i 8 - b i 9 mikroinstrukcije), CBB (bi6 - b i 7) i CNA (b8 - b13), trebamo neto rei o kapacitetu upravljake (mikroprogramske) memorije i mikroprogramskom adresnom registru (mikroprogramskom brojilu) H. Pretpostavit emo da je kapacitet mikroprogramske memorije 256 32-bitnih rijei i zato je mikroprogramski adresni registar H duljine 8 bita. Registar H organiziran je tako da se 6 bitova polja CNA (polje za odreivanje sljedee mikroinstrukcije) smjetava na njegovih 6 znaajnijih bitovnih pozicija 1-1(7-2), dok se dvije najmanje znaajne bitovne pozicije H(1-0) odreuju na temelju polja CAB i CBB (slika 7.26), i to tako da CAB utjee na bitovnu poziciju b1 registra H a CBB na najmanje znaajnu bitovnu poziciju registra H.
utjecaji - utjecaj CBB CAB H mikroprogramski adresni registar H

upravljaka (mikroprogramska) memorija CM (265 rijei; duljina rijei 32 bita)

32 b8 CNA b0 mikroinstrukcijski registar F

b3i

. ..

r 1

SI. 7.26 Upravljaka memorija (mikroprogramska memorija) CM, mikroprogramski registar H i mikroinstrukcijski registar F

00 01 10 11
Tablica 7.9. Utjecaj na H(1)

0->H(1) 1 H(1) H(1); vrijednost zastavice Z premjeta se u H(1) j H(1); vrijednost zastavice N premjeta se u H(1)

SR(0) SR(1)

Iz tablice 7.9. vidimo da na bitovnu poziciju H(1) mikroprogramskog adresnog registra moe utjecati stanje zastavica koje su pohranjene u statusnom registru SR na pozicijama bO i b i , odnosno zastavice SR(0) i SR(1).

S. RIBARI - GRAA RAUNALA

193

Zastavica SR(O) je zastavica Z, odnosno zastavico nule koja se automatski postavlja kada je rezultat neke aritmetike ili logike operacije jednak 0. Na stanje zastavice Z utjee izlaz iz sklopa za ispitivanje nule ZT (slika 7.23). Zastavica SR(1) je zastavica negativne vrijednosti N koja se automatski postavlja u 1 kada je rezultat neke aritmetike ili logike operacije negativan, odnosno kada je najznaajniji bit rezultata jednak 1 (u skladu s notacijom potpunog komplementa). Kad smo govorili o strojnim instrukcijama uvjetnog grananja, spomenuli smo da se odluka o grananju u programu temelji na stanju neke od zastavica u statusnom registru SR. Sada, na razini mikroprogramske izvedbe upravljake jedinice vidimo da stanje zastavica moe utjecati na grananje u mikroprogramu te se zahvaljujui tome mogu ostvariti i strojne instrukcije uvjetnog grananja (u obliku mikroprograma). Tablica 7.10. prikazuje utjecaj polja CBB (bitovne pozicije b16 - b i 7 mikroinstrukcije) na najmanje znaajan bit registra H.

00
01 10 11 Utjecaj na H(0)

0 1

H(0) H(0)

SR(1)->H(0) MB(15) H(0); MB(15) je najznaajniji bit 16-bitne rijei koja trenutno na sabirnici MB

Polje CST odreuje utjecaj na zastavice SR(0) (zastavica Z) i SR(1) (zastavica N) (tablica 7.11.).

00 01 10

Nema utjecaja na zastavice IF (ZT = 0) THEN (0 SR(0)) ELSE (1 SR(0)); utjecaj na zastavicu Z MB(15) SR(1); utjecaj na zastavicu N

11

MB(15) SR(1) AND (IF(ZT = 0) THEN (0 SR(0)) ELSE (1 ->SR(0)) ;sloeni utjecaj - utjecaj na zastavicu Z i N

lablica 7.11. Utjecaj na statusni registar SR

U tablici 7.11. vidimo da se ovisno o binarnoj kombinaciji u polju CST utjee na zastavicu Z, zastavicu N ili na obje. Bitnu ulogu pritom ima sklop za ispitivanje nule ZT. On "oslukuje" glavnu sabirnicu MB i ako je svih esnaest bitova podatka na MB jednako nuli, onda postavlja svoj izlaz ZT u jedan. Objasnimo, na primjer, to e se dogoditi ako je CST jednako 11.

194

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

U tom sluaju, ovisno o izlazu iz ZT postavit e se ili obrisati zastavica Z, ali istodobno e se ovisno o vrijednosti najznaajnijeg bita podatka na MB postaviti (ili obrisati) i zastavica N. S obzirom da se za prikaz brojeva koristi notacija dvojnog ili potpunog komplementa, postoji i definirani odnos izmeu izlaza iz sklopa za ispitivanje nule ZT i vrijednosti najznaajnijeg bita MB(15). Taj je odnos prikazan u tablici 7.12.

1 0 1 0

1 1 0 0

Nedoputena kombinacija - ne moe istodobno biti izlaz iz ZT jednak 1 i najznaajniji bit rezultata 1 Rezultat je negativan Rezultat je nula (MB15 - MB 0) = 0 Rezultat je pozitivan

Tablica 7.12. Odnos izmeu izlaza iz sklopa za ispitivanje nule ZT i MB(15)

6-bitno polje CNA (b8 - b i 3 mikroinstrukcije) slui za odreivanje est najznaajnijih bitova mikroprogramskog adresnog registra H (slika 7.26): CNA H(7 - 2). 8-bitno polje EM (bO - b7 mikroinstrukcije) slui za pohranu 8-bitne konstante u samoj makroinstrukciji.Ta se 8-bitna vrijednost moe proslijediti na lijevu sabirnicu L (vidi polje CA; tablica 7.4) i moe se korisno upotrijebiti u izvedbi mikroprograma (kao to emo vidjeti u primjeru koji slijedi).

7.4.1. SIGNAL VREMENSKOG VOENJA MIKROPROGRAMIRANE UPRAVLJAKE JEDINICE


Mikroprogramirana upravljaka jedinica koja koristi uvjete za grananje u mikroprograma I zahtijeva svoj "privatni" interni trofazni signal vremenskog voenja (slika 7.27). Ako usporedimo ovaj trofazni signal vremenskog voenja s vremenskim upravljakim signalima koje daje generator sljedova, vidimo da je taj trofazni signal, zapravo, signal dobiven s genera-] torom sljedova po modulu 3. Visoka razina faze P(0) odreuje vrijeme u kojem se izvrava mikroinstrukcija - izvode se] mikrooperacije (jedna ili vie njih) na putu podataka. To vrijeme odgovara trajanju faze] "mikro-izvri". Faza P(1) odgovara vremenu potrebnom za oblikovanje i prijenos adrese u mikroprogram-j ski adresni registar H. U fazi P(2) pribavlja se mikroinstrukcija iz upravljake (mikroprogramske) memorije CMij smjetava se u 32-bitni mikroinstrukcijski registar F.To odgovara fazi"mikro-pribavi". Jedan se mikroinstrukcijski ciklus sastoji od faza "mikro-pribavi" faze prijenosa adrese] faze "mikro-izvri".

S. RIBARI - GRAA RAUNALA

195

perioda T faza P(0)

faza P(l)

faza P(2)

SL 7.27 Interni trofazni signal vremenskog voenja: P(0), P(1) i P(2)

Primjer 73. Treba napisati mikroprogram za strojnu instrukciju Branch), i to za fazu IZVRI. Strojnom se i u akumulatoru A, drugi u akumulatoru B) uz notaciji dvojnog komplementa. grananja CBR (Conditional dva broja (jedan da su brojevi predoeni u

i) ako je broj u akumulatoru A vei od broja u akumulatoru B, tada nema promjene ii) ako su brojevi jednaki, sadraj programskog brojila PC se tijekom faze IZVRI inkrementira (poveava za 1); ili) ako je broj u A manji od broja u B, tada se t p brojila PC poveava za 2; s: /FA > B THEN IFA = B THEN IFA<BTHEN PC = PCPC = PC+1 PC = PC + 2;

Pri pisanju mikroprograma za strojne instrukcije, odnosno oblikovanju skupa strojnih instrukcija, arhitekta-dizajner skupa instrukcija mora uzeti u obzir sva ogranienja koja postavlja sklopovlje na putu podataka procesora. Naravno, treba dobro poznavati i organizaciju mikroinstrukcijske rijei i znaenje pojedinih polja u njoj. Na jednostavni model mikroprogramiranog procesora na putu podataka, odnosno u aritmetiko-logikoj jedinici nema sklop komparator (engl. digital comparotor) za

196

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

usporeivanje vrijednosti dvaju binarnih podataka, tovie, nema ni sklop za oduzimanje (oduzimalo), stoga usporedba sadraja akumulatora A i B mora biti izvedena na sljedei nain: 1. Sadraj akumulatora A postavi na lijevu sabirnicu L; 2. Jedinini komplement sadraja akumulatora B (izlaz B) postavi na desnu sabirnicu R; 3. Aktiviraj potpuno zbrajalo u aritmetiko-logikoj jedinici, i to tako da se izvede zbrajanje s Cm = 1; Izvoenjem koraka 1. - 3. tek smo dobili A - B. Odnos izmeu sadraja A i sadraja B doznat emo na temelju stanja zastavica Z i N koje se automatski postavljaju na temelju rezultata A - B, odnosno izlaza iz sklopa za ispitivanja nule ZT i najznaajnijeg bita rezultata MB(15) (vidi tablicu 7.12). Jasno je, na primjer, ako je rezultat operacije A - B > 0 onda je A > B i zastavice su automatski postavljene tako da jeZ = 0 i N = 0, tj. rezultat je razliit od 0 i pozitivan. Je li slijed aktivnosti definiran koracima 1. - 3. te utjecaj na zastavice Z i N (tj. SR(0) i SR(1)) podran raspoloivim mikrooperacijama na putu podataka? Odgovor je da kombinacijom upravljakih bitovima u poljima CA, CB, COP, CSH i CST moemo tono definirati ponaanje u skladu s koracima 1. - 3 . te postavljanje zastavica Z i N. Nakon to je (neizravno) ustanovljen odnos izmeu sadraja akumulatora A i B, mora se" osigurati izvoenje jedne od triju aktivnosti: i) aktivnosti koje odreuje mikroinstrukcija koja e poveati sadraj programskog brojila PC za jedan (sluaj A = B; zastavice Z = 1, N = G) i granati na mikroinstrukch ju koja upuuje na prvu mikroinstrukciju mikroprograma za fazu .PRIBAVI strojne ii) aktivnosti koje odreuje mikroinstrukcija koja e poveati sadraj programskog brojila PC za 2 (sluaj A < B; zastavice Z = 0, N = 1) i granati na mikroinstrukciju koja upuuje na prvu mikroinstrukciju mikroprograma za fazu PRIBAVI strojne iiSliiili^^ - : ^ V/---'^ iii) nema aktivnosti - ne mijenja se sadraj programskog brojila PC (sluaj A > B; stavice Z = 0, N ~ 0), ve grana na mikroinstrukciju koja upuuje na prvu mikroL strukciju rnjkroprc^&ma za f a ^ P Na temelju toaka i) - iii) vidimo da stanje zastavica Z i N moemo iskoristiti za grana*4' u mikroprogramu ovisno o sluaju: A = B, A < B ili A > B (vidi polja CAB i CBB). Pretpostavit emo da 8-bitni operacijski kod 'yyyyyyyy' strojne instrukcije CBR odred adresu prVe mikmlnMrute^^ mikroprograma u memoriji CM. Slika 7.28 prikazuje dijagram toka mikroprograma za fazu JZVRJ strojne instrukcije G

S. RIBARI - GRAA RAUNALA

197

yyyyyyyy
operacijski kodstrojne instrukcije CBR (poetna adresa mikroprograma) AL; 8R; aktiviraj zbrajalo s Cm = 1; SQ; QMB; proslijedi A - B na MB MB (15)SR (1) AND (IF (2TT = 0)THEN (OSR (0)) ELSE (1-SR (0)) S R (0)H (1), SR (1)H (0) (zastavice: Z = 0;N = 1) A<B ZN xxxxxx01'
adresa mikroinstrukcije

(zastavice: Z = 1; N = 0) A>B (zastavice: Z = 0;N = 0) H(1)-0 H(0) = 0 ZN 'xxxxxx10' H (1) = 1 H(0) = 0 A=B

H(1) = 0 H (0) = 1

EML; EM = 2 PCR; aktiviraj zbrajalo

0-L; PC-R aktiviraj zbrajalo SQ; QMB ; MB-PC;

sC^O;
S - Q ; QMB; MB-PC;

0-H(l)

0H (0)

0H (1) 0H (0)

xxxxxx00' Opaska: SR(0)-zastavica Z SR(D- zastavica N

mikroinstrukcija koja upuuje na izvoenje mikroprograma za fazu PRIBAVI

SI. 7.28 Dijagram toka za mikroprogram za fazu zastavici Z, a SR(1) zastavici N

!; Opaska: SR(0) odgovara

1. mikroinstrukcija (nalazi se na adresi 'yyyyyyyy' (binarno); npr. '00001000' - odgovara polje CA = 11 ;A L ;na L se smjetava 16-bitni sadraj akumulatora A; polje CB = 010 ; B - + R prijenos jedininog komplementa sadraja akumulatora B na desnu sabirnicu R; polje COP = 10 ; Zbroji dva 16-bitna podatka s Cln(Carry In) = 1; polje CSH = 00 ; Q MB, Q = S ;nema posmaka; polje CMB = 000 ; Nema prijenosa s glavne sabirnice u neki od registara; polje CAB = 10 ; SR(0) H(1) ;vrijednost zastavice Z premjeta se uH{1) jK>ljeCBB = 1 0 ;SR(1) H(0) ; w y e d n o s t z ^ seuH{0) polje CST = 1 1 ; M8(15) SR{1) AND (/F(ZT = 0} THEN (0 SRtO)); s l o v n i utjecaj na zastavicu N i Z; polje CNA='xxxxxx'(binarno) ;npn '010000'polje EM ='00000000' ;8-bitna SR(0)) ELSE (1

198

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

Prva mikroinstrukcija izgleda ovako:

0 1

0 0 0 0 0 0 1 0 1 0 1 1 0 1 o 0 0 0 0 0 0 0 0 0 0

2. mikroinstrukcija (nalazi se na adresi 01000001 pri emu je est znaajnijih bitova adrese odreeno poljem CNA iz prve mikroinstrukcije, a dva najmanje znaajna bita adrese su odreena sa stanjem zastavica Z = 0 i N =1) /ova mikroinstrukcija izvrava se kada je A<B) 1 polje CA = 01 ; F(EM)-0 L(0-7,8-15) ;konstanta izemit polja (vrijednost 2) | ! smjetava se na 8 manje znaajnih linija (LSB) sabirnice L; polje CB = 011 ; PC R; prijenos sadraja programskog brojila PC na desnu sabirnicu R; ; Zbroji dva 16-bitna podatka s Cln(Carry In) = 0; polje COP = 01 ; Q ^ MB, Q = S; nema posmaka; polje CSH = 00 polje CMB = 011 ; MB r+ PC; prijenos 16-bitnog podatka sa sabirnice MB u PC; polje CAB = 00 ;0-*H(1); polje CBB = 00 ;0->H(0); polje CST = 00 ; nema utjecaja na zastavice u SR; polje CNA='xxxxxx' (binarno) ;npr. '010000' - est znaajnijih bitova adrese sljedee mikroinstrukcije; * polje EM ^ OOOOOOIO ; konstanta = Druga mikroinstrukcija izgleda ovako:

0 10

1 1 0 3. mikroinstrukcija {nalazi se na adresi 01000010 pri emu je est znaajnijih bitova adre-J se odreeno poljem CNA fz prve mikroinstrukcije, a dva najmanje znaajna bita adrese] odreena su stanjem zastavica Z = 1 i N =0) /ova mikroinstrukcija izvrava se kada j e j polje CA = 01 ; F(EM)-0 L(0-7,8-15) ;konstanta iz emit (00000000) polja; smjetava na 8 manje znaajnih linija (LSB) sabirnice L; polje CB = 011 ; PC R ;prijenos sadraja programskog brojila PC na des sabirnicu R; polje COP= 10 ; Zbroji dva 16-bitna podatka s (^(Carrv In) = 1; polje CSH = 00 ;G MB, Q = S ;nema posmaka; polje CMB = 011 ; MB PC ;prijenos 16-bitnog podatka sa sabirnice MB u PC; polje CAB = 00 ; 0 H(1); polje CBB = 00 ; 0 - > H(0); polje CST=00 ; nema utjecaja na zastavice u SR; polje CNA='xxxxxx' (binarno) ;npr. '0100007 - est znaajnijih bitova adrese slj e mikroinstrukcije; polje EM ='00000000'

S. RIBARI - GRAA RAUNALA

199

0 0 0

0 0 Sli 0

Slika 7.29 prikazuje dio sadraja upravljake (mikroprogramske memorije) koji odgovara mikroprogramu za strojnu instrukciju CBR. Vidimo da se sve tri mikroinstrukcije mikroprograma za fazu IZVRI za strojnu instrukciju granaju na adresu 01000000. Na toj se adresi nalazi mikroinstrukcija koja upuuje izvoenje na mikroprogram koji podrava fazu PRIBAVI. upravljaka (mikroprogramska) memorija CM(sadraj) adresa: 00001000
CNA EM 11 010 10 00 0 0 0 # t o n 010000 00000000

777777

01000001 0*000010 2ZZ00

01 011 01 00 011 00 0000 ^10000 M V.: 0i o n 010000 m


-" "-- . . . .

M
m m m m

1. mikroinstrukcija mikroprograma za fazu PRIBAVI SI. 7.29

pokaimo kako se ta v r ^ m ^ s t o

^Izvoer^

ikdm^ntar;

; prva mikroinstrukcija - adresa mikroinstrukcije je '00001000'

poetak sekvence s ;c /GP(1)/ '00001000' H, 1 G; P(1) - prijenos adrese u H ; adresa prve; mikroinstrukcije odreena je operacijskim kodom strojne instrukcije - ;operacjski kod instrukcije CBR je'00001000' CM(H) F; faza "mikro-pribavi" A L; na L se smjetava 16-bitni sadraj akumulatora A B-+ R; prijenos jedininog komplementa sadraja akumulatora B na desnu; sabirnicu R

/G P(2)/ /CA(3) P(0)/ /CB(2) P(0)/

/C0P(2) P(0)/ /CSH(0)P{0)/ /CMB(0) P{0)/ /CST{3) P(0)/ /CA8(2) P{1)/ /C88(2) P(1)/ /G P(2)/

L + R + C^ ;zbroji dva 16-bitna podatka s C.m (Cany fn) - 1 Q-+MB,Q = S; nema posmaka NOP; nema prijenosa s glavne sabirnice u neki Gdtegistara f MB{15) SR(1)>4ND(/F(2T=0) 7HN{<) ->. SR(0 })a5 (1 SR(0)); sloen* utjecaj - utjecaj na zastavicu Z i N SR{0) H{1) ;vrijednost zastavice 2 SR(1) H{0) vrijednost zastavice N premjeta se u H(0)

/CBB(0)P(1)/ /G P{1)/

0-+H(0) F(CNA) H(7~ 2); F(CNA) = 010000

S. RIBARI - GRAA RAUNALA

201

7.5. NANOPROGRAMIRANA UPRAVLJAKA JEDINICA


Mikroprogramiranje je za 16-, 32- i 64-bitne procesore CISC arhitekture standardan pristup oblikovanju upravljake jedinice. Oblikovanje upravljake jedinice predstavlja jednu od kritinih faza oblikovanja procesora. Da bi se smanjila povrina na ipu to je zauzima upravljaka jedinica, esto se upotrebljava organizacija mikroprogramske strukture u dvije razine. U prvoj se razini strojna instrukcija dohvaena iz memorije interpretira mikroprogramom koji je pohranjen u upravljakoj (mikroprogramskoj) memoriji CM.
iz instrukcijskog

upravljaki signali Si. 7.30 Organizacija dvorazinske upravljake jedinice koja se zasniva na mikro- i nanoprogramiranju

Mikroinstrukcija se ne dovodi izravno u upravljake toke na putu podataka, ve se koristi kao kazaljka za pristup upravljakoj memoriji u drugoj razini. Ta se upravljaka memorija naziva nanoprogramska memorija (nCM; slika 7.30) i u njoj su pohranjene nanoinstrukcije. Bitovi nanoinstrukcije koriste se za izravno upravljanje na putu podataka. Slika 7.30 prikazuje dvorazinsku organizaciju upravljake jedinice koja se zasniva na mikro- i nanoprogramiranju. Razina nanoprogramske upravljake jedinice izvedena je brim sklopovima, a sama nanoprogramska memorija je manjeg kapaciteta u odnosu na mikroprogramsku memoriju. U broj nanoprogramskoj memoriji pohranjuju se najee upotrebljavani nanoprogrami - sijed ovi nanoinstrukcija. Dvorazinskom upravljakom jedinicom postie se i uteda u veliini upravljake memorije u odnosu na jednorazinsku (mikroprogramsku) izvedbu. Na primjer, pretpostavimo da se jednorazinska upravljaka memorija sastoji od Hm rijei (mikroinstrukcija) koje su duljine N + [log 2 H m ], gdje je N broj upravljakih bitova a [log 2 H m ] broj bitova potreban za povratnu adresu ([x] oznaava gornju cjelobrojnu vrijednost od x). Kapacitet upravljake memorije za jednorazinsku izvedbu je: S ^ H J N + Pog.Hj)

U dvorazinskoj izvedbi mikroprogramska memorija CM (slika 7.30) takoer pohranjuje H^ mikroinstrukcija, pri emu se sada N upravljakih bitova prosljeuje nanoprogramskoj memoriji nCM. Nadalje, svaka mikroinstrukcija u CM je duljine |"log2Hn], gdje je Hn broj nanoinstrukcija jer mikroinstrukcija, zapravo, predstavlja adresu za nanoinstrukcijsku memoriju. Uz pretpostavku da ima vrlo mali broj grananja (ili ak uope i nema) u nanoprogramu, moemo ocijeniti ukupni kapacitet memorije dvorazinske izvedbe: S2 = H m ( P o g 2 H j + pog 2 H n l) + H n N, gdje je flog 2 H m ] broj bitova adresnog polja potreban za sljedeu adresu mikroinstrukcije, [log2Hn] broj bitova u mikroinstrukciji potreban za adresiranje nanomemorije i konano N duljina nanoinstrukcije, odnosno broj upravljakih bitova koji se dovode na put podataka. Pretpostavimo da su svi bitovni uzorci u nanoprogramskoj memoriji razliiti tako da svaki uzorak predstavlja jedinstveno upravljako stanje pridrueno skupu strojnih instrukcija. U tom sluaju moemo napisati da je Hn = r x H , pri emu je r omjer izmeu jedinstvenih upravljakih stanja i ukupnog broja upravljakih stanja potrebnih za implementaciju svih strojnih instrukcija. Uvrstimo Hn = r x Hm u izraz za S2, dobivamo ukupni kapacitet dvorazinske izvedbe mikroprogramirane upravljake jedinice: S2 = H m (Pog 2 HJ + [ l o g 2 r H m l ) + rH m N, = Hm ( P o g 2 H j + [log 2 r ] + p 0 g 2 Hm ] ) + r Hm N, S2 = H m (2pog 2 H m l + p o g 2 r l + rN).

5. RIBARI - GRAA RAUNALA

203

instrukcijski registar IR

upravljaki signali SI. 731 Organizacija dvorazinske upravljake jedinice za MC 68000

7.6. FORMATI MIKROINSTRUKCIJA - HORIZONTALNO I VERTIKALNO MIKROPROGRAMIRANJE


Format mikroinstrukcije, odnosno organizacija polja upravljakih bitova u mikroinstrukciji, mora biti takav da omogui: i) djelotvorno grupiranje i dodjeljivanje upravljakih bitova pojedinim sklopovskim strukturama na putu podataka, ii) uvezivanje mikroinstrukcija u mikroprogram - djelotvoran prijenos upravljanja s jedne mikroinstrukcije na drugu (engl. microinstruction sequencing), iii) prilagodljivost reprogramiranju - jednostavnu izmjenu mikroprograma. Prethodno se navedene funkcije trebaju ostvariti sa stoje mogue manjim brojem bitova u mikroinstrukciji, stoje mogue manjim brojem mikroinstrukcija od kojih se sastoji mikroprogram te u stoje mogue kraem vremenu izvoenja mikroprograma. Prva dva zahtjeva odnose se na kapacitet mikroprogramske memorije, odnosno na zahtjeve zauzea dijela povrine ipa od strane mikroprogramirane upravljake jedinice, a trei se zahtjev odnosi na brzinu (a time i na performansu) procesora. Pristupi formatiranja mikroinstrukcija, odnosno organizacije mikroinstrukcija, kojima se tei zadovoljavanju postavljenih zahtjeva su sljedei: i) izravno upravljanje, ii) grupiranje bitova, iii) viestruki formati.

204

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

7.6.1 IZRAVNO UPRAVLJANJE


U ovom pristupu format mikroinstrukcije je takav daje svaki njezin bit (nazivamo ga i upravljaki bit jer odreuje hoe li se odreena mikrooperacija izvesti) jednoznano dodijeljen svakoj od mikrooperacija koje se mogu izvesti mikroprogramiranom procesoru. To znai da je duljina mikroinstrukcije odreena ukupnim brojem raspoloivih mikrooperacija. Uz to, formatu mikroinstrukcije pridodana su polja bitova koja se odnose na uvezivanje mikroinstrukcija i em/f polje. Format mikroinstrukcije koji se temelji na izravnom upravljanju prikazan je na slici 7.32 Svaki bit mikroinstrukcije koji je izravno dodijeljen mikrooperaciji odreuje hoe li se mikrooperacija izvesti (bit ima vrijednost 1) ili nee (vrijednost bita je 0).
n bitova, n-odgovora broju mikrooperacija p bitova adresa sljedee mikroinstrukcije
-H-

emit polje

r"i -nJ -H-

H h

0 : nop

1 : M01
0 : nop 0 : nop 1 : MOn MO - mikrooperacija

1 : M02
SI. 7.32 Format mikroinstrukcije s izravnim upravljanjem

Glavne prednosti ovakve organizacije mikroinstrukcije jesu mogunost potpunog iskoritenja potencijalnog paralelizma na razini mikrooperacija (istodobno se izvode sve mikrooperacije kojima je dodijeljen bit s vrijednosti 1) te velika prilagodljivost pri izmjeni mikroprograma (bez zahtjeva za promjenom organizacije mikroinstrukcije). Mikroinstrukcije ovog tipa ne zahtijevaju sklopove za dekodiranje pojedinih njezinih sadraja, odnosna grupe upravljakih bitova. Nedostatak ovakvog pristupa je velika duljina mikroinstrukcije. Naime, ako mikroprogram i ran i procesor ima veliki skup mikrooperacija koji se sastoji od stotinu i vie mikro- j operacija, onda je i duljina mikroinstrukcije velika. S druge strane, zbog ogranienja broj I istodobno izvodljivih mikrooperacija (posebice u arhitekturi procesora koji se temelji na ] klasinom von Neumannovom modelu) postavlja se pitanje o isplativosti uporabe tato j dugih mikroinstrukcija u kojima e veina bitova imati vrijednost 0 (to znai za odreen j mikrooperaciju daje neaktivna - nop - "no operation").

7.6.2. GRUPIRANJE BITOVA - MINIMALNO KODIRANJE (ENGL. MINIMAL ENCODING)


Ovom se organizacijom mikroinstrukcije tei smanjiti njezina duljina, i to dvama nainima] grupiranja upravljakih bitova: i) grupiranjem upravljakih bitova koji se odnose na mikrooperacije koje e se uviji istodobno izvesti,

S. RIBARI - GRAA RAUNALA

205

ii) grupiranjem upravljakih bitova koji se odnose na mikrooperacije koje se meusobno iskljuuju. U sluaju i) mogue je grupi takvih istodobno izvodljivih mikrooperacija dodijeliti samo jedan upravljaki bit. Ako je njegova vrijednost jednaka 1, onda e se izvesti istodobno sve mikrooperacije koje su mu dodijeljene. Na taj se nain smanjuje duljina mikroinstrukcije, ali i gubi prilagodljivost. Grupiranjem upravljakih bitova koji se odnose na mikrooperacije koje se meusobno iskljuuju, mogue je umjesto r upravljakih bitova (gdje je r broj takvih mikrooperacija u grupi) koristiti samo [log 2 r] upravljakih bitova, gdje |~x] oznaava gornju cjelobrojnu vrijednost od x. Na primjer, ako aritmetiko-logika jedinica (ALU) podrava esnaest razliitih (mikro)operacija (zbrajanje, oduzimanje, logiko I, logiko ILI,..., ukljuujui i onu kada nema aktivnosti - nop) i ako izvodi samo jednu od tih operacija istodobno, onda umjesto esnaest upravljakih bitova dovoljna su etiri. Svaka njihova 4-bitna kombinacija jednoznano odreuje mikrooperaciju ALU: 0000 - nop (ALU nije aktivna), 0001 - zbroji dva operanda i bit prijenosa Cjn = 0, 0010 - zbroji dva operanda i bit prijenosa Cjn = 1, 0011 - oduzmi dva operanda,

1110 - logika operacija ILI 1111- logika operacija Iskljuivo ILI. Slika 7.33 prikazuje organizaciju mikroinstrukcije koja se temelji na grupiranju bitova. grupiranje mikrooperacija koje se meusobno iskljuuju grupiranje mikrooperacija koje se izvode istodobno adresa sljedee mikroinstrukcije
-M-

emit polje

1
1

--i -n-

PH

-u-

0: nop 1 : istodobno se izvode MOP1,MOP3, MOP4, MOP7,...

0: 1 : istodobno se izvode MOP2, MOP3, MOP7, MOP8,...

0000 0001 MOP9 0010


1110 M022
1111

M024

S L 7.33 Format mikroinstrukcije koja se temelji na pristupu grupiranja bitova

206

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

U sluaju grupiranja mikroopercija koje se meusobno iskljuuju potrebno je grupi upravljakih bitova dodijeliti dekoder kojim se n kombinacija upravljakih bitova dekodira u jedan od 2n moguih izlaza. Na taj se nain pobuuje jedna od moguih 2n mikrooperacija u grupi. Primjerice, 4-bitna kombinacija upravljakih bitova za mikrooperacije koje se odnose na ALU dekodira se dekoderom etiri-na-esnaest.

7.6.3. VIESTRUKI FORMATI MIKROINSTRUKCIJA


Osnovna znaajka ovog pristupa formatiranju mikroinstrukcija jest relativno kratka mikroinstrukcija duljine 16 ili 32 bita kojom se specificira maksimalno do etiri mikroopeacije. Mikroinstrukcije koriste razliite formate za pojedine tipove mikrooperacija tako da svojom organizacijom odgovaraju formatu (strojnih) instrukcija na ISA razini. Na primjer, skup mikroinstrukcija koji koristi etiri razliita formata moe imati sljedee formate mikroinstrukcija: i) format 0 (slika 7.34) kojim se odreuje mikrooperacija prijenosa podataka izmeu sastavnica na putu podataka, ii) format 1 (slika 7.35) koji odreuje do tri mikrooperacije koje se odnose na ALU (zbrajanje, oduzimanje, logike operacije, posmak), pristup memoriji ili inkrementiranju programskog brojila, iii) format 2 (slika 7.36) kojim se odreuju mikrooperacije maskiranja operanda ili dijela operanda na ulazu u ALU, iv) format 3 (slika 7.37) kojim se odreuju mikrooperacije grananja u mikroprogramu. Na slici 7.34 vidimo da se dva najznaajnija bita mikroinstrukcije rabe za specifikaciju formata mikroinstrukcije - 00 odreuje format 0. U tom se sluaju sljedeih pet znaajnijii bitova tumai kao "operacijski kod" mikrooperacije iz skupa mikrooperacija za prijenos podataka. Preostala polja upravljakih bitova odreuju izvorita i odredita podataka kop sudjeluje u prijenosu. Ukupna duljina mikroinstrukcije je 20 bita. Usporedite ovaj format mikroinstrukcije s formatom strojne instrukcije RISC procesora (poglavlje 3).
2 bita 5 bitova 6 bitova 6 bitova

b, b6

b,

b,

'

"

format 00 - format 0

^ mop

" operand 1 operand 2

I ne koristise

SI. 7.34 Format 0 mikroinstrukcije

Mikroinstrukcija (slika 7.34) tumai se na sljedei nain: ako je b19 b18 = 00 tada je format 0, ako je format 0 onda je mikroopercija (mop) (b13 - b17) iz skupa mikrooperacija za prijenos i polje operanda 1 (b7 - b i 2) je adresa izvorita podatka a

5. R1BARI - GRAA RAUNALA

207

polje operanda 2 (bi - b6) je adresa odredita podatka, /bit bO se ne koristi/. Format 0 mikroinstrukcije odreuje samo jednu istodobno izvrljivu mikrooperaciju.
2 bita 5 bitova 2 bita 1 bit
b

6 bitova

b,9

b,8 b,7

b b12

,o bs

ne koristi se format 01 - format 1 SL 7.35 Format 1 mikroinstrukcije mopl mop2 mop3 modifikator

Na slici 7.35 prikazanje format 1 mikroinstrukcije. U tom sluaju vidimo da se formatom 1 odreuju do tri istodobno izvrljive mikrooperacije. Mikroinstrukcija (slika 7.35) tumai se na sljedei nain: ako je b i 9 b i 8 = 01 tada je format 1 ako je format 1 onda je mikroopercija 1 (mop 1) (b13 - b i 7) iz skupa mikrooperacija {add, sub, or, exor, shr, shl,...} mikrooperacija 2 (mop 2) ( b l l - b12) iz skupa mikrooperacija {read M, write M} mikrooperacija 3 (mop 3) (blO) koja odreuje inkrementiranje programskog brojila polje modifikatora (b4 - b9) odreuje iznos posmaka (broj mjesta) ako je mikrooperacija mop 1 shr ili shl (operacija posmaka udesno ili ulijevo) /bitovi bO - b3 se ne koriste/. Slika 7.36 prikazuje format 2 mikroinstrukcije. Njome se odreuje samo jedna mikrooperacija, i to mikrooperacija maskiranja jednog od operanada na ulazu u ALU. Mikroinstrukcija (slika 7.36) se tumai na sljedei nain: ako je b19 b18 = 10 tada je format 2 ako je format 2 onda je mikrooperacija mop iz skupa mikrooperacija maskiranja onda se bdl tumai kao granica i1# a bd2 kao granica i2 maskiranje se izvodi na sljedei nain: AOUT := AIL mask AIR [ii ... i2] bit pozicije u AIL od i^ pozicije (ulijevo) i i pozicije (udesno) prenose se bez izmjene; bit pozicije od i do i2 poprimaju u rezultatu vrijednost ulaza AIR /AIL oznaava operand na lijevom ulazu u ALU, AIR operand na desnom ulazu u ALU, a AOUT izlaz iz ALU nakon operacije maskiranja/

208

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAKE JEDINICE

2 bita

5 bitova

6 bitova

6 bitova

1 bit b1 b 0

19

18

!7

bi3 b12

b7

ne koristi se format 10-format 2 SI. 7.36. Format 2 mikroinstrukcije mop bd 1 bd 2

Slika 7.37 prikazuje format 3 mikroinstrukcije. On je namijenjen za uvjetna i bezuvjetna grananja u mikroprogramu. Mikroinstrukcija (slika 7.37) tumai se na sljedei nain: ako je b l 9 b18= 11 tada je format 3, ako je format 3 onda je mikroopercija (mop) (bi3 b17) iz skupa mikrooperacija uvjetno i bezuvjetno grananje u mikroprogramu polje (bO - b12) je odredina (ciljna) adresa grananja.
2 bita 5 bitova 13 bitova

N
b

!9

,B

,7

,3

b12

format 11 - format 3

mop grananja

odredina adresa

SI. 7.37 Format 3 mikroinstrukcije

Mikroinstrukcije koje koriste viestruke formate zahtijevaju sloenije sklopove za dekodH ranje - prvo se treba dekodirati polje koje odreuje format mikroinstrukcije, a zatim i po-j Ije bitova koje se odnosi na jednu od mikrooperacija iz skupa mikrooperacija. Tumaenje] ovog drugog polja upravljakih bitova ovisi o rezultatu dekodiranja prethodnog polja.

7.6.4. HORIZONTALNO I VERTIKALNO MIKROPROGRAMIRANJE


Usko u vezi s formatom mikroinstrukcija, odnosno organizacijom mikroinstrukcije, nailazimo i na dva pojma: horizontalno mikroprogramiranje i vertikalno m ikroprog ra miranje. j Znaajke horizontalnog mikroprogramiranja jesu: i) mikroinstrukcija je duga rije koja se sastoji od 64 pa sve do nekoliko stotina bitova ii) mikroinstrukcijom se omoguuje vei broj razliitih resursa procesora (funkcijsl jedinica, registara, putova podataka) tako da se njima upravlja nezavisno - mikr< stukcija odreuje vei broj mikrooperacija koje se izvode istodobno, iii) mikroinstrukcije formata u skladu s horizontalnim mikroprogramiranjem dopusti mikroprogrameru specifikaciju upravljanja na razini pojedinih mikrooperacija.

S. RIBARI - GRAA RAUNALA

209

Na temelju znaajki i) - iii) moemo zakljuiti da pristup formatiranju mikroinstrukcija izravnim upravljanjem odgovara horizontalnom mikroprogramiranju. Vertikalno mikroprogramiranje ima sljedee znaajke: i) mikroinstrukcije su obino male duljine - od 16 iii 32 bita, ii) mikroinstrukcija obino specificira jednu ili dvije mikrooperacije i zato ne doputa mikroprogrameru iskoritavanje potencijalnog paralelizma na razini mikrooperacija, iii) umjesto specifikacije veeg broja istodobno izvrljivih mikrooperacija mora se koristiti uvezivanje mikroinstrukcija koje onda odreuju skup ili slijed mikrooperacija.

S. RIBARI - GRAA RAUNALA

211

8. POGLAVLJE

ARITMETIKOLOGIKA JEDINICA
8.1. UVOD: BIT, RIJE, BAJT I ZNAKOVI
Najmanja koliina informacije koja se moe pohraniti i kojom se raunalo moe sluiti jest bit (engl. bit). Raunalo pohranjuje informaciju u obliku grupe bitova koja se naziva rije (engl. word). Broj bitova u rijei razliit je za razliita raunala. Tako govorimo o raunalu koje ima 4-, 8-, 16-, 32- 64- ili 128-bitnu rije. Grupa od 8 bitova naziva se bajt (engl. byte). Za dananje procesore kaemo da su bajtno orijentirani procesori jer im je duljina rijei viekratnik od 8 bita. Primjer 8.1. Prvi mikroprocesor Intel4004(1971.godine) imaojeduljinu rijei od4bita, Mikroprocesori prve generacije (kraj 1971.) bili su 8-bitnL Mikroprocesor Intel 8086 (1978.) imao je duljinu rijei od 16 bita. Raunalo VAX 11/780 (1978.) bilo je 32-bitno. Trea je generacija mikroprocesora 32-bitna, dok je etvrta generacija 64-bitna. Grafiki procesori i procesori za posebne namjene (VLIW, multimedijski) imaju duljinu rijei od 128 bitova i vie. Alfanumeriki znakovi (A - Z, a - z, 0 - 9, simboli *, -, +,!, ?, itd.) predoeni su u raunalu binarnim uzorcima koji se mogu pohraniti i kojima se moe baratati u raunalu. ASCII (American Standard Code for information Interchange) obino se koristi za kodiranje alfanumerikih znakova. Svaki je alfanumeriki znak predoen 7-bitnim kodom tako da je ukupno 128 znakova, od ega je 96 znakova "normalnih" koji su ispisni, tj. mogu se ispisati (engl. printing characters), a 32 znaka su neispisni znakovi za upravljake funkcije (npr., BS (engl. backspace) - pomak za jedno mjesto unatrag, LF (engl. line feed) - novi redak, CR (engl. carriage return) - povrat na poetak retka i si.). Tablica 8.1. prikazuje skup vrijednosti znakova ASCII. Osim 7-bitnog ASCII koda koristi se i 8-bitni EBCDIC (Extended Binary Coded Decimal Interchange Code).

212

8. POGLAVLJE: ARITMETIKO-LOGIKA JEDINICA

0 000 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111 Tablica 8.1. ASCII kod NULL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR

1 001 DCL DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US

2 010 SP j
u

3 011 0 1 2 3 4 5 6 7 8 9 :
#

4 100

5 101 P Q R

6 110
1

7 111 P q r s t
u V w X

@
A B

a b c d e f

#
$

c
D E F G H
1

s
T U V w X Y z

% &

g
h i
j

( )
*

y
z

J K L M N

+
t
-

[
\

k
1 m

}
1

<
=

]
A

}
~

so
SI

>

n o

DEL

8.2. PRIKAZ BROJEVA


8.2.1. PRIKAZ CIJELIH BROJEVA
Golema veina dananjih raunala koristi pozicijski brojevni sustav s bazom 2 (binarni brojevni sustav), iako postoje izvedbe posebnih raunala koja za prikaz brojeva koriste simbolike prikaze (npr. rezidualni brojevni sustav u kojem se broj prikazuje ostacima dijeljenja dekadskih brojeva prim brojevima). Opseg cijelih brojeva (engl. integer) protee se na podruje cijelih negativnih brojeva, nule i podruje cijelih pozitivnih brojeva. U raunalu se upotrebljavaju razliiti naini za prikaz cijelih brojeva: i) predznak-apsolutna vrijednost (engl. signed and magnitude); ii) jedinini ili nepotpuni komplement (engl. one's complement); iii) potpuni ili dvojni komplement (engl. two's complement). Nain prikaza predznak-apsolutna vrijednost je, na prvi pogled, najprirodniji nain prikaza brojeva. Broj duljine n bitova u tom prikazu upotrebljava krajnje lijevi bit (najznaajniji bit) kao bit predznaka. Ako je najznaajniji bit 0 (nula), onda je broj pozitivan, a ako je 1 (jedan), onda je broj negativan. Vrijednost broja odreena je s preostalih n-1 bitova. Opseg vrijednosti cijelih brojeva v(x) u tom prikazu je: -(2n1 -1) ^ v(x) ^ +(2n~1 -1). U ovom nainu prikaza postoje i dvije nule - nula s pozitivnim predznakom i nula s negativnim predznakom.

S. RIBARI - GRAA RAUNALA

213

Prikaz jedininim iii nepotpunim komplementom doputa prikaz nenegativnih brojeva na uobiajen nain tako da je najznaajniji bit 0. Negativni broj iste apsolutne vrijednosti dobiva se komplementiranjem svih n bitova pozitivnog broja. Podsjetimo se, komplementiranje je operacija kojom se zamjenjuju vrijednosti binarnih znamenki u broju - nule jedinicama i jedinice nulama. Opseg prikaza cijelih brojeva u tom prikazu je: -(2n1 -1) 5 5 v(x) < s +(2n_1 -1). I u ovom nainu prikaza postoje dva oblika za nulu. Prikaz potpunim ili dvojnim komplementom upotrebljava najznaajniji bit za oznaavanje pozitivnog (najznaajniji bit je 0) ili negativnog broja (najznaajniji bit je 1). Za pozitivne vrijednosti cijelog broja upotrebljava se preostalih n - 1 bitova. Negativne vrijednosti cijelog broja dobivaju se tako da se jedininom komplementu (odgovarajue pozitivne vrijednosti) pribroji jedinica. Opseg vrijednosti brojeva u ovom prikazuje: -(2n1) ^ v(x) ^ +(2n~1 -1). U ovom je prikazu nula predoena samo u jednom obliku. Primjer 8.2. Prikaimo dva broja -126 i + 125 (dekadski zapis) u sva tri naina prikaza cijelih brojeva, uz pretpostavku da brojeve elimo predoiti s 8 bita: predznak-apsolutna vrijednost -126 = 11111110; najznaajniji bit - bit predznaka je 1 - broj je negativan; apsolutna vrijednost je: 0 x 2 + 1 x 21 + 1 x 22 + 1 x 23 + 1 x 24 + 1 x 25 + 1 x 26 apsolutna vrijednost je 126; + 125 = 01111101; najznaajniji bit - bit predznaka je 0 - broj je pozitivan; apsolutna vrijednost broja je 125; jedinini ili nepotpuni komplement -126= 10000001; najznaajniji bit - bit predznaka je 1 - broj je negativan; binarna vrijednost za -126 dobiva se komplementiranjm pozitivne vrijednosti 126: 126 = 01111110 jedinini komplement broja 10000001; +125 = 01111101; potpuni ili dvojni komplement -126= 10000010; najznaajniji bit - bit predznaka je 1 - broj je negativan; binarni prikaz dobiva se tako da se +126 predoi u potpunom ili dvojnom komplementu: 126 = 01111110-jedinini komplement: 10000001 dodaj 1 na najmanje znaajno mjesto 10000010; + 125 = 01111101; Izbor prikaza cijelih brojeva (cjelobrojnih tipova podataka) vana je arhitektonska znaajka. Izbor se obino temelji na sljedeim kriterijima: jednostavnost aritmetikih operacija, odnosno izvedbe aritmetikih sklopova, jednostavnost, odnosno jednoznanost prikaza nule, opseg vrijednosti i njegova simetrinost glede pozitivnih i negativnih vrijednosti.

214

8. POGLAVLJE: ARITMETIKO-LOGIKA JEDINICA

Prikaz brojeva u notaciji potpunim ili dvojnim komplementom najee je koriteni nain prikaza cijelih brojeva u raunalu u posljednja etiri desetljea. Navedimo neka svojstva brojeva predoenih u dvojnom komplementu: i) dvojni komplement je zaista "pravi" komplement jer vrijedi da je+X + (-X) = 0; ii) postoji samo jedna nula 000...00; iii) pozitivan broj ima najznaajniji bit 0, negativni broj ima najznaajniji bit 1; iv) opseg prikaza brojeva je od -2n~1 do +2n_1 -1; v) dvojni komplement dvojnog komplementa od X je X. Pogledajmo to se dogaa ako se povredi opseg prikaza brojeva u dvojnom komplementu. To se dogaa ako se izvede operacija koja generira rezultat ija vrijednost prekorauje opseg vrijednosti. Pretpostavimo da su brojevi predoeni 8-bitnim kodom. U tom je sluaju opseg vrijednosti od -128 do +127. to e se, na primjer, dogoditi ako zbrojimo X = 98 i Y = 62? 01100010 +00111110 10100000
f

8-bitni rezultat koji smo dobili je negativan (!): -96, oito da je rezultat pogrean jer zbrajanjem dvaju pozitivnih brojeva ne moemo dobiti negativan rezultat. Prekoraili smo definirani opseg vrijednosti koji se moe prikazati s 8 bitova, naime ispravan rezultat (160) je izvan opsega prikaza. Dogodio se preljev (engl. arithmetic overflow). Preljev se obino oznaava sV i definiranje na sljedei nain: V = (a bn-1 n-v s ,) +v (a nb7 n s J, v n-1 n-1 -1" gdje su a n i bn^ najznaajniji bitovi operanada, tj. bitovi predznaka i sn-1 najznaajniji bit rezultata, odnosno bit predznaka rezultata. Oznake + i oznaavaju logiku operaciju ILI, odnosno logiku operaciju I. Provjerimo je ii zaista V = 1 u prethodnom primjeru: an l = 0, bn^ = 0 i V = 1 - dogodio se preljev. = 1, iz ega slijedi

Preljev se moe definirati i pomou prijenosa jedinice u najznaajniji bit rezultata Cn^ i prijenosa jedinice iz najznaajnijeg bita rezultata Cn (slika 8.1): v = cn.,c, gdje oznaava logiku operaciju ISKLJUIVO ILI. U opisanim prikazima cijelih brojeva moemo pretpostaviti da je binarni zarez postavljen iza najmanje znaajne binarne znamenke, stoga emo u literaturi nai da se ovi prikazi brojeva nazivaju i prikazi brojeva sa vrstim (nepominim) binarnim zarezom (engl. fixed-point numbers).
q C ^ najmanje znaajan bit

U tt
najznaajniji bit

SI. 8.1 Prijenos Cn_1 i Cn

S. RIBARI - GRAA RAUNALA

215

vrsti se binarni zarez moe postaviti bilo gdje u odnosu na binarne znamenke, npr. ispred najznaajnije binarne znamenke ili izmeu dviju binarnih znamenki:
X

rvl

n-2 . . . X 0 '

1 X-2 -

-m

gdje je x.; i = -m, -m +1,..., 0,1, ...,n-1, iz skupa binarnih znamenki {0,1}. U tom sluaju vrijednost broja v(x) dobiva se kao:
n-1 -m

f=0

/=-1

Znamenke lijevo od binarnog zareza predstavljaju cijeli broj. Znamenke desno od binarnog zareza predstavljaju razlomaki dio. Primjer 8.3. 8-bitni broj predoenje prikazom sa vrstim binarnim zarezom 0111,0011 odredimo njegovu vrijednost: Vrijednost dijela broja lijevo od vrstog binarnog za reza :1 x 2 + 1 x 21 + 1 x 22 + 0 x 23 = 7. Vrijednost razlomakog dijela je: 0 x 2'1 + 0 x 2'2 + 1 x 2"3 + 1 x 2 4 = 0.125 + 0.0625 = 0.1875. Vrijednost broja je: 7.1875.

8.2.2. PRIKAZ BROJEVA S POMINIM ZAREZOM (FLOATING-POINT NUMBER)


Brojevi s pominim zarezom upotrebljavaju se u raunanju na podruju znanosti, gdje se vrijednosti brojeva kreu u vrlo irokom rasponu: od vrlo malih vrijednosti (npr. 212) do vrlo velikih vrijednosti (npr. 2+120). Vii programski jezici doputaju definiranje varijabli tipa real i one mogu imati vrijednosti izmeu dva slijedna cijela broja. U raunalu su ti brojevi predoeni u obliku brojeva s pominim (binarnim) zarezom. Broj se u tom nainu prikaza sastoji od dva dijela (slika 8.2): i) eksponenta; ii) mantise; e a eksponent k mantisa
) broj s pominim zarezom

SI. 8.2 Broj s pominim zarezom predoen u obliku a x r*

Moemo ga predoiti u obliku: a x re, gdje je a mantisa (naziva se jo i argument), r j e izabrana baza brojevnog sustava (engl. radix; base) i e je eksponent. Broj s pominim zarezom u raunalu se pohranjuje slijedom bitova koji definiraju dva polja - polje eksponenta e i polje mantise (argumenta) a. Vrijednost baze r eksplicitno se ne pohranjuje u raunalu. Sljedee znaajke oblikuju prikaz brojeva s pominim zarezom: i) ukupan broj bitova kojim se predoava broj s pominim zarezom; ii) nain predoavanja mantise (npr. potpuni komplement, predznak-apsolutna vrijednost, ...);

216

8. POGLAVLJE: ARITMETIKO-LOGIKA JEDINICA

ill) nain predoavanja eksponenta (npr. notacija vrijednost + prekoraenje (engl. excess notation) /naziva se jo suviakn, gdje je n iznos prekoraenja/, predznak- apsolutna vrijednost); iv) broj bitova dodijeljen mantisi, broj bitova dodijeljen eksponentu; v) razmjetaj mantise i eksponenta. Dogovorno je mantisa broja s pominim zarezom uvijek normalizirana (osim kada je vrijednost broja nula). Normalizirani zapis mantise takvog je oblika da se podrazumijeva poloaj binarnog zareza poslije prvog (ili vodeeg) bita, koji ima vrijednost 1, osim onda kada su istodobno eksponent i razlomaki dio jednaki 0. To znai da je normalizirana mantisa u opsegu: 1.000...0 do 1.111... 11 to znai daje njezina vrijednost -2 < v(x) ^-1, ili v(x) = 0 ili 1<s v(x) < 2. Slika 8.3 ilustrira opseg vrijednosti za normaliziranu mantisu ovisno o njezinom predznaku. 0.00... 00

SI. 8.3 Prikaz opsega vrijednosti normalizirane mantise

Primjer 8.4. Pretpostavimo da je rezultat neke operacije brojevima s pominim zarezom: 1111.0011... 1 x 2e, gdje je e neka vrijednost eksponenta. Rezultat se mora prikazati s normaliziranom mantisom: 1.1110011... 1 x 2e+3 (Iz digitalne elektronike i osnova informatike znamo da mnoenje binarnog broja s 23 = 8 odgovara posmaku broja ulijevo za tri binarna mjesta.) Postupkom normalizacije mantise postie se vea tonost prikaza broja. Na primjer, pretpostavimo da imamo nenormaliziranu mantisu koju moemo predoiti s osam bitova: 0.00010101 10111. U tom sluaju bitovi 0111 iza crte | ne mogu biti prikazani zbog raspoloive duljine mantise od 8 bita. No ako upotrijebimo normaliziranu mantisu, u njezinoj se vrijednosti pojavljuju i "odrezani" bitovi - broj je predoen tonije:
1.01010111 x 2 A

S. RIBARI - GRAA RAUNALA

217

Brojevi s pominim zarezom moraju predstavljati pozitivne i negativne vrijednosti brojeva. Naravno, i vrijednosti eksponenta mogu biti pozitivne i negativne - ovisno o vrijednosti broja koji prikazuju. Mantisa mora imati takav oblik koji doputa i prikaz predznaka - to moe biti notacija predznak-apsolutna vrijednost, jedinini komplement ili dvojni komplement. Mantisa za prikaz brojeva u skladu s IEEE standardom (ANSI/IEEE Std 754) predoava se u notaciji predznak-apsolutno vrijednost Eksponent se u IEEE standardu za jednostruki format (engl. single format) predoava u notaciji sa suvikom 127 (naziva se jo i ekces 127 ili vrijednost + prekoraenje). U jednostrukom proirenom formatu (engl. single extended format) i dvostrukom formatu IEEE (engl. double format) koristi se notacija sa suvikom 1023, dok se u formatu etverostruke tonosti (engl. quad precision format) koristi suviak 16383. Slika 8.4 prikazuje jednostruki format broja s pominim zarezom u skladu sa standardom IEEE. Na slici je sa S oznaen bit predznaka za mantisu, s E je oznaen 8-bitni eksponent i s F je oznaen razlomaki dio normalizirane mantise (23 bita). (Opaska: razlomaki dio se naziva u engleskom fractional part i zato nosi oznaku F.) Napomenimo da se vodei bit (najznaajniji bit normalizirane mantise) 1 ne pojavljuje eksplicitno u prikazu (slika 8.5). Razlomaki dio F zajedno sa "skrivenim" vodeim bitom oblikuje vrijednost mantise: 1 .F. Openito, IEEE format brojeva s pominim zarezom formalno je definiran ovako: X = (-1) s x2 EB x1.F, gdje je S predznak (Oza pozitivne brojeve; 1 negativne brojeve), E je eksponent predoen u notaciji sa suvikom B i F je razlomaki dio mantise. Broj koji ima vrijednost 0 (nula) predoava se u formatu IEEE tako da su polja E i F istodobno 0. U tom sluaju, budui da se radi o vrijednosti broja 0, mantisa nije normalizirana i podrazumijeva se da je vodei bit jedna 0. Ovisno o vrijednosti bita S govorimo o pozitivnoj nuli (S = 0) i negativnoj nuli (S = 1).

eksponent
-M"

razlomaki dio normalizirane mantise


23 bita

1 bit

8 bitova

SI. 8.4 Jednostruki format broja s pominim zarezom (IEEE standard) "skriveni" vodei bit

eksponent
1 bit 8 bitova

1.

razlomaki dio normalizirane mantise


23 bita

SI. 8.5 Jednostruki format broja s pominim zarezom sa "skrivenim" vodeim bitom normalizirane mantise

Slika 8.6 prikazuje dvostruki format broja s pominim zarezom (engl. double/long IEEE format) koji je duljine 64 bita.

218

8. POGLAVLJE: ARITMETIKO-LOGIKA JEDINICA

-a1 bit' 11 bitova

-M-

52 bita

SI. 8.6 Dvostruki format broja s pominim zarezom (IEEE standard)

Eksponent moe imati pozitivnu i negativnu vrijednost. On se u standardu IEEE oblikuje L notaciji sa suvikom pa E nikad nije negativan. Primjer 8.5. Prikaimo dekadski broj +14,25 u jednostrukom IEEE formatu broja s pominim zarezom. Zapiimo +14,25 u binarnom obliku: 1110,01...0 Pretvorimo binarni broj u normaliziran oblik:
1,11001...0 x 23,

Bit predznaka S je 0 (broj je pozitivan). Eksponent +3 zapiimo u notaciji sa suvikom 127 (u skladu s IEEE standardom): 3+127=130=10000010. Konani oblik broja (vodei bit normalizirane mantise se ne upisuje u format) je: S E F 0 1 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| 1| 8 I 23

Prikaimo dekadski broj - 0,00048828125 u jednostrukom IEEE formatu broja s pominim zarezom. Zapiimo 0,00048828125 u binarnom obliku: 0,00000000001 ...0 Pretvorimo binarni broj u normalizirani oblik:
1,000....00 x 2 1 1

Bit predznaka S je 1 (broj je negativan). Eksponent -11 zapiimo u notaciji sa suvikom 127: - 1 1 + 1 2 7 = 1 1 6 = 01110100 Konani oblik broja (vodei bit normalizirane mantise ne upisuje se u format) jest: S E F 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1

23

Vrijednost brojeva predoenih u IEEE formatu brojeva s pominim zarezom odreuje se ovako: X = (-1) s x2 EB x1.F, gdje je, ponovimo jo jednom, S predznak (0 za pozitivne brojeve; 1 negativne brojeve), E je eksponent predoen u notaciji sa suvikom B i F je razlomaki dio mantise.

S. RIBARI - GRAA RAUNALA

219

Na primjer, za prvi sluaj predoenog broja iz Primjera 8.5. vrijedi: X = (-1) x 2130"127 x 1.11001 ...0 = 1.110010 0...0 x 2 3 , X = 1110,010 X = 14 + 0.25 = 14,25 (dekadno) Tablica 8.2. prikazuje osnovne znaajke jednostrukog, dvostrukog i etverostrukog IEEE formata brojeva s pominim zarezom. Znaajke Ukupna duljina S - predznak E - eksponent Maksimalna vrijednost E Vodei bit F - razlomaki dio Notacija sa suvikom (za eksponent) Opseg prikaza brojeva Jednostruki format 32 bita 1 bit 8 bita 255 1 23 bita 127 IO 38 - 1038 Dvostruki format 64 bita 1 bit 11 bita 2047 1 52 bita 1023 10308 - 10308 etverostruki format 128 bita 1 bit 15 bita 32767 1 111 bita 16383 Nije specificiran

iablica 8.2. Osnovni IEEE formati brojeva s pominim zarezom Standard IEEE za svaki od formata brojeva s pominim zarezom odreuje i vrijednost broja. Na primjer, vrijednosti brojeva u dvostrukom formatu jesu: ako je E = 2047 i F * 0, tada je X = NaN (Nota Number) - zapis nije broj; ako je E = 2047 i F = 0, tada je X = (-1)s x oo (beskonano); ako je 0 < E < 2047, tada je X = (-1 )s x 2E 1023 x 1 .F; ako je E = 0 i F * 0, tada je X = (-1 )s x 21023 x 0.F; ako je E = 0 i F = 0, tada je X = (-1)s x 0 (nula). Vidimo da i ovdje ovisno o vrijednosti bita S imamo pozitivnu i negativnu nulu.

8.2.3. BINARNO KODIRANI DEKADSKI BROJEVI


Kodovi ASCII i EBCDIC doputaju i prikaz dekadskih znamenaka. Za prikaz dekadskih znamenaka (0 - 9) upotrebljava se, meutim, i 4-bitni kod BCD (Binary Coded Decimal). U tom je prikazu svaka dekadska znamenka predstavljena 4-bitnim binarnim brojem (tablica 8.3.), i to tako daje skup vrijednosti odreen binarnim kombinacijama od 0000 do 1001. Vrijednosti vee od 1001 nisu doputene jer je baza sustava 10. Vieznamenkasti dekadski broj predstavlja se binarno kodiranim znamenkama. Na primjer, broj 6790 se u kodu BCD predstavlja kao: 0110 0111 1001 0000 6 7 9 0 Uvrijeeni nain predstavljanja dekadskih brojeva u raunalu jest standardni format koji se temelji na upakiravanju dekadskih brojeva pa je u jednoj rijei upakirano n znamenaka dekadskog broja; nje duljina rijei podijeljena sa 4.

220

8. POGLAVLJE: ARITMETIKO-LOGIKA JEDINICA

Dekadska znamenka 0 1 2 3 4 5 6 7 8 9
Tablica 8.3. Kod BCD

Kod BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001

8.3. BINARNA ARITMETIKA


U ovom odjeljku podsjetiti emo se, ukratko, na ono to smo nauili iz osnova informatike -na osnovne aritmetike operacije binarnim brojevima i na sklopove koji te operacije izvode. J

8.3.1. ZBRAJANJE DVAJU BINARNIH BROJEVA


Osnovna i najjednostavnija aritmetika operacija u raunalu jest zbrajanje dvaju binarnih brojeva. Ona poiva na osnovnom pravilu zbrajanja dviju binarnih znamenaka: 0+0= 0
0 + 1=1 1 +0 = 1

1 + 1 = 0 s bitom prijenosa 1 Bit prijenosa (engl. carry) prenosi se na znaajnije mjesto u binarnom broju i sudjeluje u operaciji zbrajanja znamenaka na znaajnijem mjestu. Sklop za zbrajanje dvaju binarnih znamenaka jest kombinacijski sklop i naziva se poluzbrajalo HA (engl. half adder). Na temelju pravila zbrajanja moemo napisati tablicu istinitosti (ili tablicu kombinacija) te na temelju nje realizirati sklop. Tablica 8.4. prikazuje tablicu istinitosti, a slika 8.7 sklop poluzbrajalo. Na temelju tablice istinitosti moemo napisati logike funkcije za poluzbrajalo: S =x y + x y, C = x y.

S. RIBARI - GRAA RAUNALA

221

Ulazx 0 0 1 1

Ulazy 0 1 0 1

Izlaz S (suma) 1 [ Bit prijenosa C 0 1 1 0 0 0 0 1

Tablica 8.4. Tablica istinitosti za poluzbrajalo

Izravnom uporabom potonjih logikih funkcija dobivamo shemu sklopa (slika 8.7 b)). Logiki izraz za S predstavlja operaciju sume po modulu 2 i moe se implementirati funkcijom ISKLJUIVO ILI: (x y) (slika 8.7 c).
X

w
poluzbrajalo HA

w S (suma)

w
a)

w C (bit prijenosa)

~7

xy

y
S=xy+xy

xy

J
b)

C=xy

S-xy

C=xy HA,

SI. 8.7 Poluzbrajalo; a) Poluzbrajalo kao "crna kutija"; b) Sklop; c) Sklop s izvedbom pomou sklopa ISKLJUIVO ILI

222

8. POGLAVLJE: ARITMETIKO-LOGIKA JEDINICA

Poluzbrajalo je, naalost, od male koristi kada se trebaju zbrojiti dva n-bitna broja u jednom koraku i kada se u obzir mora uzeti i bit prijenosa s manje znaajnog mjesta Cjn. Zbog bita prijenosa, koji zapravo predstavlja treu binarnu znamenku koja sudjeluje u operaciji zbrajanja na nekoj bitovnoj poziciji dvaju n-bitnih brojeva, trebamo koristiti sklop koji zbraja tri binarne znamenke: dvije znamenke na bitovnoj poziciji ijednu binarnu znamenku koja predstavlja bit prijenosa s manje znaajne bitovne pozicije Cjn. Takav se sklop, podsjetimo se, naziva potpuno zbrajalo FA (engl. full adder). Tablica 8.5. prikazuje tablicu istinitosti za potpuno zbrajalo, a slika 8.8 sklop. Ulazx 0 0 0 0 1 1 1 1 Ulazy 0 0 1 1 0 0 1 1 Ulaz C. in 0 1 0 1 0 1 0 1 Izlaz S (suma) 0 1 1 0 1 0 0 1 Izlaz Cout 0 0 0 1 0 1 1 1

Tablica 8.5. Tablica istinitosti za potpuno zbrajalo

Sklop je dobiven na temelju logikih funkcija koje se dobivaju iz tablice istinitosti: S = x*y-C. + x -7y * Cin + x *y - C J ' in + x-y*C. in in Cout = x*y*C. + x y C . + x y C . + x y C * tn * in * in ' i. n Prisjetimo se digitalne elektronike - uporabom K-tablice moe se izraz za C ^ zapisati u minimiziranom obliku: Cout = x y' + x-C in + 'y - Ctn Iz digitalne elektronike znamo da je: S = Cin (x y)
C

ou,=Cin-(xy)

-y

S. RIBARI - GRAA RAUNALA

223

y < = n i
w

potpuno
zbrajalo

w S (suma)

FA

w >

C wt (bit prijenosa)

a)

out

y '

y '

Cm

C.in b)

SI. 8.8. Potpuno zbrajalo; a) Potpuno zbrajalo FA kao "crna kutija"; b) Sklop

224

8. POGLAVLJE: ARITMETIKO-LOGIKA JEDINICA

Potpuno zbrajalo moe se izvesti s dva poluzbrajala (slika 8.9).

S=Cin(xy)

"A

xy

"outl

CJxy)

xy HA, HA,
kCout=Cln(xy)+xy

xy SI. 8.9 Potpuno zbrajalo izvedeno s dva poluzbrajala

8.3.2. PARALELNO ZBRAJALO


Paralelno zbrajalo zbraja n-bitnu rije A i n-bitnu rije B u jednom koraku. Paralelno se zbrajalo sastoji od n potpunih zbrajala. Kaemo da se paralelno zbrajalo sastoji od n stupnjeva. Bit prijenosa Cout svakog potpunog zbrajala predstavlja Cjn u stupanj koji se nalazi lijevo od njega. Slika 8.10 prikazuje n-bitno paralelno zbrajalo sastavljeno od n popunih zbrajala. an-1 , bn-1 , a2 b2 ^ b,
a

b0 C (C^

SI. 8.10 Paralelno zbrajalo

S. RIBARI - GRAA RAUNALA

225

Ovdje smo upotrijebili izraz "paralelno zbrajalo" jer se podrazumijeva da e se n zbrajanja izvesti gotovo istodobno, za razliku od serijskog zbrajala u kojem se obavlja cjelokupno zbrajanje samo u jednom stupnju bit po bit (slika 8.11). Paralelno zbrajalo je za faktor n bre u odnosu na serijsko zbrajalo. No raunanje i dobivanje rezultata paralelnim zbrajalom u praktinoj je izvedbi usporeno zbog efekta propagacije bita prijenosa kroz stupnjeve paralelnog zbrajala. O tome emo neto kasnije kad emo opisati zbrajalo s predvianjem bita prijenosa (engl. carry-lookahead).

8.3.3. SERIJSKO ZBRAJALO


Slika 8.11 prikazuje izvedbu serijskog zbrajala. U posmanim registrima A i B pohranjeni su n-bitni operandi iji se bitovi posmakom udesno prosljeuju jednom stupnju potpunog zbrajala. Rezultat zbrajanja svake bitovne pozicije pohranjuje se (i posmie) u posmanom registru A, a D bistabil pamti bit prijenosa iz prethodne operacije zbrajanja bitova.

SI. 8.11 Serijsko zbrajalo

226

8. POGLAVLJE: ARITMETIKO-LOGIKA JEDINICA

8.3.4. ODUZIMANJE DVAJU BINARNIH BROJEVA


Osnovno pravilo oduzimanja dvaju binarnih znamenaka glasi: 0-0 = 0
1 -0 = 1

1-1=0 0 - 1 = 1 uz posudbu 1 s znaajnije bitovne pozicije Vidimo da prve tri operacije daju kao rezultat jedan bit (0 ili 1). Kod posljednjeg se sluaja, kada je umanjitelj (suptrahend) vei od umanjenika (minuenda), oduzimanje se moe izvesti samo ako posudimo jedinicu (uzmemo zajam) sa znaajnije bitovne pozicije. Naravnog ta jedinica posuena sa znaajnije bitovne pozicije vrijedi 2 puta vie, tj. 2. Oduzimanjem 1, u tom sluaju, dobivamo rezultat 1. Oznaimo s D razliku, odnosno diferenciju (rezultat oduzimanja), a s B posudbu (B od engl. borrow). Na temelju osnovnog pravila za oduzimanje moemo napisati tablicu istinitosti (tablica 8.6.). / Ulazx 0 0 1 1 Ulazy 0 1 0 1 Izlaz D (razlika) 0 1 1 0 Bit posudbe B 0 1 0 0

Tablica 8.6. Tablica istinitosti za poluoduzimalo

Na temelju tablice istinitosti dobivamo sljedee logike funkcije: ^ D = x-y + x-y B = x y. Ako na trenutak izraze za D i B usporedimo sa S i C (za poluzbrajalo), uoavamo da se jedino razlikuju B i C jer je C = x y. Sklop koji podrava prethodne dvije logike funkcije za operaciju oduzimanja naziva se poluoduzimalo HS (engl. half-subtractor). Slika 8.12 prikazuje izvedbu poluoduzimala HS. Slino kao u sluaju potpunog zbrajala, uporabom dvaju poluoduzimala moe se dobiti potpuno oduzimalo FS (engl. full-subtractor) (slika 8.13).

S. RIBARI - GRAA RAUNALA

227

D (razlika)

B (bit posudbe)

a)

D=xy+xy

Bxy

y b)

SI. 8.12 Poluoduzimalo; a) Poluoduzimalo HS kao "crna kutija"; b) Sklop

SI. 8.13 Potpuno oduzimalo sastavljeno od dva poluoduzimala

228

8. POGLAVLJE: ARITMETIKO-LOGIKA JEDINICA

8.3.5. ODUZIMANJE POMOU KOMPLEMENTA BINARNOG BROJA


Oduzimanje se moe izvesti operacijom zbrajanja dvojnog ili potpunog komplementa umanjitelja (suptrahenda). Dvojni komplement operanda B dobiva se tako da se njegovom jedininom komplementu pribroji Cjn = 1 (slika 8.14). Shematski to predouje slika 8.14. Slika 8.15 prikazuje potrebnu preinaku paralelnog zbrajala da bi se dobilo i paralelno oduzimalo. Upravljakim signalom C = 1 sklopovi ISKLJUIVO ILI generiraju jedinini komplement operanda B (umanjitelj), zbrajanjem s A uz Cjn = 1 u prvom stupnju; Cjn = C dobiva se rezultat A - B. Kad je upravljaki ulaz C = 0, sklop djeluje kao paralelno zbrajalo.

jedinini komplement

C =1 paralelno zbrajalo

bit posudbe A-B SI. 8.14 Shematski prikaz oduzimanja operacijom zbrajanja potpunog komplementa
3

n-1 bn-!

a2 b2

ai b "i

SI. 8.15 Paralelno zbrajalo i oduzimalo

S. RIBARI - GRAA RAUNALA

229

8.3.6. PARALELNO ZBRAJALO S PREDVIANJEM BITA PRIJENOSA (ENGL. CARRYLOOKAHEAD)


Pri zbrajanju dvaju binarnih brojeva paralelnim zbrajalom svi bitovi oba operanda raspoloivi su istodobno, meutim, bitovi prijenosa u pojedine stupnjeve nisu raspoloivi u istom trenutku. Rezultat, tj. suma ovisi o bitovima operanada, ali i o bitovima prijenosa C. na ulazu u svaki stupanj paralelnog zbrajala. Bit prijenosa C koji je ulaz u /-ti stupanj ovisi o rezultatu koji generira potpuno zbrajalo u / - 1 stupnju i bit e raspoloiv tek kada taj stupanj paralelnog zbrajala obavi operaciju. Rezultat /-1 stupnja ovisi o rezultatu 1-2 stupnja itd.To znai da e izlaz iz paralelnog zbrajala, koji je kombinacijski sklop, postati stabilan i valjan tek kada najznaajniji stupanj zbrajala (n -1 stupanj) na ulazu bude imao stabilan bit prijenosa i s njim obavi operaciju zbrajanja najznaajnijih bitova operanada. Iz toga slijedi daje vrijeme kada e izlazi iz paralelnog zbrajala postati stabilni jednako vremenu propagacije bita prijenosa kroz sve stupnjeve paralelnog zbrajala i vremenu zbrajanja u jednom potpunom zbrajalu. Ukupno vrijeme propagacije bita prijenosa jednako je umnoku vremenu kanjenja jednog logikog sklopa i broju logikih sklopova kroz koje bit prijenosa prolazi. U jednom stupnju paralelnog zbrajala signal koji odgovara bitu prijenosa prolazi kroz logiki sklop I i ILI (slika 8.9). Ako se paralelno zbrajalo sastoji od n stupnjeva, onda je ukupno vrijeme propagacije signala koji odgovara bitu prijenosa jednako n x (2 x td), gdje je t d vrijeme kanjenja jednog logikog sklopa. Ukupno vrijeme koje je potrebno da bi n-bitno paralelno zbrajalo generiralo valjani rezultat je:
t

adder

+ n X

2 x

gdje je t f vrijeme u kojem jedan stupanj paralelnog zbrajala, tj. potpuno zbrajalo (FA) obavi operaciju zbrajanja. Na temelju ove kratke analize vidimo da je kanjenje u propagaciji bita prijenosa vaan faktor koji ograniava brzinu paralelnog zbrajala. Za procesore koji se slue 32-, 64- ili 128-bitnim operandima, brzina paralelnog zbrajala koje ima 32, 64 ili 128 stupnjeva moe predstavljati bitni ograniavajui faktor performanse procesora (ne zaboravimo da se paralelno zbrajalo kao sastavni dio aritmetiko-logike jedinice nalazi na putu podataka). Postoje sljedee mogunosti ubrzanja rada paralelnog zbrajala: upotreba brih sklopova (vrijeme kanjenja t d to je mogue krae), uporaba sklopova za predvianje bita prijenosa ili oboje. Brzina sklopova tehnoloki je uvjetovana i postavlja granice koje se ne mogu prekoraiti. Paralelno zbrajalo s dodatnim sklopovima za predvianje bita prijenosa svrstavamo u razred brzih zbrajala (engl. fast adder). Uporabom sklopova za predvianje bita prijenosa skrauje se vrijeme propagacije signala koji odgovara bitu prijenosa i ono postaje neovisno o broju stupnjeva n paralelnog zbrajala. Paralelno zbrajalo s predvianjem bita prijenosa kojim smanjuje vrijeme propagacije signala bita prijenosa ima sloeniju sklopovsku strukturu od strukture paralelnog zbrajala. Promotrimo sklop potpunog zbrajala (/-ti stupanj paralelnog zbrajala) na slici 8.16 i definirajmo dvije nove binarne varijable, odnosno dva signala: P, = x,y,
G = x

i-Vi'

Signal P. se naziva signal propagacije bita prijenosa (engl. carry propagate) zato to opisuje logike uvjete propagacije bita prijenosa s ulaza u /-ti stupanj na njegov izlaz, a signal G. naziva se signal generiranja bita prijenosa (engl. carry generate) jer definira uvjete generiranja bita prijenosa u /-tom stupnju neovisno o bitu prijenosa na njegovom ulazu.

230

8. POGLAVLJE: ARITMETIKO-LOGIKA JEDINICA

x. P.

y.

"i+1

SI. 8.16 /-ti stupanj paralelnog zbrajala s oznaenim varijablama P i G.

Izlazni je signal bita prijenosa koji se prenosi stupnju / + 1 paralelnog zbrajala (slika 8.16): C1=Gi Suma je: S. = P . C Na slian se nain moe izraziti Cj+2za stupanj i+2: 'Ci+2 =
G i+1 + P +

(P,.Ci).

(8.1) (8.2) (8.3)

i+,"

J<

Ci+ (P. (G. (P. ako za C.+1 u prethodnom izrazu uvrstimo 2 = Gi+l + izraz i+l (8.1), i +vdobivamo: i C))) Odnosno za stupanj i + 3: i.3 = G i+2 + * Ci+2>Ci+3 = Gi+2 + (P M -(G i+1 + (Pi+,-(Gi + (P,.Ci))))) = G. , + (R , G. .) + (R , P. , G,) + P. , P. C.)
C

(8.4)

Nastavljanjem prethodno navedenog postupka moe se izraziti i C ^ - bit prijenosa iz najznaajnijeg stupnja paralelnog zbrajala n -1 (C^ = Cn) kao suma produkata logikih funkcija P i G. Na primjer, za 4-bitno paralelno zbrajalo s predvianjem bita prijenosa imamo: C, = G0 + (P0-C0) C2 = G, + (P, C,) = G, + (P, (G0 + (P0 Q ) ) = G, + (P, G) + (P, P0 Q CJ = GJ + (P2.G1) + (P2.P1-Gfl) + (P 2 -P | .P 0 -C 0 ) C4 = Cout = G3 + (P3.G2) + (P 3 .P 2 -G l ) + (P 3 .P 2 .P l -G 0 ) + (P 3 .P 2 .P 1 .P 0 .C 0 ) (8.5); (8.6) I (8.7) (8.8) |

Slika 8.17 prikazuje sklop za predvianje bita prijenosa za 4-bitno paralelno zbrajala Izlazi iz sklopa jesu bitovi prijenosa C1 do C 4 = C ^ . to smo dobili? Sklop za predvianje bitova prijenosa je dvorazinski logiki sklop (jedna razina logiki sklop I, druga razina logiki sklop ILI). Kanjenje u generiranju svih bitova prijenosa potrebnih za operaciju zbrajanja paralelnog zbrajala neovisno je o broju stupnjeva paralelnog zbrajala i iznosi 2 x td. Vrijeme potrebno za dobivanje valjanog rezultata zbrajanja je 2 x t d + t f gdje je t d kanjenje logikog sklopa, a t f vrijeme potrebno za operaciju zbrajanja u jednom stupnju paralelnog zbrajala. Vidimo da brzina generiranja rezultata paralelnog zbrajala sada ne ovisi o broju stupnjeva n. Jednako tako, iz logikih izraza za bitove prijenosa (8.5) - (8.8) vidimo da su

S. RIBARI - GRAA RAUNALA

231

na samom poetku izvoenja operacije raspoloive sve varijable, naime P, i G.; i = 0, 1, 2,... generiraju se samo na temelju bitova operanada, a poetna vrijednost bita prijenosa C0 unaprijed je odreena.
P3 P2 P,
p

G, G0 C0

P3 P2 P1 P C 0 0

P3 P2 P10 G

^4 ^out PPG 3 2 1

p3G2

P2 P1 P 0

c 0

PPG 2 10

^ FZ

PP

P,G0

o C 0

P3 P2 P, P0 G3 G2 G, G0 C0 SI. 8.17 Sklop za predvianje bita prijenosa za etverobitno paralelno zbrajalo

232

8. POGLAVLJE: ARITMETIKO-LOGIKA JEDINICA

Slika 8.18 prikazuje izvedbu etverobitnog paralelnog zbrajala sa sklopom za predvianje bita prijenosa.

SI. 8.18 Izvedba etverobitnog paralelnog zbrajala sa sklopom za predvianje bita prijenosa

8.3.7 MNOENJE
U usporedbi sa zbrajanjem i oduzimanjem, mnoenje dvaju binarnih brojeva sloenija je operacija koja zahtijeva kompleksnije sklopove. Razliiti se algoritmi mnoenja rabe u raunalima. U ovom emo potpoglavlju razmotriti prvo jednostavniji sluaj mnoenja dvaju nepredznaenih (engl. unsigned) brojeva. Pod nepreznaenim binarnim brojem podrazumijevamo cjelobrojne pozitivne binarne brojeve. Nakon toga, objasnit emo postupak mnoenja brojeva u notaciji potpunog ili dvojnog komplementa koji je najrasprostranjeniji postupak mnoenja. 8.3.7.1. M N O E N J E N E P R E D Z N A E N I H B R O J E V A Ve smo u poglavlju 2. spomenuli da se mnoenje moe izvesti uzastopnim operacijama zbrajanja i posmaka. Razmotrimo to podrobnije. Postupak mnoenja dvaju n-bitnih nepredznaenih binarnih brojeva runo na papiru, postupkom "olovka i papir" (engl. pend andpaper) predstavlja osnovnu podlogu za izvedbu mnoenja u raunalu. Postupak, analogno runom postupku mnoenja dekadskih brojeva, moemo opisati na sljedei nain: Ispituju se bitovi mnoitelja (multiplikatora) zapoevi od najmanje znaajnog bita. Ako je trenutno promatrani bit mnoitelja jednak 1, onda se mnoenik(multiplikand) prepisuje predstavlja parcijalni produkt (jedinica mnoitelja mnoi se mnoenikom i daje mnoenic npr. 1101x1=1101). Ako je promatrani bit jednak 0, onda se zapisuje n nula (parcijalni produkt je 0000, za sluaj 4-bitnog broja; 1101 x 0 = 0000). Nakon toga se ispituje sljeded bit mnoitelja, meutim, sada prepisujemo mnoenik (ili nule) tj. parcijalni produkt, zapoevi na poziciji koje je jedno mjesto ulijevo u odnosu na prethodni zapis. Postupak ponavljamo sve dok nisu svi bitovi mnoitelja skenirani. Kada su svi parcijalni produkti oblikovani oni se zbrajaju i daju rezultat mnoenja.

S. RIBARI - GRAA RAUNALA

233

Primjer 8.6. elimo izraunati umnoak dvaju nepredznaenih 4-bitnih brojeva: 1100 x 1101, pri emu je 1100 mnoenik (multiplikand), a 1101 mnoitelj (multiplikator). 1100 x1101 1100 0000 1100 1100 10011100
X

12
(10)

1 3(10)

1. korak: najmanje znaajan bit mnoitelja je 1, prepisuje se mnoenik 2. korak: drugi bit mnoitelja je 0, upisuje se 0000 s posrnakom ulijevo 3. korak: trei bit mnoitelja je 1, prepisuje se mnoenik s posmakom ulijevo 4. korak: etvrti bit mnoitelja je 1, prepisuje se mnoenik s posmakom ulijevo 5. korak: zbrajamo parcijalne produkte (rezultat: 156(10))

Opisani postupak mnoenja nije podesan za izravnu realizaciju u raunalu jer zahtijeva pohranjivanje parcijalnih produkata i nakon toga njihovo zbrajanje. Uz male preinake opisani postupak postaje podesan za implementaciju u raunalu. Preinaeni se postupak moe opisati sljedeim algoritmom: 1. korak: postavi brojilo na vrijednost n (broj binarnih znamenki nepredznaenih brojeva); 2. korak: sadraj registara parcijalnih produkta duljine 2n bita postavi inicijalno u 0; 3. korak: ispitaj krajnji desni bit mnoitelja (inicijalno je to najmanje znaajan bit). Ako je on jednak 1, onda pribroji mnoenik najznaajnijim n bitovima registra parcijalnih produkata; 4. korak: posmakni sadraj registara parcijalnih produkata udesno za jedno mjesto; 5. korak: posmakni mnoitelj zajedno mjesto udesno; 6. korak: umanji brojilo za 1 i ako nije jednako 0, izvri ponovo korake 3.-6. Ako je brojilo jednako 0, onda je u registru parcijalnih produkata rezultat mnoenja. Primjer 8.7. Ilustrirajmo algoritam na primjeru: 1100 x 1101. 1. korak: brojilo ima vrijednost 4; 2. korak: registar parcijalnih produkata duljine 2n - 8 bita postavljen je u 0: 0 0 0 0 0 0 0 0

3. korak: krajnji desni bit mnoitelja 1101 je 1; pribrajamo mnoenik sadraju registra parcijalnih produkata na n znaajnijih mjesta: 1 1 0 0 0 0 0 0

4. korak: posmiemo sadraj registara parcijalnih produkata zajedno mjesto udesno: 0 i 1 0 0 0 0 0

5. korak: posmiemo mnoitelj za jedno mjesto udesno i dobivamo: 0110 6. korak: sadraj brojila umanjujemo za 1: n = 3. Budui da je n razliito od 0 vraamo se na korak 3.

234

8. POGLAVLJE: ARITMETIKO-LOGIKA JEDINICA

3. korak: krajnji desni bit (sada ve posmaknutog) mnoitelja 0110 je 0; 4. korak: posmiemo sadraj registara parcijalnih produkata zajedno mjesto udesno: 0 0 1 1 0 0 0 0

5. korak: posmiemo mnoitelj zajedno mjesto udesno i dobivamo: 0011 6. korak: sadraj brojila umanjujemo za 1: n - 2. Budui da je n razliito od 0 vraamo se na korak 3; 3. korak: krajnje desni bit mnoitelja 0011 je 1; pribrajamo mnoenik sadraju registra parcijalnih produkata na n znaajnijih mjesta: 0 0 1 1 0 0 0 0 0

1 1 0 Dobivamo: 1 1 1

4. korak: posmiemo sadraj registara parcijalnih produkata zajedno mjesto udesno: 0 1 1 1 1 0 0 0

5. korak: posmiemo mnoitelj zajedno mjesto udesno i dobivamo: 0001 6. korak: sadraj brojila umanjujemo za 1: n - 1. Budui da je n razliito od 0 vraamo se na korak 3; 3. korak: krajnji desni bit mnoitelja je 1; pribrajamo mnoenik sadraju registra parcijalnih produkata na n znaajnijih mjesta: 0 1 1 1 1 0 1 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 1 0 0 0

Dobivamo: 1 0 1 1 1 0 0

4. korak: posmiemo sadraj registara parcijalnih produkata za jedno mjesto udesno: 1 0 0 1 1 1 0 0

5. korak: posmiemo mnoitelj zajedno mjesto udesno i dobivamo: 0000 6. korak: sadraj brojila umanjujemo za 1: n = 0. U registru parcijalnih produkata nalazi se rezultat: 10011100= 156{10)

S. RIBARI - GRAA RAUNALA

235

8.3.7.2. M N O E N J E BROJEVA P R E D O E N I H U NOTACIJI DVOJNOG KOMPLEMENTA


Do sada opisani postupci mnoenja vrijede samo za nepredznaene brojeve. Mnoenje brojeva s predznakom (engl. signednumber) moe se izvesti tako da se oba operanda pretvore u pozitivne brojeve, pomnoe i onda, ako je to potrebno, preoblikuju tako da produkt ima odgovarajui predznak. Kad su brojevi predoeni u notaciji dvojnog komplementa, mnoenje zahtijeva dodatni korekcijski korak, i to ako: je mnoitelj Y negativan (korekcijski faktor je dvojni komplement mnoenika X pomnoen s 2n), je mnoenik X negativan (korekcijski faktor je dvojni komplement mnoitelja Y pomnoen s 2n), su i mnoenik X i mnoitelj Y negativni (korekcijski faktori su tada 2n X i 2nY). Primjer 8.8. Dva su 5-bitna binarna broja 01111 i 10011 predoena u notaciji dvojnog komplementa: X = 01111 = + 15{10) i Y = 10011 = -13(10) Izraunajmo produkt X x Y: 01111 X 10011 Y (izraen u dvojnom komplementu) 01111 Prvi parcijalni produkt 01111 Drugi parcijalni produkt 00000 Trei parcijalni produkt 00000 etvrti parcijalni produkt 01111 Peti parcijalni produkt 0100011101 Netoan rezultat Dobili smo netoan rezultat koji zahtijeva korekciju. Iznos korekcije za na sluaj (negativan je mnoitelj) je dvojni komplement mnoenika X pomnoen s 2n. Dvojni komplement mnoenika je 10001. Podsjetimo se mnoenje s 2ft znai posmak broja za n = 5 mjesta ulijevo. Korekcijski faktor je: 1000100000. Korigirajmo netoan rezultat: 0100011101 Netoan rezultat 1000100000 Korekcijski faktor 1100111101 Rezultat Rezultat je 1 1 0 0 1 1 1 1 0 1 = -195 (tono!)

8.3.7.3. B O O T H O V A L G O R I T A M
A. D. Booth je 1951. predloio algoritam za mnoenje binarnih brojeva predoenih u notaciji dvojnog komplementa. Algoritam vrijedi za sluaj dva pozitivna broja, za sluaj kada je jedan od njih negativan i kada su oba negativna. Osim toga, algoritam ubrzava postupak mnoenja (u odnosu na "klasian" pristup), ne zahtijeva korekciju i podesan je za sklopov-

236

8. POGLAVLJE: ARITMETIKO-LOGIKA JEDINICA

sku implementaciju. Slika 8.19 prikazuje dijagram toka za Boothov algoritam. Na temelju slike 8.19 opiimo algoritam. Inicijaliziraju se registri: n-bitni registar A postavlja se u 0, u n-bitni registar M smjeta se mnoenik (multiplikand), a u n-bitni registar Q mnoitelj (multiplikator). Registar Q modificiran je tako da je njegovom najmanje znaajnom bitu Q0 (krajnje desnom) pridodan jo jedan bistabil koji odgovara poziciji Q r Inicijalno Q^ postavljenje u 0. Brojilo C inicijalno je postavljeno na n (broj bitova operanda). Rezultat mnoenja (duljine 2n) pojavit e se u registarskoj kaskadi A-Q.Tijekom izvoenja ispituju se bitovi i Q . Ako su vrijednosti tih dvaju bitova jednake 0-0 ili 1-1, tada se bitovi kaskade sastavljene od A-CJ-Oj posmiu zajedno mjesto udesno. Treba pripaziti, posmakje aritmetiki, to znai da se sadraj posmie tako da se bit predznaka (A^) posmie na poziciju A ^ ali ostaje sauvan i na poziciji A (vidi 3.poglavlje). Slika 8.20 ilustrira aritmetiki posmak udesno u kaskadi A-Q-Q
f poetak )

Sf. 8.19 Dijagram toka za Boothov algoritam

S. RIBARI - GRAA RAUNALA

237

A , 1 1 0

registar A 0 0 '1 0

registar Q
Q

n 1

ci

0 a)

Q.i 0

An-1 , 1 1 1

registar A 0 0 () 1

A0 0

registar Q
Q

n-1

oi

0
b)

Q, 1

SI. 8.20 Aritmetiki posmak udesno u kaskadi A-Q-Q, a) prije aritmetikog posmaka udesno, b) poslije aritmetikog posmaka udesno

Ako se ispitane vrijednosti bitova Q0 i Q } meusobno razlikuju, onda se mnoenik pribraja (kombinacija: Q0 Q = 01) sadraju registra A ili oduzima (kombinacija: Q0 Q^ = 10) od A. Nakon toga se sadraj kaskade A-Q-Q^ posmie aritmetikim posmakom udesno za jedno mjesto. Nakon aritmetikog posmaka (za bilo koju od kombinacija 0-0,1-1,0-1 ili 1-0) umanjuje se za 1 sadraj brojila C. Ako C nije jednako 0, nastavlja se postupak ispitivanja bitova Q0 i Q r Kad brojilo C postane 0, postupak zavrava i rezultat mnoenja nalazi se u registarskoj kaskadi A-Q. Zahvaljujui ispitivanju dvaju susjednih bitova i slijedu nula ili slijedu jedinica u mnoitelju, ubrzava se mnoenje (izvodi se samo operacija aritmetikog posmaka meurezultata). Primjer 8.9. Ilustrirajmo Boothov algoritam za mnoenje dvaju 5-bitnih binarnih brojeva iz Primjera 8.8:01111 i 10011 predoena u notaciji dvojnog komplementa: X = 01111 = + 15(10) i Y = 10011 =-13 {10) Izvoenje Boothova algoritma prikazat emo tablicom 8.7. A 00000 10001 11000 11100 01011 00101 00010 G 10011 10011 11001 01100 01100 10110 11011 0 0 1 1 1 0 0 2 1 c 5 5 4 3 Komentar Inicijalizacija Q 0 Q, = 10 A- A - M ; M = 01111 (+15) Aritmetiki posmak udesno Q0Q-, = 1 1 Aritmetiki posmak udesno A- A + M Aritmetiki posmak udesno 0,0., = 00 Aritmetiki posmak udesno

238

8. POGLAVLJE: ARITMETIKO-LOGIKA JEDINICA

A 10011 11001

Q 11011 11101

Q, 0 1

Komentar
Q

A<-A-M 0

oQ-i

Aritmetiki posmak udesno Rezultat (-195)

1100111101
Tablica 8.7. Izvoenje Boothovog algoritma (X = 01111; Y = 10011)

Slika 8.21 prikazuje blok-shemu mnoila temeljenog na Boothovom algoritamu. Kruiima su oznaene upravljake toke u koje se dovode upravljaki signali C. Na primjer, C0 C1 = 1 pobudit e aritmetiki posmak udesno kaskade A-Q-Q }t dok e C6 C7 = 1 proslijediti rezultat mnoenja.

SI. 8.21 Blok-shema mnoila temeljenog na Boothovom algoritmu

S. RIBARI - GRAA RAUNALA

239

Za ubrzanje mnoenja u raunalima koriste se posebne izvedbe mnoila kao to su: mnoilo sastavljeno od polja potpunih zbrajala; mnoila temeljena na tablici preslikavanja (engl. look-up table); mnoila s brzim posmanim sklopovima; mnoila sastavljena od zbrajala s ouvanjem bita prijenosa (engl. carry save adder) koja su povezana u kaskadu.

p7

p 6

p5

p 4

p 3

p 2

SI. 8.22 Mnoilo sastavljeno od polja potpunih zbrajala

Objasnimo kako se dobiva struktura brzog mnoila koje je sastavljeno od dvodimenzionalnog polja potpunih zbrajala. Zanimljivo je da je jednostavno dobivamo na temelju osnovnog pravila za mnoenje dvaju n-bitnih nepredznaenih binarnih brojeva runim putem tehnikom "olovka i papir" (engl. pencil andpaper). Neka su mnoenikX = x3x2 x1 x0 i mnoitelj Y = y3 y2 y1 y0, njihov produkt je (vidi Primjer 8.6.):
x 3 x 2 x

x x x 3y3 3y2 x x

3 y, 2y2

P6

x2y3 P5

,y 3 p4

y3 x 3y0 x 2 y, x ,y 2 x 0y3
p

y2 x 2y0 x ,y, x 0y2 p2

y,
x

,y 0 Vi

y0 Vo

1. parcijalni 2. parcijalni 3. parcijalni 4. parcijalni rezultat

produkt produkt produkt produkt

p,

Po

240

8. POGLAVLJE: ARITMETIKO-LOGIKA JEDINICA

Produkti pojedinih binarnih znamenaka x. y. zapravo predstavljaju logiku funkciju I: x y . Budui da su nam svi bitovi obaju operanada raspoloivi, sve produkte binarnih znamenaka moemo istodobno dobiti pomou dvodimenzionalnog polja dvoulaznih logikih sklopova I (slika 8.23). Izlazi iz logikih sklopova I dovode se na odgovarajue ulaze potpunih zbrajala u skladu s postupkom raunanja sume parcijalnih produkata. Tako se, na primjer, najmanje znaajan bit rezultata dobiva izravno kao izlaz iz logikog sklopa I koji "rauna"x0y0. Vrijednost P1 dobiva se kao: (x1 -y0) + (x0 + 0; gdje + oznaava operaciju zbrajanja itd.

SI. 8.23 Dvodimenzionalno polje logikih sklopova I koje istodobno generira n2 produkata binarnih znamenaka

Slika 8.22 prikazuje 4-bitno mnoilo za nepredznaene binarne brojeve koje je sastavljeno od polja potpunih zbrajala. Uoavamo pravilnu strukturu sastavljenu od potpunih zbrajala i logikih sklopova I. Takva uniformna struktura mnoila podesna je za izvedbu u tehnologiji visokog stupnja integracije (LSI ili VLSI).

8.3.8. DIJELJENJE
Svrha je dijeljenja dvaju cjelobrojnih binarnih brojeva D/V, gdje je D djeljenik (dividend), a V djelitelj (divizor), dobivanje kvocijenta Q tako da vrijedi D = Q x V + R, gdje je R ostatak, pri emu vrijedi 0 ^ |R| < V. Najjednostavnija i intuitivna metoda dijeljenja je metoda "olovka i papir". Postupak dijeljenja slian je postupku koji se provodi u dekadskom sustavu: najprije se pokua "ide" li djelitelj u isti toliki broj najznaajnijih bitova djeljenika. Ako ne "ide", sputa se sljedea znamenka djeljenika itd. Binarno je dijeljenje jednostavnije nego to je to dekadsko, zato to su znamenke kvocijenta Q nule i jedinice pa nije potrebno procjenjivanje koliko puta "ide"djelitelj u djeljenik ili u djelomini ostatak.

S. RIBARI - GRAA RAUNALA

241

Primjer 8.10. Neka je djeljenik D nepredznaeni binarni broj D = 1111101 i neka je djelitelj V takoer nepredznaeni binarni broj 101. Dijeljenje metodom "olovka i papir" izvodi se na sljedei nain: 1111101:101 = 11001
-101

0101
>101

000 101
-101

000 Iz postupka vidimo da se dijeljenje svodi na uzastopno usporeivanje djeljenika ili djelominog ostatka s djeliteljem, oduzimanja djelitelja od djelominih ostataka te posmaka djelitelja. Oduzimanje se moe zamijeniti zbrajanjem dvojnog komplementa djelitelja (V+ 1). Kvocijent Q se rauna bit po bit u vremenu. U svakom se koraku /, djelitelj V posmie udesno i ima vrijednost 2 V te se usporeuje s djelominim ostatkom R.. Bit kvocijenta q. postavlja se na 1 ako je 2 V manje ili jednako R : Novi se djelomini ostatak Rj+1 dobiva kao: R. , q 2 V. 1 + 1<- R\ - M Metoda dijeljenja nepredznaenih binarnih brojeva "olovka i papir", s malim se preinakama moe, kao to je to bio sluaj i kod mnoenja, implementirati u raunalu. Modifikacija se sastoji od posmicanja djelominog ostatka ulijevo od djelitelja. U tom se sluaju novi djelomini ostatak dobiva kao: Rr+1 , <-2R.-q.V I M Slika 8.24 prikazuje dijagram toka postupka dijeljenja nepredznaenih brojeva koji je prikladan za strojnu izvedbu. Djelitelj je smjeten u registar M, a djeljenik u registar Q. U svakom se koraku kaskada registara A-Q posmie ulijevo za jedno mjesto. M se oduzima od A da bi se utvrdilo "ide" li A u djelomini ostatak. Ako "ide" tada se najmanje znaajan bit registra Q, tj. bit Q0 postavlja u 1. Inae, Q0 je nula i M se mora pridodati natrag sadraju registra A da bi obnovio prijanju vrijednost. Brojilo C dekrementira se za 1 i postupak se ponavlja n koraka. Na kraju postupka kvocijent Q nalazi se u registru Q, a ostatak dijeljenja u registru A. Postupak prikazan na slici 8.24 naziva se postupak dijeljenja obnavljanjem djelominog ostatka (engl. restoring division) jer se odluka o tome "ide" li djelitelj ili "ne ide" u djeljenik, odnosno djelomini ostatak ne donosi unaprijed, ve se zasniva na vrijednosti njihove razlike. Ako je razlika izmeu djelominog ostatka i djelitelja negativna, tada treba djelomini ostatak obnoviti ponovnim pribrajanjem djelitelja. Malom se preinakom postupka dijeljenja obnavljanjem - uklanjanjem koraka obnavljanja djelominog ostatka i doputanjem da djelomini ostatak bude negativan dobiva algoritam dijeljenja bez obnavljanja. U tom se sluaju korak obnavljanja R.- R. + V i sljedei korak oduzimanja Rj+1 2R.-Vstapaju ujedan korakRj+1 2R. +V.

242

8. POGLAVLJE: ARITMETIKO-LOGIKA JEDINICA

SI. 8.24 Dijagram toka za dijeljenje nepredznaenih binarnih brojeva

Slika 8.25 prikazuje blok-shemu sklopovske izvedbe djelila koja je slina onoj za Boothovo mnoilo. U registru M pohranjuje se djelitelj. Registri A i Q prvo se upotrebljavaju za poetno pohranjivanje djeljenika (duljine 2n), a zatim se A i Q koriste za pohranjivanje djelominog ostatka. A i Q posmiu se ulijevo, a u najmanje znaajno mjesto registra Q, tj. Q0, pohranjuje se bit kvocijenta dobiven u svakom koraku algoritma. Na kraju dijeljenja rezultat (kvocijent) je u registru 0, a ostatak u registru A.

S. RIBARI - GRAA RAUNALA

243

C,

SI. 8.25 Blok-shema djelila

Prethodno opisani postupak moe se uz dodatne preinake upotrijebiti i za dijeljenje negativnih binarnih brojeva predoenih u dvojnom komplementu: 1. korak: djelitelj se smjeta u registar M, a djeljenik u A-Q registar. Djeljenik (ako je negativan) mora biti izraen u dvojnom komplementu duljine 2n bita; 2. korak: posmakni A-Q ulijevo za jedno mjesto; 3. korak: ako M i A imaju isti predznak, izvedi operaciju A <- A - M, inae A <- A + M; 4. korak: potonja se operacija smatra uspjenom ako je predznak rezultata operacije jednak predznaku podatka u A prije operacije: ako je operacija uspjena ili ako su (A = 0 AND Q = 0), postavi Q0 u jedan; ako je operacija neuspjena i (A * 0 OR Q * 0), onda postavi Q0 u nulu i obnovi prijanju vrijednost registra A; 5. korak: ponavljaj korake 2 - 4 onoliko puta koliko je bitovnih pozicija u Q; 6. korak: ostatak dijeljenja je u A. Ako su predznaci djelitelja i djeljenika jednaki, tada je ispravan kvocijent u 0, inae je ispravan kvocijent dvojni komplement sadraja registra Q.

Primjer 8.11. Prikaimo postupak dijeljenja (tablica 8.8.) dvaju binarnih brojeva predoenih u notaciji dvojnog komplementa. Djeljenik je 4-bitni broj 0111= 7(10) a djelitelj je takoer 4-bitni broj 1101 = -3.... A 0000 0000 1101 0000 0001 1110 0001 0011 0000 0000 0001 1110 0001 Q 0111 1110 1110 1110 1100 1100 1100 1000 1000 1001 0010 0010 0010 Komentar Inicijalizacija; M = 1101 - djelitelj; djeljenik je u notaciji dvojnog komplementa smjeten u A-Q Posmakni A-Q ulijevo; Predznaci A i M su razliiti; izvedi operaciju A A + IVI

Operacija iz prethodnog koraka je neuspjena, predznak A se promijenio - postavljamo Q0 u 0 i obnavljamo sadraj A Posmakni A-Q ulijevo Predznaci A i M su razliiti; izvedi operaciju A A+ M

Operacija iz prethodnog koraka je neuspjena, predznak A se promijenio - postavljamo Q0 u 0 i obnavljamo sadraj A Posmakni A-Q ulijevo Predznaci A i M su razliiti; izvedi operaciju A - A + M Operacija iz prethodnog koraka je uspjena, predznak A nije se promijenio - postavljamo Q0 u 1 Posmakni A-Q ulijevo Predznaci A i M su razliiti; izvedi operaciju A A+ M

Operacija iz prethodnog koraka je neuspjena, predznak A se promijenio - postavljamo Q0 u 0 i obnavljamo sadraj A

Tablica 8.8. Postupak dijeljenja dvaju binarnih brojeva predoenih u notaciji dvojnog komplementa

Predznaci djeljenika i djelitelja su razliiti pa je stoga ispravan rezultat potpuni komplement sadraja registra Q,tj. 1110 (-2 (dekadno)) a ostatak je 1. Vidimo da se postupak dijeljenja, iako je sloeniji od postupka mnoenja, temelji na istim opim naelima. Postupak dijeljenja moe se takoer ubrzati uporabom tzv. brzih djelila koja koriste brza zbrajala, oduzimala i brze sklopove za posmak. Brza djelila mogu se, poput brzih mnoila, izvesti kombinacijskim sklopovima organiziranim u dvodimenzionalna polja sastavljenim od potpunih oduzimala ili potpunih oduzimala i zbrajala.

8.3.9. POSMAK
U 3. smo se poglavlju ve upoznali s osnovnim operacijama posmaka, i to s: logikim posmakom ulijevo, logikim posmakom udesno, aritmetikim posmakom udesno, krunim posmakom ulijevo ili udesno. Slike 8.26 a) - e) podsjeaju nas na navedene operacije (zbog jednostavnosti smo operacije posmaka ilustrirali s 8-bitnim operandima; slike oznaene s ij

5. R1BARI - GRAA RAUNALA

245

pokazuju stanje registara neposredno prije, a one s ii) stanje neposredno nakon posmaka). Na slikama vidimo da smo u operacije posmaka ukljuili i jedan bistabil (zastavicu prijenosa C {engl. carry) statusnog registra), meutim, nije nuno njezino sudjelovanje u tim operacijama (posebno u sluaju krunog posmaka).
zastavica C b7 b0

1 0

0
ii) a)

b7 1 b7 0

0 i)

b0 1 b0 0

1
ii) b)

c) c 0 c 1 b7 1 b7 1 o 1
bo
b

1 0
i)

0
ii) d)

0 -I

c 0 c 1

b7 1 b7 w 0

1 0 i) 1 1
ii) e)

o 1 b0 0

SI. 8.26 Logiki posmak, aritmetiki posmak udesno i kruni posmak a) logiki posmak ulijevo, b) logiki posmak udesno, c) aritmetiki posmak udesno, d) kruni posmak ulijevo, e) kruni posmak udesno

246

8. POGLAVLJE: AR1TMETIKO-LOGICKA JEDINICA

Ve znamo da posmicanje /i-bitno nepredznaenog broja x za k mjesta ulijevo odgovara mnoenju njegove vrijednost s 2k, to daje vrijednost 2kx uz pretpostavku se ta nova vrijednost dade predstaviti s k bita. Zanimljivo je da slino vrijedi i za posmicanje ulijevo predoenih i brojeva predoenih dvojnim komplementom uz uvjet da n-bitni broj ima k +1 znamenke jednake na znaajnijim mjestima. Potrebno je obratiti panju na to daje logiko posmicanje nepredznaenih brojeva i brojeva u notaciji dvojnog komplementa udesno razliito. Posmicanje nepredznaenog broja udesno za k mjesta znai dijeljenje njegove vrijednost s 2k. Logiko posmicanje udesno broja u notaciji dvojnog komplementa ne funkcionira jer e negativni broj promijeniti predznak zato to e se na njegovim znaajnijim mjestima pojaviti nule. Aritmetiki posmak udesno rjeava problem - ouvanjem bita predznaka dobiva se prava vrijednost prvotna vrijednost broja podijeljena s 2k. Primjer 8.12. Ilustrirajmo kako logiki posmaci utjeu na dobiveni rezultat ako su brojevi predoeni kao nepredznaeni i kao brojevi predznak-apsolutna vrijednost te kao brojevi u dvojnom komplementu (slika 8.27).

1 a)

1 c)

0
b)

0
d)

b 1 0 0 1
e)

1 g)

0
f)

b0 1

SI. 8.27 Operacija posmaka nepredznaenih i predznak-apsolutna vrijednost brojeva a) nepredznaeni broj: v(x) = 15710, b) logiki posmak udesno za k = 2 mjesta: v(x) = 3910, c) predznak-apsolutna vrijednost: v(x) = -2910, d) posmak udesno za k = 2 mjesta: v(x) = +3910 (pogrean rezultat), e) dvojni komplement: v(x) = -99 (0 , f) posmak udesno za k = 2 mjesta: v(x) = +39 10 (pogrean rezultat), g) dvojni komplement: v(x) = -9910, h) aritmetiki posmak udesno za k = 2 mjesta: v(x) = -2510

Iz primjera posmaka vidimo i to da operacija posmaka ukljuuje preureenje svih bitov? u rijei koja se posmie. Iz toga slijedi da e izvedba sklopova za posmak (nazivat emo ga posmanisklop) biti neto sloenija od sklopova za zbrajanje ili oduzimanje.

S. RIBARI - GRAA RAUNALA

247

Posmani sklop (engl shifter) osnovna je sastavnica na putu podataka koja sudjeluje u logikim operacijama, ali i u aritmetikim operacijama (mnoenje, dijeljenje) i njegova brzina izravno utjee na performansu procesora. Posmani sklopovi mogu se izvesti dvojako: i) kao sekvencijalni digitalni sklopovi - dvosmjerni posmani registri (posmak ulijevo, posmak udesno) s paralelnim ulazom; ii) kao kombinacijski sklopovi; Izvedbe posmanog sklopa na temelju posmanog registra u naelu se kod raunala izbjegavaju zbog male brzine. Naime, za posmak ulijevo ili udesno za svako pojedino bitovno mjesto zahtijeva se jedna perioda signala vremenskog voenja. Pri izvedbi posmanog sklopa, kao kritine komponente na putu podataka u procesoru, prednost se daje kombinacijskim sklopovima kod kojih je vrijeme trajanja operacije posmaka neovisno o iznosu posmaka (zajedno ili vie bitovnih mjesta). Slika 8.28 prikazuje izvedbu 4-bitnog posmanog sklopa koji se zasniva na multipleksoru kao kombinacijskoj graevnoj komponenti. Prema stanju upravljakih ulaza multipleksora H0 - H2 odreuje se posmak ulaznog 4-bitnog podataka a3 - a0.Tablica 8.9. prikazuje stanja izlaza iz posmanog sklopa ovisno o upravljakim ulazima HQ - H2.

SI. 8.28 Izvedba posmanog sklopa multipleksorima

Ako si predoimo multipleksor kao prekida koji moe, u naem sluaju, biti u jednom od osam poloaja (slika 8.29), ovisno o vrijednosti upravljakih ulaza H0 - H2 lako emo predstaviti nain funkcioniranja sklopa. Naime, istodobno je jednak poloaj svih etiriju "prekidaa" i ulazni signali koji su prikljueni upravo na te poloaje prekidaa prosljeuju se na izlaz.

248

8. POGLAVLJE: AR1TMETIKO-LOGICKA JEDINICA

H2 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1

1
0 1 0 1 0 1 0 1

Izlaz iz posmanog sklopa Nema posmaka: F3 = a3; F2 = a2; F1 = a,; F0 = a0 Posmak udesno za jedno mjesto Posmak ulijevo za jedno mjesto Posmak udesno za dva mjesta Posmak ulijevo za dva mjesta Posmak udesno za tri mjesta Posmak ulijevo za tri mjesta Fo-F 3 = 0

Tablica 8.9. Djelovanje posmanog sklopa ovisno o upravljakim ulazima H 0 - H2

1=0
.2 6 6

1=0 96 A 6 i .2
3 4

1=0

O O o

O O

.2 6 6 O O

2 6 6 O o o o

^' izlaz F,

^r izlaz F,

/
1r

o O

O O

izlaz F,

^' izlaz F

SI. 8.29 Nain djelovanja kombinacijskog posmanog sklopa - poloaj prekidaa odgovara upravljakoj kombinaciji H2 = 1, H1 = 1, H0 = 0 (posmak ulijevo za tri mjesta)

Slika 8.30 prikazuje naelnu izvedbu 32-bitnog posmanog sklopa koji se temelji na muL tipleksoru koji ima 64 32-bitna ulaza ijedan 32-bitni izlaz. Osim toga, ima est upravljakih ulaza - pet za specifikaciju iznosa posmaka ijedan za odreivanje smjera posmaka (ulijevo ili udesno). Ovako izvedeni sklop vrlo je sloen, posebno ako se eli izvesti tako da podrava kruni i aritmetiki posmak, te se zato koriste praktinije izvedbe sklopa u vie razina. Primjer 8.13. Procesor MC 68000 ima izveden posmani sklop na temelju multipleksora, ali tako da podrava samo posmake za jedno bitovno mjesto (ulijevo i udesno) u jednoj periodi signala vremenskog voenja. To je i osnovni razlog zato su njegove strojne instrukcije posmaka i krunog posmaka vremenski zahtjevne. One zahtijevaju 8 + 2k perioda signala vremenskog voenja, gdje je k iznos posmaka (broj bitovnih mjesta). Na primjer, kruni posmak udesno za 23 bitovna mjesta zahtijeva 54 periode signala vremenskog voenja. Panja, umjesto krunog posmaka udesno za 23 mjesta, moemo izvesti operaciju krunog posmaka ulijevo za 9 mjesta i dobit emo jednak rezultat, ali u vremenu od 26 perioda, uteda je pritom 28 perioda signala vremenskog voenja.

S. RIBARI - GRAA RAUNALA

249,

32-bitni procesor MC 68020, nasljednik procesora MC 68000, koristi brzi sklop za posmak ~ bavasti posmani sklop (engl. barrel shifter) koji operacije posmaka i krunog posmaka obavlja u vremenu od 8 - 12 perioda signala vremenskog voenja neovisno o iznosu posmaka k.

8.3.10 BAVASTI POSMANI SKLOP


U arhitekturi 32- i 64-bitnih procesora nalazimo posebne posmane sklopove koji se nazivaju bavasti posmani sklopovi. Njihova je osnovna znaajka, kao to smo ve spomenuli u Primjeru 8.13., da posmak obavljaju u jednako kratkom vremenu neovisno o iznosu posmaka kf tj. broju bitovnih mjesta za koje se operand posmie. Slika 8.31 prikazuje jednostavnu strukturnu podlogu za izvedbu bavastog posmanog sklopa koja se temelji n a n x n prospojnoj matrici (engl. crossbar) sastavljenoj od n2 sklopova s tri stanja, n je duljina rijei (operanda) koja se posmie. Podsjetimo se, sklop s tri stanja ponaa se kao sklopka koja ovisno o stanju upravljakog ulaza "proputa" struju ili "ne proputa" (poglavlje 7. Sklopovska i mikroprogramska izvedba upravljake jedinice). Ulaz u posmani sklop je operand - rije duljine est bita X = x 5 x 4 x 3 x 2 x 1 x0 a izlaz takoer 6-bitna rije Y = y5 y4 y3 y2 y, y 0 .Trobitnim upravljakim ulazom S = s2 s1 s0 odreuje se iznos posmaka. Zapravo, sklop prikazan na slici 8.31 predstavlja sklop za kruni posmak. Na primjer, ako upravljaki ulaz S ima vrijednost 2(10) (s2 s1 s0 = 010), onda e se ulaz x5 x4 x3 x2 x, x0 transformirati u izlaz xQ y4, x1 y5, x2 y0, x3 y , x4 y2, x5 y3 (slika 8.31; deblja linija) to odgovara krunom posmaku X za dva mjesta udesno. Ako se, meutim, eli izvesti posmana jedinica koja e podrati i ostale operacije posmaka, onda se zahtijevaju dodatni ulazi koji e definirati vrijednost bitova na krajevima posmaknute rijei. Slika 8.32 ilustrira kruni posmak.

250

8. POGLAVLJE: AR1TMETIKO-LOGICKA JEDINICA

Zahvaljujui pravilnoj strukturi, sklop sa slike 8.31 podesan je za izvedbu u tehnologiji visokog stupnja integracije VLSI.

iznos posmaka

upravljaki ulaz S

x - ulaz y - izlaz

SI. 8.31 Crossbar izvedba sklopa za kruni posmak

a) prije krunog posmaka udesno za 2 mjesta

L+

i
y5

i
y

i
y3

i
y2

i
y,

i
y,

b) nakon krunog posmaka udesno za 2 mjesta SI. 8.32 Ilustracija krunog posmaka Slika 8.33 prikazuje bavasti posmani sklop kao "crnu kutiju" koja podrava logiki posamak ulijevo i udesno te kruni posmak ulijevo i udesno.

S. RIBARI - GRAA RAUNALA

251,

S.

a a a

o l 2
C

C
C a

,
2

n-1 n

a
a
a

+l
n+2
C

B<

n-1

2n-1

SI. 8.33 Bavasti posmani sklop kao "crna kutija"

"Crna kutija" ima dva n-bitna ulaza za podatke: A = a n} an 2 ... a1 a0 i B = a2rvl a2n 2 ... an+1 an, jedan n-bitni izlaz C = c n c n 2 ... c1 c0 te upravljaki ulaz S = S S.t... S0. Upravljaki ulaz S odreuje iznos posmaka OsSsn.Tonije, vrijednostSdefinira broj bitova ulaza B koji e se pojaviti na izlazu C ulanan s dijelom bitova ulaza A. Na primjer, ako je S = 0, tada se na izlazu C pojavljuje slijed bitova jednak slijedu na ulazu A: cn-t , ...c,1 c 0 =a n-1 ,a n-2 a,1 an t c n-2 0. Za S = k\ 0 < k <; n dobiva se (slika 8.34):
C

n-1

n-2

0 ~~ a n - 1 + k 3 n - 2 + k ' " 3 1 + k

0+k

to znai da ulaz B doprinosi izlazu C svojim k najmanje znaajnim bitovima (koji su u izlazu C smjeteni na k najznaajnijih bitovnih pozicija).
ulaz B
a_ , 3 . _ . . . a _a ,a 2n-l 2n-2 n+2 n+1 n a

ulaz A
, a _a _ . . . n-1 n-2 n-3 a^d.a.a,. 3 2 1 0

izlaz C, za k=3

Ako je S = n, tada je C = B = a2n_, a2n.2 a2rv3... an+1 an.


SI. 8.34 Izlaz C iz bavastog posmanog sklopa za S = k = 3

to smo time postigli? Pretpostavimo da je sada A = B, dakle na oba ulaza dovodimo isti slijed bitova. U tom sluaju izlaz C za neku vrijednost S = k 0<k<n poprima oblik: cn-1 ,c n-2 , ... c1 c0 = a., a., a.,... a a ,a _... a, k-1 k-2 k-3 0 n-1 n-2 k to odgovara krunom posmaku udesno za k binarnih mjesta (slika 8.35), odnosno krunom posmaku ulijevo za n - k.

252

8. POGLAVLJE: AR1TMETIKO-LOGICKA JEDINICA

Pretpostavimo sada da je ulaz B = 0 = a2n1 a2n 2 a2n 3... an+1 an = 0000000....0000. Za S = k; 0 < k ^ n dobiva se: 0 0...0 0 a n a n 2... ak, to odgovara logikom posmaku udesno za k mjesta. Ako postavimo na ulaz A sve nule, a na ulazu B imamo operand a n l a^... a1 a0 i izaberemo S = k, dobit emo: ak l ... a 2 a,a 0 00... 0, to odgovara logikom posmaku za n - k mjesta ulijevo. Relativno jednostavnim preinakama bavasti posmani sklop podrat e i aritmetiki posmak udesno.
ulazB
a

ulaz A
a

n-1

, . . . a . a . a . a -

3 2 10

n-1 n-2

,a

, . . . a , a _ a

n 3 2 1 1 0

izlaz C, za k=3 SI. 8.35 Kruni posmak udesno za k = 3

8.4. ARITMETIKE OPERACIJE BROJEVIMA S POMINIM ZAREZOM


Zanimljivo je da su aritmetike operacije zbrajanja i oduzimanja bj&jeva s pominim zarezom sloenije od operacija mnoenja i dijeljenja. Razlog tomu je to se kod mnoenja i dijeljenja brojeva s pominim zarezom operacije s eksponentom i mantisom izvode potpuno odvojeno i neovisno. No pri zbrajanju i oduzimanju brojeva s pominim zarezom obavezne su dodatne operacije poravnavanja opera nada i normalizacije rezultata to zahtijeva interakciju izmeu eksponenta i mantise. Primjer 8.14. Ilustrirajmo zbrajanje dvaju brojeva s pominim zarezom U X = (-1 )S1 x 2E1 x 1 .F1 i Y = (-1 )S2 x 2 x 1 .F2, pri emu je X = (-1) x 2'1 x 1.000 = +2"1 x 1.000 i Y = (-1)1 x 2 2 x 1.110 = - 2 2 x 1.110 1.000 x 2 1 + -1.110 x 2'2 Da bismo mogli zbrojiti ta dva broja, oni moraju biti poravnani, odnosno njihovi eksponenti moraju biti jednaki. Poravnanje se izvodi tako da se mantisa broja s manjom vrijednou eksponenta (-1.110 x 2~2) posmie udesno (dijeli s dva), a istodobno se poveava vrijednost njegova eksponenta sve dok eksponenti obaju brojeva ne postanu jednaki: 1.000 x2"*
+ (-0.111) x 2 1

S. RIBARI - GRAA RAUNALA

253,

Sada kad su eksponenti jednaki moemo mantise zbrojiti:


1.000 X * 1

+ (-0.111) x 2 0. 001 X 2~1 Nakon toga mora se rezultat normalizirati: 1.000 x 2~4 i provjeriti je li se dogodio preljev ili podljev eksponenta. Ako pretpostavimo da se za eksponent koristi notacija sa suvikom 127, onda nema ni preljeva ni podljeva jer je 127 -126. U sljedeem bi koraku trebali zaokruiti normalizirani rezultat. No budui da je rezultat predoen tono sa etiri znamenke, nema potrebe za zaokruivanjem. Ako je dobiveni rezultat izraen veim brojem binarnih znamenaka od broja predvienih znamenaka za predoenje rezultata (u naem sluaju je to 4), potrebno je "odsjei" bitove rezultata i zadnju znamenku rezultata zaokruiti. Postoje razliite tehnike zaokru^anja, npr. zaokruivanje najbliem broju, zaokruivanje odsijecanjem i pozitivno usmjereno zaokruivanje. Provjerimo jesmo li dobili toan rezultat: X je 0.5(10) i V = - 0.4375(10}, X + Y = 0.0625{10). Na rezultat je 1.000 x l 4 , odnosno 1/16 = 0.0625. Postupak zbrajanja ili oduzimanja brojeva s pominim zarezom moemo saeti u sljedee korake: 1. korak: Raspakiraj svaki od operanada na predznak, eksponent i razlomaki dio. Obrati pozornost na posebnu vrstu operanada kao to su nula, beskonano i NaN (Not a Number) - zapis nije broj. 2. korak: Poravnaj dva broja: posmakni mantisu broja koji ima manji eksponent udesno za |E1 - E | mjesta, gdje su E., i = 1,2, vrijednosti eksponenata. 3. korak: Postavi eksponent rezultata Er na vrijednost max(Ei; E2). 4. korak: Ako je rije o operaciji zbrajanja i ako su predznaci obaju operanada jednaki: S1 = S2, zbroji razlomake dijelove. Ako je rije o operaciji oduzimanja i ako je S1 * S2, zbroji razlomake dijelove. U drugim sluajevima oduzmi razlomake dijelove. 5. korak: Normaliziraj dobiveni rezultat posmicanjem udesno ili ulijevo i istodobnim poveavanjem (ili smanjivanjem) vrijednosti eksponenta Er. Provjeri je li se dogodio podljev ili preljev vrijednosti eksponenta. Ako je, signaliziraj iznimku. 6. korak: Zaokrui mantisu na odgovarajui broj bitova. Slika 8.36 prikazuje, u skladu s prethodno opisanih est koraka, pojednostavljenu sklopovsku izvedbu zbrajala (oduzimala) za brojeve s pominim zarezom. Operacije mnoenja i dijeljenja brojeva s pominim zarezom ne razlikuju se mnogo od operacija brojeva s vrstim binarnim zarezom. Mnoenje dvaju brojeva s pominim zarezom izvodi se tako da se eksponenti dvaju operanada zbroje, a njihove mantise pomnoe: ((-1 )S1 x2 E1 x 1 .F,) ((-1 ) S2 x 2E2x 1 .F2) = 2 E1+E2 (1 .F1 x 1 .F2).

254

8. POGLAVLJE: AR1TMETIKO-LOGICKA JEDINICA

operand X

operand Y

raspakiravanje predznaci S1 S2 eksponenti E1 E2 mantise

zbroji/od uzmi

F1

F2

V
oduzimalo upravljaka jedinica

zamjena mjesta & komplementiranje

MUX
poravnavanje mantisa

V
zbrajalo

+/-

normalizacija i zaokruivanje

i
predznak eksponent pakiranje mantisa

izlaz SI. 8.36 Pojednostavljeni prikaz sklopovske izvedbe zbrajala (oduzimala) za brojeve s pominim zarezom

Primjer 8.15. Prikaimo primjer mnoenja brojeva O.5(10) i - O.4375(10) koji su predoeni u notaciji brojeva s pominim zarezom: +2A x 1.000 i - 2~2 x 1.110. 1. korak: Zbrojimo eksponente E^ i E2: (-1) + (-2) = -3. Ako elimo prikazati eksponent u notaciji suvikom 127, onda je vrijednost eksponenta (-3) +127 = 124.

S. RIBARI - GRAA RAUNALA

255,

2. korak: Pomnoimo mantise: 1.000 x 1.110 0000 1000 1000 1000 1110000 Produkt je 1.110000 x 2 3 , moramo ga izraziti sa etiri znamenke 1.110 x 2~3. 3. korak: Trebamo provjeriti je !i rezultat normaliziran i utvrditi da se nije dogodio ni preljev, ni podljev eksponenta. Vidimo da je produkt ve u normaliziranom obliku i da je 127 ^ -3 > -126, to znai da se nije dogodio ni preljev, ni podljev eksponenta. 4. korak: Zaokruivanje rezultata nije promijenilo rezultat ("odsjekli" smo tri najmanje znaajne nule u prikazu rezultata). 5. korak: Budui da se predznaci operanda razlikuju, predznak rezultata je negativan. Dobivamo konani rezultat: -1.110 x 2 3 . Provjerimo je li dobiveni rezultat toan: (0.5(10}) x (~ 0.4375(10)) = - 0.21875. Pretvorimo dobiveni rezultat -1.110 x 2 3 u dekadski broj: -1.110 x 2 3 ^ - 0.00111 te dobivamo - (2* + 2 A + 2 5 ) = - (0.125 + 0.0625 + 0.03125) = - 0.21875. Dijeljenje brojeva s pominim zarezom slino je mnoenju i odvija se u skladu s izrazom: ((-1 )S1 x 2E1 x 1 .F,) /((-1 )S2 x 2E2 x 1 .F2) = 2 E1E2 (1 .F1 / 1 .F2). Vidimo da se eksponenti oduzimaju, a mantise dijele kao i u sluaju brojeva predoenih vrstim binarnim zarezom. I ovdje se rezultat dijeljenja mantisa mora normalizirati i zaokruiti. Jednako tako, treba ispitati je li se dogodio preljev (eksponent je prevelik) ili podljev (eksponent je premali). Slika 8.37 daje pojednostavljeni prikaz sklopovske jedinice za mnoenje i dijeljenje brojeva s pominim zarezom. Vidimo da je sklopovlje puno jednostavnije od onog za zbrajanje i oduzimanje brojeva s pominim zarezom.

256

8. POGLAVLJE: AR1TMETIKO-LOGICKA JEDINICA

operand X

operand Y

raspakiravanje predznaci eksponenti mantise

mnoenje/dijeljenje

V
+/-

mnoi ili dijeli

upravljaka jedinica

normalizacija i zaokruivanje

"V
+/-

predznak

eksponent pakiranje

mantisa

izlaz

SI. 8.37 Pojednostavljeni prikaz sklopovske jedinice za mnoenje i dijeljenje brojeva s pominim zarezom

8.5. OBLIKOVANJE JEDNOSTAVNE ARITMETIKOLOGIKE JEDINICE - ANALIZA SLUAJA


Aritmetiko-logika jedinica (ALU) je viefunkcijski digitalni sklop. Ona izvodi aritmetike i logike operacije, ali se vrlo esto upotrebljava i za raunanje efektivne memorijske adrese izvorita operanada ili odredita rezultata, posebice ako procesor ima veliki broj naina adresiranja, od kojih su neki vrlo sloeni. U ovom emo se potpoglavlju upoznati prvo s jednim pristupom oblikovanju jednostavne aritmetiko-logike jedinice, tonije njezinog dijela koji izravno podrava osnovne aritmetike i logike operacije, a nakon toga tim sklopovima pridruiti posmani sklop i sklopove za generiranje zastavica (Z, V, N i C).

S. RIBARI - GRAA RAUNALA

257

i a)

_i

b) SI. 8.38 /-ti stupanj ALU a) i povezivanje stupnjeva u kaskadu b)

Jednostavnu aritmetiko-logiku jedinicu moemo promatrati kao sklop koji ima pravilnu strukturu koja se sastoji od identinih stupnjeva povezanih u kaskadu. Svaki je stupanj odgovoran za aritmetike ili logike operacije najednom bitu operanda.To znai da e se jednostavna aritmetiko-logika jedinica koja se koristi n-bitnim (cjelobrojnim) operandima sastojati od n takvih stupnjeva. Svaki se od njih u funkcijskom smislu moe prikazati kao daje sastavljen od aritmetike i logike sekcije (slika 8.38 a)). Povezivanje stupnjeva u kaskadu ostvaruje se pomou linija bita prijenosa C. i Cj+1 (slika 8.38 b)). Ulazi a. i b.t su ulazi bitova operanada u /-ti stupanj, a S^ S1 i S2 su upravljaki ulazi koji se upotrebljavaju za izbor razliitih aritmetikih i logikih operacija. Multipleksor na izlazu iz /-tog stupnja na temelju stanja upravljakog signala S2 prosljeuje rezultat aritmetike ili logike operacije na izlaz Fr Podjela stupnja aritmetiko-logike jedinice na aritmetiku i logiku sekciju samo je funkcionalna jer se pri oblikovanju jednostavne ALU koristi sljedei pristup:

258

8. POGLAVLJE: AR1TMETIKO-LOGICKA JEDINICA

i) prvo se oblikuje sklopovlje aritmetike sekcije neovisno o logikoj sekciji; ii) zatim se odreuju logike operacije koje se mogu izvesti sklopovima iz aritmetike sekcije; iii) izvode se preinake na sklopovima da bi se mogle izvoditi sve eljene logike operacije. Zahvaljujui takvom pristupu oblikovanju ALU smanjuje se sloenost i broj sklopova u svakom stupnju ALU.

8.5.1. ARITMETIKA SEKCIJA


Osnovna graevna sastavnica aritmetike sekcije jednog stupnja ALU je potpuno zbrajalo. Povezivanjem n stupnjeva ALU jedinice u kaskadu dobiva se paralelno zbrajalo koje istodobno zbraja dva operanda duljine n bitova. Ve znamo da se izlazi iz potpunog zbrajala (jednog stupnja paralelnog zbrajala) mogu opisati Booleovim jednadbama: Fi-ci(x.eyi) ci+1 = C. (x. y.) + x. y. eljeli bismo da jednostavna ALU ovisno o kombinaciji na njezinim ulazima (n bitni operandi X i Y, bit prijenosa u najnii stupanj ALU Cjn i stanja upravljakih signala S^ S1 i S^ izvodi osam sljedeih operacija koje su prikazane u tablici 8.10. -Jilifev Ulazi
Y

izlaz F

X X X X X X X X

Y Y Jedinini komplement:? Y 0 0 Sve jedinice: 111...111 Sve jedinice: 111...111

0 1 0 1 0 1 0 1

Zbrajanje: F = X + Y Zbrajanje s bitom prijenosa: F = X + Y + 1 F= X+ Y Oduzimanje: F = X + / + 1 Prijenos: F = X Inkrementiranje: F = X +1 Dekrementiranje: F = X -1 Prijenos F = X

Tablica 8.10. Osam osnovnih funkcija aritmetike sekcije ALU

Iz tablice 8.10. vidimo da smo prilagodbom operanda na ulazu Y i izborom vrijednosti bita prijenosa u najnii stupanj ALU Cjn, ostvarili, osim zbrajanja, oduzimanje, inkrementiranje operanda X, dekrementiranje operanda X, zbrajanje operanda X i jedininog komplementa operanda Y te prijenos, odnosno prosljeivanje operanda X s ulaza na izlaz. Da bi se paralelnim zbrajalom, sastavljenim od n potpunih zbrajala, moglo izvoditi navedenih osam operacija, potrebni su dodatni logiki sklopovi koji na ulazu Y prireuju operand. Slika 8.39 a) prikazuje sklop za prireivanje bita operanda na ulazu Y kao crnu kutiju. Na primjer, da bi se izvela operacija oduzimanja, operand na ulazu Y mora se pretvoriti u jedinini komplement i, jo uz to, bit prijenosa u najmanje znaajan stupanj potpunog zbrajala treba biti

S. RIBARI - GRAA RAUNALA

259

Cjn = 1:F = X + V + 1 . Pomou upravljakih signala S0 i S, prireuju se bitovi operanada na ulazu Y u skladu s tablicom istinitosti (tablica 8.11).

S, 0 0 1
1

S0 0 1 0 1

Ulaz: bit operanda b. i b. i b. 1 b. 1

Izlaz iz sklopa za prireivanje y{

0 bi
bi

Tablica 8.11. Prireivanje bita operanda na ulazu Y

Slika 8.39 b) prikazuje izvedbu sklopa za prireivanje bita operanda y.. Sklop za prireivanje bita operanda moramo pridruiti svakom potpunom zbrajalu u svakom stupnju aritmetike sekcije. Na slici 8.40 prikazana je aritmetika sekcija ALU.

bit operanda

sklop za prireivanje bita operanda

y, >

upravljaki ulazi a) bit operanda

b) SI. 8.39 Sklop za prireivanje bita operanda y. kao "crna kutija" a) i sklop za prireivanje bita operanda b)

Na slici 8.40 vidimo da najznaajniji stupanj aritmetike sekcije ALU ((n - 1)-ti stupanj) ima osim izlaza Fn_1 i izlaz Cout = Cn.To je bit prijenosa koji ima posebno znaenje i ALU ga upuuje u zastavicu C statusnog registra. S ovom smo fazom oblikovanja zavrili predviene aktivnosti definirane u koraku (i) - oblikovali smo sklopove aritmetike sekcije neovisno o logikoj sekciji.

260

8. POGLAVLJE: AR1TMETIKO-LOGICKA JEDINICA

1. stupanj aritmetike sekcije

n 1

n-ti stupanj aritmetike sekcije

SI. 8.40 Aritmetika sekcija ALU

8.5.2. LOGIKA SEKCIJA


Logike operacije rukuju bitovima operanada izdvojeno i svaki se bit operanda promatra kao logika, binarna varijabla. Logika sekcija treba podrati etiri osnovne logike operacije I, NE, ISKLJUIVO ILI i ILI. U skladu s pristupom oblikovanju ALU, radi ogranienja povrine na silicijskom ipu i potroka snage, traimo mogunost upotrebe logikih sklopova u aritmetikoj sekciji za izvedbu logikih operacija (korak (ii)). Na taj se nain aritmetika i logika sekcija pojedinog stupnja stapaju u jednu sekciju. Upravljaki signal S2 upotrijebit emo za izbor logikih (S2 = 1) ili aritmetikih operacija (S2 = 0).

S. RIBARI - GRAA RAUNALA

261,

8.5.2.1. LOGIKA OPERACIJA ISKLJUIVO ILI


Ako pretpostavimo da je ulazni bit prijenosa C. u svakom stupnju 0, onda potpuno zbrajalo s funkcijom F( = C. (x. y.) pri C. = 0 daje F. = 0 (x. y.) = x. y. i dobili smo logiku funkciju ISKLJUIVO ILI jer vrijedi da je openito 0 x = x. Kako moemo osigurati da bitovi prijenosa na ulazu u svaki stupanj ALU budu 0? Jednostavno - tako da na ulaz C. svakog stupnja dovedemo signal koji smo dobili kao logiko IS2 i izlaza koji odgovara bitu prijenosa generiranog u prethodnom stupnju /-1. (slika 8.41). Budui da je S2 = 1 za logike operacije, jasno je da e logika kombinacija S2- C. osigurati da ulazni bit prijenosa u svaki stupanj bude 0. Takvim smo sklopovskim zahvatom potkrijepili i tvrdnju da logike operacije rukuju bitovima operanada izdvojeno i da dobiveni rezultat operacije u /-1 nema utjecaj na ishod logike operacije u /-tom stupnju. U skladu s naom izvedbom vrijedi da e vrijednost upravljakih bitova S2 = 1,S1 = 0iSQ = 1 odrediti logiku operaciju ISKLJUIVO ILI. Naime, kombinacija S1 = 0 i S0 = 1 (tablica 8.11) odreuje da e na ulazu Y biti neizmijenjene vrijednosti operanda B = b f r l b ^ b1 b 0 tako daje izlaz iz svakog i-tog stupnja jednak a. b r

SI. 8.41 Prilagodba bita prijenosa C za logike operacije

262

8. POGLAVLJE: AR1TMETIKO-LOGICKA JEDINICA

8.5.2.2.

L O G I K A OPERACIJA NE to e se dogoditi ako su vrijednosti upravljakih signala S2 = 1, S1 = 1 i S0 = 1 ? Kombinacija S = 1 i SQ = 1 (tablica 8.11) odreuje da e sklop za prireivanje bita operanda y bit tako prireen da je jednak 1. Uz uvjet da je C. = 0 (to je postignuto sa S2 = 1), izlaz iz stupnja / F je: F. = C. (a. y), pri emu je C. = 0 i y. = 1 ._Dobivamo: F. = 0 (a. 1), odnosno F. = ~af jer iz Booleove algebre znamo da je (x. 1) = x.. Kombinacija S2 = 1, S1 = 1 i SQ = 1 odreuje logiku operaciju NE.

8.5.2.3.

L O G I K A O P E R A C I J A ILI Za realizaciju logike funkcije ILI posluit emo se kombinacijom upravljakih signala S2 = 1, Sj = 0 i S0 = 0. Stanja S^ = 0 i S0 = 0 (tablica 8.11) osigurat e daje prireeni bit operanda na ulazu y. jednak 0, tako da e se, uz C = 0 i y. = 0 izvesti operacija prijenosa bita operanda a; na izlaz F.. Ako sada izvedemo sklopovsku preinaku - dodavanjem dvoulaznog sklopa logiko ILI - na ulazu x. u svaki stupanj tako da, uz uvjete S2 = 1, S1 = 0 i S0 = 0, izvedemo operaciju a. + b. (+ ovdje oznaava logiku operaciju ILI), onda emo prosljeivanjem te vrijednosti kroz svaki stupanj potpunog zbrajala dobiti logiku funkciju ILI dvaju n-bitnih operanada. Slika 8.42 prikazuje potrebnu sklopovsku preinaku da bi se realizirala logika operacija ILI. C=0

+ b

w X '

/ FA

F.=a.+b. i i i w

->

Vi

Si. 8.42 Sklopovska preinaka potrebna da bi se realizirala logika operacija ILI

8.5.2.4.

LOGIKA OPERACIJA I Logiku operaciju I realizirat emo uporabom kombinacije upravljakih signala S2 = 1, S, = 1 i S0 = 0. to emo dobiti na izlazu F.? Pogledajmo: F{ = C. (x. y.) uz C = 0 na ulazu za drugi operand ,tj. y., (zahvaljujui tome stoje S1 = 1 i S0 = 0) imamo bf dobit emo: Fj = a. = (a. b.) + (a 5) Oni koji se jo sjeaju digitalne elektronike i Booleove algebre, prepoznat e potonju logiku funkciju kao funkciju ekvivalencije. Nju naalost nismo predvidjeli kao logiku operaciju u ALU. Upotrijebit emo je, meutim, za izvedbu logike operacije I. Iz izraza za logiku ekvivalenciju vidimo da je njezin prvi lan (a. b), zapravo, logika operacija koju elimo. Kako ukloniti drugi lan u izrazu? Posluit emo se jednim trikom - uvest emo pomonu logiku varijablu K. koju emo na ulazu za prvi operand u svako potpuno zbrajalo upotrijebiti za operaciju: K. i + a, i

S. RIBARI - GRAA RAUNALA

263,

Sada izraz za F. glasi: F. = A(K. + a.) b. =jK+a) b + (K+a.) b. = . a F +i K. b. + i a.i b. i i i' i i r / 1 i i i i i i to emo dobiti ako je K. = bi Dobiva se: F. = b. - a. - b. + b. b. + a. b.. Vidimo da su prvi i drugi lan izraza jednaki nuli i da je Fj = a. b . Dobili smo logiku operaciju I. Slika 8.43 prikazuje preinaku i-tog stupnja jednostavne ALU jedinice koja je potrebna za realizaciju logike I operacije.

SI. 8.43 Preinaka /'-tog stupnja jednostavne ALU da bi se dobila logika operacija I Slika 8.44 prikazuje konanu izvedbu /-tog stupnja jednostavne ALU.

SI. 8.44 Konana izvedba /-tog stupnja jednostavne ALU

264

8. POGLAVLJE: AR1TMETIKO-LOGICKA JEDINICA

Ako pridruimo oblikovanim sklopovima ALU posmani sklop, na primjer onaj oblikovan pomou multipleksora (slika 8.28), sklopove za otkrivanje preljeva (V = C n Cn1) i nule (Z = F ?+Fn2+... Fj+ FJ dobivamo potpunu viefunkcijsku n-bitnu ALU koja izvodi aritmetike operacije (zbrajanje, oduzimanje, inkrementiranje, dekrementiranje), logike operacije (I, ILI, NE, ISKLJUIVO ILI), operacije posmaka (posmakza jedno ili dva mjesta ulijevo ili udesno) te generira zastavice Z (nule), V (preljeva), C prijenosa (C = C^) i zastavicu N (indikatora kada je rezultat aritmetike ili logike operacije ili operacije posmaka takav daje najznaajniji njegov bit jednak 1). Slika 8.45 prikazuje viefunkcijsku ALU, na primjer 16-bitnu, i upravljake signale kojima se odreuju aritmetike i logike operacije te operacije posmaka.
upravljaki bitovi (izbor operacije posmaka)

prema statusnom registru SL 8.45 Jednostavna viefunkcijska ALU

S. RIBARI - GRAA RAUNALA

265

9. POGLAVLJE

MEMORIJSKI SUSTAV
9.1. UVOD
Memorija ili spremnik (engl. storage) je vrlo vana sastavnica raunarskog sustava. U skladu s von Neumannovim modelom raunala, instrukcije, podaci, meurezultati i rezultati pohranjuju se u memoriji i pozivaju iz memorije. Vrijeme koje se troi na komunikaciji izmeu procesora i memorijske jedinice u velikoj mjeri utjee na performansu raunarskog sustava. Procesor bi trebao imati brzi i neprekidni pristup memorijskoj jedinici vrlo velikog kapaciteta gdje su pohranjeni programi i podaci i time omoguiti izvoenje programa brzinom koja je uvjetovana samo brzinom sklopova u procesoru. Naalost, memorija koja bi radila jednakom brzinom kao i procesor i imala kapacitet nekoliko desetaka ili stotina giga bajtova (GB; giga = 230) znatno bi poveala cijenu raunarskog sustava i pogorala odnos njegove performanse i cijene. Odnos izmeu brzine procesora i memorije moemo izraziti pomou latentnosti (engl. latency) ili vremena odgovora koje je openito definirano kao vrijeme koje protekne izmeu zapoinjanja i zavretka nekog dogaaja. Tako, na primjer, procesor Intel Pentium 4 (2001. godina) ima latentnost 15 ns, dok je latentnost brzog memorijskog modula DDR SDRAM (Double Data Rate Synchronous DRAM) 52 ns, dakle vie od tri puta vea. Pod latentnosti memorije podrazumijeva se vrijeme koje protekne izmeu zahtjeva to ga procesor upuuje memorijskoj jedinici i primitka podatka iz nje. Drugi problem koji susreemo u memorijskom sustavu jest kapacitet memorije. Sve sloeniji operacijski sustavi i uporaba raunarskog sustava za rjeavanje sve sloenijih problema, uporaba prijateljskih grafiki orijentiranih korisnikih suelja, napredniji oblici interakcije ovjeka i raunala (glasom - sinteza i raspoznavanje govora, pokretom - raspoznavanje gestikulacija, emocijama - raspoznavanje emocija korisnika), multimedijske aplikacije i si., zahtijevaju velike kapacitete memorijskih jedinica koji se mjere desecima ili vie stotina GB. Sve to pogorava odnos performanse i cijene sustava. Naime, memorijski modul kapaciteta od nekoliko desetaka ili stotina GB s latentnosti 0.25 ns bio bi vrlo skup. Problem latentnosti i kapaciteta memorije rjeava se upotrebom memorijske hijerarhije. Memorijsku hijerarhiju u raunarskom sustavu ine razliite memorijske jedinice koje se razlikuju po latentnosti, kapacitetu i cijeni.

9.2. MEMORIJSKA HIJERARHIJA


Na temelju latentnosti (umjesto latentnosti moemo govoriti o brzini memorije, odnosno vremenu pristupa (engl. access time)), kapaciteta i cijene memorije u raunarskom sustavu

^ 266

9. POGLAVLJE: MEMORIJSKI SUSTAV

mogu se identificirati etiri glavne hijerarhijske razine (slika 9.1): i) registri procesora ili skup registara ope namjene; ii) priruna memorija (engl. cache) razine 1 (izvedena na samom procesorskom ipu), razine 2 (izvedena na samom procesorskom ipu) i razine 3 (opcija) realizirana na samom procesorskom ipu ili, pak, izvan procesorskog ipa; iii) glavna ili radna memorija; iv) sekundarna memorija.

SI. 9.1 Memorijska hijerarhija

Registri procesora obino su organizirani kao male ekstremno brze, vie pri stup ne (npr. jednoulazne i dvoizlazne) memorijske jedinice ostvarene na procesorskom ipu. Imaju brzinu istog reda veliine kao i sklopovi procesora, a kapacitet im se kree od npr. 16 ili 32 pa sve do nekoliko stotina i vie rijei. Registri procesora, organizirani kao viepristupna memorijska jedinica oblikuju skup registara ope namjene (engl. general-purpose register fiie) koji slui za privremeno pohranjivanje operanada, meurezultata i rezultata. Slika 9.2 prikazuje izvedbu skupa registara ope namjene koji ima jedna ulazna vrata (upisna vrata; engl. vvriteport) i dvoja izlazna vrata za itanje (engl. readport). Takva izvedba (vidi poglavlje 7J omoguuje da se istodobno dohvate (itaju) sadraji dvaju registara te da se novi sadraj upisuje u neki od registara iz skupa. Ulazima broj registra 1 i broj registra 2 (s\\ka 9.2) izabiru se dva registra koji se istodobno itaju, a ulaz broj registra slui za izbor registra koji sudjeluje u operaciji pisanja. Potrebno je napomenuti da je, ako se eli omoguiti u istoj periodi signala vremenskog voenja itanje i pisanje u isti registar, potrebno dodatno sklopovlje. Priruna memorija (engl. cache) je veeg kapaciteta u usporedbi sa skupom registara ope namjene i nije nuno sporija. Ona je korisniku "nevidljiva" ili "skrivena" (rije cache je francuskog podrijetla i oznaava skrivanje ili skrovito mjesto za pohranjivanje), a logiki je smjetena izmeu skupa registara ope namjene, odnosno registara procesora i glavne memorije. Fiziki priruna memorija moe biti smjetena na samom procesorskom ipu (obino su to priruna memorija razine 1 (engl. cache level 1) i razine 2 dok se priruna memorija razine 3 obino ostvaruje izvan procesorskog ipa. Zahvaljujui razvoju VLSI tehnologije mogue je ostvariti sve tri razine prirune memorije na samom procesorskom ipu. Funkcionalno, priruna memorija moe biti izvedena kao memorija za pohranjivanje instrukcija i podataka (tzv. i&D cache; Instruction&Data cache) ili kao izdvojena instrukcijska priruna memorija (engl. I cache) te kao izdvojena priruna memorija podataka (engL

S. RIBARI - GRAA RAUNALA

267,

D cache). Kapacitet prirune memorije kree se od nekoliko desetaka ili stotina kilo bajta (KB; kilo = 210) pa sve do nekoliko mega bajtova (MB; mega = 220). Napomenimo da je priruna memorija vrlo vana arhitektonska znaajke procesora i raunala te da ona znaajno doprinosi poveanju performanse procesora.
'u

'c

T
< N

<-

SI. 9.2 Izvedba skupa registara ope namjene s jednim upisnim vratima i s dvojim izlaznim vratima

^ 268

9. POGLAVLJE: MEMORIJSKI SUSTAV

Glavno ili rodna memorija (naziva se i primarna memorija) prilino je brza memorija velikog kapaciteta u kojoj se pohranjuju aktivni programi i podaci. Bez obzira to je glavna memorija realizirana poluvodikom tehnologijom slinoj onoj koja se rabi za izvedbu skupa registara ope namjene ili prirune memorije, ona je zbog velikog kapaciteta (nekoliko desetaka ili stotina GB) i zbog toga to je izvedena tako da je fiziki izdvojena od procesora sporija od prethodnih dvaju memorija u hijerarhiji, i to od dva do pet i vie puta. Sekundarna memorija vrlo je velikog kapaciteta (reda nekoliko stotina GB ili nekoliko tera bajtova (TB; tera = 240) ili ak stotina TB ali puno sporija u odnosu na glavnu memoriju. Vrijeme pristupa za memorijske jedinice u toj razini hijerarhije mjeri se ms (milisekunda = 10~3 s). Tipini su predstavnici ove vrste memorija magnetski diskovi, magnetske vrpce i optiki diskovi (CD-ROM - compact disk read-only memory i DVD-ROM - digital versatile disk read-only memory). Da bismo dobili osjeaj za odnose izmeu kapaciteta i brzine memorija u pojedinim hijerarhijskim razinama, posluit emo se podacima koji su bili tipini u 2006. godini (tablica 9.1.). Razina 1 Registri ili skup registara < 1 KB 2 Priruna memorija < 16MB Na procesorskom ipu ili izvan procesorskog ipa realizirana memorija CMOS SRAM 0.5 - 25 3 Glavna ili radna memorija < 512 GB 4 Sekundarna memorija (jedinica diska) > T (tera) B

Vrsta memorije

Kapacitet

Tehnologija

Vieulaznoizlazna memorija CMOS

CMOS DRAM

Magnetski disk

Vrijeme pristupa (ns)

0.25 - 0.5

50 - 250

5 000 000

Opaska: oznaka B oznaava bajt


Tablica 9.1. Tipine vrijednosti vremena pristupa i kapaciteta memorije za etiri memorijske razine.

Spomenuli smo daje i cijena jedan od faktora koji definira odnose u memorijskoj hijerarhiji. Ona se obino izraava po jedinici kapaciteta - na primjer, tipina cijena po 1 MB pojedine vrste memorije iznosi za prirunu memoriju na procesorskom ipu izmeu 5 i 100 $, za prirunu memoriju ostvarenu izvan procesorskog ipa 1 - 100$, glavnu memoriju DRAM 0.1 $ i za jedinicu diska 0.001 $. Ovdje treba naglasiti da cijena poluvodike memorije (hijerarhijske razine i) - iii)) jako varira i da vie ovisi o ekonomskim faktorima i koliini, odnosne obujmu proizvodnje, nego o stvarnoj cijeni tehnoloke proizvodnje.

S. RIBARI - GRAA RAUNALA

269,

9.3. OSNOVNE ORGANIZACIJSKE I TEHNOLOKE ZNAAJKE MEMORIJSKOG SUSTAVA


Sloenost memorijskog sustava ogleda se u organizacijskoj i tehnolokoj razliitosti memorijskih komponenti koje su sastavnice etiriju memorijskih razina. Jedna od znaajki je mjesto u raunarskom sustavu na kojem se nalazi odreena memorijska komponenta. Skup registara ope namjene obino se klasificira u tzv. lokalnu memoriju, odnosno memoriju koja je lokalno dodijeljena procesoru i nalazi se na procesorskom ipu. Priruna memorija razine 1 (u nekim izvedbama razine 2 i 3) takoer je smjetena na procesorskom ipu. Prirune memorije razine 3 te glavna memorija ostvarene su izvan procesorskog ipa, ali se svrstavaju u internu memoriju raunarskog sustava, za razliku od sekundarne memorije koja se klasificira kao eksterna, tj. vanjska memorija raunarskog sustava. Razlog tomu je to se sekundarna memorija sastoji od perifernih ureaja (npr. jedinice diska ili vrpce) kojima procesor pristupa posredno preko ulazno-izlaznog suelja. Osnovna znaajka memorije u pojedinoj razini jest njezin kapacitet On se za internu memoriju izraava brojem bajtova ili rijei. Uobiajene duljine rijei izraene su u obliku 2j broja bitova (i ;> 3 je cijeli broj), tako da govorimo o rijeima duljine 8, 16, 32, 64 ili 128 bita. Kapacitet vanjske memorije obino se izraava u bajtovima (na primjer, kapacitet DVD ROM-a je 4.7 GB). Jedna od znaajki je i jedinica prijenosa (engl. unit transfer) koja je za internu memoriju jednaka irini sabirnice podataka. Obino irina (broj linija ili bitova) sabirnice podataka odgovara duljini rijei, ali to ne mora biti uvijek tako. Naime, sabirnica moe biti vremenski multipleksirana tako da u dva ili vie navrata prenosi dijelove jedne rijei. Jedinica prijenosa za vanjsku memoriju obino je blok koji se sastoji od vie bajtova, odnosno rijei. Jedna od najvanijih znaajki memorije u svakoj od razina jest performansa. Ona se izraava trima parametrima: vremenom pristupa (engl. access time ili read access time), vremenom memorijske periode (engl. memory cycle time ili cycle time) i brzinom prijenosa podataka (engl. data-transfer rate ili memory bandwidth). Vrijeme pristupa memoriji obino se definira kao vrijeme koje protekne od trenutka kada memorija zaprimi zahtjev za itanje nekog podatka do trenutka kada taj podatak postane raspoloiv na izlaznim prikljucima memorije. Ovo se vrijeme sastoji od vremena koje je potrebno za lociranje zahtijevane memorijske elije (ili vie njih) u memorijskom polju i vremena potrebnog da ti podaci postanu raspoloivi i preneseni na izlaze memorijske jedinice. Dogovorno se za vrijeme pristupa uzima vrijeme potrebno za itanje sadraja memorijske lokacije jer neke memorije imaju razliita vremena pristupa za itanje (engl. read access time) i pisanje (engl. write access time). Vrijeme memorijske periode koristi se za neke vrste memorija kod kojih se novi pristup ne moe zapoeti prije negoli se ne obnovi ili osvjei sadraj memorijske lokacije kojoj se prethodno pristupilo. U tom sluaju, minimalno vrijeme koje treba protei izmeu dva slijedna pristupa vee je od vremena pristupa i naziva se vrijeme memorijske periode. Maksimalna koliina informacije koja se moe prenijeti u jedinici vremena izmeu memorije i ostalih komponenti raunarskog sustava (npr. procesora ili DMA upravljakog sklopa) naziva se brzina prijenosa ili memorijska pojasna irina i izraava se brojem bitova ili rijei u sekundi. Ona se moe izraziti kao omjer:

^ 270

9. POGLAVLJE: MEMORIJSKI SUSTAV

gdje je w broj bitova koji se moe istodobno prenijeti, a t M je vrijeme memorijske periode. Za sluaj kada je vrijeme memorijske periode jednako vremenu pristupa t M = t , tada je brzina prijenosa jednaka w / tA. Iznimno vana organizacijska znaajka memorije jest nain pristupa podacima. Ako se podacima moe pristupiti u bilo kojem redoslijedu i ako je vrijeme pristupa jednako i neovisno o lokacijama kojima se pristupa, tad govorimo o memoriji s izravnim pristupom (engl. random access memory). (Opaska: u literaturi na hrvatskom jeziku moe se naii i na naziv "memorija sa sluajnim pristupom" to je posljedica prevoenja izraza "random access" meutim, nije rije o sluajnom pristupu jer je pristup memorijskoj lokaciji odreen adresom.) Memorije s izravnim pristupom oznaavaju se kraticom RAM (Random Access Memory) i veina poluvodikih memorija realiziranih u tehnologiji LSI/VLSI jesu tog tipa. Memorije kod kojih se memorijskim lokacijama moe pristupiti samo unaprijed odreenim slijedom i kod kojih vrijeme pristupa ovisi o mjestu memorijske lokacije na kojoj je podatak pohranjen nazivaju se memorije sa sekvencijalnim pristupom (engl. seriai-access memory ili sequential access memory). Memorije tog tipa su magnetski diskovi i vrpce te optike memorije npr. CD-ROM ili DVD-ROM. U podrobnijoj klasifikaciji tipova memorije nali bismo i asocijativne memorije koje su takoer memorije s izravnim pristupom, ali kojima se pristupa ne na temelju adrese memorijske lokacije ve na temelju njezina sadraja ili dijela sadraja, ili nekog svojstva podatka. Asocijativne su memorije tako organizirane da istodobno daju sve sadraje memorijskih lokacija koje se podudaraju s upitom (npr. sadrajem, dijelom sadraja ili svojstvom). Prema metodi pohranjivanja podataka, odnosno upisa podataka, memorije dijelimo na one koje su permanentne, to podrazumijeva da se jednom pohranjena informacija ne moe lako i brzo promijeniti tijekom neposrednog koritenja (engl. on-line) u raunarskom sustavu. Takve se memorije nazivaju ispisne memorije odnosno za njih se koristi udomaena kratica ROM {Read-Only Memory). Zatim ih dijelimo na ispisne memorije iji se sadraj moe promijeniti posredno (engl. off-line) obino izvan raunarskog sustava - one se nazivaju program i rij ive memorije (npr. PRO M - Programmable ROM, EP ROM - Erasable Programmable ROM, EEPROM - Electrically Erasable Programmable ROM i si.). U ispisne memorije iji se sadraj moe posredno mijenjati svrstava se i programirljivi CD koji se obino oznaava kao CD-R disk (CD - recordable). Memorije koje doputaju laku i neposrednu promjenu sadraja (on-line) od strane procesora tijekom izvoenja programa nazivaju se upisno-ispisne memorije (engl. read-write memory). Budui da su upisno-ispisne memorije uobiajene u raunarskom sustavu, ne koristi se nikakav pridjev uz njih jer se, kada se kae memorija, misli upravo na tu vrstu memorije. Prema tehnologiji koja je osnova za tehniku izvedbu memorije razlikujemo poluvodike memorije koje su ostvarene u LSI i VLSI tehnologiji, one realizirane na magnetskim medijima te one koje koriste optike medije za pohranu podataka. Postoje i izvedbe sekundarnih memorija koje kombiniraju magnetski medij za pohranu i optiku tehnologiju za itanje (engl. magneto-optical disk memory). Vrlo vana fizika znaajka memorije je izbrisivost (engl. volatile), odnosno neizbrisivost (engl. non-volatile). Znaajka izbrisivih memorija je da se pohranjeni sadraji gube (briu) prestankom napajanja memorijskog modula. Veina poluvodikih tipova memorija izbri-

S. RIBARI - GRAA RAUNALA

271,

siva je iako postoje i poluvodike memorije koje su neizbrisive kao to su EPROM (Erasable Programmable Read-Only Memory) i tzv. flash memorije. U neizbrisivoj memoriji ostaju sauvani podaci i nakon to se iskljui napajanje. Memorije koje se temelje na magnetskim ili optikim medijima svrstavaju se u neizbrisive memorije. Osim ve spomenutih poluvodikih neizbrisivih memorija spomenimo i mask-programmedROM (Read-Only Memory) te porodice poluvodikih memorija kao to su PROM (Programmable ROM) i EEPROM (Electriallly Erasable Programmable ROM). Flash memorija je poluvodika neizbrisiva memorija kapaciteta od 4 do 256 GB, od 100 do 1000 puta bra od magnetske diskovne memorije, manja od nje i otpornija na udarce ili trenju (engl. shock resistant). No ona je za faktor 2 do 40 skuplja od diskovne memorije, ali jo uvijek do 10 puta jeftinija od dinamike RAM. Flash memorija koristi u izvedbi USB memorijskih tapia (engl. memory stick) ali i u mobilnim ureajima kao to su mobiteli, MP3"playeri", digitalne kamere i fotoaparati i si. Slika 9.3 prikazuje tipinu memorijsku hijerarhiju u raunarskom sustavu s okvirnim vrijednostima nekih organizacijskih i tehnolokih znaajki.
kapacitet mali lOOOB < Ins brzina A velika

512KB - - MB 0.5-5ns

-MB--GB

5 -15ns

500 GB

< 10 ms

< 100 ms >TB

< 100 s veliki mala

SI. 9.3 Simboliki prikaz memorijske hijerarhije u raunarskom sustavu s nekim okvirnim vrijednostima organizacijskih i tehnolokih znaajki

9.4. GLAVNA ILI RADNA MEMORIJA


U skladu s von Neumannovim modelom raunala sljedovi instrukcija (programi) i podaci, oboje svedeni na binarni kod, pohranjuju se u jednakom obliku i na jednak nain u memorijskoj jedinici. Ovdje je potrebno razlikovati programe koji se upravo izvravaju i njima pridruene podatke od ostalih programa (i pridruenih podataka) ije izvoenje nije

^ 272

9. POGLAVLJE: MEMORIJSKI SUSTAV

u tijeku. Zahvaljujui postojanju memorijske hijerarhije glavna ili radna memorija (esto se naziva i primarna memorija; engl. main memory, primary memory) sadrava programe i njima pridruene podatke ije je izvoenje upravo u tijeku, dok su trenutno neaktivni programi pohranjeni u sekundarnoj memoriji. Obino se za te neaktivne programe kae da "ekaju" izmeu dva izvoenja u sekundarnoj memoriji da bi se razlikovali od programa koji su pohranjeni na neizbrisivim magnetskim ili optikim medijima koji nisu sastavni dio raunarskog sustava, ali se po potrebi intervencijom operatera mogu ukljuiti u sustav (u von Neumannovom raunalu tzv. neaktivna memorija (engl. dead store)). Potrebno je napomenuti da bez obzira na postojanje memorijske hijerarhije u raunarskom sustavu, npr. skupa registara ope namjene, prirunih memorija razine 1,2 i 3, za procesor je mjerodavna jedino slika programa u napredovanju koja se odraava u sadraju giavne memorije. Za izgradnju glavne memorije upotrebljavaju se poluvodike LSI/VLSI memorije s izravnim pristupom. S obzirom na osnovnu funkciju glavne memorije veina memorijskih modula, odnosno golema veina od ukupnog kapaciteta glavne memorije ostvarena je uporabom upisno-ispisne memorije s izravnim pristupom (RAM). Samo mali dio memorijskog prostora moe zauzimati ispisna poluvodika memorija (ROM), i to za pohranu dijelova operacijskog sustava, biblioteke potprograma koji se vrlo uestalo rabe, funkcijskih tablica te konstanti. Memorijski ipovi s izravnim pristupom RAM temeljne su graevne komponente glavne memorije. Memorijski ipovi, zahvaljujui razvoju LSI/VLSI tehnologije, imaju kapacitet od nekoliko stotina bitova pa sve do nekoliko G bitova (Gb). S obzirom na trenutni razvoj VLSI tehnologije postoje procjene daje za kapacitet ostvaren na jednom ipu gotovo nedostina granica od tera bita (Tb). (Opaska: s malim slovom b oznaavat emo bit.) Poluvodike memorije mogu se razvrstati u dvije velike grupe: i) statiki RAM (SRAM - Static Random Access Memory); ii) dinamiki RAM (DRAM - Dynamic Random Access Memory). Statiki se RAM sastoji od memorijskog polja sastavljenog od memorijskih elija koje se temelje na bistabilu. SRAM tipino zahtijeva est tranzistora po bitu pohrane, odnosno po jednoj memorijskoj eliji. Memorijsku eliju moemo predoiti kao "crnu kutiju" koja ima upravljaki ulaz kojim se odreuje operacija (itanje ili pisanje; R/W), ulaz za izbor, odnosno omoguavanje (Select) te jednobitni ulaz i jednobitni izlaz podataka (slika 9.4). Bez obzira na razliite tehnoloke podloge (MOS - Metal-Oxide Semiconductor, bipolarna) koje se koriste u izvedbi memorijskog ipa, memorijska elija ima sljedea glavna svojstva: ima dva stabilna stanja koja se upotrebljavaju za prikaz binarne 1 i 0; omoguuje upis i pohranu (novog) stanja; omoguuje itanje pohranjenog stanja. Za razliku od statike RAM, jednobitni se podatak u dinamikoj RAM pohranjuje u jednotranzistorskoj memorijskoj eliji u obliku naboja u kondenzatoru. Operacija itanja aktiviranjem tranzistora u eliji koji ima funkciju sklopke, tj. podizanjem napona linije retka - adresne linije (izvorno se tranzistor naziva engl. pass transistor), napon e se na kondenzatoru proslijediti na liniju podatka (slika 9.5).Time se, meutim, gubi naboj na kondenzatoru, odnosno brie pohranjeni sadraj u eliji, tako da je to destruktivno itanje. Da bi se ouvalo osnovno svojstvo memorije -nedestruktivna operacija itanja, mora se neposredno nakon itanja bita podatka izvesti ponovna operacija upisa podatka.To zahtijeva dodatno vrijeme tako da se kod DRAM razlikuje vrijeme pristupa tA od vremena memorijske periode tM, pri emu vrijedi

S. RIBARI - GRAA RAUNALA

273

t M > tA. Nadalje, zbog nesavrenosti kondenzatora naboj se postupno gubi i zato DRAM zahtijeva periodiko osvjeavanje sadraja pohranjenih u elijama.
select

> ulaz podataka

memorijska elija

izlaz podataka

R/W

SI. 9.4 Memorijska elija kao "crna kutija"

Pri oblikovanju ipova SRAM dizajneri su usredotoeni na brzinu i kapacitet, dok se kod DRAM posebna pozornost posveuje cijeni po bitu i kapacitetu ipa (broju bitova). Za memorijske ipove temeljene na usporedivim tehnologijama vrijedi da gustoa (broj pohranjeni bitova) DRAM 4 - 8 puta u odnosu na SRAM (stoje i razumljivo ako za eliju dinamikog RAM treba jedan tranzistor, a za SRAM treba est tranzistora). No SRAM je 30 - 1 0 0 puta bri u odnosu na DRAM. Naalost, priblino je za isto toliko puta i skuplji. Na primjer, cijena SRAM memorije s vremenom pristupa 0.5 - 2.5 ns je od 2000 - 5000 USA $ po GB, dok je cijena DRAM memorije s vremenom pristupa od 50 - 70 ns po GB od 20 - 75 USA $ (podaci za 2008.). Zbog ovih se znaajki obino SRAM upotrebljava za izvedbu prirune memorije, a DRAM je osnovna graevna komponenta glavne memorije.

linija retka adresna linija

linija podatka SI. 9.5 Jednotranzistorska MOS elija DRAM

Tablica 9.2. prikazuje usporedbu vremena memorijske periode i kapaciteta ipova DRAM za razdoblje od 1980. do 2006.

^ 274

9. POGLAVLJE: MEMORIJSKI SUSTAV

Godina 1980. 1983. 1996. 2000. 2004. 2006.

Kapacitet ipa 64 Kb 256 Kb 64 Mb 256 Mb 1 Gb 2 Gb

1j

Vrijeme memorijske periode (ns) 250 220 110 90 70 60

Opaska: oznaka b oznaava bit


Tablica 9.2. Brzina i kapacitet DRAM za razdoblje od 1980. do 2006.

Prema nainu pristupa memorijskim elijama u memorijskom polju, odnosno nainu adresiranja, RAM ima sljedeu organizaciju: i) inearno adresiranje; ii) koincidentno adresiranje. Pri linearnom adresiranju memorijskih elija, odnosno lokacija u memorijskom polju ipa, adresira se uporabom adresnog dekodera "1 od N" koji je sastavni dio memorijskog ipa, pri emu je N ukupan broj memorijskih lokacija u memorijskom polju. Na temelju aktivne izlazne linije iz adresnog dekodera "1 od N" izabire se w memorijskih elija, pri emu w odgovara duljini rijei - broju bitova u izabranom retku memorijskog polja. Slika 9.6 daje shematski prikaz linearnog adresiranja. .

Slika 9.7 prikazuje SRAM 512 K x 8 bita, odnosno 512 KB, koji koristi linearno adresiranje. ip ima 19 adresnih prikljuaka (A0 - A18), 8 prikljuaka za podatke (D 0 - D7) (linije podataka su dvosmjerne, kada se izvodi operacija itanja (R/W= 1), onda se 8-bitni podaci prenose od memorije prema procesoru; kada je R/W= 0, izvodi se operacija pisanja - podaci iz procesora pohranjuju se u ipu SRAM), prikljuak za izbor ipa ChipSelect (CS) upravljaki ulaz R/W i upravljaki ulaz OutputEnable (OE) kojim se omoguuju pogonski sklopovi linija

S. RIBARI - GRAA RAUNALA

275

podataka (engl. dato bus driver). Kada je OE u niskoj razini (logiko"0") i kada se izvodi operacija itanja, omogueno je postavljanje podataka iz SRAM na sabirnicu podataka. RAM-ovi veeg kapaciteta imaju obino koincidentno adresiranje jer linearni izbor za takve RAM-ove trai sloeniji adresni dekoder koji mora biti izveden na memorijskom ipu. Slika 9.8 daje shematski prikaz memorijskog modula s koincidentnim nainom adresiranja. Ovakav se nain organizacije memorijskog modula esto naziva i 2 Vi D organizacija (D dimension). Ovdje vidimo daje memorija sastavljena od w memorijskih polja (ravnina) pri emu svako memorijsko polje doprinosi po jedan bit w-bitnoj rijei. Svako memorijsko polje kapaciteta N bitova odgovara jednom ipu RAM. Veina DRAM-ova ima koincidentno adresiranje.
ov +5V

A0 A, A; A3 A4 A5 A6
A adresne linije

i_L
Vsi V D0

A8 A,
A A

D, D2 D, D4 D5 D6 D7

linije podataka

SRAM 512 Kx8 OE R/W

A,2 A,3 A A,5 A,6 A,7 A,8


SI. 9.7 SRAM 512 K x 8 bita

w ravnina

w-bitna rije

kapacitet N bitova SI. 9.8 Shematski prikaz modula s koincidentnim adresiranjem (2 V2 D organizacija)

^ 276

9. POGLAVLJE: MEMORIJSKI SUSTAV

>
e>jeiepod je)s;6di juzejn
^ \

o* o

e>jeiPpod jBisiBsj ;uze|zr

>(;uuj3jdsnpdLU !uze|z!-0uze|n

o
o

C L O

^ CM

a *

in X < N m

< T J O* Q _

ro u a 3 4-' VI < U T3 o T3
<u

c _o rtJ > ni o > N 1 aj to o (^epaj) ^jjuuidjdsnpdtu lusajpe pedms) )j!uuidjdsnpduj jusajpe

n
SI.9.9 DRAM 1 6 M x 4 b i t a

Slika 9.9 prikazuje internu organizaciju 16 M x 4 bita (32 x 512 K x 4) DRAM. DRAM zahtijeva 24 adresne linije (224 = 16 M) da bi se pristupilo 16 M lokacijama u memorijskom polju (svaka lokacija pohranjuje 4 bita) pa je ukupni kapacitet DRAM 64 Mb. Za pristup memorijskoj lokaciji u memorijskom polju koriste se dvije 12-bitne adrese - adresa retka

S. RIBARI - GRAA RAUNALA

277,

i adresa stupca. Da bi se smanjila veliina kuita ipa i broj prikljuaka, DRAM ima multipleksirane adresne linije (2 puta po 12 bita). Jedna polovina od ukupno 24 adresnih bitova namijenjena je za adresiranje retka, a druga polovina za adresiranje stupca u memorijskom polju. Adresa retka i adresa stupca dovode se na dekoder retka, odnosno dekoder stupca. Pristup 4-bitnoj memorijskoj lokaciji odreen je "presjecitem" adresirane linije retka i adresirane linije stupca. Zbog multipleksiranja adrese retka i adrese stupca ip DRAM ima dva adresna meuspremnika u kojem privremeno pohranjuje adresu retka i adresu stupca. DRAM ima i dva dodatna upravljaka ulaza RAS (RowAddress Strobe) i CAS (Column Address Strobe) kojima se privremeno pohranjuje adresa retka i stupca u dva adresna meuspremnika. Slika 9.10 prikazuje vremenski dijagram itanja dinamike memorije. Uoavamo da se preko 12 adresnih linija vremenskim multipleksiranjem (prijenosom adrese retka i zatim prijenosom adrese stupca) prenosi 24-bitna adresa.
adresa na adresnim sabirnicama (postavljaju procesor)

adresni prikljuci DRAM

R/W

4-bitni podatak nz izlazu DRAM (D,-D 4 )

trenutak zamjene adrese retka adresom stupca na linijama A 0 - A n

kraj sabirnikog ciklusa itania RAS i CAS postaju neaktivni

SI. 9.10 Vremenski dijagram itanja DRAM Ovisno o tehnolokoj izvedbi, memorijska elija DRAM zadrava pohranjeni podatak od 10 ms do 60 ms nakon to je bio podatak pohranjen. To znai da se sadraj svake memorijske elije mora periodiki osvjeiti, unutar tog vremena, ponovnim upisom pohranjenog podatka. Osvjeavanje se ne obavlja pojedinano za svaku memorijsku eliju, ve se osvjeavaju istodobno svi sadraji memorijskih elija u jednom retku. To se obavlja tako da DRAM interno generira adrese retka pomou brojila osvjeavanja (slika 9.9). Osvjeavanje

^ 278

9. POGLAVLJE: MEMORIJSKI SUSTAV

DRAM-a izvodi se kada je CAS aktivan (postavljen u"0"), a RAS je u stanju logike jedinice "1" (neaktivan). Takav se nain osvjeavanja naziva "osvjeavanje CAS - prije - RAS". Potreba za periodikim osvjeavanjem dinamike memorije poveava sloenost suelja procesor - DRAM memorijski modul. No neki memorijski ipovi DRAM imaju ugraene sklopove za osvjeavanje pa se s motrita projektanta memorijskih modula ponaaju kao statike memorije te se nazivaju pseudostatike. Da bi se izgradio npr. memorijski modul kapaciteta 16 M x 32 bita, mora se koristiti osam DRAM 16 M x 4 bita ipova - svaki od njih doprinosi po etiri bita u 32-bitnoj rijei.

9.4.1 PROJEKTIRANJE MEMORIJSKOG MODULA


Problem projektiranja memorijskog modula moe se formalno definirati na sljedei nain: na temelju zadanih ili raspoloivih memorijskih ipova N x w-bita RAM, gdje je N broj wbitnih rijei (odnosno N x w je memorijski kapacitet raspoloivog ipa) treba projektirati memorijski modul koji se moe opisati kao N'x w'-bita, pri emu je N'a N i W. Drugim rijeima, treba projektirati memorijski modul na temelju raspoloivih graevnih komponenti - memorijskih ipova N x w-bita RAM, koji se sastoji od polja p x q ipova N x w-bita RAM, pri emu je p = [N7 N] i q = [w' / w], ([x] oznaava najmanji cijeli broj vei ili jednak x). Primjer 9.1. Ilustrirajmo problem projektiranja na sljedeem jednostavnom zadatku: raspoloiva graevna komponenta je statiki RAM kapaciteta 128 bajtova, dakle 128 x 8 bita RAM (N = 128, w = 8). Na temelju tih raspoloivih komponenti elimo projektirati memorijski modul koji e biti kapaciteta 1 K 16-bitnih rijei (N'= 1024, w' = 16). Da bi se realizirao memorijski modul - ciljna memorija, potrebno je p x q = 1 6 memorijskih ipova, pri emu je: p = [N7 N1 = [1024 / 1281 = 8 i q = [ w 7 w ] = f 16 / 8] = 2. (Opaska: obino su vrijednosti N, w, N' i w' izraene u obliku 2\ tako da je [xl = x (kao u naem sluaju). No ako je ciljani kapacitet memorijskog modula npr. 1000 8-bitnih rijei, tada imamo [1000 /1281 = [7,811 =8.) Prikaimo organizaciju memorijskog modula (ciljne memorije) 1K x 16 bita (slika 9.11a) uporabom graevnih komponenti 128 x 8 bita SRAM (slika 9.11b) koje koriste linearno adresiranje. Za realizaciju ciljne memorije potrebno nam je 16 memorijskih ipova SRAM. Svaki doprinosi po 128 8-bitnih rijei to znai da su dva ipa potrebna za 128 16-bitnih rijei. Takvih je parova SRAM (parove emo nazivati i skup; slika 9.12) potrebno 8 da bismo dobili eljeni kapacitet memorijskog modula. Slika 9.12 prikazuje organizaciju memorijskog modula. Memorijski modul koristi deset adresnih linija (A0 - A9) pri emu sedam najmanje znaajnih adresnih linija (A0 - A6) oznaenih s A; slika 9.12) slui za izbor rijei u svakom ipu SRAM (27 = 128), dok se tri najznaajnija bita 10-bitne adrese dovode na adresni dekoder"1 od 8". Izlazima iz dekodera (CS0 - C57, pri emu je aktivan izlaz iz dekodera logika 0) izabire se jedan od 8 skupova ipova (skup 0 - 7). Svaki od skupova doprinosi 128 16-bitnih rijei. Deset adresnih linija (A0 - A9), dakle slui za izbor 16-bitne rijei u projektiranom modulu. No ako memorijski modul elimo prikljuiti u raunarski sustav koji npr. ima 32-bitnu adresnu sabirnicu (A0 - A31) i time odreen ukupan izravno adresirljivi prostor od 4 G rijei (232), tada moramo memorijskom modulu pridodati adresni dekoder koji e dekodirati preostale 22 adresne linije (A10 - A31) da bi se jednoznano definirao adresni potprostor koji e zauzimati

S. RIBARI - GRAA RAUNALA

279,

r projektirani memorijski modul. Na primjer, ako pretpostavimo da e modul biti smjeten na 1024 najmanje znaajne adrese izravno adresirljivog prostora, tada dodatni adresni dekoder "oslukuje" adresne linije A10 - A31 i ima aktivan izlaz samo ako su sve adresne linije A10 - A31 u logikoj "0". Slika 9.13 prikazuje zahtijevanu sklopovsku preinaku. Izlaz iz logikog sklopa ILI (oznaen sa SMM - Select Memory Module) je logika "0"samo ako su sve adresne linije A 1 0 - A31 u logikoj"0". Aktivno stanje SMM = Oznai izbor memorijskog modula. Izlazi iz logikih sklopova ILI koji na ulazu imaju SMM i CSi; i = 0,1,... ,7 imaju aktivan izlaz (logiku "0") kada je SMM = 0 i CSi = 0 i na taj se nain pristupa rijei u izabranom memorijskom modulu.
W= 16 bita

ciljna memorija (memorijski modul) 10 adresne linije

N'=1K rijei

R/W

.16
dvosmjerna sabirnica podataka

a)
R/W

7
adresne linije

c D _o 00 "D "O c o < 0 "O ( O

memorijsko polje 128x8 bita

8 prikljuci podataka

CS prikljuak za izbor ipa

b) SI. 9.11 Prikaz ciljne memorije; a) memorijski modul; b) graevna komponente

280

9. POGLAVLJE: MEMORIJSKI SUSTAV

R/W skupO

ipO 128x8

CS ^ R/W

16

ip 1 128x8

i
/

CS ~ t skup 1 ^ R/W ip 2 128x8

16 R/W ip 3 128x8 CS i
/

8
/

dvosmjerna sabirnica podataka

t skup 7 ^ RAV ip 14 128x8

16 ^ RAV ip 15 128x8 CS 8

SI. 9.12 Organizacija memorijskog modula 1K x 16 bita uporabom graevnih komponenti 1 2 8 x 8 bita SRAM

S. RIBARI - GRAA RAUNALA

281,

adresna sabirnica A31 A M . . . A n A10 A9 Ag . . . A2 A, A0

za izbor rijei u memorijskom modulu

za izbor adresnog potprostora izbor rijei u skupu (izbor skupova 0 - 7)

izbor memorijskog modula SMM CS7

cso

prema CS skupine 7

prema CS skupine 0

Si. 9.13 Sklopovska preinaka potrebna za prikljuenje memorijskog modula u adresni potprostor 00000000,,. <i6) ne) - 000003FF,,

Primjer 9.2. Projektirajmo memorijski modul kapaciteta 1K 64 bita (slika 9.14 a)} uporabom graevnih komponenti tj. memorijskih ipova koji imaju koincidentno adresiranje i kapacitet 1Kb (organiziranih u memorijskom polju 32 x 32) (slika 9.14 b)). Odredimo broj potrebnih graevnih komponenti: p = [N7 N] = [1024/1024] = 1 i q = f w ' / w ] = [ 6 4 / 1] = 64. Potrebna su nam 64 memorijska ci pa. Slika 9.15 prikazuje organizaciju memorijskog modula. Svaki od memorijskih ipova doprinosi po jedan bit u 64-bitnoj rijei. Organizacija memorijskog modula je 21/2 D (vidi sliku 9.8). Uoavamo da graevna komponenta memorijski ip (slika 9.14 b)) ima dvije jednosmjerne 1-bitne linije podataka (data out; dota in). Ako se memorijski modul prikljuuje na dvosmjernu sabirnicu podataka, onda se trebaju dodatnim sklopovima parovi jednosmjernih linija pretvoriti u jednu dvosmjernu liniju. To se postie uporabom posebnih sklopova koji se nazivaju dvosmjerni sabirniki pogonski sklopovi (engl. bus driver) ili dvosmjerna sabirnika pojaala koja se temelje na sklopovima s tri stanja. Slika 9.16 prikazuje detalj takvog sklopa (samo za jedan par linija podataka). Kada je upravljaki signal R / W - 1 (operacija itanja), omoguen je gornji sklop s tri stanja (slika 9.16 b)) i izlazni se 1-bitni podatak (data out) prosljeuje na dvosmjernu sabirniku liniju podatka (podatak se usmjerava prema procesoru). Donji je sklop s tri stanja onemoguen i njegov je izlaz u stanju visoke impedancije (linija data in je elektriki odspojena od sabirnike linije podataka). Kada je upravljaki signal R/ / - 0 (operacija pisanja), aktivan je donji sklop s tri stanja (slika 9.16 c}) i ostvaren je protok podatka s dvosmjerne sabirnice na liniju data in. Istodobno se gornji sklop s tri stanja nalazi u stanju visoke impedancije.

^ 282

9. POGLAVLJE: MEMORIJSKI SUSTAV

w' = 64 bita

A, J
"1 od 32" adresne linije ciljna memorija (memorijski modul)
1024

adresni dekoder stupca N' " rijei "O o a ti

ai

^
32 x 32 bita

dato out
izlazni podatak

R/W

4 - * -o vn a > T 3
64/

,
1

data in
ulazni podatak

dvosmjerna sabirnica podataka a)

-1 od 32'

CS

RAV b)

SI 9.14 a) memorijski modul kapaciteta 1K 64 bita; b) graevna komponenta - memorijski ip s koincidentnim adresiranjem 1K bita

dekoder

A1 -se

t u T J
R/W

ipO (32 x 32)

bit#0

-f-

R / W

dekoder

A1
c <

ip 1 (32 x 32)

bit#l
64

7 3 < 1 5
TJ

i/>

S < u

cs

R A V

dvosmjerna sabirnica podataka

A 2
dekoder

A1

ip 63 (32x32)

bi63 R A V

preostale adresne linije

.2 0 ) I0 > i

1
>
/

C S

SL 9.15 Organizacija memorijskog modula 1K 64 bita

S. RIBARI - GRAA RAUNALA

283,

R/W=T

data out

R/W = "1"

data in

dvosmjerna sabirnika linija podataka b)

R/W = "0"

<ro+

data out

R/W = "0"

H-Cn!

data in

dvosmjerna sabirnika linija podataka

C)
SI. 9.16 a) dvosmjeran sabirniki pogonski sklop (detalj); b) tok 1-bitnog podatka - operacija itanja; c) tok 1-bitnog podatka - operacija pisanja

^ 284

9. POGLAVLJE: MEMORIJSKI SUSTAV

9.5. PORODICE DRAM


Da bi premostili jaz izmeu brzine procesora i memorije, posebno DRAM - koja ima veliki kapacitet, ali je u odnosu na brzinu sklopovlja procesora spora, proizvoai memorijskih komponenti pokuavaju razliitim organizacijskim zahvatima u memorijskim ipovima kompenzirati relativno dugo vrijeme pristupa pa se stoga pojavljuju brojna poboljanja dinamikih RAM memorija: i) FPM DRAM (Fast Page Mode DRAM) - izvedba DRAM-a tako da se na temelju jedne adrese retka moe pristupiti razliitim pohranjenim podacima samo mijenjanjem adrese stupca. Vrijeme pristupa skrauje se u sluaju pristupa lokacijama sa slijednim adresama; ii) EDO DRAM (Extended Data-Out DRAM) - uporabom upravljakog ulaza Of (Output Enable) kojim se upravlja izlaznim meuspremnikom (slika 9.9) neovisno o upravljakom signalu CAS, omogueno je ranije zapoinjanje sljedeeg pristupa memoriji s tim da izlazni podatak iz DRAM bude jo uvijek valjan. Drugim rijeima, EDO DRAM moe zapoeti dohvatom sljedeeg bloka podataka iz memorijskog polja istodobno sa slanjem prethodnog dohvaenog bloka podataka procesoru; iii) DRAM je po svojoj prirodi asinkroni sklop koji ima asinkrono suelje to znai da odgovara na promjene upravljakih signala neovisno o internom signalu vremenskog voenja. SDRAM (Synchronous DRAM) ima sinkrono suelje i njegovo je djelovanje sinkronizirano internim signalom vremenskog voenja. SDRAM je interno organiziran tako da ima vei broj memorijskih polja (memorijskih banaka) te sklopove za vremensko voenje i sloenije programirljive upravljake sklopove od onih u FPM DRAM ili EDO DRAM, tako da omoguuju prijenos podataka u snopu (engl. burst mode) sa slijednih memorijskih lokacija. Veliina je snopa podataka kao i nain rada SDRAM programirljiv. Na primjer, veliina snopa moe biti 1,2,4 ili 8 podataka ili se moe prenijeti tzv. cijela stranica od 512 ili 1024 podatka. Na primjer, SDRAM oznaka 5-1-1-1 prvi podatak nudi nakon pet perioda internog signala vremenskog voenja, ali nakon toga sljedea tri podatka daje nakon svake periode internog signala vremenskog voenja; iv) DDR SDRAM (Double Data Rate Synchronous DRAM) je izvedba SDRAM tako da su podaci raspoloivi na rastuem i padajuem bridu internog signala vremenskog voenja i time je poveana brzina prijenosa, odnosno memorijska pojasna irina za faktor vei od dva u odnosu na SDRAM. Na primjer, 256 Mb SDRAM oznake 48LC64M4A2 (100 MHz) tvrtke Micron ima brzinu prijenosa 133 Mbps (M bita u sekundi), dok 512 Mb DDR SDRAM oznake 46V128M4 (200 MHz) iste tvrtke ima brzinu prijenosa 400 Mbps; v) DDR2 SDRAM (Double Data Rate Two Synchronous DRAM) je poboljana verzija DDR SDRAM i ima brzinu prijenosa od 800 Mbps pri frekvenciji internog signala vremenskog voenja od 400 MHz; vi) DDR3 SDRAM je poboljana verzija DDR2 SDRAM i podatke prenosi dvostruko veom brzinom u odnosu na DDR2 SDRAM, tj. 1,6 Gbps. DDR3 SDRAM imaju takvu gustou pakovanja bitova da doseu kapacitet od 8 Gb i slue za izgradnju memorijskih modula kapaciteta od 16 GB.

S. RIBARI - GRAA RAUNALA

285,

Primjer 9.3. DRAM ipovi izraeni su jednakom tehnologijom kao i procesor i pakirani su u plastina ili keramika kuita. Vei se broj takvih ipova smjeta na tiskanu ploicu koja se kao memorijski modul ukljuuje u matinu plou npr. osobnog raunala. Tako ostvareni memorijski moduli nose oznaku DIMM (Dual in-line memory module] i ovisno o broju prikljuaka (engl. pin) i vrsti memorijskih ipova kao graevnih komponenti nose razliite oznake. Na primjer, 240 prikljuni DDR3 DIMM oznake PC-3 8500 ima 64-bitni put podataka, odnosno 72-bitni ako koristi kod za ispravljanje pogreaka (ECC - Error Correcting Code) i kapacitet od 4 GB.

9.6. UBRZANJE RADA MEMORIJE


Gustoa pakiranja (broj bitova po jedinici povrine silicijskog ipa) i kapacitet memorijskih ipova DRAM i SRAM, zahvaljujui napretku tehnologije visokog stupnja, dramatino raste. Poveanje njihove brzine, meutim, nije takvo. Pojavom sve brih procesora i porastom frekvencije signala vremenskog voenja raskorak izmeu brzine procesora i memorije sve je vei. Taj je raskorak izraeniji kada se koriste memorije temeljene na DRAM ipovi ma jer SRAM ipovi imaju veu brzinu kojom uspijevaju "pratiti" rad procesora, naroito ako je memorija ostvarena na samom procesorskom ipu kao priruna memorija razine 1 ili 2. Takva je memorija, meutim, malog i nedovoljnog kapaciteta. Latentnost memorije postaje usko grlo suvremenih raunala. Postoje dva osnovna naina premoivanja jaza ili raskoraka izmeu brzine procesora i memorije: i) uporaba duljih memorijskih rijei; ii) istodobni dohvat vie od jedne memorijske rijei.
ua sabirnica

multipleksor

meuspremnik
A
/

'n

'n

' n

' n

1f memorija s internom duljinom rijei S-n SI. 9.17 Organizacija memorije koja ima internu duljinu rijei S n

i) Memorija se moe organizirati tako da je duljina interne memorijske rijei w viekratnik duljine rijei procesora n: w = S n, pri emu je S > 1 .Takva organizacija omoguuje dohvat ili pristup memorijskoj rijei duljine S n bita tijekom jedne memorijske periode. Slika 9.17 prikazuje organizaciju takve memorije. Memorija mora imati brze sklopove koji tijekom operacije itanja omoguuju pristup rijei duljine S - n bita te njezino rastavljanje na S dije-

^ 286

9. POGLAVLJE: MEMORIJSKI SUSTAV

lova koji se prosljeuju procesoru, i to za vrijeme jedne memorijske periode. Tijekom operacije pisanja sklopovi moraju prihvatiti do S n-bitnih rijei, upakirati ih u jednu (S n)-bitnu rije i pohraniti je, i to za vrijeme jedne memorijske periode. ii) Memorija koja omoguuje istodobni dohvat vie od jedne memorijske rijei naziva se memorija s prepletanjem (engl. interleaved memory). Memorija se sastoji od S memorijskih modula (koji se nazivaju i memorijskim bankama, engl. memory bank) M^ M v ..., M s ^ pri emu je S = 2k (slika 9.18). Svaki od tih modula zauzima dio memorijskog adresnog prostora i ima svoje sklopove za dekodiranje adrese. Memo rij ski moduli su tako ureeni da i-ti modul sadrava samo one rijei kojima su adrese: p S + i, pri emu je 0 ^ p = s N -1, gdje je N broj rijei u jednom memorijskom modulu. Adresa koja se alje memoriji duljine je m + 1 bita i ima oblik:
a

m am-l

k+1 a k ak-l 3k-2 -

a a

i (y

pri emu m - k + 1 najznaajnijih bitova adrese istodobno adresiraju po jednu rije u svakom od S memorijskih modula. Kapacitet svakog pojedinom memorijskog modula je
N = 2(m-k+1).
vrlo iroka sabirnica

adresa

adresa

m-k+1 bitova adrese

k
bitova adrese

SI. 9.18 Organizacija memorije s prepletanjem

S. RIBARI - GRAA RAUNALA

287,

k najmanje znaajnih bitova adrese ak-1 ak_2... a1 a^ slui za izbor svake od S dohvaenih rijei. Istodobnim radom svih S memorijskih modula poveava se broj rijei kojima se moe pristupiti tijekom jedne memorijske periode za faktor S. Slika 9.18 prikazuje organizaciju memorije s prepletanjem. Slika 9.19 prikazuje vremenski dijagram za memoriju s prepletanjem. Vidimo da se u vremenu koje odgovara vremenu pristupa jednom memorijskom modulu istodobno dohvaa S rijei koje se za vrijeme sljedeeg pristupa memoriji, a na temelju najmanje znaajnih k bitova adrese prosljeuju sa iroke sabirnice na sabirnicu sustava.
pristup 1 pristup 2 pristup 3

memorijski ^ modul

memorijski modul

memorijski modul

^
1

memorijski modul izlaz

M, iiiii - - iiiiiivrijeme

rije 0 rije 1 rije 2 SI. 9.19 Vremenski dijagram za memoriju s prepletanjem rije s-1

rije 0 rije 1 rije s-1

Ocijenimo ubrzanje rada tako organizirane memorije. Ako je vrijeme pristupa memorijskom modulu tA, odnosno ako je vrijeme memorijske periode t M i ako je pozivanje na memoriju takvo da su adrese slijedne: 0,1,2,..., odnosno q + 0, q + 1, q + 2,..., tada je vrijeme potrebno za dohvat (ili pristup) rijei: V^M/S' gdje je S broj memorijskih modula. No ako je pozivanje na memoriju takvo daje adresni slijed uniformno raspren s faktorom rasprenosti r adresa: 0, r, 2r,..., odnosno q + 0,q + r,q + 2r,...,

^ 288

9. POGLAVLJE: MEMORIJSKI SUSTAV

pri emu je r ^ S , tada je prosjeno vrijeme pristupa rijei, odnosno vrijeme memorijske periode jednako: Vf=(|'xtM)/SAko je faktor rasprenosti r vei ili jednak S, tada jet Mef = t M i nema poveanja brzine memorije (naravno samo tijekom takvog slijeda adresa). Primjer 9.4. Pretpostavimo daje memorija s prepletanjem organizirana u 16 memorijskih modula ili banaka pri emu je kapacitet svakog od modula jednak 4 M rijei. Sljedeim je parametrima opisana memorija: k = 4, S = 2 k = 16; i N = 2(m k+1) = 4M; (m - k + 1) = 22, m = 25. Adresa: a a ,... a, , a. a,, a.,... a,aft je: a,c a^... ac a,, a,a, ataA. ^ 0J 25 24 5 4 3 2 1 0 Modul MQ sadrava rijei kojima su adrese p S + i, pri emu je i = 0: 0,16,32,64,..., 16 (222 -1). Modul M1 sadrava rijei kojima su adrese p S + i, pri emu je i = 1: 1, 17, 33,65,..., 16 (222 ~1) + 1.
m m-1 k+1 k k-1 k-2

i-ti memorijski modul M. sadrava rijei kojima su adrese: i, 16 + i, 32 + i, 64 + i,...., 16 (222 -1) + i. Znaajnijih 22 bita adrese a25 a24... a5 a4 istodobno se dovodi na svih 16 memorijskih modula M0 do M15. Budui da je svaki od njih adresiran, svaki e od njih istodobno postaviti po jednu rije duljine w bita na iroku sabirnicu (slika 9.18), i to u vremenu koje odgovara vremenu pristupa jednom memorijskom modulu. etiri najmanje znaajna bita adrese a3a2 a1 a0 posluit e za izbor jedne od rijei koja e se proslijediti na uu sabirnicu. Na primjer, ako adresni bitovi a25 a24... a5 a4 imaju vrijednosti 00001E (heksadekadno):
a

25

24

23

22

21

20

19

18

17

T6

15

14

13

12

11

10

1 0

i ako se izvodi operacija itanja, tada e na irokoj sabirnici postaviti istodobno esnaest rijei kojima odgovaraju slijedne adrese zapoevi od 00001E do 00002D (zbog naina pohrane rijei u memorijskim modulima). Pomou etiri najmanje znaajna bita adrese a3a2 a1a0 izabirat e jedna od 16 raspoloivih rijei. Memorija s prepletanjem moe posluiti kao osnova za izvedbu protone memorije (engl. pipeline memory) koja je preduvjet poveanja performanse procesora koji je realiziran kao protoni procesor (engl. pipeline processor) - o emu e biti govora u kasnijim poglavljima. Postoji i jedan drugi pristup izvedbi protone memorije koji se temelji na injenici da se ukupno vrijeme koje odgovara latentnosti memorije moe razdijeliti na vremena koja su potrebna za obavljanje pojedinih slijednih akcija u memorijskom modulu kao to su: dekodiranje adrese retka, itanje retka iz memorijskog polja, upisivanje rijei ili prosljeivanje rijei na izlaz (na temelju adrese stupca) i upisivanje rijei natrag u memorijsko polje (ako se to zahtijeva). Ako se svakom od tih slijednih koraka dodijeli autonomni sklop, koji se naziva protoni segment (engl. pipeline stage), novi pristup memoriji moe zapoeti odmah nakon to se aktivnost prethodnog pristupa preseli na sljedei protoni segment tako da je vrijeme pristupa jednako vremenu trajanja aktivnosti u jednom protonom segmentu. Drugim rijeima, ako je memorija izvedena tako da ima etiri protona segmenta, onda je

S. RIBARI - GRAA RAUNALA

289,

latentnost etiri puta kraa od latentnosti "klasine" izvedbe memorije. Ovaj se pristup, uz dodatak protonih segmenata za adresnu translaciju i protonog segmenta za usporeivanje bita valjanosti (vidi poglavlje Protonost), koristi u izvedbi prirunih memorija.

9.7. KOD ZA ISPRAVLJANJE POGREAKA


U primjeru 9.3. spomenuli smo kod za ispravljanje pogreaka (ECC - Error Correcting Code). 0 emu je rije? Poluvodiki memorijski moduli podloni su pogrekama. Posebno su osjetljive dinamike memorije kod kojih se pristupom memorijskim elijama i nabijanjem kondenzatora izaziva pad napona na linijama za napajanje. Uz to, dinamike su memorije osjetljive na radioaktivno zraenje. Plastina ili keramika kuita u kojima su smjeteni memorijski silicijski ipovi sadravaju u tragovima radioaktivne materijale.Ti materijali zrae alfa estice koje mogu "pokvariti" podatke pohranjene u ozraenim memorijskim elijama, odnosno izazvati gubitak naboja na kapacitetu neke elije. Openito, pogreke u memorijskim modulima mogu se klasificirati na tzv. "tvrde" pogreke (engl. hard failure) i "meke" pogreke (engl. soft failure). Tvrde pogreke su one koje se odnose na fizike neispravnosti jedne ili veeg broja memorijskih elija koje trajno ostaju u stanju "1" ili "0" ili pak mijenjaju nekontrolirano svoja stanja. Meke pogreke su one koje se dogaaju rijetko i nisu ponovljive te nisu posljedica fizike neispravnosti memorijske elije. Primjer takve pogreke je promjena sadraja memorijske elije uslijed alfa zraenja ili sluajnog pada napona. Da bi se poveala pouzdanost memorijskog sustava, a time i pouzdanost raunarskog sustava, memorijske jedinice imaju posebne sklopove za otkrivanje 1 ispravljanje pogreaka. Slika 9.20 prikazuje naelnu organizaciju memorijske jedinice sa sklopovima za otkrivanje i ispravljanje pogreaka.

rije (n+k)-bita

SI. 9.20 Organizacija memorijske jedinice sa sklopovima za otkrivanje i ispravljanje pogreaka Tijekom upisa n-bitnog podatka u memoriju, na temelju njegovih bitova generira se kbitni ispitni kod (engl. check-bitcode) u generatoru ispitnog koda.Taj se ispitni kod takoer pohranjuje u memoriju. Dakle, u memoriji je pohranjen podatak i njemu pridruen ispitni kod, odnosno rije duljine n + k bita. Kada se dohvaa (ita) pohranjeni podatak, onda se

^ 290

9. POGLAVLJE: MEMORIJSKI SUSTAV

k-bitni ispitni kod koristi za otkrivanje i ispravljanje pogreke, i to na sljedei nain: ponovo se n bita podatka koriste za novo generiranje ispitnog koda duljine k bita te se taj novo odreeni kod usporeuje s onim k-bitnim ispitnim kodom koji je pohranjen u memoriji tijekom upisa n-bitnog podatka. Usporedba daje jedan od tri ishoda u nastavku. i) Nije otkrivena pogreka. Dohvaeni se n-bitni podatak smatra ispravnim podatkom i upuuje se na sabirnicu. ii) Pogreka je otkrivena, ali se moe i ispraviti. Pogreka se ispravlja tako da se n-bitni podatak i bitovi za ispravljanje pogreke (engl. error correction bit) alju u sklop za ispravljanje pogreke koji e generirati ispravan n-bitni podatak. Taj e se podatak proslijediti na sabirnicu. iii) Pogreka je otkrivena, ali se ne moe ispraviti. Memorijska jedinica alje poruku o neispravnom podatku. Zatitni kodovi koji se koriste mogu biti kodovi za otkrivanje pogreka (engl. error-detecting code) i kodovi za otkrivanje i ispravljanje pogreaka. Najjednostavniji kod koji se vrlo esto koristi je paritetni kod (engl. parity code). Primjenom paritetnog kodiranja, utvruje se broj jedinica u rijei (podatku). Ako je broj jedinica neparan - rije ima neparni paritet, inae rije ima paran paritet. Kada se rije pohranjuje u memoriju, pohranjuje se i paritetni bit (1 za neparni ili 0 za parni paritet rijei). Kada se rije ita iz memorije, ita se i paritetni bit. Ako se paritet proitane rijei ne podudara s pohranjenim bitom pariteta, dogodila se pogreka. Jednobitna paritetna shema moe otkriti najvie jednu pogreku u podatku. Ako su dva bita neispravna, 1-bitna paritetna shema ne moe otkriti pogreku. No takva shema otkriva pogreku i u sluajevima kada se ona dogodila za neparan broj bitova. Kodovi za otkrivanje i ispravljanje pogreaka u memorijskim se sustavima obino klasificiraju na temelju broja neispravnih bitova u rijei koji mogu biti otkriveni i broja bitova koji mogu biti ispravljeni. Tako govorimo o kodu za ispravljanje jedne pogreke SEC - Singleerror-correcting ili o kodu za ispravljanje jedne pogreke i otkrivanju dvostruke pogreke SEC-DED - Single-error-correcting - double-error-detecting. Kod SEC-DED veinom se rabi u memorijskim sustavima. Kodovi za otkrivanje i ispravljanje pogreaka koji se rabe u memorijskim sustavima obino se temelje na modificiranim Hammingovim kodovima. Cijena koja se plaa da bi se kodovima za otkrivanje i ispravljanje pogreaka poveala pouzdanost memorijskih sustava jest poveanje duljine memorijske rijei (ujedno i kapaciteta memorije). Tako se, na primjer, za 64-bitni podatak ako se koristi shema SEC (temeljena na modificiranom Hammingovom kodu) poveava duljina rijei za 7 bitova. Ako se za istu duljinu podatka (64 bita) rabi shema SEC-DED, zahtijeva se dodatnih osam bitova pa je ukupna duljina memorijske rijei 72 bita.

9.8. SEKUNDARNA MEMORIJA


Sekundarna memorija, koja je obino naziv za jedinicu magnetskog diska, jedinicu magnetske vrpce i jedinicu optikog diska, ima tri vane dobre znaajke: vrlo veliki kapacitet, neizbrisivost i malu cijenu po pohranjenom bitu podatka. Naalost, ima i jedan nedostatak - relativno veliko vrijeme pristupa (tablica 9.1.). Bez obzira na kapacitet glavne memorije koji je premaio sva oekivanja i snove programera u ranoj fazi razvoja raunarskih sustava, njezin kapacitet nije dovoljan za pohranu podataka i programa koji su potrebni korisniku. ak i uz pretpostavku da je mogue pohraniti takvu veliku koliinu podataka, izbrisivost

S. RIBARI - GRAA RAUNALA

291,

glavne memorije, koja je ostvarena kao poluvodika memorija, predstavlja nepremostivu prepreku trajnoj pohrani. Izbrisivost poluvodike memorije, odnosno gubitak sadraja kod ispada napajanja, zahtijeva rezervnu pohranu (engl. back-up) podataka i programa i u sluaju kada kapacitet memorije nije sredinji problem. Sekundarna memorija ostvarena kao magnetska diskovna memorija ima dvojaku ulogu - ona predstavlja proirenje glavne memorije (zahvaljujui konceptu virtualne memorije, poglavlje 11.) i slui za rezervnu pohranu podataka i programa. U ovom emo odjeljku opisati osnovne znaajke magnetske diskovne memorije te se ukratko osvrnuti na magnetske vrpaste memorije i optike memorije.

9.8.1. MAGNETSKA DISKOVNA MEMORIJA


Jedinica magnetskog diska predstavlja sustav za sebe. Ona se moe promatrati kao sustav podijeljen na dva podsustava: i) podsustav koji ine fizike komponente kao to su glave za itanje i pisanje, ruice na kojima se nalaze glave, jedna ili vie krunih ploa presvuenih magnetskim materijalom (magnetski diskovi), specijalan istosmjerni DC (engl. direct current) elektromotor (engl. spindle motor) za okretanje osovine na kojoj su uvreni diskovi. Obino se ovaj podsustav naziva HDA (Head Disk Assembly) i sadrava jo samo elektroniki sklop AEM (Arm Electronics Module) koji ostvaruje suelje upravljake jedinice diska (engl. Disk Controller) i glave za itanje i pisanje; ii) elektroniki podsustav (engl. Drive Electronics) koji se sastoji od upravljake jedinice diska, memorije, sklopova za zapis i itanje podataka (engl. Recording Channel, Reading Channel), sklopova za upravljanje ruicama i sklopovima za upravljanje istosmjernim elektromotorom. Posebnu ulogu ima upravljaka jedinica diska. Ona pomou suelja ostvaruje vezu jedinice magnetskog diska s procesorom. Suelje podrava rukovanje i izmjenu podataka, u skladu s protokolom, izmeu jedinice magnetskog diska i procesora. Komunikacija se ostvaruje standardnim sueljem kao stoje IDE (Integrated Drive Electronics), E-IDE (Enhanced IDE), SCSI (Small Computer System Interface), ATA (Advanced Technology Attachment) ili SATA (Serial ATA). Na taj se nain ostvaruje relativno jednostavno logiko suelje koje doputa procesoru da promatra disk kao jo jednu memorijsku jedinicu (istina, sporiju od glavne memorije) u raunarskom sustavu. Upravljaka jedinica diska prima naredbe od procesora, rasporeuje izvravanje tih naredbi i izvjetava procesor o zavretku operacija uzrokovanih tim naredbama. Upravljaka jedinica ostvaruje takoer suelje s podsustavom HDA te pomou sklopova za upravljanje ruicama (na kojim se nalaze glave za itanje i pisanje) i sklopova za upravljanje istosmjernim elektromotorom izvodi postupak pretraivanja i nalaenje mjesta (sektora) na disku na kojem e se obaviti operacija itanja (dohvata) ili pisanja (pohrane) podataka. Otkrivanje i ispravljanje pogreaka (ECC) te formatiranje podataka takoer je jedan od temeljnih zadataka upravljake jedinice diska. Uz to, upravljaka jedinica upravlja diskovnom prirunom memorijom (engl. disk cache) koju ima veina suvremenih diskovnih jedinica. Uputanja diskovne jedinice u rad te njezino iskljuivanje takoer je u nadlenosti upravljake jedinice diska. Upravljaka jedinica diska je, zapravo, raunalo iji je blok-dijagram prikazan na slici 9.21.

^ 292

9. POGLAVLJE: MEMORIJSKI SUSTAV

procesor

SI. 9.21 Blok-dijagram upravljake jedinice diska

Primjer 9.5. Opiimo aktivnosti upravljake jedinice diska tijekom itanja. Nakon primitka naredbe za itanje podataka s diska, upravljaka jedinica mora potraiti i nai zahtijevani blok podataka na disku, proitati ga, obaviti provjeru ispravnosti i moebitno ispraviti pogreke, formatirati ga te pohraniti ga u spremnik, i konano, obavijestiti procesor daje naredba obavljena.

S. RIBARI - GRAA RAUNALA

293,

9.8.2 ORGANIZACIJA PODATAKA NA DISKU


Sredinje graevne komponente magnetske diskovne jedinice jesu rotirajua aluminijska ili staklena ploa presvuena magnetskim materijalom i pokretna ruica s glavom za itanje i pisanje. Zahvaljujui magnetskom obliku zapisa diskovna je memorijska jedinica neizbrisiva to znai da pohranjeni podaci ostaju sauvani i nakon prestanka elektrinog napajanja. Jedinica ima jednu do 12 krunih ploa koje su privrene na zajednikoj osovini i vrte se brzinom od 3600 pa sve do 15000 okretaja u minuti (RPM - Revolutions Per Minute). Podaci se zapisuju na obje povrine ploe tako da svaka ploa ima dvije glave za itanje i pisanje. Promjer krune ploe, ovisno o tipu diskovne jedinice, tipino se kree od 2.5 do 9 cm. Primjerice, IBM-va diskovna jedinica Microdrive ima promjer od 1" (inch = 2.54 cm) i kapacitet 8 GB (2006. godina). staza 0 staza C-1

sektor N-1

sektor 0

sektor 1

sektor 2

SI. 9.22 Pojednostavnjeni prikaz organizacije jedne krune ploe magnetskog diska Podaci su zabiljeeni uzdu krunih staza (engl. track) koje ine koncentrine krunice. Broj staza kree se od 10000 do 50000 po jednoj povrini krune ploe. Dogovorno, staze su numerirane tako da staza s najveim polumjerom (vanjska staza) ima indeks 0. Indeks raste do staze s najmanjim radijusom koja ima indeks C-1, gdje je C ukupan broj staza. Sve staze s istim indeksom, ali na razliitim krunim ploama jedinice diska oblikuju cilindar (engl. cylinder). Staza nije fiziki ugravirana u povrinu diska ve predstavlja prsten magnetizira-

^ 294

9. POGLAVLJE: MEMORIJSKI SUSTAV

nog materijala nad kojim na zranom jastuku lebdi glava za itanje ili pisanje (udaljena oko 0.01 |um od povrine ploe). irina staze je samo nekoliko mikrona (10"6 m) i ovisi o veliini glave za itanje i pisanje te preciznosti njezinog radijalnog pozicioniranja. Svaka je staza podijeljena na sektore. Staza tipino sadrava od 100 do 500 sektora. Podaci pohranjeni u sektoru predstavljaju osnovnu jedinicu podataka koji se pohranjuju ili itaju s diska. Sektor tipino pohranjuje 512 bajtova, iako ima izvedbi koje imaju sektore koji pohranjuju i 4096 bajtova. Slika 9.22. prikazuje organizaciju jedne krune ploe diska. Na slici 9.22 vidimo da se staze ne proteu do samog sredita krune ploe zato to se vrlo kratke staze blizu sreditu vrtnje ne mogu djelotvorno iskoristiti. ak i uz to ogranienje, odnos duljina vanjske staze i unutarnje staze je 2:1. Razliite duljine staza razlog su razliitom broju sektora u stazama - unutarnje staze imaju manji broj sektora, dok vanjske staze imaju vei broj sektora. Sektor koji pohranjuje jedinicu podataka (npr. 512 bajtova) organiziran je tako da ima zaglavlje (engl. preamble) koje se sastoji od oko 10 bajtova i koje doputa sinkronizaciju glavi za itanje i pisanje, zatim sadrava tzv. adresnu znaku (duljine nekoliko bajtova) koja oznaava kraj zaglavlja i poetak podataka (npr. 512 bajtova korisnikih podataka kodiranih RLL (Run-Lenght-Limited) kodom tako da se fiziki zapis sastoji od 544 bajtova). Zapisu podataka slijedi polje zatite ECC (Error Correcting Code) tipino duljine oko 40 bajtova. Ovisno o izvedbi, zatitnom polju moe biti pridrueno polje ciklike zatite CRC (Cyclic Redundancy Checksum) ime se poveava integritet korisnikih podataka. Izmeu slijednih sektora u stazi postoji mali razmak (engl. intersector gap). Slika 9.23 prikazuje dio staze s podrobnijom organizacijom sektora.

polje zatite irina \ \ staze \ 4-8 ^m ^--podaci adresna znaka ^ ^ zaglavlje

SI. 9.23 Dio staze s prikazom organizacije sektora Svaki sektor je u diskovnoj jedinici odreen fizikom adresom PBA (Physical Block Address) koja se sastoji od broja cilindra (odnosno broja staze; izmeu 0 i C - 1 , gdje je C ukupan broj staza na jednoj povrini ploe), od broja povrine, odnosno indeksa glave za itanje i pisanje te od broja (indeksa) sektora (izmeu 0 i N -1, gdje je N ukupan broj sektora u stazi). Takav se oblik adrese naziva jo i CHS (Cylinder-Head-Sector) adresa. Na primjer, fizika adresa kojom se jednoznano odreuje podatak pohranjen na disku moe biti C = 26300, H = 4 i S = 432. Adresa CHS, zapravo, predstavlja koordinate podataka u trodimenzional-: nom prostoru. Gustoa zapisa (Gb/cm2) ovisi o gustoi staza (broj_staza/cm) te o linearnoj gustoi bitova j uzdu staze (b/cm) i tipino se kree od 3 do 10 Gb/cm2. Linearna gustoa bitova ovisi o '

S. RIBARI - GRAA RAUNALA

295,

istoi magnetske povrine i kakvoe zraka (ne zaboravimo da glava lebdi nad krunom ploom) i iznosi od 50000 do preko 100000 b/cm. Da bi se postigla velika kakvoa povrine i zraka, veina je diskovnih jedinica tvorniki hermetiki zatvorena da bi se sprijeio ulazak praine. Kada se govori o kapacitetu magnetske diskovne memorije, razlikuje se kapacitet formatiranog diska od neformatiranog. Proizvoai diskovnih jedinica isporuuju formatirane jedinice to podrazumijeva daje inicijalno upisana informacija o stazi i sektoru na svim povrinama te daje provjereno jesu li svi sektori ispravni, odnosno mogu li se u njih upisivati, ali i itati podaci. Ako usprkos uporabi koda za ispravljanje pogreaka nije mogue ispravno pohraniti i proitati podatke iz sektora, onda se taj sektor oznaava kao "lo" (engl. bod sector) tako da se moe izbjei njegovo koritenje od strane operacijskog sustava. Zbog postojanja, zaglavlja, adresne znake, polja zatitnog koda, razmaka izmeu sektora, rezervnih staza koje doputaju "popravak" neispravnih staza i sektora, kapacitet formatirane diskovne jedinice znatno je manji od kapaciteta neformatirane jedinice ija se procjena temelji na gustoi zapisa.

9.8.3. STATIKI I DINAMIKI PARAMETRI DISKOVNE JEDINICE


Pod statikim se parametrima magnetske diskovne jedinice podrazumijevaju parametri koji se odnose na njezin kapacitet: i) povrinska gustoa izraava se brojem bitova po jedinici povrine i rauna se kao: 1 / (razmak izmeu bitova x razmak izmeu staza); ii) maksimalna povrinska gustoa jest gustoa koja se odnosi na podruje staze s najmanjim rad iju som; iii) maksimalna linearna bitovna gustoa jest bitovna gustoa zapisa po jedinici duljine za stazu s najmanjim radijusom; iv) prosjena bitovna gustoa je ukupan kapacitet povrine podijeljen s ukupnom povrinom predvienom za zapis podataka; v) neformatirani kapacitet jest ukupan broj bitova po sektoru pomnoen s brojem sektora na disku; vi) formatirani kapacitet diskovne jedinice rauna se kao: (broj_bajtova_podataka / sektor) x (broj_sektora / staza) x (broj_staza / povrina) x (broj_povrina); Primjer 9.6. Izraunajmo neformatirani kapacitet diskovne jedinice za koju su poznati sljedei podaci: diskovna jedinica ima dvije krune ploe s 20000 cilindara, prosjeno 520 sektora po stazi te 544 bajtova po sektoru. Dvije krune ploe imaju ukupno 4 povrine za zapis podatka. Kapacitet neformatirane diskovne jedinice iznosi: 4 x 20000 x 520 x 544 = 2.263 x 1010 bajtova, odnosno izraeno u GB: (2.263 x IO 10 )/2 30 = 21.076 GB. Uz pretpostavku da se oko 10% od ukupnog kapaciteta gubi na razmake izmeu sektora, zaglavlja, adresne znake i na podruje zatite (CRC i EEC) formatirani kapacitet diskovne jedinice bio bi oko 18 GB.

^ 296

9. POGLAVLJE: MEMORIJSKI SUSTAV

Dinamiki parametri diskovne jedinice odnose se na vrijeme pristupa podacima tijekom operacije pisanja ili itanja. Vrijeme pristupa odreuje se na temelju triju operacija: i) pozicioniranje glave za itanje i pisanje na odgovarajuu stazu.Ta se operacija naziva traenje (engl. seek), a vrijeme potrebno za postavljanje glave na eljenu stazu naziva se vrijeme traenja (engl. seek time); ii) pristup eljenom sektoru na stazi. Nakon to se glava nalazi na odgovarajuoj stazi, mora se priekati da se eljeni sektor na temelju rotacije ploe nae pod glavom. Vrijeme potrebno da bi se ta operacija obavila naziva se rotacijska latencija (engl. rotational latency) ili rotacijsko kanjenje. Jasno, ono ovisi o brzini vrtnje krune ploe; iii) prijenos bloka podataka jest posljednja od triju operacija. Vrijeme koje je potrebno za prijenos bloka podataka naziva se vrijeme prijenosa (engl. transfer time). Ono ovisi o veliini sektora, brzini vrtnje i gustoi zapisa podataka na stazi. Vrijeme traenja ovisi o poloaju gdje se glava za itanje i pisanje nalazila kad je zaprimljen novi zahtjev te kako brzo moe putovati s trenutne staze na eljenu stazu. Ove su vrijednosti nepoznate te se koristi srednje ili prosjeno vrijeme traenja. Prosjeno se vrijeme traenja odreuje na temelju ukupnog vremena potrebnog za sva mogua traenja i broja moguih traenja. To vrijeme deklarirano od strane proizvoaa diskova iznosi od 3 ms do 13 ms. Slian je problem i s rotacijskom latencijom. Koristi se srednje vrijeme rotacijske latencije koje se rauna kao vrijeme potrebno za rotaciju ploe za 180 stupnjeva. Na primjer, za brzinu vrtnje od 15000 RPM srednje vrijeme rotacijske latencije iznosi: 0.5 okreta /15000RPM = 0.5 okreta / (15000 RPM / (60 sekunda/minuta)) = 2.0 ms. Brzina prijenosa bloka podataka je izmeu 70 i 125 MB/s. Kada diskovna jedinica koristi posebnu prirunu memoriju, tzv. disk cache brzina prijenosa poveava se na 375 MB/s i vie. Vremenu pristupa koje se sastoji od navedenih triju vremena pridodaje se jo i vrijeme upravljake jedinice diska (engl. controller time) koje zahtijeva upravljaka jedinica za upravljanje diskom i za prijenos podataka izmeu diska i memorije. Uz prethodno navedene dinamike parametre koriste se jo i vrijeme pristupa susjedno; stazi (engl. track-to-track access time) te brzina prijenosa podataka u snopu (engl. burst rate te brzina prijenosa podataka za neko odreeno razdoblje (period) (engl. substained data rate). Brzina podataka u snopu odnosi se na maksimalnu brzinu prijenosa podataka jednom kada je glava za itanje i pisanje prispjela na eljeni sektor. Primjer 9.7. Odredimo prosjeno vrijeme itanja iii pisanja sektora koji se sastoji od 512 bajtova za diskovnu jedinicu koja ima sljedee podatke: brzina vrtnje 15000 RPM, prosjeno vrijeme traenja 3 ms, brzina prijenosa 125 MB/s i vrijeme upravljake jedinice neka je 0.2 ms. Prosjeno vrijeme pristupa jednako je sumi koju ine prosjeno vrijeme traenja, prosjeno vrijeme rotacijske latencije, vrijeme prijenosa i vrijeme upravljake jedinice diska: 3.0 ms + (0.5 okreta /15000 RPM) + (512 bajtova / 125 MB/s) + 0.2 ms = 3.0 + 2.0 + 0.004 + 0.2 = 5.204 ms.

S. RIBARI - GRAA RAUNALA

297,

Primjer 9.8. Tablica 9.3. prikazuje tehnike znaajke dviju diskovnih jedinica (Seagate ST31000340NS i Hitachi DK23DA). Tehnike znaajke Promjer krune ploe (in) Kapacitet formatiranog diska (GB) Broj povrina (glava) Brzina vrtnje (RPM) Prosjeno vrijeme traenja (ms) Minimalno vrijeme traenja (ms) Suelje, brzina prijenosa (MB/s) Tipino podruje primjene Potroak el. energije (W)
Tablica 9.3. Tehnike znaajke dviju diskovnih jedinica

Seagate ST31000340NS 3.5 1000 4 7200 8.5 1.0 SATA (Serial ATA), 375 Posluitelj 15

Hitachi DK23DA40 2.5 40 4 4200 13 3 ATA-5,100 Prijenosno raunalo 2.3

Jedna od vanih znaajki diskovne jedinice jest njezina pouzdanost. Ona se izraava parametrom MTBF (Mean Time Between Failure) koji predstavlja statistiku mjeru srednjeg vremena do kvara. Srednje vrijeme do kvara MTBF za suvremene diskovne jedinice iznosi vie od 1000 000 sati to znai da se moe oekivati da e diskovna jedinica raditi bez kvara vie od 100 godina. Na primjer, MTBF za disk Seagate ST31000340NS iznosi 1200 000 sati.

9.8.4. PRIRUNA DISKOVNA MEMORIJA (ENGL. DISK CACHE)


Priruna diskovna memorija je memorija s izravnim pristupom koja se koristi da bi se smanjio broj pristupa disku. Naelo rada diskovne prirune memorije slino je onom kada procesor pristupa brzoj prirunoj memoriji umjesto sporijoj glavnoj memoriji (poglavlje 10.). Pojednostavnjeno, funkciju prirune diskovne memorije moemo opisati ovako: kad su potrebni podaci pohranjeni u odreenom sektoru, s diska se dohvaaju i susjedni sektori (ili ak svi sektori sa staze nad kojom je pozicionirana glava za itanje i pisanje). Dohvaeni sektori pohranjuju se u prirunu diskovnu memoriju. Ako se, zbog lokalnosti podataka i programa, sada zahtijevaju podaci koji se nalaze u slijednim sektorima koji su susjedni prethodno referenciranom sektoru (to znai da se nalaze se na istoj stazi), oni e biti dohvaeni iz brze prirune diskovne memorije umjesto s diska. Ako se pohrane svi sektori jedne staze u prirunu diskovnu memoriju, skoro se u potpunosti eliminira vrijeme rotacijske latencije diska: kad upravljaka jedinica diska primi zahtjev za pristup sektoru na disku, ona prvo provjerava nalazi li se sektor s traenim podacima u prirunoj diskovnoj memoriji. Ako se sektor nalazi pohranjen u prirunoj diskovnoj memoriji, on se dohvaa iz memorije (operacija itanja) ili se on modificira (operacija pisanja) u prirunoj diskovnoj memoriji. Naravno, u tom se sluaju ne pristupa sektoru na disku. Kad se dogodi da se traeni sektor nalazi u prirunoj diskovnoj memoriji, govorimo o pogotku prirune diskovne

^ 298

9. POGLAVLJE: MEMORIJSKI SUSTAV

memorije (engl. hit of disk cache), a mjeru pogotka izraavamo omjerom pogotka (poglavlje 10.). Eksperimentalno je utvreno da se omjer pogotka za prirune diskovne memorije kree oko 90%. Operacija pisanja u sektor za koji je postignut pogodak obavlja se tako da se obavi modifikacija sektora u prirunoj diskovnoj memoriji, a sadraj sektora na disku modificira se tek u fazi zamjene kada se taj trenutno nekoriteni (neaktivni) sektor vraa natrag na disk. Ova se tehnika obnavljanja sadraja diska nazivakopiranje nazad" (engl. copy back, writeback). Postupak kopiranja nazad opisan je u poglavlju 10. Kad se dogodi promaaj, odnosno kad se traeni sektor ne nalazi u prirunoj diskovnoj memoriji, onda se obavlja zamjena kojom se mora prvo napraviti mjesta za traeni sektor u diskovnoj prirunoj memoriji, i to tako da se neki neaktivni sektori (ili ak svi sektori jedne staze) vrate natrag na disk, a na njihovo mjesto pohrane traeni sektor i njegovi susjedni sektori (ili svi sektori u stazi). Diskovne jedinice imaju prirune memorije kapaciteta od 0.125 MB do 32 i vie MB. Na primjer, diskovna jedinica Seagate ST31000340NS ima prirunu memoriju kapaciteta 32 MB, a Hitachi DK23DA40 prirunu memoriju kapaciteta 2 MB. (Primjer 9.8.). Ubrzanje rada diskovne jedinice uporabom prirune diskovne memorije znaajno je jer je vrijeme potrebno za pretraivanje i dohvat sektora iz prirune memorije u usporedbi s prosjenim vremenom pristupa disku vrlo malo. Primjer 9.9, Ocijenimo ubrzanje rada diskovne jedinice s prirunom diskovnom memorijom Hitachi DK23DA40 iz primjera 9.8. Diskovna jedinica je kapaciteta 40 GB i ima prosjeno 591 sektor po stazi. Sektor je veliine 512 B. Disk, odnosno 2 krune ploe, rotiraju brzinom od 4200 RPM. Prosjeno vrijeme traenja za diskovnu jedinicu iznosi 13.0 ms. Uz pretpostavku da se cijele staze pohranjuju u prirunu memoriju diskovne jedinice i daje omjer pogotka 90%, ocijenimo ubrzanje rada diskovne jedinice u odnosu na diskovnu jedinicu s jednakim parametrima ali bez prirune memorije. Prosjeno vrijeme pristupa sektoru jednako je zbroju prosjenog vremena traenja i prosjenog vremena rotacijske latencije te vremena rotacije nad dijelom staze u kojem se nalazi sektor: 13.0 ms + (0.5 okreta/ 4200 RPM) + ((1 / 591) / 4200 RPM) = 13 + (0.5 okreta / (4200 RPM / 60 sekunda/minuta)) + (1 / 591) / (4200 RPM /60 sekunda/ minuta) = 13 ms + 7.14 ms + 0.02417 ms = 20.16 ms Vrijeme itanje cijele staze (svih sektora u stazi) jednako je zbroju prosjenog vremena traenja i vremena potrebnog za jedan okret diska: 13.0 ms + 1 / (4200 RPM /60 sekunda/minuta) 13 ms + 14.28 ms = 27.28 ms Za omjer pogotka 90 % vrijedi da se deset pristupa sektoru na disku u trajanju 10 x 20.16 ms zamjenjuje pristupom prirunoj diskovnoj memoriji koja je trebala 27.28 ms za dohvat svih sektora sa staze. Ubrzanje iznosi: (10 x 20.16 ms) / 27.28 ms = 7.39

S. RIBARI - GRAA RAUNALA

299,

Stvarno je ubrzanje neto manje jer smo zanemarili da latencije koje se odnose na pohranu i dohvat podataka iz prirune diskovne memorije i aktivnosti upravljake jedinice diska.

9.9. POLJE DISKOVA RAID (REDUNDANT ARRAY OF INEXPENSIVE DISKS)


U posljednja dva desetljea prosjean se kapacitet diskova poveavao 70% godinje, dok su se vrijeme pristupa i brzina prijenosa poboljavali umjerenije - svega 7% godinje. Razlozi tom umjerenijem poboljanju brzine prijenosa jesu ogranienja koja postavljaju elektromehanika svojstva diska - brzina vrtnje krunih ploa i postavljanje ruice s glavom za itanje i pisanje na eljenu stazu. Za ilustraciju napretka diskovne tehnologije navedimo da je krajem devedesetih godina prolog stoljea diskovna jedinica velikih performansi imala kapacitet 9 GB i brzinu vrtnje ploa 5400 RPM. Godine 2005. bile su raspoloive diskovne jedinice kapaciteta 500 GB i brzinu vrtnje 7200 RPM. Postoje primjene raunarskog sustava koje zahtijevaju kapacitet diskovnih jedinica i brzinu prijenosa koje premauju znaajke postojeih najbrih i najveih diskovnih jedinica. Izgradnja diskovnih jedinica jo veeg kapaciteta i brzine tehnoloki je ipak mogua, ali nije ekonomski opravdana. Ekonomski opravdano rjeenje problema velikog kapaciteta i ubrzanje prijenosa podataka temelji se na uporabi viediskovnog sustava koji se sastoji od polja diskova (engl. disk array) kojima se pristupa paralelno. Podaci se pritom mogu rasporeivati po diskovima u polju na razliite naine. U najjednostavnijoj izvedbi nema logike povezanosti pojedinih diskovnih jedinica u polju. Svaka je diskovna jedinica zadrala svoj vlastiti identitet i moe se adresirati nezavisno. Obino se takva organizacija naziva JBOD (Just-a-bunch of disks - samo nakupina diskova). U drugom nainu rasporeivanja cijelo se polje diskova promatra kao jedan logiki adresni prostor koji je podijeljen na blokove vrste duljine koji se nazivaju pojasne jedinice (engl. stripe unit). Te se pojasne jedinice smjetaju na diskove u polju krunim dodjeljivanjem (engl. round-robin) i oblikuju pojas (slika 9.24). Na taj se nain datoteka koja je vea od jedne pojasne jedinice pohranjuje na vei broj diskova u diskovnom polju. Slika 9.24 prikazuje kako se etiri datoteke razliitih veliina pohranjuju u polju diskova koje se sastoji od tri diska. Datoteka a sastoji se od etiri pojasne jedinice i "rasprena"je na sva tri diska tako da disk 0 sadrava dvije pojasne jedinice {al i a4), a preostala dva diska po jednu pojasnu jedinicu - a2 je na disku 1, a3 je na disku 2. Datoteka b, koja se sastoji od sedam pojasnih jedinica, rasprena je na takoer na sva tri diska tako da svaki od diskova sadrava vie pojasnih jedinica. Datoteka cje mala i sastoji se samo od jedne pojasne jedinice koja je smjetena na disku 2. Datoteka d sastoji se od tri pojasne jedinice koje su smjetene na diskovima 0,1 i 2. Poetni motiv organizacije podataka na disku u obliku pojasa koji se sastoje od pojasnih jedinica bio je paralelni prijenos podataka s vie diskova i na taj nain poveanje brzine prijenosa. Ubrzanje se postizalo ako je koliina podataka koji se prenose bila dovoljno velika tako da su pojasne jedinice bile smjetene na vei broj diskovnih jedinica u polju. Na primjer, ako se pristupa datoteci d koja se sastoji od tri pojasne jedinice (d1, d2 i d3) (slika 9.24), tada se istodobno mogu prenijeti podaci sa sva tri diska. Godine 1987. grupa znanstvenika s University of California, Berkeley, predloila je posebnu organizaciju polja diskova koju su nazvali RAID {Redundant Array of Inexpensive Disks) - za-

300

9. POGLAVLJE: MEMORIJSKI SUSTAV

lihosno (redundantno) polje jeftinih diskova. Proizvoai diskovnih jedinica zbog komercijalnih su razloga izmijenili naziv u Redundant Array of Independent Disks - zalihosno polje nezavisnih diskova.
diskO al
pojasna jedinica

disk! a2 bi b4 b7

disk 2 a3 b2 b5 cl - pojas

a4 b3 b6

SI. 9.24 Primjer smjetanja etiriju datoteka, koje se sastoje od razliitog broja pojasnih jedinica u polje od tri diskovne jedinice RAID se pojavljuje u est osnovnih naina izvedbe: od RAID 0 do RAID 5. Svaki od naina izvedbe ima sljedee tri znaajke: i) operacijski sustav vidi RAID skupinu fizikih diskovnih jedinica kao jednu logiku diskovnu jedinicu; ii) podaci su rasporeeni na fizike diskovne jedinice u skupini; iii) zalihosni diskovni kapacitet upotrebljava se za pohranu zatitnog koda koji jama oporavak podataka u sluaju kvara diskovne jedinice. RAID je djelotvorna zamjena za jednu veliku i skupu diskovnu jedinicu (SLED-Single Large Expensive Disk). Opiimo osnovne naine izvedbe RAID. RAID 0 je izvedba koja nema zalihosti pa nije prava lanica porodice RAID. U toj su izvedbi podaci porazdijeljeni na sve diskove u polju. Diskovi su podijeljeni u pojasne jedinice koje predstavljaju osnovnu adresirljivu jedinicu. Pojasne jedinice mogu biti fiziki blokovi, sektori ili neke druge jedinice podataka. One se smjetaju na diskove krunim dodjeljivanjem (engl. round-robin). Slika 9.25 prikazuje logiku diskovnu jedinicu i nain smjetanja pojasnih jedinica na etiri fizike diskovne jedinice diskovnog polja RAID 0 krunim dodjeljivanjem. Skup logiki slijednih pojasnih jedinica, koji se preslikava tako da se tono po jedna pojasna jedinica dodijeli svakom disku u diskovnom polju, naziva se pojas. Ako imamo polje od k diskovnih jedinica, prvih se k logikih pojasnih jedinica fiziki pohranjuje u prvom pojasu, sljedeih k pojasnih jedinica u drugom pojasu itd. Prednost ovakve organizacije jest u tome to se na temelju jednog zahtjeva za prijenosom podataka s diska (ili prema disku) koji se sastoji od k slijednih logikih pojasnih jedinica mogu paralelno prenijeti k pojasnih jedinica to u velikoj mjeri reducira vrijeme potrebno za prijenos podataka. Da bi se to ostvarilo, moraju biti zadovoljena dva uvjeta: i) mora biti osigurana pojasna irina prijenosnog puta izmeu memorije i pojedinih diskovnih jedinica u polju, ii) koliina podataka koja sudjeluje u prijenosu predoena logikim slijednim pojasnim jedinicama mora biti puno vea od veliine pojasne jedinice.

S. RIBARI - GRAA RAUNALA

301,

logiki disk

fiziki disk 0

fiziki d i s k !

fiziki disk 2

fiziki disk 3

pojasna jedinica 0

pojasna jedinica 0

pojasna jedinica 1

pojasna jedinica 2

pojasna jedinica 3

pojasna jedinica 1

pojasna jedinica 4

pojasna jedinica 5

pojasna jedinica 6

pojasna jedinica 7

pojasna jedinica 2 pojasna jedinica 3

pojasna jedinica 8

pojasna jedinica 9

pojasna jedinica 4 pojasna jedinica 5

pojasna jedinica 6 pojasna jedinica 7 programska oprema za upravljanje poljem diskova

pojasna jedinica 8 pojasna jedinica 9

SI. 9.25 Logika diskovna jedinica i etiri fizike diskovne jedinice diskovnog polja RAID 0

Ako su zadovoljena potonja dva uvjeta, tada je paralelni prijenos podataka s viestrukih diskova puno bri od prijenosa s jednog diska velikog kapaciteta. U idealnom bi sluaju postignuto ubrzanje pristupa podacima iznosilo k puta, gdje je k broj diskova u polju. No uviestruenje diskova ima negativan utjecaj na pouzdanost diskovnog sustava - srednje vrijeme do kvara MTBF sada je za faktor k krae. U organizaciji diskovnog polja RAID 1 podvojeni su diskovi u diskovnom polju. Diskovno se polje sastoji od osnovnih diskova od kojih svaki ima svoju kopiju tzv. zrcaljeni disk (engl. mirroreddisk). U toj se organizaciji svaka logika pojasna jedinica preslikava na dva odvojena fizika diska - osnovni disk i njegov zrcaljeni disk (slika 9.26).
diskO disk ] disk 2 disk3 disk 4 disk 5 disk 6 disk 7

osnovni diskovi

zrcaljeni diskovi

SI. 9.26 Organizacija RAID 1 diskovnog sustava

Slika 9.26 prikazuje primjer RAID 1 diskovnog sustava koji se sastoji od etiri osnovna diska i etiri zrcaljena diska. Zalihost takve organizacije je 100%, odnosno ako jedan disk ispadne iz rada, jednostavno se rabi zrcaljeni disk umjesto njega. Oporavak od posljedica ispada

^ 302

9. POGLAVLJE: MEMORIJSKI SUSTAV

postie se instalacijom novog diska i kopiranjem sadraja s odgovarajueg zrcaljenog diska. Osim toga, RAID 1 nudi jo jednu pogodnost: zahtjev za itanjem moe biti posluen od strane jednog od dva diska (osnovnog ili zrcaljenog) koji sadravaju iste podatke ovisno o tome koji od njih zahtijeva krae vrijeme traenja i rotacijske latencije. Na taj se nain moe brzina itanja skoro podvostruiti. Operacija pisanja zahtijeva obnavljanje sadraja obje pojasne jedinice (na osnovnom disku i zrcaljenom disku), meutim, to se moe izvesti paralelno tako da pisanje ne naruava performansu diskovnog sustava. U tom je sluaju vrijeme pohrane podatka na disk jednako onom koje odgovara disku s duljim vremenom traenja i rotacijske latencije. Jedan od osnovnih nedostataka RAID 1 jest njegova cijena - zahtijeva se dva puta vei diskovni prostor od onog koji odreuje logiki disk. ili drugim rijeima - pola od ukupnog raspoloivog diskovnog kapaciteta troi se za postizanje zalihosti. Za razliku od RAID 0 i RAID 1 diskovne organizacije koje obino imaju pojasne jedinice veliine sektora, RAID 2 se koristi pojasnim jedinicama veliine rijei, bajta ili ak bita. Zalihost se u RAlD-u 2 postie uporabom koda za ispravljanje pogreaka (ECC). Na primjer, ako se rabi Hammingov kod (7,4), gdje je 7 broj bitova kodne rijei, a 4 broj bitova koji nose informaciju, tada se tri zaliha diska koriste za svaki od etiri diskova koji pohranjuju po jedan bit podatka (pojasna jedinica je veliine jednog bita). Openito, vrijedi da Hammingov kod kojim se moe ispraviti jedna pogreka (engl. single-bit error-correcting code) u n bitova podataka zahtijeva log2 n + 1 korekcijskih bitova. Na temelju 4 bita podataka (po jedan bit sa svakog diska podataka) raunaju se tri korekcijska bita i svaki se od njih pohranjuje na po jedan od redundantnih diskova. Operacijom itanja istodobno se pristupa svim diskovima u polju. Zahtijevani se podaci zajedno s korekcijskim kodom prosljeuju upravljakoj jedinici diskovnog polja. Ako se dogodila jednostruka pogreka, upravljaka e ju jedinica prepoznati i greku trenutno ispraviti pa vrijeme pristupa nee biti produljeno. Tijekom operacije pisanja mora se pristupiti svim diskovima u polju (osnovnim i onim u koje se pohranjuje korekcijski kod). Organizacija RAID 2 obino zahtijeva da sve osovine pojedinih diskovnih jedinica budu sinkronizirane te da se glave svakog od diskova nalaze na istoj poziciji. Slika 9.27 prikazuje diskovnu organizaciju RAID 2 (4 bita podataka + 3 bita korekcijskog koda). RAID 2 se koristi u okolinama u kojima se oekuju este pogreke. No u izvedbama koje imaju poveanu pouzdanost pojedinih diskova i diskovnih jedinica uporaba organizacije RAID 2 teko se moe ekonomski opravdati.
diskO disk 1 disk 2 disk3 disk 4 disk 5 disk 6

osnovni diskovi

diskovi na kojima se pohranjuju korekcijski kodovi

SI. 9.27 Diskovna organizacija RAID 2

S. RIBARI - GRAA RAUNALA

303

Diskovna organizacija RAID 3 koristi pojasne jedinice veliine bita i po tomu je slina organizaciji RAID 2. No umjesto uporabe Hammingovog koda koristi jednostavnu shemu paritetne zatite pri emu se rauna paritetni bit za skupinu podatkovnih bitova. Paritetna zatita pohranjuje se na odgovarajuu poziciju tzv. paritetnog diska. Na taj se nain zahtijeva samo jedan zalihi disk (paritetni disk), i to bez obzira na to koliko ima osnovnih diskovnih jedinica. Slika 9.28 ilustrira takvu diskovnu organizaciju. U sluaju ispada iz rada jednog od osnovnih diskova pristupa se paritetnom disku i podaci se rekonstruiraju na temelju podataka s preostalih osnovnih diskova. Kad se diskovna jedinca, koja je ispala iz rada, zamijeni novom, podaci koji nedostaju mogu se ponovo pohraniti u toj diskovnoj jedinici. Na primjer, pretpostavimo da imamo diskovno polje RAID 3 od devet diskovnih jedinica: osam osnovnih i jedne paritetne. Svaki od osnovnih diskovnih jedinica pohranjuje po jedan od osam bitova podataka. Pojas ini osam bitova podataka dQ-d7 i paritetni bit p. Paritetna diskovna jedinica pohranjuje paritetni bit p koji se rauna kao: p= d0d1d2d3d4d5d6d7, gdje j e logika operacija ISKLJUIVO ILI. Pretpostavimo da je jedan od osnovnih diskova ispao iz rada, primjerice onaj koji pohranjuje bitove podataka dr Rekonstrukcija podataka izvodi se na sljedei nain: d3 = d0d1d2d4d5d6d7p. Pokaimo daje to zaista tako: ako jednadbi za p na obje strane pridodamo d3, dobivamo: , pd3 = d0d1d2d3d4d5d6 d7 d3 pd3 = dQd1d2d4d5d6d7,jerjed3d3 = 0.

Ako sada potonjoj jednadbi s lijeve i desne strane dodamo p , dobivamo: d3 = d0d1d2d4d5d6d7p. Vidimo da se zaista sadraj u pojasu podataka u bilo kojem od osnovnih diskova u polju moe rekonstruirati na temelju preostalih podataka u pojasu.
diskO disk 1 disk 2 disk 3 disk 4

11

12
16

15 19
disk na k o j e m se p o h r a n j u j u paritetni b i t o v i

o s n o v n i diskovi

SL 9.28 Diskovna organizacija RAID 3

U diskovnoj organizaciji RAID 3 podaci su raspreni u vrlo male pojasne jedinice pa stoga RAID 3 postie vrlo velike brzine prijenosa. Jednim se zahtjevom izvodi istodobni prijenos podataka sa svih osnovnih diskova.

^ 304

9. POGLAVLJE: MEMORIJSKI SUSTAV

Diskovna organizacija RAID 4 (slika 9.29) slina je organizaciji RAID 3 po tome to za korekciju jednostrukih pogreaka koristi jedan paritetni disk. No umjesto pojasne jedinice veliine bita koristi se sektor. Na primjer, ako je svaka pojasna jedinica duljine n bajtova, za sve se pojasne jedinice podataka u pojasu izvodi operacija ISKLJUIVO ILI i dobiva se n bitova duga pojasna jedinica koja se pohranjuje na odgovarajuu poziciju paritetnog diska. Pri ispadu iz rada jednog od diskova mogu se rekonstruirati podaci pokvarene pojasne jedinice uz pomo pripadne pojasne jedinice paritetnog diska.
diskO disk 1 disk 2 disk3 disk 4

p(0-3) p(4-7) p(8-11)


P02-15)

osnovni diskovi SI. 9.29 Diskovna organizacija RAID 4

paritetni disk

Diskovna organizacija RAID 5 organizirana je slino kao i RAID 4, samo to su paritetne pojasne jedinice rasporeene po svim diskovnim jedinicama (slika 9.30).
disk 0 disk 1 disk 2 disk 3
disk 4

p(0-3)

11

15 19 p(20-23)

p(28-31) SI. 9.30 Diskovna organizacija RAID 5

Osim est osnovnih izvedbi diskovnih organizacija RAID postoji i vie inaica, na primjer RAID 6 (organizacija sa zatitom od dvostrukog kvara), RAID 0 + 1 (RAID 01) i RAID 1 + 0 (RAID 10) (sloeni diskovni sustavi koji kombiniraju znaajke RAID 0 i RAID 1) te RAID sustavi koji kombiniraju razliite osnovne RAID izvedbe (RAID 0 + 5, RAID 5 + 0 (RAID 50), RAID 1 + 5 (RAID 15)).

S. RIBARI - GRAA RAUNALA

305,

9.10. SAVITLJIVI DISK (ENGL. FLOPPY DISK)


Savitljivi disk ili disketa je zamjenjiva ili premjestiva (engl. removable) sekundarna memorija kojom se podaci mogu prenositi izmeu raunarskih sustava. U uporabi se savitljivi disk nalazi od ezdesetih godina prolog stoljea, ali zbog dugog vremena pristupa i malog kapaciteta danas je skoro zastarjela komponenta. Izvorno, disketa je bila izraena na tankoj plastinoj savitljivoj krunoj ploi koja je bila presvuena magnetskim materijalom. Ploa je bila smjetena u 8-innom kvadratnom zatitnom ovitku. Kapacitet 8-inne diskete (SSSD - Single Sided Single Density) bio je 300 KB. 8-inne diskete DSSD (Double Sided Single Density) bile su kapaciteta 500 KB. Poslije 8-innih disketa pojavile su se 5 1/4-inne diskete skromnog kapaciteta od svega 80 KB, te one 5 1/4-inne DD (Double Density) kapaciteta 360 ili 800 KB. Nakon toga u uporabi su bile 3 1/2-inne diskete kapaciteta 1.44 MB (u nekim su se izvedbama pojavljivale i diskete kapaciteta 2.88 MB). Disketa 3 1/2 ina, kapaciteta 1.44 MB imala je 80 staza s 18 sektora po stazi. Kruna se ploa okretala brzinom od 360 RPM to je samo oko 2 % - 4% brzine vrtnje magnetskog diska, a vrijeme latencije bilo je 166 ms. Gustoa zapisa bila je oko 17000 bita po inu. Pred sam kraj 20. stoljea pojavile su se diskete 3 Vi ina HiFD (High capacity Floppy Disk) kapaciteta 150/200 MB. Disketna jedinica, koja se danas rijetko nalazi i u osobnim raunalima, imala je glave za itanje i pisanje, upravljane koranim motorima, koje su kroz otvor na zatitnom omotu pristupale magnetskom mediju. Glava je, za razliku od jedinica magnetskog diska, bila u fizikom kontaktu s povrinom krune ploe. Da bi se sprijeilo habanje glave, ali i magnetskog omotaa, pogonski se motor automatski zaustavljao nakon odreenog vremena neaktivnosti jedinice. Jedinicu diskete uspjeno su zamijenile jedinice kao to su upisno-ispisne neizbrisive memorije kao to su USB (Universal Serial Bus) memorijski tapi (engl. USB memory stick) i optike memorije.

9.11. MAGNETSKA VRPCA


Jedinica magnetske vrpce jedna je od najstarijih i najjeftinijih premjestivih sekundarnih memorija sa sekvencijalnim pristupom. Ona se sastoji od tanke savitljive plastine vrpce presvuene magnetskim materijalom, obino upakirane u malu kasetu. Podaci se pohranjuju u digitalnom (binarnom) obliku u longitudinalnim stazama. Broj staza je za ranije izvedbe bio 9 - osam za pohranu jednog bajta podatka i jedna za paritetni bit. Dananje jedinice magnetske vrpce imaju nekoliko stotina staza. Kao i u sluaju magnetskog diska, podaci se itaju i upisuju u blokovima koji se nazivaju fizikim zapisima (engl. physical record). Blokovi na vrpci odvojeni su tzv. meuzapisnim razmacima. Nepokretna glava za itanje i pisanje istodobno pristupa svim stazama na vrpci koja se kree konstantnom brzinom. Brzina prijenosa podataka ovisi o gustoi zapisa i brzine vrpce. Na primjer, za jedinicu s 80 staza i gustoom zapisa od 110 Kb po inu te brzinom vrpce od 50 ina/s maksimalna brzina prijenosa je 55 MB/s. Takva vrpca duljine 200 m ima kapacitet 8.661 GB, dok je vrijeme premotavanja cijele vrpce oko jedne minute. Magnetske vrpce danas se prvenstveno koriste kao memorija za rezervnu pohranu sadraja s diskova te arhiviranje podataka. Razvojem tehnologije magnetskih diskova i padom njihove cijene uporaba je magnetskih vrpci u skoroj budunosti upitna jer ih magnetski diskovi istiskuju iz uporabe.

^ 306

9. POGLAVLJE: MEMORIJSKI SUSTAV

9.12. OPTIKE MEMORIJE


9.12.1. CD-ROM
lako je optiko pohranjivanje informacija najstarija metoda koju je praovjek koristio u svojim peinskim crteima, tek je 1980. James T. Russel razvio naela optikog pohranjivanja informacija, a 1982. tvrtke Philips i Sony na trite su plasirale prvi kompaktni disk CD {Compact Disk) koji je pohranjivao oko 650 MB audioinformacije. Optiki disk ili kompaktni disk (slika 9.31) kao ispisna memorija CD-ROM promijenio je tehnologiju sekundarne memorije i predstavlja prenosivu memoriju velikog kapaciteta niske cijene. CD-ROM moe pohranjivati od 650 MB pa sve do 900 MB podataka (to priblino odgovara oko 400 tisua stranica teksta) na jednoj strani vrste plastine krune ploe promjera 120 mm i debljine 1.2 mm, koja ima rupu promjera 15 mm u svom sreditu. Povrina ploe ima dugu spiralnu stazu "utisnutu" u polikarbonatnu plou, presvuenu 125 nm debelim slojem aluminijskog reflektirajueg materijala i prozirnim zatitnim plastinim slojem. Informacija je pohranjena u binarnom obliku uzdu spiralne staze koja se od unutranjosti rasprostire do oboda krune ploe. Podaci su pohranjeni u obliku udubina (engl. pit) promjera 0.8 mikrona i izboina (engl. land) izmeu njih. Podaci se itaju tako da staza obasja svjetlom valne duljine 0.78 mikrona koje emitira laserska dioda u glavi za itanje. Laserske se zrake odbijaju od reflektirajueg aluminijskog sloja. Kad zrake padnu na izboinu, odnosno mjesto izmeu dvije udubine, svjetlo se reflektira natrag i moe se otkriti osjetnikom. Reflektirano je svjetlo u tom sluaju takvo da su zrake u fazi. Ako zrake pogode udubinu, oko pola od njih padne na izboinu, a pola u udubinu. U tom sluaju reflektirane zrake prevaljuju razliite duljine putova i razlikuju se po fazi te meusobno interferiraju. Udubine su takve da iznose 1/4 valne duine laserskog svjetla pa e rezultat interferencije biti manji svjetlosni intenzitet detektiran osjetnikom. Promjene razine svjetlosnog intenziteta reflektirajueg svjetla odgovaraju prijelazima na stazi - od izboine na udubinu te od udubine na izboinu. Podaci se na CD-ROM-u kodiraju na poseban nain: izvorni 8-bitni podaci pretvaraju se u 14-bitni kod. Algoritam kodiranja je takav da se izabire 14-bitna kodna rije koja nema dvije slijedne jedinice odvojene s manje od dvije nule. No najdulji je niz nula ogranien i iznosi 10. Na taj je nain od moguih 214 bi tovnih uzoraka raspoloivo za kodiranje 267 od kojih se koristi 256. Tako transformirani podaci kodirani NRZ {Non-Return-to-Zero) kodom upisuju se u obliku udubina i izboina na povrinu optikog diska. U postupku itanja 14-bitni kod se pretvara u izvorni 8-bitni uporabom tablice preslikavanja (engl. look-up table). Logika struktura podataka definirana je standardom, tzv. Red Book, (Crvena knjiga), Yellow Book (uta knjiga), Green Book (Zelena knjiga). Tako, na primjer, Yellow Book definira da grupa od 42 slijedna 14-bitna simbola tvori 588-bitni okvir (engl. frame), pri emu svaki okvir sadrava 192 bita podataka (24 bajta). Preostalih se 396 bitova koristi za ispravljanje pogreaka i upravljanje. Grupiranjem 98 okvira dobiva se CD-ROM sektor, pri emu svaki sektor zapoinje zaglavljem (engl. preamble) koje se sastoji od 16 bajtova. Prvih dvanaest bajtova u zaglavlju slue CD itau za prepoznavanje poetka CD-ROM sektora, sljedea tri sadravaju broj sektora dok zadnji bajt u zaglavlju oznaava jedan od dva naina rada (Mode 1 i Mode 2). Zaglavlju slijedi 98 okvira, odnosno jedan sektor, a sektoru 288 bajtova koda za ispravljanje pogreaka (EEC). Brzine prijenosa podataka kreu se od 75 sektor/s, odnosno 153 600 B/s (za tzv. singlespeed CD-ROM u nainu 1), odnosno 175 200 B/s (nain 2). Optiki disk 32x CD-ROM ima brzinu prijenosa podataka 4 915 200 B/s (32 puta je bri od single-speed CD-ROM-a).

S. RIBARI - GRAA RAUNALA

307,

Vrijeme traenja obino je oko nekoliko stotina milisekundi pa se CD-ROM-ovi po svojim performansama ne mogu natjecati s magnetskim diskovima. CD-ROM-ovi se, meutim, koriste za distribuciju raunalnih igara, filmova, enciklopedija, atlasa, instalacijskih programa i si.

SI. 9.31 Presjek CD (ili DVD) diska i struktura CD (ili DVD) optikog sustava

9.12.2. CD-R, CD-RW I DVD


Izrada CD-ROM-a zahtijevala je posebnu relativno skupu opremu za izradu tzv. master CD-ROM-a koji je posluio za "tiskanje" kopija. Sredinom devedesetih godina pojavili su se CD pisai (engl. CD recorder) kao periferne jedinice raunala. CD pisai, ne vei od CD jedinica za itanje (engl. CD player), omoguili su korisnicima pohranu podataka. No za razliku od magnetskih diskova, jednom zapisan sadraj na takvom CD-u ne moe se mijenjati niti izbrisati. Takvi se kompaktni diskovi nazivaju CD-R odnosno CD-Recordables i tehnoloki se razlikuju od "obinih" CD-ROM-ova. CD pisai posebnim izvorom laserskog svjetla (snage 8-16 mW) mijenjaju molekularnu strukturu posebnog sloja koji je nanesen na polikarbonatnu povrinu diska i na taj nain pohranjuju podatke (standard za CD-R je nazvan Orange Book - Naranasta knjiga). Ova se vrsta optikih diskova naziva i WORM CD, odnosno Write-Once-Read-Many CD jer doputa samo jednokratno zapisivanje podataka i naravno, viekratno itanje tako pohranjenih podataka. Inaica CD-R, nazvana CD-ROM XA doputa inkrementalno zapisivanje, odnosno pohranu podataka tako da je na istom kompaktnom disku mogue zapisivanje podataka u vie navrata u razliitim vremenskim intervalima (satima, danima, mjesecima...).

308

9. POGLAVLJE: MEMORIJSKi SUSTAV

Razvoj tehnologije optikih diskova omoguio je kompaktne diskove koji doputaju brisanje te ponovni zapis podataka. Takvi se kompaktni diskovi nazivaju CD-RW, tj. ispisnoupisni CD. CD-RW-i koriste posebnu smjesu srebra (Ag), indija (In), antimona (Sb) i telura (Te) za sloj u kojem se podaci zapisuju. CD-RW pisai koriste lasere triju snaga. Laserskom zrakom najvee snage topi se smjesa koja se pretvara iz visoko reflektivne kristalne strukture u nisko reflektivnu amorfnu strukturu koja odgovara udubini. Srednjom se snagom laserske zrake amorfna struktura vraa u svoje prirodno kristalno stanje koje se tumai kao izboina. Laserskom se zrakom najmanje snage samo ita zapis, odnosno na temelju intenziteta reflektirane zrake utvruje se stanje sloja za zapis. Neki se CD-RW-i temelje na optikim i magnetskim svojstvima materijala koji se koristi u aktivnom sloju za zapis.Tanki se aktivni sloj sastoji od legure telura (Te), eljeza (Fe) i kobalta (Co) koji mijenja polarizaciju reflektiranog laserskog svjetla ovisno o smjeru magnetiziranja. Poetno, aktivni je sloj podvrgnut uniformnom magnetskom polju kojim seTeFeCo molekule poravnavaju i time odreuju osnovni smjer polarizacije reflektiranog laserskog svjetla. Taj se osnovni smjer moe promatrati kao kontinuirani niz bitova s vrijednosti 0. Tijekom upisivanja, impuls laserskog svjetla "pogaa" aktivni sloj i zagrijava ga te mu mijenja magnetska svojstva. Kad se toka povrine zagrije na 300 C (tzv. Curieva temperaturna toka), povrina gubi poetna magnetska svojstva. Istodobnim aktiviranjem elektromagneta ispod diska mijenja se smjer magnetiziranja tako da je suprotan od onog poetnog. Taj novi smjer ostaje kad se laser iskljui i materijal ohladi. Takva mjesta u aktivnom sloju odgovaraju bitovima s vrijednosti 1. Disk se ita laserskom zrakom manje snage. Reflektirana laserska zraka ima razliitu polarizaciju ovisno o smjeru magnetiziranja aktivnog sloja.
T . .

Znaajka Promjer diska [mm] Debljina diska [mm] Udaljenost izmeu staza [\xm] Gustoa staza [k staza/in] Brzina prijenosa [Mb/s] Valna duljina laserskog svjetla [nm] Kapacitet jednostranog i jednoslojnog diska [GB]
Tablica 9.4. Usporedba CD i D V D

CD 120 1.2 1.6 43 1.2-4.8 780 0.65 - 0.68

DVD 120 1.2 0.74 96 11 635 - 650 4.7

Krajem devedesetih godina prolog stoljea pojavila se nova tehnologija diskova nazvanih DVD-ROM (Digital Versatile Disk; engl. versatile - svestran). DVD-ROM izgleda kao konvencionalan CD-ROM i temelji se na istoj tehnologiji, ali s poboljanim parametrima. Na primjer, udubine su veliine 0.4 mikrona umjesto 0.8 mikrona, udaljenost izmeu staza je 0.74 mikrona umjesto 1.6 mikrona (za CD-ROM), valna duljina laserskog svjetla je 0.635 0.650 mikrona umjesto 0.78 mikrona. Sve to je omoguilo poveanje kapaciteta DVD-a pa jednostrani DVD-ROM ima kapacitet 4.7 GB i brzinu prijenosa od 11 Mb/s. DVD-ROM-ovi pojavljuju se u razliitim izvedbama kao jednostrani i jednoslojni (engl. Single-sided, singlelayer) kapaciteta 4.7 GB, jednostrani i dvoslojni (Single-sided, dual-layer) kapaciteta 8.5 GB,

S. RIBARI - GRAA RAUNALA

309,

dvostrani i jednoslojni (Double-sided, single-layer) kapaciteta 9.4 GB te dvostrani i dvoslojni (Double-sided, dual-layer) kapaciteta 17 GB. Tablica 9.4. daje usporedbu osnovnih tehnikih znaajki CD i DVD. Upisno-ispisni DVD ostvaren je slino kao i CD-RW jer se temelji na istoj tehnologiji. Reljefna struktura aktivnog sloja (udoline i izboine) mijenja se tako da se laserskom zrakom mijenjaju njegova optika ili magnetska svojstva. Postoji vie standarda za upisnoispisne DVD-e: DVD-i koji su tipa WORM - jednokratan upis i viekratno itanje definirani su standardima DVD-R i DVD+R, dok su "pravi" upisno-ispisni DVD-i opisani standardima DVD-RW i DVD+RW.

S. RIBARI - GRAA RAUNALA

311,

10. POGLAVLJE

PRIRUNA MEMORIJA
10.1. UVOD
U 9. poglavlju vidjeli smo da latentnost memorijske jedinice predstavlja osnovnu prepreku u poveanju performanse raunarskog sustava. Latentnost memorijske jedinice je od tri do pet (i vie) puta vea od latentnosti procesora. Podsjetimo se, pod pojmom latentnost podrazumijeva se vrijeme koje protekne izmeu poetka i zavretka neke operacije. Jedan od naina premoivanja jaza izmeu brzine memorije i procesora u vierazinskom hijerarhijskom memorijskom sustavu (slika 10.1) jest uporaba prirune memorije (engl. cache memory), odnosno dvorazinske memorijske hijerarhije. Slika 10.1 prikazuje osnovnu zamisao organizacije koja se sastoji od prirune memorije M 1 i glavne memorija M2. Obratite pozornost na injenicu da se izmeu procesora i prirune memorije prenose podaci u obliku rijei, dok se izmeu glavne memorije i prirune izmjenjuje blok podataka koji se naziva priruni blok ili linija (engl. line; cache line). Priruna memorija je brza memorija relativno malog kapaciteta i sadrava kopiju sadraja dijela glavne memorije - tekue aktivne se-

gmente programa i podataka.


procesor

prijenos rijeci

priruna memorija M

prijenos bloka razina priruna memorija - glavna memorija

glavna memorija

J
SI. 10.1 Shematski prikaz dviju razina: priruna memorija - glavna memorija M 2

312

11. POGLAVLJE: VIRTUALNA MEMORIJA

Sljedea nia razina u memorijskoj hijerarhiji je glavna memorija koja je sporija, ali puno veeg kapaciteta. Tipian odnos brzine prirune memorije i glavne memorije jest 5 :1 pa priruna memorija svojom brzinom izravno podrava rad procesora. Slika 10.2 prikazuje internu organizaciju prirune memorije. Ona se sastoji od memorije za pohranu podataka (engl. cache data memory) (Opaska: ovdje se "podaci" podrazumijevaju u irem smislu to znai da se izraz odnosi i na podatke, i na instrukcije programa), memorije za pohranu znaaka (engl. cache tag memory) i sklopova za upravljanje pristupom prirunoj memoriji. Kopija sadraja dijela glavne memorije pohranjuje se u memoriji za pohranu podataka koja je organizirana u male blokove koji se nazivaju priruni blokovi ili linije. Svaki je priruni blok oznaen svojom blonom adresom koja se naziva znaka pa priruna memorija "zna" kojem dijelu glavne memorije odgovara dotini blok. Znake pridruene svakom prirunom bloku pohranjene su u memoriji za pohranu znaaka. Glavna je memorija takoer razdijeljena na blokove koji su jednake veliine kao i priruni blokovi.
pogodak priruna memorija M,

SI. 10.2 Organizacija prirune memorije

Imamo, dakle, sljedeu organizaciju: glavna memorija, koja se sastoji od 2M slijednih rijei, razdijeljena je na slijedne blokove koji se sastoje od b rijei. To znai da glavna memorija ima BM2 = 2M / b blokova (obino je veliina bloka, odnosno broj rijei u bloku, b takoer potencija broja 2; b = 2m, pri emu je m M). Memorija za pohranu podataka (u prirunoj memoriji) sastoji se BM1 prirunih blokova ili linija koji su takoer veliine b = 2m. Svakom je prirunom bloku pridruena znaka (pohranjena u memoriji za pohranu znaaka) koja sadrava informaciju o adresi bloka pokazujui na poetnu lokaciju odgovarajueg bloka u glavnoj memoriji. Priruni blok (ili linija) i znaka smjetaju se u prirunoj memoriji na tzv. bloniprikljuak (engl. s/of). Blonih prikljuaka

S. RIBARI - GRAA RAUNALA

313,

u prirunoj memoriji ima BM1, pri emu je BM1 jednak kapacitetu prirune memorije podijeljen s brojem rijei u bloku. Vrijedi B M 2 BM1. Slika 10.3 prikazuje odnos izmeu blokova u glavnoj memoriji i prirunih blokova (linija) te odnos izmeu adrese bloka u glavnoj memoriji i odgovarajue znake u memoriji za pohranu znaaka.
c>5 3 o "5 XI o. O i rvim m vo r^ ' ' S 5 S S 2 S 5 : C O C O 0 Q 00 C O co co co

o*

r-v

t O( N D

J2

< co

% 'i
JD
o 0 E f O c >u 3

==. o ~C L

-O
< <
< LU
o o. o X! N

00

" O o o.

u
-C &

fN

< 0_ N _ 3 .2. c ro 'u " o c ( L ) O. N

o o o o o o

8 o

o o o

si

36.

Si

T3

rtj

ro < 00

fN

fN

< <

a\

<

5 < T 3 ( T J

00 o

1 1 o> C
O J

f0 c

o o o

o o o o o o

o o o o o o

o o o o o

o o

o ' O O O O

T3

( T J

8 _ o
o

o o o o

o o o o

o o o o

o o o o

o o o o

o o o o o o o o o

o o o o o o o o o

r- O - o o o o o o o o o o o o o o o o

SI. 10.3 Pojednostavljeni prikaz odnosa izmeu blokova u glavnoj memoriji i prirunih blokova (linija)

314

11. POGLAVLJE: VIRTUALNA MEMORIJA

Na slici 10.3 vidimo da priruna memorija, u ovom pojednostavljenom prikazu, pohranjuje osam prirunih blokova (linija), odnosno ima osam blonih prikljuaka: BM1(0) - BM1(7). Priruni se blok sastoji od b = 4 rijei. Blokovi u glavnoj memoriji takoer su duljine b = 4 rijei. Uoavamo da se u blonom prikljuku BM1(1) nalazi priruni blok s rijeima 21, AA, FA i 91 (sve heksadekadno) koji je kopija sadraja bloka u glavnoj memoriji s poetnom 12-bitnom adresom: 100001111100. Vidimo, takoer, da je u znaki (u memoriji za pohranu znaaka) koja odgovara blonom prikljuku BM1(1) pohranjeno deset znaajnijih bitova koji predstavljaju upravo adresu bloka u glavnoj memoriji iji je sadraj prenesen u bloni prikljuak. Dva najmanje znaajna bita adrese A1 i A0 (slika 10.3) ne pojavljuju se u znaki, ve slue za izbor jedne od etiri rijei u izabranom prirunom bloku (liniji). (Opaska: broj najmanje znaajnih adresnih linija koje slue za izbor rijei u prirunom bloku ovisi o veliini prirunog bloka (linije), npr. ako je blok veliine 16 rijei, onda su za to potrebna etiri najmanje znaajna bita adrese.)
Primjer 10.1.

Da bismo zorno predoili nain pristupa podatku koji je pohranjen u prirunoj memoriji, opiimo operaciju itanja npr. tree rijei u blonom prikljuku BM1(1) (slika 10.3). 12-bitna adresa 100001111110, koja odgovara treoj rijei, dovodi se na adresne prikljuke prirune memorije. Deset se znaajnijih bitova adrese: 1000011111 u sklopu za usporedbu znaki usporeuje sa znakama koje su pohranjene u memoriji za pohranu znaaka. Ako se podudaraju znaka i deset znaajnijih bitova adrese, govorimo o pogotku to znai da se blok koji sadrava adresiranu rije nalazi u prirunoj memoriji. U tom se sluaju dva najmanje znaajna bita adrese: At = 1 i A0 = 0 koriste za izbor rijei u izabranom prirunom bloku te se podatak FA (heksadekadno) pojavljuje na izlazu prirune memorije. U sluaju kada je podudaranje adrese i znake neuspjeno, govorimo o promaaju, to znai da se blok koji sadrava adresirani podatak ne nalazi u prirunoj memoriji. to se tada dogaa, objasnit emo neto kasnije. Prema nainu ukljuivanja prirune memorije u raunarski sustav razlikuju se dvije glavne sheme. Jedna, koja se naziva "pogled sa strane" (engl. look-aside), je takva da su priruna memorija i glavna memorija izravno prikljuene na sabirnicu sustava (slika 10.4). Procesor zapoinje pristup memoriji postavljanjem adrese na adresnu sabirnicu i upravljakim signalom R/W odreuje vrstu sabirnikog ciklusa. Priruna memorija M 1 usporeuje adresu na sabirnici sa znakama koje su pohranjene u memoriji za pohranu znaaka. Ako je podudaranje uspjeno (dogodio se pogodak), pristup e se okonati itanjem ili pisanjem u prirunu memoriju. Pri svemu tome, glavna memorija M 2 nee sudjelovati. Potrebno je istaknuti da kad procesor generira zahtjev za pribavljanjem instrukcije ili dohvat podatka ili pak generira zahtjev za upis podatka u memoriju, on uvijek referencira lokaciju u glavnoj memoriji. Zapravo, procesor se "ponaa" kao da i ne zna da postoji priruna memorija - ona je za procesor "skrivena" (rije "cache" je francuskog podrijetla i oznaava skrovito ili skriveno mjesto na kojem se pohranjuju zalihe hrane za "crne dane"). No ako se dogodio promaaj, odnosno neuspjeno podudaranje adrese sa znakama - to znai da nema referenciranog bloka niti u jednom blonom prikljuku prirune nriemorije - tada se ostvaruje pristup izravno glavnoj memoriji M2 i zavrava se upisom (R/W= 0) j itanjem (R/W= 1) sadraja referencirane memorijske lokacije. Kao odgovor na promaaj prenosi se blok podataka (onaj koji sadrava referencirani podatak) iz glavne memorije L

S. RIBARI - GRAA RAUNALA

315,

prirunu memoriju i smjeta se u slobodni bloni prikljuak prirune memorije. Zajedno s podacima prenijet e se i adresa bloka koja e se pohraniti kao znaka u odgovarajuem blonom prikljuku. Prijenos bloka koji je male veliine odvija se vrlo brzo jer se koristi prijenos podataka u snopu (poglavlje 9.; Porodice DRAM).

( T ) pristup prirunoj memoriji ( 2 ) prijenos bloka podataka (prijenos podataka u snopu) ( 3 ) pristup glavnoj memoriji

SI. 10.4 Nain ukljuivanja prirune memorije nazvan "pogled sa strane" (engl. look-aside)

Slika 10.5 prikazuje sloeniji nain ukljuivanja prirune memorije u raunarski sustav. On se naziva "pogled kroz" (engl. look-through). Procesor ima izdvojenu lokalnu sabirnicu pomou koje komunicira s prirunom memorijom i glavnom memorijom. Sabirnica sustava koristi se kao prijenosni put za komunikaciju s drugim jedinicama pa se stoga moe istodobno ostvariti pristup prirunoj memoriji od strane procesora (put 1, slika 10.5) i pristup glavnoj memoriji u kojem ne sudjeluje procesor (npr. DMA prijenos; put 4, slika 10.5). U ovoj organizaciji prirune memorije procesor ne alje automatski sve zahtjeve glavnoj memoriji (kao u sluaju organizacije "pogled sa strane") ve to ini samo u kad se dogodi promaaj. Ovakva organizacija omoguuje izvedbu iroke lokalne sabirnice kojom se povezuju procesor, priruna memorija i glavna memorija tako da se ostvaruje bri prijenos bloka podataka izmeu glavne i prirune memorije. Na primjer, ako je irina lokalne sabirnice 128 bita i ako je veliina prirunog bloka 16 bajtova, tada e se blok prenijeti u jednoj periodi signala vremenskog voenja, dok bi prijenos istog bloka preko 32-bitne sabirnice sustava (u organizaciji "pogled sa strane"zahtijevao etiri periode). Ova izvedba, meutim, zahtijeva sloeniji upravljaki sklop prirune memorije i upravljaki sklop glavne memorije to se odraava na veoj sloenosti i vioj cijeni izvedbe.

316

11. POGLAVLJE:

VIRTUALNA

MEMORIJA

(T) pristup prirunoj memoriji (2) prijenos bloka podataka (3) pristup glavnoj memoriji (4) pristup glavnoj memoriji u kojem ne sudjeluje procesor (npr. DMA) SI. 10.5 Nain ukljuivanja prirune memorije nazvan "pogled kroz" (engl.

look-through)

10.2. DJELOVANJE PRIRUNE MEMORIJE


Mehanizam djelovanja prirune memorije moemo pojednostavnjeno opisati ovako (slika 10.6): kad procesor (CPU) generira zahtjev za pribavljanje instrukcije ili podatka (operacija itanja) ili generira zahtjev za upisivanje podatka u memoriju (operacija pisanja), on se adresom poziva na lokaciju u glavnoj memoriji. (Opaska: pretpostavimo li daje procesor generirao adresu koja je u sluaju postojanja virtualne memorije (tj. razine glavna memorija - sekundarna memorija) virtualna ili logika adresa podatka ili instrukcije, ona e se pomou adresnog translacijskog mehanizma virtualne memorije (poglavlje 11.) preoblikovati u stvarnu ili fiziku adresu. Iznimno postoje neke izvedbe prirune memorije koje doputaju pristup na temelju virtualne adrese.) Sklopovi za upravljanje pristupom memoriji (koji su pridrueni prirunoj memoriji) utvruju nalazi li se rije koja se poziva u prirunoj memoriji, tj. utvruje se nalazi li se u nekom blonom prikljuku prirune memorije blok koji upravo sadrava referenciranu rije. To se utvruje usporeivanjem znaki sa znaajnijim dijelom adresa (vidi Primjer 10.1.). Ako se tijekom usporeivanja dogodi podudaranje, to znai daje blok koji sadrava referenciranu rije u prirunoj memoriji - dogodio se pogodak (za takav blok kaemo da je aktivan). tada se preostali, manje znaajni adresni dio koristi za izbor naslovljene rijei u bloku (ifi liniji), te se izvodi operacija itanja ili pisanja na toj memorijskoj lokaciji prirune memorije Ako je rije o operaciji itanja, tada u tome ne sudjeluje glavna memorija, a referencira-

S. RIBARI - GRAA RAUNALA

317,

na se rije dohvaa iz prirune memorije i pribavlja procesoru. Ako je, pak, bila operacija pisanja, tada se istodobno podatak upisuje u odgovarajuu lokaciju prirune memorije i u lokaciju glavne memorije. Takav se postupak trenutnog obnavljanja sadraja glavne memorije naziva pohranjivanje-kroz" (engl. store-through). Obnavljanje sadraja glavne memorije moe se obaviti i uporabom inaice pohranjivanja-kroz. Ona se naziva upisivanje u meuspremnik (engl. write buffer). Upis podatka u glavnu memoriju ostvaruje se pomou upisnog meuspremnika i sklopova kojima se oslobaa procesor od izravnog obnavljanja sadraja glavne memorije. Procesor nakon brzog upisa podatka u prirunu memoriju i upisni meuspremnik nastavlja s obradom. Istodobno se podatak iz upisnog meuspremnika prenosi u glavnu memoriju. Na taj se nain uklanja kanjenje zbog upisa, odnosno pristupa procesora glavnoj memoriji. Druga metoda obnavljanja sadraja glavne memorije naziva se kopiranje nazad" (engl. copy back, write back) i sastoji se od toga da se podatak upisuje samo u lokaciju u prirunoj memoriji, a da se upis oznai posebnom zastavicom pridruenoj bloku. Ta se zastavica naziva prljavi bit" (engl. dirty bit) i njome se oznaava blok koji e se morati upisati natrag u glavnu memoriju tijekom zamjene bloka. Zamjena bloka, kako emo vidjeti, dogaa se u sluaju promaaja. Priruni blok koji se samo ita i zato ima obrisan prljavi bit ne treba se tijekom zamjene upisivati natrag u glavnu memoriju jer su sadraji tog prirunog bloka i odgovarajueg bloka u glavnoj memoriji identini. Tehnikama pohranjivanje-kroz" i kopiranje nazad" rjeava se dio problema koji je poznat pod nazivom koherencija prirune memorije" (engl. cache coherence) o emu e biti govora u nastavku, a svodi se na to da podatak s adresom A u prirunoj memoriji M 1 mora biti jednak podatku koji se na istoj adresi A nalazi u glavnoj memoriji M2. Ne zaboravimo da je slika sadraja glavne memorije mjerodavna za stanje programa. Ako se za vrijeme operacije pisanja adresirana rije ne nalazi u prirunoj memoriji (engl. write miss), to se onda dogaa? Postoje dva pristupa tom problemu: u jednom se podatak izravno upisuje u glavnu memoriju, sadraj prirune memorije se ne mijenja i nema prijenosa bloka iz glavne memorije u prirunu memoriju (ta se tehnika izvorno naziva "write-no allocation" - upisivanje bez dodjele). U drugom se pristupu odgaa upis u memoriju da bi se prenio blok u prirunu memoriju i tek onda obavio upis u prirunu memoriju - ta se tehnika naziva dodjela upisa (engl. write allocation). Pristup dodjelom upisa ima prednost u odnosu na prvi pristup samo ako postoji vie uzastopnih upisa u jednu ili vie lokacija bloka. Openito vrijedi da prirune memorije koje koriste tehniku pohranjivanje-kroz rabe upisivanje bez dodjele, a prirune memorije s tehnikom kopiranja nazad primjenjuju postu-

pak dodjele upisa.


Sklopovi za upravljanje pristupom prirunoj memoriji utvruju nalazi li se adresirani blok u nekom od blonih prikljuaka prirune memorije. To se utvruje na temelju podudaranja znaajnijih bitova adrese (one koja odgovara adresi bloka; slika 10.3) sa znakama koje su pohranjene u memoriji za pohranu znaaka. Utvrivanje je li podudaranje uspjeno mora se obaviti iznimno brzo tako da slijedno usporeivanje adrese sa znakama ne dolazi u obzir jer bi znatno naruilo performansu memorijskog sustava. Da bi se ubrzao postupak podudaranja, memorija za pohranu znaaka izvedena je kao asocijativna memorija koja doputa istodobnu usporedbu adrese sa svim znakama. Podsjetimo se, asocijativna memorija je memorija s izravnim pristupom u kojoj se pohranjena rije ne dohvaa na temelju adrese, ve na temelju dijela ili cijelog njezinog sadraja. Osim toga, asocijativna memorija doputa istodobnu usporedbu dijela ili cijelog sadraja svih njezinih lokacija sa zadanim bitnim uzorkom i indikaciju svih podudaranja sadraja s tim zadanim bitnim uzorkom. U naem sluaju zadani bitni uzorak odgovara adresi bloka.

318

11. POGLAVLJE: VIRTUALNA MEMORIJA

SI. 10.6 Pojednostavljeni dijagram toka za operaciju itanja i pisanja u prirunu memoriju

S. RIBARI - GRAA RAUNALA

319,

Ako je usporeivanje adrese sa znakama bilo neuspjeno, govorimo o promaaju. U tom se sluaju adresa prosljeuje glavnoj memoriji. Modul za rukovanje u sluaju promaaja, na temelju informacije o zamjeni blokova, odreuje koji se blok zamjenjuje u prirunoj memoriji blokom koji treba dohvatiti iz glavne memorije. Poslije ili tijekom prijenosa bloka, referencirana se rije alje procesoru. Pri prijenosu bloka iz glavne memorije u prirunu memoriju moe se utedjeti na vremenu ako se referencirana rije prosljeuje odmah nakon to je raspoloiva, ne ekajui da se cijeli blok prenese u prirunu memoriju (tehnika "punjenje-kroz"; engl. load-through). U dijagramu toka (slika 10.6) vidimo da se u tijekom operacije itanja ili pisanja obnavlja i lista aktivnosti prirunih blokova. Ona je podloga za odreivanje koji e priruni blok biti zamijenjen kad se dogodi promaaj.

10.3. PERFORMANSA PRIRUNE MEMORIJE


Ako u memorijskoj hijerarhiji izuzmemo skup registara ope namjene, tada je priruna memorija najbra sastavnica u memorijskoj hijerarhiji. eli se postii da srednje vrijeme pristupa memorijskom sustavu bude to je mogue blie vremenu pristupa prirunoj memoriji. Da bi se to postiglo, broj uspjenih referenciranja prirune memorije mora biti to je mogue vei. Pod "uspjenim referenciranjem" podrazumijeva se referenciranje kojim je ostvaren "pogodak", odnosno referenciranje rijei koja se nalazi u bloku u prirunoj memoriji. Definirajmo omjer pogotka H (engl. hitratio) kao omjer broja referenciranja memorije u kojima je postignut pogodak i ukupnog broja referenciranja memorije: H = (broj referenciranja u kojima je postignut pogodak) / (ukupan broj referenciranja). Uz omjer pogotka esto se rabi i mjera omjer promaaja (engl. miss ratio) koji je definiran kao 1 - H i oznaava se s MR. Performansa prirune memorije izraava se omjerom pogotka (ili omjerom promaaja). to je omjer pogotka vei, vea je performansa prirune memorije. U nekom vremenskom intervalu moemo ocijeniti srednje vrijeme pristupa memorijskom sustavu tA za memorijski sustav s prirunom memorijom, na sljedei nain:
t

A = tM,

X H +

(1-H)XtM2'

gdje je tM1 vrijeme pristupa prirunoj memoriji, tM2 vrijeme pristupa glavnoj memoriji i (1- H) omjer promaaja. Djelotvornost prirune memorije moemo ilustrirati sljedeim primjerom. Primjer 10.2. Neka je vrijeme pristupa glavnoj memoriji tM2 = 250 ns, a vrijeme pristupa prirunoj memoriji tM1 = 25 ns. Za omjer pogotka H = 0.98, to je vrijednost koja se nalazi u okviru tipinih vrijednosti za prirune memorije, dobiva se srednje vrijeme pristupa memorijskom sustavu: tA = tM1 x H + (1- H) x tM2 = 25 x 0.98 + (1 - 0.98) x 250 tA = 24.5 + 5.0 = 29.5 ns Sustav bez prirune memorije imao bi (srednje) vrijeme pristupa memoriji tA = t M2 = 250 ns. Vidimo da se uvoenjem prirune memorije srednje vrijeme pristupa memorijskom sustavu popravilo skoro za jedan razred veliine.

320

11. POGLAVLJE: VIRTUALNA MEMORIJA

Visoka vrijednost omjera pogotka H koja se tipino kree u rasponu od 0.90 do 0.98 temelji na lokalnim svojstvima programa i podataka. Zahvaljujui lokalnim svojstvima programa i podataka, broj poziva glavne memorije uvelike se smanjuje i referenciranje se usmjerava na brzu prirunu memoriju. Lokalnost u dinamikom ponaanju programa oituje se u tome to slijed referenciranja memorijskih lokacija nije sluajan, ve za vrijeme trajanja nekog vremenskog intervala program pokazuje tenju grupiranja poziva memoriji na malom dijelu od ukupnog adresirljivog prostora. Lokalnost se izraava vremenskom i prostornom sastavnicom. Vremenska lokalnost oituje se u tome to e program u bliskoj budunosti, tijekom njegova izvoenja, referencirati u memoriji one programske objekte ili podatkovne objekte koje je referencirao i u blioj prolosti. Prostorna lokalnost iskazuje se u tome to e program referencirati u skoroj budunosti one programske i podatkovne objekte koji imaju adrese bliske onim to su se upotrebljavale u blioj prolosti. Lokalnost je posebno izraena kad dijelovi programa imaju oblik programskih petlji, meusobno ugnijeenih petlji ili kad se samo nekoliko procedura (ili potprograma) ponavljano poziva. Obino se lokalnost izraava radnim skupom WS(f, h) koji predstavlja skup memorijskih lokacija ili blokova lokacija koje su u nekom vremenskom trenutku t bili referencirani u posljednjih h referenci ranja. Primjer 10.3. Neka je R = (20,19,20,20,19,19,20,20,21,4,5,6,20) slijed referenci ranja blokova. Radni skup WS(f, h) - W(6,4) je: t = 1 2 3 4 5 6 7 8...
( 2 0 , 1 9 , 2 0 , 2 0 , 1 9 , 1 9 , 20, 20, 2 1 , 4 , 5 , 6 , 2 0 ) ,

WS = {19, 20}. Od vremenskog trenutka t = 6 u oknu h = 4 (unatrag) bili su referencirani blokovi 19 i 20. to je radni skup WS(t, h) s manjim brojem elemenata, to je lokalnost programa vea.

10.4. ORGANIZACIJA PRIRUNE MEMORIJE


Pri razmatranju i analizi razliitih izvedbi prirunih memorija posebnu pozornost treba obratiti na sljedee njezine znaajke: i) nain smjetanja blokova u blone prikljuke prirune memorije (engl. placement

policy; mapping function);


ii) iii) iv) v) nain zamjene blokova (engl. replacement policy); veliinu bloka i kapacitet prirune memorije; nain obnavljanja sadraja glavne memorije (engl. update policy); nain pribavljanja bloka iz glavne memorije (engl. memory fetch policy).

S. RIBARI - GRAA RAUNALA

321,

10.4.1. NAIN SMJETANJA BLOKOVA U BLONE PRIKLJUKE PRIRUNE MEMORIJE


Prema nainu smjetanja bloka iz glavne memorije u bloni prikljuak prirune memorije postoje tri glavne organizacije prirune memorije: priruna memorija s potpuno asocijativnim preslikavanjem (engl. fully associative

mapping);
priruna memorija s izravnim preslikavanjem (engl. direct mapping); priruna memorija sa skupnim asocijativnim preslikavanjem (engl. set associative

mapping). 10.4.1.1. PRIRUNA MEMORIJA S POTPUNO ASOCIJATIVNIM PRESLIKAVANJEM


Podsjetimo se da se priruna memorija, bez obzira na vrstu organizacije, sastoji od brojnih blonih prikljuaka i da se u svakom blonom prikljuku smjeta blok (linija) od b slijednih rijei. Svakom je takvom bloku pridruena i znaka koja se pohranjuje u prirunoj memoriji znaaka. Priruna memorija s potpunim asocijativnim preslikavanjem moe se nazvati i priruna memorija s potpunim pridruivanjem jer ima jednu prepoznatljivu znaajku: priruni blok

ili linija veliine b rijei iz glavne memorije moe se smjestiti u bilo koji slobodni bloni prikljuak
prirune memorije. Na slici 10.7 shematski je prikazano potpuno asocijativno preslikavanje. Adresa kojom se referencira memorija sastoji se od dva dijela: k znaajnijih bitova adrese koji ine znaku i w manje znaajnih bitova adrese koji slue za izbor jedne od b rijei u izabranom bloku. Na temelju znake utvruje se nalazi li se referencirani blok u prirunoj memoriji. Primjer 10.4. Neka je kapacitet glavne memorije 16 MB, a kapacitet prirune memorije 64 KB. Veliina bloka (linije) neka je 4 bajta. U tom sluaju imamo B M 2 = 1 6 M / 4 = 4 M blokova u glavnoj memoriji - od BM2(0) do BM2(4194303), odnosno BM2(4M -1). Broj blonih prikljuaka prirune memorije je BM1 = 64K/4 = 16 K - od BM1(0) do BM1(16383), odnosno BM1(16K -1). Adresa je duljine 24 bita i organizirana je na sljedei nain: dva najmanje znaajna bita A1 i A0 se koriste za izbor jedne od b = 4 rijei (bajta) u bloku, a preostala 22 adresna bita A23 - A2 oznaavaju jedan od 4M blokova. Znaka (pohranjena u memoriji za pohranu znaaka), koja je pridruena bloku koji se nalazi u blonom prikljuku, duljine je 22 bita. Tijekom referenciranja memorije znaajnijih 22 bita adrese usporeuje se sa svim 22-bitnim znakama. Usporeivanje se izvodi istodobnim podudaranjem sa svim znakama pohranjenim u memoriji znaaka. Kad je ishod podudaranja uspjean, dva najmanje znaajna bita adrese upotrebljavaju se za adresiranje rijei (bajta).
li

Prednost prirune memorije s potpuno asocijativnim preslikavanjem jest velika prilagodljivost pri smjetanju blokova iz glavne memorije u prirunu - blok se moe smjestiti u bilo koji slobodni bloni prikljuak. Nedostatak takve organizacije je sloena (i skupa) sklopovska izvedba za istodobno podudaranje sa znakama relativno velike duljine koja se temelji na asocijativnoj memoriji za pohranu znaaka. Sloenost izvedbe odraava se i na zahtjevima za povrinom na ipu pa se prirune memorije s potpuno asocijativnim preslikavanjem mogu nai u izvedbama skupih procesora visokih performansi.

322

11. POGLAVLJE: VIRTUALNA MEMORIJA

SI. 10.7 Shematski prikaz potpunog asocijativnog preslikavanja

S. RIBARI - GRAA RAUNALA

323,

10.4.1.2. PRIRUNA MEMORIJA S IZRAVNIM PRESLIKAVANJEM Da bi se smanjila cijena izvedbe prirune memorije i rijeili problemi vezani za prostor na ipu, upotrebljava se priruna memorija s izravnim preslikavanjem (krae: izravna priruna memorija). Njezina je osnovna znaajka da se svaki blok glavne memorije moe smjestiti u samo jedan tono odreeni bloni prikljuak prirune memorije. Pravilo koje odreuje koji je to bloni prikljuak jednostavno je: blok BM2(i) iz glavne memorije smjeta se u bloni prikljuak BM1(j) prirune memorije pri emu vrijedi: j = i (modulo B^), gdje je BM1 ukupan broj blonih prikljuaka prirune memorije, j indeks blonog prikljuka u prirunoj memoriji te i indeks bloka u glavnoj memoriji.
^ ^ S c Ci G O f. C " i ""i i OO D C D O D O D 5 S 9 O D

SI. 10.8 Shematski prikaz organizacije izravne prirune memorije

324

11. POGLAVLJE: VIRTUALNA MEMORIJA

Slika 10.8 prikazuje organizaciju izravne prirune memorije. Vidimo da se blok iz glavne memorije moe smjestiti samo u odreeni bloni prikljuak prirune memorije. Primjer 10.5. Da bi si zorno predoili organizaciju izravne prirune memorije, odnosno nain smjetanja blokova u blone prikljuke, pretpostavit emo vrlo jednostavan model sa sljedeim parametrima: kapacitet glavne memorije neka je samo 25 = 32 rijei, a kapacitet prirune memorije neka je 24 = 16 rijei. Blok neka se sastoji od b = 4 rijei, tako da imamo BM2 = 8 blokova u glavnoj memoriji i BM1 = 4 bloka, odnosno blonih prikljuaka. Oznaimo blokove u glavnoj memoriji s: BM2(i), i = 0,1,..., 7. Oznaimo blone prikljuke BM1(j), j = 0, 1,..., 3. U skladu s izravnim nainom preslikavanja imamo: blok iz glavne memorije BM2(0); i = 0, smjeta se u bloni prikljuak BM1(j): j = i (modulo BM1) = 0 (modulo 4) = 0; blok iz glavne memorije BM2(1), smjeta se u bloni prikljuak BM1(1); blok iz glavne memorije BM2(2), smjeta se u bloni prikljuak BM1(2); blok iz glavne memorije BM2(3), smjeta se u bloni prikljuak BM1(3); blok iz glavne memorije BM2(4), smjeta se u bloni prikljuak BMi(j): j = i (modulo BM1) = 4 (modulo 4) = 0; blok iz glavne memorije BM2(5), smjeta se u bloni prikljuak BM1(1); blok iz glavne memorije BM2(6), smjeta se u bloni prikljuak BM1(2); blok iz glavne memorije BM2(7), smjeta se u bloni prikljuak BM1(3); Slika 10.9 a) prikazuje izravno preslikavanje za ovaj jednostavan primjer.
blok

glavna memorija M2 SI. 10.9a Prikaz jednostavnog modela izravne prirune memorije - izravno preslikavanje

S. RIBARI - GRAA RAUNALA

325,

znaka (1bit) bloni prikljuak

b=4 rijeci

0 0 0 0

1 1 1 1

2 2 2 2

3 3 3 3

BJO) BM1(D B,<2) BM1<3)

priruna memorija Mt

B(7)

glavna memorija M2 SL 10.9 b Prikaz jednostavnog modela izravne prirune memorije - pristup podatku u prirunoj memoriji s adresom 11110 (Primjer 70.5.)

Zapaamo da se zaista blok iz glavne memorije moe smjestiti u samo jedan, tono odreen bloni prikljuak prirune memorije. Odmah uoavamo i jedan od nedostataka takve organizacije - ako je bloni prikljuak ve zauzet, a sljedei blok se treba iz glavne memorije premjestiti u prirunu memoriju, i to prema j = i (modulo BM1) upravo u taj zauzeti bloni prikljuak, morat e se izvesti postupak zamjene blokova (oslobaanje blonog prikljuka), iako u prirunoj memoriji postoje slobodni, neiskoriteni bloni prikljuci. Slika 10.9 a) prikazuje organizaciju takve izravne prirune memorije. Na primjer, pretpostavimo da se podatak nalazi na adresi 11110 u glavnoj memoriji. Blok u kojem se nalazi podatak u glavnoj memoriji je BM2 (7). Dakle, i = 7. Taj se blok moe jedino preslikati u BM1(3) bloni prikljuakjer je 3 = 7 (modulo 4). Dva najmanje znaajna bita adrese A1 = 1 i A0 = 0 slue za izbor rijei s indeksom 2 u blonom prikljuku, bitovi A2 = 1 i A3 = 1 slue za izbor blonog prikljuka (B (3)). Najznaajniji bit adrese A4 usporeuje se s 1 -bitnom znakom (u ovom naem vrlo jednostavnom primjeru!) blonog prikljuka

326

11. POGLAVLJE: VIRTUALNA MEMORIJA

koji je odreen na temelju bitova A2 = 1 i A3 = 1. Ako je podudaranje postignuto, znai daje naslovljena rije u bloku u odreenom blonom prikljuku prirune memorije. Ako je podudaranje neuspjeno, na primjer, znaka pridruena blonom prikljuku 3 ima vrijednost 0, to znai da se u blonom prikljuku nalazi blok BM2(3), tada treba se osloboditi bloni prikljuak tako da se blok BM2(3) (slika 10.9 b)) premjestiti u glavnu memoriju. Blok BM2(7) se dohvaa iz glavne memorije i smjetava na osloboeni bloni prikljuak pri tome se najznaajniji bit njegove 5-bitne adrese pohranjuje u znaku. Primjer 10.6. Pretpostavimo neto stvarnije parametre prirune memorije i glavne memorije: kapacitet prirune memorije neka je 64 KB. Veliina prirunog bloka (linije) neka je 4 bajta. Kapacitet glavne memorije neka je 16 MB. Broj blonih prikljuaka prirune memorije je BM1 = 64 K / 4 = 16 K, odnosno 214. Broj blokova glavne memorije je BM2 = 16 M / 4 = 4 M, odnosno 222. Kako je organizirana adresa kojom se referencira memorija? Minimalna zahtijevana duljina adrese je 24 bita jer je 224 = 16 M. Sama 24-bitna adresa organizirana je na sljedei nain: 2 najmanje znaajna bita (A1 - A0) slue za izbor bajta u bloku (liniji) jer blok sadrava 4 bajta. etrnaest znaajnijih bitova (A15 - A2) slue za referenciranje blonog prikljuka (ima ih 214) a 8 najznaajnijih bitova adrese (A23 - A16) slue za usporeivanje s 8 znaaka pridruenim blonom prikljuku. Duljina rijei memorije za pohranu znaakaje8bita. Zato je osam najznaajnijih bitova adrese namijenjeno usporeivanju sa znakama? Izravnim preslikavanjem se 4 M blokova glavne memorije smjeta u 16 K blonih prikljuaka tako da su 256 blokova kandidati na jedan bloni prikljuak: 16 K x 256 = 214 x 28 = 222 - 4 M. Pretpostavimo da se podatak nalazi na adresi 11667210 (dekadno), odnosno B2070A (heksadekadno). U kojem se bloku glavne memorije nalazi podatak? Blok B^O) veliine 4 bajta nalazi se na adresi 0 - 3 (dekadno), blok BTAJ. J2) nalazi na M,(1) nalazi na adresi 4 - 7 (dekadno), blok B4 MZ adresi 8 - 1 1 , itd. Podatak s adresom 11667210 (dekadno) nalazi se u glavnoj memoriji u bloku s indeksom 2916802. Bloni prikljuak u koji se moe smjestiti blok BM2(2916802) je: j = i (modulo BM1) = 2916802 (modulo 16384) = 450, dakle, u BMI(450). Tijekom pristupa prirunoj memoriji osam se najznaajnijih bitova adrese usporeuje s 8-bitnom znakom blonog prikljuka koji je odreen na temelju etrnaest bitova adrese (A1S - A ). Ako je podudaranje postignuto, znai daje naslovljena rije u bloku u odreenom blonom prikljuku prirune memorije. Slika 10.10 prikazuje organizaciju 24-bitne adrese. B2
b23

07
0000 0111

0A
bi bO

1011 0 0 1 0

000010

10

I
bitovi za usporeivanje sa znakom Sf. 10.10 Organizacija 24-bitne adrese

-4.
adresa blonog prikljuka

adresa rijei u bloku

(Primjer 10.6.)

S.RIBARI- GRAA RAUNALA

327,

Ako sada usporedimo izvedbe prirunih memorija iz Primjera 10.4. (potpuno asocijativno preslikavanje) i iz Primjera 10.6. (izravno preslikavanje), moemo uoiti manju sloenost sklopovlja za prirunu memoriju s izravnim preslikavanjem: za prirunu memoriju s potpunim asocijativnim preslikavanjem sklopovi trebaju podrati istodobno podudaranje dijela adrese s 22-bitnim poljima znaaka.To znai da treba podrati istodobno 214 podudaranja 22-bitnih rijei. U sluaju prirune memorije s izravnim preslikavanjem na temelju adrese blonog prikljuka (dio adrese A15 - A2) odabire se samo jedna 8-bitna znaka koja se usporeuje s 8 najznaajnijih bitova adrese.

10.4.1.3. PRIRUNA MEMORIJA SA SKUPNIM ASOCIJATIVNIM PRESLIKAVANJEM


Priruna memorija sa skupnim asocijativnim preslikavanjem (engl. set-associative mapping) ini kombinaciju prethodno opisanih dvaju naina smjetanja blokova kojom se pokuavaju rijeiti problemi vezani za izravno preslikavanje i problemi sloenosti sklopovlja za potpuno asocijativno preslikavanje. Takva je priruna memorija na neki nain kompromisno rjeenje kojim se eli iskoristiti dobre znaajke prethodnih dviju organizacija. Organizacija skupne asocijativne memorije moe se opisati na sljedei nain: bloni prikljuci prirune

memorije organizirani su u skupine tako da mehanizam preslikavanja doputa da se blok iz glavne memorije prikljuuje u bilo koji bloni prikljuak koji pripada odgovarajuoj skupini.
Pretpostavimo da priruna memorija ima Bs skupina blonih prikljuaka. Svaka se skupina sastoji odfcblonih prikljuaka. Ukupno je Bs xk blonih prikljuaka u prirunoj memoriji. Blok iz glavne memorije BM2(i) moe se prikljuiti u bilo koji od k slobodnih blonih prikljuaka skupine j, pri emu je: j = i (modulo Bs). Drugim rijeima, blok iz glavne memorije izravnim se preslikavanjem dodjeljuje odreenoj skupini blonih prikljuaka, a zatim se nainom potpuno asocijativnog preslikavanja smjeta u slobodni bloni prikljuak u skupini. Broj blonih prikljuaka u skupini predstavlja vanu arhitektonsku znaajku i zato se esto taj parametar upotrebljava za poblii opis prirune memorije. Na primjer, govorimo o "dvoputnoj" asocijativnoj (engl. two-way associative cache memory) ili o "etvero put noj" asocijativnoj prirunoj memoriji ako ima dva, odnosno etiri blona prikljuka u skupini. Primjer 10.7. Pretpostavimo da imamo prirunu memoriju koja ima BM1 = 128 blonih prikljuaka organiziranih u 32 skupine B s = 32: Bs(0) - Bs(31) U svakoj skupini imamo BM1 / B s = 128 / 32 = 4 blona prikljuka ("etveroputna"asocijativna memorija). Glavna memorija neka je kapaciteta 64 K rijei i organizirana je u BM2 = 64 K / b = 64 K / 16 = 4096 blokova, pri emu je 6 = 16, odnosno imamo 16 rijei u bloku (liniji). Dakle, glavna memorija ima blokove BM2(0) - BM2(4095). Slika 10.11 prikazuje organizaciju takve memorije. Ilustrirajmo postupak preslikavanja. Neka je adresa referencirane rijei 4092 (dekadno) ili 0FFC (heksadekadno). Budui daje 16 rijei u bloku, indeks bloka u kojem se nalazi rije je i = 255 jer je 4092 = 255 x 16 + 12. Blok BM2(255) moe se prikljuiti na jedan od etiri slobodna prikljuka skupine j: j = i (modulo Bs) = 255 (modulo 32) = 31.

328

11. POGLAVLJE: VIRTUALNA MEMORIJA

adresa (dekodna)

blok

znaka

b=16 rijei

skupina

14 14 14 14 14 14 14 14 14 14 14 14

15 15 15 15 15 15 15 15 15 15 15 15

> B,{0)

Bs(1)

BS(2)

14 14 14 14
BJ4095)
65535

15 15 15 15

Bs(31)

priruna memorija M, glavna memorija M2

Sl.10.11 Organizacija 4-putne skupne asocijativne prirune memorije {Primjer 10.7.)

Slika 10.12 prikazuje organizaciju adrese za 4-putnu skupnu asocijativnu prirunu memoriju. Rije u bloku odabire se na temelju etiri najmanje znaajna bita adrese (A3 - A0). Pet bitova adrese A8 - A4 odreuje skupinu, dok se sedam najznaajnijih bitova adrese A15 - A9 rabi za usporeivanje sa 7-bitnim znakama.
A

A 1 1 1 1

A4A3 1 1 1 0 0

znaka

skupina

J^ izbor rijei u bloku J

adresa: OFFC 5L 10.12 Organizacija adrese za 4-putnu s k u p n u asocijativnu prirunu memoriju

Primjer 10.8. Glavna memorija neka je kapaciteta 16 MB i organizirana u blokove po 4 bajta (rijei). Priruna memorija neka je kapaciteta 64 KB organizirana tako da ima dva blona pri-

S. RiBARI - GRAA RAUNALA

329

kljuka po skupini (2-putna asocijativna memorija). Priruna memorija ima ukupno 64 K / 4 = 16 K blonih prikljuaka. Budui da je organizirana kao 2-putna asocijativna memorija, ima B s = 1 6 K / 2 = 8K skupina. 24-bitna adresa organizirana je na sljedei nain: dva najmanje znaajna bita adrese koriste se za izbor bajta rijei u bloku, 13 sljedeih bitova upotrebljava se za izbor skupine (8 K = 23 x 210), dok se 9 najznaajnijih bitova adrese koristi za usporeivanje s poljem znaaka. Razmotrimo u to e se transformirati skupna asocijativna priruna memorija za dva ekstremna sluaja. Pretpostavimo da raste broj prikljuaka po skupini, odnosno da se smanjuje broj skupina. Krajnji je sluaj kada priruna memorija ima samo jednu skupinu Bs = 1 i BM1 blonih prikljuaka. U tom sluaju, u skladu sa znaajkama skupne asocijativne prirune memorije, priruna memorija postaje memorija s potpunim asocijativnim preslikavanjem. Naime, nakon odreivanje skupine: j = i (modulo Bs) = i (modulo 1) = 0, slijedi asocijativno preslikavanje u jednoj skupini koja se sastoji od BM1 blonih prikljuaka. Ako, u suprotnom primjeru, pretpostavimo da broj skupina raste i dostie BM1, tj. Bs = BM1, tada vrijedi: j = i (modulo B5) = i (modulo BM1), to znai da smo dobili organizaciju prirune memorije s izravnim preslikavanjem. Uporaba 2-putnih skupnih asocijativnih prirunih memorija najea je od organizacija koje se temelje na skupnim asocijativnim prirunim memorijama. Analize pokazuju da one znaajno poboljavaju performansu (omjer pogotka) u odnosu na prirune memorije s izravnim preslikavanjem. 4-putne skupne asocijativne memorije umjereno dodatno poveavaju performansu uz relativno malo poveanje cijene, dok daljnje poveanje broja blonih prikljuaka po skupini ima mali uinak na performansu.

10.5. NAIN ZAMJENE BLOKOVA


Kad se novi blok iz glavne memorije treba prenijeti u prirunu memoriju i kad su svi doputeni bloni prikljuci zauzeti, potrebno je donijeti odluku o tome koji se od blokova u prirunoj memoriji mora zamijeniti. U sluaju prirune memorije s izravnim preslikavanjem odluka je ve unaprijed donesena - postoji samo jedan bloni prikljuak u koji se novi blok moe prikljuiti, i to onaj s indeksom j = i (modulo BM1).To znai da se "stari" blok u blonom prikljuku j zamjenjuje s novim blokom. No za prirune memorije s potpuno asocijativnim preslikavanjem i prirune memorije sa skupnim asocijativnim preslikavanjem odluka se temelji na algoritmu zamjene. Izbor algoritma zamjene i njegova izvedba sredinje su pitanje u organizaciji prirune memorije jer nain zamjene blokova izravno utjee na performansu memorijskog, a time i raunarskog sustava. Da bi se postigla velika brzina, algoritam zamjene stranica mora biti implementiran sklopovski. Cilj primjene djelotvorne zamjene blokova jest postizanje to veeg omjera pogotka, odnosno smanjenje uestalosti pojavljivanja promaaja koji nastaje kad se referencira rije u bloku koji se ne nalazi u prirunoj memoriji. Openito vrijedi da omjer pogotka tei svojoj maksimalnoj vrijednosti ako se vremenski interval izmeu dvaju uzastopnih promaaja maksimizira. Najee se rabe sljedei algoritmi zamjene.

330

11. P O G L A V L J E :

VIRTUALNA

MEMORIJA

FIFO (First-In-First-Out). Na temelju algoritma "prvi-unutra-prvi-van" izabire se blok za zamjenu koji je najranije "uao" u prirunu memoriju, odnosno blok koji je najdulje u prirunoj memoriji. LRU (Least Recently Used). Algoritmom LRU izabire se blok za zamjenu koji je u prrunoj memoriji najdue bez da bude referenciran. Naime, zahvaljujui vremenskoj lokalnosti programa, vrlo je malena vjerojatnost da e ponovo biti referencirana rije u tom bloku. NRU (Not Recently Used). Algoritmom se zamjenjuje blok koji nije u posljednje v r jeme bio referenciran u nadi i oekivanju da je malo vjerojatno da e biti korite u bliskoj budunosti. Definiranje vremenskog intervala koji odgovara posljednjervremenu" ovisi o implementaciji. Algoritam NRU vrlo je esto koriten kao aproksimacija algoritma LRU jer je jednostavniji za izvedbu. LFU (Least Frequently Used). Algoritmom LFU zamjenjuje se blok koji je u posljednje vrijeme bio najmanje puta referenciran. Random. Algoritam sluajne zamjene izabire sluajno blok za zamjenu u prirunci memoriji. Zanimljivo je da su analize pokazale da sluajna zamjena daje samo neto slabije rezultate od triju prethodno navedenih algoritama. Primjer 10.9. Prikaimo na jednostavnom primjeru algoritme zamjene blokova FIFO i LRU za jednak slijed referenciranja blokova. Pretpostavimo da se tijekom izvoenja programa referenci ra est razliitih blokova. Oznaimo ih s A, B, C, D, E i F. Slijed referenciranja je: B, C, B, A, E, F, B, D, F, E, C, B, E. Slika 10.13 a) prikazuje slijed zamjena za FIFO algoritam, a slika 10.13 b) slijed zamjena za LRU algoritam. (Opaska: sa zvjedicom (*) oznaavamo blok koji je kandidat za zamjenu, a s (+) oznaavamo pogodak.)
vrijeme t redoslijed B* 1 2 B B* C B* 3 B B* 4 A B* 5 E F 6 F F B A* E 7 B F B D E* 8 D F B D E* 9 F F B D E* 10 E 11 C F* 8 D C 12 B F* B D C 13 E E B D* C

c
A

c
A E

c*
A E

vrijeme t redoslijed 1 B B* LRU 2 C B* 3 B B C* 4 A 8 C* A B C* A E 6 F B* F A E 7 B B F A* E 8 0 B F D E*

9 F B F D E*

10 E B* F D E
11

12 B C F* B E 13 E C F* B E C C F D* E

Opaska: Blok oznaen sa zvijezdicom kandidat je za zamjenu SI. 10.13 Primjer a l g o r i t m a z a m j e n e F I F O i L R U

S. RIBARI - GRAA RAUNALA

331,

Pretpostavit emo da priruna memorija ima samo etiri blona prikljuka te da su na poetku izvoenja programa oni slobodni, odnosno prazni. Sa slike vidimo daje broj pogodaka za FIFO algoritam 4 a za LRU 5. Jasno je da na temelju jednostavnog primjera ne moemo ocjenjivati djelotvornost algoritama zamjene. Iscrpna ispitivanja pokazala su da FIFO algoritam i algoritam sluajne zamjene imaju skoro podjednake rezultate (omjere pogotka), dok LRU ima 10% do 15% vei omjer pogotka.

10.5.1. VELIINA BLOKA I KAPACITET PRIRUNE MEMORIJE


Jedan od najvanijih faktora koji utjeu na omjer pogotka prirune memorije jest veliina bloka, odnosno linije i kapacitet prirune memorije. Pod veliinom bloka ili linije razumijeva se broj bajtova ili rijei koji je pridruen svakoj znaki. Poveanjem veliine bloka, zahvaljujui lokalnosti programa, poveava se i omjer pogotka. Veliina bloka varira od nekoliko bajtova (rijei) do relativno velikih blokova od 64 ili 128 bajtova. No vei blok zahtijeva i dulje vrijeme njegova prijenosa izmeu glavne memorije i prirune memorije. Pretjerana veliina bloka moe imati za posljedicu tzv. oneienje prirune memorije koje se ogleda u tome to se neki podaci sadrani u bloku nikad ne upotrebljavaju. Za veinu procesora vrijedi da je veliina bloka jednaka veliini bloka podataka koji se inae prenosi izmeu glavne i prirune memorije. Neki procesori, meutim, koriste subblonu veliinu kao jedinicu koja se prenosi izmeu glavne i prirune memorije. Kapacitet prirune memorije takoer utjee na omjer pogotka. Uz ostale nepromjenjive parametre prirune memorije openito vrijedi da se omjer pogotka poveava ako se poveava kapacitet prirune memorije. Analize pokazuju da omjer pogotka brzo raste do neke prijelomne vrijednosti kapaciteta prirune memorije (npr., 32K ili 64K), a zatim je rast omjera pogotka vrlo usporen. To se objanjava vremenskom lokalnosti programa: program adresira samo ogranieni broj rijei za vrijeme trajanja nekog vremenskog intervala. No ako je kapacitet prirune memorije tako velik da blokovi "ive" u prirunoj memoriji dulje nego to zahtijeva radni skup W(t, h), onda poveanje kapaciteta prirune memorije nema djelotvornog utjecaja na poveanje omjera pogotka. Priruna memorija moe se klasificirati i prema broju njezinih razina koje ona zauzima u memorijskoj hijerarhiji pa pritom govorimo o jednorazinskoj i vierazinskoj prirunoj memoriji. Jednorazinska priruna memorija je u prvim raunalima koji su koristili prirunu memoriju bila ostvarena kao brza memorija temeljena na veem broju ipova, naravno, izvan procesorskog ipa. Procesor je u tom sluaju komunicirao s prirunom memorijom preko vanjske sabirnice. Zahvaljujui razvoju tehnologije visokog stupnja integracije, mogue je bilo prirunu memoriju implementirati na samom procesorskom ipu (engl. on-chip cache). Bitna znaajka takve izvedbe prirune memorije (koja se obino naziva "primarna" priruna memorija, odnosno L1 priruna memorija) jest njezina brzina te uklanjanje potrebe za dodatnim aktivnostima procesora koje se odnose na vanjsku sabirnicu (kad je postignut pogodak tijekom referenciranja memorije). Druga razina prirune memorije (L2) ostvarena je kao memorija veeg kapaciteta od prirune memorije L1, a moe se ostvariti izvan procesorskog ipa ili na samom procesorskom ipu. Razlog uvoenja druge razine prirune memorije (naziva se jo i "sekundarna" priruna memorija) oigledan je: kad ona ne bi postojala, procesor bi u sluaju promaaja morao pristupati glavnoj memoriji preko

332

11. POGLAVLJE: VIRTUALNA MEMORIJA

vanjske sabirnice. Zbog vee latentnosti glavne memorije i zbog manje propusnosti vanjske sabirnice takav se pristup odraava negativno na performansu sustava. Zahvaljujui razini L2 prirune memorije, procesor u sluaju promaaja u razini L1 prirune memorije pristupa razini L2 i na taj nain smanjuje negativne efekte promaaja koji su neizbjeni u jednorazinskoj prirunoj memoriji. Da bi se smanjio negativan utjecaj promaaja u sekundarnoj prirunoj memoriji, koji zahtijeva komunikaciju procesora s glavnom memorijom, uvodi se i trea razina prirune memorije L3. Dananji stupanj razvoja tehnologije visokog stupnja integracije doputa da se i razina L3 prirune memorije kapaciteta od nekoliko MB, takoer, realizira na procesorskom ipu. Ve smo spomenuli (poglavlje 9.) da priruna memorija moe biti organizirana tako da se u njoj pohranjuju instrukcije i podaci (l&D priruna memorija, naziva se jo i sjedinjena priruna memorija; engl. unified cache). Druga je organizacija prirune memorije, koja je ea, takva da se priruna memorija "raspri" na dvije memorije, i to na prirunu memoriju koja pohranjuje samo instrukcije (instrukcijska ili i priruna memorija; engl. / cache) i prirunu memoriju koja sadrava samo podatke (priruna memorija podataka ili D priruna memorija; engl. D cache). Takva se izvedba prirune memorije naziva i harvardski tip prirune memorije. I&D priruna memorija je jednostavnija, dok rasprena izvedba prirune memorije doputa istodobni pristup podacima i programu to je iznimno vano kad je procesor ostvaren kao protoni procesor (14. poglavlje). Primjer 10.10. Tablice 10.1. i 10.2. prikazuju osnovne znaajke prirune memorije za procesor Motorola MPC7540 (Power PC ISA) i procesor ltanium-2 (EPIC ISA), tvrtke Intel. Motorola MPC7540 LI 32 KB1 priruna memorija 32 KB D priruna memorija Skupna asocijativna (8-putna) 32 bajta Pseudo LRU Pohranjivanje-skroz/ kopiranje nazad (programirljivo) Paritetni bit (jedan bit po bajtu) Procesorski ip L2 256 KB l&D priruna memorija Skupna asocijativna (8-putna) 64 bajta Dva razliita pseudo sluajna Poh ra njiva nje-skroz/ kopiranje nazad (programirljivo) Paritetni bit za znaku i podatke Procesorski ip L3 1/2 MB l&D priruna memorija Skupna asocijativna (8-putna)
l

Kapacitet Nain smjetanja blokova u blone prikljuke Veliina bloka (linije) Algoritam zamjene blokova Nain obnavljanja sadraja glavne memorije Detekcija/ispravljanje pogreke Mjesto implementacije

64 bajta Dva razliita pseudo sluajna Pohranjivanje-skroz/ kopiranje nazad (programirljivo) Paritetni bit za znaku i podatke Izvan procesorskog ipa ;
>

Tablica 10.1. Osnovne znaajke prirune memorije za procesor Motorola MPC7540 (Power PC ISA)

S. RIBARI - GRAA RAUNALA

333,

ltanium-2

LI 16 KB1 priruna memorija 16 KBD priruna memorija Skupna asocijativna (4-putna) 64 bajta LRU Pohranjivanje-skroz ECC Procesorski ip

L2 256 KB l&D priruna memorija Skupna asocijativna (8-putna) 128 bajta NRU Kopiranje nazad ECC (SECDED) Procesorski ip

L3 3 MB l&D priruna memorija Skupna asocijativna (24-putna) 128 bajta NRU Kopiranje r\azad ECC (SECDED) Procesorski ip

Kapacitet Nain smjetanja blokova u blone prikljuke Veliina bloka (linije) Algoritam zamjene blokova Nain obnavljanja sadraja glavne memorije Detekcija/ispravljanje pogreke Mjesto implementacije

Tablica 10.2. Osnovne znaajke prirune memorije za Intel ltanium-2 (EPIC ISA)

10.5.2. NAIN OBNAVLJANJA SADRAJA GLAVNE MEMORIJE


U potpoglavlju 10.2. ve smo opisali naine obnavljanja sadraja glavne memorije. Ovdje ih jo jednom samo navedimo: i) pohranjivanje-kroz" (engl. store-through; write through) - najjednostavnija metoda u kojoj se sve operacije pisanja obavljaju u prirunoj memoriji i glavnoj memoriji i na taj se nain osigurava da je sadraj u glavnoj memoriji uvijek valjan; i i) upisivanje u meuspremnik (engl. write buffer) - inaica metode po hranjiva njeskroz"u kojoj se upis podatka u glavnu memoriju ostvaruje pomou upisnog meuspremnika i sklopovlja kojim se oslobaa procesor od izravnog obnavljanja sadraja glavne memorije; iii) kopiranje nazad" (engl. copy back, write back) - sastoji se u tome da se podatak upisuje samo u lokaciju u prirunoj memoriji, a da se upis oznai posebnom zastavicom pridruenoj bloku. Tijekom zamjene tako oznaenog bloka, on se upisuje natrag u glavnu memoriju i na taj se nain obnavlja sadraj glavne memorije. Problem s upisom kopiranje nazad" jest u tome to prije zamjene oznaenog bloka sadraj dijela glavne memorije nije obnovljen, odnosno valjan.

10.5.2. NAIN PRIBAVLJANJA BLOKA IZ GLAVNE MEMORIJE


Dva su osnovna naina pribavljanja blokova iz glavne memorije u prirunu memoriju: i) pribavljanje na zahtjev (engl. demand fetching); ii) pretpribavljanje.

334

11. POGLAVLJE: VIRTUALNA MEMORIJA

U sluaju pribavljanja na zahtjev, blok se prenosi samo onda kad procesor zahtijeva podatak (instrukciju) i kad se taj referencirani podatak ne nalazi u prirunoj memoriji, odnosno kad se dogodi promaaj. U nainu pretpribavljanja predvia se sljedei blok koji e biti potreban i on se tijekom besposlenog (engl. idle) ciklusa prenosi u prirunu memoriju. Zahvaljujui lokalnosti programa obino se sljedei blok uzima kao blok koji neposredno slijedi aktivnom bloku (postupak se naziva OBL - One block look-a-head). Razliiti su naini zapoinjanja pretpribavljanja bloka: pretpribavljanje uvijek - ono doputa najvei porast omjera pogotka, ali poveava memorijski promet, pretpribavljanje u sluaju promaaja - uz zahtijevani blok pribavlja se jo jedan, njemu susjedni blok, privjesno pretpribavljanje (engl. togged prefetch) - pretpribavljanje novog bloka zapoinje pri prvom referenciranju podatka u ve pretpribavljenom bloku.

10.6. KOHERENCIJA PRIRUNE MEMORIJE


U uskoj vezi s upisom podatka u prirunu memoriju i s obnavljanjem sadraja glavne memorije jest problem konzistentnosti podataka, odnosno koherencije prirune memorije. Koherencija memorijskog sustava moe se openito i najjednostavnije opisati na sljedei nain: memorijski sustav koherentan je ako je vrijednost dobivena instrukcijom load uvijek vrijednost koju je posljednja instrukcija store pohranila na memorijsku lokaciju s istom adresom. Problem koherencije, odnosno nekonzistentnosti podataka, nastupa kad se podaci u memorijskom sustavu mogu mijenjati iz vie od jednog izvora. Na primjer, u jedno procesors kom raunarskom sustavu s prirunom memorijom konzistentnost podataka naruena je ako kopija podatka u prirunoj memoriji nije jednaka kopiji podatka u glavnoj memoriji. Primjerice, podatak u glavnoj memoriji obnovljen je metodom po hranjiva nj akroz, ali se nakon toga sadraj te memorijske lokacije glavne memorije promijenio zbog ulazno-izlazne operacije (aktivnosti U/l kanala). Openito, problem koherencije prirune memorije ne odnosi se samo na podatke (u uem smislu te rijei) ve i na instrukcije (npr. kod operacijskog sustava sa zamjenom stranica; engl. page-swapping operation system). Problem koherencije prirune memorije posebno je izraen u multiprocesorskim sustavima u kojima svaki procesor ima i vlastitu prirunu memoriju. Osim toga, ima i pristup zajednikoj glavnoj memoriji. U takvom sustavu problem nekonzistentnosti podataka nastupa zbog postojanja viestrukih kopija podataka koje procesori mogu lokalno (u svojim privatnim prirunim memorijama) mijenjati. Primjerice, ako je isti podatak pohranjen u vie privatnih prirunih memorija pa jedan od procesora mijenja taj podatak u svojoj prirunoj memoriji, mora se ista promjena obaviti i u ostalim privatnim prirunim memorijama. Dakako, promjena se mora obaviti i u glavnoj memoriji. U raunarskim sustavima koristi se protokol MESI (modified-exclusive-shared-invalid) kojim se osigurava koherencija prirune memorije. Protokol je prvenstveno bio namijenjen multiprocesorskim sustavima, ali se rabi i u jednoprocesorskim sustavima.

S. RIBARI - GRAA RAUNALA

335,

10.7. PRIRUNA MEMORIJA-ANALIZA SLUAJA PROCESOR MC 68030


32-bitni CISC procesor MC 68030 (tvrtka Motorola) ima na procesorskom ipu ostvarenu instrukcijsku prirunu memoriju i prirunu memoriju podataka, dakle rije je o harvardskom tipu prirune memorije. Svaka od njih je veliine 256 bajtova i ima po 16 blonih prikljuaka. Veliina bloka, odnosno linije je 16 bajtova (ili 4 duge rijei, pri emu je duga rije (engl. long word) naziv za 32-bitne rijei). Obje prirune memorije rabe izravno preslikavanje. Pristup prirunim memorijama omoguen je virtualnom (logikom) adresom. Slika 10.14 prikazuje organizaciju instrukcijske prirune memorije. Blok je organiziran u tzv. etiri uloka, odnosno etiri duge rijei, i to tako daje omoguena zamjena pojedinanog ulaska (4 bajta), to odgovara subblonom prijenosu. U polju znake koja je pridruena svakom blonom prikljuku nalaze se i 4 bita valjanosti V koji su pridrueni svakoj dugoj rijei u bloku. Bit valjanost slui za rjeavanje problema nekonzistentnosti prirune memorije: ako se sadraj memorijske lokacije u glavnoj memoriji promijenio (npr. uslijed aktivnosti U/l), obrisat e se bit valjanosti u znaki koja odgovara dugoj rijei koja se nalazi u blonom prikljuku koji sadrava blok iz glavne memorije u kojem je dolo do promjene. Pored subblonog prijenosa, na poseban zahtjev sabirnikog upravljakog sklopa ostvaruje se prijenos u snopu kojim se zamjenjuje cijeli blok, odnosno linija (16 bajtova). Znaka se sastoji od 24 najznaajnijih bitova virtualne (logike) adrese, bita FC2 (bita funkcijskog koda) koji se upotrebljava za razlikovanje pristupa u korisnikom i nadglednom nainu rada te od 4, ve spomenuta, bita valjanosti V. Organizacija adresne rijei prikazana je takoer na slici 10.14. Adresni bitovi A3 - A2 slue za izbor jedne od 4 duge rijei u bloku. Adresni bitovi A7 - A4 upotrebljavaju se za izbor jednog od 16 blonih prikljuaka. Adresni bitovi A31 - A8 i bit funkcijskog koda FC2 usporeuju se u komparatoru sa znakama izabranog blonog prikljuka. Pogodak se postie kad se podudaraju adresni bitovi i FC2 sa znakom i kad je bit valjanosti V, odreen na temelju A3 - A2, postavljen u 1. U sluaju pogotka izabrana se rije (16 bita), odreena adresnom linijom A ir iz prirune memorije prosljeuje procesoru. U sluaju promaaja, odnosno nepodudaranja adresnog dijela i (ili) funkcijskog koda sa znakom ili u sluaju obrisanosti bita valjanosti V, sabirniki upravljaki sklop zapoinje dohvat duge rijei u kojoj se nalazi zahtijevana instrukcija i puni odgovarajui ulazak (subblok) u prirunoj memoriji. Jednako tako, moe se zahtijevati i prijenos u snopu koji e zamijeniti cijeli blok. Ako je dolo o podudaranja virtualne adrese sa znakom, a daje samo odgovarajui bit valjanosti obrisan (V = 0), dok su preostalih jedan ili vie bitova valjanosti 1, izvest e se subbloni prijenos. Procesor MC 68030 ima zanimljivu znaajku: kad zapoinje pristup odgovarajuoj prirunoj memoriji (instrukcijskoj ili prirunoj memoriji podataka), istodobno zapoinje i pristup sklopovima u memorijskoj upravljakoj jedinici MMU (Memory Management Unit) koji preslikavaju logiku adresu u fiziku. Ako se dogodio pogodak (blok se nalazi u prirunoj memoriji), MMU potvruje pravo upisivanja te informacija se prenosi prema prirunoj memoriji i sabirnikom upravljakom sklopu (operacija pisanja za prirunu memoriju podataka) ili se informacija iz prirune memorije prenosi procesoru (operacija itanja). Napomenimo da se MMU nalazi na procesorskom ipu i da ima jednaku brzinu rada kao i procesor. U sluaju promaaja upotrebljava se ve preslikana adresa u MMU i koristi se vanjski sabirniki ciklus da bi se pribavila instrukcija ili dohvatio podatak iz glavne memorije (npr. u sluaju

336

11. POGLAVLJE: VIRTUALNA MEMORIJA

operacije itanja). Bez obzira na to nalazi li se zahtijevani podatak u prirunoj memoriji ili ne, MMU preslikava logiku adresu ufiziku.Obje operacije, pristup prirunoj memoriji i preslikavanje logike adrese u fiziku u procesoru izvode se istodobno. Priruna memorija podataka ima jednaku organizaciju kao i instrukcijska priruna memorija. Priruna memorija za obnavljanje sadraja glavne memorije upotrebljava tehniku pohranjivanja-kroz: pri pogotku kod operacije pisanja mijenja se sadraj ulaska (duge rijei) u prirunoj memoriji podataka. Neposredno se ta promjena prenosi i glavnoj memoriji. U sluaju promaaja pri operaciji pisanja ne pristupa se prirunoj memoriji, ve se podatak upisuje samo u glavnu memoriju. Prije reeno ne vrijedi za instrukcijsku prirunu memoriju, budui da promjene njezina sadraja od strane procesora tijekom izvoenja programa nisu doputene te stoga ne postoji mogunost promaaja pri operaciji pisanja.
24 bita FC2

31

4 3 2 logika adresa

znaka

izbor duge rijei

izbor 1 od 16 polje znake V V V 16 blonih prikljuaka


J J

4 duge rijei = 16 bajtova V V V V V V V V V


r* r*

V V V zamjena znake

V V V

V V V

V V V podaci sa sabirnice podataka instrukcijske prirune memorije

pogodak ulaska komparator podudaranje (pogodak bloka) SI. 10.14 Organizacija instrukcijske prirune memorije (duge rijei)

L_T podaci prema cache holding registru prema upravljakoj logici prirune memorije

S. RIBARI - GRAA RAUNALA

337,

11. POGLAVLJE

VIRTUALNA MEMORIJA
11.1. UVOD
Glavna memorija predstavlja jednu od kritinih funkcijskih jedinica raunala jer svojim znaajkama bitno utjee na performansu cijelog raunarskog sustava. U 9. smo poglavlju naglasili dvije bitne znaajke glavne memorije: latentnost (brzinu memorije) i kapacitet. Problem latentnosti, odnosno nesklada u brzini sklopovlja procesora i glavne memorije rjeava se prirunom memorijom (engl. cache memory) koja je podrobno opisana u 10. poglavlju. U ovom emo poglavlju opisati virtualnu memoriju (engl. virtual memory) kojom se prvenstveno rjeava problem kapaciteta glavne memorije. (Opaska: rije virtualan latinskog je podrijetla (lat. virtus) i opisuje neto s vrlinama kao to su hrabrost, snaga, sposobnost djelovanja, no istodobno skriveno, koji se obino ne pojavljuje ali se moe pojaviti.) Uporabom arhitektonskog koncepta - virtualne memorije ostvaruje se sljedee: Glavna memorija se prividno pojavljuje kao memorija koja ima kapacitet sekundarne memorije i brzinu jednaku brzini najbre (ili skoro najbre) memorije u memorijskoj hijerarhiji. Uporaba sve sloenijih operacijskih sustava, viih programskih jezika te razvoj sloenih programskih sustava u viekorisnikim okruenjima koji su vrlo esto namijenjeni i multimedijskim primjenama postavljaju iznimno velike zahtjeve u vezi s kapacitetom glavne memorije. Naime, iako dananji (2011.godina) raunarski sustavi imaju glavne memorije kapaciteta vie stotina MB ili vie desetaka GB, mnoge primjene, posebno one u viekorisnikim okruenjima, zahtijevaju jo vei kapacitet glavne memorije. Uz pretpostavku da se tehnoloki dadu rijeiti problemi izvedbe memorijskih modula vrlo velikog kapaciteta, kao to su fizika veliina modula, potroak snage te hlaenje modula, jo uvijek ostaje otvoreno pitanje odnosa performanse i cijene. Virtualna memorija, koja se sastoji od dviju memorijskih hijerarhijskih razina - glavne memorije i sekundarne memorije, stvara privid korisniku da je glavna memorija kapaciteta jednakog kapacitetu sekundarne memorije uz vrlo malo poveanje latentnosti u odnosu na "prvotnu" glavnu memoriju. Ne zaboravimo daje sekundarna memorija kapaciteta koji je za razred veliine vei u odnosu na kapacitet glavne memorije (tablica 9.1). Drugim rijeima, virtualnom se memorijom dobiva puno vea izravno adresirljiva memorija od one koja u raunarskom sustavu zaista fiziki postoji. Osim toga, virtualna memorija ima jo barem tri pozitivna popratna uinka: oslobaa korisnike od pisanja programa koji, uz to to rjeavaju odreeni problem, trebaju i upravljati razmjetanjem programskih blokova uslijed nedostatka dovoljnog kapaciteta glavne memorije, programe ini neovisnima o konfiguraciji i kapacitetu fizike (glavne) memorije u raunarskom sustavu te uz vrlo kratko vrijeme pristupa memoriji postie nisku cijenu po pohranjenom bitu (engl. cost per bit).

338

11. POGLAVLJE: VIRTUALNA MEMORIJA

11.2. FIZIKI I VIRTUALNI ADRESNI PROSTOR


Da bi se razumio i objasnio nain djelotvornog rukovanja virtualnim memorijskim sustavom (u kojem su ukljuene najmanje dvije razine u memorijskoj hijerarhiji: glavna memorija M 2 i sekundarna memorija M 3 (slika 11.1) uz sudjelovanje procesora i operacijskog sustava), potrebno je razlikovati fiziki adresni prostor i virtualni adresni prostor.

procesor

virtualna memorija

SI. 11.1 Virtualna memorija

Fiziku memoriju ini skup stvarnih, fizikih memorijskih lokacija glavne memorije u kojima se pohranjuju instrukcije i podaci. Dakle, fizika memorija jest ona memorija koja je prikljuena na sabirnicu procesora, odnosno raunala (npr. memorijski modul DIMM; 9. poglavlje). Adresa rijei ili bajta u fizikoj memoriji naziva se memorijska adresa. Skup takvih adresa, koje se jednoznano dodjeljuju fizikim memorijskim lokacijama, predstavlja

fiziki adresni prostor.


Adresa (npr. ime za neku konstantu ili varijablu) koju upotrebljava programer ili koju generiraju program, proces ili dretva kao najmanja programska jedinica naziva se virtualna ili logika adresa. Adresa koju generira procesor tijekom prevoenja i izvoenja programa promatra se kao virtualna adresa jer se za nju ne zahtijeva niti nuno oekuje da referencira neku stvarnu lokaciju u fizikoj memoriji. Skup virtualnih adresa ini virtualni adresni prostor.

S. RIBARI - GRAA RAUNALA

339,

OznaimosF = {0,1,2,nrvl}fiziki adresni prostor,asV = {0,1,2, ...,n-1} virtualni adresni prostor. Zanimljivo je daje tijekom povijesnog razvoja (mikro)raunarskih sustava odnos izmeu veliine fizikog i virtualnog adresnog prostora bio je trojak. i) Fiziki adresni prostor F jednak je virtualnom adresnom prostoru V: m = n.Takvu znaajku susreemo u raunarskim sustavima koji su se temeljili na 8-bitnim mikroprocesorima u kojima su fiziki i virtualni adresni prostori veliine svaki po 64 KB. ii) Virtualni adresni prostor manji je od fizikog adresnog prostora. Virtualni adresni prostor bio je ogranien irinom adresne sabirnice (brojem adresnih linija) procesora. Ona je, tipino, za 8-bitne (mikro)procesore bila 16-bitna i time odreivala veliinu adresnog prostora od 64 K. Upotrebom posebnih arhitekturnih zahvata kao to su memorijske banke ili indeksno preslikavanje mogao se poveati fiziki adresni prostor tako da je fiziki adresni prostor F postao vei od virtualnog adresnog prostora V: m > n . Na primjer, virtualni adresni prostor bio je i dalje veliine 64 K, a fizika je memorija bila organizirana u osam memorijskih banaka - svaka po 64 K (n = 216; m = 23 x 216). iii) Virtualni adresni prostor vei je od fizikog adresnog prostora. Pojavom 16-bitnih, 32-bitnih i 64-bitnih (mikro)procesora problem rukovanja memorijom mijenja se iz temelja. Svjesni potrebe velikog adresnog prostora arhitekti poveavaju irinu adresne sabirnice (mikro)procesora tako da se moe izravno adresirati vie desetaka G (230) ili T (tera) (240) bajtova. Primjerice, AMD Opteron X4 koristi 48 bitova, od potencijalno raspoloivih 64 bita za izvedbu virtualnog memorijskog prostora pa se virtualni adresni prostor sastoji od 256 T adresa. Stvarna, fizika glavna memorija koja je prikljuena na sabirnicu procesora jest puno manjeg kapaciteta unato padu cijene poluvodikih memorija. U takvim se sluajevima adresa koju procesor postavlja na sabirnicu i referencira podatak ili instrukciju naziva i promatra kao virtualna adresa.

11.3. ADRESNO PRESLIKAVANJE


Suvremena raunala imaju virtualni adresni prostor puno vei od fizikog adresnog prostora i u tom se sluaju upotrebljava koncept virtualne memorije. Programu se, prije njegova izvoenja, mora dodijeliti stvarni, fiziki memorijski prostor. U suvremenim se raunarskinrusustavima dodjeljivanje memorijskog prostora izvodi dinamiki - tijekom izvoenja programa. U uskoj vezi s dinamikom dodjelom memorijskog prostora jest preslikavanje virtualnog adresnog prostora V u fiziki adresni prostor F. Formalno, preslikavanje se moe opisati funkcijom t
V - > F U {<|>},

gdje je V = {0, 1, 2,..., n -1} virtualni adresni prostor, F = {0,1, 2,..., m -1} fiziki adresni prostor, pri emu je n m, te (j) prazan skup. Opiimo funkciju f. Neka je a EV. Funkcija f definirana je na sljedei nain: f{a) = a'ako se podatak (u irem smislu te rijei, dakle podatak ili instrukcija) s virtualnom adresom a nalazi u fizikoj (glavnoj) memoriji na adresi a'ia'G F), odnosno f(a) = {()>}, ako se podatak s virtualnom adresom a ne nalazi u fizikoj (glavnoj) memoriji.

340

11. POGLAVLJE: VIRTUALNA MEMORIJA

Preslikavanje f(o) = a' oznaava pogodak, dok f(a) = { < j > } promaaj (engl. missing-item fault). Slika 11.2 shematski prikazuje preslikavanje virtualnog adresnog prostora u fiziki adresni prostor.
virtualna adresa

SI. 11.2 Shematski prikaz preslikavanja virtualnog adresnog prostora u fiziki adresni prostor

Mehanizam adresnog preslikavanja obavlja prethodno opisano preslikavanje. Ako je f(a) = a', pristupa se glavnoj memoriji, ako je f{a) = {())}, zahtijeva se prijenos podatka iz sekundarne memorije u glavnu memoriju. Slika 11.3 prikazuje pojednostavljenu organizaciju virtualnog memorijskog sustava. U sluaju promaaja, program koji je generirao virtualnu adresu a privremeno se suspendira, dok se zahtijevana rije ne prenese iz sekundarne memorije u glavnu memoriju. Razlog suspenzije programa koji je izazvao promaaj je sljedei: pristup sekundarnoj memoriju (disku) je spor u usporedbi s vremenom pristupa glavnoj memoriji (tablica 9.1.) te procesor nee ekati nekoliko stotina tisua ili milijuna perioda signala vremenskog voenja ne radei nita dok se ne obavi spori prijenos podataka, ve e se operacijski sustav pobrinuti da se izvede prospajanje konteksta (engl. context switching) to podrazumijeva aktivnosti kojima se omoguuje pokretanje novog programa (procesa, dretve) uz prethodnu pohranu stanja "starog" programa (engl. program context), stanja procesa ili dretve koje je potrebno za ponovno pokretanje programa (procesa, dretve) koji je bio suspendiran. Novi se zadatak izvodi sve dok se ne prenese podatak, odnosno blok podataka koji sadrava i referencirani podatak, s diska u glavnu memoriju.

S. RIBARI - GRAA RAUNALA

341,

_l

SI. 11.3 Pojednostavnjeni prikaz organizacije virtualnog memorijskog sustava

Preslikavanje adrese iz virtualnog prostora u adresu fizikog prostora ostvaruje se pomou tablice adresnog preslikavanja (engl. mapping table). Tijekom izvoenja programa tablica adresnog preslikavanja sadrava fizike adrese koje su pridruene odgovarajuim virtualnim adresama. To pridruivanje obavlja operacijski sustav koji je odgovoran i za promjene u tablici tijekom izvoenja programa.

11.3.1.

DENNINGOV MODEL VIRTUALNE MEMORIJE


Postupak adresnog preslikavanja opisat emo na jednostavnom modelu virtualne memorije koji je predloio P. J. Denning (slika 11.4). Skreemo pozornost na to da model u sebi ima namjerno ugraenu neloginost koja e nas uputiti na pravilno rjeenje problema adresnog preslikavanja. Virtualna se adresa a pohranjuje u registar virtualne adrese (slika 11.4). Njome se adresira element u tablici adresnog preslikavanja. Adresirani element u tablici preslikavanja moe biti dvojak: 1. ako se podatak, odreen virtualnom adresom, nalazi u fizikoj (glavnoj) memoriji, tada element u tablici preslikavanja predstavlja njegovu fiziku adresu a'; 2. ako se podatak, odreen virtualnom adresom, ne nalazi u fizikoj (glavnoj) memo-

342

11. POGLAVLJE: VIRTUALNA MEMORIJA

riji (dogodio se promaaji), odgovarajui element nee sadravati adresu lokacije u fizikoj memoriji a', ve e sadravati adresu mjesta u sekundarnoj memoriji (npr. sektor na disku) gdje je podatak smjeten. Dakle, osim adresnog dijela element u tablici adresnog preslikavanja mora sadravati i informaciju o (ne)nazonosti podatka u glavnoj memoriji.

SI. 11.4 Denningov model virtualne memorije

Mehanizam adresnog preslikavanja izvijestit e operacijski sustav daje dolo do promaaja time to e se zastavica Fault (slika 11.4) postaviti u jedan (Fault 1). Operacijski e sustav u tom sluaju izvesti odgovarajue radnje: pohraniti stanje programa (procesa, dretve), suspendirati program (proces, dretvu), pokrenuti akcije za dohvat traenog podatka iz sekundarne memorije, pokrenuti novi program (proces, dretvu) te nakon to je traeni podatak prenesen u glavnu memoriju i upisana njegova fizika adresa u odgovarajue mjesto u tablici preslikavanja, osvjeiti informaciju o raspoloivosti podatka u glavnoj memoriji i,

S. RIBARI - GRAA RAUNALA

343,

konano, nakon suspenzije novopokrenutog programa (procesa, dretve), ponovo aktivirati suspendirani program (proces, dretvu) koji je bio izazvao promaaj. Opisan Denningov model ima jednu neloginost U skladu sa slikom 11.4 moemo ustanoviti da virtualna adresa predstavlja pomaknue (engl. offset) u odnosu na poetni element u tablici adresnog preslikavanja pa tablica ima broj elemenata jednak broju adresa u virtualnom adresnom prostoru. Ako je tablica izvedena kao skup registara ili kao tablica u glavnoj memoriji, tada jeza izvedbu tablice preslikavanja potreban broj registara, odnosno broj memorijskih lokacija koji daleko premauje kapacitet glavne memorije. Primjer 11.1. Ako za jednostavan Denningov model pretpostavimo da je kapacitet glavne memorije 256 KB te da je kapacitet sekundarne memorije 4 GB, onda tablica adresnog preslikavanja ima 4 G lokacija (elemenata). To znai da je umjesto uporabe tablice adresnog preslikavanja veliine 4 G elemenata loginije ukloniti mehanizam adresnog preslikavanja i ne koristiti sekundarnu memoriju, ve umjesto svega toga implementirati glavnu memoriju koja ima kapacitet 4 GB. Da bi mehanizam adresnog preslikavanja bio opravdan, potrebno je kapacitet, odnosno veliinu tablice adresnog preslikavanja smanjiti. Veliina tablice smanjit e se ako element u njoj sadrava adresu bloka podataka smjetenog u glavnoj memoriji umjesto adrese pojedinano referenciranog podatka. Rjeenje za neloginost u Denningovom modelu nalazimo u dijeljenju virtualnog i fizikog adresnog prostora u blokove. Prema tomu jesu li blokovi stalne ili promjenjive veliine, oni se nazivaju stranicama (engl. page), odnosno segmentima (blokovi promjenjive duljine) (engl. segment). Broj elemenata, odnosno broj registara ili lokacija potreban za izvedbu tablice adresnog preslikavanja odreen je sada brojem blokova u virtualnom adresnom prostoru - po jedan se registar u tablici preslikavanja zahtijeva za svaki blok u virtualnom adresnom prostoru. Primjer 11.2. Neka je virtualna adresa duljine 32 bita, odnosno veliina virtualnog adresnog prostora je 232 = 4 G. Fizika adresa neka je duljine 26 bita, odnosno veliina fizikog adresnog prostora je 226 = 64 M. Pretpostavimo da su virtualni ifizikiadresni prostor podijeljeni na blokove vrste duljine, dakle stranice, veliine 4 K rijei. U tom je sluaju veliina tablice adresnog preslikavanja jednaka: (veliina virtualnog adresnog prostora) / (veliina stranice), odnosno 4 G / 4 K = 232 / 212 = 220. Tablica adresnog preslikavanja ima 1 M elementa. Slika 11.5 prikazujepopravljeni" Denningov model virtualne memorije koji je dobiven dijeljenjem virtualnog i fizikog adresnog prostora na blokove vrste duljine. Moemo uoiti da se tablica adresnog preslikavanja sada pretvorila u tablicu straninogpreslikavanja koja ima za faktor veliine stranice manji broj elemenata (Primjer 11.2.).

344

11. POGLAVLJE: VIRTUALNA MEMORIJA

SI. 11.5 Popravljeni" Denningov model virtualne memorije

Virtualna adresa koju generira procesor, bilo da se pribavlja instrukcija ili pak dohvaa ili pohranjuje podatak, organizirana je u dva dijela: znaajniji adresni bitovi ine virtualni stranini broj (engl. virtualpage number), a manje znaajni bitovi adrese predstavljaju pomaknute (engl. offset in page) u odnosu na poetak stranice tako da odreuje rije u stranici. Fizika adresa organizirana je tako da su njezini manje znaajni bitovi, koji odgovaraju pomaknuu, tj. adresi rijei u bloku dobiveni izravnim prijenosom dijela virtualne adrese (pomaknua) u manje znaajne bitove fizike adrese, a znaajniji se dio fizike adrese (fiziki stranini broj) dobiva adresnim preslikavanjem virtualnog straninog broja u fiziki stranini broj (slika 11.6). Adresno preslikavanje obavlja se tablicom straninog preslikavanja. Slika 11.6 prikazuje organizaciju virtualne adrese za virtualnu memoriju prikazanu na slici 11.7 i njezino preslikavanje u fiziku adresu. U ovom smo jednostavnom sluaju pretpostavili da se virtualni adresni prostor sastoji od 32 bloka (stranice), a fiziki adresni prostor od 8 blokova (straninih okvira) te da je blok veliine 1 K rijei. Preslikavanje virtualne adrese ufizikuadresu moe se opisati na ovaj nain (slika 11.5): 1. virtualna se adresa smjeta u registar virtualne adrese; 2. zastavica Fault postavlja se u 0 (Fault 0);

S. RIBARI - GRAA RAUNALA

345,

3. virtualni se stranini broj dovodi na ulaz tablice straninog preslikavanja i dohvaa (ita) se element iz tablice; 4. ako je postignut pogodak element iz tablice straninog preslikavanja na koji pokazuje virtualni stranini broj, smjeta se na znaajnija mjesta u registru fizike adrese (u polje oznaeno kaofizikistranini broj; slika 11.5); 5. istodobno se pomaknue iz registra virtualne adrese izravno prenosi u polje pomaknua u registrufizikeadrese; 6. ako nije postignut pogodak, to znai da se blok (stranica) s virtualnim straninim brojem ne nalazi u glavnoj memoriji, zastavica Fault postavlja se u jedan (Fault 1) i pokree se postupak rukovanja promaajem.
virtualni stranini broj

r
14

^
10 9 0

3 bita H H

10 bitova H

fiziki stranini broj 51.11.6 Organizacija virtualne i fizike adrese tijekom preslikavanja p o m o u tablice straninog preslikavanja (pojednostavljeno)

Uoimo jo jedan detalj vezan za Denningov model virtualne memorije. Naime, u sluaju pogotka pristup podatku u glavnoj memoriji ostvaruje se u dva slijedna koraka - prvo se pristupa tablici straninog preslikavanja da bi se dohvatila fizika adresa referenciranog podatka, a zatim se pristupa lokaciji u glavnoj memoriji gdje se nalazi referencirani podatak. Ako pretpostavimo da je tablica straninog preslikavanja realizirana u glavnoj memoriji, moemo ustvrditi da privid o velikoj glavnoj memoriji (iji je kapacitet prividno jednak kapacitetu sekundarne memorije) plaamo, ak i u sluaju pogotka, dvostrukim pristupom glavnoj memoriji, odnosno dvostrukim vremenom pristupa memoriji. Naravno, dodatna cijena koju plaamo je i gubitak" dijela kapaciteta radne memorije koji je potreban za izvedbu tablice straninog preslikavanja jer se svakom programu (ili procesu) u izvravanju, u vieprogramskom nainu rada, treba dodijeliti po jedna tablica straninog preslikavanja. Postoje razliite tehnike kojima se smanjuje dio radne memorije namijenjen izvedbi tablica straninog preslikavanja: i) uporaba rasprene tablice (engl. hash table) kojom se virtualni stranini broj preslikava u rasprenu tablicu uporabom jednostavne funkcije rasprenja (engl. hashing function) tako da struktura podataka potrebna za straninu tablicu zahtijeva broj elemenata u tablici jednak broju fizikih stranica (blokova), odnosno straninih okvira u glavnoj memoriji. ii) uporaba vierazinskih tablica straninog preslikavanja;

346

11. POGLAVLJE: VIRTUALNA MEMORIJA

iii) izvedba tablice straninog preslikavanja kao asocijativne memorije u kojoj svaki element tablice sadri oboje - virtualni stranini broj i fiziki stranini broj te se pretrauje asocijativno. U tom sluaju tablica straninog preslikavanja ima elemenata koliko ima i stranica u glavnoj memoriji. iv) tablice straninog preslikavanja izvedene su stranienjem (vidi 11.4) tako da se i one nalaze u virtualnoj memoriji.

11.4. STRANIENJE
Ve smo spomenuli da ako se virtualni adresni prostor ifizikiadresni prostor podijele na jednake blokove stalne veliine, govorimo o virtualnoj memoriji sa stranienjem (engl. paging). Dogovorno emo uvesti sljedeu terminologiju: virtualni adresni prostor, koji odgovara adresnom prostoru sekundarne memorije, podijeljen je na stranice, pri emu svaka stranica zauzima neprekinuti slijed lokacija odreene, vrste duljine (tipine veliine stranica su 4 - 64 KB, to u sluaju diska s 512-bajtnim sektorima odgovara 8 - 1 2 8 sektora). Glavna e memorija takoer biti podijeljena na stranice iste veliine, koje emo nazivati straninim okvirima (engl. page frame). Slika 11.7 prikazuje shemu virtualne memorije sa stranienjem. (Opaska: ova je pojednostavljena shema prilagoena primjeru sa slike 11.6 - virtualni adresni prostor sastoji se od samo 32 stranice, pri emu je svaka veliine 1K, a fiziki adresni prostor ima samo 8 straninih okvira.) Poetne su adrese stranica i straninih okvira na slici 11.7 predoene u dekadnom brojevnom sustavu. Naglasimo da je stranica osnovna jedinica za preslikavanje virtualnog adresnog prostora u fiziki te ujedno i osnovna jedinica koja se u sluaju promaaja prenosi izmeu sekundarne memorije i glavne memorije.
virtualna adresa

fizika

adresni prostor SI. 11.7 Pojednostavljena shema virtualnog memorijskog sustava sa stranienjem

Naziv stranini okvir ima opravdanje jer se za zadani program koji zauzima neki potprostor u virtualnom adresnom prostoru, samo podskup njegovih stranica preslikava u podskup straninih okvira u fizikom adresnom prostoru. Napredovanjem izvoenja programa,

S. RIBARI - GRAA RAUNALA

347,

stranice iz virtualnog adresnog prostora smjetat e se u osloboene stranine okvire u fizikom adresnom prostoru. Slika 11.8 podrobnjje prikazuje strukturu adresnog preslikavanja u virtualnoj memoriji sa stranienjem. Openito, svakom se procesu koji se izvodi dodjeljuje tablica straninog preslikavanja ili krae stranina tablica (engl. page table) koja je smjetena u glavnoj memoriji. Broj elemenata u straninoj tablici odgovara broju stranica u virtualnom adresnom prostoru koji je dodijeljen procesu. Poetna adresa stranine tablice za proces P sadrana je u

straninom tablinom registru ili, kako se jo naziva, baznom registru stranine tablice.

Format, odnosno oblik zapisa u elementu stranine tablice ovisi o specifinoj implementaciji sustava. No openito se element u straninoj tablici sastoji od polja u kojem se pohranjuje informacija o nazonosti referencirane stranice u glavnoj memoriji (polje nazonosti;

348

11. POGLAVLJE: VIRTUALNA MEMORIJA

engl. presence field). To se polje moe sastojati samo od jednog bita - bita valjanosti V (engl. valid bit) koji e biti postavljen u 1 ako je stranica odreena virtualnim straninim brojem u glavnoj memoriji: Ako j e V = 1, onda odgovarajue adresno polje u elementu stranine tablice sadrava poetnu adresu straninog okvira u glavnoj memoriji koji sadrava referenciranu stranicu. Ako je V = 0, tada adresno polje u elementu stranine tablice oznaava adresu stranice u sekundarnoj memoriji (disku). Element tablice straninog preslikavanja sadrava jo polje u kojem se nalaze bitovi - zastavice koje oznaavaju pravo pristupa aktivnog procesa pojedinoj stranici (zastavica R (read only) = 1 - pristup stranici samo operacijom itanja; zastavica W (read/write) = 1 - pristup stranici operacijama pisanja i itanja, zastavica X (execute only) = 1 - samo izvravanje bez prava modifikacije ili itanja) te zastavica koje oznaava je li stranica u straninom okviru bila modificirana upisivanjem (tzv. bit prljavosti; engl. dirty bit) i zastavica nazvanause bit" (naziva se i "bit referenciranja") koja se postavlja ujedan kad se stranici pristupi. Zastavica prljavosti koristi se za indikaciju potrebe ponovnog upisa stranice iz straninog okvira natrag u sekundarnu memoriju (tijekom zamjene stranica, odnosno oslobaanja straninog okvira), a zastavica use bit" rabi se za ostvarivanje algoritma zamjene stanica. Na temelju potonjeg opisa vidimo da se kao element u tablici straninog preslikavanja javlja ili adresa straninog okvira, odnosno fizika adresa (u sluaju pogotka; V = 1) ili adresa stranice u sekundarnoj memoriji (u sluaju promaaja; V = 0). No, jasno je da se trebaju sauvati i adrese stranice u sekundarnoj memoriji i to ak i onih koje se nalaze trenutno u fizikoj (glavnoj) memoriji jer e se te adrese rabiti u postupku zamjene stranica kada te stranice prestanu biti aktivne. U mnogim izvedbama virtualne memorije tablica fizikih adresa stranica, tj. straninih okvira i adresa stranica u sekundarnoj memoriji, predstavljaju logiku cjelinu iako su ostvarene dvjema odvojenim strukturama podataka. Virtualna memorija nudi jo jednu pogodnost - omoguuje da vie procesa dijele iste stranice u straninim okvirima uz potovanje zatitnih prava na temelju zastavica koje oznaavaju pravo pristupa (slika 11.9) i zastavica razina prioriteta. Na primjer, proces P1 i P3 dijele stranicu u treem straninom okviru tako da proces P1 ima pravo itanja i pisanja, a proces P3 samo itanja stranice (slika 11.9). Na temelju virtualne adrese i informacije koja je pohranjena u elementu stranine tablice za proces P moe se opisati postupak adresnog preslikavanja na sljedei nain:

Ako je AR valjano i ako je raina prioriteta pristupa < Pr tada, akojeV= i, onda je fizika adresa = PT(P).ADDR + pomaknue inae iznimka-promaaj inae iznimka-povreda prava pristupa i zatite
Komentar: AR - polje zastavica R, W i X kojim se definira nain pristupa: R - samo itanje; W-itanje i pisanje; X - s a m o izvoenje; Pr - polje razine prioriteta: 00 - najvii prioritet
01 10

11 - najnii prioritet

S. RIBARI - GRAA RAUNALA

349,

Zastavica V = 1 oznaava da je referencirana stranica u straninom okviru (pogodak); PT(P).ADDR - oznaava poetnu adresu straninog okvira dobivenu iz odgovarajueg elementa stranine tablice procesa P.
stranini tablini registar procesa P s stranina tablica procesa P,

11.4.1. TRANSLACIJSKI SPREMNIKTLB


(ENGL. TRANSLATION LOOKASIDE BUFFER)
Za opisanu organizaciju virtualne memorije sa stranienjem, u kojem su stranine tablice za pojedine procese smjetene u glavnoj memoriji, potrebna su, kao to smo ve spomenuli, dva pristupa glavnoj memoriji: prvim se pristupom glavnoj memoriji dohvaa odgovarajui element iz tablice straninog preslikavanja, drugim se pristupom, nakon uspjenog adresnog preslikavanja, dohvaa podatak iz glavne memorije ili pohranjuje u nju.

350

11. POGLAVLJE: VIRTUALNA MEMORIJA

Oito je da se zbog svega toga brzina memorijskog sustava smanjuje za faktor dva, odnosno vrijeme pristupa glavnoj memoriji udvostruuje se. To je cijena koju plaamo za prividno velik memorijski prostor kojim raspolaemo. No to nije i jedina cijena. Dodatna se cijena odraava i u straninoj fragmentaciji - zauzeu dijelova glavne memorije koji nisu raspoloivi za programe i podatke. Na primjer, tablice straninog preslikavanja pojedinih procesa mogu zauzimati prilino velik dio glavne memorije koji nije raspoloiv za stranice programa. U sluaju promaaja, tj. kada se referencirana stranica ne nalazi u straninom okviru, vrijeme pristupa podatku poveava se, a uz to procesor troi vrijeme na kuanske poslove vezane za prospajanje konteksta koji su nuni za privremeno suspendiranje jednog procesa i aktiviranje drugoga. Problem smanjenja brzine virtualne memorije rjeava se tako da se dio tablice straninog preslikavanja smjesti u maloj brzoj memoriji, zapravo posebnoj prirunoj memoriji koja se naziva transiacijski spremnik TLB (Translation Lookaside Buffer), iako bi bio bolji naziv translacijska priruna memorija. Transiacijski spremnik TLB obino je izveden na samom procesorskom ipu i pohranjuje elemente tablice straninog preslikavanja jednog ili vie procesa, i to samo one koji su koriteni u najskorijoj prolosti. Zahvaljujui svojstvu vremenske i prostorne lokalnosti programa i podataka, moe se oekivati da e se veina referenciranih podataka odnositi na lokacije u nedavno koritenim stranicama. Zbog svega toga, oekuje se da e veina referenciranja koristiti elemente iz tablica straninog preslikavanja koji se nalaze u translacijskom spremniku TLB. Transiacijski spremnik TLB, budui da je posebna priruna memorija, sastoji se od memorije za pohranu znaaka u kojoj se pohranjuju dijelovi virtualnog straninog broja (TLB znake, slika 11.10) i od memorije za pohranu podataka (poglavlje 10.) u kojoj se pohranjuju fiziki stranini brojevi (slika 11.10). U memoriji za pohranu znaaka, osim TLB znake, pohranjuju se zastavice kao to su "use" bit, odnosno bit referenciranja te zastavice za oznaavanje prioriteta i prava pristupa. One su potrebne jer se u sluaju podudaranja virtualnog straninog broja sa znakom TLB vie ne pristupa tablici straninog preslikavanja. Dakle, u sluaju pogotka, procesor se upuuje izravno iztranslacijskog spremnika TLB na glavnu memoriju. U memoriji znaaka nalazi se i bit valjanosti koji se postavlja u 1 kada je postignuto podudaranje virtualnog straninog broja i znake TLB. Transiacijski spremnik TLB obino je ostvaren kao priruna memorija s potpuno asocijativnim ili skupnim asocijativnim preslikavanjem i sadrava, tipino, od nekoliko desetaka do tisuu elemenata iz tablica straninog preslikavanja. Tijekom preslikavanja virtualne adrese u fiziku adresu, prvo se asocijativno pretrauje transiacijski spremnik TLB da bi se ustanovilo podudaranje virtualnog straninog broja (kao dijela virtualne adrese) i znake TLB. Ako je podudaranje uspjeno - dogodio se TLB pogodak, postavlja se bit valjanosti V, provjeravaju se zastavice prioriteta i prava pristupa i ako nema povrede prava pristupa, uzima se fiziki stranini broj koji zajedno s pomaknuem (dio virtualne adrese) oblikuje fiziku adresu kojom se pristupa memoriji. Slika 11.11. prikazuje detalj oblikovanja fizike adrese na temelju virtualne adrese uporabom translacijskog spremnika TLB (u sluaju TLB pogotka). Ako se, meutim, dogodio TLB promaaj, mora se utvrditi je li promaaj nastupio zato to se odgovarajui element iz tablice straninog preslikavanja ne nalazi u translacijskom spremniku TLB ("TLB promaaj") ili je promaaj uzrokovan zato to se referencirana stranica ne nalazi u glavnoj memoriji ("stranini promaaj"). Ako je rije samo o TLB promaaju (to

S. RIBARI - GRAA RAUNALA

351,

znai da se stranica nalazi u glavnoj memoriji), procesor e rukovati TLB promaajem tako da e pristupiti tablici straninog preslikavanja i odgovarajui element iz tablice prenijeti u translacijski spremnik TLB. Nakon toga e procesor ponovo pokuati referencirati traenu stranicu.
virtualni stranini broj pomaknue

straninog preslikavanja koji su koriteni u najskorijoj prolosti

352

11. POGLAVLJE: VIRTUALNA MEMORIJA

potrai fiziki stranini broj u tablici straninog preslikavanja

ostali bitovi (zastavice)

51.11.11. Detalj oblikovanja fizike adrese na temelju virtualne adrese i fizikog straninog broja dobivenog iztranslacijskog spremnika TLB

Ako se dogodio stranini promaaj, procesor e uz pomo operacijskog sustava pobuditi sve aktivnosti potrebne za prijenos stranice iz sekundarne memorije u stranini prikljuak glavne memorije. Uz to e se izvesti svi kuanski poslovi koji se odnose na obnavljanje tablice straninog preslikavanja. Nakon toga, prenijet e se element iz tablice straninog preslikavanja u translacijski spremnikTLB. Budui dajetranslacijski spremnikTLB posebna priruna memorija s relativno malim brojem prikljuaka za elemente iz tablice straninog preslikavanja, moe se oekivati (u sluaju TLB promaaja) zamjena nekog elementa iz TLB-a s novim elementom. Tijekom oslobaanja prostora u translacijskom spremniku TLB potrebno je kopirati zastavice (npr. zastavicu prljavosti i"use"bit) pridruene elementu koji se uklanja iz spremnika natrag u tablicu straninog preslikavanja. Navedimo neke tipine vrijednosti koje se odnose na translacijski spremnikTLB: veliina spremnika: 16-1024 elemenata iz tablice straninog preslikavanja; veliina bloka koji se prenosi izmeu glavne memorije (tablice straninog preslikavanja) i spremnika: 1 - 2 elementa tablice, pri emu se jedan element tablice sastoj od 4 do 8 bajtova; omjer pogotka je od 99% do 99.99%; usluajuTLBpogotkavrijemepristupaje0.5do 1 perioda signala vremenskog voenja: TLB promaaj zahtijeva 10 - 30 dodatnih perioda signala vremenskog voenja.

S. RIBARI - GRAA RAUNALA

353,

11.5. SEGMENTACIJA I SEGMENTACIJA SA STRANIENJEM


Vii programski jezici (npr. C ili Pascal) doputaju oblikovanje programskih logikih cjelina kao to su procedure, programski moduli ili smisleni blokovi podataka. Svi su oni razliitih veliina. Dijeljenje virtualnog i fizikog adresnog prostora u skladu s logikim cjelinama vodi do koncepta segmentacije (engl. segmentation). Blokovi koji se izmjenjuju izmeu glavne i sekundarne memorije sada su promjenjive veliine i nazivaju se segmenti Segmenti, dakle, nemaju jednaku i vrstu duljinu jer se oni odnose izravno na objekte na programskoj razini. tovie, njihova se veliina moe mijenjati tijekom izvoenja programa. Rukovanje takvim cjelinama u virtualnom memorijskom sustavu izgleda loginije i prirodnije u usporedbi sa stranienjem, meutim, izvedba virtualnog sustava sa segmentacijom bitno je sloenija od stranienja (problem rukovanja zamjenom i smjetanjem segmenata, fragmentacija memorije) pa u raunarskim sustavima zbog jednostavnosti izvedbe prevladavaju virtualni memorijski sustavi sa stranienjem. Kombinacijom segmentacije i stranienja eli se ostvariti virtualni memorijski sustav koji objedinjuje dobra svojstva segmentacije i stranienja. U tom su sluaju virtualni adresni prostor i fiziki adresni prostor podijeljeni na segmente (blokove promjenjive veliine), a svaki je segment opet podijeljen na stranice (blokove vrste veliine). Opise postupaka adresnog preslikavanja moete nai u knjizi Ribari, S.: Arhitektura raunala RISC i CISC, kolska knjiga, Zagreb, 1996.

11.6. ZAMJENA I PRIBAVLJANJE STRANICA


Potreba za zamjenom stranica u virtualnom memorijskom sustavu sa stranienjem, slino kao i u sluaju prirune memorije (poglavlje 10.), pojavljuje se kad se nova stranica iz sekundarne memorije treba prenijeti u glavnu memoriju, a u njoj nema slobodnog straninog okvira. Budui da su svi stranini okviri zauzeti, mora se donijeti odluka koja e se stranica iz glavne memorije udaljiti i na taj nain osloboditi stranini okvir potreban za novu stranicu. Izabrana se stranica zamjenjuje novom stranicom. Odluka o izboru stranice temelji se na algoritmu zamjene (engl. page replacement algorithm). Razmatranja u odjeljku 10.5. vrijede i ovdje. Obino se upotrebljavaju algoritmi sluajnog izbora, FIFO, LRU i NRU. Slino kao i kod prirune memorije, ovdje se potrebna informacija (blok ili stranica iz sekundarne memorije) pribavlja na dva glavna naina: i) na zahtjev, ii) pretpribavljanjem. Pribavljanje na zahtjev najee se upotrebljava jer je jednostavno za izvedbu - u sluaju straninog promaaja pribavlja se upravo ona stanica koja je i uzrok promaaja. Pretpribavljanje temelji se na lokalnosti programa i znaajkama radnog skupa pa je mogue predvidjeti sljedeu potrebnu stranicu i pribaviti je u glavnu memoriju prije nego je ona stvarno potrebna. Predvianje sljedeih stranica koje e se naslovljavati tijekom izvoenja programa vrlo je teko (posebice u viekorisnikom okruenju) pa zato veina virtualnih memorijskih sustava upotrebljava pribavljanje na zahtjev.

354

11. POGLAVLJE: VIRTUALNA MEMORIJA

11.7. VIRTUALNA MEMORIJA I PRIRUNA MEMORIJA


Sada kada smo se upoznali s virtualnom memorijom i prirunom memorijom (poglavlje 10.) moemo odgovoriti i na pitanje: to se dobiva uporabom obaju koncepata - prirune memorije i virtualne memorije? Na temelju analize mehanizma djelovanja prirune memorije moemo zakljuiti da ona slui za ubrzanje rada glavne memorije, tvorei privid o postojanju vrlo brze glavne memorije. S druge strane, virtualna memorija stvara privid o postojanju glavne memorije vrlo velikog kapaciteta. Kombinacijom triju razina u memorijskoj hijerarhiji (prirune memorije glavne memorije M2 i sekundarne memorije M3) stvara

se potpuni privid o vrlo brzoj glavnoj memoriji (ija je brzina usporediva s brzinom prirune memorije) i istodobno memoriji vrlo velikog kapaciteta (jednakog kapacitetu sekundarne
memorije). Posljedicu svega toga jest predstavljanje memorijske jedinice u raunarskom sustavu kao vrlo brze memorije kojoj je cijena za GB samo mali viekratnik one cijene koja odgovara pohrani podataka u sekundarnoj memoriji (disku).

11.8. VIRTUALNI MEMORIJSKI SUSTAVINTEGRACIJA TRANSLACIJSKOG SPREMNIKA TLB, PRIRUNE MEMORIJE I VIRTUALNE MEMORIJE
Do sada smo raspravljali o prirunoj memoriji, virtualnoj memoriji i translacijskom spremniku TLB skoro neovisno. No oni su u raunarskom sustavu u interakciji koja odreuje virtualni memorijski sustav. Oblik interakcije ima vie inaica koje ovise o nainu implementacije virtualnog memorijskog sustava. Sada emo opisati opi scenarij koji je zajedniki za veinu implementacija (slika 11.12). Procesor generira virtualnu adresu. Ona se dovodi translacijskom spremniku TLB (koji je realiziran kao posebna asocijativna priruna memorija). Ako je postignut TLB pogodak - to znai daje virtualnoj adresi pridruena odgovarajua fizika adresa - tada sefizikaadresa, dobivena iz translacijskog spremnika TLB, prosljeuje prirunoj memoriji. Ako je i tu postignut pogodak (tzv. cachehit) - to znai da se blok podataka s referenciranom rijei nalazi u blonom prikljuku prirune memorije, pristupa se prirunoj memoriji i dohvaa se referencirani podatak. No ako se dogodio promaaj u prirunoj memoriji - to znai da se blok podataka ne nalazi u blonom prikljuku prirune memorije - tada se obnavlja priruna memorija prijenosom bloka iz glavne memorije (kao to je to opisano u poglavlju 9.). to se dogaa u sluaju TLB promaaja - odnosno ako se za generiranu virtualnu adresu u translacijskom spremniku TLB ne nalazifizikaadresa? U tom se sluaju pristupa tablici straninog preslikavanja koja se nalazi u glavnoj memoriji. Ako se sada dogodi pogodak u tablici straninog preslikavanja, dohvaa se fizika adresa iz tablice, obnavlja se sadraj translacijskog spremnika TLB i pretrauje priruna memorija. Ako se, meutim, dogodio promaaj u tablici straninog preslikavanja (stranini promaaj) - to znai da se stranica ne nalazi u glavnoj memoriji - tada se pristupa sekundarnoj memoriji te slijedi obnavljanje sadraja glavne memorije, prirune memorije i tablice straninog preslikavanja. Sljedei pokuaj pristupa toj virtualnoj adresi rezultirat e obnavljanjem sadraja translacijskog spremnika TLB i normalnim pristupom prirunoj memoriji. Virtualni memorijski sustav koji omoguuje da virtualna memorija i priruna memorija djeluju zajedno u hijerarhiji: priruna memorija M 1 - glavna memorija M 2 - sekundarna memorija M 3 - postavlja neka logina ogranienja. Na primjer, podaci se ne mogu nalaziti

S. RIBARI - GRAA RAUNALA

355,

u prirunoj memoriji ako se istodobno ne nalaze i u glavnoj memoriji. Operacijski sustav vodi brigu da se preseljenjem stranice iz glavne memorije u sekundarnu ujedno "ispere" sadraj te stranice u prirunoj memoriji. Istodobno, operacijski e se sustav pobrinuti za promjenu u tablici straninog preslikavanja i promjenu sadraja translacijskog spremnika TLB. Pokuaj pristupa podatku koji se nalazi na preseljenoj stranici generirat e promaaj, odnosno promaaj TLB i stranini promaaj.

SI. 11.12 Scenarij djelovanja virtualnog memorijskog sustava sastavljenog od prirune memorije, glavne i sekundarne memorije

356

11. POGLAVLJE: VIRTUALNA MEMORIJA

Primjer 11.3. U virtualnom memorijskom sustavu koji predstavlja integraciju translacijskog spremnika TLB, prirune memorije i virtualne memorije javljaju se tri vrste promaaja:TLB promaaj (engl. TLB miss), promaaj prirune memorije (engl. cache miss) - referencirani podatak ne nalazi se u bloku koji je "prikljuen" u blonom prikljuku prirune memorije i stranini promaaj (engl. page fault) - referencirani podatak ne nalazi se u stranici koja je "prikljuena" u stranini okvir glavne memorije. Zanimljivo je promotriti mogue meusobne odnose izmeu tih triju vrsta promaaja, odnosno pogodaka (slika 11.12): Sluaj 1: TLB pogodak, priruna memorija - promaaj, tablica straninog preslikavanja - pogodak Mogui sluaj (iako se tablica straninog preslikavanja u sluaju TLB pogotka nikada ne provjerava) - na temelju TLB pogotka generira se fizika adresa koja se prosljeuje prirunoj memoriji. Referenci rana se rije ne nalazi u stranici koja je "prikljuena" u nekom straninom prikljuku prirune memorije. U tom se sluaju obnavlja sadraj prirune memorije dohvaanjem stranice iz glavne memorije. Sluaj 2: TLB promaaj, priruna memorija - pogodak, tablica straninog preslikavanja - pogodak, Mogui sluaj - kad se dogodi TLB promaaj, upuuje se na tablicu straninog preslikavanja gdje se pronalazi fizika adresa, obnavlja se sadraj TLB i pristupa se prirunoj memoriji iz koje se dohvaa referencirani podatak. Sluaj 3: TLB promaaj, tablica straninog preslikavanja - pogodak, priruna memorija - promaaj Mogui sluaj - kad se dogodi TLB promaaj, upuuje se na tablicu straninog preslikavanja na temelju koje se utvruje da se referencirani podatak nalazi u stranici koja je u glavnoj memoriji. Na temelju fizike adrese dobivene iz tablice straninog preslikavanja pristupa se prirunoj memoriji, no stranica koja sadrava referencirani podatak nije u straninom prikljuku te se mora obaviti prijenos stranice iz glavne memorije. Sluaj 4: TLB promaaj, priruna memorija - promaaj, tablica straninog preslikavanja - promaaj Mogui sluaj - dogodila su se sva tri promaaja. Referencirani e se podatak dobiti na temelju dohvata stranice iz sekundarne memorije obnavljanjem glavne memorije, prirune memorije i tablice straninog preslikavanja. U ovom e sluaju proces koji je izazvao promaaj biti suspendiran sve dok se ne obnove spomenuti sadraji. Sluaj 5: TLB pogodak, priruna memorija - promaaj, tablica straninog preslikavanja - promaaj Nemogui sluaj - translacijski spremnikTLB ne moe sadravati fiziku adresu ako se referencirana stranica ne nalazi u glavnoj memoriji. Sluaj 6: TLB pogodak, priruna memorija - pogodak, tablica straninog preslikavanja - promaaj Nemogui sluaj - priruna memorija ne moe sadravati podatak ija se pripadajua stranica ne nalazi u glavnoj memoriji.

S. RIBARI - GRAA RAUNALA

357,

Sluaj 7: TLB promaaj, priruna memorija - pogodak, tablica straninog preslikavanja - promaaj ^Nemogui sluaj - podatak se ne moe nalaziti u prirunoj memoriji ako se odgovarajua stranica ne nalazi u glavnoj memoriji.

Jk'A " V
v

. Io>

S. RIBARI - GRAA RAUNALA

359,

12. POGLAVLJE

SABIRNICE
12.1. UVOD
U raunarskom sustavu sastavne jedinice: procesor, glavna memorija, priruna memorija i ulazno-izlazne jedinice moraju meusobno komunicirati. Komunikacija se ostvaruje sabirnicom (engl. bus) koja predstavlja zajedniki elektriki spojni put, sastavljen od vodia, izmeu sastavnih jedinica raunarskog sustava. Uporabom sabirnice smanjuje se broj vodia izmeu pojedinih jedinica kao i broj prikljuaka na kuitu integriranih sklopova tako to svaka jedinica prikljuena na sabirnicu zahtijeva samo jedan ulazni ijedan izlazni pristupni sklop (engl. port). Ujedno, mogue je prikljuivanje novih jedinica u raunarski sustav uz minimalne promjene ili remeenje drugih ve prikljuenih jedinica. Slika 12.1 prikazuje razliku prikljuenja triju modula (procesor, memorija, ulazno-izlazna jedinica) kada se koristi veza "svaki sa svakim" (ili "toka - toka") i veza temeljena na sabirnici. Vidimo da u izvedbi povezivanja "toka - toka" (slika 12.1 a)) svaki od modula mora imati vie ulaznih i vie izlaznih pristupnih sklopova te daje broj vodia potrebnih za ostvarivanje veze uviestruen. (Opaska: brojevi u zagradama iznad kose crtice oznaavaju broj vodia potrebnih za ostvarivanje veze.) Uvoenje nove jedinice u sustav zahtijevalo bi u tom sluaju dodatne preinake - nove pristupne sklopove u ve postojeim jedinicama i vei broj novih vodia potrebnih za uspostavljanje novih veza. Sve navedeno je razlog zato se u raunarskim sustavima upotrebljava sabirnica kao spojni put (slika 12.1 b)). (Opaska: iroke linije koje zavravaju strelicom oznaavaju vei broj vodia.) Budui da je sabirnica zajedniki put za vie jedinica, u naelu se preko nje moe uspostaviti istodobno samo veza izmeu dvije jedinice i obavljati pojedinani prijenosi. Ostale jedinice, koje u tom trenutku ne sudjeluju u prijenosu podataka, elektriki (ne fiziki!) odspojene su od sabirnice. To se postie sklopovima s tri stanja (tree je stanje - stanje visoke impedancije) koji omoguuju fiziko prikljuenje vie jedinica na vanjsku sabirnicu. Za ostvarivanje svih potrebnih veza izmeu jedinica sabirnica se mora u vremenu dijeliti, odnosno naizmjence koristiti od strane pojedinih jedinica. Da bi izbjegli mogue nesporazume, naglasimo da emo u ovom poglavlju govoriti o vanjskim sabirnicama te ih nazivati samo sabirnicama, budui da se i u procesoru ostvaruje spojni put kojim se povezuju sklopovi aritmetiko-logike jedinice, registri ili skupovi registara ope namjene, upravljaka jedinica te upravljaki registri. Taj se spojni put obino naziva interna sabirnica. Kao to smo ve vidjeli u poglavlju 3., procesor moe imati jednu ili vei broj internih sabirnica ostvarenih u samom procesorskom ipu.

360

12. POGLAVLJE: SABIRNICE

ulazni i izlazni pristupni sklop

ulazni i izlazni pristupni sklop

ulazni i izlazni pristupni sklop a)

ulazni i izlazni pristupni sklop

b) SI. 12.1 Povezivanje jedinica: a) nainom "toka - toka"; b) u p o r a b o m sabirnice

Jednostavni raunarski sustavi imaju samo jednu (vanjsku) sabirnicu (obino se naziva sistemska sabirnica (engl. system bus) ili sabirnica sustava) koja se sastoji od stotinu i vie vodia "utisnutih" u matinu plou (engl. motherboard) s konektorima koji su na pravilnim razmacima rasporeeni i omoguuju prikljuivanje pojedinih modula, odnosno jedinica. Raunarski sustavi veih performansi imaju viestruke sabirnice, koje su namijenjene povezivanju razliitih jedinica, i koje se nalaze u meusobnom hijerarhijskom odnosu. Taka na primjer, govorimo o lokalnoj sabirnici, memorijskoj sabirnici i ulazno-izlaznoj sabirnicL

S. RIBARI - GRAA RAUNALA

361,

Linije - vodii koje ine sabirnicu mogu se izdvojiti prema funkcijama tako da se sabirnica moe promatrati kao sabirniki sustav koji se sastoji od triju osnovnih sabirnica: i) upravljake sabirnice (engl. control bus) kojom se prenose upravljaki signali kao to su itaj/pii (R/W), zahtjev za prekid (IRQ), reset (RESET), potvrda prekida (IACK), signal vremenskog voenja (Clock) i si.; ii) sabirnice podataka (engl. data bus) koja je dvosmjerna i njome se prenose podaci. Sabirnica podataka sastoji se od /+1 linija za prijenos jednog ili veeg broja bajtova D 0 -D jf gdje/moe biti 7,15,31 ili 63; i i i) adresne sabirnice (engl. address bus) koja se sastoji od k +1 linija A 0 - Ak, gdje k obino moe biti 15, 31, 63 i vie. Adresnom sabirnicom prenosi se adresa jedinice kojoj se eli pristupiti (npr. adresa memorijskog modula, odnosno adresa memorijske lokacije, adresa registra podataka u ulazno-izlaznoj jedinici). U strunoj literaturi esto se sve tri sabirnice nazivaju jednim imenom - sabirnica za prijenos podataka (engl. data transfer bus). U sluaju adresne sabirnice i sabirnice podataka obino govorimo o irini sabirnice, primjerice, za adresnu sabirnicu od 32 linije (A0 - A31) kaemo da je irine 32 bita ili za sabirnicu podataka od 64 linije (D0 - D63) kaemo da je irine 64 bita. Napomenimo da potonja podjela odgovara funkcijama koje pojedine grupe linija obavljaju, meutim, vrlo su esto sabirnike linije vremenski multipleksirane pa u razliitim vremenskim trenucima imaju razliite funkcije. Na primjer, ista grupa linija moe u jednom trenutku posluiti za prijenos adrese, a u sljedeem trenutku za prijenos podataka - u tom sluaju kaemo da su adresne linije i linije podataka multipleksirane. Mogui su razliiti oblici multipleksiranja, na primjer, multipleksiranje adresnih i upravljakih linija, multipleksiranje linija podataka i upravljakih linija, multipleksiranje linija podataka s linijama podataka kada se preko istih linija u dva vremenska trenutka prenosi podatak koji je dvostruko dulji od broja raspoloivih linija za prijenos podataka. Na jednak se nain mogu meusobno multipleksirati i adresne linije. Vrlo se esto u literaturi upotrebljava klasifikacija sabirnice na sabirnice sredinje (centralne) procesne jedinice (CPU sabirnice; engl. CPU bus) i sistemske sabirnice pri emu CPU sabirnicu ine sve linije prikljuene izravno na procesorske prikljuke. U veini sluajeva su zbog ogranienog broja procesorskih prikljuaka neke linije CPU sabirnice multipleksirane. Sistemska sabirnica dobiva se nakon demultipleksiranja CPU sabirnice - linije sistemske sabirnice se mogu tada izdvojiti po funkcijama, a ine ih nemultipleksirane grupe linija koje prenose podatke, adrese i upravljake signale. Sabirnica je definirana elektrikim znaajkama linija i slijedom signala na razliitim linijama koje sudjeluju u prijenosu podataka. Pravila koja odreuju sijed ove signala tijekom prijenosa podataka nazivaju se sabirniki protokol.

362

12. POGLAVLJE: SABIRNICE

Primjer 12.1. Slika 12.2 prikazuje vremenski dijagram stanja na sabirnici za 16-bitni mikroprocesor Intel 8086. Moemo uoiti da su linije AD 0 - AD15 multipleksirane tako da se njima u jednom trenutku prenosi esnaest manje znaajnih bitova adrese (A0 - A1S), a nakon toga 16-bitni podatak. Linije A16/S3 - A19/S6 vremenski su dijeljene izmeu etiri najznaajnija bita adrese i etiri bita informacije o statusu procesora.

CLK

READY A16/S3-A19/S6

f S3-S6

S3-S6

AD0-AD15

J S > (

Xpdaic

npr. podaci iz U/l meuskupa

U Q < Ui tr

ALE

>u 2 L o
u

R5=LOW
1 t i

r ~

s2{M/io)
5, (DT/R)

j(

S0 (DEN)

)T
^AO-A j s ^ p o d | c i u metjnoriji^ J ^AO-^IS^po^aci prenjia U / l ^

ADO-AD15

u t: oc g m 5 crt a
'u
u
LU

ALE

WR=LOW

S2 (M/iO)

r
X i
I

f O (U a o

S, (DT/R)

S0(DEN)

)T
I i I l i t i

SI. 12.2 Vremenski dijagram stanja na sabirnici procesora Intel 8086

S. RIBARI - GRAA RAUNALA

363,

12.2. VODEI I PRATEI MODULI


Prije nego opiemo znaajke sabirnikog protokola, opiimo ulogu vodeeg modula (engl. master module) i prateeg modula (engl. slave module) koji se prikljuuju na sabirnicu. Moduli koji se prikljuuju na sabirnicu mogu se prema funkciji podijeliti u dvije grupe: vodei moduli i pratei moduli. Vodei modul upravlja sabirnicom i odgovoran je za ostvarivanje sabirnikog protokola. On, u naelu, zapoinje sabirnike aktivnosti i generira signale potrebne za adresiranje, odnosno izbor prateih modula i prijenos podataka. Vodei moduli mogu se jo klasificirati kao trajno vodei (engl. permanent bus master) i kao privremeno vodei (engl. temporary bus master). Trajno vodei modul ima najvei prioritet u pogledu "preuzimanja vlasnitva" nad sabirnicom i obino je to procesor, dok privremeno vodei modul dobiva na zahtjev (upuen trajno vodeem modulu ili sabirnikom arbitru) upravljanje sabirnicom za odreeni vremenski interval, a zatim upravljanje sabirnicom vraa trajno vodeem modulu. Primjer privremeno vodeeg modula je upravljaki sklop za izravan pristup memoriji (DMA procesor -Direct Memory Access processor) koji dobiva na upotrebu sabirnicu od trajno vodeeg modula te nakon obavljena prijenosa podataka izmeu ulazno-izlazne jedinice i memorije vraa upravljanje trajno vodeem modulu. (Opaska: upravljaki sklop za izravni pristup memoriji vrlo je esto sloenosti razine procesora tako da se opravdano naziva i DMA procesor.) Pratei modul "oslukuje" sabirnicu, odnosno prati sve dogaaje i aktivnosti na upravljakim i adresnim linijama sabirnice. Ako "prepozna" svoju adresu na adresnoj sabirnici, odnosno ako je adresiran od vodeeg modula, on alje ili prima podatke preko sabirnice podataka u skladu sa sabirnikim protokolom. Napomenimo da pratei moduli nemaju mogunost niti sposobnost upravljanja sabirnicom. Primjeri prateih modula jesu memorija i ulazno-izlazne jedinice. No neke od ulazno-izlaznih jedinica, iako pratei moduli mogu zahtijevati posluivanje od strane vodeeg modula aktiviranjem signala zahtjeva za

prekid (engl. interrupt request signal).

12.3. SABIRNIKI CIKLUS I SABIRNIKI PROTOKOL


Sve aktivnosti tijekom prijenosa podataka izmeu vodeeg i prateeg modula obino se opisuju sabirnikim ciklusom (engl. bus cycle) koji je obiljeen sljedeim glavnim radnjama: i) vodei modul postavlja adresu na adresnu sabirnicu; ii) vodei modul generira upravljake signale, postavlja ih na upravljaku sabirnicu i time oznaava vrstu prijenosa; iii) prenose se podaci izmeu vodeeg i prateeg modula. Za sabirniki je ciklus obino zadueno tzv. sabirniko suelje vodeeg modula (engl. bus master interface) ili tzv. sabirnika jedinica (engl. bus unit) koja je ostvarena na procesorskom ipu.Tri su osnovne vrste sabirnikog ciklusa: sabirniki ciklus itanja tijekom kojeg je smjer prijenosa podataka od prateeg k vodeem, sabirniki ciklus pisanja (smjer podataka od vodeeg k prateem modulu) te sabirniki ciklus potvrde prekida u kojem su definirane posebne aktivnosti vodeeg modula (posluitelja prekida) i prateeg modula (onog koji je zahtijevao prekid). Prema nainu djelovanja, odnosno prema vrsti sabirnikog protokola, sabirnice mogu biti sinkrone i asinkrone. Sinkrone sabirnice imaju jednu vanu znaajku - linija kojom se pre-

364

12.

POGLAVLJE: SABIRNICE

nosi signal vremenskog voenja (engl. clock) vana je sastavnica sabirnice i svi se dogaaji na sinkronoj sabirnici odvijaju u tono definiranim vremenskim trenucima i intervalima koji su odreeni periodama signala vremenskog voenja. Signal vremenskog voenja i upravljaki signali koriste se za sinkronizaciju vodeeg modula i prateeg modula koji sudjeluje u prijenosu podataka. Slika 12.3 prikazuje vremenski dijagram stanja na sinkronoj sabirnici, odnosno stanje na sinkronoj sabirnici tijekom sabirnikog ciklusa itanja i tijekom sabirnikog ciklusa pisanja. Primjeujemo da se, na primjer, za sabirniki ciklus itanja, upravljaki signali ALE (Address Latch Enable) i MEMR (Memory Read) ili I/O READ (Input/Output Read) pojavljuju u tono definiranim periodama odreenim signalom vremenskog voenja, ali jednako je tako tono definirana i perioda vremenskog voenja u kojoj e pratei modul postaviti podatak na sabirnicu podataka. Primjerice, signal MEMR postavlja se u aktivno stanje tijekom periode T2, a podatak tijekom periode T3 postaje stabilan i raspoloiv vodeem modulu. Tijekom periode T3 prenosi se podatak od ili prema procesoru.
T,

pU

T2 U

T3

signal vremenskog voenja linije statusa

\
status

7 v

>
I

adresna sabirnica

adresa stabilna

ALE

i\

READY

sabirnica podataka HJ in
in

2.fOc
MEMR ili I/O READ sabirnica podataka

X
r

podatak stabilan

\
podatak stabilan

>u u o ^c -Q L C Iu o

MEMW ili I/O WRITE

SI. 12.3 Vremenski dijagram stanja na sinkronoj sabirnici

Dogaaji na asinkronoj sabirnici neovisni su u velikoj mjeri o signalu vremenskog voenja i temelje se na postupku "rukovanja" (engl. handshaking) u kojem pratei modul generira signal potvrde (engl. acknowledge signal) kao odgovor na upravljaki signal vodeeg modula (npr. signal itaj ili pii). Tim signalom potvrde pratei modul dojavljuje vodeem modulu da je obavio specificiranu operaciju (npr. tijekom sabirnikog ciklusa pisanja podatak je sa sabirnice podataka dohvaen i pohranjen u memorijskoj jedinici). Trenutak generiranja signala potvrde ovisi o brzini prateeg modula pa se moe smatrati neovisnim o

S. RIBARI - GRAA RAUNALA

365,

signalu vremenskog voenja. Slika 12.4 prikazuje vremenski dijagram stanja na asinkronoj sabirnici za sabirniki ciklus itanja. Vodei modul postavlja adresu na adresnu sabirnicu i generira upravljaki signal itaj (,READ). Pratei modul (npr. memorijska jedinica) oslukuje adresnu i upravljaku sabirnicu. Kad je prepoznao svoju adresu, nakon isteka vremena pristupa, postavlja podatak na sabirnicu podataka i tek tada g e n e r i r a signal p o t v r d e - signa_ *ra vodeem modulu da je obavio zahtijevanu operaciju. Aktivno stanje s . g n a l a potvrde si ka 12 4) je logika 0. Vremenski trenutak kada e se to dogodit, nije unaprijed odreen t f o n ovisi samo o brzini prateeg modula. Tek nakon primitka signala. potvrde vodec, modul nastavlja sabirniki ciklus (npr. unoenjem podatka sa sabirnice podataka). Vidimo d a s e b r z i n a k o m u n i k a c i j e izmeu vodeeg modula i razliitih prateih modula koji imaj razliite brzine prilagoava pojedinanim modulima.
linije statusa adresna sabirnica READ \ /

podataka signal potvrde

Podaci stab'lni 1 \

) f

SI. 12.4 Vremenski dijagram stanja na asinkronoj sabirnici

Sinkrona sabirnica ima manji broj upravljakih linija i u naelu moe ostvarivati vee brzine prijenosa podataka, ali ima jedno ogranienje - njezina se brzina mora prilagoditi najsporijem modulu koji je prikljuen na sabirnicu. Asinkrona sabirnica ima dodatnu upravljaku liniju (signal potvrde) i neto sloenije sabirniko suelje, ali doputa uporabu prateih modula razliitih brzina. Brzina prijenosa podataka u asinkronoj sabirnici razliita je i ovisi o brzini pojedinog prateeg modula s kojim vodei modul upravo komunicira. Primjer 12.2. Opiimo dogaaje na sinkronoj sabirnici za porodicu Intelovih x86 procesora (x = 2,3 i 4) koja je u velikoj mjeri utjecala na ISA (Industry Standard Architecture) i EISA (Extension to ISA) sabirniki standard. Za ostvarivanje sabirnikog protokola zaduena je ve spomenuta sabirnika jedinica koja je sastavni dio procesora. Budui da je rije o sinkronoj sabirnici, pretpostavimo da su aktivnosti na sabirnici sinkronizirane signalom vremenskog voenja PCLKfrekvencije 40 MHz. U usporedbi s frekvencijom signala vremenskog voenja koji koristi sklopovlje dananjih procesora od 500 MHz pa sve do nekoliko GHz, to je relativno niska frekvencija. Razlozi za takve razlike izmeu brzine sklopovlja procesora i brzine sabirnice dvojaki su: prvi je tehnike prirode - zbogfizikeduljine sabirnice i elektrinih znaajki signalnih linija, razliitih vremena propagacije signala, pragova signala te razliitih vremena kanjenja logikih sklopova pojavljuje se problem promjene relativnih vremenskih odnosa izmeu pojedinih signala (engl. skew; tzv."ukoenje signala"). Taj je problem izraeniji to je frekvencija signala vremenskog voenja za sabirnicu via. Drugi je razlog tenja za kompatibilnosti sa znaajkama prethodnih sabirnikih sustava.

366

12. POGLAVLJE: SABIRNICE

Dogaaje na sinkronoj sabirnici za procesore x86 moemo jednostavno opisati ako sabirniku jedinicu (engl. bus unit) promatramo kao stroj stanja koji je opisan sa etiri diskretna stanja (slika 12.5): i) stanje vremena adresiranja (engl. address time); ii) stanje vremena podataka (engl. data time); iii) stanje ekanja (engl. wait); iv) stanje neaktivnosti (engl. idie time). Vrijeme trajanja stanja odgovara vremenu trajanje jedne periode signala vremenskog voenja, dakle 1/40 MHz = 25 ns. Sabirniki ciklus zapoinje Stanjem vremena adresiranja. Sabirnika jedinica iz Stanja neaktivnosti prelazi u Stanje vremena adresiranja koje traje jednu periodu signala vremenskog voenja, tj. 25 ns. Tijekom tog stanja, sabirnika jedinica postavlja adresu prateeg modula na adresnu sabirnicu, a na upravljaku sabirnicu postavlja signale kojim prenosi informaciju o vrsti sabirnikog ciklusa (npr. obavjetava pratei modul daje rije o sabirnikom ciklusu itanja podataka iz memorije). Iz Stanja vremena adresiranja sabirnika jedinica prelazi u Stanje vremena podataka. Tijekom tog stanja, koje takoer traje jednu periodu signala vremenskog voenja (25 ns), sabirnika jedinica obavlja prijenos podataka. Na kraju tog stanja, sinkrono sa signalom vremenskog voenja, sabirnika jedinica ispituje stanje na ulaznoj signalnoj liniji READY# (Opaska: znak povisilice # oznaava da je signal aktivan kada je u logikoj nuli: READY # = READY.) Ako je READY# nisko, tj. logiko "0", sabirnika jedinica zavrava sabirniki ciklus i prelazi u Stanje neaktivnosti ili zapoinje novi sabirniki ciklus. U tom je sluaju rije o najbrem sabirnikom ciklusu (sabirnikom ciklusu s nula stanja ekanja - 0 Wait-state bus cycle) koji traje 2 x 25 ns, odnosno dvije periode signala vremenskog voenja. to se dogaa ako je na kraju Stanja vremena podataka sabirnika jedinica otkrila (detektirala) da je signalna linija READY# neaktivna (READY# = 1). Budui da signalnom linijom READY# upravlja pratei modul, logikom "1" na toj signalnoj liniji pratei modul obavjetava vodei modul, odnosno sa birniku jedinicu da nije uspio u Stanju vremena podataka obaviti zahtijevanu operaciju (npr. postaviti podatke na sabirnicu podataka). U tom sluaju vodei modul treba "priekati" spori pratei modul i to ini tako da nakon tekueg Stanja vremena podataka ostaje i dalje u Stanju vremena podataka u kojem eka pratei modul. Procesor tijekom te dodatne periode "dri" sve svoje izlaze u istom stanju u kojem su bili tijekom prethodne periode. Dakle on nita ne mijenja, ve eka jednu periodu signala vremenskog voenja. Ta "dodatna" perioda u kojoj procesor eka odgovara Stanju ekanja. Na kraju te dodatne periode procesor, odnosno sabirnika jedinica ispituje ponovno signalnu liniju READY# da bi utvrdila je ii adresirani pratei modul spreman za zavretak prijenosa. Ako je READY# ponovo neaktivna, procesor umee jo jedno Stanje podataka, odnosno Stanje ekanja u sabirniki ciklus. Ako je signalna linija READY# detektirana kao aktivna, procesor zavrava sabirniki ciklus. Signalna linija READY# slui sporom prateem modulu za produljenje trajanja sabirnikog ciklusa koje je potrebno da bi se obavio prijenos podataka. Naravno, pri oblikovanju raunarskog sustava i izbora prateih modula elimo imati takve module koji e sudjelovati u sabirnikim ciklusima s 0-stanja ekanja. Slike 12.5 a) i b) prikazuju detalj sabirnikog ciklusa s nula stanja ekanja (a) i s jednim stanjem ekanja.

S. RIBARI - GRAA RAUNALA

367,

U
PCLK

25ns stanje neaktivnosti

stanje vremena adresi ran ja

stanje vremena podataka

stanje neaktivnosti

READY*

sabirnika jedinica (procesor) ispituje signainu liniju READY# a) stanje vremena adresiranja stanje vremena podataka

stanje neaktivnosti PCLK

stanje ekanja

stanje neaktivnosti

READY#

sabirnika jedinica (procesor) ispituje signainu liniju READY# b)

SI, 12.5 Detalj sabirnikog ciklusa: a) s nula stanja ekanja; b) s jednim stanjem ekanja

Primjer 12.3. Opiimo dogaaje na asinkronoj sabirnici za porodicu procesora Motorola MC 68000. Procesor MC 68000 ostvaruje asinkroni prijenos podataka pomou sljedeih sabimikih linija: i) linija adresne sabirnice A1 - A23, ii) linija sabirnice podataka D 0 - D1S, iii) upravljakih linija: AS (Address Strobe), R/l/V, UDS (Upper Data Strobe), LDS (Lower

Data Strobe), DTACK (Data Transfer Acknowledge) i FC0 - FC2 (Functional Code).
Adresna sabirnica ima jednu posebnu znaajku - nema izvedenu najmanje znaajnu adresnu liniju A0. Umjesto nje se upotrebljavaju upravljaki signali UDS i LDS. 16-bitni procesor MC 68000 doputa rukovanje podacima koji su bajt, rije (16 bita) i duga rije (32 bita). Rijei i duge rijei mogu biti smjetene u memoriji i referenciranetako da su im poetne adrese samo parne, lako je procesor 16-bitni, memorija raunala je bajtno organizirana (kaemo da je memorija bajtne zrnatosti), tako da se pomou linija UDS i LDS odreuje hoe li se prenijeti manje znaajniji bajt (UDS = 1 i LDS = 0), znaajniji bajt (UDS

368

12. POGLAVLJE: SABIRNICE

= 0 i LOS = 1) ili oba bajta (16-bitna rije) (UDS = 0 i LD5 = 0). (Procesor MC6800 koristi tzv. Big-Endian ureenje slijeda bajtova - poglavlje 3.). Duga rije (32 bita) prenosi se s dva uzastopna prijenosa rijei. Upravljaka signalna linija DTACK ulazna je linija procesora i slui za rukovanje asinkronim prijenosom podataka. Pratei modul upravlja tom linijom. Kad tijekom sabirnikog ciklusa itanja procesor detektira liniju DTACK kao aktivnu (DTACK - 0), on zna da je pratei modul postavio podatke na sabirnicu podataka. Tada e procesor pohraniti podatke u svoje interne registre, odnosno zaporne sklopove i zavriti sabirniki ciklus. Slika 12.6 prikazuje dijagram aktivnosti tijekom sabirnikog ciklusa itanja rijei (16-bitnog podatka). Kad tijekom sabirnikog ciklusa pisanja procesor detektira liniju DTACK kao aktivnu, on zna da je pratei modul uspio pohraniti podatke u memorijsko polje (memorijska jedinica) ili u registar (ulazno-izlazna jedinica). Linijama statusa FC0 - FC2 procesor obavjetava pratee module o svom stanju i specificira koji e se adresni prostor u sabirnikom ciklusu upotrebljavati.
vodei modul postupak adresiranja: 1. postavi R/W u 1 2. postavi adresu na adresnu sabirnicu A1-A23 3. postavi funkcijski kod FC0-FC2 4. aktivira AS (Address Strobe) 5. postavi UD i LDS pratei modul

'

i
1. dekodira adresu 2. postavi podatak na sabirnicu podataka 3. aktivira signal DTACK

i
1. pohrani podatke u interni zaporni sklop 2. deaktivira UD i LD 3. deaktivira AS

'

i
1. ukloni podatak sa sabirnice podataka D0-D15 2. deaktivira] liniju DTACK

i
zaponi sljedei ciklus Si. 12.6 Dijagram aktivnosti tijekom sabirnikog ciklusa itanja rijei

S. RIBARI - GRAA RAUNALA

369,

Slika 12 .7 prikazuje vremenski dijagram stanja na sabirnici za sabirniki ciklus itanja rijei. Na slici 12.7 uoavamo da se kao jedan od signala pojavljuje i signal vremenskog voenja CLK, iako smo u potpoglavlju 12.3. napisali da su dogaaji na asinkronoj sabirnici neovisni o signalu vremenskog voenja. Zapravo, zbog vremenske diskretnosti procesora, dogaaji na asinkronoj sabirnici takoer su vremensko diskretni i postoji, ipak, neka "tajna veza" izmeu signala vremenskog voenja CLK i dogaaja na asinkronoj sabirnici. Dogaaje na sabirnici promatrat emo u vremenskim trenucima koje definiraju poluperiode signala vremenskog voenja. Njih emo oznaavati sa S.; / = 0,1,2,.... Te emo poluperiode nazivati sabirnikim stanjima, meutim, potrebno je naglasiti da se ta stanja ne smiju poistovjetiti sa stanjem procesora. s0 s, s2 s3 s4 s5 s6 s7 s0 s, s2

U sabirnikom stanju S0 (slika 12.7) adresna je sabirnica (A1 - A23) u stanju visoke impedancije. Procesorske linije statusa FC0 - FC2 takoer su u stanju visoke impedancije. Linijama statusa FC0 - FC2, kao to je ve spomenuto, procesor dojavljuje prateim modulima svoje stanje. U sabirnikom stanju S1 signala vremenskog voenja adresna sabirnica i linije statusa oslobaaju se stanja visoke impedancije. Stanje linija FC 0 ~ FC2 pokazuje koji e se adresni prostor u tom sabirnikom ciklusu upotrebljavati. Na primjer, FC0 = 1, FC, = 0 i FC2 = 0 odreuje memorijski nadgledni prostor podataka.Tijekom stanja S1 na adresnu se sabirnicu A1 - A23 procesor postavlja adresu. Signal koji oznaava daje adresa valjana (>45) aktivira se u sabirnikom stanju S2. Signali UDS i LDS takoer se aktiviraju u stanju S2 pokazujui da je rije o sabirnikom ciklusu koji rukuje 16-bitnom rijei.

370

12. POGLAVLJE: SABIRNICE 1

Upravljaki je signal R/Wza vrijeme cijelog sabirnikog ciklusa u stanju 1 i pokazuje da jejije o sabirnikom ciklusu itanja. Pratei modul na temelju adresa A^- A23, UDS, LDS i AS utvruje je li izabran. Izabrani pratei modul na temelju signala R/W zna da je rije 0 operaciji itanja te postavlja podatak na sabirnicu podataka D0 - D15 Za tu operaciju pratei modul ima na raspolaganju sabirnika stanja (poluperiode) S3 i S4. Nakon stoje postavio 16-bitni podatak na sabirnicu podataka, pratei modul aktivira liniju DTACK koja predstavlja liniju signala potvrde. Trenutak aktiviranja linije DTACK ovisi samo o brzini prateeg modula. Prvo sjenano podruje signala DTACK u vremenskom dijagramu (slika 12.7) oznaava vremenski interval u kojem se moe aktivirati signal. Signal DTACK mora u "normalnim"okolnostima biti aktiviran u poetku sabirnikog stanja S5. Ako je to zadovoljenog stanju S6 procesor zapoinje deaktiviranje upravljakih signala UDS, LDS i AS. Na poetku sabirnikog stanja S7 procesor pohranjuje podatak sa sabirnice podataka u interne zaporne sklopove. Stanje na adresnoj sabirnici jo uvijek je valjano i linije FC0 - FC2 jo uvijek pokazuju pravo stanje. Na taj se nain osigurava pravilno izvoenje operacije prijenosa podataka. Pratei modul "dri" podatak na sabirnici podataka sve dok ne detektira da su UDS, LDS i AS neaktivni. Nakon sabirnikog stanja S7 prelazi se u sabirniko stanje S0u kojem, nakon to je pratei modul detektirao UDS, LDS i AS kao neaktivne, on uklanja podatak sa sabirnice podataka. Na taj se nain uspostavljaju uvjeti za poetak sljedeeg sabirnikog ciklusa. Moemo primijetiti da sabirniki ciklus itanja rijei traje osam sabirnikih stanja (S0- S7). lako je rije o protokolu za asinkronu sabirnicu (za koju, strogo teorijski gledano, signal vremenskog voenja nije referentan signal), vodei modul oekuje" signal potvrde DTACK tijekom sabirnikih stanja S3 i S4. to e se dogoditi ako je pratei modul spor i ne moe pravovremeno aktivirati signal DTACK jer jo nije postavio 16-bitni podatak na sabirnicu podataka? Procesor ispituje stanje upravljake linije DTACK tijekom sabirnikog stanja S4. Ako signal DTACK nije aktivan, procesor zamjenjuje sabirnika stanja S5 i S6 sa sabirnikim stanjima ekanja Sw (trajanje stanje Sw odgovara trajanju poluperiode signala vremenskog voenja). Na taj nain procesor eka spori pratei modul. Nakon umetnuta dva stanja Sw procesor ponovo ispituje stanje linije DTACK. Ako je i sada linija DTACK neaktivna, procesor ponovo umee dva stanja Sw. Nakon toga ponovno ispituje DTACK Kad procesor (vodei modul) utvrdi da je signal DTACK aktivan, nastavlja sa sabirnikim stanjima S5, S6 i S7. Slika 12.8 prikazuje vremenski dijagram stanja na sabirnici za tzv.spori" sabirniki ciklus itanja rijei. to se dogaa ako je adresiran nepostojei pratei modul ili pratei modul zbog greke ili ispada ne moe aktivirati signal potvrde DTACK? Postoji opasnost da procesor ostane u trajnom stanju ekanja. Taj se problem u raunarskom sustavu na bazi procesora MC 68000 rjeava vremenskim nadglednim modulom (engl. watchdog timer- u slobodnom prijevodu vremenskim psom uvarom) koji nadgleda odvijanje sabirnikog ciklusa 1 njegovo trajanje usporeuje s unaprijed definiranim maksimalnim vremenom trajanja sabirnikog ciklusa. Ako je vrijeme trajanja sabirnikog ciklusa prekoraeno, vremenski nadgledni modul aktivira signal BERR (engl. bus error) i izaziva iznimku visoke razine prioriteta (prioritetna grupa 0) koja se naziva sabirnika pogreka. Aktiviranjem signala BERR, procesor prekida (abortira) tekui sabirniki ciklus (u kojem je bezuspjeno ekao na aktiviranje signala DTACK) i zapoinje obradu iznimke u kojoj izvodi usluni program definiran za uvjete sabirnike pogreke.

S. RIBARI - GRAA RAUNALA

371 I

S0
CLK

Sj

s2

s3

s4

Sw

Sw

Sw

Sw

S5

S6

S7

S0

A1-A23 AS, UDS, LDS R/W=1

DTACK

D0-D15
stanja ekanja

[ podaci valjani

SI. 12.8 Vremenski dijagram stanja na sabirnici za spori" sabirniki ciklus itanja rijei

Vana je znaajka sabirnice njezina propusnost ili brzina prijenosa podataka (engl. bandwith) koja se izraava brojem bajtova u sekundi (B/s). Vrlo se esto koristi i termin brzina sabirnice. Ona je proporcionalna irini sabirnice podataka. Na primjer, ako je brzina 8-bitne sabirnice 200 M bajtova u sekundi (MB/s), onda uz jednak signal vremenskog voenja 64-bitna sabirnica podataka ima brzinu 1.6 GB/s.

12.4. SABIRNIKA ARBITRAA


Na sabirnici na kojoj su prikljueni pratei moduli moe se prikljuiti vei broj vodeih modula koji moraju meusobno dijeliti sabirnicu. Istodobno vei broj vodeih modula moe zahtijevati sabirnicu, meutim, samo jedan od njih moe dobiti sabirnicu na upravljanje. Mehanizam kojim se odreuje koji e vodei modul dobiti na upravljanje sabirnicu naziva se sabirnika arbitraa (engl. bus arbitration). Postoje razliiti sheme sabirnike arbitrae - od onih koje temelje na sklopovskoj izvedbi do onih koje koriste sloene sabirnike protokole. Nain arbitrae moe se klasificirati na centraliziranu (sredinju) arbitrau i decentraliziranu, odnosno porazdijeljenu arbitrau. U centraliziranoj arbitrai postoji centralni ili sredinji sabirniki arbitar (engl. bus arbiter; bus controller) koji zaprima zahtjeve za sabirnicom i generira signal kojim obavjetava vodei modul da mu je dodijeljena sabirnica. Odluka sabirnikog arbitra kojem e se od vodeih modula dodijeliti sabirnica temelji se na shemi koja obino predstavlja kompromis dvaju imbenika: prioriteta i pravednosti (engl. fairness). Prvi se imbenik odnosi na to da svaki od vodeih modula ima jedinstven prioritet pristupa sabirnici, tako da se sabirnica dodjeljuje vodeem modulu koji je imao najvei prioritet. Drugi se faktor odnosi na pravednost kojom se osigurava da e svaki od vodeih modula, bez obzira na prioritet, dobiti sabirnicu na upravljanje. Pravednost osigurava da vodei moduli s najniim prioritetom ne budu iskljueni iz natjecanja za sabirnicom u nadmetanju s onim

372

12. POGLAVLJE: SABIRNICE

visokog prioriteta. U jednostavnoj izvedbi sabirnikog arbitra primjenjuje se shema vrstog prioriteta (engl. fixed priority) pri emu je sabirniki arbitar prioritetni koder (engl. priority encoder) koji signal potvrde dodjele sabirnice Bus grant alje vodeem modulu koji je imao najvei prioritet izmeu onih koji su traili sabirnicu. U takvoj izvedbi postoji opasnost da vodei moduli s malim prioritetom nikada, ili vrlo rijetko, dobiju sabirnicu na upravljanje. Kruna prioritetna shema (engl. rotating priority) omoguuje potpuno pravedan tretman svih vodeih modula jer se prioritet pojedinih vodeih modula mijenja u skladu s dodjelom sabirnice: vodei modul koji je dobio sabirnicu na upravljanje postavlja se, nakon njezinog koritenja, na zaelje krune liste prioriteta. Izmeu ovih dvaju krajnjih shema postoje brojne sheme koje kombiniraju prethodne dvije. Na primjer, vodei moduli mogu biti organizirani u grupe odreenih prioritetnih razina tako da se u svakoj od razina koristi kruna prioritetna shema. Pod "oslobaanjem sabirnice" (engl. deallocation of the bus) podrazumijeva se postupak kada vodei modul, koji trenutno upravlja sabirnicom, preputa sabirnicu drugim potencijalnim vodeim modulima. Postoje tri glavne tehnike oslobaanja sabirnice: i) oslobaanje na zahtjev (engl. release on request) - vodei modul ima u svom posjedu sabirnicu (iako je ak ni ne koristi) sve dok nema drugih zahtjeva. Ovakva se tehnika obino koristi u sustavima s jednim procesorom u kojima procesor posjeduje sabirnicu cijelo vrijeme - izuzev onda kada, na primjer, DMA upravlja zahtijeva sabirnicu da bi obavio prijenos; ii) oslobaanje sabirnice nakon koritenja (engl. release when done) - sabirnica se oslobaa nakon to se zavri sabirniki ciklus. To znai da za svaki novi sabirniki ciklus vodei modul mora zahtijevati sabirnicu; iii) oslobaanje sabirnice istiskivanjem (engl. pre-emption) - u ovom nainu vodei modul s veim prioritetom od onog modula koji trenutno posjeduje sabirnicu moe prisiliti trenutno vodei modul da oslobodi sabirnicu, iako nije zavrio prijenos podataka. Istiskivanje se moe upotrijebiti za prekid prijenosa velikih blokova podataka. Vrijeme koje se utroi za sabirniku arbitrau je vrijeme potrebno za obavljanje tzv."kuanskih poslova" u sustavu i ono izravno utjee na trajanje sabirnikog ciklusa. To je osnovni razlog zato se vrijeme arbitrae mora smanjiti i moebitno omoguiti da se arbitraa djelomino prekriva s prijenosom podataka. Osnovni scenarij centralizirane sabirnike arbitrae je sljedei: jedan ili vei broj vodeii modula (koji trebaju sabirnicu) aktivira signal Bus request kojim zahtijeva sabirnicu i koji se upuuje sabirnikom arbitru. Svi vodei moduli koji su zahtijevali sabirnicu oekuju sigrwi Bus grant kojim sabirniki arbitar potvruje da je dodijelio sabirnicu jednom od vodeii modula. No samo onaj vodei modul koji je zahtijevao sabirnicu i koji primi signal Bus grant dobiva sabirnicu na upravljanje. Taj vodei modul aktivira signal Bus Busy i spaja se na sabirnicu te zapoinje sabirniki ciklus. Nakon to je obavio prijenos podataka i sabirnicu vise ne treba, vodei modul o tome obavjetava sabirniki arbitar (deaktiviranjem signala Bas Busy) koji sada moe ponovo dodijeliti sabirnicu nekom drugom vodeem modulu koji JH je zahtijevao. Razmotriti emo pet shema sabirnike arbitrae - etiri centralizirane i jednu decentra-j liziranu. i U centraliziranoj sabirnikoj arbitranoj shemi nazvanoj arbitraa s ulanavanjem (en^L| daisy chain) svi su vodei moduli prikljueni na jednu signalnu liniju za zahtijevanje sabi^j

S. RIBARI - GRAA RAUNALA

373 I

nice Bus request. Shema ima samo jednu signalnu liniju potvrde dodjele sabirnice Bus grant izvedenu tako da ona prolazi kroz vodee module, i to od onog s najveim prioritetom do onog s najmanjim prioritetom. Svaki od vodeih modula lanano je prikljuen na tu signalnu liniju ima sklopove koji omoguuju prihvaanje signala Bus grant te njegovo prosljeivanje sljedeem vodeem modulu u lancu (slika 12.9). Vodei modul koji primi signal Bus grant a nije zahtijevao sabirnicu, proslijedit e ga sljedeem vodeem modulu u lancu. Vodei modul koji je u lancu primio signal Bus grant i koji je uz to zahtijevao sabirnicu nee proslijediti signal Bus grant preostalim vodeim modulima u lancu. Njemu e biti dodijeljena sabirnica.To znai da u sluaju kada dva (ili vie) vodeih modula istodobno zahtijevaju sabirnicu aktiviranjem signala Bus request, sabirnicu dobiva onaj koji je blii sabirnikom arbitru. Prioritet vodeeg modula u toj jednostavnoj shemi odreen je mjestom modula u lananoj strukturi - vodei modul koji je najblii arbitru ima najvei prioritet. (Opaska: obino je signal na linija za zahtijevanje sabirnice Bus request izvedena tako da je njeno aktivno stanje ono kada je u logikoj 0 (Bus request) time je omogueno da sve linije za zahtijevanje sabirnice svih vodeih modula oblikuju oiano-ILI (engl. wired-OR). Zahvaljujui oianom-ILI signalna linija Bus request bit e aktivna kada jedan ili vei broj potencijalno vodeih modula zahtijeva sabirnicu.)

SI. 12.9 Sabirnika arbitraa ulanavanjem

Prednost arbitrae ulanavanjem jest njezina jednostavnost, a nedostatak je to ne osigurava pravednost. Naime, vodei moduli na kraju lanca, tj. oni s najmanjim prioritetom mogu "vjeno" ekati na sabirnicu. S druge strane, ulanavanje signala Bus grant ograniava brzinu sabirnice. Jedan od nedostataka je i to to se u sluaju greke zbog koje ne moe vodei modul proslijediti signal Bus grant ili zbog ispada jednog od vodeih modula u lancu, lanac prekida te svi vodei moduli koji slijede tom modulu ne mogu dobiti sabirnicu na upravljanje. Arbitrana shema nazvana arbitraa prozivanjem ili glasovanjem (engl. polling) umjesto jedne signalne linije Bus grant kojom su lanani vodei moduli koristi skup signalnih linija koje se nazivaju rezultat glasovanja (engl. poll-count) (slika 12.10). Svi su vodei moduli prikljueni, kao i u shemi arbitrae ulanavanjem, na jednu signalnu liniju Bus request. Na signalne linije rezultat glasovanja sabirniki arbitar postavlja binarnu kombinaciju koja se moe tumaiti kao jedinstvena adresa vodeeg modula - pobjednika u natjecanju za dobivanje sabirnice. Sabirniki arbitar proziva vodei modul koji je pobijedio na glasovanju. Svaki od vodeih modula "oslukuje" linije rezultat glasovanja i onaj koji prepozna svoju adresu, aktivira signalnu liniju Bus busy. Sabirniki arbitar zavrava postupak arbitrae i dodjeljuje sabirnicu izabranom vodeem modulu. Prioritet vodeih modula odreen je slijedom binarnih kombinacija postavljenih na linije rezultat glasovanja, odnosno pozicijom

374

12. POGLAVLJE: SABIRNICE

adrese u slijedu prozivanja. Slijed prozivanja moe biti programiran ako su linije rezultat glasovanja spojene s izlazima iz programirljivog registara tako da se prioritet mijenja programom, odnosno upisivanjem upravljake rijei u programirljivi registar (slika 12.10).

U treoj se arbitranoj shemi svakom vodeem modulu dodjeljuje privatna linija Bus request i privatna linija Bus grant (slika 12.11). Na taj se nain omoguuje sabirnikom arbitru izravno utvrivanje koji su vodei moduli zahtijevali sabirnicu te brzi odgovor signalom Bus grant I u ovom se sluaju prioritet vodeih modula odreuje programski. Ova se shema esto naziva i shema s nezavisnim zahtijevanjem (engl. independent requesting). Primjer 12.4. j

Sabirnica PCI (Peripheral Component Interconnect) (vidi potpoglavlje 12.5) koristi centrali- * ziranu arbitranu shemu s nezavisnim zahtijevanjem. Standard PCI predvia est linija za \ zahtijevanje sabirnice REQ0-REQ5 i est linija za potvrdu dodjele sabirnice GNT0-GNT5. j Na te su linije prikljueni vodei moduli, koji se u skladu sa standardom PCI nazivaju inicijatori (engl. initiator). (Opaska: pratei se moduli u standardu PCI nazivaju ciljni moduli ; (engl. target)). Standard PCI ne odreuje algoritam arbitrae pa se moe koristiti ona s vrstim priori- i tetom, ona s krunim prioritetom ili ona koja kombinira kruni prioritet izmeu grupa inicijatora i vrsti prioritet unutar grupe inicijatora. etvrta shema centralizirane sabirnike arbitrae predstavlja kombinaciju arbitrae s nezavisnim zahtijevanjem i arbitrae ulanavanjem.

S. RIBARI - GRAA RAUNALA

375 I

SI. 12.11 Sabirnika arbitraa s nezavisnim zahtijevanjem

Primjer 12.5. Slika 12.12 prikazuje shemu sabirnike arbitrae za industrijsku sabirnicu VME (standard IEEE P1014). Shema se zasniva na kombinaciji arbitrae s nezavisnim zahtijevanjem i arbitrae ulanavanjem. Standard IEEE P1014 definira arbitranu sabirnicu koja se sastoji od etiri signalne linije za zahtijevanje sabirnice (BRO - BR3) pri emu linija BR3 ima najvei prioritet, etiri ulazne i izlazne signalne linije za potvrdu dodjele sabirnice (BGOIN
- BG3IN) te (iBGOOUT - BG30UT}, signalne linije BBSY (Bus Busy) te signalne linije BCLR

(Bus clear). etiri linije (BRO - BR3) odreuju etiri razine prioriteta zahtijevanja sabirnice. Ulazne i izlazne linije za potvrdu dodjele sabirnice (BGOIN - BG3IN) te ( BGOOUT- BG30UT}, omoguuju ulanavanje na svakoj od etiri razine. Aktivno stanje na signalnoj liniji BBSY oznaava da je jedan od vodeih modula, koji su zahtijevali sabirnicu, dobio i preuzeo sabirnicu. Sabirniki arbitar moe generirati signal BCLR kada vodei modul s najveim prioritetom zahtjeva sabirnicu. Signalom BCLR "istiskuje" se trenutno vodei modul sa sabirnice i ona se oslobaa za vodei modul s najveim prioritetom. Arbitrana shema za VME je kombinacija shema s nezavisnim zahtijevanjem i ulanavanjem: svaku od linija BRx,x = 0,1,2,3 dijeli grupa vodeih modula koji su linijama BGxIN i BGxOUT, x = 0,1,2,3 ulanani (slika 12.12). Prioritetna shema moe biti takva da se koristi shema vrstog prioriteta u kojoj vodei moduli prikljueni na liniju BR3 imaju najvei prioritet ili kruna prioritetna shema u kojoj se razine prioriteta linija BRx,x= 0,1,2,3 kruno mijenjaju.

NJ
.

> >
i

N< D CD l/> =T m 3
N C U

S. RIBARI - GRAA RAUNALA

377 I

Distribuirana sabirnika arbitraa, kao to sam naziv govori, ima funkciju arbitra porazdijeljenu na sve potencijalne vodee module - sklopovlje za arbitrau porazdijeljeno je vodeim modulima. Svaki od potencijalno vodeih modula ima jednu liniju za zahtijevanje sabirnice. Na primjer, za sustav koji doputa esnaest potencijalno vodeih modula, imamo esnaest linija za zahtijevanje sabirnice - svaka od njih dodijeljena je jednom vodeem modulu i svaka od njih odreenog je prioriteta. Kada potencijalni vodei modul eli koristiti sabirnicu, aktivira odgovarajuu liniju za zahtijevanje sabirnice. Svi potencijalno vodei moduli pomou svojih sklopova za arbitrau nadgledaju sve linije za zahtijevanje sabirnice. Vodei moduli koji su zahtijevali sabirnicu, a utvrdili su daje njihov zahtjev manjeg prioriteta, odustaju od zahtjeva i deaktiviraju svoju liniju za zahtijevanje sabirnice pa na kraju svakog sabirnikog ciklusa vodei modul s najveim prioritetom dobiva sabirnicu za sljedei sabirniki ciklus.

12.5. SABIRNICE OSOBNIH RAUNALA (PC SABIRNICE)


U Primjeru 12.2. prikazali smo dogaaje na sinkronoj sabirnici za x86 procesore i rekli daje ona u velikoj mjeri utjecala na ISA (Industry Standard Architecture) i EISA (Extended ISA) sabirniki standard. Sabirniki standardi ISA i EISA usko su povezani s osobnim raunalima. Jedno od prvih osobnih raunala IBM PC (PC - personal computer) temeljilo se na Intelovom procesoru 8088 (koji je imao 16-bitnu unutarnju arhitekturu i 8-bitnu vanjsku sabirnicu podataka) i sabirnici XT. Sabirnica XT radila je s frekvencijom signala vremenskog voenja od svega 4.77 MHz. Pojavom pravog" 16-bitnog procesora Intel 8086 poela se koristiti 16-bitna sabirnica ISA koja je, zapravo, predstavljala proirenje sabirnice XT. Sabirnica ISA bila je sinkronizirana signalom vremenskog voenja frekvencije 8.33 MHz. S obzirom da je najbri sabirniki ciklus zahtijevao dvije periode signala vremenskog voenja (stanje vremena adresiranja i stanje vremena podataka, bez stanja ekanja), brzina sabirnice bila je 4.165 miliona prijenosa u sekundi. No kako je sabirnica podataka bila 16-bitna, maksimalna brzina prijenosa bila je 8.33 MB/s. Adresna sabirnica bila je irine 20 bita (SA 0 - SA 19; SA - System Address Bus) za 8-bitni prijenos podataka, odnosno 24 bita (SA 0 -SA 19 i LA 17 - LA 23; LA - Latchable Address Bus) za 16-bitni prijenos podataka. Skromna brzina prijenosa sabirnice ISA i mali izravno adresirljiv prostor (24-bitna adresna sabirnica) bili su jedan od osnovnih uzroka njezina brza zastarijevanja. Nju je zamijenila sabirnica EISA koja imala 32-bitnu sabirnicu podataka (ali je podravala i 8- i 16-bitni prijenos podataka) i 32-bitnu adresnu sabirnicu te je uz signal vremenskog voenja od 8.33 MHz omoguavala maksimalnu brzinu prijenosa od 33 MB/s. lako brzina prijenosa od 33 miliona bajtova u sekundi izgleda vrlo velika, na alost, ona ne zadovoljava za veinu suvremenih primjena raunala. Osamdesetih je godina IBM uveo sabirnicu Micro Channel koja je radila na 10 MHz i omoguavala prijenos tijekom svake periode signala vremenskog voenja. Uz nain prijenosa 32-bitnih podataka (izvorno nazvan 32-bit Streaming Data Procedure) brzina sabirnice bila je 40 MB/s. Bri prijenosi (80 MB/s i 160 MB/s) ostvarivali su se uporabom 64- i poboljanih 64-bitnih prijenosa podataka (tzv. 64-bit Streaming Data Procedure i Enhanced 64-bit

Streaming Data Procedure). Sabirnica Micro Channel bila je zatiena patentom i nije se odrala.

378

12. POGLAVLJE: SABIRNICE

Primjer 12.6. Procijenimo potrebnu brzinu, odnosno propusnost sabirnice raunala u primjeru prikaza pokretne slike na zaslonu raunala (npr. za raunalnu igru). Slika neka je relativno visoke rezolucije 1024 x 768 slikovnih elemenata i neka ima 16 milijuna boja (engl. true colour). Za prikaz cijelog spektra boja potrebna su tri bajta po slikovnom elementu svaki za prikaz vrijednosti jedne od primarnih boja (R (red) - crvena, G (green) - zelena, B (blue) - plava) u rasponu od 0 do 255 Jedna slika sadrava 1024 x 768 x 3 = 2.35 MB podataka. Samo jedan grafiki zaslon zahtijeva za pohranu 2.35 MB videomemorije. (Opaska: videomemorija je memorija koja je namijenjena pohrani slike koja se prikazuje na zaslonu prikazne jedinice (monitoru; engl. display device)). Budui daje rije o animaciji, odnosno slikama u pokretu, elimo "glatke" prikaze pokreta pa se zahtijeva prikaz 30 slika ili slikovnih okvira (engl. frame) u sekundi. Za prikaz slike u pokretu potrebna je propusnost 2.35 MB x 30 slika/s = 70.5 MB/s. Nadalje, da bi se prikazala videosekvenca pohranjena na disku, CD-ROM-u ili DVD-u, podaci moraju biti preneseni s diska preko sabirnice u memoriju, a zatim, da bi se prikazali iz memorije preko sabirnice grafikoj jedinici, odnosno grafikom adapteru, tako da propusnost sabirnice mora biti barem dvostruka 140 MB/s. Ako sada usporedimo brzine sabirnica ISA, EISA i osnovnu izvedbu Micro Channel (4C MB/s), vidimo da niti jedna od njih ne zadovoljava u pogledu brzine. Jedino bi u obzir dola sabirnica Micro Channel 64-bit Streaming Data Procedure i Enhanced 64-bit Streaming Data Procedure koja podrava brzinu prijenosa od 80 do 160 MB/s. U Primjeru 12.6. vidjeli smo da su zahtjevi za velikom brzinom sabirnice prvenstveno postavljeni od strane grafike jedinice (grafike kartice ili adaptera), odnosno da se velika propusnost zahtijeva na spojnom putu izmeu procesora i videomemorije. Da bi se postigla to je mogue vea brzina osvjeavanja videomemorije, grafika se jedinica umjesto na sporu sabirnicu ISA ili EISA prikljuila na lokalnu sabirnicu procesora. Naravno, tc je zahtijevalo odreeni redizajn grafike jedinice da bi se izbjegla stanja ekanja koja b moebitno trebala videomemoriji. Uz to, grafika jedinica dobila je i svoj lokalni procesor koji je podravao funkcije grafike jedinice kao to su zahtjevne operacije koje se odnose na rukovanje prikazom na zaslonu (npr. pomicanje grafikog prozora s jednog na drugo podruje videomemorije). Poetkom devedesetih godina definiran je standard VESA VL (Video Electronics Standard Association; VESA Local bus) za povezivanje ureaja, a time i grafikih jedinica, izravno na lokalnu sabirnicu procesora. VESA standard definirao je tz*. VESA sabirnicu tipa A (VL type A) i VESA sabirnicu tipa B (VL type B). Oba su tipa sabirnica bila namijenjena 386/486 procesorskim sabirnicama (Intel) s tim da je tip B predvia: meupohranjivanje sabirnikih signala a dodatnim je pogonskim sklopovima (engl. driver omoguavao prikljuenje do tri ureaja, dok je tip A definirao izravno prikljuenje, ali samo jednog ureaja. VESA sabirnica imala je, pri frekvenciji signala vremenskog voenja od 35 MHz, vrnu propusnost 132 MB/s za operaciju itanja prijenosom podataka u snopu (engl burst read) i 66 MB/s za operaciju pisanja. No upravo zbog toga to je VESA VL bila naslonjena" na sabirnicu 486 procesora, njezina je dugovjenost bila ograniena. Pojavom nov** procesora sueljni sklopovi morali su se redizajnirati, odnosno moraju se koristiti tzv. premosnici (engl. bridge) - sklopovi koji meusobno povezuju dvije nezavisne sabirnice. Or omoguuju vezu izmeu nove procesorske sabirnice i sabirnice VL. Godine 1992. Intel, u tenji da sabirnicu uini neovisnu o procesoru i povea broj uredan koji se mogu prikljuiti na sabirnicu, uvodi PCI (Peripheral Component Interconnect) sabir-

S. RIBARI - GRAA RAUNALA

379 I

nicu. Sabirnica PCI je, poput svih sabirnica za osobna raunala, sinkrona. Sabirnica PCI verzija 1.0(1992.) imala je sabirnicu podataka irine 32 bita i radila je s frekvencijom signala vremenskog voenja od 33 MHz. Vrna brzina bila je 132 MB/s prijenosom u snopu (za operaciju itanja i operaciju pisanja). Godine 1993. pojavljuje se PCI verzija 2.0, a 1995. PCI verzija 2.1. Verzija PCI 2.2 namijenjena je prenosivim raunalima. PCI sabirnica verzije 2.1. radi na frekvenciji 66 MHz i ima irinu sabirnice podataka od 64 bita tako da je vrna brzina sabirnice 528 MB/s. Propusnost od 528 MB/s vie ne predstavlja, barem na prvi pogled, usko grlo u komunikaciji izmeu grafike jedinice i procesora. S druge strane, propusnost od 528 MB/s nije dovoljno velika za memorijsku sabirnicu. Nadalje, pojavljuje se i problem kompatibilnosti s jedinicama koje se temelje na ISA/EISA standardu, a po prirodi ne zahtijevaju tako velike brzine prijenosa (npr. zvune kartice, modem, suelje za pisa).
sabirnica

SI. 12.13 Arhitektura raunarskog sustava s veim brojem sabirnikih struktura

Godine 1998. tvrtke IBM, HP i Compaq uvode poboljanu verziju sabirnice PCI nazvanu PCI-X koja radi na 133 MHz i ima propusnost od 1.06 GB/s te poboljana svojstva u pogledu neosjetljivosti na greke. Verzija 2.0 sabirnice PCI-X (2003.) ima frekvenciju signala vremenskog voenja 266MHz i 533MHz i nudi propusnost od 2.15 GB/s, odnosno 4.3 GB /s. lako je osigurana kompatibilnost PCI-X 2.0 i PCI ureaja, sabirnica PCI-X nije nala iroku primjenu. Jedan od razloga za to je i pojava PCle ili PCI-express sabirnice (2004.). PCle zapravo nije sabirnica u pravom smislu te rijei. Naime, ona se temelji na nainu povezivanja "toka-

380

12. POGLAVLJE: SABIRNICE

toka" (umjesto paralelne sabirnike strukture) i koristi serijsku komunikaciju velike brzine izmeu samo dva prikljuena ureaja. Umjesto izraza sabirnica (na koju se prikljuuju dva ureaja), obino se koristi kod PCle naziv linija (engl .line). Na jednu je liniju mogue prikljuiti i vie ureaja, ali se u tom sluaju moraju upotrijebiti posebni preklopnci (PCI Express switch). Brzina prijenosa po liniji ovisi** verziji PCle, tako verzija 1.x. ima brzinu prijenosa od 250 MB/s, a verzija 3.x brzinu prijenosa od 1 GB/s. Sabirnica PCle moe imati vei broj linija za prijenos. U tom se sluaju brzina prijenosa uviestruuje. Na primjer, za 16 linija i verziju 3.x brzina prijenosa iznosi 16 GB/s. Sabirnica PCle jo je jedan primjer (pored Serial ATA, USB, FireWire) opih napora da se zamjene paralelne sabirnice serijskim sabirnicamaL Spomenuli smo da sabirnica treba imati to je mogue veu propusnost tako da svojom brzinom prati rad procesora, posebno u komunikaciji s prirunom i primarnom memorijom, a s druge strane, mora omoguiti i povezivanje s ureajima koje se temelje na ISA/ EISA standardu koji po prirodi ne zahtijevaju velike brzine prijenosa (npr. zvune kartice^ modemska jedinica, suelje za printer). Intel je ponudio rjeenje: u raunalu se koriste tri ili vie sabirnica koje se povezuju premosnicima i na taj se nain omoguuje komunikacija izmeu sabirnikih struktura (slika 12.13). Zahvaljujui takvom pristupu omoguena je ekstremno brza izmjena podataka izmeu procesora i prirune memorije posebnom sabirnicom namijenjenoj prirunoj memorip! (engl. cache bus) ili procesorskom sabirnicom (koja se jo naziva i lokalna sabirnica ili sa-! birnica domaina (engl. host bus)) ili, u skladu s PC terminologijom, prednja sabirnica (engf. front side bus FSB). Prednja je sabirnica, odnosno procesorska sabirnica, sabirnica velike br-1 zine i radi s jednakom brzinom kao i sam procesor. Sklopovljem - premosnikom povezuje se procesorska sabirnica s PCI sabirnicom. Veza PCI sabirnice i ISA/EISA sabirnice ostvaruje j se premosnikom ISA/EISA (slika 12.13). Sklopovi kojima se ostvaruju suelja izmeu pojedinih sabirnikih struktura u osobnim raunalima nazivaju se skupovi ipova ili ipset (engl. chipset). ipset se sastoji od dva glavna
i pa - j e d a n se obino naziva sjeverni premosnik (engl north bridge), a drugi juni premosn&\

(engl. south bridge). Sjeverni premosnik suelje je izmeu procesora i memorije te grafii] kartice, odnosno AGP (Accelerated Graphic Port) pristupa koji predstavlja brzo namjer-] sko suelje grafikoj kartici (2.133 GB/s). Osim toga, kao opcija postoji mehanizam CSAl (Communication Streaming Architecture) kojim se poveava propusnost izmeu mrene] kartice i procesora tako da se mrena kartica (Gigabit Ethernet; GbE) povezuje izravno na] sjeverni premosnik (umjesto na juni). Napomenimo da se frekvencija signala vremenskom voenja za procesorsku, odnosno prednju sabirnicu FSB, ovisno o tipu ipseta, kree o\ 400 MHz, 533 MHz i 800 MHz pa sve do 1333 MHz (propusnost od 3.2 GB/s do 10.5 GB/s Ujedno, sjevernije premosnik povezan s junim premosnikom koji predstavlja suelje |
ma PCI, o d n o s n o PCle i PC-X sabirnici, LAN (Local Area Network), USB (Universal Serial Bi

RAID, Parallel ATA (PATA- Advanced Technology Attachement) - paralelno sabirniko sue za povezivanje jedinica kao to su diskovna jedinica, jedinica savitljivog diska ili jedini CD-ROM-a, Serial ATA (SATA - Serial Advanced Technology Attachement) - sabirniko sue za povezivanje jedinica magnetskog ili optikog diska s raunalom, odnosno sa sabimi^ kim adapterom raunala domaina (engl. host bus adapter HBA)) te ISA sabirnici, odnos LPC (Low Pin Count) sabirnici koja je zamjena za ISA sabirnicu. Slika 12.14 prikazuje Intelov ipset 875P namijenjen procesorima Pentium 4 i Celeron D.

S. RIBARI - GRAA RAUNALA

381 I

SI. 12.14 Intelov ipset 875P

12.6. ULAZNO-IZLAZNE SABIRNICE: USB, FIREWIRE I SCSI


Ulazno-izlazne sabirnice (engl. I/O bus) ili periferne sabirnice (engl. peripheral bus) prvenstveno su namijenjene povezivanju perifernih ureaja i procesora. (Opaska: periferni ureaji je zbirni naziv za sve ulazne i izlazne ureaje). Sabirnice opisane u 12.5 (ISA, EISA, VESA VL, Micro Channel, PCI, PCI-X, PCle) primjer su ulazno-izlaznih sabirnica. U ovom potpoglavlju opisat emo jo tri tipine ulazno-izlazne sabirnice: USB, FireWire i SCSI. Prva generacija osobnih raunala imala je skromne mogunosti povezivanja s perifernim ureajima. Povezivanje se temeljilo na serijskom suelju RS-232C (za povezivanje raunala i terminala ili za povezivanje udaljenog terminala s modemom, odnosno povezivanje raunala s modemom (slika 12.15)) i paralelnom suelju Centronics (za povezivanje raunala s pisaem). Suelje RS-232C (RecommendedStandard232), razvijeno od strane Electronics Industries Association (EIA), uvedeno je davne 1969. i omoguavalo je prikljuivanje terminala na raunalo. Bilo koji terminal koji je podravao RS-232C mogao se prikljuiti na bilo koje raunalo koje je imalo to suelje. Standard RS-232C sadravao je specifikaciju koja se odnosila na fiziki sloj (engl. physical layer) i sklopovski protokol. Prijenos podataka obavljao se serijski - bit po bit u vremenu preko jedne linije podataka za svaki od smjerova pri-

382

12. POGLAVLJE: SABIRNICE

jenosa (TxD - predajna linija podataka, RxD - prijemna linija podataka). Protokol se podravao upravljakim signalnim linijama kao tosu RTS {Request to Send), CTS [Clear to Send), DTR ( Data Terminal Ready) i DSR (Data Set Ready). Valjana razina signala bila je u rasponu od +3V do +15V (logika "1"), odnosno od -3V do -15V (logika "0"). Budui da su razine napona vee od onih koje koriste integrirani sklopovi, moraju se koristiti posebni pogonski sklopovi (engl. driver) za prilagodbu razina. Kao to je ve spomenuto, prijenos podataka odvijao se serijski - znak po znak, s tim da je svaki znak (engl. character) predoen slijedom bitova. Broj bitova podataka bio je izmeu 5 i 8. Bitovima podataka obavezno je pridodan je jedan poetni (startni) bit (engl. start bit) logike razine "0", a slijedi im jedan ili dva stop bita uvijek logike razine "1". Bitovima podataka moe se pridodati i zatitni paritetni bit tako da se npr. za 8-bitni prijenos podataka koristi 11 bitova: Oddddddddpl 1, pri emu je krajnje lijevi bit startni bit, dd...d oznaava bitove podataka, p je paritetni bit i dva krajnje desna bita (logike razine "1") su stop bitovi. Brzina prijenosa bila je relativno skromna od 75 ili 300 b/s do 19 600 b/s. Nain serijskog prijenosa podataka bio je asinkroni, to u kontekstu serijskog prijenosa podrazumijeva da se izmeu predaj nog i prijemnog ureaja ne prenosi jo i signal vremenskog voenja.

terminal

modem

RS-232C

RS-232C b)

SI. 12.15 Povezivanje raunala pomou RS-232C suelja: a) s udaljenim terminalom, b) s lokalnim terminalom

Standard RS-232C predvia konektor s 25 prikljuaka (noica, pinova), meutim, veina osobnih raunala koristila je konektore od samo 9 prikljuaka (od toga 7 aktivnih -TxD, RxD, signalna masa te linije za rukovanje RTS, CTS, DTR i DSR). Maksimalna duljina kabela za koju se jo jami brzina prijenosa iznosi oko 15 m (SOfeet). Da bi se uklonili nedostaci RS232C suelja, odnosno da bi se postigla vea brzina prijenosa na vee udaljenosti, uvedeni su standardi RS-422, RS-423 i RS-499. Paralelno suelje Centronics, razvijeno 70-ih godina prolog stoljea, bilo je namijenjeno povezivanju raunala s pisaem i dugo je vremena predstavljalo industrijski standard. Tek je 1994. postao i slubeni standard IEEE 1284. Centronics je imao 36 signalnih linija, a maksimalna je doputena duljina kabela bila 5 m. Prijenos podataka obavljao se paralelno pre-

S. RIBARI - GRAA RAUNALA

383 I

ko linija podataka DATA 1 - DATA 8, a signalne linije STROBE, BUSY i ACKNLG koristile su se za rukovanje prijenosom. Brzina prijenosa bila je izmeu 10 KB/s i 100 KB/s. Pojavom USB (Universal Serial Bus) - univerzalne serijske sabirnice standard RS-232C i paralelno suelje Centronics gotovo su istisnuti iz uporabe. PCI sabirnica pogodna je za prikljuivanje perifernih ureaja velikih brzina, meutim, nije dobro rjeenje za povezivanje s perifernim ureajima malih brzina (npr. pisaa, tipkovnice, mia, skenera, iveb-kamere, memorijskog tapia (engl. memory stick)) jer je PCI suelje za te ureaje ekonomski neisplativo. Naravno, ureaje je bilo mogue spojiti i na ISA/EISA slobodne prikljuke, a neki su periferni ureaji imali i relativno skupa PCI suelja. Povezivanje takvih ureaja za "obine" korisnike predstavljalo je problem: trebalo je prespojnim mostiima ili mikroprekidaima na kartici ureaja postaviti adresu ureaja vodei brigu o tome da ta adresa ne bude u konfliktu s adresama ve prikljuenih ureaja; nadalje, trebalo je otvoriti kuite raunala i umetnuti karticu u prikljuno mjesto (engl. slot), zatvoriti kuite te ponovo pokrenuti raunarski sustav (engl. reboot). Broj slobodnih ISA/EISA ili PCI prikljuaka bio je ogranien tako da su se obino maksimalno mogla prikljuiti do tri ureaja.
PCI sabirnica

Poetkom 1996. tvrtke Intel, Compaq, Microsoft, NEC, IBM, DEC i Northen Telecom udruile su se u rjeavanju problema prikljuenja perifernih ureaja malih i srednjih brzina i predloila rjeenje - USB (Universal Serial Bus) standard koji je vrlo brzo iroko prihvaen posebno za osobna raunala. Na primjer, do 2008. prodano je ukupno oko 6 milijardi USB ureaja. Povezivanje ureaja preko USB ponudilo je korisniku niz pogodnosti: nije potrebno postavljanje adrese na kartici ili ureaju, nije potrebno otvarati kuite raunala, moe

384

12. POGLAVLJE: SABIRNICE

se prikljuiti vei broj perifernih ureaja (do 127), ureaji se mogu prikljuiti dok raunalo radi, ponovno pokretanje raunala nije potrebno i ulazno-izlazni ureaj obino dobiva napajanje preko USB-a. USB svojim znaajkama predstavlja vrlo poeljno rjeenje tzv."ukljui i radi" (engl. plug-in and play). USB je standardna serijska sabirnica namijenjena ulazno-izlaznim ureajima malih i srednjih brzina prijenosa. USB se sastoji od tzv. korijenskog ili glavnog (sredinjeg) prikljunog mjesta (engl. root hub) koje se prikljuuje na PCI sabirnicu raunala (slika 12.13). Ono ima utinice ili podnoja (engl. socket) na koja se mogu prikljuiti kabeli za povezivanje s ulazno-izlaznim ureajima ili prikljuno mjesto za proirenje (engl. expansion hub). Ha taj se nain ostvaruje stablasta topologija USB sustava (slika 12.16) kojom je omogueno prikljuivanje velikog broja ureaja. Kabel USB se sastoji od etiri ice - dvije za podatke, jedna za napajanje (+5V) i jedna za masu. Napajanje je namijenjeno ureajima koji imaju umjerene zahtjeve kao to su tipkovnica, mi ili memorijski tapi pa takvi ureaji ne trebaju imati svoj poseban izvor napajanja. Kabel ima razliite konektore - jedan za prikljuno mjesto (nazvan USB A) ijedan za ureaj (USB B) (slika 12.17). Na taj se nain spreava mogua zabuna da se meusobno spoje dvije utinice na prikljunom mjestu.

4 3 2 1

USB A (strana domaina - prikljuno mjesto)

r*
1 4 2 3

USBB (strana ureaja)

prikljuak prikljuak prikljuak prikljuak

1:+5Vdc 2: Data 3: Data + 4: masa

SI. 12.17 USB konektori

Verzija USB 1.0 (sijeanj 1996.) radila je brzinama od 1.5 Mb/s (Low-bandwidth) i 12 Mb/s (Full-bandwith). Verzija USB 2.0 (travanj 2000.) ima tri brzine prijenosa 1.5, 12 i 480 Mb/s (Hi-Speed). Verzija USB 3.0 (studeni 2008.) ima i etvrtu brzinu prijenosa (SuperSpeed) od 4.8 Gb/s. Kabel za USB 3.0 se razlikuje od kabela prethodnih USB verzija jer ima dvije ice za napajanje i masu, dvije ice za prijenos podataka za tri "stare" brzine prijenosa te etiri ice za prijenos podataka brzinom od 4.8 Gb/s. USB omoguuje dinamiku prilagodbu sustava na promjene koje nastaju prikljuenjem novog USB ureaja - ureaj se moe prikljuiti i odspojiti tijekom normalnog rada raunala, tzv. "vrue prikljuivanje"(engl. hot-piug-in). Kad se novi ureaj ukljui, glavno prikljuno mjesto (root hub) detektira taj dogaaj, eka odreeno vrijeme (npr. 100 ms) da omogui uspostavljanje normalnih uvjeta rada za ureaj (napajanje) te nakon toga generira zahtjev za prekid. Operacijski sustav komunicira s novim ureajem da utvrdi o kojem je ureaju rije i koju brzinu prijenosa zahtijeva. Operacijski sustav zahtijeva od novog ureaja optsnik ureaja (engl. device descriptor), koji se sastoji od 64 bajta. Na temelju njega dobiva

S. RIBARI - GRAA RAUNALA

385 I

osnovne podatke o ureaju (npr. vrsta ureaja, isporuitelj, zahtjevi u pogledu napajanja, zahtijevana brzina prijenosa). Ako operacijski sustav utvrdi da je u pogledu zahtijevane brzine prijenosa i napajanja sve u redu, dodjeljuje novom ureaju jedinstvenu adresu u rasponu od 1 do 127 te nju i ostale informacije koje su potrebne za konfiguriranje ureaja alje i pohranjuje u upravljake registre ureaja. Ureaj je inicijaliziran i spreman za razmjenu podataka. Pojedini bitovi prenose se preko USB sabirnice tako da se grupiraju u jedinice koje se nazivaju paketi ili okviri (engl. frame). Paketi zapoinju s sinkronizacijskim blokom SYNC (duljine 8 bita) kojem slijedi blok za identifikaciju paketa PID (duljine 8 bita) kojim se specificira tip paketa. Paket zavrava poljem EOP (End-of-packet). Standard USB predvia est osnovnih tipova paketa sa 16 razliitih blokova PID za identifikaciju paketa. Slika 12.18 prikazuje strukturu paketa za rukovanje (Handshakepacket), paketa podataka (Datapacket) i paketa znake (Token packet). Tri su vrste paketa za rukovanje prijenosom podataka: ACK - potvrda da je paket podataka ispravno primljen, NAK - na temelju CRC detektirana je pogreka u prijenosu i STALL -priekaj, zauzet sam". Paket podataka sastoji se od ve spomenutih blokova za sinkronizaciju, PID i EOP. Izmeu bloka PID i EOP nalazi se blok podataka (duljine do 64 bajta) s CRC (Cyclic Redundancy Code) poljem (duljine 16 bita) za detekciju pogreaka pri prijenosu. Paket znake alje se od korijenskog prikljunog mjesta prema ureaju i namijenjen je upravljakim funkcijama.
SYNC PID EOP

a)

SYNC

PID

podaci b)

CRC

EOP

SYNC

PID

adresa c)

ENDP

CRC

EOP

SI. 12.18 Struktura triju tipova paketa USB: a) Paket za rukovanje; b) Paket podataka; c) Paket znake

Komunikacija se ostvaruje prijenosom okvira ili "cijevi" (engl. pipe) koji se sastoje od jednog ili veeg broja paketa. etiri su vrste okvira: upravljaki, izokroni (engl. isochronous), masovni (engl. buik) i prekidni. Protokol USB prilino je sloen i itatelj moe nai vie informacije na usb.org internetskim stranicama. Godine 1995. uveden je standard IEEE 1394 za serijsko suelje koje se zasnivalo na FireWire specifikaciji serijskog suelja za raunala tvrtke Apple. Razliiti proizvoai raunala nazivaju suelje IEEE 1394 razliitim komercijalnim imenima, tako se na primjer osim FireWire naziva se jo Lynx (tvrtka Texas Instruments) i i.Link (Sony). FireWire je serijska sabirnica velike brzine koja je prvenstveno namijenjena za izokroni prijenos podataka. Pod izokronim prijenosom podataka podrazumijeva prijenos podataka u stvarnom vremenu za periferne ureaje kao to su mikrofoni, zvunici, videokamere i videorekorderi koji zahtijevaju slanje ili prijem podataka u tonim vremenskim intervalima. FireWire moe povezivati do 63 periferna ureaja u stablastoj topologiji (slino USB-u) te doputa komunikaciju dvaju ureaja na ravnopravnoj osnovi (engl. peer-to-peer), npr. izmeu skenera i pisaa, bez su-

386

12. POGLAVLJE: SABIRNICE

djelovanja procesora ili uporabe sistemske memorije. Brzine prijenosa su 100, 200 ili 400 Mb/s za poludupleksni nain (engl. half-duplex) prijenosa (za FireWire 400, 1995.), odnosno 786.432 Mb/s za potpuno dupleksni nain prijenosa (engl. full-duplex) (za FireWire 800, 2002.). Poludupleksni nain prijenosa podrazumijeva dvosmjerni prijenos podataka, ali takav da se podaci prenose samo u jednom smjeru u vremenu, dok potpuno dupleksni nain prijenosa oznaava istodobni prijenos podataka u oba smjera. FireWire konektor ima est kontakata (prikljuaka): napajanje (8 - 40 V; 1.5 A), masa, parica B - (engl. twistedpair), parica B +, parica A - i parica A +. FireWire, kao i USB, doputa "vrue prikljuivanje". SCSI (Small Computer System Interface) je sabirniki standard prvenstveno namijenjen perifernim (ulazno-izlaznim) jedinicama velike brzine kao to su magnetski i optiki diskovi, ali podrava i ureaje kao to su skeneri i jedinice magnetske vrpce. Standard je nastao iz SASI-a (Shugart Associates System Interface), a slubeno je objavljen standard SCSI-1 1986. kao ANSI X3.131-1986. Godine 1994. definiranje standard SCSI-2, a 1997. SCSI-3. Varijanta standarda SCSI-3 pod nazivom SCSI-3 SPI-5, odnosno Ultra-640 SCSI pojavila se 2003.
SCSI jedinica diska

^
periferni ureaji

SI. 12.19 Primjer SCSI konfiguracije

S.RIBARI- GRAA RAUNALA

387 I

Sabirnica SCSI je paralelna ulazno-izlazna sabirnica na koju se moe izravno prikljuiti osam ureaja za SCSI-1, odnosno 16 ureaja za Wide SCSI. Adresa SCSI ureaja naziva se SCSI ID. SCSI ID ujedno definira i prioritet SCSI ureaja: ureaj s ID = 0 ima najmanji prioritet, dok onaj s ID = 7 najvei prioritet (ID = 15 za Wide SCSI). Ureaji mogu imati ulogu inicijatora (vodeeg modula) (engl. initiator) ili ciijnog (prateeg) modula (engl. target). Konfiguracija SCSI sabirnice moe biti bilo koja kombinacija od ukupno osam (16 za Wide SCSI) ciljnih modula i inicijatora. Neki od ureaja mogu imati obje uloge - ulogu inicijatora i ulogu ciljnog modula. Minimalna konfiguracija sastoji se od jednog inicijatora i jednog ciljnog modula. Naravno, tijekom izmjene podataka mora biti jasno odreeno koji je ureaj inicijator, a koji ciljni modul. Ureaji prikljueni na SCSI sabirnici komuniciraju raunalom preko SCSI
upravljaa domaina (engl. SCSI host adapter, SCSI host controller) koji ima pristup sabirnici

raunala domaina, npr. PCI sabirnici te preko nje do memorije sustava. SCSI upravlja domaina moe biti smjeten izravno na matinoj ploi osobnog raunala ili radne stanice i naziva se ugraeni (engl. embedded) SCSI upravlja domain. Periferni ureaji pristupaju SCSI sabirnici preko SCSI upravljaa koji ima svoj ID. Periferni ureaji koji su prikljueni na SCSI upravlja promatraju se kao logikejedinice (LUN - Logical unit). SCSI upravlja obino je ugraen u perifernom ureaju (ugraeni SCSI upravlja), odnosno jedinici i tada govorimo o npr. SCSI jedinici diska ili SCSI jedinici vrpce. No ako je SCSI upravlja ostvaren kao posebna kartica, onda se naziva SCSI premosnik (engl. bridge controller). Jedna od prednosti SCSI premosnika je to to on podrava osam logikih jedinica (LUN), odnosno osam perifernih ureaja. Slika 12.19 prikazuje SCSI konfiguraciju s jednim SCSI upravljaem domainom, jednim ugraenim SCSI upravljaem za diskovnu jedinicu i s tri SCSI premosnika od kojih svaki podrava do osam perifernih ureaja (logikih jedinica - LUN). irina SCSI sabirnice je 8,16 ili 32 bita ovisno o konfiguraciji. SCSI sabirnice irine 16 ili 32 bita nose obino naziv Wide SCSI (iroki SCSI). Trakasti kabel (engl. ribbon cable) s 50 prikljuaka upotrebljava se za SCSI sabirnicu irine 8 bita. iroki SCSI koristi dva trakasta kabela s 50,68 ili 80 prikljuaka. Komunikacija na SCSI sabirnici odvija se izmeu inicijatora i ciljnog modula tako da se sve aktivnosti dogaaju u slijedu faza. Faze su: Bus Free (Sabirnica slobodna) - pokazuje da niti jedan ureaj ne koristi sabirnicu tako da je ona raspoloiva; Arbitration (Arbitraa) - tijekom te faze jedan ili vie inicijatora iskazuje elju za sabirnicom; Selection (Selekcija) - u toj fazi inicijator koji je "pobijedio" u fazi arbitrae izabire ciljni modul (engl. target) s kojim eli komunicirati; Reselection (Reizbor) - omoguuje se ciljnom modulu, koji je otpustio sabirnicu da bi izvrio naredbu inicijatora, ponovnu uspostavu veze s inicijatorom. Sada slijede etiri faze izmjene podataka: Command (Naredba) - tijekom te faze prenose se operacijski kodovi naredbi ciljnom modulu; Data (Podaci) - prenose se podaci ciljnom modulu (Data Out) ili od ciljnog modula inicijatoru (Data In); Message (Poruka) - prenosi se jedna ili vie poruka ciljnom modulu (Message Out) ili od ciljnog modula inicijatoru (Message In); Status (Status) - u toj fazi ciljni modul zavrava SCSI naredbu i izvjetava inicijator o uspjeno ili neuspjeno izvrenoj naredbi.

388

12. POGLAVLJE: SABIRNICE

Slika 12.20 prikazuje dijagram stanja za SCSI sabirnike faze. Vana znaajka SCSI je mogunost reizbora - ako je naredba upuena ciljnom modulu takva da se za njezino izvoenje zahtijeva dulje vrijeme, tada ciljni modul moe osloboditi sabirnicu (odspojiti se) i nakon to zavri zahtijevanu operaciju ponovo se spojiti na sabirnicu. Na primjer, inicijator je izdao naredbu diskovnoj jedinici da formatira disk. Diskovna jedinica izvodi tu operaciju, ali tako da ne "dri" sabirnicu tijekom formatiranja. Nakon to je formatiranje diska zavreno, ciljni se modul (diskovna jedinica) spaja na SCSI sabirnicu i izvjetava inicijator o obavljenoj naredbi. U meuvremenu neki od inicijatora moe zapoeti uspostavljanje nove veze jef ima indikaciju o slobodnoj sabirnici (faza BusFree).
ukljuenje napajanja

Sabirniki protokol kojim su podrane faze ostvaruje se s devet upravljakih linija (za SCSh 1): BSY, SEL, C/D, l/O, MSG, REQ, ACK, ATN, RST. Opis signala i sabirniki protokol iscrpno je prikazan u materijalu standarda X3.131-1986, X3.13M994 i X3.131-1996. Za ilustraciju protokola na SCSI sabirnici opiimo dogaaje i prikaimo stanje na SCSI sabirnici tijekom Read naredbe kojom se prenose podaci od ciljnog modula inicijatoru. Aktivnosti zapoinju fazom Bus Free - sabirnica je slobodna. Faza Bus Free karakteristina je po tome to su signali BSY i SEL neaktivni dulje od 400 ns. Sabirnica SCSI automatski se nalazi u fazi BusFree nakon to se ukljui napajanje ili nakon resetiranja SCSI.Tijekom normalnog rada sabirnica ulazi u fazu BusFree nakon to je naredba izvrena i nakon to se poalje poruka COMMAND COMPLETE. Jednako tako, tijekom normalnog rada SCSI moe ui u fazu Bus Free kada ciljni modul oslobaa sabirnicu slanjem poruke DISCONNECT. iz faze Bus Free prelazi se u fazu Arbitration. U toj se fazi jedan ili vie perifernih ureaja takmie za upravljanje sabirnicom. Svaki od ureaja koji iskazuje elju za sabirnicom aktivira signalnu liniju BSY\jednu od linija podataka. Svaki od osam ureaja prikljuenih na sabirnicu (SCSI-1) ima jedinstven ID (od 0 do 7) i svaki e od ureaja koji eli sabirnicu tijekom faze Arbitration aktivirati odgovarajuu liniju podataka u skladu sa svojim ID-om. Na primjer, ako se natjeu za sabirnicu ureaj s ID = 7 i onaj s ID = 5, tada e linije podataka D7 i D5 biti postavljene u 1. U toj toki ureaji koji su zahtijevali arbitriranje moraju ekati najmanje 2.4 ^s da se postupak arbitrae zavri. Ako je vie ureaja postavilo svoj ID tijekom faze Arbitration, pobjeuje onaj s najveom vrijednosti ID, tj. onaj s najveim prioritetom. Ostali ureaji koji su se takmiili za sabirnicu nadgledaju linije podataka i povlae svoje zahtjeve

S. RIBARI - GRAA RAUNALA

389 I

priznajui konaan rezultat arbitrae. Iz znaajki opisa faze arbitrae moemo zakljuiti da SCSI sabirnica rabi distribuiranu arbitrau. Ureaj koji je pobijedio u fazi Arbitration postaje inicijator i aktivira signal SEL To je znak ostalim ureajima da oslobode signalnu liniju BSY i uklone svoj ID bit sa sabirnice podataka. Sabirnica ulazi u fazu Selection. Tijekom te faze uspostavlja se veza izmeu inicijatora i ciljnog modula. Inicijator, koji je preuzeo upravljanje sabirnicom, postavlja na dvije odgovarajue linije podataka svoj ID i ID ciljnog modula, uz to je jo uvijek aktivan signal BSY koji je bio postavljen od strane ureaja koji je dobio sabirnicu u fazi Arbitration. Na primjer, ako inicijator s ID = 7 eli uspostaviti vezu s ciljnim modulom s ID = 0, onda e linije podataka D7 i DO imati vrijednost 1. Nakon izvjesnog kanjenja, inicijator deaktivira signal BSY. Nakon to ciljni modul prepozna svoj ID, on aktivira signal BSY Kad inicijator detektira aktivan signal BSYt on oslobaa linije podataka i deaktivira signal SEL. U ovom trenutku, na kraju faze Selection, upravljanje sabirnicom preuzima ciljni modul! U sljedeem koraku ciljni modul aktivira signalnu liniju C/D i time oznaava ulazak u fazu Command. Istodobno su signali //0 i MSG neaktivni. Signal C/D ostaje aktivan tijekom cijelog trajanja te faze. Nakon toga ciljni modul aktivira signalnu liniju REQ i zahtijeva od inicijatora prvi bajt naredbe. Inicijator postavlja prvi bajt naredbe na sabirnicu podataka i aktivira signalnu liniju ACK. Nakon to ciljni modul proita bajt, deaktivira REQ, a nakon toga i inicijator deaktivira signal ACK. U prvom bajtu naredbe sadran je operacijski kod naredbe u kojem se nalazi i informacija o broju bajtova naredbe koji se moraju prenijeti. Ovi se bajtovi prenose u ponavljajuoj REQ / ACK sekvenci. Nakon to je ciljni modul primio od inicijatora sve bajtove naredbe, deaktivira signalnu liniju C/D i tako zavrava fazu Command. Ciljni modul tumai naredbu i u skladu s tumaenjem (rije je o Read operaciji) prelazi u fazu Data, odnosno tonije Data In te aktivira I/O signalnu liniju. Na taj nain oznaava smjer podataka od ciljnog modula prema inicijatoru. Ciljni modul smjeta prvi bajt iz zahtijevanog bloka podataka na sabirnicu podataka te aktivira signalnu liniju REQ. Inicijator, nakon to proita podatak, aktivira signalnu liniju ACK. Preostali se bajtovi prenose ponavljajui REQ/ACK rukovanje prije i nakon svakog prijenosa bajta. Nakon prijenosa potpunog bloka podataka, ciljni modul postavlja sabirnicu u Status fazu i alje inicijatoru informaciju o statusu (statusni bajt) obavjetavajui ga daje uspjeno zavren prijenos. U toj su fazi ponovno aktivne signal ne linije C/D i I/O, dok signal na linija MSG ostaje neaktivna. I u ovom sluaju inicijator i ciljni modul koriste REQ/ACK signale za rukovanje prijenosom statusnog bajta. Na kraju, ciljni modul aktiviranjem signalne linije MSG postavlja sabirnicu u Message In fazu i prenosi bajt poruke koji sadrava poruku o zavretku naredbe. Nakon to je inicijator primio tu poruku, ciljni modul oslobaa sabirnicu i sabirnica prelazi u Bus Free fazu. Slika 12.21 prikazuje vremenski dijagram stanja na SCSI sabirnici tijekom Read naredbe. SCSI sabirnica pojavljuje se s razliitim znaajkama i imenima: i) asinkrona SCSI sabirnica - asinkroni je prijenos podataka osnovni oblik prijenosa za sve SCSI ureaje. Brzina prijenosa je 5MB/s; ii) sinkrona SCSI sabirnica - sinkroni prijenos podataka upravljan signalom vremenskog voenja od 5MHz (SCSI-1) ili 10MHz (SCSI-2); iii) brzi SCSI (Fast SCSI) - poboljana verzija sinkronog prijenosa podataka za SCSI-2; iv) iroki SCSI (Wide SCSI) - sabirnica za prijenos 16- i 32-bitnih podataka. Tablica 12.1 daje pregled znaajki razliitih varijanti SCSI sabirnice.

LT) NJ

k> < 0) 3 0) 13
i

Bus Settle Delay

Bus Free Delay Bus Set Delay Bus Clear Delay Arbitration Delay

3 cn cu Q J D O) On n ^ 0> g; -V D n' 0) O

Bus Clear Delay plus Bus Settle Delay inicijator aktivira signal BSY ciljni ureaj postavlja BSY SS sustavi bez arbitrae zapoinju ovdje -SS-

BSY SEL C/D I/O MSG REQ ACK ATN RST DB (7-0,P) (Data bus) / sabirnica slobodna

-ss-ss-

-ss-

-ss-ss-8r

Y
V

T
/

t
VJ/
i J C X . Command I Complete

JT

30 n> a> Q. U
OJ ^

J /

0) Q. O" n>

/
i
-fr

-ss-

-SS-

XZ>
I Arb. I IDs Targ. &lnit. IDs 1st CMD Byte

ss

/ O L
Last CMD Byte Data Byte

-SS J

C X . Data Byte

O Status Byte

Arbi- Selectration tion

Command

Data In

Status

Message In sabirnica slobodna

"J

S. RIBARI - GRAA RAUNALA

391 I

Sucelje SCSI-1 Fast SCSI Fast-Wide SCSI Ultra SCSI Ultra Wide SCSI Ultra 2 SCSI Ultra 2 Wide SCSI Ultra 3 SCSI Ultra-320 SCSI Ultra-640 SCSI

Standard SCSI-1 (1986.) SCSI-2 (1994.) SCSI-2, SCSI-3 SPI (1996.) SCSI-3 SPI SCSI-3 SPI SCSI-3 SCSI-3 SPI-3 SCSI-3 SPI-3 (1999.) SCSI-3 SPI-3 (2002.) SCSI-3 SPI-3 (2003.)

Konektor 50 prikljuaka 50 prikljuaka 2 x 50 (SCSI-2) 1 x 68 (SCSI-3) 50 prikljuaka 68 prikljuaka 50 prikljuaka 68 prikljuaka 80 prikljuaka 68 prikljuaka 80 prikljuaka 68 prikljuaka 80 prikljuaka 68 prikljuaka 80 prikljuaka

irina (bita) 8 8 16 8 16 8 16 16 16 16

Frekvencija (MHz) 5 10 10 20 20 40 40 40 DDR 80 DDR 160 DDR

Brzina (MB/s) 5 10 20 20 40 40 80 160 320 640

Duljina kabela (m) 6 3 3 1,5 ili 3 1,5 ili 3


-

Tablica 12.1 Pregled znaajki razliitih varijanti SCSI sabirnice

S. RIBARI - GRAA RAUNALA

393 I

13. POGLAVLJE

ULAZNO-IZLAZNI SUSTAV
13.1. UVOD
Raunalo je neupotrebljivo ako ne moe komunicirati s vanjskim svijetom. Komunikacija s vanjskim svijetom ostvaruje se ulazno-izlaznim sustavom koji mora podrati esto vrlo raznolike oblike izmjene podataka izmeu procesora i vanjskog svijeta. Na primjer, prikaz podataka i unoenje naredbi korisnika, generiranje upita bazama podataka i njihovo obnavljanje, rezervna pohrana podataka i dokumenata (engl. baking up), prikupljanje podataka iz mree mjernih ureaja i senzora, upravljanje robotskom rukom, upravljanje ureajima i napravama u proizvodnim i industrijskim procesima, izmjena podataka i naredbi s udaljenih terminala, izmjenjivanje podatka s drugim raunarskim sustavima i si. Izmjena podataka raunala s vanjskim svijetom ostvaruje se razliitim perifernim ureajima (nazivaju se jo i vanjski ureaji ili ulazno-izlazni ureaji) koji su preko ulazno-izlaznog suelja (engl. I/O iriterface) prikljueni na sabirnicu raunala. Periferni ureaji su, na primjer, tipkovnica, mi ili skener koji su oiti primjeri ulaznih ureaja. Pisa, monitor ili grafika prikazna jedinica bez dvoumljenja su primjeri izlaznih jedinica. No to je jedinica magnetskog diska? Podaci koji se izmjenjuju izmeu procesora i diskovne jedinice nisu podaci koji izravno pristiu iz vanjskog svijeta ili se izravno alju u vanjski svijet - prema tome, strogo gledano, diskovna jedinica ne bi mogla biti ulazno-izlazna, odnosno periferna jedinica. Podaci se, meutim, izmeu procesora i diskovne jedinice izmjenjuju preko ulazno-izlaznog sustava jer se diskovna jedinica zbog svojih elektrikih i mehanikih znaajki bitno razlikuje od glavne (primarne ili radne) memorije pa se diskovna jedinica smatra ulazno-izlaznim, odnosno perifernim ureajem. Periferni se ureaji mogu razvrstati prema tome jesu li ulazni, izlazni ili ulazno-izlazni, jesu li namijenjeni komunikaciji sa ovjekom ili strojem (ili drugim raunalom) te prema brzini prijenosa. Na primjer, tipkovnica je ulazni ureaj namijenjen ovjeku i njome se prenose podaci brzinom od oko 10 B/s; jedinica magnetskog ili optikog diska je ulazno-izlazni ureaj kojem je stroj (raunalo) partner u komunikaciji s brzinom prijenosa od 3000 Mb/s ili grafika prikazna jedinica koja je izlazni ureaj namijenjen ovjeku i ima brzinu prijenosa podataka od 800 do 8000 Mb/s. Periferni se ureaji izravno ne prikljuuju na sabirnicu raunarskog sustava. Oni se, kao to smo ve spomenuli, prikljuuju na sabirnicu raunarskog sustava preko ulazno-izlaznog suelja. Ulazno-izlazno suelje esto se naziva i ulazno-izlazni upravlja (engl. I/Ocontroller),
ulazno-izlazni modul (engl. I/O module), upravlja ureaja (engl. device controller), a neki ga jo nazivaju i pristupni sklop.

394

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

Pod ulazno-izlaznim

sustavom (slika 13.1) podrazumijevaju se svi periferni ureaji (i njihova

ulazno-izlazna suelja) koji su prikljueni na sabirnicu raunarskog sustava. Jedno ulaznoizlazno suelje na koje je prikljuen jedan ili vie perifernih ureaja nazivat emo ulaznoizlazni podsustav.
sabirnica sustava

procesor

memorija

ulaznoizlazni upravlja 1

ulaznoizlazni upravlja 2

ulaznoizlazni upravlja 3

...

ulaznoizlazni upravlja n

periferni ureaj

komunikacijska linija

periferni ureaji

ulazno-iziazni podsustav 1

ulazno-izlazni podsustav 2

ulazno-izlazni podsustav 3

periferni ureaji povezani dijeljenom ulazno-izlaznom sabirnicom

ulazno-izlazni podsustav n

ulazno-izlazni sustav

SI. 13.1 Ulazno-izlazni sustav

Slika 13.1 prikazuje nain prikljuenja perifernih ureaja za jednostavnije raunarske sustave relativno malih performansi (engl. low-end system) koji se temelje na jednoj (sistemskoj) sabirnici. (Opaska: upotrebljavat emo i naziv sabirnica sustava.) Slika 13.2 prikazuje nain prikljuenja perifernih ureaja u raunarskom sustavu koji se temelji na hijerarhijskom ustroju veeg broja sabirnica (npr. lokalna sabirnica/sabirnica prirune memorije, memorijska sabirnica, PCI sabirnica, ulazno-izlazna sabirnica). U oba sluaja vidimo da se izmeu perifernog ureaja i sabirnice pojavljuje ulazno-izlazni upravlja (engl. I/O controller). Zato? Razlozi su viestruki: i) zbog velike je raznolikosti perifernih ureaja (naini rada, brzina i naini prijenosa podataka i si.) nepraktino, neisplativo i skoro neizvedivo ugraditi upravljake sklopove za periferne ureaje u procesor. Uporabom ulazno-izlaznih upravljaa postie se nezavisnost oblikovanja procesora i memorije u odnosu na periferne ureaje. Na taj se nain omoguuje nadogradnja i proirenje ulazno-izlaznog sustava novim perifernim ureajima neovisno o procesoru; ii) uporabom ulazno-izlaznih upravljaa koji, izmeu ostalog, imaju i mogunost me-i upohranjivanja podataka (engl. buffering), premouje se jaz izmeu brzine pro-j cesora i perifernih ureaja koji su vrlo esto puno sporiji od procesora ili memorije; iii) periferni ureaji vrlo esto rabe format i duljinu rijei podataka koja se razlikuje odi formata i duljine rijei procesora pa je stoga potrebno obaviti pretvorbu formata] oblika podataka u ulazno-izlaznom upravljau; iv) ulazno-izlazni upravljai moraju podrati vremensko voenje i protokol za prijenosi podataka izmeu procesora i perifernog ureaja te omoguiti prikljuenje vie od]

S. RIBARI - GRAA RAUNALA

395 I

jednog perifernog ureaja. Ujedno, vrlo esto imaju i dodatne funkcije koje se odnose na otkrivanje i ispravljanje pogreaka tijekom prijenosa podataka.
lokalna sabirnica/ sabirnica prirune memorije

periferni ureaj

periferni ureaji

periferni ureaji

SI. 13.2 Nain prikljuenja perifernih ureaja u raunarskom sustavu koji se temelji na hijerarhijskom ustroju veeg broja sabirnica

13.2. ULAZNO-IZLAZNI UPRAVLJA


Ulazno-izlazni upravljai, ovisno o funkcijama koje obavljaju, mogu biti izvedeni kao jednostavno suelje izmeu procesora i jednog perifernog ureaja, dok u sloenijim izvedbama mogu nezavisno upravljati veim brojem perifernih ureaja. U oba sluaja ulazno-izlazni upravlja mora podravati funkcije koje se odnose na meupohranjivanje podataka i upravljanje perifernim ureajem. U najjednostavnijoj izvedbi, ulazno-izlazni upravlja koji je prikljuen na sistemsku sabirnicu sastoji se od dva dijela (slika 13.3): pristupnih vrata

396

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

raunalu (engl. host port) i pristupnih vrata perifernom ureaju (engl. device port). Pristupna vrata raunalu, kojima se ostvaruje suelje prema procesoru, sastoje se od sklopova za prihvat i dekodiranje ulazno-izlaznih naredbi koje izdaje procesor, dekodiranje vlastite adrese i adrese za izbor pristupnih vrata ureaja te od jednog ili vie registara podataka, upravljakog registra te registra za pohranu informacije o statusu perifernog ureaja. Uz sve t a pristupna vrata obino imaju i sklopove za generiranje zahtjeva za prekid (engl. interrupt
hardware).

Pristupna vrata perifernom ureaju, kojima se ostvaruje sklopovsko suelje prema perifernom ureaju, zaduena su za upravljanje i prijenos podataka od ili prema perifernom ureaju. Neke od upravljakih funkcija pristupnih vrata su, primjerice, inicijalizacija perifernog ureaja, aktiviranje i zaustavljanje rada perifernog ureaja, ostvarivanje protokola izmjene podataka s perifernim ureajem, pretvorba podataka (paralelno/serijska i serijsko^ paralelna) te oblikovanje (kompozicija i dekompozicija) podataka u rijei i bajtove. Slika 13.3 prikazuje blok-dijagram jednostavnog ulazno-izlaznog upravljaa koji podrava dva periferna ureaja.
registar podataka Vy sklopovsko suelje za periferni ureaji 1 pristupna vrata perifernom ureaju 1
podaci status

j
sabirnica podataka

>

A VI

statusni registar

j y

upravljanje

upravljaki registar

/
adresna sabirnica
j V

podaci status r

< ,
A

sklopovi za dekodiranje ulazno-izlaznih naredbi i adrese

sklopovsko suelje za periferni ureaji 2 pristupna vrata perifernom ureaju 2

V N
A

N
K

: V upravljanje

upravljana sabirnica

pristupna vrata raunalu

SI. 13.3 Blok-dijagram jednostavnog ulazno-izlaznog upravljaa

Ulazno-izlazni upravlja povezan je s raunalom posredno preko ulazno-izlazne sabirnice ili izravno preko sistemske sabirnice: sabirnice podataka, adresne sabirnice i upravljake sabirnice. Podaci koji se izmjenjuju s vanjskim svijetom i koji se prenose od ili prema ulaznoizlaznom upravljau meupohranjuju se u jednom ili vie registara podataka. Upravlja ima jedan ili vie statusnih registara u kojima se pohranjuje informacija o trenutnom stanju perifernog ureaja te jedan ili vie upravljakih registara za prihvat upravljake informacije od procesora. U sloenijim izvedbama ulazno-izlazni upravljai imaju svoj vlastiti (lokalni) procesor i lokalnu memoriju tako da mogu podrati autonomni prijenos podataka bez izravnog su-

S. RIBARI - GRAA RAUNALA

397 I

djelovanja sredinjeg procesora raunarskog sustava. Vrlo se esto takvi ulazno-izlazni upravljai nazivaju i inteligentni ulazno-izlazni upravljai. Slika 13.4 prikazuje strukturu jednog takvog ulazno-izlaznog podsustava s inteligentnim ulazno-izlaznim upravljaem koji podrava dva periferna ureaja.

ulazno-izlazni podsustav

SI. 13.4 Struktura ulazno-izlaznog podsustava s inteligentnim ulazno-izlaznim upravljaem

U zakljuku ovog potpoglavlja jo jednom navedimo osnovne funkcije koje treba podrati ulazno-izlazni upravlja: i) vremensko voenje i upravljanje tokom podataka izmeu perifernih ureaja i internih komponenti raunarskog sustava; ii) komunikaciju s procesorom; iii) komunikaciju s perifernim ureajem (ili ureajima); iv) meupohranjivanje podataka; v) otkrivanje (detekcija) i ispravljanje pogreaka tijekom prijenosa podataka. Za ostvarivanje komunikacije izmeu procesora i perifernog ureaja ulazno-izlazni upravlja mora imati sposobnost dekodiranja naredbi koje alje procesor te dekodiranja adrese za izbor perifernog ureaja ili registara u perifernom ureaju. Uz sve to, od ulazno-izla-

398

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

znog upravljaa zahtijeva se i dojava statusa ili stanja u kojem se nalazi periferni ureaj, ukljuujui i izvjetavanje o razliitim pogrekama koje mogu nastupiti tijekom prijenosa podataka.

13.3. NAINI IZMJENE PODATAKA


Naini izmjene podataka izmeu perifernog ureaja i procesora (ili memorije), tj. ulaznoizlazne operacije mogu se razvrstati u tri grupe: i) programirani ulazno-izlazni prijenos podataka (engl. programmed I/O), ii) prekidni ulazno-izlazni prijenos podataka (engl. interrupt-driven I/O), iii) ulazno-izlazni prijenos podataka izravnim pristupom memoriji (engl. DMA - Direct
Memory Access).

13.3.1. PROGRAMIRANI ULAZNO-IZLAZNI PRIJENOS PODATAKA


Pri programiranom ulazno-izfaznom prijenosu podataka podaci se izmjenjuju izmeu procesora i ulazno-izlaznog upravljaa pod izravnim programskim upravljanjem procesora. Procesor izvodi program kojim izravno upravlja ulazno-izlaznim operacijama - oitava status perifernog ureaja, alje naredbe za izvoenje ulazne ili izlazne operacije i prenosi podatke. Budui da je procesor izvoenjem programa izravno ukljuen u ulazno-izlazni prijenos podataka, ne moe raditi nita drugo pa nema konkurentnih operacija, odnosno vie istodobnih aktivnosti u raunarskom sustavu. tovie, kad procesor koji je obino bri od ulazno-izlaznog upravljaa, odnosno perifernog ureaja, izda naredbu ulazno-izlaznom upravljau, mora ekati da se obavi prijenos podataka izmeu perifernog ureaja i ulazno-izlaznog upravljaa te da se podaci pohrane u registrima podataka ulazno-izlaznog upravljaa i postanu raspoloivi procesoru. Kada je velika razlika u brzini procesora i perifernog ureaja, to ekanje procesora predstavlja beskorisno veliko rasipanje procesorskog vremena. Prijenos podataka pod programskim upravljanjem zahtijeva da procesor izvri nekoliko instrukcija, ukljuujui ulaznu instrukciju (ako je rije o prijenosu podataka iz vanjskog svijeta u raunarski sustav) te instrukciju kojom prenosi podatak iz procesora u memoriju, odnosno instrukciju kojom prenosi podatak iz memorije u procesor te izlaznu instrukciju (ako je rije o prijenosu podataka iz raunala u vanjski svijet). U raunarskim sustavima koji koriste programirani ulazno-izlazni prijenos podataka, procesor, memorija i ulazno-izlazni upravlja obino komuniciraju preko sistemske sabirnice: adresne sabirnice, sabirnice podataka i upravljake sabirnice. Adresna sabirnica koja slui za adresiranje memorije koristi se i za adresiranje ulazno-izlaznog upravljaa. Ovisno o njegovoj sloenosti, dodjeljuje mu se jedna iii vei broj adresa. I ovdje moramo naglasiti da su adrese jednoznano dodijeljene - ne postoje dva ulazno-izlazna upravljaa u raunarskom sustavu koji imaju istu ili iste adrese. Ako je rije o vrlo jednostavnom upravljau koji je reduciran samo na pristupna tj. ulazno-izlazna vrata (engl. I/Oport) s jednim registrom podataka, onda njemu moe biti dodijeljena samo jedna adresa. No ako je rije o sloenijem ulazno-izlaznom upravljau, on ima dodijeljenu grupu adresa (npr. adrese za jedan ili vie upravljakih registara, adresa za statusni registar i adrese za ulazne i izlazne registre podataka).

S. RIBARI - GRAA RAUNALA

399 I

Ovisno o tome kako procesor"vidi"ulazno-izlazni upravlja, postoje dva naina adresiranja upravljaa: i) memorijsko preslikavanje U/l (engl. memory-mapped I/O), ii) izdvojeno U/l (engl. isolated I/O). Kod memorijskog preslikavanja U/l, adrese dodijeljene ulazno-izlaznim upravljaima dio su adresnog memorijskog prostora. Drugim rijeima, procesor smatra ulazno-izlazne upravljae, odnosno njihove registre, dijelom memorijskog adresnog prostora i njima pristupa strojnim instrukcijama koje rabi za komunikaciju s memorijskom jedinicom. Naravno, u tom je sluaju ukupni adresni memorijski prostor umanjen za dio adresnog prostora dodijeljenog ulazno-izlaznom sustavu. Procesori koji rabe takvu organizaciju ulazno-izlaznog sustava nemaju posebne instrukcije za ulazne operacije (instrukcije IN ili INPUT) niti instrukcije za izlazne operacije (OUT). Umjesto njih rabe instrukcije koje se koriste za komunikaciju s memorijom - instrukcije STA i LDA, odnosno MOVE. Primjer 13.1. Pretpostavimo da je jednostavan ulazno-izlazni upravlja sveden na U/l vrata te da ima samo dva registra podataka - jedan ulazni (za prihvat podataka iz perifernog ureaja ili vanjskog svijeta) i jedan izlazni za slanje podatka perifernom ureaju ili vanjskom svijetu (slika 13.5). Neka je izlaznom registru dodijeljena adresa 8000 (heksadekadno), a ulaznom registru adresa 8008 (heksadekadno). Pozor: adrese 8000 i 8008 su u tom sluaju rezervirane za ulazno-izlazni upravlja i ne smiju se dodijeliti memorijskim lokacijama! Jednostavan programski odsjeak kojim e se obaviti prijenos podataka izgleda ovako: instrukcija instrukcija LDA $1000 dohvati podatak s memorijske lokacije ija je adresa 1000 i privremeno ga pohrani u akumulator A STA $ 8000 pohrani podatak iz A u izlazni registar U/l vrata (izlazna operacija) instrukcija instrukcija instrukcija LDA $8008 dohvati podatak iz ulaznog registra U/l vrata pohrani podatak na memorijsku lokaciju ija je adresa 2000 STA $2000 instrukcija instrukcija instrukcija Instrukcijom STA $8000 obavlja se izlazna operacija, odnosno podatak iz akumulatora A pohranjuje se u izlaznom registru i alje vanjskom svijetu jer je 8000 adresa izlaznog registra. Instrukcijom LDA $8008 dohvaa se podatak iz ulaznog registra podataka U/l vrata (ulazna operacija). Vidimo da instrukcija STA ima funkciju izlazne instrukcije (OUT) ako adresira izlazni registar podataka U/l vrata, odnosno instrukcija LDA ima funkciju ulazne instrukcije (IN) ako adresira ulazni registar. Ulazno-izlazni upravljaki sklopovi koji su posebno namijenjeni programiranom ulazno-izlaznom prijenosu i rabe memorijsko preslikavanje U/l koriste upravljaki signal R/W (itaj/pii) kao i memorijski moduli (slike 13.5 i 13.6 a)).

400

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

adresna sabirnica

SI. 13.5 Jednostavan ulazno-izlazni upravlja s izlaznim vratima (adresa 8000) i ulaznim vratima (adresa 8008) koji koristi memorijsko U/l preslikavanje (Primjer 13.1)

Pri izdvojenoj U/l organizaciji procesor ima posebni, izdvojeni adresni prostor namijenjen U/l sustavu i posebni adresni prostor namijenjen memoriji. Procesor u tom sluaju ima i posebne instrukcije u skupu strojnih instrukcija za unos podataka (IN ili INPUT) i za slanje podataka u vanjski svijet (OUT). Procesor razlikuje dva adresna prostora tako to, ako pristupa memorijskom adresnom prostoru, to ini instrukcijama tipa LDA i STA koje aktiviraju upravljake linije READ M (itaj memoriju), odnosno VVRITE M (pii u memoriju). No u sluaju pristupa adresnom prostoru namijenjenom U/l sustavu, instrukcijama IN i OUT aktivira upravljake signale READ IO (itaj U/l), odnosno VVRITE IO (pii U/l) (slika 13.6 b). Formati instrukcija IN i OUT sastoje se od dva ili vie bajtova koji sadravaju operacijski kod instrukcije te dva adresna dijela - jedan koji odreuje adresu U/l vrata, odnosno ulaznog ili izlaznog registra podataka i drugi koji odreuje izvor podataka koji e biti poslan u vanjski svijet ili odredite podatka u kojem e se privremeno pohraniti podatak dohvaen iz vanjskog svijeta.

S. RIBARI - GRAA RAUNALA

401

Slike 13.6 a) i 13.6 b) prikazuju organizaciju programiranog ulazno-izlaznog prijenosa podataka za memorijsko preslikavanje U/l i izdvojeno U/l te odnose izmeu pojedinih adresnih prostora (13.6 c)). Napomenimo da, primjerice, procesori MC 680x0 tvrtke Motorola koriste memorijsko U/l preslikavanje, dok procesori 86x86 tvrtke Intel rabe izdvojeno U/l.
sabirnica podataka

adresna sabirnica

periferni ureaj a)

periferni ureaji

sabirnica podataka

adresna sabirnica

periferni ureaj b)

periferni ureaji

SI. 13.6 Programirani U/l prijenos: a) s memorijskim preslikavanjem U/l; b) s izdvojenim U/l;

402

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

U/l adresni prostor

ukupni adresni prostor

memorijski adresni prostor

memorijski adresni prostor

U/l adresni prostor

memorijsko U/l preslikavanje c)

izdvojeno U/l preslikavanje

SI. 13.6 Programirani U/l prijenos: c) odnos izmeu pojedinih adresnih prostora za obje organizacije

Programirani ulazno-izlazni prijenos podataka moe biti programirani bezuvjetni i programirani uvjetni prijenos. Osnovna znaajka programiranog bezuvjetnog prijenosa je da se prijenos podataka obavlja bez prethodnog utvrivanja stanja ulazno-izlaznog upravljaa, odnosno perifernog ureaja. Programski odsjeak u Primjeru 13.1. ilustrira takvu vrstu prijenosa - vidimo da instrukciji STA $8000 koja ima znaenje izlazne instrukcije ne prethodi nita ime bi se utvrdilo jesu li U/l vrata, odnosno periferni ureaj koji je prikljuen na ta vrata, spremni za prihvat podatka.Takva vrsta prijenosa podrazumijeva daje periferni ureaj prikljuen na ulazno-izlazni upravlja spreman za prihvat ili slanje podataka u trenutku izvoenja ulazne ili izlazne instrukcije. Bezuvjetni se programirani prijenos upotrebljava samo tamo gdje su vremena odziva upravljaa i perifernih ureaja tono poznata. Zbog jednostavnosti i izravnosti ovaj nain prijenosa postavlja minimalne zahtjeve za programe i sklopove. Primjer 13.2. Prikaimo primjer programskog odsjeka za bezuvjetni programirani prijenosa bloka podataka za procesor MC 680x0 koji koristi memorijsko U/l preslikavanje. Pretpostavimo da se blok podataka nazvan BLOCK, veliine 256 bajtova, koji se nalazi na poetnoj adresi 4000 (heksadekadno) eli poslati na izlazna vrata (PORT) ija je adresa 8000 (heksadekadno). Program zapoinje na adresi 6000 (heksadekadno). PORT COUNT EQU $8000 EQU 256 ; adresa izlaznih vrata ; (brojilo) veliina bloka koji se prenosi ; poetna adresa bloka podataka ; rezervirano 256 bajtova za BLOCK ; poetak programa ; u registar Dl postavi poetnu vrijednost brojila ; postavi poetnu adresu bloka podataka u reg. A1

ORG $4000 BLOCK DS.B 256 ORG $6000 MOVE #COUNT, Dl MOVE.L #BLOCK, A1

S. RIBARI - GRAA RAUNALA

403 I

MOVE.L #PORT, A2 PETLJA MOVE. B (Al)+, DO MOVE.B DO, (A2) SUB #1, Dl BNE PETLJA

postavi adresu izlaznih vrata u reg. A2 dohvati podatak iz BLOCK i privremeno ga pohrani u DOte poveaj sadraj registra A1 za jedan podatak iz reg. DO poalji na izlazna vrata umanji za 1 stanje brojila granaj na PETLJA sve dok brojilo ne dostigne vrijednost 0, odnosno dok se ne prenese cijeli blok podataka

Procesor MC 680x0 koristi instrukciju MOVE koja ovisno o smjeru podataka ima jednaku funkciju kao i STA, odnosno LDA instrukcija.Tako na primjer: Instrukcija

MOVE. B (Al)+, DO; M(A1> -DO, A1 + 1-* A1


ima funkciju LDA - dohvaa podatak (bajt) iz memorijske lokacije ija je adresa sadrana u adresnom registru A1 i pohranjuje ga u registar DO. Potonja instrukcija koristi tzv. registarsko indirektno (neizravno) postinkrementno adresiranje (engl. address register indirect with postincrement} jer se sadraj registra A1 nakon dohvata bajta automatski poveava za 1. Nakon izvoenja potonje instrukcije u registru DO nalazi se podatak (bajt) koji e instrukcijom

MOVE.B DO, (A2)


biti poslan u vanjski svijet. Instrukcija MOVE. B DO, (A2) predstavlja operaciju pohranjivanja (STA) bajta iz registra DO na lokaciju ija je adresa sadrana u adresnom registru A2. (Adresni registar A2 sadrava 8000 (heksadekadno) to je adresa izlaznih vrata). Izlazna su vrata linijama podataka spojena s perifernim ureajem tako da se upisom podatka u izlazni registar podaci ujedno i alju perifernom ureaju, odnosno vanjskom svijetu. U prethodnom programskom odsjeku vidimo da procesor prije negoli poalje podatak na izlazna vrata ne provjerava jesu li vrata ili vanjski svijet (periferni ureaj) spremni za prihvat podataka. Programirani uvjetni prijenos zahtijeva ispitivanje stanja ulazno-izlaznog upravljaa, odnosno perifernog ureaja prije negoli se obavi prijenos podataka. Periferni ureaj je jednom ili veim brojem posebnih signalnih linija za rukovanje povezan s ulazno-iziaznim upravljaem ili tonije njegovim statusnim registrom kojem dojavljuje informaciju o spremnosti za prijenos podataka. Ta se spremnost ogleda u promjeni stanja odreenog ili odreenih bitova u statusnom registru. Na primjer, ako je periferni ureaj spreman, onda e se odreen bit (ili odreeni bitovi) u statusnom registru postaviti u 1. Procesor ispitivanjem tog ili tih bitova utvruje je li periferni ureaj spreman. Ako periferni ureaj nije spreman za prihvat ili slanje podataka, programski se tok zatvara u "petlju ekalicu" u kojoj se uzastopce ispituje stanje perifernog ureaja (naravno, posredno ispitivanjem bita ili bitova u statusnom registru ulazno-izlaznog upravljaa). Tek kada je periferni ureaj spreman, izvodi se instrukcija za ulazno-izlazni prijenos podataka. Slika 13.7 prikazuje shematski tok programa za takvu vrstu prijenosa.

404

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

U/l instrukcija

SI. 13.7 Shematski prikaz programiranog uvjetnog prijenosa

Primjer 13.3. Da bi se djelotvorno, jednostavno i sigurno ostvario programirani uvjetni prijenos, obino se zahtijeva da ulazno-izlazni upravlja (ili u jednostavnijoj izvedbi U/l vrata) ima dva registra. Jedan registar ima funkciju registra podataka, a drugi je statusni registar. Memorijskim preslikavanjem U/l svakom od registara dodijeljena je po jedna adresa iz memorijskog adresnog prostora. Pretpostavimo da izlazni registar ima adresu 8000 (heksadekadno), a statusni registar upravljaa (ili U/l vrata) adresu 8002 (heksadekadno). Programski odsjeak za uvjetni programirani prijenos bloka podataka za procesor MC 680x0 izgleda ovako:

PORTDATA PORTSTAT COUNT PROGRAM MASKA DATA BLOCK

EQU $8000 EQU $8002 EQU 256 EQU $6000 EQU 1 EQU $4000 ORG DATA DS .B 256 ORG PROGRAM MOVE.W #C0UNT,D1 MOVE.L #BLOCK, A1 MOVE.L #PORTDATA, A2 MOVE.L #PORTSTAT, A3

; adresa izlaznog registra podataka ; adresa statusnog registra ; (brojilo) veliina bloka koji se prenosi ; poetna adresa programa ; vrijednost maske kojom se ispituje status ; poetna adresa bloka podataka ; rezervirano 256 bajtova za BLOCK ; poetak programa ; u registar D1 postavi poetnu ; vrijednost brojila ; postavi poetnu adresu bloka ; podataka u reg. A1 ; postavi adresu izlaznih vrata u reg. A2 ; postavi adresu statusnog registra u reg. A3

S. RIBARI - GRAA RAUNALA

405 I

PETLJA

MOVE.B ( A l ) + , DO

EKAJ

MOVE.B (A3), D2 AND.B #MASKA, D2 BEQ EKAJ MOVE.B DO, (A2) SUB #1, Dl BNE PETLJA

dohvati podatak iz BLOCK i privremeno ga pohrani u DO te poveaj sadraj registra A1 za jedan dohvati status iz statusnog registra i smjesti ga u reg. D2 utvrdi je li ulazno-izlazni upravlja spreman nije, ostani u petlji ekalici sve dok nije spreman podatak iz reg. DO poalji na izlazna vrata umanji za 1 stanje brojila granaj na PETLJA sve dok brojilo ne dostigne vrijednost 0, odnosno dok se ne prenese cijeli blok podataka

U programskoj petlji ekalici: EKAJ MOVE. B (A3), D2 ; dohvati status iz statusnog registra i smjesti ga u reg. D2 AND.B # MASKA, D2 ; utvrdi da li je ulazno-izlazni upravlja spreman BEQ EKAJ ; nije, ostani u petlji ekalici sve dok nije spreman ispituje se najmanje znaajni bit statusnog registra ulazno-izlaznog upravljaa koji se automatski postavlja u 1 kada je ulazno-izlazni upravlja spreman, i to na sljedei nain: MASKA ima ulogu tzv. maske i ima vrijednost 1, odnosno binarno 00000001. Rezultat logike I operacije (AND.B) izmeu sadraja registra D2 (u kojem je upisan trenutni status upravljaa, odnosno periferijske jedinice) i maske MASKA bit e 1 onda kada je postavljen najmanje znaajni bit statusnog registra ulazno-izlaznog upravljaa:

MASKA (D2)
AND

0 0 0 0 0 0 0 1
X X X X X X X 1 0 0 0 0 0 0 0 1 rezultat logike I operacije.

(Opaska: u ovom primjeru pretpostavljamo da e se u statusnom registru ulazno-izlaznog upravljaa postaviti najmanje znaajni bit (bO) u 1 kada periferni ureaj signalizira da je spreman za prijenos podataka; X oznaava vrijednost 0 ili 1) Instrukcijom AND.B #MASKA, D2 postavit e se zastavica Z u 1 u statusnom registru procesora ako je rezultat logike operacije I jednak 0 (to znai da ulazno-izlazni upravlja nije spreman). Instrukcijom BEQ EKAJ ispituje se stanje zastavice Z u statusnom registru procesora i ako je ona jednaka 1 (to znai daje rezultat logike operacije I bio 0), grana se na EKAJ - upravlja nije spreman. Kada je rezultat logike operacije I jednak 1, odnosno zastavica Z poprimi vrijednost 0, izlazi se iz petlje ekalice i alje se podatak iz bloka u vanjski svijet preko izlaznih vrata.

406

13.

POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

13.3.2. PREKIDNI ULAZNO-IZLAZNI PRIJENOS PODATAKA


Programirani bezuvjetni ulazno-izlazni prijenos podataka ima nedostatak to se zahtij tono poznavanje vremena odziva perifernih ureaja jer se samo na taj nain moe jamfil pouzdan prijenosa podataka. U praksi su rijetke situacije u kojima se vrijeme odziva t o a J poznaje i u kojima se jami da e ono biti nepromjenjivo. Budui da pri takvom prijenosa] podataka procesor ne ispituje je ii periferni ureaj spreman za prihvat ili slanje podatak*! moe se, zbog promjene vremena odziva perifernog ureaja, dogoditi gubitak podataka.) Na primjer, procesor upisuje novi podatak u izlazni registar ulazno-izlaznog upravljaa^ da prethodni podatak iz izlaznog registra periferni ureaj nije proitao. Pouzdanost izmjene podataka izmeu procesora i perifernog ureaja rjeava programirani j uvjetni prijenos u kojem procesor prije slanja ili prijema podataka ispituje spremnost peri-' fernog ureaja. No programirani uvjetni ulazno-izlazni prijenos podataka ima nedostatakprocesor u programskoj petlji u kojoj ispituje spremnost perifernog ureaja ostaje sve ddk periferni ureaj ne postane spreman za prijem ili slanje podataka. Ako procesor izmjenjuje podatke sa sporim perifernim ureajem, onda je vrijeme provedeno u programskoj petp eka lici veliko i predstavlja izgubljeno procesorsko vrijeme. Na primjer, pretpostavimo da se programirani uvjetni prijenos koristi u prijenosu podataka sporom elektromehanikom pisau koji ima brzinu tiskanja 40 znakova u sekundi, odnosno za tiskanje jednog znaka; potrebno mu je 0.025 s ili 25000 \is. Pretpostavimo daje vrijeme jednog prolaska kroz programsku petlju ekalicu (koja se sastoji od tri instrukcije) oko 3\xs. To znai da e se petlja ekalica izvesti preko 8330 puta pri slanju svakog znaka pisau. Ako sada pretpostavimo da se raunarski sustav koristi za upravljanje industrijskim procesom koji ima vie stotina sen-! zora, mjernih instrumenata i izvrnih naprava, onda bi vremena provedena u petljama ekalicama predstavljala golemu veinu procesorskog vremena. To rasipanje procesorskog vremena ugroava i osnovnu funkciju raunarskog sustava - nadgledanje i upravljanje industrijskim procesom, odnosno izvoenje upravljakih funkcija u stvarnom vremenu.
prekinuti (tekui) program

prekidni program

SI. 13.8 Shematski prikaz prekidnog prijenosa podataka

Djelotvornije iskoritenje procesorskog vremena postie se prekidnim ulazno-izlaznim prijenosom podataka (engl. interrupt-driven l/O). U tom nainu prijenosa podataka procesor

S. RiBARI - GRAA RAUNALA

407

na zahtjev perifernog ureaja prekida izvoenje tekueg programa i prelazi na izvoenje prekinog programa kojim posluuje periferni ureaj, odnosno obavlja prijenos podataka (slika 13.8). Vanjski svijet, odnosno periferni ureaj koji je uzronik ili izvor prekida upuuje procesoru zahtjev za prekid izravno ili obino posredstvom ulazno-izlaznog upravljaa. Vrlo esto periferni ureaj ili vanjski svijet upuuju zahtjev za prekid ulazno-izlaznom upravljau posredno pomou linija za rukovanje (engl. handshaking Une; poglavlje 2.), koje povezuju ulazno-izlazni upravlja i periferni ureaj, odnosno vanjski svijet, tako da se koriste tzv. aktivnim prijelazima signala na tim linijama (u skladu s definiranim protokolom). Slika 13.9 prikazuje organizaciju prekidne strukture. Zahtjev za prekid stie procesoru jednom ili veim brojem upravljakih linija koje se nazivaju linije za zahtijevanje prekida (engl. interrupt request) ili samo prekidne linije. Obino je vie u lano-izlaznih upravljaa prikljueno na jednu prekidnu liniju koja je izvedena kao "oiano-ILI" (engl. wired-OR) pa istu prekidnu liniju dijeli vie ulazno-izlaznih upravljaa koji mogu istodobno zahtijevati prekid, odnosno aktivirati prekidnu liniju. Dakle, prekidna linija je aktivna kada je u logikom stanju "0" i to postaje kada jedan ili vie uzronika prekida postave zahtjev za prekid (IRQ-+ 0) (slika 13.9).

sabirnica podataka

adresna sabirnica

zahtjev za prekid

SI. 13.9 Organizacija prekidne strukture s jednom prekidnom linijom

Vanjski svijet, odnosno periferni ureaji "ive"svojom dinamikom i zato je zahtjev za prekid generiran asinkrono u odnosu na stanje procesora i na tijek izvoenja instrukcija tekueg programa. To znai da se aktivno stanje na prekidnoj liniji (kojim periferni ureaj zahtijeva posluivanje) moe pojaviti u bilo kojem trenutku tijekom izvoenja tekue instrukcije programa. Postupak prekinog prijenosa provodi se obino u sljedeim glavnim koracima: i) periferni ureaj ili ulazno-izlazni upravlja aktivira prekidnu liniju; ii) procesor zavrava tekuu instrukciju prije nego to e odgovoriti na zahtjev za prekid; iii) procesor neposredno nakon zavretka tekue instrukcije ispituje postoji li zahtjev za prekid i, ako postoji, utvruje razinu prekida te provjerava je li prekid maskiran.

408

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

Podmaskiranim prekidom" podrazumijevaju se okolnosti u kojima zahtjev za pre nee biti prihvaen; iv) ako procesor prihvaa prekid, on e signalom potvrde prekida obavijestiti ulazno-L zne upravljae, odnosno ulazno-izlazne ureaje o prihvaanju prekida; v) procesor se mora sada pripremiti za prijenos upravljanja s prekinutog na prekk program, i to tako da prvo pohranjuje informaciju o trenutnom stanju tekueg (sadi ] prekinutog) programa. Minimalna informacija sastoji se od sadraja statusnog
gistra procesora (engl. status register, condition code register, P5W - processor ste

word) i sadraja programskog brojila koji sadrava povratnu adresu, odnosno adre instrukcije prekinutog programa koja e se prva izvesti nakon povratka iz prel< Sadraj statusnog registra i programskog brojila naziva se minimalni kontekst (er minimal context) i obino se pohranjuje na sistemski ili upravljaki stog; (Opaska: i procesori, radi breg odgovora na zahtjev za prekid, pohranjuju minimalni konte interno u tzv."registre u sjeni") vi) procesor puni programsko brojilo sa sadrajem koji predstavlja adresu prve instr cije prekidnog programa tj. adresu prekidnog programa. Ovisno o arhitekturi pre sora i organizacije operacijskog sustava, moe postojati jedan prekidni program; svaku vrstu prekida ili prekidni program za svaki periferni ureaj, odnosno ula2 izlazni upravlja. Ako postoji samo jedan prekidni program, onda procesor utvrditi koji je od ureaja zahtijevao prekid tako da prozove potencijalne uzroni prekida i na temelju njihova stanja utvrdi uzronika prekida. Ako postoji vei prekidnih programa, onda obino procesor od uzronika prekida dobiva dodatn! informaciju na temelju koje utvruje tko je prouzrokovao prekid. Ta dodatna infof-j macija, ovisno o organizaciji prekidnog sustava, moe biti popratna sa zahtjeve za prekid ili je procesor moe dobiti izdavanjem zahtjeva upuenom uzronitaij prekida; vii) procesor zapoinje s fazom PRIBAVI i dohvaa instrukciju na koju pokazuje program-j sko brojilo, tj. prvu instrukciju prekidnog programa. Odmah je na poetku prekidnoj programa obino potrebno pohraniti dodatnu informaciju o stanju registara proce-j sora, npr. sadraj radnih registara podataka koji e se tijekom prekidnog programa! koristiti, a sadravali su podatke potrebne prekinutom programu. Obino se i ti s*-| draji registara pohranjuju na stog. U prekidnom je programu ukljuen i programs odsjeak U/l prijenosa podataka koji se sastoji od instrukcije U/l, ali i od instrukc kojim ostvaruje protokol izmjene podataka (npr. slanje naredbe ili potvrde uspjes-j nog prijenosa); viii) nakon to je prijenos podataka ostvaren, sadraji se radnih registara podataka treba-j ju obnoviti tako da se uzimaju sa stoga; ix) procesor izvodi instrukciju za povratak iz prekida kojom obnavlja sadraje statusno| registra i programskog brojila, i to tako da sa sistemskog stoga uzima minimalni kon-j tekst i rasporeuje ga u statusni registar i programsko brojilo. Rezultat ovih aktivnosfij je da e se u sljedeoj fazi PRIBAVI dohvatiti instrukcija prekinutog programa, i upravo ona koja slijedi instrukciji koja je bila izvrena neposredno prije prihvaanji| prekida. Slika 13.10 prikazuje dijagram toka prekidnog U/l prijenosa podataka. Koraci i) - v) pocfr-l ani su sklopovljem, dok su koraci vi) - ix) podrani programski. Prekidni se program j o i | naziva i prekidna rutina ili program za rukovanje prekidom (engl. interrupt handler).

S.RIBARI- GRAA RAUNALA

409 I

SI. 13.10 Dijagram toka prekidnog U/l prijenosa podataka

Navedeni su koraci tako openiti da zahtijevaju dodatna objanjenja. Tako se, na primjer, u koraku iii) spominje razina prekida i maskiranje prekida. Suvremeni procesori imaju vie razina prekida koje su u meusobnom hijerarhijskom odnosu: prekidni program nie razine prioriteta moe biti prekinut zahtjevom za prekid vie razine prioriteta. Na taj se nain omoguuje gnijeenje prekida. No ako se tijekom izvoenja prekidnog programa pojavi novi zahtjev za prekid nie ili iste razine prioriteta kao onaj koji se upravo posluuje, taj novi
zahtjev nee biti prihvaen. Kaemo da je prekid ili zahtjev za prekid maskiran.

410

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

Primjer 13.4. Procesor MC 68000 ima sedam razina prekida. Razina prekidnog zahtjeva odreena je kombinacijom logikih stanja na trima prekidnim linijama IPLO, IPL1 i IPL2. Kada su sve tri prekidne linije neaktivne, tj. u stanju logike jedinice, onda nema zahtjeva za prekid. Zahtjev razine 1 (IPLO = 0, IPL1 = 1, IPL2 = 1) najnie je razine prioriteta, a zahtjev razine 7 (IPLO = 0, IPL 1 = 0, IPL2 = 0) navie je razine prioriteta i predstavlja tzv. nemaskirajui prekid. Pod tim razumijevamo zahtjev za prekid od kojeg se procesor ne moe obraniti tako da e on biti uvijek prihvaen. Razina prekidnog zahtjeva (od 1 do 7) odreuje se tako da aktivno stanje na prekidnoj liniji IPLO doprinosi ukupnoj razini prekida teinom 2C, aktivno stanje na prekidnoj liniji IPL1 teinom 21 i konano, aktivno stanje na IPL2 doprinosi 22. Tako, na primjer, ako je IPL2 = 0 (aktivno stanje), /PL 7=0 (aktivno stanje) i IPLO = 1 (neaktivno stanje), onda je razina zahtjeva za prekid jednaka 1 x 22 + 1 x 21 + 0 x 2 = 6. Razina prekida kojeg e procesor prihvatiti odreena je stanjem prekid ni h zastavica 10, 11 i 12 koje se nalaze u statusnom registru procesora. I ovdje zastavica 12 ima teinu 2:, II ima teinu 21 i 10 ima teinu 2. Stanje tih zastavica odreuje takoer i tekui prioritet prekida. Prekidi su onemogueni (maskirani) za sve razine prekidnihzahtjeva koje su manje ili jednake tekuem prioritetu koji je kodiran stanjem zastavica 10,11 i 12. Tablica 13.1. prikazuje stanje prekidnih zastavica i razine onemoguenih prekida. Prekidne zastavice Razine onemoguenih prekida 12 1 - 6 (001; 010; 011; 100; 101; 110) 1 - 6 (001; 010; 011; 100; 101; 110) 1-5 (001; 010; 011; 100; 101) 1-4 (001; 010; 011; 100) 1-3 (001; 010; 011) 1-2 (001; 010) 1 (001) Sve su razine prekida omoguene 1 1 1 1 0 0 0 0 11 1 1 0 0 1 1 0 0 10 f i 1 0 1 0 1 0 1 0 1

Tablica 13,1. Stanje prekidnih zastavica 12, II i 10 i razine onemoguenih prekida (MC 68000)

Sluaj kada je generiran zahtjev najvie razina prekida - prekid razine 7 (kada su prekidne linije [0 = 0, lPU = 0, JPL2 = 0) i kada su prekidne zastavice 10 = 1,11 =1 i 12 = 1 predstavlja iznimku od pravila o uvjetima prihvaanja prekida: iako je razina prekida jednaka prioritetu prekida kodiranom prekidnim zastavicama, zahtjev za prekid razine 7 bit e prihvaen. Od zahtjeva razine 7 procesor se ne moe zatititi i on je nemaskirajui prekid. Prekidi razine 1 do 6 su maskirajui prekidi. Procesor ne doputa gnijeenje prekida iste razine pa se automatski prekidne zastavice 10,11 i 12 u statusnom registru postavljaju u stanje koje odgovara razini prihvaenog prekida. Na taj se nain samo prekid vie razine od trenutnog moe ugnijezditi u prekid trenutne razine. Slika 13.11 prikazuje scenarij kada zahtjev za prekid razine 2 biva prihvaen jer je njegova razina vea od razine kodirane zastavicama 10,11 12. Prekidni program 1 se izvodi i tijekom njegova izvoenja pre-

S. RIBARI - GRAA RAUNALA

411 I

kidne su zastavice postavljene tako da kodiraju razinu prihvaenog prekida (10 = 0,11 = 1 i 12 = 0). Novi zahtjev za prekid koji je razine 3 (IPLO = 0, Wu - 0, L2 = 1) bit e prihvaen te e se u prekidni program 1 ugnijezditi prekidni program 2. Prekidne e se zastavice automatski postaviti u stanje 10 = 1,11 = 1 i 12 = 0 koje odgovara razini prihvaenog prekida - razini 3. Tijekom izvoenja prekidnog programa 2 dogodio se zahtjev za prekid iste razine (razine 3), meutim, on nee biti prihvaen.
prekinuti program prekidni program 1 prekidni program 2

nije prihvaen zahtjev za prekid prekid razine 3: fPL0 = 0 IPU = 0 IPL2 - 1 10=1 11 = 0 12 = 0 10 = 0 11 = 1 12 = 0 10=1 11 = 1 12 = 0

SI. 13.11 Primjer gnijeenja prekidnih programa. (Obratite pozornost da trei zahtjev za prekid nee biti prihvaen jer je zahtjev razine jednake razini kodiranoj prekidnim zastavicama 10,11 i 12.)

Zato se procesor titi od prekida maskirajui ga? U mnogim primjenama procesor izvodi pojedine programske odsjeke koji su kritini u smislu da se ne smiju ometati prekidom, odnosno biti prekinuti. To je, na primjer, sluaj kada se raunalo koristi za upravljanje proizvodnim procesom u kojem se zahtijevaju toni vremenski odzivi - prekid takvog programskog odsjeka i izvoenje nekog drugog prekidnog programa naruio bi eljene vremenske odnose i ak ugrozio osnovne funkcije procesa. Korak vi) takoer zahtijeva objanjenje kako procesor "zna" koji prekidni program mora izvriti i njime posluiti periferni ureaj koji je zahtijevao prekid. Dakle, kako procesor odreuje uzronika prekida i time adresu prve instrukcije prekidnog programa? Taj je problem jo sloeniji jer vie potencijalnih uzronika prekida moe istodobno zahtijevati posluivanje. Jednostavnije organizacije prekida zasnivaju se na jednoj prekidnoj liniji (engl. single-line interrupt system) na koju su prikljueni svi ulazno-izlazni upravljai - potencijalni uzronici prekida (slika 13.9). Na kraju tekue instrukcije procesor ispituje stanje na prekidnoj liniji IRQ (slika 13.9). Ako je IRQ = 0, to znai da je barem jedan od n > 1 potencijalnih uzronika prekida generirao zahtjev za prekid. Procesor u odgovoru na zahtjev za prekid grana na
unaprijed odreenu adresu jedinstvenog prekidnog programa u kojem prvo proziva poten-

cijalne uzronike prekida i ispituje je li odreeni potencijalni uzronik zaista i generirao

412

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

zahtjev za prekid. Prozivanje (engl. polling) potencijalnih uzronika temelji se na jedrrznano im dodijeljenim adresama (bilo u memorijskom, bilo u izdvojenom U/l adresneprostoru), a ispitivanjem statusnog registra ulazno-izlaznog upravljaa utvruje seje li zaista odreeni upravlja generirao zahtjev za prekid. Ako je ispitani ulazno-izlazni upravlja zaista i uzronik prekida, tada se u prekidnom programu grana na odgovarajui prograPV ski odsjeak ili potprogram za prijenos podataka kojim se posluuje uzronik prekida. _ redoslijedu prozivanja potencijalnih uzronika prekida krije se i prioritet pojedinih ulazncizlaznih upravljaa - oni s veim prioritetom bit e prije prozvani i ako su zahtijevali prekri bit e i prije poslueni. Primjer 13.5. Prikaimo jednostavan prekidni sustav procesora koji ima dvije prekidne linije IRQ i NMi Prekidna linija IRQ namijenjena je tzv. sklopovskom prekidu, a prekidna linija NMI nemaskirajuem prekidu. Ove dvije vrste prekida u meusobnom su hijerarhijskom odnosu - u sklopovski se prekid moe ugnijezditi nemaskirajui prekid koji je vee razine prioriteta. Pretpostavimo da je vei broj uiazno-izlaznih upravljaa - potencijalnih uzronika prekida prikljuen na prekidne linije IRQ i NMI Pretpostavimo, takoer, da postoji samo po jedan prekidni program za sklopovski prekid, odnosno nemaskirajui prekid. Opiimo, ukratko, prvo sklopovski prekid koji je maskirajui. Jedan ili vei broj ulaznoizlazni h upravljaa aktiviranjem prekidne linije IRQ (IRQ 0) generira zahtjev za prekid. Neposredno nakon zavretka tekue instrukcije procesor ispituje stanje IRQ linije i ako je ona aktivna (IRQ = 0), procesor provjerava je li prekidna zastavica I u statusnom registru procesora postavljena (1 = 1). Ako je ona postavljena, zahtjev za prekid je maskiran i procesor e ga zanemariti te nastaviti izvoenje tekueg programa. Ako je prekidna zastavica obrisana (I = 0), zahtjev za prekid bit e prihvaen i procesor signalom potvrde prekida (INTACK 0) obavjetava da je zahtjev za prekid prihvaen. U tom sluaju procesor obavlja kuanske poslove - pohranjuje (minimalni) kontekst na stog. (Opaska: ako je rije o procesoru akumulatorsko orijentirane arhitekture, obino se uz minimalni kontekst pohranjuju i registri podataka - akumulatori.) Pored toga, postavlja prekidnu zastavicu I u 1 te se na taj nain titi od gnijeenja daljnjih sklopovskih prekida. U okviru kuanskih poslova procesor mora dohvatiti adresu prve instrukcije prekidnog programa. Ona se nalazi na za to unaprijed odreenim memorijskim lokacijama. Te su memorijske lokacije rezervirane za tu namjenu i obino se nalaze ili na poetku, ili na kraju adresirljivog memorijskog prostora. Pretpostavimo da su to memorijske lokacije s adresama FFF8 i FFF9 ako je ukupni adresirljivi memorijski prostor od 0000 - FFFF (heksadekadno). Na memorijskoj lokaciji FFF8 pohranjen je znaajniji bajt adrese prve instrukcije prekidnog programa, a na FFF9 manje znaajan bajt 16-bitne adrese. Dohvaeni sadraji tih memorijskih lokacija smjetaju se u programsko brojilo i u sljedeoj e se fazi PRIBAVI dohvatiti prva instrukcija prekidnog programa. Budui da je jedan prekidni program namijenjen sklopovskom prekidu, on mora sadravati programski odsjeak kojim proziva potencijalne uzronike prekida i identificira uzronika. Vano je naglasiti da kuanski poslovi takoer troe vrijeme - za pohranu konteksta i dohvat poetne adrese prekidnog programa potrebno je za jednostavni 8-bitni procesor od 12 do 14 perioda signala vremenskog voenja. Tijek dogaaja za nemaskirajui prekid slian je onom za sklopovski prekid. U sluaju nemaskirajueg prekida ne provjerava se stanje prekidne zastavice I u statusnom registru procesora, ve se prekid prihvaa, generira se signal potvrde prekida (NMIACK->0) te se

b. n l b A K I L - v j n A t J A K A L U N A L A

kuanskim poslovima pohranjuje kontekst na stog i automatski se postavlja prekidna zastavica I u 1. Na taj se nain procesor titi od prekida vrste IRQ. Nadalje, procesor dohvaa sadraje memorijskih lokacija ije su adrese FFFC i FFFD na kojima se nalazi adresa prve instrukcije nemaskirajueg prekidnog programa. Slino kao i kod prekidnog programa za sklopovski prekid, nemaskirajui prekidni program sadrava programski odsjeak kojim proziva ulazno-izlazne upravljae prikljuene na NMI prekidnu liniju. Pretpostavimo da je poetna adresa sklopovskog prekidnog programa 400A, a poetna adresa nemaskirajueg prekidnog programa 600C, tada u fazi inicijalizacije raunarskog sustava moramo pripremiti sadraje sljedeih memorijskih lokacija: (FFF8) = 40 i (FFF9) = OA te (FFFC) = 60 i (FFFD) = 0C. Obino su adrese poetne adrese prekidnih programa na spomenutim memorijskim lokacijama pohranjene u ispisnim memorijama ROM ili PROM (poglavlje 8.) pa sadraji ostaju sauvani i nakon prekida napajanja. Organizacija prekidne strukture moe se temeljiti i na veem broju prekidnih linija, i to tako da svaki potencijalni uzronik prekida ima svoju "privatnu" liniju za zahtijevanje prekida i "privatnu" liniju za potvrdu prekida (slika 13.12).
INTACKn-1

SI. 13.12 Prekidni sustav s veim brojem linija za zahtijevanje prekida i potvrde prekida

Prekidne linije mogu, u tom sluaju, imati i razliite prioritetne razine, na primjer IRQn-1 ima najvei prioritet, dok IRQ0 ima najmanji prioritet. Ujedno, zahvaljujui privatnim prekidnim linijama procesor izravno zna tko je uzronik prekida - nije potrebno prozivanje ulazno-izlaznih upravljaa. Ova shema, meutim, ima jedan nedostatak - broj prikljuenih ulazno-izlaznih upravljaa ogranien je brojem raspoloivih parova signalnih linija IRQ i INTACK. U praksi je vrlo est sluaj daje broj ulazno-izlaznih upravljaa prikljuenih na prekidne linije puno vei od broja raspoloivih parova IRQ - INTACK. I u ovoj prekidnoj shemi, kao i u onoj s jednom prekidnom linijom, procesor u okviru kuanskih poslova mora dohvatiti iz memorije poetnu adresu prekidnog programa. Posebna prilagodljiva i djelotvorna prekidna shema jest vektorski prekid (engl. vectored interrupt) u kojoj se uzronik prekida izravno identificira jednoznanim kodom koji ujedno slui za brzo odreivanje poetne adrese prekidnog programa. Vrlo se esto u literaturi poetna adresa prekidnog programa naziva i prekidni vektor (engl. interrupt vector). Svakom od ulazno-izlaznih upravljaa, prikljuenih na prekidnu liniju, jednoznano je pridruen n-bitni kod koji ima ulogu poput jedinstvenog matinog broja graana. Pretpostavimo da je to 8-bitni kod, nazovimo ga vektorski broj, tako da njime moemo jednoznano oznaiti 28 = 256 ulazno-izlaznih upravljaa. Slika 13.13 prikazuje shemu

414

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

vektorskog prekidnog sustava koji je prilagoen organizaciji prekidnog sustava s vekr brojem prekidnih linija i linija potvrde prekida.

SI. 13.13 Vektorski prekidni sustav s veim brojem prekidnih linija i linija potvrde prekida

Svakom od ulazno-izlaznih upravljaa, odnosno perifernih ureaja, dodijeljen je jednoznani vektorski broj koji e ulazno-izlazni upravlja postaviti na sabirnicu podataka nakoe to primi signal potvrde prekida. Procesor e tijekom kuanskih poslova unijeti sa sabirnice podataka vektorski broj i interno ga pohraniti. Nakon to procesor pohrani minimalni kontekst na stog, procesor e interno pohranjeni vektorski broj upotrijebiti za generiranje poetne adrese memorijskih lokacija na kojima je pohranjen prekidni vektor tj. adresa pr\ instrukcije prekidnog programa. Obino je za pohranu prekidnih vektora rezerviran cfic memorijskog prostora s najniim adresama zapoevi od adrese 00000000 (heksadekaono) tako da se vrlo jednostavno odreuje, ovisno vektorskom broju, adresa prekidnog vektora. Na primjer, ako je programsko brojilo duljine 4 bajta, onda se adresa memonske lokacije na kojoj se nalazi prekidni vektor dobiva kao 4 x v, gdje je v vektorski broji Podsjetimo se da mnoenje sa 4 odgovara brzoj operaciji posmaka ulijevo za dva mjesta. Primjer 13.6. Pretpostavimo da je ulazno-izlaznom upravljau n - 1 (slika 13.13) dodijeljen 8-bitni vektorski broj v = 00001010 (dekadno 10), a da njegov prekidni program zapoinje na adresi 00B10000. Pretpostavimo daje upravo on generirao zahtjev za prekid (IRQn-1 0) te da je procesor prihvatio taj zahtjev i potvrdio prekid aktiviranjem njegove privat- ; ne signalne linije potvrde prekida (INTACKn-1). Ulazno-izlazni upravlja - 1 e nakon to primi signal potvrde prekida na sabirnicu podataka postaviti 8-bitni vektorski broj 00001010. Procesor e interno pohraniti taj vektorski broj, pohraniti minimalni kontekst na stog te odrediti adresu memorijske lokacije s koje treba dohvatiti 32-bitni prekidni vektor na sljedei nain:
b7 b0 ;

8-bitni vektorski broj:

0 0 0 0 1 0 10

S. RIBARI - GRAA RAUNALA

415 I

b 9

vektorski broj posmaknut ulijevo za dva mjesta: 0 0 0 0 1 0 1 0 0 0 oblikuje se 32-bitna adresa tako da se posmaknutom vektorskom broju na pozicijama b10 - b31 pridrue 0:
b

3i

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

01

000

Poetna adresa memorijskih lokacija gdje se nalazi prekidni vektor je 00000028 (heksadekadno). Ako je adresna zrnatost memorije bajtna, onda e se 32-bitni prekidni vektor nalaziti na memorijskim lokacijama od 00000028 do 0000002B:

(00000028) = 00
(00000029) = BI (0000002A) = 00 (0000002B) = 00. Opiimo saeto korake tijekom vektorskog prekida koje moemo podijeliti na one koji su sklopovski i one koji su podrani programski. Sklopovski koraci: i) ulazno-izlazni upravlja aktivira prekidnu liniju; ii) procesor nakon zavretka tekue instrukcije, ako prekid nije maskiran, generira signal potvrde prekida; iii) kada ulazno-izlazni upravlja, koji je uzronik prekida, primi signal potvrde prekida, postavlja svoj vektorski broj na sabirnicu podataka; iv) procesor unosi sa sabirnice podataka vektorski broj i interno ga pohranjuje; v) procesor pohranjuje minimalni kontekst na stog; vi) na temelju vektorskog broja procesor odreuje poetnu adresu memorijskih lokacija na kojima se nalazi pohranjen prekidni vektor, tj. poetna adresa prekidnog programa. Programsko brojilo puni se prekidnim vektorom i ono pokazuje na prvu instrukciju prekidnog programa. Programski koraci: i) prekidnim se programom prvo pohranjuju sadraji registara koje e prekidni program koristiti. Na taj je nain omoguena obnova njihovih sadraja neposredno prije vraanja iz prekida; ii) ako je vie perifernih ureaja prikljueno na jedan ulazno-izlazni upravlja, potrebno je ispitati sadraje pojedinih statusnih registara koji odgovaraju svakom od ureaja da bi se odredio odgovarajui usluni (pot)program; iii) obavlja se prijenos podataka; iv) obnavljaju se sadraji registara koji su bili pohranjeni u koraku i); v) izvodi se instrukcija povratka iz prekida; Ve smo spomenuli da u praksi obino broj ulazno-izlaznih upravljaa premauje broj raspoloih parova "privatnih" linija IRQ - INTACK. U tom se sluaju koristi shema ulanavanja, slina onoj za sabirniku arbitrau (poglavlje 12.), u kojoj se ulazno-izlazni upravljai ulanavaju signalnom linijom potvrde prekida INTACK (slika 13.14). U takvoj organizaciji ulazno-izlazni upravlja koji je najblii procesoru ima najvei prioritet jer prvi prima signal INTACK =0 i ako je zahtijevao prekid ne prosljeuje ga dalje drugim upravljaima u lancu.

416

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

Ulazno-izlazni upravlja koji je generirao zahtjev za prekid i koji je prvi u lancu primio signal potvrde prekida postavlja svoj vektorski broj na sabirnicu podataka. Ovaj"sklopovskT nain prozivanja je bri negoli je to programsko pozivanje ulazno-izlaznih upravljaa. No programsko prozivanje omoguuje jednostavniju promjenu prioriteta upravljaa - samo promjenom redoslijeda prozivanja u prekidnom programu.

SI. 13.14 Organizacija vektorskog prekidnog sustava s jednom prekidnom linijom i ulanavanjem

Vektorski prekidni sustav moe imati organizaciju slinu onoj sabirnikoj arbitrai (poglavlje 12), stoga se koristi sustav s veim brojem prekidnih linija i linija potvrde prekida s tim da su ulazno-izlazni upravljai ulanani na svakoj od linija potvrde prekida. Slika 13.15 prikazuje takav vektorski prekidni sustav koji ima tri prekidne linije (IRQ0 - IRQ2) koje su organizirane tako da IRQ2 ima najvei prioritet te tri linije potvrde prekida (INTACKO - INTACK2 kojima su ulazno-izlazni upravljai ulanani.

INTACK2

Si. 13.15 Prekidni sustav s tri linije za zahtijevanje prekida i potvrde prekida s ulanavanjem na svakoj od razina

S. RIBARI - GRAA RAUNALA

417 I

Primjer 13.7. Pretpostavimo da su u vektorskom prekidnom sustavu prikazanom na slici 13.15 istodobno generirali zahtjev za prekid ulazno-izlazni upravlja 1 koji je prikljuen na prekidnu liniju IRQO te ulazno-izlazni upravljai /r+/+1 i k+l+2 prikljueni na IRQ2. U tom e sluaju upravlja 1 biti onaj koji e primiti signal potvrde prekida INTACK2 i on e postaviti svoj vektorski broj na sabirnicu podataka. Naime, procesor e zanemariti zahtjev za prekid nie razine prioriteta IRQO te aktivirati signal potvrde prekida INTACK2. Ulazno-izlazni upravlja /c+/+1 prvi e primiti taj signal. Budui daje on jedan od uzronika prekida, signal potvrde prekida nee proslijediti dalje u lancu. Upravljaki sklop k+l+1 bit e posluen u prekidu.

13.4. ANALIZA SLUAJA-VEKTORSKI PREKID PROCESORA MC 68000


Za raunarske sustave na bazi procesora MC 680x0, tvrtka Motorola koristi pojam iznimke (engl. exception) kojim opisuju posebne okolnosti koje mogu nastupiti u raunarskom sustavu i koje imaju za posljedicu prekid normalnog izvoenja programa i prijenos upravljanja na poseban program za obradu iznimke. Iznimke se mogu podijeliti na one koje imaju vanjske uzroke i one koje izazvane unutarnjim stanjem procesora. Iznimke izazvane dogaajima izvan procesora jesu: i) sabirnika pogreka (engl. bus error), ii) reset (ponovno uputanje u rad), iii) prekid. Iznimke kojima su izvori stanja procesora jesu: i) ilegalne instrukcije - instrukcije koje imaju operacijski kod koji nije definiran za procesor MC 680x0, ii) neugraene instrukcije - instrukcije kojima operacijski kod zapoinje 1010 ili 1111, iii) pokuaj izvoenja privilegirane instrukcije u korisnikom nainu rada, iv) praenje - zastavica T (Trace) postavljena u 1, v) adresna pogreka - pokuaj pristupa rijei na neparnoj adresi, vi) dijeljenje nulom, vii) instrukcije TRAP, TRAPV,CHK. Zajedniko svim vrstama iznimaka je to da se one obrauju u nadglednom nainu rada procesora. Prekid za procesor MC 680x0 je vanjski generiran zahtjev za obradu iznimke. U Primjeru 13.4. prikazali smo na koji nain ulazno-izlazni upravljai, odnosno periferni ureaji generiraju zahtjev za prekid i pod kojim se uvjetima prihvaa prekid. Ako je razina zahtjeva za prekid vea od razine postavljene prekidnim zastavicama 10,11 i 12 u statusnom registru procesora, nakon zavretka tekue instrukcije prekid e biti obraen u sljedeim koracima: i) sadraj statusnog registra pohranjuje se interno u procesoru; ii) zastavica S u statusnom registru postavlja se u 1 - procesor prelazi u nadgledninain rada (procesor obrauje iznimku u nadglednom nainu rada!);

418

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

iii) zastavica praenja T u statusnom registru se brie (T 0) i onemoguuje se funkapd praenja, odnosno odlazak u iznimku koja je prilagoena izvoenju programa mi strukciju po instrukciju; iv) prekidne zastavice IO, 11 i 12 poprimaju vrijednost koja odgovara upravo razini pri-j hvaenog prekida odreenoj stanjima prekidnih linija IPLO, IPL1 i IPL2. Na taj se n a a n procesor titi od gnijeenja prekida nie ili jednake razine onom koji je prihvaen; v) procesor izvodi sabirniki ciklus potvrde prekida.Tijekom sabirnikog ciklusa potvrde prekida,procesorpostavljanaadresnelinijeA 1 -A 3 razinuprihvaenogprekida.Adresne linije A4 - A23 poprimaju vrijednost 1. Na taj se nain ulazno-izlazni upravljai obavje-i tavaju o tome koja je razina prekida prihvaena. Procesor postavlja izlazne linije funfcH cijskog koda FCO 1, FC1 11FC2 1. Njihovo se stanje moe upotrijebiti za sinteza; signala potvrde prekida: FCO A FC1 A FC2, gdje je A , podsjetimo se, logiki operator!.; Ulazno-izlazni upravlja, koji je generirao zahtjev za prekid prihvaene razine i p r i m signal potvrde prekida, odgovara procesoru tako da smjeta 8-bitni vektorski broj (# vektor; slika 13.16) na linije sabirnice podataka DO - D7. Ulazno-izlazni upravlja koji je postavio vektorski broj aktivira signal DTACK kojim obavjetava procesor da je vektorski broj postavljen na sabirnicu podataka (u skladu s asinkronim protokolom na sabirnici). Procesor interno pohranjuje pribavljeni vektorski broj; vi) sadraj programskog brojila PC (4 bajta) smjeta se u nadgledni stog, a sadraj nadgled nog kazalo stoga SSP umanjuje se za etiri; vii) sadraj interno pohranjenog statusnog registra SR (2 bajta) (korak i)) smjeta se nadgledni stog, pri emu se sadraj nadglednog kazala stoga umanjuje za dva (koraci vi) i vii) predstavljaju aktivnosti pohranjivanja minimalnog konteksta); vi i i) na temelju vektorskog broja i tablice vektora iznimaka procesor odreuje novi sacfcaj programskog brojila PC - programsko se brojilo PC puni sa etiri bajta pribavljenih iz odgovarajuih memorijskih lokacija nulte stranice u kojoj je pohranjena tablica vektora iznimaka. Programsko brojilo PC pokazuje na prvu instrukciju pre kid nog programa. Slika 13.16 prikazuje vremenski dijagram stanja na sabirnicama za sabirniki ciklus potvrde prekida (koraci i) - v)), i to do poetka pohranjivanja minimalnog konteksta na stog. Korak viii) zahtijeva dodatna objanjenja. Vektori iznimaka, to znai i prekidni vektoa pohranjeni su u dijelu radne memorije raunala koji se naziva tablica vektora iznimaka. Tablica sadrava 256 vektora iznimaka koji su oznaeni brojevima od 0 do 255 i smjetena je u adresnom prostoru od 000000 do 0003FF.To znai da tablica zauzima prva 1024 bajtat odnosno 512 16-bitnih rijei memorije, koji predstavljaju tzv. nultu stranicu memorije. Svi se vektori iznimaka, osim onog koji odgovara vektorskom broju nula 0, nalaze u memorijskom prostoru koji se naziva nadgledna memorija podataka (oznaka ND; tablica 13.2.) i koji je odreen stanjem linija funkcijskog koda FCO - FC2: FCO = 1, FC1 = 0 i FC2 = 1. Vektor iznimke koji odgovara vektorskom broju 0 jest onaj namijenjen sklopovskom reetu (engL hardware reset) tj. sklopovskom upuivanju u rad i on se nalazi u memorijskom prostoru koji se naziva nadgledna programska memorija (oznaka NP; tablica 13.2.) (odreena stanjem linija funkcijskog koda FCO = 0, FC1 = 1 i FC2 = 1). Svi se vektori iznimaka, osim onog koji odgovara sklopovskom reetu, sastoje od dviju rijei, odnosno 4 bajta. Za razliku od ostalih vektora iznimaka, vektor 0 ima, osim nove - poetne vrijednosti programskog brojila (PC), dvije dodatne rijei koje odreuju poetnu vrijednost nadglednog kazala stoga (SSP) (tablica 13.2).

S. RIBARI - GRAA RAUNALA

419 I

zavretak tekue

sabirniki ciklus

pohranjivanje reg.

SI. 13.16 Vremenski dijagram stanja na sabirnicama tijekom sabirnikog ciklusa potvrde prekida (koraci i) - v)).

Slika 13.17 prikazuje format vektora iznimke, odnosno prekidnog vektora. Rije 0 (duljine dva bajta) koja je smjetena tako da su dva najmanje znaajna bita njezine adrese A0 = 0 i A ^ 0 predstavlja 16 znaajnijih bitova adrese programa za obradu iznimke, odnosno prekidnog programa. Rije 1 (smjetena tako da je A0 = 0 i A1 = 1) predstavlja 16 manje znaajnih bitova adrese.

420

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

Vektorski broj 0
-

Adresa vektora iznimke (heksadekadno) 000 004 008 O O C 010 014 018 01C 020 024 028 02C korisnikim vanjskim sklopovima nije doputena uporaba vektorskog broja 12-23 03C 04C 05 F 060 064 068 06C 070 074 078 07C 080 0BF OCO 0FF 100 3FF

Vrsta memorijskog prostora NP NP ND ND ND ND ND ND ND ND ND ND

Namjena / iznimka RESET: poetna vrijednost SSP RESET: poetna vrijednost PC greka na sabirnici (Bus Error) adresna greka (Address Error) ilegalna instrukcija dijeljenje s nulom instrukcija CHK instrukcija TRAPV povreda privilegiranosti praenje (Trae) neugraena instrukcija 1010 (Line A Emulator) neugraena instrukcija 1111 (Line F Emulator)

2 3 4 5 6 7 8 9 10 11

12-14

ned odijeljen i prostor - rezervirano

15 16-23 24 25 26 27 28 29 30 31 32-47 48-63

ND

neinicijalizirani prekidni vektor nedodijeljeni prostor - rezervirano

ND ND ND ND ND ND ND ND ND
-

izjalovljeni prekid prekidni autovektor -razinal prekidni autovektor - razina 2 prekidni autovektor - razina 3 prekidni autovektor - razina 4 prekidni autovektor - razina 5 prekidni autovektor - razina 6 prekidni autovektor - razina 7 instrukcija TRAP n
-

nedodijeljeni prostor - rezervirano

64-255

ND

korisniki prekidni vektori

NP - nadgledna programska memorija ND - nadgledna memorija podataka Tablica 13.2. Tablica vektora iznimaka

S. RIBARI - GRAA RAUNALA

421 I

b!5

bO

rije 0 rije 1 SI. 13.17 Format vektora iznimke

znaajnijih 16 bitova vektora iznimke manje znaajnih 16 bitova vektora iznimke

A0=0 A1 =0 A0=0 A1=1

Vektor iznimke za reset, kao to smo ve spomenuli sastoji se od poetne vrijednosti nadglednog kazala stoga SP i poetne vrijednosti programskog brojila PC, nalazi se pohranjen u tablici iznimaka od adrese 000000 do 000007. Tijekom kuanskih poslova vezanih za iznimku reset prvo se puni 32-bitno nadgledno kazalo stoga SSP s vektorom iz memorijskih lokacija s adresa 000000, 000001, 000002 i 000003, a zatim programsko brojilo PC s memorijskih lokacija 000004,000005,000006 i 000007 (sve heksadekadno). Ovim potonjim odreena je adresa prve instrukcije programa kojim se posluuje iznimka reset (programska rutina reset).

(periferni (periferni ureaj 0) ureaj 1) vektorski broj 64 vektorski broj 65 Si. 13.18 Prekidno sklopovsko suelje

(periferni ureaj 191) vektorski broj 255

Prekidni su vektori pohranjeni u tablici iznimaka od adrese 000100 do 0003FF (heksadekadno). Njima odgovaraju vektorski brojevi od 64 do 255 (dekadno).To znai da procesor MC 68000 doputa (255 - 64 + 1) = 192 vektorska broja koje mogu generirati ulazno-izlazni upravljai, odnosno periferni ureaji. Slika 13.18 prikazuje prekidno sklopovsko suelje

422

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

koje podrava 192 sklopovska prekida. Kako procesor oblikuje 24-bitnu adresu na temeft koje dohvaa iz tablice vektora iznimaka prekidni vektor, odnosno adresu prve instrukeje prekidnog programa? Pretpostavimo daje ulazno-izlazni upravlja ili periferni ureda zahtijevao prekid (INTO 0) i da je upravo njemu potvren zahtjev za prekid. To znai cka e tijekom sabirnikog ciklusa potvrde prekida on postaviti svoj vektorski broj, tj. 64 (aekadno) na manje znaajne linije DO - D7 16-bitne sabirnice podataka DO - Dl 5. Procesor e pomou tog vektorskog broja oblikovati 24-bitnu adresu koja ga upuuje u tablicu iznimaka iz koje e dohvatiti prekidni vektor - adresu prve instrukcije prekidnog programa za ulazno-izlazni upravlja, odnosno periferni ureaj 0, i to na sljedei nain (slika 13.19 i) vektorski se broj mnoi sa etiri to znai da se posmie za dva mjesta ulijevo; ii) svi znaajniji bitovi adrese (od A10 do A23) poprimaju vrijednost 0.
vektorski broj 64 posmaknut ulijevo za 2 mjesta

1r

f 1r
0

1 0 0 0 0 0 A2 0 A1

0 A23

0 ...

SI. 13.19 Oblikovanje adrese prekidnog vektora za vektorski broj 64 (dekadno)

24-bitna adresa prekidnog vektora je 000100 (heksadekadno) (slika 13.19). Pretpostavimo da se prekidni program koji posluuje periferni ureaj 0 nalazi na adresi 004600 (heksadekadno), tada su sadraji memorijskih lokacija s adresama 000100,000101,000102 i 000103 u tablici vektora iznimaka sljedei: (000100) = 00 (000101) = 00 (000102) = 46 (000103) = 00. Primjer 13.8. Pretpostavimo da periferni ureaj 0 (slika 13.18) generiranjem zahtjeva za prekid INTO 0. koji je razine 1 tako da su IPL0 = 0, IPL1 = 1, IPL2 = 1, zahtijeva prijenos 8-bitnih podataka iz memorijskog prostora koji se sastoji od 512 bajtova, i to tako da svaki put kada je ureaj spreman za prihvat jednog 8-bitnog podatka generira zahtjev za prekid. Blok podataka, koji ima ime BUFFER i iz kojeg se prenose 8-bitni podaci nalazi se na poetnoj adresi 3000 (heksadekadno). Prekidnim programom procesor alje 8-bitni podatak u registar podataka ulazno-izlaznog upravljaa. Adresa izlaznog registra podataka je 8000 (heksadekadno). Prikaimo kako izgleda glavni (prekinuti) program i prekidni program. Glavni program neka ima poetnu adresu 4000 (heksadekadno), a prekidni program neka zapoinje na adresi 4600 (heksadekadno). Glavni program izgleda ovako: GL_PROG INT_PROG INT_MASK EQU $4000 EQU $4 600 EQU $2000 ; poetna adresa glavnog programa ; poetna adresa prekidnog programa ; nadgledni nain/prekidi razine 1 ;-omogueni
:

S. RIBARI - GRAA RAUNALA

423 I

OUTREG DATA BUFFER PONTER

EQU $8000 EQU $3000 ORG DATA DS.B 512 DS.L 1

; adresa izlaznog registra podataka

; blok podataka veliine 512 bajtova ; nalazi se na adresi 3000 ; kazaljka na blok podataka BUFFER

; poetak glavnog programa ORG GL_PROG MOVE.L #BUFFER, POINTER ; inicijalizirana vrijednost kazaljke MOVE #INT MASK, SR ; S = 1, omogui prekid razine 1 - 6

; instrukcije glavnog programa

RTS
Prekidni program:

ORG INT_PROG . MOVE.L AO, -(SP) MOVE.L POINTER, A0 MOVE.B (AO)+, OUTREG
MOVE, MOVE, RTE

; ; ; ;

poetak prekidnog programa pohrani sadraj registra A0 na stog u registar A0 smjesti kazaljku na blok podataka

AO, POINTER (SP)+, A0

; 8-bitni podatak iz bloka poalji u ; izlazni registar ; pohrani tekuu vrijednost kazaljke ; obnovi sadraj registra A0 ; vrati se iz iznimke (prekida)

Ako periferni ureaj 0 ima vektorski broj 64 (dekadno), tada je u nultoj stranici memorije na memorijskim lokacijama 000100,000101,000102 i 000103 potrebno prethodno upisati adresu prekidnog programa: (000100) = 00, (000101) = 00, (000102) = 46 i (000103)
= 00.

Opiimo prethodna dva programa. Prve dvije EQU pseudo naredbe u zbirnom jeziku definiraju poetne adrese glavnog programa (4000) i prekidnog programa (4600). Trea EQU pseudo naredba odreuje vrijednost 16-bitne prekidne maske (2000) koja e se upisati u statusni registar procesora SR. etvrtom EQU pseudo naredbom definirana je adresa izlaznog registra OUTREG. Petom EQU pseudo naredbom odredili smo poetnu adresu bloka podataka BUFFER, a DS.B 512 (Define Store) pseudo naredbom namijenili smo 512 bajtova memorije bloku BUFFER. Naredbom DS. L 1 rezervirali smo jednu 32-bitnu rije za pohranu kazaljke POINTER koja pokazuje na tekui bajt bloka podataka BUFFER. Instrukcijom MOVE. L #BUFFER, POINTER, u glavnom smo programu, definirali poetnu vrijednost kazaljke POINTER (ona se nalazi pohranjena na adresi 3200 (heksadekadno)) koja pokazuje na prvi bajt u bloku podataka BUFFER. Instrukcijom MOVE #INT_MASK, SR u statusnom registru SR obrisali smo prekidne zastavice 10,11 i 12 te time omoguili prekid razine 1, ali je i dalje procesor ostao u nadglednom nainu rada (zastavica S =1). Slika 13.20 prikazuje sadraj 16-bitnog statusnog registra SR nakon upisa 2000 (heksadekadno).

424

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

Nakon instrukcije MOVE #INT_MASK, SR slijede instrukcije glavnog programa.Tijekc njihova se izvoenja moe dogoditi prekid. Glavi program moe zavriti instrukcijom RT51 (vrati se pod okrilje operacijskog sustava iz potprograma) ili instrukcijom STOP # <dat3> koja 16-bitni podatak <data> pohranjuje u statusni registar SR i zaustavlja s izvoenje] instrukcija (procesor ostaje u tom stanju dok se ne dogodi prekid odreene razine ili reseOJ
nadgledni bajt statusnog registra korisniki bajt statusnog registra

bi 5

0 0 1 0 0 0 0 olo 0 0 0 0 0 0 0
J

b8 b7

bO

zastavice:

2 'i

'o

X N

V C

SI. 13.20 Sadraj SR registra: zastavica S =1, prekidne zastavice IO, 11 i 12 su 0 (procesor je u nadglednom nainu rada, omoguen je prekid razine 1)

Prekidni program zapoinje instrukcijom MOVE . L A O , - (S P ) kojom se 32-bitni sadraj adresnog registra AO pohranjuje na stog. Na taj se nain uva sadraj registra AO koji je bio tijekom izvoenja tekueg (prekinutog) programa kako bi se neposredno prije povratka iz prekida ponovo obnovio. To je potrebno jer e prekidni program koristiti registar AO i naravno, "poruiti" njegov "stari" sadraj. Instrukcijom MOVE. L POINTER, AO trenutna se vrijednost 32-bitne kazaljke (POINTER) smjeta u adresni registar AO. Instrukcijo MOVE. B (AO) +, OUTREG podatak (bajt) na koji pokazuje trenutna vrijednost kazaljkr alje se u izlazni registar OUTREG. Osim toga, budui da instrukcija koristi indirektni posti nkrementni nain adresiranja, sadraj se adresnog registra AO automatski poveava za jedan. Ova instrukcija ima funkciju izlazne (output) instrukcije. Instrukcijom MOVE. L AC, POINTER priprema se obnovljena vrijednost kazaljke za sljedei prijenos podatka. Sadraj registra AO obnavlja se instrukcijom MOVE.L (SP) + , AO na vrijednosti koje je imao u prekinutom programu neposredno prije prekida. Instrukcija RTE (Return from Exception) vraa upravljanje na prekinuti program tako da se uzima minimalni kontekst (16-bitni sadraj registra SR, 32- bitni sadraj registra PC) s vrha sistemskog (nadglednogj stoga i smjeta u SR, odnosno PC. (Opaska: u ovom jednostavnom primjeru pretpostav smo da periferni ureaj 0 ima programirljivo sklopovsko brojilo koje "broji" generirane zahtjeve za prekid tako da se ne prekorai broj od 512 prenesenih podataka.) Spomenuli smo daje prekid samo jedna od brojnih iznimaka koje se mogu dogoditi u raunarskom sustavu utemeljenom na procesoru MC 680x0. Svi programi za obradu iznimke imaju openito sljedei oblik:

IZNIMKA

MOVEM.L

Dp - Dq / Ar-As, - (SP)

instrukcije za obradu iznimke

MOVEM.L RTE

(SP)+, Dp - Dq / Ar-As

S.RIBARI- GRAA RAUNALA

425 I

Instrukcijom MOVEM (Move Multiple) premjetaju se sadraji izabranih registara podataka i adresnih registara na sistemski (nadgledni) stog. Na primjer, ako se u prekidnom programu ili nekoj drugoj obradi iznimke koriste registri podataka DO, D3 te adresni registri AO, A1 i A3,onda se instrukcijom MOVEM. L D0/D3/A0-A3, - (SP) //stari"sadraji pohranjuju na nadgledni stog. Naravno, instrukcijom MOVEM. L D0-D7/A0-A6, -(SP) moemosve "korisnike" registre programskog modela procesora pohraniti na nadgledni stog. Na kraju programa, neposredno prije instrukcije RTE, instrukcijom MOVEM.L (SP)+, Dp - Dq / Ar - As obnavljaju se sadraji navedenih registara.

13.5. IZRAVNI PRISTUP MEMORIJI DMA - DIRECT MEMORY ACCESS


Programirani U/l prijenos i prekidni ulazno-izlazni prijenos podataka imaju jednu zajedniku znaajku - izmjena podataka s vanjskim svijetom obavlja se programom koji izvrava procesor. Procesor izravno sudjeluje u U/l prijenosu podataka izmeu vanjskog svijeta i memorije, tovie put podataka prolazi kroz procesor. Pritom je brzina U/l prijenosa ograniena brzinom kojom procesor obavlja "kuanske poslove" i ispituje stanje i posluuje periferne ureaje izvoenjem instrukcija pri svakom prijenosu podataka, lako prekidni prijenos podataka oslobaa procesor od ekanja da ulazno-izlazni upravlja, odnosno periferni ureaj postane spreman za prijem ili slanje podataka, analize pokazuju da se za prijenos podataka od ili prema jedinici diska troi oko 25% ukupnog procesorskog vremena. Rije je o prijenosima blokova podataka veliine od nekoliko stotina bajtova pa sve do nekoliko tisua bajtova.
Ulazno-izlazni prijenos podataka izravnim pristupom memoriji DMA (Direct Memory Access)

ostvaruje se izmeu ulazno-izlaznog upravljaa, odnosno perifernog ureaja i memorije bez izravnog sudjelovanja procesora. DMA omoguuje najbri prijenos podataka izmeu vanjskog svijeta i memorije raunarskog sustava, i to tako da ne zahtijeva izravno sudjelovanje procesora. Budui da se DMA ostvaruje sklopovski bez programskog upravljanja, granice brzine prijenosa podataka postavljene su sklopovskim znaajkama sastavnicama U/l puta podataka - brzina perifernog ureaja, odnosno ulazno-izlaznog upravljaa, propusnost sabirnice i brzina memorije (vrijeme pristupa). DMA zahtijeva relativno veliku sloenost sklopovlja koje je objedinjeno u DMA upravljau (engl. DMA controller) koji se vrlo esto zbog svoje sloenosti naziva i DMA procesor (ili DMA kanal). Slika 13.21 prikazuje sklopovsku konfiguraciju kojom se ostvaruje DMA prijenos. DMA upravlja (slika 13.21) ima nekoliko registara: registar DC koji ima funkciju brojila podataka - u njemu je inicijalno upisan broj podataka/rijei (veliina bloka podataka) koje se trebaju prenijeti; registar IOA sadrava adresu podruja u memoriji koje e se koristiti tijekom DMA prijenosa; registar IOD je ulazno-izlazni registar podataka, esto umjesto jednog takvog registra DMA upravlja moe imati spremnik koji se sastoji od veeg broja registara; statusno-upravljaki registar SC koji se koristi za izmjenu upravljakih informacija i informacija o stanju DMA prijenosa. U registru SC pohranjuje se upravljaka rije koja odreuje smjer toka podataka tijekom DMA prijenosa te nain DMA prijenosa.

426

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

TransferAck

SI. 13.21 Sklopovska konfiguracija za DMA prijenos podataka

DMA i) ii) iii)

prijenos obavlja se na temelju sljedea tri glavna koraka: inicijalizacije DMA upravljaa, DMA prijenosa podataka, zavretka DMA prijenosa.

i) Tijekom inicijalizacije DMA upravljaa procesor izvrava U/l instrukcije kojima definira sadraje registara SC, DC i IOA. U statusno-upravljakom registru SC upisuje upravljaku rije kojom odreuje smjer podataka (operaciju itanja ili pisanja) te nain DMA prijenosa (prijenos kraom ciklusa ili prijenos u snopu razliitih veliina (engl. one continous burst severalshorter bursts). U registru DC upisuje broj rijei koji e se DMA prijenosom prenijeti, a u registar IOA upisuje poetnu memorijsku adresu podruja koje e biti izvor ili ponor podataka. Kada DMA upravlja podrava vei broj periferijskih ureaja, procesor treba u postupku inicijalizacije definirati DMA upravljau i adresu perifernog ureaja koji e sudjelovati u DMA prijenosu. Faza inicijalizacije provodi se programiranim U/l prijenosom pri emu se registri DMA upravljaa SC, DC i IOA promatraju kao dio memorijskog ili izdvojenog U/l adresnog prostora. Nakon inicijalizacije DMA upravljaa, procesor nastavlja s izvoenjem tekueg programa budui da je zadatak U/l prijenosa delegirao DMA upravljau.

S. RIBARI - GRAA RAUNALA

427 I

ii) Kada je DMA upravlja spreman za prijem ili slanje podataka, odnosno kada periferni ureaj prikljuen na DMA upravlja aktivira signalnu liniju TransferReq (slika 13.21), DMA upravlja aktivira signalnu liniju DMAReq i upuuje zahtjev procesoru. (Opaska: u raunarskim sustavima s vie (potencijalno) vodeih modula zahtjev za sabirnicom upuuje se sabirnikom arbitru.) Tim zahtjevom DMA upravlja trai upravljanje sabirnicom, odnosno pokazuje elju da postane vodei modul i preuzme vlasnitvo nad sabirnicom sustava. Procesor eka sljedeu ispitnu toku u kojoj moe prepustiti sabirnicu DMA upravljau. Za razliku od prekida gdje postoji samo jedna ispitna toka u kojoj je procesor provjeravao postoji li zahtjev za prekid (toka nakon zavretka tekue instrukcije), u sluaju DMA postoji vie ispitnih toaka tijekom tekue instrukcije u kojima procesor moe osloboditi sabirnicu sustava. To su toke tijekom instrukcijskog ciklusa neposredno prije nego procesor treba ponovo sabirnicu (slika 13.22). U svakoj od tih toaka moe se prekinuti (ili suspendirati) izvoenje tekue instrukcije i dodijeliti sabirnica DMA upravljau. Obratite pozornost da to nije prekid - procesor ne pohranjuje (minimalni) kontekst na stog niti grana na obradu prekida ili iznimke. Procesor u ispitnoj toki oslobaa sabirnicu i aktiviranjem signala DMAAck obavjetava o tome DMA upravlja.
- perioda procesorskog signala vremenskog voenja
4 4 -f <-

pribavljanje instrukcije

dekodiranje instrukcije

dohvat operanda

izvravanje instrukcija

pohrana rezultata

9
'

f
'

f f
' ispitne toke

L-

ispitna toka za prekid-

SI. 13.22 Ispitne toke za DMA tijekom instrukcijskog ciklusa

DMA upravlja, preuzevi upravljanje sabirnicom, prenosi podatke izravno memoriji ili od memorije. Nakon svakog prijenosa rijei obnavljaju se sadraji registra I OA i DC tako da se sadraj registra IOA poveava za jedan i sadrava adresu sljedee memorijske lokacije na koju (ili iz koje) e se sljedei podatak prenijeti, a sadraj registra DC umanjuje se za jedan. Ako nisu prenesene sve rijei, tj. ako sadraj registra DC nije jednak 0, ali periferni ureaj nije spreman za slanje ili prijam podataka, DMA upravlja oslobaa sabirnicu i vraa je procesoru deaktiviranjem signala DMAReq. Procesor odgovara deaktiviranjem signala
DMAAck.

iii) Jednom kada je DMA prijenos obavljen u potpunosti (sadraj registra DC je jednak 0), DMA upravlja oslobaa sabirnicu deaktiviranjem signala DMAReq. DMA upravlja moe, takoer, prekidom obavijestiti procesor o tome, tako da procesor moe ispitivanjem sadraja statusnog registra DMA upravljaa ili memorije utvrditi je li cijela operacija izravnog prijenosa podataka uspjeno zavrena. Nakon toga, procesor moe odgovoriti zaustavljanjem rada perifernog ureaja ili inicijalizacijom novog DMA prijenosa. Prema nainu DMA prijenosa podataka razlikujemo prijenos podataka kraom ciklusa
(engl. cycle stealing mode), prijenos podataka u snopu (engl. burst mode) i kombinacijom

428

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

krae ciklusa i prijenosa podataka u snopu. U nainu prijenosa kraom ciklusa meusobno se isprepliu operacije DMA prijenosa s normalnim sabirnikim ciklusom u kojem procesor pristupa memoriji. Budui da procesor, tijekom izvoenja instrukcija, ne treba cijelo vrijeme sabirnicu (vidi poglavlja 2. i 3.), DMA prijenos moe se obaviti kada je sabirnica slobodna - to se dogaa kada je procesor zauzet internom operacijom npr. izvoenjem neke aritmetike ili logike operacije na ve dohvaenim operandima ili generiranja adrese za sljedei sabirniki ciklus. U tim kratkim vremenskim intervalima DMA upravlja preuzima upravljanje sabirnicom i obavlja prijenos podatka. Ovaj je nain prijenosa transparentan zato to je "nevidljiv" procesoru i ne naruava njegovu performansu. Nakon to je uzastopnim kraama ciklusa prenesen predefiniran blok podataka, DMA upravlja prekidom o tome obavjetava procesor, tako da procesor moe zapoeti novi prijenos ili pak koristiti rezultate upravo obavljenog DMA prijenosa. U nainu DMA prijenos podataka u snopa DMA upravlja prisvaja sabirnicu za vrijeme prijenosa cijelog bloka podataka. Brzina DMA prijenosa tada je iznimno velika i odgovara brzini koju omoguuje najslabija karika, odnosno najsporija sastavnica u "lancu" memorija - sabirnica - periferni ureaj. Vrlo se esto moebitna sporost perifernog ureaja kompenzira tako da DMA upravlja ima spremnik veeg kapaciteta (umjesto jednog ulazno-izlaznog registra podataka IOD) pa ve spremni podaci ekaju na DMA prijenos. Na alost, tijekom DMA prijenosa u snopu procesor je zaustavljen i ne napreduje s izvoenjem instrukcija. Vrijeme u kojem je procesor zaustavljen ovisi o veliini bloka podataka koji se prenosi u snopu. Da bi se izbjeglo dugo vrijeme zaustavljanja procesora, to bi moglo prouzrokovati i osjetnu degradaciju performanse raunarskog sustava, DMA upravlja moe biti organiziran tako da razdijeli relativno veliki blok podataka na manje dijelove i onda ih prenosi u slijedu DMA prijenosa koji krae traju koristei i periode vremenskog voenja kada procesor ne treba sabirnicu. Takav nain prijenosa zapravo predstavlja kombinaciju krae ciklusa i prijenosa u snopu. lako je oito da DMA prijenos poveava performansu U/l podsustava, ova metoda ima i svoje nedostatke. Kad je DMA ukljuen u U/l podsustav raunarskog sustava, mijenjaju se odnosi izmeu procesora i memorijskog sustava. Bez DMA, svi su pristupi memorijskom sustavu ostvareni procesorom izravno ili adresnom translacijom u sluaju virtualne i prirune memorije. No DMA ostvaruje drugi put prema memorijskom sustavu, i to onaj koji ne prolazi kroz mehanizam adresne translacije ili kroz hijerarhijsku organizaciju prirune memorije. Ako DMA koristi fiziko adresiranje, a raunarski sustav ima virtualni memorijski sustav, mogu nastupiti problemi jer virtualne stranice nisu nuno slijedne u glavnoj memoriji tako da prijenos bloka podataka koji viestruko premauje veliinu stranice ne moe biti odreen samo poetnom adresom bloka i njegovom veliinom. Ako se DMA temelji na virtualnim adresama, onda DMA treba imati ugraen mehanizam adresne translacije. DMA u memorijskom sustavu s prirunom memorijom takoer uzrokuje dodatne probleme jer postoje dvije kopije podataka - jedna u prirunoj memoriji, a jedna u glavnoj. Obje kopije moraju biti identine, meutim, DMA upravlja obino komunicira izravno s glavnom memorijom tako da se mogu razlikovati sadraji istih memorijskih lokacija koje "vide" DMA upravlja i procesor (problem koherencije podataka, poglavlje 10.). Na primjer, ako se itaju podaci s diska i tehnikom DMA smjetaju izravno u glavnu memoriju pri emu su neke lokacije, odnosno stranice u koje DMA upravlja upisuje podatke, ujedno i u prirunoj memoriji, procesor e itanjem tih lokacija iz prirune memorije dobiti stare vrijednosti. Jedno rjeenje koje se nudi jest ono da se sav DMA prijenos ostvaruje izmeu DMA upravljaa i prirune memorije. No to je sloenije i skuplje rjeenje, a uz sve to moe negativno utjecati na performansu procesora jer se DMA pristupom prirunoj memoriji odlae pristup procesora toj memoriji.

S. RIBARI - GRAA RAUNALA

429 I

14. POGLAVLJE

PROTONOST
14.1. UVOD
Vrlo openito protonost (engl. pipelining) moemo definirati kao poseban oblik paralelizma ili istodobnog izvoenja vie operacija koji se dobiva rastavljanjem nekog sloenijeg zadatka na manje zadatke (podzadatke) koji jedan drugoga slijede odreenim redom i koji se izvravaju u dodijeljenim samostalnim jedinicama. Samostalne jedinice, koje se nazivaju protoni segmenti, istodobno su aktivne tako da se izvravanje podzadataka prekriva u vremenu. Niz meusobno povezanih protonih segmenata, pri emu je izlaz prethodnog ulaz u sljedei protoni segment, oblikuje protonu strukturu. Slika 14.1 prikazuje protonu strukturu sastavljenu od M protonih segmenata.

SI. 14.1 Protona struktura sastavljena od M protonih segmenata

Analogiju s protonosti i protonom strukturom moemo nai u organizaciji suvremene industrijske proizvodnje na tekuoj vrpci: proizvodi putuju na tekuoj vrpci, a autonomni specijalizirani robotski obraivai obavljaju nad njima odreene operacije. Istodobno se vei broj proizvoda nalazi na tekuoj vrpci i svi su robotski obraivai istodobno aktivni. Jedan od osnivaa moderne proizvodnje utemeljene na zamislima protonosti jest H. Ford koji je u razdoblju od 1908. do 1915. u svojim tvornicama automobila uveo montane proizvodne vrpce i na taj nain uveo masovnu proizvodnju u automobilskoj industriji. Primjer 14.1. Zamisao protonosti moemo zorno ilustrirati na zadatku dobivanja tople vode: potrebno je dobiti mehaniki istu i omekanu (s niskom razinom kamenca) toplu vodu. Taj zadatak moemo obaviti tako da ga rastavimo na tri podzadatka: omekavanje vode, filtriranje vode i grijanje vode. Svakom od podzadataka dodijeljen je po jedan protoni segment (slika 14.2). Nepreraena "sirova" hladna voda protjecanjem kroz tri protona segmenta pretvara se u omekanu toplu vodu. Jasno je da su sva tri protona segmenta istodobno aktivna, ali na razliitim volumnim dijelovima vode koja protjee kroz cjevovod. Moemo primijetiti daje opisano rjeenje primijenjeno u protonim bojlerima.

430

14. POGLAVLJE: PROTONOST

filtar

protoni segment 1

"
protoni segment 2

SI. 14.2 Dobivanje tople vode uporabom protonosti

Primjer 14.2. Osnovnu zamisao protonosti moemo objasniti na primjeru koji je blii podruju kojim se bavimo u ovoj knjizi. Pretpostavimo da se treba u aritmetiko-logikoj jedinici zbrojiti dva vektora a i b, dimenzija n, pri emu su njihove komponente a. \bjl\ = 1,2,... n predstavljene brojevima s pominim zarezom. Da bi se dobio rezultat c, potrebno je obaviti n zbrajanja a.+ bjt i = 1,2,..., n. Postupak zbrajanje brojeva s pominim zarezom moemo rastaviti na etiri glavna koraka (podzadatka; poglavlje 8.): oduzimanje eksponenata, poravnavanje mantise, zbrajanje i normalizacija rezultata. Pretpostavimo da je jedinica za zbrajanje brojeva s pominim zarezom izvedena kao protona s M = 4 protona segmenta. Svaki od njih dodijeljen je jednom od podzadataka. Pretpostavimo, takoer, da su dimenzije vektora n M. Pretpostavimo jo i to da se svaki od podzadataka izvodi u jednakom vremenu - vrijeme obrade u svakom protonom segmentu neka je ts = ts1 = ts2 = ts3 = t^. Komponente vektora a i b neka ulaze u protonu strukturu brzinom koja odgovara brzini rada svakog od protonih segmenata - dakle, svakih t$ vremenskih jedinica novi par a. i b. ulazi u protonu strukturu. Postupak raunanja zbroja vektora u protonoj strukturi moemo prikazati na sljedei nain: Protoni segment 1 (oduzimanje eksponenata)
a

Vrijeme

Protoni segment 2 (poravnanje)


-

Protoni segment 3 (zbrajanje)


-

Protoni segment 4 (normalizacija)


-

i.bi
a

2t S 3ts 4t s = M ts 5ts

a2,b2 a3, b3
a

i<

a2,b2 a3,b3
a

ai , b i a2, b2 a3, b3
c

4'

= a

+ b

a5,b5

4'b4

c2 = a2 + b2

a.b

H < b i-i

a. v b. t-2 1-2^

, 3 = a i-3 +

,-3

S. RIBARI - GRAA RAUNALA

431 I

nt s

a ,b
n'

3 n-, , V / b n-1

n-2< n-1<

n-2 n-1

cn - 3 = a n -3 + b n -.3 3 cn - 2 = an - . + b n-2 , 2 cn - 1 = an - 1 , + b n-, 1 cn = a n + b n

(n + 1)ts (n + 2)ts
(n + 3)ts = (M + n -1)ts

a ,b
n'

a , b

Prvi rezultat c^ dobivamo iz protone strukture nakon Mts vremenskih jedinica (4ts). Nakon toga, svakih t vremenskih jedinica dobivamo novi rezultat, odnosno novu komponentu vektora c. Za zbrajanje dvaju vektora u protonoj strukturi potrebno je Mts + (n - 1)ts vremenskih jedinica. Za zbrajanje dvaju vektora u neprotonoj izvedbi aritmetike jedinice potrebno je ni vremenskih jedinica, gdje je T vrijeme potrebno za zbrajanje dviju komponenti vektora, pri emu jeT > ts. Vrijedi da je Mts + (n - 1 )t < ni. Pokaimo to na primjeru aritmetike jedinice za operacije brojevima s pominim zarezom za koju su vremena trajanja operacija u protonim segmentima sljedea: Operacija 1. Oduzimanje eksponenata 2. Poravnavanje 3. Zbrajanje 4. Normalizacija Ukupno vrijeme obrade T Vrijeme trajanja t sl = 40 ns ts2 = 70ns ts3-50ns t s 4 = 80 ns 240 ns

(Opaska: vremena trajanja operacija u protonim segmentima priblino odgovaraju stvarnim vrijednostima.) Pretpostavimo da su vektori dimenzija n = 1000. Za neprotonu izvedbu vrijeme potrebno za dobivanje rezultata je n T, odnosno 1000 x 240 ns = 240 ^s. Iz podataka o vremenima obrade u pojedinim protonim segmentima uoavamo da su ona razliita i zato se izmeu protonih segmenata postavljaju zaporni sklopovi (engl. latch) koji imaju ulogu protonog registra te spreavaju da podatak koji je obraen u jednom protonom segmentu ometa rad sljedeeg segmenta prije nego to on zavri obradu (slika 14.3). Na taj se nain ostvaruje sinkrona protona struktura u kojoj je protok podataka "gladak" a za vrijeme obrade u svakom protonom segmentu uzima se ono koje odgovara najsporijem segmentu (u naem sluaju ts = 80 ns). Vrijeme potrebno za raunanje zbroja dvaju vektora u protonoj izvedbi aritmetike jedinice je: Mts + (n - 1 )ts = 4 x 80 ns + (1000 -1) x 80 ns = 320 ns + 79920 ns. Ukupno vrijeme obrade u protonoj strukturi iznosi 80240 ns, odnosno 80.240 juis. Ako usporedimo vremena obrade za neprotonu i protonu strukturu, vidimo daje faktor ubrzanja obrade: (vrijeme obrade za neprotonu izvedbu) / (vrijeme obrade za protonu izvedbu) = 240/80.24.

432

14. POGLAVLJE: PROTONOST

Faktor ubrzanja je 2.99, odnosno protona izvedba priblino je triput bra od neprotone izvedbe.
protoni registar 1 (zaporni sklopovi) protoni registar 2 {zaporni sklopovi) protoni registar M-1 (zaporni sklopovi)

signal vremenskog voenja

SI. 14.3 Protona struktura s meuspremnicima

to se dobiva uporabom protonosti i kako se ona odraava na brzinu obrade, odnosno na performansu ili propusnost sustava? Odgovor na to pitanje dobit emo analizom jednostavnog modela protone strukture (slika 14.1). Neka se protona struktura sastoji od M > 1 protonih segmenata i neka je vrijeme obrade u svim protonim segmentima jednako: t si = t s2 = t s3 =... = t sM = ts Pretpostavimo daje broj identinih operacija koje treba protona struktura izvesti n M. Ocijenimo vrijeme koje je potrebno za obavljanje tih n operacija. Kao to smo vidjeli u Primjeru 14.2., prvi se rezultat pojavljuje iz protone strukture nakon M x ts vremenskih jedinica, a nakon toga slijedi rezultat svakih ts vremenskih jedinica. Ukupno vrijeme obrade je: T k = Mts + (n-1)t 5 T k = (M + n - 1 ) t s Vrijeme obrade, odnosno vrijeme potrebno za izvoenje jedne od n identinih operacija je: Te = Tuk/ n = (M + /1 - 1 )ts / r? Pretpostavili smo da je n 1, meutim, ako n tei prema vrlo velikim vrijednostima, npr. prema beskonanosti n-*, onda vrijeme obradeTe tei vremenu obrade u jednom protonom segmentu ts. Dobili smo vrlo zanimljiv rezultat: efektivno vrijeme izvoenja jedne od n identinih operacija u protonoj izvedbi jednako je vremenu obrade u jednom protonom segmentu ts, dok je u neprotonoj izvedbi vrijeme potrebno za izvoenje iste operacije Mts. Faktor ubrzanja jednak je M, tj. odgovara broju protonih segmenata. Pri prireivanju sloenog zadatka za protonu obradu, odnosno pri rastavljanju zadatka na podzadatke moraju se potovati pravila koja odreuju temeljne znaajke protone strukture: i) Konaan rezultat izvoenja slijeda podzadataka u protonoj strukturi mora biti jednak rezultatu izvoenja cjelovitog zadatka, tj. onog koji bi se izveo u neprotonoj strukturi. ii) Ulazi u protoni segment /su izlazi iz prethodnog protonog segmenta / - 1 . iii) Osim izmjene ulaznih i izlaznih podataka ne zahtijeva se drugi nain meudjelovanja protonih segmenata. iv) Vrijeme potrebno pojedinim protonim segmentima za izvoenje podzadatka treba biti za sve protone segmente priblino jednako.

S. RIBARI - GRAA RAUNALA

433 I

14.2. PROTONE STRUKTURE U RAUNARSKOM SUSTAVU


Kao to se protonost moe primijeniti u razliitim proizvodnim procesima ili svakodnevnoj organizaciji poslova, tako se postupak rastavljanja zadataka moe provesti na razliitim razinama organizacije raunarskog sustava. Na primjer, na razini aritmetiko-logike jedinice (Primjer 14.2.), memorijske jedinice (poglavlje 9.), memorijske sabirnice, prirune memorije iii na razini upravljake jedinice procesora. Primjer 14.3. Procesor Pentium II koristi protonu izvedbu memorijske sabirnice koja doputa do osam istodobnih sabirnikih prijenosa, odnosno sabirnikih transakcija. Zadatak sabirnike transakcije ostvaruje se sa est protonih segmenata ili faza: i) faza sabirnike arbitrae (engl. bus arbitration) u kojoj se odreuje koji od e od potencijalno vodeih modula dobiti memo rij sku sabirnicu na upravljanje; ii) faza zahtjeva (engl. request phase) u kojoj vodei modul postavlja adresu na sabirnicu; iii) faza izvjetavanja o pogreci (engl. error reporting phase) doputa prateem modulu izvjetavanje da je dolo do pogreke, npr. greka pariteta u adresi; iv) faza "njukanja" (engl. snoop phase) koja doputa procesoru da detektira neki drugi procesor - ova se faza rabi samo u multiprocesorskim sustavima; v) faza odgovora (engl. response phase) u kojoj vodei modul dobiva informaciju napreduje li transakcija dobro i hoe li dobiti podatke koje je zatraio; vi) faza podataka (engl. data phase) u kojoj se prenose podaci.
Sabirniki ciklus

AAAAAAAAAAAAA
T, T2 T3 T4 T5 T6 T7 is T9 T Tlt T12

v ^ v \JlATA
Req V

Snoop

Resp.

Data

Error Y Snoop

v ^ v
Snoop ^

Data

Reg V

Error V

/V

Resp.

Data

rz\r~\{ Req

Error

Snoop^/^Resp.

r
Resp.

Data

Req

Error ^ ^ S n o o p ^ ^

Data

J\ZU
Req Error

V A

Snoop

nz\/ Resp. \ _ A

Data >~

sabirnike transakcije

SI. 14.4 Vremenski dijagram stanja na protonoj memorijskoj sabirnici sa 6 istodobnih sabirnikih transakcija

434

14. POGLAVLJE: PROTONOST

Ovisno o konfiguraciji raunarskog sustava i vrsti sabirnike transakcije neke od faza mogu biti isputene (npr. ako je samo jedan vodei modul u sustavu, faza sabirnike arbitrae nije potrebna; ako sustav nije organiziran kao multiprocesorski, faza njukanja moe se izostaviti). Pentium II procesor podrava protonu izvedbu memorijske sabirnice izravno tako da za svaku od faza ima potpuno nezavisne upravljake signale. Slika 14.4 prikazuje vremenski dijagram stanja na protonoj memorijskoj sabirnici sa 6 istodobnih sabirnikih transakcija. Primjer 14.4. Slika 14.5 prikazuje protonu izvedbu prirune memorije (poglavlje 10.) koja se sastoji od etiri protona segmenta: adresna translacija, dekodiranje retka i itanje, dekodiranje stupca i izbor te usporedba znake i utvrivanje valjanosti. Zahvaljujui takvoj izvedbi istodobno se obavljaju etiri prijenosa podataka.

SI. 14.5 Shematski prikaz protone izvedbe prirune memorije

Protonost je naroito vana u izvedbi upravljake jedinice kojoj je osnovna funkcija izvoenje instrukcija. Naime, u procjeni ubrzanja rada rezultat koji smo dobili (faktor ubrzanja u odnosu na neprotonu izvedbu jednak je broju protonih segmenata M!) temelji na pretpostavci da je broj identinih zadataka n koji se izvode vrlo, vrlo velik, odnosno da n tei prema beskonano. Zadatak izvoenja instrukcija, odnosno izvravanja programa je upravo takav. Na primjer, ako procesor ima performansu od 500 MlPS-a, odnosno izvodi 500 milijuna instrukcija u sekundi, tada procesor izvede 5 x 108 x 3600 = 1.8 x 1012 instrukcija u jednom satu. Uz to, zadatak izvoenja instrukcije moe se rastaviti na vei broj podzadataka koji slijede u nizu i koji su pogodni za izvoenje u sklopovsko ostvarenim protonim segmentima.

14.3. INSTRUKCIJSKA PROTONA STRUKTURA


Rastavljanjem osnovne funkcije upravljake jedinice - izvoenje instrukcija - dobivamo instrukcijsku protonu strukturu. Ona je odreena na temelju analize tijeka izvoenja instrukcija, odnosno dijagrama stanja instrukcijskog ciklusa. U 2. poglavlju vidjeli smo da se dijagram stanja instrukcijskog ciklusa sastoji od dviju faza (ili stanja): faze PRIBAVI i faze IZVRI (slika 14.6). Izvoenje svake instrukcije zapoinje aktivnostima koje su odreene za fazu PRIBAVI (pribavljanje instrukcije, inkrementiranje programskog brojila, dekodiranje operacijskog koda instrukcije), a nakon toga se nastavlja s aktivnostima u fazi IZVRI (dohvat operanada, izvoenje aritmetike ili logike operacije, pohrana rezultata). To znai da se zadatak izvoenja instrukcije moe rastaviti na dva slijedna podzadatka: PRIBAVI i IZVRI.

SI. 14.6 Dijagram stanja instrukcijskog ciklusa

Ako se svakom od podzadataka dodijeli samostalni sklop - protoni segment, dobiva se instrukcijska protona struktura s M = 2 protona segmenta ije emo aktivnosti u vremenu za jednu instrukciju simboliki prikazati kao na slici 14.7.

pribavi

izvri

1
a)

i
b)

vrijeme

SI. 14.7 (a) Instrukcijska protona struktura s M = 2 protona segmenta; (b) Simboliki prikaz aktivnosti u vremenu (za jednu instrukciju) dvaju protonih segmenata PRIBAVI i IZVRI

Protoni segmenti potpuno su samostalni to znai da mogu istodobno biti aktivni, i to tako da se njihove aktivnosti tijekom izvoenja slijeda instrukcija:..., instrukcija / - 1, instrukcija /, instrukcija i + 1,... preklapaju - protoni segment PRIBAVI pribavlja instrukciju /, a protoni segment IZVRI aktivan je na prethodnoj instrukciji u slijedu, tj. instrukciji / -1. Instrukcije ..., instrukcija i - 1 , instrukcija /, instrukcija / + 1,... oblikuju slijedni instrukcijski tok (program). Slika 14.8 prikazuje izvoenje slijeda instrukcija, tj. programa u instrukcijskoj protonoj strukturi s M = 2 protona segmenta. Na slici vidimo da se aktivnosti dvaju protonih segmenata preklapaju pa se u skladu s analizom jednostavnog modela protonosti moe oekivati, pod idealnim uvjetima -"glatkog" protjecanja instrukcija kroz protonu strukturu, faktor ubrzanja izvoenja programa u odnosu na neprotonu izvedbu jednak broju protonih segmenata, tj. 2.

436

14. POGLAVLJE: PROTONOST

instrukcija i-1 instrukcija i instrukcija i+1 instrukcija i+2 instrukcija i+3

pribavi/

izvri pribavi
/

vrijeme

J izvri pribavi izvri pribavi izvri pribavi izvri


! i

SI. 14.8 Izvoenje slijeda instrukcija u instrukcijskoj protonoj strukturi s M = 2 protona segmenta

Primjer 14.5. D. A. Patterson i D. R. Ditzel su 1980. u okviru dvaju istraivakih projekata dizajnirali jedan od prvih procesora RISC arhitekture koji su nazvali RISC I. Procesor RISC I imao je instrukcijsku protonu strukturu sa samo dva protona segmenta: segment za pribavljanje instrukcije IF (Instruction Fetch) i segment za izvravanje instrukcije EX (Execution). Vrijeme obrade u protonom segmentu bilo je ts = 500 ns. Vrijeme obrade od 500 ns u svakom od protonih segmenata nije bilo uvjetovano brzinom sklopova u protonim segmentima, ve vremenom pristupa memoriji. Protonost, u kontekstu izvoenja instrukcija, moemo sad vrlo precizno definirati kao tehniku koja iskoritava paralelizam izmeu instrukcija u slijednom instrukcijskom toku. Aktivnosti u protonoj strukturi moemo prikazati Ganttovim dijagramom u kojem se na osi x nanose diskretni vremenski trenuci koji odgovaraju vremenu aktivnosti u protonim segmentima ts, a na osi y oznake aktivnih protonih segmenata. Slika 14.9 prikazuje Ganttov dijagram za instrukcijsku protonu strukturu s M = 2 protona segmenta (PRIBAVI i IZVRI). Ganttov dijagram zorno nam predoava istodobno izvoenje instrukcija u protonoj strukturi: od vremenskog trenutka 2ts na dalje, aktivna su oba protona segmenta na dvjema instrukcijama. Na primjer, u trenutku 4ts, protoni segment PRIBAVI aktivan je na instrukciji / + 2, a istodobno protoni segment IZVRI obrauje instrukciju / + 1.

izvri pribavi instrukcija i-1 Its

instrukcija i-1 instrukcija i 2t s

instrukcija i instrukcija i+1 3t,

instrukcija i+1 instrukcija i+2


4

instrukcija i+2 instrukcija i+3 5t s

instrukcija i+3 instrukcija


i+4

ts

6t s

SI. 14.9 Ganttov dijagram izvoenja slijednog instrukcijskog toka u instrukcijskoj protonoj strukturi s M = 2 protona segmenta

S. RIBARI - GRAA RAUNALA

437 I

14.3.1.

PODROBNIJI DIJAGRAM STANJA INSTRUKCIJSKOG CIKLUSA


Da bi se postigao faktor ubrzanja obrade vei od 2, potrebno je poveati broj protonih segmenata u instrukcijskoj protonoj strukturi. Broj protonih segmenata i njihove funkcije dobit emo na temelju podrobnijeg dijagrama stanja instrukcijskog ciklusa (naziva se jo i interpretacijski dijagram). Dijagram stanja instrukcijskog ciklusa, koji se sastoji od dva stanja PRIBAVI i IZVRI (poglavlje 2.), moemo rastaviti na vei broj stanja koja odgovaraju slijedu aktivnosti tijekom instrukcijskog ciklusa.

SI. 14.10 Podrobniji dijagram stanja instrukcijskog ciklusa

Slika 14.10 prikazuje podrobniji dijagram stanja instrukcijskog ciklusa koji e nam posluiti za odreivanje broja i funkcija protonih segmenata. Opiimo aktivnosti u pojedinim stanjima: i) raunanje adrese instrukcije (iac - instruction address caicuiation) - u ovom se stanju odreuje adresa instrukcije koja e se sljedea izvesti. Adrese sljedee instrukcije tijekom faze PRIBAVI dobiva se poveanjem sadraja programskog brojila PC za iznos koji odgovara broju rijei prethodno pribavljene instrukcije (poglavlje 2.). U sluaju procesora CISC arhitekture taj je iznos promjenjiv i ovisi o vrsti instrukcije (duljina instrukcija CISC procesora nije fiksna). Ako je rije o procesoru RISC arhitekture, onda se adresa sljedee instrukcije dobiva poveanjem sadraja za stalan iznos (duljina instrukcije RISC procesora je vrsta). Na primjer, ako RISC procesor ima 32-bitne instrukcije i ako je memorija bajtne zrnatosti, sadraj programskog brojila PC poveava se za 4. Stanje raunanje adrese instrukcije moe biti aktivno i tijekom faze IZVRI ako se upravo izvrava instrukcija grananja. U tom se sluaju u stanju raunanje adrese instrukcije odreuje adresa ciljne instrukcije; ii) pribavljanje instrukcije (if - instruction fetch) - ita se, odnosno pribavlja instrukcija iz memorije. Ovisno o organizaciji memorijskog sustava, instrukcija se pribavlja ili iz instrukcijske prirune memorije, prirune memorije (l&D cache; poglavlje 10.) ili iz glavne memorije; i i i) dekodiranje operacijskog koda instrukcije (iod - instruction operation decoding) - analizira se i dekodira operacijski kod instrukcije da bi se odredila vrsta operacije i tip operanada na kojima se treba izvesti operacija;

438

14. POGLAVLJE: PROTONOST

iv) raunanje adrese operanda (oac - operand address calculation) - rauna ili se odreuje adresa operanda. Ako se referencira operand koji se ve nalazi u jednom od registara u skupu registara, onda je adresa odreena adresnim poljem u instrukciji, npr. 5-bitno adresno polje ra u instrukciji RISC procesora koji ima 32 registra u skupu registara (poglavlje 3.). No ako se referencira operand u memoriji ili u U/l podsustavu, raunanje adrese operanda moe biti relativno sloeno, posebno za CISC procesore koji imaju veliki broj razliitih i sloenih naina adresiranja; v) dohvat operanda (of - operand fetch) - operand se ita, odnosno dohvaa iz memorije ili U/l podsustava. Ovisno o organizaciji memorijskog sustava, operand se moe pribaviti iz prirune memorije podataka, prirune memorije (l&D cache) ili glavne (radne) memorije. Operand se moe dohvatiti i iz registra u skupu registara. Stanja raunanje adrese operanda i dohvat operanda mogu se izmjenjivati vie puta ako je rije o operaciji koja zahtijeva viestruke operande; vi) izvoenje operacije na operandima (do - data operation) izvodi se operacija koja je specificirana operacijskim kodom instrukcije; vii) raunanje adrese rezultata (rac - result address calculation) - odreuje se odredina adresa rezultata operacije. Odredite rezultata moe biti memorija, odnosno priruna memorija, priruna memorija podataka, glavna memorija ili U/l podsustav. Naravno, odredite rezultata moe biti i registar u skupu registara - u tom je sluaju adresa odredita odreena adresnim poljem koje se nalazi u instrukciji; viii) pohranjivanje rezultata (rs - result store) - upis rezultata u memorijski sustav ili u registar u skupu registara ili u U/l podsustav. Stanja raunanje adrese rezultata i pohranjivanje rezultata mogu se, takoer, izmjenjivati vie puta u sluaju instrukcija koje se koriste viestrukim rezultatima. Dijagram stanja instrukcijskog ciklusa vrijedi i za instrukcije koje se odnose na operacije s vektorima i nizovima znakova (engl. string of characters). U tom se sluaju za jedan slijed stanja raunanje adrese instrukcije - pribavljanje instrukcije - dekodiranje operacijskog koda instrukcije viestruko ponavljaju stanja raunanje adrese operanda - dohvat operanda - izvoenje operacije na operandima - raunanje adrese rezultata - pohranjivanje rezultata. Cijeli se postupak izvoenja instrukcije moe smislenim grupiranjem stanja u dijagramu stanja instrukcijskog ciklusa prikazati kao logiki slijed podzadataka. Na primjer, slijed sastavljen od podzadataka: pribavljanje instrukcije, dekodiranje instrukcije, izvravanje instrukcije, tj. izvoenje operacije na operandima te upis rezultata oblikovao bi instrukcijsku protonu strukturu sastavljenu od etiri protona segmenta. Dakako, mogua su i drugaija grupiranja stanja, primjerice pribavljanje instrukcije, dekodiranje instrukcije, raunanje (efektivne) adrese operanada, izvravanje instrukcije, upis rezultata. Instrukcijske protone strukture mogu imati sedam ili vie protonih segmenata. Na primjer, instrukcijska protona struktura sastoji se od deset protonih segmenata: (pret)pribavljanje instrukcije u instrukcijski meuspremnik (engl. instruction buffer), pribavljanje instrukcije u instrukcijski registar, dekodiranje instrukcije, raunanje adrese prvog operanda, raunanje adrese drugog operanda, dohvat prvog operanda, dohvat drugog operanda, izvravanje instrukcije, raunanje adrese rezultata i, konano, pohranjivanje, odnosno upis rezultata. Funkcije koje odgovaraju pojedinim stanjima (podzadacima) u dijagramu stanja instrukcijskog ciklusa, koje e se dodijeliti pojedinim protonim segmentima te broj protonih segmenata u instrukcijskoj protonoj strukturi vrlo su vane arhitektonske znaajke procesora koje imaju veliki utjecaj na performansu procesora, a time i na performansu rau-

S. RIBARI - GRAA RAUNALA

439 I

narskog sustava. Na nain grupiranja stanja u dijagramu stanja instrukcijskog ciklusa i na broj protonih segmenata utjee i to temelji li se procesor na RISC ili CISC konceptima (poglavlje 3.).

14.4. INSTRUKCIJSKA PROTONA STRUKTURA ZA RISC PROCESORE


U poglavlju 3. Pojednostavnjeni modeli CISC i RISC procesora upoznali smo se s osnovnim znaajkama procesora RISC arhitekture. Podsjetimo se, ukratko, tih znaajki: i) reduciran skup instrukcija sastavljen od relativno jednostavnih instrukcija, ii) instrukcijski skup ine tri osnovne vrste instrukcija: aritmetiko-logike instrukcije, load-store instrukcije i instrukcije uvjetnog i bezuvjetnog grananja, iii) samo nekoliko formata instrukcija i sve su instrukcije vrste i jednake duljine (npr., 32-bita ili 64-bita), iv) pristup memoriji ostvaruje se samo instrukcijama vrste load i store kojima se premjetaju podaci izmeu registra u skupu registara i memorije (load-store arhitektura), v) registarsko orijentirani procesor. Operandi za aritmetike i logike operacije moraju se nalaziti u skupu registara. Aritmetiko-logike operacije na podacima pohranjenim u registrima podataka mijenjaju obino cijele sadraje registra (ne djeluju selektivno na bajt ili 16-bitnu rije u 32- ili 64-bitnom registru podataka), vi) veina instrukcija je tipa registar-registar. Potonje znaajke pojednostavnjuju izvedbu instrukcijske protone strukture i izravno djeluju na poveanje performanse procesora. Opisat emo "klasinu" instrukcijsku RISC protonu strukturu koja se sastoji od pet protonih segmenata. Opravdanje za izbor pet segmentne protone strukture nai emo vrlo brzo kada budemo govorili o nainu ostvarivanja jednog od osnovnih ciljeva RISC arhitektu re - izvoenje instrukcije u jednoj periodi signala vremenskog voenja. Protona struktura sastoji se od sljedeih protonih segmenata (slika 14.11): pribavljanje instrukcije (IF), dekodiranje instrukcije i dohvat operanada (ID-OF), izvravanje instrukcije (EX), pristup memoriji (ME) i upis rezultata ili podatka dohvaenog iz memorije (WB).
IF ID-OF EX ME WB

Legenda: IF - pribavljanje instrukcije ID-OF - dekodiranje instrukcije i dohvat operanada EX - izvravanje instrukcije ME - pristup memoriji WB - upis rezultata ili podataka SI. 14.11 Simboliki prikaz instrukcijske protone strukture RISC procesora

440

14. POGLAVLJE: PROTONOST

14.4.1. POTREBNE SKLOPOVSKE PREINAKE U PROTONOM RISC PROCESORU


Da bi se djelotvorno iskoristila protona izvedba, potrebne su odreene preinake u arhitekturi RISC procesora: i) ako se eli postii izvoenje instrukcije u jednoj periodi signala vremenskog voenja, onda to znai da instrukcije moraju pristizati u protonu strukturu u svakoj periodi signala vremenskog voenja. tovie, brzina pristizanja instrukcija treba odgovarati vremenu obrade u protonom segmentu. Ovdje se pojavljuju dva problema: vrijeme pristupa radnoj memoriji tA (poglavlje 9.) dulje je od vremena obrade u jednom protonom segmentu ts: tA > ts i; ako se instrukcije i podaci dohvaaju iz iste memorijske jedinice, onda se zbog istodobnog izvoenja veeg broja instrukcija (koje se nalaze u razliitim fazama izvoenja) pojavljuje konflikt - protoni segment IF u svakoj periodi signala vremenskog voenja pristupa memorijskoj jedinici, a pristup memorijskoj jedinici zahtijeva i protoni segment ME tijekom izvoenja load ili store instrukcije. Rjeenje obaju problema jest u uporabi prirune memorije i zamisli na kojima poiva harvardska arhitektura (poglavlje 2.) - izdvojenih prirunih memorija - instrukcijske prirune memorije i prirune memorije podataka (poglavlje 10.). i i) Skup registara podataka treba biti izveden kao jednou lana i dvoizlazna memorija (engl. one write port & two read ports; 3-port register file) tako da se omogui istodobni dohvat (itanje) dva operanda, ali i upis rezultata u istoj periodi signala vremenskog voenja (poglavlje 7.). iii) Umjesto internih sabirnica (jedne ili vie njih) protona izvedba RISC procesora vrlo esto koristi naine povezivanja toka-toka i na taj se nain omoguuje istodobni prijenos izmeu registara i drugih komponenti procesora u svakom od protonih segmenata. To ima za posljedicu i uvoenje protonih registara izmeu protonih segmenata koji su potrebni za prosljeivanje informacija (podataka) izmeu protonih segmenata. iv) Sklop za posmak u aritmetiko-logikoj jedinici (ALU) mora biti tako izveden da se posmakza proizvoljni broj mjesta izvodi u jednoj periodi signala vremenskog voenja (uporaba bavastog posmanog sklopa; poglavlje 8.). v) Protona izvedba zahtijeva dodatne sklopove kao to je zbrajalo ili poseban sklop za inkrementiranje/dekrementiranje sadraja programskog brojila PC u protonom segmentu IF, protoni registri izmeu protonih segmenata i multipleksori za (pre) usmjeravanje podataka na putu podataka kroz protone segmente. Slika 14.12 prikazuje preinaenu protonu strukturu RISC procesora s pet protonih segmenata.

S.RIBARI- GRAA RAUNALA

441 I

SI. 14.12 Podrobniji prikaz protone struktura RISC procesora s pet protonih segmenata i potrebnim preinakama

442

14. POGLAVLJE: PROTONOST

Opiimo aktivnosti u pojedinim protonim segmentima (slika 14.12). U protonom segmentu IF pribavlja se instrukcija iz instrukcijske prirune memorije, i to ona na koju pokazuje programsko brojilo PC. Sadraj se programskog brojila poveava za 4 (ako je rije o 32-bitnom RISC procesoru i bajtnoj adresnoj zrnatosti memorije). Ta se operacija (PC + 4) izvodi pomou zbrajala u protonom segmentu IF. Pribavljena instrukcija i obnovljena vrijednost PC-a prosljeuju se protonom segmentu ID-OF preko protonog registra IF/IDOF (slika 14.12). Pribavljena instrukcija, koja je bila privremeno pohranjena u protonom registru IF/ID-OF, smjeta se u instrukcijski registar u protonom segmentu ID-OF i dekodira se. Istodobno s dekodiranjem operacijskog koda instrukcije dohvaaju se operandi iz skupa registara i privremeno se pohranjuju u protonom registru ID-OF/EX. U protonom segmentu ID-OF nalazi se i sklop za irenje bita predznaka koji slue za pretvorbu podatka (konstante) sadranog u samoj instrukciji u 32-bitni operand ili adresu (vidi 3. poglavlje) Kako je mogue istodobno dohvaati operande i dekodirati operacijski kod instrukcije? Ako je dekodiranjem operacijskog koda utvreno da je rije o instrukciji tipa registar-registar, onda dohvaeni podaci iz skupa registara zaista predstavljaju operande. (Podsjetimo se jo jednog dobrog svojstva RISC procesora, operandi za sve aritmetike i logike operacije moraju se prethodno nalaziti u registrima u skupu registara.) No to ako dekodirana instrukcija nije instrukcija tipa registar-registar, ve je rije o tipu instrukcije load/store ili instrukciji grananja? I u tom se sluaju nije nita pogrijeilo - dohvaeni se podaci upotrebljavaju u protonom segmentu EX za oblikovanje efektivne adrese memorijske lokacije kojoj e se pristupiti tijekom aktivnosti u protonom segmentu ME ili za oblikovanje ciljne adrese grananja. Ako se dekodiranjem operacijskog koda instrukcije utvrdi daje rije o instrukciji grananja, onda se oblikovana ciljna adresa u protonom segmentu EX, koja je privremeno pohranjena u protonom registru EX/ME, povratnom vezom upuuje u protoni segment IF gdje se preko multipleksora MUX upisuje u programsko brojilo PC. Ciljna adresa dobiva se na temelju dohvaenog sadraja iz jednog od registara iz skupa registara tijekom aktivnosti u protonom segmentu IF-OD. Ciljna adresa moe se dobiti (ovisi o nainu adresiranja) u protonom segmentu EX i zbrajanjem sadraja programskog brojila PC, koje je bilo privremeno pohranjeno u protonom registru ID-OF/EX, i dohvaene adrese ili pomaknua (adresna komponenta) iz jednog od registara iz skupa registara. Adresa, odnosno adresna komponenta je, takoer, bila pohranjena u protonom registru ID-OF/EX. U protonom segmentu EX izvrava se aritmetika ili logika operacija na dohvaenim podacima. No ako je rije o instrukciji tipa load/store ili o instrukciji grananja, onda se aritmetiko-logika jedinica (ALU) u protonom segmentu EX koristi za raunanje efektivne adrese koja je potrebna protonom segmentu ME ili ciljne adrese potrebne protonom segmentu IF. Aktivnosti u protonom segmentu ME mogu se opisati na sljedei nain: ako je rije o instrukciji tipa load, koristi se efektivna adresa iz EX za pristup podatku u prirunoj memoriji podataka. Dohvaen (proitan) podatak privremeno se pohranjuje u protoni registar ME/ WB. Ako je rije o instrukciji tipa store, onda se podatak koji je privremeno pohranjen u protonom registru EX/ME upisuje u prirunu memoriju podataka. U sluaju da je rije o aritmetiko-logikoj instrukciji, nema aktivnosti u protonom segmentu ME jer takve su instrukcije sve vrste registar-registar i ne rabe pristup memoriji. Rezultat aritmetike ili logike operacije izravno se prosljeuje protonom registru ME/WB.

S. RIBARI - GRAA RAUNALA

443 I

Tijekom aktivnosti u protonom segmentu WB upisuje se podatak natrag u skup registra. Ako je rije o instrukciji tipa load, podatak koji je bio privremeno pohranjen u protonom registru ME/WB upisuje se u jedan od registara u skupu registara. U sluaju da je rije o aritmetikoj ili logikoj instrukciji, onda se rezultat koji je bio privremeno smjeten u protonom registru ME/WB upisuje natrag ujedan od registara u skupu registara. U sluaju instrukcije tipa store nema aktivnosti u protonom segmentu WB. Zanimljivo je izvoenje instrukcija uvjetnog i bezuvjetnog grananja u protonoj strukturi. Na primjer, promotrimo izvoenje instrukcije uvjetnog grananja koju smo upoznali u poglavlju 3. kada smo na razini ISA opisivali jednostavan RISC procesor: brzrr31, rl; PC <- R[31] ako je R[1] = 0. Instrukcija "granaj ako je nula" brzrr31, rl ispituje sadraj registra R[1] u skupu registara i ako je on jednak 0, onda u programsko brojilo PC smjeta 32-bitni sadraj registra R[31]. Tijekom izvoenja te instrukcije, u protonom segmentu ID-OF dohvaaju se sadraji registara R[31] i R[l]. Oni se privremeno pohranjuju u protoni registar ID-OF/EX. Potrebno je ispitati je li sadraj registra R[1] jednako, odnosno je li uvjet grananja ispunjen. Ako su protonom segmentu ID-OF pridodani sklopovi za ispitivanje uvjeta, onda se zadovoljavanje uvjeta (R[1] = 0) moe utvrditi u segmentu ID-OF. Ako je R[1] jednako, onda se privremeno pohranjeni sadraj registra R[31] prosljeuje bez promjena kroz protoni segment EX te se preko protonog registra EX/ME upuuje povratnom vezom u protoni segment IF, odnosno preko multipleksora u programsko brojilo PC (slika 14.12). Ovdje vidimo da smo izvedbom protone strukture (slika 14.12) naruili jedno od pravila protonosti koje izvorno ne doputa povratne veze izmeu protonih segmenata ("Ulazi u protoni segment / su izlazi iz prethodnog protonog segmenta i -1"). Strogo potovanje spomenutog pravila protonosti vodilo bi rjeenju u kojem se tek djelovanjem protonog segmenta WB ciljna adresa upisivala u programsko brojilo PC. Vrlo brzo emo, meutim, vidjeti da strogo potovanje potonjeg naela naruava "gladak" tok instrukcija kroz instrukcijsku protonu strukturu. Ako uvjet za grananje, u sluaju instrukcije brzr r31, rl, nije zadovoljen (sadraj registra R[1] nije 0), sadraj registra R[31] nema utjecaja na sadraj programskog brojila PC te se grananje nee dogoditi. Slika 14.13 prikazuje "glatki"jednolini protok slijeda instrukcija i 3 , i n 1 , i n - instrukcije protjeu kroz protonu strukturu bez ikakvog remeenja i zastoja. Slika 14.14 prikazuje Ganttov dijagram aktivnosti protonih segmenata. Na slici 14.14 uoavamo fazu "punjenja" ili uspostavljanja protone strukture u kojoj postupno raste broj istodobno aktivnih protonih segmenata. Nakon vremena potrebnog za "punjenje" protone strukture (4ts) slijedi dugi period u kojem su svi protoni segmenti aktivni, i to tako da svaki djeluje na razliitu instrukciju iz slijeda instrukcija. Izvoenje instrukcija zavrava "pranjenjem" protone strukture u kojoj postupno protoni segmenti jedan za drugim postaju neaktivni. Ako je slijed instrukcija koje se trebaju izvriti vrlo velik n 1, onda se vrijeme punjenja i pranjenja moe zanemariti u usporedbi s vremenom kada su svi protoni segmenti istodobno aktivni.

444

14. POGLAVLJE: PROTONOST

i,

IF

ID-OF

EX

ME

WB

IF

ID-OF

EX

ME

WB

IF

ID-OF

EX

ME

WB

IF

ID-OF

EX

ME

WB

IF

ID-OF

EX

ME

WB

-i

IF

ID-OF

EX

ME

WB :

i n

IF

ID-OF

EX

ME

WB

SI. 14.13 "Glatki"jednolini protok slijeda instrukcija kroz 5-segmentnu instrukcijsku protonu strukturu
protoni segmenti punjenje protone strukture pranjenje protone strukture

r
WB ME EX ID-OF IF 1ts 2t s 3t s 4t s 5t s 6t $

r v 4
n-3

n-3

n-2 n-1

n-1

n-2

n-2

n-1

n-1

t>

8t

nt

(n+1)t (n+2)t (n+3)t (n+4)t =(n+M-1)t

SI. 14.14 Ganttov dijagram aktivnosti protonih segmenata

14.4.2.

OSTVARIVANJE CILJA: JEDNA INSTRUKCIJA U JEDNOJ PERIODI SIGNALA VREMENSKOG VOENJA


Jedna od osnovnih tenji arhitekture RISC jest izvoenje instrukcije u jednoj periodi signala vremenskog voenja. Preciznije, umjesto izvoenja instrukcije u jednoj periodi signala vremenskog voenja, zahtijeva se zapoinjanje izvoenja nove instrukcije u svakoj periodi signala vremenskog voenja te, isto tako, generiranje rezultata u svakoj periodi signala vremenskog voenja. Na taj se nain postie prividno izvoenje instrukcije u jednoj periodi signala vremenskog voenja. Osim toga, da bi se postigla maksimalno mogua performansa, eli se postii stoje mogue krae vrijeme trajanja periode signala vremenskog voenja.

S. RIBARI - GRAA RAUNALA

445 I

Procjena vremena trajanja periode signala vremenskog voenja temelji se na vremenskom ciklusu puta podataka (poglavlje 7.) koji je potreban, podsjetimo se, za izvoenje temeljne operacije na putu podataka koja se sastoji od dohvata (itanja) operanada iz skupa registara ope namjene, izvoenja aritmetike ili logike operacije na njima te pohranjivanja rezultata natrag ujedan od registara u skupu registara. Izvorno,jedno od "zlatnih pravila"RISC arhitekture je: rtvuj sve da bi se ostvario stoje mogue krai vremenski ciklus na putu podataka. S druge strane, elimo da procesor ima takvu arhitekturu koja doputa izvoenje instrukcije u vremenu trajanja ciklusa puta podataka koje je izabrano kao perioda signala vremenskog voenja. Ovdje moramo spomenuti da se posebni napori trebaju uloiti u oblikovanje memorijske jedinice koja svojom brzinom mora podravati brzinu protone strukture (protona izvedba memorije, priruna memorija, protona izvedba prirune memorije) jer ako se to ne postigne, onda se vrijeme obrade uvjetuje upravo brzinom najsporije komponente u izvravanju instrukcija - memorije (vidi Primjer /4.5.). Potovanje spomenutog zlatnog pravila ima za posljedicu prvu "rtvu": sloene instrukcije s raskonim nainima adresiranja, koje su ujedno i vremenski zahtjevne, iskljuuju se iz skupa instrukcija - skup instrukcija se reducira. Ouvanje minimalnog vremenskog ciklusa puta podataka, prema izvornim naelima RISC arhitekture, vodilo je i eliminaciji operacija kao to su operacije brojevima s pominim zarezom, operacije na nizovima znakova pa ak iskljuivanju operacija, odnosno instrukcija cjelobrojnog dijeljenja! Ako se paljivo izaberu instrukcije koje ine instrukcijski skup tako da vremenski najzahtjevnija instrukcija, ako se promatra izdvojeno, traje M perioda signala vremenskog voenja, pri emu je M broj protonih segmenata u instrukcijskoj protonoj strukturi, onda se s obzirom na faktor ubrzanja uslijed protonosti koji je jednak M ostvaruje eljeni cilj: jedna instrukcija u jednoj periodi signala vremenskog voenja. Naravno, to vrijedi uz pretpostavku jednolinog i glatkog protoka instrukcija kroz protonu strukturu sastavljenu od M protonih segmenata. Vrlo brzo vidjet emo da postoje tzv. hazardi u protonoj strukturi koji izazivaju zastoj instrukcija u protonoj strukturi i time se naruava glatki protok instrukcija. Naravno, time se smanjuje faktor ubrzanja obrade u protonoj strukturi.

14.5. INSTRUKCIJSKA PROTONA STRUKTURA ZA CISC PROCESORE


Protonost, kao vrlo vana arhitektonska znaajka, rabi se u RISC, ali i u CISC procesorima. Procesori CISC arhitekture imaju u svom raskonom skupu instrukcija one koje variraju po razini sloenosti, od vrlo jednostavnih koje se izvode za samo nekoliko perioda signala vremenskog voenja, sve do onih koje zahtijevaju nekoliko desetaka pa i stotinu perioda signala vremenskog voenja. Na primjer, za procesor MC 68060 instrukcija za cjelobrojno predznaeno dijeljenje DIVS zahtijeva 38 perioda signala vremenskog voenja, a floatingpoint instrukcija za raunanje drugog korijena (FSSQRT) izvodi se za 68 ili 70 perioda signala vremenskog voenja (ovisno o nainu adresiranja). Raznolikost u sloenosti instrukcija u skupu instrukcija CISC procesora negativno se odraava na propusnost instrukcijske protone strukture. Ilustrirajmo to na jednostavnom primjeru izvoenja slijeda cjelobrojnih instrukcija za CISC procesor (slika 14.15).

446

14. POGLAVLJE: PROTONOST

Pretpostavimo da se instrukcija izvodi za 24 periode signala vremenskog voenja (od toga zauzee aritmetiko-logike jedinice (oznaeno na slici s EX) iznosi 10 perioda). Instrukcija / izvodi se za 12 perioda (zauzee ALU je 2 periode), / se izvodi za 16 perioda (zauzee ALU je 4 periode) i /4zahtijeva 12 perioda signala vremenskog voenja (zauzee ALU 2 periode). Programski odsjeak i3, i4 u neprotonoj izvedbi izvodi se za 24 + 12 + 16 +12 = 64 periode signala vremenskog voenja.

ID

EX
24 periode

ME

W8 IF
i

ID EX

ME

WB
i

IF

ID

EX
16 perioda

ME

WB IF
i

ID EX

ME

WB

12 perioda

12 perioda

SI. 14.15 Izvoenje slijeda instrukcija u neprotonoj izvedbi

Slika 14.16 prikazuje izvoenje slijeda instrukcija /;# i3, i4 u protonoj izvedbi. Na slici 14.16 zapaamo negativni utjecaj razliitih razina sloenosti pojedinih instrukcija. Zbog istodobnih zahtjeva za protonim segmentima od strane instrukcija koje se nalaze u protonoj strukturi pojavljuje se dodatno kanjenje u njihovom izvoenju (oznaeno sjenanim podrujima na slici 14.16). Tako, na primjer, instrukcija i2 ne moe biti pribavljena sve dok se pribavlja instrukcija i r Takoer, instrukcija i2 ne moe napredovati s izvoenjem dok joj instrukcija / ne oslobodi protoni segment EX. Slino se dogaa i s instrukcijama / i i4 Na slici 14.16 moemo uoiti da se instrukcije i i2 sukobljavaju i oko protonog segmenta ME, odnosno pristupa memoriji podataka. Vrijeme potrebno za izvoenje slijeda instrukcija i, ip i3, i4 u protonoj strukturi iznosi 36 perioda signala vremenskog voenja. Faktor ubrzanja obrade u odnosu na neprotonu strukturu je 64/36 = 1.77, to je vrlo daleko od teorijskog ubrzanja koje bi trebalo biti jednako broju protonih segmenata, tj. 5.

\ 1

i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i
3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 (vremenske jedinice)

p.

SI. 14.16 Izvoenje slijeda instrukcija

i^ iy i4 u protonoj strukturi

U ovom smo potpoglavlju naeli jednu vrlo vanu temu koja se odnosi na probleme u instrukcijskoj protonoj strukturi, kako RISC tako i CISC, koji nastupaju kada se dvije ili vie instrukcija, koje se nalaze u protonoj strukturi, natjeu ili sukobljavaju oko pojedinih protonih segmenata.

S. RIBARI - GRAA RAUNALA

447 I

14.6. INSTRUKCIJSKA PROTONA STRUKTURA CISC PROCESORA MC 68060 - ANALIZA SLUAJA


Procesor MC 68060 tvrtke Motorola posluit e nam za ilustraciju uporabe protonosti u CISC arhitekturi. Procesor je definiran kao superkalarni CISC procesor to znai da izdaje i izvrava vie od jedne instrukcije (u ovom sluaju instrukcije koje se odnose na rukovanje cjelobrojnim tipovima podataka) u jednoj periodi signala vremenskog voenja. Osnovna znaajka superskalarnih CISC procesora jest njihova superskalarna RISC jezgra, pri emu se CISC instrukcije pretvaraju tijekom postupka dekodiranja u niz RISC instrukcija koje se zatim izvravaju u superskalarnoj jezgri. Slika 14.17 prikazuje blok-shemu procesora. Procesor se sastoji od sljedeih glavnih funkcijskih jedinica: izvrne jedinice (Execution Unit) koja je sastavljena od jedinice za pribavljanje instrukcije (Instruction Fetch Unit), cjelobrojne jedinice (Integer Unit) i jedinice za operacije brojevima s pominim zarezom (FPU - Floating-point Unit), memorijskih jedinica koje sainjavaju instrukcijska memo rij ska jedinica (Instruction Memory Unit) i memorijska jedinica podataka (Data Memory Unit) - procesor je interno harvardske arhitekture. Instrukcijska memorijska jedinica sastoji se od instrukcijske prirune memorije (Instruction Cache; 8 KB), prirune memorije za translaciju virtualne (logike) adrese u fiziku adresu ATC (Address Translation Cache), tj. translacijski spremnik TLB (Translation Lookaside Buffer) (poglavlje 10.) i upravljaa instrukcijskom prirunom memorijom (Instruction Cache Controller). Memorijska jedinica podataka sastoji se od prirune memorije podataka (Data Cache; 8 KB), prirune memorije za translaciju virtualne adrese u fiziku adresu ATC (translacijski spremnikTLB) koja se odnosi na memoriju podataka i upravljaa prirunom memorijom podataka (Data Cache Controller), sabirnikog upravljaa (Bus Controller) kojim se podrava nemultipleksirani, potpuno sinkroni sabirniki protokol. Jedinica za pribavljanje instrukcije (Instruction Fetch Unit) sastoji se od etiri protona segmenta: i) protoni segment za raunanje adrese instrukcije (AIG) u kojem se odreuje virtualna adresa instrukcije, ii) protoni segment za pribavljanje instrukcije (IF) u kojem se pribavlja instrukcija iz memorije, iii) protoni segment za rano dekodiranje operacijskog koda instrukcije (ED) koje je potrebno za upravljanje protonom strukturom, iv) instrukcijski meuspremnik (IB) u kojem se privremeno pohranjuje instrukcija i informacija potrebna protonoj strukturi. Instrukcija i dodatna informacija ostaju pohranjeni u meuspremniku sve dok cjelobrojna jedinica ne postane raspoloiva. U jedinici za pribavljanje nalazi se i priruna memorija grananja (Branch Cache) koja slui za predvianje grananja.

on
u
VJ

izvrna jednica (Execution Unit) jedinica za pribavljanje instrukcije (instruction Fetch Unit)
A

' AIG

IA Calculate
K K

Branch Cache

Instruction Fetch'
ED

Early Decode

instruction Buffer

pOEP

sOEP

[DS
Decode FPU (Floating Point Unit) oc E/A Fefc/i EA Fetch EA Fetch Decode

DS

EA Calculate

EA Calculate

FP Execute

INT Execution

INT Execution

Data Available Write-Back

TV
Open Bus

instrukcijska memorijska jedinica (Instruction Memory Unit) Instruction ATC Instruction Cache

Address Instruction Cache Controller

cjelobrojna jedinica (integer Unit)

memorijska jedinica podataka (Data Memory Unit)

I c
Data

3 Q Q
Data Cache Controller

Data ATC

Data Cache Control

S. R1BARI - GRAA RAUNALA

449

Cjelobrojna jedinica (Integer Unit) sastoji se od dviju protonih struktura (superskalarnost!) od kojih svaka ima po est protonih segmenata: i) protoni segment za dekodiranje (DS) u kojem se instrukcija dekodira u potpunosti, ii) protoni segment za raunanje efektivne adrese (EA Calculate) u kojem se odreuje adresa efektivna adresa podatka, iii) protoni segment za dohvat operanda iz memorije podataka {EA Fetch), iv) protoni segment za izvravanje cjelobrojne instrukcije (INT Execution), v) protoni segment u kojem se smjeta raspoloivi rezultat (Data Available), vi) protoni segment (Write-Back) u kojem se rezultat upisuje natrag u prirunu memoriju podataka (ostvarenu na procesorskom ipu) ili u vanjsku memoriju. Dvije protone strukture u cjelobrojnoj jedinici pOEP (Primary Operand Execution Pipeline) i sOEP (Secondary Operand Execution Pipeline) omoguuju istodobno izvoenje instrukcija i na taj se nain simultano izvodi vie od jedne cjelobrojne instrukcije. Jedinica za operacije brojevima s pominim zarezom FPU sastoji se od etiri funkcijske jedinice (FPADD - jedinica za zbrajanje, FPMUL - jedinica za mnoenje, FPDIV - jedinica za dijeljenje, FPMISC - jedinica kojom se podravaju instrukcije za rukovanje sadrajima FP registara u sluaju iznimke). Istodobno samo jedna od etiri FP jedinice moe biti aktivna. Budui da istodobno mogu biti aktivne dvije protone strukture u cjelobrojnoj jedinici te jedna od FP jedinica - vrna performansa procesora je tri instrukcije u jednoj periodi signala vremenskog voenja.

14.7. HAZARDI U INSTRUKCIJSKOJ PROTONOJ STRUKTURI


Istodobno izvoenje vie instrukcija u protonoj strukturi moe dovesti do situacije u kojima se ne moe izvesti sljedea instrukcija u slijedu instrukcija u za nju predvienoj periodi signala vremenskog voenja. Takvi dogaaji nazivaju se hazardi. Postoje tri vrste hazarda: i) strukturni hazard, ii) podatkovni hazard (engl. data hazard), iii) upravljaki hazard (engl. control hazard).

14.7.1.

STRUKTURNI HAZARD
Strukturni hazardi nastaju zbog resursnih konflikata kada sklopovi ne mogu podrati sve mogue kombinacije instrukcija koje se istodobno izvode u protonoj strukturi. Na primjer, za slijed instrukcija/j,/ 5 ,/ 4 u protonoj strukturi (slika 14.16) instrukcije/^ i/ 2 su u konfliktu zbog toga to istodobno obje zahtijevaju protoni segment EX, a nakon toga i sklopove u protonom segmentu ME. Instrukcija i2 mora "priekati" i zaustaviti se u napredovanju jer joj u trenutku 11ts nije raspoloiv resurs protoni segment EX. U primjeru sa slike 14.16 instrukcija mora ostati privremeno "zamrznuta" 8ts diskretnih vremenskih trenutaka. Strukturni hazard prouzrokuje zastoj (engl. stali) u protoku instrukcija u protonoj strukturi. Takav se zastoj zorno grafiki predoava protonim mjehuriem (engl. bubble) koji asocira na to da nema u cijevi djelotvornog protoka tekuine - umjesto volumskog dijela tekuine u cijevi se nalazi zrani mjehuri.

450

14. POGLAVLJE: PROTONOST

Primjer 14.6. Za procesor RISC arhitekture vrijedi da je tijekom svake periode signala vremenskog voenja aktivan protoni segment IF. Ako sada pretpostavimo da je memorijska jedinica von Neumannovog tipa, tj. da je jednoulazna i da se u njoj pohranjuju i instrukcije i podaci (dakle, nije harvardskog tipa), onda e instrukcija i2 (load) izazvati resursni konflikt, tj. sukobljavanje oko memorije s instrukcijom i5 i prouzroiti zastoj u napredovanju instrukcije i5 (pribavljanje instrukcije i5 mora biti odgoeno) u trajanju jedne periode signala vremenskog voenja, i to u trenutku (tijekom pete periode signala vremenskog voenja) kada protoni segment ME za nju (instrukciju i) dohvaa podatak iz zajednike memorije: perioda signala vremenskog voenja instrukcija

1 IF

2 ID

3 EX

4 ME

5 WB
ME

10

'I
i2 = load h K h

IF

ID IF

EX ID IF

WB ME EX IF WB ME ID IF WB EX ID ME EX WB ME

EX ID
zastoj

< 6

Opaska: radi jednostavnosti protoni segment za dekodiranje instrukcije i dohvat operanada (ID-OF) oznaavamo u tablici i na slikama samo s ID. Slika 14.18 grafiki predoava ovaj strukturni hazard.
IF ID EX ME WB

IF

ID

EX

ME

WB

IF

ID

EX

ME

WB

IF

ID

EX

ME

WB

IF
protoni mjehuri

ID

EX

ME

WB

IF SI. 14.18 Grafiki prikaz strukturnog hazarda (Primjer 14.6)

ID

EX

ME

WB

Budui da su instrukcije vrste ioad i store zastupljene priblino 30% u odnosu na sve druge instrukcije u programu, zbog resursnog konflikta ove vrste performansa procesora umanjuje se za vie od 10%. Konflikti ove vrste u RISC arhitekturi rjeavaju se viepristupnim memorijskim jedinicama (engl. multiple-port memory), uporabom instrukcijske

S. RIBARI - GRAA RAUNALA

451 I

prirune memorije i prirune memorije podataka, uporabom harvardske arhitekture u kojoj su izdvojeno ostvarene instrukcijska memorija i memorija podataka ili pak instrukcijskim spremnikom (engl. instruction buffer) u kojem (pret)pribavljene instrukcije ekaju na izvrenje. Drugi primjer resursnog konflikta jest istodobni pristup skupu registara. Taj se konflikt rjeava uporabom viepristupnog skupa registara (engl. multiple-ports register file).

14.7.2.

PODATKOVNI HAZARD
Podatkovni hazard nastupa zbog meuzavisnosti podataka. On nastaje kad dvije ili vie instrukcija, koje se nalaze u protonoj strukturi, pristupaju istom podatku ili modificiraju isti podatak (smjeten u registru ili u memoriji). Podatkovni hazard dogaa se kad se zbog protonosti mijenja redoslijed pristupa operandima operacijom itanja ili pisanja tako da se taj redoslijed razlikuje od onog koji je odreen slijednim izvoenjem instrukcija u neprotonoj izvedi. Openito, postoje tri vrste takva hazarda: RAW (Read After Write) - ita nje posl ije u pisa, WAW (Write A fter Write) - pisa nje posl ije pi sa nj a, WAR (Write After Read) - pisanje poslije itanja. Da bismo formalno opisali i predoili ove vrste hazarda, moramo razmotriti skup ulaznih operanada i skup izlaznih operanada (rezultata) za svaku od instrukcija koja ulazi u protonu strukturu. Skup ulaznih operanada neke instrukcije / ; oznait emo s D(/;) i nazivat emo ga domena instrukcije ir Skup izlaznih operanada (rezultata) instrukcije /? oznait emo s R(/;) i nazivat emo ga vidokrug (engl. range) instrukcije ir Na primjer, instrukcija i: add r3, rl, r2 ima domenu {rl, r2} i vidokrug {r3}: D(/) = {rl, r2] i R(/',) = {r3}. Pretpostavimo da instrukcija i2 slijedi instrukciji u programu. Oznaimo s D(i2) i R(/2) domenu i vidokrug instrukcije i2. Grafiki domenu i vidokrug svake od instrukcija moemo predoiti kao to je to prikazano na slici 14.19. a). Hazard vrste RAW grafiki je prikazan na slici 14.19 b). Vidimo da se vidokrug instrukcije i1 (djelomino) preklapa s domenom instrukcije i2 koja slijedi u programu instrukciji /',: rezultati koje instrukcija i1 upisuje (pohranjuje) u registre su operandi koje instrukcija i2ita (dohvaa). Formalno se RAW hazard opisuje kao: R(/j) n D(/"2) * 0, gdje f l oznaava presjek skupova a 0 prazan skup. Slino je opisan WAW hazard u kojem se vidokrug instrukcije i1 i vidokrug instrukcije i2 (djelomino) preklapaju - obje instrukcije upisuju operande (rezultate) u iste registre. Nepravilan rezultat dobiva se ako se u protonoj strukturi dogodi da instrukcija /7 zavri nakon instrukcije i 2 jer e se u tom sluaju u registru koji dijele obje instrukcije nai "stari" rezultat. itatelj e se zapitati kako je mogue da se instrukcija i ] koja se nalazi u programskom slijedu prije instrukcije i2 zavri nakon instrukcije koja joj slijedi u programu. Odgovor na to pitanje dobit emo vrlo brzo - rije je o superskalarnoj arhitekturi procesora u kojoj postoje razliite strategije izdavanja i izvravanja instrukcija. Formalno WAW hazard opisuje se kao: R(/j) H R(/2) * 0. Hazard vrste WAR je formalno definiran kao: D(/,)nR(/>0.

452

14. POGLAVLJE: PROTONOST

Hazard vrste RAW naziva se i stvarna zavisnost podataka (engl. true data dependency), WAW se naziva izlazna zavisnost (engl. output dependency) i WAR je antizavisnost (engl. antidependency). Antizavisnost (kaemo: instrukcija iJe antizavisna o instrukciji i,) nastupa ako i2 slijedi instrukciji i1 u programskom slijedu i ako se vidokrug instrukcije i2 preklapa s domenom instrukcije i r Hazardi u protonoj strukturi koji nastupaju zbog meuzavisnosti podataka mogu se detektirati provjerom uvjeta R(/,) Pi D(/2) * 0, R(#r) f l R(y * 0 i D^) n R(/\,) * 0 tijekom prevoenja programa (statika detekcija hazarda) ili tijekom izvoenja programa (dinamika detekcija hazarda).

SI. 14.19 Grafiki prikaz: a) domene i vidokruga instrukcije; b) RAW hazard; c) WAW hazard; d) WAR hazard

Znaajke protone arhitekture procesora su takve da je za hazard, koji nastupa zbog meuzavisnosti podataka, kritian hazard vrste RAW. Primjer 14.7. Prikaimo hazard vrste RAW koji nastupa u instrukcijskoj protonoj strukturi. Pretpostavimo ovakav slijed instrukcija za protoni model RISC procesora sa slike 14.12:

S. RIBARI - GRAA RAUNALA

453 I

loadr1,A loadr2fB add r3, rl, r2

; R[1]<- M [A], dohvati operand s memorijske lokacije A i smjesti ga u reg. rl ;R[2]<-M[B] ; R[3] R[1 ] + R[2]

Slika 14.20 prikazuje oekivani slijed izvoenja prethodnog programskog odsjeka. IF

loadrl,A

ID

EX

ME

WB

loadr2rB

IF

ID

EX

ME

WB

addr3,r1,r2

IF

ID

EX

ME

WB

lt

2t_

3t

4t

5t

6t

7t

SL 14.20 Oekivani slijed izvoenja programskog odsjeka (Primjer 14.7.)

No oekivani slijed izvoenja za potonji programski odsjeak treba zbog podatkovnog hazarda biti preinaen. Obratimo pozornost na sljedee: instrukcija odd r3, rl, r2 u protonom se segmentu ID-OF dekodira (diskretni vremenski trenutak 4ts (slika 14.20)). Istodobno s dekodiranjem dohvaaju se operandi smjeteni u registrima rl i r2 (u skladu s opisom djelovanja segmenta ID-OF). U segmentu EX (diskretni vremenski trenutak 5ts) izvrava se operacija zbrajanja raspoloivih operanada. No instrukcija load r1,A tek tijekom aktivnosti protonog segmenta WB (trenutak 5ts) upisuje dohvaeni operand s memorijske lokacije A u registar r r Instrukcija load r2, B tek u trenutku 6ts upisuje dohvaeni sadraj s memorijske lokacije B u registar rr To znai da instrukcija addr3, rl, r2 u protonom segmentu ID-OF (u trenutku 4ts) nije dohvatila (proitala) prave podatke jer e oni biti u registru rl i registru r2 upisani tek u vremenskom trenutku 5ts, odnosno 6ts. Rezultat koji bi u trenutku 5t$ (tijekom aktivnosti u EX) generirala instrukcija add r3, rl, r2 bio bi pogrean: u protonom segmentu EX (u vremenskom trenutku 5ts) zbrojit e se stari" sadraji registra r1 i registra r2 jer operandi s memorijskih lokacija A i B jo nisu upisani u registre r1 i r2.

ioodrl, A

IF

ID

EX

ME

WB

load (2, B

IF

ID

EX

ME

WB

addr3,r1,r2
zastoj u protonoj strukturi

IF
i 1 (

ID

EX

ME

WB

1t

2t

3t

4t

5t

6t

7t

8t

9t

SI. 14.21 Rjeenje hazarda vrste RAW umetanjem protonih mjehuria

454

14. POGLAVLJE: PROTONOST

Da bi se osigurao logiki ispravan slijed instrukcija i time dobio rezultat jednak onom za neprotonu izvedbu, mora se poetak izvoenja instrukcija add r3, rl, r2 odgoditi za dvije periode signala vremenskog voenja (2 x ts), odnosno izazvati zastoj u protonoj strukturi. Dakle, prisutni podatkovni hazard vrste RAW imat e za posljedicu kanjenje protoka instrukcija. Grafiki emo to predoiti dvama protonim mjehuriima (slika 14.21). Umetanje protonog mjehuria utjee nepovoljno na performansu procesora, odnosno poveava prosjean broj perioda signala vremenskog voenja po instrukciji (CPI). Procesori protone arhitekture upotrebljavaju posebne tehnike iskljuivanja (engl. interlock) kojima rjeavaju problem hazarda, ali i umanjuju ili u potpunosti uklanjaju zastoj (mjehurie) u protonoj strukturi. Tim se tehnikama i zahvatima (uporaba zaobilaznica (engl. bypass) u protonoj strukturi) moe broj protonih mjehuria koje trai instrukcija load smanjiti na jedan, a zatim uporabom tzv. zakanjelih load instrukcija i pametnih* prevodioca u potpunosti ukloniti protone mjehurie. Jednostavna i uobiajena tehnika u veini RISC procesora jest uporaba zakanjelih load instrukcija (engl. delayed load). Njezina osnovna zamisao sastoji se od sljedeeg: prevodilac tijekom prevoenja programa detektira potencijalni hazard tipa RAW i preureuje slijed instrukcija neposredno nakon instrukcije load, i to tako da neposredno nakon instrukcije load umee instrukciju ije izvoenje ne ovisi o podatku koji se dohvaa instrukcijom load. Mjesto instrukcije u slijedu instrukcija neposredno nakon instrukcije load naziva se prikljuak load kanjenja (engl. load-delay slot). Dakle, prevodilac umee u prikljuak load kanjenja instrukciju koja ne koristi podatak iz instrukcije load (koja joj neposredno prethodi). U najjednostavnijem rjeenju prevodilac umee instrukciju nop [no operation; 3. poglavlje) koja sigurno ne koristi i ne treba podatke koji su rezultat prethodne load instrukcije. Naime, instrukcija nop ne radi nita osim to troi procesorsko vrijeme i ima u ovom sluaju ulogu protonog mjehuria kojim se osigurava pravilan rezultat izvoenja slijeda instrukcija u protonoj strukturi. Primjer 14.8. Pri kaimo kako e se hazard RAW u programskom odsjeku iz Primjera 14.7. rijeiti zakanjelom load instrukcijom (uz pretpostavku da load instrukcija zahvaljujui preinakama u protonoj strukturi zahtijeva samo jedan protoni mjehuri). Izvorni programski odsjeak: loadr1,A load r2, B addr3, rl, r2 prevodilac e umetanjem instrukcije nop u prikljuak load kanjenja osigurati pravilan rezultat koji generira instrukcija add: load rl, A load r2, B nop addr3,r1,r2 Slika 14.22 prikazuje slijed izvoenja instrukcija za tako preinaen programski odsjeak.

S. RIBARI - GRAA RAUNALA

455 I

loadrhA

IF

ID

EX

ME

WB

load r2, B

IF

ID

EX

ME

WB

nop

IF

ID

EX

ME

WB

addr3,rl,r2
prikljuak load kanjenja

IF

ID

EX

ME

WB

SI. 14.22 Izvoenje programskog odsjeka s umetnutom nop instrukcijom u prikljuak load kanjenja

Bolje rjeenje od onog iz Primjera 14.8. jest rjeenje u kojem prevodilac u prikljuak load kanjenja umee, umjesto nop instrukcije, neka korisnu instrukciju iz slijeda instrukcija. Primjer 14.9. Programski odsjeak, koji u viem programskom jeziku: C := A + B E := D u zbirnom jeziku moemo napisati kao: loadr1,A load r2fB addr3,rhr2 load r4, D. Instrukcija addr3, rl, r2 nalazi se u prikljuku load kanjenja. No ona upotrebljava podatak koji se dohvaa neposrednom prethodnom instrukcijom load r2, B. Ovaj izvorni slijed instrukcija vodi hazardu vrste RAW. Prevodilac mora detektirati takvu situaciju tijekom prevoenja i instrukciju add premjestiti iz prikljuka. Umjesto umetanja nop instrukcije, prevodilac e, meutim, preurediti program tako da e u prikljuak smjestiti korisnu instrukciju load r4, D. Prevodilac s takvim svojstvima obino se naziva optimirajui prevodilac. On e preurediti izvorni program na sljedei nain: loadrhA load r2t B load r4, D add r3, r 1, r2. Preureenjem slijeda instrukcija, odnosno umetanjem korisne instrukcije load r4, D u prikljuak load kanjenja, postignuta je glatkoa protoka instrukcija kroz protonu strukturu bez zastoja - nema vie protonih mjehuria. Negativan utjecaj podatkovnog hazarda, odnosno zastoja u protonoj strukturi, moe se umanjiti uporabom tehnike koja se naziva otpremanje (engl. forwarding). (Opaska: ta se tehnika u literaturi jo naziva i zaobilaenje (engl. bypassing).)

456

14. POGLAVLJE: PROTONOST

Zamisao tehnike otpremanja ilustrirat emo jednim zahvatom u protonoj strukturi (slika 14.12) kojim se ostvaruje povratna veza izmeu protonog registra EX/ME i ALU tako da se rezultat ALU operacije vraa u protoni segment EX. Jednako tako, treba ostvariti i povratnu vezu izmeu protonog registra ME/WB i ALU.Tim se povratnim vezama izravno otpremaju podaci u protoni segment EX. to se time dobiva? Ako posebni sklopovi kojima se podrava tehnika otpremanja (engl. forwarding hardware) detektiraju da rezultat prethodne ALU operacija sudjeluje kao operand u tekuoj ALU operaciji, onda e oni povratnom vezom otpremiti taj rezultat prethodne ALU operacije izravno u protoni segment EX, umjesto da se eka na valjani operand koji e tek tijekom aktivnosti protonog segmenta WB biti upisan u izvorini registar u skupu registara i biti raspoloiv protonom segmentu ID za tekuu ALU operaciju. Primjer 14.10. Za programski odsjeak: add r1,r2,r3 sub r4, rl, r5 and r6,r1, r7 vidimo da e rezultat instrukcije add izazvati podatkovni hazard. Instrukcija sub tijekom aktivnosti u protonom segmentu ID-OF dohvaa operande, tj. sadraje registara r1 i r5. No pravi operand u registru rl bit e raspoloiv tek tijekom aktivnosti protonog segmenta WB za prethodnu instrukciju add (vremenski trenutak 5ts; slika 14.23). Da bi instrukcija sub r4, rl, r5 dala ispravan rezultat, moraju se umetnuti tri protona mjehuria, odnosno instrukcija sub r4, rl, r5 mora biti u zastoju u vremenu trajanja triju perioda signala vremenskog voenja (slika 14.23).
addr1,r2,r3

IF

ID

EX

ME

WB

subr4,r1,r5

IF

ID

EX

ME

WB

and 16, rl, r7 i 1ts 1 2t s 1 3t s ( 4t s )


s

IF
1 5t
s

ID
1 6t
s

EX
1 7t
s

ME
1 8t
s

WB
1 9t t *

SL 14.23 Zastoj u trajanju triju perioda signala vremenskog voenja

Ako se uporabi tehnika otpremanja i iskoristi povratna veza izmeu protonog registra EX/ME i ALU jedinice u protonom segmentu EX (slika 14.24), programski se odsjeak izvodi bez zastoja u protoku. Na slici 14.24 koristimo malo drugaiji prikaz protonih segmenata tako da smo nacrtali i protone registre IF/ID, ID/EX, EX/ME i ME/WB jer na taj nain moemo prikazati povratne veze. Na slici 14.24 vidimo da se rezultat prve instrukcije (add rl, r2, r3) iz protonog registra EX/ME izravno otprema u protoni segment EX gdje ima ulogu operanda u instrukciji sub. Uoavamo i da se zahvaljujui drugoj povratnoj vezi rezultat prve instrukcije iz protonog registra ME/WB otprema u protoni segment EX za potrebe instrukcije add.

S. RIBARI - GRAA RAUNALA

457 I

Potrebno je naglasiti da se tehnikom otpremanja ne mogu rijeiti svi oblici podatkovnog hazarda.
IF/ID ID/EX EX/ME ME/WB

add rl, r2, r3

IF

ID

WB

IF/ID

ME/WB

sub r4, rl, r5

IF

ID

IF/ID
addr6,r1,r7

IF

w ID

zaobilaznice

SI. 14.24 Uporaba otpremanja i povratnih veza u protonoj strukturi

14.7.3.

UPRAVLJAKI HAZARD
Upravljaki hazard nastupa u protonoj strukturi tijekom izvoenja instrukcija grananja ili drugih instrukcija koje tijekom faze IZVRI mijenjaju sadraj programskog brojila PC (npr., instrukcije pozivanja potprograma ili vraanja iz njih). Promotrimo slijed instrukcija: addr1,r2,r3 brzrr31,r1 ; PC <- R[31] ako je R[1] = 0 add r2, r4, r5

c: $ubr6,r7,r8 Ponovimo, instrukcija brzr r31,rl je instrukcija uvjetnog grananja kojom se ispituje sadraj registra r1 i ako je sadraj 0, grana se na ciljnu adresu koja je sadrana u registru r31 tako da se nakon instrukcije grananja izvodi instrukcija oznaena oznakom c. (U 3. poglavlju vidjeli smo da se sadraj programskog brojila PC - R[31] mijenja u fazi IZVRI instrukcije grananja.) Ako r1 nije jednako, onda se grananje ne obavlja te se program nastavlja instrukcijom add r2, r4, r5. Kako izgleda izvoenje prethodnog programskog odsjeka u protonoj strukturi? Operacijski kod instrukcije grananja dekodira se tijekom aktivnosti u protonom segmentu ID-OF. Istodobno se u ID-OF dohvaa sadraj registra r31 (ciljna adresa grananja) i sadraj registra r1 koji se ispituje je li 0. Ako je uvjet grananja zadovoljen (rl = 0), dohvaeni se

458

14.

POGLAVLJE: PROTONOST

sadraj registra r31 u sljedeem diskretnom vremenskom trenutku prosljeuje protonom segmentu EX i privremeno se smjeta u protoni registar EX/ME (slika 14.12). Iz protonog registra EX/ME ciljna se adresa upuuje u programsko brojilo PC. Dakle, tek je zavretkom aktivnosti protonog segmenta EX odreena ciljna adresa c. Istodobno s aktivnostima segmenta ID-OF koje se odnose na instrukciju brzr r31, r1, aktivan je protoni segment IF koji pribavlja instrukciju add r2, r4, r5 (vremenski trenutak 3ts; slika 14.25). Problemi vezani za upravljaki hazard nastupaju u ovom trenutku. Instrukcija koja se pribavlja odmah nakon instrukcije grananja i koja bi se trebala nastaviti s izvoenjem je u sluaju da je uvjet grananja zadovoljen "kriva" instrukcija: procesor bi tu trebao zapoeti pribavljanje instrukcije koja se nalazi na ciljnoj adresi c. Najjednostavnija metoda rukovanja grananjem suspendira daljnje izvoenje instrukcije koja u programskom odsjeku slijedi instrukciji uvjetnog grananja. Taj se postupak naziva "ispiranje protone strukture" (engl. flushing) i zapravo odgovara umatanju dva protona mjehuria u protonu strukturu (slika 14.25). U diskretnom vremenskom trenutku oznaenom na slici 14.25 s 5ts pribavlja se instrukcija koja se nalazi na ciljnoj adresi. Ako uvjet za grananje nije zadovoljen, onda e se u diskretnom vremenskom trenutku 5ts ponoviti aktivnost protonog segmenta IF, odnosno ponovo pribaviti instrukcija add r2, r4, r5.
addr1,r2,r3

IF

ID

EX

ME

WB

brzrr3l,r1

IF

ID

EX

ME

WB

add r2, r4, r5

IF

ID

IF

ID

EX

ME

WB

It s

2t s

3t s

4t s

1
s

5t

1
s

6t

1
s

1
7t
s

1
8t
s

1
9t

aktivnosti instrukcije ije e daljne izvoenje biti suspendirano

SI. 14.25 Izvoenje slijeda instrukcija u protonoj strukturi, pri emu instrukcija uvjetnog grananja prouzrokuje zastoj u trajanju dvije periode signala vremenskog voenja

Dva protona mjehuria za svaku instrukciju uvjetnog grananja nepovoljno utjeu na performansu procesora. Vrijeme zastoja moe se smanjiti na jednu periodu signala vremenskog voenja ako se raunanje ciljne adrese grananja (za npr. relativno adresiranje s pomaknuem: PC = PC + pomaknue) dodatnim zbrajalom izvede u protonom segmentu ID-OF te ako se tako dobivena ciljna adresa proslijedi iz protonog registra IF/ID-OF (slika 14.12). U tom se sluaju mora uvesti i povratna veza izmeu protonog registara IF/ID-OF i protonog segmenta IF. Zastoj u protonoj strukturi u trajanju jedne periode signala vremenskog voenja za svaku instrukciju grananja prouzrokuje smanjenje performanse procesora izmeu 10% i 30% ovisno o uestalosti pojavljivanja instrukcija grananja u programu. Razliitim metodama i tehnikama rukovanja grananjem u protonoj strukturi eli se umanjiti taj nepovoljni utjecaj na performansu procesora. Jedna od metoda je zakanjelo grananje (engl. delayed branch).

S. RIBARI - GRAA RAUNALA

459 I

Ako je ciljna adresa raspoloiva nakon aktivnosti protonog segmenta ID-OF tijekom instrukcije grananja (u tom je sluaju potreban samo jedan protoni mjehuri), onda slino kao i kod instrukcije load za instrukciju koja neposredno slijedi instrukciji grananja kaemo da se nalazi u prikljuku branch kanjenja (engl. branch delay slot). U najjednostavnijoj izvedbi prevodilac e tijekom prevoenja umetnuti u prikljuak nop instrukciju: add r1, r2, r3 brzrr31, rl ; PC <- R[31] ako je R[1] = 0 nop add r2, r4, rS

c: sub r6, r7, r8 Na taj e se nain samo osigurati pravilno izvoenje programa, ali negativan utjecaj na performansu procesora nee biti uklonjen. Optimirajui prevodilac, umjesto nop instrukcije u prikljuku branch kanjenja, umetnut e "korisnu" instrukciju koja se izvodi bez obzira na grananje. Na taj se nain uklanja protoni mjehuri i postie glatkoa protoka instrukcija. Primjer 14,11. Optimirajui prevodilac e uporabom metode zakanjelog grananja slijed instrukcija: str22,27(r6) addr1tr2fr3 brzrr31fr1 add r2, r4, r5

c: sub r6, r7, r8 preinaiti u: addrl,r2fr3 brzrr31fr1 str22,27(r6) add r2, r4, r5

c: sub r6, r7f r8 Uoavamo da je korisna instrukcija st r22,27(r6) popunila prikljuak branch kanjenja i ona e se uvijek izvesti. Logiki slijed instrukcija u programskom odsjeku nee biti naruen.

460

14. POGLAVLJE: PROTONOST

Zakanjelo grananje ima kao posljedicu promjenu slijeda izvoenja instrukcija i on se razlikuje od onog koji je odreen u programu napisanom u zbirnom jeziku. Na primjer, pretpostavimo daje u programskom odsjeku: instrukcija 1 instrukcija 2 instrukcija 3 instrukcija 4 instrukcija 5 instrukcija 6

x: instrukcija 13 instrukcija 14

instrukcija 4 instrukcija uvjetnog grananja koja prenosi upravljanje na ciljnu instrukciju 13. Pretpostavimo i da je uvjet grananja ispunjen te da e se grananje dogoditi. "Normalno" izvoenje programskog odsjeka (bez zakanjelog grananja) izgleda ovako: instrukcija 1 instrukcija 2 instrukcija 3 , instrukcija 4 ' instrukcija 13 instrukcija 14

Izvoenje programskog odsjeka s zakanjelim grananjem izgleda ovako: instrukcija 1 instrukcija 2 instrukcija 3 instrukcija 4 instrukcija 5 instrukcija 13 instrukcija 14

Uoavamo da e se instrukcija koja je u prikljuku branch kanjenja uvijek izvesti, i to bez obzira hoe li se grananje dogoditi ili ne.

S. RIBARI - GRAA RAUNALA

461 I

14.7.4.

PREDVIANJE GRANANJA
Jedan od naina rukovanja grananjem jest predvianje grananja (engl. branch prediction). Predvianje grananja moe biti statiko ili dinamiko. Najjednostavnije statiko predvianje grananja je ono koje pretpostavlja da se grananje nee nikad dogoditi. U tom se sluaju nastavlja s izvoenjem u protonoj strukturi instrukcija koje neposredno slijede instrukciji grananja. Ako je, pak, uvjet za grananje ispunjen, tj. dogodi se grananje, onda instrukcija ili instrukcije koje su bile pribavljene i dekodirane nakon instrukcije grananja nee nastaviti s izvoenjem i bit e "uklonjene" iz protone strukture. Izvoenje e se nastaviti pribavljanjem ciljne instrukcije.

Primjer 14.12. Prikaimo kako izgleda izvoenje programskog odsjeka ako se rabi statiko predvianje grananja koje se temelji na pretpostavci da se grananje nikad nee dogoditi. Prvo razmotrimo sluaj kada se zaista grananje nee dogoditi jer uvjet za grananje nije zadovoljen: instrukcija i-1 instrukcija i (grananje) instrukcija i -f 7 instrukcija i + 2 instrukcija i + 3 IF ID IF EX ID IF ME EX ID IF WB ME EX ID IF WB ME EX ID WB ME EX WB ME WB

Vidimo daje protok instrukcija "gladak" i bez protonih mjehuria. Izvoenje u protonoj strukturi kada se zaista dogodi grananje izgleda ovako: instrukcija i- 7 instrukcija i (grananje) instrukcija i + 1 ciljna instrukcija i ciljna instrukcija i + 1 IF ID IF EX ID IF ME EX
-

WB ME
-

WB
-

IF

ID IF

EX ID

ME EX

WB ME WB

Vidimo da se u tom sluaju u protonoj strukturi pojavljuje jedan protoni mjehuri. Analize programa pokazale su da je 37% svih uvjetnih grananja takvo da se ona nee dogoditi. Druga statika metoda predvianja grananja je ona koja pretpostavlja da e se grananje uvijek dogoditi - to se dogaa u 63% uvjetnih grananja. Ako je zaista tako, onda je statiko predvianje na temelju pretpostavke da e se grananje uvijek dogoditi djelotvornije. Jedna od statikih metoda predvianja grananja je ona koja upotrebljava operacijski kod instrukcija grananja za predvianje hoe li se grananje dogoditi ili ne. Na primjer, instrukcija uvjetnog grananja koje se koriste za ostvarivanje programskih petlji (instrukcije vrste ispitaj - dekrementiraj i granaj) imaju vei postotak ostvarenih grananja od instrukcija uvjet-

nog grananja koje ispituju zastavicu preljeva (engl. overflow), dok instrukcija br (branch always - granaj uvijek; poglavlje 3.) ima, naravno, 100% ostvarenih grananja. Dinamiko predvianje grananja temelji se na povijesti grananja i predvianje se obavlja dinamiki tijekom izvoenja programa. Najjednostavnija dinamika shema upotrebljava poseban spremnik za predvianje grananja (engl. dynamic branch-prediction buffer) koji sadrava tzv. tablicu povijesti grananja. Spremnik je zapravo mala priruna memorija s izravnim preslikavanjem kojoj se pristupa na temelju manje znaajnog dijela adrese instrukcije grananja (npr. osam najmanje znaajnih bitova adrese). U toj se memoriji pohranjuje bit predvianja koji govori o tome je li posljednje grananje bilo izvedeno ili ne. Zapravo, na temelju samo tog bita predvianja ne moe se tono znati je li predvianje ispravno. Naime, moe se dogoditi da ak i neka druga instrukcija grananja ima jednak manje znaajan dio adrese koji slui za pristup spremniku. No to i nije tako vano. Ako je pretpostavka o grananju ispravna, zapoinje pribavljanje u predvienom smjeru. Ako se pokae da je predvianje bilo pogreno, bit predvianja se mijenja: ako je bio 1, postaje 0 i obratno. Ovakva shema predvianja grananja u kojoj se koristi jedan bit govori o tome je li se dogodilo samo posljednje grananje. Odluka o grananju je u tom sluaju jednostavna - ona e biti jednaka odluci koja joj je prethodila.

Umjesto sheme s jednim bitom predvianja koja se temelji na povijesti grananja koja see samo do zadnjeg prolog grananja, koriste se shema s dva bita predvianja (engl. two-bit branch history) koja uzimaju u obzir povijest dvaju uzastopnih prolih grananja. S dva bita predvianja kodiraju se 4 stanja koja se mijenjaju kako je to prikazano u dijagramu stanja na slici 14.26. Na primjer, ako se nakon dva uzastopna grananja (stanje 11) dogodi da grananje ne bude ostvareno, bitovi predvianja odreuju stanje 10 u kojem se jo uvijek pred-

S. RIBARI - GRAA RAUNALA

463 I

via da e se grananje dogoditi. Ako se sad u stanju 10 jo jednom dogodi da se grananje ne ostvari, prelazi se u stanje 00 u kojem je predvianje da se grananje nee dogoditi. Sloenije sheme dinamikog predvianja grananja uporabom posebnih spremnika ciljnih adresa izvedenih kao asocijativne memorije (9. poglavlje) (engl. branch-target buffer) omoguuju odreivanje ciljne adrese tijekom aktivnosti u protonom segmentu IF. Dakle, prije dekodiranja operacijskog koda instrukcije! Na taj se nain ostvaruje grananje bez ikakva zastoja u protonoj strukturi (engl. zero-cycle branch).

14.7.5.

PRECIZNI I NEPRECIZNI PREKID (IZNIMKA)


Jedan od uzroka naruavanja "glatkog" instrukcijskog toka kroz protonu strukturu jest i prekid ili iznimka. Kada se dogodi prekid ili iznimka, obino oekujemo da se zavri tekua instrukcija te da se, nakon obaveznih kuanskih poslova (13. poglavlje), prenese upravljanje na prvu instrukciju prekidnog programa ili programa za obradu iznimke. No u protonoj se strukturi nalazi vei broj instrukcija u razliitim fazama izvoenja i tu se pojavljuje problem. Ako se zaista eli nakon zavretka tekue instrukcije (tijekom koje je generiran zahtjev za prekid) prenijeti upravljanje na prekidni program, potrebno je zaustaviti "dotok" instrukcija u protonu strukturu, obustaviti daljnje napredovanje preostalih instrukcija u protonoj strukturi, zapamtiti njihovo stanje, isprazniti protonu strukturu ("isprati je", engl. flushing) te, konano, nakon toga protonu strukturu poeti puniti instrukcijama prekidnog programa. Ovaj nain posluivanja prekida odgovara prekidu koji se naziva precizni prekid (engl. precise interrupt, precise exception) i zahtijeva dodatne potrebne kuanske poslove. U procesorima s protonom strukturom koristi se i tzv. neprecizni prekid ili neprecizna iznimka (engl. imprecise interrupt, imprecise exception), kod kojeg prekid nije precizno pridruen instrukciji tijekom koje je zahtjev za prekid generiran, ve se izvravaju sve instrukcije koje su se nalazile u protonoj strukturi da bi se tek nakon toga posluio prekid (ili iznimka). Na taj se nain smanjuje koliina kuanskih poslova koje treba obaviti procesor, ali se produljuje vrijeme odgovora na prekid ili iznimku.

14.8. SUPERSKALARNI PROCESORI


U potpoglavlju 14.6. upotrijebili smo termin "superskalarni procesor". On oznaava posebnu vrstu procesora koji se koriste tzv. skalarnim tipovima podataka - podacima jednostavne strukture kao to su, na primjer, cjelobrojni (integer) ili brojevi s pominim zarezom [floating-point). Za razliku od skalarnih tipova podataka, postoje i strukturni tipovi podataka kao to su vektori, dvo- i viedimenzionalna polja podataka, nizovi i skupovi. Ovim smo objasnili drugi dio kovanice "superskalarni". Osnovna znaajka superskalarnih procesora je daje prosjean broj perioda po instrukciji (CPI) manji od jedan. To znai da se tijekom jedne periode signala vremenskog voenja izdaje i izvrava vei broj instrukcija. Superskalarni procesor iskoritava implicitni paralelizam koji je sadran u slijedno napisanim programima - slijedu instrukcija koje bi se trebale izvravati sekvencijalno. Superskalarnost zahtijeva od procesora da detektira i iskoristi skriveni paralelizam na razini instrukcija u programima. Da bi se postigao cilj CPI < 1, superskalarni procesor mora imati vei broj izvrnih jedinica od kojih je svaka izvedena kao protona. Dakle, superskalarni procesor je procesor koji ima vei broj nezavisnih instrukcijskih protonih struktura. Slika 14.27 prikazuje naelnu organizaciju superskalarnog procesora. Ona se, u naem sluaju, sastoji od jednog zajednikog

464

14. POGLAVLJE: PROTONOST

protonog segmenta zaduenog za istodobno pribavljanje tri instrukcije (jedinice za pribavljanje instrukcija; slika 14.27) i tri nezavisne instrukcijske protone strukture. I ovdje moemo nai analogiju s industrijskom proizvodnjom na tekuoj vrpci - to je organizacija proizvodnje koja ima vei broj meusobno nezavisnih tekuih vrpci na kojima se istodobno odvijaju proizvodni procesi. Na izlazu se, tada, umjesto jednog gotovog proizvoda u jedinici vremena, pojavljuje q > 1 gotovih proizvoda.
protoni segment 1 instl ^

tx,

ME,

WB,

jedinica za pribavljanje instrukcija

inst2 ^

w tx2

w ME2

WB 2

in5t3 ^
ILJ

w tx3

w ME3

WB 3 "W

SI. 14.27 Naelna organizacija superskalarnog procesora

Slika 14.28 prikazuje izvoenje slijeda instrukcija u superskalarnom procesoru. Vidimo da istodobno u svakoj periodi signala vremenskog voenja iz tri nezavisne protone strukture "izlaze" rezultati triju instrukcija (CPI = 1/3).
instrukcija 1 instrukcija 2 instrukcija 3 instrukcija 4 instrukcija 5 instrukcija 6 instrukcija 7 instrukcija 8 instrukcija 9 instrukcija 10 instrukcija 11 instrukcija 12

IF IF IF

ID,

EX1

ME1 WB, ME2 WB2 ME3 WB3


EX

EX2 EX3 IF IF IF IF IF IF
ID

ME1 WB1 ME2 WB2 ME3 WB3

EX2 EX3

EX1 EX2 EX3 IF IF IF


3

ME, WB, ME2 WB2 ME3 WB3

EX, EX2
EX3
i i

ME, WB,
ME2 WB2 ME3 WB3
i i ^

1ts

2ts

3ts

4ts

5ts

...

SI. 14.28 Izvoenje slijeda instrukcija u superskalarnom procesoru

S. RIBARI - GRAA RAUNALA

465 I

Slika 14.29 prikazuje organizaciju superskalarnog RISC procesora. Procesor ima vie izvrnih jedinica koje su ostvarene kao nezavisne protone strukture. Procesor ima posebnu upravljaku jedinicu PCU (program control unit). Ona se sastoji od protonog segmenata IF, protonog segmenta ID i instrukcijskog spremnika. Njezin je zadatak pribavljanje i dekodiranje nekoliko instrukcija istodobno. Jednako tako, upravljaka jedinica PCU istodobno otprema, preko instrukcijskog spremnika, vei broj (q> 1) instrukcija u razliite specijalizirane izvrne jedinice. Izvrne su jedinice po funkciji specijalizirane (slika 14.29): load/store jedinica (sastoji se od 4 protona segmenta), zaduena je za izvoenje load i store instrukcija, dvije nezavisne jedinice za cjelobrojne operacije (engl. integer unit) izvedene s tri protona segmenta. Obje jedinice imaju pristup viepristupnom skupu cjelobrojnih registara (engl. integer registerfile), jedinica za zbrajanje brojeva s pominim zarezom s pet protonih segmenata, jedinica za mnoenje brojeva s pominim zarezom s pet protonih segmenata. Jedinice za operacije brojevima s pominim zarezom takoer zajedniki dijele viepristupni skup fioating-point registara.

L.

Legenda:

RR (Read Register) - itanje registra CA {Computer Address) - raunanje adrese L (Load) - dohvat operanada WR {Write Register) - upis u registar EX (Exclude) - izvri ALU operaciju

Alig (Aiign) - poravnanje Pack {Package) - normalizacija ADD (Add) - zbrajanje mantisa MUL (Multiply) - mnoenje SP (Sum Product) - zbrajanje

SI. 14.29 Organizacija superskalarnog RISC procesora

Teoretski, superskalarni procesor, koji npr. ima q protonih jedinica, pri emu je svaka od njih n protonih segmenata, ima faktor ubrzanja obrade jednakg x n u odnosu na procesor

466

14. POGLAVLJE: PROTONOST

koji ne koristi paralelizam na razini instrukcija. Na primjer, superskalarni procesor organizacije prikazane na slici 14.27 imao bi faktor ubrzanja obrade jednak g x n = 3 x 5 = 15. Performansa superskalarnog procesora ovisi o mogunosti istodobnog izvoenja vie instrukcija. Istodobno izvoenje veeg broja instrukcija podrazumijeva paralelizam na razini instrukcija (ILP - Instruction-level Parallelism) koji je prisutan u programu koji se izvrava. Kaemo da postoji paralelizam na razini instrukcija kada su instrukcije u slijedu nezavisne i kada se mogu izvesti paralelno, odnosno kada slijed njihova izvoenja ne utjee na konani rezultat. Ako izvoenje instrukcija promatramo u protonoj strukturi, onda su dvije instrukcije paralelne ako se mogu izvriti istodobno u protonoj strukturi bez izazivanja zastoja, ali uz pretpostavku da protona struktura ima dovoljno resursa, odnosno da ne postoji strukturni hazard. Primjer 14.13. Promotrimo sljedea dva programska odsjeka: Programski odsjeak 1 Idrl, 23(r2) ; R[1]- M[23 + R[2J] addi r3, r3f 7 ; R[3] R[3] + 1 add r4, r5, r6 ; R[4] R[5] + R[6] Instrukcije u programskom odsjeku 1 nezavisne su - rezultat njihova izvoenja ne ovisi o redoslijedu njihova izvoenja i zato se mogu izvesti paralelno. Programski odsjeak 2 addi r3, r3, 1 addr4f r3, r2 strO, (r4) ; R[3] <- R[3] + 1 ; R[4] R[3] + R[2] ; M[R[4]] R [0]

Instrukcije u programskom odsjeku nisu nezavisne - druga instrukcija ovisi o rezultatu prve instrukcije, trea instrukcija ovisi o rezultatu druge instrukcije. Promijenjeni redoslijed izvoenja instrukcija ili paralelno izvoenje navedenih triju instrukcija nee dat rezultat jednak slijednom izvoenju. U superskalarnim procesorima koriste se kombinacija optimirajuih prevodioca i sklopovskih tehnika da bi se djelotvorno iskoristio paralelizam na razini instrukcija. Razina paralelizma odreena je sljedeim ogranienjima: stvarna zavisnost podataka (engl. true data dependency), postupkovna zavisnost (engl. procedural dependency), resursni konflikti, izlazna zavisnost (engl. output dependency), antizavisnost (engl. antidependency). Ogranienje stvarne zavisnosti podataka ogleda se u tome to rezultat sljedee instrukcije izravno ovisi o rezultatu jedne ili vie prethodnih instrukcija. Na primjer, add rl, r2, r3 ; R[1 ]- R[2] + R[3] str1,(r5) ;M[R[5]]-R[l]

S. RIBARI - GRAA RAUNALA

467 I

druga se instrukcija moe pribaviti i dekodirati prije prve instrukcije, ali se ne smije i izvriti prije nego to se izvri prva instrukcija. Razlog tomu je to druga instrukcija treba podatak koji je generira kao rezultat prve instrukcije (RAW hazard). Postupkovna zavisnost odnosi se na upravljanje programskim slijedom uporabom instrukcija grananja. Ciljne instrukcije koje slijede grananju postupkovno ovise o grananju i ne smiju se izvesti sve dok se ne obavi grananje. U potpoglavlju Upravljaki hazard vidjeli smo da je ovaj oblik zavisnosti prisutan i kod skalarnih protonih procesora. Resursni konflikti su u superskalarnoj arhitekturi izraeniji nego kod skalarnih protonih procesora. U ovom se sluaju istodobno vei broj instrukcija moe natjecati za isti resurs (npr. memoriju, izvrnu jedinicu, registre i si.). Resursni konflikt u superskalarnoj arhitekturi rjeava se uviestruavanjem resursa (npr. uporaba dviju ili vie cjelobrojnih izvrnih jedinica, dviju ili vie jedinica za operacije brojevima s pominim zarezom i si.). Izlaznu zavisnost moemo ilustrirati na jednostavnom primjeru programskog odsjeka: add r3, r3, r5 ; R[3]- R[3] + R[5] addi r4, r3, 7 ; R[4] <- R[3] + 1 addi r3, r5, 1 ; R[3] <-R[5] + 1 add r7, r3, r4 ; R[7] <- R[3] + R[4] Ovdje vidimo da izmeu prve i druge instrukcije postoji stvarna zavisnost podataka - druga instrukcija treba rezultat prve instrukcije jer ga koristi kao operand. etvrta instrukcija ovisi o rezultatu tree instrukcije (treba ekati rezultat koji e trea instrukcija upisati u registar r3). Izmeu prve i tree instrukcije ne postoji stvarna zavisnost podataka - instrukcija addir3, r5,1 ne treba rezultat instrukcije add r3, r3, r5. No ako se trea instrukcija izvri prije negoli se izvri prva instrukcija, tada e etvrta instrukcija dohvatiti pogrean operand iz registra r3. To znai da se trea instrukcija mora izvriti nakon prve instrukcije da bi izlazna vrijednost (sadraj registra r3) bila ispravna. Ne smije se dopustiti da se trea instrukcija izvri prije prve jer u tom sluaju rezultat u registru r3 nee biti ispravan (WAW hazard izlazna zavisnost). Antizavisnost predstavlja hazard vrste WAR koji smo definirali u odjeljku Podatkovni hazard. Na primjer, u programskom odsjeku: mulrl,r2,r3 add r2, r4, r5 druga instrukcija add r2, r4, r5 upisuje u registar r2, a prva instrukcija mul rl, r2, r3 koristi isti registar kao izvor (domenu). Ako se iz bilo kojeg razloga instrukcija add r2, r4, r5 izvri prije instrukcije mul rl, r2, r3, dobit e se pogrean rezultat. Napomenimo da se u strunoj literaturi WAW i WAR nazivaju jo i lane zavisnosti (engl. false dependency) koje se mogu ukloniti preimenovanjem registara (engl. register renaming). Primjer 14.14. U programskom odsjeku: mul rl, r2, r3 addr2/r4/r5 u kojem su dvije instrukcije antizavisne, prevodilac nakon to detektira zavisnost WAR moe preimenovanjem registra r2 u npr. registar r6 ukloniti WAR zavisnost:

468

14. POGLAVLJE: PROTONOST

rnul rl, r2, r3 add r6, r4, r5 Slino je i sa zavisnosti WAW, U programskom odsjeku: mulr1,r2,r3 addr1,r4,r5 u kojem jedna i druga instrukcija imaju isti vidokrug (izlazna zavisnost), zavisnost WAW uklanja se tako da se npr. registar r1 u drugoj instrukciji preimenuje u npr. r7: mulrl,r2,r3 addr7fr4,r5 Na taj se nain dobivaju dvije instrukcije koje su potpuno nezavisne i zato se mogu izvesti paralelno. Potrebno je istaknuti da se preimenovanje registara moe temeljiti na tzv. statikoj izvedbi koja se upotrebljava tijekom postupka prevoenja programa (izvode je optimirajui prevodioci), ali i na dinamikoj izvedbi koja se koristi tijekom izvravanja programa u superskalarnom procesoru. Jasno je da ova druga izvedba zahtijeva dodatne sklopove - registre, meuspremnike i dodatne putove podataka. Superskalarni procesori kao to su K5, PentiumPro, R 10000, PowerPC 620 i mnogi drugi koriste dinamiku izvedbu preimenovanja registara.

14.8.1.

NAINI IZDAVANJA I ZAVRAVANJA INSTRUKCIJA U SUPERSKALARNOJ ARHITEKTURI PROCESORA


Performansa superskalarnih procesora ne ovisi samo o broju nezavisnih protonih struktura i broju protonih segmenata u svakoj od njih, ve i o tome je li procesor sposoban nai paralelizam na razini instrukcija i u skladu s njim uspjeno koordinirati pribavljanje, dekodiranje i izvravanje vie instrukcija istodobno. U literaturi se koristi izraz "izdavanje instrukcija" (engl. instruction issue) i on podrazumijeva postupak zapoinjanja izvoenja instrukcija u funkcijskim jedinicama procesora. Superskalarni procesor ima ugraene mehanizme kojima moe "gledati unaprijed" (engl. lookahead, iookahead window) u odnosu na trenutnu instrukciju koja se izvrava i otkriti instrukcije koje se zahvaljujui tomu to su meusobno nezavisne mogu paralelno izvoditi. Na taj se nain pokuava rijeiti problem koji nastupa kada su susjedne ili bliske instrukcije u programskom slijedu zavisne i kada se zbog toga moraju umetati protoni mjehurii, odnosno odgaati izvoenje pojedinih instrukcija, i to bez obzira to postoje viestruke funkcijske jedinice. Zavravanje instrukcije (engl. instruction completion) odnosi se na trenutak kada je instrukcija okonana. Tri su osnovna naina izdavanja i zavravanja instrukcija u superskalarnoj arhitekturi i oni se temelje na redoslijedu u kojem se instrukcije pribavljaju, redoslijedu u kojem one zavravaju te redoslijedu u kojem instrukcije mijenjaju sadraje registara i memorijskih lokacija: izdavanje i zavravanje instrukcija u redoslijedu u kojem se pojavljuju i u programu (engl. in-order issue with in-order completion),

S. RIBARI - GRAA RAUNALA

469 I

izdavanje instrukcija u redoslijedu, ali sa zavravanjem izvan redoslijeda (engl. in-order issue with out-of-order completion), izdavanje i zavravanje instrukcija izvan redoslijeda (engl. out-of-order issue with outof-order completion). Vrlo se esto u literaturi koristi termin "izvoenje instrukcija izvan redoslijeda"(engl. out-oforder execution) koji se, openito, odnosi na posljednji navedeni nain izvoenja instrukcija. Najjednostavniji nain izdavanja i izvravanja instrukcija je onaj koji tono odgovara redoslijedu pojavljivanja instrukcija u programu. Taj se nain u superskalarnoj arhitekturi procesora ne koristi, a rijetko ga moemo nai i u arhitekturi "obinih" protonih procesora (podsjetimo se optimirajuih prevodioca koji koriste prikljuak lood kanjenja). Izdavanje instrukcija u redoslijedu, ali sa zavravanjem izvan redoslijeda koristi se u skalarnim RISC i superskalarnim procesorima. Na taj se nain postie djelotvornije iskoritenje protonih segmenata u pojedinim protonim strukturama. Kad procesor koristi tehniku izdavanja instrukcija u redoslijedu njihova pojavljivanja u programu, on samo moe dekodirati instrukcije do toke kad je utvrena meuzavisnost podataka ili resursni konflikt. Nakon toga se druge instrukcije u slijedu ne mogu pribavljati i dekodirati sve dok se konflikt ili meuzavisnost ne razrijei. Da bi se omoguilo izdavanje instrukcija izvan redoslijeda, nuno je odvojiti protoni segment za dekodiranje od protonog segmenta za izvravanje. To se postie uporabom instrukcijskog meuspremnika koji se jo naziva i instrukcijski prozor (engl. instruction window) kao to je to prikazano na slici 14,29. U instrukcijski spremnik smjetaju se dekodirane instrukcije koje ekaju na izvravanje. Sve dok instrukcijski spremnik nije pun, procesor pribavlja i dekodira instrukcije. Instrukcijski se spremnik prazni tako da se iz njega izdaju (upuuju) instrukcije u izvravanje, i to ako su ispunjena dva sljedea uvjeta: i) funkcijska jedinica koju zahtijeva instrukcija je slobodna, ii) nema resursnih konflikata niti meuzavisnosti podataka za tu instrukciju. Zahvaljujui uporabi instrukcijskog spremnika superskalarni procesor ima sposobnost "gledanja unaprijed" (engl. lookahead) i moe nai nezavisne instrukcije u programskom slijedu i izdavati ih izvan redoslijeda u kojem se one nalaze u programu. Instrukcijski spremnik nije dodatni protoni segment, ve slui procesoru tako da mu prua dovoljno informacija o instrukciji na temelju kojih on odluuje o njenziom izdavanju, odnosno upuivanju u izvrnu protonu strukturu. Uporaba najopenitijeg naina izdavanja i zavravanja instrukcija na nain "izdavanje i zavravanje instrukcija izvan redoslijeda" doputa najdjelotvornije iskoritenje protonih struktura u superskalarnom procesoru, ali se suoava i s novim problemom, a to je nova antizavisnost podataka. Primjer 14.15. Ilustrirajmo kako razliiti naini izdavanja i zavravanja instrukcija utjeu na performansu superskalarnog procesora, koji ima dvije protone strukture za pribavljanje i dekodiranje instrukcija (IF1 - ID1 i IF2 - ID2), instrukcijski spremnik te etiri protone funkcijske jedinice (logiku jedinicu, jedinicu load, zbrajalo, mnoilo) (slika 14.30), za programski odsjeak koji se sastoji od est instrukcija:

470

14. POGLAVLJE: PROTONOST

instrukcija /?: instrukcija i2: instrukcija i3: instrukcija i4: instrukcija i5: instrukcija

IdrlA addr2,r2,r1 add r3, r3, r4 mul r4, r4, r5 notr6,r6 mul r6, r6, r7

R[1]
R[2]

M[A] R[2] + R[1] R[3] + R[4] R[4] * R[5] R[6] R[6] * R[7]

R[3] R[4] R[6] R[6]

1 1

ID,

podaci iz prirune memorije podataka

logika jedinica

instrukcije iz instrukcijske prirune memorije

mstrukcijski spremnik

mnoilo M, zbrajalo A1 M2

A2

i1 iD.
SL 1430 Superskalarni procesor (Primjer 14.74.)

Prije negoli prikaemo aktivnosti u protonim segmentima dviju protonih struktura, pokuajmo utvrditi vrste zavisnosti podataka koje rabe prethodno navedene instrukcije. Instrukcija i2 koristi operand iz registra r1 koji upisuje instrukcija /? - rije je o RAW, odnosno stvarnoj zavisnosti podataka. Instrukcija i4 antizavisna je o instrukciji i3 jer i4 slijedi instrukciji i3 u programskom slijedu, ali se vidokrug instrukcije (izlaz) i4 preklapa s domenom (ulazom) instrukcije i3: instrukcija i4 upisuje rezultat u registar r4 koji sadrava operand instrukcije i3. Odnos izmeu instrukcija /5 i /J e takav da postoji stvarna zavisnost podataka jer je vidokrug instrukcije i5 domena instrukcije /6: instrukcija i6 koristi sadraj registra r6 kao operand. Uz sve to, te su dvije instrukcije takve da postoji i izlazna zavisnost - obje instrukcije upisuju rezultat u isti registar (r6). Slika 14.31 prikazuje izvoenje programskog odsjeka kada se instrukcije izdaju i zavravaju redoslijedom u kojem se pojavljuju i u programu. Protona struktura 1 (IF1 - IDt) koristi se instrukcijama iJf i3 i /5. Protona struktura 2 (IF2 - ID2) radi s instrukcijama i2, i4 i /6. Zbog stvarne zavisnosti instrukcija i2 mora priekati jednu periodu signala vremenskog voenja da bi mogla koristiti podatak iz registra rl. Instrukcija i3 kasni za jednu periodu jer instrukcija i2 koristi zbrajalo (resursni konflikt). Instrukcija /"5 mora kasniti dvije periode

S. RIBARI - GRAA RAUNALA

471 I

vremenskog voenja da bi se sauvalo zavravanje instrukcija u slijedu. Instrukcija i 6 treba ekati prije nego to se izda rezultat koji generira instrukcija On e biti raspoloiv nakon aktivnosti protonog segmenta E ^ zahvaljujui povratnoj vezi izmeu segmenata.
periode signala vremenskog voenja

1
protona struktura 1

1 1

r 1

!
t 1 1

!
i I

(IFflD,)
protona struktura 2

> F ,
IF

ID,
I D

E2

WB, A, WB2 A, M, 'D, "D3 M2 E, M, A2 M3

j ]

(IF -ID)

|
i i

I F ,
IF

ID, ID2 > F ,

WB7 WB2 WB, M2


i

i 1 i i

>F2

M3

WB2

SI. 14,31 Izdavanje i zavravanje instrukcija u redoslijedu u kojem se pojavljuju i u programu

Slika 14.32 a) prikazuje sluaj izdavanja instrukcija u redoslijedu, ali sa zavravanjem izvan redoslijeda. Slika 14.32 b) prikazuje redoslijed zavravanja instrukcija. Vidimo da je i u ovom sluaju potrebno devet perioda signala vremenskog voenja, ali da instrukcija i5 ne mora ekati dvije periode vremenskog voenja i moe zavriti prije instrukcija /3 i i4 koje su potpuno neovisne o instrukciji / r
periode signala vremenskog voenja 1
1 [

2
1

3
i

4 y , ,
i

5
,

8
i i

I F ,
I F

ID, ID2 I F , ID,


I D

WB, A, A. A, M, ID, ID2 M2 E, WB2 A2 M3 WB, M, M2 M3


1

WB, WB2
1

i i i j i

IF2

I F , F2

V > !i 2 4 VI c
j i

WB2

a)
periode: protona struktura 1 protona struktura 2

l3 > 4 6

> 2 b)

SI. 14,32 Izdavanje instrukcija u redoslijedu, ali sa zavravanjem izvan redoslijeda

472

14. POGLAVLJE: PROTONOST

Slika 14.33 a) prikazuje izvoenje istog programskog odsjeka na nain izdavanja i zavravanja instrukcija izvan redoslijeda. Moemo primijetiti da jeza izvoenje programskog odsjeka potreban manji broj perioda signala vremenskog voenja te da je poveana iskoristivost protonih segmenata u odnosu na prethodna dva naina izdavanja i zavravanja instrukcija. Slike 14.33 b) i c) prikazuju redoslijed izdavanja i zavravanja instrukcija.
periode signala vremenskog voenja 1 2 3

5
|i

6
|I

7
1

8
1

IF,
I F

ID,
I D

A2

WB1

M,
ID,
I D

M2
E,

M3

WB2

IF,
'
F

F2
ID,
I D

WB2 M, M2

IF, >F2
1 !

M3
WB2
i

3
ir

A,

A2

a)
periode: protona struktura 1 protona struktura 2

> 3 > 4 b)

's > 2

periode: protona struktura 1 protona struktura 2


j

's '4 '2

c)
SI. 14.33 Izdavanje i zavravanje instrukcija izvan redoslijeda a), redoslijed izdavanja instrukcija b), redoslijed zavravanja instrukcija c)

15. POGLAVLJE

VIEPROCESORSKI SUSTAVI, VIEJEZGRENI I GRAFIKI PROCESORI


.1. OBLICI I RAZINE PARALELIZMA
U 14. poglavlju upoznali smo se s protonim procesorima, superskalarnim procesorima i paralelizmom na razini instrukcija ILP - Instruction-level Parallelism. U relativno kratkoj povijesti raunarskih sustava moemo uoiti razliite razine paralelizma koje se pojavljuju u procesoru, odnosno raunarskom sustavu. Do priblino druge polovine osamdesetih godina prolog stoljea prevladavajui oblik paralelizma temeljio se na bitovnoj razini (engl. bit-level) koji se oitovao u poveanju duljine rijei procesora: od 4-bitnih, 8-bitnih, 16-bitnih pa sve do 32- ili 64-bitnih procesora. Zahtjevi koji su pratili razvoj arhitekture procesora i koji su koristili paralelizam na razini bita bili su prvenstveno poveanje izravno adresirljivog prostora (prije nego izravno poveanje performanse procesora) te poboljani naini prikaza i rukovanja brojevima s pominim zarezom. Kada govorimo o paralelizmu, razlikujemo dva razliita konteksta: raspoloivi paralelizam u programima i iskoriteni paralelizam koji se pojavljuje tijekom izvoenja programa. Raspoloivi paralelizam sadran je u biti samog problema i njegovom programskom rjeenju. Moe se govoriti o raspoloivom funkcijskom paralelizmu i raspoloivom podatkovnom paralelizmu. Raspoloivi funkcijski paralelizam oituje se u logikom rjeenju problema i pojavljuje se u formalnim opisima rjeenja problema kao to su dijagrami toka, grafovi toka podataka (engl. dataflow graph), programi i si. Raspoloivi podatkovni paralelizam izvire iz same prirode podataka svojstvenih problemu i iz struktura podataka koje se rabe u rjeenju problema te koje doputaju paralelne operacije na njihovim elementima. Na primjer, podatkovni paralelizam svojstven je digitalnoj obradi slike i problemima u kojima se rukuje strukturama podataka kao to su vektori i matrice. Raspoloivi funkcijski paralelizam moe se predoiti razliitim razinama koje se izraavaju sa zrnatosti. Zrnatost je mjera koliine raunanja ili obrade u programu. Na primjer, kao mjera se moe uzeti broj instrukcija u nekom programskom odsjeku ili programskom segmentu. Na taj nain zrnatost odreuje osnovni programski segment koji je izabran za paralelnu obradu. Razlikujemo etiri razine raspoloivog funkcijskog paralelizma:

474

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

paralelizam na razini instrukcija (fino zrnati paralelizam), paralelizam na razini programskih petlji (engl. loop-level parallelism; srednje zrnati paralelizam), paralelizam na razini procedura, funkcija ili potprograma (srednje zrnati paralelizam), paralelizam na razini programa (grubo zrnati paralelizam). Primjer 15.1. S paralelizmom na razini instrukcija dovoljno smo se dobro upoznali u 14. poglavlju, dok paralelizam na razini procedura, funkcija i potprograma te paralelizam na razini programa moemo intuitivno objasniti. Ilustrirajmo paralelizam na razini programske petlje. Promotrimo programsku petlju kojom se zbrajaju dva jednodimenzionalna polja svako od 1000 elemenata: for (i = i ; i <= 1000; i ~ i + 1) x[i] = x[i] +y[i]; Svaka se od 1000 iteracija; i = 1,2,..., 1000 u programskoj petlji moe izvesti istodobno s svim ostalim iteracijama tako da se njihovo izvoenje preklapa (istodobno se mogu izvesti 1000 zbrajanja x[i] = x[i] +y[i]; i = 1,2,..., 1000). Raspoloivi funkcijski paralelizam mogu iskoristiti arhitektura procesora i operacijski sustav da bi se poveala brzina obrade. Razine iskoritenog paralelizma su sljedee: paralelizam na razini instrukcija, paralelizam na razini d ret vi (engl. thread), paralelizam na razini procesa, paralelizam na korisnikoj razini. Paralelizam na razini instrukcija iskljuivo se koristi u arhitekturi procesora, dok se paralelizam na razini dretvi i procesa iskoritava u arhitekturi, ali i u operacijskom sustavu. Paralelizam na korisnikoj razini rabi se u operacijskim sustavima, npr. viezadani rad (engl. multitasking), vieprogramski rad (engl. multiprogramming) i obrada dodjeljivanjem vremena (engl. time-sharing). Podatkovni se paralelizam moe iskoristiti na dva naina: izravno uporabom arhitektura procesora koje podravaju paralelne operacije na podatkovnim elementima (npr. procesori SIMD arhitekture, procesori upravljani tokom podataka (engl. data-flow)), pretvorbom raspoloivog podatkovnog paralelizma u funkcijski tako da se uporabom naredbi iz viih programskih jezika oznae paralelno izvodljive operacije na podatkovnim elementima.

15.1.1.

PARALELIZAM NA RAZINI INSTRUKCIJA


Od druge polovine osamdesetih godina pa sve do sredine devedesetih godina prolog stoljea prevladava paralelizam na razini instrukcija koji je jednako znaajan za RISC i CISC procesore. Ova razina paralelizma podloga je za izvedbu superskalarnih procesora koji koriste razliite naine izdavanja, izvravanja i zavravanja instrukcija (14. poglavlje). Slika 15.1 prikazuje udio ukupnog broja perioda signala vremenskog voenja (izraen u %) ovisno o broju izdanih instrukcija. Podaci prikazani na slikama 15.1 i 15.2 dobiveni su kao srednja

S. RIBARI - GRAA RAUNALA

475 I

vrijednost brojnih ispitnih programa (engl. benchmark) ije je izvoenje simulirano virtualnim tzv. agresivno oblikovanim strojevima (engl. aggressive machine design) koji mogu paralelno izvesti vei broj instrukcija pod idealnim uvjetima u kojima nema ogranienja raspoloivih resursa i uz uvjet savrenog predvianja grananja. Vidimo daje paralelizam na razini tri instrukcije najvei, odnosno da dvije, tri i etiri paralelne instrukcije prevladavaju u programima (oko 66 % svih perioda). Jednako tako, vidimo da se oko 18% od ukupnog broja perioda signala vremenskog voenja troi na strogo sekvencijalne instrukcije. Uz sve to vidimo da pet ili vie instrukcija moe biti izdano istodobno za svega 10 % sluajeva. Ovaj dijagram moe posluiti i kao putokaz u dizajnu novih arhitektura i za donoenje odluke o tome koliko nezavisnih protonih struktura treba implementirati u procesoru. Ujedno nam govori o ogranienjima paralelizma na razini instrukcija.

c OJ35 rs o > o > o c

(U

30

25 CT1
"O

20

o o >
O c o.

15

o S

10

n
0 1

I I I I I I
2 3 4 5 6 7 broj izdanih instrukcija

SI. 15.1 Odnos udjela broja perioda signala vremenskog voenja (%) ovisno o broju instrukcija koje se mogu paralelno izvesti

Slika 15.2 prikazuje odnos izmeu faktora ubrzanja obrade i broja izdanih instrukcija u jednoj periodi signala vremenskog voenja. Vidimo da je faktor ubrzanja obrade najvei i iznosi izmeu 2.5 i 3.0 za 15 istodobno izdanih instrukcija. Moemo primijetiti da se ve nakon pet izdanih instrukcija u jednoj periodi signala vremenskog voenja postie ubrzanje obrade vee od 2.5 puta. Paralelizam na razini instrukcija je implicitni paralelizam koji prevodilac ili sklopovlje procesora mora detektirati u slijednom programu - statiki tijekom prevoenja programa ili dinamiki tijekom izvoenja samog programa. Vano je naglasiti da je program, koji se izvodi tako da koristi viestruko izdavanje instrukcija i protonu strukturu (superskalarnost i protonost), izvorno napisan u sekvencijalnom obliku i predvia izvoenje instrukciju po instrukciju.

476

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

broj izdanih instrukcija po periodi

SI. 15.2 Odnos izmeu faktora ubrzanja obrade i broja izdanih instrukcija u jednoj periodi signala vremenskog voenja

Djelotvornije iskoritenje paralelizma na razini instrukcija moe se postii uporabom eksplicitnog ili izravno izraenog paralelizma u samoj specifikaciji instrukcije ili niza instrukcija. Ovaj pristup u arhitekturi raunarskog sustava poznat je pod nazivom VLIW (Very Long Instruction Word) arhitektura ili EPIC (Explicitly Parallel Instruction Computing). Arhitektura procesora s vrlo dugim instrukcijskim rijeima (VLIW) temelji se na tri ustaljena koncepta koja ve poznajemo - horizontalno mikroprogramiranje, superskalarna obrada i viestrukost funkcijskih jedinica. Osnovna znaajka VLIW procesora je vrlo duga instrukcijska rije kojom se odreuju viestruke operacije koje se mogu istodobno izvesti. Programer ili prevodilac (to je ei sluaj) izravno specificiraju operacije koje se mogu izvesti istodobno. Ovakav pristup izgleda loginiji od onog u kojem se paralelizam "skriva" u sekvencijalno napisanom programskom kodu da bi se nakon toga trebao otkriti i iskoristiti. Slika 15.3 a) prikazuje arhitekturu VLIW procesora, a slika 15.3 b) format VLIW instrukcije. Procesor ima viestruke funkcijske jedinice koje dijele veliki zajedniki skup registara. Svaka funkcijska jedinica izvedena je kao protona jedinica. Operacije koje se izvode istodobno u funkcijskim jedinicama sinkronizirane su VLIW instrukcijama koje su duljine npr. 256,512 ili 1024 bita. Meusobna zavisnost operacija i ogranienja u pogledu broja raspoloivih funkcijskih jedinica uzimaju se u obzir pri"pakiranju"tih operacija u VLIW instrukciju tako da je sklopovlje jednostavnije - ne treba otkrivati (detektirati) i izluivati paralelne operacije te utvrivati meusobnu zavisnost izmeu njih. Vea razina paralelizma u VLIW arhitekturi postignuta je i uporabom prevodioca koji imaju "iri" (globalni) uvid u program u odnosu na superskalarne procesore kod kojih se izdavanje instrukcija temelji na "uskom" pogledu (engl. peephole) koji se sastoji samo nekoliko slijednih instrukcija u programu.

S. RIBARI - GRAA RAUNALA

477 I

veliki skup registara ope namjene

nn
memorija

O
load/ store jedinica

O
FP zbrajalo 2 FP mnoilo

O
cjelobrojna jedinica jedinica grananja

FP zbrajalo 1

a)

FP mnoenje load/store FP zbrajanje FP zbrajanje b) grananje cjelobrojna operacija

SI. 15.3 Arhitektura VLIW procesora a) i format VLIW instrukcije b)

Vrlo slian koncept eksplicitnog izraavanja paralelizma, nazvan EPIC, koriten je u arhitekturi IA-64 64-bitnog Intelovog procesora Itanium. (Opaska: naziv Itanium koristi se za Intelovu porodicu RISC procesora koji su razvijeni od 2001. do 2010. i nose oznake Itanium (kodnog imena Merced) i Itanium 2 (procesori s 1,2 ili 4 jezgre)). Procesor Itanium je load/ store arhitekture i ima 64-bitne adresne registre i registre podataka koji su organizirani kao skup od 128 registra ope namjene. Procesor ima i skup od 128 registara za brojeve s pominim zarezom (duljine 82 bita), 64 1-bitnih tzv. predikatnih registara i 8 registara (svaki duljine 64 bita) koji se koriste za grananje. Procesor ima vei broj izvrnih jedinica razliitih namjena (cjelobrojne jedinice, jedinice za operacije brojevima s pominim za rezom, jedi nie grananja, jedinice load/store, multimedijske jedinice). Slika 15.4 prikazuje pojednostavljeno sklopovsku organizaciju procesora IA-64 arhitekture. Ako je usporedimo s organizacijom VLIW procesora (slika 15.3), moemo uoiti vrlo veliku slinost, tako da se IA-64 moe opravdano smatrati arhitekturom koja se temelji na VLIW/EPIC pristupu.

128 64-bitna registra ope namjene izvrna jedinica

O
izvrna jedinica izvrna jedinica

izvrna jedinica

memorija

64 pred i katna registra (1-bitni)

A-

izvrna jedinica 128 FP registra (82-bitni)

izvrna jedinica

izvrna jedinica

izvrna jedinica

SI. 15.4 Pojednostavnjeni prikaz sklopovske organizacije procesora IA-64 arhitekture

478

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

Instrukcijska rije za procesor IA-64 arhitekture duljine je 128 bita i sadrava tri instrukcije tipa RISC koje tvore tzv. "sveanj" (engl. bundle). Svaka od instrukcija u svenju duljine je 41 bita pa u svenju tri instrukcije zauzimaju 123 bita, dok se preostalih 5 bitova koriste kao predloak koji sadrava informaciju o njihovom rasporeivanju (engl. scheduling). Tonije, 41-bitna"instrukcija"zapravo nije prava instrukcija (u Intelu je nazivaju slog {engl. sy//afc>/e)) jer se ona mora kombinirati s 5-bitnim predlokom. Predloak odreuje tipove instrukcija u svenju i odreuje koje e se instrukcije izvesti pora/e/no. Tipovi instrukcija u svenju mogu biti sljedei: A tip - odnosi se na cjelobrojnu jedinicu (l-unit) i odreuje operacije cjelobrojne ALU jedinice (npr. zbroji, oduzmi, logiko I, logiko ILI, usporedi), I tip - odnosi se na cjelobrojnu jedinicu, ali odreuje operacije koje nisu cjelobrojne aritmetiko-logike, ve se odnose na tzv. multimedijske operacije kao to multimedijski posmak, ispitivanje bitova, premjetanje, M tip - odnosi se na jedinicu za pristup memoriji (M-unit) i odreuje load i store instrukcije za cjelobrojne i FP (floating-point) registre, F tip - odnosi se na jedinicu za operacije brojevima s pominim zarezom (F-unit) i odreuje operacije brojevima s pominim zarezom, B tip - odnosi se na jedinicu grananja (B-unit) i odreuje uvjetno, bezuvjetno grananje te pozive potprograma, L + X tip - izvravaju se u jedinici grananja ili u cjelobrojnoj jedinici i odreuju mjeovite i specijalne instrukcije (npr. nop, stop). Specifikacija paralelnosti u izvoenju instrukcija moe se proiriti i na dijelove nekoliko sveanja. Zahvaljujui 5-bitnom predloku pojednostavljenje postupak dekodiranja i izdavanja instrukcija. Mogui su sljedei naini kombiniranja triju instrukcija u svenju (ovisno o binarnom uzorka u 5-bitnom predloku): ij || i21| i3 - sve se tri instrukcije izvode paralelno, ij & i21| i3- prvo se izvodi instrukcija /,, a zatim se instrukcije i2 i i3 izvode paralelno, /71| i2 & i3- prvo se instrukcije i i2 izvode paralelno, a onda instrukcija i3, ij & i2 & i3 - sve se tri instrukcije u svenju izvode slijedno. Jedna od najvanijih metoda za nalaenje i djelotvorno iskoritenje paralelizma na razini instrukcija u protonoj i superskalarnoj arhitekturi procesora je metoda pekulacije ili nagaanja (engl. speculation). Pojednostavljeno, pekulacija je pristup koji doputa prevodiocu ili procesoru nagaanje o svojstvima i/ili ishodu neke instrukcije, i to tako da omogui zapoinjanje ostalih instrukcija koje mogu ovisiti o instrukciji na koju se pekulacija odnosi. Na primjer, pekulacija se moe odnositi na to da instrukcija store koja prethodi instrukciji load nee referenci rati istu memorijsku lokaciju (nagaanje da nije rije o RAW hazardu). Drugi primjer je pekulacija o ishodu instrukcije uvjetnog grananja i na temelju tog nagaanja upuuju se instrukcije u protonu strukturu. Slaba strana pekulacije su potekoe koje nastupaju ako je nagaanje bilo pogreno. Mehanizam pekulativnog izvravanja instrukcija mora predvidjeti postupke koji se odnose na provjeru toga je li nagaanje bilo ispravno i postupke koji se trebaju provesti da bi se vratili na stanje koje je bilo prije pekulativnog izvoenja (engl. back out process) ako se pokae da je nagaanje bilo pogreno. pekulacija se provodi uporabom prevodioca ili sklopovljem procesora, a u novije se vrijeme kombiniraju obje izvedbe.

S. RIBARI - GRAA RAUNALA

479 I

15.1.2.

PARALELIZAM NA RAZINI DRETVII PROCESA


Dretvu (engl. thread) objasnit emo pomou vrlo jednostavnog modela raunala J. Backusa (poglavlje 2.) u kojem se raunalo moe predoiti memorijskom jedinicom, procesorom i spojnim putom izmeu njih. U memorijskoj su jedinici pohranjeni program (niz strojnih instrukcija) i podaci, a uz to je predvien i dio memorijskog prostora za (sistemski) stog. Pretpostavimo da u naem jednostavnom modelu procesor moe pristupiti cijelom adresnom prostoru koji je odreen kapacitetom memorije tako da instrukcije mogu dohvatiti podatke koji su smjeteni bilo gdje u memorijskoj jedinici. Program se izvodi tako da se u programsko brojilo upie adresa prve instrukcije programa i procesor zapoinje izvoenje programa instrukciju po instrukciju (poglavlje 2.). Izvoenje programa moemo promatrati kao da procesor provlai kroz program (slijed instrukcija) "nit" ili instrukcijsku dretvu, ili krae, samo dretvu. Slika 15.5 ilustrira izvoenje programa prikazano dretvom.

SI. 15.5 Prikaz izvoenja programa dretvom

Da bi se u potpunosti razumio paralelizam na razini dretvi, potrebno je uputiti na razliku izmeu dretve i raunalnog procesa, ili krae, procesa. Iz operacijskih sustava znademo daje program koji se izvrava organiziran u jedan ili u vie procesa. Proces se sastoji barem od jedne instrukcijske dretve (moe imati i vei broj dretvi) te predstavlja izvrljivi program ili programski odsjeak kojem su dodijeljeni programsko brojilo, adresni prostor, registri i varijable. U tom se smislu moe smatrati da svaki proces

480

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

ima svoj virtualni procesor. Ako je rije o jednoprocesorskom raunarskom sustavu, tada se mora stvarni procesor dijeliti izmeu vie procesa prijenosom upravljanja s procesa na proces (engl. process switching). U tom se sluaju samo jedan proces izvodi u vremenu, ali zbog brzog prospajanja s procesa na proces, svi procesi promatrani u neto duljem vremenskom intervalu napreduju. Na taj se nain ostvaruje vieprogramski nain rada (engl. multiprogramming). Slika 15.6 a) prikazuje vieprogramski nain rada - u memoriji su pohranjena tri programa A, B i C, pri emu se svaki od njih moe promatrati kao nezavisan sekvencijalni proces sa svojim programskim brojilom; slika 15.6 b). Slika 15.6 c) prikazuje napredovanje svakog od procesa dodjeljivanjem stvarnog procesora procesu te prijenosom upravljanja s procesa na proces.
jedno programsko brojilo tri programska brojila

memonja

L
b)

a)

procesi

vrijeme c)

SI. 15.6 Vieprogramski nain rada: a) U memoriji su pohranjena tri programa A, B i C, b) Programi se mogu promatrati kao tri nezavisna procesa svaki sa svojim programskim brojilom (i adresnim prostorom), c) Napredovanje svakog od procesa dijeljenjem stvarnog procesora

Raunalnom procesu su, budui da je rije o procesu u vremenu, pridrueni i neki vremenski atributi kao to su trenutak poetka izvoenja, trenuci zaustavljanja izvoenja, trenutak zavretka izvoenja i trajanje izvoenja, lako je proces samostalna i nezavisna jedinka sa svojim programskim brojilom, memorijom i registrima, on je vrlo esto u interakciji s ostalim

S. RIBARI - GRAA RAUNALA

481 I

procesima (npr. jedan od procesa generira izlazne rezultate koji su ulazni podaci za neki drugi proces). S obzirom na interakciju procesa i njihovu meuzavisnost te raspoloivost stvarnog procesora, moemo identificirati tri stanja u kojima se proces moe nalaziti (slika 15.7): i) aktivno stanje procesa (engl. running) - to je proces kojem je dodijeljen procesor i koji se upravo izvodi, ii) pripravno stanje procesa (engl. ready) - proces je spreman za izvoenje i eka na dodjelu procesora, iii) blokirani proces (engl. blocked) - proces eka na ispunjenje nekog uvjeta za njegovo daljnje napredovanje (npr. proces eka na neki vanjski dogaaj, eka na istek nekog vremenskog intervala). Potonja stanja procesa jednoznano su odreena ako se proces sastoji samo od jedne dretve. Slika 15.7 prikazuje dijagram stanja procesa i uvjete prijelaza iz stanja u stanje.

1 proces se blokira (npr. eka na vanjski dogaaj ili zavretak ulazno-izlazne operacije) 2 rasporeiva procesa izabrao je drugi proces 3 rasporeiva procesa izabrao je upravo ovaj proces 4 ulaz je postao raspoloiv - blokirani proces prelazi u pripravno stanje SL 15.7 Dijagram stanja procesa

Operacijski sustav odrava tabiicuprocesa (engl.process table) u kojoj svaki element tablice odgovara jednom procesu i sadrava informaciju potrebnu za rukovanje procesom (engl. process management), informaciju potrebnu za rukovanje memorijom (engl. memory management) te informaciju potrebnu za rukovanje datotekama (engl. file management). Na primjer, tablica sadrava informaciju o stanju registara dodijeljenih procesu, sadraju programskog brojila, sadraju statusnog registra, sadraju kazala stoga, vremenima poetka i trajanja procesa, vremenu koritenja procesora (engl. CPU time) i si. Dio koji se odnosi na rukovanje memorijom sadrava informaciju o dodijeljenom memorijskom prostoru, kazaljkama na programski segment i segment podataka i si. Dio koji se odnosi tia rukovanje datotekama sadrava informaciju o stanju otvorenih datoteka, informaciju o korijenskom direktoriju (engl. root directory) i radnom direktoriju (engl. working directory) te opis datoteka. Posebni procesi namijenjeni su U/l ureajima i njihovoj komunikaciji s procesorom uporabom prekida ili iznimke. Aktivnosti tijekom prekidnog procesa opisali smo u 13. poglavlju.

482

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI, VIEJEZGREN! I GRAFIKI PROCESORI

Vano je naglasiti da se sva informacija koja se odnosi na odreeni proces mora pohraniti natrag u tablicu procesa, i to svaki put kada proces iz aktivnog stanja prelazi u stanje pripravnosti ili blokiranosti. Do sada smo razmatrali vieprogramski nain rada u kojem je vie procesa dijelilo u vremenu jedan stvarni procesor. No ako raunarski sustav ima vie procesora, tj. ako je vieprocesorski sustav, onda je mogue svakom procesu, umjesto virtualnog procesora, dodijeliti procesor i tada se meusobno nezavisni procesi mogu izvoditi istodobno. Proces u najjednostavnijem obliku ima samo jednu dretvu ili nit instrukcija i jedno programsko brojilo. Dananji vienamjenski raunarski sustavi, odnosno njihovi operacijski sustavi podravaju vei broj d ret vi u jednom procesu. Takve se dretve nazivaju jo i "laki" procesi (engl. lightweight process) jer se pri prijenosu upravljanja s dretve na dretvu ne zahtijeva pohrana onoliko velike koliine informacije kao kod procesa te su i kuanski poslovi manji. Pokuajmo uputiti na razlike izmeu procesa i dretve. Pretpostavimo da u raunarskom sustavu imamo tri procesa: A, B i C. Svaki od njih ima svoju jednu dretvu i programsko brojilo te svaki od procesa djeluje u tri razliita adresna prostora (slika 15.8).
raunarski sustav

SI. 15.8 Tri procesa u raunarskom sustavu

Slika 15.9 prikazuje jedan proces u raunarskom sustavu koji ima tri dretve. One, kao i u sluaju "klasinog" procesa imaju svaka svoje programsko brojilo, ali dijele zajedniki adresni prostor koji je dodijeljen tom procesu.
raunarski sustav

proces SI. 15.9 Jedan proces s tri dretve

S. RIBARI - GRAA RAUNALA

483 I

Prisutnost vie dretvi u jednom procesu koje dijele isti adresni prostor zahtijeva, pored tablice procesa, jo i tablicu dretve (naziva se jo i opisnikdretve) s informacijom o identifikatoru dretve, pripadnosti dretve odreenom procesu, stanju i prioritetu dretve, poetnoj adresi dretvenog adresnog prostora, sadraju programskog brojila te sadraju registara. Sadraj programskog brojila, sadraji registara i stanje dretve ine kontekst dretve koji je potreban jer se izvoenje dretve poput procesa moe suspendirati, a nakon izvjesnog vremena ponovo aktivirati. Dretva moe biti, jednako kao i proces, u aktivnom stanju, stanju pripravnosti i stanju blokiranosti. Stanje procesa s vie dretvi ne moe se jednoznano opisati kao u sluaju procesa s jednom dretvom. Na primjer, jedna dretva procesa moe biti u aktivnom stanju, dvije u stanju pripravnosti, a jedna u stanju blokiranosti - u kojem je stanju taj proces? Proces s vie dretvi moe se izvoditi u jednoprocesorskom raunarskom sustavu tako da se procesor dodjeljuje naizmjence pojedinim dretvama. U tom se sluaju prenosi upravljanje s dretve na dretvu uz uzastopno pohranjivanje i obnavljanje konteksta dretvi. U sluaju izvoenja vie dretvi u jednoprocesorskom sustavu teko se moe oekivati ubrzanje odvijanja procesa. Ono je mogue ako procesor izvodi neku drugu dretvu, dok druga zbog nekog razloga mora ekati. Potpuno iskoritenje paralelizma na razini dretvi postie se u vieprocesorskom raunarskom sustavu u kojem je svaki procesor zaduen za jednu od vie raspoloivih dretvi u procesu. U tom sluaju govorimo o viedretvenom radu (engl. multithreading). (Opaska: u strunoj se literaturi esto izraz "viedretveni rad" (engl. multithreading) upotrebljava za izvoenje vie dretvi na jednom procesoru (odnosno veem broju virtualnih procesora) analogno nazivu "vieprogramski rad" (engl. multiprogramming). Izvoenje veeg broja dretvi u vieprocesorskom sustavu esto se naziva i "hiperdretveni rad" (engl. hyperth reading).) Tvrtka Intel koristi kovanicu "hiperdretvena tehnoloka arhitektura" (engl. hyperthreading technology architecture) pod kojom se podrazumijeva da se jedan fiziki procesor pojavljuje kao vei broj logikih procesora. Svakom logikom procesoru dodijeljena je jedna kopija stanja i oni dijele jedan skup izvrnih resursa fizikog procesora. Ovakav se pristup koristi u tzv. Intelovoj Net burst mikroarhitekturi.Tako definirana "hi perdretvenost" vie odgovara nazivu "viedretvenost". Paralelizam na razini dretvi (engl. thread-levelparalellism;TLP) bitna je alternativa paralelizmu na razini instrukcija (ILP) jer se moe ostvariti jednostavnije i jeftinije od ILP-a. S druge strane, u mnogim je primjenama paralelizam na razini dretvi svojstven i prirodan samom problemu. Potrebno je istaknuti da se ove dvije razine paralelizma u implementaciji arhitekture procesora meusobno ne iskljuuju, tovie, one se podupiru i doprinose veoj performansi procesora (vidi 15.4).

15.1.3.

PARALELIZAM NA KORISNIKOJ RAZINI


Paralelizam na korisnikoj razini koriten je u obliku vieprogramskog rada u kojem se procesor djelotvorno koristi tako da se oblikuju pripravni procesi koji pripadaju razliitim korisnikim programima. U trenutku kada proces koji se izvodi postane blokiran zato to eka odreen dogaaj, npr. zavretak U/l operacije, procesor se dodjeljuje drugom pripravnom procesu. Viezadani nain rada (engl. multitasking) slian je vieprogramskom nainu rada

484

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

te ga stoga neki autori poistovjeuju s njim, meutim, postoji jedna razlika - istodobno aktivni procesi u viezadanom nainu rada pripadaju istom korisniku, tovie vrlo esto pripadaju i istom korisnikom programu. Pseudoparalelizam na korisnikoj razini postie se rodom u vremenskojpodjeii (engl. timesharing) kojim se nudi istodobna usluga veem broju korisnika koji pristupaju raunarskom sustavu terminalima. I u ovom se sluaju oblikuju pripravni procesi za svakog korisnika te se rasporeuju tako da se svakom korisniku jami odgovarajue vrijeme odgovora (engl. response time). Da bi se to postiglo, svakom se od procesa naizmjence dodjeljuje procesorsko vrijeme i ostali raunalni resursi.

15.1.4.

PODATKOVNI PARALELIZAM
Podatkovni paralelizam moe se dvojako iskoristiti. Jedna je mogunost izravne uporabe podatkovnog paralelizma namjenskom arhitekturom koja doputa paralelne operacije na podatkovnim elementima, npr. SIMD (Single Instruction Stream Multiple Data Stream) arhitektura ili arhitektura upravljana tokom podataka (engl. dataflow) (vidi 1. poglavlje). Druga je mogunost pretvorba podatkovnog paralelizma u funkcijski paralelizam tako da se na slijedan nain izraze paralelno izvodljive operacije na podatkovnim elementima uporabom jezinog konstrukta za specifikaciju programskih petlji (vidi Primjer 15.1.). SIMD raunarski sustavi iskoritavaju podatkovni paralelizam djelovanjem na vektorima ili dvo- i viedimenzionalnim poljima podataka. Na primjer, jednom SIMD instrukcijom mogu se obaviti zbrajanja 64 para raspoloivih operanada u 64 aritmetiko-logike jedinice, i to u jednoj periodi signala vremenskog voenja. Podatkovni paralelizam se u SIMD arhitekturi iskoritava zahvaljujui brojnim izvrnim jedinicama koje su sinkronizirane tako da djeluju paralelno i sve izvode istu operaciju koja je odreena jednom instrukcijom. Izvorna motivacija razvoja SIMD arhitekture bila je smanjenje trokova realizacije upravljakih jedinica za brojne izvrne jedinice te smanjenje zahtjeva za kapacitetom programske memorije. Programska memorija SIMD raunala sadrava samo jedan primjerak programa - slijeda instrukcija. Osnovne zamisli SIMD nalazimo i u arhitekturi suvremenih procesora. Mnogi od njih imaju SIMD instrukcije koje su namijenjene poboljanju performansi za multimedijske aplikacije. One omoguuju istodobno izvoenje jedne operacije na veem broju operanada u veem broju aritmetiko-logikih jedinica (ALU) ili omoguuju vei broj operacija na veem broju operanda koji su duljine manje od duljine rijei (engl. subword operand) kojima se koristi procesor. U ovom drugom sluaju (krai operandi - duljine podrijei) SIMD instrukcije rekonfiguriraju jednu ALU koja se koristi dugim rijeima u vie manjih ALU koje djeluju paralelno na kraim operandima.Tako se, na primjer, 64-bitna ALU pretvara u dvije 32-bitne ALU ili u etiri 16-bitne ALU ili u osam 8-bitnih ALU koje djeluju istodobno na operandima odgovarajue duljine. Krai se operandi, u odnosu na 32- i 64-bitne duljine rijei, upravo pojavljuju u multimedijskim aplikacijama, tako se na primjer podaci duljine 8 bita koriste za definiranje vrijednosti primarnih boja (R, G, B) slikovnih elemenata (engl. pixel) ili se 16-bitni podaci koriste za prikaz vrijednosti zvunog uzorka.

S. RIBARI - GRAA RAUNALA

485 I

Primjer 15.2. Godine 1997. tvrtka Intel je proirila skup instrukcija za procesore Pentium i PentiumPro s 57 SIMD instrukcija koje su nazvane MMX (Multi Media Extensions). One djeluju na viestrukim kraim cjelobrojnim operandima i djelotvorno te uz nisku cijenu iskoritavaju podatkovni paralelizam. MMX instrukcije djeluju nad skupom 64-bitnih registara koji su nazvani MMX registri. Zapravo, MMX instrukcije koriste osam registara za podatke s pominim zarezom (floating-point registre) koji se koriste kao MMX 64-bitni registri. Svaki od 64-bitna MMX registra sadrava ili jedan 64-bitni cijeli broj ili vektor koji se sastoji od 2, 4 ili 8 cjelobrojnih podataka (sukcesivno kraih operanada, npr. osam 8-bitnih operanada). Razliite aritmetike i logike MMX instrukcije te MMX instrukcije za usporeivanje podataka i njihovo preureenje djeluju na 64-bitnim i 32-bitnim operandima te 8-, 4- i 2-komponentnim nezavisnim vektorima koji se mogu "upakirati" u 64-bitnu rije. Slika 15.10 prikazuje izvoenje MMX instrukcije za paralelno zbrajanje dvaju 8-komponentnih vektora pri emu su onemogueni bitovi prijenosa na granicama pojedinih 8-bitnih operanada.
64-bitni MMX registar 64-bitni MMX registar

b /

/
63

0 i j k 1 m n 0 P

w
T
63

y
T
1r

w
T

Y
V
0

a+i

b+j

c+k

d+l

e+m

f+n

g+o

h+p

SI. 15.10 Izvoenje M M X instrukcije paralelnog zbrajanja dvaju vektora

MMX instrukcije barataju samo cjelobrojnim vrijednostima. Procesoru Pentium III (1998.) pridodano je jo 70 SIMD instrukcija, nazvanih SSE (Streaming SIMD Extensions) koje djeluju na osam dodatnih registara duljine 128 bita i podravaju operacije jednostruke tonosti podacima s pominim zarezom (engl. single precision floating-point operation) tako da se istodobno mogu izvesti etiri operacije s pominim zarezom na etiri 32-bitna operanda, Proirenje skupa SIMD instrukcija nastavilo se pa su 2001. skupu instrukcija dodane nove 144 instrukcije SSE2 koje podravaju SIMD operacije na 64-bitnim podacima s pominim zarezom. Nakon toga slijede nova proirenja skupa SIMD instrukcija SSE3 (2004.) i SSE4 (2006.). Godine 2007. tvrtka AMD uvodi SSE5 sa 170 novih instrukcija, a 2008. Intel uvodi skup SIMD instrukcija AVE -Advanced Vector Extension kojim se SSE registri proiruju s 128 na 256 bita duljine te se skup SIMD instrukcija poveava na vie od tri stotine!

486

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI, VIEJEZGREN! I GRAFIKI PROCESORI

15.2. PARALELNE ARHITEKTURE: VIEPROCESORSKI SIMD, VEKTORSKI PROCESORI I M I M D SUSTAVI


Raspoloivi funkcijski paralelizam i podatkovni paralelizam podloga su za ostvarivanje paralelnih raunarskih arhitektura. Prema Flynnovoj klasifikaciji koja se temelji na paralelizmu instrukcijskih tokova i tokova podataka (1. poglavlje), tri se kategorije arhitekture odnose na paralelne raunarske sustave.To su MISD (Multiple Instruction Stream SingleData Stream), SIMD (Single Instruction Stream Multiple Data Stream) i MIMD (Multiple Instruction Stream Multiple Data Stream). Do sada, koliko je autoru ove knjige poznato, nije realiziran (komercijalni) vieprocesorski sustav MISD koji bi se temeljio na izvornim znaajkama te kategorije arhitekture. U14. smo poglavlju vidjeli kako se paralelizam na razini instrukcija djelotvorno koristi u protonim RISC i CISC procesorima koji se obino razvrstavaju u MISD kategoriju arhitekture. Raunarske sustave koji se temelje na veem broju procesora nazivat emo vieprocesorski sustavi. Oni s obzirom na kategoriju arhitekture (prema Flynnu) mogu biti vieprocesorski SIMD i vieprocesorski MIMD. Za vieprocesorske sustave MIMD koristiti emo uobiajen naziv - multiprocesori \li multiprocesorski sustavi.

15.2.1. VIEPROCESORSKI SIMD SUSTAVI


Osnovna znaajka SIMD arhitekture je istodobno izvoenje iste instrukcije od strane veeg broja procesora koji djeluju na razliitim, viestrukim tokovima podataka. Vieprocesorski SIMD raunarski sustavi namijenjeni su rjeavanju sloenih problema s visokim stupnjem inherentnog paralelizma, prvenstveno sadranog u podacima. Dakle, vieprocesorski SIMD sustavi iskoritavaju podatkovni paralelizam. Slika 15.11 prikazuje osnovnu organizaciju vieprocesorskog SIMD raunarskog sustava. Ono ima jednu sredinju upravljaku jedinicu koja upravlja radom N 1 procesora. (Opaska: vrlo se esto procesori nazivaju i procesnim elementima). Svaki procesor ima svoju privatnu (lokalnu) memoriju podataka koja predstavlja jedan od izvora i ponora toka podataka. Sredinja upravljaka jedinica pribavlja instrukcije iz jedne programske memorije i odailje ih procesorima. Upravljake jedinice procesora interpretiraju operacijski kod instrukcije i u skladu s njim izvode operaciju. Svi procesori djeluju istodobno i izvode istu instrukciju, ali nad razliitim podacima koji se dohvaaju iz privatnih memorija podataka. Instrukcije koje se istodobno izvode u svim procesorima definiraju aritmetike i logike operacije, operacije preusmjeravanja podataka, maskiranja i druge lokalne operacije. Na temelju operacije maskiranja odreuju se procesori koji e u skladu s programom propustiti izvoenje neke zadane instrukcije. Sredinja upravljaka jedinica zapravo je raunalo koje osim funkcije pribavljanja i odailjanja instrukcija izvodi instrukcije koje se odnose na skalarne operacije i na one za upravljanje tokom programa (npr. instrukcije uvjetnog grananja). Svi su procesori identini i preko prospojne mree (engl. interconnection netvvork) meusobno izmjenjuju podatke. Vieprocesorski SIMD sustav obino je povezan s raunalom ope namjene - raunalom domainom (engl. host computer) tako da je omogueno punjenje programske memorije novim programom te punjenje lokalnih memorija novim podacima.

S. RIBARI - GRAA RAUNALA

487 I

procesor 1 lokalna memorija podataka 1

procesor 2 lokalna memorija podataka 2

-A V
prospojna mrea

procesor N lokalna memorija podataka N

raunalo d o m a i n

SI. 15.11 Organizacija vieprocesorskog SIMD raunarskog sustava

SIMD arhitektura u nekoliko je posljednjih godina dobila na znaenju, posebno u multimedijskoj primjeni (naroito u raunalnoj grafici) kao jedan od djelotvornih pristupa oblikovanja trodimenzionalnih virtualnih okruenja u stvarnom vremenu. Utjecaj SIMD koncepata na arhitekturu procesora prikazali smo u Primjeru 15.2.

15.2.2.

VEKTORSKI PROCESORI
Jedan od najdjelotvornijih naina iskoritavanja podatkovnog paralelizma postie se u raunarskim sustavima koji se svrstavaju u SIMD kategoriju arhitekture i temelje se na vektorskom procesoru (engl. vectorprocessor). Osnovna znaajka vektorskog procesora jest da rukuje strukturiranim tipom podataka - vektorima, ali i skalarnim tipovima podataka. Vektori su jednodimenzionalna polja koja se sastoje od istovrsnih elemenata - skalarnog tipa podataka, pri emu je svaki element u jednodimenzionalnom polju jedinstveno odreen pomou pridruenog mu indeksa. Na primjer, vektor x koji se sastoji od 64 elemenata, od kojih je svaki tipa reai (floating-point ili broj s pominim zarezom) predoen je komponentama x(l), x(2), x(3),..., x(63), x(64). Vektorski procesor obavlja aritmetike i logike operacije na operandima koji su vektori.

488

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

Primjer 15.3. Razmotrimo raunanje sume dvaju 64-dimenzionalnih vektora x I y. Rezultat je vektor w:
W = X + y.

U "obinom" jednoprocesorskom sustavu ta bi se operacija izvela na temelju programskog odsjeka: for i = 1 to 64 w(i) := x(i) + y(i); Vidimo da bi se raunanje zbroja dvaju vektora izvelo u programskoj petlji, i to slijedno uzastopnim operacijama zbrajanja odgovarajuih komponenti obaju vektora. U vektorskom procesoru gornja bi se operacija izvela samo jednom vektorskom instrukcijom, odnosno instrukcijom tipa vektor-vektor kojoj su operandi dva 64-dimenzionalna vektora, a rezultat, koji se dobiva u vektorskoj aritmetiko-logikoj jedinici (vektorska ALU), takoer je 64-dimenzionalni vektor. Vektorska ALU moe istodobno zbrojiti sve odgovarajue komponente obaju vektora. Svaki od vektora, koji predstavlja operand u vektorskoj instrukciji, smjeten je u vektorski registar, npr. V., odnosno V., a rezultat se smjeta u vektorski registar Vk. Vektorska instrukcija specificira veliku koliinu posla i jednakovrijedna je, u potonjem sluaju, cijeloj programskoj petlji. Takva vektorska instrukcija, koja predstavlja desetke ili stotine "klasinih" instrukcija, znaajno je smanjila vrijeme potrebno za pribavljanje i dekodiranje instrukcija - vektorska se instrukcija samo jednom pribavlja i samo jednom dekodira (za razliku od gornje programske petlje koja zahtjeva 64 pribavljanja i dekodiranja instrukcija). Uz sve to, rezultat - sve komponente vektora w, vektorska instrukcija generira istodobno. Uporaba vektorske ALU u kojoj se istodobno izvode operacije nad svim komponentama vektora u vektorskim je procesorima ipak rijetka. Umjesto, na primjer, vektorskog mnoila brojevima s pominim zarezom (koji bi istodobno generirao sve produkte), u praksi se koristi protono mnoilo s relativno velikim brojem protonih segmenata te se svaki parcijalni rezultat (umnoak dviju komponenata) dobiva u svakoj periodi signala vremenskog voenja ije je trajanje odreeno vremenom obrade u jednom protonom segmentu. Razlozi takva rjeenja nisu tehnoloka ogranienja, ve ekonomski faktor. Primjer 15.4. Razmotrimo izvoenje vektorske instrukcije mnoenja dvaju 64-komponentnih vektora u 7-segmentnom protonom mnoilu brojevima s pominim zarezom: MULTV VI, V2, V3 ; V3 = VI * V2 Slika 15.12 prikazuje vremenski dijagram izvoenja gornje operacije. Svaka horizontalna linija odgovara potpunoj obradi para komponenti 64 komponentnih vektora. Sa r je oznaeno vrijeme dohvata (itanja) para komponenti vektora, a s w je oznaeno vrijeme upisa rezultata u odredini vektorski registar V3 (za svaku njegovu komponentu). Sukcesivni se parovi vektorskih komponenti vektora V1 i V2 uitavaju u mnoilo, i to zapoevi od t^ prvi se rezultat generira u trenutku t 8 da bi se u sljedeem trenutku tg upisao u prvi element odredinog vektorskog registra V3. Nakon toga, nakon svakog se trenutka novi rezultat upisuje u odgovarajui element vektorskog registra V3. Konaan se rezultat dobiva nakon 9 + 63 periode signala vremenskog voenja.

S. RIBARI - GRAA RAUNALA

489 I

t0 I

i 1

2 1

3 1

% 1

t5

t6 1

t7 i

t8 1

t9 I

t,0 i

t i

t,2 1

t14 h~ vrijeme

V,(1),V2(1) i

-i

V30)=V1(1),V2(1)

V1(2),V2(2) _ ! _
r

h - ^ - l

V3i2)=V1(2).V2(2)

VI (3), V2(3) i

V3(3)=V1(3)V2(3>

SI. 1 5 . 1 2 Vremenski dijagram izvoenja vektorske instrukcije MULTV V I ,

V2, V3

Vektorski se procesor moe opisati kao objedinjenje sklopovskih resursa koje ukljuuje vektorske registre, skalarne registre, (registarska) brojila, protone funkcijske jedinice te procesne elemente kojima se podravaju vektorske operacije, odnosno aritmetike i logike operacije kojima su opera nd i vektori, ali i skala rne operacije te mjeovite operacije s vektorima i skalarima. Slika 15.13 prikazuje pojednostavljenu shemu raunarskog sustava koji se temelji na vektorskom procesoru. (Opaska: u literaturi se vrlo esto umjesto "raunarski sustav koji se temelji na vektorskom procesoru" koristi samo izraz "vektorski procesor") Vektorski se procesor sastoji od tri podsustava: podsustava za pribavljanje instrukcija, skalarnog te vektorskog podsustava. Podsustav za pribavljanje instrukcija dohvaa instrukcije iz instrukcijske prirune memorije i ovisno o tipu instrukcije distribuira instrukcije skalarnom ili vektorskom podsustavu. Oba podsustava - skalarni i vektorski - djeluju istodobno. Programski segmenti koji su bogati instrukcijama grananja podesniji su za izvoenje u skalarnom podsustavu. Skalarni podsustav podrava i raunanje efektivnih adresa te rukovanje iznimkama. Vektorski podsustav namijenjen je izvoenju uniformnih, raunski intenzivnih podatkovno paralelnih segmenata. Skalarni se podsustav sastoji od instrukcijskih meuspremnika i odgovarajuih sklopova za izdavanje skalarnih instrukcija. Sastavni dio skalarnog podsustava je skalama priruna memorija, skup skalarnih registara te skalarne protone funkcijske jedinice. U sklopu skalarnog podsustava nalazi se jo i skup adresnih registara i adresna jedinica (nisu zbog jednostavnosti prikazani na slici 15.13). Tipine skalarne funkcijske jedinice su: protono zbrajalo brojeva s pominim zarezom, protono mnoilo brojeva s pominim zarezom i protona jedinica za raunanje recipronih vrijednosti operanada. Nadalje, tu su protono zbrajalo brojeva vrstim zarezom, posmani sklop i jedinica za logike operacije. Adresna jedinica sastoji se od cjelobrojnog protonog zbrajala i cjelobrojnog protonog mnoila i tako podrava djelotvorno raunanje efektivnih adresa. Vektorski se podsustav sastoji od skupa vektorskih registara (npr. osam vektorskih registara V(0) - V(7)), pri emu svaki od registara sadrava broj rijei koji je potencija broja dva, na primjer, 64 ili 128 rijei. Primjerice, jedan vektorski registar sadrava stotinu dvadeset i osam 64-bitnih rijei. Skup vektorskih registara izveden je kao vieulazna i vieizlazna pristupna memorija tako da podrava preklapanje vektorskih operacija koje koriste razliite registre. Tipine vektorske funkcijske jedinice su protono zbrajalo za istodobno zbrajanje vektora iji su elementi skalari predoeni kao brojevi sa vrstim zarezom, protoni posmani sklop i protona logika jedinica. Vektorske load i store jedinice specijalizirane su za dohvat i pohranu vektora iz/u memoriju. Memorijska jedinica izvedena je kao protona tako

490

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

da se rijei izmeu (glavne) memorije i vektorskih registara premjetaju brzinom koja odgovara brzini sklopovlja vektorskih funkcijskih jedinica (jedna rije u jednoj periodi signala vremenskog voenja). Budui da se vektorske operacije izvode na velikim skupovima podataka koji se, obino, ne podudaraju s kapacitetom prirune memorije, vektorske load i stote jedinice izravno su povezane s glavnom memorijom.

protona funkcijska jedinica 1 I.-

zj
vektorska load jedinica
- -

4
V<7)

protona funkcijska jedinica 2

=J
J
V(0)
**

protona funkcijska jedinica 3 skup vektorskih registara V(0)-V(7)

zj
*

vektorska store jedinica o

vektorski podsustav

E
c > J5

O ) E ro

protone funkcijske jedinice

U)

skalama priruna memorija

skup skalarnih registara

skalarni podsustav

instrukcijski meuspremnici jedinica za pribavljanje instrukcija

instrukcijska priruna memorija

podsustav za pribavljanje instrukcija

SI. 15.13 Vektorski procesor (pojednostavnjeni prikaz)

S. RIBARI - GRAA RAUNALA

491 I

Vektorski procesor podrava est tipova vektorskih instrukcija: i) instrukcije vektor-vektor (slika 15.14 a)) - jedan ili dva vektorska operanda dohvaaju se iz vektorskih registara i ulaze u protonu funkcijsku jedinicu te proizvode rezultat koji se u obliku vektora pohranjuje u jednom od vektorskih registara. Formalno, instrukcija vektor-vektor moe se opisati kao: f1 - V i. ^ V k f'2: Vi X Vj V k' gdje su V. i V. izvorini vektorski registri, a Vk odredini vektorski registar; ii) instrukcije vektor-skalar (slika 15.14 b)) - jedan operand je vektor smjeten u vektorskom registru V., a drugi je operand skalar s smjeten u jednom od skalarnih registara s. Formalno: J f 3: s. x V. V., j i k' gdje je s skalarni registar; iii) instrukcija vektor-memorija (slika 15.14 c)) - odgovara operaciji dohvata vektora iz memorije (load) ili operaciji pohrane vektora u memoriju (store). Vektori se pohranjuju ili dohvaaju element po element izmeu vektorskog registra i protono izvedene memorije. Ovaj je tip instrukcija podran vektorskom load i vektorskom store jedinicom (slika 15.13). Formalno se ovaj tip instrukcije moe opisati kao: , f4: M I f5: V. gdje je M glavna memorija; V. za operaciju load M za operaciju store,

iv) instrukcija redukcije vektora. Formalno se taj tip instrukcije moe opisati kao: f 6 V. s. i } f7 * V. x V s. i j j Na primjer, vektorske instrukcije koje odgovaraju funkciji f6 su traenje elementa u vektoru koji ima maksimalnu ili minimalnu vrijednost ili, pak, instrukcija koja rauna sumu svih elemenata koji ine vektor V. Primjer vektorske instrukcije koja odgovara funkciji f7 je skalarni produkt dvaju vektora V, i V.; v) instrukcije okupljanja (engl. gather) ili rasprivanja (engl. scatter) - tim se tipom instrukcija uporabom dvaju vektorskih registara okupljaju vektorski elementi dohvaeni iz memorije ili se uporabom dvaju vektorskih registara raspruju elementi vektora u memoriju. Formalno se instrukcije ovog tipa mogu opisati kao: f 8 :M->V,xV 0 okupljanje f9: V1 x VQ M rasprivanje. Operacijom okupljanja iz memorije se dohvaaju elementi razliiti od nule, i to tako da vektorski registar VQ sadrava indekse (kazaljke) na podatke u memoriji, a vektorski registar V1 sadrava podatke koji se iz memorije dohvaaju i oblikuju tzv. rijetko popunjeni vektor. Slika 15.14 d) prikazuje operaciju okupljanja, pri emu adresni registar A0 sadrava adresu poetne memorijske lokacije na kojoj se nalaze podaci, a pomoni registar VL definira duljinu novonastalog vektora. Operacija rasprivanja obrnuta je operacija u odnosu na operaciju okupljanja. Pomou nje se u memoriju pohranjuje rijetko popunjeni vektor;

492

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

vi) instrukcije maskiranja - taj tip instrukcije upotrebljava vektor maskiranja Vm (engl. maskvector) pomou kojeg saima ili proiruje izvorni vektor. Formalno maskiranje moe se opisati kao preslikavanje: f i10 - V1. n :V_xV 0 m I u ovoj operaciji sudjeluje pomoni registar VL koji pokazuje koliko elemenata registra V0 sudjeluje u operaciji maskiranja (slika 15.14 e)). Na slici 15.14 e) prikazanje primjer operacije maskiranja kojom se ispituje dvanaest komponenti ispitnog vektorskog registra V0. Ispituje se jesu li komponente vektora VQ razliite od nula, i to samo oni elementi vektora koji odgovaraju jedinicama u maskirnom registru Vm. U vektorskom registru V1 pohranjuju se indeksi koji odgovaraju elementima u ispitnom registru VQ i koji su razliiti od 0.
vektorski registar vektorski registar V. vektorski registar V,

protona funkcijska jedinica

-> ->

a) vektorski registar Vi vektorski registar Vk

skaJarni registar

s j

protona funkcijska jedinica

w
b)

SI. 15.14 a) i b) Prikaz tipova vektorskih instrukcija

S. RIBARI - GRAA RAUNALA

493 I

vektorski registar V/V,

pomoni registar V.

vektorski registar V

vektorski registar V, 0600 0400 0250 0200

adresa

sadraj

- 0100 0101 - 0102 0103 - 0104 0105 0106 - 0107 0108 0109 010A 010B

0200 0300 0400 0500 0600 0700 0100 0250 0350

0100 adresni registar A

d) pomoni registar V, 12 vektorski registar V0 {ispitivani registar) vektorski registar V1 (rezultat) 01_ 03 04 07 08 09 11

0
1

0
1 010110011101... maski rni registar V 1

0 0 1
1 1

0
1

e)

SI. 15.14 c), d) i e) Prikaz tipova vektorskih instrukcija

494

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI, VIEJEZGREN! I GRAFIKI PROCESORI

Paralelizam u izvoenju vektorskih instrukcija postie se uporabom protonih funkcijskih jedinica s velikim brojem protonih segmenata ili veim brojem istorodnih funkcijskih jedinica koje djeluju istodobno, ili kombinacijom uporabe veeg broja istorodnih funkcijskih jedinica koje su izvedene kao protone s velikim brojem protonih segmenata. Svaka od paralelnih protonih jedinica naziva se traka (engl. lane). Performansa vektorskog procesora poveava se uporabom metode koja se naziva vietrana vektorska obrada (engl. multilane vector processing) kojom se dodatno iskoritava paralelizam u vektorskim operacijama tako da se jedna vektorska operacija porazdijeli na npr. etiri ili vie traka. Slika 15.15 prikazuje primjer vektorske operacije zbrajanja u jednotranoj izvedbi (slika 15.15 a)) i u 4-tranoj izvedbi (slika 15.15 b)) u kojoj se koriste etiri zbrajala koja djeluju paralelno. Vidimo da se jednotranoj izvedbi tijekom jedne periode signala vremenskog voenja generira jedan rezultat zbrajanja komponenti vektora x(i) i y(i), dok se u 4-tranoj izvedbi u jednoj periodi dobivaju rezultati x(i) + y(i), x(i+1) + y(i+1)/ x(i+2) + y(i+2), x(i+3) + y(i +3).
vektor x x(8) x(7) x(6) x(5) x(4) x(3) x(2) x(l) vektor y y(8) y(7) y(6) y(5) y(4) y(3) y(2) y(D x(5) V(5) y(D
x(6) x(2) y(6) y(2)

x(1)

+
protono zbrajalo

grupa od etiri rezultata tijekom jedne periode signala vremenskog voenja

a)

b)

SI. 15.15. Jednotrana i vietrana izvedba vektorske operacije

Kako se vektorska obrada odraava na performansu procesora? Performansa takva procesora ovisi o mnogo faktora, na primjer o: i) razini "vektorizacije" programa - koliki dio od ukupne obrade moe biti izveden vektorskim operacijama, ii) prosjenoj duljini vektora, odnosno prosjenom broju komponenti vektora, iii) razini ulanavanja vektora - mogunosti izdavanja sljedee vektorske instrukcije neposredno nakon to prethodna vektorska instrukcija generira prvu komponentu vektora rezultata, iv) razini preklapanja vektorskih, skalarnih i operacija pristupa memoriji. Performansa vektorskog procesora moe se prikazati njemu prilagoenim Amdahlovim zakonom, gdje je faktor ubrzanja obrade s u odnosu na skalarni procesor jednak:

5 =

Q-f)+f/k gdje je f dio vektoriziranog koda, a k brzina vektorske jedinice u odnosu na skalarnu jedini cu. k je funkcija duljine vektora i tipa operacije. Slika 15.16 prikazuje faktor ubrzanja s za k = 20 i razliite vrijednosti f. Vidimo da se znaaj na ubrzanja postiu kada je dio vektoriziranog koda vei od 0.8.

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1,0

SI.15.16 Ilustracija Amdahlovog zakona za vektorske procesore

Primjer 15.5. Ilustrirajmo izvoenje operacije y = sx + y, gdje su y i x 64 komponentni vektori pri emu je svaka komponenta predoena u notaciji broja s pominim zarezom dvostruke tonosti (duljine 64 bita), a s je skalar takoer dvostruke tonosti, na skalarnom procesoru i vektorskom procesoru. Pretpostavit emo da se y, x i s nalaze na poetku izvoenja pohranjeni u memoriji.tako da je poetna adrese za x jednaka $s0, za y $s1, a za skalar s $sp. Programski odsjeak za skalarni procesor izgleda ovako: dohvati skalar s i pohrani ga u floating-point registar fO Id fO, $sp gornja adresa lokacije na kojoj se nalazi vektor x addi r4, $s0, #512 opet: Id f2,0($s0) dohvati x(i) mul f2, f0, f2 s x x(i) Id f4,0($s1) dohvati y(i) add f4,f2J4 s x x(i) + y(i) st f4,0($s1) pohrani rezultat na y(i) addi $s0, $s0, #8 inkrementiraj indeks za x addi $s1,$s1,#8 inkrementiraj indeks za y

sub bne

$t0,r4,$s0 $tO, $zero, opet

; izraunaj granicu ; provjeri je li sve obavljeno

(Opaska: adresna zrnatost memorije je bajtna, zato je gornja granica 512, tj. 64 x 8, gdje je 64 broj komponenti vektora, a svaka je njegova komponenta duljine 8 bajtova.) Programski odsjeak za vektorskiprocesor izgleda ovako: ; dohvati skalar s i pohrani ga u floating-point registar fO f0, $sp Id ; dohvati vektor x i pohrani ga u vektorski registar v i Idv v1,0($s0) v2, vi, fO ; mnoenje vektora x sa skalarom s mulvs ; dohvati vektor y i pohrani ga u vektorski registar v3 Idv v3,0($s1) addv v4, v2, v3 ; pribroji y produktu sx ; pohrani rezultat stv v4,0($sV Zanimljiva je usporedba gornjih programskih odsjeaka. Vidimo da vektorski procesor znaajno reducira promet instrukcija - on zahtijeva samo est instrukcija, dok se kod skalarnog procesora zahtijeva skoro 600 instrukcija (programska petlja). Ovo smanjenje broja instrukcija uzrokovano je vektorskim operacijama koje djeluju na 64 komponente vektora. Druga zanimljiva razlika je u uestalosti hazarda - za skalarni procesor svaka add instrukcija mora ekati na mul instrukciju te svaka st instrukcija mora ekati na add instrukciju. Za vektorski e procesor svaka vektorska instrukcija biti u zastoju samo za prvi element svakog od vektora, tako da e ostali elementi glatko protjecati kroz protonu strukturu. Zamisao vektorske obrade stara je vie od pedeset godina. Prva vektorska superraunala pojavljuju se poetkom sedamdesetih godina prolog stoljea (CDC STAR-100, TI ASC, 1972.), Cray-1 (1976.) da bi devedesetih godina na tritu bio vei broj vieprocesorskih vektorskih superraunala (Cray Y-MP 816, Hitachi S-820, Fujitsu VP-2000, NEC Sx-8). Danas vektorska obrada nije rezervirana samo za superraunala, ve se pojavljuje i u procesorima koji se rabe u multimedijskim aplikacijama (procesori s instrukcijskim podskupovima MMX, SSE, AltiVec) i procesorima namijenjenim igraim konzolama. Razvoj tehnologije visokog stupnja integracije (VLSI) omoguio je izvedbe vektorskih mikroprocesora - vektorskih procesora s jednom (npr. SPERT-II procesor) ili vie jezgri ostvarenih najednom ipu. Primjer takva procesora je Cell dvojezgreni procesor (razvijen u suradnji tvrtki IBM, Toshiba i Sony, 2006.) koji se sastoji od dvije jezgre, odnosno od dva procesora PowerPC (naziva se PPE- Power Processing Element) koji djeluju pod''konvencionalnim/'operacijskim sustavom te se koriste za distribuciju poslova osam vektorskih jedinica SPE (Synergistic Processing Element) koje imaju vlastiti SIMD skup instrukcija. Svaka od SPE jedinica, koja je u stvari 128 bitni RISC procesor SIMD organizacije, ima svoju vlastitu memoriju izvedene statikim RAM-om umjesto prirune memorije. PPE i SPE povezani su pomou visokopropusne (> 300 GB/s) prstenaste sabirnice podataka nazvane EIB - Element Interconnect Bus. U cilju maksimalnog iskoritenja EIB-a, ali i istodobnog preklapanja obrade i prijenosa podataka, svaki od devet procesnih elemenata (PPE i osam SPE) opremljen je s DMA procesorom. Cell procesor namijenjen je matematiki intenzivnim zadacima kao to su generiranje ili transformacije trodimenzionalnih struktura podataka, kodiranje i dekodiranje MPEG tokova (engl. MPEG stream), Fourierova analiza podataka i si. Neke od arhitektonskih zamisli koje se koriste u procesoru Cell mogu se nai u vektorskom mikroprocesoru V-IRAM (Intelligent RAM) koji je 1997. realiziran na sveuilitu California,

S. RIBARI - GRAA RAUNALA

497 I

Berkeley. Vektorski mikroprocesor ima DRAM kapaciteta 96 MB (800 milijuna tranzistora), procesor-jezgru s prirunom memorijom i vektorsku jedinicu. Vektorska se jedinica sastoji od dvije load i store jedinice te dvije protone aritmetike 64-bitne jedinice. Vrna performansa procesora je 16 GFLOPS-a za operacije sa 64-bitnim operandima, odnosno 128 GOPS-a (giga operacija u sekundi; G = giga = IO9) za 8-bitne multimedijske operacije (u tom se sluaju 64-bitna aritmetika jedinica transformira u osam tranih 8-bitnih protonih struktura). (Opaska: naziv Intelligent RAM odnosi se na izvedbu memorije i njoj pridruenim procesorima na istom ipu tako da se dinamika memorija moe promatrati kao memorija s procesnim sposobnostima.)

15.3. MULTIPROCESORSKI SUSTAVI VIEPROCESORSKI M I M D SUSTAVI


MIMD arhitektura obiljeena je viestrukim instrukcijskim tokom i viestrukim tokom podataka. Svaki od procesora pribavlja i izvrava svoje vlastite instrukcije na svojim podacima. Vieprocesorski MIMD sustavi ili multiprocesorski sustavi iskoritavaju paralelizam na razini procesa I dretvi. U multiprocesorskom sustavu svaki procesor moe izvravati njemu dodijeljen proces. Procesi mogu biti dijelovi jednog korisnikog programa (viezadani nain rada) ili mogu biti dijelovi razliitih korisnikih programa (vieprogramski nain rada). Uz to, svaki od procesa moe imati vie dretvi tako da se izvoenje jednog procesa s veim brojem dretvi moe povjeriti veem broju procesora. Viedretvena arhitektura temeljena na MIMD-u, u naelu, doputa istodobno izvoenje veeg broja procesa s izdvojenim adresnim prostorima i izvoenje vie dretvi koje dijele adresni prostor. Osnovna znaajka multiprocesorskog sustava jest vei broj procesora priblino jednakih (vrlo esto) identinih obiljeja koji na izvjestan nain dijele zajedniki memorijski prostor. Ovisno o broju procesora i nainu organizacije memorijskog sustava multiprocesorski se sustavi mogu klasificirati u sljedee skupine: sustavi s uniformnim pristupom memoriji UMA (engl. Uniform Memory Access), sustavi s neuniformnim pristupom memoriji NUMA (engl. Nonuniform Memory Access), sustavi samo s prirunom memorijom COMA (engl. Cache-Only Memory Architecture). U UMA modelu multiprocesorskog sustava (slika 15.17) svi procesori dijele zajedniku fiziku memoriju i svi imaju jednako vrijeme pristupa svakoj od rijei u memoriji (uniformni, odnosno ujednaeni pristup memoriji). Svaki od procesora moe imati i svoju vlastitu prirunu memoriju organiziranu u jednu ili vie razina. Na slian nain kao to dijele memoriju, procesori dijele resurse U/l podsustava. Ovakav se model jo naziva i multiprocesorski sustav sa sredinjom dijeljenom memorijom (engl. centralized shared-memory) ili simetrini multiprocesorski sustav s dijeljenom memorijom SMP (engl. symmetric shared-memory multiprocessor) - zato to memorija ima isti ("simetrini") odnos spram svih procesora. Komunikacija procesora sa zajednikom memorijom i U/l podsustavom ostvaruje se prospojnom mreom koja ovisno o zahtijevanoj propusnosti moe biti ostvarena sabirnikim sustavom, crossbar prospojnom matricom ili vierazinskom (ili vieslojnom) prospojnom mreom (npr. Omega). UMA model pogodan je za relativno mali broj procesora (manji od 100) jer je za taj broj procesora jo uvijek mogue ostvariti dijeljenje i uniformni pristup memoriji. UMA model jo se naziva i vrsto povezan multiprocesorski sustav (engl. tightly coupled) zbog visokog stupnja dijeljenja zajednikih resursa (memorije i U/l podsustava).

498

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

SI. 15.17 UMA model multiprocesorskog sustava

Ovaj model multiprocesorskog sustava najee se koristi zato to je podesan za primjene ope namjene i izvedbu obrade dodjeljivanjem vremena u viekorisnikim okruenjima. Djelotvorno se koristi za ubrzanje obrade zahtjevnih programa jednog korisnika (viezadani rad) ili programa veeg broja korisnika (vieprogramski rad). Koordinacija paralelnih dogaaja, procesa i dretvi te sinkronizacija i komunikacija izmeu procesora ostvaruju se dijeljenim varijablama koje su pohranjene u zajednikoj memoriji. Multiprocesorski sustavi s neuniformnim pristupom memoriji NUMA (slika 15.18) nazivaju se jo i sustavi s porazdijeljenom memorijom (engl. distributed-memory multiprocessor) imaju umjesto centralizirane memorije, memoriju porazdijeljenu procesorima. Takva se memorija naziva lokalna ili privatna memorija. Zbirka svih lokalnih memorija oblikuje globalni adresni prostor kojem mogu pristupiti svi procesori u sustavu. Zbog takve organizacije memorije razlikujemo dvije vrste pristupa memoriji: brzi pristup memoriji (krae vrijeme pristupa) kada procesor pristupa svojoj lokalnoj memoriji, sporiji pristup (dulje vrijeme pristupa) kada procesor pristupa "udaljenoj" memoriji koja je, zapravo, lokalna memorija nekog drugog procesora. Dulje vrijeme pristupa uzrokovano je dodatnim kanjenjima jer se "udaljenoj" memoriji pristupa kroz prospojnu mreu. Multiprocesorski sustavi oblikovani u skladu s modelom NUMA imaju veliki broj procesora, npr. nekoliko stotina ili tisua, i zato se za toliki broj procesora teko moe realizirati sredinja memorija sa zahtijevanom, odnosno prihvatljivom propusnosti (engl. memory bandwidth).

S. RIBARI - GRAA RAUNALA

499 I

procesor & priruna memorija

procesor & priruna memorija

procesor & priruna memorija

lokalna memorija

U/l podsustav

lokalna memorija

U/l podsustav

lokalna memorija

U/l podsustav

prospojna mrea

lokalna memorija

U/l podsustav

lokalna memorija

U/l podsustav

lokalna memorija

U/l podsustav

iz
procesor & priruna memorija

iz
procesor & priruna memorija procesor & priruna memorija

SI. 15.18 NUMA model multiprocesorskog sustava

Na slici 15.18 vidimo da se svaki vor u NUMA modelu sastoji od procesora, lokalne memorije, U/l podsustava i suelja za pristup prospojnoj mrei. Ovisno o izvedbi NUMA modela, vor moe biti sastavljen od odreenog broja procesora i lokalnih memorijskih modula tako da ini procesorsku nakupinu (engl. cluster). Primjer takve organizacije je multiprocesorski sustav velikih razmjera (engl. large-scale multiprocessor) Cedar. Multiprocesorski sustavi temeljeni na modelu NUMA esto se zbog naina na koji je ostvarena veza izmeu procesora nazivaju i labavo povezanim (engl. loosely coupled). Multiprocesorski sustavi temeljeni na modelu COMA (slika 15.19) su, zapravo, poseban sluaj NUMA multiprocesorskog sustava u kojem je umjesto glavne memorije po razdijeljena priruna memorija tako da sve prirune memorije oblikuju globalni adresni prostor. Udaljeni pristup prirunoj memoriji ostvaruje se pomou distribuiranih direktorija.

SL 15.19 COMA model multiprocesorskog sustava

Multiprocesorski sustavi temeljeni na UMA modelu dijele zajedniki memorijski prostor tako da procesori mogu meusobno izmjenjivati podatke instrukcijama load i store (zato

500

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

se i nazivaju sustavi s dijeljenom memorijom). U sustavima temeljenim na NUMA modelu komunikacija izmeu procesora odvija se porukama koje procesori izmjenjuju preko prospojne mree - takvi se multiprocesorski sustavi nazivaju jo i multiprocesorskisustavi s prosijeivanjem poruka (engl. message-passing muitiprocessor). Naglasimo jo jednom da je organizacija muitiprocesorskog sustava s dijeljenom memorijom najrairenija te da mnogi proizvoai raunala (npr. Sun, AMD, Intel, IBM) imaju proirenje svojih proizvodnih uniprocesorskih ili jednoprocesorskih linija na multiprocesorske sustave na ipu. Oni se nazivaju viejezgreni mikroprocesori (engl. multicore microprocessor) ili krae viejezgreni procesori (izraz "jezgra" (engl. ore) upotrebljava se za procesor u viejezgrenom procesoru). Viejezgreni je procesor, zahvaljujui tehnologiji visokog stupnja integracije, procesor koji ima dva ili vie procesora (jezgri) najednom ipu. Na taj se nain, uz manji potroak snage, ostvaruje djelotvorna istodobna obrada vise zadataka.

15.3.1.

KOHERENCIJA PRIRUNE MEMORIJE U MULTIPROCESORSKOM SUSTAVU


U poglavlju 10. (Priruna memorija) opisali smo problem koherencije prirune memorije i istaknuli vanost rjeavanja tog problema u multiprocesorskim sustavima. U ovom emo se potpoglavlju ukratko jo jednom osvrnuti na problem koherencije, i to za multiprocesorski sustav sa sredinjom dijeljenom memorijom (slika 15.17). Budui da svaki procesor ima svoju privatnu prirunu memoriju, ali dijeli i sredinju zajedniku memoriju, u svakoj od prirunih memorija pohranjeni su "privatni" podaci koji se odnose na lokalni proces, ali i zajedniki podaci koji se odnose na procese drugih procesora i koji su dohvaeni i pohranjeni u pojedine prirune memorije na temelju komunikacije procesora, odnosno njihovim pristupom zajednikoj memoriji. Dakle, istodobno se dijeljeni podatak nalazi u zajednikoj memoriji, a njegove kopije distribuirane su u prirune memorije pojedinih procesora. Sada nastupa problem! Ako neki od procesora promijeni vrijednost zajednikog podatka u svojoj prirunoj memoriji, taj se podatak treba promijeniti i u zajednikoj memoriji, ali i u svim prirunim memorijama ostalih procesora koji koriste taj podatak (uvjet koherencije prirune memorije; poglavlje 10). Bez dodatnih mehanizama nije mogue to ostvariti i nastupa problem (ne)koherencije prirune memorije.

Primjer 15.6. Pretpostavimo, radi jednostavnosti, da imamo multiprocesorski sustav koji ima samo dva procesora (jezgre) i daje ostvaren kao sustav sa sredinjom dijeljenom memorijom. Dakle, sustav ima zajedrtiku memoriju, a svaki od procesora ima prirunu memoriju. Neka prirune memorije koriste tehniku obnavljanja sadraja memorije pohranjivanje-kroz"(10. poglavlje). Pretpostavimo da oba procesora (procesor 1 i procesor 2) dijele zajedniku varijablu V koja je pohranjena u sredinjoj dijeljenoj memoriji na lokaciji X. Pretpostavimo, takoer, da se u trenutku t = 0 varijabla V ne nalazi u prirunim memorijama procesora 1 i procesora 2. U trenutku t = 1 procesor 1 dohvaa (ita) varijablu V iz sredinje memorije i pohranjuje je u svoju prirunu memoriju. U sljedeem trenutku (t = 2) procesor 2 dohvaa (ita) varijablu V iz sredinje memorije i pohranjuje je u svoju prirunu memoriju. U ovom trenutku (t = 2) koherencija podataka nije naruena: oba procesora imaju pohranjenu vrijednost varijable V jednaku onoj koja je pohranjena na memorijskoj lokaciji X u sredinjoj memoriji. Pretpostavimo da u sljedeem trenutku

S. RIBARI - GRAA RAUNALA

501 I

(t = 3) procesor i mijenja vrijednost varijable V u V'i pohranjuje je u svoju prirunu memoriju. Uporabom tehnike pohranjivanje-kroz"procesor 1 upisuje novu vrijednost V' na memorijsku lokaciju X u sredinjoj memoriji. Sada u vremenskom trenutku t = 3 imamo sljedeu situaciju: procesor 7 u svojoj prirunoj memoriji ima pohranjenu novu vrijednost varijable V, tj. V', sredinja dijeljena memorija ima takoer na memorijskoj lokaciji X pohranjenu novu vrijednost V. No procesor 2 ima u svojoj prirunoj memoriji pohranjenu staru vrijednost varijable V. Ako u sljedeem trenutku (t = 4) procesor2 dohvaa varijablu V iz svoje prirune memorije - dohvatit e staru vrijednost V, a ne V'. Dolo je do povrede koherencije - umjesto prave vrijednosti V' (koja je pohranjena u prirunoj memoriji procesora 7 i u sredinjoj memoriji), procesor2 koristit e se starom vrijednosti V. Problem (ne)koherencije prirune memorije rjeava se programski ili sklopovski. Relativno jednostavno programsko rjeenje sastoji se u tome da prevodilac tijekom prevoenja programa oznai informaciju (podatke) koja se smije pohraniti (engl. cacheable) i onu koja se ne smije pohraniti u prirunu memoriju (engl. non-cacheable). Sve zajednike varijable koje se mogu mijenjati upisivanjem oznaavaju se kao nepodesne (non-cacheable) za pohranu u prirune memorije i njima procesori jedino mogu pristupiti tako da pristupe sredinjoj dijeljenoj memoriji. Ovo rjeenje, meutim, degradira performansu sustava zbog pojaanog prometa izmeu sredinje dijeljene memorije i procesora. Multiprocesorski sustavi obino koriste sklopovska rjeenja kojima se odrava koherencija prirunih memorija. Protokoli kojima se odrava koherencija u multiprocesorskim sustavima nazivaju se protokoli koherencije prirune memorije (engl. cache coherence protocol) i mogu se klasificirati na: snooping protokole (engl. snoop - njukati), protokole koji se temelje na direktoriju (engl. directory based). Snooping protokol prvenstveno je namijenjen multiprocesorskim sustavima koji se temelje na prospojnoj mrei koja je izvedena kao zajednika sabirnica. Taj se protokol moe koristiti i u multiprocesorskim sustavima sa sloenijom prospojnom mreom (npr. vierazinskom) uz izvjesne sklopovske preinake kojima se omoguuje odailjanja informacije svim procesorima o promaajima u prirunoj memoriji. Snooping protokolom postie se koherencija podataka u prirunim memorijama i sredinjoj dijeljenoj memoriji tako da svi upravljai prirunih memorija (engl. cache controller) nadgledaju dogaaje na zajednikoj sabirnici ("njukaju"zajedniku sabirnicu) i odreuju trebaju ili ne trebaju kopirati dijeljeni blok podataka. Odravanje koherencije temelji se na dvjema operacijama: itanju i pisanju. Viestruke kopije koje se nalaze u prirunim memorijama pojedinih procesora nisu problem kada je rije o operaciji itanja, meutim, procesori imaju i ekskluzivno pravo upisivanja podataka u te dijeljene blokove podataka. Naravno, koherencija podataka u multiprocesorskom sustavu zahtijeva da bilo koji procesor koji koristi dijeljeni blok podataka i kada ita podatak mora itati njegovu novu vrijednost (onu nakon operacije upisivanja). Snooping protokol mora, na temelju nadgledanja sabirnice kojom se i ostvaruju prijenosi dijeljenih blokova podataka izmeu sredinje dijeljene memorije i prirune memorije, locirati sve prirune memorije koje dijele taj podatak koji e se upisati. Posljedica upisivanja (promjene) dijeljenog podatka moe biti dvojaka (ovisno o vrsti protokola) - sve ostale kopije dijeljenog bloka podataka koje se nalaze u ostalim prirunim memorijama proglaavaju se nevaeima (tehnika "pii i proglasi nevaeim"; engl. writeinvalidate) ili se, pak, aktivira postupak osvjeavanja svih ostalih kopija dijeljenog bloka u ostalim prirunim memorijama (tehnika "pii i obnovi"; engl. write-update).

502

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI, VIEJEZGREN! I GRAFIKI PROCESORI

U tehnici "pii i proglasi nevaeim" procesor koji e modificirati dijeljeni podatak mora, neposredno prije nego to to uini, generirati poseban signal "nevaee" (engl. invalidation signal) i postaviti ga na sabirnicu te time obavijestiti sve druge prirune memorije da su kopije dijeljenog bloka podataka nevaee. Kada upravljai prirunih memorija prime taj signal, provjeravaju sadrava li ona taj dijeljeni blok podataka, a ako sadrava, taj blok podataka u prirunoj memoriji proglaava nevaeim. Pokuaj itanja tog podatka od strane nekog procesora, zbog nevaeeg bloka, izazvat e promaaj tako da e se iz sredinje dijeljene memorije dohvatiti blok s modificiranom (novom) vrijednosti podatka. Tehnika "pii i obnovi" umjesto da kopije dijeljenog bloka podataka proglasi nevaeim, doputa procesoru koji je modificirao podatak da taj modificirani podatak poalje preko sabirnice tako da se obnove sve kopije u ostalim prirunim memorijama. Tehnika "pii i obnovi" slina je postupku "pohranjivanja-kroz" jer se svaka promjena zajednikog podatka alje preko sabirnice sredinjoj dijeljenoj memoriji, samo to se ovdje obnavljaju i sadraji prirunih memorija. Svaka promjena (upisivanje u zajedniki dijeljeni blok podataka) ima za posljedicu prijenos tog podatka zajednikom sabirnicom. U tehnici "pii i proglasi nevaeim" sabirnica se koristi samo jednom, i to pri prvom pisanju da bi se kopije dijeljenog bloka proglasile nevaeim. Daljnje upisivanje, odnosno promjene, drugih podataka u tom zajednikom bloku ne zahtijevaju aktivnost na sabirnici. Primjer 15.7. Prikaimo osnovnu zamisao dviju tehnika snooping protokola u multiprocesorskom sustavu sa sredinjom dijeljenom memorijom. Pretpostavimo da imamo u sustavu osam procesora P1# P ,..., P8 koji imaju svoje prirune memorije C1# C2,..., C8 te da se kao prospojna mrea koristi zajednika sabirnica. Pretpostavimo da se dijeljeni blok podataka X nalazi u prirunim memorijama procesora P2, i P4, tj. u C1# C2 i C4 (slika 15.20). P3
4 i.
*

/V

O
X

r X c3

s/

prospojna mrea / zajednika sabirnica

X memorija
(sredinja dijeljena memorija)

SI. 15.20 Vaee kopije bloka podataka X nalaze se sredinjoj dijeljenoj memoriji i u prirunim memorijama C^ C 2 i C 4

Pretpostavimo da je procesor P1 promijenio podatak u bloku X (promijenjeni sadraj bloka X oznait emo s X'). Slika 15.21 prikazuje stanje multiprocesorskog sustava nakon operacije koja odgovara tehnici "pii i proglasi nevaeim". Vidimo da priruna memorija C1 i sredinja dijeljena memorija imaju novu vrijednost X', a da su blokovi X u C2 i C4 oznaeni s I kao nevaei (engl. invalidate).

"TV

X'

o
prospojna mrea / zajednika sabirnica __

X' memorija
{sredinja dijeljena memorija)

SI. 15.21 Stanje nakon operacije koja odgovara snooping protokolu "pii i proglasi nevaeim"

Slika 15.22 prikazuje stanje multiprocesorskog sustava nakon operacije koja odgovara snooping protokolu "pii i obnovi". Vidimo da su obnovljeni dijeljeni blokovi X u X' u prirunim memorijama C2 i C4 i, naravno, u sredinjoj dijeljenoj memoriji.
p, 5 > p2 p3 o p*

...

p8 o

<>

X'

X'

O
prospojna mrea / zajednika sabirnica

X' memorija
(sredinja dijeljena memorija)

SI. 15.22 Stanje nakon operacije koja odgovara snooping protokolu "pii i obnovi"

504

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

Spomenimo jo jedan od poznatijih snooping protokola koherencije prirune memorije MESI (engl. modified-exclusive-shared-invalid) koji se djelotvorno koristi kako u jednoprocesorskim sustavima, tako i u multiprocesorskim sustavima. Ukratko, MESI protokol moemo opisati za jednorazinsku organizaciju prirune memorije na sljedei nain: Odmah nakon uputanja u rad sustava svi su sadraji prirunih memorija proglaeni nevaeim. Prvi put kada neki od procesora (npr. procesor P^ izvodi operaciju itanja ili pisanja - dogaa se promaaj i referencirani se blok podataka prenosi iz sredinje dijeljene memorije u prirunu memoriju tog procesora. Taj blok podataka dobiva oznaku E (engl. exclusive) jer je iskljuivo samo jedna kopija u jednoj prirunoj memoriji. Sada su podaci u bloku podataka raspoloivi procesoru P1 i on ih moe itati. Pretpostavimo da sada neki drugi procesor (npr. procesor P2) referencira podatak u istom bloku podataka - dogodio se promaaj i dohvaa se isti blok podataka iz sredinje dijeljene memorije i smjetava ga u svoju prirunu memoriju procesora P2. Sada procesor P)t koji je izvorni vlasnik bloka podataka, na temelju nadgledanja ("njukanja") sabirnice vidi da nije vie jedini vlasnik kopije te objavljuje preko sabirnice da i on ima takvu kopiju bloka. Obje se kopije oznaavaju sa S (engl. shared) - dijeljeni blok. Stanje kopija S oznaava da postoje dvije i vie kopija bloka podataka u prirunim memorijama. I u ovom sluaju operacija itanja podataka iz bloka, bilo od strane procesora P1 i/ili P2 ne trai dodatne aktivnosti na zajednikoj sabirnici. Pretpostavimo sada da procesor P2 upisuje podatak u svojoj kopiji bloka (bloka koji ima status dijeljenog bloka S). On e na sabirnicu postaviti signal kojim e obavijestiti ostale procesore da je kopija bloka podataka koji i oni posjeduju nevaea (engl. invalid). Blok podatka u prirunoj memoriji procesora koji je izveo operaciju pisanja prelazi u stanje M (engl. modified). No taj se blok podataka jo ne upisuje u sredinju dijeljenu memoriju. Pretpostavimo sada da procesor P3 izvodi operaciju itanja podatka iz bloka podataka dohvatom bloka podataka iz sredinje dijeljene memorije. Procesor P2, koji je sada jedini vlasnik modificiranog bloka podataka, zna da kopija bloka podataka u sredinjoj dijeljenoj memoriji nije vaea, postavlja signal na sabirnicu i njime obavjetava procesor P3 da treba priekati dok on ne izvede operaciju "kopiranja nazad". Kada zavri operacija kopiranja modificiranog bloka podataka u sredinju dijeljenu memoriju, procesor P3 dohvaa kopiju bloka i blok je oznaen kao dijeljen (S) u obje prirune memorije. Ako sada ponovo npr. procesor P2 upisuje u blok podataka koji je oznaen sa S, ponovo e se morati proglasiti kopija bloka podataka u prirunoj memoriji procesora P3 nevaeom. I konano, ako sada procesor P1 izvodi operaciju upisa u dijeljeni blok (to izaziva promaaj), procesor P2 na temelju "njukanja" na sabirnici to utvruje te postavlja signal na sabirnicu kojim obavjetava procesor P1 da mora priekati dok on ne izvede operaciju kopiranja nazad. Kada je procesor P2 zavrio s tom operacijom, oznaava svoju kopiju nevaeom jer zna da e procesor P1 modificirati taj blok podataka. Da bi procesor P1 izveo operaciju pisanja, mora dohvatiti blok podataka iz sredinje dijeljene memorije (ako koristi tehniku dodjele upisa (engl. write allocation; poglavlje 9.)) i blok oznaiti s M. Ako se ne koristi tehnika dodjele upisa, ve tehnika izravnog upisivanja (10. poglavlje), onda se upis obavlja izravno u sredinjoj dijeljenoj memoriji i blok se ne smjetava u prirunu memoriju procesora P r Slika 15.23 prikazuje pojednostavljeni dijagram stanja za MESI protokol. (Opaska: MESI protokol podrava i vierazinsku organizaciju prirune memorije.) Protokoli koji se temelje na direktoriju obino se koriste u multiprocesorskim sustavima koji imaju prospojnu mreu izvedenu kao vierazinsku. Protokoli ove vrste mogu se temeljiti na jednom sredinjem direktoriju u kojem je pohranjena informacija o statusu dijeljenih blokova fizike memorije - sredinji direktorij sadrava kopije svih direktorija prirunih memorija s informacijom u kojim se prirunim memorijama nalaze kopije blokova podataka.

S. RIBARI - GRAA RAUNALA

505 I

51.15.23 Pojednostavljeni dijagram stanja za MESl protokol

U porazdijeljenoj shemi svaki memorijski modul ima poseban direktorij u kojem se biljei stanje i prisutnost svakog bloka. Informacija o stanju bloka je lokalna dok informacija o prisutnosti pokazuje koje prirune memorije imaju kopiju tog bloka. Protokoli koji koriste sredinji direktorij imaju sredinji upravlja koji je sastavni dio upravljaa sredinje dijeljene memorijske jedinice, a direktorij se pohranjuje u sredinjoj dijeljenoj memoriji. Kada neki upravlja lokalne prirune memorije generira zahtjev, sredinji upravlja provjerava taj zahtjev i na temelju informacije koju ima u direktoriju generira naredbe za prijenos podataka izmeu sredinje dijeljene memorije i prirunih memorija ili izmeu prirunih memorija. Zadatak sredinjeg upravljaa jest odravanje informacije o stanju tako da on mora biti obavijeten o svakoj lokalnoj akciji koja utjee na dijeljene blokove podataka. Prije nego to procesor modificira podatak u dijeljenom bloku podataka, mora zatraiti doputenje za tu operaciju od sredinjeg upravljaa. Upravlja prije slanja signala kojim potvruje pravo na promjenu podatka mora poslati poruku svim dugim procesorima koji takoer koriste taj dijeljeni blok podataka. Tom porukom sredinji upravlja zahtijeva da se sve kopije tog bloka podataka proglase nevaeim. Tek kada dobije potvrdu od svih procesora da je blok oznaen kao nevaei, sredinji upravlja alje signal potvrde kojim doputa procesoru promjenu podatka u dijeljenom bloku. Kada drugi procesor pokua itati podatak iz tog dijeljenog bloka, dogodit e se promaaj koji e se signalizirati sredinjem upravljau. Sredinji e upravlja tada izdati naredbu procesoru koji je vlasnik modificiranog bloka da taj blok upie natrag u sredinju dijeljenu memoriju (tehnika obnavljanja sadraja "kopiranjem nazad" (10. poglavlje). Nakon pohranjivanja osvjeenog dijeljenog bloka u sredinju dijeljenu memoriju omoguit e se prijenos tog bloka u prirunu memoriju procesora koji je elio itati podatak.

506

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI, VIEJEZGREN! I GRAFIKI PROCESORI

15.3.2. SINKRONIZACIJA PROCESA I DRETVI


Openito u paralelnim procesnim okruenjima dva ili vie konkurentna procesa (ili dretve) trebaju meusobno komunicirati (na primjer, tijekom izvoenja proces2 u nekom trenutku treba podatke koje generira proces 7). Komunikacija izmeu procesa temelji se na osnovnom aksiomu da se ne mogu predvidjeti ili pretpostaviti relativne brzine procesa. To znai da bi se ostvarila komunikacija ili izmjena podataka izmeu procesa 1 i procesa 2 u tono definiranoj toki, oba procesa moraju biti sinkronizirana. Jo je jedan vaan detalj - sinkronizacija mora biti ugraena programski u procese, a ne ostvarena procesorima, npr. nekim satnim mehanizmom - signalom vremenskog voenja. Ovisno o tome jesu li procesi ili dretve takve da se meusobno natjeu ili konkuriraju (na primjer, meusobno se natjeu za dobivanje nekog resursa), ili su pak kooperativni, tj. meusobno surauju, razlikujemo dvije vrste sinkronizacije: i) meusobno iskljuivanje (engl. mutual exclusion), ii) uvjetovana sinkronizacija (engl. condition synchronization). Dvije osnovne vrste sinkronizacije kojima se ostvaruje meusobno iskljuivanje i uvjetovana sinkronizacija opisat emo na sljedeem primjeru (preuzeto iz Dasgupta, S.: Computer Architecture, A Modern Synthesis, 1989.). Slika 15.24 prikazuje dva procesora P, i P i dva nezavisna procesa proces 1 i proces 2 koji se paralelno izvravaju. Opiimo prvo sluaj kada sa dva procesa meusobno natjeu za neki resurs. U nekoj toki izvravanja oba procesa, proces 1 i proces 2, zahtijevaju modifikaciju zajednike strukture podataka D koja se nalazi u sredinjoj dijeljenoj memoriji. Pretpostavimo da programski segmenti procesa 7 i procesa 2 izgledaju ovako: f proces 7: ldr1,D addirl, 7 str1,D

proces 2: IdrZD addi r2,2 st r2f D

Budui da su oba procesa konkurentna i da nemamo pretpostavke o njihovim relativnim brzinama, moe se dogoditi da se instrukcije gornjih dvaju programskih odsjeaka meusobno isprepliu to vodi nepredvidljivom rezultatu: ako pretpostavimo da je poetna vrijednost za D bila 0, onda vrijednost D-a nakon procesa 7 i procesa 2 kada se oba izvre moe biti 1, 2 ili 3, ovisno o relativnim vremenima u kojima se instrukcije izvode. Da bi se ta neodreenost izbjegla, odnosno da bismo imali jamstvo da e vrijednost za D biti 3 kadgod se procesi 1 i 2 izvre, zahtijeva se da gornji programski odsjeci budu nedjeljivi',

S. RIBARI - GRAA RAUNALA

507 I

to znai da pristupaju i modificiraju D na meusobno iskljuivi nain i promatraju se kao kritini programski odsjeci. Da bi se zadovoljili uvjeti nedjeljivosti programskog odsjeka i njihovo meusobno iskljuivanje, upotrebljava se mehanizam zakljuavanja (engl. locking)f i to na sljedei nain: Pretpostavimo da smo strukturi podataka D pridruili "klju" k i dvije operacije lock(k) i uniock(k) kojima se k postavlja u 1 ("zakljuana brava"), odnosno 0 ("otkljuana brava"). Proces moe izvesti operaciju lock(k) samo kada je k = 0, odnosno kada je brava otkljuana. Rezultat operacije lock je postavljanje k u 1 i zato onemoguavanje ostalih procesa da izvedu operaciju lock(k). Bilo koji drugi proces sada mora ekati sve dok proces koji je aktivirao operaciju lock(k) ne postavi k u 0 operacijom uniock(k). Uz pretpostavku da je inicijalna vrijednost za k bila 0, dva kritina programska odsjeka se mogu implementirati na sljedei nain: proces 7: lock (k) Idrl, D addirl, 1 strl, D unlock(k) proces 2: lock(k) IdrZD addi r2,2 str2,D unlock(k) Problem uvjetovane sinkronizacije prikazat emo takoer na primjeru sa slike 15.24. U ovom su sluaju procesi proces 7 i proces 2 kooperativni procesi, odnosno procesi koji meusobno surauju. Pretpostavimo da proces 1 generira niz rezultata i pohranjuje ih slijedno u D, a proces2 slijedno uzima te podatke iz niza i konzumira ih. Radi jednostavnosti, pretpostavimo da D moe pohranjivati samo jednu vrijednost tako da se mora osigurati sljedee: i) kad proces 7 generira vrijednost V. i smjetaje u D, on eka sve dok proces2 ne konzumira vrijednost V.. Tek e poslije toga pohraniti sljedeu vrijednost V.+1 u D; ii) nakon to proces 2 konzumira vrijednost V. iz D, on eka sve dok proces 1 ne generira sljedeu vrijednost Vj+1. Tek poslije toga ponovo ita iz D. Vidimo da proces 7 i proces 2 moraju biti meusobno sinkronizirani, i to na sljedei nain: proces 7 mora kasniti s upisivanjem u D dok nije odreen uvjet postavljen od procesa 2, takoer, proces 2 mora kasniti sa itanjem iz D dok odreen uvjet nije postavljen od procesa 7. Uvjetovana sinkronizacija moe se ostvariti uporabom istog koncepta koji se koristi za meusobno iskljuivanje. U ovom sluaju imamo dva kljua k1 i k2 koja su pridruena strukturi podataka D: proces 7 "otkljuava" k2 i time signalizira procesu 2 da je pohranio novu vrijednost u D, dok proces 2 otkljuava k1 da bi obavijestio proces 1 o konzumiranju vrijednosti koja je posljednja pohranjena u D. Uz pretpostavku da je poetna vrijednosti kj jednaka 0, a poetna vrijednost k2 jednaka 1, programski odsjeci kojima se ostvaruje

508

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

uvjetovana sinkronizacija izgledaju ovako: proces 1: lockfkj generiraj vrijednost i pohrani je u D unlockfkj proces 2: iockfkj konzumiraj vrijednost iz D unlock(k.) f

memorija

procesor P,

procesor P.

SI. 15.24 Shematski prikaz dijeljenja strukture podataka D od strane dvaju procesa Iz operacijskih sustava znamo da postoje dva osnovna pristupa koji se primjenjuju za izvedbu mehanizma za obje vrste sinkronizacije: i) sinkronizacija uporabom dijeljenih varijabli (engl. shared variables) uporabom testand-set primitiva, fetch-and-add primitiva, semafora; ii) sinkronizacija na temelju prosljeivanja poruka. Prvi mehanizam sinkronizacije pogodan je i zato prevladava u multiprocesorskim sustavima sa sredinjom dijeljenom memorijom UMA, dok se drugi koristi u multiprocesorskim sustavima s porazdijeljenom memorijom NUMA.

S. RIBARI - GRAA RAUNALA

509 I

15.4. VIEDRETVENOST I SIMULTANA VIEDRETVENOST


Viedretvenost (engl. multithreading) za razliku od hiperdretvenosti, kao to smo u uvodnom dijelu ovog poglavlja vidjeli, podrazumijeva da se vie dretvi izvodi u jednom procesoru tako da se izvoenje dretvi meusobno ispreplie, odnosno dretve se naizmjenino izvode u dodijeljenim funkcijskim jedinicama procesora uz nuno prospajanje konteksta sadranog u tablici dretvi, i to nakon svake izmjene dretve. Dva su glavna pristupa viedretvenosti: finozrnata viedretvenost (engl. fine-grained multithreading), grubozrnata viedretvenost (engl. coarse-grained multithreading). Finozrnata viedretvenost podrazumijeva prospajanje dretvi nakon svake instrukcije. (Opaska: procesori s takvom znaajkom nazivaju se jo i "bavasti", odnosno barrel procesori.) Te su instrukcije meusobno nezavisne jer pripadaju razliitim dretvama tako da se protona struktura djelotvorno iskoritava. No moe se dogoditi poveani broj promaaja prirune memorije zbog naruavanja lokalnosti programa. Obino se izvoenje dretvi u tom sluaju temelji na krunom prioritetu (engl. round-robin) uz "preskakanje" dretvi koje su u stanju zastoja. Da bi se finozrnata viedretvenost djelotvorno iskoristila, procesor mora biti u stanju prospajati dretve u svakoj periodi signala vremenskog voenja, a uz to, vrijeme prospajanja konteksta dretvi mora biti vrlo kratko. Oekuje se da je vrijeme potrebno za kuanske poslove koje treba obaviti procesor tijekom izmjene konteksta dretvi krae od vremena potrebnog za prospajanje procesa. Viedretveni procesori imaju sklopovski podrano brzo prospajanje konteksta dretvi (tzv. hardware based fast context switching) koje se temelji na tome da svaka dretva ima dodijeljene fizike registre za pohranu konteksta dretvi. Na primjer, viedretveni procesor Tera podrava 128 dretvi, pri emu je svakoj dretvi dodijeljen 41 64-bitni registar u procesoru Jezgre, osim sklopovski podranog brzog prospajanja konteksta, imaju i dinamiku izvedbu preimenovanja registara (14. poglavlje) kojim se rjeavaju hazardi WAW i WAR koji se nazivaju jo i lane zavisnosti. Grubozrnata viedretvenost predvia prospajanje dretvi samo onda kada nastupa dulji zastoj u tekuoj dretvi (npr. promaaj u prirunoj memoriji). Za krae zastoje, na primjer one izazvane u instrukcijskoj protonoj strukturi uslijed hazarda, ne predvia se izmjena dretvi te je to jedan od glavnih nedostataka grubozrnate viedretvenosti. Razlog da se ne koristi prospajanje dretvi kod zastoja izazvanih u protonoj strukturi lei u procjeni cijene i koliine posla za pranjenje protone strukture da bi se u nju mogao uputiti instrukcijski tok druge dretve. Izmjena dretvi i prospajanje njihova konteksta moe se dogaati i pri svakoj load instrukciji (neovisno o tome je li se dogodio promaaj) ili nakon programskog odsjeka (bloka instrukcija) koji pripadaju jednoj dretvi. Grubozrnata i finozrnata viedretvenost moe se kombinirati s paralelizmom na razini instrukcija ILP, ali i sa superskalarnosti (viestrukim protonim strukturama u jednom procesoru). Tri su procesorske konfiguracije mogue u tom sluaju: superskalarnost s grubozrnatom viedretvenosti, superskalarnost s finozrnatom viedretvenosti, superskalarnost sa simultanom viedretvenosti. Superskalarni procesori s grubozrnatom viedretvenosti izvode istodobno vei broj instrukcija koje pripadaju istoj dretvi sve do trenutka kada nastupi dulji zastoj, u tom se trenutku prospaja kontekst dretvi i nastavlja se s izvoenjem druge dretve.

510

15.

POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

Superskalarni procesori s finozrnatom viedretvenosti isprepliu dretve i na taj nain eliminiraju moebitne zastoje u izdavanju instrukcija. Budui da samo jedna dretva izdaje instrukcije tijekom periode signala vremenskog voenja, jo uvijek postoje ogranienja u paralelizmu na razini instrukcija. Viejezgreni procesori tvrtke Sun nazvani T1 (Niagara 1) i T2 (Niagara 2) koriste finozrnatu viedretvenost. Simultana viedretvenost SMT (engl. simultaneous multithreading) zasniva se na injenici da suvremeni (superskalarni) procesori imaju paralelizam na razini funkcijskih jedinica vei od onog koji jedna dretva moe iskoristiti. Zato se dinamikim rasporeivanjem izdaje istodobno vie instrukcija iz nezavisnih dretvi u istoj periodi signala vremenskog voenja. Dakle, u SMT-u se iskoritava paralelizam na razini dretvi i paralelizam na instrukcijskoj razini u kombinaciji s izdavanjem vie instrukcija u jednoj periodi signala vremenskog voenja. Primjeri procesora koji se temelje na SMT zamislima su Intelovi viejezgreni procesori Nehalem i Pentium D te IBM-ovi viejezgreni procesori POWERS, POWER6 i POWER7. Da bismo zorno predoili razliku izmeu superskalarnosti, viedretvenosti (MT) i simultane viedretvenosti (SMT), posluit emo se jednostavnim modelom obrade koji su predloili S. J. Eggers i suradnici. Slika 15.25 prikazuje primjer izvoenja za potonje navedene tri arhitekture procesora. Pretpostavimo da su sva tri procesora superskalarna i da mogu izdavati do etiri instrukcije u jednoj periodi signala vremenskog voenja. Na slici 15.25 svaki redak predoava stanje etiriju protonih struktura superskalarnog procesora u koju se upuuju instrukcije na izvoenje, i to tijekom jedne periode signala vremenskog voenja. Svaki se kvadrat u retku naziva i prikljuak za izdavanje instrukcije (engl. instruction issue slot). Popunjen kvadrat u retku odgovara u pora bijenom prikljuku za izdavanje, dok bijeli kvadrat oznaava da se u toj periodi nije izdala instrukcija za taj prikljuak i da je on neiskoriten. Na primjer, na slici 15.25 a), koja se odnosi na "obini" superskalarni procesor, od etiri prikljuka za izdavanje instrukcija samo su dva iskoritena tijekom prve periode signala vremenskog voenja, to znai da zbog npr. meuzavisnosti instrukcija, odnosno ograniene razine paralelizma na razini instrukcija nije bilo mogue etiri instrukcije uputiti u izvoenje (u prvoj periodi signala vremenskog voenja). Nekoriteni prikljuci za izdavanje instrukcija mogu se promatrati kao "horizontalno neiskoriteni prikljuci" i kao "vertikalno neiskoriteni prikljuci". Pod horizontalno neiskoritenim prikljucima podrazumijevamo sluaj kada su u jednom retku jedan ili vie prikljuaka neiskoriteni (ali ne svi!). Na primjer, na slici 15.25 a) tijekom prve, tree i osme periode imamo sluaj da dva prikljuka nisu iskoritena - osnovni razlog je skromna razina paralelizma na razini instrukcija u istoj dretvi. Tijekom etvrte periode, zbog velike meuzavisnosti instrukcija, samo je jedan prikljuak iskoriten. Vertikalno neiskoriteni prikljuci dogaaju se kada su tijekom jedne periode svi prikljuci neiskoriteni - to nastupa zbog dulje latencije (duljeg zastoja u izvoenju) instrukcije, npr. pristupa memoriji, kada je privremeno sprijeeno daljnje izdavanje instrukcija. Slika 15.25 a) prikazuje slijed izvoenja instrukcija za konvencionalni superskalarni procesor. U tom se sluaju izvodi jedan program (proces) ili jedna dretva, i to tako da se pokuava nai vie instrukcija (do etiri) koje se mogu istodobno izvesti. Kad se to ne moe nai, onda se dogaaju horizontalni i vertikalni neiskoriteni prikljuci. Slika 15.25 b) prikazuje slijed izvoenja za finozrnati viedretveni procesor (MT) koji podrava sklopovski prospajanje konteksta dretvi. On djeluje tako da tijekom jedne periode signala vremenskog voenja izvodi vei broj instrukcija iz jedne dretve. Tijekom sljedee

S. RIBARI - GRAA RAUNALA

511 I

periode procesor izvrava instrukcije iz druge dretve. Svakom novom periodom signala vremenskog voenja, procesor prospaja kontekst dretve i izvrava instrukcije iz nove dretve. Iz slike 15.25 b) vidimo da viedretveni procesor djelotvornije koristi resurse procesora, posebice u situacijama kada bi nastupale dulje latencije instrukcija, odnosno vidimo da se s viedretvenosti uklanjaju vertikalno neiskoriteni prikljuci. No viedretvenost ne utjee na uklanjanje horizontalno neiskoritenih prikljuaka jer oni ovise o paralelnosti instrukcija unutar jedne dretve.
p r i k l j u a k za i z d a v a n j e i n s t r u k c i j e superskalarni procesor MT SMT

a > *o o > o > o


c

10 <V "O a) a.

o a > 0) E
a>

| | | | | |
1 1 n n 1 n 1

dretva 1 dretva 2
dretva 3

|\\v| dretva 4 dretva 5

M s

11 1 1 1 1 u

1 11 1 1 I1

M M M
1

Ivlv! LVH^I

a)

b)

SI. 15.25 Prikaz izvoenja dretvi: a) u superskalarnom procesoru konvencionalne arhitekture, b) u superskalar nom viedretvenom procesoru MT, c) u superskalarnom procesoru sa simultanom viedretvenosti SMT

Slika 15.25 c) pokazuje slijed izvoenja za simultano viedretveni procesor (SMT). Vidimo da u svakoj periodi signala vremenskog voenja procesor"izabire" instrukcije za izvoenje iz svih dretvi. On iskoritava paralelizam na razini instrukcija izborom instrukcija iz bilo koje dretve. Nakon toga procesor dinamiki rasporeuje resurse procesora izmeu instrukcija i osigurava visoku razinu iskoristivosti sklopovskih resursa. Ako neka od dretvi ima visok stupanj paralelizma na razini instrukcija, onda se te instrukcije izvode i pritom je vrlo malo

512

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

horizontalno neiskoritenih prikljuaka. Ako paralelizam na razini instrukcija za jednu dretvu nije dovoljno visok, onda se izabire jo jedna dretva (ili vie njih) s niim stupnjem paralelizma koja e popuniti prazne horizontalne prikljuke. Na taj se nain postie uklanjanje i vertikalnih neiskoritenih prikljuaka i u velikoj mjeri horizontalnih neiskoritenih prikljuaka, tako da se performansa SMT procesora poveava u odnosu na konvencionalni superskalarni procesor, ali i u odnosu na viedretveni procesor. Posebno zanimljiv pristup arhitekturi procesora je pristup koji se naziva trea generacija DPL (engl. Data Parallel Processor) u kojem se kombiniraju vektorske instrukcije, izdavanje instrukcija izvan redoslijeda i preimenovanje registara te simultano izvoenje vie dretvi. Procesori s tim znaajkama nose oznaku SMV - Simultaneous Multithreaded Vector- simultano viedretveni vektorski procesori.

15.5 VIEJEZGRENI PROCESORI


Viedretvenost i simultana viedretvenost ostvaruje se uporabom viejezgrenih (engl. multicore) procesora. Opiimo arhitekturu nekoliko vodeih viejezgrenih procesora.

15.5.1

IBM POVVER4 DVOJEZGRENI PROCESOR


Godine 2001. tvrtka IBM oblikovala je prvi komercijalni 64-bitni multiprocesorski sustav na ipu (viejezgreni procesor) ope namjene - POVVER4 (slika 15.26). Viejezgreni procesor POVVER4 sadrava dvije jezgre - dva superskalarna procesora na ipu te dijeljenu zajedniku prirunu memoriju druge razine (L2) koja je organizirana u tri bloka (svaki kapaciteta 470 KB) i direktorij za prirunu memoriju razine L3 (kapaciteta 32 MB) koja je ostvarena izvan procesorskog i pa. Jedinica Cl U - ore Interface Unit povezuje svaki od L2 blokova prirune memorije s prirunom memorijom podataka LI (kapaciteta 32 KB) i instrukcijskom prirunom memorijom LI (kapaciteta 64 KB) svake od jezgri. Jedinice NC - Non-Cacheable odgovorne su za rukovanje operacijama koje ne koriste prirune memorije jezgara. Sabirnika upravljaka jedinica GX upravlja komunikacijom s U/l jedinicama i podrava dvije tzv. GX sabirnice irine 4 bajta. Fabric Controller glavni je upravlja za sabirniku strukturu i komunikaciju s L2/L3 upravljaima prirune memorije te za komunikaciju vie POVVER4 procesora. Dvojezgreni procesor namijenjen je iskoritavanju paralelizma na razini dretvi. Znaajke POVVER4 arhitekture su superskalarnost i izvoenje instrukcija izvan redoslijeda. Izvoenje instrukcija izvan redoslijeda omoguuje sklopovlju procesora da "odgodi" instrukcije iji operandi nisu jo raspoloivi, npr. zbog promaaja u prirunoj memoriji tijekom instrukcije load i izvodi neku drugu instrukciju koja ima spremne operande. Nakon to operandi za odgoenu instrukciju postanu raspoloivi, procesor izvrava odgoenu instrukciju. Superskalarna jezgra POVVER4 procesora (slika 15.27) ima osam nezavisnih izvrnih jedinica: dvije jedinice za operacije brojevima s pominim zarezom (FPU), dvije jedinice za operacije brojevima sa vrstim zarezom (FXU), dvije load/store jedinice, jedinicu grananja (BR) i logiku jedinicu (jedinicu uvjetnog registra CR - Conditional-register unit). Superskalarna jezgra moe izvoditi do osam operacija u jednoj periodi signala vremenskog voenja. Svaka od jezgri ima instrukcijsku prirunu memoriju razine L1 kapaciteta 64 KBte dvoulaznu prirunu memoriju podataka razine L1 kapaciteta 32 KB.

S. R1BARI - GRAA RAUNALA

513

SI. 15.26 Organizacija dvojezgrenog procesora POWER4

POWER4 moe se koristiti i u konfiguraciji s vie ipova POWER4 uporabom MCM - MultiChip Module tako da se mogu kombinirati etiri POWER4 ipa u jednom pakovanju. Viejezgreni procesor POWER4 ostvaren je u 180 nm VLSI tehnologiji SOI (Silicon on Insulator) CMOS i ima 174 milijuna tranzistora, radi na frekvenciji od 1.3 GHz pri emu mu je potroak snage oko 115 W. Poboljana verzija procesora POWER4+ radi na frekvenciji 1.9 GHz i ima 184 milijuna tranzistora na ipu povrine 267 mm2 (tehnologija 130 nm SOI CMOS).

514

15.

POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

SI. 15.27 Jezgra procesora POWER4

15.5.2.

ULTRASPARC TI IT2
Krajem 2005. tvrtka Sun najavila je viejezgreni (osam jezgri) procesor Ultra SPARCT1, pod nazivom Niagara, koji je ujedno i viedretveni, a namijenjen je za raunarske sustave koji obavljaju funkciju posluitelja (engl. server). Jedna od arhitektonskih znaajki mu je da je orijentiran na djelotvorno iskoritavanje paralelizma na razini dretvi (viedretvenost), vie no na razini instrukcija. No svaka od jezgri ima protonu strukturu koja se sastoji od est protonih segmenata (pribavi, izbor dretve, dekodiraj, izvri, pristup memoriji, upii natrag). Vidimo da pet protonih segmenata odgovara onima u "klasinoj" instrukcijskoj RISC protonoj strukturi (13. poglavlje) uz dodatak protonog segmenta za prospajanje dretvi. Zbog relativne jednostavnosti protone strukture instrukcije grananja i instrukcije load prouzrokuju kanjenje od tri periode signala vremenskog voenja, meutim, to se kanjenje "prekriva" izvoenjem instrukcija drugih dretvi. Jezgra izdaje jednu instrukciju i upuuje je u protonu strukturu - ne koristi se tehnika izdavanja i zavravanja instrukcija izvan redoslijeda to u velikoj mjeri pojednostavnjuje izvedbu procesora. Svaka od osam jezgri podrava istodobno etiri dretve, tako da, zapravo, viejezgreni procesor T1 kombinira viedretvenost na razini procesora (jezgre) i hiperdretvenost - istodobno izvoenje veeg broja dretvi u osam jezgri. Ve smo spomenuli da T1 rabi finozrnatu viedretvenost, odnosno da ima znaajke "bavastog" procesora (engl. barrelCPU). Svaka jezgra u svakoj periodi

S. RIBARI - GRAA RAUNALA

515 I

signala vremenskog voenja prospaja dretve. Dretve koje su zbog kanjenja u protonoj strukturi ili zbog promaaja prirune memorije u trenutnom zastoju "zaobilaze" se pri rasporeivanju. S obzirom da jezgra rukuje sa etiri dretve, neaktivna je samo u sluaju kada su sve etiri dretve u zastoju. Slika 15.28 prikazuje organizaciju viejezgrenog procesora TI. Osam jezgri, od kojih svaka ima svoju "privatnu" instrukcijsku prirunu memoriju i prirunu memoriju podataka (razina L1), prospojnom su mreom crossbor spojene sa etiri izdvojene prirune memorije razine 2. Svaka od prirunih memorija razine L2 ima svoj direktorij. Koherencija prirunih memorija razine LI postie se protokolom koherencije koji se temelji na direktoriju. Procesor T1 ima samo jednu jedinicu za operacije brojevima s pominim zarezom (engl. floating-point unit; FPU) kojoj jezgre pristupaju preko prospojne mree.
crossbar prospojna mrea

r "I o 0 O O Q

-0-

-0-

o-

-o-

-O-

-0

-0

-o

-o

-0-

-0-

-0

-o

-O-

-6

-o

o o

-o

-0

-0-

priruna memorija 1
(L2)

priruna memorija 2 (L2)

priruna memorija 3
(L2)

priruna memorija 4 (L2)

FPU

SI. 15.28 Organizacija viejezgrenog procesora Sun Ultra SPARC TI (Niagara 1)

Ln

L T t N J & =h lQ
c

Q > O

visejezgreni procesor

N J
X
00 jezgra spare 8KB L1 jezgra spare 8KB L1 jezgra spare 8KB LI jezgra spare 8KB LI jezgra spare 8KB jezgra spare 8KB L1 jezgra spare 8KB L1 jezgra spare 8KB L1

f D
O ) o o f D c n o -*

LI

prospojna mrea crossbar

O J C O c 3 c r+ x Q J
to

90 GB/s (pii skroz)

179 GB/s

4 MB

dijeljena priruna memorija L2

3 D n I N J

razdjeljnici (hub)

A-

V
memorijski upravlja

Q >

N J
21.33 GB/s (itanje) 10.66 GB/s (pisanje)

667 MHz FBDIMM memorija

visejezgreni procesor

jezgra spare 8KB LI

jezgra spare 8KB LI

jezgra spare 8KB LI

jezgra spare 8KB LI

jezgra spare 8KB LI

jezgra spare 8KB L1

jezgra spare 8KB L1

jezgra spare 8KB L1

prospojna mrea crossbar

0 O

90 GB/s (pii skroz)

179 GB/s

4
4 MB dijeljena priruna memorija L2

razdjeljnici {hub)

memorijski upravlja

21.33 GB/s (itanje)

10.66 GB/s (pisanje)

667 MHzFBDIMM memorija

FBDIMM - Fully-buffered DIMM

S. RIBARI - GRAA RAUNALA

517 I

Navedimo neke od arhitektonskih znaajki viejezgrenog procesora TI: finozrnata viedretvenost na razini instrukcije, osam jezgri, etiri dretve po jezgri, jedna FPU, crossbar prospojna mrea, relativno jednostavna protona struktura sastavljena od est poput RISC protonih segmenata, jezgra ima prirune memorije razine LI: 16 KB instrukcijske memorije i 8 KB prirune memorije podataka (blok ili linija duljine je 64 bajta), etiri odvojene prirune memorije razine L2 svaka po 750 KB, koristi se protokol koherencije koji se temelji na direktoriju. Navedimo jo neke tehnoloke detalje: izveden je u 90 nm CMOS VLSI tehnologiji, ima 279 milijuna tranzistora ostvarenih na silicijskom ipu povrine 379 mm2, potroak snage mu je 79 W, a maksimalna frekvencija signala vremenskog voenja je 1.2 GHz. Vrna performansa viejezgrenog procesora TI iznosi oko 9600 MIPS-a i oko 1200 MFLOPS-a. U listopadu 2007. na tritu se pojavio Ultra SPARC T2 (kodnog imena Niagara 2) (slika 15.29) koji je poboljana verzija prethodnika T1. Procesor T2 je realiziran u 65 nm VLSI tehnologiji, ima osam jezgri i svaka se jezgra moe istodobno koristiti s osam dretvi, dakle T2 ima ukupno 64 konkurentnih dretvi. Svaka je jezgra ostvarena kao protona jedinica s osam protonih segmenata i ima i dvije aritmetiko-logike jedinice koje dijele grupe od po etiri dretve. Umjesto jedne FPU jedinice, sada ih je u T2 osam - po jedna FPU za svaku jezgru. Kapacitet prirune memorije razine L2 je s 3 MB povean na 4 MB i organizirana je kao 16-putna asocijativna memorija (10. poglavlje). Frekvencija signala vremenskog voenja je s 1.2 GHz poveana na 1.6 GHz. Performansa procesora T2, u odnosu na T1, znatno je poboljana tako da ispitni programi pokazuju da je propusnost za cjelobrojne operacije vea od dva puta (u odnosu na T1), propusnost za cjelobrojnu dretvu vea je za 1.4 puta, a performansa dretve koje rabi operacije brojevima s pominim zarezom poveana je 5 puta (to je i razumljivo s obzirom na 8 FPU jedinica). Viejezgreni procesori T1 i T2 na ISA {Instruction Set Architecture) razini (poglavlje 3.) odgovaraju porodici Sunovih procesora.

15.5.3. A M D O P T E R O N X 4 2 3 5 6 Viejezgreni procesor Opteron X4 2356 tvrtke AMD jedan je iz brojne porodice 4-jezgrenih procesora serija 1300,2300,4100 i 8300, razliitih kodnih imena - od Budapest (serija 1300) do Shangai (serija 8300). Procesor Opteron X4 2356, kodnog imena Barcelona, ima etiri jezgre po ipu, a koristi se kao multiprocesorski sustav koji ima dva podnoja (engl. CPU slot, CPU socket) tako da oblikuje sustav s 8 jezgri. (Opaska: kada se govori o takvim viejezgrenim konfiguracijama, esto se koristi izraz "broj jezgri po podnoju", npr. four cores per socket). Slika 15.30 prikazuje organizaciju viejezgrenog procesora Opteron X4 2356. Jezgra je sloeni procesor koji ima 6-segmentnu instrukcijsku protonu strukturu, 72 fizika registra, meuspremnikza cjelobrojne i FP operacije u repu ekanja (engl. operation queue), meuspremnik za load/store operacije u repu ekanja, tri ALU za cjelobrojne operacije, tri FPU (zbrajalo, mnoilo, mjeovite operacije), instrukcijsku prirunu memoriju (razina L1,64 KB) i prirunu memoriju podataka (razina L1,64 KB). Svaka od jezgri ima i dodatnu 512 KB lokalnu prirunu memoriju, tzv. victim cache koja sadrava blokove podataka koji

518

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

su "Izbaeni" iz prirune memorije tijekom zamjene blokova (vidi 9. poglavlje) te dijeli 2MB prirune memorije koja se naziva jo i quasi-victim. Svaka od jezgri podrava osam dretvi. Na ipu je ostvareno posebno tzv. sistemsko suelje SRI (System Request Interface) i prospojna mrea crossbar koja ostvaruje vezu izmeu quasi-victim prirune memorije, memorijskog upravljaa i suelja za komunikaciju s viejezgrenim procesorom (HyperTransport link) koji se nalazi u drugom podnoju. Brzina prijenosa podataka izmeu dvaju suelja je 4 GB/s. Da bi itatelj dobio osjeaj o povezivanju viejezgrenih procesora "etiri jezgre po podnoju" u 8-jezgrenu konfiguraciju, navedimo da AMD Opteron koristi LGA (engl. land grid array) podnoje tipa F (Socket F) koje ima preko 1200 prikljuaka. Viejezgreni procesor Opteron X4 2356 na ISA razini odgovara procesorima sa skupom instrukcija porodice x86 s proirenjem na 64-bitnu arhitekturu (x86/64). Memorijski upravlja ostvaruje pristup 667 MHz DDR2 dinamikoj memoriji (8. poglavlje) uz propusnost od 10.66 GB/s. Viejezgreni procesor radi s frekvencijom signala vremenskog voenja od 2.3 GHz i postie vrnu performansu od 74 GFLOPS-a. Krajem prvog desetljea ovog stoljea tvrtka AMD razvila je 12-jezgreni procesor Opteron kodnog imena "Magny Cours". Svaka jezgra Opteron je superskalarni procesor (izdaje do tri instrukcije u jednoj periodi signala vremenskog voenja) i koristi izdavanje i zavravanje instrukcija izvan redoslijeda (13. poglavlje). Jezgra pribavlja (iz instrukcijske prirune memorije) i dekodira do tri X 8 6 - 6 4 instrukcije tijekom svake periode signala vremenskog voenja. Instrukcije promjenjive duljine pakiraju se u tzv. makrooperacije (mops) vrste duljine. Nakon toga se makrooperacije upuuje u dvije nezavisne jedinice za rasporeivanje - jedna je za cjelobrojne operacije, a druga za FP i multimedijske operacije. Jedinice za rasporeivanje mogu rasporediti do devet takvih makrooperacija, i to sljedeim izvrnim resursima: trima cjelobrojnim protonim izvrnim jedinicama i jedinici za generiranje adrese, trima FP i multimedijskim protonim jedinicama, load/store jedinica. Jezgra ima i load/store jedinicu kojoj se upuuju load i store instrukcije. Load/store jedinica moe izvesti dvije load instrukcije i jednu store tijekom svake periode signala vremenskog voenja. Nain izdavanja i izvoenja instrukcija je takav da se za do 72 makrooperacije moe preurediti redoslijed njihova izvoenja. Slika 15.31 prikazuje konfiguraciju koja se sastoji od dva ipa koji ine 12-jezgreni procesor tako da su oba ipa smjetena u jednom pakiranju MCM (Multichip Module package). Svaki ip ima po est jezgri, a ipovi komuniciraju, slino kao i u viejezgrenom procesoru Opteron X4 2356, preko HyperTransport 3 suelja. Pakiranje ima podnoje tipa LGA, ali s 1944 prikljuka (735 vie od prethodne generacije viejezgrenih procesora Opteron). Svaka od Opteron jezgri ima instrukcijsku prirunu memoriju i prirunu memoriju podataka (svaka kapaciteta 64 KB; razina L1). Svakoj je jezgri pridruena i priruna memorija razine L2 kapaciteta 512 KB (nalazi se na procesorskom ipu) te zajednika dijeljena priruna memorija razine L3 (6 MB).

LO

t o o

Qi <

n > 3 o IO
o n

jezgra Opteron 512KB priruna memorija

jezgra Opteron 512KB priruna memorija

jezgra Opteron 512KB priruna memorija

jezgra Opteron 512KB priruna memorija

0 &

0) ( / > o f D -*
o
X

c
1 < u #
A

2MB dijeljena priruna memorija SRI / crossbar prospojna mrea

A Vr

N J L O Ln o >
memorijski upravlja

z ^
10.66 GB/s

667 MHz FBDIMM memorija

jezgra Opteron

jezgra Opteron

jezgra Opteron

jezgra Opteron 512KB priruna memorija

0 a c 1
2x4 GB/s

512KB priruna memorija

512KB priruna memorija

512KB priruna memorija

i
K fV

2MB dijeljena priruna memorija SRI / crossbar prospojna mrea

memorijski upravlja

"ZV

7 Y
10.66 GB/s

667 MHz FBDIMM memorija

52515.POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

o iy>
(U

A V
A

OJ i
CD

Q C Q Cl

\D

IZ f }JodsuDJJddA(-j

jezgra jezgra jezgra jezgra jezgra jezgra Opteron Opteron Opteron Opteron Opteron Opteron

512 KB L2

512 KB L2

m
c T o. t/> o

512 KB L2

o
m E

CL

A V

Q C Q

512 KB L2

O.

O
E
< D

SI. 15.31 Konfiguracija od dva ipa smjetenih u M C M pakovanju kojom se oblikuje 12-jezgreni procesor Opteron kodnog imena "Magny Cours"

512 KB L2

512 KB L2

5. R1BARI - GRAA RAUNALA

521

15.5.4.

1MB POWERS DVOJEZGRENI SMT PROCESOR, POWER61 POWER7


POWER5 je dvojezgreni SMT procesor koji podrava 64-bitnu PowerPC arhitekturu. Najednom ipu su ostvarene dvije identine jezgre pri emu svaka od njih podrava jednu fiziku dretvu i dvije logike dretve, pored instrukcijske prirune memorije razine LI kapaciteta 32 KB i prirune memorije podataka razine L1 kapaciteta 32 KB, procesor ima i prirunu memoriju razine L2 kapaciteta 1.875 MB (koju dijele obje jezgre) i direktorij za prirunu memoriju razine L3. Direktorij je namijenjen prirunoj memoriji kapaciteta 36 MB koja je realizirana izvan procesorskog ipa. Procesor POWER5 koristi crossbar prospojnu mreu. Na procesorskom ipu nalazi se i memorijski upravlja i na taj se nain izbjegava dodatno kanjenje koje je uzrokovano pogonskim sklopovima u sluaju kada je upravlja ostvaren kao vanjski (izvan procesorskog ipa). Jezgra POWER5 podrava dva naina rada: simultanu viedretvenost (SMT nain rada) u kojem se izdaje vie instrukcija iz razliitih dretvi u jednoj periodi signala vremenskog voenja te jednodretveni nain rada ST (engl. single-threaded mode). U simultanom viedretvenom nainu rada POWER5 upotrebljava dva odvojena adresna registra za pohranjivanje programskih brojila za obje dretve. Protoni segment za pribavljanje instrukcija IF naizmjence se koristi za dvije dretve. Dvije dretve dijele in stru kcijsku prirunu memoriju i sklopovlje za adresnu translaciju. U jednodretvenom nainu rada jezgra koristi samo jedno programsko brojilo i pribavlja instrukcije iz jedne dretve. Procesor moe pribavljati do osam instrukcija iz instrukcijske prirune memorije (IC - Instruction Cache) tijekom svake periode. Razlog uporabe i jednodretvenog naina rada je u tome to su arhitekti ocijenili da postoji mnogo primjena u kojima nema vidretvenosti te bi "umjetno" izvoenje dviju dretvi u tim sluajevima degradiralo performansu procesora. U oba sluaja (SMT i ST) pribavlja se osam instrukcija iz iste dretve, meutim, njihovo izdavanje e biti, ako je rije o SMT, takvo da su iz razliitih dretvi. Jezgra pribavlja do osam instrukcija, a izdaje ih etiri za izvoenje izvan redoslijeda. Slika 15.32 prikazuje instrukcijsku protonu strukturu POWERS jezgre. Pribavljene se instrukcije "prosijavaju" u protonom segmentu za predvianje grananja (BP - Branch Prediction) i ako se nae instrukcija grananja, onda se predvia smjer grananja na temelju sloene sheme koja koristi tri tablice povijesti grananja (BHT - Branch History Table). Obje dretve dijele te tri tablice. Nakon pribavljanja, POWER5 smjetava instrukcije na predviene instrukcijske putove u odvojene repove ekanja za obje dretve (protoni segmenti DO - D3). Jezgra rasporeuje do pet instrukcija u svakoj periodi signala vremenskog voenja. Na temelju prioriteta dretvi procesor izabire instrukcije iz jednog od repova ekanja (D1, D2, D3 protoni segmenti). Sve instrukcije u grupi dolaze iz iste dretve i de kod i raj u se istodobno. Prije no to se grupa instrukcija rasporedi za izvrenje, jezgra mora osigurati raspoloivost resursa. Kada su svi potrebni resursi raspoloivi, grupa instrukcija se rasporeuje. Taj zadatak obavlja protoni segment GD (Group Dispatch). Nakon rasporeivanja, svaka od instrukcija protjee kroz protoni segment MP (Mapping) u kojem se obavlja preimenovanje registara (uklanjanje lane zavisnosti) tako da se logiki registri preslikavaju u fizike registre. Jezgra ima 120 registara ope namjene i 120 FP registara. Obje dretve dinamiki dijele ta dva skupa registara. Nakon preimenovanja registara, instrukcije ulaze u repove za ekanje koje dijele obje dretve. Jezgra POWER5 ima osam izvrnih jedinica (dvije load/store jedinice, dvije cjelobrojne jedinice FXU (Fixed-point Execution Unit), dvije FP jedinice, jedinicu gra-

522

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

nanja BXU (Branch Execution Unit) I posebnu jedinicu za logike operacije CRL (Condition Register Logical Execution Unit). Kad su svi potrebni operandi za instrukciju raspoloivi, ona postaje prikladna za izdavanje. Prikladne instrukcije izabiru se u protonom segmentu ISS (Instruction Issue) i alju se u izvravanje. Protoni segment ISS ne razlikuje instrukcije po pripadnosti pojedinoj dretvi. Kada su sve instrukcije u grupi izvrene, one se predaju protonom segmentu CP (Group Commit). U jezgri se oblikuju dvije grupe (po jedna za svaku dretvu) u jednoj periodi signala vremenskog voenja. Viejezgreni procesor POWER5 radi s frekvencijom signala vremenskog voenja od 1.9 GHz, ostvaren je u 130 nm VLSI tehnologiji na ipu povrine 389 mm2, ima oko 200 milijuna tranzistora te ima potroak snage od oko 130 W. Poboljane verzija POWER5+ (2005. i 2006. godina) rade s frekvencijom signala vremenskog voenja do 2.3 GHz i imaju prirunu memoriju razine L3 ostvarene na procesorskom ipu. POWER5+ realiziranje u 90 nm tehnologiji na komadiu silicija povrine 389 mm2. Poboljana verzija SMT procesora, takoer s dvije jezgre, je POWER6 procesor (2007.) koji radi na frekvenciji 5.0 GHz. Svaka jezgra ima dvije cjelobrojne aritmetike jedinice, dvije jedinice za operacije brojevima s pominim zarezom FPU, jedinicu za izvoenje SIMD instrukcija (AltiVec unit) i jednu FP jedinicu za operacije decimalnim brojevima (engl. decimal floating-point unit). Jezgra ima instrukcijsku prirunu memoriju kapaciteta 64 KB ostvarenu kao etveroputna memorija sa skupnim asocijativnim preslikavanjem te 64 KB prirune memorije podataka (osamputna memorija sa skupnim asocijativnim preslikavanjem; 10. poglavlje). Osim toga, svaka jezgra ima prirunu memoriju razine L2 kapaciteta 4 MB. Procesor POWER6 ostvaren je na ipu povrine 341 mm2 uporabom 65 nm VLSI tehnologije i ima oko 790 milijuna tranzistora. Poboljana verzija POWER6+ pojavila se na tritu 2009. godine. Procesor POWER7 (2010.) je prvi IBM-ov 8-jezgreni SMT procesor i predstavlja procesor za posluitelje nove generacije. Svaka od jezgri podrava etiri istodobne viedretvene operacije, dakle ukupno 32 istodobno izvrljive dretve. Jezgra ima 12 izvrnih protonih jedinica (dvije cjelobrojne jedinice, dvije load/store jedi nice, etiri FP jedinice dvostruke tonosti, jednu vektorsku jedinicu, jednu jedinicu grananja, jednu FP jedinicu za operacije decimalnim brojevima te jednu posebnu jedinicu za logike operacije CRU (Condition Register Logic Unit) i istodobno izvodi etiri dretve. U svakoj periodi signala vremenskog voenja jezgra pribavlja do osam instrukcija, dekodira i rasporeuje do est instrukcija te izdaje i izvrava do osam instrukcija. Jezgra ima 32 KB instrukcijsku prirunu memoriju (readonly) i 32 KB prirunu memoriju podataka, 256 KB prirune memorije razine L2 te prirunu memoriju razine L3 (kapaciteta 32 MB) takoer izvedene na procesorskom ipu. POWER7 viejezgreni procesor ima za faktor 4 veu performansu u odnosu na POWER6 viejezgreni procesor. Procesor POWER7 ostvaren je u 45 nm VLSI tehnologiji, ima 1.2 milijarde (!) tranzistora na ipu povrine 567 mm2.

ISS - izdavanje instrukcija ( Instruction Issue) RF - skup registara (Register File) EX - izvri (Execute) EA - raunanje efektivne adrese (Address Computation) DC - priruna memorija podataka { Data Cache) F6 - protona struktura FP jednica Fmt - formatiranje podataka WB - upisivanje natrag (Write Back) CP - grupa izvrenih instrukcija (Group Commit)

MP 1 ISS 1 i MP i ISS i MP i ISS i MP ii ISS

RF

E X
jedinica grananja (BXU)

WB

Xfer

RF

EA

DC - Fmt

WB

Xfer CP Xfer

2 p r o t o n e s t r u k t u r e load/store

RF

Ex

WB

2 p r o t o n e strukture c j e l o b r o j n e j e d i n i c e (FXU)

RF F6
WB Xfer

2 p r o t o n e s t r u k t u r e za FPU j e d i n i c e

524

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

15.5.5.

OCJENA PERFORMANSI MULTIPROCESORA


Za ocjenu performansi multiprocesora rabe se posebni paralelni ispitni programi (engl. multiprocessor benchmark) kao to su Unpack- zbirka programa iz podruja linearne algebre i Gaussove eliminacijske metode, SPECrate - temelji se na SPEC CPU 2006 ispitnim programima, NAS - NASA ADVENCED Supercomputing - koristi programe kojima se rjeavaju problemi iz dinamike fluida, PARSEC (Princeton Application Respository for Shared Memory Computers) - ispitni viedretveni programi koji koriste UNIX API[(Application Programming Interfaces) Pthreads i OpenMP API namijenjen multiprocesorirha s dijeljenom memorijom koji koristi C, C++ ili Fortran, a prvenstveno je namijenjen 0NIX i Microsoft platformama te SPLASH i SPLASH 2 (Stanford Parallel Applications for Shared Memory) koji ukljuuje ispitne programe kao to su kompleksna 1D FFT (Fast Fourier Transformation), sloeni simulacijski programi, prikazi 3D tijela i si.

15.6. GRAFIKI PROCESORI (GRAFIKE PROCESNE JEDINICE)


Prikaz informacija u grafikom obliku jedan je od najpodesnijih i najrazumljivijih naina komunikacije ovjeka i raunala. Grafike pri kazne jedinice (engl. graphics display) jedan su od najfascinantnijih U/l ureaja. Zaslon prikazne jedinice moe biti katodna cijev CRT (Cathode Ray Tube), zaslon temeljen na tehnologiji tekuih kristala LCD (Liquid Crystal Display), na tehnologiji plazme (engl. plasma display) ili na tehnologiji OLED (Organic Light-emitting Diode) te njezinim inaicama: TOLED - transparent OLED i FOLED - flexible OLED razliitih rezolucija. Izvorno su prikazne jedinice osobnih raunala imale rezoluciju 640x480 slikovnih elemenata (VGA - Video Graphics Array). Sredinom devedesetih godina uobiajena rezolucija bila je 1024x768 slikovnih elemenata (XGA - Extended VGA), a za web-aplikacije obino se rabila rezolucija 800x600 (SVGA - Super VGA). Dananje prikazne jedinice imaju obino rezoluciju 1280x1024 slikovnih elemenata (SXGA - Super XGA). Rezolucija LCD, ovisno o veliini zaslona prikazne jedinice, kree se od 640x480 (prva generacija) pa sve do 2560x1600 slikovnih elemenata. Uobiajena rezolucija za LCD prikazne jedinice veliine 21 ina je 1600x1200 slikovnih elemenata. Prikazne jedinice u boji koriste od 8 bitova pa sve do 24 bita za prikaz svake od triju osnovnih boja RGB (engl. red - crvena, green - zelena, blue - plava) tako da se mogu prikazati milijuni boja. Sklopovlje raunala koje podrava grafiku sastoji se od slikovnog meuspremnika (engl. frame buffer) ili videomemorije u kojoj se pohranjuje slika za prikaz, upravljaa (engl. controller) i suelja za prikaznu jedinicu. Organizacija grafikog suelja za osobna raunala tijekom vremena se mijenjala - u jednoj je fazi razvoja sklopovlje namijenjeno grafici bilo iskljuivo smjeteno na matinoj ploi, a u drugoj je varijanti bilo ostvareno na posebnoj ploici (grafika kartica; engl. video display card, graphics card). I danas prijenosna raunala obino imaju grafiko sklopovlje na matinoj ploi, dok stolna raunala vrlo esto imaju, uz grafiko sklopovlje na matinoj ploi, mogunost prikljuivanja dodatnih grafikih kartica. Slika 15.33 prikazuje uobiajenu konfiguraciju osobnog raunala poetkom devedesetih godina prolog stoljea. Sjeverni premosnik (engl. North Bridge) imao je irokopojasno suelje koje je povezivalo procesor, memoriju i PCI sabirnicu. Sklopovlje grafike jedinice koje se sastojalo od VGA upravljaa (Video Graphics Array Controller), koji je zapravo memorijski upravlja, prikaznog generatora i slikovnog meuspremnika, bilo je prikljueno na PCI sabirnicu.

SI. 15.33 Uobiajena konfiguracija osobnog raunala poetkom devedesetih godina


\

Zbog potrebe prijenosa velike koliine podataka izmeu procesora, memorije i grafike jedinice, umjesto prikljuenja na PCI sabirnicu, koristila se i brza veza toka-toka izmeu memorije i grafike jedinice preko AGP (Accelerated Graphic Port) pristupa koji predstavlja brzo namjensko suelje grafikoj kartici (2,133 GB/s). Slika 15.34 prikazuje konfiguraciju koja je tipina za osobna raunala u prvom desetljeu ovog stoljea. Osnovna znaajka je da se koriste dva odvojena procesora - sredinja (centralna) procesna jedinica CPU i grafiki procesor GPU (Graphics Processing Unit - grafika procesna jedinica) koji imaju dva odvojena memorijska podsustava - jedan namijenjen procesoru CPU i jedan namijenjen grafikom procesoru GPU. Grafiki je procesor PCle (PCIexpress) sabirnicom povezan sa sjevernim premosnikom, ime se ostvaruje vrna brzina prijenosa od 16 GB/s. Sigurno ste primijetili da se u opisu suvremene konfiguracije osobnog raunala koristi termin "grafiki procesor", odnosno "grafika procesna jedinica". Naime, krajem devedesetih godina razvoj tehnologije VLSI omoguio je da se VGA upravljau pridoda sklopovlje (tzv. sklopovski akceleratori) kojim se ubrzavaju neke funkcije definirane u logikoj grafikoj protonoj strukturi (engl. logical graphics pipeline) koja je podloga za sklopovsko/programsku izvedbu grafike jedince. (Opaska: logika grafika protona struktura (ili grafiki protoni sustav) termin je koji se koristi u raunalnoj grafici za opisivanje faza potrebnih za prikaz slike (engl. rendering) - od matematikog modela do 2D prikaza virtualne 3D scene na zaslonu prikazne jedinice.)

526

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

SI. 15.34 Konfiguracija osobnog raunala u prvom desetljeu ovog stoljea


\

Opiimo glavne faze u logikoj grafikoj protonoj strukturi i skrenimo pozornost na one funkcije kojima su namijenjeni sklopbyski akceleratori. Logika grafika protona struktura sastojite od slijednih glavnih funkcija: transformacije vrhova (engl. vertices) kao to su translacija, rotacija, promjena mjerila, gdje vrh u grafici predstavlja strukturu podataka koja opisuje toku u 2DlfT3D prostoru te operacije na atributima koji su pridrueni vrhovima krpica (engl. patch) - malim trokutastim ili pravokutnim poligonima, kojima se predoava ploha objekata. Vrhovima krpica pridruuju se, osim informacije o poloaju, drugi grafiki atributi kao to su boja, reflektivnost plohe, tekstura te normala na aproksimiranu zakrivljenost plohe. Grafika procesna funkcija koja se izvorno naziva vertex shader (sjenanje vrhova) koristi se za manipulaciju vrhovima, odnosno njihovim atributima: promjenu poloaja, boje i koordinata teksture, proraun osvjetljenja te transformaciju 3D pozicije vrha u virtualnom prostoru u 2D koordinatni sustav zaslona. Transformaciji vrhova slijedi procesna funkcija koja se naziva geometry shader. Pomou nje se generiraju novi grafiki primitivi kao to su toke, linije i plohe, odnosno krpice odreene trima ili etirima vrhovima. Sljedea funkcija u grafikoj protonoj strukturi je rasterizacija koja se sastoji od pretvorbe kontinuiranih koordinata u diskretne koordinate u prikaznoj memoriji, otklanjanja neeljenih uinaka uslijed diskretizacije, uklanjanja skrivenih ploha te preslikavanja boje i teksture na poligone (pixelshader). Zadnji segment u grafikoj protonoj strukturi jest prikaz oblikovane slike na zaslonu prikazne jedinice. Krajem devedesetih godina sklopovi za ubrzanje (akceleratori) u grafikim jedinicama bili su namijenjeni funkcijama generiranja grafikih primitiva te preslikavanju boje i teksture na poligone. Poetkom 2000. poinje se koristiti naziv grafiki procesor jer se u jednom ipu objedinjuju sve uobiajene funkcije potrebne za djelotvorni prikaz 2D i 3D grafike. Grafiki procesor postaje vrsto definirana funkcijska protona struktura namijenjena visoko kvalitetnom prikazu jednakom onom filmskom (engl. film-quality rendering) u stvarnom vremenu. Zapravo, krajem 1999. tvrtka NVIDIA uvela je termin "grafika procesna jedinica" GPU Graphics Processing Unit kojim je opisala procesor na ipu GeForce 256 u kojem su integrirane funkcije koje podravaju logiku grafiku protonu strukturu.

S. RIBARI - GRAA RAUNALA

527 I

Grafika procesna jedinica GeForce 256 obraivala je 15 M poligona (krpica) u sekundi i 480 M slikovnih elemenata u sekundi. Imao je vrsto definiranu 32-bitnu FP (engl. floatingpoint) jedinicu za transformacije vrhova, procesor za proraun osvjetljenja (engl. lighting processor) i vrsto definiranu cjelobrojnu funkciju koja se odnosila na preslikavanje boje i teksture na poligone. Prema podacima iz 2005. prodano je 500 milijuna grafikih procesora godinje - od toga najvie (oko 50 milijuna) za interaktivne raunalne igre na osobnim raunalima. Osim toga, grafiki se procesori koriste u radnim stanicama, simulatorima vonje i letenja. Veliki dio trita grafikih procesora namijenjen je mobitelima. S vremenom, grafiki procesori postajali su programirljivi i zamijenili su vrsto definirane funkcije odreene logikom grafikom protonom strukturom. Uz to, raunske su se operacije s cjelobrojnih rairile na operacije brojevima s pominim zarezom jednostruke i dvostruke tonosti. Trenutano stanje (2010.) je sljedee: grafiki su se procesori pretvorili u programirljiveparalelne procesore koji svojom procesnom snagom premauju viejezgrene (engl. multicore) procesore. Grafiki procesori i njima pridruene programske rutine (engl. driver) ostvarene s OpenGL i DirectX definiraju razliite modele grafike obrade. OpenGL je otvoreni standard za programiranje funkcija 3D grafike, a DirectX je dio Microsoftovog multimedijskog programskog suelja koje ukljuuje i Direct3D za 3D grafiku. Oba aplikacijska programska suelja API (Application Programming Interfaces) omoguuju oblikovanje djelotvornih sklopovskih ubrzanja grafikih funkcija. S arhitektonskog gledita, grafiki procesor je visoko paralelni, vie dretveni procesor s vrlo velikim brojem jezgri namijenjen vizualnom raunanju (engl. visual computing). Vizualno raunanje je novi pojam koji se odnosi na sloenu mjeavinu grafike obrade i raunanja tako da omoguuje vizualnu interakciju u stvarnom vremenu raunalno oblikovanih objekata uporabom grafike, slika i videa. Grafikim procesorima pridodane su nove instrukcije i memorija tako da podravaju vie programske jezike i programska okruenja ope namjene. Grafiki procesori sada se mogu programirati u programskim jezicima slinim C i C++ i postaju procesori ope namjene s vrlo velikim brojem jezgri (engl. manycore)\ U skladu s arhitektonskim znaajkama suvremenih grafikih procesora, definiran je i novi model programiranja jer velika procesna mo koja se odnosi na operacije brojevima s pominim zarezom te veliki stupanj paralelizma ostvaren vrlo velikim brojem procesora, odnosno jezgri, nudi djelotvornu primjenu grafikih procesora na podrujima izvan raunalne grafike (na primjer, obrada digitalnih slika i videa, sloeni postupci optimizacije uporabom evolucijskih algoritama, postupci kriptiranja/dekriptiranja podataka i si.). Jedan od modela paralelnog programiranja namijenjen grafikim procesorima (ali i viejezgrenim procesorima) nove generacije je CUDA (Compute Unified Device Architecture) koji predstavlja i programsku platformu temeljenu na C/C++ programskom jeziku (CUDA C i CUDA C++). Model CUDA je zapravo SPMD (Single-Program Multiple Data) model u kojem programer pie program za jednu dretvu koja se potom instancira ili oprimjeruje u velikom broju dretvi na velikom broju procesora u grafikoj procesnoj jedinici.

528

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

15.6.1. NVIDIA TESLA - UNIFICIRANA ARHITEKTURA ZA GRAFIKU I RAUNANJE


Tradicionalna izvedba 3D grafikog procesora zasniva se na logikoj grafikoj protonoj strukturi utemeljenoj na odvojenim programirljivim stupnjevima procesora za sjenanje vrhova (engl. vertex processor) koji izvode programe za obradu vrhova i stupnjevima procesora za obradu slikovnih elemenata (engl. fragment pixel processor). U studenom 2006. tvrtka NVIDIA definirala je novu arhitekturu pod nazivom Tesla za grafiki procesor GeForce 8800. Osnovna znaajka arhitekture Tesla jest da se programi za sjenanje vrhova (engl. vertex shader) i programi za sjenanje slikovnih elemenata (engl. pixel-fragment shader) izvode na ujednaenoj (uniformnoj) visokoparalelnoj arhitekturi procesora. Drugim rijeima, u grafikom procesoru koji se temelji na Tesla arhitekturi nema razlike izmeu procesora za sjenanje vrhova i procesora za sjenanje slikovnih elemenata. Programi se izvode na jednakim procesorima koji, uz to to objedinjuju obje funkcije, imaju i dodatne funkcije tako da se grafiki procesor moe koristiti i u negrafikim aplikacijama koje su vrlo zahtjevne u pogledu performansi. Programi za tu vrstu aplikacija razvijaju se u viim programskim jezicima slinim C i C++u skladu s modelom paralelnog programiranja UDA Jedan od razloga ujednaenosti procesora u arhitekturi Tesla je i zahtjev za dinamikim uspostavljanjem ravnotee radnog optereenja izmeu procesora za sjenanje vrhova i procesora za sjenanje slikovni elemenata. Uz to, ujednaenost doputa djelotvorno uvoenje novih postupaka iz logike grafike protone strukture, primjerice postupaka koji se odnose na generiranje geometrijskih primitiva (engl. geometry shader). Slika 15.35 prikazuje blok-dijagram grafikog procesora GeForce 8800. Sustavno se arhitektura grafikog procesora GeForce 8800 moe opisati kao hijerarhijska organizacija koja se sastoji od: i) polja tokovnih procesora SPA (Streaming Processor Array), ii) teksturno-procesorske nakupine TPC (Texture/ProcessorCluster), iii) tokovnih mult i procesora SM (Streaming-Multiprocessor), iv) tokovnih procesora SP (Streaming-Processor) i procesora za rasterske operacije ROP (Raster Opertions Processor). Grafiki procesor ima polje tokovnih procesora SPA (Streaming Processor Array) koje se sastoji od 128 tokovnih procesora (ili tgkovnih procesorskih jezgri) SP (engl. streaming-processor core). Svaki tokovni procesor SP^je viedretveni procesor koji podrava 96 istodobnih dretvi. Tokovni procesori SP organizirani su u 16 tokovnih muItiprocesora SM (engl streamingmultiprocessor) grupiranih u osam nezavisnih procesorskih jedinica koje se nazivaju tekstu rno-procesorske nakupine TPC (engl. texture/processor cluster). Teksturno-procesorska nakupina (slika 15.36) ima po dva tokovna multiprocesora SM, a svaki od njih ima osam tokovnih procesora SP. Iz toga slijedi da jedan tokovni multiprocesor SM moe istodobno izvravati do 8 x 96 = 768 dretvi. Tokovni multiprocesor SM opisuje se kao procesor SIMT - Single-Instruction, Multiple-Thread (jedna instrukcija viestruke dretve). Teksturnoprocesorska nakupina TPC ima i upravlja geometrijskih operacija koji slui za preslikavanje logikih grafikih vrhova u fizike tokovne multiprocesore. Osim toga, ima i upravlja tokovnih multiprocesora (SMC) i teksturnu jedinicu. Ovdje smo upotrijebili novi termin "tokovna procesorska jezgra" ili "tokovni procesor" (engl. streaming-processor) i trebamo ga objasniti!

in

cn to L H ro O
ID i Q >

Host CPU

Bridge

System memory

fTk^

C D
3

ID

Q J n< O lQ
o n o
( T > i/i

3 C D fl) n f D
00 00

O O

1 2 3 4 5 6

CPU domain premosnik sistemska memorija suelje za CPU domaina ulazni zbirnik rasporeivanje poslova za procesore za

7 8 9 10

sjenanje vrhova blokzarasterizaciju rasporeivanje poslova za procesore za sjenanje slikovnih elemenata rasporeivanje raunalnih poslova TPS - teksturno-procesorska nakupina

11 12 13 14 15 16

SM - tokovi multiprocesor SP - tokovni procesor tekstu rna jedinica priruna memorija dijeljena memorija procesor za rasterske operacije

530

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

Arhitektura tokovnog procesora prilagoena je tzv. tokovnom programskom modelu (engl. stream programming model) koji se sastoji od dvije glavne komponente: tokova (engl. stream) i jezgri (engl. kernel). Tokovi se, openito, mogu opisati kao sljedovi slinih zapisa podataka, a jezgre kao mali programi koji djeluju na skupini ulaznih tokova generirajui skupine izlaznih tokova. Iz ovog jednostavnog opisa moemo opravdano zakljuiti da tokovni programski model odgovara modelu koji se temelji na arhitekturi upravljanoj tokom podataka (engl. dataflow) (poglavlje 1). Tokovni procesor kombinira znaajke SIMD arhitekture i arhitekture upravljane tokom podataka. Tokovni procesor se, openito, sastoji od tokovne memorije (engl. streaming memory), skupa tokovnih registara (engl. stream register file), veeg broja nakupina ALU jedinica koje podravaju operacije definirane jezgrom te mikroupravljaa (engl. micro-controller). U skladu sa SIMD arhitekturom, sve nakupine ALU djeluju istodobno. Tokovna memorija djelotvorno podrava dohvat tokova iz memorijskog sustava te pohranu tokova u memorijski sustav. Skup tokovnih registara pohranjuje veliku koliinu podataka i tako je organiziran da omoguuje dohvat (ima ulogu izvora tokova podataka) i pohranu (ponor) tokova na samom procesorskom ipu. Slijed operacija koje definiraju jezgru odreuju se mikroupravljaem. Vratimo se opisu GeForce 8800. Grafiki procesor GeForce 8800 ima suelje s procesorom domainom (engl. host interface) koje omoguuje komunikaciju s procesorom domainom (engl. host CPU) preko PCle sabirnice. Ulazni zbirnik (engl. input assembler) prikuplja geometrijske primitive (toke, linije, krpice). Blokovi za raspodjelu poslova (oznaeni sa 6,8 i 9; slika 15.35) rasporeuju vrhove, slikovne elemente i dretve teksturnim procesorskim nakupinama TPC. Teksturne procesorske nakupine TPC izvravaju programe koji se odnose nS operacije vrhovima, geometrijskim primitivima (vertex shader, geometry shader) te ostalim raunskim programima. Izlazni se podaci, koji su rezultat potonjih operacija, pohranjuju u spremnike koji se nalaze na procesorskom ipu. Sadraji tih spremnika prosljeuju se bloku VCSRZ (viewport/clip/setup/raster/zcull) tako da se rezultati "raste rizi raju" u fragmente slikovnih elemenata. Nakon toga, u skladu s tokovnim modelom, jedinica za raspodjelu poslova koji se odnose na slikovne elemente VWD (Vertex Work Distribution) distribuira fragmente slikovnih elemenata ponovno teksturnim procesorskim nakupinama TPC za obradu slikovnih elemenata (pixel-fragments shader). Sjenani se slikovni elementi preko pros poj ne mree alju procesorima za rasterske operacije ROP (Raster Operations Processor) koji izvode operacije koje se odnose na proraun dubine i mijeanje boja s razliitim prozirnostima (engl. colour blending). Ve smo spomenuli daje procesorsla jezgra SP GeForce 8800 viedretvena i da rukuje istodobno s 96 dretvi. Jezgra ima skup od 1024 32-bitnih registara kojima podrava 96 dretvi, skalarnu jedinicu za mnoenje i zbrajanje brojeva s pominim zarezom MAD (multiply-add) tako da svaki tokovni multiprocesor SM ima osam takvih jedinica. Svaka jezgra podrava 32-bitnu i 64-bitnu cjelobrojnu aritmetiku te logike PTX (Parallel Thread execution) instrukcije. Procesori su povezani sa est 64~bitnim DRAM modula pomou prospojne mree. Svaki od esnaest tokovnih multiprocesora SM ima, osim osam jezgri SP, instrukcijsku prirunu memoriju (I cache), viedretvenu instrukcijsku jedinicu za pribavljanje i izdavanje instrukcija MT i prirunu ispisnu (read-only cache) memoriju za pohranu konstanti C-Cache (Constant-cache), dvije specijalne jedinice SFU (Special Function Unit) te zajedniku, dijeljenu memoriju (slika 15.37). Viedretvena instrukcijska jedinica za pribavljanje i izdavanje instrukcija oblikuje, rasporeuje i rukuje dretvama tako da ih grupira po 32 paralelne dretve (u Tesla arhitekturi grupa dretvi se naziva warp) i takvih je grupa do 24, to ukupno

S. RIBARI - GRAA RAUNALA

531 I

daje 768 dretvi. U skladu s arhitekturom SIMT (jedna instrukcija viestruke dretve), jedna se instrukcija odnosi na jednu grupu od 32 dretve.

S P ;S P S P \ sp

S P S P S P S P:

S P
SP SP

S P SP S P

1 2 3 4

upravlja geometrijskih operacija upravlja tokovnih m u Iti procesora teksturna jedinica dijeljena memorija

5 6 7 8

instrukcijska priruna memorija viedretvena instrukcijska jedinica priruna memorija teksturne jedinice specijalna jedinica za transcedentne funkcije

SI. 15.36 Tekstumo-procesorska nakupina TPC

instrukcijska priruna memorija viedretvena instrukcijska jedinica dijeljena memorija specijalna jedinica za transcedentne funkcije priruna ispisna memorija

SI. 15.37 Tokovni multiprocesorSM

Dvije specijalne jedinice SFU namijenjene su za raunanje transcedentnih funkcija (sin/cos, log2x, reciprone vrijednosti, reciprone vrijednosti drugog korijena) i za funkcije za interpolaciju atributa pridruenim slikovnim elementima (boja, dubina, koordinate teksture). Svaka SFU ima etiri mnoila brojeva s pominim zarezom. Tokovni multiprocesor SM je ujednaeni grafiki i raunski multiprocesor koji izvrava programe za sjenanje vrhova, oblikovanje grafikih primitiva (engl. geometry shader) i programe za sjenanje slikovnih elemenata, ali i druge paralelne (ne-grafike) raunske programe.

532

15. POGLAVLJE: VIEPROCESORSKI SUSTAVI,VIEJEZGREN!I GRAFIKI PROCESORI

Ve smo napomenuli da je tokovni multiprocesor arhitekture SIMT koja je slina SIMD arhitekturi jer se i ovdje jedna instrukcija primjenjuje na viestrukom toku podataka. No postoji jedna vana razlika, SIMT primjenjuje jednu instrukciju istodobno na viestrukim, a ne samo na viestrukim tokovima podataka. Arhitektura SIMT doputa programeru pisanje paralelnog koda za nezavisne dretve, ali i specifikaciju koda koji se odnosi na paralelne podatke. Spomenute grupe od 32 istodobne dretve (warp) nisu ogranienje programeru u pogledu broja istodobno izvrljivih dretvi. Performansa grafikog procesora GeForce 8800 ovisno o izvedbi (Ultra ili GTX) je izmeu 518 GFLOPS-a i 576 GFLOPS-a. Zanimljiva je i usporedba performansi grafikog procesora GeForce 8800 i viejezgrenih procesora. Na primjer, pri mnoenju dvaju matrica dimenzija 1024 x 1024 GeForce 8800 GTX (radna frekvencija 1.35 GHz) postie performansu od oko 200 GFLOPS-a, dok etverojezgreni procesor Intel Core-2 (2.4 GHz) postie performansu od oko 70 GFLOPS-a. Usporedba GeForce 8800 GTX i 4-jezgrenog procesora Intel Xeon (2.8 GHz) pokazuje da je grafiki procesor otprilike sedam puta bri u raunanju brze Fouriereve transformacije FFT (Fast Fourier Transform). Krajem 2010. na tritu se pojavio grafiki procesor, odnosno grafika kartica NVIDIA GeForce GTX 580 marketinki najavljen kao "najbri grafiki procesor na planeti" koji se temelji na arhitekturi NVIDIA Fermi. GTX 580 ima 512 tokovnih procesora SP koji su organizirani u 16 tokovnih multiprocesora SM i 48 procesora za rasterske operacije ROP. Svaki tokovni procesor ima protonu cjelobrojnu aritmetiko-logiku jedinicu i protonu aritmetiku jedinicu FPU (floating-point unit). FPU podrava aritmetike operacije u skladu sa standardom IEEE 754-2008. Tokovni multiprocesor SM ima 32 tokovna procesora SP, dvije jedinice za rasporeivanje grupa od po 32 dretve (engl. warp scheduler), dvije jedinice za dodjeljivanje (engl. dispatch unit), skup tokovnih registara koji se sastoji od 32768 32-bitnih registara, etiri jedinice SPU, 16 jedinica load/store (LD/ST), prospojnu mreu, 64 KB rekonfigurabilnu memoriju koja se moe organizirati tako da 48 KB bude priruna memorija razine 1, a preostalih 16 KB bude tzv. scratchpad memory, prirunu memoriju razine 2 kapaciteta 768 KB, etiri teksturne jedinice s teksturnom prirunom memorijom (engl. texture cache). Osim svega toga, SM ima i tzv. polimorfni stroj (engl. PolyMorph Enginee) koji je namijenjen grafikim funkcijama (transformacija pogleda, rukovanje vrhovima). Grafiki procesor GTX 580 ima suelje za PCle 2.0x16 s vrnom brzinom prijenosa do 20 GB/s te memorijsko suelje GDDR5 (Graphics Double Data Rate version 5) irine 384 bita. Aplikacijsko programsko suelje API procesora NVIDIA GeForce GTX 580 podrava UDA C, UDA C++, DirectCompute 5.0, OpenCL, Java, Python i FORTRAN. GPU GTX 580 ostvaren je u 40 nm VLSI tehnologiji i ima 3 milijarde tranzistora (!). Na kraju navedimo jo neke proizvoae grafikih procesora - to su AMD/ATI (grafiki procesor AMD Radeon HD 6990 s 2 x 1536 tokovnih procesora!), S3 Graphics, VlATechnologies i Matrox.

S. RIBARI - GRAA RAUNALA

533 I

LITERATURA
L. Budin, M. Golub, D. Jakobovic, L. Jelenkovic, Operacijski sustavi, Element, Zagreb, 2010. J. J. F. Cavanagh, Digital Computer Arithmetic, Design and Implementation, McGraw-Hill Book Company, New York, 1984. A. Clements, Principles of Computer Architecture, Oxford University Press, Oxford, 2006. P. Conway et al Cache Hierarchy and Memory Subsystem of the AMD Opteron Processor, IEEE Micro, March/April 2010., str. 16-29. Y. Chu, Computer Organization and Microprogramming, Prentice Hall, Inc., 1972. D. E. Culler, J. P. Singh, Parallel Computer Architecture, A Hardware/Software Approach, Morgan Kaufman Pub., San Francisco, 1999. P. J. Denning, Virtual Memory, Computer Surveys, vol. 2, September 1970, str. 153-187. S. Dasgupta, Computer Architecture, A Modern Synthesis, John Wiley & Sons, Inc., New York, 1998. S. J. Eggers, et al., Simultaneous Multithreading: A Platform for Next-generation Processors, IEEE Micro, September/October, 1997. str. 12-19. R. Espasa, M. Valero, Exploiting Instruction- and Data-level Parallelism, IEEE Micro, September/ October, 1997. str. 20-27. W-C. Feng, P. Balaji,Tools and Environments for Multicore and Many-Core Architectures, IEEE Computer, December 2009, str. 26-27. J. D. Foley, A. van Dam, S. K. Feiner, J. F. Hughes, Computer Graphics, Principles and Practice, Addison-Wesley, Boston, 1997. H.H. Goldstine,The Computer from Pascal to von Neumann, Princeton University Press, New Jersey, 1972. A. J. van de Goor, Computer Architecture and Design, Addison-Wesley Pub. Company, Workingham, 1989. N. Guid, Racunalniska grafika, Univerza v Mariboru, Maribor, 2001. J. P. Hayes, Computer Architecture and Organization, McGraw-Hill Primis, New York, 2002. J. L. Hennessy, D. A. Patterson, Computer Architecture, A Quantitative Approach, Elsevier, Amsterdam, Morgan Kaufmann Pub., Inc., San Francisco, 2007.(cetvrto izdanje) J. L. Hennessy, D. A. Patterson, Computer Architecture, A Quantitative Approach, Elsevier, Amsterdam, Morgan Kaufmann Pub., Inc., San Francisco, 1996.(drugo izdanje) V. P. Heuring, H. F. Jordan, Computer Systems Design and Architecture, Addison-Wesley, Menlo Park, 1997. M. D. Hill, M. R. Marty, Amdahl's Law in the Multicore Era, Computer, July, 2008., str. 33-38. K. Hwang, Advanced Computer Architecture, Parallelism, Scalability, Programmability, McGraw-Hill, New York, 1993.

534

LITERATURA

IBM Microprocessors, Books LLC, Memphis, 2010. IEEE Micro, Embedded Multicore Processors and Systems, May/June 2009. B. Jacob, W. S. W Ng, D.T. Wang, Memory Systems, Cache, DRAM, Disk, Elsevier, Amsterdam, Morgan Kaufmann Pub., Inc., San Francisco, 2008. R. Kalla, B. Sinharoy, W. J. Starke, Power7: IBM's Next-generation Server Processor, IEEE Micro, April/March 2010., str. 7-15. T. King, B. Knight, Programiranje M68000, ZOTSK, Ljubljana, 1985. V. Korneev, A. Kiselev, Modern Microprocessor, Charles River Media, Inc. 2004. L. A. Leventhal, D. Hawkins, G. Kane, W. D. Cramer, 68000 Assembly Language Programming, Osborne McGraw-Hill, Berkeley, 1986. E. Lindholm, J. Nickolls, S. Oberman, J. Montrym, NVIDIA TESLA: A Unified Graphics and Computing Architecture, IEEE Micro, March-April, 2008, str. 39-55. M. Mano, Digital Logic and Computer Design, Prentice-Hall, Englewood Cliffs, 1979. MC 68030, Enhanced 32-bit Microprocessor User's Manual, Pretnice-Hall, Englewood Cliffs, 1999. J. Nickolls, W. J. Dally, The GPU Computing Era, IEEE Micro, March/April 2010., str. 56-68. NVIDIA's Next Generation CUDA Computer Architecture Fermi, NVIDIA Corporation, 2010/ www.nvidia.com NVIDIA GeForce GTX 580 GPU Datasheet, NVIDIA Corporation, 2010/www.nvidia.com N. S.Parasad, IBM Mainframes, Architecture and Design, McGraw-Hill, New York, 1989. B. Parhami, Computer Architecture, From Microprocessor to Supercomputers, Oxford University Press, Oxford, 2009. (etvrto izdanje) D. A. Patterson, et al., A Case for Intelligent RAM, IEEE Micro, March-April, 1997., str. 34-44. D. A. Patterson, The Top 10 Inovations in the New NVIDIA Fermi Architecture and the Top 3 Next Challenges, Par Lab Report, September 2009. pp. 1-8. D. A. Patterson, J. L. Hennessy, Computer Organization & Design, The Hardware / Software Interface, Morgan Kaufmann Pub., Inc., San Francisco,1998.(drugo izdanje) D. A. Patterson, J. L. Hennessy, Computer Organization & Design, The Hardware / Software Interface, Morgan Kaufmann Pub., Inc^ San Francisco, 2008.(etvrto izdanje) U. Peruko, Digitalna elektronika, Logiko i elektriko projektiranje, kolska knjiga, Zagreb, 1991. U. Peruko, V. Glavini, Digitalni sustavi, kolska knjiga, Zagreb, 2005. C. V. Ramamoorthy, H. F. Li, Pipeline Architecture, Computing Surveys, Vol 9, No. 1, March 1977., str. 61-102. K. Reick, etal., Fault-Tolerant Design of the IBM Power6 Microprocessor, IEEE Micro, April-March, 2008., str. 30-38 S. Ribari, Arhitektura mikroprocesora,Tehnika knjiga, Zagreb, 1982. (prvo izdanje) S. Ribari, Arhitektura raunala pete generacije, Tehnika knjiga, Zagreb, 1986. S. Ribari, Naprednije arhitekture mikroprocesora, Element, Zagreb, 2006. S. Ribari, Arhitektura raunala RISC i CISC, kolska knjiga, Zagreb, 1996.

S. RIBARI - GRAA RAUNALA

535 I

F. Schmidt, The SCSI Bus and IDE Interface, Protocols, Applications and Programming, AddisonWesley, 1995. T. Shanely, D. Anderson, ISA System Architecure, Addisson-Wesley Pub. Company, Reaading, 1995. S. Schneider, J-S. Yeom, D. S. Nikolopoulos, Programming Multiprocessors with Explicitly Managed Memory Hierarchies, IEEE Computer, December 2009., str. 28 - 34. D. Sima,T. Fountain, P. Kacsuk, Advanced Computer Architectures, A Design Space Approach, Addison-Wesley, Harlow, 1997. A. C. Sodan, J. Machina, A. Deshmeh, K. Macnaughton, B. Esbaugh, Parallelism via Multithread and Multicore CPUs, IEEE Computer, March 2010., str. 24-32. W. Stallings, Computer Organization and Architecture, Designing for Performance, Prentice Hall, Upper Saddle River, 1996. A. S.Tanenbaum, Structured Computer Organization, Prentice-Hall Int., Upper Saddle River, 1999. A. S.Tanenbaum, A. S. Woodhull, Operating Systems, Design and Implementation, PrenticeHall Int., Upper Saddle River, 1997. J.Torrellas, Architecture for Extreme Scale Computing, IEEE Computer, November, 2009., str. 28-35. W. A.Triebel, A. Singh,The 68000 Microprocessor, Architecture, Software, an Interfacing Techniques, Prentice-Hall, Englewood Cliffs, 1986. S.Turk, Arhitektura i organizacija digitalnih raunala, kolska knjiga, Zagreb, 1988.

S. RIBARI - GRAA RAUNALA

537 I

KAZALO POJMOVA
A ACIA 48 adresiranje bazno s pomaknuem 86 indeksno 74 izravno 38 adresna zrnatost 65 adresno preslikavanje 339 AEM 291 AGP 380 Aiken, H. 32 akumulator 40 algoritam 1 Amdahlov zakon 106,494 AMD Opteron X4 339 AMD OpteronX4 2356 517 analitiki stroj 32 ANSI/IEEE Std 754 217 antizavisnost 452 arbitraa prozivanjem ili glasovanjem 373 arbitraa s nezavisnim zahtijevanjem 374 arbitrae ulanavanjem 373 arhitektura dinamika 25 rekonfigurabilna 25 statika 25 arhitektura raunala 18 arhitektura raunala upravljana zahtjevom 23 aritmetike operacije brojevima s pominim zarezom 252 aritmetiko-logika jedinica 39,211,256 ARM 34,91 ASCII kod 211 asembler 108 asinkrona sabirnica 365 asocijativna memorija 270 asocijativno preslikavanje 321 ATA 291 AVE 485 Babbage, C. 31 Backus,J. 55,479 bavasti posmani sklop 249 bajt 211 Barcelona procesor 517 Bardeen,J. 32 BCD 219 Big-Endian Byte Ordering 77 binarna aritmetika 220 bit 211 bit prijenosa 220 Booth, A. D. 235 Boothov algoritam 236 Brattain, W. 32 brojilo instrukcijskih lokacija ILC 117 broj s pominim zarezom 215 brzo zbrajalo 229 Burks, A. W. 31 C CALL 126 CDC 6600 33 CD-ROM 306 CD-RW 307 Cell procesor 496 CHS 294 CISC 35,59 COLOSSUS 32 COMA 497 Core 2 Kentsfield 97 Cray I 33 CUDA 527 etveroputna asocijativna memorija 327 ipset 380 C elija DRAM 273 D 2 1/2 D organizacija 275 Dasgupta, S. 506 DDR2 SDRAM 284 DDR3 SDRAM 284 DDR DRAM 284 DDR SDRAM 265 DEC 33 deklarativni stil 3

538

KAZALO POJMOVA

Denningov model virtualne memorije 341 diferencijski stroj 31 dijeljenja obnavljanjem djelominog ostatka 241 dijeljenje 240 dijeljenje metodom "olovka i papir" 241 DIMM 285 dinamiki RAM (DRAM) 272 Direct3D 527 DirectX 527 Ditzel, D. R. 436 DMA 38,398,425 dretva 474,482,509 DVD-ROM 268 dvojni komplement 212 dvoprolazni asembler 116 dvoputna asocijativna priruna memorija 327 E ECC 289 Eckert, J.P. 32 EDSAC 32 EDVAC 123 efektivna adresa 87 eksplicitni paralelizam 476 eksponent 215 emit polje 188 ENIAC 32 EPIC 476 Euklidov algoritam 1 F FIFO 330 finozrnata viedretvenost 509 FireWire 380,385 fiziki adresni prostor 338 FLOPS 100 Flynnova klasifikacija 486 formatirani kapacitet diskovne jedinice 295 format mikroinstrukcije 189 format strojne instrukcije 41 funkcijski paralelizam 473 G Ganttov dijagram 436 GeForce 256 526 GeForce 8800 528 generator signala vremenskog voenja 186 generator sljedova 183,194 glavna ili radna memorija 272 gnijeenje poziva 128 Goldstein, H.H. 31

GPU 525 grafiki procesor 524,528 grananje bezuvjetno 126 uvjetno 126 grubozrnata viedretvenost 509 GTX580 532 gustoa zapisa 294 gustoe staza 294 H harvardski tip prirune memorije 332 hazard 449 HDA 291 horizontalno mikroprogramiranje 203,208 I IA-64 477 IAS 32,41 IBM 32 IBM System/360 Model 30,40,50 i 65 33 IDE 291 IEEE format brojeva s pominim zarezom 217 ILP 466,473 implicitni paralelizam 475 instrukcije aritmetike 80 I grananja 89 logike 80 mjeovite 91 za pristup memoriji 85 instrukcijska protona struktura 434 instrukcijskidekoder 182 instrukcijski registar 62 Intel 8080 33 interpretacijski dijagram 437 interpreter 22 ISA 77 ISA/EISA 379 ispiranje protone strukture 458 ispisne memorije 270 Itanium 477 izdavanje instrukcija 468 in-order issue with in-order completion 468 in-order issue with out-of-order completion 468 out-of-order issue with out-of-order completion 469 izlazna zavisnost 452 iznimka 152 izravni nain adresiranja 67 izravni pristup memoriji 425

S. RIBARI - GRAA RAUNALA

539 I

izravno preslikavanje 324 izvorni program 108 IZVRI 45 izvrljivi binarni program 108 J JBOD 299 jedinini ili nepotpuni komplement 212 jednostruki format broja s pominim zarezom 217 jednotranzistorska MOS elija DRAM 273 jednoulazna i dvoizlazna memorija 161 jezgra operacijskog sustava 22 JSR 139 K K5 468 kapacitet memorije 268 koherencija prirune memorije 317,500 koincidentno adresiranje 274,281 kopiranje nazad 317 L labela 108 latentnost 265 Leibniz, G.W. 31 LFU 330 LIFO 134 linearno adresiranje 278 linija 311 Little-Endian Byte Ordering 79 load-store arhitektura 85,439 LRU 330 M magnetska diskovna memorija 291 magnetska vrpca 305 makroinstrukcije 112 mantisa 215 Mark I 32 maskiran prekid 408 Mauchley,J. 32 MC68000 143 MC 68060 445 memorija s prepletanjem 286 memorijska elija 273 memorijska hijerarhija 265 memorijska jedinica 46 memorijska pojasna irina 269 memorijski sustav 265 memorijski tapi USB 305 MESI 334

Microdrive 293 mikrofaza izvri 164 pribavi 164 mikroinstrukcija 164 mikrooperacija 165 mikroprogram 164 mikroprogramirana upravljaka jedinica 187 mikroprogramiranje 164 mikroprogramska memorija 164 mikroprogramsko brojilo 188 MIMD 27 minimalni kontekst 146 MISD 27 mjere performanse FLOPS 100 MIPS 98 MOPS 100 SPECmark 102 MMX 485 mnemonik 19 mnoenje 232 Mooreov zakon 34 Motorola 6800 33,49 MPEG 496 MTBF 297 multiprocesorski sustav 486 MWIPS 105 N nanoinstrukcija 201 nanoprogramirana upravljaka jedinica 201 Nehalem procesor 510 nemaskirajui prekid 410 nepotpuni komplement 212 Neumannov model 3,18,31 Niagara 2 517 Niagara procesor 514 nop 91,454 normalizacije mantise 216 notacija vrijednost + prekoraenje 216 NRU 330 NUMA 497 NVIDIA Fermi 532 NVIDIA Tesla 528 O obrada podataka 1 omjer pogotka 319 omjer promaaja 319 OpenGL 527 Operon "Magny Cours" procesor 518

540

KAZALO POJMOVA

opisnik dretve 483 optike memorije 306 organizacija raunarskog sustava 18 oslobaanje na zahtjev 372 oslobaanje sabirnice istiskivanjem 372 oslobaanje sabirnice nakon koritenja 372 oiano-ILI 407 P paralelno zbrajalo 224 parcijalni produkt 232 paritet 290 Pascal, B. 31 Patterson, D. A. 93 PCI 374 PC sabirnice EISA 377 ISA 377 MicroChannel 377 PCI 2.2 379 PCI Express 380 PCI-X 2.0 379 PDP-8 33 Pentium 4 Prescott 97 Pentium 4Willamette 97 Pentium D 510 Pentium II 433 Pentium III 485 PentiumPro 468 performansa raunala 93 periferni ureaj 393 petlja ekalica 406 PIA 48 PLA 180 podatkovni hazard RAW 451 WAR 451 WAW 451 podatkovni paralelizam 473 pohranjivanje-skroz 333 pojas 299 pojasna jedinica 299 poluoduzimalo 226 poluzbrajalo 220 polja potpunih zbrajala 239 polje operacijskog koda 116 polje operanda 108,116 pop 134 Porodice DRAM EDO DRAM 284 FPM DRAM 284 posmani sklop 246

posmak aritmetiki posmak 252 kruni posmak 250 logiki posamak 250 postinkrementno registarsko indirektno adresiranje 403 postupak mnoenja "olovka i papir" 232 postupkovna zavisnost 466 potpuni ili dvojni komplement 212 potpuno asocijativno preslikavanje 321 potpuno oduzimalo 226 potpuno zbrajalo 222 potroak snage 163 Poveznik 22 POWER4 512 POWER5 521 POWER6 522 POWER7 59,522 PowerPC 620 468 pozivajui program 126 pozvani program 126 pratei modul 363 precizni i neprecizni prekid 463 predvianje bita prijenosa 229 predvianje grananja 461 predznak-apsolutna vrijednost 212 preimenovanje registara 468 prekidni program 147 prekidni ulazno-izlazni prijenos podataka 398,406 prekidni vektor 413 prekid no sklopovsko suelje 421 prekinuti program 126 preljev V 264 pretpribavljanje 333 PRIBAVI 45 pribavljanje na zahtjev 333 prijenos parametara 130 prikljuak branch kanjenja 459 prikljuak load kanjenja 469 primarna memorija 268 priruna diskovna memorija 297 priruna memorija 266,311 priruni blok 312 proceduralni stil 3 proces 479 procesor 39 procesorsko vrijeme 95 programirani bezuvjetni prijenos 402 programirani ulazno-izlazni prijenos podataka 398 programirani uvjetni prijenos 406

S. RIBARI - GRAA RAUNALA

541 I

programirljiva memorija 270 programska izvedba stoga 142 programski model procesora 68 programsko brojilo 44 projektiranje memorijskog modula 278 prospojna matrica 249 prospojna mrea 486 prostorna lokalnost 320 protona memorija 288 protoni segment 288 protonost 429 protokol MESI 334, 504 pseudoinstrukcije 109 pulI 134 punilac 22,121 push 134 put podataka 159 R R 10000 468 raunski modeli 3 radni skup WS 320 rad u vremenskoj podjeli 484 RAID 299 RAM 48 random 330 razlomaki dio mantise 217 registri procesora 266 rekurzija, rekurzivni program 131 resursni konflikti 466 RET 127 RISC 35,59, 77 RISC I 436 ROM 48 RTE 147 RTS 139 S sabirnica 359,361 adresna 361 podatkovna 361 upravljaka 361 sabirnika arbitraa 371 sabirniki ciklus potvrde prekida 363 sabirniki protokol 388 savitljivi disk 305 SCSI 291,381 SDRAM 284 SEC-DED 290 segmentacija 353 segmentacija sa stranienjem 353 sekundarna memorija 268

Selectron 46 semantika prijelaza stanja 4 semantika toka podataka 4 Serial ATA 291 serijsko zbrajalo 225 Shockley, W. 32 signal vremenskog voenja 62 SIMD 26 SIMD instrukcije 484 simultana viedretvenost SMT 510 sinkrona protona struktura 431 sinkrona sabirnica 365 sinkronizacija dretvi 506 sinkronizacija procesa 506 sintetini ispitni programi 105 Drystone 105 VVhetstone 105 SISD 26 sklopovska upravljaka jedinica 165 skupno asocijativno preslikavanje 321 skup registara ope namjene 266 SLED 300 SMV 512 snooping protokol 501 SPEC 102 SPECfp2000 104 SPECmark 102 SPERT-II 496 SPMD 527 SSE 485 statiki parametri diskovne jedinice 295 statiki RAM (SRAM) 272 statusni registar S R 147 stog 133 stranienje 346 stranini okvir 346 strojni jezik 107 strukturni hazard 449 stvarna zavisnost podataka 466 superskalarni procesor 463 suviakn 216 irenje bita predznaka 83 pekulacija 478 pekulativnog izvravanj 478 T tablica dretve 483 tablica procesa 481 tablica vektora iznimaka 420 TLB 350

542

KAZALO POJMOVA

TLP 483 tokovni procesor 528 tok podataka 7,8 translacijski spremnik TLB 350 Turingov model raunanja 4 Turingov stroj 10 TX-0 33 U ulazno-izlazna jedinica 47 ulazno-izlazni sustav 393 ulazno-izlazni upravlja 393 Ultra SPARCT1,T2 514 UMA 497 UNIVAC 1100 33 upisno-ispisna memorija 270 upravljaka jedinica 48,159 upravljaka jedinica diska 291 upravljaka memorija 164 upravljaka sabirnica 361 upravljaki hazard 449 upravljaki tok 5 upravljanje zahtjevom 9 USB 380 V vanjska sabirnica 62 VAX 11 33 vektorski broj 407 vektorske instrukcije 491 vektorske jedinice 495 vektorski prekid 413 vektorski prekid procesora MC68000 417 vektorski procesori 487 vertikalno mikroprogramiranje 203,208 V-IRAM 496 Virtualna memorija 337 virtualni adresni prostor 338 virtualni procesor 480 virtualni stranini broj 344 viedretvenost 483 viejezgreni procesori 500,510,517 vieprocesorski MIMD 486 vieprocesorski SIMD 486 vieprogramski rad 474 viestruki formati mikroinstrukcija 206 vietrana vektorska obrada 494 viezadani rad 474 vii programski jezici 107 Vizualno raunanje 527 VLIW 35 VLIW/EPIC 477

VLSI 31 VME 375 vodei modul 363 vremena pristupa 268 vremenska lokalnost 320 vremenski ciklus puta podataka 162 vrijeme memorijske periode 269 vrijeme odgovora 265 vrijeme rotacijske latencije 296 vrijeme traenja 298 W Whetstone 105 Whirlwind I 32 Wide SCSI 387 Wilkes, M. 32 WORM 307 Z zakanjelo grananje 458 zamjena blokova 319 zamjena stranica 353 na zahtjev 353 pretpribavljanjem 353 zastavica C 61,245 zastavica polovinog prijenosa H 61 zastavica predznaka (negativne vrijednosti) N 61,193 zastavica S 417 zastavica T 417 zastavica V 61 zastavica Z 61,193 zbirke ispitnih programa 104 zbirni jezik 108 znak 211 zrnatost 473 Zuse, K. 32

Knjiga Graa raunala - arhitektura i organizacija raunarskih sustava bavi se digitalnim raunalima, raunarskim sustavima i sueljem sklopovske i programske opreme. Zamiljena je kao udbenik koji omoguuje sustavni, postupni uvod u to sloeno znanstveno podruje koje je izloeno v r l o brzim i uestalim tehnolokim promjenama. Zamisli i osnovni koncepti u knjizi predstavljeni su na nain koji moe osigurati razumijevanje, oblikovanje i odravanje raunarskih sustava, od jednostavnih ugraenih raunalnih sustava, osobnih raunala pa sve do posluitelja i raunarskih vieprocesorskih SiMD i MIMD sustava. Posebna pozornost posveena je konceptima arhitekture raunarskih sustava koji su vremenski nepromjenjivi i u velikoj mjeri ne ovise o burnom razvoju tehnologije vrlo visokog stupnja integracije (VLSI - Very Large Scale integration). Osim temeljnih zamisli i arhitektonskih koncepata, knjiga sadrava podrobne opise vieprocesorskih i paralelnih sustava, superskalarnih procesora, viedretvenih i simultano viedretvenih arhitektura procesora, viejezgrenih procesora te opise multiprocesorskih grafikih jedinica. Brojni primjeri i analize sluaja kojima se ilustriraju pojedini arhitektonski koncepti omoguit e itateljima lake razumijevanje i savladavanje gradiva. Knjiga je plod dugogodinjih predavanja o arhitekturi i organizaciji raunarskih sustava te grai raunala koja je autor izvodio i izvodi na Fakultetu elektrotehnike i raunarstva (FER), Fakultetu organizacije i informatike (FOI), Prirodoslovno-matematikom fakultetu (PMF) Sveuilita u Zagrebu, Tehnikom fakultetu Sveuilita u Rijeci, Elektrotehnikom fakultetu Sveuilita u Osijeku te Fakultetu elektrotehnike. strojarstva i brodogradnje (FESB) Sveuilita u Splitu. Sadrajno udbenik u potpunosti pokriva i dijelom nadilazi nastavni plan kolegija Graa raunala na Visokoj koli za primijenjeno raunarstvo u Zagrebu, koja je i njegov naruitelj. Udbenik je prvenstveno namijenjen visokokolskoj nastavi na tehnikim i njima srodnim fakultetima, meutim, neka poglavlja nude gradivo koje se moe obraivati u srednjim kolama informatikog i elektrotehnikog usmjerenja.

www.racunarstvo.hr

ISBN 978-953-322-07 RAUNARSTVO visoka kola

ALGEBRA GRUPA

Das könnte Ihnen auch gefallen