arh2 s. ribaric - grada racunala - arhitektura i organizacija racunarskih sustava (2011)

548
prof. dr. sc. Slobodan Ribarić Građa računala ARHITEKTURA I ORGANIZACIJA RAČUNARSKIH SUSTAVA I I

Upload: rio72

Post on 08-Feb-2016

2.220 views

Category:

Documents


61 download

TRANSCRIPT

Page 1: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

prof. dr. sc. Slobodan Ribarić

Građa računala ARHITEKTURA I ORGANIZACIJA RAČUNARSKIH SUSTAVA

I I

Page 2: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

prof. dr. sc. Slobodan Ribarić

GRAĐA RAČUNALA ARHITEKTURA I ORGANIZACIJA

RAČUNARSKIH SUSTAVA

1. izdanje

2 0 1 1 .

Page 3: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

SADRŽAJ Q

1. ARHITEKTURA RAČUNARSKOG SUSTAVA 1 1.1. Uvod 1 1.2. Osnovni računski modeli 3 1.3. Upravljački tok, tok podataka i upravljanje slijedom izvršavanja na temelju zahtjeva 4

1.3.1 Upravljački tok 5 1.3.2. Tok podataka 7 1.3.3 Upravljanje zahtjevom 9 1.3.4.Turingov stroj 10 1.3.5. k-ta konfiguracijaTS-a 16 1.3.6. Von Neumannov model 18

1.4. Arhitektura, organizacija i građa računarskog sustava 18 1.4.1. Definicija arhitekture računarskog sustava 18

1.5 Klasifikacija arhitekture računarskog sustava 23 1.5.1. Flynnova klasifikacija 25

2. VON NEUMANNOV MODEL RAČUNALA : 31 2.1. Uvod 31

2.1.1. Nulta generacija - generacija mehaničkih strojeva za računanje (1644. - 1945.) 31 2.1.2. Prva generacija - elektronička računala s elektronskim cijevima (1945. - 1955.) 32 2.1.3. Druga generacija računala - tranzistor kao građevna komponenta (1955.-1965.) 32 2.1.4.Treča generacija - integrirani sklopovi (1965.-1980.) 33 2.1.5. Četvrta generacija računala - sklopovi vrlo visokog stupnja integracije (1980. - ?) 33

2.2. Funkcijske jedinice von Neumannovog modela računala 35 2.2.1. Upravljački tok, instrukcijski tok i tok podataka u Neumannovom modelu računala 37 2.2.2. Aritmetičko-logička jedinica 39 2.2.3. Upravljačka jedinica 41 2.2.4. Memorijska jedinica 46 2.2.5. Ulazno-izlazna jedinica 47

2.3. Jednostavno mikroračunalo - von Neumannov model računala 48 2.4. Von Neumannovo računalo - računalo SISD 55 2.5. UsporedbaTuringovog stroja i von Neumannovog modela računala 56

3. POJEDNOSTAVLJENI MODELI CISC I RISC PROCESORA 59 3.1. Uvod 59 3.2. Pojednostavljeni model CISC procesora 59 3.3. Primjer izvođenja programa 64 3.4. Stanje na vanjskim sabirnicama 70 3.5. Pojednostavljeni model RISC procesora 77

3.5.1. Aritmetičke i logičke instrukcije 81 3.5.2. Instrukcije za pristup memoriji 85 3.5.3. Instrukcije grananja 89 3.5.4. Mješovite instrukcije 91

4. PERFORMANSA RAČUNALA 93 4.1. Uvod: performansa, cijena i omjer cijene i performanse 93 4.2. Mjere performanse 95

4.2.1 .MIPS - Millions of Instructions per Second 98 4.2.2. FLOPS - Floating-point Operations per Second 100 4.2.3. SPEC (System Performance Evaluation Cooperative) mjera 100 4.2.4 Sintetični ispitni programi 105

43. Amdahlov zakon 106

Page 4: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK 107 5.1. Zbirni jezik 107

5.1.1. Izvršljive instrukcije i pseudoinstrukcije 109 5.1.2. Makroinstrukcije 112

5.2. Razlozi uporabe zbirnog jezika 115 5.3. Dvoprolazni asembler 116 5.4. Postupak prevođenja zbirnog programa 120 5.5. Punilac (engl. loader) 121

6. UPRAVLJAČKA JEDINICA 123 6.1. Uvod 123 6.2. Prijenos upravljanja unutar istog programa 125 6.3. Prijenos upravljanja između različitih programa 125

6.3.1. Prijenos upravljana između pozivajućeg i pozvanog programa 126 6.4. Rekurzivne programske procedure (rekurzivni potprogrami) 131

6.4.1. Stog 134 6.4.2. Izvedba stoga 142

6.5. Prijenos upravljanja između prekinutog i prekidnog programa 145 6.6. Primjer uporabe stoga - analiza slučaja za MC 68000 147

7. SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE 159 7.1. Put podataka i upravljačka jedinica 159 7.2. Dva osnovna načina oblikovanja upravljačke jedinice 163 7.3. Sklopovska upravljačka jedinica 165

7.3.1. Izvedba upravljačke jedinice uporabom generatora sljedova - analiza slučaja 166 7.3.2. Sklopovske sastavnice upravljačke 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 vođenja 186

7.4. Mikroprogramirana upravljačka jedinica 187 7.4.1. Signal vremenskog vođenja mikroprogramirane upravljačke jedinice 194

7.5. Nanoprogramirana upravljačka 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. Višestruki formati mikroinstrukcija 206 7.6.4. Horizontalno i vertikalno mikroprogramiranje 208

8. ARITMETIČKO-LOGIČKA JEDINICA 211 8.1. Uvod: bit, riječ, bajt i znakovi 211 8.2. Prikaz brojeva 212

8.2.1. Prikaz cijelih brojeva 212 8.2.2. Prikaz brojeva s pomičnim zarezom (floating-point number) 215 8.2.3. Binarno kodirani dekadski brojevi 219

8.3. Binarna aritmetika 220 8.3.1. Zbrajanje dvaju binarnih brojeva 220 8.3.2. Paralelno zbrajalo 224 8.3.3. Serijsko zbrajalo 225 8.3.4. Oduzimanje dvaju binarnih brojeva 226 8.3.5. Oduzimanje pomoću komplementa binarnog broja 228 8.3.6. Paralelno zbrajalo s predviđanjem bita prijenosa (engl. carry lookahead) 229 8.3.7 Množenje 232

8.3.7.1. Množenje nepredznačenih brojeva 232 8.3.7.2. Množenje brojeva predočenih u notaciji dvojnog komplementa 235 8.3.7.3. Boothov algoritam 235

8.3.8. Dijeljenje 240 8.3.9. Posmak 244 8.3.10 Bačvasti posmačni sklop 249

8.4. Aritmetičke operacije brojevima s pomičnim zarezom 252

Page 5: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

8.5. Oblikovanje jednostavne aritmetičko-logičke jedinice-analiza slučaja 256 8.5.1. Aritmetička sekcija 258 8.5.2. Logička sekcija 260

8.5.2.1. Logička operacija ISKLJUČIVO ILI 261 8.5.2.2. Logička operacija NE 262 8.5.2.3. Logička operacija ILI 262 8.5.2.4. Logička operacija 1 262

9. MEMORIJSKI SUSTAV 265 9.1. Uvod 265 9.2. Memorijska hijerarhija 265 9.3. Osnovne organizacijske i tehnološke značajke memorijskog sustava 269 9.4. Glavna ili radna memorija 271

9.4.1 Projektiranje memorijskog modula 278 9.5. Porodice DRAM 284 9.6. Ubrzanje rada memorije 285 9.7. Kod za ispravljanje pogrešaka 289 9.8. Sekundarna memorija 290

9.8.1. Magnetska diskovna memorija 291 9.8.2 Organizacija podataka na disku 293 9.8.3. Statički i dinamički parametri diskovne jedinice 295 9.8.4. Priručna diskovna memorija (engl. disk cache) 297

9.9. Polje diskova RAID (Redundant Array of Inexpensive Disks) 299 9.10. Savitljivi disk (engl. floppy disk) 305 9.11. Magnetska vrpca 305 9.12. Optičke memorije 306

9.12.1. CD-ROM 306 9.12.2. CD-R, CD-RW i DVD 307

10. PRIRUČNA MEMORIJA 311 10.1. Uvod 311 10.2. Djelovanje priručne memorije 316 10.3. Performansa priručne memorije 319 10.4. Organizacija priručne memorije 320

10.4.1. Način smještanja blokova u bločne priključke priručne memorije 321 10.4.1.1. Priručna memorija s potpuno asocijativnim preslikavanjem 321 10.4.1.2. Priručna memorija s izravnim preslikavanjem 323 10.4.1.3. Priručna memorija sa skupnim asocijativnim preslikavanjem 327

10.5. Način zamjene blokova 329 10.5.1. Veličina bloka i kapacitet priručne memorije 331 10.5.2. Način obnavljanja sadržaja glavne memorije 333 10.5.2. Način pribavljanja bloka iz glavne memorije 333

10.6. Koherencija priručne memorije 334 10.7. Priručna memorija - analiza slučaja procesor MC 68030 335

11. VIRTUALNA MEMORIJA 337 11.1. Uvod 337 11.2. Fizički i virtualni adresni prostor 338 11.3. Adresno preslikavanje 339

11.3.1. Denningov model virtualne memorije 341 11.4. Straničenje 346

11.4.1 .Translacijski spremnikTLB (engl.Translation Lookaside Buffer) 349 11.5. Segmentacija i segmentacija sa straničenjem 353 11.6. Zamjena i pribavljanje stranica 353 11.7. Virtualna memorija i priručna memorija 354 11.8. Virtualni memorijski sustav - integracija translacijskog spremnika TLB, priručne memorije i virtualne memorije 354

12. SABIRNICE 359

Page 6: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

12.1. Uvod 359 12.2. Vodeći i prateći moduli 363 12.3. Sabirnički ciklus i sabirnički protokol 363 12.4. Sabirnička arbitraža 371 12.5. Sabirnice osobnih računala (PC sabirnice) 377 12.6. Ulazno-izlazne sabirnice: USB, FireWire i SCSI 381

13. ULAZNO-IZLAZNI SUSTAV 393 13.1. Uvod 393 13.2. Ulazno-izlazni upravljač 395 13.3. Načini izmjene podataka 398

13.3.1. Programirani ulazno-izlazni prijenos podataka 398 13.3.2. Prekidni ulazno-izlazni prijenos podataka 406

13.4. Analiza slučaja - vektorski prekid procesora MC 68000 417 13.5. Izravni pristup memoriji DMA - Direct Memory Access 425

14. PROTOČNOST 429 14.1. Uvod 429 14.2. Protočne strukture u računarskom sustavu 433 14.3. Instrukcijska protočna struktura 434

14.3.1. Podrobniji dijagram stanja instfukcijskog ciklusa 437 14.4. Instrukcijska protočna struktura za RISC procesore 439

14.4.1. Potrebne sklopovske preinake u protočnom RISC procesoru 440 14.4.2. Ostvarivanje cilja: jedna instrukcija u jednoj periodi signala vremenskog vođenja 444

14.5. Instrukcijska protočna struktura za CISC procesore 445 14.6. Instrukcijska protočna struktura CISC procesora MC 68060 - analiza slučaja 447 14.7. Hazardi u instrukcijskoj protočnoj strukturi 449

14.7.1. Strukturni hazard 449 14.7.2. Podatkovni hazard 451 14.7.3. Upravljački hazard 457 14.7.4. Predviđanje grananja 461 14.7.5. Precizni i neprecizni prekid (iznimka) 463

14.8. Superskalarni procesori 463 14.8.1. Načini izdavanja i završavanja instrukcija u superskalarnoj arhitekturi procesora 468

15. VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGRENII GRAFIČKI PROCESORI 473 15.1. Oblici i razine paralelizma 473

15.1.1. Paralelizam na razini instrukcija 474 15.1.2. Paralelizam na razini dretvi i procesa 479 15.1.3. Paralelizam na korisničkoj razini 483 15.1.4. Podatkovni paralelizam 484

15.2. Paralelne arhitekture: višeprocesorski SIMD, vektorski procesori i MIMD sustavi 486 15.2.1. Višeprocesorski SIMD sustavi 486 15.2.2. Vektorski procesori 487

15.3. Multiprocesorski sustavi - višeprocesorski MIMD sustavi 497 15.3.1. Koherencija priručne memorije u multiprocesorskom sustavu 500 15.3.2. Sinkronizacija procesa i dretvi 506

15.4. Visedretvenost i simultana višedretvenost 509 15.5 Višejezgreni procesori 512

15.5.1 IBM POWER4 dvojezgreni procesor 512 15.5.2. Ultra SPARCT1 i T2 514 15.5.3. AMD Opteron X4 2356 517 15.5.4.1MB POWER5 dvojezgreni SMT procesor, POWER6 i POWER7 521 15.5.5. Ocjena performansi multiprocesora 524

15.6. Grafički procesori (grafičke procesne jedinice) 524 15.6.1. NVIDlATesla - unificirana arhitektura za grafiku i računanje 528

LITERATURA 533

KAZALO POJMOVA 537

Page 7: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

PREDGOVOR

Knjiga koji se nalazi pred Vama obrađuje važnu temu iz područja računarstva kojoj se u središtu pozornosti nalaze računalo; računarski sustav te građa, arhitektura i organizacija računarskog sustava.

Računalo (engl. computer) jest složeni programirljivi stroj koji je oblikovan tako da automatski obavlja slijed ili sljedove aritmetičkih i logičkih operacija. Oni su određeni programom koji se može relativno jednostavno mijenjati i tako stroj čini univerzalnim te se može rabiti u različitim naprava-ma i sustavima - od mobitela, igračaka, sustava za upravljanje industrijskim i proizvodnim proce-sima pa sve do vrlo složenih primjena na području znanstvenog računanja (engl. computational science, scientific computing).

U hrvatskom jeziku rabimo i izraze računalni sustav i računarski sustav (engl. computer system) i često ih razlikujemo po tome što „računalni sustav" smatramo užim pojmom koji se prvenstveno odnosi na građevne komponente samog računala i njihovo međudjelovanje uzpomoč minimalne programske opreme - jezgre operacijskog sustava koja stroj čini uporabnim. Pod izrazom „raču-narski sustav" često podrazumijevamo računalo kojem su pridruženi različiti periferni uređaji i pro-gramska oprema - od jezgre operacijskog sustava pa sve do namjenskih ili aplikacijskih programa kojima se omogučuje djelotvorna obrada i interakcija korisnika ili grupe korisnika sa sustavom, ali i računalnog sustava s okolinom ili pak s drugim računalnim sustavima. S obzirom na potonje jezične nijanse, govorimo o ugrađenom računalnom sustavu (engl. embedded computer system), a ne o ugrađenom računarskom sustavu.

Računarstvo (engl. computing) jest znanstvena disciplina koja se bavi oblikovanjem i izgradnjom sklopovskih i programskih sustava te je usmjerena na iskorištavanje prednosti koje nude računar-ski sustavi: obrada; strukturiranje, pohrana i pretraživanje različitih vrsta informacija, potpora znanstvenim istraživanjima, oblikovanje komunikacijskih i zabavnih multimedijskih okruženja te oblikovanje računarskih sustava koji se inteligentno ponašaju.

Znanstveno računanje (engl. computational science, scientific computing) bavi se oblikovanjem matematičkih modela i kvalitativnom analizom metoda i tehnika koje se rabe u računarskom sustavu za analizu i rješavanje složenih znanstvenih problema iz područja kao što su numerička simulacija, dubinska analiza podataka, postupci optimizacije i si.

Građa računala, arhitektura i organizacija računarskih sustava bave se digitalnim računalima; računarskim sustavima i sučeljem sklopovske i programske opreme.

Knjiga je zamišljena kao udžbenik koji omogučuje sustavni, postupni uvod u to složeno znanstve-no područje koje je podvrgnuto vrlo brzim i učestalim tehnološkim promjenama. Uvjeren sam da su zamisli i osnovni koncepti izloženi u knjizi takvi da su uporabni za razumijevanje, oblikovanje i održavanje računarskih sustava, i to od jednostavnih ugrađenih računalnih sustava, osobnih ra-čunala pa sve do poslužitelja i računarskih višeprocesorskih SIMD i MIMD sustava. Posebnu po-zornost posvetio sam opisu zamisli i temelja arhitekture računarskog sustava koji su vremenski nepromjenjivi i u velikoj mjeri ne ovise o burnom razvoju tehnologije vrlo visokog stupnja integra-cije (VLSI - Very Large Scale Integration) koja omogučuje integraciju preko milijardu tranzistora na komadiću silicija nešto većem od poštanske marke.

Osim temeljnih zamisli i arhitektonskih koncepata, knjiga sadržava podrobne opise višeprocesor-skih i paralelnih sustava, superskalarnih procesora, višedretvenih i simultano višedretvenih arhi-tektura procesora; višejezgrenih procesora te opise multiprocesorskih grafičkih jedinica.

Brojni primjeri i analize slučaja kojima se ilustriraju pojedini arhitektonski koncepti, uvjeren sam, omogućit će čitateljima lakše razumijevanje i savladavanje gradiva.

Page 8: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

Knjiga je plod mojih dugogodišnjih predavanja o arhitekturi i organizaciji računarskih sustava te građi računala na Fakultetu elektrotehnike i računarstva (FER), Fakultetu organizacije i informati-ke (FOI), Prirodoslovno-matematičkom fakultetu (PMF) Sveučilišta u Zagrebu, Tehničkom fakulte-tu Sveučilišta u Rijeci, Elektrotehničkom fakultetu Sveučilišta u Osijeku te Fakultetu elektrotehnike, strojarstva i brodogradnje (FESB) Sveučilišta u Splitu. Udžbenik je prvenstveno namijenjen visokoš-kolskoj nastavi na tehničkim i njima srodnim fakultetima, međutim, neka poglavlja nude gradivo koje se može obrađivati u srednjim školama informatičkog i elektrotehničkog usmjerenja.

Na kraju; želim se zahvaliti svima koji su doprinijeli da ovo djelo bude pred vama. Posebno se za-hvaljujem suradnicima sa Zavoda za elektroniku; mikroelektroniku, računalne i inteligentne su-stave (ZEMRIS), FER koji su čitali dijelove rukopisa u nastajanju i sudjelovali u raspravi oko nekih bitnih detalja: prof. dr. sc. Urošu Perušku za raspravu u vezi s disipacijom snage procesora, prof. dr. sc. Željki Mihajlovič za pažljivo čitanje dijela teksta koji se odnosi na računalnu grafiku i grafičke procesore i brojne korisne sugestije; prof dr. sc Marinu Golubu za komentare vezane za procese, dretve i višedretvenost te asistentu Branku Samaržiji, dipl. ing., za pažljivo č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 Pavešiču, Fakulteta za elektrotehniko, Univerza v Ljubljani, prof dr. sc. Ivi Ipšiču, Tehnički fakultet, Sveučilište u Rijeci i Milanu Koraču, dipl. ing. koji su brojnim primjedbama, komentarima i sugestijama dopri-nijeli kakvoći rukopisa.

Zahvalu dugujem i gđici Ani Rutar, prof. koja je uspješno i s puno razumijevanja koordinirala posao koji se odnosio na tehnički dio nastanka knjige. Zahvaljujem se i lektorici gđici Dijani Stilinovič, prof koja je savjesno ispravila rukopis i odmjerenim intervencijama u potpunosti sačuvala njegov duh. Zahvaljujem se i ilustratoru gospodinu Goranu Obrovcu koji je izradio više od 350 slika na temelju rukom nacrtanih podloga.

U Zagrebu 7. ožujka 2011.

Autor

Page 9: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 1

1. POGLAVLJE

ARHITEKTURA RAČUNARSKOG SUSTAVA

1.1. UVOD Vrlo pojednostavljeno, obradu podataka (engl. data processing) možemo opisati kao svr-sishodnu aktivnost koja ima za cilj dobivanje tražene informacije iz raspoloživih podataka. Obično obrada informacija objedinjuje aktivnosti kao što su pohrana i obrada velikih koli-čina podataka, slanje, odnosno upućivanje tražene informacije prema odredištu te njezino ponovno pohranjivanje. U postupku obrade podataka možemo identificirati tri glavne sa-stavnice (komponente):

• podatke, • algoritam i • izvršitelja.

Podaci su objekti u obradi i moraju biti predočeni u obliku koji je prilagođen izvršitelju. Algoritam predstavlja preciznu uputu ili "recept" izvršitelju kojom se opisuje transformacija početnih ili ulaznih podataka u procesu obrade u traženu informaciju. Postupak transfor-macije grupiran je u korake algoritma. Svaki algoritam ima svojstva određenosti, konačno-sti i širinu primjene, odnosno definirano područje uporabe. Izvršitelj može biti čovjek ili stroj.

Primjer 1.1.

Ilustrirajmo algoritam i njegova svojstva na primjeru Euklidovog algoritma (Euklid, 400. p.n.e) kojim se rješava sljedeći problem: za zadana dva prirodna broja a i b treba naći naj-veću zajedničku mjeru, odnosno najveći cijeli broj kojim su oba prirodna broja djeljiva bez ostatka.

1. korak: Promotri dva broja: a i b. Prijeđi na sljedeći korak.

2. korak: Usporedi brojeve. Prijeđi na sljedeći korak.

3. korak: Ako su promatrani brojevi jednaki, svaki daje traženi rezultat -obustavi postupak računanja. Ako brojevi nisu jednaki, prijeđi na sljedeći korak.

4. korak: Ako je prvi promatrani broj manji od drugog, zamijeni im mjesta. Prijeđi na sljedeći korak.

5. korak: Oduzmi drugi broj od prvog i promatraj taj drugi broj i ostatak. Prijeđi na korak 2.

Page 10: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

2 1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

Određenost se Euklidovog algoritma ogleda u tome stoje u svakom koraku precizno na-značeno što se mora poduzeti i na koji se sljedeći korak u postupku treba prijeći. Algoritam je tako sročen da jamči da će se za svaka dva prirodna broja a i b u konačnom broju koraka naći najveća zajednička mjera. Područje uporabe Euklidovog algoritma su prirodni brojevi.

Možemo uočiti da je algoritam namijenjen i prilagođen čovjeku kao izvršitelju. Čovjek razumije upute u svakom koraku kao što su "promotri" "prijeđi" "usporedi" "obustavi" ali može obaviti i operacije kao što su "zamijeni" ili "oduzmi". Kako bi izgledao algoritam nami-jenjen računalu kao izvršitelju? Odgovor na to pitanje ostavljam čitatelju.

Oblik algoritma u velikoj mjeri ovisi o sposobnosti izvršitelja.

Jedan od uobičajenih pristupa obradi podataka je i onaj koji se temelji na transformaciji ulaznih podataka u traženi rezultat na temelju računanja. Takav pristup ima posebno zna-čenje u tzv. intenzivnim postupcima numeričke obrade podataka (engl. numbercrunching). Formalno, postupak računanja može se definirati na sljedeći način:

Računanje je proces određivanja izlazne supstitucije, za zadanu određenu ulaznu supstitu-ciju, koja se pokorava svim specifičnim svojstvima, odnosno ograničenjima problema. Da bismo zornije predočili potonju definiciju, trebamo pojasniti značenje "ulazne supstitucije", "izlazne supstitucije" i "ograničenje problema" Njihovo ćemo značenje prikazati na proble-mu naprtnjače.

Primjer 1.2.

Pretpostavimo da imamo naprtnjaču nosivosti {ili kapaciteta) C kilograma te da pred sobom imamo N predmeta koje bismo željeli ponijeti u naprtnjači. Svaki od predmeta ima svoju vrijednost v. i svoju težinu w., i = 1 , 2 , N . Budući da sve predmete ne možemo ponijeti zbog ograničenog kapaciteta naprtnjače, potrebno je naći predmete, odnosno udjele predmeta koje ćemo ponijeti tako da u naprtnjači koju nosimo imamo najveću vrijednost, a pritom ne prekoračimo nosivost naprtnjače. (Opaska: predmeti se mogu rastaviti na dijelove čija je vrijednost proporcionalna njihovoj težini.)

Parametri i varijable problema su:

C - nosivost (kapacitet) naprtnjače [kg], N - ukupan broj predmeta, v; i = 1 , 2 , N - vrijednost svakog predmeta [$], w.; i = 1 , 2 , N - težina svakog od predmeta [kg], F.; i = 1,2,..., N - udio svakog od predmeta koji će se ponijeti u naprtnjači, Pmaks - maksimalna vrijednost predmeta (ili udjela predmeta) u naprtnjači [$].

Ulaznu supstituciju dobivamo tako da za zadane parametre problema unesemo njihove vrijednosti. Pretpostavimo daje naprtnjača nosivosti 14 kg te da imamo tri predmeta za koje znamo težinu i vrijednost.

Ulazna supstitucija je sljedeća:

C - 14 kg, N = 3, v-} =30$,W| =4kg,V2 =48$, W2 = 6 kg, V3 = 50 $, VV3 = 7 kg.

Rješenje se mora pokoravati specifičnim ograničenjima - ne smije se prekoračiti kapacitet naprtnjače (C = 14 kg) i mora zadovoljavati zahtjev da je vrijednost predmeta u naprtnja-či maksimalna (P ).

Page 11: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 3

Rješenje problema jest izlazna supstitucija. U našem slučaju ona glasi:

U naprtnjaču stavljamo: Cijeli predmet 1 i cijeli predmet 2 te 4/7 predmeta 3. Ukupna vrijednost u naprtnjači je 106,57 $, stoje ujedno i maksimalna vrijednost koju možemo ponijeti (Pmaks). Algoritam koji će nas dovesti do željenog rješenja, odnosno do izlazne supstitucije je:

1. korak: Razvrstaj objekte na temelju omjera vrijednosti i težine: 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 naprtnjača ne prenatrpa: Iz skupa predmeta uzmi predmet s najvećim omjerom vrijednost težina i smjesti ga cijelog u naprtnjaču.

3. korak: Izvadi iz naprtnjače posljednji predmet kojim je prekoračen kapacitet naprtnjače i razdijeli ga tako da upravo njegovi dijelovi popune naprtnjaču.

I ovaj je algoritam namijenjen čovjeku kao izvršitelju. Kako bi izgledao stroj koji bi mo-gao izvoditi algoritam u ovakvom izvornom obliku? To bi trebao biti inteligentan stroj s vidnom percepcijom i drugim senzorima (npr. težine, pritiska, dodira), opremljen meha-ničkim hvataljkama, bazom znanja i strojem za zaključivanje te sučeljem za razumijeva-nje prirodnog jezika.

1.2. OSNOVNI RAČUNSKI MODELI U ovoj ćemo se knjizi baviti samo izvršiteljem - strojem koji se temelji na računskom mo-delu (engl. computational model) definiranom kao von Neumannovmodel. Računski model predstavlja višu razinu apstrakcije od arhitekture računala i programskog jezika. On se opi-suje skupom triju apstrakcija:

1. temeljnim elementima koji sudjeluju u računanju; 2. modelom kojim se opisuje problem i 3. izvršnim modelom.

Prva apstrakcija opisuje elemente i operacije koje se na elementima mogu izvoditi. Na primjer, u von Neumannovom modelu temeljni elementi koji sudjeluju u računanju jesu podaci koji su predstavljeni imenima da bi se omogućilo razlikovanje brojnih različitih po-dataka u postupku računanja. Tako imenovani podaci obično se u programskim jezicima nazivaju varijablama i implementirani su u arhitekturi računala pomoću adresa memorij-skih 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 računanja u obliku algoritma.

Deklarativnim stilom opisuju se sve činjenice i odnosi koji su relevantni za zadani problem. Dvije se metode koriste za izražavanje odnosa i činjenica. Prva upotrebljava funkcije, a dru-ga primjenjuje opis odnosa i činjenica u obliku predikata.

Page 12: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

12 1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

Primjer 1.3.

Prikažlmo jednostavan primjer proceduralnog i deklarativnog stila opisivanja problema računanja 'n'faktorijela uporabom jezika sličnom Pascalu.

Proceduraini stil i f n 0 t h e n

f a c := 1 e l s e f a c : = 1 ;

f o r i := 1 t o n do f a c : = i * f a c ;

end ;

Deklarativni stil f a c (0) 1 f a c (n >0) n * f a c ( n - l ) ;

Izvršni model definiran je trima sastavnicama: tumačenjem kako se izvodi računanje, izvrš-nom semantikom i upravljanjem slijedom izvršavanja.

Na primjer, u von Neumanovom modelu računanja problem je opisan kao slijed instrukcija (uputa) koje rukuju imenovanim podacima i određuju slijed upravljanja. Računanje se u von Neumannovom modelu tumači kao izvršavanje zadanog slijeda instrukcija. Izvršna se-mantika može se promatrati kao pravilo koje propisuje kako se izvodi pojedini korak raču-nanja. Von Neumannov model temelji se na semantici prijelaza stanja. Ona određuje kako če se za svaku instrukciju promijeniti trenutno stanje stroja.

Osim semantike prijelaza stanja, koja se rabi i uTuringovom modelu računanja, koriste se semantika toka podataka (engl. dataflow semantic) i redukcijska semantika (engl. reduction semantic) koje su namijenjene računskom modelu temeljenom na toku podataka (engl dataflow) i redukcijskom računskom modelu.

Upravljanje slijedom izvršavanja može se temeljiti na upravljačkom toku (engl. control-driven execution), toku podataka (engl. data-driven) i upravljanju zahtjevom (engl. demand-driven)

1.3. UPRAVLJAČKI TOK, TOK PODATAKA I UPRAVLJANJE SLIJEDOM IZVRŠAVANJA NA TEMELJU ZAHTJEVA

Da bismo prikazali osnovne značajke pojedinih načina upravljanja slijedom izvršavanja, po-služit čemo se jednostavnim modelom instrukcije koji je predočen n-torkom argumenata:

(arg 1 arg 2... arg n),

gdje su argumenti operatori (određuju operaciju na podacima), vrijednosti podataka (ope-randi i rezultati), adrese operanada, adresa rezultata te adrese koje upućuju na sljedeću in-strukciju. Ovakav oblik zapisa instrukcije dopušta nam prikaz izvršavanja slijeda instrukcija i u računskim modelima koji se korjenito razlikuju od von Neumannovog modela.

Za tri različita načina upravljanja slijedom izvršavanja prikazat ćemo primjer izvođenja pro-grama koji se može u višem programskom jeziku zapisati samo jednom naredbom:

z = (a*5) + (c*d).

Page 13: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 5

1.3.1 UPRAVLJAČKI TOK

Upravljanje slijedom izvršavanja na temelju upravljačkog toka zasniva se na pretpostavci da u modelu postoji program koji se sastoji od slijeda instrukcija. Slijed izvršavanja impli-citno je zadan slijedom instrukcija. Uz to, dopuštena je uporaba eksplicitnih upravljačkih instrukcija kojima se može specificirati ciljna instrukcija koja je izvan implicitno definiranog slijeda izvršavanja.

Program za z = (a *5) + (c *d) u obliku slijeda instrukcija za model računanja koji se temelji na upravljačkom toku sastoji se od slijeda triju instrukcija:

gdje su * i + operatori, 5 vrijednost operanada, a,c\d adrese operanada, z7 i z2 adrese međurezultata 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 upućuje izvođenje na sljedeću instrukciju u ovom modelu računanja nije element instrukcije.

Slika 1.1 prikazuje izvršavanje programa. Crtkana linija označava upravljački tok koji je samo jedan i kojim se prenosi upravljanje slijedno s instrukcije na sljedeću instrukciju u slijedu. Pune linije na slici 1.1 označavaju pozivanje (referenciranje) memorijskih lokacija koje sadržavaju vrijednosti operanada ili na koje se pohranjuju među rezultati i rezultati operacija. Slijed izvršavanja implicitno je određen. Kao što je već spomenuto, implicitni slijed izvršavanja može se promijeniti uporabom eksplicitnih upravljačkih instrukcija koje imaju operatore tipa GOTO i JUMP.

(* a 5 z1) (* c d z2) (+z1 z2z),

upravljački

( * a 5 z1 )

c : ( 4 ) d : (7) z1:( )

T z:( )

SI. 1.1 Izvršavanje programa u računskom modelu temeljenom na upravljačkom toku

Slika 1.2 prikazuje izvršavanje programa za paralelan računski model temeljen na uprav-ljačkom toku. U slučaju kada se eksplicitno označavaju instrukcije koje se mogu paralelno izvesti rabe se instrukcije s operatorima tipa FORKl JOIN. Instrukcija s operatorom FORK

Page 14: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

14 1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

uvišestručuje upravljački tok. Na primjer, instrukcija (FORKi2 2) formira upravljački tok u dvije grane i omogućuje istodobno izvršavanje instrukcija (*a5z 1) i (*cdz2). Argument /2 u instrukciji FORKi2 2 označava mjesto nastanka novih, dodatnih upravljačkih tokova, a argument 2 predstavlja vrijednost sinkronizacijskog brojila pomoću kojeg se sinkroniziraju upravljački tokovi.

Instrukcija s operatorom JOIN sinkronizira upravljačke tokove i nakon izvođenja instrukcija (*a5z1) i (*cdz2) stapa ih u jedinstven upravljački 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, upravljački tokovi se stapaju.

upravljački

I tok

t

t

*

i T

( FORK i2 2 )

a : ( 2 )

( * a 5 zl )

I ?

Z1 :( )

(JOIN ) *

c : ( 4 ) d : ( 7)

L t ( * c d z2 )

(JOIN ) 1

z2:( )

I ( + z1 z2 z )

I

tok podataka

z: ( )

SI. 1.2 Izvršavanje programa u paralelnom računskom modelu temeljenom na upravljačkom toku s eksplicitno označenim paralelno izvodljivim instrukcijama

Izvršavanje programa za paralelni računski model temeljen na upravljačkom toku može se ostvariti i uporabom instrukcija koje eksplicitno pomoću posebnog argumenta odre-đuju sljedeću instrukciju. Upravljanje se s instrukcije na instrukciju prenosi upravljačkim značkama (engl. control token). Slika 1.3 prikazuje izvršavanje programa u paralelnom ra-čunskom modelu s upravljačkim značkama. Argumenti u instrukcijama oblika i n/m (npr. /3//) određuju sljedeću instrukciju in i položaj argumenta m u toj instrukciji koji očeku-je upravljačku značku. Argument oblika ( ) označava mjesta koja zahtijevaju upravljačke značke. Instrukcije se izvršavaju u trenutku kada dobiju potreban broj upravljačkih znački. Na primjer, instrukcija /3 izvršit će se kada upravljačke značke upućene iz instrukcija i l i /2 stignu u argumente ( ) i ( ) (slika 1.3).

Page 15: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 7

iO : ( . . . il/O i 2/0 ) I I

_ _ _ _ _ _ J L _

a : (2 )

i l : (( ) * a 5 zl i3/0 )

_ _ c : ( 4 ) d : ( 7 )

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

1 zl : ( )

tt I

z2 : ( )

r 1 -

i3 : ( ( ) ( ) + z1 z2 z ) i ' Z : ( )

SI. 1.3 Izvršavanje programa u paralelnom računskom modelu temeljenom na upravljačkom toku s upravljačkim značkama

Iz prethodnih triju jednostavnih primjera izvođenja programa mogu se izdvojiti neke osnovne značajke računskih modela temeljenih na upravljačkom toku:

• tok upravljanja je slijedan. Uporabom posebnih operatora može se upravljati tokom izvođenja programa,

• za paralelni se računski model tok upravljanja uvišestručuje uporabom specijalnih operatora ili primjenom upravljačkih znački,

• tok ili tokovi upravljanja i tokovi podataka odvojeni su, • podaci (operandi) se prosljeđuju između instrukcija posredno - putem memorijskih

lokacija što ih instrukcije međusobno dijele (pohranjuju i čitaju sadržaje 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 računanja temeljenom na toku podataka imaju elemente kao što su operator, vrijednost operanda, argumenti oblika ( ) koji predstavljaju tzv. kalupe, odno-sno mjesta predviđena za značke podataka te argumente oblika in/m koji upućuju rezultat operacije (značku operanda s vrijednosti) na m-ti položaj argumenta ( ) u instrukciji in. Slika 1.4 prikazuje izvršavanje programa z= (a * 5) + (c*d) u računskom modelu temeljenom na toku podataka. Instrukcija se u tom modelu izvršava u trenutku kada su joj raspoloživi svi operandi, odnosno kada su u instrukciji popunjeni značkama podataka svi kalupi tj. argumenti oblika ( ).

Page 16: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

8 1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

Instrukcije /7 i /2 (slika 1.4) izvršavaju se neovisno jedna o drugoj, odnosno paralelno ako su im operandi (2, odnosno 4 i 7) istodobno raspoloživi. Rezultati njihovih izvršavanja (10, od-nosno 28) izravno se prosljeđuju instrukciji /3 koja se aktivira u trenutku kada su popunjena operandima oba njezina argumenta oblika ( ).

i H i1 : { * ( ) 5 i 3/0 ) 12 : ( * ( ) ( ) »3/1 )

U 13 : ( + ( ) ( ) z/1 )

1 ii il : ( * ( ) 5 i3/0 )

10 t 12 : { * ( ) ( ) i3/1 )

128

U i

13 : ( + < ) ( ) z/1 )

I 11 11 : ( * ( ) 5 13/0 ) i2 : ( * ( ) ( ) i3/1 )

u 13 :{ + ( ) ( ) z/1 )

38 i

SI. 1.4 Izvršavanje programa u računskom modelu temeljenom na toku podataka

Primjer izvršavanja programa za taj model pokazuje neke njegove osnove značajke: • upravljački tok stopljen je s tokom podataka, • tok podataka uvjetuje izvršavanje instrukcija: instrukcije se izvršavaju u trenutku

kada su im raspoloživi svi potrebni operandi, odnosno kada su popunjeni svi kalupi instrukcije,

• međurezultati se izravno prosljeđuju među instrukcijama, • nakon izvršavanja instrukcije, ulazni podaci za instrukciju (oni koji su bili smješteni u

kalupima) nisu više raspoloživi za tu niti za bilo koju drugu instrukciju, • vrijednost operanada mogu biti argumenti instrukcije.

Na temelju navedenih značajki može se zaključiti da se model s tokom podataka korjenito razlikuje od računskog modela s upravljačkim tokom. Napomenimo još jednom da se von Neumannov model temelji na modelu s upravljačkim tokom.

Page 17: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 17

1.33 UPRAVLJANJE ZAHTJEVOM

Osnovna značajka računskog modela upravljanog zahtjevom je ta da zahtjev za rezul-tatom pobuđuje operacije koje će taj rezultat proizvesti. Na primjer, za naš se program z=fo*5J+fc*dJzahtijevavrijednostzaz(slika1.5).SIika1.5prikazujeizvršavanjeprogramau računskom modelu upravljanom zahtjevom. U nekoj se instrukciji zahtijeva vrijednost za z. To će prouzrokovati izvršavanje instrukcija (u skladu s definicijom za z) koje će gene-rirati 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 obično takvi modeli naziva-ju i redukcijski modeli, a računala koja se temelje na tom modelu nazivaju se redukcijska računala.

a : ( 2 ) c : ( 4 ) d : ( 7 )

r * i l : ( * a 5 ) i2 : ( * c d )

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

SI. 1.5 Izvršavanje programa u računskom modelu upravljanom zahtjevom

Osnovne značajke računskog modela upravljanog zahtjevom su: • nema dodatnih ograničenja u pogledu upravljanja slijedom izvršavanja instrukcija

osim onih koja su postavljena zahtjevima za rezultatom, • ne rabi se koncept pohranjivanja i obnavljanja vrijednosti (nema varijabli), • dopušteno je gniježđenje zahtjeva za rezultatima.

Tri su osnovna računska modela koji se temelje na konceptu podataka: 1. Turingov model, 2. von Neumannov model, 3. model toka podataka.

Spomenimo neke računske modele koji se ne temelje na konceptu podataka - to su objek-tno temeljeni modeli (engl. object-based model] u kojima se manipulira objektima slijedom poruka, aplikativni modeli u kojima su temeljni elementi koji sudjeluju u računanju argu-menti, a problem je opisan skupom definicija funkcija koje se vrednuju, i predikatni računski modeli koji koriste elemente skupove predikata (engl. predicate-logic-based) i u kojima se opisi problema predočavaju Hornovim klauzulama kojima se izražavaju pravila i činjenice.

Page 18: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

10 1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG 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 - izvršitelj koji se u njegovu čast naziva Turingov stroj a računski model na kojem se temelji stroj Turingov model. Osnovna značajka stroja je da se postu-pak računanja raščlanjuje na vrlo jednostavne, gotovo nedjeljive elementarne operacije. Formalno, Turingov stroj (TS) može se opisati n-torkom

TS = (Q, S,T,P,b,qo,qf,S),

gdje je Q konačan skup unutarnjih stanja stroja, S konačan skup vanjske abecede stroja, T je skup elemenata vanjske abecede kojem je izuzet prazni simbol (engl. blank) b, skup na-redbi za pomak glave za čitanje i pisanje P, q0 početno stanje stroja, qf konačno stanje stroja i logička funkcija stroja 6 : S x Q - » S x P x Q , gdje x označava Kartezijev produkt. Da bismo razumjeli formalnu definiciju TS, uvedimo i objasnimo sve sastavnice stroja. TS ima vanjsku memoriju koja se predočava beskonačnom vrpcom, odnosno vrpcom neograničenom s lijeva i desna. Vrpca je podijeljena na polja pri čemu svako polje vrpce može istodobno sadržavati samo jedan znak ili simbol iz skupa vanjske abecede S.TS barata konačnim bro-jem 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 važnu ulogu u radu stroja. Upisivanjem praznog simbola u neko polje vrpce, briše se simbol koji se prethodno nalazio u tom polju. Još jednu značajku ima simbol b - on je neovisan o problemu koji se rješava Turingovim strojem i pojavljuje se kao univerzalni simbol u svim problemima. Jednako tako, ako se vrpca početno promatra kao prazna, ako nema upisanih simbola u poljima - podrazumijeva se da tada svako polje sadržava simbol b. Neki izraz zapisan na vrpci predstavljen je simbolima vanjske abecede koji su različiti od b.

Upis simbola u polje na vrpci ili čitanje simbola koji je upisan u polju obavlja se pomičnom glavom za čitanje i pisanje (kraće R/W glava; Read - čitaj; Write - piši) koja se pozicionira na dotičnom 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 položaj glave.

Obrada informacije odvija se u logičkom bloku L. U njemu je realizirana tzv. logička funkcija stroja S:SxQ-+SxPxQ, koja preslikava ulaznu dvojku koja se sastoji od trenutno proma-tranog simbola (simbola koji je upisan u polju nad kojim se nalazi R/W glava) i trenutnog unutarnjeg stanja stroja koje je zapamćeno u unutarnjoj memoriji q, u izlaznu trojku: sim-bol 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.

Page 19: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 11

beskonačna vrpca (vanjska memorija)

p € {N, L, 0} Si. 1.6. Turingov stroj

RadTS-a odvija se na sljedeći način: • na samom početku rada stroja on se nalazi u unutarnjem stanju q0 (inicijalno ili počet-

no stanje stroja, stanje stroja na početku prvog takta), a na vrpci je zapisan početni niz simbola iz skupa vanjske abecede.Taj se niz tumači kao ulazna ili početna informacija, odnosno ulazna supstitucija. Definira se i položaj 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 pomoću R/W glave čita simbol s. koji je pohranjen u pro-matranom polju na vrpci, u logičkom se bloku stroja L dvojka (sj7 qm), gdje je qm tre-nutno 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 po-hraniti u unutarnjoj memoriji q;

• na kraju tekućeg takta R/W glava će se pomaknuti ulijevo (naredba L) ili udesno (na-redba D), ali samo zajedno polje u odnosu na promatrano polje ili se pak neće poma-knuti (naredba N ili 0) - u skladu s naredbom za pomak glave koja je pohranjena u p;

• novi će takt stroj započeti s unutarnjim stanjem stroja qk i promatranjem simbola u polju nad kojim se nalazi R/W glava,

• napredovanjem taktova stroj početnu informaciju preoblikuje u (među)informaci-ju; - na kraju svakog takta znaci zapisani na vrpci stroja predstavljaju odgovarajuću (među)informaciju,

• u trenutku kada stroj dostigne konačno stanje q f stroj se zaustavlja (nema više na-predovanja taktova), a informacija koja je zapisana na vrpci tumači se kao rezultat obrade, odnosno izlazna supstitucija.

Page 20: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

12 1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

Koje su to jednostavne i skoro nedjeljive operacije koje izvršava 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 briše.

• mijenja se, u skladu s logičkom 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 qm = qk.

Druga je elementarna operacija pomak R/W glave, i to: • ako je naredba L, R/W glava se na kraju tekućeg takta pomiče samo za jedno polje

ulijevo, • ako je naredba D, R/W glava se na kraju tekućeg takta pomiče samo za jedno polje

udesno, • ako je naredba N (ili 0) R/W glava se ne pomiče - ostaje nad promatranim poljem.

Naglasimo još jednom da se obrada informacije odvija u logičkom bloku L i ona je defini-rana logičkom funkcijom stroja 6.

Slika 1.7 prikazuje logički blok L kao "crnu kutiju" koja ulaznu dvojku preslikava u izlaznu trojku.

s. q i ~m

L

sj p qk SL 1.7 Logički blok L kao "crna kutija"

"Program"za TS predstavlja realizaciju logičke funkcije stroja 6. Logičku funkciju stroja mo-žemo predočiti pomoću tablice preslikavanja (engl. look-up table) koja se naziva funkcio-nalna shema Turingovog stroja. Slika 1.8 prikazuje organizaciju tablice preslikavanja za TS, odnosno organizaciju funkcionalne sheme stroja. Tablica je organizirana na sljedeći način: u prvom retku tablice navode se sva unutarnja stanja stroja (osim konačnog stanja qf). Prvi stupac tablice čine simboli vanjske abecede (elementi skupa S). (Opaska: polje tablice (1, 1) na sjecištu prvog retka i prvog stupca jest prazno polje (slika 1.8)). Unutarnja polja ta-blice preslikavanja sadržavaju trojke (s, p, q), gdje je sGS, p G P i q G Q . Pretpostavimo da se na početku nekog takta TS nalazi u stanju qm te da R/W glava čita simbol sjf trojka koja odgovara preslikavanju dvojke (s., qm) u skladu s funkcijom 8, određuje se tako da se potraži sadržaj u polju koje se nalazi na sjecištu retka s. i stupca qm u tablici preslikavanja (slika 1.8).

Page 21: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 13

elementi unutarnja stanja vanjske abecede trojka trojka stroja {osim qf)

Primjer 1.4.

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

Slika 1.9 prikazuje funkcionalnu shemu stroja kojom je predočena logička funkcija stroja.

Na početku nekog takta, pretpostavimo da R/W glava čita simbol § i da se TS nalazi u stanju q2. Trojku kao izlaz iz logičkog bloka L nalazimo u polju tablice preslikavanja koje se nalazi na sjecištu retka koji odgovara simbolu vanjske abecede p i stupca koji odgova-ra stanju q2: (a, L, q3). Dakle, stroj će u polju nad kojim se nalazi R/W glava zamijeniti znak p sa znakom a, prijeći će u unutarnje stanje q3 i pomaknut će glavu za jedno polje ulijevo.

b a D q , |Lq , {5Nq3 |Dq ,

a PLq2 |Lq2 a D q , P L q3

P |Dq , |Lq2 a L q 3 a L q,

i b D q , a D q 3 p L q , |Dq f

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

Page 22: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

14 1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

Primjer 1.5.

Pretpostavimo da je na vrpci TS zapisan proizvoljni dekadski broj. Želimo napisati pro-gram za TS koji inkrementira (povećava za jedan) taj broj. Početno, stroj se nalazi u stanju q0, a R/W glava se nalazi na nepoznatoj poziciji lijevo od najmanje značajne znamenke broja.

Odredimo sastavnice TS-a: Problem određuje 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 = ^ q2,..., qf}. Vidimo da se u skupu Q nalaze po-četno stanje stroja q0 i konačno stanje qf i određen broj radnih unutarnjih stanja stroja q , qr.... Broj tih radnih unutarnjih stanja stroja ovisi o algoritmu kojim ćemo riješiti zada-ni problem. Općenito, podrazumijeva se da "elegantnije" rješenje ima manji broj radnih unutarnjih stanja.

Ponudimo rješenje: Dekadski brojevni sustav je pozicijski što znači da operaciju inkre-mentiranja moramo započeti tako da inkrementiramo najmanje značajnu znamenku broja koji je inicijalno zapisan na vrpci. Budući da nam je jedino poznato da se na samom početku rada stroja R/W glava nalazi negdje lijevo od najmanje značajne 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 sadržava najma-nje značajnu znamenku broja. Kada stroj pozicionira R/W glavu nad tim poljem, onda je problem skoro riješen:

Ako je promatrana znamenka 0, stroj upisuje 1, ne pomiče R/W glavu i zaustavlja se (pre-lazi u stanje qf), ako je promatrana znamenka 1, upisuje na to mjesto 2 i zaustavlja se. Za vrijednosti promatrane najmanje značajne znamenke od 0 do 8 vrijedi isto: treba upisati znamenku čija je vrijednost za 1 veća od promatrane znamenke i zaustaviti rad stroja. Ako je najmanje značajna znamenka 9, stroj treba upisati u promatrano polje 0, ali i na-staviti s radom jer se tada jedinica prenosi na značajnije mjesto zapisanog broja.

% 0 0 D q , 0 D q , 1Nq f

1 1Dq, 1Dq, 2Nq f

2 2Dq , 2 D q , 3Nq f

3 3Dq , 3Dq , 4Nq f

4 4 D q , 4 D q , 5Nq f

5 5Dq , 5Dq , 6Nq f

6 6 D q , 6 D q , 7Nq f

7 7Dq , 7Dq , 8Nq f

8 8 D q , 8Dq , 9Nq f

9 9 D q , 9 D q , 0Lq 2

b bDq 0 bLq 2 1 N q f

Tabltca 1.1. Funkcionalna shema stroja (Primjer 7.5.)

Page 23: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 15

Rješenje problema, tj. program za TS predočen funkcionalnom shemom stroja koja pred-stavlja logičku funkciju stroja ima oblik (Tablica 1.1.):

Prikažimo rad TS za prethodno napisani program. Pretpostavimo da je na vrpci zapisan broj 1269. Slika 1.10 prikazuje vrpcu i položaj R/W glave na početku rada stroja (stroj je u stanju q0).

b b b 1 2 6 9 b b 3

R/W glava stanje: q0

1.10 Početno stanje TS-a (Primjer /.5.)

Uporabom programa (Tablica 1.1.) obavljaju se sljedeće operacije: komentar: R/W glava se pomiče udesno i stroj ostaje u stanju q0

komentar: R/W glava se pomiče udesno i stroj ostaje u q0

komentar: stroj i dalje "traži" najmanje značajnu znamenku,

1. takt: (b,q0)->(b,D,q0) 2. takt: (b, q0) (b, D, q0) 3. takt : (1,q)->(1,D,q i ) 4. takt: (2, (2, D, 5. takt: (6,q,) ->(6, D ,^ ) 6. takt: (9, q,) (9, D, q,) 7. takt: (b, (b, L, q2); komentar: stroj je našao prazno polje desno od najmanje

značajne znamenke i pozicionirao je glavu na najmanje značajnoj znamenci broja,

8. takt: (9, q2) (0, L, q2); komentar: inkrementira se najmanje značajna znamenka, 9. takt: (6, q2) (7, N, qf); komentar: stroj "prenosi"jedinicu s najmanje značajnog

mjesta, inkrementira znamenku na značajnijoj poziciji i zaustavlja se.

o b 7

R/W glava stanje: q f

SI. 1.11 Sadržaj vrpce i položaj glave R/W nakon završetka programa {Primjer 1.5.)

i

Primjer 1,6.

Napišimo program za TS kojim se inkrementira proizvoljni broj predočen 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 značajnije mjesto). Pretpostavimo da je poznat početni položaj R/W glave - ona se nalazi na poziciji najmanje značajne binarne znamenke broja.

Skup simbola vanjske abecede je S = {0,1, b}. Skup unutarnjih stanja stroja je Q = {q0, qf}. (Opaska: u ovom elegantnom rješenju q0 je ujedno i radno unutarnje stanje stroja).

Page 24: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

16 1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

Funkcionalna shema stroja ima oblik prikazan u Tablici 1.2.:

0 1Nq f

1 OLq0

b 1Nq f

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

Prikažimo izvođenje programa za binarni broj početno zapisan na vrpci (Slika 1.12): 100111.

b 0 0

Z X

R/W glava stanje: q0

b

SI. 1.12 Početno stanje TS-a (Primjer 7.6.)

1 > takt; (1, q0) (0, L, q0)

(1,q0)-•((), L,q0)

(0, q0) (1,N, qf)

Rezultat izvođenja programa prikazanje na slici 1.13.

s -

2. takt

3. takt

4. takt

1 0 0 0 0 •5 -S

1

Z K

R/W glava stanje: qf

SI. 1.13 Rezultat izvođenja programa (Primjer 1.6.)

Ovaj primjer inkrementiranja binarnog broja posebno je zanimljiv jer ćemo ga razmotriti i za von Neumanov računski model, odnosno za von Neumannov model računala te ih usporediti.

1.3.5. k-TA KONFIGURACIJA TS-A

Tijekom izvođenja programa kažemo da TS prelazi iz konfiguracije u konfiguraciju, gdje se konfiguracija promatra kao potpuni opis stanja stroja na početku nekog (npr. k-tog) takta.

k-ta konfiguracija Turingovog stroja sastoji se od slike vrpce s informacijom koja je zapisana na njoj na početku k-tog takta, pri čemu je prikazan i položaj R/W glave te označeno unu-tarnje stanje stroja (također na početku k-tog takta).

Page 25: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 17

Primjer 1.7.

Prikažimo 1.19. konfiguraciju TS za program (Primjer 1.5.) i početnu informaciju zapisanu na vrpci stroja: 1269.

1. konfiguracija (stanje stroja na početku 1. takta; (slika 1.14)):

8 -

1 b z s

R/W glava stanje: q0

SI. 1.14 Prva konfiguracija

9. konfiguracija (stanje stroja na početku 9. takta; (slika 1.15)): »

b b 1 2 6 0 b b b •s

R/W glava stanje: q2

SI. 1.15 Deveta konfiguracija

Uočavate da se k-ta konfiguracija, na žalost, ne može izravno odrediti, već je potrebno "odvrtiti" program tako da se odrede slijedno sve k'-konfiguracije, k' < k, počevši od 1. konfiguracije.

Uvođenjem koncepta k-konfig u racije možemo kazati da se program TS-a izvodi tako da stroj, započevši od 1. konfiguracije, tijekom napredovanja taktova prelazi iz konfiguracije u konfiguraciju u skladu s funkcionalnom shemom stroja.

Način izvođenja programa i konačni ishod (rezultat) za TS možemo klasificirati u dva glavna slučaja.

Pretpostavimo daje početna informacija zapisana na vrpci i označimo je sa JL

1. Slučaj: Nakon konačnog broja taktova stroj se zaustavlja (dostiže unutarnje stanje qf) i pritom je na vrpci zapisana informacija

Kažemo: Stroj je primjenjiv za početnu informaciju prerađuje je u informaciju ili rezultat (B.

2. Slučaj:

Stroj nikad ne staje (ne dostiže unutarnje stanje qf).

Kažemo: Stroj je neprimjenjiv za početnu informaciju Ji .

Analogiju s ova dva slučaja možemo naći i za izvođenje programa računalom. Naime, ako je program ispravno napisan, on će obraditi ulazne podatke, pohraniti i prikazati rezul-tat obrade te se "vratiti" pod upravljanje operacijskog sustava računala. No ako je slučaj-

Page 26: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

18 1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

no ugrađena neka pogreška (npr. beskonačna programska petlja), program neće završiti i preostaje nam da tzv. "mekim"rešetom (npr. pritiskom na tipke Ctrl - alt-del) iii sklopovskim rešetom (npr. pritiskom na crveni ili crni gumb označen kao RESET) nasilno prekinemo njegovo izvođenje.

Navedimo neke bitne značajke Turinovog stroja: 1. TS je apstraktni izvršitelj, 2. rad stroja odvija se u taktovima - diskretnim vremenskim trenucima, 3. stroj ima neograničenu vanjsku memoriju predočenu vrpcom podijeljenom na polja

i R/W glavu koja se tijekom jednog takta može 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 logičkom bloku L koji predstavlja realizaciju logičke

funkcije stroja 6, 4. ovisno o početnoj informaciji J l programa zapisanog u funkcionalnoj shemi stroja

moguća su dva slučaja izvođenja, i to kada je stroj primjenjiv za početnu informaciju kada je stroj neprimjenjiv za početnu informaciju JL

1.3.6. VONNEUMANNOV MODEL

U ovom ćemo se potpoglavlju osvrnuti samo na osnovne značajke von Neumannovog ra-čunskog modela jer ćemo računalu koje se temelji na tom modelu namijeniti posebno poglavlje.

Temeljni element koji sudjeluje u računanju, odnosno predstavlja objekt obrade u von Neumannovom računskom modelu je podatak predočen pozicijskim brojevnim sustavom (obično binarnim sustavom). Podacima su dodijeljena imena i promatraju se kao varijable.

Operacije se izvode nad podacima. Svakom tipu podataka pridružen je skup operacija.

Von Neumannov model računanja rabi za opis problema slijed instrukcija (koje čine pro-gram) i koje se slijedno (sekvencijalno) izvršavaju i na taj način ulazne podatke pretvara-ju (transformiraju) u traženi rezultat. Izvršna semantika, odnosno pravilo koje propisuje kako se izvode instrukcije temelji se na semantici prijelaza stanja koja određuje za svaku instrukciju promjenu stanja modela. Način prijenosa upravljanja s instrukcije na instrukciju obavlja se na temelju upravljačkog toka. Tokovi podataka i upravljački tokovi odvojeni su.

1.4. ARHITEKTURA, ORGANIZACIJA I GRAĐA RAČUNARSKOG SUSTAVA

1.4.1. DEFINICIJA ARHITEKTURE RAČUNARSKOG SUSTAVA

Izraz arhitektura računala (engl. computer architecture) pojavio se šezdesetih godina proš-log stoljeća u jednoj od vodećih svjetskih tvrtki na području IT (informacijske tehnologi-je), IBM-u (International Business Machines). Upotrebljavao se za opisivanje programskog modela računala iz serije IBM 360 na razini asemblera (engl. assembly language), tj. zbirnog

Page 27: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 19

jezika koji je vrlo blizak strojnom jeziku. Strojni jezik (engl. machine language) sastoji se od instrukcija koje su razumljive sklopovlju računala i koje su kodirane sljedovima 0 i 1. Slijed takvih instrukcija predstavlja program u strojnom jeziku kojim se korak-po-korak specifici-ra postupak računanja. Zbirni jezik (ili asemblerski jezik) je jezik kojim se strojne instrukcije predočavaju obično dvo- ili troslovčanim oznakama, koje se nazivaju mnemonici, te je time omogućen prikaz programa za ljude u čitljivijem obliku. Instrukcije u zbirnom jeziku mo-raju se prevesti u instrukcije strojnog jezika. Prevođenje je jedan-naprema-jedan, tj. jednoj instrukciji u zbirnom jeziku odgovara jedna instrukcija strojnog jezika. Prevodilac za zbirni jezik obično se naziva asembier, dakle isto kao i zbirni jezik, što može zbunjivati čitatelja.

Primjer 1.8.

Instrukcija kojom se zbrajaju dva broja bit će u zbirnom jeziku predočena addr3,r2,rl

gdje mnemonik add specificira operaciju zbrajanja (troslovčana oznaka nas asocira na zbrajanje; add u engleskom znači zbroji), a rl i r2 određuju dva izvora podataka (registre), a odredište rezultata određeno je kao registar r3.

Ova će se instrukcija prevesti, na primjer, u strojnu instrukciju oblika: 00100000110001000001000000000000

U ovom je slučaju strojna instrukcija niz od 32 bita.

Dva su računala imala istu arhitekturu ako su imala jednak skup strojnih instrukcija. Na ovaj način opisana arhitektura računala obično se označava kao ISA (Instruction Set Architecture) i sadržava opise elemenata kao što su skup strojnih instrukcija, tipovi podataka koji su izravno podržani sklopovljem procesora, načini adresiranja te registri "vidljivi" programeru na razini instrukcija u zbirnom jeziku.

S vremenom se pojam arhitektura računala proširio tako da se ona nešto općenitije može definirati kao slika računarskog sustava kojom se sustav predočava programeru u stroj-nom jeziku, ali i programeru koji piše prevodioce (engl. compiler) za više programske jezike kojim se naredbe u višim programskim jezicima prevode u strojne instrukcije. Odnosno, program napisan u višem 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 računala podrazumijevaju algoritme koji se rabe u osnovnim funkcijskim jedinicama računarskog sustava (upravljačka jedinica, aritmetičko-logička jedinica, ulazno-izlazna jedinica, memorija) bez obzira jesu li algoritmi ostvareni sklopovljem ili programima.

E. C. Joseph arhitekturu računala promatra funkcionalno usmjerenom, poput arhitekture u modernom građevinarstvu. On definira arhitekturu računarskog sustava kao način uređenja strukture i organizacije sustava nizom postupaka koji su nužni za ostvarenje ciljeva obliko-vanja, a to su povećanje:propusnosti (engl. throughput), odnosno povećanje procesne moći ili performanse sustava, prilagodljivosti (engl. flexibility) - mogućnost uporabe sustava na različitim područjima ljudske djelatnosti, pouzdanosti (engl. reliability) - što je moguće veći vremenski razmak između dva ispada iz rada uslijed sklopovske ili programske pogreške i raspoloživosti (engl. availability) - što dulje vrijeme u kojem je sustav raspoloživ korisniku (vrijeme u kojem računarski sustav ispravno djeluje, a ne nalazi se u postupku ispitivanja ili redovitog održavanja). Jedan od vrlo važnih ciljeva arhitekture računala, posebno s gle-

Page 28: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

20 1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

dišta proizvođača računarskih sustava Jest i postizanje stoje moguće niže cijene sustava. Točnije, postizanje stoje moguće većeg omjera između performanse računarskog sustava i njegove cijene. Naime, računarski sustav sa što većim omjerom performansa/cijena je kon-kurentniji na tržištu i privlačniji potencijalnom kupcu, a time proizvođaču osigurava profit i sredstva koja ulaže u razvoj novih proizvoda. U posljednje se vrijeme spominje još jedan od ciljeva arhitekture računala, a to je ekološko zbrinjavanje računalnog otpada, odnosno izbor materijala za izgradnju računala koji je ekološki razgradljiv ili se može reciklirati.

Ostvarivanje svih ciljeva - od povećanja propusnosti, što niže cijene računarskog sustava pa sve do ekološkog zbrinjavanja računalnog otpada - postiže se zahvatima na trima sa-stavnim područjima arhitekture: sklopovskoj opremi (engl. hardware), programskoj opremi (engl. software) i na području koje se bavi problemom odnosa čovjeka i računala te načini-ma uporabe računala (engl. humanware).

Arhitektura računarskog sustava može se promatrati kao distribucija funkcija po zadanim razinama višeslojnog modela, gdje svaka razina predstavlja određenu apstraktnu predodž-bu računala (slika 1.16).

O namjenski sustav

© jezični procesori (prevodioci)

© upravljanje logičkim resursima

O upravljanje fizičkim resursima

TO E £ Q. O TO J*. E 03 U) O

središnja procesna jedinica (izvršavanje programa)

© ulazno-izlazni sustav

© upravljački sklopovi

© komunikacijski putovi i uređaji

© upravljački sklopovi

© memorija

SI. 1.16 Arhitektura računarskog kao distribucija funkcija u višeslojnom modelu

Page 29: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 21

Prva, najviša razina naziva se arhitektura sustava i predstavlja sliku sustava s motrišta ko-risnika koji preko namjenskog sustava (slika 1.16) koristi računalo. Namjenski sustav čine namjenski programi koje obično isporučuje proizvođač zajedno s računalom ili programi koji se mogu nabaviti od nezavisnih isporučitelja ("programskih kuća"). Tipični namjenski programi jesu oni za pretraživanje i sortiranje podataka, pretraživanje teksta, programi ko-jima se rješavaju problemi s područja matematike, tehnike i poslovanja itd. Na nešto nižoj razini apstrakcije računalo se korisniku predstavlja preko viših programskih jezika. U tom se slučaju komunikacija, odnosno interakcija između korisnika (programera) i računala ostva-ruje pomoću jezičnih procesora koji mogu podržavati različite vrste jezika (viši programski jezici kao što su C, C++, Pascal, FORTRAN, Basic, Logo i si., upravljački jezici, jezici za obliko-vanje i rukovanje bazama podataka).

Razine 1.-4. (slika 1.16) odnose se na funkcije koje su (obično) ostvarene programski s tim da su jezični procesori, upravljanje logičkim resursima i upravljanje fizičkim resursima razi-ne koje odgovaraju funkcijama operacijskog sustava računala. Upravljanje logičkim resursi-ma obuhvaća funkcije kao što su upravljanje virtualnom memorijom, upravljanje bazama podataka, upravljanje postupcima obrade u mrežama računala, dok upravljanje fizičkim resursima podrazumijeva funkcije rukovanja memorijom (glavnom ili radnom, sekundar-nom), upravljanje procesorom (njegovo dodjeljivanje, odnosno dodjeljivanje vremena procesora različitim programima) i upravljanje drugim uređajima računarskog sustava.

Razine 5.-10. odnose se na funkcije koje su ostvarene sklopovski. Razina 5. koja se odno-si na funkciju izvršavanja programa obično se naziva arhitektura procesora ili arhitektura središnje procesne jedinice; dok se razine 6. - 9. odnose na funkcije koje se klasificiraju u arhitekturu ulazno-izlaznog sustava i računalnih mreža. Funkcije u razinama 8. i 10. odnose se na arhitekturu memorijskog sustava.

Na slici 1.16 možemo opaziti crtkane vertikalne linije u razinama 5. - 8., koje odgovara-ju funkcijama dodijeljenim sklopovskoj opremi. Crtkane linije određuju funkcije koje su zaista realizirane sklopovljem i one koje su ostvarene "programski" odnosno mikroprogra-mom . Naime, na području arhitekture računala može se govoriti o tzv. dualizmu sklopov-ske i programske opreme (kao što se u modernoj fizici govori o dualizmu mase i energije). Pojednostavljeno, dualizam sklopovske i programske opreme očituje se u tome da se skoro sve što je realizirano u sklopovlju može ostvariti i programski, i obratno. Na primjer, upravljačka jedinica procesora može se realizirati sklopovski, ali i programski (mikropro-gramom), prevodioci za više programske jezike obično su programski izvedeni, ali postoje procesori koji imaju sklopovski ostvarene prevodioce (procesori izravno izvršne arhitektu-re; engl. direct-execution architecture).

Definiciju arhitekture računarskog sustava temeljit ćemo na hijerarhijskom modelu sustava koji je prikazan na slici 1.17. Najnižu razinu, predočenu jezgrom prstenaste strukture, čini sklopovlje, odnosno sklopovska oprema ili hardver. Općenito, pod tim se razumijeva sve materijalno od čega je računalo sastavljeno: svi mehanički dijelovi, električki i elektronički dijelovi. U užem smislu, pod sklopovskom ćemo opremom podrazumijevati elektroničke sastavne dijelove: sklopove realizirane u tehnologiji visokog (LSI - Large Scale Integration) i vrlo visokog stupnja integracije (VLSI - Very Large Scale lntegration).Je tehnologije omogu-ćuju izvedbu vrlo složenih sklopova s nekoliko stotina tisuća ili stotina milijuna tranzistora na čipu (engl. chip) - komadiću silicija nešto većem od poštanske marke. Naglasimo da je ova najniža razina zadužena za izvođenje programa, bez obzira jesu li oni napisani u višem programskom jeziku ili zbirnom jeziku (asembleru).

Page 30: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

22 1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

Sljedeću razinu u modelu čini jezgra operacijskog sustava. Zadatak je jezgre operacijskog sustava da rukovodi i dodjeljuje osnovne resurse računala (procesor, odnosno vrijeme procesora, memoriju, ulazno-izlazne uređaje, sistemske programe i datoteke) na temelju potreba zadataka, procesa i dretvi (engl. thread) različitih (korisničkih) programa koji se istodobno izvršavaju u računarskom sustavu.

Sljedeću višu razinu modela čine preostali dijelovi operacijskog sustava kao što su prevo-dioci za različite više programske jezike (C, C++, Pascal, FORTRAN, Basic, Prolog, Lisp,...), in-terpreteri (engl. interpreter), punioci (engl. foader), poveznici (engl. linker), uređivači teksta (editori; engl. editor), programi za otkrivanje pogrešaka (engl. debugger) i već spomenuti namjenski programi.

interpreter je program koji analizira naredbu po naredbu programa i za razliku od prevodi-oca, izvršava je umjesto da generira objektni program koji će se kasnije izvršiti.

Punilac jest uslužni program kojim se izvršljivi program tj. objektni program smješta u glav-nu memoriju i time biva spreman za izvođenje.

Povez/7/Tcje uslužni program za povezivanje kojim se različiti prevedeni programi ili pro-gramski moduli povezuju u oblik pogodan za izvršavanje.

SI. 1.17 Hijerarhijski model računarskog sustava

Page 31: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 23

Vrlo često se funkcije punioca i poveznika objedinjuju u uslužni program koji se naziva povezni punilac (engl. linking loader).

Uređivač teksta, odnosno editor je također uslužni program koji se koristi za unos i modifi-kaciju podataka u tekstualnom obliku. Takvi podaci mogu biti naredbe u višem program-skom jeziku ili pak tekst nekog izvješća ili knjige napisane u prirodnom jeziku.

Najvišu razinu u modelu računala čine ljudi koji su korisnici računala. Oni svoje zadatke prosljeđuju, putem namjenskih programa ili programa napisanim (obično) u višim pro-gramskim jezicima, kroz niže razine modela sklopovlju koje uz sudjelovanje operacijskog sustava izvršava te zadatke.

Potrebno je napomenuti da je dokumentacija (korisnička i servisna) sastavni dio svake od razina u hijerarhijskom modelu arhitekture.

U skladu s predloženim hijerarhijskim modelom računarskog sustava i opisanim različitim pristupima arhitekturi možemo ponuditi sljedeću dovoljno općenitu definiciju arhitekture.

Arhitektura računarskog sustava je dio računarske znanosti koji se odnosi na oblikova-nje računarskih sustava radi ostvarivanja osnovnih ciljeva kao što su veća performansa, prilagodljivost, pouzdanost i raspoloživost uz što je moguće nižu cijenu, odnosno, što je moguće veći omjer performansa/cijena. To se postiže 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 susrećemo i s izrazom građa i organizacija računala (engl. computer organizati-on). Pod tim se pojmovima podrazumijevaju podrobni opisi pojedinih sastavnica računala (aritmetička jedinica, logička jedinica, upravljačka jedinica, memorijska jedinica, ulazno-izlazne jedinice, sabirnice) i konfiguracija koje te sastavnice oblikuju. Organizacija obuhva-ća i opise njihova povezivanja te načine međudjelovanja.

U kontekstu organizacije računala spominje se i realizacija pod čime se podrazumijevaju detalji koji se odnose na sklopovske strukture i osnovne sklopovske građevne sastavnice (komponente) u tehnologiji visokog stupnja integracije koje se rabe u konstrukciji raču-narskog sustava.

1.5 KLASIFIKACIJA ARHITEKTURE RAČUNARSKOG SUSTAVA Postojanje različitih računskih modela i različitih definicija, pristupa te poimanja arhitek-ture računala uvjetovalo je i postojanje različitih pokušaja njezine klasifikacije. Tako, na primjer, P. C. Treleaven predlaže klasifikaciju arhitekture računala na temelju upravljanja slijedom izvršavanja u osnovnim računskim modelima:

i) arhitektura računala s upravljačkim tokom, ii) arhitektura računala upravljana tokom podataka, iii) arhitektura računala upravljana zahtjevom.

Računala koja se svrstavaju u i) su računala koja se temelje na konvencionalnom von Neumannovom modelu i njegovim izvedenicama, dok su računala iz ii) i iii) takve arhitek-ture koja se korjenito od njih razlikuju.

Page 32: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

24 1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

SI. 1.18 Klasifikacija arhitekture računala na temelju odnosa viših programskih jezika i računala

Budući da se na najvišim razinama apstrakcije računarski sustav predočava korisniku kao stroj koji izvršava programe u višim programskim jezicima, G. J. Mayers predlaže klasifika-ciju na temelju odnosa viših programskih jezika i računala (slika 1.18). Ona je predočena sljedećim putovima koji povezuju programe napisane u višim programskim jezicima i stroj:

i) Put 0 - arhitektura s tradicionalnim pristupom: postupkom prevođenja, uporabom prevodioca, programi napisani u višem programskom jeziku pretvaraju se u progra-me u strojnom jeziku niske razine (engl. low-level machine language);

ii) Put 1- arhitektura koja premošćuje jaz između viših programskih jezika i stroja tako da se programi napisani u višem programskom prevode u programe u strojnom jezi-ku više razine (engl. higher-level machine language). Osnovna razlika između strojnog jezika niske razine i strojnog jezika visoke razine je u tome što potonji ima strojne instrukcije koje su bliske naredbama u višem programskom jeziku i stroj sklopovski podržava operacije koje su njima određene. Arhitektura s tim značajkama naziva se jezično usmjerena arhitektura (engl. language directed architecture);

iii) Put 2 - arhitektura računala koja omogućuje uporabu višeg programskog jezika kao zbirnog jezika (engl. assembly language) i prevođenje u odnosu jedan naprema jedan, tj. svakoj naredbi u višem programskom jeziku odgovara jedna instrukcija u strojnom jeziku. Takva se arhitektura naziva arhitektura visoke jezične razine (engl. high-level language architecture);

Page 33: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 25

iv) Put 3 - arhitektura omogućuje izravno izvršavanje programa napisanog u višem pro-gramskom jeziku, i to bez prevođenja. Pojednostavljeno, to znaći daje svaka naredba u višem programskom jeziku izravno podržana sklopovljem. Takva se arhitektura na-ziva izravno izvršna arhitektura (engl. direct-execution architecture).

Arhitektura računala može se klasificirati i s obzirom na promjenjivost strukture računala, i to na:

i) statičku arhitekturu u kojoj nisu moguće programski upravljane promjene konfigu-racije računala,

ii) rekonfigurabilnu arhitekturu u kojoj su pod programskim upravljanjem dopuštene promjene veza između različitih funkcijskih jedinica računala (npr. promjena veza između procesora i memorijskih modula),

iii) dinamičku arhitekturu koja omogućuje potpunu promjenjivost sustava pod pro-gramskim upravljanjem. Na primjer, 64-bitno računalo se po potrebi rekonfigurira u jedno 32-bitno računalo i dva 16-bitna računala.

1.5.1. FLYNNOVA KLASIFIKACIJA

U uvodnom smo dijelu, razmatrajući obradu podataka naveli podatke i algoritam kao dvije od tri osnovne sastavnice obrade. Algoritam se stroju predočava programom, a njegovo je izvršavanje definirano slijedom instrukcija. Na određenoj razini apstrakcije, dinamički promatrano, tijekom izvođenja programa možemo govoriti o toku podataka (D5) i instruk-cijskom toku (iS) koji se uspostavljaju između funkcijskih jedinica stroja. Upravo su tok po-dataka i instrukcijski tok poslužili M. J. Flynnu za jednu od opće prihvaćenih klasifikacija arhitekture računala. Tipovi arhitekture prema Flynnovoj klasifikaciji mogu se predočiti u dvodimenzionalnom prostoru koji je određen brojem tokova podataka i brojem instrukcij-skih tokova (slika 1.19).

tok podataka

SIMD MIMD

SISD MISD

1 n instrukcijski tok

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

Na slici 1.19 uočavamo četiri točke označene sa SISD, SIMD, MIMD i MISD - one označavaju četiri osnovna tipa arhitekture:

Page 34: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

26 1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

i) SISD (Single Instruction Stream Single Data Stream) - računalo s jednostrukim in-strukcijskim tokom i jednostrukim tokom podataka. Arhitektura SISD predstavlja arhitekturu sekvencijalnog računala temeljenog na von Neumannovom računskom modelu;

i i) SIMD (Single Instruction Stream Multiple Data Stream) - računalo s jednostrukim in-strukcijskim tokom i višestrukim tokom podataka. U ovu se kategoriju svrstavaju pa-ralelna računala (nazivaju se i matrična računala) koja se obično sastoje od velikog broja procesora ili procesnih elemenata koji istodobno izvršavaju istu instrukciju na različitim podacima;

i i i) MIMD (Multiple Instruction Stream Multiple Data Stream) - računalo s višestrukim in-strukcijskim tokom i višestrukim tokom podataka. Multiprocesorski sustavi, odnosno paralelni računarski sustavi s dva i više procesora približno jednakih performansi, pri čemu svaki od njih ima pristup zajedničkoj memorijskoj jedinici i svi dijele ulazno-izlazne jedinice, a pritom djeluju pod jednim operacijskim sustavom, predstavljaju ovaj tip arhitekture;

iv) MISD (Multiple Instruction Stream Single Data Stream) - računalo s jednostrukim in- , strukcijskim tokom i višestrukim tokom podataka.Teorijski strogo gledano, računala ! ovog tipa arhitekture ne mogu se fizički realizirati. Nemoguće je, naime, ostvariti da se istodobno više različitih instrukcija izvršava na istim podacima (slično kao što u fizici makro svijeta nije moguće da se dva različita tijela istodobno nalaze na istom mjestu). No dogovorno u ovu kategoriju uvrštavamo protočna (engl. pipeline) raču-nala i računarske sustave koji se temelje na sistoličkim poljima.

Prikažimo shematski pojedine tipove arhitekture pomoću veza među memorije (MU - me-mory unit), upravljačkih 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 upravljačke jedinice (CU) gdje se dekodiraju. Dekodirani instrukcijski tok i tok podataka "susreću" se u jedinici za obradu PU u kojoj se tok podataka preoblikuje. Uočavamo 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 upravljačku jedinicu (CU) gdje se dekodira. Upravljačka je-dinica dekodirani instrukcijski tok upućuje na n identičnih jedinica za obradu (PE). (Opaska: obično računalo SIMD kategorije ima vrlo veliki broj jedinica za obradu koje su relativno jednostavne pa se vrlo često nazivaju procesnim elementima - PE).

Page 35: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 27

A D S , LM,

D S , ^ W LM, ^ w A

PE2 D S 2 LM2

D S 2 PE2 ^ • W LM2 ^ W

• •

PE n

DS LM n

DS 4 n fc PE n ^ p LM n

skupovi podataka prema/od računalu

domaćinu

J

SL1.21 Shematski prikaz SIMD kategorije arhitekture

U računalu SIMD kategorije arhitekture imamo n različitih tokova podataka DS17 DS2,..., DSn od kojih svaki izvire iz svoje privatne ili lokalne memorije (LM., i = 1 , 2 , n ) . Identičan instrukcijski tok IS i n različitih tokova podataka susreću se u jedinicama za obradu (PE., i = 1,2,..., n). I ovdje uočavamo daje svaki tok podataka dvosmjeran - od LM. do PE. i obratno.

Računalo SIMD kategorije arhitekture jest paralelno računalo - istodobno se obrađuju po-daci iz n tokova podataka. Ono se obično upotrebljava kao posebno računalo na području obrade gdje se zahtijeva rukovanje velikim grupama uređenih i istodobno raspoloživih podataka kao što su vektori, matrice, višedimenzionalna polja (npr. obrada vremenskih modela, obrada satelitskih snimaka) te se obično koriste uz računalo konvencionalne arhi-tekture koje ima ulogu računala domačina (engl. host computer). Računalo domaćin šalje podatke u lokalne memorije LM., i = 1,2,..., n i specificira koji zadatak treba računalo SIMD arhitekture obaviti. Napomenimo da procesni elementi PE., i = 1, 2,..., n mogu biti orga-nizirani kao jednodimenzionalna i višedimenzionalna polja s različitim uzorcima lokalnih veza između procesnih elemenata (npr. veza sa četiri ili osam bližih susjeda u dvodimenzi-onalnom polju, veza s bližim /c-kubnim susjedima, veza potpunog miješanja (engl. perfect shuffle) i si.).

Slika 1.22 prikazuje računalo tipa arhitekture MIMD. Ono ima memoriju koju međusobno dijeli n upravljačkih jedinica (CU., i = 1, 2,..., n) i n jedinica za obradu (PU., i = 1, 2 , n ) . Iz međusobno dijeljene memorije MU istodobno izvire n različitih instrukcijskih tokova i n različitih tokova podataka. Svi se oni susreću u n jedinica za obradu. Računala tipa MIMD su paralelna računala i obično se nazivaju multiprocesorski (računarski) sustavi.

Kako je dobiveno računalo paralelne arhitekture? Ako na trenutak djelomično prekrijemo sliku 1.22 tako da možemo vidjeti samo gornji dio slike koji prikazuje elemente CU1# PU1 i dio dijeljene memorije MU, tada vidimo da to nije ništa drugo negoli dio koji predstavlja SISD kategoriju arhitekture (slika 1.20). Pojednostavljeno, možemo protumačiti da se MIMD kategorija arhitekture dobiva uvišestručenjem struktura koje odgovaraju SISD arhitekturi.

Na slici 1.23 shematski je predočena arhitektura računala MISD. Kao što smo već napisali, strogo teorijski gledano računalo tipa MISD ne može se fizički realizirati, ali u tu kategoriju

Page 36: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

28 1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

arhitekture ipak svrstavamo protočna računala. Istaknimo, već na ovom mjestu, da je kon-cept protočnosti iznimno važan i da se nezaobilazno pojavljuje u arhitekturi suvremenih računala te da će se posebno poglavlje u ovoj knjizi posvetiti upravo njemu.

SI. 1.22 Shematski prikaz MIMD kategorije arhitekture

Na slici 1.23 vidimo da n različitih instrukcijskih tokova (IS., i = 1,2,..., n) izvire iz memorijske jedinice MU. Istodobno, iz memorije izvire samo jedan tok podataka DS.Tok podataka pro-tječe kroz jedinice za obradu (PU, i = 1,2,..., n) i u svakoj jedinici biva preoblikovan u skladu s dekodiranim instrukcijskim tokovima. I u ovom slučaju možemo ustvrditi da je riječ o paralelnoj arhitekturi u kojoj se istodobno izvršava n instrukcija najednom toku podataka.

Page 37: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 29

& 1.23 Shematski prikaz MISD kategorije arhitekture

Page 38: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 31

2. POGLAVLJE

VON NEUMANNOV MODEL RAČUNALA

2.1. UVOD Jedan od najznačajnijih članaka na području arhitekture računala "Uvodna rasprava o logičkom oblikovanju elektroničkog računskog uređaja" (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 po-jave izraza "arhitektura računala" Taj je članak imao dalekosežne posljedice i utjecao je na arhitekturu sljedećih četiriju generacija računala. Naravno, i prije 1946. postojala su ozbilj-na nastojanja u realizaciji stroja za računanje, odnosno računala. Njihov povijesni razvoj može se predočiti generacijama računala - od nulte generacije koja odgovara mehaničkim računalima 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 računala koja se temelji na konceptima umjetne inteligencije (engl. artificial intelligence), ali tehnološka podloga i tih računala je VLSI). Opišimo, ukratko po generacijama računala, samo jedan mali isječak iz burne povijesti razvoja strojeva za računanje, odnosno računala.

2.1.1. NULTA GENERACIJA - GENERACIJA MEHANIČKIH STROJEVA ZA RAČUNANJE (1644. - 1945.)

B. Pascal je u razdoblju između 1642. i 1644. godine izgradio stroj koji je mogao obavljati računske operacije zbrajanja i oduzimanja. Godine 1673. G. W. Leibniz oblikovao je meha-nički računski stroj koji je, uz zbrajanje i oduzimanje, mogao obavljati i računske operacije množenja i dijeljenja. Bio je to ekvivalent "džepnim kalkulatorima" sa četiri funkcije tri sto-ljeća kasnije.

C. Babbage je 1822. izgradio diferencijskistroj (engl. difference engine) koji se temeljio na ra-čunu konačnih diferencija. C. Babbage je, također, 1834. započeo rad na analitičkom stroju (engl. analytical engine) koji je obavljao četiri osnovne računske operacije i korjenovanje te je trebao biti računski stroj opće namjene. On je zamislio stroj koji se sastoji od četiriju jedi-nica: memorije (ili spremnika), jedinice za računanje (izvorno nazvane mili - što na engle-skom znači pogon ili mlin), ulazne jedinice (čitača bušenih kartica) i izlazne jedinice (pisača i bušaća kartica). Analitički je stroj bio programirljiv - čitao je instrukcije s bušenih karti-ca i izvršavao ih. Iz memorije je dohvaćao dva broja predočena u dekadskom brojevnom sustavu,obavljaooperaciju u jedinici za računanjete pohranjivao rezultat natrag u memoriju.

Page 39: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

32 2. POGLAVLJE: VON NEUMANNOV MODEL RAČUNALA

Slijed bušenih kartica određivao je program koji se mogao upotrijebiti za više skupova podataka. Na žalost, analitički stroj nije bio nikad dovršen zbog problema s mehaničkom izradom koja je zahtijevala tisuće i tisuće vrlo precizno izrađenih zupčanika i osovina što je u 19. stoljeću bilo tehnološki neizvodivo.

Računski stroj koji se može promatrati kao prekretnica u tehnološkom smislu sa potpuno mehaničkih strojeva na elektromehaničke računske strojeve bio je stroj nazvan Z1, nje-mačkog istraživača K. Zusea (1934.-1936.) koji se temeljio na elektromehaničkim relejima.

H. Aiken je 1944. u Harvardu, Sjedinjene Američke Države, izgradio elektromehaničko raču-nalo Mark I koje se smatra prvim američkim računalom opće namjene. Ono je pohranjivalo 72 riječi od kojih je svaka bila predstavljena s 23 dekadske znamenke, a instrukcije su se izvršavale za 6 sekundi.

2.1.2. PRVA GENERACIJA - ELEKTRONIČKA RAČUNALA S ELEKTRONSKIM CIJEVIMA (1945. - 1955.)

Tijekom ratne 1943. za razbijanje šifriranih poruka, odnosno dekriptiranje njemačkih poruka u Engleskoj je izgrađeno računalo COLOSSUS koje se smatra prvim elektroničkim računalom. Ono je imalo oko dvije tisuće elektronskih cijevi, a u razvoju računala sudjelovao je A.Turing.

Iste su godine J. Mauchley i J. P. Eckert započeli s izgradnjom računala ENIAC (Electronic Numerical Integrator And Computer). Ono je imalo oko 18000 elektronskih cijevi i 1500 re-leja, težilo je oko 30 tona, a za žarenje elektronskih cijevi, anodne izvore i ventilatore za hlađenje bila mu je potrebna snaga od 140 kW! Računalo je bilo završeno 1946. Mnogi smatraju da je povijest suvremenih računala započela upravo s ENIAC-om.

M.Wilkes je na Sveučilištu u Cambridgeu 1949. izgradio računalo EDSAC (Electronic Delay Storage Automatic Computer) koje se smatra prvim elektroničkim računalom s pohranjiva-njem 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 inače sudjelovao u projektu ENIAC, došao je u Institut za napredna istraživanja (Institute for Advanced Study) u Princeton, SAD, te započeo projekt izgradnje računala I AS. Računalo I AS završeno je 1952. i svojim konceptima predstavlja osnovne temelje današnjih računala. Osnovni model ra-čunala, opisan u članku koji smo spomenuli na početku ovog poglavlja, poznat je kao von Neumannov model računala. Skoro istodobno dok je von Neumann radio na oblikovanju IAS računala, na MIT-u su razvijali 16-bitno računalo Whirlwind I koje je prvo računalo za upravljanje u stvarnom vremenu (engl. real-time control). U sklopu Whirlwind projekta izu-mljena je memorija s magnetskim jezgricama (engl. magnetic core memory).

Godine 1953. tada mala tvrtka IBM započinje s proizvodnjom računala IBM 701.

2.1.3. DRUGA GENERACIJA RAČUNALA - TRANZISTOR KAO GRAĐEVNA KOMPONENTA (1955. - 1965.)

Poluvodičku elektroničku komponentu tranzistor izumili su 1948. trojica istraživača J. Bardeen, W. Brattain i W. Shockley. Tranzistor možemo pojednostavljeno predočiti kao sklopku s dva stanja (isključeno/uključeno; engl. off/ori) koja je električki upravljana.

Page 40: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 33

r Izum tranzistora predstavljao je revoluciju na području računarske tehnologije i u kasnim je pedesetim godinama u potpunosti potisnuo elektronske cijevi. Prvo računalo izgrađeno

B na temelju tranzistora bilo je TX-0 (Transistorized experimental computer 0) (u MIT Lincoln Laboratoryju). Godine 1960. tvrtka DEC (Digital Equipment Corporation) na tržište plasira prvo malo računalo (miniračunalo) PDP-1 čija je cijena bila oko 120 tisuća dolara. Godine 1965. DEC proizvodi 12-bitno miniračunalo PDP-8 čija je cijena bila samo 16 tisuća dolara,

j Tvrtka DEC prodala je preko 50 tisuća računala PDP-8. Tvrtka IBM je 1961. proizvela vrlo popularno malo poslovno računalo IBM 1401, a odmah sljedeće godine IBM 7094 koje

, je bilo jedno od vodećih računala za uporabu na znanstvenom području (engl. scientific computing).

Tvrka CDC (Control Data Corporation) je 1964. izgradila prvo superračunaio CDC 6600 za znanstvenu primjenu. Vodeći istraživač na projektu bio je Seymour Cray koji će kasnije os-novati svoju tvrtku i graditi superračunala Cray I, I I , . . . , Cray-XMP itd. Općenito, pod su-perračunalom se podrazumijeva računarski sustav koji svojim računskim sposobnostima, odnosno performansom, udovoljava zahtjevima obrade na području vodećih istraživanja u znanosti i inženjerstvu.

2.1.4. TREĆA GENERACIJA - INTEGRIRANI SKLOPOVI (1965. - 1980.)

Izum postupka kojim se deseci tranzistora mogu integrirati na komadiću silicija i obliko-vati u integrirani sklop ili čip (R. Noyce, 1958.) najavio je još jednu prekretnicu u izgradnji računala. Zahvaljujući integriranim sklopovima bilo je moguće graditi manja, brža i jeftinija računala. U trećoj generaciji računala poluvodičke memorije zamjenjuju memorije s ma-gnetskim jezgricama, a brzina poluvodičkih memorija dopušta uporabu mikroprogrami-ranja u izvedbi upravljačkih jedinica. Nadalje, integrirani sklopovi zbog svoje niske cijene dopuštaju gradnju sustava s naglašenim stupnjem paralelnosti (uvišestručenje jedinica za obradu, izvedba protočnih instrukcijskih i aritmetičkih struktura) te višeprogramski rad (engl. multiprogramming) pri kojem se u memoriji računala istodobno nalazi više korisnič-kih programa, a pritom operacijski sustav omogućuje istodobno izvođenje dijelova poje-dinih programa).

Spomenimo neka računala i porodice računala iz treće generacije: IBM System/360 Model 30,40,50 i 65, UNIVAC 1100 te DEC-ove PDP-11 i VAX 11 porodice računala.

Prvo se vektorsko superračunaio Cray I pojavilo na tržištu 1974.

U drugoj polovini 1971. pojavljuje se na tržištu prvi 4-bitni mikroprocesor Intel 4004 koji je bio predviđen kao kalkulatorski čip. Prvi 8-bitni mikroprocesor opće namjene Intel 8008 pojavit će samo godinu dana kasnije. Godine 1974. pojavljuje se druga generacija 8-bitnih mikroprocesora čiji su tipični predstavnici Motorola 6800 i Intel 8080 te nagovještavaju revoluciju na području računala.

2.1.5. ČETVRTA GENERACIJA RAČUNALA - SKLOPOVI VRLO VISOKOG STUPNJA INTEGRACIJE (1980. - ?)

Zahvaljujući razvoju tehnologije vrlo visokog stupnja integracije VLSI (Very Large Scale Integration), koja omogućuje, uz nisku cijenu, realizaciju integriranih sklopova koji su po-četkom 80-ih imali desetke tisuća pa onda stotine tisuća, a danas stotine milijuna tranzi-

Page 41: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

34 2. POGLAVLJE: VON NEUMANNOV MODEL RAČUNALA

stora, računarski sustavi postaju dostupni vrlo širokom spektru korisnika i koriste se u svim sferama ljudske djelatnosti.

Povećanje broja tranzistora integriranih na čipu opisuje Mooreov zakon koji govori da se broj tranzistora na čipu udvostručuje svakih 18 - 24 mjeseca. Slika 2.1 ilustrira razvoj tehno-logije VLSI na primjeru dinamičke poluvodičke memorije (DRAM - Dinamic Random Access Memory). Na y-osi označen je kapacitet jednog memorijskog čipa izražen u K bitovima (Kb) (K = 1024, odnosno 210) a na x-osi razdoblje od 1976. do 2008. godine. Kapacitet DRAM-a približno se učetverostručivao svake tri godine, tako se, na primjer, kapacitet DRAM čipa sa 16 Kb (1977.) povećao na 1 Gb (G = 230) (2008.). (Opaska: u daljnjem tekstu s b označavat ćemo bit a s B bajt (osam bita).)

godina pojavljivanja

SI. 2.1 Povećanje kapaciteta DRAM čipa

Četvrtu generaciju računala označila je industrija osobnih računala. IBM-ova osobna raču-nala temeljena na Intelovom mikroprocesoru Intel 8088, koja su se pojavila na tržištu 1981., postala su najprodavanija računala u povijesti. Osim tvrtke IBM, pojavili su se proizvođači osobnih računala kao što su Commodore, Apple, Amiga i Atari koji su temeljili dizajn na tzv. non-IntelCPU, tj. mikroprocesorima drugih proizvođača.

Da bi se dobila predodžba o broju mikroprocesora koji se rabe u različitim računarskim sustavima - osobnim računalima, poslužiteljima (engl. server), radnim stanicama, ali i u ugrađenim računalnim sustavima - možemo 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 računala pa je u prosjeku svaki osmi stanovnik Zemlje imao osobno računalo.

Naglasimo još jednom, mikroprocesori se ne koriste samo kao građevne sastavnice raču-nala opće namjene, oni se rabe za izgradnju ugrađenih računalnih sustava koji se kao sa-stavnice ugrađuju u proizvode kao što su videoigre, kućanske naprave, laserski pisači, mo-bilni telefoni, automobili itd. Na primjer, od 54 milijuna isporučenih procesora MIPS 1998., samo je 1% korišten za računarske sustave opće namjene, dok je preostali dio korišten u ugrađenim računalnim sustavima. Četvrta generacija računala, zahvaljujući razvoju teh-nologije, ali i arhitekture računala, obilježena je procesorima vrlo velikih performansi, na primjer 64-bitni procesor Intel Xeon (2005.) ima za faktor 6500 veću performansu u odnosu na VAX 11/780 (1978.).

Page 42: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 35

Godine 1980. javlja se i novi pristup arhitekturi računala, nazvan RISC (Reduced Instruction Set Computer), koji se za razliku od tradicionalnog pristupa arhitekturi CISC (Complex Instruction Set Computer) temelji na jednostavnijoj, ali bržoj izvedbi procesora.

Navedimo neke od značajki procesora i računarskih sustava četvrte generacije: paralelizam na razini instrukcija - procesori koji izvršavaju istodobno veći broj instrukcija (superskalar-ni RISC i CISC procesori), višeprocesorski sustavi na čipu, odnosno višejezgreni procesori (engl. multicore microprocessor), višedretveni procesori (engl. muItithread processor), pove-ćani kapacitet priručne memorije (engl. cache memory), procesori za multimedijsku pri-mjenu temeljeni na vrlo dugim instrukcijskim riječima -VLIW (Very Long Instruction Word).

Razvoj tehnologije sklopovskih sastavnica snažno je utjecao na brzinu računala. 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 podržana sklopovljem, npr. operacija zbrajanja dvaju brojeva.

Tehnologija - sastavnica Godina Broj osnovnih operacija u

sekundi

elektromehanika - releji 1940. 10

elektronika - elektronske cijevi 1945. 103

elektronika - tranzistor 1950. IO4

mikroelektronika - sklopovi niskog stupnja integracije

1960. 105

mikroelektronika - sklopovi srednjeg stupnja integracije 1980. 106

mikroelektronika - sklopovi vrlo visokog stupnja integracije

2000. 109

: ra Z1. Broj osnovnih operacija u sekundi ovisno o tehnologiji

2.2. FUNKCIJSKE JEDINICE VON NEUMANNOVOG MODELA RAČUNALA Von Neumann, Burks i Goldstine u već spomenutom su članku iznijeli osnovne zahtjeve koji su poslužili kao ishodište za određivanje arhitekture računala:

i) računalo treba imati opću namjenu i potpuno automatsko izvođenje programa. Pod potpuno automatskim izvođenjem programa podrazumijevali su potpunu neovisnost računala o operateru od trenutka započinjanja izvođenja programa, tj. tijekom izvo-đenja programa ne zahtijevaju se intervencije operatera;

ii) računalo treba, osim podataka potrebnih za računanje (ulazne vrijednosti, granične vrijednosti, tablice funkcija), pohranjivati međurezultate i rezultate računanja;

iii) računalo treba imati i sposobnost pohranjivanja programa u obliku slijeda instrukcija.

Page 43: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

36 2. POGLAVLJE: VON NEUMANNOV MODEL RAČUNALA

Neke od izravnih posljedica ishodišnih zahtjeva jesu: • instrukcije su u računalu svedene na numerički kod, tako da se podaci i instrukcije

pohranjuju u jednakom obliku i na jednaki način u istoj jedinici. Ta se jedinica naziva memorija ili spremnik (engl. memory, storage), odnosno memorijska jedinica;

• budući da je računalo prvenstveno stroj za računanje, mora imati jedinicu koja obav-lja aritmetičke operacije. Ta se jedinica naziva aritmetička jedinica. No stroj treba izvo-diti i logičke operacije (logičko I, ILI, NE, ISKLJUČIVO ILI) koje trebaju biti podržane u jedinici za računanje pa je aritmetička jedinica nazvana aritmetičko-logička jedinica;

• računalo mora imati jedinicu koja tumači i razumije instrukcije svedene na numerički kod, a uz to upravlja slijedom izvršavanja instrukcija (osigurava potpuno automatsko izvođenje programa). Taj je zadatak povjeren upravljačkoj jedinici (engl. control unit);

• računalo treba komunicirati s vanjskim svijetom (korisnikom, procesom, drugim ra-čunalom). Jedinice koje omogućuju takvu komunikaciju nazivaju se ulazno-izlazne jedinice.

SI. 2.2 Model von Neumannovog računala

Page 44: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 37

Slika 2.2 prikazuje model von Neumannovog računala. Ono se sastoji od četiri osnovne funkcijske jedinice:

• aritmetičko-logičke, • upravljačke, • memorijske i • ulazno-izlazne jedinice.

2.2.1. UPRAVLJAČKI TOK, INSTRUKCIJSKI TOK I TOK PODATAKA U NEUMANNOVOM MODELU RAČUNALA

Funkcijske jedinice računala povezane su tokom podataka, instrukcijskim tokom i tokom upravljačkih signala. Većinu upravljačkih signala generira upravljačka jedinica na temelju tumačenja instrukcije. Na slici 2.2 debljom punom debljom linijom označen je tok podata-ka, instrukcijski tok označen je tanjom punom linijom, a crtkanom linijom tok upravljačkih signala.

Promotrimo tok podataka i instrukcijski tok. Vidimo da oba izviru iz memorijske jedinice jer su podaci i instrukcije pohranjeni u toj jedinici. Između memorijske jedinice i aritmetičko-logičke jedinice uspostavljenje dvosmjeran tok podataka: podaci (operandi) koji sudjeluju u aritmetičkim ili logičkim operacijama dohvaćaju se iz memorije, a nakon obavljene ope-racije podaci koji predstavljaju rezultat obrade pohranjuju se natrag u memorijsku jedini-cu. Potrebno je napomenuti da memorijska jedinica nema sposobnost obrade, odnosno ne može obavljati niti aritmetičke niti logičke operacije nad operandima. Uočavamo (slika 2.2) da nema izravnog toka podataka između memorijske jedinice i ulazno-izlazne jedini-ce. Izmjena podataka između memorijske jedinice i ulazno-izlazne jedinice (a time i veza s vanjskim svijetom) u von Neumannovom modelu računala ostvaruje se neizravno: poda-ci (rezultat obrade) iz memorijske jedinice upućeni ulazno-izlaznoj jedinici moraju proći kroz aritmetičko-logičku jedinicu. Jednako tako, podaci iz ulazno-izlazne jedinice (ulazni podaci) upućeni memoriji moraju proći kroz aritmetičko-logičku jedinicu. To je ujedno i ra-zlog postojanju dvosmjernog toka podataka između aritmetičko-logičke jedinice i ulazno-izlazne 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 određene strojnim instrukcijama. Vidimo da aritmetičko-logička jedini-ca nepotrebno sudjeluje u izmjeni podataka između memorijske i ulazno-izlazne jedinice. To ujedno znači da tijekom izmjene podataka između memorije i ulazno-izlazne jedinice ona ne može obavljati svoj osnovni zadatak - aritmetičke ili logičke operacije. Da bi se to izbjeglo, von Neumannov model računala modificiran je tako da je uspostavljen izravan tok podataka između memorijske i ulazno-izlazne jedinice (slika 2.3).

Page 45: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

38 2. POGLAVLJE: VON NEUMANNOV MODEL RAČUNALA

SI. 2.3 Model von Neumannovog računala s izravnim pristupom memoriji DMA

Izravna veza između memorijske i ulazno-izlazne jedinice naziva se izravan pristup memoriji (engl. DMA - Direct Memory Access). Prijenosom podataka na tom putu upravlja poseban DMA upravljački sklop pa je omogućen istodobni prijenos podataka i obrada u aritme-tičko-logičkoj jedinici. Tok podataka uspostavljenje i između ulazno-izlazne jedinice koja obično predstavlja sučelje (engl. interface) s ulazno-izlaznim (perifernim) uređajima (prika-j zna jedinica, zaslon, pisač, miš, tipkovnica i si.).

Instrukcijski tok usmjeren je od memorijske prema upravljačkoj jedinici. U skladu s isho-dišnim zahtjevima (instrukcije svedene na numerički kod i pohranjene u istoj memorijskaj jedinici kao i podaci) nema razlike u obliku prikaza podataka i instrukcija. Jedino usmjeren nost toka između memorijske jedinice i upravljačke jedinice određuje da se na tom sport nom putu nalaze instrukcije. Instrukcije, odnosno numerički kodirane instrukcije tumača se (de kod i raj u) u upravljačkoj jedinici i na temelju njihova dekodiranja upravljačka jedinica] generira sljedove upravljačkih signala kojima pobuđuje sklopove u aritmetičko-logičkaj jedinici, ali i operacije u ostalim funkcijskim jedinicama. Na primjer, ako je dekodirana irv] strukcija takva da određuje operaciju dohvata podatka iz memorijske jedinice, upravljačka] će jedinica generirati upravljački signal ČITAJ (engl. READ) i uputiti ga memorijskoj jedinicu

Page 46: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 39

Na temelju zadatka upravljačke jedinice očekujemo da svi upravljački signali izviru iz nje. No na slici vidimo da postoje i upravljački signali usmjereni prema upravljačkoj jedinici. Istina, u prvotnom von Neumannovom modelu tako usmjereni signali nisu postojali, ali vrlo brzo se pokazala potreba za njima jer se posebni upravljački signali, generirani od ulazno-izlazne jedinice, koriste za prekid izvođenja tekućeg programa, odnosno izvedbu prekidnog sustava (engl. interrupt system) kojim se ostvaruje jedan od osnovnih načina iz-mjena podataka između vanjskog svijeta i računala. Obično se signalne linije kojima se pre-nose ti upravljački signali nazivaju prekidne linije, a signali zahtjev za prekid (engl. Interrupt Request - IRQ).

Sa slika 2.2 i 2.3 uočavamo da su aritmetičko-logička i upravljačka jedinica prikazani u za-jedničkom okviru. Razlog tome je što se objedinjenje aritmetičko-logičke jedinice s naj-nužnijom memorijom (radnim registrima) i upravljačkom jedinicom naziva središnja (cen-tralna) procesna jedinica (engl. CPU - Central Processing Unit; Central Processor Unit) ili samo procesor.

(Opaska: kada procesoru pridružimo preostale funkcijske jedinice, periferne uređaje i od-govarajuću programsku opremu, govorimo o računalu, odnosno računarskom sustavu.)

X. 2. ARITMETIČKO-LOGIČKA JEDINICA

Aritmetičko-logička jedinica sastoji se od sklopova koji obavljaju aritmetičke i logičke ope-racije na podacima (ti se podaci nazivaju operandi) te registara za privremeno pohranjiva-nje operanada i rezultata.

Unatoč dugoj povijesnoj tradiciji uporabe dekadskog brojevnog sustava u računskim stro-jevima, i tome da je dekadski brojevni sustav čovjeku najprikladniji, von Neumann, Burks i Goldstine odlučili su se za osnovu digitalnog računala uzeti binarni brojevni sustav. Osim jednostavnije tehnološke izvedbe sklopova (očito je jednostavnije realizirati sklop s dva diskretna stanja (0 i 1) negoli sklop s deset diskretnih stanja ( 0 , 1 , 2 , 9 ) ) i ekonomičnijeg prikazivanja brojeva, razlog tome bio je i to što "računalo nije samo aritmetički računski stroj, već po svojoj prirodi treba biti i logički. Logički sustavi su sustavi koji barataju s dva stanja istinito - lažno, odnosno 0 ili 1".

2.1. Pokušajmo ocijeniti ekonomičnost brojevnog sustava koji će poslužiti kao podloga za izgradnju sklopova te naći optimalni brojevni sustav. Drugim riječima, zanima nas koju bazu brojevnog sustava trebamo izabrati da bi cijena sklopova za prikaz brojeva u zada-nom opsegu od 0 do N-1 bila najniža. Potpuno opravdano pretpostavljamo da će cijena sklopova biti proporcionalna broju potrebnih brojevnih mjesta i broju diskretnih stanja koje svaka znamenka na brojevnom mjestu može poprimiti:

c = k n B,

pri čemu je c cijena (npr. u $), k je pretvorbena konstanta koja omogućuje da se dobije ci-jena u pretpostavljenim novčanim jedinicama, nje broj potrebnih brojevnih mjesta i Bje baza brojevnog sustava, odnosno broj diskretnih stanja koje znamenka može poprimiti.

Pretpostavimo da želimo predočiti brojeve samo u opsegu od 0 do 999 u dekadskom brojevnom sustavu. Cijena sklopova iznosi:

c = k x 3 x 1 0 = 30k

Page 47: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

40 2. POGLAVLJE: VON NEUMANNOV MODEL RAČUNALA

gdje je 3 broj potrebnih mjesta, a 10 broj diskretnih stanja koje svaka znamenka može zauzeti.

Ako se pak odlučimo za binarni brojevni sustav (B = 2), tada cijena iznosi: c = kx 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) predočeno je s deset binarnih znamenki: 1111100111. Vidimo da je binarni brojevni sustav ekonomičniji - zahtijeva nižu cijenu izvedbe sklopova. Koji je brojevni sustav optimalan?

Za ishodište će nam poslužiti izraz za cijenu c = k x n x B

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 jednadžbu (2.1):

c = k (log N / log B) B

Tražimo vrijednost za B za koju će funkcija c postići svoj minimum:

dc

(2.1)

(2.2)

(2.3) (2.4)

(2.5)

- 0 dB

— = /c log A/ l°9B-BWB)\age dB log2 B

slijedi

dakle B = e.

log B - log e = 0,

Rezultat je pomalo čudan - baza optimalnog brojevnog sustava bi trebala biti e = 2.71828... (baza prirodnog logaritma ln)!

Budući da B treba biti cijeli broj, trebamo izabrati između broja 2 i 3. Zbog lakše tehnološ-ke izvedbe sklopova odlučujemo se za bazu B = 2 i smatramo je optimalnom.

Aritmetičko-logička jedinica von Neumannovog računala IAS imala je sklop za zbrajanje (zbrajalo) i sklop za posmak (engl. shifter) kojim se podatak posmiče ulijevo ili udesno za I jedno ili veći 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 "proširenje" akumulatora AC za potrebe pohrane rezultata operacija! množenja i dijeljenja. Naime, te operacije daju rezultat dvostruke duljine operanada (801 bitova) pa se 40 značajnijih bitova rezultata smješta u AC, a 40 manje značajnih bitova u MQ. Budući da je aritmetičko-logička jedinica računala IAS imala samo zbrajalo i sklop za

Page 48: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 41

posmak, operacija oduzimanja izvršavala se zbrajanjem umanjenika (minuenda) i potpu-nog komplementa (engl. two's complement) odbitnika (suptrahenda). Množenje i dijeljenje nije bilo izvedeno sklopovljem, već se izvršavalo pod programskim upravljanjem izvođe-njem uzastopnih operacija zbrajanja, odnosno oduzimanja i posmaka (podsjetimo se dua-lizma sklopovske i programske opreme; poglavlje 1.)

Operandi su u IAS računalu imali duljinu od 40 bita: 39 bitova bilo je namijenjeno za zna-menke, a jedan bit za predznak. Zašto je izabrana duljina operanda od 40 bita? Pozornost von Neumanna i ostalih autora bila je usmjerena na oblikovanje računala koje će rješavati numeričke zadatke (npr. numeričko rješavanje parcijalnih diferencijalnih jednadžbi). Na te-melju analize tadašnjih matematičkih problema (1946.) i stvarnih tehnoloških ograničenja došli su do potrebnog kapaciteta radne memorije i duljine riječi, odnosno duljine ope-randa: 4096 riječi duljine 40 bita. Naime, duljina od 40 bita omogućuje točnost računanja na dvanaest decimala (2~40 je približno 0.9 • 10"12). Brojevi su bili prikazani u obliku pred-značnih razlomljenih brojeva s čvrstim pomičnim 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. UPRAVLJAČKA JEDINICA

Upravljačka jedinica na temelju dekodiranja strojne instrukcije generira sve potrebne upravljačke signale za vremensko vođenje i upravljanje ostalim jedinicama računala. Ti se signali dovode u tzv. upravljačke točke i njima se aktiviraju sklopovi u pojedinim funkcij-skim jedinicama. Uz to, upravljačka jedinica zadužena je za automatsko izvršavanje pro-grama - upravljanje slijedom izvršavanja instrukcija kojima je predočen algoritam obrade. Svaki je korak algoritma predstavljen jednom strojnom instrukcijom ili slijedom strojnih instrukcija. One određuju elementarne operacije koje sklopovlje može izvesti. Slika 2.4 pri-kazuje format strojne instrukcije IAS računala. Pod formatom strojne instrukcije razumijeva se oblik (organizacija) strojne instrukcije s označenim poljima (nizovima binarnih znamen-ki 0 i 1) kojima je naznačena funkcija.

bO b7 b8 b19

operacijski kod adresno polje

Si. 2.4 Format strojne instrukcije IAS računala

Strojna instrukcija je duljine 20 bitova (bO - bi9) i organizirana je u dva polja: osam bi-tova (bO - b7) predstavljaju polje operacijskog koda (op) (engl. opcode - operation code). Ono određuje operaciju koja će se izvršiti. Svakoj strojnoj instrukciji iz skupa instrukcija jednoznačno je pridružen 8-bitni operacijski kod. To znači da IAS može imati skup strojnih instrukcija koji se sastoji od maksimalno 256 instrukcija (28 = 256).

Drugo, 12-bitno polje (b8 - b19) je adresno polje koje sadržava adresu memorijske lokacije na kojoj se nalazi podatak (operand). Svakoj memorijskoj lokaciji u memorijskoj jedinici jednoznačno je pridružena adresa što znači da se binarnim slijedom iz adresnog polja može izravno adresirati 4096 memorijskih lokacija (212 = 4096). 12-bitna duljina adresnog polja ujedno je i određivala ukupni kapacitet memorije: 4096 40-bitnih riječi.

Strojne instrukcije koje imaju samo jedno adresno polje nazivaju se jednoadresne strojne instrukcije.

Page 49: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

42 2. POGLAVLJE: VON NEUMANNOV MODEL RAČUNALA

Vidimo da je duljina memorijske riječi (40 bita) prilagođena duljini riječi podataka (40 bita), dok je duljina strojne instrukcije 20 bitova. To je omogućilo da se dvije strojne instrukcije smještaju u jednu memorijsku lokaciju: lijeva strojna instrukcija i desna strojna instrukcija (slika 2.5).

bO b7 b8 bi 9 b20 b27 b28 b39

operacijski kod adresno polje operacijski kod adresno polje

lijeva instrukcija desna instrukcija

SI. 2.5 Lijeva i desna strojna instrukcija IAS računala

Program se izvršava tako da upravljačka jedinca pribavlja (engl. fetch) instrukcije u kodira-nom obliku iz memorijske jedinice (u IAS računalu istodobno se pribavljaju dvije strojne instrukcije: lijeva i desna), dekodira ih i u skladu s njihovom funkcijom generira upravljač-ke signale na temelju kojih funkcijske jedinice (aritmetičko-logička jedinica, memorijska jedinica, ulazno-izlazna jedinica) izvode potrebne operacije. Podsjetimo se da je algori-tam obrade u obliku slijeda strojnih instrukcija pohranjen u memorijskoj jedinici u kojoj su pohranjeni i podaci. Računalo s takvom značajkom naziva se računalo s pohranjivanjem programa. Jedno se pitanje samo od sebe nameće: ako su podaci i strojne instrukcije pre-dočene 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 neočekivan: na temelju slijeda bitova nije moguće razlikovati podatak od strojne instrukcije. Za podrobnije objašnjenje ovog odgovora molim čitatelja za malo strpljenja -naći ćemo ga već u ovom poglavlju.

Za IAS računalo kažemo da je akumulatorsko orijentiran stroj zato što središnju ulogu u izvođenju aritmetičkih operacija ima spremnik - registar: akumulator AC. Razmotrimo kako će se izvoditi aritmetičke operacije koje zahtijevaju dva operanda, npr. C = A + B, gdje su A i B operandi. Općenito, možemo napisati C = f(A, B). Ako ovaj izraz promatramo u svjetlu strojnih instrukcija, onda bismo mogli reći da funkciji f odgovara polje operacij-skog koda, a da A i B predstavljaju adrese izvorišta operanada, dok je C adresa odredišta rezultata. U skladu s time, mogli bismo očekivati da strojne instrukcije budu troadresne, odnosno da imaju sljedeći format: op kod, adresno poljel, adresno polje 2, adresno polje 3, pri čemu adresna polja 1 i 2 predstavljaju adrese izvorišta, a adresno polje 3 adresu odre-dišta. No strojna instrukcija IAS računala je jednoadresna. Kako se jednoadresnom instruk-cijom može podržati operacija koja zahtijeva tri adrese? To je riješeno na sljedeći način. U akumulatoru AC nalazi se jedan od operanada (AC je izvorište jednog operanda), drugi se operand nalazi u memorijskoj jedinici i on je određen 12-bitnom adresom iz adresnog polja strojne instrukcije. Odredište rezultata je akumulator AC. Dakle, umjesto C = f(A, B) može-mo 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.

Računalo IAS imalo je pet osnovnih tipova strojnih instrukcija koji su mogu razvrstati na: 1. instrukcije za prijenos (premještanje) podataka (engl. data transfer), 2. instrukcije za obradu podataka (engl. dataprocessing) 3. ulazno-izlazne instrukcije, 4. instrukcije za upravljanje izvršavanjem programa (engl. program controf), 5. instrukcije s djelomičnom zamjenom (engl.partialsubstitution).

Page 50: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 43

Prva četiri tipa instrukcija karakteristična su i za današnja računala. Instrukcije s djelomič-nom zamjenom bile su strojne instrukcije koje su mijenjale samo adresno polje strojnih instrukcija. Pomoću njih su programi mogli preoblikovati svoje strojne instrukcije tije-kom izvođenja i onda se ista instrukcija mogla primjenjivati na drugom skupu podataka. Ovakva se mogućnost, da program mijenja sam sebe, vrlo brzo pokazala kao neprikladna jer otežava ispitivanje ispravnosti rada programa i otkrivanja pogrešaka u programu te se početkom šezdesetih godina prošlog stoljeća napušta uporaba instrukcija za modifikacije adresnog dijela strojnih instrukcija. Tablica 2.2. prikazuje neke od osnovnih tipova strojnih instrukcija IAS računala.

kcije Instrukcija Opis

AC := MQ AC := M(X) M(X) := AC MQ := M(X) AC :=-M(X) AC:=|M(X)|

AC := - |M(X)|

Prenesi sadržaj registra MQ u registar AC Prenesi sadržaj memorijske lokacije X u AC Prenesi sadržaj AC u memorijsku lokaciju X Prenesi M(X) u MQ Prenesi - M(X) u AC Prenesi apsolutnu vrijednost sadržaja memorijske lokacije X u AC Prenesi minus |M(X)| u AC

AC := AC + M(X)

AC AC AC

= AC + |M(X)| = AC - M(X) = AC - |M(X)|

AC.MQ := MQxM(X)

MQ.AC := AC / M(X)

AC := AC x 2 AC := AC/2

Zbroji sadržaje memorijske lokacije X i AC te rezultat pohrani u AC Zbroji apsolutnu vrijednost M(X) i sadržaj AC Oduzmi M(X) od AC Oduzmi |M(X)| od AC Pomnoži MQ s M(X) i pohrani produkt u obliku riječi dvostruke duljine u AC i MQ Podijeli AC s M(X) i kvocijent pohrani u AC a ostatak u MQ Pomnoži AC s dva (posmak ulijevo za jedno mjesto) Podijeli AC s dva (posmak udesno za jedno mjesto)

^ .sijanje

go to M(X, 0:19) go to M(X, 20:39) if AC > 0 then go to M(X, 0:19)

if AC > 0 then go to M(X, 20:39)

M(X, 8:19) := AC(28:39)

M(X, 28:39) :=AC (28:39)

Uzmi sljedeću instrukciju iz lijeve polovine riječi M(X) Uzmi sljedeću instrukciju iz desne polovine riječi M(X) Ako AC sadržava nenegativni broj uzmi sljedeću instrukciju iz lijeve polovine M(X) Ako AC sadržava nenegativni broj, uzmi sljedeću instrukciju iz desne polovine M(X) Zamijeni adresno polje lijeve instrukcije u M(X) s 12 krajnje desnih bitova AC Zamijeni adresno polje desne instrukcije u M(X) s 12 krajnje desnih bitova AC

2-2. Neki od osnovnih tipova strojnih instrukcija IAS računala

Page 51: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

44 2. POGLAVLJE: VON NEUMANNOV MODEL RAČUNALA

Slika 2.6 prikazuje organizaciju središnje procesne jedinice, tj. procesora računala IAS. Dvije se strojne instrukcije smještene u jednoj 40-bitnoj riječi, koja je pribavljena iz memorijske jedinice, privremeno smještaju u memorijski registar podataka MDR. Iz MDR registra desna se strojna instrukcija smješta u instrukcijski registar IR. Lijeva se strojna instrukcija pohra-njuje u privremeni registar CR. Operacijski kod (8 bita) desne instrukcije prosljeđuje se sklo-pu za dekodiranje (izvorno se taj sklop naziva funkcijska tablica), a preostalih se 12 bitova (adresno polje) prenosi u memorijski adresni registar MAR. MAR sadržava 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 premješta lijeva instrukcija u instrukcijski registar IR i izvodi se na prethodno opisan način. Sadržaj 12-bitnog registara

PC povećan za jedan pokazuje na sljedeću memorijsku riječ koja sadržava sljedeće dvije strojne instrukcije programa. Ako je bila dekodirana strojna instrukcija grananja ili sko-ka (sljedeća strojna instrukcija nije ona koja je uzastopna u programu), onda se njezino adresno polje, umjesto u registar MAR, premješta u programsko brojilo PC. Na taj je način pripremljena adresa memorijske riječi koja sadržava dvije instrukcije koje će se sljedeće pribaviti. r — — — — — — — — — — — — — — — — — — — — — — -, . aritmetičko-logička jedinica .

akumulator AC (40)

40 ^ / registar MQ y (40)

akumulator AC (40)

* / registar MQ y (40)

40 /

i /

/

V ' 4 0 40 /

i /

k

' 4 0

aritmetički sklopovi

40 / ' 40

prema memoriji i ulazno-izlaznim jedinicama

SI. 2.6 Organizacija središnje procesne jedinice računala IAS

Page 52: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 45

Zapamtimo; programsko brojilo PC sadržava adresu sijedeće strojne instrukcije (odnosno, u računalu IA5 adresu memorijske lokacije koja sadržava instrukcijski par), a instrukcijski re-gistar IR sadržava instrukciju čije je izvođenje upravo u tijeku. U računalu IAS programsko se brojilo nazivalo upravljačko brojilo CC (Control Counter), a instrukcijski se registar nazivao registar funkcijske tablice FR (Function Table Register).

Izvođenje strojne instrukcije odvija se u dvije faze (obje se faze nazivaju i instrukcijski ciklus): PRIBAVI (engl. fetch) i IZVRŠI (engl. execute). Tijekom faze PRIBAVI upravljačka jedinica pri-bavlja strojnu instrukciju iz memorijske jedinice te se događa sljedeće:

1. korak: M(PC) IR; iz memorije se pribavlja (čita se) strojna instrukcija i smješta u instrukcijski registar IR (Opaska: u računalu IAS pribavljaju se dvije strojne instrukci-je smještene u 40-bitnoj riječi.); adresa strojne instrukcije nalazi se u programskom brojilu PC;

2. korak: PC + 1 PC; sadržaj programskog brojila PC povećava se za jedan i time određuje strojnu instrukciju koja neposredno slijedi za instrukcijom koja je upravo pribavljena; u skladu s opaskom iz 1. koraka u računalu IAS određuje se par strojnih instrukcija iz slijeda;

3. korak: dekodira se operacijski kod strojne instrukcije koja je bila pribavljena u 1. koraku.

Trećim se korakom završava faza PRIBAVI. Upravljačka jedinica prelazi u fazu IZVRŠI. Za vrijeme faze IZVRŠI, upravljačka jedinica, ovisno o ishodu dekodiranja operacijskog koda, generira sljedove upravljačkih signala kojima pobuđuje operacije izravno podržane sklo-povljem, na primjer, prijenos podataka iz memorijske jedinice, prijenos podataka između registra i aritmetičko-logičkih sklopova, aktiviranje aritmetičko-logičkih sklopova, prijenos podataka memorijskoj jedinici, promjena vrijednosti programskog brojila (ako je riječ o strojnoj instrukciji grananja ili skoka) i si.

Na primjer, faza IZVRŠI, za aritmetičku operaciju zbroji (add) može biti predočena sljedećim 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 nala-zi operand određena je sadržajem memorijskog adresnog registra MAR;

5. korak: AC + MDR AC; izvedi operaciju zbrajanja; rezultat operacije smješta se u akumulator AC.

Izvođenjem posljednjeg koraka u fazi IZVRŠI, upravljačka se jedinica vraća na 1. korak faze PRIBAVI i nastavlja se faza PRIBAVI. Ritam izmjene PRIBAVI - IZVRŠI 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 računala. Napomenimo da se u suvremenim procesorima promjene stanja PRIBAVI - IZVRŠI događaju 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 IZVRŠI.)

U memorijskoj su jedinici pohranjeni podaci i strojne instrukcije u istom obliku - kao nizovi 0 i 1. Kako upravljačka jedinica razlikuje strojnu instrukciju i podatak? Na temelju binarnog niza nije ih moguće razlikovati. Strojna instrukcija i podatak mogu se razlikovati jedino na temelju stanja upravljačke jedinice. Ako se upravljačka jedinica nalazi u fazi PRIBAVI, tada se riječ pribavljena iz memorijske jedinice smatra strojnom instrukcijom (ili parom strojnih

Page 53: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

46 2. POGLAVLJE: VON NEUMANNOV MODEL RAČUNALA

instrukcija u računalu IAS) i smješta se u instrukcijski registar IR, odnosno u slučaju raču-nala IAS - desna strojna instrukcija smješta se u IR, a lijeva u registar CR. Ako se, međutim, upravljačka jedinica nalazi u fazi IZVRŠI, riječ koja se dohvaća iz memorijske jedinice tuma-či se kao podatak (operand). Jednako tako, ako se tijekom faze IZVRŠI riječ pohranjuje u memorijsku jedinicu, onda je to podatak ili rezultat neke aritmetičke ili logičke operacije.

SI. 2.7 Dijagram stanja instrukcijskog ciklusa za von Neumannov model računala

2.2.4. MEMORIJSKA JEDINICA

Memorijska jedinica IAS računala bila je, za današnje stanje razvoja tehnologije, vrlo skro-mnog kapaciteta: 4096 40-bitnih riječi, dakle 4 K 40-bitnih riječi (1 K = 210). No izvedba 163840 bistabila, tj. 4096 • 40, bila je zbog tadašnjih tehnoloških ograničenja ocijenjena kao neizvediva. Priklonili su se rješenju u kojem je memorijska jedinica bila realizirana upora-bom elektronskih cijevi sličnih 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 osvježavao 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 položaja (engl. random access memory). Naime, za memorije s izravnim pristupom vrijedi da je vrijeme pristupa memorijskoj lokaciji neovisno o položaju 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ć može izvoditi dvije vrlo važne operacije - pohranu podatka i dohvaćanje prethodno pohranjenog podatka. Dohvaćanje podatka opisano je operacijom čitanja (engl. Read), a pohrana podatka operacijom pisanja (engl. Write).

Riječ iz memorije dohvaća se tako da se adresa memorijske lokacije čiji se sadržaj želi do-hvatiti (pročitati) smješta u memorijski adresni registar MAR i time adresa postaje raspolo-živa na adresnoj sabirnici, a zatim upravljačka jedinica generira upravljački signal Čitaj koji se šalje memorijskoj jedinici. Izabrana se riječ, nakon isteka vremena pristupa memoriji, npr. 50 is (za računalo IAS), prenosi preko puta podataka (sabirnice podataka) proceso-ru i smješta u memorijski registar podataka MDR. Napomenimo da operacija čitanja nije destruktivna operacija, odnosno ona ne "ruši" ili ne mijenja sadržaj pročitane memorijske lokacije.

Page 54: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 47

Operacija pisanja izvodi se na sljedeći način: podatak koji se želi pohraniti u memorijskoj jedinici smješta se u memorijski registar podataka MDR i time postaje raspoloživ na putu podataka (sabirnici podataka) između procesora i memorije, adresa memorijske lokacije na kojoj se želi pohraniti podatak postavlja se u memorijski adresni registar MAR i time adresa postaje raspoloživa na adresnoj sabirnici. Upravljačka jedinica generira upravljački signal Piši i šalje ga memorijskoj jedinici. Nakon isteka vremena pristupa memoriji, poda-tak biva pohranjen na izabranoj memorijskoj lokaciji. Operacija pisanja je, uvjetno rečeno, destruktivna u smislu daje novi podatak koji se pohranjuje na željenu memorijsku lokaciju, "prebrisao" stari sadržaj na toj memorijskoj lokaciji.

Von Neumann, Burks i Goldstine, svjesni da postoje mnogi važni razredi problema koji zahtijevaju veći kapacitet memorijske jedinice od 4096 riječi, razmatraju hijerarhijsku or-ganizaciju memorije. Ona se sastoji od radne (primarne ili glavne) memorije, sekundarne memorije i treće razine - tzv. neaktivne memorije (engl. dead store). Radna je memorija bila u IAS računalu ostvarena Selectronima i izravno je podržavala rad procesora. Ona je ujedno bila i najbrža memorija u predloženoj hijerarhijskoj organizaciji. Sekundarnom me-morijom, koja je većeg kapaciteta od radne memorije, jeftinija (cijena po bitu je manja), ali sporija, upravlja računalo i ona predstavlja njegov sastavni dio. Sekundarna je memorija kao medij za pohranu podataka koristila magnetsku žicu ili svjetlosno osjetljiv film.

Treća razina memorije jest neaktivna memorija i ona nije sastavni dio računala. Ona se po potrebi uključuje u računalo. Od memorije u drugoj razini razlikuje se samo po raspoloži-vosti (zahtijeva ručni zahvat operatera da bi se uključila u računalo).

2.2.5. ULAZNO-IZLAZNA JEDINICA

Računalo IAS razmjenjivalo je podatke s okolinom, odnosno operaterom. Za to su bile predviđene ove jedinice: grafička izlazna jedinica i teleprinter s pomoćnom magnetskom žicom. Kao grafička izlazna jedinica poslužile 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 pomoćnom magnetskom žicom upotrebljavao se kao ulazno-izlazna jedinica. Oprema teleprintera bila je preinačena tako da je omogućavala i upis podataka s bušene papirne vrpce na magnetsku žicu, i obratno.

Strojna instrukcija INPUT(X, N) specificirala je prijenos N podataka od ulazne jedinice pro-cesoru i onda pohranu na N slijednih memorijskih lokacija, započevši s memorijskom lo-kacijom s adresom X. Slično, strojna instrukcija OUT(X, N) određivala je prijenos N slijednih podataka iz memorijske jedinice, započevši s memorijskom lokacijom s adresom X, prema izlaznoj jedinici. I u ovom je slučaju na putu podataka bio i procesor.

Računalo IAS bilo je jednokorisničko računalo (engl. single-user oriented) - dopuštalo je istodobni rad samo jednom korisniku i zato se izmjena podataka s vanjskim svijetom obav-ljala pod izravnim upravljanjem procesora. Autori računala IAS razmatraju mogućnost isto-dobnog rada ulazno-izlazne jedinice i procesora, međutim, zbog tehnoloških ograničenja odustaju od takve izvedbe.

Page 55: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

48 2. POGLAVLJE: VON NEUMANNOV MODEL RAČUNALA

2.3. JEDNOSTAVNO MIKRORAČUNALO -VON NEUMANNOV MODEL RAČUNALA U ovom smo poglavlju veliku pozornost posvetili von Neumannovom računskom modelu i IAS računalu. Osnovni razlog za to je što je taj model, tijekom skoro pola stoljeća, odredio osnovne zamisli u oblikovanju računala i snažno utjecao na arhitektonske značajke suvre-menih računala. Zamisli kao što je računalo opće namjene, svođenje podataka i instrukcija na numerički (binarni) kod, njihovo pohranjivanje u istoj memorijskoj jedinici, četiri osnov-ne funkcijske jedinice (aritmetičko-logičko jedinica, upravljačka jedinica, memorijska jedi-nica, ulazno-izlazna jedinica) i četiri osnovna razreda strojnih instrukcija (instrukcije za pri-jenos (premještanje) podataka, instrukcije za obradu podataka, ulazno-izlazne instrukcije, instrukcije za upravljanje izvršavanjem programa) određuju značajke koje nalazimo u su-vremenim računalima. Naravno, za više od pet desetljeća von Neumannov model računala doživio je brojne promjene i poboljšanja koja su se snažno odrazila na njihovoj performan-si, pouzdanosti, raspoloživosti, prilagodljivosti i dramatičnom padu cijene računala. Veliku je zaslugu za sve to imao strahoviti tehnološki napredak, posebno mikroelektronike, odno-sno tehnologije visokog stupnja integracije. Da bismo potkrijepili tvrdnju o snažnom utje-caju von Neumannovog modela na generacije računala koje su mu slijedile, razmotrimo mikroračunalo 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 također realizirane u tehnologiji LSI tako da je tiskana pločica na kojoj se nalazi cijeli sustav veličine dlana. Je li računalo sa slike 2.8. takvo da se zaista temelji na von Neumannovom modelu?

Pokušajmo identificirati njegove osnovne funkcijske jedinice. Blok (slika 2.8) s oznakom MPU što je kratica Microprocessor Unit očito predstavlja procesor realiziran u LSI tehnologiji (čip) koji objedinjuje dvije funkcijske jedinice - upravljačku jedinicu i aritmetičko-logičku jedinicu. Blok s oznakom ROM (Read Only Memory) predstavlja memorijski čip koji zbog svoje izvedbe trajno pohranjuje sadržaj (on ostaje sačuvan i ne briše se nakon prestanka napajanja). Osim toga, sadržaj ROM-a ne može se mijenjati strojnim instrukcijama tijekom izvođenja programa. Naravno, sadržaj ROM-a može se strojnim instrukcijama čitati i zato takvu vrstu memorije nazivamo ispisna memorija. Zbog takvih se njezinih značajki u ispi-snoj 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 izvođenja programa dopušta i upisivanje i čita-nje podataka. Prestankom napajanja njezin se sadržaj briše. Zaključimo, čipovi ROM i RAM predstavljaju treću funkcijsku jedinicu - memorijsku jedinicu.

Čipovi označeni s PIA (Peripheral Interface Adapter) i ACIA (Asynchronous Communication Interface Adapter), gdje su PIA i ACIA komercijalni nazivi sklopova, predstavljaju ulazno-izlazne jedinice mikroračunala. PIA omogućuje paralelni prijenos podataka između mikro-računala i perifernih uređaja (i/ili vanjskog svijeta). Preko linija PA0-PA7 i PB0-PB7 (slika 2.8; označene samo s PA i PB) prenose se 8-bitni podaci (2 puta po 8 bita). Podsjetimo se, pa-ralelni 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 poda-taka preko linija PAO - PA7 i PBO - PB7 određuje se tijekom incijalizacije PIA koja se obavlja programom. Kažemo da je PIA prog ram i rijiv sklop jer mu se početna konfiguracija i način rada određuje programom.

Page 56: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 49

AB0-AB15 DB0-DB7

SI. 2.8 Jednostavno mikroračunalo temeljeno na mikroprocesoru MC 6800 (tvrtka Motorola)

Page 57: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

50 2. POGLAVLJE: VON NEUMANNOV MODEL RAČUNALA

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 izmje-na upravljačkih signala između računala i vanjskog svijeta. Ti signali služe za ostvarivanje jednostavnih protokola koji se koriste u izmjeni podataka i omogućuju pouzdani prijenos podataka.

Čip ACIA je ulazno-izlazna jedinica koja podržava serijski prijenos podataka između mikro-računala i vanjskog svijeta. Serijski prijenos podataka je takav da se jednom signalnom linijom prijenosi bit po bit podatka (kažemo u obliku "vlaka impulsa"). Linija označena s Rx (Receive) (slika 2.8) je prijemna signalna linija kojom se podaci iz vanjskog svijeta prenose u računalo. Linija Tx (Transmit) (slika 2.8) jest predajna linija kojom se podaci šalju u vanjski svijet ACIA je također programirljivsklop i u fazi inicijalizacije programom se određuju de-talji načina njegova rada. Na slici 2.8. uočavate da ACIA ima još i druge signalne linije (CTS, DCD, RTS,...) - one su namijenjene posebnom sklopu modemu koji omogućuje prijenos serijskih podataka telefonskim linijama (paricama).

Opisali smo glavne sastavnice mikroračunala sa slike 2.8: MPU, ROM, RAM PIA i ACIA. Te su građevne sastavnice osnovne funkcijske jedinice koje odgovaraju von Neumannovom modelu računala, samo što su one realizirane u LSI tehnologiji.

Na slici vidimo i blok označen s dock - to je čip koji ima funkciju generatora signala vre-menskog vođenja odnosno takta. Naime, računalo je, poput Turingovog stroja, diskretni vremenski stroj u kojem je trenutak svake promjene određen signalom vremenskog vo-đenja ili"clockom"- kako mi to u žargonu nazivamo. Signal vremenskog vođenja ("clock") je periodički signal određene frekvencije čija se velika stabilnost frekvencije postiže upo-rabom kristalnog oscilatora. Zapravo, ovo mikroračunalo rabi dva signala vremenskog vođenja (kažemo da koristi "dvofazni signal" vremenskog vođenja): c|)l i cj>2 (slika 2.8). Za mikroračunalo sa slike 2.8. frekvencija oba signala vremenskog vođenja jest 1 MHz; (M = 106). Budući da signal vremenskog vođenja određuje vremenske trenutke u kojima se mi-jenja stanje u sklopovlju, jasno je da frekvencija signala vremenskog vođenja utječe na brzinu izvođenja programa, odnosno na performansu računala (današnja osobna računala imaju frekvenciju 3 i više GHz (G = 109)). (Opaska: kada ne govorimo o kapacitetu memorije obično za K, M ili G podrazumijevamo sljedeće: K = 103, M = 106 i G = 109.) Sve su aktivnosti mikroračunala sinkronizirane signalom vremenskog vođenja - signal se dovodi procesoru MPU (oba signala: cj> 1 i <|>2), ali i ROM-u (<|>2), RAM-u (<(>2), PlA-i ($2) i AClA-i (<|>2) (slika 2.8).

Blok označen na slici 2.8 sa start up predstavlja relativno jednostavan sklop za početno upuštanje u rad mikroračunala, odnosno za vraćanje mikroračunala u početno stanje (u žargonu kažemo "resetiranje"). Sklop ima obično gumb označen s RESET. Korisnik pri-tiskom na taj gumb, preko sklopa start up, aktivira ulaznu upravljačku liniju označenu s kojom se računalo postavlja u početno stanje. Aktiviranje RESET {RESET 0) znači za pro-cesor iznimku, odnosno prekid vrlo visoke razine.

Slika 2.8 može nam poslužiti i za tumačenje toga kako se fizički u računalu ostvaruje tok po-dataka, instrukcijski tok i tok upravljačkih signala, odnosno kako se ostvaruje komunikacija među funkcijskim jedinicama. Na slici vidimo tri komunikacijska puta kojima su funkcijske jedinice povezane: put podataka (engl. data bus), put upravljačkih signala (engl. control bus) i adresni put (engl. address bus). Svaki od tih putova, koji se naziva sabirnica (engl. bus), fizički predstavlja skup linija (vodiča) kojim se prenose signali (koji svojim razinama od-govaraju logičkoj "0" i logičkoj "1"). S obzirom na namjenu sabirnice, govorimo o sabirnici podataka (ili podatkovnoj sabirnici), upravljačkoj sabirnici i adresnoj sabirnici.

Page 58: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 51

Tok podataka i instrukcijski tok ostvareni su pomoću sabirnice podataka. Ona je dvosmjerna jer dopušta prijenos od procesora prema drugim funkcijskim jedinicama (memorijskoj i ulazno-izlaznim jedinicama), ali i prijenos od navedenih funkcijskih jedinica prema proce-soru. Odmah ovdje navedimo jedan važan detalj: referentna točka u analizi ponašanja raču-nalnog sustava i određivanju smjerova prijenosa jest procesor, koji ima ulogu vodećeg mo-dula (engl. master module) jer on upravlja cijelim računarskim sustavom. Ostale funkcijske jedinice imaju ulogu pratećeg modula (engl. slave) i one "poslušno" obavljaju zadatke koje im upućuje vodeći modul - procesor. Budući daje procesor određen kao referentna točka, onda se linije usmjerene od procesora prema ostalim jedinicama nazivaju izlaznim, a one u suprotnom smjeru ulaznim linijama. Analogno tome, ako kažemo da se izvodi operacija čitanja (engl. read), to znači da vodeći modul, tj. procesor "čita" podatak, odnosno pristupa nekoj memorijskoj lokaciji ili nekom registru u ulazno-izlaznim jedinicama i dohvaća taj podatak (podatak predstavlja ulazni podatak za procesor).

Sabirnica se podataka za mikroračunalo na slici 2.8. sastoji od osam linija (ili vodiča) ozna-čenih s DBO, DB1,..., DB7. Linija DBO služi za prijenos najmanje značajnog bita podatka, dok će linija DB7 prenositi najznačajniji bit podatka (prijenos je paralelan). Za sabirnicu podataka DBO - DB7 kažemo da je 8-bitna, tj. da je "širine" od osam bita.

Kako se njome ostvaruje instrukcijski tok i tok podataka? Kad je upravljačka jedinica u stanju PRIBAVI, iz memorijske se jedinice pribavlja podatak koji se tumači kao strojna in-strukcija, odnosno sastavnica strojne instrukcije (ako se ona sastoji od više 8-bitnih riječi). Podatak - strojna instrukcija - preko sabirnice podataka prenosi se procesoru. Tijekom faze IZVRŠI podaci koji se dohvaćaju iz memorijske jedinice ili se šalju memorijskoj jedinici, preko sabirnice podataka predstavljaju elemente toka podataka. Zaključimo, dvosmjerna sabirnica podataka predstavlja komunikacijski put kojim se ostvaruje instrukcijski tok i tok podataka.

Upravljački signali koje generira upravljačka jedinica šalju se ostalim funkcijskim jedinica-ma pomoću upravljačke sabirnice. Ona se sastoji od pojedinačnih linija (vodiča)_kojima se prenose upravljački signali. Na primjer, izlazna upravljačka linija označena kao /?/1/1/prenosi upravljački signal "Čitaj" (/?/W = 1) ili "Piši" (/?/ W = 0) memorijskoj jedinici, odnosno čipu RAM i time određuje operaciju koju treba obaviti memorijska jedinica. Pažljivi će čitatelj primijetiti da se taj signal dovodi i do ulazno-izlaznih jedinica (PIA i ACIA; slika 2.8), a o ra-zlozima za to bit će riječi u poglavlju o ulazno-izlaznim jedinicama. Pažljivi će čitatelj tako-đer primijetiti da se upravljački signal RAA/ ne dovodi memorijskom modulu ROM - razlog tome je što je ROM samo ispisna memorija tako da se već samim izborom tog modula određuje operacija čitanja.

Skup upravljačkih linija čini upravljačku sabirnicu. U slučaju mikroračunala sa slike 2.8 sa-birnice čine linije označene s R/\N, (j>2, VMA, RESET i IRQ.

Upravljačka 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 upravljačka linija naziva prekidna linija, a signal koji ona prenosi je zahtjev za prekid. Aktivno stanje signala IRQ (IRQ = 0) znači procesoru da je neka ulazno-izlazna jedinica zahtijevala prekid izvođenja tekućeg programa.

Na slici 2.8 vidimo još jednu sabirnicu - adresnu sabirnicu koja je širine šesnaest bita ABO -AB15. Ona je iznimno važna jer pomoću nje procesor određuje kojoj lokaciji u memorijskoj jedinici ili kojem registru u ulazno-izlaznoj jedinici želi pristupiti. Von Neumanov model računala koristi adrese koje su jednoznačno dodijeljene svakoj sastavnici kojoj procesor

Page 59: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

52 2. POGLAVLJE: VON NEUMANNOV MODEL RAČUNALA

može pristupiti: svaka memorijska lokacija ima jednoznačno pridruženu adresu, svaki registar u bilo kojoj funkcijskoj jedinici također ima jednoznačno pridruženu adresu. Na temelj u jed no-značne adrese procesor izabire sastavnicu s kojom želi komunicirati. Važno je napomenuti da se načelo jednoznačnostiadrese u računalnom sustavu mora strogo poštovati - ne smiju u računalu postojati npr. dvije memorijske lokacije s istom adresom, dva registra ili dvije funkcijske jedinice s istom adresom. Ako se to načelo ne poštuje, računalo neće ispravno funkcionirati, štoviše može imati za posljedicu kvar sklopovske sastavnice (npr. posebnih pogonskih sklopova; engl. driver, koji su sučelni sklopovi na sabirnici računala). Analogija, s poštovanjem načela jednoznačnosti adrese, jest dobro uređen grad u kojem ne smiju po-stojati dvije ili veći broj ulica s istim imenom ili, pak, više zgrada s jednakim kućnim brojem u istoj ulici. Naravno, kad se ta jednoznačnost ne bi poštovala, pisma i druge poštanske pošiljke bilo bi nemoguće uručiti pravom primatelju. Slično 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 "osluškuju" adresnu sabirni-cu 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 upravljačkih signala.

Primjer 2.2.

Slika 2.9 prikazuje detalj priključenja memorijske jedinice RAM (slika 2.8) na sabirnicu podataka DBO - DB7, upravljačku sabirnicu te adresnu sabirnicu ABO - AB15. Adresna sabirnica je širine 16 bita i određuje ukupan adresni prostor od 65356 adresa (216): od 0000 - FFFF (heksadekadno), tj. ukupno 64 K lokacija (K = 210).

Čip RAM ima četiri ulazna priključka označena s E (engl. enable - omogući) i dva ulazna priključka označena s £ Ti ulazni priključci služe za izbor čipa na temelju adrese. Čip je izabran, tj. omogućen i postaje aktivan ako je zadovoljen sljedeći uvjet: istodobno mo-raju sve logičke vrijednosti signala na priključcima označenima 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 logičkih sklopova ILI priključene na četiri ulaza označena s £, a da je na dva priključka E doveden signal vremenskog vođenja <j)2.

(Opaska: radi jednostavnosti adresne linije, označavat ćemo kraće samo s A i pripadaju-ćim brojem, npr. A7 = AB7).

U skladu s prethodno navedenim uvjetom, RAM će biti izabran i "oživjeti" kada je stanje na adresnoj sabirnici sljedeće (slika 2.9): A7 = 0, A8 = 0 i A9 = 0; logičko ILI A7 + A8 + A9 je tada 0, A10 = 0 i A11 = 0; logičko ILI A10 + A11 je tada 0, A12 = 0 i A13 = 0; logičko ILI A12 + A13 je tada 0, A14 = 0 i A15 = 0; logičko ILI A14 + A15 je tada 0, (odnosno kada su sve adresne linije od A7 do A15 u logičkoj nuli) i kada je istodobno zadovoljeno da su dva ulaza E u jedinici. Budući da se na priključke E dovodi signal $2, koji je periodički, ulazi E će biti u aktivnom stanju u ritmu signala vremenskog vođenja (j>2 (odnosno kada njegova amplituda poprima visoku vrijednost koja se može tumačiti kao logičko 1).

Page 60: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 53

SI. 2.9 Detalj priključenja memorijske jedinice RAM

Sedam najmanje značajnih adresnih linija AO - A6 dovodi se izravno na priključke RAM-a označene s AO - A6. Binarne vrijednosti na adresnim linijama AO do A6 određuju adresu memorijske lokaciju u RAM-u.

Sada možemo, konačno, odrediti adresni potprostor koji zauzima RAM sa slike 2.9.

Stanje adresnih linija od A7 do A15 mora biti sljedeće: A15 A14 A13 A12 A11 A10 A9 A8 A7

0 0 0 0 0 0 0 0 0

Adresne linije A0 do A6 poprimaju vrijednosti 0 ili 1, ovisno o kojoj se memorijskoj lokaci-ji u čipu RAM želi pristupiti. Ovih nam sedam adresnih linija govori koliki je kapacitet me-morijskog čipa. Zbog načela jednoznačnosti adrese tih sedam adresnih linija (A0 - A6) određuje 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 A14 A13 A12 A11 A10 A9 A8 kl A6 A5 A4 A3 A2 A1 A0 Adresa 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0002 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0003

: o 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0004 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0005 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0006

; 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0007 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0008 0 0 0 0 0 0 0 0 0 . . . . . . 0 0 0 0 0 0 0 0 0 . 0 u

0 0 0 0 0 0 0 0 • • • • • • •

l o 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 007E 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 007F

Page 61: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

54 2. POGLAVLJE: VON NEUMANNOV MODEL RAČUNALA

Adresni potprostor koji zauzima RAM dio je veličine od samo 128 adresa od ukupnog adresnog prostora od 64 K i definiran je adresama: 0000 - 007F. Budući da sedam naj-manje značajnih adresnih linija (A0 - A6) koje se dovode na priključke čipa označene s A0 - A6 ne utječu na izbor RAM-a, već samo na izbor riječi u RAM-u (uz uvjet da su adre-sne linije A7 - A15 poprimile odgovarajuće vrijednosti), onda se obično adresa sklopa prikazuje u obliku:

A15 A14 A13 A12 A l i A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 X X X X X X X ,

gdje X označava bilo 0 bilo 1 (X se tumači kao "nije važno"; engl. don'tcare).

Primjer 2.3.

Odredimo adresni potprostor u kojem se pojavljuje ulazno-izlazna jedinica ACIA. Priključci čipa ACIA koji su u vezi s njezinim adresiranjem jesu (slika 2.10):

• RS (Register Select) - priključak za izbor registra u ACIA. Samo na temelju RS-a mo-žemo zaključiti 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) - priključak za izbor čipa (ima istu funkciju kao priključak E u pret-hodnom primjeru),

• CS1 (Chip Select) - priključak za izbor čipa (ima istu funkciju kao priključak E u pret-hodnom primjeru),

• CS2 (Chip Select) - priključak za izbor čipa (ima istu funkciju kao priključak £ u pret-hodnom primjeru).

RS

DB0 - DB7 CSO

CS1

AC I IA E ČS2

AC I IA IRQ

R/W

Tx Rx CT5 DCD RTS

D0-D7

02

R/W

SI. 2.10 Detalj priključenja ulazno-izlazne jedinice ACIA

Uvjet da bude čip ACIA izabran je sljedeći: istodobno moraju biti CS0 = 1 (na CS0 se dovo-di adresna linija A3), CS1 =1 (naCSI se dovodi logičko I: A14 • VMA). Signal VMA (Valid Memory Address) upravljački je signal koji generira procesor i označava daje adresa koja se trenutno nalazi na adresnoj sabirnici valjana, i konačno, CS2 = 0 (na CS2 se dovodi logičko ILI: A1 +A2 + A4 + A5 + A6 + A7 +A8 +A9 +A10 +A11 + A12 + A13 + A15).

Adresnom linijom A0 koja se dovodi na priključak RS izabire se jedan od dva registara u ACIA.

Page 62: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 55

Na temelju navedenih uvjeta možemo odrediti adresni potprostor koji zauzima ACIA: A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 AO Adresa

0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 4008 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 4009.

Dakle ACIA se javlja procesoru na dvjema sljednim adresama: 4008 i 4009 (heksadekad-no), odnosno adresu ACIA možemo prikazati i kao:

A15 A14 A13 A12 A l i A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 X,

gdje X označava 0 ili 1.

2.4. VON NEUMANNOVO RAČUNALO - RAČUNALO SISD Računala temeljena na von Neumannovom modelu razvrstavamo, u skladu s Flynnovom klasifikacijom, u SISD (Single Instruction Stream Single Data Stream) - arhitekturu računala s jednim instrukcijskim tokom i jednim tokom podataka. Zaista, ako pažljivo promotrimo sli-ku 2.2 vidimo da model ima samo jedan tok podataka i samo jedan instrukcijski tok. Pritom oba izviru iz memorijske jedinice, a "susreću" se u aritmetičko-logičkoj jedinici. Štoviše, fi-zička 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 ana-liziramo aktivnosti tijekom instrukcijskog ciklusa (faze PRIBAVI i IZVRŠI), možemo utvrditi da je posebno intenzivan promet i instrukcija i podataka između procesora i memorijske jedinice: Tijekom faze PRIBAVI procesor obavezno jednom ili više puta uzastopce pristu-pa memorijskoj jedinici pribavljajući strojnu instrukciju. Tijekom faze IZVRŠI, ovisno o vrsti operacije koju treba izvesti, procesor također za većinu operacija pristupa memorijskoj je-dinici da bi dohvatio operande ili pak pohranio rezultat.

Pojednostavljeno, model von Neumanovog računala mogao bi se predočiti slikom 2.11.

Vidimo daje na toj razini apstrakcije računalo prikazano samo procesorom, memorijskom jedinicom i spojnim putom između njih. Promet se podataka (u širem značenju te riječi -jer su i strojne instrukcije svedene na binarni kod) odvija spojnim putem, a brzina obrade očito ovisi o njegovoj propusnosti. Nažalost, propusnost spojnog puta takva je da se samo jedan podatak ili samo jedna strojna instrukcija mogu u vremenu prenijeti između pro-cesora i memorijske jedinice. J. Backus, jedan od autora programskog jezika FORTRAN, u kritici von Neumannovog modela računala nazvao je taj spojni put "von Neumannovim uskim grlom" Bacus tvrdi da mora postojati"... manje primitivan način..."ostvarivanja obra-de podatka negoli je to "pumpanje" ogromne količine podataka naprijed-natrag kroz taj spojni put.

Page 63: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

56 2. POGLAVLJE: VON NEUMANNOV MODEL RAČUNALA

"von Neumannovo usko grlo"

SI. 2.11 Pojednostavnjeni model von Neumannovog računala

U knjizi ćemo se susresti s procesorima i računalima koji se temelje na von Neumannovim zamislima arhitekture, ali koji upotrebljavaju paralelizam na različitim razinama i predstav-ljaju otklon u odnosu na izvorni von Neumannov koncept.

Jedan od otklona je i harvardska arhitektura računala (nazvana po mjestu Harvard i zamisli koju je koristilo računalo Mark I) u kojoj se razlikuju memorijska jedinica za pohranu poda-taka i memorijska jedinica za pohranu instrukcija.

2.5. USPOREDBA TURINGOVOG STROJA I VON NEUMANNOVOG MODELA RAČUNALA U prvom smo se poglavlju detaljnije upoznali sTuringovim strojem (TS), a u ovom smo poglavlju podrobnije opisali računalo temeljeno na von Neumannovom modelu. Usprkos tomu što je TS apstraktni izvršitelj i nije poslužio kao model u oblikovanju stvarnih račun-skih strojeva, zanimljivo gaje usporediti s von Nemannovim modelom računala.

Memorijska jedinica TS-a, nazvana vanjska memorija, s lijeva je i s desna neograničena vrpca podijeljena na polja u kojima se pohranjuje po jedan simbol iz vanjske abecede. Neograničenost vrpce tumačimo tako što po potrebi možemo 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 položaju R/W glave i položaju polja u kojem se nalazi željeni podatak. R/W glava tijekom jednog takta može se pomaknuti samo za jedno polje (ulijevo ili udesno) u odnosu na njezin trenutni položaj. Poljima na vrpci nisu dodijeljene adrese, već se podacima pristupa na temelju položaja R/W glave. Stroj ima posebne nared-be 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 početni podaci, međurezultati i konačan rezultat. Program se ne pohranjuje u vanjskoj memoriji. S obzirom na to da je riječ o apstraktnom izvršitelju, nema ograničenja u obliku i načinu prikaza podataka.

Page 64: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 57

Rad TS-a odvija se u taktovima kojima su definirani diskretni vremenski trenuci i u kojima TS mijenja svoje stanje. Rad stroja zamišljen 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 računala je memorija ograničenog kapaci-teta sastavljena od konačnog broja memorijskih lokacija. Svakoj je memorijskoj lokaciji jed-noznačno pridružena 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 početni podaci, međurezultati, rezultati i programi u istom obliku - sljedova nula i jedinica.

Rad se računala odvija također u taktovima - diskretnim vremenskim trenucima koji su definirani signalom vremenskog vođenja.Tijekom instrukcijskog ciklusa procesor pristupa jednom ili više puta memorijskoj jedinici radi pribavljanja strojne instrukcije (faza PRIBAVI) te nijednom, jednom ili više puta tijekom faze IZVRŠI (broj pristupa memorijskoj jedinici ovisi o operaciji koja je određena operacijskim kodom strojne instrukcije).

Obrada informacije u TS-u odvija se u logičkom bloku stroja L u kojem je realizirana logička funkcija stroja 6 : S x Q - ^ S x P x Q .

Obrada podataka u von Neu man novom računalu odvija se u aritmetičko-logičkoj jedinici.

Program za TS, odnosno algoritam obrade predstavlja realizaciju logičke funkcije stroja 6 koja je u obliku funkcionalne sheme Turingovog stroja pohranjena u logičkom bloku stroja L

Algoritam obrade u von Neumannovom računalu predočen je programom koji se sastoji od slijeda strojnih instrukcija. Program je pohranjen u memorijskoj jedinici u kojoj su po-hranjeni i podaci.

Vanjska memorija TS-a ima ulogu i ulazno-izlazne jedinice, dok von Neu ma novo računalo ima posebnu ulazno-izlaznu jedinicu. Postoji sličnost između vanjske memorije TS-a kao prikazne jedinice i memorijske jedinice IAS računala koja je realizirana elektronskim cijevi-ma Selectron. U tom se slučaju memorijska jedinica računala može promatrati i kao izlazna grafička jedinica.

Page 65: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 59

3. POGLAVLJE

POJEDNOSTAVLJENI MODELI CISC I RISC PROCESORA

3.1. UVOD Procesor smo pojednostavljeno opisali kao objedinjenje dviju funkcijskih jedinica: uprav-ljačke i aritmetičko-logičke jedinice. Današnji su procesori realizirani u tehnologiji vrlo viso-kog stupnja integracije VLSI i ostvareni su na komadiću silicija približne veličine poštanske marke te se obično nazivaju mikroprocesori (prefiks mikro treba nas asocirati na mikroelek-troniku). Tehnologija vrlo visokog stupnja integracije omogućuje ostvarivanje procesora koji imaju brojne i vrlo složene sklopove. Na primjer, mikroprocesor Intel Pentium 4 (2001. godina) na komadiću silicija površine 217 mm2 (približnih dimenzija: 14.7 mm x 14.7 mm) ima 42.000.000 tranzistora, višejezgreni procesor POWER7 ostvaren je na čipu površine 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 upravljačke jedinice, funkcije pojedinih registara i sklopova aritmetičko-logičke jedinice, poznavanje stanja na internim sabirnicama procesora (ali i vanjskim sabirnicama: sabirnici podataka, upravljačkoj i adre-snoj sabirnici) jedan je od osnovnih preduvjeta uspješnog oblikovanja i kvalitetnog održa-vanja računarskih sustava opće namjene ili ugrađenih računalnih sustava.

U ovom ćemo poglavlju opisati dva modela procesora: jedan 8-bitni procesor sa značajka-ma CISC (Complex Instruction Set Computer) arhitekture i jedan 32-bitni procesor sa zna-čajkama RISC (Reduced Instruction Set Computer). Naravno, usput ćemo istaknuti i pojasniti neke arhitektonske značajke 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 značajki pro-cesori klasificiraju kao 8-, 16-, 32- ili 64-bitni? Obično se promatraju sljedeće arhitektonske značajke: duljina registara podataka (broj bitova), širina interne sabirnice - spojnog puta u procesoru i duljina podataka (operanada) kojima se izravno koriste sklopovi u aritmetičko-

Page 66: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

60 3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

logičkoj jedinici. Na primjer, ako su registri podataka koji se rabe za pohranjivanje opera-nada i rezultata 8-bitni, ako je širina interne sabirnice 8-bitna i ako su sklopovi aritmetičko-logičke jedinice 8-bitni, onda se procesor jednoznačno može klasificirati kao 8-bitni. No ponekad nije tako jednostavno, procesor može imati 32-bitne registre podataka, 16-bitnu internu sabirnicu i dvije 16-bitne aritmetičko-logičke jedinice koje se mogu promatrati i kao jedna 32-bitna jedinica. U takvom se slučaju teško može govoriti jednoznačno o npr. 16-bitnom ili 32-bitnom procesoru. Obično se tada priklanjamo klasifikaciji proizvođača, ali uz to vrlo često rabimo i izraz kao što je pseudo 16-bitni ili pseudo 32-bitni procesor.

signal vremenskog vođenja

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 računalu: upo-trebljava se za privremeno pohranjivanje jednog od operanada koji sudjeluje u aritmetič-koj ili logičkoj operaciji. Osim toga, akumulator AC služi kao odredište rezultata izvedene aritmetičke ili logičke operacije (registar je dobio naziv akumulator zato što se kod ponav-ljajućih postupaka računanja u njemu "akumulira" rezultat). U skladu s von Neumannovim modelom računala, akumulator AC sudjeluje i u ulaznim i izlaznim operacijama, odnosno izmjeni podataka između računala i vanjskog svijeta. U tom slučaju akumulator AC ima ulogu "odskočne daske": svaki ulazni podatak na svom putu iz ulazno-izlazne jedince mora biti privremeno pohranjen u akumulatoru AC, a zatim premješten u memorijsku jedinicu i obratno, svaki izlazni podatak mora biti, na svom putu od memorijske jedinice prema ula-zno-izlaznoj jedinici, privremeno pohranjen u akumulatoru AC. Naravno, ovo ne vrijedi ako se prijenos ostvaruje izravnim pristupom memoriji DMA (vidi poglavlje 2.).

Page 67: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 61

Sastavnica modela je i 8-bitni privremeni registar 77? koji je povezan s jednim od dva ulaza u aritmetičko-logičku jedinicu i služi za privremeno pohranjivanje jednog od podataka koji sudjeluje u aritmetičkoj ili logičkoj operaciji.

8-bitna aritmetičko-logička jedinica (ALU - Aritmetic Logic Unit) izvršava osnovne aritme-tičke i logičke operacije s jednim (unarne) ili s dva operanda (binarne operacije) kao što su: inkrementiranje (povećavanje za jedan), posmak operanda, pretvorba u jedinični ili potpu-ni komplement, zbrajanje, oduzimanje te logičke operacije I, ILI i ISKLJUČIVO 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 izvođenja neke aritmetič-ke ili logičke operacije,

ii) zastavice za indikaciju glavnih stanja procesora, iii) zastavice za rukovanje prekidom i označavanje prekidnih razina.

Zastavice se iz skupine i) automatski postavljaju (poprimaju vrijednost 1) ili brišu (popri-maju vrijednost 0) ovisno o rezultatu aritmetičkih i logičkih operacija. Zastavice iz skupine i) promatraju se kao pojedinačni bistabiii i obično imaju jednoslovčane oznake: C, H, N, Z, V, gdje je C (engl. Carry) - zastavica prijenosa koja pokazuje da se dogodio prijenos iz najzna-čajnijeg bita rezultata, H (engl. Half Carry) - zastavica polovičnog 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 riječi o aritmetičko-logičkoj jedinici. Za sada navedimo samo da strojne instruk-cije uvjetnog grananja obično koriste zastavice iz skupine i). O zastavicama iz skupine ii) i iii) bit će riječi u poglavljima koja se odnose na obradu prekida i iznimaka, odnosno na načine 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 logičko"! "(kažemo da je zastavica "postavljena" ili da je u jedinici) ako je rezultat aritmetičke ili logičke operacije takav da su svi bitovi rezultata jednaki 0. Strojna instrukcija uvjetnog grananja brzr (Branch if Zero - granaj ako nula) ispituje stanje zasta-vice Z i ako je Z = 1 obavit će se grananje u programu (izvođenje programa uputit će se na ciljnu instrukciju koja neposredno ne slijedi instrukciji brzr).

Sastavnica pojednostavljenog modela procesora jest i upravljačka jedinica. Ona se sastoji od sklopova za dekodiranje strojnih instrukcija i sklopova koji generiraju sljedove uprav-ljačkih signala u skladu s tumačenjem operacijskog koda instrukcije. Ti signali upravljaju prijenosom podataka između registara, između registra i sklopova aritmetičko-logičke je-dinice, aktiviraju sklopove za izvršavanje aritmetičkih ili logičkih operacija ili izazivaju inkre-mentiranje sadržaja programskog brojila i si. Upravljački signali određuju i smjer prijenosa podataka između procesora i memorijske jedinice (upravljački signal Čitaj, Piši, odnosno R/W; R - read, W - write) ili između procesora i u lažno-izlazne jedinice. Sve se te operacije sinkroniziraju signalom vremenskog vođenja <j> (engl. clock) (slika 3.1). Upravljački signali koji su potrebni ostalim funkcijskim jedinicama računala (memoriji i ulazno-izlaznim jedi-nicama) prenose se signalnim linijama koje formiraju upravljačku sabirnicu računala.

Page 68: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

62 3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

Model procesora koristi tzv. jednofazni signal vremenskog vođenja. Pretpostavit ćemo da je frekvencija signala vremenskog vođenja 1MHz, odnosno perioda mu je l^is (IO6 s). Slika 3.2 prikazuje signal vremenskog vođenja (|>. Ponovimo još jednom, događaji u procesoru i dru-gim funkcijskim jedinicama računala odvijaju se u točno utvrđenim diskretnim trenucima.

SI. 3.2 Signal vremenskog vođenja (engl. clock) <(> (perioda 1 [is)

Sastavni dijelovi pridruženi upravljačkoj 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 sljedeće:

Programsko brojilo PC sadržava adresu sljedeće strojne instrukcije - one koja će biti pri-bavljena u sljedećem instrukcijskom ciklusu. (Opaska: u nekim procesorima registar koji ima funkciju programskog brojila ima oznaku IP (engl. Instruction Pointer) - kazaljka na instrukciju.)

Instrukcijski registar IR sadržava strojnu instrukciju čije je izvođenje upravo u tijeku, odno-sno u našem će modelu procesora instrukcijski registar IR sadržavati 8-bitni operacijski kod strojne instrukcije u tijeku.

16-bitno brojilo podataka DC sadržava adresu memorijske lokacije na kojoj se nalazi ope-rand ili na koju se treba pohraniti rezultat operacije.

Interna sabirnica širine 8 bita predstavlja komunikacijski put za sve sastavnice modela i omogućuje prijenos podataka između pojedinih registara podataka i upravljačkih regista-ra, aritmetičko-logičke jedinice i upravljačke jedinice. Interna sabirnica kao skup linija -vodiča 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 vanj-ske sabirnice podataka (DBO - DB7). Registri MAR i MDR predstavljaju sučelje procesora s ostalim funkcijskim jedinicama računala. Izraz "vanjska sabirnica" odnosi se na sabirnicu računala (vidi poglavlje 2.). (Opaska: često se memorijski adresni registar MAR naziva i adre-sni međuspremnik (engl. address buffer), a memorijski registar podataka MDR naziva se još i međuspremnik podataka (engl. data buffer)).

Strojna se instrukcija u procesoru izvršava u dvije faze: PRIBAVI i IZVRŠI (vidi poglavlje 2.). Procesor tijekom faze PRIBAVI postavlja sadržaj programskog brojila PC na adresnu sabir-nicu ABO - AB15 tako da se manje značajan bajt (PCO - PC7) i značajniji bajt (PC8 - PC15) programskog brojila slijedno prenose preko 8-bitne interne sabirnice procesora u 16-bitni memorijski adresni registar MAR. Upisom 16-bitnog sadržaja u memorijski adresni registar MAR on (sadržaj) se pojavljuje na adresnoj sabirnici ABO - AB15. Ujedno, upravljački sklo-

Page 69: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 63

povi generiraju upravljački signal Čitaj i šalju ga na upravljačku sabirnicu računala (uprav-ljačka linija Čitaj). (Opaska: stvarni procesori, za razliku od našeg modela procesora, imaju obično umjesto izdvojenih upravljačkih linija Čitaj i Piši jednu upravljačku liniju R/W, pri čemu R/W= 1 odgovara signalu Čitaj, a R/ W= 0 znači Piši). Memorijska jedinica, koja je pri-ključena na vanjsku sabirnicu, "osluškuje" adresnu sabirnicu i dekodira postavljenu adresu (adresu koja je prisutna na adresnoj sabirnici) da bi se omogućio pristup do odgovarajuće memorijske lokacije. Za nekoliko stotina nanosekundi, npr. 400 ns - što odgovara vremenu pristupa memoriji, sadržaj izabrane memorijske lokacije bit će pročitan i pojavit će se na vanjskoj sabirnici podataka DBO - DB7. Taj se podatak preko memorijskog registra poda-taka MDR i preko interne sabirnice procesora usmjerava i zatim pohranjuje u 8-bitnom instrukcijskom registru IR. Pohranjeni se podatak u registru IR tumači kao operacijski kod instrukcije. Ovoj cijeloj priči odgovara zapis: M(PC) IR (vidi 1. korak faze PRIBAVI, poglav-lje 2.). Interni sklopovi procesora povećavaju sadržaj programskog brojila PC za 1; (PC + 1 -•PC).

8-bitna riječ (bajt) koja je smještena u instrukcijskom registru IR sadržava operacijski kod strojne instrukcije. No strojne se instrukcije većinom sastoje od dva ili više bajtova.

Dekoder u upravljačkoj jedinici dekodira operacijski kod instrukcije te na temelju njega dobiva dvije važne stvari: informaciju koja se operacija tijekom faze IZVRŠI mora izvršiti i informaciju o duljini strojne instrukcije, tj. od koliko se bajtova sastoji instrukcija.

Ako je upravljačka jedinica na temelju operacijskog koda utvrdila da se strojna instrukcija sastoji samo od jednog bajta (daje riječ o instrukciji koja u operacijskom kodu sadržava i informaciju o izvoru operanda i odredištu rezultata, npr. strojna instrukcija COMA - kom-plementiraj sadržaj akumulatora AC ima izvorište operanda u akumulatoru AC i rezultat (jedinični komplement akumulatora AC) pohranjuje u akumulator AC), tada upravljačka jedinica prelazi u fazu IZVRŠI.

Ako je, pak, upravljačka jedinica na temelju operacijskog koda utvrdila da se instrukcija sastoji od dvaju ili više bajtova, faza PRIBAVI se nastavlja: sadržaj programskog brojila PC smješta se kao i u prethodnom ciklusu faze PRIBAVI, na adresnu sabirnicu, upravljačka je-dinica generira upravljački signal Čitaj. Bajt dohvaćen iz specificirane memorijske lokacije se sabirnicom podataka DBO - DB7 preko registra MDR i interne sabirnice prenosi u brojilo podataka DC. Sadržaj programskog brojila PC ponovo se povećava 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 konačno pribavljeni svi bajtovi od kojih se sastoji strojna instrukcija, programsko brojilo PC mora sadržavati adresu sljedeće strojne instrukcije. Upravljačka jedinica prelazi u fazu IZVRŠI. Tijekom faze IZVRŠI upravljačka jedi-nica, u skladu s tumačenjem operacijskog koda, generira sljedove upravljačkih signala koji pobuđuju sklopove u aritmetičko-logičkoj jedinici, prijenose između registara, prijenos podataka između procesora i memorijske jedinice ili procesora i ulazno-izlazne jedinice.

Nakon što su obavljene sve zahtijevane aktivnosti potrebne za izvršenje operacije specifici-rane operacijskim kodom, upravljačka jedinica prelazi u fazu PRIBAVI i kreće u pribavljanje sljedeće strojne instrukcije. Slika 3.3 prikazuje dijagram toka aktivnosti tijekom instrukcija skog ciklusa.

Page 70: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

64 3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

SI. 3.3 Dijagram toka instrukcijskog ciklusa

3.3. PRIMJER IZVOĐENJA PROGRAMA Na primjeru izvođenja 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, tumači se kao: inkremen-tiraj sadržaj memorijske lokacije čija je adresa 05FF (heksadekadno), odnosno

0000 0101 1111 1111 (binarno). Operacijski kod instrukcije INC je 7C (heksadekadno), od-nosno 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 također inkre-mentira binarni broj zapisan na vrpci stroja.

U memoriji računala, na slijednim memorijskim lokacijama s adresama 0100, 0101, 0102, ... pohranjen je program. Slika 3.4 prikazuje program (adrese i sadržaj memorijskih lokaci-ja zapisani su heksadekadno samo radi jednostavnijeg zapisa), uz to je prikazan i sadržaj 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.

Page 71: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 65

adresa

0100

0101

0102

05FE

05FF

0600

sadržaj

7C

05

FF

23

INC $05FF inkrementiraj sadržaj memorijske lokacije s adresom 05FF

SI. 3.4 Prikaz programa i podataka u memorijskoj jedinici računala

Primjećujemo, duljina memorijske riječi je jedan bajt (osam bita) i svakoj je memorijskoj lo-kaciji jednoznačno pridružena adresa. Za takvu organizaciju memorijske jedinice kažemo da ima bajtnu adresnu zrnatost

Slika 3.5 prikazuje početni uvjet - sadržaje registara procesora neposredno prije započinja-nja programa. Uvjet je samo jedan - sadržaj programskog brojila PC mora sadržavati adre-su prve strojne instrukcije našeg programa. To znači: (PC) = 0100. Početni sadržaji drugih registara procesora nisu važni.

AC 15 DC 15 PC

upravljački Signal

i upravljački signal

0100

T upravljački signal

in terna sabirnica

upravljački signal

TR

IOtusn i registar Registar uvjeta)

SR ar i tmet i čko- log ič ka

jed in ica (ALU)

upravljački signal

0 15

upravljački signal

IR

upravljački ^ s i g n a l

dekoder

upravl jački sk lop

0

upravl jačka jed in ica

DB7

upravlj. signal

DB0 AB15 •

AB0

sabirnica podataka

upravljački signali

Čitaj

adresna sabirnica

Piši

upravljačka sabirnica

signal vremenskog vođenja

SI. 3.5 Početni uvjet - sadržaji registara procesora neposredno prije upuštanja u rad (startanja)

Page 72: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

66 3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

Prije negoli se upustimo u tumačenje izvođenja samog programa, objasnimo kako je u memoriji računala unesen program i kako je početna adresa programa smještena u pro-gramsko brojilo PC. Najjednostavnije je objašnjenje, za sada, da računalni sustav ima vrlo jednostavnu jezgru operacijskog sustava koja se naziva monitor i koja podržava jednosta-van unos podataka u memoriju preko heksadekadne tipkovnice, definiranja početne adre-se programa (unos u PC) te upuštanje u rad (startanje) programa s početne adrese.

Procesor se, odnosno njegova upravljačka jedinica, nakon upuštanja u rad nalazi u fazi PRIBAVI. Sadržaj se programskog brojila PC preko interne sabirnice i memorijskog adre-snog registra MAR postavlja na vanjsku adresnu sabirnicu i upravljačka jedinica generira upravljački 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 sa-držaj programskog brojila PC povećava za 1. Pribavljeni bajt - operacijski kod - smješta 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 možemo za-pisati na sljedeći način (slika 3.6):

• sadržaj programskog brojila: (PC) = 0101, • sadržaj instrukcijskog registra (IR) = 7C, • sadržaj memorijskog registra podataka (MDR) = 7C, • sadržaj memorijskog adresnog registra (MAR) = 0100, • sadržaji ostalih registara ostali su nepromijenjeni.

Page 73: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 67

Sadržaj se instrukcijskog registra (IR) 0111 1100 (binarno) dekodira i tumači kao: Povećaj za 1 vrijednost operanda čija je adresa sadržana u dva bajta koja slijede ovom operacijskom kodu.

Možemo primijetiti da se zaista u operacijskom kodu nalazi informacija o operaciji koja se treba izvršiti, ali i važna informacija od koliko se 8-bitnih riječi (bajtova) sastoji kompletna strojna instrukcija.Točnije, u operacijskom se kodu nalazi informacija o načinu adresiranja. Naime,... čija je adresa sadržana u dva bajta koja slijede ovom operacijskom kodu govori nam da instrukcija koristi izravni način adresiranja koji je karakterističan po tome što preostala dva bajta instrukcijske riječi predstavljaju izravnu (direktnu) adresu memorijske lokacije na kojoj se nalazi operand.

Sve se ove aktivnosti događaju tijekom jedne periode signala vremenskog vođenja.

Upravljačka jedinica na temelju informacije dobivene dekodiranjem operacijskog koda instrukcije "zna" da strojna instrukcija nije u potpunosti pribavljena - nedostaju još dvije manje značajne 8-bitne riječi koje čine strojnu instrukciju. Upravljačka jedinica ostaje u fazi PRIBAVI i u sljedećoj periodi signala vremenskog vođenja pribavlja sljedeći, tj. drugi bajt strojne instrukcije, i to tako da: sadržaj programskog brojila PC postavi na adresnu sabirni-cu računala, generira upravljački signal Čitaj. Povećava se sadržaj programskog brojila PC za 1. Nakon isteka vremena pristupa memoriji s memorijske se lokacije 0101 (heksadekad-no) dohvaća njezin sadržaj 05 (heksadekadno) te se preko sabirnice podataka prenosi pro-cesoru i smješta u brojilo podataka DC i to u njegov značajniji dio (DC8 - DC15). Podsjetimo se, 05 je značajniji bajt adrese memorijske lokacije na kojoj se nalazi operand, a brojilo podataka DC sadržava adresu operanda. Neposredno, nakon pribavljanja značajnijeg bajta adrese operanda stanja registara procesora su:

• programsko brojilo: (PC) = 0102, • instrukcijski registar: (IR) = 7C, • brojilo podataka: (DC) = 05 --, • sadržaj memorijskog registra podataka (MDR) = 05 i • sadržaj memorijskog adresnog registra (MAR) = 0101.

Protekla je još jedna perioda signala vremenskog vođenja.

Upravljačka jedinica ostaje u fazi PRIBAVI i pribavlja treći bajt instrukcijske riječi - manje značajan bajt adrese operanda FF: sadržaj programskog brojila PC postavlja se preko me-morijskog adresnog registra MAR na adresnu sabirnicu, generira se upravljački signal Čitaj te se nakon isteka vremena pristupa memoriji na sabirnici podataka pojavljuje podatak FF (heksadekadno) koji predstavlja manje značajan bajt 16-bitne adrese. On će se smjestiti u manje značajan bajt registra brojila podataka DC. Naravno, tijekom i ove periode vre-menskog vođenja sadržaj se programskog brojila PC povećava za jedan. Stanje registara neposredno nakon pribavljanja manje značajnog bajta adrese operanda je:

• programsko brojilo: (PC) = 0103, • instrukcijski registar: (IR) = 7C, • brojilo podataka: (DC) = 05FF, • sadržaj memorijskog registra podataka (MDR) = FF, • sadržaj memorijskog adresnog registra (MAR) = 0102.

Faza PRIBAVI za instrukciju INC $05FF završena je. Vidimo da je sadržaj programskog bro-jila PC 0103 (heksadekadno) i da pokazuje na sljedeću strojnu instrukciju (podsjetimo se,

Page 74: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

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 vođenja (za naš model procesora trebalo mu je 3|lis jer je perioda signala vremenskog vo-đenja 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 00000101 11111111 7C 05 FF

IR DC

format instrukcije:

operacijski kod adresa operanda

SI. 3.7 Instrukcijska riječ sastavljena od 3 bajta

Vidimo sa slike 3.7 da je format strojne instrukcije jednak formatu instrukcije von Neumannovog računala. Strojna instrukcija sastoji se od 8-bitnog operacijskog koda i 16-bitnog adresnog polja. Adresno polje instrukcije u von Neumanovom računalu bilo je 12 bita.

Kao što smo već spomenuli, za pribavljanje instrukcijske riječi našem 8-bitnom procesoru bile su potrebne tri periode signala vremenskog vođenja, dok bi procesoru s riječi duljine 24 bita i više taj isti postupak obavio u jednoj periodi signala vremenskog vođenja.

Vratimo se nastavku izvođenja instrukcije INC$05FF. Nakon faze PRIBAVI upravljačka jedini-ca prelazi u fazu IZVRŠI. Ona se sastoji u dobavljanju operanda s memorijske lokacije 05FF. Tijekom četvrte periode signala vremenskog vođenja postavlja se sadržaj brojila podataka DC na adresnu sabirnicu i generira se upravljački signal Čitaj. Podatak s memorijske loka-cije 05FF preko sabirnice podataka prenosi se u procesor. Upravljački signali usmjeravaju taj podatak preko interne sabirnice u 8-bitni privremeni registar TR koji se nalazi na ulazu u aritmetičko-logičku jedinicu. Naravno, dohvaćeni se podatak smatra podatkom-operandom jer je upravljačka jedinica u fazi IZVRŠI. Radoznali će se čitatelj upitati zašto se dohvaćeni po-datak nije smjestio u akumulator AC kada je on prvenstveno namijenjen pohrani operanada.

Odgovor je sljedeći: smještanje dohvaćenog podatka u akumulator AC "ruši" njegov pret-hodni sadržaj, a uz to instrukcija INC ne specificira sudjelovanje akumulatora AC u njezi-nom izvođenju. Važno je naglasiti da je akumulator AC sastavnica programskog modela procesora, dok privremeni registar TR to nije. Pojednostavljeno, programski model proce-sora čine sve sastavnice procesora koje su "vidljive" i dohvatljive programeru u strojnom ili zbirnom jeziku (poglavlje 5.).

Stanje registara nakon dohvata operanda je sljedeće: • programsko brojilo: (PC) = 0103, • instrukcijski registar: (IR) = 7C, • brojilo podataka: (DC) = 05FF, • privremeni registar: (TR) = 23.

Primjećujemo da se sadržaj programskog brojila PC nije promijenio - on i dalje pokazuje na adresu sljedeće instrukcije. Napomenimo, da se u načelu, sadržaj programskog brojila

Page 75: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 69

PC tijekom faze IZVRŠI ne mijenja, osim kad se izvršavaju instrukcije grananja.

Tijekom pete periode signala vremenskog vođenja, upravljačka jedinica aktivira sklop za inkrementiranje u aritmetičko-logičkoj jedinici te se izvodi operacija TR + 1 TR, odnosno povećava se za jedan vrijednost operanda 23, i nova se vrijednost (24) prenosi natrag u privremeni registar TR. Stanje registara nakon pete periode signala vremenskog vođenja je sljedeće:

• programsko brojilo: (PC) = 0103, • instrukcijski registar: (IR) = 7C, • brojilo podataka: (DC) = 05FF, • privremeni registar: (TR) = 24.

Uočavamo da je aktivnost u petoj periodi signala vremenskog vođenja interna aktivnost procesora - ne zahtijeva se komunikacija procesora s memorijskom niti s ulazno-izlaznom jedinicom. Budući da procesor tijekom te periode ne koristi sabirnicu računala (adresnu sabirnicu, sabirnicu podataka i upravljačku sabirnicu), on se električki odspaja od sabirnice tako da mu odgovarajuće signalne linije prelaze u stanje visoke impedancije. Na taj način sa-birnica računala biva raspoloživa nekom drugom privremeno vodećem modulu, npr. DMA upravljačkom sklopu koji može ovu periodu iskoristiti za izravan prijenos podataka između memorije i ulazno-izlazne jedinice. Faza IZVRŠI još nije okončana.

Za vrijeme šeste periode signala vremenskog vođenja mora se sadržaj 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, upravljačka jedinica mora generirati upravljački signal Piši. Nakon isteka vremena pristupa memoriji rezultat operacije inkrementiranja bit će pohra-njen natrag na memorijsku lokaciju 05FF. Time je faza IZVRŠI okončana.

Stanje registara procesora: • programsko brojilo: (PC) = 0103, • instrukcijski registar: (IR) = 7C, • brojilo podataka: (DC) = 05FF, • privremeni registar: (TR) = 24.

Promijenjeni sadržaj memorijske lokacije 05FF je: • M(05FF) = 24.

Upravljačka jedinica iz faze IZVRŠI 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 vođenja i daje tijekom njezina izvođenja promet između procesora i memorijske jedinice bio vrlo velik - od 6 pe-rioda signala vremenskog vođenja, pet je utrošeno u komunikaciji procesora s memorijom (tri za pribavljanje strojne instrukcije (faza PRIBAVI), jedna za dohvat operanda (faza IZVRŠI) i još jedna za pohranu rezultata (faza IZVRŠI)).

Što će se dogoditi ako za program pohranjen u memoriji (slika 3.4) promijenimo početni uvjet i postavimo početnu vrijednost programskog brojila PC na 05FF? U tom će slučaju tijekom faze pribavi procesor dohvatiti sadržaj memorijske lokacije 05FF, tj. 23 i smjestiti ga u instrukcijski registar IR. Dakle, 23 će biti operacijski kod instrukcije. Vidimo, daje 23, koji je

Page 76: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

70 3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

u slučaju početne 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 upravljačke jedinice {je li u stanju pribavi ili u stanju izvrši).

3.4. STANJE NA VANJSKIM SABIRNICAMA Pri prikazu izvođenja "programa" koji se sastojao samo od jedne instrukcije ponašali smo se kao da imamo neku vrstu "magične lupe" pomoću koje smo mogli promatrati sadržaje regi-stara procesora i pratiti izvođenje strojne instrukcije. U stvarnosti, nažalost, nemamo takvu "magičnu lupu" kojom bismo mogli prodrijeti u silicijski čip i u stvarnom vremenu pratiti promjene sadržaja tijekom izvođenja pojedinih instrukcija. U stvarnosti nam preostaje je-dino promatrati stanja na vanjskim sabirnicama: sabirnici podataka, adresnoj sabirnici i upravljačkoj sabirnici. To možemo jer imamo fizički pristup sabirničkim linijama. Posebnim instrumentom - logičkim analizatorom priključujemo se njegovim ispitnim sondama na sabirničke linije i možemo promatrati i snimati njihova stanja. Naravno, moramo razumjeti i znati tumačiti ta stanja jer ona imaju posebnu važnost u razumijevanju rada procesora, ali i u dijagnostičkim postupcima pri otklanjanju grešaka u sustavu temeljenom na procesoru.

Pokušajmo utvrditi i nacrtati stanja na vanjskim sabirnicama tijekom izvođenja strojne instrukcije INC $05FF. Zaključili smo da se ona izvodi u šest perioda signala vremenskog vođenja <(>. Sažetak aktivnosti tijekom tih šest perioda jest:

Faza PRIBAVI:

1. perioda • na adresnu sabirnicu ABO - AB15 postavlja se sadržaj programskog brojila PC

(ABO - AB15 = 0100 (heksadekadno)); • aktivira se upravljački 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 sadržaj programskog brojila PC (pozor: tijekom 1.

periode njegov se sadržaj povećao za 1) (ABO - AB15 = 0101 (heksadekadno)); • aktivira se upravljački signal Čitaj (Čitaj 1); • nakon isteka vremena pristupa memoriji na sabirnicu podataka postavlja se podatak

- značajniji bajt adrese operanda (DB0 - DB7 = 05 (heksadekadno));

3. perioda • na adresnu sabirnicu postavlja se sadržaj programskog brojila PC (pozor: tijekom 2.

periode njegov se sadržaj povećao za 1) (ABO - AB15 = 0102 (heksadekadno)); • aktivira se upravljački signal Čitaj (Čitaj 1); • nakon isteka vremena pristupa memoriji na sabirnicu podataka postavlja se podatak

- manje značajniji bajt adrese operanda (DB0 - DB7 = FF (heksadekadno));

Ovim se faza PRIBAVI završava i upravljačka jedinica prelazi u fazu IZVRŠI.

Page 77: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

o

•V-AB15

GtBj

D67

4. perioda • na adresnu sabirnicu postavlja se sadržaj brojila podataka DC

(ABO - AB15 = 05FF (heksadekadno)); • aktivira se upravljački 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 električki odspaja od

sabirnice - postavlja linije vanjske sabirnice u stanje visoke impedancije;

6. perioda • na adresnu sabirnicu postavlja se sadržaj brojila podataka DC

(ABO - AB15 = 05FF (heksadekadno)); • na sabirnicu podataka postavlja se sadržaj privremenog registra TR

(DBO - DB7 = 24 (heksadekadno)); • aktivira se upravljački signal Piši (Piši 1).

Sada možemo nacrtati stanje na adresnoj sabirnici ABO - AB15, sabirnici podataka DBO -DB7 i upravljačkoj sabirnici (upravljačke linije Čitaj i Piši). Sve to ćemo promatrati u ritmu signala vremenskog vođenja <j>. Budući da nam je signal vremenskog vođenja referentni signal, njega ćemo prvog nacrtati, a zatim slijedi stanje na adresnoj sabirnici, upravljačkoj sabirnici i konačno, sabirnici podataka. (Opaska: umjesto crtanja stanja na svim adresnim linijama ABO - AB15 uobičajeno je da se u tijekom periode signala vremenskog vođenja, simbolično prikaže da su neke adresne linije u logičkoj "0" a neke u logičkoj "1", a između tih se signala napiše heksadekadna vrijednost koja predstavlja adresu na sabirnici. Slično vrijedi i za sabirnicu podataka DBO - DB7.)

Slika 3.8 prikazuje stanje na sabirnicama tijekom izvođenja instrukcije INC$05FR perioda perioda perioda perioda perioda

#1 perioda

#2

t / \ / \ / \ \ / \ / \ , t

* *

W

t . ^ 0100 ^ 0101 ^ 0102 ^ 05FF )

* * ( °5FF ) W

t . ^ 0100 ^ 0101 ^ 0102 ^ 05FF ) ( °5FF )

W

t .

* *

t . / \ \ / \ \ * *

t . / \ \ / \ \ t .

* *

T-

t h

* * \ T-

t h \ T-

t h

• *

w

t

• *

w

t

w

t , ... w

vrijeme pristupa memoriji

faza pribavi (fetch) faza izvrši (execute)

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

legenda: * * - stanje visoke

impedancije

Page 78: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

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 određuje operaciju "punjenja" (ptnemonik LDA specificira ope-raciju Load - puni) akumulatora AC s podatkom koji se nalazi na memorijskoj lokaciji 0007(heksadekadno). Instrukcija LDA koristi adreslranje nulte memorijske stranice (ras-pon adresa od 0000 do 00FF) ili kako se još naziva izravno kratko adreslranje. Značajka ovog načina adresiranja je da je dovoljna adresna komponenta duljine samo jednog bajta. Podrazumijeva se da je značajniji bajt adrese 00 (heksadekadno). Dakle, adresa memorijske lokacije s koje će se dohvatiti podatak i smjestiti u akumulator AC je: 0007 (heksadekadno).

adresa ^ sadržaj

0006

0007

0008

A3

00FF

0100 7C

0101 05

0102 FF

0103 96

0104 07

0105 43

0106 sljedeća inst.

INC $05FF

LDA $07

} СОМА

SI. 3.9 Prikaz sadržaja dijela memorije za Primjer 3.2.

Operacijski kod instrukcije LDA je 96 (heksadekadno), a instrukcija se sastoji od dva bajta: operacijskog koda i manje značajnog bajta adrese operanda (07).

Instrukcija COMA pretvara početni sadržaj akumulatora AC u njegov jedinični komple-ment Instrukcija COMA ima operacijski kod 43 (heksadekadno) i duljine je samo jednog bajta.

Ako pretpostavimo daje sadržaj memorijske lokacije 0007 A3: M(0007)=A3,

tada posljedica izvođenja programskog odsječka: LDA $07 COMA

je (AC) = 5C; u akumulatoru AC je pohranjen jedinični komplement operanda A3.

Page 79: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. R1BARIĆ - GRAĐA RAČUNALA 73

Slika 3.10 prikazuje stanje na sabirnicama tijekom izvođenja gornjeg programskog odsječka.

Vidimo i ovdje da tijekom faze IZVRŠI instrukcija COMA ne koristi vanjsku sabirnicu te da se procesor električki odspaja od sabirnice.

Ф

AB0-AB15

wgenda: " * - stanje visoke

impedancije

Čitaj

Piši

DBO - DB7

perioda #1

perioda #2

perioda #3

perioda #4

perioda perioda

vnjeme pristupa memoriji

/ \ / \ 1 \ / \ / \ . / \ .. * #

p.

4

^ 0 1 0 3 ^ 0 1 0 4 ^ 0 0 0 7 ^ 0 1 0 5 ^ * #

p.

4

^ 0 1 0 3 ^ 0 1 0 4 ^ 0 0 0 7 ^ 0 1 0 5 ^

p.

4

* *

p

t / \ \ \ / \ * *

p

t / \ \ \ / \ p

t

* *

p.

t h

p.

t h

* *

w

t •i") 4 « ) * *

w

t •i") 4 « )

w

t

« • • • ' • • —

w

>4-faza pribavi faza izvrši faza pribavi

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

faza izvrši

Ako analiziramo model procesora i primjer izvođenja instrukcija (INC $05FF, LDA $07, COMA), uočit ćemo da je procesor akumulatorsko orijentiran procesor, da su mu strojne in-strukcije promjenjive duljine (jedan bajt, dva bajta ili tri bajta) te da vrijeme njihova izvo-đenja varira od dvije do šest perioda signala vremenskog vođenja - ovisno о složenosti strojne instrukcije. Osim toga, vidimo da pored instrukcije LDA i STA (engl. store - pohrani), procesor komunicira u fazi IZVRŠI s memorijom i instrukcijom INC koja je po svom značenju aritmetička. Ove nabrojene značajke u velikoj mjeri određuju 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 izvođenje strojnih instrukcija, međutim, postavlja se pitanje koliko se model procesora razlikuje od modela stvarnih 8-bitnih procesora. U priručniku za 8-bitni mikroprocesor MC 6800 možemo naći sljedeće podatke koji se odnose na instrukciju INC (Tablica 3.1.)

Način adresirana

Instrukcija Mnemonik Izravni (engl. Direct Extended)

Instrukcija Mnemonik operacijski kod

(OP) broj perioda

H broj bajtova

(#) inkrement INC C7 6 3

Oblica 3.1. Detalj iz priručnika za mikroprocesor MC 6800

Page 80: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

74 3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC I RISC PROCESORA

Iz tablice 3.1 vidimo da je broj perioda signala vremenskog vođenja potreban za izvođe-nje strojne instrukcije INC jednak broju perioda za naš model procesora. Duljina strojne instrukcije iznosi tri bajta kao i u našem modelu.

Slika 3.11 prikazuje model mikroprocesora MC 6800. Vidimo da se model MC 6800 razliku-je samo u nekoliko detalja:

• MC 6800 je također^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

međuspremnik podataka MDR (8)

о f interna sabirnica

A akumulator (8)

В akumulator (8) instrukcijski registar

(8)

ALU sklopovi za dekodiranje

zastavice (CCR) registar uvjeta

Л 7 ^ sklopovi za vremensko vođenje

i upravljački sklopovi

IX indeksni registar

(16)

PC programsko brojilo (16)

SP kazalo stoga (16)

adresni međuspremnik MAR (16)

signal vremenskog vođenja i upravljački signali

Slika 3.11 Model mikroprocesora MC 6800

adresna sabirnica AB0-AB15

Funkciju registra kazala stoga SP upoznat ćemo u nastavku kada bude riječi o stogu. Indeksni se registar upotrebljava pri indeksnom načinu adresiranja, pri kojem se adresa (ili točnije adresna komponenta) u instrukcijskoj riječi i sadržaj indeksnog registra pribrajaju u cilju određivanja stvarne (efektivne) adrese operanda. Na primjer, ako je sadržaj 16-bit-nog indeksnog registra (IX) = 0300 (heksadekadno), a instrukcija LDA koristi indeksni način adresiranja:

LDA 2,X,

pri čemu je, u skladu s asemblerom ,X oznaka indeksnog načina adresiranja, onda će sadr-žaj akumulatora biti napunjen sa sadržajem memorijske lokacije čija je adresa 0302 jer se ona dobiva kao 0300 + 2, pri čemu je 2 adresna komponenta sadržana u instrukciji LDA 2,X.

Page 81: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 75

Indeksnom registru pridružene su strojne instrukcije poput LDX (napuni indeksni registar), STX (pohrani sadržaj indeksnog registra), INX (inkrementiraj sadržaj indeksnog registra) i D£X(dekrementiraj sadržaj indeksnog registra) kojima se olakšava pristup strukturama po-dataka koje su pohranjene u memoriji.

Mikroprocesor MC 6800 koristi dvofazni signal vremenskog vođenja, odnosno signale <j>l i 4>2 sadržaj programskog brojila PC povećava se za 1

sadržaj PC-a na adresnu sabirnicu

<D1

02

podaci se postavljaju na vanjsku sabirnicu podataka

A

podaci su prihvaćeni u procesoru ili memoriji

/

SI. 3.12 Dvofazni signal vremenskog vođenja

(slika 3.12). Signal <j)1 zadužen je za sinkronizaciju aktivnosti na adresnoj sabirnici, a §2 za sinkronizaciju aktivnosti na sabirnici podataka.

#1 #2 #3 4 • 4 > 4 •

•1 " V ® " V © " \ n ®

R/W

00-D7

z

/ \ l 7

/ \ \ \

d Z Z t C 3 ......... = C Z > : . adresa adresa (značajniji bajt) (manje značajniji bajt)

podatak iz akumulatora

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

Page 82: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

76 3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

Slika 3.13 prikazuje stanje na sabirnici računala koje se temelji na MC 6800 (na slici su ozna-čene vremenske međuzavisnosti signala cj> 1 i aktivnosti na adresnoj sabirnici, odnosno si-gnala <j)2 i aktivnosti na sabirnici podataka) za instrukciju STA A $010F; pohrani sadržaj 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 opće 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 označen kao W - Z ima funkciju registra brojila podataka. S obzirom na značajke modela, mikroprocesor Intel 8080 možemo promatrati kao registarsko orijentirani procesor.

sabirnica podataka DB0-D87

memorijski registar podataka MDR (8)

interna sabirnica (8 bita)

akumulator (A)

(8)

privremeni registar (TMP)

(8)

x / ALU

instrukcijski registar ^

S Z

sklopovi za dekodiranje

zastavice (8)

upravljački signali

N 7 ^

w (8) 2 (8)

B (8) C (8)

D (8) E (8)

H (8) L (8)

kazalo stoga SP ^

programsko brojilo PC

sklop za inkrementiranje/dekrementiranje

sklopovi za vremensko vođenje i upravljački sklopovi

memorijski adresni registar MAR ^

signal vremenskog vođenja i upravljački signali

adresna sabirnica AB0-AB15

SI. 3.14 Model mikroprocesora Intel 8080

Page 83: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 77

r >

i

3.5. POJEDNOSTAVLJENI MODEL RISC PROCESORA Slika 3.15 prikazuje pojednostavljeni model 32-bitnog RISC procesora. Odmah možemo uočiti neke bitne arhitektonske značajke koje ga razlikuju od pojednostavljenog 8-bitnog CISC procesora: procesor je registarsko orijentiran stroj - ima 32 32-bitna registra opće na-mjene (RO - R31) i ima tri 32-bitne interne sabirnice - sabirnicu operanda A, sabirnicu ope-randa B i sabirnicu rezultata C.Trosabirnička interna struktura upućuje na to da se posebna pažnja posvetila poboljšanju 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 utječe na performansu procesora. Na primjer, za osnovnu ope-raciju zbrajanja sadržaja dvaju registara iz skupa registara opće namjene, u slučaju jedne interne sabirnice, operandi se moraju slijedno u vremenu prenijeti u aritmetičko-logičku jedinicu. U slučaju trosabirničke strukture, oba se operanda iz skupa registara opće namje-ne prenose istodobno (jedan sabirnicom operanada A, a drugi sabirnicom operanada B), istodobno je moguće prenijeti i rezultat prethodne aritmetičke ili logičke operacije preko sabirnice rezultata C u odredišni registar u skupu registara opće namjene. Dakle, istodobno se izvode dvije operacije čitanja i jedna operacija upisa u skupu registara opće namjene. Naravno, zahtijeva se posebna izvedba skupa registara - on mora biti organiziran kao dvo-izlazni 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 jednosabir-ničku izvedbu procesora za 48% i više posto.

Uočimo još jednu značajku modela - registri opće namjene (RO - R31), instrukcijski registar IR, programsko brojilo PC te sučelni 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 opće 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 računalo 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 riječi koja je duljine 8-bita jednoznačno je pridružena adresa. Usprkos bajtnoj adresnoj zrnatosti, procesor može dohvatiti samo 32-bitnu riječ - 4 slijedna bajta. Četiri se bajta dohvaćena iz memori-je smještaju u 32-bitni registar tako da najmanje značajnom bajtu registra odgovara bajt s najvišom memorijskom adresom (slika 3.17). Takav se način uređenja slijeda bajtova naziva Big-Endian Byte Ordering.

Page 84: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

78 3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

C sabirnica A sabirnica B sabirnica

SI. 3.15 Pojednostavljeni model 32-bitnog procesora RISC

Page 85: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 79

b31

RO

R1

R2

R29

R30

R31

b31

PC

b31

IR

32 32-bitna registra opće namjene

programski model RISC procesora

SI. 3.16 Programski model računala RISC

bo

bo

bo

b7 bo

232-3

2 3 2 -2

232-1

232 bajta

radna memorija

Primjer 3.3.

Obično se, posebice u novijim procesorima, duljina riječi procesora ne poklapa s du-ljinom riječi u memoriji koju smatramo fizičkom jedinicom informacije - onoj kojoj je jednoznačno pridružena adresa. U slučaju našeg modela RISC imamo 32-bitnu riječ pro-cesora, a fizička jedinica informacije je bajt - svakom je bajtu u memoriji jednoznačno pridružena adresa.

Glede načina smještanja slijeda bajtova u registre procesora razlikujemo dvije osnovne organizacije:

i) uređenje slijeda batova slijeva udesno ili uređenje po njihovim rastućim adresama (engl. Big-Endian Byte Ordering). U tom se uređenju bajt koji ima najvišu memo-rijsku adresu smješta na poziciju najmanje značajnog bajta u registru procesora. Slijedno tome, bajt s najnižom adresom nalazi se na poziciji najznačajnijeg bajta u registru procesora. Slika 3.17 prikazuje uređenje slijeda bajtova po njihovim ra-stućim adresama;

i i) u ređenje si ij ed a bajtova zdesna ulijevo i I i uređenje po njihovim padajućim adresama (engl. Little-Endian Byte Ordering). U tom slučaju najmanje značajan bajt u registru ima najnižu adresu (slika 3.18), a najznačajniji bajt odgovara bajtu koji u memoriji ima najvišu adresu.

Page 86: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

80 3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

sadržaj adresa

b31 b24 b23 b16 b15 b8 b7 b0

AC 01 FF 7C •

32-bitni registar i

najznačajniji bit

najmanje značajan bit

AC

01 FF 7C

bajt

aaaa

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

memorija

SI. 3.17 Uređenje slijeda batova slijeva udesno (Big-Endian Byte Ordering)

smjer rasta adresa

b31 b24 b23

7C b16 blS

FF b8 b7

01 bO

AC 32-bitni registar

najznačajniji bit

najmanje značajan bit

sadržaj

AC 01

FF 7C

bajt

adresa

aaaa

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

i smjer rasta adresa

memorija

SI. 3.18 Uređenje slijeda bajtova zdesna ulijevo (Little-Endian Byte Ordering)

Opišimo model RISC procesora na razini strojnih instrukcija. Sve su instrukcije u skupu strojnih instrukcija "čvrste" duljine (32 bita). To je jedna od osnovnih značajki RISC pro-cesora. Druga osnovna značajka RISC procesora je reduciran skup strojnih instrukcija, odnosno relativno mali broj strojnih instrukcija. Instrukcije se mogu podijeliti na:

i) aritmetičke i logičke instrukcije, ii) instrukcije za pristup memoriji,

iii) instrukcije grananja, iv) mješovite instrukcije.

Page 87: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 81

3.5.1. ARITMETIČKE I LOGIČKE INSTRUKCIJE

Aritmetičke i logičke instrukcije možemo razvrstati na one koje specificiraju operacije s jed-nim operandom (unarne) i one koje određuju operacije s dva operanda (binarne). Format aritmetičke ili logičke instrukcije s jednim operandom prikazanje na slici 3.19.

Ь31 Ь27 Ь26 Ь22 Ь21 Ы 7 Ы 6 Ы 2 Ы 1 bO

op ra ne koristi se rc ne koristi se

SI. 3.19 Format aritmetičke ili logičke instrukcije s jednim operandom

Instrukcija je organizirana na sljedeći način: pet najznačajnijih bitova (bitovne pozicije Ь27 - b31) predstavljaju operacijski kod instrukcije. Na temelju njegove duljine može se zaključiti da će se skup strojnih instrukcija sastojati od maksimalno 32 različite instrukcije (25). Naime, podsjetimo se, i za instrukcije vrijedi načelo jednoznačnosti - svakoj instrukciji pripada jednoznačna bitovna kombinacija sadržana u polju operacijskog koda. Polje ra (bi-tovne pozicije Ь22-Ь26) sadržava 5-bitnu kombinaciju koja određuje jedan od 32 registra u skupu registara opće namjene, tj. registar R[ra], koji će imati ulogu odredišta rezultata. 5-bitno polje rc (bitovne pozicije Ы2-Ы6) određuje izvorište 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 aritmetičkih i logičkih instrukcija s jednim operandom čine samo dvije instrukcije: Aritmetička instrukcija:

neg ra, rc ; R[ra]«- - R[rc],

kojom se izvodi potpuni komplement na operandu dohvaćenom iz registra R[rc] i rezultat smješta u registar R[ra].

Logička instrukcija: notra, rc ; R[ra] <- R[rc],

koja iz registra R[rc] dohvaća operand, pretvara ga u jedinični komplement i smješta ga u odredišni 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 izvođenja ove instrukcije ako su neposredno prije njezina izvođenja sadržaji 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 izvođenja instrukcije sadržaji registara R[16] i R[22] bit će sljedeći: R[22j = 00000AFF - sadržaj izvorišnog registra se ne mijenja, R[16] = FFFFF501 - registar R[16] sadržava potpuni komplement, tj. negativnu vrijednost

operanda OOOOOAFF.

Page 88: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

82 3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

Grupu aritmetičkih i logičkih 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 ; R[ra] «- R[rb] A R[rc]; pri čemu A označava logičko I or ra, rb, rc ; R[ra]«- R[rb] v R[rc]; pri čemu v označava logičko 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 odredišta za rezultat ra.

b31 b27 b26 b22 b21 b17 b16 b12 bi 1 bO

op ra rb rc ne koristi se

SI. 3.21 Format aritmetičke ili logičke instrukcije s dvama operandima

Uočavamo da je format instrukcije troadresni. Svakoje adresno polje duljine 5 bitova i služi 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 načelom oblikovanja procesora: Svi operandi koji sudjeluju u aritmetičkim ili logičkim operacijama moraju se prethodno nalaziti u registrima iz skupu registara opče na-mjene. Za takav tip instrukcija kažemo da su registar - registar. Osnovni razlog za takav zahtjev jest smanjiti promet podataka između procesora i memorijske jedinice što vodi ubrzanju operacija. U načelu vrijedi daje pristup memorijskoj jedinici vremenski jedna od najzahtjevnijih operacija.

Za model CISC procesora razmatrali smo instrukciju tipa INCM, gdje je M adresa memorij-ske lokacije, koja je s obzirom na mjesto izvora i odredišta operanda instrukcija tipa me-morija - memorija. Instrukcije koje obavljaju aritmetičku ili logičku operaciju na operandu koji je pohranjen u memoriji, a zatim rezultat operacije pohranjuju natrag u memoriju, nisu dopuštene u RISC arhitekturi.

U grupi aritmetičkih i logičkih instrukcija nalaze se instrukcije koje koriste usputno ili uključ-no adresiranje (engl. immediate) u kojem je vrijednost operanda neposredno uključena u samoj instrukciji (u polju c2) (slika 3.22). Za model RISC procesora to su sljedeće instrukcije:

addi ra, rb, c2 ; R [ra] «- R[rb] + c2 andi ra, rb, c2 ; R[ra] <- R[rb] A C2 (logičko I) ori ra, rb, c2 ; R[ra]«- R[rb] v c2. (logičko ILI)

Zadnje slovo u tro- ili četveroslovčanom mnemoniku i (immediate) upućuje nas na to daje riječ o instrukciji koja koristi usputni način adresi ranja (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 načinu 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

Page 89: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 83

Vidimo da je polje c2 predviđeno za smještanje usputnog podatka u instrukciji duljine 17 bitova (bO- b 76). Taj se usputni podatak treba pretvoriti u 32-bitni i tek onda može sudje-lovati u aritmetičkoj ili logičkoj operaciji. Pretvorba 17-bitnog podatka u 32-bitni, nepo-sredno prije negoli se izvede specificirana aritmetička ili logička operacija, obavlja se u ari-tmetičko-logičkoj 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 načina adresiranja dvojaki su: • djelotvorno se iskorištava memorija (na istoj memorijskoj lokaciji na kojoj je pohra-

njena instrukcija pohranjen je i podatak), • ubrzava se izvođenje programa (već se tijekom faze PRIBAVI dohvaća i operand koji

je uključen u instrukciji). U skupu aritmetičkih i logičkih instrukcija nalaze se i posmačne instrukcije (engl. shift in-struction). One posmiču operand ulijevo, udesno ili kružno za broj binarnih mjesta od 0 - 31. Slika 3.23 prikazuje format posmačne instrukcije.

b31 b27 b26 b22 b21 bi 7 b i 6 b5 b4 bO

op ra rb ne koristi se iznos

SI. 3.23 Format posmačne instrukcije

5-bitno polje (pozicije b27 - b31) sadržava operacijski kod kojim se specificira jedna od operacija posmaka (shr-posmak udesno, shra- aritmetički posmak udesno, sh/-posmak ulijevo, shc - kružni posmak), 5-bitno polje ra određuje odredišni registar R[ra] u koji će se smjestiti posmaknuti operand, a 5-bitno polje rb specificira izvor operanda, tj. registar R [rb].

Pet najmanje značajnih bitova (bO - b4) instrukcije sadržava 5-bitni nepredznačeni 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 posmiče 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

SI. 3.24 Format instrukcije shr r12, rl4,5

rb iznos p o s m a k a

U modelu RISC razlikujemo dvije vrste posmačnih instrukcija udesno: logički posmak ude-sno shr i aritmetički posmak udesno shra. Slika 3.25 prikazuje oba načina posmaka udesno. Pri logičkom posmaku udesno za 1s n <; 31, n najznačajnijih bitovnih pozicija poprima vri-jednost 0. Aritmetički posmak udesno izvodi se tako da se najznačajniji bit operanda ne posmiče, već ostaje sačuvan na tom mjestu i širi se za n - 1 mjesta udesno. Nakon toga mu se pridružuju ulančavanjem bitovi izvornog operanda b31 - bn.

Page 90: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

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

prije logičkog posmaka udesno nakon logičkog posmaka udesno

a) logički posmak udesno

1 0 0 1 0 1 1 (3 0 0 0

prije aritmetičkog posmaka udesno > s — s nakon aritmetičkog posmaka udesno bit predznaka ostaje sačuvan

b) aritmetički posmak udesno

SI. 3.25 Logički a) i aritmetički posmak udesno b)

Primjer 3.5.

Prikažimo kako se izvodi aritmetički posmak posmačnom 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 > označava operaciju pojavljivanja n puta bita predznaka izvornog operanda, a # ulančavanje.

Na primjer za:

shra r4, r5,6

ako je R[5] = 10100010000000111111111111111001 i

R[4] = xxxx..... xxx

n =6 R[5] <31>=1 n@1 = 6@1 =111111

konačan rezultat aritmetičkog posmaka udesno za 6 mjesta je: R[4] = 111111 10100010000000111111111111

Umjesto 5-bitnog nepredznačenog cijelog broja, smještenog na bitovom pozicijama bO-b4 posmačne instrukcije (slika 3.23) kojim se specificira za koliko će se mjesta operand po-smaknuti, može se u posmačnim instrukcijama specificirati registar iz skupa registara u ko-jem će pet najmanje značajnih bitova određivati iznos posmaka. U tom slučaju instrukcije:

sh ra, rb, rc ; posmakni R[rb] udesno za broj mjesta određen u R[rc] i pohrani rezultat u R[ra] ; posmakni (aritmetički) R[rb] udesno za broj mjesta određen u R[rc] i pohrani rezultat u R[ra] ; posmakni R[rb] ulijevo za broj mjesta određen u R[rc] i pohrani rezultat u R[ra] ; kružno posmakni R[rb] za broj mjesta određen u R[rc] i pohrani rezultat u R[ra]

imaju format prikazan na slici 3.26.

shra ra, rb, rc

shl ra, rb, rc

shc ra, rb, rc

Page 91: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 85

b31 b27 b26 b22 b21 b i 7 bi 6 b12 bi 1 b5 b4 bO

op ra rb rc ne koristi se 00000

SI. 3.26 Format posmačne instrukcije za slučaj 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 važnih značajki RISC procesora da se jedino strojnim instrukcijama vrste load i store može pristu-piti memoriji. Na primjer, već smo spomenuli, instrukcija / A / C g d j e je M adresa memorij-ske lokacije, nije dopuštena u RISC arhitekturi. Model RISC procesora ima četiri instrukcije load, od toga dvije "prave" (Id i Idr) za dohvat operanda iz memorije i smještanje u jedan od registara u skupu registara opće namjene te dvije instrukcije (la i lar) koje se rabe za oblikovanje 32-bitne adrese i njezino smještanje u jedan od registara u skupu registara opće 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

Opišimo prvo instrukciju load (mnemonik Id). Slika 3.27. prikazuje format instrukcije Id. Instrukcija se izvodi tako da se dohvaćeni podatak iz memorije pohranjuje u odredišni re-gistar koji je određen 5-bitnim poljem ra. Adresa memorijske lokacije s koje se dohvaća podatak određuje se na temelju 17-bitne vrijednost koja je smještena u polju c2 (slika 3.27), i to na sljedeće načine:

• ako je polje rb jednako 00000, onda je to "signal" upravljačkoj jedinici da se 32-bitna adresa memorijske lokacije formira uporabom 17-bitne vrijednosti smještene u polju c2 na koju se primjenjuje postupak širenja bita predznaka (signal-extended). Slika 3.28 pojašnjava postupak širenja bita predznaka. Bit na bitovnoj poziciji bi6 predstavlja bit predznaka 17-bitne konstante upisane u polju c2. On se postupkom širenja bita predzna-ka kopira na sve bitovne pozicije od b17 do b31 i na taj način oblikuje 32-bitnu vrijed-nost koja se tumači kao 32-bitna adresa. Dakle, ako je b 16 jednako 0, onda će bitovi na bitovnim pozicijama od b17ćo b31 poprimiti vrijednost 0. U slučaju kada je b16 jednako 1, onda će bitovi na bitovnim pozicijama od b17 do b31 poprimiti vrijednost 1. Ovakav način adresiranja, odnosno određivanja efektivne adrese naziva se u RISC modelu izra-van ili direktan.

Page 92: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

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 podra-zumijeva da je rb - 0. Operacijski kod instrukcije Id je 00001, ra je 00010 i c2 je:

b16 bO 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1,

i odgovara vrijednosti 65 (dekadno).

Širenjem bita predznaka dobiva se 32-bitna adresa memorijske lokacije koja je izvor operanda:

b31 b16 bO 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 0 0 0 0 0 1

Efektivna, 32-bitna adresa je 00000041 (heksadekadno). (Opaska: pod efektivnom adre-som razumijeva se konačna adresa pomoću koje se pristupa podatku - operandu ili po-moću koje se pristupa odredištu - lokaciji na kojoj se pohranjuje podatak (ili rezultat neke operacije).)

b31 b27 b26 b22 b21 b17 b16 bO

00001 00010 00000 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1

op ra rb c2

SI. 3,29 Format instrukcije Id r2,65

• ako je, međutim, polje rb različito 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 način adresiranja naziva bazno adresiranje s pomaknućem

Page 93: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 87

(engl. based, displacement addressing mode). Važno je napomenuti da se efektivna adre-sa izvorišta računa tijekom izvođenja instrukcije (engl. run time), a ne tijekom prevođenja programa.

Ako c2 ima vrijednost 0, onda je riječ o registarsko posrednom ili registarsko indirektnom načinu adresiranja jer je adresa izvorišta određena 32-bitnim sadržajem registra R[rb].

Instrukcija loadaddress (mnemonik/a) je specifična load instrukcija koja ne dohvaća ope-rand iz memorije, već samo služi za oblikovanje 32-bitne adrese koja će biti pohranjena u jednom od registara iz skupa registara opće 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 pomaknućem:

la ra, c2(rb) ; R[ra] <-c2 + R[rb]

U oba se potonja slučaja na c2 primjenjuje širenje bita predznaka. Napomenimo još da se za bazno adresiranje s pomaknućem efektivna adresa koja će biti smještena u R[ro] računa tijekom izvođenja programa (a ne tijekom prevođenja).

Instrukcija store (mnemonik st) koristi jednak format instrukcije kao load ali izvodi "obr-nutu" operaciju: pohranjuje sadržaj specificiranog registra u memoriju. I ovdje vrijedi:

• ako je rb = 0, onda se adresa odredišta dobiva širenjem bita predznaka 17-bitne vri-jednosti upisane u polju c2.

• ako je rb * 0, onda se efektivna adresa odredišta 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 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1

op ra

SL 3.30 Format instrukcije str22,27(r6)

rb c2

Primjer instrukcija st koja koristi registarsko posredni način adresiranja: str 16,0(r9)

pohranit će sadržaj registra R[16] na memorijsku lokaciju čija je adresa sadržana 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 memo-rijske lokacije, koja je s obzirom na mjesto izvora i odredišta operanda instrukcija tipa memorija-memorija. Instrukcije koje obavljaju aritmetičku ili logičku operaciju na ope-randu koji je pohranjen u memoriji, a zatim rezultat operacije pohranjuju natrag u me-moriju, nisu dopuštene u RISC arhitekturi. To znači da se operacija s jednakim rezultatom

Page 94: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

88 3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

kao stoje rezultat izvođenja CISC instrukcije INCM mora nadomjestiti u RISC procesoru sa sljedećim programskim odsječkom:

Id ra, c2(rb) ; R[ra] <- M[c2 + R[rb]] addi ra, raj ; R [ra] «- R [ra] + 1 st ra, c2(rb) ; M[c2 -f R[rb]) R [ra]

Prije negoli objasnimo instrukcije koje koriste relativni ili odnosni način adresiranja Idr, str i lar, pogledajmo ograničenja izravnog ili direktnog adresiranja kod kojeg se efektivna adresa određuje samo na temelju širenja bita predznaka.

Pretpostavimo da je 17-bitna vrijednost zapisana u polju c2 pozitivna. U skladu s notacijom potpunog komplementa to znači da je najznačajniji bit [bi6) jednak 0. Raspon 17-bitne konstante je u tom slučaju 00000000000000000 - 01111111111111111 (binarno). Širenjem bita predznaka određen je adresni potprostor: 00000000 - 0000FFFF (heksadekadno).

Pretpostavimo da je sada 17-bitna konstanta negativna (najznačajniji bit je 1). U tom je slučaju raspon konstante 10000000000000000 - 11111111111111111 (binarno). Širenjem bita predznaka određenje drugi adresni potprostor: FFFF0000 - FFFFFFFF (heksadekadno) kojem se može pristupiti instrukcijama Id ili sf izravnim načinom adresiranja. Svaki od ta dva potprostora veličine je 64 K (216) bajtova.To je samo mali dio od ukupnog adresnog prostora veličine 4G (232) bajtova. Pristup operandima koji su pohranjeni izvan spomenuta dva potprostora ostvaruje se uporabom registarsko posrednog načina adresiranja i ba-znog adresiranja s pomaknućem.

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 ra c l

SI. 3.31 Format instrukcije Idr i str

Efektivna se adresa izvorišta operanda PC + c1 računa tijekom izvođenja programa i re-lativna je u odnosu na trenutni sadržaj programskog brojila PC. Primjećujemo da je ovaj način adresiranja sličan baznom adresiranju s pomaknućem samo što sada ulogu baznog registra preuzima programsko brojilo PC. Pomaknuće je sadržano u 22-bitnom instrukcij-skom polju cl (slika 3.31) tako da je omogućeno adresiranje operanada u rasponu od ± 221

u odnosu na sadržaj programskog brojila PC. Relativni način adresiranja čini instrukcije, a time i programe premjestivim (engl. relocatable) - programski moduli i njima pripadajući podaci mogu se premještati u memoriji bez mijenjanja pomaknuća (jer je njihov položaj definiran tekućim sadržajem programskog brojila PC).

Primjer 3.9.

Instrukcija: Idr rl 6,-65

dohvaća operand s memorijske lokacije M[PC - 65] i smješta ga u R[16].

Page 95: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 89

Slika 3.32 prikazuje format instrukcije. 5-bitni operacijski kod instrukcije je 00010, a 22-bitna konstanta (pomaknuće) je 3FFFBF.

b31 b27 b26 b22 b21 bO

00010 10000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1

op

S I 3.32 Format instrukcije Idrr16, -65

ra cl

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

pohranjuje sadržaj registra R[ra] na memorijsku lokaciju s efektivnom adresom PC + cl.

Ako pažljivije pogledamo klasifikaciju tipova instrukcija za naš model RISC procesora, uočit ć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 ko-jem se adrese registra ulazno-izlaznih jedinica smatraju dijelom memorijskog adresnog prostora te se tim registrima pristupa instrukcijama load i store. U tom slučaju instrukcija st ima funkciju izlazne instrukcije (out), a instrukcija Id funkciju ulazne instrukcije (in).

3.5.3. INSTRUKCIJE GRANANJA

Instrukcije grananja imaju važnu ulogu - one su jedan od preduvjeta automatskom izvo-đenju programa jer se, u pojedinim njegovim točkama (ovisno o vrijednosti neke varija-ble), može izabrati alternativni put izvršavanja 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 IZVRŠI modificira sadržaj programskog broji-la PC. Na taj je način određena ciljna instrukcija koja će biti pribavljena u sljedećoj 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 bi 1 b3 b2 b0

op ne koristi se rb rc ne koristi se Cond

SI. 3.33 Format instrukcije br

Opišimo format instrukcije. Operacijski kod instrukcije, kao i kod svih ostalih formata za naš model RISC procesora, zauzima pet najznačajnijih bitovnih pozicija (b27-b31). Polja b22 - b26 se ne koriste. Polje rb (bitovne pozicije b17~ b21) određuju registar R[rb] koji sadržava 32-bitnu adresu ciljne instrukcije. Sadržaj registra R[rb] bit će prenesen u pro-gramsko brojilo PC tijekom faze IZVRŠI. Polje rc određuje registar R[rc] čiji će sadržaj biti ispitan. Ovisno o ishodu tog ispitivanja tijekom izvođenja instrukcije grananja donijet će se odluka hoće li se grananje dogoditi. Ako uvjet grananja nije ispunjen, program će se nastaviti sa sljedećom instrukcijom u slijedu. Tri najmanje značajna bita instrukcije, ozna-čena s Cond, određuju koji se uvjet grananja ispituje. On (uvjet grananja) je i određen mnemonikom instrukcije grananja:

Page 96: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

90 3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

mnemonik

brriv, brlnv br, brl

Cond <2...0>

000 001 010 011 100 101

Uvjeti grananja

nikada bezuvjetno (uvijek granaj)

brzr, brlzr brnz, brlnz brpl, brlpl brmi, brlmi

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 sadržaj ispitati, a polje rb određuje registar koji sadržava adresu ciljne instrukcije (slika 3.33).

Na primjer, instrukcija "granaj ako je nula"

bit će prevedena asemblerom u oblik u kojem će tri najmanje značajna bita 32-bitne in-strukcije imati vrijednost 010 i time odrediti uvjet koji se ispituje. No treba pripaziti, nai-me sve instrukcije vrste br (br, brzr brnz brpl brmi) imaju isti operacijski kod (01000), ali se razlikuju po 3-bitnoj kombinaciji sadržanoj u polju Cond Na neki način, ovo 3-bitno polje možemo promatrati kao "proširenje" 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 smještanjem sadržaja registra R[rb] u pro-gramsko brojilo PC.

Instrukcija branch and link (mnemonik brl) ima operacijski kod 01001 i izvodi se tako da prije grananja pohranjuje sadržaj programskog brojila PC u jedan od registara u skupu registara opće namjene (koji poprima ulogu tzv. poveznog registra), a zatim u zavisnosti od uvjeta grana na ciljnu instrukciju.

Na primjer, instrukcija "poveži i granaj ako je sadržaj registra R[rc] pozitivan" brlpl ra, rb, rc

izvodi se tako da se prvo sadržaj programskog brojila PC smješta u R[ra], zatim se ispituje uvjet je li sadržaj registra R[/r] pozitivan, i ako je, onda se sadržaj registra R[rb] smješta u programsko brojilo PC. Ako uvjet nije ispunjen, sadržaj R[rc] nije pozitivan, grananje se neće dogoditi, ali će se sadržaj programskog brojila PC ipak pohraniti u R[ra].

Instrukcija brl ima format sličan 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 između glavnog programa (ili pozivajućeg programa) i potprograma (ili pozvanog programa), gdje povezni registar pohranjuje povratnu adresu (o tome više i podrobnije u poglavlju o uprav-ljačkoj jedinici).

Možemo primijetiti pomalo"čudne"instrukcije brnv(branch never-nikad ne granaj) i brlnv (branch and link never - poveži i nikad ne granaj) - instrukcija brnv neće nikada obaviti grananje, ali zato troši vrijeme potrebno za njezino izvođenje te se može koristiti za vre-mensku sinkronizaciju (vidi instrukciju nop). Instrukcija brlnv također ne grana, ali je po-sljedica njezinog izvođenja, bez obzira što nema grananja, pohranjivanje tekućeg sadržaja programskog brojila PC u registar R[ra].

brzrr31,r1 ; PC R[31] ako je R[1] = 0

Page 97: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 91

I još jedno zapažanje, naš model RISC procesora nema statusni registar SR sa zastavicama koje koriste instrukcije uvjetnog grananja, već se uvjeti izravno utvrđuju ispitivanjem sadr-žaja registra R[rc].

(Opaska: RISC procesori imaju statusni registar koji se obično naziva PSW (Procesor Status Word) u kojem se nalaze zastavice uvjeta, zastavice za indikaciju glavnih stanja procesora te zastavice za rukovanje prekidom. U tom slučaju, kao što je bio slučaj u modelu CISC pro-cesora, instrukcije uvjetnog grananja ispituju stanje zastavica i na temelju njih se donosi odluka o grananju.)

3.5.4. MJEŠOVITE 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 ništa. Naravno, njezino izvođenje "troši" procesorsko vrijeme te se ona koristi za vremensku sinkronizaciju, npr. u komunikaciji računala s vanjskim procesom. U protočnoj arhitekturi procesora ima vrlo važnu ulogu u razrješavanju hazarda tako da je jednako za-stupljena u skupu instrukcija CISC i RISC procesora (vidi poglavlje Protočnost).

Instrukcija stop (operacijski kod 00001) upotrebljava se za zaustavljanje stroja na specifici-ranoj točki programa.

Slika 3.34 prikazuje instrukcijski format za nop i stop instrukcije. Vidimo da je instrukcija duljine 32-bita, ali se koristi samo pet najznačajnijih bitova (polje operacijskog koda).

b31 b27 b26 b0

op ne koristi se

SI. 3.34 Format instrukcije nop i stop

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 aritmetičko-logičku jedinicu sa sklopovljem za množenje na temelju Boothovog algoritma (8. poglavlje) te skup registara opće namjene od 32 32-bitna registra. ARM procesor ima i pomalo neuobičajenu značajku - programsko brojilo PC i statusni registri smješteni su u registrima u skupu registara opće namjene.

Page 98: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

92 3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

sabirnica podataka

SI. 3.35 ARM 6 procesor RISC arhitekture

Page 99: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 93

4. POGLAVLJE

PERFORMANSA RAČUNALA

4.1. UVOD: PERFORMANSA, CIJENA I OMJER CIJENE I PERFORMANSE Veliki se napori na području arhitekture računala ulažu u povećanje performanse računala. Sve odluke tijekom oblikovanja računarskog sustava - od pažljivog definiranja i oblikova-nja skupa strojnih instrukcija pa sve do implementacijskih tehnika kao što su protočnost (engl. pipelining), priručna memorija (engl. cache), predviđanja grananja, paralelizam na razini funkcijskih jedinica, procesa, instrukcija i dretvi, samo prividno nisu prvenstveno motivirane unapređenjem performanse računala, međutim, vode upravo povećanju per-formanse. Naravno, kada se govori o performansi računala, potrebno je precizno defini-rati što je to performansa računala. Drugi važan atribut računarskog sustava jest njegova cijena. Zahvaljujući razvoju tehnologije, moguće je izgraditi računalo koje je brže od bilo kojeg do danas raspoloživog (komercijalnog) računala, međutim, njegova cijena može biti ograničavajući čimbenik koji će spriječiti realizaciju takva računala. Obično vrijedi da se računalo s najvećom performansom koju mu dopušta tehnološka izvedba neće realizira-ti jer je omjer cijene i performanse takav da je računalo neisplativo, odnosno predstavlja nekonkurentan proizvod na bespoštednom tržištu računala. Pored same cijene računala uzima se u obzir i ukupna cijena tijekom njegova "životna vijeka" (engl. life-cycle cost) koja uključuje iznos jamstva, cijenu servisa, troškove za programsku i sklopovsku nadogradnju te troškove ekološkog zbrinjavanja nakon njegova životnog vijeka.

Obično se, kada govorimo općenito o performansi nekog tehničkog sustava, suočavamo s njezinom višeznačnosti jer u velikoj mjeri ovisi o motrištu ocjenjivača ili korisnika. Dobru su ilustraciju dali D. A. Patterson i J. L. Hennessy kad su za različite vrste putničkih zrakoplova pokušali naći onaj zrakoplov koji je "najbolje performanse". Tablica 4.1. prikazuje osnovne značajke (broj mjesta u zrakoplovu, domet, brzina i cijenu zrakoplova) za pet tipova put-ničkih zrakoplova.

Page 100: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

94 4. POGLAVLJE: PERFORMANSA RAČUNALA

Zrakoplov Broj mjesta u zrakoplovu Domet (km) Brzina (km/h) Cijena (IO6 $}

Airbus A310 250 8300 895 120

Boeing 747 470 6700 980 200

Boeing 777 375 7450 980 180

BAC/Sud Concorde 130 6400 2200 350

Douglas DC-8-50 145 14000 875 80 | i Tablica 4.1. Osnovne značajke za pet tipova putničkih zrakoplova

Koji od zrakoplova iz Ta bi ice 4.1. ima najveću performansu? Ako na to pitanje odgovaraju putnici koji su zainteresirani da do odredišta stignu u najkraćem vremenu, onda bi odgovor bio da je to nadzvučni zrakoplov BAC/Sud Concorde (za trenutak zanemarimo da je povu-čen iz uporabe). No ako je udaljenost odredišta kamo putnik želi stići 8750 km, onda će zra-koplov Douglas DC-8-50 imati najveću 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 odredište nalazi izvan njegovog dometa, vrijeme potrebno da putnici napuste zrakoplov, vrijeme potrebno za formalnosti u zračnoj luci, vrijeme punjenja zrakoplova Concorde go-rivom, 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 umnožak broja putnika (odnosno, broja mjesta u zrakoplovu) i brzine zrakoplova. U tom će slučaju zrakoplov Boeing 747 imati najveću performansu. S motrišta agencije FAA (Federal Avion Administration) naj-veću 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 gledišta aviokompanije) i ci-jenu zrakoplova, onda je prema omjeru cijena/propusnost najbolji zrakoplov Boeing 747. Naravno, ovo je razmatranje vrlo, vrlo pojednostavnjeno, jer kada bi zaista postojao jedin-stveni kriterij koji se odnosi na performansu zrakoplova, onda bi sve aviokompanije imale istu vrstu zrakoplova.

Slično kao što postoje različiti pogledi na performansu zrakoplova, postoje i različiti pogle-di na performansu računala, odnosno računarskog sustava. Na primjer, ako promatramo dva računala koja izvode identičan program, onda ćemo računalo koje brže izvrši program smatrati računalom koje ima veću performansu. Za dva računarska sustava u načinu rada vremenskom podjelom (engl. timesharing), s točke motrišta rukovoditelja centra za auto-matsku obradu podataka (AOP), brži je onaj računarski sustav koji je završio više zadataka ili poslova tijekom dana ili nekog definiranog vremenskog intervala. S druge strane, indi-vidualnog korisnika koji koristi računske usluge AOP centra zanima samo vrijeme odgovo-ra {e ngl. response time, turnaround time, elapsed time) koje je definirano kao vrijeme koje protekne od trenutka započinjanja pa do trenutka završetka njegova programa. Vrijeme odgovora često se naziva i vrijeme izvršavanja (engl. execution time, wall clock time) - ono podrazumijeva ukupno vrijeme koje je potrebno da računalo završi zadatak i uključuje vri-jeme pristupa memoriji i diskovima, vrijeme potrebno za ulazno-izlazne aktivnosti, vrije-me "kućanskih poslova" operacijskog sustava i procesorsko vrijeme izvršavanja (engl. CPU execution time). Često se umjesto vremena izvršavanja kao osnove za određivanje perfor-manse sustava upotrebljava samo procesorsko vrijeme izvršavanja (ono se kratko naziva i

Page 101: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 95

procesorsko vrijeme (engl. CPU time)). Na taj se način žele izlučiti promjenjivi i teško pro-cjenjivi drugi utjecaji (vrijeme potrebno za ulazno-izlazne aktivnosti, vrijeme kućanskih po-slova operacijskog sustava) koji u višeprogramskom sustavu ne ovise samo o određenom korisničkom programu. U tom se slučaju performansa može definirati kao:

Performansa = 1 / (procesorsko vrijeme).

Procesorsko se vrijeme može podijeliti na vrijeme koje procesor troši za izvođenje korisnič-kog programa (korisničko procesorsko vrijeme) i vrijeme procesora za izvođenje funkcija operacijskog sustava koje su namijenjene izvođenju upravo tog korisničkog programa (sistemsko procesorsko vrijeme). Teško je, međutim, precizno odrediti granicu između ko-risničkog i sistemskog procesorskog vremena jer je teško točno razlikovati koje su funkcije operacijskog sustava izričito namijenjene jednom, a koje ostalim korisničkim programi-ma. Pri usporedbi performansi dvaju računala često namjerno zanemarujemo sistemsko procesorsko vrijeme, odnosno ukupno procesorsko vrijeme promatramo kao korisničko procesorsko vrijeme.

Ako se ocjena performanse računala temelji na vremenu odgovora, onda se koristi izraz performansa sustava, a odnosi se na odziv sustava kada je sustav opterećen samo tim kori-sničkim programom (kada je riječ o višeprogramskom, odnosno višekorisničkom računar-skom sustavu).

Performansa koja u obzir uzima samo procesorsko vrijeme obično se naziva performansa procesora (engl. CPUperformance).

4.2. MJERE PERFORMANSE Računala su vremenski diskretni strojevi - u diskretnim vremenskim trenucima dolazi do promjene stanja u sklopovima stroja. Razmaci između tih diskretnih trenutaka određeni su periodom signala vremenskog vođenja (ili taktnog signala) T (engl. clock cycle, clock tick, clock period). Perioda T određena je frekvencijom signala vremenskog vođenja f (engl. clock rate):

T = 1 / f

Osnovna mjera performanse procesora, s motrišta korisnika, temelji se na procesorskom vremenu koje je potrebno za izvođenje programa:

(procesorsko vrijeme) = Ncp xT, (1)

odnosno: (procesorsko vrijeme) = Ncp / f

gdje je Ncp broj perioda signala vremenskog vođenja potreban za izvođenje programa, T perioda signala vremenskog vođenja, a f frekvencija signala vremenskog vođenja.

Performansa procesora je: Performansa = 1 / (procesorsko vrijeme)

Page 102: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

96 4. POGLAVLJE: PERFORMANSA RAČUNALA

Primjer 4.1.

Frekvencija signala vremenskog vođenja je f = 4 GHz, a broj perioda signala vremenskog vođenja koji je potreban za izvođenje 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 izvršenih instrukcija u programu. Broj perioda signala vremenskog vođenja potreban za izvođenje programa Ncp jednak je umnošku broja izvršenih instrukcija u programu i prosječnog broja perioda signala vremenskog vođenja po instrukciji. Prosječan broj perioda po instrukciji označit ćemo s CPI (clock cycles per instruction). Procesorsko vrijeme tada se računa kao:

(procesorsko vrijeme) = (broj izvršenih instrukcija u programu) x CPI x T, (3)

odnosno: (procesorsko vrijeme) = ((broj izvršenih instrukcija u programu) x CPI) / f (4)

Jednadžbe (3) i (4) sadržavaju tri važne arhitektonske značajke koja utječu na performan-su procesora: prosječan broj perioda signala vremenskog vođenja po instrukciji (CPI), fre-kvenciju signala vremenskog vođenja (f) i broj izvršenih instrukcija u programu. U prvoj i trećoj arhitektonskoj značajki odražavaju se karakteristike skupa strojnih instrukcija.

Da bismo dobili procesor sa što je moguće većom performansom, procesorsko vrijeme treba biti što je moguće kraće, a to znači u skladu s jednadžbom (4), treba smanjiti prosje-čan broj perioda po instrukciji (CPI), povećati frekvenciju signala vremenskog vođenja (f) i smanjiti broj (izvršenih) instrukcija u programu. Na žalost, sva su ova tri faktora međusobno ovisna. Na primjer, da bi se smanjio broj prosječnih perioda signala vremenskog vođenja po instrukciji (CPI), strojne instrukcije trebaju biti jednostavnije, odnosno određivati jedno-stavnije operacije. Raspoloživost samo jednostavnih instrukcija, međutim, povećava broj instrukcija u programu jer se u tom slučaju jedna složenija instrukcija mora zamijeniti ve-ćim brojem jednostavnijih instrukcija. Na primjer, instrukcija incM (inkrementiraj sadržaj memorijske lokacije M) se mora zamijeniti trima instrukcijama: ldrl,M, addir1,1 i stM,rh

Povećanje frekvencije signala vremenskog vođenja f znači smanjenje ukupnog raspoloži-vog vremena za izvođenje instrukcije, što uz pretpostavku "očuvanja jednake količine po-sla" koju instrukcija treba obaviti znači povećanje broja perioda signala vremenskog vođe-nja po instrukciji. S druge strane, tehnološke značajke sklopova također određuju granice do kojih se frekvencija signala vremenskog vođenja može povećavati.

Jedno od ograničenja povećanja frekvencije signala vremenskog vođenja 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. dinamič-ka disipacija koja se odnosi na snagu, odnosno potrošak snage tijekom promjena stanja logičkih sklopova u procesoru (engl. switching). Snaga je u tom slučaju proporcionalna frekvenciji, ukupnom kapacitivnom opterećenju svakog od tranzistora i kvadratu napona. Budući da su frekvencija i snaga međusobno korelirani, jasno je da povećanje frekvencije utječe na snagu, a time i na probleme odvođenja topline koja se razvija u silicijskom čipu.

Page 103: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 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 površine nešto veće od 1 cm2 i koju treba odvoditi da bi se osigurali normalni radni uvjeti za procesor.

Jedno od rješenja koje je omogućilo porast frekvencije signala vremenskog vođenja je i smanjenje napona napajanja pa je u posljednjih 20 godina napon napajanja s 5V reduciran na samo IV (obratite pozornost da dinamička disipacija snage ovisi o kvadratu napona).

Tablica 4.2. prikazuje porast frekvencije signala vremenskog vođenja (engl. clock rate) i snage za osam generacija Intelovih procesora (u razdoblju od 25 godina). Na temelju po-dataka iz tablice vidi se povezanost između frekvencije i snage. Naravno, broj tranzistora integriranih na čipu utječe na iznos snage, odnosno na disipaciju snage.

CPI ovisi i o arhitektonskim značajkama procesora i računala, npr. o strukturi i organizaciji procesora, ali i o memorijskom sustava računala te o mješavini tipova instrukcija koje se rabe u programu.

Procesor Godina Frekvencija signala vremenskog

vođenja [MHz] Snaga[W]

80286 1982. 12.5 3.3

80386 1985. 16 4.1

80486 1989. 25 4.9

Pentium 1993. 66 10.1

Pentium Pro 1997. 200 29.1

Pentium 4 VVillamette 2001. 2000 75.3

Pentium 4 Prescott 2004. 3600 103

Ćore 2 Kentsfield 2007. 2667 95

"ablica 4.2 Porast frekvencije signala vremenskog vođenja i snage za osam generacija Intelovih procesora

Primjer 4.2.

Ilustrirajmo odnos frekvencije signala vremenskog vođenja (f) i prosječnog broja perio-da signala vremenskog vođenja za instrukciju (CPI).

Pretpostavimo da imamo dva računala (računalo A i računalo B) s istim skupom strojnih instrukcija, odnosno njihovi su procesori jednaki na razini ISA (Instruction SetArchitecture).

Računala izvršavaju jednak program. Računalo A radi s frekvencijom signala vremen-skog vođenja fA = 1.8 GHz. Računalo B radi s frekvencijom signala vremenskog vođenja fB = 1.0 GHz. Računala A i B, budući da imaju jednake procesore na razini ISA, imaju i jednak broj izvršenih instrukcija za program. Označimo s l broj izvršenih instrukcija za program. Stroj A ima prosječan broj perioda signala vremenskog vođenja za instrukciju CPIA jednak 2.0, stroj B ima CPIB jednak 1.2. Koje je računalo brže i za koliko?

Broj perioda signala vremenskog vođenja za program (računalo A): I x 2.0

Broj perioda signala vremenskog vođenja za program (računalo B): I x 1.2

Page 104: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

98 4. POGLAVLJE: PERFORMANSA RAČUNALA

Izračunajmo procesorsko vrijeme za računalo A: (procesorsko vrijemeA) = I x 2.0 x (1 /(1.8 x IO9)) = (1.111 x 109)l

Izračunajmo procesorsko vrijeme za računalo B: (procesorsko vrijemeB) = I x 1.2 x (1 / (1.0 x 109) = (1.2 x 10"9) I

Računalo A je brže, i to za faktor: ((1.2 x 109) 0/(1.111x10"9) I) = 1.08.

U jednadžbi (4) koristi se prosječan broj perioda signala vremenskog vođenja po instruk-ciji CPI, odnosno broj potrebnih perioda signala vremenskog vođenja za izvršenje nekog programa računa se kao:

(broj izvršenih instrukcija u programu) x CPI.

Različite strojne instrukcije imaju različita vremena trajanja, odnosno za njihovo se izvo-đenje zahtijeva različit broj perioda signala vremenskog vođenja, a i njihova je učestalost pojavljivanja u programima različita. Za točniju ocjenu broja potrebnih perioda signala vremenskog vođenja za neki program uzima se u obzir prosječno trajanje svakog tipa instrukcije CPI. i broj izvršenih instrukcija tog tipa C, gdje / označava tip instrukcije (npr. instrukcije tipa registar - memorija, registar - registar, memorija - memorija). U tom je slu-čaju ukupan broj potrebnih perioda signala vremenskog vođenja za neki program:

S(CP/,xC,.) /=1

pri čemu je n broj različitih tipova instrukcija koje se pojavljuju u programu.

4.2.1. MIPS - MILLIONS OF INSTRUCTIONS PER SECOND

Jedna od vrlo često upotrebljavanih mjera za izražavanje performanse jest MIPS (Millions of Instructions Per Second) koja nam govori koliko milijuna instrukcija procesor izvrši u jednoj sekundi:

MIPS = (broj izvršenih instrukcija u programu) / (vrijeme izvršavanja programa x 106)

Ovako definirana mjera za performansu naziva se prirodan MIPS (engl. nativeMIPS) i intu-itivno je razumljiva: brža računala imaju veči MIPS. No mjera MIPS izražava samo broj in-strukcija u jedinici vremena, ali nam ništa ne govori o sposobnosti tih instrukcija, odnosno o složenosti operacija koje one određuju. Problemi koji nastaju ako se želi MIPS koristiti za uspoređivanje performansi računala su sljedeći. Dva se računala s različitim skupovima instrukcija ne mogu uspoređivati na temelju te mjere jer se broj instrukcija u programu ra-zlikuje. Nadalje, mjera MIPS razlikuje se za isto računalo ovisno o programu koji se izvršava tako da računalo nema jednu mjeru za performansu izraženu u MIPS.

Ako u izraz za MIPS uvrstimo umjesto vremena za izvršavanje programa, izraz za procesor-sko vrijeme (jednadžba (4)) dobivamo:

MIPS = f / (CPI x 106).

Da bi čitatelj dobio predodžbu o performansama procesora izraženim pomoću mjere MIPS, poslužit ć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 (dinamičku memoriju s izravnim pristupom; poglavlje 9.) koji se pokorava Mooreovom zakonu.

Page 105: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 99

TIPS

GIPS

MIPS

kIPS

p r o c e s o r ^

nemorija

R1000 Pentium ll^

Pentium^^*

0

9 5 6 M h

1 Gb

%

680

80486^—^ Mb

— ^ ^ ^ J U IYIL.

O 64Mb

80386 68000 ^ ^ \Mb

80286^» / 1 Mb > kb

°64kb

Tb

Gb

Legenda: k = 103

M = 106

G= IO9

T=1012

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

Mb

1980 1990 2000 kb

2010 godina

SI. 4.1 Performansa procesora izražena pomoću mjere MIPS te trend njezina porasta

| Primjer 4.3.

Procesor RISC arhitekture ima frekvenciju signala vremenskog vođenja 500 MHz, a bu-dući da je oblikovan u skladu s izvornim načelima RISC, ima CPI = 1 (u svakoj se perio-di signala vremenskog vođenja izvede jedna strojna instrukcija). Njegova performansa izražena mjerom MIPS iznosi:

MIPS = (500 x 106) / (1 x 106) = 500,

što znači da procesor RISC izvodi 500 milijuna instrukcija u sekundi.

Uz mjeru prirodan MIPS koriste se još dvije mjere: vršni MIPS (engl. peak MiPS) i relativni MIPS (engl. relativeMIPS).

Vršni MIPS dobiva se izborom mješavine strojnih instrukcija kojom se minimizira CPI čak i uz uvjet daje ta mješavina instrukcija potpuno neupotrebljiva u takvom programu.

Da bi se mjera MIPS mogla upotrijebiti i za uspoređivanje performansi računala koja imaju različite skupove strojnih instrukcija, uvedena je mjera relativni MIPS. Ona je definirana kao:

relativni MIPS = MIPS ref (Vrijemeref / Vrijememjer),

gdje je MIPSref dogovorena mjera MIPS za referentno računalo, Vrijemeref je vrijeme po-trebno za izvršenje programa na referentnom računalu i Vrijernem.er vrijeme potrebno za izvršenje istog programa na računalu kojem se mjeri performansa. Relativni MIPS proporcionalan je vremenu izvršavanja samo za dani program i iste ulazne podatke. Osamdesetih godina prošlog stoljeća računalo dugovječne arhitekture VAX 11/780

Page 106: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

100 4. POGLAVLJE: PERFORMANSA RAČUNALA

(tvrtka DEC) bilo je izabrano kao referentno računalo i bila mu je dogovorno dodijeljena performansa 1 MIPS.

U literaturi nailazimo na performansu procesora izraženu 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 obično izabrane samo one koje su određene jed-nostavnim aritmetičkim i logičkim instrukcijama.

4.2.2. FLOPS - FLOATING-POINT OPERATIONS PER SECOND

U znanstvenim i komercijalnim primjenama računala rabe se operacije brojevima s pomič-nim zarezom (zbrajanje, oduzimanje, množenje i dijeljenje) (engl. floating-point operation) gdje su operandi predočeni u obliku eksponent-mantisa i dopuštaju vrlo precizna računa-nja. Podaci predočeni u obliku eksponent-mantisa obično se u višim programskim jezicima specificiraju ključnim riječima kao: float, real, double precision. Za takva je područja primje-ne zanimljiva performansa računala izražena mjerom FLOPS (Floating-point Operations Per Second) - brojem operacija brojevima s pomičnim zarezom u sekundi.

Ta je mjera, iako i ona ovisi o tipovima operacija brojevima s pomičnim 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 pomičnim zarezom složenije i što bez sklopovlja namijenjenog upravo tim operacijama usporavaju rad računala, čak i kada je mjera MIPS za takva raču-nala vrlo velika (prisjetimo se dualizma između sklopovlja i programske opreme). Nadalje, uporaba operacija brojevima s pomičnim zarezom zahtijeva i dodatne instrukcije koje su zadužene za "kućanske poslove" u vezi s tim operacijama kao što su dohvat opera nada i pohranjivanje rezultata operacija brojevima s pomičnim zarezom.

I ovdje, kao i u slučaju mjere MIPS, vrijedi da se performansa FLOPS odnosi samo na odre-đeni program i ne može se generalizirati kao jedinstvena mjera za performansu računala. Performansa suvremenih računala izražava se u MFLOPS (106 FLOPS), GFLOPS (109 FLOPS), TFLOPS (1012 FLOPS) i PFLOPS (1015 FLOPS); P - peta.

Primjer 4.4.

Aritmetička jedinica Pentium procesora može generirati rezultat 64-bitne operacije s po-mičnim zarezom u jednoj periodi signala vremenskog vođenja. Za Pentium 90 (koji radi s frekvencijom 90 MHz) performansa je 90 MFLOPS-a.

Da bi čitatelj dobio predodžbu o performansi procesora izraženoj pomoću mjere FLOPS, navodimo neke podatke koji vrijede na početku 21. stoljeća: stolna računala (engl. desktop computer) imaju performansu reda GFLOPS-a, superračunala (engl. supercomputer) reda TFLOPS. Očekivana 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 učestalo koristi predstavlja dobru podlogu za procjenu performanse novog računala. Radno opterećenje računala (engl. workload"1.

Page 107: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 101

definirano je programima iz zbirke i učestalošću njihova izvođenja. U postupku procjene performanse dva ili više računala korisnik može 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 različitih računala za zbirku programa.

aćjnato 1 P1 P2 P3 P4 P5 P6

-.alo 2

P1 P2 P3 P4 P5 P6

vrijeme

SI. 4.2 Vrijeme odgovora računala 1 i računala 2 za zbirku programa iz radnog opterećenja

Vidimo da računalo 2 ima veću performansu (kraće ukupno vrijeme odziva) uz pretpo-stavku da su učestalosti izvođenja programa jednake. No ako je radno opterećenje takvo da se programi P2 i P5 izvode s većom učestalošću od drugih programa, može se pokaza-ti da je računalo 1 bolji stroj za zadano radno opterećenje.

Nažalost, korisnik je rijetko u situaciji da ima na raspolaganju računalo ili računala koja namjerava kupiti i za koja bi mogao procijeniti performansu na temelju iscrpnog eksperi-mentiranja s programima iz radnog opterećenja. Nadalje, vrlo mu često nisu ni raspoloživi niti poznati svi programi koji će u budućnosti činiti radno opterećenje računala. U tim se slučajevima procjena performanse temelji na ispitnim programima (engl. benchmark).

Ispitni programi su realni ili umjetni programi koji su izabrani ili oblikovani za usporedbe-nu procjenu performansi računala ili procesora. Zbirka ispitnih programa (engl. benchmark suite) sastoji se od pažljivo izabranih programa koji trebaju cjelovito predstavljati određen razred primjene. Procijenjena performansa na temelju ispitnih programa ima vrijednost za korisnika u onoj mjeri u kojoj se radno opterećenje podudara sa zbirkom ispitnih progra-ma. S druge strane, različite zbirke ispitnih programa olakšavaju usporedbu različitih pro-cesora i računala. Zbirke ispitnih programa omogućuju da isporučitelji računalne opreme, ali i nezavisne tvrtke procjenjuju različite procesore i računala te objavljuju dobivene rezul-tate i na taj način olakšavaju potencijalnim kupcima izbor stroja. Potrebno je napomenuti da su ispitni programi prvenstveno namijenjeni procjeni performansi kada je raspoloživa sklopovska oprema i kada su na raspolaganju prevodioci (engl. compiler) koji su potrebni za prevođenje programa iz zbirke ispitnih programa. Većina je prevodioca takva da imaju

Page 108: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

102 4. POGLAVLJE: PERFORMANSA RAČUNALA

u sebi ugrađene optimizacijske postupke koji se mogu uključiti ili isključiti. Da bi se izbje-glo podešavanje 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. vodeći su svjetski proizvođači računalne 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 zada-tak 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 prevođenja tih programa ne mogu biti orijentirani i prilagođeni računalnom sustavu nekog određenog proizvođača. Naime, do 1988. proizvođači su performansu računala oglašavali na temelju pažljivo izabranih ispitnih programa koji su upravo za njihova računala pokazivala veću performansu u odnosu na druge konkurente na tržištu.To su postizali uporabom relativno kratkih ispitnih programa i njima posebno prilagođenim prevodiocima koji su prepozna-vali programske odsječke tih programa i generirali posebno djelotvorne odsječke objek-tnog 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 pomičnim zare-

zom (dvostruke preciznosti) (engl. doubie-precision floating-point operation).

Svih deset programa bili su dovoljno složeni (napisani u C i FORTRAN-u) i mogli su se rabiti za rješavanje stvarnih problema.

SPEC 89 ispitna metoda pretpostavlja generiranje deset SPEC omjera (engl. SPECratio) ra-zličitih rezultata procjene performanse. Svaki od njih definirao je omjer između vremena izvršavanja /-tog programa iz zbirke Cint89 i/ili Cfp89 na računalu VAX 11/780 i ispitnom računalu.

Integralna mjera za performansu računala SPECmark indeks predstavlja geometrijsku sre-dinu deset pojedinačnih SPEC omjera:

[To SPECmark = 10/JJ SPEComjerf

T T * M

gdje ± ± Oj označava a1 x a2 x ... x an. /=1

Računalo VAX 11/780 bilo je referentno računalo 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 izvršavanja tih triju programa na referentnom računalu:

t*A = 60s, t ^ = 25s i ^ = 50s.

Vremena izvršavanja na ciljanom računaiu (onom kojem procjenjujemo performansu) su: = 45s, = 20s i t=c = 60s.

Page 109: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 103

g *0000

Omjeri između vremena izvršavanja na referentnom računalu i vremena izvršavanja na ciljanom računalu 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 računala izražena geometrijskom srednjom

x o2 x o3 = Vi .333x1.25x0.833= 1.115

Na temelju dobivenog rezultata za ovaj bismo pojednostavljeni primjer mogli pretpo-staviti da je performansa ciljanog računala za faktor 1.115 veća od performanse referen-tnog računala.

Dvije mjere, SPECint89 i SPECfp89, daju dvije procjene performanse računala - jednu za cje-lobrojnu obradu i jednu za obradu podataka predočenih brojevima s pomičnim zarezom.

Integralna mjera za performansu računala SPECmarkindeks nam u slučaju ispitnih progra-ma iz zbirke Cint89 i/ili Cfp89 govori koliko je puta performansa ciljanog računala veća u odnosu na performansu za referentno računalo tj. VAX 11/780. Na primjer, ako smo dobili da je SPECint89 jednak 5.5, to znači da ciljano računalo za zbirku cjelobrojnih ispitnih pro-grama ima za faktor 5.5 veću 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 veću perfor-mansu u odnosu na VAX 11/780, a 64-bitni Intel Xeon (3.6 GHz) čak 6505 puta (!).

Intel Xeon, 3.6 GHz A M D Opteron, 2.2 G H z j

Intel Pentium 4,3.0 GHz j r ^ S 4195

64-bit Intel Xeon, 3.6 GHz 6505

i P l 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 ' v

Alpha 21164,0.6 G H z ^ g

Alpha 21164,0.5 G H z ^ « ^

Alpha 21164A, 0.3 G H z ^ ^ -tov Alpha 21064A, 0.3 G H z ^ >

PowerPC604,0.1 GHz 3

Alpha 21064,0.2 GHz '

HP PA-RISC, 0.05 GHz 1 1 IBM RS6000/540/jr

MIPS M 2 0 0 0 # ^ 24 M I P S M / 1 2 0 > r ^ i 8

Sun - 4/260/O 9 " • ; . / •

VAX 8700

VAX-11/780

""""T" ... „—**l,5VAlH1/785

» """ i i i i i i i i i ... * ' i

9 looo

| 100 •M

10

0< 1978 1980 1982 1984 1986 1988 1990 1992 1994 1996 1998 2000 2002 2004 2006

godine

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

Page 110: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

104 4. POGLAVLJE: PERFORMANSA RAČUNALA

Od 1989. mijenjale su se zbirke ispitnih programa od zbirke SPEC89, preko SPEC92, SPEC95 SPEC2000 do SPEC2006, ali i referentna računala (VAX 11/780, SPARC Station 10/40, radna stanica s 296MHz UltraSPARC II procesorom) pa je bilo do danas ukupno 70 ispitnih progra-ma u različitim ispitnim zbirkama.

Zbirka ispitnih programa SPEC92 sastoji se od 6 cjelobrojnih ispitnih programa napisanih u programskom jezku C (espresso - program za minimizaciju logičkih funkcija; 13500 linija koda; li - LISP interpreter za rješavanje problema 9 kraljica, 7413 linija koda; eqntott - pro-gram za prevođenje Booleovih jednadžbi u tablice istinitosti, 3376 linija koda; compress - program za kompresiju podataka uporabom Lempel-Ziv postupka kodiranja 1503 linija koda; sc - računanje s UNIX tabličnim kalkulatorom, 8116 linija koda; gcc - GNU C prevodi-lac, 85589 linija koda) i 14 ispitnih programa s operacijama brojevima s pomičnim zarezom (12 napisanih u FORTRAN-u i 2 u programskom jeziku C). Tu zbirku programa čine pro-grami za simulaciju sklopova (spice2g6,18476 linija koda), za simulaciju metodom Monte Carlo (doduc, 5334 linija koda), pa sve do programa za rješavanje problema iz područja 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 pomičnim zarezom CFP 2006 (engl. flo-ating-point benchmark) (6 u FORTRAN-u, 4 u C++, 3 u C i 4 mješovito 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 raču-nala (libquantum). Zbirka ispitnih programa koji koriste operacije brojevima s pomičnim zarezom sastoji se od programa za modeliranje metodom konačnih elemenata, preko pro-grama za raspoznavanje govora do programa za molekularnu dinamiku i dinamiku fluida. Napomenimo da su samo tri ispitna programa iz zbirke SPEC89 "preživjela" i ostala uključe-na u zbirku SPEC2006.

Udruga SPEC nudi i ispitne programe koji su namijenjeni procjeni performanse računa-la - poslužitelja (engl. server) orijentiranih prema radu s datotekama SPECSFS (file server benchmark) i wefc>-poslužiteljima SPEC Web.

Primjer 4.7.

Za zbirku SPECfp2000 od 14 ispitnih programa koji koriste operacije brojevima s pomič-nim zarezom i referentno računalo Sun Ultra 5 i ciljano računalo temeljeno na 64-bitnom Intel Itanium 2 dobiveni su rezultati prikazani u tablici 4.3.

Opaska: informaciju o ispitnim programima možete naći na i http://www.spec.org/cpu20Q0/CFP200Q

Page 111: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 105

wupwise 1600 56.1 28,52

swim mgrid

applu

mesa

galgel

art

equake

facerec

ammp

lucafs

fma3d

sixtrac

apsi

SPECmark

3100

1800

2100

1400

2900

2600

1300

1900

2200

2000

2100

1100

2600

70.7

65.8

50.9

108.0

40.0

21.0

36.3

86.9

132.0

107.0

131.0

68.8

231.0

43.85

27.36

41.26

12.96

72.50

123.80

35.81

21.86

16.67

18.70

16.03

15.99

11.25

27.12

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

4.2.4 SINTETIČNI ISPITNI PROGRAMI

Sintetični ispitni programi su „lažni" programi koji ne rješavaju niti računaju ništa korisno već svojom strukturom oponašaju statistiku koja se odnosi na učestalost tipova operacija i opera nada dobivenu analizom velikog skupa programa. Dva najpoznatija sintetička is-pitna 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 ponašanja programa koji su se izvršavali na računalu KDF9 u National Physical Laboratory, Engleska. Ispitni program Whetstone namijenjen je prvenstveno procjeni performanse za obradu podataka predočenih brojevima s pomičnim zarezom. Performansa se izražava u MWIPS [Millions of Whetstone Instructions Per Second).

Dhrystone program razvijen je 1984. i predstavlja cjelobrojni ispitni program. Zajednička značajka oba ispitna programa jest da su relativno kratki - nekoliko stotina linija koda u višem programskom jeziku i pogodni su za "ugađanje" parametara optimizirajućih prevo-dioca što u izvjesnoj mjeri narušava objektivnost dobivenih procjena performanse.

Page 112: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

106 4. POGLAVLJE: PERFORMANSA RAČUNALA

AMDAHLOV ZAKON Povećanje performanse računala jedan je od osnovnih ciljeva koji se želi ostvariti upora-bom različitih metoda, postupaka i tehnika na području arhitekture računala.

Poboljšanje, koje se ogleda u kraćem procesorskom vremenu izvršavanja, pokorava se Amdahlovom zakonu koji definira daje povećanje performanse dobiveno određenim po-boljšanjem ograničeno iznosom u kojem se ta poboljšana značajka arhitekture koristi: (procesorsko vrijeme izvršavanja nakon poboljšanja) = (procesorsko vrijeme na koje se poboljšanjem utjecalo / iznos poboljšanja) + (procesorsko vrijeme izvršavanja na koje se poboljšanjem nije utjecalo).

Amdahlov zakon možemo izraziti i jednadžbom za ukupno ubrzanje obrade s:

1

f + ( 1 - 0 <min p'7

gdje je f dio na koji se poboljšanjem ne utječe, p iznos poboljšanja.

Primjer 4.8*

Pretpostavimo da je procesorsko vrijeme izvršavanja za neki program 100 sekundi i da »bai

da nam pro-se sklopovlje za gram bude 2.5 puta ubrzanje za faktor 5.0?

Dio na koji se

:ati brzinu množenja ako povećati

je f = 0.20. Za ul

2.5 020+

1 . ( 1 T P 0 2 0 f < m , n ( p > 7

$ = 2.5,

020+ (1~ 020)

iz čega slijedi:

odnosno

5.0 = 0.20p+0.80

p + 4 == p.

Vidimo da nema rješenja, odnosno da nije moguće naći iznos poboljšanja p kojim bi se brzina izvođenja povećala za faktor 5!

Page 113: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 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 stroj-ni jezik (engl. machine language) u kojem su instrukcije i podaci predočeni 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 nepre-mostivu poteškoću u razumijevanju i pri njihovoj uporabi. Da bi se premostio jezični jaz između sklopovlja i čovjeka, razvijeni su viši programski jezici kao što su FORTRAN, Cobol, Basic, Pascal, C, C++, Java, LISP, Prolog i mnogi drugi koji omogućuju korisniku pisanje programa na puno višoj razini apstrakcije koja dopušta uporabu riječi i simbola kojima se čovjek mnogo lakše koristi. Viši programski jezici pružaju niz prednosti u odnosu na pro-gramiranje u strojnom jeziku:

i) dopuštaju programeru razmišljanje i izražavanje na prirodniji način, uporabom ozna-ka na engleskom ili nekom drugom jeziku i primjenu algebarske notacije pa progra-mi više nalikuju tekstu nego dugačkim tablicama binarno kodiranih simbola,

ii) viši programski jezici podržavaju različite tipove podataka kao što su brojevi s pomič-nim zarezom (engl. floating-point numbers) jednostruke ili višestruke točnosti, zna-kovi (engl. character), strukturirani tipovi podataka kao što su jedno- i višedimenzio-nalna polja (engl. array), zapisi (engl. record), nizovi znakova (engl. character string) i redovi (ili repovi) (engl. queue),

iii) viši programski jezici oblikovani su tako da su prilagođeni namjeni što olakšava pro-gramiranje na specifičnom području. Na primjer, FORTRAN, C i C++ su namijenjen za znanstveno računanje, Cobol za poslovne aplikacije, LISP i Prolog za područje umjet-ne inteligencije i si.,

iv) programiranje u višim programskim jezicima višestruko povećava produktivnost programera,

v) većina viših programskih jezika, uz neka proširenja, podržava samodokumentiranje programa (engl. self-documenting) kojim se povećava njegova čitljivost, te se lakše razumije njegova funkcija pa je time lakše i održavanje programa,

vi) programi napisani u višim programskim jezicima prenosivi su - postupkom prevo-đenja pretvaraju se u binarni oblik koji je izvodljiv, u načelu, u bilo kojem računalu.

Page 114: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

108 5. POGLAVLJE: ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK

Jasno je, međutim, da programi napisani u višem programskoj jeziku moraju biti preve-deni i računalu predstavljeni u strojnom jeziku. Prevođenje se obavlja programima koji su sastavni dio operacijskog sustava - prevodiocima (engl. compiler). Oni prevode program napisan u višem programskom jeziku - naziva se izvorni program - (engl. source program) u objektni program ili izvršljivi binarni program (engl. executable binary program).

U mnogim se slučajevima, međutim, 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 zbir-nom jeziku predočava dvo-, tro- ili četveroslovčanim simbolima (nazivamo ih mnemonici) koji imaju značenje operacijskog koda u strojnoj instrukciji (polje operacijskog koda; slika 5.1), zatim slovčanom i/ili slovčano-numeričkom oznakom registara, memorijske lokacije ili operanda (polje operanda) koji sudjeluju u specificiranoj operaciji. Nadalje, zbirni jezik dopušta programeru uporabu oznaka koje se nazivaju labele (engl. label), koje se nalaze u polju labela i služe za identifikaciju određenih memorijskih riječi koje sadržavaju instrukcije ili podatke. Osim toga, omogućeno je i dokumentiranje programa pisanjem komentara u za to posebno predviđeno polje uz svaku instrukciju (polje komentara). Program napisan u zbirnom jeziku je također sklopovlju nerazumljiv i mora se prevesti u objektni program, točnije u objektnu datoteku (engl. object file), koja pored binarno predočenih strojnih in-strukcija i podataka sadrži i informaciju potrebnu povezniku (engl. linker) i puniocu (engl. loader).

Program koji izvorni program napisan u zbirnom jeziku pretvara u objektni program nazi-va 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 može izazivati zabunu.)

Komentari pridruženi instrukcijama služe samo za dokumentiranje izvornog programa te se tijekom prevođenja zanemaruju.

START MOVE.W PRIV,DO ; dohvati riječ s memorijske lokacije PRIV

polje labele polje operacijskog polje operanda polje komentara koda

SI. 5.1. Oznake odgovarajućih 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 označava operaci-ju premještanja podataka, . w je sufiks pridružen mnemoniku i određuje da je podatak

^ duljine riječi (npr. 16-bita), PRIV je simbol (labela) koja označava memorijsku lokaciju koja je izvor operanda, DO je oznaka registra koji ima funkciju odredišta, a dohvati riječ s memorijske lokacije PRIV je komentar koji će asembler tijekom prevođenja ignorirati. Slika 5.1 prikazuje odgovarajuća polja u instrukciji u zbirnom jeziku.

£ Potonja će se instrukcija, na primjer, asemblerom za procesor MC 68000 prevesti u stroj-' • hu instrukciju predočenu ovim slijedom nula i jedinica:

l i l i ; : 0011 0000 0011 10000100 0000 0000 0000

uz pretpostavku da je PRIV = $4000 adresa memorijske lokacije. (Znak $ ispred broja

Page 115: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 109

označava asembleru da slijedi zapis broja u heksadekadnoj notaciji.). Strojna će se in-strukcija pohraniti u memoriji na četiri slijedne memorijske lokacije (svaka lokacija ima duljinu riječi od osam bita, odnosno duljinu jednog bajta).

5.1.1. IZVRŠLJIVE INSTRUKCIJE I PSEUDOINSTRUKCIJE

Instrukcije u zbirnom jeziku mogu se podijeliti na izvršijive instrukcije (engl. executable instruction) i instrukcije koje su namijenjene upravljanju postupkom prevođenja (engl. assembler directive). Izvršijive 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 zbir-nom jeziku predstavljaju dvo-, tro- ili četveroslovčnim oznakama koje također asociraju na osnovnu funkciju upravljanja asemblerom.

Razmotrimo i upoznajmo se s nekim uobičajenim pseudoinstrukcijama: • NAM (name) dodjeljuje simboličko ime programu; • ORG {origin} govori asembleru gdje će podaci Hi program biti pohranjeni u memo-

rijskoj jedinici; • DS (define storage) nalaže asembleru rezervaciju dijela memorijskog prostora; • DC (define constant) nalaže asembleru da pohrani konstantu u memoriju prije ne-

goli će se izvršiti program; • EQU (equate) izjednačava simboličko ime s numeričkom vrijednosti; • END (end) označava asembleru da je to kraj izvornog programa i da ništa više nije

preostalo za prevođenje.

Ilustrirajmo njihovu uporabu na jednostavnom programu napisanom u zbirnom jeziku za procesor MC 68000 (bez upuštanja u ono što program zapravo radi): DATA EQU $6000 ; oznaci DATA dodijeljena je vrijednost $6000 PROGRAM EQU $4000 ; početna adresa programa

ORG DATA ; počevši 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 riječi

RESULT DS .W 1 ; rezervirana su dva slijedna bajta na $6002 i $6003 MASK EQU $000F ; oznaci MASK je pridružena vrijednost $000F

ORG PROGRAM ; program započinje 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 označava kraj programa i pokazuje

na početak programa ($4000)

Page 116: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

110 5. POGLAVLJE: ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK

Ispis prevedenog izvornog programa izgledao bi ovako: 00006000 DATA EQU 00004000 PROGRAM EQU

$6000 $4000 DATA 1

00006000 ORG DS.B DS.B DS.W EQU

006000 00000001 VALUE 006001 00000001 006002 00000002 RESULT

1 1 $000F OOOOOOOF MASK

00004000 004000 10386000 START MOVE.B

AND. B MOVE. B MOVE.B LSR.8 MOVE.B RTS

ORG VALUE, DO #MASK, DO

PROGRAM

004004 C03C000F 004008 11C06003 00400C 10386000 004010 E80S

VALUE"- DO #4/ 1

DO, RESULT+1

004012 11C06002 004016 4E75

DO, RESULT

END START

Pseudoinstrukcijama DATA EQU $6000 i PROGRAM EQU $4000 dodijelili smo ozna-kama (labelama) DATA i PROGRAM vrijednosti 6000 (heksadekadno), odnosno 4000 (heksadekadno). Labeia DATA definira početnu adresu memorijskog prostora u kojem će se pohraniti podaci, a labeia PROGRAM označava adresu memorijske lokacije prve izvršljive instrukcije programa. .

i

Pseudoinstrukcija ORG DATA određuje da će podaci biti pohraftjeni u memoriji zapo-čevši od memorijske 6000 (heksadekadno).

Za podatak VALUE, uporabom pseudoinstrukcije VALUE DS.B 1 rezervirana je jedna memorijska lokacija (8-bitna) s adresom 6000 (heksadekadno). Sljedeća pseudoinstruk-cija DS.B 1 služi samo za tzv. poravnanje na granicu riječi (engl. align on word boun-dary) 16-bitne riječi RESULT. Naime, procesor MC 68000 zahtijeva poravnanje adrese podatka duljine riječi (oznaka . W) tako da ona bude parna.

Pseudoinstrukcijom RESULT DS.W 1 predviđaju se za pohranu rezultata dvije memo-rijske lokacije 6002 i 6003 (heksadekadno). Pseudoinstrukc^a MASK EQU $00OF do-djeljuje simboličkom imenu MASK vrijednost 000F (heksadekadno). Pseudoinstrukcijom ORG PROGRAM određujemo početak izvršljivog dijela programa.

Prva se izvršljiva instrukcija (MOVE. B VALUE , DO) kojom započinje program nalazi na adresi 4000 (heksadekadno).

Objektni program, tj. strojni program u kojem su instrukcije i podaci predočeni binarno, pohranjen umemorij i s početnom adresom $004000 izgledao W ovako: 004000 00010000

00111000 * \ 01100000 00000000

004004 11000000

Page 117: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 111

004012

004010

00400C

004008

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

004016 01001110 _ 01110101 i

Na temeljći oblika prethodnog objektnog programa zamislite kako bi izgledalo progra-miranje izravno u strojnom jeziku!

(Opaska: u knjizi za izradu primjera programa za procesor MC 68000 korišteni su uređivač teksta (editor), asembler i simulator EASy68K v5.90 koji čitatelj može 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 izvođenja 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 Upravljačka jedinica).

Izvedimo prethodni program instrukciju po instrukciju. Pretpostavimo daje početni sadr-žaj memorijskih lokacija 6000 4A, dok je 6002 i 6003 jednak 00.

Nakon izvođenja instrukcije MOVE.B VALUE, DO u registru DO nalazi se 0000004A. Instrukcijom AND.B #MASK, DO izvodi se logička operacija I maske koja ima vrijednost 000F i sadržaja registra DO, rezultat se pohranjuje u DO: 0000004A

000F OOOOOOOA

Sadržaj registra DO je sada OOOOOOOA.

Instrukcijom MOVE.B DO, RESULT+1 se najmanje značajan bajt registra DO pohra-njuje na memorijsku lokaciju RESULT+1, odnosno na 6003. Dobivamo (6003) = 0A.

Page 118: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

112 5. POGLAVLJE: ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK

Instrukcijom MOVE.B VALUE, DO ponovno punimo najmanje značajan bajt registra DO s 4A:

(DO) = 0000004A. Sljedećom instrukcijom LSR.B #4, DO posmičemo najmanje značajan bajt registra DO za 4 mjesta udesno. Rezultat posmaka za četiri mjesta udesno je (DO) = 00000004. Konačno, instrukcijom MOVE.B DO, RESULT se najmanje značajan bajt re-gistra DO pohranjuje na memorijsku lokaciju RESULT, odnosno na 6002. Nakon izvođenja 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 višekratnim po-navljanjem jednakog slijeda instrukcija u brojnim i različitim 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 mogućnost da se taj slijed preoblikuje u potprogram te da se on poziva kadgod je potreban. Taj pristup, međutim, ima nedostatak jer zahtijeva uporabu dviju dodatnih instrukcija (za pozivanje potprograma i za vraćanje iz potprograma) i dodatno procesorsko vrijeme za njihovo izvođenje.

Jednostavno i djelotvorno rješenje problema učestalog ponavljanja jednakog slijeda in-strukcija u zbirnom jeziku dobiva se uporabom makroinstrukcije (engl. macroinstruction). Makroinstrukcija - nova korisničko definirana problemsko orijentirana instrukcija zamje-njuje slijed instrukcija i tako se izbjegava višekratno ponavljanje jednakog slijeda instrukci-ja u zbirnom programu. Potrebno je naglasiti da će asembler tijekom postupka prevođenja zamijeniti makroinstrukciju i umjesto nje umetnuti u zbirni program slijed instrukcija (po-stupak se naziva ekspanzija). Pri upotrebi makroinstrukcije razlikujemo tri faze:

i) definiranje makroinstrukcije, ii) pozivanje, iii) zamjenu, odnosno ekspanziju.

Definicija makroinstrukcije sadržava: • zaglavije kojim se daje ime makroinstrukciji, • tijelo - slijed instrukcija u zbirnom jeziku • kraj.

Makroinstrukcija se definira pomoću dvije organizacijske pseudoinstrukcije: MACRO i ENDM. IME MACRO

slijed instrukcija u zbirnom jeziku ENDM

Primjer 5.3.

Pretpostavimo da se u našem izvornom programu u zornom jeziku za procesor MC 68000 učestalo pojavljuje potreba za slijedom instrukcija (programskim odsječkom) koji broji znakove u nekom nizu znakova. Početna adresa niza znakova neka se nalazi

Page 119: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 113

u adresnom registru A4, a utvrđena duljina niza znakova neka se pohranjuje u registru podataka D8. Svaki od niza znakova kojima utvrđujemo broj znakova završava ASCII nuli znakom (vrijednost 0} koji se također broji.

MOVE.B #0, D8 ; postavi brojilo u0 OPET MOVE. B (A4) +, DO ; dohvati prvi znak i pohrani ga u DO

ADD . B #1, D8 ; inkrementiraj brojilo znakova CMP.B #0, DO ; je li znak nuli - kraj niza? BNE OPET ; nije - dohvati sljedeći znak u nizu

(Opaska: instrukcije MOVE. B # 0 , DO, ADD.B #1, D8 i CMP.B #0, DO koriste usputni način (engl. immediate) u kojem je podatak sastavni dio instrukcije. U zbirnom jeziku za MC 68000 taj je način adresiranja označen povisiiicom (#) koja prethodi vrijed-nosti podatka.

Instrukcija MOVE.B (A4) +, DO koristi tzv. registarsko indirektno (neizravno) adresi-ranje s postinkrementiranjem (engl. address register indirect with postincrement) u kojem adresni registar/u našem slučaju A4, sadržava adresu memorijske lokacije, a procesor nakon dohvata podatka s memorijske lokacije određene sadržajem adresnog registra modificira sadržaj adresnog registra u skladu s duljinom operanda (za 1,2, ili 4) u našem slučaju (&k) + 1 jer je operand duljine jednog bajta (.B). Nakon izvršenja instrukcije MOVE . B (A4) +, DO novi je sadržaj adresnog registra pokazuje na sljedeći znak u nizu.)

Budući da se potonji slijed instrukcija u našem izvornom programu pojavljuje više puta, upotrijebit ćemo makroinstrukciju i dati joj ime BROJI. Definirajmo makroinstrukciju BROJI:

BROJI MACRO MOVE.B #0, D8 ; postavi brojilo u 0

OPET MOVE. B (A4) +, DO ; dohvati prvi znak i pohrani ga u DO ADD.B #1, D8 ; inkrementiraj brojilo znakova CMP. B #0, DO ; je li znak nuli - kraj niza? BNE OPET ; nije - dohvati sljedeći znak u nizu ENDM

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

i) bez uporabe makroinstrukcije

MOVEA.L N i z i , A4 ; postavi kazaljku na prvi znak u nizu NIZ 1

MOVE.B #0, D8 ; postavi brojilo u 0 OPET MOVE.B (A4)+, DO ; dohvati prvi znak i pohrani ga u DO

ADD.B #1, D8 ; inkrementiraj brojilo znakova

Page 120: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

114 5. POGLAVLJE: ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK

CMP.B BNE

#0, DO OPET

; je ti znak nuli - kraj niza? ; nije - dohvati sljedeći znak u nizu

MOVE. B D8, COUNT 1 : pohrani duljinu N IZ1 u COUNT1

MOVEA.L N I22 , A4 ; postavi kazaljku na prvi znak u nizu NIZ2

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

#0, D8 <A4)+, 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 sljedeći zn^k u nizu

MOVE. B D8, COUNT2 : pohrani duljinu NIZ2 u COUNT2

OPET

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

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

; 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 sljedeći žnak u nizu

MOVE .B D8, COUNTS : pohrani duljinu NIZ3 U COUNT3

ii) uporabom makroinstrukcije:

MOVEA.L N IZ1 , A4 ; postavi kazaljku na prvi znak u nizu NIZ1

BROJI MACRO MOVE.B

OPET MOVE.B ADD.B CMP.B BNE ENDM

40, D8 (A4)+, 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 sljedeći znaku nizu

MOVE. B D8, COUNT 1 : pohrani duljinu NIZl u COUNT1

Page 121: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 115

.MOVEA.L N IZ2 , A4 BROJI

; postavi kazaljku na prvi znak u nizu NIZ2

MOVE.B D8, COUNT2 : pohrani duljinu NIZ2 u GOUNT2

MOVE A. L NIZ3 , A4 BROJI

; postavi kazaljku na prvi znak u nizu NIZ3

MOVE. B D8 , COUNT3 : pohrani duljinu NIZ3 u COUNT3

U ii) vidimo da se samo jednom u izvornom programu pojavljuje programski odsječak, odnosno definicija makroinstrukcije, a nakon toga se u izvornom programu rabi samo makroinstrukcija BEOJI. Naglasimo još jednom, tijekom prevođenja će asembler za-mijeniti makroinstrukciju slijedom instrukciji koje se nalaze između MACRO i ENDM (postupak ekspanzije). Ekspanzija se događa pri svakom pojavljivanju makroinstrukcije - pomoću/tnakroinstrukcije se ne postiže ušteda memorijskog prostora potrebnog za

Jednak slijed instrukcija pogodan za uporabu makroinstrukcije može, međutim, uključivati različite načine specifikacije operanada (npr. različite registre) pri svakom korištenju. Taj problem rješavaju makroinstrukcije koje imaju listu formalnih parametara koji će se zami-jeniti stvarnim parametrima tijekom prevođenja. U tom slučaju 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 teško je i mukotrpno. Pisanje programa u zbirnom jeziku zahtijeva puno više vremena nego pisanje programa s istom funkcijom u višem program-skom jeziku. Koji su onda razlozi programiranja u zbirnom jeziku? Dva su temeljna razloga:

i) veličina objektnog (izvršljivog binarnog) programa i brzina njegova izvođenja. U mnogim je slučajevima objektni program (program u strojnom jeziku), koji je ge-neriran prevodiocem za viši programski jezik, puno veći, odnosno zauzima puno više memorije od objektnog programa dobivenog prevođenjem programa u zbirnom jeziku uporabom asemblera. Razlog tome je što prevodilac za viši programski jezik treba generirati kod koji je dovoljno općenit da može raditi u različitim slučajevima

Page 122: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

116 5. POGLAVLJE: ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK

i za različite konfiguracije računala. Programi u zbirnom jeziku pisani su ciljano za određeni procesor tako da se mogu koristiti brže strojne instrukcije koje nisu izrav-no raspoložive postupkom prevođenja programa u višem programskom jeziku. Na primjer, za dijeljenje s dva, prevodilac za viši programski jezik generirat će strojnu instrukciju DIV (divide), dok će programer u zbirnom jeziku za dijeljenje sa dva upo-trijebiti instrukciju SHR (shift right) koja posmiče podatak udesno za jedno mjesto. Instrukcija SHR izvodi se mnogo brže od instrukcije DIV;

ii) neke procedure zahtijevaju izravan i potpuni pristup sklopovlju procesora, odnosno računala, koji nije ostvariv u višim programskim jezicima. Na primjer, postupci ruko-vanja prekidima niske razine (engl. low-level interrupt) i rukovanje zamkama (engl. trap) u operacijskom sustavu ili pak postupci upravljanja u ugrađenim računalima za rad u stvarnom vremenu.

Primjer 5.4.

Ugrađeno računalo (engl embedded computer) koje se u automobilu koristi za upravlja-nje sustavom kočenja mora brzo i predvidljivo odgovoriti na događaje u vanjskom svi-jetu (npr. na proklizavanje kotača na zaleđenoj površini). Objektni program mora jamčiti daće ugrađeno računalo generirati odgovor na podražaj iz vanjskog svijeta u točno odre-đenom intervalu - na primjer za 800 ns od trenutka kada senzor otkrije (detektira) prokli-zavanje. To jamstvo, nažalost, ne daje objektni program, tj. izvršljivi binarni program koji je generiran prevođenjem izvornog programa napisanog u višem programskom jeziku. Razlog je prevodilac koji generira objektni program koji je dovoljno općenit i ne vodi strogo brigu o izboru procesoru raspoloživih strojnih instrukcija i vremenu njihova izvr-šavanja. S druge strane, programer u zbirnom jeziku ima pregled i upravljanje nad izvo-đenjem svake strojne instrukcije, posebice nad vremenom trajanja njezinog izvođenja i može programom točno definirati trenutak ili vremenski interval u kojem će računalo odgovoriti signalom upućenom sustavu za kočenje.

Ugrađena računala koja se koriste u pametnim karticama (engl. smart card), mobilnim te-lefonima, dječjim igračkama, video i glazbenim uređajima za zabavu, igraćim konzolama i si. moraju zadovoljiti stroge zahtjeve u pogledu brzine, cijene i potroška snage te se obično programiraju u zbirnom jeziku jer su mnoge takve aplikacije kritične i u pogledu raspoloži-vog memorijskog prostora i vremena izvođenja.

5.3. DVOPROLAZNI ASEMBLER Izvorni se program u zbirnom jeziku sastoji od niza redaka instrukcija i pseudoinstrukcija. Svaki redak sadržava 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 završen kada i posljednja instrukcija programa bude prevedena. No stvari nisu tako jednostavne - zbirni jezik koristi labele ili oznake za simboličko označavanje adresa memorijskih lokacija, konstanti i vrijednosti ope-ranada koje usložnjavaju postupak prevođenja. Na primjer, asembler prethodnim postup-kom ne može prevesti instrukciju grananja na ciljnu instrukciju koja je označena labelom ako se ta ciljna lokacija nalazi u retku koji asembler nije još pročitao, i to zato što redak tek slijedi i može se nalaziti negdje pri kraju programa. Asembler u trenutku prevođenja

Page 123: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 117

instrukcije grananja ne zna adresu ciljne instrukcije i ne može prevesti instrukciju grananja sve dok ne prođe skoro kroz cijeli program. Taj se problem prepoznaje kao problem referen-ciranja unaprijed (engl. forward reference problem).

Primjer 5.5,

Prikažimo problem referenciranja unaprijed. Za programski odsječak u zbirnom jeziku:

MOVE. L DO, D2 MOVE.W LENGHT, D1 BEQ. S DONE ; granaj na DONE ako je LENGTH - 0

LOOP MOVE.W (AO) +, D2 ADD.L D2, DO

BNE LOOP DONE MOVE.L DO, TOTAL

7 • !

(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 može izraziti duljinom jednog bajta.)

U trenutku kada asembler čita redak: BEQ. S DONE ; granaj na DONE ako je LENGTH = 0

ne može prevesti instrukciju u strojni kod jer mu je simbolička adresa DONE, odnosno adresa ciljne instrukcije nepoznata.

Problem referenciranja unaprijed obično se rješava tako da asembler dvaput čita tekst zbir-nog 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 sadržava sve simbole i njihove vrijednosti. Simboli su ili labele, ili vrijednosti koje su dodijeljene simboličkim 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 izvršavanja objektnog progra-ma. To znači da asembler prolazeći kroz zbirni program mora svakoj instrukciji i podatku pridružiti adresu. To se postiže uporabom posebnog brojila koje se naziva brojilo instruk-cijskih lokacija (engl. ILC - Instruction Location Counter) čiju vrijednost asembler obnavlja tijekom prevođenja. Na početku prvog prolaza, inicijalno, vrijednost brojila instrukcijskih lokacija postavljena je na 0. Čitanjem svake instrukcije u retku, asembler povećava njegovu vrijednost u skladu duljinom instrukcije (npr. brojem bajtova ili, općenito, brojem riječi od kojih se ta instrukcija sastoji). Kada asembler naiđe na pseudoinstrukciju, ORG postavlja vrijednost brojila na onu koju određuje ta pseudoinstrukcija.

Page 124: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

118 5. POGLAVLJE: ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK

Primjer 5,6.

Za program iz primjera 5.2 prikažimo vrijednosti brojila instrukcijskih lokacija: Duljina ILC

DATA EQU $6000 - 0000 PROGRAM EQU $4000 - 0000

ORG DATA - 6000 VALUE DS.B 1 1 6000

DS.B 1 1 6001 RESULT DS.W 1 2 6002

6003 MASK EQU $000F

ORG $4000 4000 START MOVE*B VALUE, DO 4 4000

AND.B #MASK, DO 4004 MOVE.B ; DO, RESULT+1 4 4008 MOVE,B VALUE, DO 40OC LSR.B #4, DO 4010 MOVE.B V DO, RESULT 4 4012 RTS 2 4016

Opaska: duljltia ba j td^ t i ^

Tijekom prvog prolaska asembler osim tablice simbola generira još i tablicu pseudoin-strukcijai t ^ l i c u o p ^ operacijskih kodoya sadržava mnemonik ins t i t r fe^ d z n a ^ tb asembleru biti p o ^ i ^ i» htog^r^^^^tes^^ kr^u ^ vrijed-nosti brojila Instrukcijskih lokacija, asembler generira konačnu tablicu simbola.

I l l l l l l l l l l l^ '

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 000F

PROGRAM 4000

VALUE 6000

RESULT 6002

START 4000 — - -

Tablica 5.1, Tablica simbola

Polje dodatne informacije može sadržavati duljinu polja pridruženog simbolu, informa-ciju mijenja ti simbol vrijednost ako se program puni na različitim adresama, je li simbol dosežljiv izvan tog programskog modula i si.

Page 125: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 119

Tijekom prvog prolaska asembler utvrđuje jesu li instrukcije u zbirnom jeziku napisane u skladu sa sintaksom zbirnog jezika. Na primjer, ako je neki mnemonik asembleru ne-poznat ili ako se komentar pojavljuje u polju operanada, ili ako tablica simbola sadržava višestruko definiran isti simbol, ili pak sadržava nedefiniran simbol (nije mu dodijeljena vrijednost), onda će asembler signalizirati grešku i generirati listu s izvještajem o greška-ma. U tom se slučaju obustavlja daljnji postupak prevođenja.

Ako nema pogrešaka, asembler prolazi još jednom (drugi prolaz) kroz izvorni program re-dak po redak. Ako redak sadržava instrukciju, asembler umeće binarni uzorak koji odgo-vara toj instrukciji u objektni program koji postupno "raste" prolaskom asemblera redak po redak kroz izvorni program. U svakoj liniji asembler rješava i simboličko referenciranje zamjenom simbola s njemu pridruženoj vrijednosti (koju nalazi u tablici simbola ili tabli-ci pseudioinstrukcija). Ako redak sadržava pseudoinstrukciju kojom se definira vrijednost podatka (npr. DC - Define Constant), asembler će umetnuti odgovarajuću vrijednost koja će biti pohranjena na toj adresi. Uz sve to, asembler tijekom drugog prolaza obavlja ari-tmetičke operacije koje su potrebne da bi se odredile vrijednosti pomaknuća u slučaju instrukcija grananja (engl. branch offset). Na kraju postupka prevođenja 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 vri-jednost simbola koji označava početak programa. Primjerice, za program iz primjera 5.6. asembler EASy68K će nakon uspješnog prevođenja generirati ispis koji sadrži 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 6000 MASK F PROGRAM 4 000 RESULT 6002 START 4 000 VALUE 60 00 Asembler generira objektnu datoteku koja sadržava binarni prikaz programa i podataka te dodatnu informaciju koja je potrebna povezniku i puniocu:

i) zaglavlje datoteke u kojem se opisuje veličina i položaj dijelova koji su sastavni dije-lovi te datoteke;

ii) tekstualni segment - sadržava strojni kod programa; iii) podatkovni segment - sadržava binarni prikaz podataka iz izvornog programa; iv) informaciju o premjestivosti - pokazuje na instrukcije i podatke koji ovise o apsolut-

nim adresama. Referenciranje takvih instrukcija i podataka mora se mijenjati ako se program premješta u memoriji;

v) tablicu simbola koja sadržava adrese vanjskih labela (onih koje program referencira u drugim programskim modulima) i listu neriješenih referenciranja;

Page 126: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

120 5. POGLAVLJE: ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK

vi) informaciju potrebnu za otkrivanje i otklanjanje pogrešaka - sažet opis načina prevo-đenja tako da program za otkrivanje pogrešaka može naći korespondenciju između adrese svake instrukcije i retka u kojem se instrukcija nalazi u izvornom programu.

Slika 5.2. prikazuje shematski strukturu objektne datoteke.

zaglavlje tekstualni podatkovni informacija o tablica informacija potrebna za

otkrivanje pogrešaka datoteke segmenti segment premjestivosti simbola

informacija potrebna za

otkrivanje pogrešaka

SI. 5.2 Struktura objektne datoteke

5.4. POSTUPAK PREVOĐENJA ZBIRNOG PROGRAMA Slika 5.3 prikazuje postupak dobivanja objektnog programa kad se program sastoji od ne-koliko izvornih programa (programskih modula) koji su napisani u zbirnom jeziku. Svaki se od njih nezavisno prevodi asemblerom u objektni program - izvršljivi binarni program. Programski modul obično referencira potprograme i podatke koji su definirani u drugim programskim modulima ili u knjižnici programa (engl. program library) u kojoj se nalaze već gotovi programi. Poveznik (engl. linker) kombinira i povezuje objektne programe i pro-grame iz knjižnice programa u izvršljivu datoteku (engl. executable file) tj. konačni objektni program koji računalo može izvesti.

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

Postupak prevođenja instrukcija iz zbirnog jezika u strojne instrukcije predstavlja pre-slikavanje 1 - 1 , odnosno instrukciji u zbirnom jeziku dodjeljuje se pripadajuća strojna instrukcija.

Vrlo se često u složenim primjenama kombiniraju programi napisani u višem program-skom jeziku s programima napisanim u zbirnom jeziku (tzv. hibridni pristup). Ovi posljednji koriste se za dijelove koji su vremenski kritični.

Slika 5.4 prikazuje putove prevođenja programa koji su napisani u višim programskim je-

Page 127: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 121

zicima i programa u zbirnom jeziku. Vidimo da zbirni jezik može imati dvostruku ulogu: prevodilac prevodi program napisan u višem programskom jeziku (izvorni program) u program u zbirnom jeziku, a zatim se on asemblerom prevodi u objektni program. U dru-goj je ulozi izvorni program napisan u zbirnom jeziku i asemblerom se prevodi u objektni program. Vidimo na slici 5.4 da prevodilac može izravno prevesti program napisan u višem programskom jeziku u objektni program (bez generiranja zbirnog programa). Prevodioci koji ne generiraju program u zbirnom jeziku brži su od onih koji zahtijevaju i asembler na putu prevođenja. No takvi prevodioci koji izravno generiraju objektni program moraju obaviti mnoge zadatke koje obavlja i asembler (određivanje adresa i kodiranje instrukcija sljedovima nula i jedinica).

SI. 5.4 Putovi prevođenja programa

5.5. PUNILAC (ENGL. LOADER)

Izlaz iz poveznika ima oblik datoteke koja se pohranjuje u sekundarnoj memoriji. Punilac je zadužen za prijenos te datoteke u radnu memoriju. Ovisno o raspoloživom memorijskom prostoru isti program može biti smješten u različitim dijelovima memorije za svako nje-govo izvršavanja. Punilac je zadužen za prilagođavanje svih adresa programa u skladu sa stvarnim lokacijama na kojima je program pohranjen. Poveznik pretpostavlja da se objek-tni program pohranjuje u memoriji na lokaciji s adresom 0. No ako je stvarna početna adre-sa A, tada se sve apsolutne adrese moraju povećati za A Taj zadatak treba obaviti punilac Punilac obavlja sljedeće glavne funkcije:

i) na temelju informacije iz zaglavlja objektne datoteke određuje potreban memorijski prostor za tekstualni i podatkovni segment,

ii) kopira tekstualni i podatkovni segment iz objektne datoteke u radnu memoriju, iii) mijenja adrese (povećava 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 sadržaje svih registara uključujući i registar kazalo stoga, vi) grana na pobudniprogram (engl. start-up routine) koji poziva glavni programski mo-

dul prevedenog programa.

Nakon povratka iz glavnog programskog modula, pobudni program završava program si-stemskim pozivom te vraća upravljanje operacijskom sustavu.

Page 128: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 128

6. POGLAVLJE

UPRAVLJAČKA JEDINICA

6.1. UVOD Upravljačka jedinica generira upravljačke signale i njima pobuđuje i koordinira sve aktiv-nosti unutar procesora, ali i u svim ostalim funkcijskim jedinicama računala (u memorijskoj jedinici, ulaznim-izlaznim jedinicama). Upravljačka jedinica procesora mora općenito po-držati četiri sljedeće temeljne funkcije:

i) uspostavljanje određenog stanja tijekom svakog instrukcijskog ciklusa (podsjetimo se, instrukcijski ciklus jedne strojne instrukcije čine dvije faze: PRIBAVI i IZVRŠI),

ii) određivanje sljedećeg stanja na temelju trenutnog stanja, stanja zastavica u statu-snom registru i stanja na ulaznim upravljačkim linijama procesora,

iii) pohranjivanje informacije koja opisuje tekuće stanje u kojem se procesor nalazi, iv) generiranje upravljačkih signala za izmjenu podataka između procesora i drugih

funkcijskih jedinica.

Primjer 6.1.

Ako je tijekom instrukcijskog ciklusa ulazno-izlazna jedinica generirala zahtjev za prekid koji je signalnom linijom upućen procesoru i ako je stanje prekidne zastavice I (interrupt) u statusnom registru takvo da je prekid omogućen, tada će upravljačka jedinica odrediti da je sljedeće stanje - stanje koje odgovara posluživanju prekidnog zahtjeva (funkcija ii)), a ne dohvat sljedeće instrukcije iz slijeda instrukcija. No prije negoli krene na izravno posluživanje prekida, upravljačka jedinica mora pohraniti informaciju koja opisuje teku-će stanje u kojem se procesor nalazi (funkcija iii)).

Upravljačka jedinica treba generiranim slijedom upravljačkih signala podržati pribavljanje instrukcije, dekodiranje instrukcije, njezino izvršavanje te prijenos upravljanja s instrukcije na instrukciju u programu (engl. instruction sequencing).

Prijenos upravljanja s instrukcije na instrukciju preduvjet je automatskog izvođenja programa.

Na prvi pogled, najjednostavnija metoda upravljanja slijedom izvođenja instrukcija jest ona koja je korištena u računalu EDVAC (Electronic Discrete Variable Computer) (J. Mauchley i J. P. Eckert, 1945.): svaka strojna instrukcija ima adresno polje koje sadržava adresu in-strukcije koja će se sljedeća izvršiti. Format instrukcije prikazan je na slici 6.1. Primjećujemo da je instrukcija četveroadresna: adrese u adresnim poljima A1 i A2 određuju 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 množenja). Adresno polje A4 određuje memorijsku lokaciju na kojoj se nalazi sljedeća instrukcija.

Page 129: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

124 6. POGLAVLJE: UPRAVLJAČKA JEDINICA

adresno polje A1 adresno polje A2 adresno polje A3 adresne • polje A4 op 5

i S

I — • adresa ;ljedeće instrukcije

r operacijski kod

adrese operanada (adrese izvorišta podataka)

adresa rezultata (adresa odredišta)

SL 6.1 Format strojne instrukcije za računalo EDVAC

Nedostatak predloženog rješenja očit je: instrukcija koja osim polja operacijskog koda ima četiri adresna polja koja sadržavaju adrese memorijskih lokacija (izvorišta operanada, odre-dište rezultata te kazaljku na sljedeću 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 određivanja instrukcije koja će se sljedeća izvršiti zasniva se na opravdanoj pretpostavci da program predstavlja niz strojnih instrukcija koje su uzastopno pohranjene na slijednim memorijskim lokacijama. To znači, ako se instrukcija ^ nalazi na adresi A, onda ona ima jednoznačno određenu nasljednicu - instrukciju l2 koja se nalazi na memorijskoj lokaciji kojoj je adresa A + 1. Pažljivi će čitatelj u ovome prepoznati važnu ulogu registra -programskog brojila PC čiji se sadržaj tijekom faze PRIBAVI automatski inkrementira tako da na kraju faze PRIBAVI pokazuje na sljedeću instrukciju. Zaista, ulogu četvrtog adresnog polja - kazaljke na sljedeću instrukciju preuzelo je programsko brojilo PC.

Ovisno o duljini instrukcije (broja riječi od kojih se sastoji instrukcija) i adresne zrnatosti memorije (poglavlje 3.), sadržaj programskog brojila povećava se za različite 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 načinu adresiranja pa se sadržaj programskog brojila PC tijekom faze PRIBAVI povećava za vrijednost od 2 do 22.

Procesori RISC arhitekture imaju "čvrstu"duljinu instrukcije. Na primjer, 32-bftni RISC pro-cesor ima duljinu instrukcije 32 bita pa se sadržaj programskog brojila PC tijekom faze PRIBAVI povećamo

• za CISC procesore sadržaj se programskog brojila tijekom faze PRIBAVI mijenja u PC promjenjiv i ovisi o duljini Instrukcije čije je pribavljanje u tijeku; . . ..

• za RISC procesore sadržaj 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 izvođenje 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 slučaja prijenosa upravljanja s instrukcije l1 na ciljnu instrukciju lc:

i) prijenos upravljanja unutar istog programa; ii) prijenos upravljanja između različitih programa.

Page 130: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 130

6.2. PRIJENOS UPRAVLJANJA UNUTAR ISTOG PROGRAMA Prijenos upravljanja s instrukcije na instrukciju kada one nisu slijedne unutar istog progra-ma obavlja se instrukcijama grananja (njih smo već upoznali u poglavlju 3.). Razlikujemo instrukcije bezuvjetnog i uvjetnog grananja.

Ponašanje instrukcije bezuvjetnog grananja možemo opisati ovako: PC<-X,

gdje je X adresa ciljne instrukcije ili adresna sastavnica na temelju koje se može odrediti adresa ciljne instrukcije. Pozor, promjena sadržaja programskog brojila obavlja se tijekom faze IZVRŠI instrukcije grananja. Sadržaj programskog brojila PC mijenja se bezuvjetno, od-nosno ne provjeravaju se bilo kakvi uvjeti na temelju kojih bi se mogla spriječiti promjena sadržaja programskog brojila.

£ Izvođenje instriHccfje l^ezuvjetnog g r ^ I M M ^ asocira na ^ J g Ima ^ p o s t ^ , taKifK)} tijekom ft^ IZV^Hn&ruk^^

tako da ee u sljedećoj fazi PRIBAVI biti pribavljena (ciljna) instrukcija s memorijske

Instrukcija uvjetnog grananja izvodi se tako da se tijekom njezine faze IZVRŠI ispituje je li uvjet C zadovoljen ili ispunjen (C je obično posljedica neke prethodne instrukcije) i ako je uvjet C zadovoljen, tada se modificira sadržaj programskog brojila PC «- X. Ako uvjet nije zadovoljen, sadržaj programskog brojila PC se u fazi IZVRŠI ne mijenja, što znači da se u sljedećoj fazi PRIBAVI pribavlja slijedna instrukcija u programu (nema grananja na ciljnu in-strukciju) - pribavlja se instrukcija koja neposredno slijedi instrukciji grananja. U poglavlju 3. smo vidjeli da se zastavice statusnog registra SR sadržavaju informaciju o rezultatu neke aritmetičke ili logičke instrukcije te da njihovo stanje ispituju instrukcije uvjetnog grananja (model CISC procesora). U našem primjeru RISC modela vidjeli smo da same instrukcije uvjetnog grananja ispituju izravno sadržaj registra R[rc] u skupu registara opće namjene i ovisno o njegovom sadržaju modificiraju sadržaj programskog brojila (granaju ili ne grana-ju na ciljnu instrukciju).

6.3. PRIJENOS UPRAVLJANJA IZMEĐU RAZLIČITIH PROGRAMA Suvremeni stil programiranja u prvi plan stavlja upotrebu programskih procedura. One su temelj strukturiranih programa. Pod procedurom se obično podrazumijeva program, od-nosno dio programa koji je napisan u višem programskom jeziku i kojem je dodijeljeno ime. Procedura obično provodi operacije na podacima koji su definirani pomoću parametara. Procedura se može pozivati s bilo kojeg mjesta u programu s različitim parametrima za sva-ki poziv. One su temelj strukturnih programa. Veliki su programi organizirani u manje jedi-nice - procedure koje su pogodnije za rukovanje, jednostavnije za ispitivanje ispravnosti

Page 131: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

124 6. POGLAVLJE: UPRAVLJAČKA JEDINICA

djelovanja te jednostavnije za razumijevanje i dokumentiranje. Programi su organizirani kao skup procedura koje se međusobno pozivaju. Pozivi procedura predstavljaju zapravo prijenos upravljanja s jednog programa na drugi. Obično 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 može pozivati drugi potprogram, taj treći potpro-gram itd., koristimo nazive pozivajući program (engl. calling) - onaj koji poziva, i pozvani program (engl. called) - onaj koji se poziva.

Prijenos upravljanja sličan je kao i kod instrukcija uvjetnog ili bezuvjetnog grananja, ali s jednom važnom razlikom: kad se obavi zadatak definiran pozvanom procedurom (potpro-gram om), upravljanje se mora vratiti na instrukciju u pozivajućem programu, koja nepo-sredno slijedi instrukciji koju je proceduru pozvala.

Drugi važan slučaj prijenosa upravljanja između dva programa koji je složeniji od prethod-no opisanog slučaja događa se tijekom prekida (engl. interrupt). U tom slučaju govorimo o prekinutom programu - programu čije je izvođenje prekinuto zahtjevom za prekid, i prekid-nom programu - programu na koje se prenosi upravljanje i koji obično poslužuje ulazno-izlaznu jedinicu koja je generirala zahtjev za prekid. Prijenos upravljanja između programa može nastati uslijed iznimke (engl. exception) (Primjer 6.4.). Pod iznimkom podrazumijeva-mo posebne okolnosti kojima se narušava normalno stanje procesora i izvođenje tekućeg programa. Prekidi se mogu promatrati kao podskup iznimke.

Primjer 6.4.

Iznimke mogu biti dvojake: i) vanjske iznimke su posebne okolnosti izazvane događajerp izvan procesora. Na

primjer, vanjski je uređaj generirao zahtjev za prekid ili se pak dogodila pogreška na sabirnici, ili je aktiviran signal za ponovno upuštanje procesora u rad (reset);

ii) unutarnje iznimke su posebne okolnosti kao posljedica događaja unutar proce-sora. Na primjer, tijekom izvođenja instrukcije za cjelobrojno dijeljenje sklopovlje procesomutvrđujedaJe djelitelj jednako ili je procesor otkrto

6.3.1. PRIJENOS UPRAVLJANA IZMEĐU POZIVAJUĆEG I POZVANOG PROGRAMA

Razmotrimo prvo jednostavniji slučaj - prijenos upravljanja između pozivajućeg i pozva-nog programa, odnosno glavnog programa i potprograma.

U skupu strojnih instrukcija nalazimo instrukcije za prijenos upravljanja s pozivajućeg pro-grama (označimo ga s P}) i pozvanog programa (potprograma) - označimo ga s P2 (slika 6.2).

Označimo tu strojnu instrukciju mnemonikom CALL koja u polju operanda ima oznaku X: CALL X,

gdje je X adresa (ili se ciljna adresa određuje na temelju X) ciljne instrukcije - prve instruk-cije potprograma (slika 6.2).

Page 132: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 132

P

instrukcija koja neposredno slijec

instrukciji CALL X u P ,

slijed in struke i

CALL;

RET

prva instrukcija određena na

temelju X

SI. 62 Odnos između pozivajućeg P1 i pozvanog programa P2

Tijekom faze IZVRŠI instrukcija CALL X izvodi se u dva slijedna koraka: 1. korak: Sadržaj PC-a (koji pokazuje na sljedeću instrukciju u Pl; slika 6.2) pohranjuje se na za to predodređenu memorijsku lokaciju S: S PC; 2. korak: X (ili adresa izračunata na temelju X) prenosi se u PC: PC «- X.

Posljedica 1. koraka je pohrana povratne adrese na memorijsku lokaciju S. Posljedica izvo-đenja 2. koraka je priprema programskog brojila PC za dohvat ciljne instrukcije (prve in-strukcije pozvanog (pot)programa) u sljedećoj fazi PRIBAVI.

Prijenos upravljanja natrag s pozvanog potprograma P2 na pozivajući (glavni) program P1

obavlja se strojnom instrukcijom RET (return). Ona je posljednja instrukcija u programu ? r

Tijekom njezine faze IZVRŠI obavlja se sljedeće:

sadržaj memorijske lokacije S, koja sadržava povratnu adresu, smješta se u programsko brojilo PC.

U sljedećoj fazi PRIBAVI pribavlja se instrukcija iz P1 i to ona koja neposredno slijedi instruk-ciji CALL X.

Nažalost ovako opisana CALL X instrukcija ne podržava gniježđenje 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 događa se sljedeće: nakon prvog poziva na memo-rijsku 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. Izvođenjem instrukcije RET u (pot)programu P3 uzima se sadržaj iz S i smješta u programsko brojilo PC te se upravljanje prenosi na instrukciju 2. Za sada je sve u redu, međutim, instrukcijom RET u (pot)programu P2 smješta se sadržaj iz S u PC - upravlja-nje će se prenijeti na instrukciju 2 istog (pot)programa (na memorijskoj lokaciji S pohranjena je adresa instrukcije 2!) - prijenos upravljanja natrag na program P1 neće se nikada dogoditi.

Problem gniježđenja je ozbiljan problem jer je na temelju analiza uzoraka pozivanja i vraća-nja iz procedura za programe napisane u višim programskim jezicima utvrđen neprekinuti

PC<-S,

Page 133: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

124 6. POGLAVLJE: UPRAVLJAČKA JEDINICA

slijed gniježđenja, odnosno dubina gniježđenja pet i više. Slijed gniježđenja prekida se in-strukcijom RET. Procesor mora podržati i na razini strojnih instrukcija pozivanje i gniježđenje poziva potprograma.

SI. 6.3. Problem gniježđenja poziva u slučaju instrukcije CALL X kada se ona izvodi u sljedeća dva koraka: S «- PC i PC <- X, pri čemu je S memorijska lokacija predviđena za pohranu povratne adrese

Kako se problem gniježđenja rješavao u računarskoj povijesti? Opisat ćemo dva načina prije negoli predložimo zadovoljivo rješenje.

Arhitekti u tvrtki DEC (Digital Equipment Computer) problem gniježđenja riješili su za malo računalo PDP-8 na sljedeći način: svaki pozvani (pot)program P. imao je "zaglavlje" S. - me-morijsku lokaciju na kojoj se pohranjivala povratna adresa. S se nalazila na mjestu na ko-jem 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. sadržaj programskog brojila pohranjivala u zaglavlje potprograma X - lokaciju S]t nova vrijednost programskog brojila X automatski se inkrementirala tako da je njegov sadržaj X+1 pokazivao na prvu instrukciju potprograma. Kod sljedećeg (gniježđenog) poziva nova se povratna adresa pohranjivala u zaglavlje pozvanog potprograma. Trag povratnih adresa bio je sačuvan. Vraćanje natrag - prijenos upravljanja s pozvanog na pozivajući program obavljalo se instrukcijom JMPIX (Jump indirect to X).To je instrukcija indirektnog (neizrav-nog) skoka koja se izvodi tako da se program grana na ciljnu adresu X, ali se sadržaj memo-rijske lokacije X ne tumači kao instrukcija, već adresa na kojoj se sljedeća instrukcija nalazi.

Primjer 6.5, '

Pretpostavimo da je sadržaj 16-bitne memorijske lokacije M jednak (M)=03FF (heksade-kadno) i daje sadržaj memorijske lokacije (G3FF) - 01B7. Izvođenjem "obične" instrukcije JMP M sadržaj će programskog brojila na kraju njezine faze IZVRŠI biti (PC) = 03FF što znači da će se tijekom sljedeće faze PRIBAVI dohvatiti prva riječ nove instrukcije tj. 01B7. No izvođenjem instrukcije indirektnog skoka JMP I M sadržaj programskog brojila PĆ će na kraju njezine faze IZVRŠI biti (PC) = 01B7 što znači da će se tijekom sljedeće faze PRIBAVI dohvatiti prva riječ Instrukcije koja je smještena na memorijskoj lokaciji 01B7.

Page 134: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 134

Instrukcijom JMPIX, gdje je X adresa zaglavlja potprograma dohvaćala se povratna adresa i uspješno se obavljalo vraćanje iz ugniježđenih (pot)programa (slika 6.4).

pohranjuje se adresa pohranjuje

SL 6.4 Rješenje problema gniježđenja poziva uporabom instrukcija JMS i JMP IX

Opisano rješenje zaista podržava gniježđenje proizvoljne dubine, ali ima jedan nedostatak - ne podržava rekurzivno pozivanje (pot)programa.

Drugo ćemo rješenje problema gniježđenja 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 opće namjene R[ra], a zatim puni programsko brojilo PC s 32-bitnim sadržajem registra Rlrbl

Ako sadržaj registra R[rb] predstavlja adresu prve instrukcije pozvanog (pot)programa, do-godit će se grananje, odnosno prijenos upravljanja s P na P . Povratak se obavlja instruk-cijom bezuvjetnog grananja:

brra ; PC <- R[ra]

kojom se sadržaj registra R[ra], koji je povratna adresa, smješta u programsko brojilo PC.

Gniježđenje pozivanja i uspješno vraćanje iz potprograma omogućeno je uporabom in-strukcija brl ra, rb i br ra i pažljivim izborom registara iz skupa registra opće namjene.

Primjer

Pretpostavimo da registar R[28] sadržava adresu potprograma P2, registar R[29] potpro-grama P3 i registar R[23] adresu potprograma P4.

Iz glavnog programa P1 pozvat će se potprogramP^ imtrukcyom: b r i r Z m ;R[2]<-PC,PC<-R[28]

pri čemu se povratna adresa pohranjuje u registar R[2].

Page 135: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

124 6. POGLAVLJE: UPRAVLJAČKA JEDINICA

Potprogram P2 poziva potprogram P3 izvođenjem instrukcije: brl r3, r29,

pri čemu se povratna adresa pohranjuje u R[3],

I konačno, iz P3 se poziva potprogram P4: 4"

brlr15,r23

pri čemu se povratna adresa pohranjuje u registru R[15].

Vraćanje se iz ugniježđenih programa obavlja se instrukcijama brrIS, brr3, br r2. Slika 6.5 prikazuje slijed pozivanja i vraćanja iz potprograma za prethodni primjer.

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

Nažalost, ni ovo rješenje ne podržava rekurzivno pozivanje (pot)programa.

Prije negoli pogledamo kako se rukuje rekurzivnim procedurama (ili rekurzivnim potpro-gramima), razmotrimo još jedan važan detalj u vezi s programskim procedurama - pri-jenos parametara između pozivajućeg i pozvanog programa. Naime, često je potrebno pozvanom programu prenijeti neke parametre ili, pak, pozvani program mora vratiti neke vrijednosti. Postoje tri glavna načina 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 načinu i) pozivajući program priprema podatke koji su potrebni pozvanom programu tako da ih pohranjuje u registre procesora. Pozvani program prije povratka sprema rezulta-te u registre kojima može pristupiti pozivajući program. Broj raspoloživih registara je ogra-ničavajući čimbeniku ovom jednostavnom načinu 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 slučaju modificirati povratnu adresu u skladu s dobavljenim parametrima.

P.

Mr2fr28

brifis

Page 136: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 136

Treći način prijenosa parametra temelji se na uporabi stoga, i to tako da se parametri pola-žu na stog, a potprogram ih skida s vrha stoga i premješta u registre procesora. Podrobnije o prijenosu parametara načinima ii) i iii) upoznat ćemo se nešto kasnije u ovom poglavlju.

Primjer 6.7.

Ilustrirajmo programskim odsječkom 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 početnu adresu BUFFER. Programski odsječak pozivajućeg (glavnog) programa izgleda ovako:

MOVE. w #BUFL, DO ; duljinu spremnika pohrani u registar DO MOVEA. L #BUFFER, AO ; početna adresa spremnika u A0 JSR SUBR ; poziv potprograma SUBR

(Opaska: instrukcija MOVE. W #BUFL, DO koristi usputni način adresiranja (engl. imme-diate) 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 izvođenja bit će smještanje 0100 (hek-sadekadno) u registar DO.). Instrukcija MOVEA, L #BUFFER, AO (MOVEA - Move to Address R^gister) smještava početnu adresu spremnika u adresni registar A0. Tako na primjer, ako je spremnik BUFFER veličine 256 bajtova određen 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 parame-tre BUFL i BUFFER u registru DO, odnosno registru A0.

6.4. REKURZIVNE PROGRAMSKE PROCEDURE (REKURZIVNI POTPROGRAMI) Najjednostavnije možemo definirati rekurzivnu programsku proceduru ili rekurzivni pot-program kao programsku strukturu koja sama sebe poziva. Formalno, rekurzivni pro-gram (procedura ili potprogram) P može se prikazati kao kompozicija n osnovnih in-strukcija Sj (koje ne sadržavaju P) i samog programa P:

P = IIP [Sj, P].

Uočavamo da se rekurzivni program P pojavljuje na lijevoj i desnoj strani potonjeg izraza.

Primjer 6.8.

U višem programskom jeziku PROLOG, koji se koristi na području umjetne inteligencije, možemo precizno definirati pretka sa činjenicom da su naši roditelji naši (prvi) preci, ali i či-njenicom da su i preci naših roditelja naši preci, kao i to da su preci naših predaka naši preci:

Page 137: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

124 6. POGLAVLJE: UPRAVLJAČKA 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 tumači 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) tumači kao logičko I).

Iz matematike, ali i iz programiranja poznajemo rekurziju. Na primjer, faktorijela n! ima re-ku rzivn u definiciju:

1.0! = 1; i

2. za n > 0, (n+1)! = (n + 1) (n!)

Uočava 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. F = F + F , za n G Z+ i n a 2. n n-1 n-2

Iz programiranja poznajemo problem Hanojskih tornjeva koji se jednostavno rješava upo-rabom rekurzije.

Prikažimo vrlo općenito 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! Predviđena povratna adresa je B. Ovim se pozivom ponovo prenosi izvođenje na prvu instrukciju potprograma (ozna-čena labelom SUB). Ponovo se izvodi slijed instrukcija u potprogramu i ponovo se s CALL SUB poziva potprogram itd.

Ovako predočena rekurzivna struktura, osim što ilustrira samopozivanje nema nikakav praktičan značaj. Naime, rekurzivno pozivanje će se događati do beskonačnosti (naravno, teorijski razmatrano) (slika 6.7).

Page 138: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 138

CALLSUB A:

oo

SI. 6.7 Rekurzivno pozivanje do beskonačnosti

Da se rekurzivni program ne bi pozivao do beskonačnosti, potrebno je u rekurzivni program ugraditi dodatni kontrolni "mehanizam" kojim će se ograničiti broj rekurzivnih pozivanja. Slika 6.8 ilustrira takav dodatni "mehanizam". Vidimo da će se u tom slučaju samopozivanje obavljati sve dok je N > 0. Ako je, na primjer, početna 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

SUB: rekurzivni potprogram SUB

N: = 3 CALLSUB A:

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

B:

RET

SI. 6.8. Kontrolirano samopozivanje potprograma

Rješenje problema rekurzivnog pozivanja i uspješnog vraćanja iz rekurzivnih poziva nudi stog (engl. stack).

Page 139: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

124 6. POGLAVLJE: UPRAVLJAČKA JEDINICA

6.4.1. STOG

Stog se obično definira kao LIFO (Last In First Out -zadnji unutra, prvi van) dinamička struk-tura podataka.

S implementacijske točke motrišta stog predstavlja LIFO memorijsku strukturu koja uklju-čuje vremensku sastavnicu u svoje uređenje podataka:"najstariji"podatakje na dnu stoga, dok je "najmlađi" (onaj koji je posljednji pohranjen ili položen na stog) na vrhu stoga.

Stogom se rukuje samo dvjema operacijama: i) položi 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. Izvođenjem ope-racija push i pop dinamički se mijenja stog - kažemo da on "raste" kada se podaci polažu 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 sadržava adresu stoga, i to tako da njegov sadržaj pokazuje na vrh stoga, odnosno na memorijsku lokaciju koja odgovara vrhu stoga. Sadržaj kazala stoga se automatski mijenja izvođenjem push i pop operacija, i to na sljedeći način:

• polaganjem podatka na vrh stoga (operacija push) sadržaj kazala stoga SP automat-ski se umanjuje - kažemo da stog raste u smjeru padajućih adresa;

• uzimanjem podatka s vrha stoga (operacija pop) sadržaj kazala stoga SP automatski se povećava - kažemo da se stog smanjuje u smjeru rastućih adresa;

Obično me studenti pitaju što je razlog takvom pomalo neobičnom pravilu da stog raste u smjeru padajućih adresa - osim objašnjenja da su razlozi povijesni, nema drugog (oprav-danog) 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 sadržaj kazala stoga SP prije i poslije izvođenja operacija push i pop. Primjećujemo da u oba slučaja (izvođenje push i pop) sadržaj kazala stoga SP prati "disanje" stoga. Operacijom pop svrha stoga uzetje podatak međutim, kako je ta operacija zapravo čitanje sadržaja memorijske lokacije, a ona nije destruktivna, podatak b će ostati u memoriji, ali nije više element stoga, čitatelj se može u to jednostavno uvjeriti - ako se nakon stoje izvedena operacija pop izvede operacija push (npr. push d), podatak d će "prekriti" a sadržaj kazala stoga SP će poprimiti vrijednost mmmm-4 (slika 6.10).

Neki procesori imaju instrukcije s mnemonicima PUSH (ili PSH) i POP (ili PUL) namijenje-ne 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 sadržaj 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 odredišta operanda procesor oduzima 1 od sadržaja adresnog registra (A7), koji ima funkciju kazala stoga, za svaki bajt operanda - stog raste u smjeru padajućih adresa.)

Page 140: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 140

«ft

£ -Ć £

ft

an

... .. ••

£ £

'Ci-: £

lili mmmmxissMt.

i l i £ e e E

£ £ £ £

» I I I ! I

" . . - - . - -o £ £ £ £ £ £ £ •••: - a - £ •"-"

£ E £ £ £ £ £

SI. 6.9 Stanje stoga i sadržaj kazala stoga SP prije i poslije izvođenja operacija push i pop

Procesor MC 68000 obavija zadatak operacije uzimanja podatka s vrha stoga (pop) instrukcijom

MOVE.L (A7)+, DO kojom se s vrha stoga 32-bitni podatak premješta u registar podataka DO. Potonja in-strukcija rabi registarsko indirektno (neizravno) adresiranje s postinkrementiranjem (engl. address register indirect with postincrement; poglavlje 5.) - stog se smanjuje u smje-ru rastućih adresa.

Page 141: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

124 6. POGLAVLJE: UPRAVLJAČKA JEDINICA

mmmm -6

m m m m - 5

mmmm - 4

rrimmm -3

m m rrt m - 2

mmmm

trt m nrt m

registar kazalo stoga SP

mmmm-3

mmmm-6

mmmm-5

mmmm -4

mm m m-3

mmmm -2

mmmm

mmmm

a

registar kazalo stoga SP

mmmm -4

SI. 6.10 Podatak b nije element stoga i zato će se "prekriti" operacijom push d

Razumijevanje djelovanja stožnog mehanizma (stoga i registra kazala stoga SP) iznimno je važno jer se on koristi u postupcima grananja u potprograme, u postupcima rekurzivnog pozivanja programskih procedura (rekurzivnih potprograma) te u posluživanju 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 između pozivajućeg i pozvanog programa; • tekući status ili stanje procesora koje je nužno potrebno za pravilan povratak iz pre-

kidnog programa i iznimki te za pravilan nastavak prekinutog programa; • korisničko definirani podaci LIFO strukture.

Budući da razlikujemo podatke koji su namijenjeni upravljačkim funkcijama i podatke koji su korisničko orijentirani i koji se pohranjuju u stog, možemo očekivati da će procesori po-državati više stožnih struktura koje se mogu klasificirati kao upravljačke i korisničke.

Vratimo se sada problemu pozivanja potprograma i rekurzivnog pozivanja potprograma, odnosno programskih procedura. Već smo spomenuli da se problem rekurzivnog poziva-

Page 142: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 142

nja i uspješnog vraćanja iz rekurzivnih poziva može riješiti uporabom stoga. Uz pretpostav-ku da upravljačka jedinica procesora podržava stožni mehanizam, možemo sada preinačiti funkciju CALL instrukcije i to na sljedeći način:

Tijekom faze IZVRŠI instrukcija CALL X izvodi se u dva slijedna koraka, ali tako da u prvom koraku koristi stog:

1. korak: Pohranjuje se sadržaj programskog brojila PC na stog (operacija push PC); (Povratna adresa se privremeno pohranjuje na stog),

2. korak: X (ili adresa izračunata na temelju X) prenosi se u PC: PC <- X.

Tako definirano ponašanje CALL X instrukcije zahtijeva i preinaku instrukcije vraćanja iz potprograma RET. Ona se sada izvodi tako da uzima s vrha stoga povratnu adresu i smješta je u programsko brojilo PC.Tijekom faze IZVRŠI 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, međutim, ako je u međuvremenu sadržaj stoga modifi-ciran, može se dogoditi da "skinuti" podaci s vrha stoga nisu povratna adresa.

I . " • . ' v V ^

f ' ' Pretpostavimo da pozivajući program P1 poziva potprogram SUBR. Nakon što potprogram SUBRobavi^adatak, instrukcijom RET prenosi upravljanje natrag na pozivajući program P r

Pretpostavimo daje A 32-bitna povratna adresa (adresa instrukcije u programu P1 koja ne-posredno slijedi instrukciji CALL) te da je memorija u kojoj je organiziran stog bajtno adre-sno 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 pot-program te, konačno, slika 6.11 c) prikazuje stanje stoga i kazala stoga SP neposredno na-

i kori povratka u pozivajući program. Na slici 6.11 b) vidimo da je 32-bitna povratna adresa I (koju smo označili $ A) zapravo sadržaj programskog

koja se nalazi na adresi A. Povratna je adresa zapisana u obliku slijeda od 4 bajta: od PC[7:0] - označava najmanje značajan bajt povratne adrese, do PC[31; 24] - označava najznačaj-niji bajt povratne adrese. Na slici 6.11 c) vidimo daje stanje stoga i kazala stoga identično onom kofe je bilo neposredno prije pozivanja potprograma SUBR. Ono što zamjećujemo

J jesttiag izvođenja-sadržaji itremor^skih toMc^a^ i ali pozor sada ova četiri bajta PC[7:0] - PC[3 V24] nisu elementi koji pripadaju stogu.

Page 143: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

124 6. POGLAVLJE: UPRAVLJAČKA JEDINICA

bajt

gjK :igg

Bili SffifB!

mni fniit mmmm -7 mmmm -6

11111 l U U i i f g j

- ^ m in irt " 3

i l i l i l i l i l i ^ ^

- .

*

mmmm -5

S i l i l M

mmmm-1

V -; PC 17:«

K ^ S l i l l l l l l ; mmsmmr

a)

registar kazalo stoga SP mmmm -4

fegstar kazalo stoga SP m m m m - 8

v/-

I I P .;-. -

registar kazato stoga SP

Sto

mm:-»1 lili' 1R

Slit:

SI. 6.11

(Opaska: opisane operacije određene instrukcijama CALL i RET koje rabe stog, ovisno o vrsti procesora, imaju različite mnemonike. Na primjer, procesor MC 68000 koristi mnemonik

Page 144: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 144

i

JSR (Jump to Subroutine) koji određuje 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 između pozlvajućeg i pozvanog programa, možemo pogledati i prijenos parametara preko me-morijskih lokacija (engl. parameter passing in memory) za procesor NIC 68000.

(Opaska: ovdje nam je potrebno poznavanje mehanizma stoga samo radi razumijevanja "ugađanja" povratne adrese.) Pretpostavimo da želimo kao i u Primjeru 6.7, prenijeti pot-programu SUBR dva parametra: duljinu spremnika podataka BOFL i njegovu početnu adresu BUFFER. Parametri koji se prenose mogu se smjestiti neposredno poslije instruk-cije JSR (JSR - Jump to Subroutine) kojom se poziva potprogram. Odsječak pozivajućeg programa izgleda ovako:

JSR SUBR ; poziv potprograma SUBR DC.W BUFL DC. L BUFFER . . . ; sljedeća "prava* instrukcija u po2^vajućem programu

(Opaska: najcon izvođenja JSR SUBR na stogu bit će pohranjena adresa koja odgovara adresi pseudoinstrukcije DC. W BUFL. Naravno, to nije prava povratna adresa jer oče-kujemo da povratak bude na instrukciju koja neposredno s///ed/drugoj pseudoinstrukciji

Potprogram SUBR prvo pohranjuje na stog prethodne vrijednosti registara koje će kori-stiti i nakon toga uzima parametre i, konačno, ugađa povratnu adresu: SUBR MOVEM. L DO /AO-AL, - (A 7) , 00, AO i At

MOVEA.L 12 (A7), AI ; povratna aifesa popuje na BUFL MOVE.W (AL)+, DO ISMJE^BTI^BPQ MOVEA.L (A l ) +, AG ;smjestipogitniiađras^ M0VE.L A l , 12 (A7)

(Opaska: instrukcija MOVEM. L DO / AO-AL, - (Al) pohranjuje sadržaje 32-bitnih re-gistara 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 odredišta operanda procesor oduzima 1 od sadržaja adresnog

ij registra A7 bit će umanjen za 4 jer je operand specificiran s ,L. Instrukcijom MOVEM. L (Move Multiple - višestruko premještanje) uporabom adre-siranja adresnim registrom A7 s predekrementiranjem ostvaruje se operacija polaganja triju 32-bitnih sadržaja specificiranih registara (DO, AO, AT) na stog pri čemu se sadržaj

tiraža 12.)

setriregi-na stog.

ilika za analizu stanja stoga i kazala stoga, tj. registra A7.

Page 145: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

'ЕГ «5 (D. О 2 U С ^ ^ Ш (О

О 2

ill и, U .>

щ

Ф > PQ

s p i i i l i i i l l p

i f i l i i i iliis ,' J3E4 'Jv'-M i s f i t »ilflllt о &

ш Л ш ш Л i p e i i i W l

ШШтШШШШ*. ЛшшШШ s p g i i e i

р Щ 8 IS 5 В-§ f

• «3 .'Л 1

Page 146: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)
Page 147: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 141

SUBR MOVEM.L DO/AL, -(Al) ; pohrani "stare" sadržaje registara MOVE.W 12 (A7), DO ;duljinu spremnika pohrani u DO MOVEA. L 14 (A7 ) , A l ; početna adresa spremnika je u A1

U ovom slučaju nije potrebno ugađati povratnu adresu jer se nakon vraćanja starih sa-držaja registara DO i A l instrukcijom MOVEM. L (A7) + , DO/Al na vrhu stoga nalazi prava povratna adresa.

Čitatelju savjetujem da pažljivo analizira stanja stoga tako da nacrta stog i prati promje-ne stanja stoga i sadržaja kazala stoga SP tijekom izvođenja potonje opisanih operaci-ja. Naravno, preporučujem 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 stož-nom mehanizmu podržavaju gniježđenje poziva procedura i vraćanje iz njih.

Razmotrimo kako će se tim instrukcijama podržati rekurzivno pozivanje i vraćanje iz rekur-zivno 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 varija-ble 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 polaže po-vratna adresa B. Slika 6.12 c) prikazuje stanje stoga. Ponovo se izvodi slijed instrukcija zapo-čevši od prve instrukcije rekurzivnog potprograma. U tom prolasku N-1 poprima vrijednost 0 i umjesto rekurzivnog pozivanja nastavlja se slijed instrukcija potprograma do instrukci-je RET. Slika 6.12 d) prikazuje stanje stoga neposredno nakon prvog izvođenja 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 neposred-no nakon drugog povratka iz rekurzivno pozvanog potprograma SUB. Konačno, 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)).

Page 148: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

124 6. POGLAVLJE: UPRAVLJAČKA JEDINICA

„^^«lilMfilli

I I . ' •

iiiiiiiiiiBsisii:iiiiiiiisiiiii , , f\ i^ti^f^rt '-• •' • %

— l a i l l B l l g i i i

SP

SP

- — ; — —

B - - »

A —

b)

B

s i S S

a i s f i i s a n

d)

SP

SP

SP

SP

e) f)

SL 6.12 Stanje stoga tijekom rekurzivnog pozivanja i vraćanja 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) treći 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 važna sastavnica računala. On se može u procesoru, odnosno računalu realizirati programski ili sklopovski.

Programska izvedba stoga temelji se na određenom broju memorijskih lokacija koje su obično dio radne memorije računala. Takvoj se izvedbi uz obavezni registar kazalo stoga SP obično pridružuju još i dvije kazaljke koje održava operacijski sustav računala (slika

Page 149: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 143

6.13). One pokazuju i omeđuju memorijski potprostor koji je dodijeljen stogu - kazaljka BR pokazuje na memorijsku lokaciju koja ima najvišu adresu i odgovara dnu stoga, a kazaljka LR pokazuje na memorijsku lokaciju koja ima najnižu adresu u potprostoru dodijeljenom stogu (napomenimo, stog raste prema padajućim vrijednostima adresa). Stvarno "disanje" stoga prati, naravno, registar kazalo stoga SP. Ove spomenute kazaljke BR i LR služe za ot-krivanje kritičnih situacija koje se, bez obzira na veličinu memorijskog potprostora nami-jenjenom 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, od-nosno kada sadržaj kazala stoga SP premaši vrijednost koja definirana kazaljkom BR.

Primjer 6.13. /

Zna se dogoditi, posebice programeru početniku, da računalo odnosno operacijski su-stav računala, umjesto očekivanog prikaza rezultata izvođenja programa na zaslonu is-piše poruku "System stack overflowTo upravo znači da je zbog logičke pogreške u pro-gramu broj polaganja podatka (ili povratnih adresa) na stog bio takav da je premašen prostor predviđen za područje sistemskog stoga.

U skupu strojnih instrukcija postoje instrukcije koje omogućuju programeru definiranje početne vrijednosti kazala stoga SP. Na primjer, procesor MC 68000 koristi instrukciju:

MOVE An, USP kojom se 32-bitni sadržaj adresnog registra An premješta u korisničko kazalo stoga. Nešto kasnije ćemo vidjeti da je to povlaštena instrukcija koja se može izvesti samo u nadgled-nom načinu 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

Page 150: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

124 6. POGLAVLJE: UPRAVLJAČKA JEDINICA

koja koristi usputni načina 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 ograničena, 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 riječi. Stog je ostvaren pomoću k posmačnih n-bitnih sklopova (posmačnih registara sR1 - sRk). Operaciji push odgovara posmak udesno, a operaciji pop posmak ulijevo. Posmačnim registrima pridodano je brojilo po modulu n i kombinacijski logički sklop koji na temelju razlike broja push i pop operacija detektira preljev, odnosno podljev.

vrh stoga

SI. 6.14 Sklopovski ostvaren stog

(Opaska: čitatelj može dobiti zorniju predodžbu o sklopovski ostvarenom stogu ako sliku 6.14zakreneza 90° u smjeru kazaljke na satu.)

Page 151: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 145

r

,5. PRIJENOS UPRAVLJANJA IZMEĐU PREKINUTOG I PREKIDNOG PROGRAMA Već smo spomenuli da se drugi važan slučaj prijenosa upravljanja između dva programa događa tijekom prekida. Slika 6.15 prikazuje shematski odnos između prekinutog i prekid-nog programa. Na prvi je pogled slika 6.15 vrlo slična slici 6.11 a) (slučaj pozivanja potpro-grama). No postoje neke vrlo bitne razlike. Prijenos upravljanja u slučaju poziva potpro-grama obavlja se pod uvjetima koje možemo smatrati kontroliranim: trenutak prijenosa upravljanja određen je instrukcijom CALL. U slučaju prekida, trenutak kada će se dogodi-ti prijenos upravljanja, odnosno kada će pristići procesoru zahtjev za prekid nije poznat. Zahtjev za prekid generira ulazno-izlazni uređaj, a trenutak ovisi o stanju vanjskog svijeta čije aktivnosti nisu sinkronizirane s aktivnostima procesora ili računalnog sustava. Dakle, zahtjev za prekid može biti generiran u bilo kojem trenutku tijekom izvođenja programa. Procesor ne odgovara trenutno na zahtjev (u t = 0 s), već se mora završiti instrukcija čije je izvođenje bilo u tijeku. Postojanje zahtjeva za prekid i završetak instrukcije tijekom koje je zahtjev generiran još nije dovoljan uvjet za prihvaćanje prekida. Naime, procesor se može zaštititi od prekida tako da ne reagira na zahtjev ako je prekid maskiran ili onemogućen. Prekid se maskira postavljanjem jedne ili više prekidnih zastavica u statusnom registru SR. Procesori koji imaju hijerarhijsku višerazinsku organizaciju prekida zahtijevaju kao uvjet prihvaćanja prekida da razina zahtjeva za prekid bude viša od razine trenutno kodiranog prekida pomoću prekidnih zastavica u statusnom registru SR. Razlog postojanja mogućno-sti neprihvaćanja prekida jest činjenica da vrlo često postoje kritični programski odsječci koji ne smiju biti prekinuti. Zbog nepoznavanja trenutka, odnosno instrukcije nakon koje će zahtjev za prekid prihvatiti, procesor mora osim povratne adrese pohraniti i sadržaj sta-tusnog registra SR prije negoli grana na prvu instrukciju prekidnog programa. Zašto sadr-žaj statusnog registra SR? U stanju zastavica statusnog registra ogleda se stanje procesora koje je bilo neposredno prije nego što je zahtjev za prekid prihvaćen. Informacija pohranje-na u statusnom registru predstavlja dodatnu minimalnu informaciju koja daje nadu da će se stanje procesora, koje je bilo neposredno prije prekida, moći rekonstruirati.

prekinuti program prekidni program

zah t jev za prek i

IF

RTI

SI. 6.15 Shematski prikaz odnosa prekinuti i prekidni program

Page 152: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

124 6. POGLAVLJE: UPRAVLJAČKA JEDINICA

Povratna adresa i stanje statusnog registra definiraju tzv. minimalni kontekst (engl. minimal context). Taj se minimalni kontekst tijekom "kućanskih poslova" prijenosa upravljanja s pre-kinutog na prekidni program pohranjuje na stog.

m m m m - 2

m m m m - 1

m m m m

" t. ' 1

; -

a)

registar kazalo stoga SP

m m m m - 2

registar kazalo stoga SP

m m m m - 8

b)

m m m m - 8 m m m m - 7

m m m m - 6

m m m m - 5

m m m m - 4

m m m m - 3

m m m m - 2

m m m m - 1

m m m m

SR [15:8]

SR [7:0]

PC [31 :24]

PC [23:16]

PC [15:8]

PC [7:0]

•••

•-• r"

registar kazalo stoga SP

m m m m - 2

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 prihvaćanja prekida; b) stanje stoga i kazala stoga SP neposredno nakon prijenosa upravljanja na prekidni program; c) stanje stoga i kazala stoga SP neposredno nakon vraćanja iz prekidnog programa

Page 153: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. R1BARIČ - GRAĐA RAČUNALA 147

Druga važna razlika je u tome stoje u slučaju poziva potprograma adresa prve instrukcije potprograma sadržana u samoj instrukciji CALL X (gdje je X adresa ili adresna sastavnica na temelju koje se određuje adresa prve instrukcije potprograma). U slučaju prekida, adresa prve instrukcije prekidnog programa određuje se tako da se identificira uzročnik prekida, dakle ulazno-izlazni uređaj koji je generirao zahtjev za prekid. Tek kad se utvrdi uzročnik prekida, određen je i prekidni program koji se treba izvršiti. Uzročnik prekida identificira se na različite načine - najjednostavniji način je da procesor uvijek odlazi na isti prekidni program i u njemu prozivanjem potencijalnih uzročnika prekida utvrđuje tko je zaista ge-nerirao zahtjev za prekid. Druga mogućnost je uporaba metode vektorskog prekida u kojoj uzročnik prekida, nakon što od procesora primi signal da je prekid prihvaćen, šalje pro-cesoru jedinstveni, npr. 8-bitni kod koji je identifikator uzročnika prekida. Na temelju tog vektorskog broja procesor tijekom "kućanskih poslova" prijenosa upravljanja računa ciljnu adresu prve instrukcije prekidnog programa. U poglavlju 13. čitatelj će naći podroban opis organizacije prekidne strukture procesora.

Prekidni program završava instrukcijom tipa RTI (Return from interrupt) ili RTE (Return from Exception) - povratak iz prekida ili povratak iz iznimke. Ova instrukcija uzima s vrha sto-ga minimalni kontekst tj. povratnu adresu i sadržaj statusnog registra, i raspoređuje ga u programsko brojilo PC i statusni registar SR. Budući da ćemo posebno poglavlje posvetiti prekidu, ovdje samo kao sažetak 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 raspoređuje 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 prihvaćanja prekida (6.16. a)), neposredno nakon prijenosa upravljanja na prekidni program (6.16 b)) i, konačno, stanje stoga neposredno nakon vraćanja 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 SLUČAJA ZA MC 68000 Da bismo utvrdili gradivo vezano za problem prijenosa upravljanja s različitih programa, analizirat ćemo stanje stogova u računalu na bazi 16-bitnog procesora MC 68000 tijekom jednog realnog scenarija kojeg možemo opisati na sljedeći način.

1. procesor je u korisničkom načinu rada i izvodi korisnički program; 2. korisnički program poziva potprogram instrukcijom JSR (Jump to Subroutine) i na-

stavlja se izvođenja korisničkog potprograma; 3. tijekom izvođenja korisničkog potprograma generiran je zahtjev za prekid. Zahtjev

je takve razine da biva prihvaćen; 4. upravljanje se prenosi na prekidni program. Prekidni se program izvodi u nadgled-

nom načinu rada procesora; 5. nakon što je izvršen 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) vraćamo u pozivajući

(glavni) korisnički program.

Page 154: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

® ® potprogram © prekidni program

SUBR

JSR SUBR

RTE

SI. 6.17 Grafički prikaz scenarija za analizu slučaja

Slika 6.17 prikazuje potonji scenarij (U - korisnički način rada (engl. User Mode); S - nad-gledni način rada (engl. Supervisor Mode). Naš je zadatak odrediti stanje stogova u točka-ma koje su neposredno prije prijenosa upravljanja i točaka neposredno nakon prijeno-sa upravljanja između pojedinih programskih struktura (glavnog korisničkog programa, korisničkog potprograma i prekidnog programa). Pažljivi čitatelj već je primijetio da smo upotrijebili množinu - stanje stogova, a ne stanje stoga. Vrlo brzo bit će jasno zašto.

Slika 6.18 prikazuje programski model procesora MC 68000. Procesor je registarski orijen-tiran i ima dvije skupine registara opće namjene: 32-bitne registre podataka označene s DO - D7. Registri podataka mogu pohranjivati operande duljine bajta (oznaka B), duljine riječi -16-bita (oznaka W) i duljine duge riječi, odnosno 32 bita (oznaka L). Važno je napo-menuti da operacije s podacima duljine 8 bita i 16-bita utječu samo na manje značajan dio 32-bitnog registra podataka. Na primjer, instrukcijom MOVE.B utječe se samo na osam najmanje značajnih bitova registra podataka dok preostala 24 značajnija bita ostaju nepro-mijenjena. Druga skupina registara opće 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 premješta-ju podatke (MOVE) u te registre utječu 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 odre-dišnog registra poprimiti vrijednost bita predznaka.

Osmi 32-bitni adresni registar A7 je registar kazalo stoga SP. Fizički procesor MC 68000 ima dva registra kazala stoga: korisničko kazalo stoga USP (User Stack Pointer) označeno s A7 i nadgledno (ili sistemsko) kazalo stoga (Supervisor Stack Pointer) SSP označeno s A7'. Naime, procesor MC 68000 je procesor naprednije arhitekture i podržava višekorisnički rad te ima i dva osnovna načina rada: korisnički način (engl. User Mode) - predviđen za izvođenje korisničkih programa i nadgledni način (engl. Supervisor Mode) - predviđen za izvođenje programa operacijskog sustava. Važno je zapamtiti da istodobno ne mogu biti aktivna oba kazala stoga - koje će biti aktivno zavisi od toga u kojem se načinu rada nalazi procesor.

Page 155: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 149

31 15

DO A

Dl

D2

03

V registri podataka

D4

D5

D6

15

statusni registar SR

sistemski bajt status registra

korisnički bajt status registra

SI. 6,18 Programski model procesora MC 68000

Programsko brojilo PC također je sastavnica programskog modela. Ono je duljine 32-bita, međutim, stvarna duljina adrese koju ono sadržava ovisi o stvarnoj širini adresne sabir-nice (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 značajan bajt koji sadr-žava zastavice X, N, Z, V i C koje su korisnički orijentirane zastavice (nose zajedničko ime CCR - Condition Code Register) i značajniji bajt koji predstavlja nadgledni ili sistemski bajt

Page 156: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

124 6. POGLAVLJE: UPRAVLJAČKA JEDINICA

statusnog registra SR koji je dohvatljiv samo kada se procesor nalazi u nadglednom načinu rada. U nadglednom načinu može 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.

nagledni bajt SR korisnički bajt SR

u •H H b i 5 b !3 b7 bo

T s 'a '1 'o X N Z V c

Zastavice: C (Carry) - zastavica prijenosa V (Overflow) - zastavica preljeva (aritmetičkog) Z (Zero) - zastavica nule N (Negative) - zastavica negativna vrijednost X (Extend) - zastavica proširenja L,\) l0 (Interrupt Mask) - prekidne zastavice S (Supervisor) - nadgledna zastavica T (Trace Mode) - zastavica praćenja

SI. 6.19 Organizacija statusnog registra SR i značenje zastavica

Spomenuli smo već da procesor ima dva načina rada: nadgledni i korisnički način rada. Objasnimo u čemu je razlika i kako se iz jednog načina rada prelazi u drugi način rada. Slika 6.20 prikazuje dijagram stanja kojim se opisuju ta dva načina rada te načini prijelaza iz jednog u drugo stanje. Upuštanjem u rad procesora - iznimkom najviše razine RESET (u računarskom žargonu kažemo "resetiranjem") procesor se postavlja u nadgledni način rada. Bitna značajka tog načina rada jest da procesoru stoje na raspolaganju sve instrukcije koje se nalaze u skupu strojnih instrukcija - zato ćemo taj način rada proglasiti povlaštenim ili privilegiranim načinom rada. Indikacija da se procesor nalazi u povlaštenom, tj. nadgled-nom načinu rada je stanje zastavice S - ona je postavljena (ima vrijednost 1). Usput, spo-menimo da se upuštanjem u rad briše zastavica praćenja T (T = 0) i time se onemogućuje izvođenje programa korak po korak, a prekidne zastavice l0 -12 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 načina rada za MC 68000

Nadgledni način rada namijenjen je obično programima koji su sastavni dio operacijskog sustava. Procesor može prijeći u manje povlašteni način rada koji se naziva korisnički način

Page 157: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S, RIBARIČ - GRAĐA RAČUNALA 151

r

tako da u nadglednom načinu instrukcijom pristupi sistemskom ili nadglednom bajtu sta-tusnog registra SR i obriše zastavicu S (postavi je u 0). Na primjer, povlaštenom instrukcijom

EORI #MASK, SR gdje je MASK usputni 16-bitni podatak koji ima vrijednost 2000 (heksadekadno) koji će s operacijom ISKLJUČIVO ILI sa sadržajem registra SR zastavicu S postaviti u 0. Slika 6.21 objašnjava kako se zastavica S postavlja u 0. Instrukcija je povlaštena jer se njome pristupa sistemskom bajtu registra SR.

zastavica S

b15 b13 b8 b7 bO

sadržaj statusnog registra SR T 1 '2 'o X N z V c

b8

vrijednost MASK 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0

b7 bO

rezultat instrukcije EORI T 0 '2 'l "o X N z V c

\ zastavica S

SI. 6,21 Logička operacija ISKLJUČIVO ILI između MASK i sadržaja statusnog registra SR ima za posljedicu brisanje zastavice S

Brisanjem zastavice S procesor prelazi u korisnički način rada. Korisnički način rada je ma-nje privilegiran, a to se ogleda u tome što se u tom načinu rada ne mogu izvoditi privi-legirane instrukcije. Taj je način rada predviđen za izvođenje korisničkih programa. Kako znamo koje su to privilegirane instrukcije? Privilegirane instrukcije su one instrukcije koje operacijskom sustavu dopuštaju pristup podacima i registrima kojima se ostvaruju funk-cije raspoređivanja zadataka (engl. task scheduling) i rukovanja iznimkama ili prekidima (engl. exception/interrupt handling). Izvođenjem takvih instrukcija utječe se na stanje pro-cesora i stanje svih korisničkih programa.

U programskom priručniku za procesor MC 68000 svaka takva instrukcija označena je kao privilegirana instrukcija. Što će se dogoditi ako se u korisničkom načinu rada pokuša izvesti privilegirana instrukcija? Prvo, ona se neće izvršiti, ali će izazvati iznimku koja se naziva "povreda privilegiranosti" (engl. Privilege violations). Tijekom obrade te iznimke, ovisno o funkciji operacijskog sustava, obično se prekida i odgađa (suspendira) daljnje izvođenje takvog korisničkog programa s pratećom porukom daje došlo do povrede privilegiranosti. Vratimo se dijagramu stanja načina rada.

Brisanjem zastavice S procesor se našao u manje povlaštenom korisničkom načinu rada. On je namijenjen izvođenju korisničkih programa. Procesor ostaje u tom načinu rada i jedino iznimkom ili prekidom može se vratiti u nadgledni način rada. Važno je znati da se programi kojima se obrađuju iznimke ili prekidi izvode u povlaštenom nadglednom načinu rada. Nakon obrade iznimke ili prekida povlaštenom se instrukcijom RTE (Return from Exception) rekonstruira stanje (sadržaj statusnog registra SR i programskog brojila PC)

Page 158: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

124 6. POGLAVLJE: UPRAVLJAČKA JEDINICA

procesora koje je bilo neposredno prije prihvaćanja iznimke ili prekida. Na taj se način pro-cesor vraća u korisnički način rada - u stanje u kojem je bio neposredno prije prihvaćanja prekida.

adrese

m m m m - 4

m m m m - 3

m m m m - 2

m m m m - 1

n n n r> - 8

n n n n - 7

n n n n - 6

n n n n - 5

n ri n n - 4

n n n n - 3

n n n n - 2

n n n n - 1

n n n n

n n n n + 1

n n n n + 2

n n n n + 3

n n ri n + 4

USP (korisničko kazalo stoga)

32 - bitni registar A7

krisnički stog

SSP (nadgleđno kazalo stoga)

32 - bitni registar A7'

nadgledni (sistemski) stog

Si. 6.22 Stanje stogova i kazala stoga neposredno prije grananja u korisnički potprogram

Naravno, ako se iznimka ili prekid dogodila u nadglednom načinu rada, procesor će se instrukcijom RTE vratiti u taj isti način rada (petlja označena s RTE; slika 6.20).

U skladu s našim scenarijem, procesor se nalazi u korisničkom načinu rada. Korisnički stog je potencijalno aktivan i na njegov vrh pokazuje aktivno korisničko kazalo stoga USP (adresni

Page 159: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 153

registar A7). Registar USP sadržava 32-bitnu adresu mmmm. Nadgledni je stog organiziran negdje drugdje u radnoj memoriji. Naravno, prostori dodijeljeni korisničkom stogu i nad-glednom stogu ne smiju se prekrivati. Budući da se procesor nalazi u korisničkom načinu rada, nadgledna stožna struktura je neaktivna ili "zamrznuta". "Zamrznuti" 32-bitni sadržaj nadglednog kazala stoga SSP (adresni registar A7') je nnnn. Slika 6.22. prikazuje stanje sto-gova neposredno prije grananja u korisnički potprogram.

m m m m - 4

m m m m - 3

m m m m - 2

m m m m - 1

m m m m

m m m m + 1

m m m m + 2

l : : — ,

povratna adresa iz potprograma

USP

mmmm-4

PC [31:0] - povratna adresa

korisnički stog

n n n n - 8

n n n n - 7

n n n n - 6

n n n n - 5

n n n n -4

n n n n - 3

n n n n - 2

n n n n - 1

n n n n

n n n n + 1

n n n n + 2

n n n n + 3

n n n n + 4

SSP

SL 6,23 Stanje stogova i kazala stogova neposredno nakon grananja u korisnički potprogram

Izvođenjem instrukcije JSR SUBR (slika 6.17) prenosi se upravljanje s korisničkog progra-ma na korisnički potprogram. Procesor i dalje ostaje u korisničkom načinu rada a tijekom

Page 160: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

124 6. POGLAVLJE: UPRAVLJAČKA JEDINICA

prijenosa upravljanja na aktivan stog (a to je korisnički stog) pohranjuje se 32-bitna povrat-na adresa. Sadržaj korisničkog kazala stoga umanjuje se za 4 (stog raste u smjeru padajućih adresa). Nadgledna stožna struktura i dalje je"zamrznuta". Slika 6.23 prikazuje stanje stogo-va neposredno nakon grananja u potprogram.

SL 6.24 Stanje stogova neposredno nakon prihvaćanja prekida

Za vrijeme izvođenja potprograma ulazno-izlazna jedinica generirala je zahtjev za prekid On se prekidnim linijama , IPLO, IPL1 i IPL2 (IPL - Interrupt Priority Level) prosljeđuje proce-soru. Aktivno stanje (0) na tim trima linijama određuje razinu zahtjeva za prekid: linija IPLO doprinosi razini "težinom"2°, linija IPL 1 21 i linija IPL2 doprinosi ukupnoj razini zahtjeva za

Page 161: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 155

prekid težinom 22. Na primjer, ako je IPL0 = 0, IPL1 = Q i ako je (PL2 - 1, onda je razina zahtje-va za prekid 3. Uz pretpostavku daje razina zahtjeva za prekid veća od razine prekida kodi-rane prekidnim zastavicama l1 i l2 u statusnom registru SR (pri čemu ako je l0 = 1, zasta-vica doprinosi težini 2°, ^ s težinom 2\ i l2 s težinom 22) zahtjev za prekid bit će prihvaćen. Za naš će primjer, ako je razina zahtjeva za prekid 3, on biti prihvaćen za sljedeće kombina-cije 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 prihvaćen. Prekid kao vrsta iznimke obrađuje se u nadglednom načinu rada procesora. Trenutni se sadržaj 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 "kućanskih poslova" pohranjuje minimalni kontekst (povratnu adresu i sadržaj statusnog registra, i to onaj koji je bio neposredno prije prihvaćanja prekida interno pohranjen) na aktivan stog. Aktivan stog je nadgledni stog (korisnički stog je sada "zamrznut"). Na nadgledni će se stog pohraniti 6 bajtova: četiri bajta koji čine 32-bitnu povratnu adresu i 2 bajta - sadržaj statusnog registra SR. Obratite pozornost da će u tako pohranjenom sadržaju statusnog registra SR zastavica S biti jednaka 0 jer je neposredno prije prihvaćanja prekida procesor bio u korisničkom načinu rada. Sadržaj nadglednog kazala stoga umanjuje se za 6. Slika 6.24 prikazuje stanje stogova neposredno nakon prihvaćanja prekida. Uočavamo da se na vrhu nadglednog stoga nalazi pohranjen minimalni kontekst, a na vrhu korisničkog stoga imamo pohranjenu povratnu adresu koja omogućuje povratak iz korisničkog potprogra-ma u korisnički (glavni) program.

Izvodi se prekidni program kojim se poslužuje uzročnik prekida. Posljednja instrukcija u prekidnom programu (slika 6.17) je povlaštena instrukcija RTE. Njezinim se izvođenjem s vrha nadglednog stoga uzima minimalni kontekst i raspoređuje se u statusni registar SR (stanje procesora neposredno prije prekida) i programsko brojilo PC (povratna adresa za povratak u korisnički potprogram). Slika 6.25 prikazuje stanje stogova nakon vraćanja iz prekidnog programa. Vidimo da je sadržaj nadglednog kazala stoga SSP povećan za 6 te da 4 bajta programskog brojila PC i dva bajta statusnog registra SR nisu više elementi nadglednog stoga (ostaje samo trag izvođenja RTE instrukcije).

Zahvaljujući vraćanju "starog" sadržaja statusnog registra SR natrag u SR procesor je po-novo u korisničkom načinu rada i izvodi (preostale) instrukcije iz korisničkog potprogra-ma. Izvođenjem posljednje instrukcije u potprogramu RTS s vrha korisničkog stoga (nad-gledni stog je "zamrznut") uzima se povratna adresa i smješta se u programsko brojilo PC. Upravljanje se vraća na glavni korisnički program. Slika 6.26 prikazuje stanje stogova nepo-sredno nakon povratka iz potprograma.

Ako usporedimo sliku 6.22, koja prikazuje stanje stogova i kazala stoga neposredno prije grananja u korisnički potprogram, i sliku 6.26 (Stanje stogova neposredno nakon vraćanja iz potprograma), vidimo da su stanja stogova i sadržaji kazala stogova jednaki: (USP) = mmmm, (SSP) = nnnn, samo što je ostao trag izvođenja u skladu s našim scenarijem - sa-držaji memorijskih lokacija mmmm -1, mmmm - 2, mmmm - 3, mmmm - 4 u memorijskom prostoru predviđenom za korisnički stog te sadržaji memorijskih lokacija od nnnn - 1 do nnnn - 6 koje su predviđene za nadgledni stog (slika 6.27). Naglasimo još jednom da sadr-žaji spomenutih memorijskih lokacija nisu više elementi niti korisničkog, niti nadglednog stoga.

Page 162: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

124 6. POGLAVLJE: UPRAVLJAČKA JEDINICA

m m m m - 4

m m m m - 3

n n n n - 1

SR [15:8]

SR [7:0]

PC [31 :24]

PC [23:16]

PC [15:8]

PC [7:0]

• - - • •• . - \

— r — — : — — . ' / - „ ,

• » ,

• .

USP

m m m m - 4

korisnički stog

SSP

nadgleđni stog

bajt

SI. 6.25 Stanje stogova neposredno nakon izvođenja RTE instrukcije

Page 163: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 157

PC [31 :24]

PC [23: 16]

PC [15:8]

m m m m - 1

m m m m + 1

PC [7:0] —

i^^&sšMMmam,

USP

mmmm

korisnički stog

n n n n - 2

n n n n - 1

n n r i n

5R [15:8]

SR [7:0]

PC [31 :24]

PC [23:16]

PC [15:8]

PC [7:0]

~ ~

" ".. " . i

...

• •

— • .

SSP

nadgledni stog

Si. 6.26 Stanje stogova neposredno nakon vraćanja iz potprograma

Page 164: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

124 6. POGLAVLJE: UPRAVLJAČKA JEDINICA

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

Page 165: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 159

7. POGLAVLJE

SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

7.1. PUT PODATAKA I UPRAVLJAČKA JEDINICA U 6. smo se poglavlju upoznali s osnovnim funkcijama upravljačke jedinice procesora. Opis njezinih funkcija bio je na razini strojnih instrukcija i nismo se upuštali u podrobnosti izvedbe upravljačke jedinice. U ovom ćemo poglavlju opisati dva osnovna pristupa izvedbi upravljačke jedinice i time čitatelju predstaviti izravnu vezu između strojnih instrukcija i sklopovlja koje tumači te instrukcije i generira upravljačke signale koji pobuđuju sklopove potrebne za izvršavanje instrukcija.

Procesor, koji se sastoji od dviju funkcijskih jedinica: aritmetičko-logičke i upravljačke jedi-nice, možemo predočiti i kao složeni digitalni sustav koji ima dvije sastavnice: put podataka (engl. datapath) i upravljačku jedinicu (engl. control unit). Put podataka predstavlja složenu sklopovsku strukturu koja se sastoji od sklopova koji izvršavaju aritmetičke i logičke ope-racije, registara za privremeno pohranjivanje operanada i rezultata te prijenosnih puto-va podataka (jedne ili više internih sabirnica). Svaka od tih sastavnica puta podataka ima jednu ili više "upravljačkih točaka" u koje se dovode upravljački signali kojima se određuje (mikro)operacija koja će se izvesti na podacima koji se upravo nalaze na putu podataka. Upravljačka jedinica generira upravljačke signale i upućuje ih putu podataka. Oni ulaze u upravljačke točke i određuju operaciju i vrijeme izvršenja operacije te usmjeravaju po-datke na putu podataka. Upravljačka jedinica pomoću upravljačkih signala na taj način konfigurira put podataka u skladu sa strojnom instrukcijom, odnosno programom. Slika 7.1 prikazuje jednostavan procesor predočen dvjema sastavnicama: putom podataka i upravljačkom jedinicom. Put se podataka u ovom jednostavnom procesoru sastoji od sku-pa registara opće namjene koji služi za privremeno pohranjivanje operanada i rezultata, prijenosnih putova organiziranih kao interne sabirnice, dvije jedinice F1 i F2 koje obavljaju osnovne aritmetičke i logičke operacije, operacije posmaka te multipleksora koji usmje-ravaju podatake na putu podataka. Upravljačkim signalima na upravljačkim ulazima mul-tipleksora 1 izabire se koji će se podaci usmjeriti prema skupu registara opće namjene, a

Page 166: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

160 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

put upravljačka podataka jedinica

a)

izlaz izbor registra 1

za čitanje [data out)

izbor registra 2 za čitanje skup registara

opće namjene izbor registra

za upis izlaz

(data out) ulaz za podatke

[data in)

(data out) ulaz za podatke

[data in)

piši [write)

b)

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

Page 167: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 161

signalima na upravljačkim ulazima multipleksora 2 određuju se podaci koji će biti usmjere-ni prema jedinicama F7 ili F . Pomoću upravljačkih signala koji se dovode u upravljačku toč-ku u skupu registara opće namjene specificiraju se registri koji će biti izvorišta operanada ili registar koji će poslužiti kao odredište za rezultat, odnosno određuje se hoće li se izvesti operacija čitanja ili pisanja.

Slika 7.1 b) prikazuje izvedbu skupa registara opće namjene koji je na putu podataka izve-den kaojednoulazna i dvoizlazna memorija (engl. one write port & two read ports).

Upravljačke točke dodijeljene jedinicama F1 i F2 služe za izbor aritmetičke ili logičke ope-racije i operacije posmaka. Logičkim vrijednostima upravljačkih signala i trenutkom nji-hovog generiranja upravljačka jedinica dinamički konfigurira put podataka u skladu sa zahtjevima instrukcije čije je izvođenje u tijeku. Na slici 7.1 uočavamo i signalne linije koje su usmjerene od puta podataka prema upravljačkoj jedinici - tim se linijama dojavljuju stanja koja mogu nastupiti izvođenjem aritmetičkih ili logičkih operacija u jedinicama F1 i F2, npr. rezultat je nula, rezultat je negativan, dogodio se preljev kod aritmetičke operacije ili prijenos iz najznačajnije bitovne pozicije rezultata (engl. carry).

Put podataka za jednostavne izvedbe procesora može se predočiti kao linearni put podata-ka koji je jednak za sve instrukcije, pri čemu upravljački signali određuju hoće li se ili neće dogoditi aktivnost na određenom dijelu puta podataka. Složenije izvedbe procesora imaju put podataka organiziran kao protočni put podataka (engl. pipelined data path) kojim je omogućeno da se istodobno više strojnih instrukcija u različitim fazama izvođenja izvršava na putu podataka. Složeni suvremeni procesori (superskalarni procesori) imaju razgranate putove podataka koji dopuštaju istodobno izvođenje više strojnih instrukcija u različitim granama puta podataka. Uz sve to, svaka od tih grana puta podataka može biti ostvarena kao protočni put podataka, odnosno protočna grana puta podataka. Očito je da tako slo-žen put podataka zahtijeva kompleksnu upravljačku jedinicu koja svojim signalima mora rukovoditi podacima i operacijama u svim protočnim granama puta podataka.

Primjer 7.1.

Put podataka obično uključuje ove glavne sastavnice: • skup registara (registre opće namjene) i privremene registre; • aritmetičko-logičku jedinicu, odnosno sklopove koji obavljanju aritmetičke i logičke

operacije;

• posmačni sklop; • internu sabirnica (ili više njih); • posebne (upravljačke) registre (npr, registar vektora iznimaka, privremeni registar

za pohranjivanje stanja procesora tijekom izvođenja nekih upravljačkih instrukcija); • programsko brojilo PC koje se također može nalaziti na putu podataka i na taj

način pojednostavnjuje računanje efektivne adrese operanda ili odredišta. No u procesorima koji imaju vrlo velike performanse, programsko brojilo ima posebne sklopove za povećanje njegova sadržaja i računanje efektivne adrese operanada (rezultata) pa se postiže preklapanje računanja adrese s operacijama u aritmetič-ko-iogičkoj jedinici.

Izvedba puta podataka izravno utječe na performansu procesora. Jedno od mjerila uspješ-nosti izvedbe puta podataka jest vrijeme potrebno za izvođenje temeljne operacije na putu

Page 168: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

162 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

podataka - vremenski cikius puta podataka (engl. data path cycle time). On mora biti sto je moguće kraći. Temeljna operacija na putu podataka sastoji se od dohvata (čitanja) opera-nada iz skupa registara opće namjene, izvođenja npr. aritmetičke 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, upravljačka jedinica mora generirati sljedeće upravljačke signale:

• upravljački signal za izbor registra R2 i upravljački signal za izbor registra R3 u skupu registara opće namjene te upravljački signal kojim se skupu registara nalaže ope-racija čitanja. Skup registara opće namjene izveden je kao jednoulazna i dvoizlazna memorija (engl. one write port & two read ports) pa je omogućen istodobni pristup dvama ope rand i ma, ali i upis rezultata u istoj periodi signala vremenskog vođenja (slika 7.1 b));

• upravljački signal koji se dovodi u upravljačku točku (upravljački ulaz multipleksora 2) i kojim se operandi upućuju u jedinicu F^

• upravljački signal kojim se u jedinici F1 aktivira sklop za zbrajanje (zbrajalo); • upravljački signal koji se dovodi u upravljačku točku (upravljački ulaz multipleksora

1) kojim se rezultat usmjerava prema skupu registara opće namjene; • upravljački signal za izbor odredišnog registra R1 i signal kojim se nalaže upis rezul-

tata u taj registar (operacija "piši").

Slika 7.2 prikazuje vremensku skladnost generiranih upravljačkih signala tijekom jedne pe-riode signala vremenskog vođenja kojom je podržana opisana temeljna operacija. Vidimo da se ova operacija izvodi u jednoj periodi signala vremenskog vođenja (engl. single clock cycle). Mnoge jednostavnije strojne instrukcije mogu se izvesti u jednoj periodi signala vre-menskog vođenja koja odgovara vremenskom ciklusu puta podataka. No složenije stroj-ne instrukcije, posebno one iz skupa instrukcija CISC (Complex Instruction Set Computer) procesora zahtijevaju veći broj perioda signala vremenskog vođenja, odnosno veći broj osnovnih vremenskih ciklusa puta podataka (engl. multicycle operation).

< perioda signala

vremenskog vođenja

izbor odredišnog registra "piši" izbor F1 (multipleksor 2)

izbor zbrajala

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

Page 169: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 163

2. DVA OSNOVNA NAČINA OBLIKOVANJA UPRAVLJAČKE JEDINICE Tijekom relativno kratkog, ali burnog povijesnog razvoja arhitekture računala iskristalizira-la su se dva osnovna pristupa oblikovanja upravljačke jedinice procesora:

i) sklopovski pristup; ii) mikroprogramski pristup.

U sklopovskom se pristupu upravljačka jedinica promatra kao sekvencijalni logički sklop ili konačni automat (engl. finite-state machine) koji generira sljedove upravljačkih signala kao odgovor na iz memorije pribavljenu strojnu instrukciju, možebitne vanjske uvjete i stanje zastavica statusnog registra (slika 7.3). Uobičajeni ciljevi u oblikovanju takvim pristupom su minimizacija broja sklopovskih komponenti i postizanje što je moguće veće brzine dje-lovanja. Ostvarivanje prvog cilja - minimizacija broja sklopovskih komponenti u izvedbi upravljačke jedinice opravdana je kada se zna da upravljačka jedinica zauzima velik dio površine silicijskog čipa (ukupna raspoloživa površina silicijskog čipa kreće se od oko 50 mm2 za 16-bitne mikroprocesore do oko 500 mm2 za višejezgrene procesore). Primjerice, upravljačka jedinica 8-bitnog procesora MC 6800 zauzimala je oko 58% cjelokupne po-vršine procesorskog čipa, 16-bitni procesor MC 68000 treba oko 69% površine silicija za upravljačku jedinicu, a za neke 32-bitne procesore upravljačka jedinica zauzima više od 80% površine čipa. S druge strane, ne smije se zanemariti i potrošak snage, naime veći broj komponenti i sve veća brzina sklopovlja, odnosno viša frekvencija signala vremenskog vođenja, prouzrokuje sve veći potrošak snage, a to izaziva velike probleme vezane za hla-đenje procesorskog čipa. Na primjer, Intelov procesor 80386 (1989.) radio je na frekvenciji 25MHz i imao potrošak od 4.9 W, dok je Pentium 4 Prescott (2004.) radio na frekvenciji 3.6 GHz i ima potrošak snage 103 W (otprilike kao klasična žarulja s žarnom niti).

Jasno je da se zauzećem većeg dijela procesorskog čipa upravljačkom jedinicom smanjuje prostor za izvedbu puta podataka koji izravno utječe na performansu procesora (višestru-ke aritmetičke i logičke jedinice, protočna izvedba, razgranati protočni putovi podataka).

Jednom kada je upravljačka jedinica realizirana sklopovskim pristupom, jedini način za izvedbu bilo kakve promjene u njezinom ponašanju zahtijeva potpuni redizajn. Takva se jedinica obično naziva "čvrsto ožičena"(engl. hardwired).

7.3 Shematski prikaz sklopovske izvedbe upravljačke jedinice

Page 170: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

164 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

Mikroprogramiranje predstavlja alternativni pristup oblikovanju upravljačke jedinice pro-cesora. Slika 7.4 prikazuje strukturu mikroprogramirane upravljačke jedinice. Središnja gra-đevna sastavnica upravljačke jedinice je upravljačka memorija (ili mikroprogramska me-morija) (engl. control memory) u kojoj su pohranjeni "upravljački signali" u formatu poput strojnih instrukcija u programu. U tom obliku pohranjene upravljačke signale nazivamo mikroinstrukcijama. Sljedovi mikroinstrukcija čine jedan ili veči broj programa koji se na-zivaju mikroprogramima. Upravljačka memorija mikroprogramirane upravljačke jedinice pohranjuje više mikroprograma: Svakoj strojnoj instrukciji iz instrukcijskog skupa odgovara jedan mikroprogram koji če se pobuditi na temelju operacijskog koda strojne instrukcije i, možebitno, na temelju vanjskih uvjeta ili stanja zastavica statusnog registra. Izvođenjem mikroprograma pribavljat če se mikroinstrukcije (upravljački signali) iz mikroprogramske memorije i upućivat će se upravljačkim točkama u putu podataka. Zaključimo, mikro-programska memorija sadržava skup mikroprograma kojima se oponaša (emulira) skup strojnih instrukcija procesora. Neki autori (M. Flynn, i M. D. MacLaren, L. L. Rakoczi) ovako realiziranu upravljačku jedinicu zorno predočavaju i nazivaju "računalo u računalu" (engl. computer-within-computer) jer, vidjet ćemo uskoro, upravljačka jedinica tijekom izvođe-nja mikroprograma prolazi kroz "mikrofazu - pribavi" - kada se dohvaća mikroinstrukcija i "mikrofazu - izvrši" - kada se mikroinstrukcija izvršava, odnosno kada upravljački signali aktiviraju sklopove na putu podataka.

put podataka

Si. 7.4 Struktura mikroprogramirane upravljačke jedinice

Page 171: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 165

Mikroprogramski pristup izvedbi upravljačke jedinice omogućuje bolji i sistematični dizajn jer su upravljački signali "formatirani" u mikroinstrukcije, a izmjena upravljačkih signala ili slijeda upravljačkih signala svodi se samo na promjenu sadržaja jedne ili više memorijskih lokacija mikroprogramske memorije. Zbog načina izvedbe u kojem su upravljački signali "ugrađeni" u neku vrstu "softvera"tj. programa niske razine, ovako se oblikovana upravljač-ka jedinica naziva mikroprogramska (engl. microprogrammed), ali i firmwired (za razliku od sklopovske izvedbe koja se naziva i hardwired).

Mnogi autori ističu mikroprogramski pristup kao najbolju metodu oblikovanja upravljačke jedinice. Mikroprogramirana jedinica je, međutim, skuplja od sklopovski realizirane uprav-ljačke jedinice, a vrlo često i sporija zato što zahtijeva dodatno vrijeme za pribavljanje mi-kroinstrukcije iz mikroprogramske memorije (vrijeme potrebno za mikrofazu - pribavi). Procesori CISC arhitekture koji imaju veliki i raskošan skup strojnih instrukcija, u načelu, imaju upravljačku jedinicu realiziranu mikroprogramiranjem. Procesori RISC arhitekture koji imaju mali skup jednostavnih (ali ekstremno brzih) strojnih instrukcija koriste sklopov-ski realiziranu upravljačku jedinicu.

7.3. SKLOPOVSKA UPRAVLJAČKA JEDINICA Sklopovski pristup izvedbi upravljačke jedinice može se temeljiti na:

i) standardnom pristupu oblikovanja sekvencijalnih logičkih sklopova (ili konačnih automata) uporabom tablica stanja i primjenom kombinacije građevnih sastavnica sa značajkama niskog stupnja integracije - SSI (Small Scale Integration, npr. osnov-ni logički sklopovi) i sastavnica sa značajkama srednjeg stupnja integracije - MSI (Medium Scale Integration, npr. brojila, dekoderi);

ii) uporabi elemenata za kašnjenje za generiranje upravljačkih signala i njihovu vre-mensku sinkronizaciju;

iii) uporabi generatora upravljačkih vremenskih impulsa (ili generatora sljedova) (engl. timing pulse generator, sequencer) i kombi nacijskih sklopova.

Naravno, u izvedbi suvremenih procesora građevne sastavnice temelje na tehnologiji vrlo visokog stupnja integracije VLSI.

Slika 7.5 prikazuje organizaciju upravljačke jedinice koja je ostvarena na temelju standar-dnog pristupa i primjenom građevnih sastavnica kao što su osnovni logički sklopovi, deko-deri, multipleksori, registri i brojila.

Instrukcijski dekoder tumači operacijski kod instrukcije i pobuđuje odgovarajuću izlaznu liniju (jednu od 2n linija, gdje je n broj bitova operacijskog koda). Na temelju pobuđene linije, vanjskih uvjeta i/ili stanja zastavica u statusnom registru te na temelju povratnih si-gnala iz sklopovske upravljačke matrice, sklopovi za generiranje sljedećeg stanja pobu-đuju signale koji odgovaraju vremenskom slijedu izvođenja elementarnih operacija koje se nazivaju mikrooperacije (u kontekstu upravljačke jedinice termin mikrooperacija označava jednostavnu, primitivnu, skoro nedjeljivu operaciju koja je izravno i u potpunosti podrža-na sklopovljem, npr. postavljanje podatka na internu sabirnicu, prijenos podataka između dva registra, inkrementiranje sadržaja registra ili brojila, aktiviranje sklopa u aritmetičko-logičkoj jedinici). Sklopovska upravljačka matrica na temelju signala iz sklopova za gene-riranje sljedećeg stanja oblikuje upravljačke signale koji se dovode u upravljačke točke na

Page 172: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

166 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

putu podataka i pobuđuju odgovarajuće mikrooperacije. Kao stoje već spomenuto, jedan dio upravljačkih signala dovodi se natrag sklopovima za generiranje sljedećeg stanja.

osnovni signal vremenskog vođenja

SI. 7.5 Organizacija upravljačke jedinice ostvarena na temelju standardnog pristupa oblikovanja sekvencijalnih sklopova

7.3.1. IZVEDBA UPRAVLJAČKE JEDINICE UPORABOM GENERATORA SLJEDOVA - ANALIZA SLUČAJA U ovom ćemo potpoglavlju sustavno opisati postupak oblikovanja upravljačke jedinice procesora koja se temelji na uporabi generatora sljedova, odnosno generatora upravljač-kih vremenskih impulsa. Prije negoli krenemo u opis postupka, prikažimo izvedbu uprav-ljačkih signala za mikrooperaciju koja će se najčešće pojavljivati na putu podataka. To je mikrooperacija prijenosa sadržaja između dva registra - jednog izvorišnog registra Rm (sli-ka 7.6.) i jednog odredišnog registra Rn. Pretpostavit ćemo da je prijenosni put za podatke interna sabirnica IntBUS; (slika 7.6). Važnu ulogu u prijenosu imaju upravljačke točke na koje se dovode upravljački signali C1 i C2. Upravljačka točka na koju se dovodi upravljački signal C1 realizirana je sklopovima s tri stanja (engl. three-state gate). Takav sklop (slika 7.7 a1)) funkcionira "normalno" kada je upravljački ulaz C aktivan (logička "1"), tj. prosljeđuje ulaznu binarnu vrijednost na izlaz. No ako je upravljački signal C neaktivan (logička "0"), izlaz je električki odspojen, tj. izlazni otpor je jednak vrlo velikom otporu bez obzira na vrijednost ulaznog signala A (je li logička "0" ili "1"). Tada se sklop nalazi u trećem, odnosno neaktivnom stanju. Ovisno o izvedbi sklopa s tri stanja može se ponašati i kao invertor (engl. three-state invertergate) (slika 7.7 a2) i a4)) ili biti neinvertirajući (engl. three-state bu-ffergate) (slika 7.7 al) i a3)). Osim toga, sklop s tri stanja može imati upravljački ulaz C takav daje on definiran kao aktivan kad je u logičkoj "0" (slika 7.7 a3) i a4)).

Pojednostavljeno, sklop s tri stanja možemo promatrati kao zasun koji je otvoren i "propu-šta" signal s ulaza na izlaz ako je stanje njegovog upravljačkog signala aktivno (slika 7.7 b)).

Page 173: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 167

Vratimo se slici 7.6.

Aktiviranjem signala C1 „postavlja" se sadržaj registra Rmna sabirnicu IntBus.

Druga upravljačka točka, na koju se dovodi upravljački signal C2,je"puni registar"(englJoad register) - aktivan signal na tom ulazu ima za posljedicu unos podatka u registar Rn. Slika 7.8 prikazuje valne oblike upravljačkih signala C1 i C2 kojima se ostvaruje prijenos sadržaja iz registra Rm u Rn. Za opis mikrooperacija koristit ćemo notaciju sličnu RTL-u (Register Transfer Language) - sklopovskom jeziku za opisivanje sklopovlja. Tako, na primjer, prijenos između registara predočit ćemo s Rm Rn. Obično se uz opis mikrooperacije s lijeve strane ispisuje i logički uvjet koji mora biti zadovoljen da bi se mikrooperacija izvela. Operaciju prijenosa sadržaja između registara Rm-> Rn preko interne sabirnice možemo opisati u dva koraka:

C:R IntBUS 1 m C: IntBUS -> R 2 n

b31 b30 b2 b1 bO

IntBUS

SI. 7.6 Sklopovska izvedba mikrooperacije prijenosa podataka između dva registra posredstvom interne sabirnice

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

Page 174: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

168 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

Y=A a koje C=1

Y=veliki izlazni otpor (treće stanje) ako je C=0

Y Y=A ako je C=1

Y=veliki izlazni otpor (treće stanje) ako je C=0

al) a 2)

Y Y=Aakoje C=0

Y=veliki izlazni otpor (treće stanje) ako je C=1

Y Y=A ako je C=0

Y=veliki izlazni otpor (treće stanje) ako je C=1

a3)

a)

a4)

C=0

Y A

C=1

C=0

b)

C=1

SI. 7.7 Sklop s tri stanja; a) izvedbe sklopa s tri stanja; b) tumačenje ponašanja sklopa s tri stanja

R - IntBUS

t

IntBUS - R_

SI. 7.8 Valni oblici upravljačkih signala C1 i C2 kojima se ostvaruje prijenos sadržaja iz registra Rm u Rn

Page 175: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 169

DB0-DB31

adresna sabirnica

SI. 7.9 Struktura jednostavnog 32-bitnog procesora

Page 176: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

170 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

ldaX

^ ^ — . . . -M

M[X] A; sadržaj memorijske lokacije X premjesti u akumulator A

staX A M[X]; sadržaj akumulatora A pohrani na memorijsku lokaciju X

addaX A + M[X] - •A; zbroji

andaX A • M[Xj A; izvedi logičko 1

coma A A; izvedi jedinični komplement

jmpX X PC; granaj na instrukciju koja se nalazi na ciljnoj adresi X

jmpzX ako je A = 0 onda X PC; uvjetno grananje

shra posmak sadržaja 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 - jednoznačno određuje 8 instrukcija, dok je adresno polje 24-bitno i time određuje izravno adresirljivi prostor veličine 16 M 32-bitnih riječi (224). Bitovi b24 - b28 ne koriste se u instrukciji te mogu poslužiti za možebitno povećanje izravno adresirljivog prostora ili proširenje skupa instrukcija (u nekoj novoj verziji procesora). Mali skup instrukcija i čvrsta duljina strojne instrukcije značajka je procesora RISC arhitekture. Naš procesor, međutim, nije RISC procesor - akumulatorsko je orijentiran i ima aritmetič-ke i logičke instrukcije koje nisu vrste registar-registar (vidi poglavlje 3.). Činjenica da su sve instrukcije jednake duljine pojednostavit će sklopovlje koje podržava fazu PRIBAVI jer će ona biti jednaka za sve instrukcije. Na slici 7.9 vidimo da aritmetičko-logička jedinica (ALU) ima dva ulaza P i Q. Na ulaz P izravno je priključen 32-bitni akumulator A, dok se na ulaz Q dovodi podatak koji je trenutno postavljen na 32-bitnu Internu sabirnicu IntBUS. Aritmetičko-logička jedinica na izlazu ima interni ALU registar (IntRegALU) u kojem se pri-vremeno pohranjuje rezultat aritmetičko-logičke operacije (upravljački signal C15) koji će se aktiviranjem upravljačkog signala C6 postaviti na internu sabirnicu (slika 7.9). Na taj je način uklonjen neželjeni utjecaj izlaza sklopovlja aritmetičko-logičke jedinice na podatke koji se nalaze na internoj sabirnici. Upravljačke točke na putu podataka koje su realizirane logič-kim sklopovima s tri stanja označene su na slici 7.9 kružićima, a upravljačke točke za unos podataka u registre ili specifikaciju operacije u aritmetičko-iogičkoj jedinici označene su podebljanom vertikalnom crticom na kojoj završava vrh strelice linije upravljačkog signala.

Opišimo aktivnosti tijekom faze PRIBAVI i odredimo njihov vremenski slijed:

1. korak: PC MAR; prenesi sadržaj 24-bitnog programskog brojila PC u memorijski adre-sni registar MAR;

Page 177: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 171

Vremenski slijed aktivnosti za 1. korak faze PRIBAVI je: O,: PC-HntBUS <P2: IntBUS MAR,

lijeva strana gornjih izraza označava logički uvjet koji mora biti ispunjen da bi se izvela (mi-kro)operacija specificirana na desnoj strani izraza. Signali <l> i = 1,2,... izlazi su iz generatora sljedova (slika 7.11). Uočavamo da su izlazi iz generatora sljedova <!>. i = 1, 2,n, impulsi koji su vremenski pomaknuti tako da se međusobno ne preklapaju. Nakon n uzastopce generiranih impulsa ponavlja se periodično slijed generiranih signala <D. i = 1,2,..., n.

start start w w

stop generator sljedova

(modul n)

w

clock

w generator sljedova

(modul n)

reset

w

generator sljedova

(modul n)

w

clock = signal vremenskog vođenja

T h—H

<t>3

perioda sljedova (modul n)

SI. 7.11 Generator sljedova (generator upravljačkih vremenskih impulsa)

2. korak: M[MAR] MDR; pročitaj sadržaj memorijske lokacije čija je adresa iz MAR postav-ljena na adresnu sabirnicu ABO- AB23. Pribavljeni sadržaj pohrani u MDR;

Vremenski slijed upravljačkih signala kojim se izvodi 2. korak faze PRIBAVI je: <i>3: čitaj sadržaj memorijske lokacije M <£4 čitaj sadržaj memorijske lokacije M i pohrani sadržaj u MDR;

Ovdje smo predvidjeli da operacija vremenski odgovara trajanju dvaju impulsa generatora sljedova što je opravdano jer se može očekivati da je vrijeme pristupa radnoj memoriji (memorijskoj jedinici računala) dulje negoli je vrijeme potrebno za izvođenje mikroopera-cije na putu podataka. Tijekom <I>4 unosi se podatak sa (vanjske) sabirnice podataka DBO -DB31 u MDR.

Page 178: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

172 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

3. korak: PC +1 —• PC i MDR(OP) IR; inkrementiraj sadržaj programskog brojila PC i prenesi tri najznačajnija bita koja predstavljaju operacijski kod instrukcije u instrukcijski registar IR;

Ove se dvije mikrooperacije mogu izvesti istodobno tj. paralelno jer je sklop za inkrementi-ranje 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 upravljačkih vremenskih impulsa: - <I>7. Uz pretpostavku da je vrijeme trajanja jednog upravljačkog vremenskog impulsa

jednako periodi signala vremenskog vođenja (clock; slika 7.11), a frekvencija tog signala je tako izabrana da njegova perioda (T= 1/f) odgovara vremenu izvođenja osnovne mikroo-peracije, onda faza PRIBAVI zahtijeva vrijeme 7 xT.

C 0 add ALU upravljanje P + Q; zbroji

C , and ALU upravljanje P-Q

C 2 com ALU upravljanje p i i

C 3 Read Upravljanje memorijom čitanje (Read) ] j C 4 Write Upravljanje memorijom pisanje (Write) ,

C 5 MDR Upravljanje sabirnicom MDR IntBUS

C 6 ALU Upravljanje sabirnicom IntRegALU -> IntBUS

C 7 E a Upravljanje sabirnicom A IntBUS i

C 8 Epc Upravljanje sabirnicom PC IntBUS j

C 9 Eir Upravljanje sabirnicom IR IntBUS f i C , o L a Upravljanje registrom

t IntBUS A [

C „ L p c Upravljanje registrom IntBUS PC

L , r Upravljanje registrom IntBUS IR j

C,3 MAR Upravljanje registrom IntBUS MAR |

C,4 '"MDR Upravljanje registrom IntBUS MDR ili (DB0-DB31) MDR I

C , 5 '"ALU Upravljanje registrom ALU IntRegALU j

C „ Inc Upravljanje registrom PC + 1 PC

C , 7 Sh Upravljanje registrom posmak udesno akum. A

Tablica 7.2. Popis upravljačkih signala

Page 179: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 173

Da bi se podržala faza PRIBAVI i faza IZVRŠI za svaku od strojnih instrukcija za naš procesor, upravljačka jedinica mora generirati upravljačke signale C0 - C i dovesti ih u upravljačke točke na putu podataka.Tablica 7.2. sadržava popis upravljačkih signala, njihove simbole i mikrooperacije koji oni pobuđuju. Tablica 7.2. nužna nam je za dizajn upravljačke jedinice.

Upravljački signali kojima će biti aktivirane mikrooperacije za cjelovitu fazu PRIBAVI su: Vremenski trenutak Upravljački signali Mikrooperacija

0 1 C8 PC-HntBUS <t>, C , C , IntBUS - • MAR L o I J

0 3 C3 čitanje mem. lokacije <P4 C3, C14 (DB0-DB31) MDR Os C16, C5 PC + 1 PC, MDR(OP) IntBUS 0 6 C5,C12 IntBUS -HR <P7 - dekodiranje op. koda

Upravljačka jedinica generirajući sljedove upravljačkih signala: C8 - (C8, C13)- C3 - (C3, C14) -(C16, C5) - (C5, C12) u trenucima određenim s <I>1 - <I>7 izvest će fazu PRIBAVI.

Opišimo fazu IZVRŠI 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 završetka faze PRIBAVI u registru MDR nalazi se 32-bitna in-strukcija čiji je format prikazan na slici 7.10.)

Vremenski slijed aktivnosti za 1. korak faze IZVRŠI je: 0>8: MDR(ADRESA) IntBUS 09 : IntBUS MAR

2. korak: M[MAR] MDR

Vremenski slijed aktivnosti za 2. korak faze IZVRŠI je: <X>10: čitaj (Read) sadržaj memorijske lokacije M <I>n: čitaj (Read) sadržaj memorijske lokacije M i pohrani sadržaj u MDR;

3. korak: MDR A; prenesi operand u akumulator A

Vremenski slijed aktivnosti za 3. korak faze IZVRŠI je: 012: MDR-•IntBUS d>13: IntBUS A

Upravljački signali kojima će biti aktivirane mikrooperacije za cjelovitu fazu IZVRŠI za in-strukciju ldaX su:

Vremenski trenutak Upravljački signali Mikrooperacija C5 MDR IntBUS

<D9 C5,C13 IntBUS MAR O10 C3 čitanje mem. lokacije <Dn C3,C14 (DB0-DB31) MDR

C5 MDR IntBUS <J>13 C5,C10 IntBUS-» A

Page 180: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

174 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

Faza IZVRŠI za strojnu instrukciju IdaXtraje 6 vremenskih intervala koji odgovaraju trajanju upravljačkog vremenskog impulsa pa je ukupno vrijeme potrebno za izvođenje instrukcije IdaX jednako -<I>7 odnosno 13 vremenskih intervala (od toga su 4 vremenska intervala "potrošena" na pristup (radnoj) memoriji, odnosno više od 30% vremena trajanja instrukcijskog ciklusa).

instrukcija staX; operacijski kod = 001

1. korak: MDR(ADRESA) MAR; 24-bitnu adresu operanda iz MDR prenesi u MAR

Vremenski slijed aktivnosti za 1. korak faze IZVRŠI je: <Dg: MDR(ADRESA) -> IntBUS 09 : IntBUS MAR

2. korak: A MDR; sadržaj akumulatora A smjesti u MDR

Vremenski slijed aktivnosti za 2. korak faze IZVRŠI je: <D10: A - • IntBUS O n : IntBUS-•MDR

3. korak: MDR -• M[MAR]; pohrani sadržaj MDR registra u memoriju

Vremenski slijed aktivnosti za 3. korak faze IZVRŠI je: <I>12: piši (Write); pohrani sadržaj na memorijsku lokaciju <I>13: piši (Write); pohrani sadržaj na memorijsku lokaciju

Upravljački signali kojima će biti aktivirane mikrooperacije za cjelovitu fazu IZVRŠI za in-strukciju staX jesu:

Vremenski trenutak Upravljački signali Mikrooperacija 0 8 C5 MDR - • IntBUS % C5,C13 IntBUS-•MAR <D10 C7 A IntBUS <Ž>n C7,C14 IntBUS -• MDR <I> C. Write 12 4

CA Write 13 4

Instrukcija staX također zahtijeva 13 vremenskih intervala za svoje izvođenje.

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 IZVRŠI je: Os: MDR (ADRESA)-•IntBUS <X>9: IntBUS - • MAR

2. korak: M[MAR] - • MDR; dohvati operand iz memorije

Vremenski slijed aktivnosti za 2. korak faze IZVRŠI je: <I>10: čitaj (Read) sadržaj memorijske lokacije M

čitaj (Read) sadržaj memorijske lokacije M i pohrani sadržaj u MDR

3. korak: A + MDR -• A; zbroji sadržaj akumulatora A i operand iz MDR-a

Page 181: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 175

Vremenski slijed aktivnosti za 3. korak faze IZVRŠI je:

<I> 1 2 "

13* 14'

MDR-^ lntBUS;P + Q IntRegALU IntBUS IntBUS A

IntRegALU

Upravljački signali kojima će biti aktivirane mikrooperacije za cjelovitu fazu IZVRŠI za in-strukciju addaX su:

Vremenski trenutak Upravljački signali Mikrooperacija MDR IntBUS IntBUS MAR

*io C3 čitanje mem. lokacije

<3> 11 (DB0-DB31) MDR <1> 12 c c c 5' 0' 15

IntBUS MDR, P + Q IntRegALU

13 IntRegALU IntBUS

14 IntBUS A

Instrukcija adda X izvodi se u 14 vremenskih intervala, pri čemu svaki interval odgovara vremenu trajanja upravljačkog vremenskog impulsa.

instrukcija anda X; operacijski kod = 011

1. korak: MDR(ADRESA) MAR; 24-bitnu adresu operanda iz MDR prenesi u MAR

Vremenski slijed aktivnosti za 1. korak faze IZVRŠI je: 08 : MDR (ADRESA) IntBUS <I>9: IntBUS MAR

2. korak: M[MAR] MDR

Vremenski slijed aktivnosti za 2. korak faze IZVRŠI je: O10: čitaj (Read) sadržaj memorijske lokacije M

<f>n: čitaj (Read) sadržaj memorijske lokacije M i pohrani sadržaj u MDR;

3. korak: A • MDR A; (logička operacija I)

Vremenski slijed aktivnosti za 3. korak faze IZVRŠI je: <P

<P

12' 13*

14'

MDR IntBUS; P - Q • IntRegALU IntBUS IntBUS A

IntRegALU (logička operacija I)

Potrebni upravljački signali su: Vremenski trenutak Upravljački signali

<J> "5

Q C

o o

10

12

13

13

C3

c3« c14

c c c 5' S ' 15 c

14 "6

c „ c 10

Mikrooperacija MDR -> IntBUS IntBUS MAR

čitanje mem. lokacije (DB0-DB31) MDR

IntBUS MDR, P • Q IntRegALU IntRegALU IntBUS

IntBUS A

Page 182: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

176 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

instrukcija coma; operacijski kod = 100

1. korak: A A; jedinični komplement

Vremenski slijed aktivnosti za 1. korak faze IZVRŠI je: Og: IntRegALU 09 : IntRegALU IntBUS O10: IntBUS A

Vremenski slijed aktivnosti za 1. korak faze IZVRŠI je:

Vremenski trenutak Upravljački signali Mikrooperacija <Dg C2,C15 P - * IntRegALU 0>9 C6 IntRegALU IntBUS d>10 C6,C10 IntBUS A

Faza IZVRŠI za instrukciju coma traje tri vremenska intervala, odnosno instrukcija coma za-htijeva 10 vremenskih intervala.

instrukcija jmpX; operacijski kod = 101

1. korak: MDR(ADRESA) PC

Vremenski slijed aktivnosti za 1. korak faze IZVRŠI je: Vremenski trenutak Upravljački signali Mikrooperacija

0>8 C5 MDR(ADRESA) IntBUS % C5,C„ IntBUS PC

Instrukcija jmpX je "brza" instrukcija koja zahtijeva samo 9 vremenskih intervala.

instrukcija jmpzX; operacijski kod = 110

1. korak: MDR(ADRESA) PC ako je A = 0 inače nema promjene sadržaja PC-a

Vremenski slijed aktivnosti za 1. korak faze IZVRŠI je: Vremenski trenutak Upravljački signali Mikrooperacija

<I> C MDR(ADRESA) IntBUS O J

0>9 ako je A= 0 onda C5, Cn IntBUS PC

instrukcija shra; operacijski kod =111

1. korak: Shr A A

Vremenski slijed aktivnosti za 1. korak faze IZVRŠI je: Vremenski trenutak Upravljački signali Mikrooperacija

<I>8 C17 Shr A A; posmak udesno

Slika 7.12 prikazuje organizaciju sklopovske upravljačke 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 (logičko"1") za neku određenu n-bitnu kombi-naciju na njegovom ulazu. Primjerice, ako je na ulazu u instrukcijski dekoder binarna kom-binacija 000 (operacijski kod instrukcije ldaX), onda će biti aktivan izlaz označen na slici s l0. Ako je na ulazu binarna kombinacija 100 (operacijski kod instrukcije coma), onda će biti

Page 183: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA

aktivan samo izlaz l4 (slika 7.12). Na slici 7.12 vidimo da se izlazi iz instrukcijskog dekodera (lQ- l7)"susreću"s izlazima iz generatora sljedova u dijelu koji je označen kao"kombinacijski sklopovi". Izlaz iz tog dijela su upravljački signali C0 - C17 tako da opravdano možemo pret-postavljati da se sinteza upravljačkih signala temelji na logičkim kombinacijama izlaza iz instrukcijskog dekodera i izlaza iz generatora sljedova. Zbog toga možemo postaviti hipo-tezu da se upravljački signali C i = 0, 1,2,..,, 17 mogu opisati logičkom jednadžbom oblika:

{ 7 \

(7.1) 16 f 7

y=i V m

m=0 /

gdje 5) označava logičku operaciju ILI a • logičku 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 upravljačke signale koji se generiraju i za potrebe faze PRIBAVI pretpostavit ćemo da je uz <£., j = 1, 2,..., 7 drugi član operacije logičko I uvijek jednak "1" (tijekom aktivnosti u vremenskim intervalima <&. j = 1,2,..., 6,7 izlaz iz instrukcijskog dekodera nije definiran niti je važan).

start

stop

clock

reset

generator sljedova (po modulu 16)

CD,

b31

instrukcijski dekoder

Ida X w

staX V

addaX

arida X w

coma w

jmp X w

w jmpzX

shra w

bO

CD.

kombinacijski sklopovi

UT c„ c c

A=0

TT c17

/R

instrukcijski registar

51. 7.12 Organizacija sklopovske upravljačke jedinice s generatorom sljedova

Pogledajmo je li hipoteza valjana. Na primjer, pogledajmo kada je upravljački signal C3 ak-tivan za fazu IZVRŠI pojedinih strojnih instrukcija:

Za instrukciju ldaX; aktivan izlaz iz instrukcijskog dekodera l0 vrijedi:

U fazi IZVRŠI za instrukciju ldaX, tijekom upravljačkih vremenskih impulsa <I>10 i treba biti aktivan upravljački signal C3 (vidi opis faze IZVRŠI za ldaX):

C3 = <J>1010 + <J>n l0; ovdje + označava logičku operaciju ILI

Page 184: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

178 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

Za instrukciju stoX; aktivan izlaz iz instrukcijskog dekodera ne zahtijeva se signal C3.

Za instrukciju adda X: aktivan izlaz iz instrukcijskog dekodera l2 vrijedi: С = Ф I + Ф I ^ 3 10 l2 11 2*

Za instrukciju onda X: aktivan izlaz iz instrukcijskog dekodera I vrijedi: C = 0 I + 0 I 3 10 (3 11 3

Ostale strojne instrukcije u fazi IZVRŠI ne rabe upravljački signal C3, međutim, on se zahti-jeva tijekom faze PRIBAVI, i to:

c3 = a> 3 . i +o 4 - i .

Ako sada objedinimo sve gornje izraze za C3 dobivamo: C = 0 • 1 + <I> • 1 + 0 l + O l + O I +<J> l + O I +<t> I 3 4 10 'o n 'o ^ 1 0 '2 ^ 11 '2 ^ ^ 1 0 '3 ^ 11 ! 3 '

odnosno c3 = 03 + 04 + O10 (l„ + l2 + l3) + O,, (l0 +l2 +y. (7.2)

Ako sada usporedimo logički izraz za C3 vidimo da je zaista oblika koji odgovara obliku logičke jednadžbe (7.1).

Na temelju logičke jednadžbe (7.2) za upravljački signal C3 možemo jednostavno i izravno sintetizirati taj upravljački signal. Slika 7.13 prikazuje kombinacijski dio upravljačke jedinice u kojem je oblikovan upravljački signal C3.

Ф, Ф. Ф ф 10 11

kombinacijski sklopovi

SI. 7.13 Kombinacijski dio upravljačke jedinice (sinteza upravljačkog signala С

Page 185: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARICI - GRAĐA RAČUNALA 179

Kako bi izgledala sinteza upravljačkih signala samo za fazu PRIBAVI?

Na temelju analize aktivnosti u fazi PRIBAVI dobili smo ovakav rezultat: Vremenski trenutak Upravljački signali Mikrooperacija

4>

C

c 13

PC IntBUS IntBUS MAR

čitanje mem. lokacije (DB0-DB31) MDR

PC + 1 PC, MDR(OP) IntBUS IntBUS IR

dekodiranje op. koda

Slika 7.14 prikazuje kombinacijski dio upravljačke jedinice s detaljem koji se odnosi samo na sintezu upravljačkih signala potrebnih tijekom faze PRIBAVI. Na slici vidimo da je sklo-povima u ravnini"l" dovedena logička "1" na jedan od dva ulaza - ona se može smatrati kao izlaz iz bistabila FB (naziva se Fetch bistabil) kojim se označava stanje ili faza PRIBAVI.

Dekodiranje operacijskog koda, kao posljednja aktivnost u fazi PRIBAVI (stanje bistabila FB = 1), obavlja se u upravljačkoj jedinici tijekom <I>7.

Kada upravljačka jedinica prijeđe u fazu IZVRŠI, izlaz bistabila FB se automatski resetira, odnosno postavlja u"0".

CD, CD, CD, O, Qc (D, . . .

C3 c5 c8 c u c13 c14 c16

SI. 7.14 Kombinacijski dio upravljačke jedinice (sinteza dijela upravljačkih signala potrebnih za fazu PRIBAVI)

Page 186: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

180 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

Uočavamo da kombinacijski sklopovi upravljačke jedinice imaju pravilnu strukturu - sasto-je se od prve ravnine logičkih sklopova I, a zatim od ravnine logičkih sklopova ILI. Pravilna struktura ovog oblika podsjeća na strukturu koju poznajemo kao programirljiva logička po-lja PLA (Programmable Logic Array) u kojima se prema potrebama korisnika ostvaruju veze među sklopovima u "I" i "ILI" ravnini. Slika 7.15 ilustrira jednostavan troulazni PLA sklop koji ima u Travnini 3 logička sklopa I, a u ravnini"ILI"samo dva logička sklopa ILI. Sklop ima dva izlaza. Naravno, ovo je samo ilustracija - današnji stupanj tehnologije dopušta izvede'Ti "ILI" ravnina sa stotinama tisuća logičkih sklopova.

programirljive veze

programirljive veze

SI. 7.15 Jednostavan PLA sklop

Pri kažimo kako izgleda detalj sinteze upravljačkih sklopova za fazu IZVRŠI za instrukcije jmpX i jmpzX. (Opaska: izlaz iz instrukcijskog dekodera l5 (slika 7.12) aktivan je tijekom faze j IZVRŠI za instrukciju jmpX, odnosno l6 za instrukciju jmpzX). Na temelju opisa upravljačkih j signala za instrukciju jmpX:

Vremenski trenutak Upravljački signali

3> C5,c„

i upravljačkih signala za instrukciju jmpzX:

Vremenski trenutak Upravljački signali <*> C

Mikrooperacija MDR(ADRESA) IntBUS

IntBUS -> PC

a> C5, ako je A= 0 onda Cn

Mikrooperacija MDR(ADRESA) IntBUS

IntBUS -> PC

možemo odrediti kombinacijski dio upravljačke 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). Uočavamo da su vremen-l ski najzahtjevnije upravo one strojne instrukcije koje u fazi IZVRŠI pristupaju memoriji] Na primjer, instrukcija addaX ima jedan od operanada u memoriji i mora ga tijekom faze] IZVRŠI dohvatiti iz memorije. Jednako tako, vidimo da, nažalost, obavezne instrukcije a ]

Page 187: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

izmjenu podataka između procesora i memorije (staXi ldaX) imaju relativno dugo vrijeme izvođenja. Kada bi radna memorija svojom brzinom (vremenom pristupa) pratila brzinu sklopova u procesoru, onda bismo mogli smanjiti vrijeme izvođenja instrukcija staX \lda X za dva vremenska intervala (jedan za fazu PRIBAVI i jedan za fazu IZVRŠI) pa bismo tako ubrzali izvođenje tih instrukcija za nešto više od 15%.

0 O (Dq " l "ako je A=0 O V

SI. 7.16 Kombinacijski dio upravljačke jedinice (sinteza dijela upravljačkih signala potrebnih za fazu IZVRŠI za instrukcije jmpX\ jmpzX)

Page 188: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

182 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

instrukcija $taX; operacijski kod = 001 aktivan izlaz instrukcijskog dekodera ft

Vremenski trenutak

<I>

Upravljački signali

C5,c13 <t>

4>

10

n 12

13

/cfaXi staXsu:

• = <f> 1 +<t> T

1 1 = # J + J 12 1. 13 1 • 1 8 V T 8 'l T

1 1 :<J> j 1 ^10 1 'i C,o I •

0 9 1 12 0 13 0

Mikrooperacija MDR IntBUS IntBUS MAR

A-•IntBUS IntBUS -+MDR

Write Write

7.3.2. SKLOPOVSKE SASTAVNICE UPRAVLJAČKE JEDINICE OSTVARENE NA TEMELJU GENERATORA SLJEDOVA

Na slici 7.12 prikazana je organizacija sklopovske upravljačke jedinice s generatorom sije-dova. Prikažimo sklopovsku izvedbu pojedinih sastavnica.

73.3. INSTRUKCIJSKI DEKODER

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

A B c 'o I, «2 '3 <4 l5 '7

0 0 0 1 0 0 0 0 0 0 0

0 0 1 0 1 0 0 0 0 0 0

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

1 0 0 0 0 0 0 1 0 0 0

1 0 1 0 0 0 0 0 1 0 0

1 1 0 0 0 0 0 0 0 1 0

1 1 1 0 0 0 0 0 0 0 1 ]

Tablica 7.3. Tablica istinitosti za dekoder

Page 189: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 183

Slika 7.17 prikazuje izvedbu instrukcijskog dekodera.

r i >

r i >

SI. 7.17 Instrukcijski dekoder

c c B B A A

C C B B A A

7.3.4. GENERATOR SLJEDOVA PO MODULU N

l = A B C

I = A B C

= A B C

= A B C

I = A B C 4

l5= A B C

= A B C

l = A B C

Slika 7.11 prikazuje generator sljedova vremenskih upravljačkih impulsa. On se može rea-lizirati uporabom prstenastog brojila (engl. ring counter) koje se dobiva ako se posmačnom registru izlaz spoji s ulazom (slika 7.18). Drugi je način primjena brojila po modulu n i de-kodera (slika 7.19).

Page 190: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

184 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

T„ T,

posmak udesno

(signal vremenskog vođenja)

CD

T T T T T ,

0 1 2 n-1

posmačni registar

SL 7.18 Izvedba generatora sljedova uporabom prstenastog brojila

T„ T, T2 15

signat vremenskog

vođenja

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

Slika 7.20 prikazuje izvedbu generatora sljedova koja je prilagođena funkciji upravlja jedinice. Osnovnom sklopu pridodana je upravljačka logika (RS bistabil s logičkim sklo vima I i ILI).

Page 191: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 185

CD CD CD CD 2 3 ^ 1 6

reset

SI. 7.20 Izvedba generatora sljedova (za potrebe upravljačke jedinice procesora)

Postavljanjem signala "start" u logičku jedinicu započinje generiranje sljedova vremen-skih upravljačkih impulsa u ritmu signala vremenskog vođenja (clock) - omogućeno je brojilo i dekoder. Aktiviranjem upravljačkog signala "stop" zaustavlja se rad generatora. Upravljačkim signalom "reset" vraća se generator u početno stanje i započinje generiranje sljedova od upravljačkog vremenskog impulsa.

Za potrebe upravljačke jedinice generator sljedova generira signale 0 1 - 016 (modul 16). Na temelju analize trajanja strojnih instrukcija za naš model procesora, vidjeli smo da in-strukcije traju različiti broj vremenskih intervala upravljačkih 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 interva-la). Budući da svaka nova faza PRIBAVI započinje s vremenskim upravljačkim signalom <1 , da bismo ubrzali rad procesora, umjesto "praznog hoda" od stvarnog kraja tekuće instruk-cije do novog vremenskog upravljačkog signala resetirat ćemo generator sljedova.

Slika 7.21 prikazuje način 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 upravljački ulaz generatora sljedova. Na taj se način "uštedjelo" vrijeme od do 016, odnosno 6 vremenskih intervala. Za najbržu strojnu instrukciju shra koja traje 8 vremenskih intervala postiže se ubrzanje za 7 vremenskih intervala jer se generator sljedova resetira tijekom <I>9.

Page 192: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

186 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

instrukcijski dekoder

SL 7.21 Način ubrzanja rada procesora smanjivanjem "praznog hoda"

73.5. GENERATOR SIGNALA VREMENSKOG VOĐENJA

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

kristal

9-L

t>

> D Q

> Q

clock

SI. 7.22 Izvedba generatora signala vremenskog vođenja

Page 193: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 187

7.4. MIKROPROGRAMIRANA UPRAVLJAČKA JEDINICA M.V. VVilkes je 1951. opisao izvedbu mikroprogramirane upravljačke jedinice kojoj su osnov-ne značajke pravilna struktura, modularnost i velika prilagodljivost. Mikroprogramiranje, kao što smo već spomenuli, predstavlja sustavnu metodu izvedbe upravljačke jedinice i omogućuje jednostavnu promjenu skupa strojnih instrukcija. Promjena instrukcija postiže se jednostavnom izmjenom sadržaja mikroprogramske memorije.

SI. 7.23 Pojednostavljeni model procesora

Page 194: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

188 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

Izvedbu mikroprogramirane upravljačke 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), de-snoj 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 jedinični komplement (£?). Oba akumulatora kao odredišta rezultata ili operanada imaju i vezu s glavnom sabirnicom MB. Programsko brojilo PC i statusni registar SR svojim su izla-znim linijama priključeni na desnu sabirnicu R. Pretpostavit ćemo da je programsko bro-jilo PC 16-bitno. Izlaz 16-bitne aritmetičko-logičke jedinice spojen je na ulaz posmačnog sklopa. Izlaz posmačnog sklopa S dovodi se na glavnu sabirnicu MB. Na glavnu sabirnicu priključenje i kombinacijski sklop ZT (Zero Tester) za ispitivanje je li rezultat koji je trenutno na glavnoj sabirnici MB jednak 0. Na slici opažamo da su označeni i pristupi glavnoj sabir-nici IN i OUT koji predstavljaju osnovu za realizaciju izmjene podataka s vanjskim svijetom.

Upravljačka jedinica ima strukturu mikroprogramirane jedinice. Ona zahtijeva svoj interni signai vremenskog vođenja i to, u našem slučaju, trofazni signal s fazama P(0), P(1) i P(2). Tijekom P(0) odvijaju se aktivnosti koje odgovaraju fazi "mikro-izvrši", P(1) odgovara pri-jenosu adrese sljedeće mikroinstrukcije u mikroprogramski adresni registar H, a tijekom P(2) pribavlja se mikroinstrukcija iz upravljačke (mikroprogramske) memorije CM (faza"mi-kro-pribavi") i smještava u mikroinstrukcijski registar F. Postojanje "privatnog" signala vre-menskog vođenja koji je namijenjen mi krop rog ram i ranoj upravljačkoj jedinici opravdava predodžbu jedinice kao "računala u računalu". Slika 7.24 prikazuje podrobniju organizaciju upravljačke jedinice. Podsjetimo se, u potpoglavlju 7.2. napisali smo da svakoj strojnoj in-strukciji odgovara jedan mikroprogram pohranjen u upravljačkoj memoriji. Početna adresa mikroprograma određuje se na temelju operacijskog koda strojne instrukcije. Adresa svake sljedeće mikroinstrukcije u mikroprogramu može se dobiti na sljedeće načine (slika 7.24):

i) povećanjem sadržaja mi kro programskog adresnog registra H (registar H pot-puno se opravdano naziva i mikroprogramsko brojilo jer pokazuje na sljedeću 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 sljedeća tri polja: i) polje namijenjeno upravljačkim funkcijama, odnosno polje upravljačkih signala koj

se izravno ili preko dekodera dovode u upravljačke točke na putu podataka; ii) polje za upravljanje slijedom mikroinstrukcija; iii) polje namijenjeno očuvanju prilagodljivosti, na primjer reprogramiranju upravljačke

jedinice. U našem slučaju je to tzv. emit polje koje sadržava konstantu čija se vrijed-nost može proslijediti na lijevu sabirnicu L.

Page 195: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 189

vanjski uvjeti uvjeti (zastavice

statusnog registra SR)

SI. 7.24 Prikaz podrobnije organizacije mikroprogramirane upravljačke jedinice

Slika 7.25 prikazuje format mikroinstrukcije. Mikroinstrukcija je duljine 32-bita. Potrebno je napomenuti duljina riječi procesora (8,16,32 ili 64- bita) nema izravne veze s duljinom mi-kroinstrukcije. Naš procesor je 16-bitne arhitekture, a format mikroinstrukcije je 32-bitni.

polje za određivanje

polje namjenjeno upravljačkim funkcijama sljedeće mikroinst. emit polje

^ A

b3, b29 b27 b

26 b25 b24 b23 b19 b]8 bi 7 b16 b,5 b,4 b13 b8 b7 b0

CA CB COP CSH CMB CAB CBB CST CNA EM

2 3 2 ! 2 3 2 2 „ 2 , 6 8

k 32 bita

•1

SI. 7.25 Format mikroinstrukcije

Page 196: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

190 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

Svaki bit ili grupa bitova u pojedinim poljima CA - CST mikroinstrukcije određuje pojedi-ne mikrooperacije koje će se izvesti na određenom dijelu puta podataka. Tako na primjer, dvobitno polje CA određuje mikrooperacije prijenosa sadržaja 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 odgovarajuće mikrooperacije.

00 Nema prijenosa na lijevu sabirnicu L

01 F(EM) - 0 L(0-7,8-15); konstanta iz emit polja smje-štava se na 8 manje značajnih linija (LSB) sabirnice L

10 0 - F(EM) L(0-7,8-15); konstanta iz emit polja smje-štava se na 8 značajnijih linija (MSB) sabirnice L

11 A L; na L se smještava 16-bitni sadržaj akumulatora A |

Tablica 7.4. Upravljanje lijevom sabirnicom L

Tako, na primjer, dvobitna kombinacija 01 u polju CA pribavljene mikroinstrukcije pobu-đuje mikrooperaciju kojom će se 8-bitna konstanta sadržana u emit polju mikroinstrukcije postaviti na osam manje značajnih linija lijeve sabirnice (značajnijih osam linija L poprima-ju vrijednost 0).

Tablica 7.5. prikazuje mikrooperacije koje su određene trobitnim poljem CB koje služi za upravljanje prijenosom na desnu sabirnicu R.

000 Nema prijenosa na desnu sabirnicu R

001 B R; prijenos 16-bitnog sadržaja akumulatora B na desnu sabirnicu (R)

010 B R ; prijenos jediničnog komplementa sadržaja akumulatora B na desnu sabirnicu R

011 PC R; prijenos sadržaja programskog brojila PC na desnu sabirnicu

100 SR R ; prijenos sadržaja statusnog registra SR na desnu sabirnicu j

101 Ne koristi se (predviđeno za nadogradnju)

... Ne koristi se (predviđeno za nadogradnju) j

111 Ne koristi se (predviđeno za nadogradnju) I

Tablica 7.5. Upravljanje desnom sabirnicom R

Page 197: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARIĆ - GRAĐA RAČUNALA 191

Tablica 7.6. opisuje dvobitno polje COP koje se odnosi na upravljanje aritmetičko-logičkom jedinicom (u našem je slučaju to samo sklop potpuno zbrajalo).

00 Nema aktivnosti

01 Zbroji dva 16-bitna podatka s Cin (Carry In) = 0

10 Zbroji dva 16-bitna podatka sCjn(Carry In) = 1

11 Logička operacija I

ablica 7.6. Upravljanje aritmetičko-logičkom jedinicom

Tablica 7.7. prikazuje mikrooperacije pobuđene kombinacijom bitova u polju CSH (uprav-ljanje posmačnim sklopom)

00 Q MB, Q = S ;nema posmaka

01 Q MB, Q = shr S ;posmak udesno za jedno mjesto

10 Q MB, Q = shl S ;posmak ulijevo za jedno mjesto

11 Ne koristi se (predviđeno za nadogradnju)

Tablica 7.7. Upravljanje posmačnim sklopom

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

{ 000 Nema prijenosa

} 001 MB A ;prijenos 16-bitnog podatka sa sabirnice MB u akumulator A

i o io j MB B prijenos 16-bitnog podatka sa sabirnice MB u akumulator B

011 MB PC ;prijenos 16-bitnog podatka sa sabirnice MB u PC

i ioo MB SR prijenos 16-bitnog podatka sa sabirnice MB u statusni registar SR i

i i o i j

MB OUT/prijenos 16-bitnog podatka sa sabirnice MB prema ulazno-izlaznom podsustavu

f j 110 IN MB ;unos podatka iz ulazno-izlaznog podsustava

! n i Ne koristi se (predviđeno za nadogradnju)

Tablica 7.8 Upravljanje glavnom sabirnicom MB

Page 198: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

192 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

Prije nego što opišemo značenje polja CAB (bitovi b i 8 - b i9 mikroinstrukcije), CBB (bi6 - b i 7) i CNA (b8 - b13), trebamo nešto reći o kapacitetu upravljačke (mikroprogram-ske) memorije i mikroprogramskom adresnom registru (mikroprogramskom brojilu) H. Pretpostavit ćemo da je kapacitet mikroprogramske memorije 256 32-bitnih riječi i zato je mikroprogramski adresni registar H duljine 8 bita. Registar H organiziran je tako da se 6 bitova polja CNA (polje za određivanje sljedeće mikroinstrukcije) smještava na njego-vih 6 značajnijih bitovnih pozicija 1-1(7-2), dok se dvije najmanje značajne bitovne pozicije H(1-0) određuju na temelju polja CAB i CBB (slika 7.26), i to tako da CAB utječe na bitovnu poziciju b1 registra H a CBB na najmanje značajnu bitovnu poziciju registra H.

utjecaji CAB

upravljačka (mikroprogramska)

memorija CM (265 riječi;

duljina riječi 32 bita)

- utjecaj CBB

H mikroprogramski adresni registar H

/ 32

b3i 1 r b8 b0

. . . CNA mikroinstrukcijski

registar F

SI. 7.26 Upravljačka memorija (mikroprogramska memorija) CM, mikroprogramski registar H i mikroinstrukcijski registar F

00 0->H(1)

01 1 H(1)

10 SR(0) H(1); vrijednost zastavice Z premješta se u H(1) j

11 SR(1) H(1); vrijednost zastavice N premješta se u H(1)

Tablica 7.9. Utjecaj na H(1)

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

Page 199: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 193

Zastavica SR(O) je zastavica Z, odnosno zastavico nule koja se automatski postavlja kada je rezultat neke aritmetičke ili logičke operacije jednak 0. Na stanje zastavice Z utječe 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 aritmetičke ili logičke operacije negativan, odnosno kada je najznačajni-ji bit rezultata jednak 1 (u skladu s notacijom potpunog komplementa). Kad smo govo-rili 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 upravljačke jedinice vidimo da stanje zastavica može utjecati na grananje u mikroprogramu te se zahvaljujući 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 značajan bit registra H.

00 0 H(0)

01 1 H(0)

10 SR(1)->H(0)

11 MB(15) H(0); MB(15) je najznačajniji bit 16-bitne riječi koja trenutno na sabirnici MB

Utjecaj na H(0)

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

00 Nema utjecaja na zastavice

01 IF (ZT = 0) THEN (0 SR(0)) ELSE (1 SR(0)); utjecaj na zastavicu Z

10 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)) ;složeni 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 utječe na zastavicu Z, zastavicu N ili na obje. Bitnu ulogu pritom ima sklop za ispitivanje nule ZT. On "osluškuje" glavnu sabirnicu MB i ako je svih šesnaest bitova podatka na MB jednako nuli, onda postav-lja svoj izlaz ZT u jedan. Objasnimo, na primjer, što će se dogoditi ako je CST jednako 11.

Page 200: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

194 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

U tom slučaju, ovisno o izlazu iz ZT postavit će se ili obrisati zastavica Z, ali istodobno će se ovisno o vrijednosti najznačajnijeg bita podatka na MB postaviti (ili obrisati) i zastavica N.

S obzirom da se za prikaz brojeva koristi notacija dvojnog ili potpunog komplementa, po-stoji i definirani odnos između izlaza iz sklopa za ispitivanje nule ZT i vrijednosti najznačaj-nijeg bita MB(15). Taj je odnos prikazan u tablici 7.12.

1 1 Nedopuštena kombinacija - ne može istodobno biti izlaz iz ZT jednak 1 i najznačajniji bit rezultata 1

0 1 Rezultat je negativan

1 0 Rezultat je nula (MB15 - MB 0) = 0

0 0 Rezultat je pozitivan

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

6-bitno polje CNA (b8 - b i 3 mikroinstrukcije) služi za određivanje šest najznačajnijih bito-va mikroprogramskog adresnog registra H (slika 7.26): CNA H(7 - 2).

8-bitno polje EM (bO - b7 mikroinstrukcije) služi za pohranu 8-bitne konstante u samoj ma-kroinstrukciji.Ta se 8-bitna vrijednost može proslijediti na lijevu sabirnicu L (vidi polje CA; tablica 7.4) i može se korisno upotrijebiti u izvedbi mikroprograma (kao što ćemo vidjeti u primjeru koji slijedi).

7.4.1. SIGNAL VREMENSKOG VOĐENJA MIKROPROGRAMIRANE UPRAVLJAČKE JEDINICE

Mikroprogramirana upravljačka jedinica koja koristi uvjete za grananje u mikroprograma I zahtijeva svoj "privatni" interni trofazni signal vremenskog vođenja (slika 7.27). Ako uspore-dimo ovaj trofazni signal vremenskog vođenja s vremenskim upravljačkim 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) određuje vrijeme u kojem se izvršava mikroinstrukcija - izvode se] mikrooperacije (jedna ili više njih) na putu podataka. To vrijeme odgovara trajanju faze] "mikro-izvrši".

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 upravljačke (mikroprogramske) memorije CMij smještava 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-izvrši".

Page 201: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 195

faza P(0) perioda T

faza P(l)

faza P(2)

SL 7.27 Interni trofazni signal vremenskog vođenja: P(0), P(1) i P(2)

Primjer 73.

Treba napisati mikroprogram za strojnu instrukciju Branch), i to za fazu IZVRŠI. Strojnom se i u akumulatoru A, drugi u akumulatoru B) uz notaciji dvojnog komplementa.

grananja CBR (Conditional dva broja (jedan

da su brojevi predočeni u

i) ako je broj u akumulatoru A veći od broja u akumulatoru B, tada nema promjene

ii) ako su brojevi jednaki, sadržaj programskog brojila PC se tijekom faze IZVRŠI inkre-mentira (povećava za 1);

ili) ako je broj u A manji od broja u B, tada se t p brojila PC povećava za 2;

s: /FA > B THEN IFA = B THEN IFA<BTHEN

PC = PC-PC = 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 ograničenja koja postavlja sklopovlje na putu podataka procesora. Naravno, treba dobro poznavati i orga-nizaciju mikroinstrukcijske riječi i značenje pojedinih polja u njoj.

Naš jednostavni model mikroprogramiranog procesora na putu podataka, odnosno u aritmetičko-logičkoj jedinici nema sklop komparator (engl. digital comparotor) za

Page 202: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

196 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

uspoređivanje vrijednosti dvaju binarnih podataka, štoviše, nema ni sklop za oduzima-nje (oduzimalo), stoga usporedba sadržaja akumulatora A i B mora biti izvedena na slje-deći način:

1. Sadržaj akumulatora A postavi na lijevu sabirnicu L; 2. Jedinični komplement sadržaja akumulatora B (izlaz B) postavi na desnu sabirnicu R; 3. Aktiviraj potpuno zbrajalo u aritmetičko-logičkoj jedinici, i to tako da se izvede

zbrajanje s Cm = 1;

Izvođenjem koraka 1. - 3. tek smo dobili A - B. Odnos između sadržaja A i sadržaja 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 najznačajnijeg bita rezul-tata 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 različit 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)) podržan raspoloživim mikrooperacijama na putu podataka? Odgovor je da kombina-cijom upravljačkih bitovima u poljima CA, CB, COP, CSH i CST možemo točno definirati ponašanje u skladu s koracima 1. - 3 . te postavljanje zastavica Z i N.

Nakon što je (neizravno) ustanovljen odnos između sadržaja akumulatora A i B, mora se" osigurati izvođenje jedne od triju aktivnosti:

i) aktivnosti koje određuje mikroinstrukcija koja će povećati sadržaj programskog brojila PC za jedan (slučaj A = B; zastavice Z = 1, N = G) i granati na mikroinstrukch ju koja upućuje na prvu mikroinstrukciju mikroprograma za fazu .PRIBAVI strojne

ii) aktivnosti koje određuje mikroinstrukcija koja će povećati sadržaj programskog brojila PC za 2 (slučaj A < B; zastavice Z = 0, N = 1) i granati na mikroinstrukci-ju koja upućuje na prvu mikroinstrukciju mikroprograma za fazu PRIBAVI strojne

i i S l i i i l i ^ ^ - •: V / - - - ' ^ iii) nema aktivnosti - ne mijenja se sadržaj programskog brojila PC (slučaj A > B;

stavice Z = 0, N ~ 0), već grana na mikroinstrukciju koja upućuje na prvu mikroL strukciju rnjkroprc^&ma za f a ^ P

Na temelju točaka i) - iii) vidimo da stanje zastavica Z i N možemo iskoristiti za grana*4' u mikroprogramu ovisno o slučaju: 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 JZVRŠJ strojne instrukcije G

Page 203: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 197

yyyyyyyy

operacijski kodstrojne instrukcije CBR

(početna adresa mikroprograma)

A—L; 8—R; aktiviraj zbrajalo s Cm = 1; S—Q; Q—MB; proslijedi A - B na MB

MB (15)—SR (1) AND (IF (2TT = 0)THEN (O—SR (0)) ELSE (1-SR (0)) SR (0)—H (1), SR (1)—H (0)

A<B

(zastavice: Z = 0;N = 1)

H(1) = 0 H (0) = 1 A>B

ZN xxxxxx01'

adresa mikroinstrukcije

EM—L; EM = 2 PC—R;

aktiviraj zbrajalo sC^O;

S-Q; Q—MB; MB-PC;

(zastavice: Z = 0;N = 0)

H(1)-0 ZN H(0) = 0 'xxxxxx10'

(zastavice: Z = 1; N = 0)

H (1) = 1 H(0) = 0 A=B

0-H(l) 0—H (0)

0 - L ; PC-R

aktiviraj zbrajalo

S—Q; Q—MB ; MB-PC;

0—H (1) 0—H (0)

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

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

xxxxxx00' mikroinstrukcija koja upućuje na izvođenje

mikroprograma za fazu PRIBAVI

!; Opaska: SR(0) odgovara

1. mikroinstrukcija (nalazi se na adresi 'yyyyyyyy' (binarno); npr. '00001000' - odgovara

polje CA = 11 ; A L ;na L se smještava 16-bitni sadržaj akumulatora A; polje CB = 010 ;B-+R prijenos jediničnog komplementa sadržaja akumulato-ra 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 premješta se uH{1) jK>ljeCBB =10 ;SR(1) H(0) ; w y e d n o s t z ^ seuH{0) polje CST =11 ; M8(15) SR{1) AND (/F(ZT = 0} THEN (0 SR(0)) ELSE (1 SRtO)); s lovn i utjecaj na zastavicu N i Z; polje CNA='xxxxxx'(binarno) ;npn '010000'-

polje EM ='00000000' ;8-bitna

Page 204: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

198 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

Prva mikroinstrukcija izgleda ovako:

r 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 značajnijih bitova adre-se određeno poljem CNA iz prve mikroinstrukcije, a dva najmanje značajna bita adrese su određena sa stanjem zastavica Z = 0 i N =1) /ova mikroinstrukcija izvršava se kada je A<B)

1 polje CA = 01 ; F(EM)-0 L(0-7,8-15) ;konstanta izemit polja (vrijednost 2) | smještava se na 8 manje značajnih linija (LSB) sabirnice L; !

polje CB = 011 sabirnicu R; polje COP = 01 polje CSH = 00

; PC R; prijenos sadržaja programskog brojila PC na desnu

; Zbroji dva 16-bitna podatka s Cln(Carry In) = 0; ; Q ^ MB, Q = S; nema posmaka;

polje CMB = 011 ; MB r+ PC; prijenos 16-bitnog podatka sa sabirnice MB u PC; polje CAB = 00 ;0-*H(1);

;0->H(0); ; nema utjecaja na zastavice u SR;

• polje CNA='xxxxxx' (binarno) ;npr. '010000' - šest značajnijih bitova adrese sljede-će mikroinstrukcije;

* polje EM OOOOOOIO ; konstanta =

Druga mikroinstrukcija izgleda ovako:

polje CBB = 00 polje CST = 00

0 1 0 1 1 0

3. mikroinstrukcija {nalazi se na adresi 01000010 pri čemu je šest značajnijih bitova adre-J se određeno poljem CNA fz prve mikroinstrukcije, a dva najmanje značajna bita adrese] određena su stanjem zastavica Z = 1 i N =0) /ova mikroinstrukcija izvršava se kada je j

• polje CA = 01 ; F(EM)-0 L(0-7,8-15) ;konstanta iz emit (00000000) polja; smještava na 8 manje značajnih linija (LSB) sabirnice L;

• polje CB = 011 ; PC R ;prijenos sadržaja 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 značajnijih bitova adrese slj€

će mikroinstrukcije; • polje EM ='00000000'

Page 205: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 199

0 0 0 M 0 0 Sli 0

Slika 7.29 prikazuje dio sadržaja upravljačke (mikroprogramske memorije) koji odgovara mikroprogramu za strojnu instrukciju CBR. Vidimo da se sve tri mikroinstrukcije mikro-programa za fazu IZVRŠI za strojnu instrukciju granaju na adresu 01000000. Na toj se adresi nalazi mikroinstrukcija koja upućuje izvođenje na mikroprogram koji podržava fazu PRIBAVI.

upravljačka (mikroprogramska) memorija CM(sadržaj)

adresa:

00001000

01000001 0*000010

Ž2ŽZŽZ00

CNA EM 11 010 10 00 0 0 0 # t o n 010000 00000000

777777

01 011 01 00 011 00 0000 ^10000 M M 0i o n

V.: 0i o n 010000 m m m m m

-" " - - - • - . . . .

1. mikroinstrukcija mikroprograma za fazu PRIBAVI

SI. 7.29

pokažimo kako se ta v r ^ m ^ s t o « ^ I z v o đ e r ^

ikdm^ntar;

; prva mikroinstrukcija - adresa mikroinstrukcije je '00001000'

početak sekvence s ;c /GP(1)/ '00001000' H, 1 G; P(1) - prijenos adrese u H; adresa prve;

mikroinstrukcije određena je operacijskim kodom strojne instrukcije - ;operac«jski kod instrukcije CBR je'00001000'

/G P(2)/ CM(H) F; faza "mikro-pribavi" /CA(3) P(0)/ A L; na L se smještava 16-bitni sadržaj akumulatora A /CB(2) P(0)/ B-+ R; prijenos jediničnog komplementa sadržaja akumulatora

B na desnu; sabirnicu R

Page 206: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

/C0P(2) P(0)/ L + R + C^ ;zbroji dva 16-bitna podatka s C.m (Cany fn) - 1 /CSH(0)P{0)/ Q-+MB,Q = S; nema posmaka /CMB(0) P{0)/ NOP; nema prijenosa s glavne sabirnice u neki Gdtegistara f /CST{3) P(0)/ MB{15) SR(1)>4ND(/F(2T=0) 7H£N{<) ->. SR(0})a5£(1 SR(0));

složen* utjecaj - utjecaj na zastavicu Z i N /CA8(2) P{1)/ SR{0) H{1) ;vrijednost zastavice 2 /C88(2) P(1)/ SR(1) H{0) vrijednost zastavice N premješta se u H(0)

/G P(2)/

/CBB(0)P(1)/ 0-+H(0) /G P{1)/ F(CNA) H(7~ 2); F(CNA) = 010000

Page 207: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 201

7.5. NANOPROGRAMIRANA UPRAVLJAČKA JEDINICA Mikroprogramiranje je za 16-, 32- i 64-bitne procesore CISC arhitekture standardan pri-stup oblikovanju upravljačke jedinice. Oblikovanje upravljačke jedinice predstavlja jednu od kritičnih faza oblikovanja procesora. Da bi se smanjila površina na čipu što je zauzima upravljačka jedinica, često se upotrebljava organizacija mikroprogramske strukture u dvije razine. U prvoj se razini strojna instrukcija dohvaćena iz memorije interpretira mikropro-gramom koji je pohranjen u upravljačkoj (mikroprogramskoj) memoriji CM.

iz instrukcijskog

upravljački signali

Si. 7.30 Organizacija dvorazinske upravljačke jedinice koja se zasniva na mikro- i nanoprogramiranju

Mikroinstrukcija se ne dovodi izravno u upravljačke točke na putu podataka, već se koristi kao kazaljka za pristup upravljačkoj memoriji u drugoj razini. Ta se upravljačka 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 pri-kazuje dvorazinsku organizaciju upravljačke jedinice koja se zasniva na mikro- i nanopro-gramiranju. Razina nanoprogramske upravljačke jedinice izvedena je bržim sklopovima, a sama nanoprogramska memorija je manjeg kapaciteta u odnosu na mikroprogramsku memoriju. U bržoj nanoprogramskoj memoriji pohranjuju se najčešće upotrebljavani na-noprogrami - sijed ovi nanoinstrukcija. Dvorazinskom upravljačkom jedinicom postiže se i ušteda u veličini upravljačke memorije u odnosu na jednorazinsku (mikroprogramsku) izvedbu. Na primjer, pretpostavimo da se jednorazinska upravljačka memorija sastoji od Hm riječi (mikroinstrukcija) koje su duljine N + [log2Hm], gdje je N broj upravljačkih bitova a [log2Hm] broj bitova potreban za povratnu adresu ( [x] označava gornju cjelobroj-nu vrijednost od x).

Kapacitet upravljačke memorije za jednorazinsku izvedbu je: S ^ H J N + Pog.Hj)

Page 208: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

U dvorazinskoj izvedbi mikroprogramska memorija CM (slika 7.30) također pohranjuje H^ mikroinstrukcija, pri čemu se sada N upravljačkih bitova prosljeđuje nanoprogramskoj me-moriji nCM. Nadalje, svaka mikroinstrukcija u CM je duljine |"log2Hn], gdje je Hn broj nano-instrukcija jer mikroinstrukcija, zapravo, predstavlja adresu za nanoinstrukcijsku memoriju. Uz pretpostavku da ima vrlo mali broj grananja (ili čak uopće i nema) u nanoprogramu, možemo ocijeniti ukupni kapacitet memorije dvorazinske izvedbe:

S2 = H m (Pog 2 Hj + pog2Hnl) + HnN,

gdje je flog2Hm] broj bitova adresnog polja potreban za sljedeću adresu mikroinstrukcije, [log2Hn] broj bitova u mikroinstrukciji potreban za adresiranje nanomemorije i konačno N duljina nanoinstrukcije, odnosno broj upravljačkih bitova koji se dovode na put podataka. Pretpostavimo da su svi bitovni uzorci u nanoprogramskoj memoriji različiti tako da svaki uzorak predstavlja jedinstveno upravljačko stanje pridruženo skupu strojnih instrukcija. U tom slučaju možemo napisati da je Hn = r x H , pri čemu je r omjer između jedinstvenih upravljačkih stanja i ukupnog broja upravljačkih stanja potrebnih za implementaciju svih strojnih instrukcija. Uvrstimo Hn = r x Hm u izraz za S2, dobivamo ukupni kapacitet dvorazin-ske izvedbe mikroprogramirane upravljačke jedinice:

S2 = Hm(Pog2HJ + [ log 2 rH m l ) + rHmN, = Hm (Pog 2 Hj + [log2 r ] + p0g2 Hm ] ) + r Hm N,

S2 = Hm(2pog2Hml + pog 2 r l + rN).

Page 209: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. RIBARIČ - GRAĐA RAČUNALA 203

instrukcijski registar IR

upravljački signali

SI. 731 Organizacija dvorazinske upravljačke jedinice za MC 68000

7.6. FORMATI MIKROINSTRUKCIJA - HORIZONTALNO I VERTIKALNO MIKROPROGRAMIRANJE Format mikroinstrukcije, odnosno organizacija polja upravljačkih bitova u mikroinstrukciji, mora biti takav da omogući:

i) djelotvorno grupiranje i dodjeljivanje upravljačkih 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 moguće manjim brojem bitova u mikroinstrukciji, stoje moguće manjim brojem mikroinstrukcija od kojih se sastoji mikro-program te u stoje moguće kraćem vremenu izvođenja mikroprograma. Prva dva zahtjeva odnose se na kapacitet mikroprogramske memorije, odnosno na zahtjeve zauzeća dijela površine čipa od strane mikroprogramirane upravljačke jedinice, a treći se zahtjev odnosi na brzinu (a time i na performansu) procesora.

Pristupi formatiranja mikroinstrukcija, odnosno organizacije mikroinstrukcija, kojima se teži zadovoljavanju postavljenih zahtjeva su sljedeći:

i) izravno upravljanje, ii) grupiranje bitova, iii) višestruki formati.

Page 210: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

204 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

7.6.1 IZRAVNO UPRAVLJANJE

U ovom pristupu format mikroinstrukcije je takav daje svaki njezin bit (nazivamo ga i uprav-ljački bit jer određuje hoće li se određena mikrooperacija izvesti) jednoznačno dodijeljen svakoj od mikrooperacija koje se mogu izvesti mikroprogramiranom procesoru. To znači da je duljina mikroinstrukcije određena ukupnim brojem raspoloživih mikrooperacija. Uz to, formatu mikroinstrukcije pridodana su polja bitova koja se odnose na uvezivanje mi-kroinstrukcija 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 određuje hoće li se mikrooperacija izvesti (bit ima vrijednost 1) ili neće (vrijednost bita je 0).

n bitova, n-odgovora broju mikrooperacija

p bitova adresa sljedeće mikroinstrukcije emit polje

- •H-

0 : nop 1 : M01

r " i - n J - H -

H h

0: nop 1 : M02

0: nop 1 : MOn

MO - mikrooperacija

SI. 7.32 Format mikroinstrukcije s izravnim upravljanjem

Glavne prednosti ovakve organizacije mikroinstrukcije jesu mogućnost potpunog iskori-štenja potencijalnog paralelizma na razini mikrooperacija (istodobno se izvode sve mikro-operacije kojima je dodijeljen bit s vrijednosti 1) te velika prilagodljivost pri izmjeni mi-kroprograma (bez zahtjeva za promjenom organizacije mikroinstrukcije). Mikroinstrukcije ovog tipa ne zahtijevaju sklopove za dekodiranje pojedinih njezinih sadržaja, odnosna grupe upravljačkih bitova.

Nedostatak ovakvog pristupa je velika duljina mikroinstrukcije. Naime, ako mikropro-gram i ran i procesor ima veliki skup mikrooperacija koji se sastoji od stotinu i više mikro- j operacija, onda je i duljina mikroinstrukcije velika. S druge strane, zbog ograničenja broj» I istodobno izvodljivih mikrooperacija (posebice u arhitekturi procesora koji se temelji na ] klasičnom von Neumannovom modelu) postavlja se pitanje o isplativosti uporabe tato j dugih mikroinstrukcija u kojima će većina bitova imati vrijednost 0 (što znači za određen« j mikrooperaciju daje neaktivna - nop - "no operation").

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

Ovom se organizacijom mikroinstrukcije teži smanjiti njezina duljina, i to dvama načinima] grupiranja upravljačkih bitova:

i) grupiranjem upravljačkih bitova koji se odnose na mikrooperacije koje će se uviji istodobno izvesti,

Page 211: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 205

ii) grupiranjem upravljačkih bitova koji se odnose na mikrooperacije koje se međusob-no isključuju.

U slučaju i) moguće je grupi takvih istodobno izvodljivih mikrooperacija dodijeliti samo jedan upravljački bit. Ako je njegova vrijednost jednaka 1, onda će se izvesti istodobno sve mikrooperacije koje su mu dodijeljene. Na taj se način smanjuje duljina mikroinstrukcije, ali i gubi prilagodljivost.

Grupiranjem upravljačkih bitova koji se odnose na mikrooperacije koje se međusobno isključuju, moguće je umjesto r upravljačkih bitova (gdje je r broj takvih mikrooperacija u grupi) koristiti samo [log2r] upravljačkih bitova, gdje |~x] označava gornju cjelobrojnu vrijednost od x. Na primjer, ako aritmetičko-logička jedinica (ALU) podržava šesnaest razli-čitih (mikro)operacija (zbrajanje, oduzimanje, logičko I, logičko ILI,..., uključujući i onu kada nema aktivnosti - nop) i ako izvodi samo jednu od tih operacija istodobno, onda umjesto šesnaest upravljačkih bitova dovoljna su četiri. Svaka njihova 4-bitna kombinacija jedno-značno određuje 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 - logička operacija ILI 1111- logička operacija Isključivo ILI.

Slika 7.33 prikazuje organizaciju mikroinstrukcije koja se temelji na grupiranju bitova.

0: nop 1 : istodobno

se izvode MOP1,MOP3,

MOP4, MOP7,...

grupiranje mikrooperacija koje se izvode istodobno

grupiranje mikrooperacija koje se međusobno isključuju

adresa sljedeće mikroinstrukcije

- M -

0: пор 1 : istodobno

se izvode MOP2, MOP3,

MOP7, MOP8,...

0000 0001 0010

1110 1111

пор MOP9 МОРЮ

M022 M024

emit polje

1

ГИ1 г-П-i -n-

PH -u-

SL 7.33 Format mikroinstrukcije koja se temelji na pristupu grupiranja bitova

Page 212: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

206 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

U slučaju grupiranja mikroopercija koje se međusobno isključuju potrebno je grupi uprav-ljačkih bitova dodijeliti dekoder kojim se n kombinacija upravljačkih bitova dekodira u je-dan od 2n mogućih izlaza. Na taj se način pobuđuje jedna od mogućih 2n mikrooperacija u grupi. Primjerice, 4-bitna kombinacija upravljačkih bitova za mikrooperacije koje se odno-se na ALU dekodira se dekoderom četiri-na-šesnaest.

7.6.3. VIŠESTRUKI FORMATI MIKROINSTRUKCIJA Osnovna značajka ovog pristupa formatiranju mikroinstrukcija jest relativno kratka mi-kroinstrukcija duljine 16 ili 32 bita kojom se specificira maksimalno do četiri mikroope-acije. Mikroinstrukcije koriste različite formate za pojedine tipove mikrooperacija tako da svojom organizacijom odgovaraju formatu (strojnih) instrukcija na ISA razini. Na pri-mjer, skup mikroinstrukcija koji koristi četiri različita formata može imati sljedeće formate mikroinstrukcija:

i) format 0 (slika 7.34) kojim se određuje mikrooperacija prijenosa podataka između sastavnica na putu podataka,

ii) format 1 (slika 7.35) koji određuje do tri mikrooperacije koje se odnose na ALU (zbra-janje, oduzimanje, logičke operacije, posmak), pristup memoriji ili inkrementiranju programskog brojila,

iii) format 2 (slika 7.36) kojim se određuju mikrooperacije maskiranja operanda ili dijela operanda na ulazu u ALU,

iv) format 3 (slika 7.37) kojim se određuju mikrooperacije grananja u mikroprogramu.

Na slici 7.34 vidimo da se dva najznačajnija bita mikroinstrukcije rabe za specifikaciju for-mata mikroinstrukcije - 00 određuje format 0. U tom se slučaju sljedećih pet značajnijii bitova tumači kao "operacijski kod" mikrooperacije iz skupa mikrooperacija za prijenos podataka. Preostala polja upravljačkih bitova određuju izvorišta i odredišta 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,

' v " ^ " I — ne koristise format mop operand 1 operand 2

00 - format 0

SI. 7.34 Format 0 mikroinstrukcije

Mikroinstrukcija (slika 7.34) tumači se na sljedeći način: 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 izvorišta podatka a

Page 213: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. R1BARIČ - GRAĐA RAČUNALA 207

polje operanda 2 (bi - b6) je adresa odredišta podatka, /bit bO se ne koristi/.

Format 0 mikroinstrukcije određuje samo jednu istodobno izvršljivu mikrooperaciju.

2 bita 5 bitova 2 bita 1 bit 6 bitova

b,9 b,8 b,7 b„ b12 K b,o bs

ne koristi se format mopl mop2 mop3 modifikator

01 - format 1

SL 7.35 Format 1 mikroinstrukcije

Na slici 7.35 prikazanje format 1 mikroinstrukcije. U tom slučaju vidimo da se formatom 1 određuju do tri istodobno izvršljive mikrooperacije.

Mikroinstrukcija (slika 7.35) tumači se na sljedeći način: 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 određuje inkrementiranje programskog brojila polje modifikatora (b4 - b9) određuje 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 određuje samo jedna mikroopera-cija, i to mikrooperacija maskiranja jednog od operanada na ulazu u ALU.

Mikroinstrukcija (slika 7.36) se tumači na sljedeći način: ako je b19 b18 = 10 tada je format 2

ako je format 2 onda je mikrooperacija mop iz skupa mikrooperacija maskiranja onda se bdl tumači kao granica i1# a bd2 kao granica i2

maskiranje se izvodi na sljedeći način: 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 označava operand na lijevom ulazu u ALU, AIR operand na desnom ulazu u ALU, a AOUT izlaz iz ALU nakon operacije maskiranja/

Page 214: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

208 7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

2 bita 5 bitova 6 bitova 6 bitova 1 bit

b 1 9 b 1 8 b ! 7 bi3 b12 b 7 b e b b 1 0

ne koristi se mop bd 1 bd 2 format

10-format 2

SI. 7.36. Format 2 mikroinstrukcije

Slika 7.37 prikazuje format 3 mikroinstrukcije. On je namijenjen za uvjetna i bezuvjetna grananja u mikroprogramu.

Mikroinstrukcija (slika 7.37) tumači se na sljedeći način: ako je b l9 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 odredišna (ciljna) adresa grananja.

2 bita N——

5 bitova 13 bitova

b ! 9 b , B b , 7 b , 3 b12

format mop grananja odredišna adresa

11 - format 3

SI. 7.37 Format 3 mikroinstrukcije

Mikroinstrukcije koje koriste višestruke formate zahtijevaju složenije sklopove za dekodH ranje - prvo se treba dekodirati polje koje određuje format mikroinstrukcije, a zatim i po-j Ije bitova koje se odnosi na jednu od mikrooperacija iz skupa mikrooperacija. Tumačenje] ovog drugog polja upravljačkih bitova ovisi o rezultatu dekodiranja prethodnog polja.

7.6.4. HORIZONTALNO I VERTIKALNO MIKROPROGRAMIRANJE

Usko u vezi s formatom mikroinstrukcija, odnosno organizacijom mikroinstrukcije, nai-lazimo i na dva pojma: horizontalno mikroprogramiranje i vertikalno m ikroprog ra mi ranje. j Značajke horizontalnog mikroprogramiranja jesu:

i) mikroinstrukcija je duga riječ koja se sastoji od 64 pa sve do nekoliko stotina bitova ii) mikroinstrukcijom se omogućuje veći broj različitih resursa procesora (funkcijsl

jedinica, registara, putova podataka) tako da se njima upravlja nezavisno - mikr< stukcija određuje veći broj mikrooperacija koje se izvode istodobno,

iii) mikroinstrukcije formata u skladu s horizontalnim mikroprogramiranjem dopusti mikroprogrameru specifikaciju upravljanja na razini pojedinih mikrooperacija.

Page 215: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 209

Na temelju značajki i) - iii) možemo zaključiti da pristup formatiranju mikroinstrukcija izravnim upravljanjem odgovara horizontalnom mikroprogramiranju.

Vertikalno mikroprogramiranje ima sljedeće značajke: i) mikroinstrukcije su obično male duljine - od 16 iii 32 bita,

ii) mikroinstrukcija obično specificira jednu ili dvije mikrooperacije i zato ne dopušta mikroprogrameru iskorištavanje potencijalnog paralelizma na razini mikrooperacija,

iii) umjesto specifikacije većeg broja istodobno izvršljivih mikrooperacija mora se ko-ristiti uvezivanje mikroinstrukcija koje onda određuju skup ili slijed mikrooperacija.

Page 216: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 211

8. POGLAVLJE

ARITMETIČKO-LOGIČKA JEDINICA

8.1. UVOD: BIT, RIJEČ, BAJT I ZNAKOVI Najmanja količina informacije koja se može pohraniti i kojom se računalo može služiti jest bit (engl. bit). Računalo pohranjuje informaciju u obliku grupe bitova koja se naziva riječ (engl. word). Broj bitova u riječi različit je za različita računala. Tako govorimo o računalu koje ima 4-, 8-, 16-, 32- 64- ili 128-bitnu riječ. Grupa od 8 bitova naziva se bajt (engl. byte). Za današnje procesore kažemo da su bajtno orijentirani procesori jer im je duljina riječi višekratnik od 8 bita.

Primjer 8.1.

Prvi mikroprocesor Intel4004(1971.godine) imaojeduljinu riječi od4bita, Mikroprocesori prve generacije (kraj 1971.) bili su 8-bitnL Mikroprocesor Intel 8086 (1978.) imao je du-ljinu riječi od 16 bita. Računalo VAX 11/780 (1978.) bilo je 32-bitno. Treća je generacija mikroprocesora 32-bitna, dok je četvrta generacija 64-bitna. Grafički procesori i proce-sori za posebne namjene (VLIW, multimedijski) imaju duljinu riječi od 128 bitova i više.

Alfanumerički znakovi (A - Z, a - z, 0 - 9, simboli *, -, +,!, ?, itd.) predočeni su u ra-čunalu binarnim uzorcima koji se mogu pohraniti i kojima se može baratati u računalu. ASCII (American Standard Code for information Interchange) obično se koristi za kodiranje alfanumeričkih znakova. Svaki je alfanumerički znak predočen 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 upravljačke funkcije (npr., BS (engl. backspace) - pomak za jedno mjesto unatrag, LF (engl. line feed) - novi redak, CR (engl. carriage return) - povrat na početak 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).

Page 217: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

212 8. POGLAVLJE: ARITMETIČKO-LOGIČKA JEDINICA

0 1 2 3 4 5 6 7 000 001 010 011 100 101 110 111

0 0000 NULL DCL SP 0 @ P 1 P

1 0001 SOH DC1 j 1 A Q a q 2 0010 STX DC2 u 2 B R b r 3 0011 ETX DC3 # 3 c s c s 4 0100 EOT DC4 $ 4 D T d t 5 0101 ENQ NAK % 5 E U e u

6 0110 ACK SYN & 6 F V f V

7 0111 BEL ETB 7 G w g w

8 1000 BS CAN ( 8 H X h X

9 1001 HT EM ) 9 1 Y i y A 1010 LF SUB * : J z j z

B 1011 VT ESC + # K [ k } C 1100 FF FS t < L \ 1 1 D 1101 CR GS - = M ] m } E 1110 so RS > N A n ~

F 1111 SI US / 7 O o DEL

Tablica 8.1. ASCII kod

8.2. PRIKAZ BROJEVA

8.2.1. PRIKAZ CIJELIH BROJEVA

Golema većina današnjih računala koristi pozicijski brojevni sustav s bazom 2 (binarni bro-jevni sustav), iako postoje izvedbe posebnih računala koja za prikaz brojeva koriste simbo-ličke prikaze (npr. rezidualni brojevni sustav u kojem se broj prikazuje ostacima dijeljenja dekadskih brojeva prim brojevima).

Opseg cijelih brojeva (engl. integer) proteže se na područje cijelih negativnih brojeva, nule i područje cijelih pozitivnih brojeva. U računalu se upotrebljavaju različiti načini za prikaz cijelih brojeva:

i) predznak-apsolutna vrijednost (engl. signed and magnitude); ii) jedinični ili nepotpuni komplement (engl. one's complement); iii) potpuni ili dvojni komplement (engl. two's complement).

Način prikaza predznak-apsolutna vrijednost je, na prvi pogled, najprirodniji način prikaza brojeva. Broj duljine n bitova u tom prikazu upotrebljava krajnje lijevi bit (najznačajniji bit) kao bit predznaka. Ako je najznačajniji bit 0 (nula), onda je broj pozitivan, a ako je 1 (jedan), onda je broj negativan. Vrijednost broja određena je s preostalih n-1 bitova. Opseg vrijed-nosti cijelih brojeva v(x) u tom prikazu je:

-(2n1 -1) ^ v(x) ^ +(2n~1 -1).

U ovom načinu prikaza postoje i dvije nule - nula s pozitivnim predznakom i nula s nega-tivnim predznakom.

Page 218: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 213

Prikaz jediničnim iii nepotpunim komplementom dopušta prikaz nenegativnih brojeva na uobičajen način tako da je najznačajniji bit 0. Negativni broj iste apsolutne vrijednosti do-biva se komplementiranjem svih n bitova pozitivnog broja. Podsjetimo se, komplementira-nje je operacija kojom se zamjenjuju vrijednosti binarnih znamenki u broju - nule jedinica-ma i jedinice nulama. Opseg prikaza cijelih brojeva u tom prikazu je:

-(2n1 -1) 55 v(x) <s +(2n_1 -1).

I u ovom načinu prikaza postoje dva oblika za nulu.

Prikaz potpunim ili dvojnim komplementom upotrebljava najznačajniji bit za označavanje pozitivnog (najznačajniji bit je 0) ili negativnog broja (najznačajniji bit je 1). Za pozitiv-ne vrijednosti cijelog broja upotrebljava se preostalih n - 1 bitova. Negativne vrijednosti cijelog broja dobivaju se tako da se jediničnom komplementu (odgovarajuće pozitivne vrijednosti) pribroji jedinica. Opseg vrijednosti brojeva u ovom prikazuje:

-(2n1) ^ v(x) ^ +(2n~1 -1).

U ovom je prikazu nula predočena samo u jednom obliku.

Primjer 8.2.

Prikažimo dva broja -126 i + 125 (dekadski zapis) u sva tri načina prikaza cijelih brojeva, uz pretpostavku da brojeve želimo predočiti s 8 bita:

predznak-apsolutna vrijednost

-126 = 11111110; najznačajniji 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; najznačajniji bit - bit predznaka je 0 - broj je pozitivan; apsolutna vrijednost broja je 125;

jedinični ili nepotpuni komplement

-126= 10000001; najznačajniji bit - bit predznaka je 1 - broj je negativan;

binarna vrijednost za -126 dobiva se komplementiranjm pozitivne vrijednosti 126: 126 = 01111110 jedinični komplement broja 10000001; +125 = 01111101;

potpuni ili dvojni komplement

-126= 10000010; najznačajniji bit - bit predznaka je 1 - broj je negativan;

binarni prikaz dobiva se tako da se +126 predoči u potpunom ili dvojnom komplementu: 126 = 01111110-•jedinični komplement: 10000001 dodaj 1 na najmanje značajno mjesto 10000010; + 125 = 01111101;

Izbor prikaza cijelih brojeva (cjelobrojnih tipova podataka) važna je arhitektonska značaj-ka. Izbor se obično temelji na sljedećim kriterijima:

• jednostavnost aritmetičkih operacija, odnosno izvedbe aritmetičkih sklopova, • jednostavnost, odnosno jednoznačnost prikaza nule, • opseg vrijednosti i njegova simetričnost glede pozitivnih i negativnih vrijednosti.

Page 219: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

214 8. POGLAVLJE: ARITMETIČKO-LOGIČKA JEDINICA

Prikaz brojeva u notaciji potpunim ili dvojnim komplementom najčešće je korišteni način prikaza cijelih brojeva u računalu u posljednja četiri desetljeća. Navedimo neka svojstva brojeva predočenih 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 najznačajniji bit 0, negativni broj ima najznačajniji 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 događa ako se povredi opseg prikaza brojeva u dvojnom komplemen-tu. To se događa ako se izvede operacija koja generira rezultat čija vrijednost prekoračuje opseg vrijednosti. Pretpostavimo da su brojevi predočeni 8-bitnim kodom. U tom je sluča-ju opseg vrijednosti od -128 do +127. Što će se, na primjer, dogoditi ako zbrojimo X = 98 i Y = 62?

01100010 f

+00111110 10100000

8-bitni rezultat koji smo dobili je negativan (!): -96, očito da je rezultat pogrešan jer zbra-janjem dvaju pozitivnih brojeva ne možemo dobiti negativan rezultat. Prekoračili smo de-finirani opseg vrijednosti koji se može prikazati s 8 bitova, naime ispravan rezultat (160) je izvan opsega prikaza. Dogodio se preljev (engl. arithmetic overflow). Preljev se obično označava sV i definiranje na sljedeći način:

V = (a • b • s ,) + (a • b • s J, v n-1 n-1 n-v v n-1 n-7 n -1 "

gdje su a n i bn^ najznačajniji bitovi operanada, tj. bitovi predznaka i sn-1 najznačajniji bit rezultata, odnosno bit predznaka rezultata. Oznake + i • označavaju logičku operaciju ILI, odnosno logičku operaciju I.

Provjerimo je ii zaista V = 1 u prethodnom primjeru: an l = 0, bn^ = 0 i = 1, iz čega slijedi V = 1 - dogodio se preljev.

Preljev se može definirati i pomoću prijenosa jedinice u najznačajniji bit rezultata Cn^ i pri-jenosa jedinice iz najznačajnijeg bita rezultata Cn (slika 8.1):

v = c n . , © c ,

gdje © označava logičku operaciju ISKLJUČIVO ILI.

U opisanim prikazima cijelih brojeva možemo pretpostaviti da je binarni zarez postavljen iza najmanje značajne binarne znamenke, stoga ćemo u literaturi naći da se ovi prikazi bro-jeva nazivaju i prikazi brojeva sa čvrstim (nepomičnim) binarnim zarezom (engl. fixed-point numbers).

q C ^ najmanje značajan bit

U

tt

najznačajniji bit

SI. 8.1 Prijenos Cn_1 i Cn

Page 220: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 215

Čvrsti se binarni zarez može postaviti bilo gdje u odnosu na binarne znamenke, npr. ispred najznačajnije binarne znamenke ili između dviju binarnih znamenki:

X r v l Xn-2 ...X0 ' X 1 X -2 - X -m

gdje je x.; i = -m, -m +1,..., 0,1, ...,n-1, iz skupa binarnih znamenki {0,1}.

U tom slučaju vrijednost broja v(x) dobiva se kao:

n-1 -m

f=0 /=-1 Znamenke lijevo od binarnog zareza predstavljaju cijeli broj. Znamenke desno od binar-nog zareza predstavljaju razlomački dio.

Primjer 8.3.

8-bitni broj predočenje 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 razlomačkog dijela je: 0 x 2'1 + 0 x 2'2 + 1 x 2"3 +1 x 24 = 0.125 + 0.0625 = 0.1875. Vrijednost broja je: 7.1875.

8.2.2. PRIKAZ BROJEVA S POMIČNIM ZAREZOM (FLOATING-POINT NUMBER)

Brojevi s pomičnim zarezom upotrebljavaju se u računanju na području znanosti, gdje se vrijednosti brojeva kreću u vrlo širokom rasponu: od vrlo malih vrijednosti (npr. 212°) do vrlo velikih vrijednosti (npr. 2+120). Viši programski jezici dopuštaju definiranje varijabli tipa real i one mogu imati vrijednosti između dva slijedna cijela broja. U računalu su ti brojevi predočeni u obliku brojeva s pomičnim (binarnim) zarezom. Broj se u tom načinu prikaza sastoji od dva dijela (slika 8.2):

i) eksponenta; ii) mantise;

e a eksponent mantisa

k •) broj s pomičnim zarezom

SI. 8.2 Broj s pomičnim zarezom predočen u obliku a x r*

Možemo ga predočiti u obliku: a x re, gdje je a mantisa (naziva se još i argument), r je iza-brana baza brojevnog sustava (engl. radix; base) i e je eksponent. Broj s pomičnim zarezom u računalu se pohranjuje slijedom bitova koji definiraju dva polja - polje eksponenta e i polje mantise (argumenta) a. Vrijednost baze r eksplicitno se ne pohranjuje u računalu.

Sljedeće značajke oblikuju prikaz brojeva s pomičnim zarezom: i) ukupan broj bitova kojim se predočava broj s pomičnim zarezom;

ii) način predočavanja mantise (npr. potpuni komplement, predznak-apsolutna vrijed-nost, ...);

Page 221: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

216 8. POGLAVLJE: ARITMETIČKO-LOGIČKA JEDINICA

ill) način predočavanja eksponenta (npr. notacija vrijednost + prekoračenje (engl. excess notation) /naziva se još suvišakn, gdje je n iznos prekoračenja/, predznak- apsolutna vrijednost);

iv) broj bitova dodijeljen mantisi, broj bitova dodijeljen eksponentu; v) razmještaj mantise i eksponenta.

Dogovorno je mantisa broja s pomičnim zarezom uvijek normalizirana (osim kada je vrijed-nost broja nula). Normalizirani zapis mantise takvog je oblika da se podrazumijeva položaj binarnog zareza poslije prvog (ili vodećeg) bita, koji ima vrijednost 1, osim onda kada su istodobno eksponent i razlomački dio jednaki 0. To znači da je normalizirana mantisa u opsegu:

1.000...0 do 1.111... 11 što znači 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 pomičnim 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 množenje binarnog broja s 23 = 8 odgovara posmaku broja ulijevo za tri binarna mjesta.)

Postupkom normalizacije mantise postiže se veća točnost prikaza broja. Na primjer, pret-postavimo da imamo nenormaliziranu mantisu koju možemo predočiti s osam bitova:

0.00010101 10111.

U tom slučaju bitovi 0111 iza crte | ne mogu biti prikazani zbog raspoložive duljine man-tise od 8 bita. No ako upotrijebimo normaliziranu mantisu, u njezinoj se vrijednosti po-javljuju i "odrezani" bitovi - broj je predočen točnije:

1.01010111 x 2A

Page 222: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 217

Brojevi s pomičnim 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 dopušta i prikaz predznaka - to može biti notacija predznak-apsolutna vrijednost, jedinični komplement ili dvojni komple-ment. Mantisa za prikaz brojeva u skladu s IEEE standardom (ANSI/IEEE Std 754) predočava se u notaciji predznak-apsolutno vrijednost Eksponent se u IEEE standardu za jednostruki format (engl. single format) predočava u notaciji sa suviškom 127 (naziva se još i ekces 127 ili vrijednost + prekoračenje). U jednostrukom proširenom formatu (engl. single extended format) i dvostrukom formatu IEEE (engl. double format) koristi se notacija sa suviškom 1023, dok se u formatu četverostruke točnosti (engl. quad precision format) koristi suvišak 16383.

Slika 8.4 prikazuje jednostruki format broja s pomičnim zarezom u skladu sa standardom IEEE. Na slici je sa S označen bit predznaka za mantisu, s E je označen 8-bitni eksponent i s F je označen razlomački dio normalizirane mantise (23 bita). (Opaska: razlomački dio se naziva u engleskom fractional part i zato nosi oznaku F.)

Napomenimo da se vodeći bit (najznačajniji bit normalizirane mantise) 1 ne pojavljuje eksplicitno u prikazu (slika 8.5). Razlomački dio F zajedno sa "skrivenim" vodećim bitom oblikuje vrijednost mantise: 1 .F.

Općenito, IEEE format brojeva s pomičnim zarezom formalno je definiran ovako: X = (-1)sx2EBx1.F,

gdje je S predznak (Oza pozitivne brojeve; 1 negativne brojeve), E je eksponent predočen u notaciji sa suviškom B i F je razlomački dio mantise.

Broj koji ima vrijednost 0 (nula) predočava se u formatu IEEE tako da su polja E i F istodob-no 0. U tom slučaju, budući da se radi o vrijednosti broja 0, mantisa nije normalizirana i po-drazumijeva se da je vodeći bit jedna 0. Ovisno o vrijednosti bita S govorimo o pozitivnoj nuli (S = 0) i negativnoj nuli (S = 1).

eksponent razlomački dio normalizirane mantise

- M " 1 bit 8 bitova 23 bita

SI. 8.4 Jednostruki format broja s pomičnim zarezom (IEEE standard)

— "skriveni" vodeći bit

eksponent 1. razlomački dio normalizirane mantise

1 bit 8 bitova 23 bita

SI. 8.5 Jednostruki format broja s pomičnim zarezom sa "skrivenim" vodećim bitom normalizirane mantise

Slika 8.6 prikazuje dvostruki format broja s pomičnim zarezom (engl. double/long IEEE for-mat) koji je duljine 64 bita.

Page 223: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

218 8. POGLAVLJE: ARITMETIČKO-LOGIČKA JEDINICA

-a--M-

1 bit' 11 bitova 52 bita

SI. 8.6 Dvostruki format broja s pomičnim zarezom (IEEE standard)

Eksponent može imati pozitivnu i negativnu vrijednost. On se u standardu IEEE oblikuje L notaciji sa suviškom pa E nikad nije negativan.

Primjer 8.5.

Prikažimo dekadski broj +14,25 u jednostrukom IEEE formatu broja s pomičnim zarezom.

Zapišimo +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 zapišimo u notaciji sa suviškom 127 (u skladu s IEEE standardom): 3+127=130=10000010.

Konačni oblik broja (vodeći 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

Prikažimo dekadski broj - 0,00048828125 u jednostrukom IEEE formatu broja s pomič-nim zarezom. Zapišimo 0,00048828125 u binarnom obliku: 0,00000000001 ...0

Pretvorimo binarni broj u normalizirani oblik:

1,000....00 x 211

Bit predznaka S je 1 (broj je negativan).

Eksponent -11 zapišimo u notaciji sa suviškom 127: -11+127=116 = 01110100

Konačni oblik broja (vodeći 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 8 23

Vrijednost brojeva predočenih u IEEE formatu brojeva s pomičnim zarezom određuje se ovako:

X = (-1)sx2EBx1.F,

gdje je, ponovimo još jednom, S predznak (0 za pozitivne brojeve; 1 negativne brojeve), E je eksponent predočen u notaciji sa suviškom B i F je razlomački dio mantise.

Page 224: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 219

Na primjer, za prvi slučaj predočenog broja iz Primjera 8.5. vrijedi: X = (-1)° x 2130"127 x 1.11001 ...0 = 1.110010 0...0 x 23,

X= 1110,010 X = 14 + 0.25 = 14,25 (dekadno)

Tablica 8.2. prikazuje osnovne značajke jednostrukog, dvostrukog i četverostrukog IEEE formata brojeva s pomičnim zarezom.

Značajke Jednostruki format Dvostruki format Četverostruki format

Ukupna duljina 32 bita 64 bita 128 bita

S - predznak 1 bit 1 bit 1 bit

E - eksponent 8 bita 11 bita 15 bita

Maksimalna vrijednost E 255 2047 32767

Vodeći bit 1 1 1

F - razlomački dio 23 bita 52 bita 111 bita

Notacija sa suviškom (za eksponent) 127 1023 16383

Opseg prikaza brojeva IO38- 1038 10308 - 10308 Nije specificiran

iablica 8.2. Osnovni IEEE formati brojeva s pomičnim zarezom

Standard IEEE za svaki od formata brojeva s pomičnim zarezom određuje 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 (beskonačno); • 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 dopuštaju i prikaz dekadskih znamenaka. Za prikaz dekadskih zna-menaka (0 - 9) upotrebljava se, međutim, 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 određen binarnim kombinacijama od 0000 do 1001. Vrijednosti veće od 1001 nisu dopuštene jer je baza sustava 10. Višeznamenkasti 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

Uvriježeni način predstavljanja dekadskih brojeva u računalu jest standardni format koji se temelji na upakiravanju dekadskih brojeva pa je u jednoj riječi upakirano n znamenaka dekadskog broja; nje duljina riječi podijeljena sa 4.

Page 225: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

220 8. POGLAVLJE: ARITMETIČKO-LOGIČKA JEDINICA

Dekadska znamenka Kod BCD

0 0000

1 0001

2 0010

3 0011

4 0100

5 0101

6 0110

7 0111

8 1000

9 1001

Tablica 8.3. Kod BCD

8.3. BINARNA ARITMETIKA U ovom odjeljku podsjetiti ćemo se, ukratko, na ono što smo naučili iz osnova informati-ke -na osnovne aritmetičke operacije binarnim brojevima i na sklopove koji te operacije izvode. J

8.3.1. ZBRAJANJE DVAJU BINARNIH BROJEVA

Osnovna i najjednostavnija aritmetička operacija u računalu jest zbrajanje dvaju binarnih brojeva. Ona počiva 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 značajnije mjesto u binarnom broju i sudjeluje u operaciji zbrajanja znamenaka na značajnijem mjestu.

Sklop za zbrajanje dvaju binarnih znamenaka jest kombinacijski sklop i naziva se poluzbra-jalo HA (engl. half adder). Na temelju pravila zbrajanja možemo napisati tablicu istinitosti (ili tablicu kombinacija) te na temelju nje realizirati sklop. Tablica 8.4. prikazuje tablicu isti-nitosti, a slika 8.7 sklop poluzbrajalo.

Na temelju tablice istinitosti možemo napisati logičke funkcije za poluzbrajalo: S =x • y + x • y,

C = x • y.

Page 226: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 221

Ulazx Ulazy Izlaz S (suma) 1 [ Bit prijenosa C

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

Tablica 8.4. Tablica istinitosti za poluzbrajalo

Izravnom uporabom potonjih logičkih funkcija dobivamo shemu sklopa (slika 8.7 b)). Logički izraz za S predstavlja operaciju sume po modulu 2 i može se implementirati funkci-jom ISKLJUČIVO ILI: (x® y) (slika 8.7 c).

X

poluzbrajalo

HA

w poluzbrajalo

HA

w

w

poluzbrajalo

HA

w

S (suma)

C (bit prijenosa)

~7 x

y

J

a)

xy

S=xy+xy

xy

C=xy

b)

x

y S-x©y

C=xy

HA,

SI. 8.7 Poluzbrajalo; a) Poluzbrajalo kao "crna kutija"; b) Sklop; c) Sklop s izvedbom pomoću sklopa ISKLJUČIVO ILI

Page 227: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

222 8. POGLAVLJE: ARITMETIČKO-LOGIČKA JEDINICA

Poluzbrajalo je, nažalost, 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 značajnog mjesta Cjn. Zbog bita prijenosa, koji zapravo predstavlja treću binarnu znamenku koja sudjeluje u operaciji zbra-janja 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 značajne 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 Ulazy Ulaz C. in Izlaz S (suma) Izlaz C „ out

0 0 0 0 0

0 0 1 1 0

0 1 0 1 0

0 1 1 0 1

1 0 0 1 0

1 0 1 0 1

1 1 0 0 1

1 1 1 1 1

Tablica 8.5. Tablica istinitosti za potpuno zbrajalo

Sklop je dobiven na temelju logičkih funkcija koje se dobivaju iz tablice istinitosti: S = x*y-C. + x-y*C. + x - y * C + x y - C ' in J in 7 in * in

C = x*y*C. +x-y-C. +x-y -C. + x y C . out * tn * in * in ' in Prisjetimo se digitalne elektronike - uporabom K-tablice može se izraz za C ^ zapisati u minimiziranom obliku:

C = x y + x-C +y -C out ' in ' tn Iz digitalne elektronike znamo da je:

S = Cin © (x © y) C o u , = C i n - ( x © y ) + x - y

Page 228: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 223

X potpuno w

y zbrajalo

FA <=in

zbrajalo

FA w w

S (suma)

> Cwt (bit prijenosa)

a)

x x y y C C. ' ' m in

out

b)

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

Page 229: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

224 8. POGLAVLJE: ARITMETIČKO-LOGIČKA JEDINICA

Potpuno zbrajalo može se izvesti s dva poluzbrajala (slika 8.9).

x

y "A x©y

"outl

xy HA,

SI. 8.9 Potpuno zbrajalo izvedeno s dva poluzbrajala

8.3.2. PARALELNO ZBRAJALO

CJx©y)

HA,

xy

S=Cin©(x©y)

kCout=Cln(x©y)+xy

Paralelno zbrajalo zbraja n-bitnu riječ A i n-bitnu riječ B u jednom koraku. Paralelno se zbra-jalo sastoji od n potpunih zbrajala. Kažemo 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.

a , b , n-1 n-1 a2 b2 ^ b, a0 b0 C (C

SI. 8.10 Paralelno zbrajalo

Page 230: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 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 brže u odnosu na serijsko zbrajalo. No računanje i dobivanje rezultata paralelnim zbraja-lom u praktičnoj je izvedbi usporeno zbog efekta propagacije bita prijenosa kroz stupnjeve paralelnog zbrajala. O tome ćemo nešto kasnije kad ćemo opisati zbrajalo s predviđanjem bita prijenosa (engl. carry-lookahead).

8.3.3. SERIJSKO ZBRAJALO

Slika 8.11 prikazuje izvedbu serijskog zbrajala. U posmačnim registrima A i B pohranjeni su n-bitni operandi čiji se bitovi posmakom udesno prosljeđuju jednom stupnju potpunog zbrajala. Rezultat zbrajanja svake bitovne pozicije pohranjuje se (i posmiče) u posmačnom registru A, a D bistabil pamti bit prijenosa iz prethodne operacije zbrajanja bitova.

SI. 8.11 Serijsko zbrajalo

Page 231: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

226 8. POGLAVLJE: ARITMETIČKO-LOGIČKA 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 značajnije bitovne pozicije

Vidimo da prve tri operacije daju kao rezultat jedan bit (0 ili 1). Kod posljednjeg se slučaja, kada je umanjitelj (suptrahend) veći od umanjenika (minuenda), oduzimanje se može izve-sti samo ako posudimo jedinicu (uzmemo zajam) sa značajnije bitovne pozicije. Naravnog ta jedinica posuđena sa značajnije bitovne pozicije vrijedi 2 puta više, tj. 2. Oduzimanjem 1, u tom slučaju, dobivamo rezultat 1. Označimo s D razliku, odnosno diferenciju (rezultat oduzimanja), a s B posudbu (B od engl. borrow). Na temelju osnovnog pravila za oduzima-nje možemo napisati tablicu istinitosti (tablica 8.6.). /

Ulazx Ulazy Izlaz D (razlika) Bit posudbe B

0 0 0 0

0 1 1 1

1 0 1 0

1 1 0 0

Tablica 8.6. Tablica istinitosti za poluoduzimalo

Na temelju tablice istinitosti dobivamo sljedeće logičke funkcije: ^ D = x -y + x -y

B = x • y.

Ako na trenutak izraze za D i B usporedimo sa S i C (za poluzbrajalo), uočavamo da se jedino razlikuju B i C jer je C = x • y.

Sklop koji podržava prethodne dvije logičke funkcije za operaciju oduzimanja naziva se poluoduzimalo HS (engl. half-subtractor). Slika 8.12 prikazuje izvedbu poluoduzimala HS.

Slično kao u slučaju potpunog zbrajala, uporabom dvaju poluoduzimala može se dobiti potpuno oduzimalo FS (engl. full-subtractor) (slika 8.13).

Page 232: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 227

x x y y

a)

b)

D (razlika)

B (bit posudbe)

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

D=xy+xy

B—xy

SI. 8.13 Potpuno oduzimalo sastavljeno od dva poluoduzimala

Page 233: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

228 8. POGLAVLJE: ARITMETIČKO-LOGIČKA JEDINICA

8.3.5. ODUZIMANJE POMOĆU KOMPLEMENTA BINARNOG BROJA

Oduzimanje se može izvesti operacijom zbrajanja dvojnog ili potpunog komplementa umanjitelja (suptrahenda). Dvojni komplement operanda B dobiva se tako da se njego-vom jediničnom komplementu pribroji Cjn = 1 (slika 8.14). Shematski to predočuje slika 8.14. Slika 8.15 prikazuje potrebnu preinaku paralelnog zbrajala da bi se dobilo i paralelno oduzimalo. Upravljačkim signalom C = 1 sklopovi ISKLJUČIVO ILI generiraju jedinični kom-plement operanda B (umanjitelj), zbrajanjem s A uz Cjn = 1 u prvom stupnju; Cjn = C dobiva se rezultat A - B. Kad je upravljački ulaz C = 0, sklop djeluje kao paralelno zbrajalo.

/

n s

jedinični komplement /

paralelno zbrajalo

bit posudbe

C =1

A-B

SI. 8.14 Shematski prikaz oduzimanja operacijom zbrajanja potpunog komplementa

3n-1 bn-! a2 b2 a b i "i

SI. 8.15 Paralelno zbrajalo i oduzimalo

Page 234: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 229

8.3.6. PARALELNO ZBRAJALO S PREDVIĐANJEM BITA PRIJENOSA (ENGL. CARRYLOOKAHEAD)

Pri zbrajanju dvaju binarnih brojeva paralelnim zbrajalom svi bitovi oba operanda raspolo-živi su istodobno, međutim, bitovi prijenosa u pojedine stupnjeve nisu raspoloživi 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 rezul-tatu koji generira potpuno zbrajalo u / - 1 stupnju i bit će raspoloživ tek kada taj stupanj paralelnog zbrajala obavi operaciju. Rezultat /-1 stupnja ovisi o rezultatu 1-2 stupnja itd.To znači da će izlaz iz paralelnog zbrajala, koji je kombinacijski sklop, postati stabilan i valjan tek kada najznačajniji stupanj zbrajala (n -1 stupanj) na ulazu bude imao stabilan bit prije-nosa i s njim obavi operaciju zbrajanja najznačajnijih 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 pot-punom zbrajalu. Ukupno vrijeme propagacije bita prijenosa jednako je umnošku vremenu kašnjenja jednog logičkog sklopa i broju logičkih sklopova kroz koje bit prijenosa prolazi. U jednom stupnju paralelnog zbrajala signal koji odgovara bitu prijenosa prolazi kroz lo-gički 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 td

vrijeme kašnjenja jednog logičkog sklopa. Ukupno vrijeme koje je potrebno da bi n-bitno paralelno zbrajalo generiralo valjani rezultat je:

tadder = t f + n X ( 2 x U

gdje je tf vrijeme u kojem jedan stupanj paralelnog zbrajala, tj. potpuno zbrajalo (FA) obavi operaciju zbrajanja. Na temelju ove kratke analize vidimo da je kašnjenje u propagaciji bita prijenosa važan faktor koji ograničava brzinu paralelnog zbrajala. Za procesore koji se služe 32-, 64- ili 128-bitnim operandima, brzina paralelnog zbrajala koje ima 32, 64 ili 128 stupnjeva može predstavljati bitni ograničavajući faktor performanse procesora (ne zabo-ravimo da se paralelno zbrajalo kao sastavni dio aritmetičko-logičke jedinice nalazi na putu podataka). Postoje sljedeće mogućnosti ubrzanja rada paralelnog zbrajala: upotreba bržih sklopova (vrijeme kašnjenja td što je moguće kraće), uporaba sklopova za predviđanje bita prijenosa ili oboje. Brzina sklopova tehnološki je uvjetovana i postavlja granice koje se ne mogu prekoračiti.

Paralelno zbrajalo s dodatnim sklopovima za predviđanje bita prijenosa svrstavamo u razred brzih zbrajala (engl. fast adder). Uporabom sklopova za predviđanje bita prijenosa skraćuje se vrijeme propagacije signala koji odgovara bitu prijenosa i ono postaje neovi-sno o broju stupnjeva n paralelnog zbrajala.

Paralelno zbrajalo s predviđanjem bita prijenosa kojim smanjuje vrijeme propagacije si-gnala bita prijenosa ima složeniju sklopovsku strukturu od strukture paralelnog zbrajala.

Promotrimo sklop potpunog zbrajala (/-ti stupanj paralelnog zbrajala) na slici 8.16 i defini-rajmo dvije nove binarne varijable, odnosno dva signala:

P, = x,©y, G i = xi-Vi'

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

Page 235: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

230 8. POGLAVLJE: ARITMETIČKO-LOGIČKA JEDINICA

x.

y.

P.

" i+1

SI. 8.16 /-ti stupanj paralelnog zbrajala s označenim varijablama P i G.

Izlazni je signal bita prijenosa koji se prenosi stupnju / +1 paralelnog zbrajala (slika 8.16): C 1 = G i + (P,.Ci). (8.1)

Suma je: S. = P.®C

Na sličan se način može izraziti Cj+2za stupanj i+2:

'Ci+2 = Gi + 1

+ ( Pi + , " C J<

ako za C.+1 u prethodnom izrazu uvrstimo izraz (8.1), dobivamo:

Odnosno za stupanj i + 3:

C = G + (P. • (G. + (P. • C))) i+2 i+l i+l i v i

(8.2)

(8.3)

Ci.3 = Gi+2 + * C

i+2>-/

Ci+3 = Gi+2 + (PM-(Gi+1 + (Pi+,-(Gi + (P,.Ci))))) = G. , + (R , • G. .) + (R , • P. , • G,) + № • P. , • P. • C.) (8.4)

Nastavljanjem prethodno navedenog postupka može se izraziti i C ^ - bit prijenosa iz naj-značajnijeg stupnja paralelnog zbrajala n -1 (C^ = Cn) kao suma produkata logičkih funk-cija P i G.

Na primjer, za 4-bitno paralelno zbrajalo s predviđanjem bita prijenosa imamo: C, = G0 + (P0-C0) (8.5);

C2 = G, + (P, • C,) = G, + (P, • (G0 + (P0 • Q ) ) = G, + (P, • G„) + (P, • P0 • Q (8.6) I CJ = GJ + (P2.G1) + (P2.P1-Gfl) + (P2-P |.P0-C0) (8.7)

C4 = Cout = G3 + (P3.G2) + (P3.P2-G l) + (P3.P2.P l-G0) + (P3.P2.P1.P0.C0) (8.8) |

Slika 8.17 prikazuje sklop za predviđanje bita prijenosa za 4-bitno paralelno zbrajala Izlazi iz sklopa jesu bitovi prijenosa C1 do C4= C^. Što smo dobili? Sklop za predviđanje bi-tova prijenosa je dvorazinski logički sklop (jedna razina logički sklop I, druga razina logički sklop ILI). Kašnjenje 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 td + t f gdje je td kašnjenje logičkog sklopa, a tf 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 logičkih izraza za bitove prijenosa (8.5) - (8.8) vidimo da su

Page 236: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 231

na samom početku izvođenja operacije raspoložive sve varijable, naime P, i G.; i = 0, 1, 2,... generiraju se samo na temelju bitova operanada, a početna vrijednost bita prijenosa C0 unaprijed je određena.

P3 P2 P, po G, G0 C0

P3 P2 P, P0 G3 G2 G, G0 C0

P P P P C 3 2 1 0 0

P P P G 3 2 10

PPG 3 2 1

p3G2

P P P c 2 1 0 0

PPG ^ 2 10 FZ

P P c

P,G0

PoC0

SI. 8.17 Sklop za predviđanje bita prijenosa za četverobitno paralelno zbrajalo

4 out

Page 237: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

232 8. POGLAVLJE: ARITMETIČKO-LOGIČKA JEDINICA

Slika 8.18 prikazuje izvedbu četverobitnog paralelnog zbrajala sa sklopom za predviđanje bita prijenosa.

a 3 b 3 a 2 b 2 a ! b 1 a 0 b 0

SI. 8.18 Izvedba četverobitnog paralelnog zbrajala sa sklopom za predviđanje bita prijenosa

8.3.7 MNOŽENJE

U usporedbi sa zbrajanjem i oduzimanjem, množenje dvaju binarnih brojeva složenija je operacija koja zahtijeva kompleksnije sklopove. Različiti se algoritmi množenja rabe u računalima. U ovom ćemo potpoglavlju razmotriti prvo jednostavniji slučaj množenja dvaju nepredznačenih (engl. unsigned) brojeva. Pod nepreznačenim binarnim brojem po-drazumijevamo cjelobrojne pozitivne binarne brojeve. Nakon toga, objasnit ćemo postupak množenja brojeva u notaciji potpunog ili dvojnog komplementa koji je najrasprostranjeniji postupak množenja.

8.3.7.1. M N O Ž E N J E N E P R E D Z N A Č E N I H BROJEVA

Već smo u poglavlju 2. spomenuli da se množenje može izvesti uzastopnim operacijama zbrajanja i posmaka. Razmotrimo to podrobnije. Postupak množenja dvaju n-bitnih ne-predznačenih binarnih brojeva ručno na papiru, postupkom "olovka i papir" (engl. pend andpaper) predstavlja osnovnu podlogu za izvedbu množenja u računalu. Postupak, ana-logno ručnom postupku množenja dekadskih brojeva, možemo opisati na sljedeći način: Ispituju se bitovi množitelja (multiplikatora) započevši od najmanje značajnog bita. Ako je trenutno promatrani bit množitelja jednak 1, onda se množenik(multiplikand) prepisuje« predstavlja parcijalni produkt (jedinica množitelja množi se množenikom i daje množenic npr. 1101x1=1101). Ako je promatrani bit jednak 0, onda se zapisuje n nula (parcijalni produkt je 0000, za slučaj 4-bitnog broja; 1101 x 0 = 0000). Nakon toga se ispituje sljeded bit množitelja, međutim, sada prepisujemo množenik (ili nule) tj. parcijalni produkt, zapo-čevši na poziciji koje je jedno mjesto ulijevo u odnosu na prethodni zapis. Postupak ponav-ljamo sve dok nisu svi bitovi množitelja skenirani. Kada su svi parcijalni produkti oblikovani oni se zbrajaju i daju rezultat množenja.

Page 238: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 233

Primjer 8.6.

Želimo izračunati umnožak dvaju nepredznačenih 4-bitnih brojeva: 1100 x 1101, pri čemu je 1100 množenik (multiplikand), a 1101 množitelj (multiplikator).

12 (10)

X1 3(10)

1. korak: najmanje značajan bit množitelja je 1, prepisuje se množenik

2. korak: drugi bit množitelja je 0, upisuje se 0000 s posrnakom ulijevo

3. korak: treći bit množitelja je 1, prepisuje se množenik s posmakom ulijevo

4. korak: četvrti bit množitelja je 1, prepisuje se množenik s posmakom ulijevo 5. korak: zbrajamo parcijalne produkte (rezultat: 156(10))

Opisani postupak množenja nije podesan za izravnu realizaciju u računalu jer zahtijeva po-hranjivanje parcijalnih produkata i nakon toga njihovo zbrajanje. Uz male preinake opisani postupak postaje podesan za implementaciju u računalu. Preinačeni se postupak može opisati sljedećim algoritmom:

1. korak: postavi brojilo na vrijednost n (broj binarnih znamenki nepredznačenih brojeva); 2. korak: sadržaj registara parcijalnih produkta duljine 2n bita postavi inicijalno u 0; 3. korak: ispitaj krajnji desni bit množitelja (inicijalno je to najmanje značajan bit). Ako

je on jednak 1, onda pribroji množenik najznačajnijim n bitovima registra parcijalnih produkata;

4. korak: posmakni sadržaj registara parcijalnih produkata udesno za jedno mjesto; 5. korak: posmakni množitelj zajedno mjesto udesno; 6. korak: umanji brojilo za 1 i ako nije jednako 0, izvrši ponovo korake 3.-6. Ako je brojilo

jednako 0, onda je u registru parcijalnih produkata rezultat množenja.

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:

1100

x1101 1100

0000 1100

1100

10011100

0 0 0 0 0 0 0 0

3. korak: krajnji desni bit množitelja 1101 je 1; pribrajamo množenik sadržaju registra parcijalnih produkata na n značajnijih mjesta:

1 1 0 0 0 0 0 0

4. korak: posmičemo sadržaj registara parcijalnih produkata zajedno mjesto udesno:

0 i 1 0 0 0 0 0

5. korak: posmičemo množitelj za jedno mjesto udesno i dobivamo: 0110

6. korak: sadržaj brojila umanjujemo za 1: n = 3. Budući da je n različito od 0 vraćamo se na korak 3.

Page 239: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

234 8. POGLAVLJE: ARITMETIČKO-LOGIČKA JEDINICA

3. korak: krajnji desni bit (sada već posmaknutog) množitelja 0110 je 0;

4. korak: posmičemo sadržaj registara parcijalnih produkata zajedno mjesto udesno:

0 0 1 1 0 0 0 0

5. korak: posmičemo množitelj zajedno mjesto udesno i dobivamo: 0011

6. korak: sadržaj brojila umanjujemo za 1: n - 2. Budući da je n različito od 0 vraćamo se na korak 3;

3. korak: krajnje desni bit množitelja 0011 je 1; pribrajamo množenik sadržaju registra parcijalnih produkata na n značajnijih mjesta:

0 0 1 1 0 0 0 0

1 1 0 0

Dobivamo:

1 1 1 1 0 0 0 0

4. korak: posmičemo sadržaj registara parcijalnih produkata zajedno mjesto udesno:

0 1 1 1 1 0 0 0

5. korak: posmičemo množitelj zajedno mjesto udesno i dobivamo: 0001

6. korak: sadržaj brojila umanjujemo za 1: n - 1. Budući da je n različito od 0 vraćamo se na korak 3;

3. korak: krajnji desni bit množitelja je 1; pribrajamo množenik sadržaju registra parcijal-nih produkata na n značajnijih mjesta:

0 1 1 1 1 0 0 0

1 1 0 0

Dobivamo: 0 1 1 1 1 0 0 0 1 1 0 0

1 0 0 1 1 1 0 0 0

4. korak: posmičemo sadržaj registara parcijalnih produkata za jedno mjesto udesno:

1 0 0 1 1 1 0 0

5. korak: posmičemo množitelj zajedno mjesto udesno i dobivamo: 0000

6. korak: sadržaj brojila umanjujemo za 1: n = 0. U registru parcijalnih produkata nalazi se rezultat: 10011100= 156{10)

Page 240: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 235

8.3.7.2. MNOŽENJE BROJEVA PREDOČENIH U NOTACIJI D V O J N O G K O M P L E M E N T A

Do sada opisani postupci množenja vrijede samo za nepredznačene brojeve. Množenje brojeva s predznakom (engl. signednumber) može se izvesti tako da se oba operanda pre-tvore u pozitivne brojeve, pomnože i onda, ako je to potrebno, preoblikuju tako da pro-dukt ima odgovarajući predznak.

Kad su brojevi predočeni u notaciji dvojnog komplementa, množenje zahtijeva dodatni korekcijski korak, i to ako:

• je množitelj Y negativan (korekcijski faktor je dvojni komplement množenika X po-množen s 2n),

• je množenik X negativan (korekcijski faktor je dvojni komplement množitelja Y po-množen s 2n),

• su i množenik X i množitelj Y negativni (korekcijski faktori su tada 2n X i 2nY).

Primjer 8.8. Dva su 5-bitna binarna broja 01111 i 10011 predočena u notaciji dvojnog komplementa:

X = 01111 = + 15{10) i Y = 10011 = -13(10)

Izračunajmo produkt X x Y: 01111 X 10011 Y (izražen u dvojnom komplementu) 01111 Prvi parcijalni produkt

01111 Drugi parcijalni produkt 00000 Treći parcijalni produkt

00000 Četvrti parcijalni produkt 01111 Peti parcijalni produkt

0100011101 Netočan rezultat

Dobili smo netočan rezultat koji zahtijeva korekciju. Iznos korekcije za naš slučaj (negati-van je množitelj) je dvojni komplement množenika X pomnožen s 2n.

Dvojni komplement množenika je 10001. Podsjetimo se množenje s 2ft znači posmak broja za n = 5 mjesta ulijevo. Korekcijski faktor je: 1000100000.

Korigirajmo netočan rezultat: 0100011101 Netočan rezultat 1000100000 Korekcijski faktor 1100111101 Rezultat

Rezultat je 1 1 0 0 1 1 1 1 0 1 = -195 (točno!)

8.3.7.3. BOOTHOV ALGORITAM

A. D. Booth je 1951. predložio algoritam za množenje binarnih brojeva predočenih u nota-ciji dvojnog komplementa. Algoritam vrijedi za slučaj dva pozitivna broja, za slučaj kada je jedan od njih negativan i kada su oba negativna. Osim toga, algoritam ubrzava postupak množenja (u odnosu na "klasičan" pristup), ne zahtijeva korekciju i podesan je za sklopov-

Page 241: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

236 8. POGLAVLJE: ARITMETIČKO-LOGIČKA JEDINICA

sku implementaciju. Slika 8.19 prikazuje dijagram toka za Boothov algoritam. Na temelju slike 8.19 opišimo algoritam. Inicijaliziraju se registri: n-bitni registar A postavlja se u 0, u n-bitni registar M smješta se množenik (multiplikand), a u n-bitni registar Q množitelj (multiplikator). Registar Q modificiran je tako da je njegovom najmanje značajnom bitu Q0

(krajnje desnom) pridodan još jedan bistabil koji odgovara poziciji Q r Inicijalno Q^ postav-ljenje u 0. Brojilo C inicijalno je postavljeno na n (broj bitova operanda). Rezultat množenja (duljine 2n) pojavit će se u registarskoj kaskadi A-Q.Tijekom izvođenja ispituju se bitovi i Q . Ako su vrijednosti tih dvaju bitova jednake 0-0 ili 1-1, tada se bitovi kaskade sastav-ljene od A-CJ-Oj posmiču zajedno mjesto udesno. Treba pripaziti, posmakje aritmetički, što znači da se sadržaj posmiče tako da se bit predznaka (A^) posmiče na poziciju A ^ ali ostaje sačuvan i na poziciji A (vidi 3.poglavlje). Slika 8.20 ilustrira aritmetički posmak udesno u kaskadi A-Q-Q

f početak )

Sf. 8.19 Dijagram toka za Boothov algoritam

Page 242: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 237

A , registar A Ao Q n 1

registar Q Qc i Q.i 1 1 0 0 0 ' 1 0 0 • 0 1 0 0 0 0 0 1 — • 0

a)

A , n-1

registar A A0 Q n - 1

registar Q Qo i Q, 1 1 1 0 0 ( ) 1 0 — • 0 0 1 0 0 0 0 0 • 1

b)

SI. 8.20 Aritmetički posmak udesno u kaskadi A-Q-Q, a) prije aritmetičkog posmaka udesno, b) poslije aritmetičkog posmaka udesno

Ako se ispitane vrijednosti bitova Q0 i Q } međusobno razlikuju, onda se množenik pribraja (kombinacija: Q0 Q = 01) sadržaju registra A ili oduzima (kombinacija: Q0 Q^ = 10) od A. Nakon toga se sadržaj kaskade A-Q-Q^ posmiče aritmetičkim posmakom udesno za jedno mjesto.

Nakon aritmetičkog posmaka (za bilo koju od kombinacija 0-0,1-1,0-1 ili 1-0) umanjuje se za 1 sadržaj brojila C. Ako C nije jednako 0, nastavlja se postupak ispitivanja bitova Q0 i Q r

Kad brojilo C postane 0, postupak završava i rezultat množenja nalazi se u registarskoj ka-skadi A-Q.

Zahvaljujući ispitivanju dvaju susjednih bitova i slijedu nula ili slijedu jedinica u množitelju, ubrzava se množenje (izvodi se samo operacija aritmetičkog posmaka međurezultata).

Primjer 8.9.

Ilustrirajmo Boothov algoritam za množenje dvaju 5-bitnih binarnih brojeva iz Primjera 8.8:01111 i 10011 predočena u notaciji dvojnog komplementa: X = 01111 = + 15(10) i Y = 10011 =-13{10)

Izvođenje Boothova algoritma prikazat ćemo tablicom 8.7.

A G c Komentar

00000 10011 0 5 Inicijalizacija

10001 10011 0 5 Q0Q, = 10 A«- A-M;

M = 01111 (+15)

11000 11001 1 4 Aritmetički posmak udesno

11100 01100 1 3 Q0Q-, = 1 1

Aritmetički posmak udesno

01011 01100 1 A«- A + M

00101 10110 0 2 Aritmetički posmak udesno

00010 11011 0 1 0,0., = 00 Aritmetički posmak udesno

Page 243: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

238 8. POGLAVLJE: ARITMETIČKO-LOGIČKA JEDINICA

A Q Q, c Komentar

10011 11011 0 Q o Q - i = 1 ° A < - A - M

11001 11101 1 0 Aritmetički

posmak udesno

1100111101 Rezultat (-195)

Tablica 8.7. Izvođenje Boothovog algoritma (X = 01111; Y = 10011)

Slika 8.21 prikazuje blok-shemu množila temeljenog na Boothovom algoritamu. Kružićima su označene upravljačke točke u koje se dovode upravljački signali C. Na primjer, C0 • C1

= 1 pobudit će aritmetički posmak udesno kaskade A-Q-Q }t dok će C6 • C7 = 1 proslijediti rezultat množenja.

SI. 8.21 Blok-shema množila temeljenog na Boothovom algoritmu

Page 244: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 239

Za ubrzanje množenja u računalima koriste se posebne izvedbe množila kao što su: • množilo sastavljeno od polja potpunih zbrajala; • množila temeljena na tablici preslikavanja (engl. look-up table); • množila s brzim posmačnim sklopovima; • množila sastavljena od zbrajala s očuvanjem bita prijenosa (engl. carry save adder)

koja su povezana u kaskadu.

p p / p p p p 7 r6 J 5 4 r3 2

SI. 8.22 Množilo sastavljeno od polja potpunih zbrajala

Objasnimo kako se dobiva struktura brzog množila koje je sastavljeno od dvodimenzional-nog polja potpunih zbrajala. Zanimljivo je da je jednostavno dobivamo na temelju osnov-nog pravila za množenje dvaju n-bitnih nepredznačenih binarnih brojeva ručnim putem tehnikom "olovka i papir" (engl. pencil andpaper). Neka su množenikX = x3x2 x1 x0 i množi-telj Y = y3 y2 y1 y0, njihov produkt je (vidi Primjer 8.6.):

x3

x2

x , X o

x y 3 y2 y, y0

x3y0

x2y0

x,y0 V o 1. parcijalni produkt x

3y, x2y, x,y, V i 2. parcijalni produkt

x3y2

x2y2

x,y2 x0y2

3. parcijalni produkt x3y3 x2y3

x,y3 x0y3

4. parcijalni produkt P P

6 5 p4 p 3

p2 p, Po rezultat

Page 245: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

240 8. POGLAVLJE: ARITMETIČKO-LOGIČKA JEDINICA

Produkti pojedinih binarnih znamenaka x. y. zapravo predstavljaju logičku funkciju I: x • y .

Budući da su nam svi bitovi obaju operanada raspoloživi, sve produkte binarnih znamena-ka možemo istodobno dobiti pomoću dvodimenzionalnog polja dvoulaznih logičkih sklo-pova I (slika 8.23). Izlazi iz logičkih sklopova I dovode se na odgovarajuće ulaze potpunih zbrajala u skladu s postupkom računanja sume parcijalnih produkata. Tako se, na primjer, najmanje značajan bit rezultata dobiva izravno kao izlaz iz logičkog sklopa I koji "računa"x0-y0. Vrijednost P1 dobiva se kao: (x1 -y0) + (x0 • + 0; gdje + označava operaciju zbrajanja itd.

SI. 8.23 Dvodimenzionalno polje logičkih sklopova I koje istodobno generira n2 produkata binarnih znamenaka

Slika 8.22 prikazuje 4-bitno množilo za nepredznačene binarne brojeve koje je sastavljeno od polja potpunih zbrajala. Uočavamo pravilnu strukturu sastavljenu od potpunih zbrajala i logičkih sklopova I. Takva uniformna struktura množila podesna je za izvedbu u tehnolo-giji 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 sličan je postupku koji se provodi u dekadskom sustavu: naj-prije se pokuša "ide" li djelitelj u isti toliki broj najznačajnijih bitova djeljenika. Ako ne "ide", spušta se sljedeća znamenka djeljenika itd. Binarno je dijeljenje jednostavnije nego što je to dekadsko, zato što su znamenke kvocijenta Q nule i jedinice pa nije potrebno procjenji-vanje koliko puta "ide"djelitelj u djeljenik ili u djelomični ostatak.

Page 246: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 241

Primjer 8.10.

Neka je djeljenik D nepredznačeni binarni broj D = 1111101 i neka je djelitelj V također nepredznačeni binarni broj 101.

Dijeljenje metodom "olovka i papir" izvodi se na sljedeći način: 1111101:101 = 11001

- 1 0 1

0101 >101

000 101

- 1 0 1

000

Iz postupka vidimo da se dijeljenje svodi na uzastopno uspoređivanje djeljenika ili dje-lomičnog ostatka s djeliteljem, oduzimanja djelitelja od djelomičnih ostataka te posma-ka djelitelja. Oduzimanje se može zamijeniti zbrajanjem dvojnog komplementa djelitelja (V+ 1).

Kvocijent Q se računa bit po bit u vremenu. U svakom se koraku /, djelitelj V posmiče ude-sno i ima vrijednost 2 V te se uspoređuje s djelomičnim ostatkom R.. Bit kvocijenta q. po-stavlja se na 1 ako je 2 V manje ili jednako R: Novi se djelomični ostatak Rj+1 dobiva kao:

R. , <- R - q 2 V. 1+1 \ M Metoda dijeljenja nepredznačenih binarnih brojeva "olovka i papir", s malim se preinakama može, kao što je to bio slučaj i kod množenja, implementirati u računalu. Modifikacija se sastoji od posmicanja djelomičnog ostatka ulijevo od djelitelja. U tom se slučaju novi dje-lomični ostatak dobiva kao:

R , <-2R.-q.V r+1 I M Slika 8.24 prikazuje dijagram toka postupka dijeljenja nepredznačenih brojeva koji je pri-kladan za strojnu izvedbu. Djelitelj je smješten u registar M, a djeljenik u registar Q. U sva-kom se koraku kaskada registara A-Q posmiče ulijevo za jedno mjesto. M se oduzima od A da bi se utvrdilo "ide" li A u djelomični ostatak. Ako "ide" tada se najmanje značajan bit registra Q, tj. bit Q0 postavlja u 1. Inače, Q0 je nula i M se mora pridodati natrag sadržaju registra A da bi obnovio prijašnju 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 djelomičnog ostatka (engl. restoring division) jer se odluka o tome "ide" li djelitelj ili "ne ide" u djeljenik, odnosno djelomični ostatak ne donosi unaprijed, već se zasniva na vrijednosti njihove ra-zlike. Ako je razlika između djelomičnog ostatka i djelitelja negativna, tada treba djelomič-ni ostatak obnoviti ponovnim pribrajanjem djelitelja.

Malom se preinakom postupka dijeljenja obnavljanjem - uklanjanjem koraka obnavljanja djelomičnog ostatka i dopuštanjem da djelomični ostatak bude negativan dobiva algori-tam dijeljenja bez obnavljanja. U tom se slučaju korak obnavljanja R.«- R. + V i sljedeći korak oduzimanja Rj+1 2R.-Vstapaju ujedan korakRj+1 2R. +V.

Page 247: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

242 8. POGLAVLJE: ARITMETIČKO-LOGIČKA JEDINICA

SI. 8.24 Dijagram toka za dijeljenje nepredznačenih binarnih brojeva

Slika 8.25 prikazuje blok-shemu sklopovske izvedbe djelila koja je slična onoj za Boothovo množilo. U registru M pohranjuje se djelitelj. Registri A i Q prvo se upotrebljavaju za po-četno pohranjivanje djeljenika (duljine 2n), a zatim se A i Q koriste za pohranjivanje dje-lomičnog ostatka. A i Q posmiču se ulijevo, a u najmanje značajno 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.

Page 248: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 243

C,

SI. 8.25 Blok-shema djelila

Prethodno opisani postupak može se uz dodatne preinake upotrijebiti i za dijeljenje nega-tivnih binarnih brojeva predočenih u dvojnom komplementu:

1. korak: djelitelj se smješta u registar M, a djeljenik u A-Q registar. Djeljenik (ako je nega-tivan) mora biti izražen 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, inače A <- A + M; 4. korak: potonja se operacija smatra uspješnom ako je predznak rezultata operacije jed-

nak predznaku podatka u A prije operacije: • ako je operacija uspješna ili ako su (A = 0 AND Q = 0), postavi Q0 u jedan; • ako je operacija neuspješna i (A * 0 OR Q * 0), onda postavi Q0 u nulu i obnovi prijaš-

nju 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, inače je ispravan kvocijent dvojni komplement sadržaja regi-stra Q.

Page 249: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

Primjer 8.11.

Prikažimo postupak dijeljenja (tablica 8.8.) dvaju binarnih brojeva predočenih u notaciji dvojnog komplementa. Djeljenik je 4-bitni broj 0111= 7(10) a djelitelj je također 4-bitni broj 1101 = -3....

A Q Komentar

0000 0111 Inicijalizacija; M = 1101 - djelitelj; djeljenik je u notaciji dvojnog komplementa smješten u A-Q

0000 1110 Posmakni A-Q ulijevo;

1101 1110 Predznaci A i M su različiti; izvedi operaciju A A + IVI

0000 1110 Operacija iz prethodnog koraka je neuspješna, predznak A se promijenio - postavljamo Q0 u 0 i obnavljamo sadržaj A

0001 1100 Posmakni A-Q ulijevo

1110 1100 Predznaci A i M su različiti; izvedi operaciju A A + M

0001 1100 Operacija iz prethodnog koraka je neuspješna, predznak A se promijenio - postavljamo Q0 u 0 i obnavljamo sadržaj A

0011 1000 Posmakni A-Q ulijevo

0000 1000 Predznaci A i M su različiti; izvedi operaciju A «- A + M

0000 1001 Operacija iz prethodnog koraka je uspješna, predznak A nije se promijenio - postavljamo Q0 u 1

0001 0010 Posmakni A-Q ulijevo

1110 0010 Predznaci A i M su različiti; izvedi operaciju A A + M

0001 0010 Operacija iz prethodnog koraka je neuspješna, predznak A se promijenio - postavljamo Q0 u 0 i obnavljamo sadržaj A

Tablica 8.8. Postupak dijeljenja dvaju binarnih brojeva predočenih u notaciji dvojnog komplementa

Predznaci djeljenika i djelitelja su različiti pa je stoga ispravan rezultat potpuni komple-ment sadržaja registra Q,tj. 1110 (-2 (dekadno)) a ostatak je 1.

Vidimo da se postupak dijeljenja, iako je složeniji od postupka množenja, temelji na istim općim načelima. Postupak dijeljenja može se također ubrzati uporabom tzv. brzih djelila koja koriste brza zbrajala, oduzimala i brze sklopove za posmak. Brza djelila mogu se, poput brzih množila, izvesti kombinacijskim sklopovima organiziranim u dvodimenzio-nalna 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: logičkim po-smakom ulijevo, logičkim posmakom udesno, aritmetičkim posmakom udesno, kružnim posmakom ulijevo ili udesno. Slike 8.26 a) - e) podsjećaju nas na navedene operacije (zbog jednostavnosti smo operacije posmaka ilustrirali s 8-bitnim operandima; slike označene s ij

Page 250: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. R1BARIČ - GRAĐA RAČUNALA 245

pokazuju stanje registara neposredno prije, a one s ii) stanje neposredno nakon posmaka). Na slikama vidimo da smo u operacije posmaka uključili i jedan bistabil (zastavicu prije-nosa C {engl. carry) statusnog registra), međutim, nije nužno njezino sudjelovanje u tim operacijama (posebno u slučaju kružnog posmaka).

zastavica

C b7 b0

1 1 0 0 0 0 0 1

1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 ii)

a)

b7 b0 C 1 1 0 0 0 0 0 1

b7 i)

b0

0 1 1 0 0 0 0 0 ii)

b)

c)

c b7 bo

0 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 i)

c b7 bo 1 1 0 0 0 0 0 1 0 «-I 1 1 0 0 0 0 0 1 0 «-I

ii)

d)

c b7 bo

0 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 i)

c b7 b0

1 0 1 1 0 0 0 0 0 1 w 0 1 1 0 0 0 0 0 ii)

e)

SI. 8.26 Logički posmak, aritmetički posmak udesno i kružni posmak a) logički posmak ulijevo, b) logički posmak udesno, c) aritmetički posmak udesno, d) kružni posmak ulijevo, e) kružni posmak udesno

Page 251: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

246 8. POGLAVLJE: AR1TMETIČKO-LOGICKA JEDINICA

Već znamo da posmicanje /i-bitno nepredznačenog broja x za k mjesta ulijevo odgova-ra množenju njegove vrijednost s 2k, što daje vrijednost 2kx uz pretpostavku se ta nova vrijednost dade predstaviti s k bita. Zanimljivo je da slično vrijedi i za posmicanje ulijevo predočenih i brojeva predočenih dvojnim komplementom uz uvjet da n-bitni broj ima k +1 znamenke jednake na značajnijim mjestima.

Potrebno je obratiti pažnju na to daje logičko posmicanje nepredznačenih brojeva i bro-jeva u notaciji dvojnog komplementa udesno različito. Posmicanje nepredznačenog broja udesno za k mjesta znači dijeljenje njegove vrijednost s 2k. Logičko posmicanje udesno broja u notaciji dvojnog komplementa ne funkcionira jer će negativni broj promijeniti predznak zato što će se na njegovim značajnijim mjestima pojaviti nule. Aritmetički po-smak udesno rješava problem - očuvanjem bita predznaka dobiva se prava vrijednost -prvotna vrijednost broja podijeljena s 2k.

Primjer 8.12.

Ilustrirajmo kako logički posmaci utječu na dobiveni rezultat ako su brojevi predočeni kao nepredznačeni i kao brojevi predznak-apsolutna vrijednost te kao brojevi u dvoj-nom komplementu (slika 8.27).

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

a)

0 0 1 0 0 1 1 1

c)

0 0 1 0 0 1 1 1

b) d)

b„

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

e)

b0

0 0 1 0 0 1 1 1

f)

g)

1 1 1 0 0 1 1 1

SI. 8.27 Operacija posmaka nepredznačenih i predznak-apsolutna vrijednost brojeva a) nepredznačeni broj: v(x) = 15710, b) logički 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

(pogrešan rezultat), e) dvojni komplement: v(x) = -99(0, f) posmak udesno za k = 2 mjesta: v(x) = +3910 (pogrešan rezultat), g) dvojni komplement: v(x) = -9910, h) aritmetički posmak udesno za k = 2 mjesta: v(x) = -2510

Iz primjera posmaka vidimo i to da operacija posmaka uključuje preuređenje svih bitov? u riječi koja se posmiče. Iz toga slijedi da će izvedba sklopova za posmak (nazivat ćemo ga posmačnisklop) biti nešto složenija od sklopova za zbrajanje ili oduzimanje.

Page 252: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 247

Posmačni sklop (engl shifter) osnovna je sastavnica na putu podataka koja sudjeluje u lo-gičkim operacijama, ali i u aritmetičkim operacijama (množenje, dijeljenje) i njegova brzina izravno utječe na performansu procesora. Posmačni sklopovi mogu se izvesti dvojako:

i) kao sekvencijalni digitalni sklopovi - dvosmjerni posmačni registri (posmak ulijevo, posmak udesno) s paralelnim ulazom;

ii) kao kombinacijski sklopovi;

Izvedbe posmačnog sklopa na temelju posmačnog registra u načelu se kod računala izbje-gavaju zbog male brzine. Naime, za posmak ulijevo ili udesno za svako pojedino bitovno mjesto zahtijeva se jedna perioda signala vremenskog vođenja.

Pri izvedbi posmačnog sklopa, kao kritične komponente na putu podataka u procesoru, prednost se daje kombinacijskim sklopovima kod kojih je vrijeme trajanja operacije po-smaka neovisno o iznosu posmaka (zajedno ili više bitovnih mjesta).

Slika 8.28 prikazuje izvedbu 4-bitnog posmačnog sklopa koji se zasniva na multipleksoru kao kombinacijskoj građevnoj komponenti. Prema stanju upravljačkih ulaza multipleksora H0 - H2 određuje se posmak ulaznog 4-bitnog podataka a3 - a0.Tablica 8.9. prikazuje stanja izlaza iz posmačnog sklopa ovisno o upravljačkim ulazima HQ - H2.

SI. 8.28 Izvedba posmačnog sklopa multipleksorima

Ako si predočimo multipleksor kao prekidač koji može, u našem slučaju, biti u jednom od osam položaja (slika 8.29), ovisno o vrijednosti upravljačkih ulaza H0 - H2 lako ćemo predstaviti način funkcioniranja sklopa. Naime, istodobno je jednak položaj svih četiriju "prekidača" i ulazni signali koji su priključeni upravo na te položaje prekidača prosljeđuju se na izlaz.

Page 253: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

248 8. POGLAVLJE: AR1TMETIČKO-LOGICKA JEDINICA

H2 1 Izlaz iz posmačnog sklopa

0 0 0 Nema posmaka: F3 = a3; F2 = a2; F1 = a,; F0 = a0

0 0 1 Posmak udesno za jedno mjesto

0 1 0 Posmak ulijevo za jedno mjesto

0 1 1 Posmak udesno za dva mjesta

1 0 0 Posmak ulijevo za dva mjesta

1 0 1 Posmak udesno za tri mjesta

1 1 0 Posmak ulijevo za tri mjesta

1 1 1 Fo-F3 = 0

Tablica 8.9. Djelovanje posmačnog sklopa ovisno o upravljačkim ulazima H0 - H2

1=0 1=0 1=0

O .2 6 6 O O .2 6 6 O O 2 6 6 o o 9 A3 i 4 .2 6 6 O

O o /

' izlaz F,

O / ^r izlaz

F,

o o o /

1 r izlaz F,

O / ^' izlaz

F„

O

SI. 8.29 Način djelovanja kombinacijskog posmačnog sklopa - položaj prekidača odgovara upravljačkoj kombinaciji H2 = 1, H1 = 1, H0 = 0 (posmak ulijevo za tri mjesta)

Slika 8.30 prikazuje načelnu izvedbu 32-bitnog posmačnog sklopa koji se temelji na muL tipleksoru koji ima 64 32-bitna ulaza ijedan 32-bitni izlaz. Osim toga, ima šest upravljačkih ulaza - pet za specifikaciju iznosa posmaka ijedan za određivanje smjera posmaka (ulijevo ili udesno). Ovako izvedeni sklop vrlo je složen, posebno ako se želi izvesti tako da podr-žava kružni i aritmetički posmak, te se zato koriste praktičnije izvedbe sklopa u više razina.

Primjer 8.13.

Procesor MC 68000 ima izveden posmačni sklop na temelju multipleksora, ali tako da podržava samo posmake za jedno bitovno mjesto (ulijevo i udesno) u jednoj periodi signala vremenskog vođenja. To je i osnovni razlog zašto su njegove strojne instrukcije posmaka i kružnog posmaka vremenski zahtjevne. One zahtijevaju 8 + 2k perioda si-gnala vremenskog vođenja, gdje je k iznos posmaka (broj bitovnih mjesta). Na primjer, kružni posmak udesno za 23 bitovna mjesta zahtijeva 54 periode signala vremenskog vođenja. Pažnja, umjesto kružnog posmaka udesno za 23 mjesta, možemo izvesti opera-ciju kružnog posmaka ulijevo za 9 mjesta i dobit ćemo jednak rezultat, ali u vremenu od 26 perioda, ušteda je pritom 28 perioda signala vremenskog vođenja.

Page 254: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 249,

32-bitni procesor MC 68020, nasljednik procesora MC 68000, koristi brzi sklop za po-smak ~ bačvasti posmačni sklop (engl. barrel shifter) koji operacije posmaka i kružnog posmaka obavlja u vremenu od 8 - 12 perioda signala vremenskog vođenja neovisno o iznosu posmaka k.

8.3.10 BAČVASTI POSMAČNI SKLOP

U arhitekturi 32- i 64-bitnih procesora nalazimo posebne posmačne sklopove koji se nazi-vaju bačvasti posmačni sklopovi. Njihova je osnovna značajka, kao što smo već spomenuli u Primjeru 8.13., da posmak obavljaju u jednako kratkom vremenu neovisno o iznosu po-smaka kf tj. broju bitovnih mjesta za koje se operand posmiče.

Slika 8.31 prikazuje jednostavnu strukturnu podlogu za izvedbu bačvastog posmačnog sklopa koja se temelji n a n x n prospojnoj matrici (engl. crossbar) sastavljenoj od n2 sklo-pova s tri stanja, n je duljina riječi (operanda) koja se posmiče. Podsjetimo se, sklop s tri stanja ponaša se kao sklopka koja ovisno o stanju upravljačkog ulaza "propušta" struju ili "ne propušta" (poglavlje 7. Sklopovska i mikroprogramska izvedba upravljačke jedinice).

Ulaz u posmačni sklop je operand - riječ duljine šest bita X = x5x4x3x2x1 x0 a izlaz također 6-bitna riječ Y = y5 y4 y3 y2 y, y0.Trobitnim upravljačkim ulazom S = s2 s1 s0 određuje se iznos posmaka. Zapravo, sklop prikazan na slici 8.31 predstavlja sklop za kružni posmak. Na pri-mjer, ako upravljački 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 kružnom posmaku X za dva mjesta udesno. Ako se, međutim, želi izvesti po-smačna jedinica koja će podržati i ostale operacije posmaka, onda se zahtijevaju dodatni ulazi koji će definirati vrijednost bitova na krajevima posmaknute riječi.

Slika 8.32 ilustrira kružni posmak.

Page 255: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

250 8. POGLAVLJE: AR1TMETIČKO-LOGICKA JEDINICA

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

iznos posmaka

upravljački ulaz S

x - ulaz y - izlaz

SI. 8.31 Crossbar izvedba sklopa za kružni posmak

X 5 X 4 X 3 X 2 X 1 x o

a) prije kružnog posmaka udesno za 2 mjesta

L+ X X o X 5 X 4 X 3 X 2

i i i i i i y 5 y „ y 3 y 2 y , y ,

b) nakon kružnog posmaka udesno za 2 mjesta

SI. 8.32 Ilustracija kružnog posmaka

Slika 8.33 prikazuje bačvasti posmačni sklop kao "crnu kutiju" koja podržava logički posa-mak ulijevo i udesno te kružni posmak ulijevo i udesno.

Page 256: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 251,

S. Si So

B<

a o a l a 2

C0 C ,

a n - 1 C 2

a n

a „ + l a n + 2 C n-1

a2 n - 1

SI. 8.33 Bačvasti posmačni sklop kao "crna kutija"

"Crna kutija" ima dva n-bitna ulaza za podatke: A = an} 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 upravljački ulaz S = S S.t... S0. Upravljački ulaz S određuje iznos posmaka OsSsn.Točnije, vrijednostSdefinira broj bitova ulaza B koji će se pojaviti na izlazu C ulančan s dijelom bitova ulaza A. Na primjer, ako je S = 0, tada se na izlazu C pojavljuje slijed bitova jednak slijedu na ulazu A:

c t c , ...c, c =a ,a a, an n-t n-2 1 0 n-1 n-2 1 0.

Za S = k\ 0 < k <; n dobiva se (slika 8.34): Cn-1 Cn-2 C 1 C 0 ~~ an-1+k 3 n-2+k ' " 3 1 + k 3 0 + k

što znači da ulaz B doprinosi izlazu C svojim k najmanje značajnim bitovima (koji su u izlazu C smješteni na k najznačajnijih bitovnih pozicija).

ulaz B ulaz A

a_ , 3 . _ . . . a _a , a a , a _a _ . . . a ^ d . a . a , . 2n-l 2n-2 n+2 n+1 n n-1 n-2 n-3 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 bačvastog posmačnog 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 slučaju izlaz C za neku vrijednost S = k 0<k<n poprima oblik:

c ,c , ... c c = a., a., a.,... a„ a ,a _... a, n-1 n-2 1 0 k-1 k-2 k-3 0 n-1 n-2 k

što odgovara kružnom posmaku udesno za k binarnih mjesta (slika 8.35), odnosno kruž-nom posmaku ulijevo za n - k.

Page 257: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

252 8. POGLAVLJE: AR1TMETIČKO-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 logičkom posmaku udesno za k mjesta. Ako postavimo na ulaz A sve nule, a na ulazu B imamo operand an l a^.. . a1 a0 i izaberemo S = k, dobit ćemo:

ak l... a2a,a000... 0,

što odgovara logičkom posmaku za n - k mjesta ulijevo. Relativno jednostavnim preinakama bačvasti posmačni sklop podržat će i aritmetički po-smak udesno.

ulazB ulaz A

a , . . . a . a . a . a - a , a , . . . a , a _ a 1 a n n-1 3 2 1 0 n-1 n-2 3 2 1 0

izlaz C, za k=3 SI. 8.35 Kružni posmak udesno za k = 3

8.4. ARITMETIČKE OPERACIJE BROJEVIMA S POMIČNIM ZAREZOM Zanimljivo je da su aritmetičke operacije zbrajanja i oduzimanja bj&jeva s pomičnim zare-zom složenije od operacija množenja i dijeljenja. Razlog tomu je što se kod množenja i dije-ljenja brojeva s pomičnim zarezom operacije s eksponentom i mantisom izvode potpuno odvojeno i neovisno. No pri zbrajanju i oduzimanju brojeva s pomičnim zarezom obavezne su dodatne operacije poravnavanja opera nada i normalizacije rezultata što zahtijeva inte-rakciju između eksponenta i mantise.

Primjer 8.14.

Ilustrirajmo zbrajanje dvaju brojeva s pomičnim zarezom X = (-1 )S1 x 2E1 x 1 .F1 i Y = (-1 )S2 x 2U 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 = - 22 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 ekspo-nenti moraju biti jednaki. Poravnanje se izvodi tako da se mantisa broja s manjom vrijed-nošću eksponenta (-1.110 x 2~2) posmiče udesno (dijeli s dva), a istodobno se povećava vrijednost njegova eksponenta sve dok eksponenti obaju brojeva ne postanu jednaki:

1.000 x2"* + (-0.111) x 2 1

Page 258: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 253,

Sada kad su eksponenti jednaki možemo mantise zbrojiti: 1.000 X * 1

+ (-0.111) x2° 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 suviškom 127, onda nema ni preljeva ni podljeva jer je 127 -126.

U sljedećem bi koraku trebali zaokružiti normalizirani rezultat. No budući da je rezul-tat predočen točno sa četiri znamenke, nema potrebe za zaokruživanjem. Ako je do-biveni rezultat izražen većim brojem binarnih znamenaka od broja predviđenih zna-menaka za predočenje rezultata (u našem slučaju je to 4), potrebno je "odsjeći" bitove rezultata i zadnju znamenku rezultata zaokružiti. Postoje različite tehnike zaokru^anja, npr. zaokruživanje najbližem broju, zaokruživanje odsijecanjem i pozitivno usmjereno zaokruživanje.

Provjerimo jesmo li dobili točan 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 pomičnim zarezom možemo sažeti u sljedeće korake:

1. korak: Raspakiraj svaki od operanada na predznak, eksponent i razlomački dio. Obrati pozornost na posebnu vrstu operanada kao što su nula, beskonačno 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 razlomačke dijelove. Ako je riječ o operaciji oduzimanja i ako je S1 * S2, zbroji razlomačke dijelove. U drugim slučajevima oduzmi razlomačke dijelove.

5. korak: Normaliziraj dobiveni rezultat posmicanjem udesno ili ulijevo i istodobnim po-većavanjem (ili smanjivanjem) vrijednosti eksponenta Er. Provjeri je li se dogodio pod-ljev ili preljev vrijednosti eksponenta. Ako je, signaliziraj iznimku.

6. korak: Zaokruži mantisu na odgovarajući broj bitova.

Slika 8.36 prikazuje, u skladu s prethodno opisanih šest koraka, pojednostavljenu sklopov-sku izvedbu zbrajala (oduzimala) za brojeve s pomičnim zarezom.

Operacije množenja i dijeljenja brojeva s pomičnim zarezom ne razlikuju se mnogo od operacija brojeva s čvrstim binarnim zarezom. Množenje dvaju brojeva s pomičnim zare-zom izvodi se tako da se eksponenti dvaju operanada zbroje, a njihove mantise pomnože:

((-1 )S1 x2E1 x 1 .F,) ((-1 )S2x 2E2x 1 .F2) = ±2E1+E2(1 .F1 x 1 .F2).

Page 259: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

254 8. POGLAVLJE: AR1TMETIČKO-LOGICKA JEDINICA

operand X operand Y

raspakiravanje

predznaci eksponenti mantise

S1 S2

zbroji/od uzmi

upravljačka jedinica

E1 E2

F1 F2

MUX

V oduzimalo

zamjena mjesta & komplementiranje

+ / -

poravnavanje mantisa

V zbrajalo

normalizacija i zaokruživanje

i predznak eksponent mantisa

pakiranje

izlaz

SI. 8.36 Pojednostavljeni prikaz sklopovske izvedbe zbrajala (oduzimala) za brojeve s pomičnim zarezom

Primjer 8.15.

Prikažimo primjer množenja brojeva O.5(10) i - O.4375(10) koji su predočeni u notaciji broje-va s pomičnim 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 suviškom 127, onda je vrijednost eksponenta (-3) +127 = 124.

Page 260: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 255,

2. korak: Pomnožimo mantise: 1.000

x 1.110 0000

1000 1000

1000 1110000

Produkt je 1.110000 x 23, 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 znači da se nije dogodio ni preljev, ni podljev eksponenta.

4. korak: Zaokruživanje rezultata nije promijenilo rezultat ("odsjekli" smo tri najmanje značajne nule u prikazu rezultata).

5. korak: Budući da se predznaci operanda razlikuju, predznak rezultata je negativan. Dobivamo konačni rezultat: -1.110 x 23.

Provjerimo je li dobiveni rezultat točan: (0.5(10}) x (~ 0.4375(10)) = - 0.21875.

Pretvorimo dobiveni rezultat -1.110 x 2 3 u dekadski broj: -1.110 x 23 ^ - 0.00111 te dobivamo - (2* + 2A + 2 5 ) = - (0.125 + 0.0625 + 0.03125) = - 0.21875.

Dijeljenje brojeva s pomičnim zarezom slično je množenju i odvija se u skladu s izrazom:

((-1 )S1 x 2E1 x 1 .F,) /((-1 )S2 x 2E2 x 1 .F2) = ±2E1E2 (1 .F1 / 1 .F2).

Vidimo da se eksponenti oduzimaju, a mantise dijele kao i u slučaju brojeva predočenih čvrstim binarnim zarezom. I ovdje se rezultat dijeljenja mantisa mora normalizirati i zao-kružiti. 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 množenje i dijeljenje brojeva s pomičnim zarezom. Vidimo da je sklopovlje puno jednostavnije od onog za zbrajanje i oduzimanje brojeva s pomičnim zarezom.

Page 261: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

256 8. POGLAVLJE: AR1TMETIČKO-LOGICKA JEDINICA

operand X operand Y

raspakiravanje

predznaci eksponenti mantise

množenje/dijeljenje V + / -

upravljačka jedinica

" V + / -

množi ili dijeli

normalizacija i zaokruživanje

predznak eksponent mantisa

pakiranje

• izlaz

SI. 8.37 Pojednostavljeni prikaz sklopovske jedinice za množenje i dijeljenje brojeva s pomičnim zarezom

8.5. OBLIKOVANJE JEDNOSTAVNE ARITMETIČKO-LOGIČKE JEDINICE - ANALIZA SLUČAJA Aritmetičko-logička jedinica (ALU) je višefunkcijski digitalni sklop. Ona izvodi aritmetičke i logičke operacije, ali se vrlo često upotrebljava i za računanje efektivne memorijske adrese izvorišta operanada ili odredišta rezultata, posebice ako procesor ima veliki broj načina adresiranja, od kojih su neki vrlo složeni. U ovom ćemo se potpoglavlju upoznati prvo s jednim pristupom oblikovanju jednostavne aritmetičko-logičke jedinice, točnije njezinog dijela koji izravno podržava osnovne aritmetičke i logičke operacije, a nakon toga tim sklo-povima pridružiti posmačni sklop i sklopove za generiranje zastavica (Z, V, N i C).

Page 262: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 257

i _i

a)

7

b)

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

Jednostavnu aritmetičko-logičku jedinicu možemo promatrati kao sklop koji ima pravil-nu strukturu koja se sastoji od identičnih stupnjeva povezanih u kaskadu. Svaki je stupanj odgovoran za aritmetičke ili logičke operacije najednom bitu operanda.To znači da će se jednostavna aritmetičko-logička jedinica koja se koristi n-bitnim (cjelobrojnim) operan-dima sastojati od n takvih stupnjeva. Svaki se od njih u funkcijskom smislu može prikazati kao daje sastavljen od aritmetičke i logičke sekcije (slika 8.38 a)). Povezivanje stupnjeva u kaskadu ostvaruje se pomoću 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 upravljački ulazi koji se upotrebljavaju za izbor različitih aritmetičkih i logičkih operacija. Multipleksor na izlazu iz /-tog stupnja na te-melju stanja upravljačkog signala S2 prosljeđuje rezultat aritmetičke ili logičke operacije na izlaz Fr Podjela stupnja aritmetičko-logičke jedinice na aritmetičku i logičku sekciju samo je funkcionalna jer se pri oblikovanju jednostavne ALU koristi sljedeći pristup:

Page 263: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

258 8. POGLAVLJE: AR1TMETIČKO-LOGICKA JEDINICA

i) prvo se oblikuje sklopovlje aritmetičke sekcije neovisno o logičkoj sekciji; ii) zatim se određuju logičke operacije koje se mogu izvesti sklopovima iz aritmetičke

sekcije; iii) izvode se preinake na sklopovima da bi se mogle izvoditi sve željene logičke

operacije.

Zahvaljujući takvom pristupu oblikovanju ALU smanjuje se složenost i broj sklopova u sva-kom stupnju ALU.

8.5.1. ARITMETIČKA SEKCIJA

Osnovna građevna sastavnica aritmetičke sekcije jednog stupnja ALU je potpuno zbrajalo. Povezivanjem n stupnjeva ALU jedinice u kaskadu dobiva se paralelno zbrajalo koje isto-dobno zbraja dva operanda duljine n bitova. Već znamo da se izlazi iz potpunog zbrajala (jednog stupnja paralelnog zbrajala) mogu opisati Booleovim jednadžbama:

F i - c i © ( x . e y i ) ci+1 = C. • (x. © y.) + x. • y.

Željeli bismo da jednostavna ALU ovisno o kombinaciji na njezinim ulazima (n bitni ope-randi X i Y, bit prijenosa u najniži stupanj ALU Cjn i stanja upravljačkih signala S^ S1 i S^ izvodi osam sljedećih operacija koje su prikazane u tablici 8.10.

- J i l i f e v Ulazi izlaz F

Y

X Y 0 Zbrajanje: F = X + Y

X Y 1 Zbrajanje s bitom prijenosa: F = X + Y + 1

X Jedinični komplement:? 0 F = X + Y

X Y 1 Oduzimanje: F = X + / + 1

X 0 0 Prijenos: F = X

X 0 1 Inkrementiranje: F = X +1

X Sve jedinice: 111...111 0 Dekrementiranje: F = X -1

X Sve jedinice: 111...111 1 Prijenos F = X

Tablica 8.10. Osam osnovnih funkcija aritmetičke sekcije ALU

Iz tablice 8.10. vidimo da smo prilagodbom operanda na ulazu Y i izborom vrijednosti bita prijenosa u najniži stupanj ALU Cjn, ostvarili, osim zbrajanja, oduzimanje, inkrementiranje operanda X, dekrementiranje operanda X, zbrajanje operanda X i jediničnog komplemen-ta operanda Y te prijenos, odnosno prosljeđivanje operanda X s ulaza na izlaz. Da bi se pa-ralelnim zbrajalom, sastavljenim od n potpunih zbrajala, moglo izvoditi navedenih osam operacija, potrebni su dodatni logički sklopovi koji na ulazu Y priređuju operand. Slika 8.39 a) prikazuje sklop za priređivanje bita operanda na ulazu Y kao crnu kutiju. Na primjer, da bi se izvela operacija oduzimanja, operand na ulazu Y mora se pretvoriti u jedinični kom-plement i, još uz to, bit prijenosa u najmanje značajan stupanj potpunog zbrajala treba biti

Page 264: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 259

Cjn = 1:F = X + V+1. Pomoću upravljačkih signala S0 i S, priređuju se bitovi operanada na ulazu Y u skladu s tablicom istinitosti (tablica 8.11).

S, S0 Ulaz: bit operanda Izlaz iz sklopa za priređivanje y{

0 0 b. i 0 0 1 b. i b i 1 0 b. 1 b i 1 1 b. 1 1

Tablica 8.11. Priređivanje bita operanda na ulazu Y

Slika 8.39 b) prikazuje izvedbu sklopa za priređivanje bita operanda y.. Sklop za priređiva-nje bita operanda moramo pridružiti svakom potpunom zbrajalu u svakom stupnju ari-tmetičke sekcije. Na slici 8.40 prikazana je aritmetička sekcija ALU.

bit operanda

sklop za priređivanje

bita operanda

y, >

upravljački ulazi

a)

bit operanda

b)

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

Na slici 8.40 vidimo da najznačajniji stupanj aritmetičke sekcije ALU ((n - 1)-ti stupanj) ima osim izlaza Fn_1 i izlaz Cout = Cn.To je bit prijenosa koji ima posebno značenje i ALU ga upu-ćuje u zastavicu C statusnog registra. S ovom smo fazom oblikovanja završili predviđene aktivnosti definirane u koraku (i) - oblikovali smo sklopove aritmetičke sekcije neovisno o logičkoj sekciji.

Page 265: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

260 8. POGLAVLJE: AR1TMETIČKO-LOGICKA JEDINICA

1. stupanj aritmetičke

sekcije

n~1 n-ti stupanj aritmetičke

sekcije

F

SI. 8.40 Aritmetička sekcija ALU

8.5.2. LOGIČKA SEKCIJA

Logičke operacije rukuju bitovima operanada izdvojeno i svaki se bit operanda promatra kao logička, binarna varijabla. Logička sekcija treba podržati četiri osnovne logičke opera-cije I, NE, ISKLJUČIVO ILI i ILI. U skladu s pristupom oblikovanju ALU, radi ograničenja povr-šine na silicijskom čipu i potroška snage, tražimo mogućnost upotrebe logičkih sklopova u aritmetičkoj sekciji za izvedbu logičkih operacija (korak (ii)). Na taj se način aritmetička i logička sekcija pojedinog stupnja stapaju u jednu sekciju. Upravljački signal S2 upotrijebit ćemo za izbor logičkih (S2 = 1) ili aritmetičkih operacija (S2 = 0).

Page 266: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 261,

8.5.2.1. LOGIČKA OPERACIJA ISKLJUČIVO 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 logičku funkciju ISKLJUČIVO ILI jer vrijedi da je općenito 0 © x = x. Kako možemo 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 logičko IS2 i izlaza koji odgovara bitu prijenosa generiranog u prethodnom stupnju /-1. (slika 8.41). Budući da je S2 = 1 za logičke operacije, jasno je da će logička kombinacija S2- C. osigurati da ulazni bit prijenosa u svaki stupanj bude 0. Takvim smo sklopovskim zahvatom potkrijepili i tvrdnju da logičke ope-racije rukuju bitovima operanada izdvojeno i da dobiveni rezultat operacije u /-1 nema utjecaj na ishod logičke operacije u /-tom stupnju. U skladu s našom izvedbom vrijedi da će vrijednost upravljačkih bitova S2 = 1,S1 = 0iSQ = 1 odrediti logičku operaciju ISKLJUČIVO ILI. Naime, kombinacija S1 = 0 i S0 = 1 (tablica 8.11) određuje da će na ulazu Y biti neizmijenjene vrijednosti operanda B = b f r l b ^ —b1 b0 tako daje izlaz iz svakog i-tog stupnja jednak a. © b r

SI. 8.41 Prilagodba bita prijenosa C za logičke operacije

Page 267: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

262 8. POGLAVLJE: AR1TMETIČKO-LOGICKA JEDINICA

8.5.2.2. L O G I Č K A OPERAC IJA NE

Što će se dogoditi ako su vrijednosti upravljačkih signala S2 = 1, S1 = 1 i S0 = 1 ? Kombinacija S = 1 i SQ = 1 (tablica 8.11) određuje da će sklop za priređivanje bita operanda y bit tako priređen 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 određuje logičku operaciju NE.

8.5.2.3. L O G I Č K A OPERAC IJA ILI

Za realizaciju logičke funkcije ILI poslužit ćemo se kombinacijom upravljačkih signala S2 = 1, Sj = 0 i S0 = 0. Stanja S = 0 i S0 = 0 (tablica 8.11) osigurat će daje priređeni 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 logičko ILI - na ulazu x. u svaki stupanj tako da, uz uvjete S2 = 1, S1 = 0 i S0 = 0, izvedemo operaciju a. + b. (+ ovdje označava logičku operaciju ILI), onda ćemo prosljeđivanjem te vrijednosti kroz svaki stupanj potpunog zbrajala dobiti logičku funkciju ILI dvaju n-bitnih operanada. Slika 8.42 prikazuje potrebnu sklopovsku preinaku da bi se realizirala logička operacija ILI.

C=0

a i + b i X ' /

FA

w X ' /

FA F.=a.+b. i i i

X ' /

FA w

0 - > Vi

Si. 8.42 Sklopovska preinaka potrebna da bi se realizirala logička operacija ILI

8.5.2.4. L O G I Č K A OPERAC IJA I

Logičku operaciju I realizirat ćemo uporabom kombinacije upravljačkih 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., (zahvaljujući tome stoje S1 = 1 i S0 = 0) imamo bf dobit ćemo:

Fj = a.© = (a. • b.) + (a • 5)

Oni koji se još sjećaju digitalne elektronike i Booleove algebre, prepoznat će potonju logič-ku funkciju kao funkciju ekvivalencije. Nju nažalost nismo predvidjeli kao logičku operaciju u ALU. Upotrijebit ćemo je, međutim, za izvedbu logičke operacije I. Iz izraza za logičku ekvivalenciju vidimo da je njezin prvi član (a. • b), zapravo, logička operacija koju želimo. Kako ukloniti drugi član u izrazu? Poslužit ćemo se jednim trikom - uvest ćemo pomoćnu logičku varijablu K. koju ćemo na ulazu za prvi operand u svako potpuno zbrajalo upotri-jebiti za operaciju:

K. + a, i i

Page 268: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 263,

Sada izraz za F. glasi: F. = (K. + a.) © b. =jK+a) • b + (K+a.) • b. = ŽČ. • a • F + K. • b. + a. • b. i A i i ' i i r / 1 i i i 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 logičku operaciju I. Slika 8.43 prikazuje preinaku i-tog stupnja jednostavne ALU jedinice koja je potrebna za realizaciju logičke I operacije.

SI. 8.43 Preinaka /'-tog stupnja jednostavne ALU da bi se dobila logička operacija I

Slika 8.44 prikazuje konačnu izvedbu /-tog stupnja jednostavne ALU.

SI. 8.44 Konačna izvedba /-tog stupnja jednostavne ALU

Page 269: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

264 8. POGLAVLJE: AR1TMETIČKO-LOGICKA JEDINICA

Ako pridružimo oblikovanim sklopovima ALU posmačni sklop, na primjer onaj oblikovan pomoću multipleksora (slika 8.28), sklopove za otkrivanje preljeva (V = Cn© Cn1) i nule (Z = F ?+Fn2+... Fj+ FJ dobivamo potpunu višefunkcijsku n-bitnu ALU koja izvodi aritmetič-ke operacije (zbrajanje, oduzimanje, inkrementiranje, dekrementiranje), logičke operacije (I, ILI, NE, ISKLJUČIVO 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 aritmetičke ili logičke operacije ili operacije posmaka takav daje najznačajniji nje-gov bit jednak 1). Slika 8.45 prikazuje višefunkcijsku ALU, na primjer 16-bitnu, i upravljačke signale kojima se određuju aritmetičke i logičke operacije te operacije posmaka.

upravljački bitovi (izbor operacije posmaka)

SL 8.45 Jednostavna višefunkcijska ALU

prema statusnom registru

Page 270: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 265

9. POGLAVLJE

MEMORIJSKI SUSTAV

9.1. UVOD Memorija ili spremnik (engl. storage) je vrlo važna sastavnica računarskog sustava. U skla-du s von Neumannovim modelom računala, instrukcije, podaci, međurezultati i rezultati pohranjuju se u memoriji i pozivaju iz memorije. Vrijeme koje se troši na komunikaciji iz-među procesora i memorijske jedinice u velikoj mjeri utječe na performansu računarskog sustava. Procesor bi trebao imati brzi i neprekidni pristup memorijskoj jedinici vrlo velikog kapaciteta gdje su pohranjeni programi i podaci i time omogućiti izvođenje programa br-zinom koja je uvjetovana samo brzinom sklopova u procesoru. Nažalost, memorija koja bi radila jednakom brzinom kao i procesor i imala kapacitet nekoliko desetaka ili stotina giga bajtova (GB; giga = 230) znatno bi povećala cijenu računarskog sustava i pogoršala odnos njegove performanse i cijene. Odnos između brzine procesora i memorije možemo izraziti pomoću latentnosti (engl. latency) ili vremena odgovora koje je općenito definirano kao vrijeme koje protekne između započinjanja i završetka nekog događaja. Tako, na pri-mjer, 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 više od tri puta veća. Pod latentnosti memorije podrazumijeva se vrijeme koje protekne između zahtjeva što ga procesor upućuje memorijskoj jedinici i primitka podatka iz nje.

Drugi problem koji susrećemo u memorijskom sustavu jest kapacitet memorije. Sve slože-niji operacijski sustavi i uporaba računarskog sustava za rješavanje sve složenijih problema, uporaba prijateljskih grafički orijentiranih korisničkih sučelja, napredniji oblici interakcije čovjeka i računala (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 više stotina GB. Sve to pogoršava odnos performanse i cijene sustava. Naime, memorijski modul kapacite-ta od nekoliko desetaka ili stotina GB s latentnosti 0.25 ns bio bi vrlo skup.

Problem latentnosti i kapaciteta memorije rješava se upotrebom memorijske hijerarhije. Memorijsku hijerarhiju u računarskom sustavu čine različite memorijske jedinice koje se razlikuju po latentnosti, kapacitetu i cijeni.

9.2. MEMORIJSKA HIJERARHIJA Na temelju latentnosti (umjesto latentnosti možemo govoriti o brzini memorije, odnosno vremenu pristupa (engl. access time)), kapaciteta i cijene memorije u računarskom sustavu

Page 271: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 266 9. POGLAVLJE: MEMORIJSKI SUSTAV

mogu se identificirati četiri glavne hijerarhijske razine (slika 9.1):

i) registri procesora ili skup registara opće namjene; ii) priručna 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 obično su organizirani kao male ekstremno brze, više pri stup ne (npr. jed-noulazne i dvoizlazne) memorijske jedinice ostvarene na procesorskom čipu. Imaju brzinu istog reda veličine kao i sklopovi procesora, a kapacitet im se kreće od npr. 16 ili 32 pa sve do nekoliko stotina i više riječi. Registri procesora, organizirani kao višepristupna memo-rijska jedinica oblikuju skup registara opće namjene (engl. general-purpose register fiie) koji služi za privremeno pohranjivanje operanada, međurezultata i rezultata. Slika 9.2 prikazu-je izvedbu skupa registara opće namjene koji ima jedna ulazna vrata (upisna vrata; engl. vvriteport) i dvoja izlazna vrata za čitanje (engl. readport). Takva izvedba (vidi poglavlje 7J omogućuje da se istodobno dohvate (čitaju) sadržaji dvaju registara te da se novi sadržaj 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 služi za izbor registra koji sudje-luje u operaciji pisanja. Potrebno je napomenuti da je, ako se želi omogućiti u istoj periodi signala vremenskog vođenja čitanje i pisanje u isti registar, potrebno dodatno sklopovlje.

Priručna memorija (engl. cache) je većeg kapaciteta u usporedbi sa skupom registara opće namjene i nije nužno sporija. Ona je korisniku "nevidljiva" ili "skrivena" (riječ cache je fran-cuskog podrijetla i označava skrivanje ili skrovito mjesto za pohranjivanje), a logički je smještena između skupa registara opće namjene, odnosno registara procesora i glavne memorije. Fizički priručna memorija može biti smještena na samom procesorskom čipu (obično su to priručna memorija razine 1 (engl. cache level 1) i razine 2 dok se priručna memorija razine 3 obično ostvaruje izvan procesorskog čipa. Zahvaljujući razvoju VLSI tehnologije moguće je ostvariti sve tri razine priručne memorije na samom procesorskom čipu. Funkcionalno, priručna memorija može biti izvedena kao memorija za pohranjivanje instrukcija i podataka (tzv. i&D cache; Instruction&Data cache) ili kao izdvojena instrukcij-ska priručna memorija (engl. I cache) te kao izdvojena priručna memorija podataka (engL

Page 272: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 267,

D cache). Kapacitet priručne memorije kreće se od nekoliko desetaka ili stotina kilo bajta (KB; kilo = 210) pa sve do nekoliko mega bajtova (MB; mega = 220). Napomenimo da je pri-ručna memorija vrlo važna arhitektonska značajke procesora i računala te da ona značajno doprinosi povećanju performanse procesora.

'ću ^ 'c čT

<- <N

SI. 9.2 Izvedba skupa registara opće namjene s jednim upisnim vratima i s dvojim izlaznim vratima

Page 273: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 268 9. POGLAVLJE: MEMORIJSKI SUSTAV

Glavno ili rodna memorija (naziva se i primarna memorija) prilično je brza memorija velikog kapaciteta u kojoj se pohranjuju aktivni programi i podaci. Bez obzira što je glavna me-morija realizirana poluvodičkom tehnologijom sličnoj onoj koja se rabi za izvedbu skupa registara opće namjene ili priručne memorije, ona je zbog velikog kapaciteta (nekoliko desetaka ili stotina GB) i zbog toga što je izvedena tako da je fizički izdvojena od procesora sporija od prethodnih dvaju memorija u hijerarhiji, i to od dva do pet i više 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). Tipični su predstavnici ove vrste memorija magnetski diskovi, magnetske vrpce i optički diskovi (CD-ROM - compact disk read-only memory i DVD-ROM - digital versatile disk read-only memory).

Da bismo dobili osjećaj za odnose između kapaciteta i brzine memorija u pojedinim hije-rarhijskim razinama, poslužit ćemo se podacima koji su bili tipični u 2006. godini (tablica 9.1.).

Razina 1 2 3 4

Vrsta memorije Registri ili skup

registara Priručna

memorija Glavna ili radna

memorija

Sekundarna memorija

(jedinica diska)

Kapacitet <1 KB < 16MB < 512 GB > T (tera) B

Tehnologija Višeulazno-

izlazna memorija CMOS

Na procesorskom čipu ili izvan procesorskog

čipa realizirana memorija CMOS

SRAM

CMOS DRAM Magnetski disk

Vrijeme pristupa (ns)

0.25 - 0.5 0.5 - 25 50 - 250 5 000 000

Opaska: oznaka B označava bajt

Tablica 9.1. Tipične vrijednosti vremena pristupa i kapaciteta memorije za četiri memorijske razine.

Spomenuli smo daje i cijena jedan od faktora koji definira odnose u memorijskoj hijerarhi-ji. Ona se obično izražava po jedinici kapaciteta - na primjer, tipična cijena po 1 MB pojedi-ne vrste memorije iznosi za priručnu memoriju na procesorskom čipu između 5 i 100 $, za priručnu memoriju ostvarenu izvan procesorskog čipa 1 - 100$, glavnu memoriju DRAM 0.1 $ i za jedinicu diska 0.001 $. Ovdje treba naglasiti da cijena poluvodičke memorije (hije-rarhijske razine i) - iii)) jako varira i da više ovisi o ekonomskim faktorima i količini, odnosne obujmu proizvodnje, nego o stvarnoj cijeni tehnološke proizvodnje.

Page 274: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 269,

9.3. OSNOVNE ORGANIZACIJSKE I TEHNOLOŠKE ZNAČAJKE MEMORIJSKOG SUSTAVA Složenost memorijskog sustava ogleda se u organizacijskoj i tehnološkoj različitosti me-morijskih komponenti koje su sastavnice četiriju memorijskih razina. Jedna od značajki je mjesto u računarskom sustavu na kojem se nalazi određena memorijska komponenta. Skup registara opće namjene obično se klasificira u tzv. lokalnu memoriju, odnosno me-moriju koja je lokalno dodijeljena procesoru i nalazi se na procesorskom čipu. Priručna memorija razine 1 (u nekim izvedbama razine 2 i 3) također je smještena na procesorskom čipu. Priručne memorije razine 3 te glavna memorija ostvarene su izvan procesorskog čipa, ali se svrstavaju u internu memoriju računarskog sustava, za razliku od sekundarne memo-rije koja se klasificira kao eksterna, tj. vanjska memorija računarskog sustava. Razlog tomu je što se sekundarna memorija sastoji od perifernih uređaja (npr. jedinice diska ili vrpce) kojima procesor pristupa posredno preko ulazno-izlaznog sučelja.

Osnovna značajka memorije u pojedinoj razini jest njezin kapacitet On se za internu me-moriju izražava brojem bajtova ili riječi. Uobičajene duljine riječi izražene su u obliku 2j

broja bitova (i ;> 3 je cijeli broj), tako da govorimo o riječima duljine 8, 16, 32, 64 ili 128 bita. Kapacitet vanjske memorije obično se izražava u bajtovima (na primjer, kapacitet DVD ROM-a je 4.7 GB).

Jedna od značajki je i jedinica prijenosa (engl. unit transfer) koja je za internu memoriju jednaka širini sabirnice podataka. Obično širina (broj linija ili bitova) sabirnice podataka odgovara duljini riječi, ali to ne mora biti uvijek tako. Naime, sabirnica može biti vremenski multipleksirana tako da u dva ili više navrata prenosi dijelove jedne riječi. Jedinica prijeno-sa za vanjsku memoriju obično je blok koji se sastoji od više bajtova, odnosno riječi.

Jedna od najvažnijih značajki memorije u svakoj od razina jest performansa. Ona se izra-žava trima parametrima: vremenom pristupa (engl. access time ili read access time), vreme-nom memorijske periode (engl. memory cycle time ili cycle time) i brzinom prijenosa podataka (engl. data-transfer rate ili memory bandwidth).

Vrijeme pristupa memoriji obično se definira kao vrijeme koje protekne od trenutka kada memorija zaprimi zahtjev za čitanje nekog podatka do trenutka kada taj podatak posta-ne raspoloživ na izlaznim priključcima memorije. Ovo se vrijeme sastoji od vremena koje je potrebno za lociranje zahtijevane memorijske ćelije (ili više njih) u memorijskom polju i vremena potrebnog da ti podaci postanu raspoloživi i preneseni na izlaze memorijske jedinice. Dogovorno se za vrijeme pristupa uzima vrijeme potrebno za čitanje sadržaja me-morijske lokacije jer neke memorije imaju različita 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 može započeti prije negoli se ne obnovi ili osvježi sadržaj memorijske lokacije kojoj se pret-hodno pristupilo. U tom slučaju, minimalno vrijeme koje treba proteći između dva slijedna pristupa veće je od vremena pristupa i naziva se vrijeme memorijske periode.

Maksimalna količina informacije koja se može prenijeti u jedinici vremena između memo-rije i ostalih komponenti računarskog sustava (npr. procesora ili DMA upravljačkog sklopa) naziva se brzina prijenosa ili memorijska pojasna širina i izražava se brojem bitova ili riječi u sekundi. Ona se može izraziti kao omjer:

Page 275: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 270 9. POGLAVLJE: MEMORIJSKI SUSTAV

gdje je w broj bitova koji se može istodobno prenijeti, a tM je vrijeme memorijske periode.

Za slučaj kada je vrijeme memorijske periode jednako vremenu pristupa tM = t , tada je brzina prijenosa jednaka w / tA.

Iznimno važna organizacijska značajka memorije jest način pristupa podacima. Ako se podacima može 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 može se naići i na naziv "memorija sa slučajnim pristupom" što je posljedica prevođenja izraza "random acce-ss" međutim, nije riječ o slučajnom pristupu jer je pristup memorijskoj lokaciji određen adresom.) Memorije s izravnim pristupom označavaju se kraticom RAM (Random Access Memory) i većina poluvodičkih memorija realiziranih u tehnologiji LSI/VLSI jesu tog tipa.

Memorije kod kojih se memorijskim lokacijama može pristupiti samo unaprijed određe-nim 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 optičke memorije npr. CD-ROM ili DVD-ROM.

U podrobnijoj klasifikaciji tipova memorije našli bismo i asocijativne memorije koje su ta-kođer memorije s izravnim pristupom, ali kojima se pristupa ne na temelju adrese memo-rijske lokacije već na temelju njezina sadržaja ili dijela sadržaja, ili nekog svojstva podatka. Asocijativne su memorije tako organizirane da istodobno daju sve sadržaje memorijskih lokacija koje se podudaraju s upitom (npr. sadržajem, dijelom sadržaja ili svojstvom).

Prema metodi pohranjivanja podataka, odnosno upisa podataka, memorije dijelimo na one koje su permanentne, što podrazumijeva da se jednom pohranjena informacija ne može lako i brzo promijeniti tijekom neposrednog korištenja (engl. on-line) u računarskom sustavu. Takve se memorije nazivaju ispisne memorije odnosno za njih se koristi udoma-ćena kratica ROM {Read-Only Memory). Zatim ih dijelimo na ispisne memorije čiji se sa-držaj može promijeniti posredno (engl. off-line) obično izvan računarskog 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 me-morije čiji se sadržaj može posredno mijenjati svrstava se i programirljivi CD koji se obično označava kao CD-R disk (CD - recordable).

Memorije koje dopuštaju laku i neposrednu promjenu sadržaja (on-line) od strane pro-cesora tijekom izvođenja programa nazivaju se upisno-ispisne memorije (engl. read-write memory). Budući da su upisno-ispisne memorije uobičajene u računarskom sustavu, ne koristi se nikakav pridjev uz njih jer se, kada se kaže memorija, misli upravo na tu vrstu memorije.

Prema tehnologiji koja je osnova za tehničku izvedbu memorije razlikujemo poluvodičke memorije koje su ostvarene u LSI i VLSI tehnologiji, one realizirane na magnetskim mediji-ma te one koje koriste optičke medije za pohranu podataka. Postoje i izvedbe sekundarnih memorija koje kombiniraju magnetski medij za pohranu i optičku tehnologiju za čitanje (engl. magneto-optical disk memory).

Vrlo važna fizička značajka memorije je izbrisivost (engl. volatile), odnosno neizbrisivost (engl. non-volatile). Značajka izbrisivih memorija je da se pohranjeni sadržaji gube (brišu) prestankom napajanja memorijskog modula. Većina poluvodičkih tipova memorija izbri-

Page 276: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 271,

siva je iako postoje i poluvodičke memorije koje su neizbrisive kao što su EPROM (Erasable Programmable Read-Only Memory) i tzv. flash memorije.

U neizbrisivoj memoriji ostaju sačuvani podaci i nakon što se isključi napajanje. Memorije koje se temelje na magnetskim ili optičkim medijima svrstavaju se u neizbrisive memo-rije. Osim već spomenutih poluvodičkih neizbrisivih memorija spomenimo i mask-pro-grammedROM (Read-Only Memory) te porodice poluvodičkih memorija kao što su PROM (Programmable ROM) i EEPROM (Electriallly Erasable Programmable ROM).

Flash memorija je poluvodička neizbrisiva memorija kapaciteta od 4 do 256 GB, od 100 do 1000 puta brža od magnetske diskovne memorije, manja od nje i otpornija na udarce ili trešnju (engl. shock resistant). No ona je za faktor 2 do 40 skuplja od diskovne memorije, ali još uvijek do 10 puta jeftinija od dinamičke RAM. Flash memorija koristi u izvedbi USB memorijskih štapića (engl. memory stick) ali i u mobilnim uređajima kao što su mobiteli, MP3"playeri", digitalne kamere i fotoaparati i si.

Slika 9.3 prikazuje tipičnu memorijsku hijerarhiju u računarskom sustavu s okvirnim vrijed-nostima nekih organizacijskih i tehnoloških značajki.

kapacitet

mali žlOOOB

veliki

512KB - - MB

- M B - - G B

500 GB

>TB

brzina

< Ins A velika

0.5-5ns

5 -15ns

< 10 ms

< 100 ms

< 100 s

mala

SI. 9.3 Simbolički prikaz memorijske hijerarhije u računarskom sustavu s nekim okvirnim vrijednostima organizacijskih i tehnoloških značajki

9.4. GLAVNA ILI RADNA MEMORIJA U skladu s von Neumannovim modelom računala sljedovi instrukcija (programi) i poda-ci, oboje svedeni na binarni kod, pohranjuju se u jednakom obliku i na jednak način u memorijskoj jedinici. Ovdje je potrebno razlikovati programe koji se upravo izvršavaju i njima pridružene podatke od ostalih programa (i pridruženih podataka) čije izvođenje nije

Page 277: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 272 9. POGLAVLJE: MEMORIJSKI SUSTAV

u tijeku. Zahvaljujući postojanju memorijske hijerarhije glavna ili radna memorija (često se naziva i primarna memorija; engl. main memory, primary memory) sadržava programe i njima pridružene podatke čije je izvođenje upravo u tijeku, dok su trenutno neaktivni programi pohranjeni u sekundarnoj memoriji. Obično se za te neaktivne programe kaže da "čekaju" između dva izvođenja u sekundarnoj memoriji da bi se razlikovali od progra-ma koji su pohranjeni na neizbrisivim magnetskim ili optičkim medijima koji nisu sastavni dio računarskog sustava, ali se po potrebi intervencijom operatera mogu uključiti u sustav (u von Neumannovom računalu tzv. neaktivna memorija (engl. dead store)). Potrebno je napomenuti da bez obzira na postojanje memorijske hijerarhije u računarskom sustavu, npr. skupa registara opće namjene, priručnih memorija razine 1,2 i 3, za procesor je mjero-davna jedino slika programa u napredovanju koja se odražava u sadržaju giavne memorije.

Za izgradnju glavne memorije upotrebljavaju se poluvodičke LSI/VLSI memorije s izravnim pristupom. S obzirom na osnovnu funkciju glavne memorije većina memorijskih modula, odnosno golema većina od ukupnog kapaciteta glavne memorije ostvarena je uporabom upisno-ispisne memorije s izravnim pristupom (RAM). Samo mali dio memorijskog pro-stora može zauzimati ispisna poluvodička memorija (ROM), i to za pohranu dijelova ope-racijskog sustava, biblioteke potprograma koji se vrlo učestalo rabe, funkcijskih tablica te konstanti.

Memorijski čipovi s izravnim pristupom RAM temeljne su građevne komponente glavne memorije. Memorijski čipovi, zahvaljujući 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 nedostiž-na granica od tera bita (Tb). (Opaska: s malim slovom b označavat ćemo bit.)

Poluvodičke memorije mogu se razvrstati u dvije velike grupe: i) statički RAM (SRAM - Static Random Access Memory); ii) dinamički RAM (DRAM - Dynamic Random Access Memory).

Statički se RAM sastoji od memorijskog polja sastavljenog od memorijskih ćelija koje se temelje na bistabilu. SRAM tipično zahtijeva šest tranzistora po bitu pohrane, odnosno po jednoj memorijskoj ćeliji. Memorijsku ćeliju možemo predočiti kao "crnu kutiju" koja ima upravljački ulaz kojim se određuje operacija (čitanje ili pisanje; R/W), ulaz za izbor, odnosno omogućavanje (Select) te jednobitni ulaz i jednobitni izlaz podataka (slika 9.4). Bez obzira na različite tehnološke podloge (MOS - Metal-Oxide Semiconductor, bipolarna) koje se ko-riste u izvedbi memorijskog čipa, memorijska ćelija ima sljedeća glavna svojstva:

• ima dva stabilna stanja koja se upotrebljavaju za prikaz binarne 1 i 0; • omogućuje upis i pohranu (novog) stanja; • omogućuje čitanje pohranjenog stanja.

Za razliku od statičke RAM, jednobitni se podatak u dinamičkoj RAM pohranjuje u jednotran-zistorskoj memorijskoj ćeliji u obliku naboja u kondenzatoru. Operacija čitanja aktiviranjem tranzistora u ćeliji koji ima funkciju sklopke, tj. podizanjem napona linije retka - adresne li-nije (izvorno se tranzistor naziva engl. pass transistor), napon će se na kondenzatoru prosli-jediti na liniju podatka (slika 9.5).Time se, međutim, gubi naboj na kondenzatoru, odnosno briše pohranjeni sadržaj u ćeliji, tako da je to destruktivno čitanje. Da bi se očuvalo 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

Page 278: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 273

tM > tA. Nadalje, zbog nesavršenosti kondenzatora naboj se postupno gubi i zato DRAM zahtijeva periodičko osvježavanje sadržaja pohranjenih u ćelijama.

SI. 9.4 Memorijska ćelija kao "crna kutija"

Pri oblikovanju čipova SRAM dizajneri su usredotočeni na brzinu i kapacitet, dok se kod DRAM posebna pozornost posvećuje cijeni po bitu i kapacitetu čipa (broju bitova). Za me-morijske čipove temeljene na usporedivim tehnologijama vrijedi da gustoća (broj pohra-njeni bitova) DRAM 4 - 8 puta u odnosu na SRAM (stoje i razumljivo ako za ćeliju dinamič-kog RAM treba jedan tranzistor, a za SRAM treba šest tranzistora). No SRAM je 30 -100 puta brži u odnosu na DRAM. Nažalost, približno 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 značajki obično SRAM upotrebljava za izvedbu priručne memorije, a DRAM je osnovna građevna komponenta glavne memorije.

select

ulaz podataka

> memorijska ćelija ^ • izlaz podataka

R/W

linija retka -adresna linija

C

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.

Page 279: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 274 9. POGLAVLJE: MEMORIJSKI SUSTAV

Godina Kapacitet čipa 1 j Vrijeme memorijske periode (ns)

1980. 64 Kb 250

1983. 256 Kb 220

1996. 64 Mb 110

2000. 256 Mb 90

2004. 1 Gb 70

2006. 2 Gb 60

Opaska: oznaka b označava bit

Tablica 9.2. Brzina i kapacitet DRAM za razdoblje od 1980. do 2006.

Prema načinu pristupa memorijskim ćelijama u memorijskom polju, odnosno načinu adre-siranja, RAM ima sljedeću 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 riječi - 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 priključaka (A0 - A18), 8 priključaka za podatke (D0- D7) (linije podataka su dvosmjerne, kada se izvodi operacija čitanja (R/W= 1), onda se 8-bitni podaci preno-se od memorije prema procesoru; kada je R/W= 0, izvodi se operacija pisanja - podaci iz procesora pohranjuju se u čipu SRAM), priključak za izbor čipa ChipSelect (CS) upravljački ulaz R/W i upravljački ulaz OutputEnable (OE) kojim se omogućuju pogonski sklopovi linija

Page 280: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 275

podataka (engl. dato bus driver). Kada je OE u niskoj razini (logičko"0") i kada se izvodi ope-racija čitanja, omogućeno je postavljanje podataka iz SRAM na sabirnicu podataka.

RAM-ovi većeg kapaciteta imaju obično koincidentno adresiranje jer linearni izbor za ta-kve RAM-ove traži složeniji adresni dekoder koji mora biti izveden na memorijskom čipu. Slika 9.8 daje shematski prikaz memorijskog modula s koincidentnim načinom adresiranja. Ovakav se način 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 riječi. Svako memorijsko polje kapaciteta N bitova odgovara jednom čipu RAM. Većina DRAM-ova ima koincidentno adresiranje.

ov +5V

i _ L

adresne linije

A0 Vsi V£ D0

A, D, A; D2 A3 D, A4 D4 A5 D5 A6 D6 A D7 D7 A8 A, SRAM A , „ 512 Kx8 A „ ČŠ A,2 OE A,3 R/W A„ A,5 A,6 A,7 A,8

linije podataka

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)

Page 281: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 276 9. POGLAVLJE: MEMORIJSKI SUSTAV

o* > o

e>jeiepod je)s;6di juzejn

^ \

e>jeiPpod jBisiBsj ;uze|zr

>(;uuj3jdsnpdLU !uze|z!-0uze|n

o CL O

o £ a* £

^

CM

in X <N m

ro u a 3 •

4-' VI <TJ O* <U T3 Q_ o

<u T3

c _o rtJ > ni o >N1 aj to o

(^epaj) pedms) ^jjuuidjdsnpdtu )j!uuidjdsnpduj

lusajpe 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 za-htijeva 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

Page 282: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 277,

i adresa stupca. Da bi se smanjila veličina kućišta čipa i broj priključaka, DRAM ima multi-pleksirane 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 stup-ca. Pristup 4-bitnoj memorijskoj lokaciji određen je "presjecištem" adresirane linije retka i adresirane linije stupca. Zbog multipleksiranja adrese retka i adrese stupca čip DRAM ima dva adresna međuspremnika u kojem privremeno pohranjuje adresu retka i adresu stupca. DRAM ima i dva dodatna upravljačka ulaza RAS (RowAddress Strobe) i CAS (Column Address Strobe) kojima se privremeno pohranjuje adresa retka i stupca u dva adresna međuspre-mnika. Slika 9.10 prikazuje vremenski dijagram čitanja dinamičke memorije. Uočavamo 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 priključci DRAM

R/W

4-bitni podatak nz izlazu

DRAM (D,-D4)

trenutak zamjene

adrese retka adresom stupca

na linijama A0- A n

kraj sabirničkog ciklusa čitania

RAS i CAS postaju neaktivni

SI. 9.10 Vremenski dijagram čitanja DRAM

Ovisno o tehnološkoj izvedbi, memorijska ćelija DRAM zadržava pohranjeni podatak od 10 ms do 60 ms nakon što je bio podatak pohranjen. To znači da se sadržaj svake memo-rijske ćelije mora periodički osvježiti, unutar tog vremena, ponovnim upisom pohranje-nog podatka. Osvježavanje se ne obavlja pojedinačno za svaku memorijsku ćeliju, već se osvježavaju istodobno svi sadržaji memorijskih ćelija u jednom retku. To se obavlja tako da DRAM interno generira adrese retka pomoću brojila osvježavanja (slika 9.9). Osvježavanje

Page 283: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 278 9. POGLAVLJE: MEMORIJSKI SUSTAV

DRAM-a izvodi se kada je CAS aktivan (postavljen u"0"), a RAS je u stanju logičke jedinice "1" (neaktivan). Takav se način osvježavanja naziva "osvježavanje CAS - prije - RAS". Potreba za periodičkim osvježavanjem dinamičke memorije povećava složenost sučelja procesor - DRAM memorijski modul. No neki memorijski čipovi DRAM imaju ugrađene sklopove za osvježavanje pa se s motrišta projektanta memorijskih modula ponašaju kao statičke memorije te se nazivaju pseudostatičke.

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 riječi.

9.4.1 PROJEKTIRANJE MEMORIJSKOG MODULA

Problem projektiranja memorijskog modula može se formalno definirati na sljedeći način: na temelju zadanih ili raspoloživih memorijskih čipova N x w-bita RAM, gdje je N broj w-bitnih riječi (odnosno N x w je memorijski kapacitet raspoloživog čipa) treba projektirati memorijski modul koji se može opisati kao N'x w'-bita, pri čemu je N'a N i W. Drugim ri-ječima, treba projektirati memorijski modul na temelju raspoloživih građevnih komponen-ti - 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] označava najmanji cijeli broj veći ili jednak x).

Primjer 9.1.

Ilustrirajmo problem projektiranja na sljedećem jednostavnom zadatku: raspoloživa gra-đevna komponenta je statički RAM kapaciteta 128 bajtova, dakle 128 x 8 bita RAM (N = 128, w = 8). Na temelju tih raspoloživih komponenti želimo projektirati memorijski modul koji će biti kapaciteta 1 K 16-bitnih riječi (N'= 1024, w' = 16). Da bi se realizirao memorijski modul - ciljna memorija, potrebno je p x q =16 memorijskih čipova, pri čemu je: p = [N7 N1 = [1024 / 1281 = 8 i q = [ w 7 w] = f 16 / 8] = 2. (Opaska: obično su vrijednosti N, w, N' i w' izražene u obliku 2\ tako da je [xl = x (kao u našem slučaju). No ako je ciljani kapacitet memorijskog modula npr. 1000 8-bitnih riječi, tada imamo [1000 /1281 = [7,811 =8.)

Prikažimo organizaciju memorijskog modula (ciljne memorije) 1K x 16 bita (slika 9.11a) uporabom građevnih komponenti 128 x 8 bita SRAM (slika 9.11b) koje koriste linear-no adresiranje. Za realizaciju ciljne memorije potrebno nam je 16 memorijskih čipova SRAM. Svaki doprinosi po 128 8-bitnih riječi što znači da su dva čipa potrebna za 128 16-bitnih riječi. 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 značajnih adresnih linija (A0 - A6) ozna-čenih s A; slika 9.12) služi za izbor riječi u svakom čipu SRAM (27 = 128), dok se tri najzna-čajnija bita 10-bitne adrese dovode na adresni dekoder"1 od 8". Izlazima iz dekodera (CS0 - C57, pri čemu je aktivan izlaz iz dekodera logička 0) izabire se jedan od 8 skupova čipova (skup 0 - 7). Svaki od skupova doprinosi 128 16-bitnih riječi. Deset adresnih linija (A0 - A9), dakle služi za izbor 16-bitne riječi u projektiranom modulu. No ako memorijski modul želimo priključiti u računarski sustav koji npr. ima 32-bitnu adresnu sabirnicu (A0

- A31) i time određen ukupan izravno adresirljivi prostor od 4 G riječi (232), tada moramo memorijskom modulu pridodati adresni dekoder koji će dekodirati preostale 22 adre-sne linije (A10 - A31) da bi se jednoznačno definirao adresni potprostor koji će zauzimati

Page 284: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 279,

r

projektirani memorijski modul. Na primjer, ako pretpostavimo da će modul biti smješten na 1024 najmanje značajne adrese izravno adresirljivog prostora, tada dodatni adresni dekoder "osluškuje" adresne linije A10 - A31 i ima aktivan izlaz samo ako su sve adresne linije A10 - A31 u logičkoj "0". Slika 9.13 prikazuje zahtijevanu sklopovsku preinaku. Izlaz iz logičkog sklopa ILI (označen sa SMM - Select Memory Module) je logička "0"samo ako su sve adresne linije A10- A31 u logičkoj"0". Aktivno stanje SMM = Označi izbor memorijskog modula. Izlazi iz logičkih sklopova ILI koji na ulazu imaju SMM i CSi; i = 0,1,... ,7 imaju aktivan izlaz (logičku "0") kada je SMM = 0 i CSi = 0 i na taj se način pristupa riječi u iza-branom memorijskom modulu.

10

adresne linije

R/W

W= 16 bita

ciljna memorija (memorijski modul) N'=1K riječi

.16

dvosmjerna sabirnica podataka

a)

7

adresne linije

R/W

cD _o 00 "D

memorijsko polje 128x8 bita "O c o

memorijsko polje 128x8 bita

<0 «-"O (O

8

priključci podataka

CS priključak za izbor čipa

b) SI. 9.11 Prikaz ciljne memorije; a) memorijski modul; b) građevna komponente

Page 285: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

280 9. POGLAVLJE: MEMORIJSKI SUSTAV

R/W

čipO 128x8

CS

^ R/W

CS

^ R/W

čip 2 128x8

R/W

CS

^ RAV

čip 14 128x8

^ RAV

čip 15 128x8

CS

skupO

čip 1 i 8

128x8 /

~t skup 1

čip 3 i 8 i /

128x8 /

8

16

16

t skup 7

16

dvosmjerna sabirnica podataka

SI. 9.12 Organizacija memorijskog modula 1K x 16 bita uporabom građevnih komponenti 128x8 bita SRAM

Page 286: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 281,

adresna sabirnica

A31 AM . . . An A10 A9 Ag . . . A2 A, A0

С

za izbor riječi u memorijskom modulu

za izbor adresnog potprostora

izbor memorijskog modula SMM

izbor riječi u skupu

(izbor skupova 0 - 7)

CS7 cso

prema CS skupine 7

prema CS skupine 0

Si. 9.13 Sklopovska preinaka potrebna za priključenje memorijskog modula u adresni potprostor 00000000,,. - 000003FF,, ne) <i6)

Primjer 9.2.

Projektirajmo memorijski modul kapaciteta 1K 64 bita (slika 9.14 a)} uporabom građev-nih komponenti tj. memorijskih čipova koji imaju koincidentno adresiranje i kapacitet 1Kb (organiziranih u memorijskom polju 32 x 32) (slika 9.14 b)). Odredimo broj potreb-nih građevnih komponenti: p = [N7 N] = [1024/1024] = 1 i q = fw ' / w] = [64/ 1] = 64. Potrebna su nam 64 memorijska ci pa. Slika 9.15 prikazuje organizaciju memorijskog mo-dula. Svaki od memorijskih čipova doprinosi po jedan bit u 64-bitnoj riječi. Organizacija memorijskog modula je 21/2 D (vidi sliku 9.8). Uočavamo da građevna komponenta -memorijski čip (slika 9.14 b)) ima dvije jednosmjerne 1-bitne linije podataka (data out; dota in). Ako se memorijski modul priključuje na dvosmjernu sabirnicu podataka, onda se trebaju dodatnim sklopovima parovi jednosmjernih linija pretvoriti u jednu dvosmjer-nu liniju. To se postiže uporabom posebnih sklopova koji se nazivaju dvosmjerni sabir-nički pogonski sklopovi (engl. bus driver) ili dvosmjerna sabirnička pojačala koja se te-melje na sklopovima s tri stanja. Slika 9.16 prikazuje detalj takvog sklopa (samo za jedan par linija podataka). Kada je upravljački signal R/W- 1 (operacija čitanja), omogućen je gornji sklop s tri stanja (slika 9.16 b)) i izlazni se 1-bitni podatak (data out) prosljeđuje na dvosmjernu sabirničku liniju podatka (podatak se usmjerava prema procesoru). Donji je sklop s tri stanja onemogućen i njegov je izlaz u stanju visoke impedancije (linija data in je električki odspojena od sabirničke linije podataka). Kada je upravljački 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.

Page 287: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 282 9. POGLAVLJE: MEMORIJSKI SUSTAV

w' = 64 bita

adresne linije

R/W

ciljna memorija (memorijski modul)

64/

N' 1024 " riječi

4 - *

ai "O o a» ti -o £ č £ vn a> T3

A, J

adresni dekoder stupca

32 x 32 bita

"1 od 32"

^ dato out izlazni podatak

^ , data in 1 ulazni podatak

dvosmjerna sabirnica podataka

a)

-1 od 32' CS RAV

b)

SI 9.14 a) memorijski modul kapaciteta 1K 64 bita; b) građevna komponenta - memorijski čip s koincidentnim adresiranjem 1K bita

R/W

£ < c i/> £ 73 <15 S <u TJ

A1 -se tu TJ

dekoder

ćipO (32 x 32) -f-

bit#0

R/W

A1

dekoder

čip 1 (32 x 32) bit#l

64

cs J RAV dvosmjerna

sabirnica podataka

preostale adresne

linije

.2 0) 1 / >

I L 0> i

A1

A2

dekoder

čip 63 (32x32) r—

bi«63

RAV CS

SL 9.15 Organizacija memorijskog modula 1K 64 bita

Page 288: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 283,

dvosmjerna sabirnička

linija podataka

R / W = T

data out

R/W = "1"

data in

b)

R/W = "0"

< r o + data out

R/W = "0"

H-Cn! data in

dvosmjerna sabirnička

linija podataka

C) SI. 9.16 a) dvosmjeran sabirnički pogonski sklop (detalj); b) tok 1-bitnog podatka - operacija čitanja;

c) tok 1-bitnog podatka - operacija pisanja

Page 289: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 284 9. POGLAVLJE: MEMORIJSKI SUSTAV

9.5. PORODICE DRAM Da bi premostili jaz između brzine procesora i memorije, posebno DRAM - koja ima veliki kapacitet, ali je u odnosu na brzinu sklopovlja procesora spora, proizvođači memorijskih komponenti pokušavaju različitim organizacijskim zahvatima u memorijskim čipovima kompenzirati relativno dugo vrijeme pristupa pa se stoga pojavljuju brojna poboljšanja dinamičkih RAM memorija:

i) FPM DRAM (Fast Page Mode DRAM) - izvedba DRAM-a tako da se na temelju jedne adrese retka može pristupiti različitim pohranjenim podacima samo mijenjanjem adrese stupca. Vrijeme pristupa skraćuje se u slučaju pristupa lokacijama sa slijed-nim adresama;

ii) EDO DRAM (Extended Data-Out DRAM) - uporabom upravljačkog ulaza Of (Output Enable) kojim se upravlja izlaznim međuspremnikom (slika 9.9) neovisno o uprav-ljačkom signalu CAS, omogućeno je ranije započinjanje sljedećeg pristupa memoriji s tim da izlazni podatak iz DRAM bude još uvijek valjan. Drugim riječima, EDO DRAM može započeti dohvatom sljedećeg bloka podataka iz memorijskog polja istodobno sa slanjem prethodnog dohvaćenog bloka podataka procesoru;

iii) DRAM je po svojoj prirodi asinkroni sklop koji ima asinkrono sučelje što znači da od-govara na promjene upravljačkih signala neovisno o internom signalu vremenskog vođenja. SDRAM (Synchronous DRAM) ima sinkrono sučelje i njegovo je djelovanje sinkronizirano internim signalom vremenskog vođenja. SDRAM je interno organizi-ran tako da ima veći broj memorijskih polja (memorijskih banaka) te sklopove za vremensko vođenje i složenije programirljive upravljačke sklopove od onih u FPM DRAM ili EDO DRAM, tako da omogućuju prijenos podataka u snopu (engl. burst mode) sa slijednih memorijskih lokacija. Veličina je snopa podataka kao i način rada SDRAM programirljiv. Na primjer, veličina snopa može biti 1,2,4 ili 8 podataka ili se može 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 vođenja, ali nakon toga sljedeća tri podatka daje nakon svake periode internog signala vre-menskog vođenja;

iv) DDR SDRAM (Double Data Rate Synchronous DRAM) je izvedba SDRAM tako da su po-daci raspoloživi na rastućem i padajućem bridu internog signala vremenskog vođe-nja i time je povećana brzina prijenosa, odnosno memorijska pojasna širina za faktor veći 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 poboljšana verzija DDR SDRAM i ima brzinu prijenosa od 800 Mbps pri frekvenciji internog signala vremen-skog vođenja od 400 MHz;

vi) DDR3 SDRAM je poboljšana verzija DDR2 SDRAM i podatke prenosi dvostruko ve-ćom brzinom u odnosu na DDR2 SDRAM, tj. 1,6 Gbps. DDR3 SDRAM imaju takvu gu-stoću pakovanja bitova da dosežu kapacitet od 8 Gb i služe za izgradnju memorijskih modula kapaciteta od 16 GB.

Page 290: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 285,

Primjer 9.3.

DRAM čipovi izrađeni su jednakom tehnologijom kao i procesor i pakirani su u plastič-na ili keramička kućišta. Veći se broj takvih čipova smješta na tiskanu pločicu koja se kao memorijski modul uključuje u matičnu ploču npr. osobnog računala. Tako ostvareni memorijski moduli nose oznaku DIMM (Dual in-line memory module] i ovisno o broju pri-ključaka (engl. pin) i vrsti memorijskih čipova kao građevnih komponenti nose različite oznake. Na primjer, 240 priključni DDR3 DIMM oznake PC-3 8500 ima 64-bitni put poda-taka, odnosno 72-bitni ako koristi kod za ispravljanje pogrešaka (ECC - Error Correcting Code) i kapacitet od 4 GB.

9.6. UBRZANJE RADA MEMORIJE Gustoća pakiranja (broj bitova po jedinici površine silicijskog čipa) i kapacitet memorijskih čipova DRAM i SRAM, zahvaljujući napretku tehnologije visokog stupnja, dramatično raste. Povećanje njihove brzine, međutim, nije takvo. Pojavom sve bržih procesora i porastom frekvencije signala vremenskog vođenja raskorak između brzine procesora i memorije sve je veći. Taj je raskorak izraženiji kada se koriste memorije temeljene na DRAM čipovi ma jer SRAM čipovi imaju veću brzinu kojom uspijevaju "pratiti" rad procesora, naročito ako je memorija ostvarena na samom procesorskom čipu kao priručna memorija razine 1 ili 2. Takva je memorija, međutim, malog i nedovoljnog kapaciteta.

Latentnost memorije postaje usko grlo suvremenih računala. Postoje dva osnovna načina premošćivanja jaza ili raskoraka između brzine procesora i memorije:

i) uporaba duljih memorijskih riječi; ii) istodobni dohvat više od jedne memorijske riječi.

multipleksor

međuspremnik

uža sabirnica

A A

/ ' n / ' n / ' n / ' n

1 f

memorija s internom duljinom riječi S-n

SI. 9.17 Organizacija memorije koja ima internu duljinu riječi S • n

i) Memorija se može organizirati tako da je duljina interne memorijske riječi w višekratnik duljine riječi procesora n: w = S • n, pri čemu je S > 1 .Takva organizacija omogućuje dohvat ili pristup memorijskoj riječi duljine S • n bita tijekom jedne memorijske periode. Slika 9.17 prikazuje organizaciju takve memorije. Memorija mora imati brze sklopove koji tijekom operacije čitanja omogućuju pristup riječi duljine S - n bita te njezino rastavljanje na S dije-

Page 291: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 286 9. POGLAVLJE: MEMORIJSKI SUSTAV

lova koji se prosljeđuju procesoru, i to za vrijeme jedne memorijske periode. Tijekom ope-racije pisanja sklopovi moraju prihvatiti do S n-bitnih riječi, upakirati ih u jednu (S • n)-bitnu riječ i pohraniti je, i to za vrijeme jedne memorijske periode.

ii) Memorija koja omogućuje istodobni dohvat više od jedne memorijske riječi 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 ..., Ms pri čemu je S = 2k (slika 9.18). Svaki od tih modula zauzima dio memorijskog adresnog prosto-ra i ima svoje sklopove za dekodiranje adrese. Memo rij ski moduli su tako uređeni da i-ti modul sadržava samo one riječi kojima su adrese:

p • S + i,

pri čemu je 0 p =s N -1, gdje je N broj riječi u jednom memorijskom modulu. Adresa koja se šalje memoriji duljine je m + 1 bita i ima oblik:

am am-l ak+1 ak ak-l 3k-2 - aia(y

pri čemu m - k + 1 najznačajnijih bitova adrese istodobno adresiraju po jednu riječ u sva-kom od S memorijskih modula. Kapacitet svakog pojedinom memorijskog modula je N = 2 ( m - k + 1 ) .

vrlo široka sabirnica

adresa adresa

m - k + 1 k bitova adrese bitova adrese

SI. 9.18 Organizacija memorije s prepletanjem

Page 292: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 287,

k najmanje značajnih bitova adrese ak-1 ak_2... a1 a^ služi za izbor svake od S dohvaćenih ri-ječi. Istodobnim radom svih S memorijskih modula povećava se broj riječi kojima se može 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 preple-tanjem. Vidimo da se u vremenu koje odgovara vremenu pristupa jednom memorijskom modulu istodobno dohvaća S riječi koje se za vrijeme sljedećeg pristupa memoriji, a na temelju najmanje značajnih k bitova adrese prosljeđuju sa široke sabirnice na sabirnicu sustava.

pristup 1 pristup 2 pristup 3

memorijski ^ modul

memorijski modul

memorijski ^ modul 1

memorijski modul

izlaz

M,

i—i—i—i—i - • - i—i—i—i—i—i-

riječ 0

riječ 1

riječ 0

riječ s-1

vrijeme

riječ 1 riječ s-1

riječ 2

SI. 9.19 Vremenski dijagram za memoriju s prepletanjem

Ocijenimo ubrzanje rada tako organizirane memorije. Ako je vrijeme pristupa memorij-skom modulu tA, odnosno ako je vrijeme memorijske periode tM i ako je pozivanje na me-moriju takvo da su adrese slijedne: 0,1,2,..., odnosno q + 0, q + 1, q + 2,..., tada je vrijeme potrebno za dohvat (ili pristup) riječi:

V ^ M / S ' gdje je S broj memorijskih modula.

No ako je pozivanje na memoriju takvo daje adresni slijed uniformno raspršen s faktorom raspršenosti r adresa:

odnosno

0, r, 2r,...,

q + 0,q + r,q + 2r,...,

Page 293: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 288 9. POGLAVLJE: MEMORIJSKI SUSTAV

pri čemu je r ^ S , tada je prosječno vrijeme pristupa riječi, odnosno vrijeme memorijske periode jednako:

V f = ( | ' x t M ) / S -Ako je faktor raspršenosti r veći ili jednak S, tada jetMef = tM i nema povećanja brzine memo-rije (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 riječi. Sljedećim je parame-trima opisana memorija: k = 4, S = 2k= 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. m m-1 k+1 k k-1 k-2 ^ 0 J

25 24 5 4 3 2 1 0

Modul MQ sadržava riječi kojima su adrese p S + i, pri čemu je i = 0: 0,16,32,64,..., 16 (222 -1).

Modul M1 sadržava riječi kojima su adrese p S + i, pri čemu je i = 1: 1, 17, 33,65,..., 16 (222 ~1) + 1.

i-ti memorijski modul M. sadržava riječi kojima su adrese: i, 16 + i, 32 + i, 64 + i,...., 16 (222 -1) + i.

Značajnijih 22 bita adrese a25 a24... a5 a4 istodobno se dovodi na svih 16 memorijskih mo-dula M0 do M15. Budući 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 značajna bita adrese a3a2 a1 a0 poslužit će za izbor jedne od riječi koja će se proslijediti na užu sabirnicu. Na primjer, ako adresni bitovi a25 a24... a5 a4 imaju vrijednosti 00001E (heksadekadno):

a 2 5 a 2 4 a 2 3 a 2 2 3 2 1 3 2 0 3 1 9 3 1 8 3 1 7 3T6 3 1 5 3 1 4 3 1 3 3 1 2 3 1 1 3 1 0 3 9 3 8 3 7 3 6 3 5 3 4

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

i ako se izvodi operacija čitanja, tada će na širokoj sabirnici postaviti istodobno šesnaest riječi kojima odgovaraju slijedne adrese započevši od 00001E do 00002D (zbog načina pohrane riječi u memorijskim modulima). Pomoću četiri najmanje značajna bita adrese a3a2 a1a0 izabirat će jedna od 16 raspoloživih riječi.

Memorija s prepletanjem može poslužiti kao osnova za izvedbu protočne memorije (engl. pipeline memory) koja je preduvjet povećanja performanse procesora koji je realiziran kao protočni procesor (engl. pipeline processor) - o čemu će biti govora u kasnijim poglavljima.

Postoji i jedan drugi pristup izvedbi protočne memorije koji se temelji na činjenici da se ukupno vrijeme koje odgovara latentnosti memorije može razdijeliti na vremena koja su potrebna za obavljanje pojedinih slijednih akcija u memorijskom modulu kao što su: de-kodiranje adrese retka, čitanje retka iz memorijskog polja, upisivanje riječi ili prosljeđivanje riječi na izlaz (na temelju adrese stupca) i upisivanje riječi natrag u memorijsko polje (ako se to zahtijeva). Ako se svakom od tih slijednih koraka dodijeli autonomni sklop, koji se na-ziva protočni segment (engl. pipeline stage), novi pristup memoriji može započeti odmah nakon što se aktivnost prethodnog pristupa preseli na sljedeći protočni segment tako da je vrijeme pristupa jednako vremenu trajanja aktivnosti u jednom protočnom segmentu. Drugim riječima, ako je memorija izvedena tako da ima četiri protočna segmenta, onda je

Page 294: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 289,

latentnost četiri puta kraća od latentnosti "klasične" izvedbe memorije. Ovaj se pristup, uz dodatak protočnih segmenata za adresnu translaciju i protočnog segmenta za uspoređiva-nje bita valjanosti (vidi poglavlje Protočnost), koristi u izvedbi priručnih memorija.

9.7. KOD ZA ISPRAVLJANJE POGREŠAKA U primjeru 9.3. spomenuli smo kod za ispravljanje pogrešaka (ECC - Error Correcting Code). 0 čemu je riječ? Poluvodički memorijski moduli podložni su pogreškama. Posebno su osjetljive dinamičke memorije kod kojih se pristupom memorijskim ćelijama i nabijanjem kondenzatora izaziva pad napona na linijama za napajanje. Uz to, dinamičke su memorije osjetljive na radioaktivno zračenje. Plastična ili keramička kućišta u kojima su smješteni memorijski silicijski čipovi sadržavaju u tragovima radioaktivne materijale.Ti materijali zra-če alfa čestice koje mogu "pokvariti" podatke pohranjene u ozračenim memorijskim ćelija-ma, odnosno izazvati gubitak naboja na kapacitetu neke ćelije.

Općenito, pogreške u memorijskim modulima mogu se klasificirati na tzv. "tvrde" pogreš-ke (engl. hard failure) i "meke" pogreške (engl. soft failure). Tvrde pogreške su one koje se odnose na fizičke neispravnosti jedne ili većeg broja memorijskih ćelija koje trajno ostaju u stanju "1" ili "0" ili pak mijenjaju nekontrolirano svoja stanja. Meke pogreške su one koje se događaju rijetko i nisu ponovljive te nisu posljedica fizičke neispravnosti memorijske ćelije. Primjer takve pogreške je promjena sadržaja memorijske ćelije uslijed alfa zračenja ili slučajnog pada napona. Da bi se povećala pouzdanost memorijskog sustava, a time i po-uzdanost računarskog sustava, memorijske jedinice imaju posebne sklopove za otkrivanje 1 ispravljanje pogrešaka. Slika 9.20 prikazuje načelnu organizaciju memorijske jedinice sa sklopovima za otkrivanje i ispravljanje pogrešaka.

riječ (n+k)-bita

SI. 9.20 Organizacija memorijske jedinice sa sklopovima za otkrivanje i ispravljanje pogrešaka

Tijekom upisa n-bitnog podatka u memoriju, na temelju njegovih bitova generira se k-bitni ispitni kod (engl. check-bitcode) u generatoru ispitnog koda.Taj se ispitni kod također pohranjuje u memoriju. Dakle, u memoriji je pohranjen podatak i njemu pridružen ispitni kod, odnosno riječ duljine n + k bita. Kada se dohvaća (čita) pohranjeni podatak, onda se

Page 295: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 290 9. POGLAVLJE: MEMORIJSKI SUSTAV

k-bitni ispitni kod koristi za otkrivanje i ispravljanje pogreške, i to na sljedeći način: ponovo se n bita podatka koriste za novo generiranje ispitnog koda duljine k bita te se taj novo određeni kod uspoređuje 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 pogreška. Dohvaćeni se n-bitni podatak smatra ispravnim podatkom i upućuje se na sabirnicu.

ii) Pogreška je otkrivena, ali se može i ispraviti. Pogreška se ispravlja tako da se n-bitni podatak i bitovi za ispravljanje pogreške (engl. error correction bit) šalju u sklop za ispravljanje pogreške koji će generirati ispravan n-bitni podatak. Taj će se podatak proslijediti na sabirnicu.

iii) Pogreška je otkrivena, ali se ne može ispraviti. Memorijska jedinica šalje poruku o neispravnom podatku.

Zaštitni kodovi koji se koriste mogu biti kodovi za otkrivanje pogreška (engl. error-detec-ting code) i kodovi za otkrivanje i ispravljanje pogrešaka. Najjednostavniji kod koji se vrlo često koristi je paritetni kod (engl. parity code). Primjenom paritetnog kodiranja, utvrđuje se broj jedinica u riječi (podatku). Ako je broj jedinica neparan - riječ ima neparni paritet, inače riječ ima paran paritet. Kada se riječ pohranjuje u memoriju, pohranjuje se i paritetni bit (1 za neparni ili 0 za parni paritet riječi). Kada se riječ čita iz memorije, čita se i paritetni bit. Ako se paritet pročitane riječi ne podudara s pohranjenim bitom pariteta, dogodila se pogreška. Jednobitna paritetna shema može otkriti najviše jednu pogrešku u podatku. Ako su dva bita neispravna, 1-bitna paritetna shema ne može otkriti pogrešku. No takva shema otkriva pogrešku i u slučajevima kada se ona dogodila za neparan broj bitova.

Kodovi za otkrivanje i ispravljanje pogrešaka u memorijskim se sustavima obično klasifici-raju na temelju broja neispravnih bitova u riječi koji mogu biti otkriveni i broja bitova koji mogu biti ispravljeni. Tako govorimo o kodu za ispravljanje jedne pogreške SEC - Single-error-correcting ili o kodu za ispravljanje jedne pogreške i otkrivanju dvostruke pogreške SEC-DED - Single-error-correcting - double-error-detecting. Kod SEC-DED većinom se rabi u memorijskim sustavima. Kodovi za otkrivanje i ispravljanje pogrešaka koji se rabe u memo-rijskim sustavima obično se temelje na modificiranim Hammingovim kodovima.

Cijena koja se plaća da bi se kodovima za otkrivanje i ispravljanje pogrešaka povećala po-uzdanost memorijskih sustava jest povećanje duljine memorijske riječi (ujedno i kapacite-ta memorije). Tako se, na primjer, za 64-bitni podatak ako se koristi shema SEC (temeljena na modificiranom Hammingovom kodu) povećava duljina riječi 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 riječi 72 bita.

9.8. SEKUNDARNA MEMORIJA Sekundarna memorija, koja je obično naziv za jedinicu magnetskog diska, jedinicu ma-gnetske vrpce i jedinicu optičkog diska, ima tri važne dobre značajke: vrlo veliki kapacitet, neizbrisivost i malu cijenu po pohranjenom bitu podatka. Nažalost, ima i jedan nedostatak - relativno veliko vrijeme pristupa (tablica 9.1.). Bez obzira na kapacitet glavne memorije koji je premašio sva očekivanja i snove programera u ranoj fazi razvoja računarskih sustava, njezin kapacitet nije dovoljan za pohranu podataka i programa koji su potrebni korisniku. Čak i uz pretpostavku da je moguće pohraniti takvu veliku količinu podataka, izbrisivost

Page 296: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 291,

glavne memorije, koja je ostvarena kao poluvodička memorija, predstavlja nepremosti-vu prepreku trajnoj pohrani. Izbrisivost poluvodičke memorije, odnosno gubitak sadržaja kod ispada napajanja, zahtijeva rezervnu pohranu (engl. back-up) podataka i programa i u slučaju kada kapacitet memorije nije središnji problem. Sekundarna memorija ostvarena kao magnetska diskovna memorija ima dvojaku ulogu - ona predstavlja proširenje glavne memorije (zahvaljujući konceptu virtualne memorije, poglavlje 11.) i služi za rezervnu po-hranu podataka i programa.

U ovom ćemo odjeljku opisati osnovne značajke magnetske diskovne memorije te se ukratko osvrnuti na magnetske vrpčaste memorije i optičke memorije.

9.8.1. MAGNETSKA DISKOVNA MEMORIJA

Jedinica magnetskog diska predstavlja sustav za sebe. Ona se može promatrati kao sustav podijeljen na dva podsustava:

i) podsustav koji čine fizičke komponente kao što su glave za čitanje i pisanje, ručice na kojima se nalaze glave, jedna ili više kružnih ploča presvučenih magnetskim materi-jalom (magnetski diskovi), specijalan istosmjerni DC (engl. direct current) elektromo-tor (engl. spindle motor) za okretanje osovine na kojoj su učvršćeni diskovi. Obično se ovaj podsustav naziva HDA (Head Disk Assembly) i sadržava još samo elektronički sklop AEM (Arm Electronics Module) koji ostvaruje sučelje upravljačke jedinice diska (engl. Disk Controller) i glave za čitanje i pisanje;

ii) elektronički podsustav (engl. Drive Electronics) koji se sastoji od upravljačke jedini-ce diska, memorije, sklopova za zapis i čitanje podataka (engl. Recording Channel, Reading Channel), sklopova za upravljanje ručicama i sklopovima za upravljanje isto-smjernim elektromotorom.

Posebnu ulogu ima upravljačka jedinica diska. Ona pomoću sučelja ostvaruje vezu jedinice magnetskog diska s procesorom. Sučelje podržava rukovanje i izmjenu podataka, u skladu s protokolom, između jedinice magnetskog diska i procesora. Komunikacija se ostvaru-je standardnim sučeljem 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 način ostvaruje relativno jednostavno logičko sučelje koje dopušta procesoru da promatra disk kao još jednu memorijsku jedinicu (istina, sporiju od glavne memorije) u računarskom sustavu. Upravljačka jedinica diska prima naredbe od procesora, raspoređuje izvršavanje tih naredbi i izvještava procesor o završetku operacija uzrokova-nih tim naredbama. Upravljačka jedinica ostvaruje također sučelje s podsustavom HDA te pomoću sklopova za upravljanje ručicama (na kojim se nalaze glave za čitanje i pisanje) i sklopova za upravljanje istosmjernim elektromotorom izvodi postupak pretraživanja i nalaženje mjesta (sektora) na disku na kojem će se obaviti operacija čitanja (dohvata) ili pisanja (pohrane) podataka.

Otkrivanje i ispravljanje pogrešaka (ECC) te formatiranje podataka također je jedan od te-meljnih zadataka upravljačke jedinice diska. Uz to, upravljačka jedinica upravlja diskovnom priručnom memorijom (engl. disk cache) koju ima većina suvremenih diskovnih jedinica. Upuštanja diskovne jedinice u rad te njezino isključivanje također je u nadležnosti uprav-ljačke jedinice diska. Upravljačka jedinica diska je, zapravo, računalo čiji je blok-dijagram prikazan na slici 9.21.

Page 297: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 292 9. POGLAVLJE: MEMORIJSKI SUSTAV

procesor

SI. 9.21 Blok-dijagram upravljačke jedinice diska

Primjer 9.5.

Opišimo aktivnosti upravljačke jedinice diska tijekom čitanja. Nakon primitka naredbe za čitanje podataka s diska, upravljačka jedinica mora potražiti i naći zahtijevani blok po-dataka na disku, pročitati ga, obaviti provjeru ispravnosti i možebitno ispraviti pogreške, formatirati ga te pohraniti ga u spremnik, i konačno, obavijestiti procesor daje naredba obavljena.

Page 298: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 293,

9.8.2 ORGANIZACIJA PODATAKA NA DISKU

Središnje građevne komponente magnetske diskovne jedinice jesu rotirajuća aluminijska ili staklena ploča presvučena magnetskim materijalom i pokretna ručica s glavom za či-tanje i pisanje. Zahvaljujući magnetskom obliku zapisa diskovna je memorijska jedinica neizbrisiva što znači da pohranjeni podaci ostaju sačuvani i nakon prestanka električnog napajanja. Jedinica ima jednu do 12 kružnih ploča koje su pričvršćene na zajedničkoj oso-vini i vrte se brzinom od 3600 pa sve do 15000 okretaja u minuti (RPM - Revolutions Per Minute). Podaci se zapisuju na obje površine ploče tako da svaka ploča ima dvije glave za čitanje i pisanje. Promjer kružne ploče, ovisno o tipu diskovne jedinice, tipično se kreće 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 kružne ploče magnetskog diska

Podaci su zabilježeni uzduž kružnih staza (engl. track) koje čine koncentrične kružnice. Broj staza kreće se od 10000 do 50000 po jednoj površini kružne ploče. Dogovorno, staze su numerirane tako da staza s najvećim 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 različitim kružnim pločama jedinice diska oblikuju cilindar (engl. cylinder). Staza nije fizički ugravirana u površinu diska već predstavlja prsten magnetizira-

Page 299: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 294 9. POGLAVLJE: MEMORIJSKI SUSTAV

nog materijala nad kojim na zračnom jastuku lebdi glava za čitanje ili pisanje (udaljena oko 0.01 |um od površine ploče). Širina staze je samo nekoliko mikrona (10"6 m) i ovisi o veličini glave za čitanje i pisanje te preciznosti njezinog radijalnog pozicioniranja. Svaka je staza podijeljena na sektore. Staza tipično sadržava od 100 do 500 sektora. Podaci pohranjeni u sektoru predstavljaju osnovnu jedinicu podataka koji se pohranjuju ili čitaju s diska. Sektor tipično pohranjuje 512 bajtova, iako ima izvedbi koje imaju sektore koji pohranjuju i 4096 bajtova. Slika 9.22. prikazuje organizaciju jedne kružne ploče diska. Na slici 9.22 vidimo da se staze ne protežu do samog središta kružne ploče zato što se vrlo kratke staze blizu sre-dištu vrtnje ne mogu djelotvorno iskoristiti. Čak i uz to ograničenje, odnos duljina vanjske staze i unutarnje staze je 2:1.

Različite duljine staza razlog su različitom broju sektora u stazama - unutarnje staze imaju manji broj sektora, dok vanjske staze imaju veči broj sektora. Sektor koji pohranjuje jedi-nicu podataka (npr. 512 bajtova) organiziran je tako da ima zaglavlje (engl. preamble) koje se sastoji od oko 10 bajtova i koje dopušta sinkronizaciju glavi za čitanje i pisanje, zatim sadržava tzv. adresnu značku (duljine nekoliko bajtova) koja označava kraj zaglavlja i po-četak podataka (npr. 512 bajtova korisničkih podataka kodiranih RLL (Run-Lenght-Limited) kodom tako da se fizički zapis sastoji od 544 bajtova). Zapisu podataka slijedi polje zašti-te ECC (Error Correcting Code) tipično duljine oko 40 bajtova. Ovisno o izvedbi, zaštitnom polju može biti pridruženo polje cikličke zaštite CRC (Cyclic Redundancy Checksum) čime se povećava integritet korisničkih podataka. Između slijednih sektora u stazi postoji mali razmak (engl. intersector gap). Slika 9.23 prikazuje dio staze s podrobnijom organizacijom sektora.

polje zaštite

širina \ \ ^ - - p o d a c i staze \ —— adresna značka

4-8 ^m ^ ^ zaglavlje

SI. 9.23 Dio staze s prikazom organizacije sektora

Svaki sektor je u diskovnoj jedinici određen fizičkom adresom PBA (Physical Block Address) koja se sastoji od broja cilindra (odnosno broja staze; između 0 i C -1 , gdje je C ukupan broj staza na jednoj površini ploče), od broja površine, odnosno indeksa glave za čitanje i pisanje te od broja (indeksa) sektora (između 0 i N -1, gdje je N ukupan broj sektora u sta-zi). Takav se oblik adrese naziva još i CHS (Cylinder-Head-Sector) adresa. Na primjer, fizička adresa kojom se jednoznačno određuje podatak pohranjen na disku može biti C = 26300, H = 4 i S = 432. Adresa CHS, zapravo, predstavlja koordinate podataka u trodimenzional-: nom prostoru.

Gustoća zapisa (Gb/cm2) ovisi o gustoći staza (broj_staza/cm) te o linearnoj gustoći bitova j uzduž staze (b/cm) i tipično se kreće od 3 do 10 Gb/cm2. Linearna gustoća bitova ovisi o '

Page 300: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 295,

čistoći magnetske površine i kakvoće zraka (ne zaboravimo da glava lebdi nad kružnom pločom) i iznosi od 50000 do preko 100000 b/cm. Da bi se postigla velika kakvoća površine i zraka, većina je diskovnih jedinica tvornički hermetički zatvorena da bi se spriječio ulazak prašine.

Kada se govori o kapacitetu magnetske diskovne memorije, razlikuje se kapacitet forma-tiranog diska od neformatiranog. Proizvođači diskovnih jedinica isporučuju formatirane jedinice što podrazumijeva daje inicijalno upisana informacija o stazi i sektoru na svim po-vršinama 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 pogrešaka nije moguće isprav-no pohraniti i pročitati podatke iz sektora, onda se taj sektor označava kao "loš" (engl. bod sector) tako da se može izbjeći njegovo korištenje od strane operacijskog sustava. Zbog postojanja, zaglavlja, adresne značke, polja zaštitnog koda, razmaka između sektora, re-zervnih staza koje dopuštaju "popravak" neispravnih staza i sektora, kapacitet formatirane diskovne jedinice znatno je manji od kapaciteta neformatirane jedinice čija se procjena temelji na gustoći zapisa.

9.8.3. STATIČKI I DINAMIČKI PARAMETRI DISKOVNE JEDINICE

Pod statičkim se parametrima magnetske diskovne jedinice podrazumijevaju parametri koji se odnose na njezin kapacitet:

i) površinska gustoća izražava se brojem bitova po jedinici površine i računa se kao: 1 / (razmak između bitova x razmak između staza);

ii) maksimalna površinska gustoća jest gustoća koja se odnosi na područje staze s naj-manjim rad iju som;

iii) maksimalna linearna bitovna gustoća jest bitovna gustoća zapisa po jedinici duljine za stazu s najmanjim radijusom;

iv) prosječna bitovna gustoća je ukupan kapacitet površine podijeljen s ukupnom povr-šinom predviđenom za zapis podataka;

v) neformatirani kapacitet jest ukupan broj bitova po sektoru pomnožen s brojem sek-tora na disku;

vi) formatirani kapacitet diskovne jedinice računa se kao: (broj_bajtova_podataka / sektor) x (broj_sektora / staza) x (broj_staza / površina) x (broj_površina);

Primjer 9.6.

Izračunajmo neformatirani kapacitet diskovne jedinice za koju su poznati sljedeći poda-ci: diskovna jedinica ima dvije kružne ploče s 20000 cilindara, prosječno 520 sektora po stazi te 544 bajtova po sektoru.

Dvije kružne ploče imaju ukupno 4 površine za zapis podatka. Kapacitet neformatirane diskovne jedinice iznosi:

4 x 20000 x 520 x 544 = 2.263 x 1010 bajtova, odnosno izraženo u GB: (2.263 x IO10)/230 = 21.076 GB.

Uz pretpostavku da se oko 10% od ukupnog kapaciteta gubi na razmake između sekto-ra, zaglavlja, adresne značke i na područje zaštite (CRC i EEC) formatirani kapacitet dis-kovne jedinice bio bi oko 18 GB.

Page 301: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 296 9. POGLAVLJE: MEMORIJSKI SUSTAV

Dinamički parametri diskovne jedinice odnose se na vrijeme pristupa podacima tijekom operacije pisanja ili čitanja. Vrijeme pristupa određuje se na temelju triju operacija:

i) pozicioniranje glave za čitanje i pisanje na odgovarajuću stazu.Ta se operacija naziva traženje (engl. seek), a vrijeme potrebno za postavljanje glave na željenu stazu naziva se vrijeme traženja (engl. seek time);

ii) pristup željenom sektoru na stazi. Nakon što se glava nalazi na odgovarajućoj stazi, mora se pričekati da se željeni sektor na temelju rotacije ploče nađe pod glavom. Vrijeme potrebno da bi se ta operacija obavila naziva se rotacijska latencija (engl. rotational latency) ili rotacijsko kašnjenje. Jasno, ono ovisi o brzini vrtnje kružne ploče;

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 veličini sektora, brzini vrtnje i gustoći zapisa podataka na stazi.

Vrijeme traženja ovisi o položaju gdje se glava za čitanje i pisanje nalazila kad je zapri-mljen novi zahtjev te kako brzo može putovati s trenutne staze na željenu stazu. Ove su vrijednosti nepoznate te se koristi srednje ili prosječno vrijeme traženja. Prosječno se vrijeme traženja određuje na temelju ukupnog vremena potrebnog za sva moguća traženja i broja mogućih traženja. To vrijeme deklarirano od strane proizvođača diskova iznosi od 3 ms do 13 ms.

Sličan je problem i s rotacijskom latencijom. Koristi se srednje vrijeme rotacijske latencije koje se računa kao vrijeme potrebno za rotaciju ploče za 180 stupnjeva. Na primjer, za br-zinu 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 između 70 i 125 MB/s. Kada diskovna jedinica koristi po-sebnu priručnu memoriju, tzv. disk cache brzina prijenosa povećava se na 375 MB/s i više.

Vremenu pristupa koje se sastoji od navedenih triju vremena pridodaje se još i vrijeme upravljačke jedinice diska (engl. controller time) koje zahtijeva upravljačka jedinica za upravljanje diskom i za prijenos podataka između diska i memorije.

Uz prethodno navedene dinamičke 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 određeno razdoblje (period) (engl. substained data rate). Brzina podataka u snopu odnosi se na maksimalnu brzinu prijenosa podataka jed-nom kada je glava za čitanje i pisanje prispjela na željeni sektor.

Primjer 9.7.

Odredimo prosječno vrijeme čitanja iii pisanja sektora koji se sastoji od 512 bajtova za diskovnu jedinicu koja ima sljedeće podatke: brzina vrtnje 15000 RPM, prosječno vrije-me traženja 3 ms, brzina prijenosa 125 MB/s i vrijeme upravljačke jedinice neka je 0.2 ms.

Prosječno vrijeme pristupa jednako je sumi koju čine prosječno vrijeme traženja, pro-sječno vrijeme rotacijske latencije, vrijeme prijenosa i vrijeme upravljačke 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.

Page 302: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 297,

Primjer 9.8.

Tablica 9.3. prikazuje tehničke značajke dviju diskovnih jedinica (Seagate ST31000340NS i Hitachi DK23DA).

Tehničke značajke Seagate ST31000340NS Hitachi DK23DA40

Promjer kružne ploče (inč) 3.5 2.5

Kapacitet formatiranog diska (GB) 1000 40

Broj površina (glava) 4 4

Brzina vrtnje (RPM) 7200 4200

Prosječno vrijeme traženja (ms) 8.5 13

Minimalno vrijeme traženja (ms) 1.0 3

Sučelje, brzina prijenosa (MB/s) SATA (Serial ATA), 375 ATA-5,100

Tipično područje primjene Poslužitelj Prijenosno računalo

Potrošak el. energije (W) 15 2.3

Tablica 9.3. Tehničke značajke dviju diskovnih jedinica

Jedna od važnih značajki diskovne jedinice jest njezina pouzdanost. Ona se izražava parametrom MTBF (Mean Time Between Failure) koji predstavlja statističku mjeru sred-njeg vremena do kvara. Srednje vrijeme do kvara MTBF za suvremene diskovne jedinice iznosi više od 1000 000 sati što znači da se može očekivati da će diskovna jedinica raditi bez kvara više od 100 godina. Na primjer, MTBF za disk Seagate ST31000340NS iznosi 1200 000 sati.

9.8.4. PRIRUČNA DISKOVNA MEMORIJA (ENGL. DISK CACHE)

Priručna diskovna memorija je memorija s izravnim pristupom koja se koristi da bi se sma-njio broj pristupa disku. Načelo rada diskovne priručne memorije slično je onom kada procesor pristupa brzoj priručnoj memoriji umjesto sporijoj glavnoj memoriji (poglav-lje 10.). Pojednostavnjeno, funkciju priručne diskovne memorije možemo opisati ovako: kad su potrebni podaci pohranjeni u određenom sektoru, s diska se dohvaćaju i susjedni sektori (ili čak svi sektori sa staze nad kojom je pozicionirana glava za čitanje i pisanje). Dohvaćeni sektori pohranjuju se u priručnu 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 znači da se nalaze se na istoj stazi), oni će biti dohvaćeni iz brze priručne diskovne memorije umjesto s diska. Ako se pohrane svi sektori jedne staze u priručnu diskovnu memoriju, skoro se u potpunosti eliminira vrijeme rotacijske latencije diska: kad upravljačka jedinica diska primi zahtjev za pristup sektoru na disku, ona prvo provjerava nalazi li se sektor s traženim podacima u priručnoj diskovnoj memoriji. Ako se sektor nalazi pohranjen u priručnoj diskovnoj memoriji, on se dohvaća iz memorije (operacija čitanja) ili se on modificira (operacija pisanja) u priručnoj diskovnoj memoriji. Naravno, u tom se slučaju ne pristupa sektoru na disku. Kad se dogodi da se tra-ženi sektor nalazi u priručnoj diskovnoj memoriji, govorimo o pogotku priručne diskovne

Page 303: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 298 9. POGLAVLJE: MEMORIJSKI SUSTAV

memorije (engl. hit of disk cache), a mjeru pogotka izražavamo omjerom pogotka (poglav-lje 10.). Eksperimentalno je utvrđeno da se omjer pogotka za priručne diskovne memorije kreće oko 90%.

Operacija pisanja u sektor za koji je postignut pogodak obavlja se tako da se obavi modi-fikacija sektora u priručnoj diskovnoj memoriji, a sadržaj sektora na disku modificira se tek u fazi zamjene kada se taj trenutno nekorišteni (neaktivni) sektor vraća natrag na disk. Ova se tehnika obnavljanja sadržaja diska naziva„kopiranje nazad" (engl. copy back, writeback). Postupak kopiranja nazad opisan je u poglavlju 10.

Kad se dogodi promašaj, odnosno kad se traženi sektor ne nalazi u priručnoj diskovnoj memoriji, onda se obavlja zamjena kojom se mora prvo napraviti mjesta za traženi sektor u diskovnoj priručnoj memoriji, i to tako da se neki neaktivni sektori (ili čak svi sektori jedne staze) vrate natrag na disk, a na njihovo mjesto pohrane traženi sektor i njegovi susjedni sektori (ili svi sektori u stazi).

Diskovne jedinice imaju priručne memorije kapaciteta od 0.125 MB do 32 i više MB. Na pri-mjer, diskovna jedinica Seagate ST31000340NS ima priručnu memoriju kapaciteta 32 MB, a Hitachi DK23DA40 priručnu memoriju kapaciteta 2 MB. (Primjer 9.8.).

Ubrzanje rada diskovne jedinice uporabom priručne diskovne memorije značajno je jer je vrijeme potrebno za pretraživanje i dohvat sektora iz priručne memorije u usporedbi s prosječnim vremenom pristupa disku vrlo malo.

Primjer 9.9,

Ocijenimo ubrzanje rada diskovne jedinice s priručnom diskovnom memorijom Hitachi DK23DA40 iz primjera 9.8. Diskovna jedinica je kapaciteta 40 GB i ima prosječno 591 sektor po stazi. Sektor je veličine 512 B. Disk, odnosno 2 kružne ploče, rotiraju brzinom od 4200 RPM. Prosječno vrijeme traženja za diskovnu jedinicu iznosi 13.0 ms. Uz pretpo-stavku da se cijele staze pohranjuju u priručnu memoriju diskovne jedinice i daje omjer pogotka 90%, ocijenimo ubrzanje rada diskovne jedinice u odnosu na diskovnu jedinicu s jednakim parametrima ali bez priručne memorije.

Prosječno vrijeme pristupa sektoru jednako je zbroju prosječnog vremena traženja i pro-sječnog 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 prosječnog vremena traženja 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 priručnoj diskovnoj memoriji koja je trebala 27.28 ms za do-hvat svih sektora sa staze. Ubrzanje iznosi:

(10 x 20.16 ms) / 27.28 ms = 7.39

Page 304: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 299,

Stvarno je ubrzanje nešto manje jer smo zanemarili da latencije koje se odnose na po-hranu i dohvat podataka iz priručne diskovne memorije i aktivnosti upravljačke jedinice diska.

9.9. POLJE DISKOVA RAID (REDUNDANT ARRAY OF INEXPENSIVE DISKS) U posljednja dva desetljeća prosječan se kapacitet diskova povećavao 70% godišnje, dok su se vrijeme pristupa i brzina prijenosa poboljšavali umjerenije - svega 7% godišnje. Razlozi tom umjerenijem poboljšanju brzine prijenosa jesu ograničenja koja postavljaju elektro-mehanička svojstva diska - brzina vrtnje kružnih ploča i postavljanje ručice s glavom za čitanje i pisanje na željenu stazu. Za ilustraciju napretka diskovne tehnologije navedimo da je krajem devedesetih godina prošlog stoljeća diskovna jedinica velikih performansi imala kapacitet 9 GB i brzinu vrtnje ploča 5400 RPM. Godine 2005. bile su raspoložive diskovne jedinice kapaciteta 500 GB i brzinu vrtnje 7200 RPM. Postoje primjene računarskog sustava koje zahtijevaju kapacitet diskovnih jedinica i brzinu prijenosa koje premašuju značajke postojećih najbržih i najvećih diskovnih jedinica. Izgradnja diskovnih jedinica još većeg kapaciteta i brzine tehnološki je ipak moguća, ali nije ekonomski opravdana. Ekonomski opravdano rješenje problema velikog kapaciteta i ubrzanje prijenosa podataka temelji se na uporabi višediskovnog sustava koji se sastoji od polja diskova (engl. disk array) kojima se pristupa paralelno. Podaci se pritom mogu raspoređivati po diskovima u polju na različite načine. U najjednostavnijoj izvedbi nema logičke povezanosti pojedinih diskovnih jedinica u polju. Svaka je diskovna jedinica zadržala svoj vlastiti identitet i može se adresirati neza-visno. Obično se takva organizacija naziva JBOD (Just-a-bunch of disks - samo nakupina diskova).

U drugom načinu raspoređivanja cijelo se polje diskova promatra kao jedan logički adresni prostor koji je podijeljen na blokove čvrste duljine koji se nazivaju pojasne jedinice (engl. stripe unit). Te se pojasne jedinice smještaju na diskove u polju kružnim dodjeljivanjem (engl. round-robin) i oblikuju pojas (slika 9.24). Na taj se način datoteka koja je veća od jed-ne pojasne jedinice pohranjuje na veći broj diskova u diskovnom polju. Slika 9.24 prikazuje kako se četiri datoteke različitih veličina pohranjuju u polju diskova koje se sastoji od tri diska. Datoteka a sastoji se od četiri pojasne jedinice i "raspršena"je na sva tri diska tako da disk 0 sadržava dvije pojasne jedinice {al i a4), a preostala dva diska po jednu pojasnu jedi-nicu - a2 je na disku 1, a3 je na disku 2. Datoteka b, koja se sastoji od sedam pojasnih jedini-ca, raspršena je na također na sva tri diska tako da svaki od diskova sadržava više pojasnih jedinica. Datoteka cje mala i sastoji se samo od jedne pojasne jedinice koja je smještena na disku 2. Datoteka d sastoji se od tri pojasne jedinice koje su smještene na diskovima 0,1 i 2.

Početni motiv organizacije podataka na disku u obliku pojasa koji se sastoje od pojasnih jedinica bio je paralelni prijenos podataka s više diskova i na taj način povećanje brzine prijenosa. Ubrzanje se postizalo ako je količina podataka koji se prenose bila dovoljno ve-lika tako da su pojasne jedinice bile smještene na veći 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, predložila je posebnu organizaciju polja diskova koju su nazvali RAID {Redundant Array of Inexpensive Disks) - za-

Page 305: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 300 9. POGLAVLJE: MEMORIJSKI SUSTAV

lihosno (redundantno) polje jeftinih diskova. Proizvođači diskovnih jedinica zbog komer-cijalnih su razloga izmijenili naziv u Redundant Array of Independent Disks - zalihosno polje nezavisnih diskova.

pojasna jedinica

diskO disk! disk 2

al a2 a3

a4 bi b2

b3 b4 b5

b6 b7 cl

- pojas

SI. 9.24 Primjer smještanja četiriju datoteka, koje se sastoje od različitog broja pojasnih jedinica u polje od tri diskovne jedinice

RAID se pojavljuje u šest osnovnih načina izvedbe: od RAID 0 do RAID 5. Svaki od načina izvedbe ima sljedeće tri značajke:

i) operacijski sustav vidi RAID skupinu fizičkih diskovnih jedinica kao jednu logičku dis-kovnu jedinicu;

ii) podaci su raspoređeni na fizičke diskovne jedinice u skupini; iii) zalihosni diskovni kapacitet upotrebljava se za pohranu zaštitnog koda koji jama

oporavak podataka u slučaju kvara diskovne jedinice.

RAID je djelotvorna zamjena za jednu veliku i skupu diskovnu jedinicu (SLED-Single Large Expensive Disk).

Opišimo osnovne načine 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 fizički blokovi, sektori ili neke druge jedinice podataka. One se smje-štaju na diskove kružnim dodjeljivanjem (engl. round-robin). Slika 9.25 prikazuje logičku diskovnu jedinicu i način smještanja pojasnih jedinica na četiri fizičke diskovne jedinice diskovnog polja RAID 0 kružnim dodjeljivanjem. Skup logički slijednih pojasnih jedinica, koji se preslikava tako da se točno po jedna pojasna jedinica dodijeli svakom disku u dis-kovnom polju, naziva se pojas. Ako imamo polje od k diskovnih jedinica, prvih se k logičkih pojasnih jedinica fizički pohranjuje u prvom pojasu, sljedećih 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 logičkih 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 između memorije i pojedinih diskovnih jedinica u polju,

ii) količina podataka koja sudjeluje u prijenosu predočena logičkim slijednim pojasnim jedinicama mora biti puno veća od veličine pojasne jedinice.

Page 306: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 301,

logički disk fizički disk 0 fizički d i s k ! fizički disk 2 fizički disk 3

pojasna jedinica 0

pojasna jedinica 1

pojasna jedinica 2

pojasna jedinica 3

pojasna jedinica 4

pojasna jedinica 5

pojasna jedinica 6

pojasna jedinica 7

pojasna jedinica 8

pojasna jedinica 9

pojasna jedinica 0

pojasna jedinica 4

pojasna jedinica 8

programska oprema za upravljanje

pol jem diskova

pojasna jedinica 1

pojasna jedinica 5

pojasna jedinica 9

pojasna jedinica 2

pojasna jedinica 6

pojasna jedinica 3

pojasna jedinica 7

SI. 9.25 Logička diskovna jedinica i četiri fizičke diskovne jedinice diskovnog polja RAID 0

Ako su zadovoljena potonja dva uvjeta, tada je paralelni prijenos podataka s višestrukih diskova puno brži od prijenosa s jednog diska velikog kapaciteta. U idealnom bi slučaju postignuto ubrzanje pristupa podacima iznosilo k puta, gdje je k broj diskova u polju.

No uvišestručenje diskova ima negativan utjecaj na pouzdanost diskovnog sustava - sred-nje vrijeme do kvara MTBF sada je za faktor k kraće.

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 logička pojasna jedinica preslikava na dva odvoje-na fizička 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

Page 307: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 302 9. POGLAVLJE: MEMORIJSKI SUSTAV

postiže se instalacijom novog diska i kopiranjem sadržaja s odgovarajućeg zrcaljenog dis-ka. Osim toga, RAID 1 nudi još jednu pogodnost: zahtjev za čitanjem može biti poslužen od strane jednog od dva diska (osnovnog ili zrcaljenog) koji sadržavaju iste podatke ovisno o tome koji od njih zahtijeva kraće vrijeme traženja i rotacijske latencije. Na taj se način može brzina čitanja skoro podvostručiti.

Operacija pisanja zahtijeva obnavljanje sadržaja obje pojasne jedinice (na osnovnom disku i zrcaljenom disku), međutim, to se može izvesti paralelno tako da pisanje ne narušava per-formansu diskovnog sustava. U tom je slučaju vrijeme pohrane podatka na disk jednako onom koje odgovara disku s duljim vremenom traženja i rotacijske latencije.

Jedan od osnovnih nedostataka RAID 1 jest njegova cijena - zahtijeva se dva puta veći diskovni prostor od onog koji određuje logički disk. ili drugim riječima - pola od ukupnog raspoloživog diskovnog kapaciteta troši se za postizanje zalihosti.

Za razliku od RAID 0 i RAID 1 diskovne organizacije koje obično imaju pojasne jedinice veli-čine sektora, RAID 2 se koristi pojasnim jedinicama veličine riječi, bajta ili čak bita. Zalihost se u RAlD-u 2 postiže uporabom koda za ispravljanje pogrešaka (ECC). Na primjer, ako se rabi Hammingov kod (7,4), gdje je 7 broj bitova kodne riječi, a 4 broj bitova koji nose in-formaciju, tada se tri zaliha diska koriste za svaki od četiri diskova koji pohranjuju po jedan bit podatka (pojasna jedinica je veličine jednog bita). Općenito, vrijedi da Hammingov kod kojim se može ispraviti jedna pogreška (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) računaju se tri korekcijska bita i svaki se od njih pohranju-je na po jedan od redundantnih diskova. Operacijom čitanja istodobno se pristupa svim diskovima u polju. Zahtijevani se podaci zajedno s korekcijskim kodom prosljeđuju uprav-ljačkoj jedinici diskovnog polja. Ako se dogodila jednostruka pogreška, upravljačka će ju jedinica prepoznati i grešku trenutno ispraviti pa vrijeme pristupa neće biti produljeno. Tijekom operacije pisanja mora se pristupiti svim diskovima u polju (osnovnim i onim u koje se pohranjuje korekcijski kod). Organizacija RAID 2 obično 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 očekuju česte pogreške. No u izvedbama koje imaju povećanu pouzdanost pojedinih diskova i diskovnih jedinica uporaba organizacije RAID 2 teško se može 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

Page 308: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 303

Diskovna organizacija RAID 3 koristi pojasne jedinice veličine bita i po tomu je slična or-ganizaciji RAID 2. No umjesto uporabe Hammingovog koda koristi jednostavnu shemu paritetne zaštite pri čemu se računa paritetni bit za skupinu podatkovnih bitova. Paritetna zaštita pohranjuje se na odgovarajuću poziciju tzv. paritetnog diska. Na taj se način zahti-jeva samo jedan zalihi disk (paritetni disk), i to bez obzira na to koliko ima osnovnih diskov-nih jedinica. Slika 9.28 ilustrira takvu diskovnu organizaciju. U slučaju 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, za-mijeni 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 računa kao:

p = d0®d1®d2®d3®d4®d5®d6®d7,

gdje j e © logička operacija ISKLJUČIVO ILI.

Pretpostavimo da je jedan od osnovnih diskova ispao iz rada, primjerice onaj koji pohra-njuje bitove podataka dr Rekonstrukcija podataka izvodi se na sljedeći način:

d3 = d0®d1®d2®d4®d5®d6®d7®p.

Pokažimo daje to zaista tako: ako jednadžbi za p na obje strane pridodamo ®d3, dobivamo: , p®d3 = d0®d1®d2®d3®d4®d5®d6® d7® d3

p®d3 = dQ®d1®d2®d4®d5®d6®d7,jerjed3®d3 = 0.

Ako sada potonjoj jednadžbi s lijeve i desne strane dodamo ©p, dobivamo: d3 = d0®d1®d2®d4®d5®d6®d7®p.

Vidimo da se zaista sadržaj u pojasu podataka u bilo kojem od osnovnih diskova u polju može rekonstruirati na temelju preostalih podataka u pojasu.

diskO disk 1 disk 2 disk 3 disk 4

12

16

osnovni diskovi

SL 9.28 Diskovna organizacija RAID 3

11

15

19

disk na ko jem se pohranju ju par i tetni b i tov i

U diskovnoj organizaciji RAID 3 podaci su raspršeni u vrlo male pojasne jedinice pa stoga RAID 3 postiže vrlo velike brzine prijenosa. Jednim se zahtjevom izvodi istodobni prijenos podataka sa svih osnovnih diskova.

Page 309: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 304 9. POGLAVLJE: MEMORIJSKI SUSTAV

Diskovna organizacija RAID 4 (slika 9.29) slična je organizaciji RAID 3 po tome što za ko-rekciju jednostrukih pogrešaka koristi jedan paritetni disk. No umjesto pojasne jedinice veličine bita koristi se sektor. Na primjer, ako je svaka pojasna jedinica duljine n bajtova, za sve se pojasne jedinice podataka u pojasu izvodi operacija ISKLJUČIVO ILI i dobiva se n bitova duga pojasna jedinica koja se pohranjuje na odgovarajuću poziciju paritetnog dis-ka. 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)

P 0 2 - 1 5 )

osnovni diskovi

SI. 9.29 Diskovna organizacija RAID 4

paritetni disk

Diskovna organizacija RAID 5 organizirana je slično kao i RAID 4, samo što su paritetne pojasne jedinice raspoređene po svim diskovnim jedinicama (slika 9.30).

disk 0 disk 1 disk 2 disk 3

p(28-31)

disk 4

p(0-3)

11

15

19

p(20-23)

SI. 9.30 Diskovna organizacija RAID 5

Osim šest osnovnih izvedbi diskovnih organizacija RAID postoji i više inačica, na primjer RAID 6 (organizacija sa zaštitom od dvostrukog kvara), RAID 0 + 1 (RAID 01) i RAID 1 + 0 (RAID 10) (složeni diskovni sustavi koji kombiniraju značajke RAID 0 i RAID 1) te RAID susta-vi koji kombiniraju različite osnovne RAID izvedbe (RAID 0 + 5, RAID 5 + 0 (RAID 50), RAID 1 + 5 (RAID 15)).

Page 310: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 305,

9.10. SAVITLJIVI DISK (ENGL. FLOPPY DISK) Savitljivi disk ili disketa je zamjenjiva ili premjestiva (engl. removable) sekundarna memo-rija kojom se podaci mogu prenositi između računarskih sustava. U uporabi se savitljivi disk nalazi od šezdesetih godina prošlog stoljeća, ali zbog dugog vremena pristupa i ma-log kapaciteta danas je skoro zastarjela komponenta. Izvorno, disketa je bila izrađena na tankoj plastičnoj savitljivoj kružnoj ploči koja je bila presvučena magnetskim materijalom. Ploča je bila smještena u 8-inčnom kvadratnom zaštitnom ovitku. Kapacitet 8-inčne dis-kete (SSSD - Single Sided Single Density) bio je 300 KB. 8-inčne diskete DSSD (Double Sided Single Density) bile su kapaciteta 500 KB. Poslije 8-inčnih disketa pojavile su se 5 1/4-inčne diskete skromnog kapaciteta od svega 80 KB, te one 5 1/4-inčne DD (Double Density) kapa-citeta 360 ili 800 KB. Nakon toga u uporabi su bile 3 1/2-inčne diskete kapaciteta 1.44 MB (u nekim su se izvedbama pojavljivale i diskete kapaciteta 2.88 MB). Disketa 3 1/2 inča, kapa-citeta 1.44 MB imala je 80 staza s 18 sektora po stazi. Kružna se ploča okretala brzinom od 360 RPM što je samo oko 2 % - 4% brzine vrtnje magnetskog diska, a vrijeme latencije bilo je 166 ms. Gustoća zapisa bila je oko 17000 bita po inču. Pred sam kraj 20. stoljeća pojavile su se diskete 3 Vi inča HiFD (High capacity Floppy Disk) kapaciteta 150/200 MB.

Disketna jedinica, koja se danas rijetko nalazi i u osobnim računalima, imala je glave za čitanje i pisanje, upravljane koračnim motorima, koje su kroz otvor na zaštitnom omotu pristupale magnetskom mediju. Glava je, za razliku od jedinica magnetskog diska, bila u fizičkom kontaktu s površinom kružne ploče. Da bi se spriječilo habanje glave, ali i ma-gnetskog omotača, pogonski se motor automatski zaustavljao nakon određenog vremena neaktivnosti jedinice.

Jedinicu diskete uspješno su zamijenile jedinice kao što su upisno-ispisne neizbrisive me-morije kao što su USB (Universal Serial Bus) memorijski štapić (engl. USB memory stick) i optičke 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 plastične vrpce presvučene magnetskim materijalom, obično upakirane u malu kasetu. Podaci se pohra-njuju 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. Današnje jedinice magnetske vrpce imaju nekoliko stotina staza. Kao i u slučaju magnetskog diska, podaci se čitaju i upisuju u blokovima koji se nazivaju fizičkim zapisima (engl. physical re-cord). Blokovi na vrpci odvojeni su tzv. međuzapisnim razmacima. Nepokretna glava za čitanje i pisanje istodobno pristupa svim stazama na vrpci koja se kreće konstantnom brzi-nom. Brzina prijenosa podataka ovisi o gustoći zapisa i brzine vrpce. Na primjer, za jedinicu s 80 staza i gustoćom zapisa od 110 Kb po inču te brzinom vrpce od 50 inča/s maksimalna brzina prijenosa je 55 MB/s. Takva vrpca duljine 200 m ima kapacitet 8.661 GB, dok je vrije-me premotavanja cijele vrpce oko jedne minute.

Magnetske vrpce danas se prvenstveno koriste kao memorija za rezervnu pohranu sadr-žaja s diskova te arhiviranje podataka. Razvojem tehnologije magnetskih diskova i padom njihove cijene uporaba je magnetskih vrpci u skoroj budućnosti upitna jer ih magnetski diskovi istiskuju iz uporabe.

Page 311: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

^ 306 9. POGLAVLJE: MEMORIJSKI SUSTAV

9.12. OPTIČKE MEMORIJE

9.12.1. CD-ROM

lako je optičko pohranjivanje informacija najstarija metoda koju je pračovjek koristio u svojim pećinskim crtežima, tek je 1980. James T. Russel razvio načela optičkog pohranjiva-nja informacija, a 1982. tvrtke Philips i Sony na tržište su plasirale prvi kompaktni disk CD {Compact Disk) koji je pohranjivao oko 650 MB audioinformacije. Optički disk ili kompaktni disk (slika 9.31) kao ispisna memorija CD-ROM promijenio je tehnologiju sekundarne me-morije i predstavlja prenosivu memoriju velikog kapaciteta niske cijene. CD-ROM može pohranjivati od 650 MB pa sve do 900 MB podataka (što približno odgovara oko 400 tisuća stranica teksta) na jednoj strani čvrste plastične kružne ploče promjera 120 mm i debljine 1.2 mm, koja ima rupu promjera 15 mm u svom središtu. Površina ploče ima dugu spiralnu stazu "utisnutu" u polikarbonatnu ploču, presvučenu 125 nm debelim slojem aluminijskog reflektirajućeg materijala i prozirnim zaštitnim plastičnim slojem. Informacija je pohranje-na u binarnom obliku uzduž spiralne staze koja se od unutrašnjosti rasprostire do oboda kružne ploče. Podaci su pohranjeni u obliku udubina (engl. pit) promjera 0.8 mikrona i iz-bočina (engl. land) između 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 re-flektirajućeg aluminijskog sloja. Kad zrake padnu na izbočinu, odnosno mjesto između dvi-je udubine, svjetlo se reflektira natrag i može se otkriti osjetnikom. Reflektirano je svjetlo u tom slučaju takvo da su zrake u fazi. Ako zrake pogode udubinu, oko pola od njih padne na izbočinu, a pola u udubinu. U tom slučaju reflektirane zrake prevaljuju različite duljine putova i razlikuju se po fazi te međusobno interferiraju. Udubine su takve da iznose 1/4 valne dužine laserskog svjetla pa će rezultat interferencije biti manji svjetlosni intenzitet detektiran osjetnikom. Promjene razine svjetlosnog intenziteta reflektirajućeg svjetla od-govaraju prijelazima na stazi - od izbočine na udubinu te od udubine na izbočinu. Podaci se na CD-ROM-u kodiraju na poseban način: izvorni 8-bitni podaci pretvaraju se u 14-bitni kod. Algoritam kodiranja je takav da se izabire 14-bitna kodna riječ koja nema dvije slijed-ne jedinice odvojene s manje od dvije nule. No najdulji je niz nula ograničen i iznosi 10. Na taj je način od mogućih 214 bi tovnih uzoraka raspoloživo za kodiranje 267 od kojih se koristi 256. Tako transformirani podaci kodirani NRZ {Non-Return-to-Zero) kodom upisuju se u obliku udubina i izbočina na površinu optičkog diska. U postupku čitanja 14-bitni kod se pretvara u izvorni 8-bitni uporabom tablice preslikavanja (engl. look-up table). Logička 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 sa-država 192 bita podataka (24 bajta). Preostalih se 396 bitova koristi za ispravljanje pogre-šaka i upravljanje. Grupiranjem 98 okvira dobiva se CD-ROM sektor, pri čemu svaki sektor započinje zaglavljem (engl. preamble) koje se sastoji od 16 bajtova. Prvih dvanaest bajtova u zaglavlju služe CD čitaču za prepoznavanje početka CD-ROM sektora, sljedeća tri sadrža-vaju broj sektora dok zadnji bajt u zaglavlju označava jedan od dva načina rada (Mode 1 i Mode 2). Zaglavlju slijedi 98 okvira, odnosno jedan sektor, a sektoru 288 bajtova koda za ispravljanje pogrešaka (EEC).

Brzine prijenosa podataka kreću se od 75 sektor/s, odnosno 153 600 B/s (za tzv. single-speed CD-ROM u načinu 1), odnosno 175 200 B/s (način 2). Optički disk 32x CD-ROM ima brzinu prijenosa podataka 4 915 200 B/s (32 puta je brži od single-speed CD-ROM-a).

Page 312: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 307,

Vrijeme traženja obično je oko nekoliko stotina milisekundi pa se CD-ROM-ovi po svojim performansama ne mogu natjecati s magnetskim diskovima. CD-ROM-ovi se, međutim, koriste za distribuciju računalnih igara, filmova, enciklopedija, atlasa, instalacijskih progra-ma i si.

SI. 9.31 Presjek CD (ili DVD) diska i struktura CD (ili DVD) optičkog 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 poslužio za "tiskanje" kopija. Sredinom devedesetih godina pojavili su se CD pisači (engl. CD recorder) kao periferne jedinice računala. CD pisači, ne veći od CD jedinica za čitanje (engl. CD player), omogućili su korisnicima pohranu podataka. No za razliku od magnetskih diskova, jednom zapisan sadržaj na takvom CD-u ne može se mi-jenjati niti izbrisati. Takvi se kompaktni diskovi nazivaju CD-R odnosno CD-Recordables i tehnološki se razlikuju od "običnih" CD-ROM-ova. CD pisači posebnim izvorom laserskog svjetla (snage 8-16 mW) mijenjaju molekularnu strukturu posebnog sloja koji je nanesen na polikarbonatnu površinu diska i na taj način pohranjuju podatke (standard za CD-R je nazvan Orange Book - Narančasta knjiga). Ova se vrsta optičkih diskova naziva i WORM CD, odnosno Write-Once-Read-Many CD jer dopušta samo jednokratno zapisivanje podataka i naravno, višekratno čitanje tako pohranjenih podataka.

Inačica CD-R, nazvana CD-ROM XA dopušta inkrementalno zapisivanje, odnosno pohranu podataka tako da je na istom kompaktnom disku moguće zapisivanje podataka u više na-vrata u različitim vremenskim intervalima (satima, danima, mjesecima...).

Page 313: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

308 9. POGLAVLJE: MEMORIJSKi SUSTAV

Razvoj tehnologije optičkih diskova omogućio je kompaktne diskove koji dopuštaju bri-sanje te ponovni zapis podataka. Takvi se kompaktni diskovi nazivaju CD-RW, tj. ispisno-upisni 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 pisači koriste lasere triju snaga. Laserskom zrakom najveće snage topi se smjesa koja se pretvara iz visoko reflektivne kristalne struk-ture u nisko reflektivnu amorfnu strukturu koja odgovara udubini. Srednjom se snagom laserske zrake amorfna struktura vraća u svoje prirodno kristalno stanje koje se tumači kao izbočina. Laserskom se zrakom najmanje snage samo čita zapis, odnosno na temelju inten-ziteta reflektirane zrake utvrđuje se stanje sloja za zapis.

Neki se CD-RW-i temelje na optičkim i magnetskim svojstvima materijala koji se koristi u ak-tivnom 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 magnetizi-ranja. Početno, aktivni je sloj podvrgnut uniformnom magnetskom polju kojim seTeFeCo molekule poravnavaju i time određuju osnovni smjer polarizacije reflektiranog laserskog svjetla. Taj se osnovni smjer može promatrati kao kontinuirani niz bitova s vrijednosti 0. Tijekom upisivanja, impuls laserskog svjetla "pogađa" aktivni sloj i zagrijava ga te mu mije-nja magnetska svojstva. Kad se točka površine zagrije na 300° C (tzv. Curieva temperaturna točka), površina gubi početna magnetska svojstva. Istodobnim aktiviranjem elektroma-gneta ispod diska mijenja se smjer magnetiziranja tako da je suprotan od onog početnog. Taj novi smjer ostaje kad se laser isključi i materijal ohladi. Takva mjesta u aktivnom sloju odgovaraju bitovima s vrijednosti 1.

Disk se čita laserskom zrakom manje snage. Reflektirana laserska zraka ima različitu polari-zaciju ovisno o smjeru magnetiziranja aktivnog sloja.

Značajka T . .

CD DVD

Promjer diska [mm] 120 120

Debljina diska [mm] 1.2 1.2

Udaljenost između staza [\xm] 1.6 0.74

Gustoća staza [k staza/inč] 43 96

Brzina prijenosa [Mb/s] 1.2-4.8 11

Valna duljina laserskog svjetla [nm] 780 635 - 650

Kapacitet jednostranog i jednoslojnog diska [GB] 0.65 - 0.68 4.7

Tablica 9.4. Usporedba CD i DVD

Krajem devedesetih godina prošlog stoljeća pojavila se nova tehnologija diskova nazva-nih DVD-ROM (Digital Versatile Disk; engl. versatile - svestran). DVD-ROM izgleda kao kon-vencionalan CD-ROM i temelji se na istoj tehnologiji, ali s poboljšanim parametrima. Na primjer, udubine su veličine 0.4 mikrona umjesto 0.8 mikrona, udaljenost između 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 omogućilo povećanje 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 različitim izvedbama kao jednostrani i jednoslojni (engl. Single-sided, single-layer) kapaciteta 4.7 GB, jednostrani i dvoslojni (Single-sided, dual-layer) kapaciteta 8.5 GB,

Page 314: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 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 tehničkih značajki CD i DVD.

Upisno-ispisni DVD ostvaren je slično kao i CD-RW jer se temelji na istoj tehnologiji. Reljefna struktura aktivnog sloja (udoline i izbočine) mijenja se tako da se laserskom zra-kom mijenjaju njegova optička ili magnetska svojstva. Postoji više standarda za upisno-ispisne DVD-e: DVD-i koji su tipa WORM - jednokratan upis i višekratno čitanje definirani su standardima DVD-R i DVD+R, dok su "pravi" upisno-ispisni DVD-i opisani standardima DVD-RW i DVD+RW.

7

J

Page 315: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 311,

10. POGLAVLJE

PRIRUČNA MEMORIJA

10.1. UVOD U 9. poglavlju vidjeli smo da latentnost memorijske jedinice predstavlja osnovnu prepreku u povećanju performanse računarskog sustava. Latentnost memorijske jedinice je od tri do pet (i više) puta veća od latentnosti procesora. Podsjetimo se, pod pojmom latentnost podrazumijeva se vrijeme koje protekne između početka i završetka neke operacije. Jedan od načina premošćivanja jaza između brzine memorije i procesora u višerazinskom hije-rarhijskom memorijskom sustavu (slika 10.1) jest uporaba priručne memorije (engl. cache memory), odnosno dvorazinske memorijske hijerarhije. Slika 10.1 prikazuje osnovnu zami-sao organizacije koja se sastoji od priručne memorije M1 i glavne memorija M2. Obratite po-zornost na činjenicu da se između procesora i priručne memorije prenose podaci u obliku riječi, dok se između glavne memorije i priručne izmjenjuje blok podataka koji se naziva priručni blok ili linija (engl. line; cache line). Priručna memorija je brza memorija relativno malog kapaciteta i sadržava kopiju sadržaja dijela glavne memorije - tekuće aktivne se-gmente programa i podataka.

procesor

prijenos rijeci

priručna memorija

M

prijenos bloka razina priručna memorija - glavna memorija

glavna memorija

J

SI. 10.1 Shematski prikaz dviju razina: priručna memorija - glavna memorija M 2

Page 316: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

312 11. POGLAVLJE: VIRTUALNA MEMORIJA

Sljedeća niža razina u memorijskoj hijerarhiji je glavna memorija koja je sporija, ali puno većeg kapaciteta. Tipičan odnos brzine priručne memorije i glavne memorije jest 5 :1 pa priručna memorija svojom brzinom izravno podržava rad procesora.

Slika 10.2 prikazuje internu organizaciju priručne memorije. Ona se sastoji od memorije za pohranu podataka (engl. cache data memory) (Opaska: ovdje se "podaci" podrazumijevaju u širem smislu što znači da se izraz odnosi i na podatke, i na instrukcije programa), me-morije za pohranu značaka (engl. cache tag memory) i sklopova za upravljanje pristupom priručnoj memoriji. Kopija sadržaja dijela glavne memorije pohranjuje se u memoriji za pohranu podataka koja je organizirana u male blokove koji se nazivaju priručni blokovi ili linije. Svaki je priručni blok označen svojom bločnom adresom koja se naziva značka pa priručna memorija "zna" kojem dijelu glavne memorije odgovara dotični blok. Značke pri-družene svakom priručnom bloku pohranjene su u memoriji za pohranu značaka. Glavna je memorija također razdijeljena na blokove koji su jednake veličine kao i priručni blokovi.

pogodak priručna memorija M,

SI. 10.2 Organizacija priručne memorije

Imamo, dakle, sljedeću organizaciju: glavna memorija, koja se sastoji od 2M slijednih riječi, razdijeljena je na slijedne blokove koji se sastoje od b riječi. To znači da glavna memorija ima BM2 = 2M / b blokova (obično je veličina bloka, odnosno broj riječi u bloku, b također potencija broja 2; b = 2m, pri čemu je m « M).

Memorija za pohranu podataka (u priručnoj memoriji) sastoji se BM1 priručnih blokova ili linija koji su također veličine b = 2m. Svakom je priručnom bloku pridružena značka (pohra-njena u memoriji za pohranu značaka) koja sadržava informaciju o adresi bloka pokazujući na početnu lokaciju odgovarajućeg bloka u glavnoj memoriji. Priručni blok (ili linija) i znač-ka smještaju se u priručnoj memoriji na tzv. bločnipriključak (engl. s/of). Bločnih priključaka

Page 317: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 313,

u priručnoj memoriji ima BM1, pri čemu je BM1 jednak kapacitetu priručne memorije podije-ljen s brojem riječi u bloku. Vrijedi B M 2 » BM1.

Slika 10.3 prikazuje odnos između blokova u glavnoj memoriji i priručnih blokova (linija) te odnos između adrese bloka u glavnoj memoriji i odgovarajuće značke u memoriji za pohranu značaka.

c>5 O i - r v i m m vo r^ 3 ' ' o "5 S 5 S S 2 S 5 : XI CO CO 0Q 00 CO co co co o.

% 'i— JD

o £ 0» E fO c >u 3

J2 tO N (D ==. o ~ CL

u -C &

<0 N _ _ 3 ro .2. c 'u ® " £ o c (L) O. N £

o*

< <

fN

o o o o

r-v o

< co

< LU

o o 8 o o o o

-O o o. o X! N

"O o 00 o .

• s i «36. • S i

¥ T 3 rtj

ro <

f0 c

T 3 (TJ

00

o o o o o

fN

o «-o o

fN

o o

< < a\

O «— '—

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

< 00

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

5 <T3 (TJ 1 1 o> C

OJ £

SI. 10.3 Pojednostavljeni prikaz odnosa između blokova u glavnoj memoriji i priručnih blokova (linija)

Page 318: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

314 11. POGLAVLJE: VIRTUALNA MEMORIJA

Na slici 10.3 vidimo da priručna memorija, u ovom pojednostavljenom prikazu, pohranju-je osam priručnih blokova (linija), odnosno ima osam bločnih priključaka: BM1(0) - BM1(7). Priručni se blok sastoji od b = 4 riječi. Blokovi u glavnoj memoriji također su duljine b = 4 riječi. Uočavamo da se u bločnom priključku BM1(1) nalazi priručni blok s riječima 21, AA, FA i 91 (sve heksadekadno) koji je kopija sadržaja bloka u glavnoj memoriji s početnom 12-bitnom adresom: 100001111100. Vidimo, također, da je u znački (u memoriji za pohra-nu značaka) koja odgovara bločnom priključku BM1(1) pohranjeno deset značajnijih bitova koji predstavljaju upravo adresu bloka u glavnoj memoriji čiji je sadržaj prenesen u bločni priključak.

Dva najmanje značajna bita adrese A1 i A0 (slika 10.3) ne pojavljuju se u znački, več služe za izbor jedne od četiri riječi u izabranom priručnom bloku (liniji). (Opaska: broj najmanje značajnih adresnih linija koje služe za izbor riječi u priručnom bloku ovisi o veličini priruč-nog bloka (linije), npr. ako je blok veličine 16 riječi, onda su za to potrebna četiri najmanje značajna bita adrese.)

P r i m j e r 1 0 . 1 .

Da bismo zorno predočili način pristupa podatku koji je pohranjen u priručnoj memoriji, opišimo operaciju čitanja npr. treče riječi u bločnom priključku BM1(1) (slika 10.3). 12-bit-na adresa 100001111110, koja odgovara trećoj riječi, dovodi se na adresne priključke pri-ručne memorije. Deset se značajnijih bitova adrese: 1000011111 u sklopu za usporedbu znački uspoređuje sa značkama koje su pohranjene u memoriji za pohranu značaka. Ako se podudaraju značka i deset značajnijih bitova adrese, govorimo o pogotku što znači da se blok koji sadržava adresiranu riječ nalazi u priručnoj memoriji. U tom se slučaju dva najmanje značajna bita adrese: At = 1 i A0 = 0 koriste za izbor riječi u izabranom pri-ručnom bloku te se podatak FA (heksadekadno) pojavljuje na izlazu priručne memorije. U slučaju kada je podudaranje adrese i značke neuspješno, govorimo o promašaju, što znači da se blok koji sadržava adresirani podatak ne nalazi u priručnoj memoriji. Što se tada događa, objasnit ćemo nešto kasnije.

Prema načinu uključivanja priručne memorije u računarski sustav razlikuju se dvije glavne sheme. Jedna, koja se naziva "pogled sa strane" (engl. look-aside), je takva da su priručna memorija i glavna memorija izravno priključene na sabirnicu sustava (slika 10.4). Procesor započinje pristup memoriji postavljanjem adrese na adresnu sabirnicu i upravljačkim si-gnalom R/W određuje vrstu sabirničkog ciklusa. Priručna memorija M1 uspoređuje adresu na sabirnici sa značkama koje su pohranjene u memoriji za pohranu značaka. Ako je po-dudaranje uspješno (dogodio se pogodak), pristup će se okončati čitanjem ili pisanjem u priručnu memoriju. Pri svemu tome, glavna memorija M2 neće 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 "ponaša" kao da i ne zna da postoji priručna memorija - ona je za procesor "skrivena" (riječ "cache" je francuskog podrijetla i označava skrovito ili skrive-no mjesto na kojem se pohranjuju zalihe hrane za "crne dane").

No ako se dogodio promašaj, odnosno neuspješno podudaranje adrese sa značkama - što znači da nema referenciranog bloka niti u jednom bločnom priključku priručne nriemorije - tada se ostvaruje pristup izravno glavnoj memoriji M2 i završava se upisom (R/W= 0) j čitanjem (R/W= 1) sadržaja referencirane memorijske lokacije. Kao odgovor na promašaj prenosi se blok podataka (onaj koji sadržava referencirani podatak) iz glavne memorije L

Page 319: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 315,

priručnu memoriju i smješta se u slobodni bločni priključak priručne memorije. Zajedno s podacima prenijet će se i adresa bloka koja će se pohraniti kao značka u odgovarajućem bločnom priključku. Prijenos bloka koji je male veličine odvija se vrlo brzo jer se koristi prijenos podataka u snopu (poglavlje 9.; Porodice DRAM).

(T) pristup priručnoj memoriji

(2) prijenos bloka podataka (prijenos podataka u snopu)

(3) pristup glavnoj memoriji

SI. 10.4 Način uključivanja priručne memorije nazvan "pogled sa strane" (engl. look-aside)

Slika 10.5 prikazuje složeniji način uključivanja priručne memorije u računarski sustav. On se naziva "pogled kroz" (engl. look-through). Procesor ima izdvojenu lokalnu sabirnicu po-moću koje komunicira s priručnom memorijom i glavnom memorijom. Sabirnica sustava koristi se kao prijenosni put za komunikaciju s drugim jedinicama pa se stoga može isto-dobno ostvariti pristup priručnoj 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 priručne memorije procesor ne šalje automatski sve zahtjeve glavnoj memoriji (kao u slučaju organizacije "pogled sa strane") već to čini samo u kad se dogodi promašaj. Ovakva organizacija omogućuje izvedbu široke lokalne sabirnice kojom se po-vezuju procesor, priručna memorija i glavna memorija tako da se ostvaruje brži prijenos bloka podataka između glavne i priručne memorije. Na primjer, ako je širina lokalne sabir-nice 128 bita i ako je veličina priručnog bloka 16 bajtova, tada će se blok prenijeti u jednoj periodi signala vremenskog vođenja, dok bi prijenos istog bloka preko 32-bitne sabirnice sustava (u organizaciji "pogled sa strane"zahtijevao četiri periode).

Ova izvedba, međutim, zahtijeva složeniji upravljački sklop priručne memorije i upravljački sklop glavne memorije što se odražava na većoj složenosti i višoj cijeni izvedbe.

Page 320: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

316 11. POGLAVLJE: VIRTUALNA MEMORIJA

(T) pristup priručnoj memoriji (2) prijenos bloka podataka (3) pristup glavnoj memoriji (4) pristup glavnoj memoriji u kojem ne sudjeluje procesor (npr. DMA)

SI. 10.5 Način uključivanja priručne memorije nazvan "pogled kroz" (engl. look-through)

10.2. DJELOVANJE PRIRUČNE MEMORIJE Mehanizam djelovanja priručne memorije možemo pojednostavnjeno opisati ovako (slika 10.6): kad procesor (CPU) generira zahtjev za pribavljanje instrukcije ili podatka (operaci-ja č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 slučaju postojanja vir-tualne memorije (tj. razine glavna memorija - sekundarna memorija) virtualna ili logička adresa podatka ili instrukcije, ona će se pomoću adresnog translacijskog mehanizma vir-tualne memorije (poglavlje 11.) preoblikovati u stvarnu ili fizičku adresu. Iznimno postoje neke izvedbe priručne memorije koje dopuštaju pristup na temelju virtualne adrese.)

Sklopovi za upravljanje pristupom memoriji (koji su pridruženi priručnoj memoriji) utvr-đuju nalazi li se riječ koja se poziva u priručnoj memoriji, tj. utvrđuje se nalazi li se u nekom bločnom priključku priručne memorije blok koji upravo sadržava referenciranu riječ. To se utvrđuje uspoređivanjem znački sa značajnijim dijelom adresa (vidi Primjer 10.1.). Ako se tijekom uspoređivanja dogodi podudaranje, što znači daje blok koji sadržava referencira-nu riječ u priručnoj memoriji - dogodio se pogodak (za takav blok kažemo da je aktivan). tada se preostali, manje značajni adresni dio koristi za izbor naslovljene riječi u bloku (ifi liniji), te se izvodi operacija čitanja ili pisanja na toj memorijskoj lokaciji priručne memorije Ako je riječ o operaciji čitanja, tada u tome ne sudjeluje glavna memorija, a referencira-

Page 321: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 317,

na se riječ dohvaća iz priručne memorije i pribavlja procesoru. Ako je, pak, bila operacija pisanja, tada se istodobno podatak upisuje u odgovarajuću lokaciju priručne memorije i u lokaciju glavne memorije. Takav se postupak trenutnog obnavljanja sadržaja glavne memorije naziva „pohranjivanje-kroz" (engl. store-through). Obnavljanje sadržaja glavne memorije može se obaviti i uporabom inačice pohranjivanja-kroz. Ona se naziva upisivanje u međuspremnik (engl. write buffer). Upis podatka u glavnu memoriju ostvaruje se pomoću upisnog međuspremnika i sklopova kojima se oslobađa procesor od izravnog obnavljanja sadržaja glavne memorije. Procesor nakon brzog upisa podatka u priručnu memoriju i upi-sni međuspremnik nastavlja s obradom. Istodobno se podatak iz upisnog međuspremnika prenosi u glavnu memoriju. Na taj se način uklanja kašnjenje zbog upisa, odnosno pri-stupa procesora glavnoj memoriji. Druga metoda obnavljanja sadržaja glavne memorije naziva se „kopiranje nazad" (engl. copy back, write back) i sastoji se od toga da se podatak upisuje samo u lokaciju u priručnoj memoriji, a da se upis označi posebnom zastavicom pridruženoj bloku. Ta se zastavica naziva „prljavi bit" (engl. dirty bit) i njome se označava blok koji će se morati upisati natrag u glavnu memoriju tijekom zamjene bloka. Zamjena bloka, kako ćemo vidjeti, događa se u slučaju promašaja. Priručni blok koji se samo čita i zato ima obrisan prljavi bit ne treba se tijekom zamjene upisivati natrag u glavnu memori-ju jer su sadržaji tog priručnog bloka i odgovarajućeg bloka u glavnoj memoriji identični. Tehnikama „pohranjivanje-kroz" i „kopiranje nazad" rješava se dio problema koji je poznat pod nazivom „koherencija priručne memorije" (engl. cache coherence) o čemu će biti govo-ra u nastavku, a svodi se na to da podatak s adresom A u priručnoj memoriji M1 mora biti jednak podatku koji se na istoj adresi A nalazi u glavnoj memoriji M2. Ne zaboravimo da je slika sadržaja glavne memorije mjerodavna za stanje programa.

Ako se za vrijeme operacije pisanja adresirana riječ ne nalazi u priručnoj memoriji (engl. write miss), što se onda događa? Postoje dva pristupa tom problemu: u jednom se podatak izravno upisuje u glavnu memoriju, sadržaj priručne memorije se ne mijenja i nema prije-nosa bloka iz glavne memorije u priručnu memoriju (ta se tehnika izvorno naziva "write-no allocation" - upisivanje bez dodjele). U drugom se pristupu odgađa upis u memoriju da bi se prenio blok u priručnu memoriju i tek onda obavio upis u priručnu memoriju - ta se tehnika naziva dodjela upisa (engl. write allocation). Pristup dodjelom upisa ima prednost u odnosu na prvi pristup samo ako postoji više uzastopnih upisa u jednu ili više lokacija bloka. Općenito vrijedi da priručne memorije koje koriste tehniku pohranjivanje-kroz rabe upisivanje bez dodjele, a priručne memorije s tehnikom kopiranja nazad primjenjuju postu-pak dodjele upisa.

Sklopovi za upravljanje pristupom priručnoj memoriji utvrđuju nalazi li se adresirani blok u nekom od bločnih priključaka priručne memorije. To se utvrđuje na temelju podudaranja značajnijih bitova adrese (one koja odgovara adresi bloka; slika 10.3) sa značkama koje su pohranjene u memoriji za pohranu značaka. Utvrđivanje je li podudaranje uspješno mora se obaviti iznimno brzo tako da slijedno uspoređivanje adrese sa značkama ne dolazi u obzir jer bi znatno narušilo performansu memorijskog sustava. Da bi se ubrzao postupak podudaranja, memorija za pohranu značaka izvedena je kao asocijativna memorija koja dopušta istodobnu usporedbu adrese sa svim značkama. Podsjetimo se, asocijativna me-morija je memorija s izravnim pristupom u kojoj se pohranjena riječ ne dohvaća na temelju adrese, već na temelju dijela ili cijelog njezinog sadržaja. Osim toga, asocijativna memorija dopušta istodobnu usporedbu dijela ili cijelog sadržaja svih njezinih lokacija sa zadanim bitnim uzorkom i indikaciju svih podudaranja sadržaja s tim zadanim bitnim uzorkom. U našem slučaju zadani bitni uzorak odgovara adresi bloka.

Page 322: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

318 11. POGLAVLJE: VIRTUALNA MEMORIJA

SI. 10.6 Pojednostavljeni dijagram toka za operaciju čitanja i pisanja u priručnu memoriju

Page 323: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 319,

Ako je uspoređivanje adrese sa značkama bilo neuspješno, govorimo o promašaju. U tom se slučaju adresa prosljeđuje glavnoj memoriji. Modul za rukovanje u slučaju promašaja, na temelju informacije o zamjeni blokova, određuje koji se blok zamjenjuje u priručnoj 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 priručnu memoriju može se uštedjeti na vremenu ako se referencirana riječ prosljeđuje odmah na-kon što je raspoloživa, ne čekajući da se cijeli blok prenese u priručnu 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 priručnih blokova. Ona je podloga za određivanje koji će priručni blok biti zamijenjen kad se dogodi promašaj.

10.3. PERFORMANSA PRIRUČNE MEMORIJE Ako u memorijskoj hijerarhiji izuzmemo skup registara opće namjene, tada je priručna memorija najbrža sastavnica u memorijskoj hijerarhiji. Želi se postići da srednje vrijeme pristupa memorijskom sustavu bude što je moguće bliže vremenu pristupa priručnoj me-moriji. Da bi se to postiglo, broj uspješnih referenciranja priručne memorije mora biti što je moguće veći. Pod "uspješnim referenciranjem" podrazumijeva se referenciranje kojim je ostvaren "pogodak", odnosno referenciranje riječi koja se nalazi u bloku u priručnoj memo-riji. 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 promašaja (engl. miss ratio) koji je definiran kao 1 - H i označava se s MR. Performansa priručne memorije izražava se omjerom po-gotka (ili omjerom promašaja). Što je omjer pogotka veći, veća je performansa priručne memorije.

U nekom vremenskom intervalu možemo ocijeniti srednje vrijeme pristupa memorijskom sustavu tA za memorijski sustav s priručnom memorijom, na sljedeći način:

tA = t M , X H + ( 1 - H ) X t M 2 '

gdje je tM1 vrijeme pristupa priručnoj memoriji, tM2 vrijeme pristupa glavnoj memoriji i (1- H) omjer promašaja. Djelotvornost priručne memorije možemo ilustrirati sljedećim primjerom.

Primjer 10.2.

Neka je vrijeme pristupa glavnoj memoriji tM2 = 250 ns, a vrijeme pristupa priručnoj memo-riji tM1 = 25 ns. Za omjer pogotka H = 0.98, što je vrijednost koja se nalazi u okviru tipičnih vrijednosti za priručne 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 priručne memorije imao bi (srednje) vrijeme pristupa memoriji tA = tM2= 250 ns.

Vidimo da se uvođenjem priručne memorije srednje vrijeme pristupa memorijskom su-stavu popravilo skoro za jedan razred veličine.

Page 324: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

320 11. POGLAVLJE: VIRTUALNA MEMORIJA

Visoka vrijednost omjera pogotka H koja se tipično kreće u rasponu od 0.90 do 0.98 temelji na lokalnim svojstvima programa i podataka. Zahvaljujući lokalnim svojstvima programa i podataka, broj poziva glavne memorije uvelike se smanjuje i referenciranje se usmjera-va na brzu priručnu memoriju. Lokalnost u dinamičkom ponašanju programa očituje se u tome što slijed referenciranja memorijskih lokacija nije slučajan, već za vrijeme trajanja ne-kog vremenskog intervala program pokazuje težnju grupiranja poziva memoriji na malom dijelu od ukupnog adresirljivog prostora. Lokalnost se izražava vremenskom i prostornom sastavnicom.

Vremenska lokalnost očituje se u tome što će program u bliskoj budućnosti, tijekom njego-va izvođenja, referencirati u memoriji one programske objekte ili podatkovne objekte koje je referencirao i u bližoj prošlosti.

Prostorna lokalnost iskazuje se u tome što će program referencirati u skoroj budućnosti one programske i podatkovne objekte koji imaju adrese bliske onim što su se upotrebljavale u bližoj prošlosti.

Lokalnost je posebno izražena kad dijelovi programa imaju oblik programskih petlji, me-đusobno ugniježđenih petlji ili kad se samo nekoliko procedura (ili potprograma) ponav-ljano poziva.

Obično se lokalnost izražava 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...

( 20 ,19 , 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 veća.

10.4. ORGANIZACIJA PRIRUČNE MEMORIJE Pri razmatranju i analizi različitih izvedbi priručnih memorija posebnu pozornost treba obratiti na sljedeće njezine značajke:

i) način smještanja blokova u bločne priključke priručne memorije (engl. placement policy; mapping function);

ii) način zamjene blokova (engl. replacement policy); iii) veličinu bloka i kapacitet priručne memorije; iv) način obnavljanja sadržaja glavne memorije (engl. update policy); v) način pribavljanja bloka iz glavne memorije (engl. memory fetch policy).

Page 325: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 321,

10.4.1. NAČIN SMJEŠTANJA BLOKOVA U BLOČNE PRIKLJUČKE PRIRUČNE MEMORIJE

Prema načinu smještanja bloka iz glavne memorije u bločni priključak priručne memorije postoje tri glavne organizacije priručne memorije:

• priručna memorija s potpuno asocijativnim preslikavanjem (engl. fully associative mapping);

• priručna memorija s izravnim preslikavanjem (engl. direct mapping); • priručna memorija sa skupnim asocijativnim preslikavanjem (engl. set associative

mapping).

10.4.1.1. PRIRUČNA MEMORIJA S POTPUNO ASOCIJATIVNIM PRESLIKAVANJEM

Podsjetimo se da se priručna memorija, bez obzira na vrstu organizacije, sastoji od brojnih bločnih priključaka i da se u svakom bločnom priključku smješta blok (linija) od b slijednih riječi. Svakom je takvom bloku pridružena i značka koja se pohranjuje u priručnoj memoriji značaka.

Priručna memorija s potpunim asocijativnim preslikavanjem može se nazvati i priručna memorija s potpunim pridruživanjem jer ima jednu prepoznatljivu značajku: priručni blok ili linija veličine b riječi iz glavne memorije može se smjestiti u bilo koji slobodni bločni priključak priručne memorije. Na slici 10.7 shematski je prikazano potpuno asocijativno preslikavanje.

Adresa kojom se referencira memorija sastoji se od dva dijela: k značajnijih bitova adrese koji čine značku i w manje značajnih bitova adrese koji služe za izbor jedne od b riječi u izabranom bloku. Na temelju značke utvrđuje se nalazi li se referencirani blok u priručnoj memoriji.

Primjer 10.4.

Neka je kapacitet glavne memorije 16 MB, a kapacitet priručne memorije 64 KB. Veličina bloka (linije) neka je 4 bajta. U tom slučaju imamo B M 2 = 1 6 M / 4 = 4 M blokova u glav-noj memoriji - od BM2(0) do BM2(4194303), odnosno BM2(4M -1). Broj bločnih priključaka priručne 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 sljedeći način: dva najmanje značajna bita A1 i A0 se koriste za izbor jedne od b = 4 riječi (bajta) u bloku, a preostala 22 adresna bita A23 - A2 označavaju jedan od 4M blokova. Značka (pohranjena u memoriji za pohranu značaka), koja je pridružena bloku koji se nalazi u bločnom priključku, duljine je 22 bita.

Tijekom referenciranja memorije značajnijih 22 bita adrese uspoređuje se sa svim 22-bit-nim značkama. Uspoređivanje se izvodi istodobnim podudaranjem sa svim značkama pohranjenim u memoriji značaka. Kad je ishod podudaranja uspješan, dva najmanje značajna bita adrese upotrebljavaju se za adresiranje riječi (bajta).

li

Prednost priručne memorije s potpuno asocijativnim preslikavanjem jest velika prilagod-ljivost pri smještanju blokova iz glavne memorije u priručnu - blok se može smjestiti u bilo koji slobodni bločni priključak. Nedostatak takve organizacije je složena (i skupa) sklopov-ska izvedba za istodobno podudaranje sa značkama relativno velike duljine koja se temelji na asocijativnoj memoriji za pohranu značaka. Složenost izvedbe odražava se i na zahtjevi-ma za površinom na čipu pa se priručne memorije s potpuno asocijativnim preslikavanjem mogu naći u izvedbama skupih procesora visokih performansi.

Page 326: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

322 11. POGLAVLJE: VIRTUALNA MEMORIJA

SI. 10.7 Shematski prikaz potpunog asocijativnog preslikavanja

Page 327: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 323,

10.4.1.2. PRIRUČNA MEMORIJA S IZRAVNIM PRESLIKAVANJEM

Da bi se smanjila cijena izvedbe priručne memorije i riješili problemi vezani za prostor na čipu, upotrebljava se priručna memorija s izravnim preslikavanjem (kraće: izravna priručna memorija). Njezina je osnovna značajka da se svaki blok glavne memorije može smjestiti u samo jedan točno određeni bločni priključak priručne memorije. Pravilo koje određuje koji je to bločni priključak jednostavno je: blok BM2(i) iz glavne memorije smješta se u bločni priključak BM1(j) priručne memorije pri čemu vrijedi:

j = i (modulo B^),

gdje je BM1 ukupan broj bločnih priključaka priručne memorije, j indeks bločnog priključka u priručnoj memoriji te i indeks bloka u glavnoj memoriji.

« « ^ ^ 5 S c Ci G S9-

O f " i ""i i š -O O. CD CD OD OD OD

SI. 10.8 Shematski prikaz organizacije izravne priručne memorije

Page 328: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

324 11. POGLAVLJE: VIRTUALNA MEMORIJA

Slika 10.8 prikazuje organizaciju izravne priručne memorije. Vidimo da se blok iz glavne memorije može smjestiti samo u određeni bločni priključak priručne memorije.

Primjer 10.5.

Da bi si zorno predočili organizaciju izravne priručne memorije, odnosno način smješta-nja blokova u bločne priključke, pretpostavit ćemo vrlo jednostavan model sa sljedećim parametrima: kapacitet glavne memorije neka je samo 25 = 32 riječi, a kapacitet priručne memorije neka je 24 = 16 riječi. Blok neka se sastoji od b = 4 riječi, tako da imamo BM2 = 8 blokova u glavnoj memoriji i BM1 = 4 bloka, odnosno bločnih priključaka. Označimo blokove u glavnoj memoriji s: BM2(i), i = 0,1,..., 7. Označimo bločne priključke BM1(j), j = 0, 1,..., 3. U skladu s izravnim načinom preslikavanja imamo:

• blok iz glavne memorije BM2(0); i = 0, smješta se u bločni priključak BM1(j): j = i (modulo BM1) = 0 (modulo 4) = 0;

• blok iz glavne memorije BM2(1), smješta se u bločni priključak BM1(1); • blok iz glavne memorije BM2(2), smješta se u bločni priključak BM1(2); • blok iz glavne memorije BM2(3), smješta se u bločni priključak BM1(3); • blok iz glavne memorije BM2(4), smješta se u bločni priključak

BMi(j): j = i (modulo BM1) = 4 (modulo 4) = 0; • blok iz glavne memorije BM2(5), smješta se u bločni priključak BM1(1); • blok iz glavne memorije BM2(6), smješta se u bločni priključak BM1(2); • blok iz glavne memorije BM2(7), smješta se u bločni priključak BM1(3);

Slika 10.9 a) prikazuje izravno preslikavanje za ovaj jednostavan primjer.

blok

glavna memorija M2

SI. 10.9a Prikaz jednostavnog modela izravne priručne memorije - izravno preslikavanje

Page 329: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 325,

značka (1bit)

b=4 rijeci

bločni priključak

0 1 2 3 BJO)

0 1 2 3 BM1(D 0 1 2 3 B«,<2) 0 1 2 3 BM1<3)

priručna memorija Mt

B«(7)

glavna memorija M2

SL 10.9 b Prikaz jednostavnog modela izravne priručne memorije - pristup podatku u priručnoj memoriji s adresom 11110 (Primjer 70.5.)

Zapažamo da se zaista blok iz glavne memorije može smjestiti u samo jedan, točno određen bločni priključak priručne memorije. Odmah uočavamo i jedan od nedostataka takve organizacije - ako je bločni priključak već zauzet, a sljedeći blok se treba iz glavne memorije premjestiti u priručnu memoriju, i to prema j = i (modulo BM1) upravo u taj zauzeti bločni priključak, morat će se izvesti postupak zamjene blokova (oslobađanje bločnog priključka), iako u priručnoj memoriji postoje slobodni, neiskorišteni bločni pri-ključci. Slika 10.9 a) prikazuje organizaciju takve izravne priručne 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 može jedi-no preslikati u BM1(3) bločni priključakjer je 3 = 7 (modulo 4). Dva najmanje značajna bita adrese A1 = 1 i A0 = 0 služe za izbor riječi s indeksom 2 u bločnom priključku, bitovi A2 = 1 i A3 = 1 služe za izbor bločnog priključka (B (3)). Najznačajniji bit adrese A4 uspoređuje se s 1 -bitnom značkom (u ovom našem vrlo jednostavnom primjeru!) bločnog priključka

Page 330: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

326 11. POGLAVLJE: VIRTUALNA MEMORIJA

koji je određen na temelju bitova A2 = 1 i A3 = 1. Ako je podudaranje postignuto, znači daje naslovljena riječ u bloku u određenom bločnom priključku priručne memorije. Ako je podudaranje neuspješno, na primjer, značka pridružena bločnom priključku 3 ima vri-jednost 0, što znači da se u bločnom priključku nalazi blok BM2(3), tada treba se osloboditi bločni priključak tako da se blok BM2(3) (slika 10.9 b)) premjestiti u glavnu memoriju. Blok BM2(7) se dohvaća iz glavne memorije i smještava na oslobođeni bločni priključak pri tome se najznačajniji bit njegove 5-bitne adrese pohranjuje u značku.

Primjer 10.6.

Pretpostavimo nešto stvarnije parametre priručne memorije i glavne memorije: kapa-citet priručne memorije neka je 64 KB. Veličina priručnog bloka (linije) neka je 4 bajta. Kapacitet glavne memorije neka je 16 MB. Broj bločnih priključaka priručne 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 sljedeći način: 2 najmanje značajna bita (A1 - A0) služe za izbor bajta u bloku (liniji) jer blok sadržava 4 bajta. Četrnaest značajnijih bitova (A15 - A2) služe za referenciranje bločnog priključka (ima ih 214) a 8 najznačajnijih bitova adrese (A23 - A16) služe za uspore-đivanje s 8 značaka pridruženim bločnom priključku. Duljina riječi memorije za pohranu značakaje8bita.

Zašto je osam najznačajnijih bitova adrese namijenjeno uspoređivanju sa značkama? Izravnim preslikavanjem se 4 M blokova glavne memorije smješta u 16 K bločnih priklju-čaka tako da su 256 blokova kandidati na jedan bločni priključak:

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) veličine 4 bajta nalazi se na adresi 0 - 3 (dekadno), blok BM,(1) nalazi na adresi 4 - 7 (dekadno), blok B4 J2) nalazi na

TAJ. MZ

adresi 8 -11, itd. Podatak s adresom 11667210 (dekadno) nalazi se u glavnoj memoriji u bloku s indeksom 2916802. Bločni priključak u koji se može smjestiti blok BM2(2916802) je:

j = i (modulo BM1) = 2916802 (modulo 16384) = 450, dakle, u BMI(450).

Tijekom pristupa priručnoj memoriji osam se najznačajnijih bitova adrese uspoređuje s 8-bitnom značkom bločnog priključka koji je određen na temelju četrnaest bitova adre-se (A1S - A ). Ako je podudaranje postignuto, znači daje naslovljena riječ u bloku u odre-đenom bločnom priključku priručne memorije.

Slika 10.10 prikazuje organizaciju 24-bitne adrese.

B2 07 0A b23 bi bO

1011 0 0 1 0 0 0 0 0 0111 0 0 0 0 1 0 10

I« -4. 4 k bitovi za adresa bločnog adresa

uspoređivanje sa priključka riječi značkom u bloku

Sf. 10.10 Organizacija 24-bitne adrese (Primjer 10.6.)

Page 331: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 327,

Ako sada usporedimo izvedbe priručnih memorija iz Primjera 10.4. (potpuno asocijativno preslikavanje) i iz Primjera 10.6. (izravno preslikavanje), možemo uočiti manju složenost sklopovlja za priručnu memoriju s izravnim preslikavanjem: za priručnu memoriju s potpu-nim asocijativnim preslikavanjem sklopovi trebaju podržati istodobno podudaranje dijela adrese s 22-bitnim poljima značaka.To znači da treba podržati istodobno 214 podudaranja 22-bitnih riječi. U slučaju priručne memorije s izravnim preslikavanjem na temelju adrese bločnog priključka (dio adrese A15 - A2) odabire se samo jedna 8-bitna značka koja se us-poređuje s 8 najznačajnijih bitova adrese.

10.4.1.3. PRIRUČNA MEMORIJA SA SKUPNIM ASOCIJATIVNIM PRESLIKAVANJEM

Priručna memorija sa skupnim asocijativnim preslikavanjem (engl. set-associative mapping) čini kombinaciju prethodno opisanih dvaju načina smještanja blokova kojom se pokušava-ju riješiti problemi vezani za izravno preslikavanje i problemi složenosti sklopovlja za pot-puno asocijativno preslikavanje. Takva je priručna memorija na neki način kompromisno rješenje kojim se želi iskoristiti dobre značajke prethodnih dviju organizacija. Organizacija skupne asocijativne memorije može se opisati na sljedeći način: bločni priključci priručne memorije organizirani su u skupine tako da mehanizam preslikavanja dopušta da se blok iz glavne memorije priključuje u bilo koji bločni priključak koji pripada odgovarajućoj skupini.

Pretpostavimo da priručna memorija ima Bs skupina bločnih priključaka. Svaka se skupina sastoji od fc bločnih priključaka. Ukupno je Bs xk bločnih priključaka u priručnoj memoriji.

Blok iz glavne memorije BM2(i) može se priključiti u bilo koji od k slobodnih bločnih priklju-čaka skupine j, pri čemu je:

j = i (modulo Bs).

Drugim riječima, blok iz glavne memorije izravnim se preslikavanjem dodjeljuje određenoj skupini bločnih priključaka, a zatim se načinom potpuno asocijativnog preslikavanja smje-šta u slobodni bločni priključak u skupini.

Broj bločnih priključaka u skupini predstavlja važnu arhitektonsku značajku i zato se če-sto taj parametar upotrebljava za pobliži opis priručne memorije. Na primjer, govorimo o "dvoputnoj" asocijativnoj (engl. two-way associative cache memory) ili o "četvero put noj" asocijativnoj priručnoj memoriji ako ima dva, odnosno četiri bločna priključka u skupini.

Primjer 10.7.

Pretpostavimo da imamo priručnu memoriju koja ima BM1 = 128 bločnih priključaka or-ganiziranih u 32 skupine Bs = 32: Bs(0) - Bs(31) U svakoj skupini imamo BM1 / Bs = 128 / 32 = 4 bločna priključka ("četveroputna"asocijativna memorija). Glavna memorija neka je kapaciteta 64 K riječi i organizirana je u BM2 = 64 K / b = 64 K / 16 = 4096 blokova, pri čemu je 6 = 16, odnosno imamo 16 riječi u bloku (liniji). Dakle, glavna memorija ima blo-kove BM2(0) - BM2(4095). Slika 10.11 prikazuje organizaciju takve memorije. Ilustrirajmo postupak preslikavanja. Neka je adresa referencirane riječi 4092 (dekadno) ili 0FFC (hek-sadekadno). Budući daje 16 riječi u bloku, indeks bloka u kojem se nalazi riječ je i = 255 jer je 4092 = 255 x 16 + 12. Blok BM2(255) može se priključiti na jedan od četiri slobodna priključka skupine j:

j = i (modulo Bs) = 255 (modulo 32) = 31.

Page 332: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

328 11. POGLAVLJE: VIRTUALNA MEMORIJA

adresa (dekodna)

0

65535

blok

BJ4095)

značka b=16 riječi

14

14

14

14

14

14

14

14

14

14

14

14

14

14

14

14

priručna memorija M,

15

15

15

15

15

15

15

15

15

15

15

15

15

15

15

15

skupina

> B,{0)

Bs(1)

BS(2)

Bs(31)

glavna memorija M2

Sl.10.11 Organizacija 4-putne skupne asocijativne priručne memorije {Primjer 10.7.)

Slika 10.12 prikazuje organizaciju adrese za 4-putnu skupnu asocijativnu priručnu me-moriju. Riječ u bloku odabire se na temelju četiri najmanje značajna bita adrese (A3 - A0). Pet bitova adrese A8 - A4 određuje skupinu, dok se sedam najznačajnijih bitova adrese A15 - A9 rabi za uspoređivanje sa 7-bitnim značkama.

A A A4A3 A„

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

4 značka skupina J izbor riječi u bloku J

adresa: OFFC

5L 10.12 Organizacija adrese za 4-putnu skupnu asocijativnu priručnu memoriju

Primjer 10.8.

Glavna memorija neka je kapaciteta 16 MB i organizirana u blokove po 4 bajta (riječi). Priručna memorija neka je kapaciteta 64 KB organizirana tako da ima dva bločna pri-

Page 333: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RiBARIĆ - GRAĐA RAČUNALA 329

ključka po skupini (2-putna asocijativna memorija). Priručna memorija ima ukupno 64 K / 4 = 16 K bločnih priključaka. Budući da je organizirana kao 2-putna asocijativna memo-rija, ima B s =16K/2 = 8K skupina. 24-bitna adresa organizirana je na sljedeći način: dva najmanje značajna bita adrese koriste se za izbor bajta riječi u bloku, 13 sljedećih bitova upotrebljava se za izbor skupine (8 K = 23 x 210), dok se 9 najznačajnijih bitova adrese koristi za uspoređivanje s poljem značaka.

Razmotrimo u što će se transformirati skupna asocijativna priručna memorija za dva ekstre-mna slučaja. Pretpostavimo da raste broj priključaka po skupini, odnosno da se smanjuje broj skupina. Krajnji je slučaj kada priručna memorija ima samo jednu skupinu Bs = 1 i BM1

bločnih priključaka. U tom slučaju, u skladu sa značajkama skupne asocijativne priručne memorije, priručna memorija postaje memorija s potpunim asocijativnim preslikavanjem. Naime, nakon određivanje skupine:

j = i (modulo Bs) = i (modulo 1) = 0,

slijedi asocijativno preslikavanje u jednoj skupini koja se sastoji od BM1 bločnih priključaka.

Ako, u suprotnom primjeru, pretpostavimo da broj skupina raste i dostiže BM1, tj. Bs = BM1, tada vrijedi:

j = i (modulo B5) = i (modulo BM1),

što znači da smo dobili organizaciju priručne memorije s izravnim preslikavanjem.

Uporaba 2-putnih skupnih asocijativnih priručnih memorija najčešća je od organizacija koje se temelje na skupnim asocijativnim priručnim memorijama. Analize pokazuju da one značajno poboljšavaju performansu (omjer pogotka) u odnosu na priručne memo-rije s izravnim preslikavanjem. 4-putne skupne asocijativne memorije umjereno dodatno povećavaju performansu uz relativno malo povećanje cijene, dok daljnje povećanje broja bločnih priključaka po skupini ima mali učinak na performansu.

10.5. NAČIN ZAMJENE BLOKOVA Kad se novi blok iz glavne memorije treba prenijeti u priručnu memoriju i kad su svi do-pušteni bločni priključci zauzeti, potrebno je donijeti odluku o tome koji se od blokova u priručnoj memoriji mora zamijeniti. U slučaju priručne memorije s izravnim preslikavanjem odluka je već unaprijed donesena - postoji samo jedan bločni priključak u koji se novi blok može priključiti, i to onaj s indeksom j = i (modulo BM1).To znači da se "stari" blok u bločnom priključku j zamjenjuje s novim blokom. No za priručne memorije s potpuno asocijativ-nim preslikavanjem i priručne memorije sa skupnim asocijativnim preslikavanjem odlu-ka se temelji na algoritmu zamjene. Izbor algoritma zamjene i njegova izvedba središnje su pitanje u organizaciji priručne memorije jer način zamjene blokova izravno utječe na performansu memorijskog, a time i računarskog sustava. Da bi se postigla velika brzina, algoritam zamjene stranica mora biti implementiran sklopovski. Cilj primjene djelotvorne zamjene blokova jest postizanje što većeg omjera pogotka, odnosno smanjenje učestalo-sti pojavljivanja promašaja koji nastaje kad se referencira riječ u bloku koji se ne nalazi u priručnoj memoriji. Općenito vrijedi da omjer pogotka teži svojoj maksimalnoj vrijednosti ako se vremenski interval između dvaju uzastopnih promašaja maksimizira. Najčešće se rabe sljedeći algoritmi zamjene.

Page 334: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

3 3 0 11. POGLAVLJE: VIRTUALNA M E M O R I J A

• FIFO (First-In-First-Out). Na temelju algoritma "prvi-unutra-prvi-van" izabire se blok za zamjenu koji je najranije "ušao" u priručnu memoriju, odnosno blok koji je najdulje u priručnoj memoriji.

• LRU (Least Recently Used). Algoritmom LRU izabire se blok za zamjenu koji je u pr-ručnoj memoriji najduže bez da bude referenciran. Naime, zahvaljujući 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 vr-jeme bio referenciran u nadi i očekivanju da je malo vjerojatno da će biti korište» u bliskoj budućnosti. Definiranje vremenskog intervala koji odgovara „posljednjer-vremenu" ovisi o implementaciji. Algoritam NRU vrlo je često korišten kao aproksi-macija 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 slučajne zamjene izabire slučajno blok za zamjenu u priručnci memoriji. Zanimljivo je da su analize pokazale da slučajna zamjena daje samo nešto slabije rezultate od triju prethodno navedenih algoritama.

Primjer 10.9.

Prikažimo na jednostavnom primjeru algoritme zamjene blokova FIFO i LRU za jednak slijed referenciranja blokova. Pretpostavimo da se tijekom izvođenja programa referen-ci ra šest različitih blokova. Označimo 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 zamje-na za FIFO algoritam, a slika 10.13 b) slijed zamjena za LRU algoritam.

(Opaska: sa zvjedicom (*) označavamo blok koji je kandidat za zamjenu, a s (+) označa-vamo pogodak.)

vrijeme t 1 2 3 4 5 6 7 8 9 10 11 12 13

redoslijed B C B A E F B D F E C B E

B* B* B* B* B* F F F F F F* F* E

c c c c c* B B B B 8 B B

A A

E

A

E

A*

E

D

E*

D

E*

D

E*

D

C

D

C

D*

C

© © © ©

vrijeme t

redoslijed

LRU

© © © © ©

1 B

2

C

3

B

4

A

6 F

7

B

8 0

9

F

10 E

11

C

12

B

13

E

B* B* B 8 B B* B B B B* C C C

c C* C* C* F F F F F F F* F*

A A

E

A

E

A*

E

D

E*

D

E*

D

E

D*

E

B

E

B

E

Opaska: Blok označen sa zvijezdicom kandidat je za zamjenu

SI. 10.13 Primjer a lgor itma zamjene FIFO i LRU

Page 335: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 331,

Pretpostavit ćemo da priručna memorija ima samo četiri bločna priključka te da su na početku izvođenja 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 možemo ocjenjivati djelotvornost al-goritama zamjene. Iscrpna ispitivanja pokazala su da FIFO algoritam i algoritam slučajne zamjene imaju skoro podjednake rezultate (omjere pogotka), dok LRU ima 10% do 15% veći omjer pogotka.

10.5.1. VELIČINA BLOKA I KAPACITET PRIRUČNE MEMORIJE

Jedan od najvažnijih faktora koji utječu na omjer pogotka priručne memorije jest veličina bloka, odnosno linije i kapacitet priručne memorije. Pod veličinom bloka ili linije razumije-va se broj bajtova ili riječi koji je pridružen svakoj znački. Povećanjem veličine bloka, zahva-ljujući lokalnosti programa, povećava se i omjer pogotka. Veličina bloka varira od nekoliko bajtova (riječi) do relativno velikih blokova od 64 ili 128 bajtova. No veći blok zahtijeva i dulje vrijeme njegova prijenosa između glavne memorije i priručne memorije. Pretjerana veličina bloka može imati za posljedicu tzv. onečišćenje priručne memorije koje se ogleda u tome što se neki podaci sadržani u bloku nikad ne upotrebljavaju. Za većinu procesora vrijedi da je veličina bloka jednaka veličini bloka podataka koji se inače prenosi između glavne i priručne memorije. Neki procesori, međutim, koriste subbločnu veličinu kao jedi-nicu koja se prenosi između glavne i priručne memorije.

Kapacitet priručne memorije također utječe na omjer pogotka. Uz ostale nepromjenjive parametre priručne memorije općenito vrijedi da se omjer pogotka povećava ako se pove-ćava kapacitet priručne memorije. Analize pokazuju da omjer pogotka brzo raste do neke prijelomne vrijednosti kapaciteta priručne memorije (npr., 32K ili 64K), a zatim je rast omje-ra pogotka vrlo usporen. To se objašnjava vremenskom lokalnosti programa: program adresira samo ograničeni broj riječi za vrijeme trajanja nekog vremenskog intervala. No ako je kapacitet priručne memorije tako velik da blokovi "žive" u priručnoj memoriji dulje nego što zahtijeva radni skup W(t, h), onda povećanje kapaciteta priručne memorije nema djelotvornog utjecaja na povećanje omjera pogotka.

Priručna memorija može se klasificirati i prema broju njezinih razina koje ona zauzima u memorijskoj hijerarhiji pa pritom govorimo o jednorazinskoj i višerazinskoj priručnoj memo-riji. Jednorazinska priručna memorija je u prvim računalima koji su koristili priručnu me-moriju bila ostvarena kao brza memorija temeljena na većem broju čipova, naravno, izvan procesorskog čipa. Procesor je u tom slučaju komunicirao s priručnom memorijom preko vanjske sabirnice. Zahvaljujući razvoju tehnologije visokog stupnja integracije, moguće je bilo priručnu memoriju implementirati na samom procesorskom čipu (engl. on-chip cache). Bitna značajka takve izvedbe priručne memorije (koja se obično naziva "primar-na" priručna memorija, odnosno L1 priručna 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 priručne memorije (L2) ostvarena je kao memorija većeg kapaciteta od priručne memorije L1, a može se ostvariti izvan procesorskog čipa ili na samom procesorskom čipu. Razlog uvođenja druge razine priručne memorije (naziva se još i "sekundarna" priručna memorija) očigledan je: kad ona ne bi postojala, procesor bi u slučaju promašaja morao pristupati glavnoj memoriji preko

Page 336: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

332 11. POGLAVLJE: VIRTUALNA MEMORIJA

vanjske sabirnice. Zbog veće latentnosti glavne memorije i zbog manje propusnosti vanj-ske sabirnice takav se pristup odražava negativno na performansu sustava. Zahvaljujući razini L2 priručne memorije, procesor u slučaju promašaja u razini L1 priručne memorije pristupa razini L2 i na taj način smanjuje negativne efekte promašaja koji su neizbježni u jednorazinskoj priručnoj memoriji. Da bi se smanjio negativan utjecaj promašaja u sekun-darnoj priručnoj memoriji, koji zahtijeva komunikaciju procesora s glavnom memorijom, uvodi se i treća razina priručne memorije L3. Današnji stupanj razvoja tehnologije visokog stupnja integracije dopušta da se i razina L3 priručne memorije kapaciteta od nekoliko MB, također, realizira na procesorskom čipu.

Već smo spomenuli (poglavlje 9.) da priručna memorija može biti organizirana tako da se u njoj pohranjuju instrukcije i podaci (l&D priručna memorija, naziva se još i sjedinjena priručna memorija; engl. unified cache). Druga je organizacija priručne memorije, koja je češća, takva da se priručna memorija "rasprši" na dvije memorije, i to na priručnu memoriju koja pohranjuje samo instrukcije (instrukcijska ili i priručna memorija; engl. / cache) i pri-ručnu memoriju koja sadržava samo podatke (priručna memorija podataka ili D priručna memorija; engl. D cache). Takva se izvedba priručne memorije naziva i harvardski tip pri-ručne memorije. I&D priručna memorija je jednostavnija, dok raspršena izvedba priručne memorije dopušta istodobni pristup podacima i programu što je iznimno važno kad je procesor ostvaren kao protočni procesor (14. poglavlje).

Primjer 10.10.

Tablice 10.1. i 10.2. prikazuju osnovne značajke priručne memorije za procesor Motorola MPC7540 (Power PC ISA) i procesor ltanium-2 (EPIC ISA), tvrtke Intel.

Motorola MPC7540 LI L2 L3

Kapacitet

32 KB1 priručna memorija 32 KB D priručna memorija

256 KB l&D priručna memorija

1/2 MB l&D priručna memorija

Način smještanja blokova u bločne priključke

Skupna asocijativna (8-putna)

Skupna asocijativna (8-putna)

Skupna asocijativna (8-putna)

l

Veličina bloka (linije) 32 bajta 64 bajta 64 bajta

Algoritam zamjene blokova

Pseudo LRU Dva različita pseudo slučajna

Dva različita pseudo slučajna

Način obnavljanja sadržaja glavne memorije

Pohranjivanje-skroz/ kopiranje nazad (programirljivo)

Poh ra njiva nje-skroz/ kopiranje nazad (programirljivo)

Pohranjivanje-skroz/ kopiranje nazad (programirljivo)

Detekcija/ispravljanje pogreške

Paritetni bit (jedan bit po bajtu)

Paritetni bit za značku i podatke

Paritetni bit za značku i podatke

Mjesto implementacije Procesorski čip Procesorski čip Izvan procesorskog čipa ;

>

Tablica 10.1. Osnovne značajke priručne memorije za procesor Motorola MPC7540 (Power PC ISA)

Page 337: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 333,

ltanium-2 LI L2 L3

Kapacitet

16 KB1 priručna memorija 16 KBD priručna memorija

256 KB l&D priručna memorija

3 MB l&D priručna memorija

Način smještanja blokova u bločne priključke

Skupna asocijativna (4-putna)

Skupna asocijativna (8-putna)

Skupna asocijativna (24-putna)

Veličina bloka (linije) 64 bajta 128 bajta 128 bajta

Algoritam zamjene blokova

LRU NRU NRU

Način obnavljanja sadržaja glavne memorije

Pohranjivanje-skroz Kopiranje nazad Kopiranje r\azad

Detekcija/ispravljanje pogreške

ECC ECC (SECDED) ECC (SECDED)

Mjesto implementacije Procesorski čip Procesorski čip Procesorski čip

Tablica 10.2. Osnovne značajke priručne memorije za Intel ltanium-2 (EPIC ISA)

10.5.2. NAČIN OBNAVLJANJA SADRŽAJA GLAVNE MEMORIJE

U potpoglavlju 10.2. već smo opisali načine obnavljanja sadržaja 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 priručnoj memoriji i glavnoj memoriji i na taj se način osigurava da je sadržaj u glavnoj memoriji uvijek valjan;

i i) upisivanje u međuspremnik (engl. write buffer) - inačica metode „ po hranjiva nje-skroz"u kojoj se upis podatka u glavnu memoriju ostvaruje pomoću upisnog među-spremnika i sklopovlja kojim se oslobađa procesor od izravnog obnavljanja sadržaja glavne memorije;

iii) „kopiranje nazad" (engl. copy back, write back) - sastoji se u tome da se podatak upi-suje samo u lokaciju u priručnoj memoriji, a da se upis označi posebnom zastavicom pridruženoj bloku. Tijekom zamjene tako označenog bloka, on se upisuje natrag u glavnu memoriju i na taj se način obnavlja sadržaj glavne memorije. Problem s upi-som „kopiranje nazad" jest u tome što prije zamjene označenog bloka sadržaj dijela glavne memorije nije obnovljen, odnosno valjan.

10.5.2. NAČIN PRIBAVLJANJA BLOKA IZ GLAVNE MEMORIJE

Dva su osnovna načina pribavljanja blokova iz glavne memorije u priručnu memoriju: i) pribavljanje na zahtjev (engl. demand fetching); ii) pretpribavljanje.

Page 338: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

334 11. POGLAVLJE: VIRTUALNA MEMORIJA

U slučaju pribavljanja na zahtjev, blok se prenosi samo onda kad procesor zahtijeva poda-tak (instrukciju) i kad se taj referencirani podatak ne nalazi u priručnoj memoriji, odnosno kad se dogodi promašaj.

U načinu pretpribavljanja predviđa se sljedeći blok koji će biti potreban i on se tijekom besposlenog (engl. idle) ciklusa prenosi u priručnu memoriju. Zahvaljujući lokalnosti pro-grama obično se sljedeći blok uzima kao blok koji neposredno slijedi aktivnom bloku (po-stupak se naziva OBL - One block look-a-head). Različiti su načini započinjanja pretpribav-ljanja bloka:

• pretpribavljanje uvijek - ono dopušta najveći porast omjera pogotka, ali povećava memorijski promet,

• pretpribavljanje u slučaju promašaja - uz zahtijevani blok pribavlja se još jedan, nje-mu susjedni blok,

• privjesno pretpribavljanje (engl. togged prefetch) - pretpribavljanje novog bloka za-počinje pri prvom referenciranju podatka u već pretpribavljenom bloku.

10.6. KOHERENCIJA PRIRUČNE MEMORIJE U uskoj vezi s upisom podatka u priručnu memoriju i s obnavljanjem sadržaja glavne me-morije jest problem konzistentnosti podataka, odnosno koherencije priručne memorije.

Koherencija memorijskog sustava može se općenito i najjednostavnije opisati na sljedeći način: memorijski sustav koherentan je ako je vrijednost dobivena instrukcijom load uvi-jek vrijednost koju je posljednja instrukcija store pohranila na memorijsku lokaciju s istom adresom. Problem koherencije, odnosno nekonzistentnosti podataka, nastupa kad se po-daci u memorijskom sustavu mogu mijenjati iz više od jednog izvora. Na primjer, u jed-no procesors kom računarskom sustavu s priručnom memorijom konzistentnost podataka narušena je ako kopija podatka u priručnoj memoriji nije jednaka kopiji podatka u glavnoj memoriji. Primjerice, podatak u glavnoj memoriji obnovljen je metodom po hranjiva nj a-kroz, ali se nakon toga sadržaj te memorijske lokacije glavne memorije promijenio zbog ulazno-izlazne operacije (aktivnosti U/l kanala).

Općenito, problem koherencije priručne memorije ne odnosi se samo na podatke (u užem smislu te riječi) već i na instrukcije (npr. kod operacijskog sustava sa zamjenom stranica; engl. page-swapping operation system).

Problem koherencije priručne memorije posebno je izražen u multiprocesorskim susta-vima u kojima svaki procesor ima i vlastitu priručnu memoriju. Osim toga, ima i pristup zajedničkoj glavnoj memoriji. U takvom sustavu problem nekonzistentnosti podataka na-stupa zbog postojanja višestrukih kopija podataka koje procesori mogu lokalno (u svo-jim privatnim priručnim memorijama) mijenjati. Primjerice, ako je isti podatak pohranjen u više privatnih priručnih memorija pa jedan od procesora mijenja taj podatak u svojoj priručnoj memoriji, mora se ista promjena obaviti i u ostalim privatnim priručnim memori-jama. Dakako, promjena se mora obaviti i u glavnoj memoriji.

U računarskim sustavima koristi se protokol MESI (modified-exclusive-shared-invalid) kojim se osigurava koherencija priručne memorije. Protokol je prvenstveno bio namijenjen mul-tiprocesorskim sustavima, ali se rabi i u jednoprocesorskim sustavima.

Page 339: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 335,

10.7. PRIRUČNA MEMORIJA-ANALIZA SLUČAJA PROCESOR MC 68030 32-bitni CISC procesor MC 68030 (tvrtka Motorola) ima na procesorskom čipu ostvarenu instrukcijsku priručnu memoriju i priručnu memoriju podataka, dakle riječ je o harvard-skom tipu priručne memorije. Svaka od njih je veličine 256 bajtova i ima po 16 bločnih priključaka. Veličina bloka, odnosno linije je 16 bajtova (ili 4 duge riječi, pri čemu je duga riječ (engl. long word) naziv za 32-bitne riječi). Obje priručne memorije rabe izravno pre-slikavanje. Pristup priručnim memorijama omogućen je virtualnom (logičkom) adresom. Slika 10.14 prikazuje organizaciju instrukcijske priručne memorije. Blok je organiziran u tzv. četiri uloška, odnosno četiri duge riječi, i to tako daje omogućena zamjena pojedinačnog ulaska (4 bajta), što odgovara subbločnom prijenosu. U polju značke koja je pridružena svakom bločnom priključku nalaze se i 4 bita valjanosti V koji su pridruženi svakoj dugoj ri-ječi u bloku. Bit valjanost služi za rješavanje problema nekonzistentnosti priručne memori-je: ako se sadržaj memorijske lokacije u glavnoj memoriji promijenio (npr. uslijed aktivnosti U/l), obrisat će se bit valjanosti u znački koja odgovara dugoj riječi koja se nalazi u bločnom priključku koji sadržava blok iz glavne memorije u kojem je došlo do promjene.

Pored subbločnog prijenosa, na poseban zahtjev sabirničkog upravljačkog sklopa ostvaru-je se prijenos u snopu kojim se zamjenjuje cijeli blok, odnosno linija (16 bajtova).

Značka se sastoji od 24 najznačajnijih bitova virtualne (logičke) adrese, bita FC2 (bita funk-cijskog koda) koji se upotrebljava za razlikovanje pristupa u korisničkom i nadglednom načinu rada te od 4, već spomenuta, bita valjanosti V. Organizacija adresne riječi prikazana je također na slici 10.14. Adresni bitovi A3 - A2 služe za izbor jedne od 4 duge riječi u bloku. Adresni bitovi A7 - A4 upotrebljavaju se za izbor jednog od 16 bločnih priključaka. Adresni bitovi A31 - A8 i bit funkcijskog koda FC2 uspoređuju se u komparatoru sa značkama iza-branog bločnog priključka. Pogodak se postiže kad se podudaraju adresni bitovi i FC2 sa značkom i kad je bit valjanosti V, određen na temelju A3 - A2, postavljen u 1. U slučaju pogotka izabrana se riječ (16 bita), određena adresnom linijom Air iz priručne memorije prosljeđuje procesoru.

U slučaju promašaja, odnosno nepodudaranja adresnog dijela i (ili) funkcijskog koda sa značkom ili u slučaju obrisanosti bita valjanosti V, sabirnički upravljački sklop započinje dohvat duge riječi u kojoj se nalazi zahtijevana instrukcija i puni odgovarajući ulazak (subblok) u priručnoj memoriji. Jednako tako, može se zahtijevati i prijenos u snopu koji će zamijeniti cijeli blok. Ako je došlo o podudaranja virtualne adrese sa značkom, a daje samo odgovarajući bit valjanosti obrisan (V = 0), dok su preostalih jedan ili više bitova valjanosti 1, izvest će se subbločni prijenos.

Procesor MC 68030 ima zanimljivu značajku: kad započinje pristup odgovarajućoj priruč-noj memoriji (instrukcijskoj ili priručnoj memoriji podataka), istodobno započinje i pristup sklopovima u memorijskoj upravljačkoj jedinici MMU (Memory Management Unit) koji pre-slikavaju logičku adresu u fizičku. Ako se dogodio pogodak (blok se nalazi u priručnoj me-moriji), MMU potvrđuje pravo upisivanja te informacija se prenosi prema priručnoj memo-riji i sabirničkom upravljačkom sklopu (operacija pisanja za priručnu memoriju podataka) ili se informacija iz priručne memorije prenosi procesoru (operacija čitanja). Napomenimo da se MMU nalazi na procesorskom čipu i da ima jednaku brzinu rada kao i procesor. U slu-čaju promašaja upotrebljava se već preslikana adresa u MMU i koristi se vanjski sabirnički ciklus da bi se pribavila instrukcija ili dohvatio podatak iz glavne memorije (npr. u slučaju

Page 340: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

336 11. POGLAVLJE: VIRTUALNA MEMORIJA

operacije čitanja). Bez obzira na to nalazi li se zahtijevani podatak u priručnoj memoriji ili ne, MMU preslikava logičku adresu u fizičku. Obje operacije, pristup priručnoj memoriji i preslikavanje logičke adrese u fizičku u procesoru izvode se istodobno.

Priručna memorija podataka ima jednaku organizaciju kao i instrukcijska priručna memo-rija. Priručna memorija za obnavljanje sadržaja glavne memorije upotrebljava tehniku po-hranjivanja-kroz: pri pogotku kod operacije pisanja mijenja se sadržaj ulaska (duge riječi) u priručnoj memoriji podataka. Neposredno se ta promjena prenosi i glavnoj memoriji. U slučaju promašaja pri operaciji pisanja ne pristupa se priručnoj memoriji, već se podatak upisuje samo u glavnu memoriju.

Prije rečeno ne vrijedi za instrukcijsku priručnu memoriju, budući da promjene njezina sa-držaja od strane procesora tijekom izvođenja programa nisu dopuštene te stoga ne postoji mogućnost promašaja pri operaciji pisanja.

FC2

• 24 bita

31

značka

izbor 1 od 16

polje značke

16 bločnih priključaka

V V V V

V V V V

V V V V

J J r* r*

V V V V

V V V V

V V V V

zamjena značke

komparator

4 3 2

logička adresa

4 duge riječi = 16 bajtova

izbor duge riječi

podaci sa sabirnice

L_T

podudaranje (pogodak bloka)

pogodak ulaska

podataka instrukcijske

priručne memorije

podaci prema cache holding

registru

(duge riječi) prema upravljačkoj logici priručne

memorije

SI. 10.14 Organizacija instrukcijske priručne memorije

Page 341: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 337,

11. POGLAVLJE

VIRTUALNA MEMORIJA

11.1. UVOD Glavna memorija predstavlja jednu od kritičnih funkcijskih jedinica računala jer svojim značajkama bitno utječe na performansu cijelog računarskog sustava. U 9. smo poglavlju naglasili dvije bitne značajke glavne memorije: latentnost (brzinu memorije) i kapacitet. Problem latentnosti, odnosno nesklada u brzini sklopovlja procesora i glavne memorije rješava se priručnom memorijom (engl. cache memory) koja je podrobno opisana u 10. poglavlju. U ovom ćemo poglavlju opisati virtualnu memoriju (engl. virtual memory) kojom se prvenstveno rješava problem kapaciteta glavne memorije.

(Opaska: riječ virtualan latinskog je podrijetla (lat. virtus) i opisuje nešto s vrlinama kao što su hrabrost, snaga, sposobnost djelovanja, no istodobno skriveno, koji se obično ne pojav-ljuje ali se može pojaviti.)

Uporabom arhitektonskog koncepta - virtualne memorije ostvaruje se sljedeće: Glavna memorija se prividno pojavljuje kao memorija koja ima kapacitet sekundarne memorije i brzinu jednaku brzini najbrže (ili skoro najbrže) memorije u memorijskoj hijerarhiji.

Uporaba sve složenijih operacijskih sustava, viših programskih jezika te razvoj složenih programskih sustava u višekorisničkim okruženjima koji su vrlo često namijenjeni i mul-timedijskim primjenama postavljaju iznimno velike zahtjeve u vezi s kapacitetom glavne memorije. Naime, iako današnji (2011.godina) računarski sustavi imaju glavne memorije kapaciteta više stotina MB ili više desetaka GB, mnoge primjene, posebno one u višekori-sničkim okruženjima, zahtijevaju još veći kapacitet glavne memorije. Uz pretpostavku da se tehnološki dadu riješiti problemi izvedbe memorijskih modula vrlo velikog kapaciteta, kao što su fizička veličina modula, potrošak snage te hlađenje modula, još uvijek ostaje otvoreno pitanje odnosa performanse i cijene.

Virtualna memorija, koja se sastoji od dviju memorijskih hijerarhijskih razina - glavne me-morije i sekundarne memorije, stvara privid korisniku da je glavna memorija kapaciteta jednakog kapacitetu sekundarne memorije uz vrlo malo povećanje latentnosti u odnosu na "prvotnu" glavnu memoriju. Ne zaboravimo daje sekundarna memorija kapaciteta koji je za razred veličine veći u odnosu na kapacitet glavne memorije (tablica 9.1). Drugim ri-ječima, virtualnom se memorijom dobiva puno veća izravno adresirljiva memorija od one koja u računarskom sustavu zaista fizički postoji. Osim toga, virtualna memorija ima još barem tri pozitivna popratna učinka: oslobađa korisnike od pisanja programa koji, uz to što rješavaju određeni problem, trebaju i upravljati razmještanjem programskih blokova uslijed nedostatka dovoljnog kapaciteta glavne memorije, programe čini neovisnima o konfiguraciji i kapacitetu fizičke (glavne) memorije u računarskom sustavu te uz vrlo krat-ko vrijeme pristupa memoriji postiže nisku cijenu po pohranjenom bitu (engl. cost per bit).

Page 342: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

338 11. POGLAVLJE: VIRTUALNA MEMORIJA

11.2. FIZIČKI I VIRTUALNI ADRESNI PROSTOR Da bi se razumio i objasnio način djelotvornog rukovanja virtualnim memorijskim susta-vom (u kojem su uključene najmanje dvije razine u memorijskoj hijerarhiji: glavna memo-rija M2 i sekundarna memorija M3 (slika 11.1) uz sudjelovanje procesora i operacijskog su-stava), potrebno je razlikovati fizički adresni prostor i virtualni adresni prostor.

procesor

virtualna memorija

SI. 11.1 Virtualna memorija

Fizičku memoriju čini skup stvarnih, fizičkih memorijskih lokacija glavne memorije u ko-jima se pohranjuju instrukcije i podaci. Dakle, fizička memorija jest ona memorija koja je priključena na sabirnicu procesora, odnosno računala (npr. memorijski modul DIMM; 9. poglavlje). Adresa riječi ili bajta u fizičkoj memoriji naziva se memorijska adresa. Skup ta-kvih adresa, koje se jednoznačno dodjeljuju fizičkim memorijskim lokacijama, predstavlja fizički adresni prostor.

Adresa (npr. ime za neku konstantu ili varijablu) koju upotrebljava programer ili koju ge-neriraju program, proces ili dretva kao najmanja programska jedinica naziva se virtualna ili logička adresa. Adresa koju generira procesor tijekom prevođenja i izvođenja programa promatra se kao virtualna adresa jer se za nju ne zahtijeva niti nužno očekuje da referencira neku stvarnu lokaciju u fizičkoj memoriji. Skup virtualnih adresa čini virtualni adresni prostor.

Page 343: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 339,

OznačimosF = {0,1,2,nrvl}fizički adresni prostor,asV = {0,1,2, ...,n-1} virtualni adresni prostor.

Zanimljivo je daje tijekom povijesnog razvoja (mikro)računarskih sustava odnos između veličine fizičkog i virtualnog adresnog prostora bio je trojak.

i) Fizički adresni prostor F jednak je virtualnom adresnom prostoru V: m = n.Takvu značajku susrećemo u računarskim sustavima koji su se temeljili na 8-bitnim mikroprocesorima u kojima su fizički i virtualni adresni prostori veličine svaki po 64 KB.

ii) Virtualni adresni prostor manji je od fizičkog adresnog prostora. Virtualni adresni prostor bio je ograničen širinom adresne sabirnice (brojem adresnih linija) procesora. Ona je, tipič-no, za 8-bitne (mikro)procesore bila 16-bitna i time određivala veličinu adresnog prostora od 64 K. Upotrebom posebnih arhitekturnih zahvata kao što su memorijske banke ili indek-sno preslikavanje mogao se povećati fizički adresni prostor tako da je fizički adresni prostor F postao veći od virtualnog adresnog prostora V: m > n . Na primjer, virtualni adresni pro-stor bio je i dalje veličine 64 K, a fizička je memorija bila organizirana u osam memorijskih banaka - svaka po 64 K (n = 216; m = 23 x 216).

iii) Virtualni adresni prostor veći je od fizičkog adresnog prostora. Pojavom 16-bitnih, 32-bitnih i 64-bitnih (mikro)procesora problem rukovanja memorijom mijenja se iz teme-lja. Svjesni potrebe velikog adresnog prostora arhitekti povećavaju širinu adresne sabirnice (mikro)procesora tako da se može izravno adresirati više desetaka G (230) ili T (tera) (240) bajtova. Primjerice, AMD Opteron X4 koristi 48 bitova, od potencijalno raspoloživih 64 bita za izvedbu virtualnog memorijskog prostora pa se virtualni adresni prostor sastoji od 256 T adresa. Stvarna, fizička glavna memorija koja je priključena na sabirnicu procesora jest puno manjeg kapaciteta unatoč padu cijene poluvodičkih memorija. U takvim se slučaje-vima adresa koju procesor postavlja na sabirnicu i referencira podatak ili instrukciju naziva i promatra kao virtualna adresa.

11.3. ADRESNO PRESLIKAVANJE Suvremena računala imaju virtualni adresni prostor puno veći od fizičkog adresnog pro-stora i u tom se slučaju upotrebljava koncept virtualne memorije.

Programu se, prije njegova izvođenja, mora dodijeliti stvarni, fizički memorijski prostor. U suvremenim se računarskinrusustavima dodjeljivanje memorijskog prostora izvodi dina-mički - tijekom izvođenja programa. U uskoj vezi s dinamičkom dodjelom memorijskog prostora jest preslikavanje virtualnog adresnog prostora V u fizički adresni prostor F.

Formalno, preslikavanje se može opisati funkcijom t Ć V - > F U {<|>},

gdje je V = {0, 1, 2,..., n -1} virtualni adresni prostor, F = {0,1, 2,..., m -1} fizički adresni prostor, pri čemu je n » m, te (j) prazan skup.

Opišimo funkciju f. Neka je a EV. Funkcija f definirana je na sljedeći način: f{a) = a'ako se podatak (u širem smislu te riječi, dakle podatak ili instrukcija) s virtualnom adresom a nalazi u fizičkoj (glavnoj) memoriji na adresi a'ia'G F), odnosno f(a) = {()>}, ako se podatak s virtualnom adresom a ne nalazi u fizičkoj (glavnoj) memoriji.

Page 344: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

340 11. POGLAVLJE: VIRTUALNA MEMORIJA

Preslikavanje f(o) = a' označava pogodak, dok f(a) = {<j>} promašaj (engl. missing-item fault).

Slika 11.2 shematski prikazuje preslikavanje virtualnog adresnog prostora u fizički adresni prostor.

virtualna adresa

SI. 11.2 Shematski prikaz preslikavanja virtualnog adresnog prostora u fizički 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 sekun-darne memorije u glavnu memoriju. Slika 11.3 prikazuje pojednostavljenu organizaciju virtualnog memorijskog sustava. U slučaju promašaja, program koji je generirao virtualnu adresu a privremeno se suspendira, dok se zahtijevana riječ ne prenese iz sekundarne me-morije u glavnu memoriju. Razlog suspenzije programa koji je izazvao promašaj je sljedeći: pristup sekundarnoj memoriju (disku) je spor u usporedbi s vremenom pristupa glavnoj memoriji (tablica 9.1.) te procesor neće čekati nekoliko stotina tisuća ili milijuna perioda si-gnala vremenskog vođenja ne radeći ništa 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 omogućuje pokretanje novog programa (proce-sa, 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 sadržava i referencirani podatak, s diska u glavnu memoriju.

Page 345: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 341,

L _l

SI. 11.3 Pojednostavnjeni prikaz organizacije virtualnog memorijskog sustava

Preslikavanje adrese iz virtualnog prostora u adresu fizičkog prostora ostvaruje se pomoću tablice adresnog preslikavanja (engl. mapping table). Tijekom izvođenja programa tablica adresnog preslikavanja sadržava fizičke adrese koje su pridružene odgovarajućim virtual-nim adresama. To pridruživanje obavlja operacijski sustav koji je odgovoran i za promjene u tablici tijekom izvođenja programa.

1 1 . 3 . 1 . DENNINGOV MODEL VIRTUALNE MEMORIJE

Postupak adresnog preslikavanja opisat ćemo na jednostavnom modelu virtualne memo-rije koji je predložio P. J. Denning (slika 11.4). Skrećemo pozornost na to da model u sebi ima namjerno ugrađenu nelogičnost koja će nas uputiti na pravilno rješenje 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 može biti dvojak:

1. ako se podatak, određen virtualnom adresom, nalazi u fizičkoj (glavnoj) memoriji, tada element u tablici preslikavanja predstavlja njegovu fizičku adresu a';

2. ako se podatak, određen virtualnom adresom, ne nalazi u fizičkoj (glavnoj) memo-

Page 346: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

342 11. POGLAVLJE: VIRTUALNA MEMORIJA

riji (dogodio se promašaji), odgovarajući element neće sadržavati adresu lokacije u fizićkoj memoriji a', već će sadržavati adresu mjesta u sekundarnoj memoriji (npr. sektor na disku) gdje je podatak smješten. Dakle, osim adresnog dijela element u ta-blici adresnog preslikavanja mora sadržavati i informaciju o (ne)nazočnosti podatka u glavnoj memoriji.

SI. 11.4 Denningov model virtualne memorije

Mehanizam adresnog preslikavanja izvijestit će operacijski sustav daje došlo do promašaja time što će se zastavica Fault (slika 11.4) postaviti u jedan (Fault 1). Operacijski će sustav u tom slučaju izvesti odgovarajuće radnje: pohraniti stanje programa (procesa, dretve), suspendirati program (proces, dretvu), pokrenuti akcije za dohvat traženog podatka iz se-kundarne memorije, pokrenuti novi program (proces, dretvu) te nakon što je traženi poda-tak prenesen u glavnu memoriju i upisana njegova fizička adresa u odgovarajuće mjesto u tablici preslikavanja, osvježiti informaciju o raspoloživosti podatka u glavnoj memoriji i,

Page 347: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 343,

konačno, nakon suspenzije novopokrenutog programa (procesa, dretve), ponovo aktivirati suspendirani program (proces, dretvu) koji je bio izazvao promašaj.

Opisan Denningov model ima jednu nelogičnost U skladu sa slikom 11.4 možemo usta-noviti da virtualna adresa predstavlja pomaknuče (engl. offset) u odnosu na početni ele-ment 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 premašuje 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 preslikava-nja ima 4 G lokacija (elemenata). To znači da je umjesto uporabe tablice adresnog presli-kavanja veličine 4 G elemenata logičnije 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 veličinu tablice adresnog preslikavanja smanjiti. Veličina tablice smanjit će se ako element u njoj sadržava adresu bloka podataka smještenog u glavnoj memoriji umjesto adrese po-jedinačno referenciranog podatka.

Rješenje za nelogičnost u Denningovom modelu nalazimo u dijeljenju virtualnog i fizičkog adresnog prostora u blokove. Prema tomu jesu li blokovi stalne ili promjenjive veličine, 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 određen 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 veličina virtualnog adresnog prostora je 232 = 4 G. Fizička adresa neka je duljine 26 bita, odnosno veličina fizičkog adresnog prostora je 226 = 64 M. Pretpostavimo da su virtualni i fizički adresni prostor podijeljeni na blokove čvrste duljine, dakle stranice, veličine 4 K riječi. U tom je slučaju veličina tablice adresnog preslikavanja jednaka:

(veličina virtualnog adresnog prostora) / (veličina stranice),

odnosno 4 G / 4 K = 232 / 212 = 220.

Tablica adresnog preslikavanja ima 1 M elementa.

Slika 11.5 prikazuje„popravljeni" Denningov model virtualne memorije koji je dobiven di-jeljenjem virtualnog i fizičkog adresnog prostora na blokove čvrste duljine. Možemo uočiti da se tablica adresnog preslikavanja sada pretvorila u tablicu straničnogpreslikavanja koja ima za faktor veličine stranice manji broj elemenata (Primjer 11.2.).

Page 348: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

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 dohvaća ili pohranjuje podatak, organizirana je u dva dijela: značajniji adresni bitovi čine virtualni stranični broj (engl. virtualpage number), a manje značajni bitovi adrese predstavljaju po-maknute (engl. offset in page) u odnosu na početak stranice tako da određuje riječ u stra-nici. Fizička adresa organizirana je tako da su njezini manje značajni bitovi, koji odgovaraju pomaknuću, tj. adresi riječi u bloku dobiveni izravnim prijenosom dijela virtualne adrese (pomaknuća) u manje značajne bitove fizičke adrese, a značajniji se dio fizičke adrese (fizič-ki stranični broj) dobiva adresnim preslikavanjem virtualnog straničnog broja u fizički stra-nični broj (slika 11.6). Adresno preslikavanje obavlja se tablicom straničnog preslikavanja.

Slika 11.6 prikazuje organizaciju virtualne adrese za virtualnu memoriju prikazanu na slici 11.7 i njezino preslikavanje u fizičku adresu. U ovom smo jednostavnom slučaju pretposta-vili da se virtualni adresni prostor sastoji od 32 bloka (stranice), a fizički adresni prostor od 8 blokova (straničnih okvira) te da je blok veličine 1 K riječi.

Preslikavanje virtualne adrese u fizičku adresu može se opisati na ovaj način (slika 11.5): 1. virtualna se adresa smješta u registar virtualne adrese; 2. zastavica Fault postavlja se u 0 (Fault 0);

Page 349: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 345,

3. virtualni se stranični broj dovodi na ulaz tablice straničnog preslikavanja i dohvaća (čita) se element iz tablice;

4. ako je postignut pogodak element iz tablice straničnog preslikavanja na koji pokazu-je virtualni stranični broj, smješta se na značajnija mjesta u registru fizičke adrese (u polje označeno kao fizički stranični broj; slika 11.5);

5. istodobno se pomaknuće iz registra virtualne adrese izravno prenosi u polje poma-knuća u registru fizičke adrese;

6. ako nije postignut pogodak, što znači da se blok (stranica) s virtualnim straničnim brojem ne nalazi u glavnoj memoriji, zastavica Fault postavlja se u jedan (Fault 1) i pokreće se postupak rukovanja promašajem.

virtualni stranični broj

r ^ ^ 14 10 9 0

3 bita 10 bitova H •H H

fizički stranični broj

51.11.6 Organizacija virtualne i fizičke adrese tijekom preslikavanja pomoću tablice straničnog preslikavanja (pojednostavljeno)

Uočimo još jedan detalj vezan za Denningov model virtualne memorije. Naime, u slučaju pogotka pristup podatku u glavnoj memoriji ostvaruje se u dva slijedna koraka - prvo se pristupa tablici straničnog preslikavanja da bi se dohvatila fizička adresa referenciranog podatka, a zatim se pristupa lokaciji u glavnoj memoriji gdje se nalazi referencirani poda-tak. Ako pretpostavimo da je tablica straničnog preslikavanja realizirana u glavnoj memo-riji, možemo ustvrditi da privid o velikoj glavnoj memoriji (čiji je kapacitet prividno jednak kapacitetu sekundarne memorije) plaćamo, čak i u slučaju pogotka, dvostrukim pristupom glavnoj memoriji, odnosno dvostrukim vremenom pristupa memoriji.

Naravno, dodatna cijena koju plaćamo je i „gubitak" dijela kapaciteta radne memorije koji je potreban za izvedbu tablice straničnog preslikavanja jer se svakom programu (ili procesu) u izvršavanju, u višeprogramskom načinu rada, treba dodijeliti po jedna tablica straničnog preslikavanja. Postoje različite tehnike kojima se smanjuje dio radne memorije namijenjen izvedbi tablica straničnog preslikavanja:

i) uporaba raspršene tablice (engl. hash table) kojom se virtualni stranični broj presli-kava u raspršenu tablicu uporabom jednostavne funkcije raspršenja (engl. hashing function) tako da struktura podataka potrebna za straničnu tablicu zahtijeva broj ele-menata u tablici jednak broju fizičkih stranica (blokova), odnosno straničnih okvira u glavnoj memoriji.

ii) uporaba višerazinskih tablica straničnog preslikavanja;

Page 350: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

346 11. POGLAVLJE: VIRTUALNA MEMORIJA

iii) izvedba tablice straničnog preslikavanja kao asocijativne memorije u kojoj svaki ele-ment tablice sadrži oboje - virtualni stranični broj i fizički stranični broj te se pre-tražuje asocijativno. U tom slučaju tablica straničnog preslikavanja ima elemenata koliko ima i stranica u glavnoj memoriji.

iv) tablice straničnog preslikavanja izvedene su straničenjem (vidi 11.4) tako da se i one nalaze u virtualnoj memoriji.

11.4. STRANIČENJE Već smo spomenuli da ako se virtualni adresni prostor i fizički adresni prostor podijele na jednake blokove stalne veličine, govorimo o virtualnoj memoriji sa straničenjem (engl. pa-ging). Dogovorno ćemo uvesti sljedeću terminologiju: virtualni adresni prostor, koji odgo-vara adresnom prostoru sekundarne memorije, podijeljen je na stranice, pri čemu svaka stranica zauzima neprekinuti slijed lokacija određene, čvrste duljine (tipične veličine stra-nica su 4 - 64 KB, što u slučaju diska s 512-bajtnim sektorima odgovara 8 - 1 2 8 sektora). Glavna će memorija također biti podijeljena na stranice iste veličine, koje ćemo nazivati straničnim okvirima (engl. page frame). Slika 11.7 prikazuje shemu virtualne memorije sa straničenjem.

(Opaska: ova je pojednostavljena shema prilagođena primjeru sa slike 11.6 - virtualni adre-sni prostor sastoji se od samo 32 stranice, pri čemu je svaka veličine 1K, a fizički adresni prostor ima samo 8 straničnih okvira.) Početne su adrese stranica i straničnih okvira na slici 11.7 predočene u dekadnom brojevnom sustavu.

Naglasimo da je stranica osnovna jedinica za preslikavanje virtualnog adresnog prostora u fizički te ujedno i osnovna jedinica koja se u slučaju promašaja prenosi između sekundar-ne memorije i glavne memorije.

virtualna adresa

fizička

adresni prostor

SI. 11.7 Pojednostavljena shema virtualnog memorijskog sustava sa straničenjem

Naziv stranični okvir ima opravdanje jer se za zadani program koji zauzima neki potprostor u virtualnom adresnom prostoru, samo podskup njegovih stranica preslikava u podskup straničnih okvira u fizičkom adresnom prostoru. Napredovanjem izvođenja programa,

Page 351: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 347,

stranice iz virtualnog adresnog prostora smještat će se u oslobođene stranične okvire u fizičkom adresnom prostoru.

Slika 11.8 podrobnjje prikazuje strukturu adresnog preslikavanja u virtualnoj memoriji sa straničenjem. Općenito, svakom se procesu koji se izvodi dodjeljuje tablica straničnog pre-slikavanja ili kraće stranična tablica (engl. page table) koja je smještena u glavnoj memoriji. Broj elemenata u straničnoj tablici odgovara broju stranica u virtualnom adresnom pro-storu koji je dodijeljen procesu. Početna adresa stranične tablice za proces P sadržana je u straničnom tabličnom registru ili, kako se još naziva, baznom registru stranične tablice.

Format, odnosno oblik zapisa u elementu stranične tablice ovisi o specifičnoj implementa-ciji sustava. No općenito se element u straničnoj tablici sastoji od polja u kojem se pohra-njuje informacija o nazočnosti referencirane stranice u glavnoj memoriji (polje nazočnosti;

Page 352: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

348 11. POGLAVLJE: VIRTUALNA MEMORIJA

engl. presence field). To se polje može sastojati samo od jednog bita - bita valjanosti V (engl. valid bit) koji će biti postavljen u 1 ako je stranica određena virtualnim straničnim brojem u glavnoj memoriji: Ako jeV= 1, onda odgovarajuće adresno polje u elementu stranične tablice sadržava početnu adresu straničnog okvira u glavnoj memoriji koji sadržava refe-renciranu stranicu. Ako je V = 0, tada adresno polje u elementu stranične tablice označava adresu stranice u sekundarnoj memoriji (disku). Element tablice straničnog preslikavanja sadržava još polje u kojem se nalaze bitovi - zastavice koje označavaju pravo pristupa ak-tivnog procesa pojedinoj stranici (zastavica R (read only) = 1 - pristup stranici samo ope-racijom čitanja; zastavica W (read/write) = 1 - pristup stranici operacijama pisanja i čitanja, zastavica X (execute only) = 1 - samo izvršavanje bez prava modifikacije ili čitanja) te zasta-vica koje označava je li stranica u straničnom okviru bila modificirana upisivanjem (tzv. bit prljavosti; engl. dirty bit) i zastavica nazvana„use bit" (naziva se i "bit referenciranja") koja se postavlja ujedan kad se stranici pristupi. Zastavica prljavosti koristi se za indikaciju potre-be ponovnog upisa stranice iz straničnog okvira natrag u sekundarnu memoriju (tijekom zamjene stranica, odnosno oslobađanja straničnog okvira), a zastavica „use bit" rabi se za ostvarivanje algoritma zamjene stanica. Na temelju potonjeg opisa vidimo da se kao ele-ment u tablici straničnog preslikavanja javlja ili adresa straničnog okvira, odnosno fizička adresa (u slučaju pogotka; V = 1) ili adresa stranice u sekundarnoj memoriji (u slučaju pro-mašaja; V = 0). No, jasno je da se trebaju sačuvati i adrese stranice u sekundarnoj memoriji i to čak i onih koje se nalaze trenutno u fizičkoj (glavnoj) memoriji jer će se te adrese rabiti u postupku zamjene stranica kada te stranice prestanu biti aktivne. U mnogim izvedbama virtualne memorije tablica fizičkih adresa stranica, tj. straničnih okvira i adresa stranica u sekundarnoj memoriji, predstavljaju logičku cjelinu iako su ostvarene dvjema odvojenim strukturama podataka.

Virtualna memorija nudi još jednu pogodnost - omogućuje da više procesa dijele iste stra-nice u straničnim okvirima uz poštovanje zaštitnih prava na temelju zastavica koje označa-vaju pravo pristupa (slika 11.9) i zastavica razina prioriteta. Na primjer, proces P1 i P3 dijele stranicu u trećem straničnom 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 stranične tablice za proces P može se opisati postupak adresnog preslikavanja na sljedeći način: Ako je AR valjano i ako je ražina prioriteta pristupa < Pr

tada, akojeV= i, onda je fizička adresa = PT(P).ADDR + pomaknuće inače iznimka-promašaj

inače iznimka-povreda prava pristupa i zaštite

Komentar:

AR - polje zastavica R, W i X kojim se definira način pristupa: R - samo čitanje; W-čitanje i pisanje; X-samo izvođenje;

Pr - polje razine prioriteta: 00 - najviši prioritet 01

10

11 - najniži prioritet

Page 353: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 349,

Zastavica V = 1 označava da je referencirana stranica u straničnom okviru (pogodak);

PT(P).ADDR - označava početnu adresu straničnog okvira dobivenu iz odgovarajućeg ele-menta stranične tablice procesa P.

stranični tablični stranična tablica registar procesa Ps procesa P,

11.4.1. TRANSLACIJSKI SPREMNIKTLB (ENGL. TRANSLATION LOOKASIDE BUFFER)

Za opisanu organizaciju virtualne memorije sa straničenjem, u kojem su stranične tablice za pojedine procese smještene u glavnoj memoriji, potrebna su, kao što smo već spome-nuli, dva pristupa glavnoj memoriji:

• prvim se pristupom glavnoj memoriji dohvaća odgovarajući element iz tablice stra-ničnog preslikavanja,

• drugim se pristupom, nakon uspješnog adresnog preslikavanja, dohvaća podatak iz glavne memorije ili pohranjuje u nju.

Page 354: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

350 11. POGLAVLJE: VIRTUALNA MEMORIJA

Očito je da se zbog svega toga brzina memorijskog sustava smanjuje za faktor dva, odno-sno vrijeme pristupa glavnoj memoriji udvostručuje se. To je cijena koju plaćamo za pri-vidno velik memorijski prostor kojim raspolažemo. No to nije i jedina cijena. Dodatna se cijena odražava i u straničnoj fragmentaciji - zauzeću dijelova glavne memorije koji nisu raspoloživi za programe i podatke. Na primjer, tablice straničnog preslikavanja pojedinih procesa mogu zauzimati prilično velik dio glavne memorije koji nije raspoloživ za stranice programa.

U slučaju promašaja, tj. kada se referencirana stranica ne nalazi u straničnom okviru, vrije-me pristupa podatku povećava se, a uz to procesor troši vrijeme na kućanske poslove ve-zane za prospajanje konteksta koji su nužni za privremeno suspendiranje jednog procesa i aktiviranje drugoga.

Problem smanjenja brzine virtualne memorije rješava se tako da se dio tablice straničnog preslikavanja smjesti u maloj brzoj memoriji, zapravo posebnoj priručnoj memoriji koja se naziva transiacijski spremnik TLB (Translation Lookaside Buffer), iako bi bio bolji naziv translacijska priručna memorija. Transiacijski spremnik TLB obično je izveden na samom procesorskom čipu i pohranjuje elemente tablice straničnog preslikavanja jednog ili više procesa, i to samo one koji su korišteni u najskorijoj prošlosti. Zahvaljujući svojstvu vre-menske i prostorne lokalnosti programa i podataka, može se očekivati da će se većina re-ferenciranih podataka odnositi na lokacije u nedavno korištenim stranicama. Zbog svega toga, očekuje se da će većina referenciranja koristiti elemente iz tablica straničnog presli-kavanja koji se nalaze u translacijskom spremniku TLB. Transiacijski spremnik TLB, budući da je posebna priručna memorija, sastoji se od memorije za pohranu značaka u kojoj se pohranjuju dijelovi virtualnog straničnog broja (TLB značke, slika 11.10) i od memorije za pohranu podataka (poglavlje 10.) u kojoj se pohranjuju fizički stranični brojevi (slika 11.10). U memoriji za pohranu značaka, osim TLB značke, pohranjuju se zastavice kao što su "use" bit, odnosno bit referenciranja te zastavice za označavanje prioriteta i prava pristupa. One su potrebne jer se u slučaju podudaranja virtualnog straničnog broja sa značkom TLB više ne pristupa tablici straničnog preslikavanja. Dakle, u slučaju pogotka, procesor se upućuje izravno iztranslacijskog spremnika TLB na glavnu memoriju. U memoriji značaka nalazi se i bit valjanosti koji se postavlja u 1 kada je postignuto podudaranje virtualnog straničnog broja i značke TLB.

Transiacijski spremnik TLB obično je ostvaren kao priručna memorija s potpuno asocijativ-nim ili skupnim asocijativnim preslikavanjem i sadržava, tipično, od nekoliko desetaka do tisuću elemenata iz tablica straničnog preslikavanja.

Tijekom preslikavanja virtualne adrese u fizičku adresu, prvo se asocijativno pretražuje transiacijski spremnik TLB da bi se ustanovilo podudaranje virtualnog straničnog broja (kao dijela virtualne adrese) i značke TLB. Ako je podudaranje uspješno - dogodio se TLB pogodak, postavlja se bit valjanosti V, provjeravaju se zastavice prioriteta i prava pristupa i ako nema povrede prava pristupa, uzima se fizički stranični broj koji zajedno s pomaknu-ćem (dio virtualne adrese) oblikuje fizičku adresu kojom se pristupa memoriji. Slika 11.11. prikazuje detalj oblikovanja fizičke adrese na temelju virtualne adrese uporabom transla-cijskog spremnika TLB (u slučaju TLB pogotka).

Ako se, međutim, dogodio TLB promašaj, mora se utvrditi je li promašaj nastupio zato što se odgovarajući element iz tablice straničnog preslikavanja ne nalazi u translacijskom spremniku TLB ("TLB promašaj") ili je promašaj uzrokovan zato što se referencirana stranica ne nalazi u glavnoj memoriji ("stranični promašaj"). Ako je riječ samo o TLB promašaju (to

Page 355: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 351,

znači da se stranica nalazi u glavnoj memoriji), procesor će rukovati TLB promašajem tako da će pristupiti tablici straničnog preslikavanja i odgovarajući element iz tablice prenijeti u translacijski spremnik TLB. Nakon toga će procesor ponovo pokušati referencirati traženu stranicu.

virtualni stranićni broj pomaknuće

straničnog preslikavanja koji su korišteni u najskorijoj prošlosti

Page 356: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

352 11. POGLAVLJE: VIRTUALNA MEMORIJA

potraži fizički stranični broj u tablici straničnog preslikavanja

ostali bitovi (zastavice)

51.11.11. Detalj oblikovanja fizičke adrese na temelju virtualne adrese i fizičkog straničnog broja dobivenog iztranslacijskog spremnika TLB

Ako se dogodio stranični promašaj, procesor će uz pomoć operacijskog sustava pobuditi sve aktivnosti potrebne za prijenos stranice iz sekundarne memorije u stranični priključak glavne memorije. Uz to će se izvesti svi kućanski poslovi koji se odnose na obnavljanje tablice straničnog preslikavanja. Nakon toga, prenijet će se element iz tablice straničnog preslikavanja u translacijski spremnikTLB. Budući dajetranslacijski spremnikTLB posebna priručna memorija s relativno malim brojem priključaka za elemente iz tablice straničnog preslikavanja, može se očekivati (u slučaju TLB promašaja) zamjena nekog elementa iz TLB-a s novim elementom. Tijekom oslobađanja prostora u translacijskom spremniku TLB potrebno je kopirati zastavice (npr. zastavicu prljavosti i"use"bit) pridružene elementu koji se uklanja iz spremnika natrag u tablicu straničnog preslikavanja.

Navedimo neke tipične vrijednosti koje se odnose na translacijski spremnikTLB: • veličina spremnika: 16-1024 elemenata iz tablice straničnog preslikavanja; • veličina bloka koji se prenosi između glavne memorije (tablice straničnog preslika-

vanja) 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%; • uslučajuTLBpogotkavrijemepristupaje0.5do 1 perioda signala vremenskog vođenja: • TLB promašaj zahtijeva 10 - 30 dodatnih perioda signala vremenskog vođenja.

Page 357: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 353,

11.5. SEGMENTACIJA I SEGMENTACIJA SA STRANIČENJEM Viši programski jezici (npr. C ili Pascal) dopuštaju oblikovanje programskih logičkih cjelina kao što su procedure, programski moduli ili smisleni blokovi podataka. Svi su oni različitih veličina. Dijeljenje virtualnog i fizičkog adresnog prostora u skladu s logičkim cjelinama vodi do koncepta segmentacije (engl. segmentation). Blokovi koji se izmjenjuju između glavne i sekundarne memorije sada su promjenjive veličine i nazivaju se segmenti Segmenti, dakle, nemaju jednaku i čvrstu duljinu jer se oni odnose izravno na objekte na programskoj razini. Štoviše, njihova se veličina može mijenjati tijekom izvođenja programa. Rukovanje takvim cjelinama u virtualnom memorijskom sustavu izgleda logičnije i prirodnije u usporedbi sa straničenjem, međutim, izvedba virtualnog sustava sa segmentacijom bitno je složenija od straničenja (problem rukovanja zamjenom i smještanjem segmenata, fragmentacija me-morije) pa u računarskim sustavima zbog jednostavnosti izvedbe prevladavaju virtualni memorijski sustavi sa straničenjem.

Kombinacijom segmentacije i straničenja želi se ostvariti virtualni memorijski sustav koji objedinjuje dobra svojstva segmentacije i straničenja. U tom su slučaju virtualni adresni prostor i fizički adresni prostor podijeljeni na segmente (blokove promjenjive veličine), a svaki je segment opet podijeljen na stranice (blokove čvrste veličine). Opise postupaka adresnog preslikavanja možete naći u knjizi Ribarić, S.: Arhitektura računala RISC i CISC, Školska knjiga, Zagreb, 1996.

11.6. ZAMJENA I PRIBAVLJANJE STRANICA Potreba za zamjenom stranica u virtualnom memorijskom sustavu sa straničenjem, slično kao i u slučaju priručne memorije (poglavlje 10.), pojavljuje se kad se nova stranica iz se-kundarne memorije treba prenijeti u glavnu memoriju, a u njoj nema slobodnog stranič-nog okvira.

Budući da su svi stranični okviri zauzeti, mora se donijeti odluka koja će se stranica iz glav-ne memorije udaljiti i na taj način osloboditi stranični 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. Obično se upotrebljavaju algoritmi slučajnog izbora, FIFO, LRU i NRU.

Slično kao i kod priručne memorije, ovdje se potrebna informacija (blok ili stranica iz se-kundarne memorije) pribavlja na dva glavna načina:

i) na zahtjev, ii) pretpribavljanjem.

Pribavljanje na zahtjev najčešće se upotrebljava jer je jednostavno za izvedbu - u slučaju straničnog promašaja pribavlja se upravo ona stanica koja je i uzrok promašaja.

Pretpribavljanje temelji se na lokalnosti programa i značajkama radnog skupa pa je mogu-će predvidjeti sljedeću potrebnu stranicu i pribaviti je u glavnu memoriju prije nego je ona stvarno potrebna. Predviđanje sljedećih stranica koje će se naslovljavati tijekom izvođenja programa vrlo je teško (posebice u višekorisničkom okruženju) pa zato većina virtualnih memorijskih sustava upotrebljava pribavljanje na zahtjev.

Page 358: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

354 11. POGLAVLJE: VIRTUALNA MEMORIJA

11.7. VIRTUALNA MEMORIJA I PRIRUČNA MEMORIJA Sada kada smo se upoznali s virtualnom memorijom i priručnom memorijom (poglavlje 10.) možemo odgovoriti i na pitanje: Što se dobiva uporabom obaju koncepata - priručne memorije i virtualne memorije? Na temelju analize mehanizma djelovanja priručne memo-rije možemo zaključiti da ona služi za ubrzanje rada glavne memorije, tvoreći privid o po-stojanju vrlo brze glavne memorije. S druge strane, virtualna memorija stvara privid o po-stojanju glavne memorije vrlo velikog kapaciteta. Kombinacijom triju razina u memorijskoj hijerarhiji (priručne memorije glavne memorije M2 i sekundarne memorije M3) stvara se potpuni privid o vrlo brzoj glavnoj memoriji (čija je brzina usporediva s brzinom priručne memorije) i istodobno memoriji vrlo velikog kapaciteta (jednakog kapacitetu sekundarne memorije). Posljedicu svega toga jest predstavljanje memorijske jedinice u računarskom sustavu kao vrlo brze memorije kojoj je cijena za GB samo mali višekratnik one cijene koja odgovara pohrani podataka u sekundarnoj memoriji (disku).

11.8. VIRTUALNI MEMORIJSKI SUSTAV-INTEGRACIJA TRANSLACIJSKOG SPREMNIKA TLB, PRIRUČNE MEMORIJE I VIRTUALNE MEMORIJE Do sada smo raspravljali o priručnoj memoriji, virtualnoj memoriji i translacijskom spre-mniku TLB skoro neovisno. No oni su u računarskom sustavu u interakciji koja određuje vir-tualni memorijski sustav. Oblik interakcije ima više inačica koje ovise o načinu implemen-tacije virtualnog memorijskog sustava. Sada ćemo opisati opći scenarij koji je zajednički za većinu implementacija (slika 11.12). Procesor generira virtualnu adresu. Ona se dovodi translacijskom spremniku TLB (koji je realiziran kao posebna asocijativna priručna memori-ja). Ako je postignut TLB pogodak - što znači daje virtualnoj adresi pridružena odgovaraju-ća fizička adresa - tada se fizička adresa, dobivena iz translacijskog spremnika TLB, proslje-đuje priručnoj memoriji. Ako je i tu postignut pogodak (tzv. cachehit) - što znači da se blok podataka s referenciranom riječi nalazi u bločnom priključku priručne memorije, pristupa se priručnoj memoriji i dohvaća se referencirani podatak. No ako se dogodio promašaj u priručnoj memoriji - što znači da se blok podataka ne nalazi u bločnom priključku priručne memorije - tada se obnavlja priručna memorija prijenosom bloka iz glavne memorije (kao što je to opisano u poglavlju 9.). Što se događa u slučaju TLB promašaja - odnosno ako se za generiranu virtualnu adresu u translacijskom spremniku TLB ne nalazi fizička adresa? U tom se slučaju pristupa tablici straničnog preslikavanja koja se nalazi u glavnoj memoriji. Ako se sada dogodi pogodak u tablici straničnog preslikavanja, dohvaća se fizička adresa iz tablice, obnavlja se sadržaj translacijskog spremnika TLB i pretražuje priručna memorija. Ako se, međutim, dogodio promašaj u tablici straničnog preslikavanja (stranični promašaj) - što znači da se stranica ne nalazi u glavnoj memoriji - tada se pristupa sekundarnoj me-moriji te slijedi obnavljanje sadržaja glavne memorije, priručne memorije i tablice stranič-nog preslikavanja. Sljedeći pokušaj pristupa toj virtualnoj adresi rezultirat će obnavljanjem sadržaja translacijskog spremnika TLB i normalnim pristupom priručnoj memoriji.

Virtualni memorijski sustav koji omogućuje da virtualna memorija i priručna memorija djeluju zajedno u hijerarhiji: priručna memorija M1 - glavna memorija M2 - sekundarna memorija M3 - postavlja neka logična ograničenja. Na primjer, podaci se ne mogu nalaziti

Page 359: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 355,

u priručnoj 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" sadržaj te stranice u priručnoj memoriji. Istodobno, operacijski će se sustav pobrinuti za promjenu u tablici straničnog preslikavanja i promjenu sadržaja translacijskog spremnika TLB. Pokušaj pristupa podatku koji se nalazi na preseljenoj stranici generirat će promašaj, odnosno promašaj TLB i stranični promašaj.

SI. 11.12 Scenarij djelovanja virtualnog memorijskog sustava sastavljenog od priručne memorije, glavne i sekundarne memorije

Page 360: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

356 11. POGLAVLJE: VIRTUALNA MEMORIJA

Primjer 11.3.

U virtualnom memorijskom sustavu koji predstavlja integraciju translacijskog spremnika TLB, priručne memorije i virtualne memorije javljaju se tri vrste promašaja:TLB promašaj (engl. TLB miss), promašaj priručne memorije (engl. cache miss) - referencirani podatak ne nalazi se u bloku koji je "priključen" u bločnom priključku priručne memorije i stra-nični promašaj (engl. page fault) - referencirani podatak ne nalazi se u stranici koja je "priključena" u stranični okvir glavne memorije. Zanimljivo je promotriti moguće među-sobne odnose između tih triju vrsta promašaja, odnosno pogodaka (slika 11.12):

Slučaj 1: TLB pogodak, priručna memorija - promašaj, tablica straničnog preslikavanja - pogodak Mogući slučaj (iako se tablica straničnog preslikavanja u slučaju TLB pogot-ka nikada ne provjerava) - na temelju TLB pogotka generira se fizička adresa koja se prosljeđuje priručnoj memoriji. Referenci rana se riječ ne nalazi u stra-nici koja je "priključena" u nekom straničnom priključku priručne memorije. U tom se slučaju obnavlja sadržaj priručne memorije dohvaćanjem stranice iz glavne memorije.

Slučaj 2: TLB promašaj, priručna memorija - pogodak, tablica straničnog preslikavanja - pogodak, Mogući slučaj - kad se dogodi TLB promašaj, upućuje se na tablicu straničnog preslikavanja gdje se pronalazi fizička adresa, obnavlja se sadržaj TLB i pristu-pa se priručnoj memoriji iz koje se dohvaća referencirani podatak.

Slučaj 3: TLB promašaj, tablica straničnog preslikavanja - pogodak, priručna memorija - promašaj Mogući slučaj - kad se dogodi TLB promašaj, upućuje se na tablicu straničnog preslikavanja na temelju koje se utvrđuje da se referencirani podatak nalazi u stranici koja je u glavnoj memoriji. Na temelju fizičke adrese dobivene iz tablice straničnog preslikavanja pristupa se priručnoj memoriji, no stranica koja sadržava referencirani podatak nije u straničnom priključku te se mora obaviti prijenos stranice iz glavne memorije.

Slučaj 4: TLB promašaj, priručna memorija - promašaj, tablica straničnog preslikavanja - promašaj Mogući slučaj - dogodila su se sva tri promašaja. Referencirani će se poda-tak dobiti na temelju dohvata stranice iz sekundarne memorije obnavljanjem glavne memorije, priručne memorije i tablice straničnog preslikavanja. U ovom će slučaju proces koji je izazvao promašaj biti suspendiran sve dok se ne obnove spomenuti sadržaji.

Slučaj 5: TLB pogodak, priručna memorija - promašaj, tablica straničnog preslikavanja - promašaj Nemogući slučaj - translacijski spremnikTLB ne može sadržavati fizičku adre-su ako se referencirana stranica ne nalazi u glavnoj memoriji.

Slučaj 6: TLB pogodak, priručna memorija - pogodak, tablica straničnog preslikavanja - promašaj Nemogući slučaj - priručna memorija ne može sadržavati podatak čija se pri-padajuća stranica ne nalazi u glavnoj memoriji.

Page 361: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 357,

Slučaj 7: TLB promašaj, priručna memorija - pogodak, tablica straničnog preslikavanja - promašaj

^Nemogući slučaj - podatak se ne može nalaziti u priručnoj memoriji ako se odgovarajuća stranica ne nalazi u glavnoj memoriji.

Jk'A "

V v

. I№o>

Page 362: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 359,

12. POGLAVLJE

SABIRNICE

12.1. UVOD U računarskom sustavu sastavne jedinice: procesor, glavna memorija, priručna memori-ja i ulazno-izlazne jedinice moraju međusobno komunicirati. Komunikacija se ostvaruje sabirnicom (engl. bus) koja predstavlja zajednički električki spojni put, sastavljen od vodi-ča, između sastavnih jedinica računarskog sustava. Uporabom sabirnice smanjuje se broj vodiča između pojedinih jedinica kao i broj priključaka na kućištu integriranih sklopova tako što svaka jedinica priključena na sabirnicu zahtijeva samo jedan ulazni ijedan izlazni pristupni sklop (engl. port). Ujedno, moguće je priključivanje novih jedinica u računarski sustav uz minimalne promjene ili remećenje drugih već priključenih jedinica. Slika 12.1 pri-kazuje razliku priključenja triju modula (procesor, memorija, ulazno-izlazna jedinica) kada se koristi veza "svaki sa svakim" (ili "točka - točka") i veza temeljena na sabirnici. Vidimo da u izvedbi povezivanja "točka - točka" (slika 12.1 a)) svaki od modula mora imati više ulaznih i više izlaznih pristupnih sklopova te daje broj vodiča potrebnih za ostvarivanje veze uviše-stručen. (Opaska: brojevi u zagradama iznad kose crtice označavaju broj vodiča potrebnih za ostvarivanje veze.)

Uvođenje nove jedinice u sustav zahtijevalo bi u tom slučaju dodatne preinake - nove pristupne sklopove u već postojećim jedinicama i veći broj novih vodiča potrebnih za us-postavljanje novih veza. Sve navedeno je razlog zašto se u računarskim sustavima upotre-bljava sabirnica kao spojni put (slika 12.1 b)).

(Opaska: široke linije koje završavaju strelicom označavaju veći broj vodiča.)

Budući da je sabirnica zajednički put za više jedinica, u načelu se preko nje može uspo-staviti istodobno samo veza između dvije jedinice i obavljati pojedinačni prijenosi. Ostale jedinice, koje u tom trenutku ne sudjeluju u prijenosu podataka, električki (ne fizički!) ods-pojene su od sabirnice. To se postiže sklopovima s tri stanja (treće je stanje - stanje visoke impedancije) koji omogućuju fizičko priključenje više jedinica na vanjsku sabirnicu.

Za ostvarivanje svih potrebnih veza između jedinica sabirnica se mora u vremenu dijeliti, odnosno naizmjence koristiti od strane pojedinih jedinica.

Da bi izbjegli moguće nesporazume, naglasimo da ćemo u ovom poglavlju govoriti o vanj-skim sabirnicama te ih nazivati samo sabirnicama, budući da se i u procesoru ostvaruje spojni put kojim se povezuju sklopovi aritmetičko-logičke jedinice, registri ili skupovi re-gistara opće namjene, upravljačka jedinica te upravljački registri. Taj se spojni put obično naziva interna sabirnica. Kao što smo već vidjeli u poglavlju 3., procesor može imati jednu ili veći broj internih sabirnica ostvarenih u samom procesorskom čipu.

Page 363: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

360 12. POGLAVLJE: SABIRNICE

ulazni i izlazni ulazni i izlazni pristupni sklop pristupni sklop

ulazni i izlazni ulazni i izlazni pristupni sklop pristupni sklop

a)

b)

SI. 12.1 Povezivanje jedinica: a) načinom "točka - točka"; b) uporabom sabirnice

Jednostavni računarski sustavi imaju samo jednu (vanjsku) sabirnicu (obično se naziva si-stemska sabirnica (engl. system bus) ili sabirnica sustava) koja se sastoji od stotinu i više vodiča "utisnutih" u matičnu ploču (engl. motherboard) s konektorima koji su na pravilnim razmacima raspoređeni i omogućuju priključivanje pojedinih modula, odnosno jedinica.

Računarski sustavi većih performansi imaju višestruke sabirnice, koje su namijenjene po-vezivanju različitih jedinica, i koje se nalaze u međusobnom hijerarhijskom odnosu. Taka na primjer, govorimo o lokalnoj sabirnici, memorijskoj sabirnici i ulazno-izlaznoj sabirnicL

Page 364: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 361,

Linije - vodiči koje čine sabirnicu mogu se izdvojiti prema funkcijama tako da se sabirnica može promatrati kao sabirnički sustav koji se sastoji od triju osnovnih sabirnica:

i) upravljačke sabirnice (engl. control bus) kojom se prenose upravljački signali kao što su čitaj/piši (R/W), zahtjev za prekid (IRQ), reset (RESET), potvrda prekida (IACK), signal vremenskog vođenja (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 većeg broja bajtova D0-Djf gdje/može biti 7,15,31 ili 63;

i i i) adresne sabirnice (engl. address bus) koja se sastoji od k +1 linija A0- Ak, gdje k obično može biti 15, 31, 63 i više. Adresnom sabirnicom prenosi se adresa jedinice kojoj se želi pristupiti (npr. adresa memorijskog modula, odnosno adresa memorijske lokaci-je, adresa registra podataka u ulazno-izlaznoj jedinici). U stručnoj literaturi često se sve tri sabirnice nazivaju jednim imenom - sabirnica za prijenos podataka (engl. data transfer bus).

U slučaju adresne sabirnice i sabirnice podataka obično govorimo o širini sabirnice, primje-rice, za adresnu sabirnicu od 32 linije (A0 - A31) kažemo da je širine 32 bita ili za sabirnicu podataka od 64 linije (D0 - D63) kažemo da je širine 64 bita.

Napomenimo da potonja podjela odgovara funkcijama koje pojedine grupe linija obavlja-ju, međutim, vrlo su često sabirničke linije vremenski multipleksirane pa u različitim vre-menskim trenucima imaju različite funkcije. Na primjer, ista grupa linija može u jednom trenutku poslužiti za prijenos adrese, a u sljedećem trenutku za prijenos podataka - u tom slučaju kažemo da su adresne linije i linije podataka multipleksirane. Mogući su različiti oblici multipleksiranja, na primjer, multipleksiranje adresnih i upravljačkih linija, multiplek-siranje linija podataka i upravljačkih linija, multipleksiranje linija podataka s linijama poda-taka kada se preko istih linija u dva vremenska trenutka prenosi podatak koji je dvostruko dulji od broja raspoloživih linija za prijenos podataka. Na jednak se način mogu međusob-no multipleksirati i adresne linije.

Vrlo se često u literaturi upotrebljava klasifikacija sabirnice na sabirnice središnje (central-ne) procesne jedinice (CPU sabirnice; engl. CPU bus) i sistemske sabirnice pri čemu CPU sabirnicu čine sve linije priključene izravno na procesorske priključke. U većini slučajeva su zbog ograničenog broja procesorskih priključaka neke linije CPU sabirnice multipleksira-ne. Sistemska sabirnica dobiva se nakon demultipleksiranja CPU sabirnice - linije sistem-ske sabirnice se mogu tada izdvojiti po funkcijama, a čine ih nemultipleksirane grupe linija koje prenose podatke, adrese i upravljačke signale.

Sabirnica je definirana električkim značajkama linija i slijedom signala na različitim linijama koje sudjeluju u prijenosu podataka. Pravila koja određuju sijed ove signala tijekom prije-nosa podataka nazivaju se sabirnički protokol.

Page 365: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

362 12. POGLAVLJE: SABIRNICE

Primjer 12.1.

U Q < Ui tr

c s >u

u 2 ŽL o

£ u LU

t : oc g m «5 crt a

'u fO u (U a o

Slika 12.2 prikazuje vremenski dijagram stanja na sabirnici za 16-bitni mikroprocesor Intel 8086. Možemo uočiti da su linije AD0 - AD15 multipleksirane tako da se njima u jed-nom trenutku prenosi šesnaest manje značajnih bitova adrese (A0 - A1S), a nakon toga 16-bitni podatak. Linije A16/S3 - A19/S6 vremenski su dijeljene između četiri najznačajni-ja bita adrese i četiri bita informacije o statusu procesora.

CLK

READY f

A16/S3-A19/S6

AD0-AD15

ALE

R5=LOW

s2{M/io) 5, (DT/R)

S0 (DEN)

ADO-AD15

ALE

WR=LOW

S2 (M/iO)

S, (DT/R)

S0(DEN)

J S > (

i

i

)T

4

r X i I

)T

S3-S6

Xp°daic

X

1 t

1 i

^AO-A j s^pod |c i u metjnoriji^ J ^AO-^IS^po^aci prenjia U / l ^

S3-S6

r ~

j(

r

J

npr. podaci iz U/l međuskupa

I i I l i t i

SI. 12.2 Vremenski dijagram stanja na sabirnici procesora Intel 8086

Page 366: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 363,

12.2. VODEĆI I PRATEĆI MODULI Prije nego opišemo značajke sabirničkog protokola, opišimo ulogu vodećeg modula (engl. master module) i pratećeg modula (engl. slave module) koji se priključuju na sabirnicu. Moduli koji se priključuju na sabirnicu mogu se prema funkciji podijeliti u dvije grupe: vo-deći moduli i prateći moduli. Vodeći modul upravlja sabirnicom i odgovoran je za ostvari-vanje sabirničkog protokola. On, u načelu, započinje sabirničke aktivnosti i generira signale potrebne za adresiranje, odnosno izbor pratećih modula i prijenos podataka. Vodeći mo-duli mogu se još klasificirati kao trajno vodeći (engl. permanent bus master) i kao privremeno vodeći (engl. temporary bus master). Trajno vodeći modul ima najveći prioritet u pogledu "preuzimanja vlasništva" nad sabirnicom i obično je to procesor, dok privremeno vodeći modul dobiva na zahtjev (upućen trajno vodećem modulu ili sabirničkom arbitru) uprav-ljanje sabirnicom za određeni vremenski interval, a zatim upravljanje sabirnicom vraća traj-no vodećem modulu. Primjer privremeno vodećeg modula je upravljački sklop za izravan pristup memoriji (DMA procesor -Direct Memory Access processor) koji dobiva na upotrebu sabirnicu od trajno vodećeg modula te nakon obavljena prijenosa podataka između ula-zno-izlazne jedinice i memorije vraća upravljanje trajno vodećem modulu.

(Opaska: upravljački sklop za izravni pristup memoriji vrlo je često složenosti razine proce-sora tako da se opravdano naziva i DMA procesor.)

Prateći modul "osluškuje" sabirnicu, odnosno prati sve događaje i aktivnosti na uprav-ljačkim i adresnim linijama sabirnice. Ako "prepozna" svoju adresu na adresnoj sabirnici, odnosno ako je adresiran od vodećeg modula, on šalje ili prima podatke preko sabirnice podataka u skladu sa sabirničkim protokolom. Napomenimo da prateći moduli nemaju mogućnost niti sposobnost upravljanja sabirnicom. Primjeri pratećih modula jesu me-morija i ulazno-izlazne jedinice. No neke od ulazno-izlaznih jedinica, iako prateći moduli mogu zahtijevati posluživanje od strane vodećeg modula aktiviranjem signala zahtjeva za prekid (engl. interrupt request signal).

12.3. SABIRNIČKI CIKLUS I SABIRNIČKI PROTOKOL Sve aktivnosti tijekom prijenosa podataka između vodećeg i pratećeg modula obično se opisuju sabirničkim ciklusom (engl. bus cycle) koji je obilježen sljedećim glavnim radnjama:

i) vodeći modul postavlja adresu na adresnu sabirnicu; ii) vodeći modul generira upravljačke signale, postavlja ih na upravljačku sabirnicu i

time označava vrstu prijenosa; iii) prenose se podaci između vodećeg i pratećeg modula.

Za sabirnički je ciklus obično zaduženo tzv. sabirničko sučelje vodećeg modula (engl. bus master interface) ili tzv. sabirnička jedinica (engl. bus unit) koja je ostvarena na procesor-skom čipu.Tri su osnovne vrste sabirničkog ciklusa: sabirnički ciklus čitanja tijekom kojeg je smjer prijenosa podataka od pratećeg k vodećem, sabirnički ciklus pisanja (smjer podataka od vodećeg k pratećem modulu) te sabirnički ciklus potvrde prekida u kojem su definirane posebne aktivnosti vodećeg modula (poslužitelja prekida) i pratećeg modula (onog koji je zahtijevao prekid).

Prema načinu djelovanja, odnosno prema vrsti sabirničkog protokola, sabirnice mogu biti sinkrone i asinkrone. Sinkrone sabirnice imaju jednu važnu značajku - linija kojom se pre-

Page 367: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

364 12. POGLAVLJE: SABIRNICE

nosi signal vremenskog vođenja (engl. clock) važna je sastavnica sabirnice i svi se događaji na sinkronoj sabirnici odvijaju u točno definiranim vremenskim trenucima i intervalima koji su određeni periodama signala vremenskog vođenja. Signal vremenskog vođenja i upravljački signali koriste se za sinkronizaciju vodećeg modula i pratećeg modula koji su-djeluje u prijenosu podataka.

Slika 12.3 prikazuje vremenski dijagram stanja na sinkronoj sabirnici, odnosno stanje na sinkronoj sabirnici tijekom sabirničkog ciklusa čitanja i tijekom sabirničkog ciklusa pisanja. Primjećujemo da se, na primjer, za sabirnički ciklus čitanja, upravljački signali ALE (Address Latch Enable) i MEMR (Memory Read) ili I/O READ (Input/Output Read) pojavljuju u točno definiranim periodama određenim signalom vremenskog vođenja, ali jednako je tako toč-no definirana i perioda vremenskog vođenja u kojoj će prateći 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 raspoloživ vodećem modulu. Tijekom periode T3 prenosi se podatak od ili prema procesoru.

T, T2 T3

« pU »U »

HJ in č 2. c fO in

>u uo Č ^ c -Q u o LCI

signal vremenskog vođenja

linije statusa

adresna sabirnica

ALE

READY

sabirnica podataka

MEMR ili I/O READ

sabirnica podataka

MEMW ili I/O WRITE

7 V

I

/ \ 7 — v status > adresa stabilna

/ i\ I

X podatak stabilan

r \

podatak stabilan

I V SI. 12.3 Vremenski dijagram stanja na sinkronoj sabirnici

Događaji na asinkronoj sabirnici neovisni su u velikoj mjeri o signalu vremenskog vođenja i temelje se na postupku "rukovanja" (engl. handshaking) u kojem prateći modul generi-ra signal potvrde (engl. acknowledge signal) kao odgovor na upravljački signal vodećeg modula (npr. signal čitaj ili piši). Tim signalom potvrde prateći modul dojavljuje vodećem modulu da je obavio specificiranu operaciju (npr. tijekom sabirničkog ciklusa pisanja po-datak je sa sabirnice podataka dohvaćen i pohranjen u memorijskoj jedinici). Trenutak ge-neriranja signala potvrde ovisi o brzini pratećeg modula pa se može smatrati neovisnim o

Page 368: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 365,

signalu vremenskog vođenja. Slika 12.4 prikazuje vremenski dijagram stanja na asinkronoj sabirnici za sabirnički ciklus čitanja. Vodeći modul postavlja adresu na adresnu sabirnicu i generira upravljački signal čitaj (,READ). Prateći modul (npr. memorijska jedinica) osluškuje adresnu i upravljačku sabirnicu. Kad je prepoznao svoju adresu, nakon isteka vremena pri-stupa, postavlja podatak na sabirnicu podataka i tek tada gener i ra signal po tv rde - signa_

*ra vodećem modulu da je obavio zahtijevanu operaciju. Aktivno stanje s . g n a l a potvrde si ka 12 4) je logička 0. Vremenski trenutak kada će se to dogodit, nije unaprijed određen t f o n ovisi samo o brzini pratećeg modula. Tek nakon primitka signala. potvrde vodec, modul nastavlja sabirnički ciklus (npr. unošenjem podatka sa sabirnice podataka). Vidimo da se brzina komunikac i je između vodećeg modula i različitih pratećih modula koji imaj različite brzine prilagođava pojedinačnim modulima.

linije statusa

adresna sabirnica

READ

y r

— \ / —

podataka X P o d a c i s t a b ' l n i ) f

signal 1 potvrde \ f

SI. 12.4 Vremenski dijagram stanja na asinkronoj sabirnici

Sinkrona sabirnica ima manji broj upravljačkih linija i u načelu može ostvarivati veće brzine prijenosa podataka, ali ima jedno ograničenje - njezina se brzina mora prilagoditi najspo-rijem modulu koji je priključen na sabirnicu.

Asinkrona sabirnica ima dodatnu upravljačku liniju (signal potvrde) i nešto složenije sabir-ničko sučelje, ali dopušta uporabu pratećih modula različitih brzina. Brzina prijenosa po-dataka u asinkronoj sabirnici različita je i ovisi o brzini pojedinog pratećeg modula s kojim vodeći modul upravo komunicira.

Primjer 12.2.

Opišimo događaje 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) sabirnički standard. Za ostvarivanje sabirničkog protokola zadužena je već spome-nuta sabirnička jedinica koja je sastavni dio procesora. Budući da je riječ o sinkronoj sa-birnici, pretpostavimo da su aktivnosti na sabirnici sinkronizirane signalom vremenskog vođenja PCLKfrekvencije 40 MHz. U usporedbi s frekvencijom signala vremenskog vođe-nja koji koristi sklopovlje današnjih procesora od 500 MHz pa sve do nekoliko GHz, to je relativno niska frekvencija. Razlozi za takve razlike između brzine sklopovlja procesora i brzine sabirnice dvojaki su: prvi je tehničke prirode - zbog fizičke duljine sabirnice i elek-tričnih značajki signalnih linija, različitih vremena propagacije signala, pragova signala te različitih vremena kašnjenja logičkih sklopova pojavljuje se problem promjene relativnih vremenskih odnosa između pojedinih signala (engl. skew; tzv."ukošenje signala"). Taj je problem izraženiji što je frekvencija signala vremenskog vođenja za sabirnicu viša. Drugi je razlog težnja za kompatibilnosti sa značajkama prethodnih sabirničkih sustava.

Page 369: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

366 12. POGLAVLJE: SABIRNICE

Događaje na sinkronoj sabirnici za procesore x86 možemo jednostavno opisati ako sa-birničku jedinicu (engl. bus unit) promatramo kao stroj stanja koji je opisan sa četiri dis-kretna 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 vođenja, dakle 1/40 MHz = 25 ns.

Sabirnički ciklus započinje Stanjem vremena adresiranja. Sabirnička jedinica iz Stanja ne-aktivnosti prelazi u Stanje vremena adresiranja koje traje jednu periodu signala vremen-skog vođenja, tj. 25 ns. Tijekom tog stanja, sabirnička jedinica postavlja adresu pratećeg modula na adresnu sabirnicu, a na upravljačku sabirnicu postavlja signale kojim prenosi informaciju o vrsti sabirničkog ciklusa (npr. obavještava prateći modul daje riječ o sabir-ničkom ciklusu čitanja podataka iz memorije).

Iz Stanja vremena adresiranja sabirnička jedinica prelazi u Stanje vremena podataka. Tijekom tog stanja, koje također traje jednu periodu signala vremenskog vođenja (25 ns), sabirnička jedinica obavlja prijenos podataka. Na kraju tog stanja, sinkrono sa signa-lom vremenskog vođenja, sabirnička jedinica ispituje stanje na ulaznoj signalnoj liniji READY# (Opaska: znak povisilice # označava da je signal aktivan kada je u logičkoj nuli: READY # = READY.)

Ako je READY# nisko, tj. logičko "0", sabirnička jedinica završava sabirnički ciklus i prelazi u Stanje neaktivnosti ili započinje novi sabirnički ciklus. U tom je slučaju riječ o najbržem sabirničkom ciklusu (sabirničkom ciklusu s nula stanja čekanja - 0 Wait-state bus cycle) koji traje 2 x 25 ns, odnosno dvije periode signala vremenskog vođenja.

Što se događa ako je na kraju Stanja vremena podataka sabirnička jedinica otkrila (de-tektirala) da je signalna linija READY# neaktivna (READY# = 1). Budući da signalnom li-nijom READY# upravlja prateći modul, logičkom "1" na toj signalnoj liniji prateći modul obavještava vodeći modul, odnosno sa birničku jedinicu da nije uspio u Stanju vremena podataka obaviti zahtijevanu operaciju (npr. postaviti podatke na sabirnicu podataka). U tom slučaju vodeći modul treba "pričekati" spori prateći modul i to čini tako da nakon tekućeg Stanja vremena podataka ostaje i dalje u Stanju vremena podataka u kojem čeka prateći modul. Procesor tijekom te dodatne periode "drži" sve svoje izlaze u istom stanju u kojem su bili tijekom prethodne periode. Dakle on ništa ne mijenja, već čeka jednu periodu signala vremenskog vođenja. Ta "dodatna" perioda u kojoj procesor čeka odgo-vara Stanju čekanja. Na kraju te dodatne periode procesor, odnosno sabirnička jedinica ispituje ponovno signalnu liniju READY# da bi utvrdila je ii adresirani prateći modul spre-man za završetak prijenosa. Ako je READY# ponovo neaktivna, procesor umeće još jedno Stanje podataka, odnosno Stanje čekanja u sabirnički ciklus. Ako je signalna linija READY# detektirana kao aktivna, procesor završava sabirnički ciklus. Signalna linija READY# služi sporom pratećem modulu za produljenje trajanja sabirničkog ciklusa koje je potrebno da bi se obavio prijenos podataka. Naravno, pri oblikovanju računarskog sustava i izbora pratećih modula želimo imati takve module koji će sudjelovati u sabirničkim ciklusima s 0-stanja čekanja. Slike 12.5 a) i b) prikazuju detalj sabirničkog ciklusa s nula stanja čeka-nja (a) i s jednim stanjem čekanja.

Page 370: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 367,

25ns U stanje neaktivnosti

J stanje vremena adresi ran ja

stanje vremena podataka stanje neaktivnosti

PCLK

READY*

sabirnička jedinica (procesor) ispituje signainu liniju READY#

©

a)

stanje neaktivnosti stanje vremena

adresiranja stanje vremena

podataka stanje čekanja stanje neaktivnosti

PCLK

READY#

sabirnička jedinica (procesor) ispituje signainu liniju READY#

b)

© ©

SI, 12.5 Detalj sabirničkog ciklusa: a) s nula stanja čekanja; b) s jednim stanjem čekanja

Primjer 12.3.

Opišimo događaje na asinkronoj sabirnici za porodicu procesora Motorola MC 68000. Procesor MC 68000 ostvaruje asinkroni prijenos podataka pomoću sljedećih sabimičkih linija:

i) linija adresne sabirnice A1 - A23, ii) linija sabirnice podataka D0 - D1S, iii) upravljačkih 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 značajku - nema izvedenu najmanje značajnu adresnu liniju A0. Umjesto nje se upotrebljavaju upravljački signali UDS i LDS. 16-bitni procesor MC 68000 dopušta rukovanje podacima koji su bajt, riječ (16 bita) i duga riječ (32 bita). Riječi i duge riječi mogu biti smještene u memoriji i referenciranetako da su im početne adrese samo parne, lako je procesor 16-bitni, memorija računala je bajtno or-ganizirana (kažemo da je memorija bajtne zrnatosti), tako da se pomoću linija UDS i LDS određuje hoće li se prenijeti manje značajniji bajt (UDS = 1 i LDS = 0), značajniji bajt (UDS

Page 371: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

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 uređenje slijeda bajtova - poglavlje 3.). Duga riječ (32 bita) prenosi se s dva uzastopna prijenosa riječi.

Upravljačka signalna linija DTACK ulazna je linija procesora i služi za rukovanje asinkro-nim prijenosom podataka. Prateći modul upravlja tom linijom. Kad tijekom sabirničkog ciklusa čitanja procesor detektira liniju DTACK kao aktivnu (DTACK - 0), on zna da je pra-teći modul postavio podatke na sabirnicu podataka. Tada će procesor pohraniti podat-ke u svoje interne registre, odnosno zaporne sklopove i završiti sabirnički ciklus. Slika 12.6 prikazuje dijagram aktivnosti tijekom sabirničkog ciklusa čitanja riječi (16-bitnog podatka).

Kad tijekom sabirničkog ciklusa pisanja procesor detektira liniju DTACK kao aktivnu, on zna da je prateći modul uspio pohraniti podatke u memorijsko polje (memorijska jedini-ca) ili u registar (ulazno-izlazna jedinica).

Linijama statusa FC0 - FC2 procesor obavještava prateće module o svom stanju i specifi-cira koji će se adresni prostor u sabirničkom ciklusu upotrebljavati.

vodeći modul prateći 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

' i 1. dekodira adresu 2. postavi podatak na sabirnicu podataka 3. aktivira signal DTACK

i 1

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 1 započni sljedeći ciklus

Si. 12.6 Dijagram aktivnosti tijekom sabirničkog ciklusa čitanja riječi

Page 372: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIĆ - GRAĐA RAČUNALA 369,

Slika 12 .7 prikazuje vremenski dijagram stanja na sabirnici za sabirnički ciklus čitanja rije-či. Na slici 12.7 uočavamo da se kao jedan od signala pojavljuje i signal vremenskog vo-đenja CLK, iako smo u potpoglavlju 12.3. napisali da su događaji na asinkronoj sabirnici neovisni o signalu vremenskog vođenja. Zapravo, zbog vremenske diskretnosti proceso-ra, događaji na asinkronoj sabirnici također su vremensko diskretni i postoji, ipak, neka "tajna veza" između signala vremenskog vođenja CLK i događaja na asinkronoj sabirnici. Događaje na sabirnici promatrat ćemo u vremenskim trenucima koje definiraju polu-periode signala vremenskog vođenja. Njih ćemo označavati sa S.; / = 0,1,2,.... Te ćemo poluperiode nazivati sabirničkim stanjima, međutim, 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 sabirničkom stanju S0 (slika 12.7) adresna je sabirnica (A1 - A23) u stanju visoke im-pedancije. Procesorske linije statusa FC0 - FC2 također su u stanju visoke impedanci-je. Linijama statusa FC0 - FC2, kao što je već spomenuto, procesor dojavljuje pratećim modulima svoje stanje. U sabirničkom stanju S1 signala vremenskog vođenja adresna sabirnica i linije statusa oslobađaju se stanja visoke impedancije. Stanje linija FC0~ FC2

pokazuje koji će se adresni prostor u tom sabirničkom ciklusu upotrebljavati. Na primjer, FC0 = 1, FC, = 0 i FC2 = 0 određuje memorijski nadgledni prostor podataka.Tijekom stanja S1 na adresnu se sabirnicu A1 - A23 procesor postavlja adresu. Signal koji označava daje adresa valjana (>45) aktivira se u sabirničkom stanju S2. Signali UDS i LDS također se akti-viraju u stanju S2 pokazujući da je riječ o sabirničkom ciklusu koji rukuje 16-bitnom riječi.

Page 373: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

370 12. POGLAVLJE: SABIRNICE

1

Upravljački je signal R/Wza vrijeme cijelog sabirničkog ciklusa u stanju 1 i pokazuje da jejiječ o sabirničkom ciklusu čitanja. Prateći modul na temelju adresa A^- A23, UDS, LDS i AS utvrđuje je li izabran. Izabrani prateći modul na temelju signala R/W zna da je riječ 0 operaciji čitanja te postavlja podatak na sabirnicu podataka D0 - D15 Za tu operaciju prateći modul ima na raspolaganju sabirnička stanja (poluperiode) S3 i S4. Nakon stoje postavio 16-bitni podatak na sabirnicu podataka, prateći modul aktivira liniju DTACK koja predstavlja liniju signala potvrde. Trenutak aktiviranja linije DTACK ovisi samo o brzini pratećeg modula. Prvo sjenčano područje signala DTACK u vremenskom dijagramu (slika 12.7) označava vremenski interval u kojem se može aktivirati signal. Signal DTACK mora u "normalnim"okolnostima biti aktiviran u početku sabirničkog stanja S5. Ako je to zadovo-l jenog stanju S6 procesor započinje deaktiviranje upravljačkih signala UDS, LDS i AS. Na početku sabirničkog stanja S7 procesor pohranjuje podatak sa sabirnice podataka u in-terne zaporne sklopove. Stanje na adresnoj sabirnici još uvijek je valjano i linije FC0 - FC2

još uvijek pokazuju pravo stanje. Na taj se način osigurava pravilno izvođenje operacije prijenosa podataka. Prateći modul "drži" podatak na sabirnici podataka sve dok ne de-tektira da su UDS, LDS i AS neaktivni. Nakon sabirničkog stanja S7 prelazi se u sabirničko stanje S0u kojem, nakon što je prateći modul detektirao UDS, LDS i AS kao neaktivne, on uklanja podatak sa sabirnice podataka. Na taj se način uspostavljaju uvjeti za početak sljedećeg sabirničkog ciklusa.

Možemo primijetiti da sabirnički ciklus čitanja riječi traje osam sabirničkih stanja (S0- S7).

lako je riječ o protokolu za asinkronu sabirnicu (za koju, strogo teorijski gledano, signal vremenskog vođenja nije referentan signal), vodeći modul „očekuje" signal potvrde DTACK tijekom sabirničkih stanja S3 i S4. Što će se dogoditi ako je prateći modul spor i ne može pravovremeno aktivirati signal DTACK jer još nije postavio 16-bitni podatak na sabirnicu podataka?

Procesor ispituje stanje upravljačke linije DTACK tijekom sabirničkog stanja S4. Ako signal DTACK nije aktivan, procesor zamjenjuje sabirnička stanja S5 i S6 sa sabirničkim stanjima čekanja Sw (trajanje stanje Sw odgovara trajanju poluperiode signala vremenskog vođe-nja). Na taj način procesor čeka spori prateći modul. Nakon umetnuta dva stanja Sw pro-cesor ponovo ispituje stanje linije DTACK. Ako je i sada linija DTACK neaktivna, procesor ponovo umeće dva stanja Sw. Nakon toga ponovno ispituje DTACK Kad procesor (vodeći modul) utvrdi da je signal DTACK aktivan, nastavlja sa sabirničkim stanjima S5, S6 i S7. Slika 12.8 prikazuje vremenski dijagram stanja na sabirnici za tzv.„spori" sabirnički ciklus čitanja riječi.

Što se događa ako je adresiran nepostojeći prateći modul ili prateći modul zbog greške ili ispada ne može aktivirati signal potvrde DTACK? Postoji opasnost da procesor osta-ne u trajnom stanju čekanja. Taj se problem u računarskom sustavu na bazi procesora MC 68000 rješava vremenskim nadglednim modulom (engl. watchdog timer- u slobod-nom prijevodu vremenskim psom čuvarom) koji nadgleda odvijanje sabirničkog ciklusa 1 njegovo trajanje uspoređuje s unaprijed definiranim maksimalnim vremenom trajanja sabirničkog ciklusa. Ako je vrijeme trajanja sabirničkog ciklusa prekoračeno, vremen-ski nadgledni modul aktivira signal BERR (engl. bus error) i izaziva iznimku visoke razine prioriteta (prioritetna grupa 0) koja se naziva sabirnička pogreška. Aktiviranjem signala BERR, procesor prekida (abortira) tekući sabirnički ciklus (u kojem je bezuspješno čekao na aktiviranje signala DTACK) i započinje obradu iznimke u kojoj izvodi uslužni program definiran za uvjete sabirničke pogreške.

Page 374: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 371 I

S0 Sj s2 s3 s4 Sw Sw Sw Sw S5 S6 S7 S0

AS, UDS, LDS

A1-A23

R/W=1

DTACK

CLK

D0-D15 • [ podaci valjani

stanja čekanja

SI. 12.8 Vremenski dijagram stanja na sabirnici za „spori" sabirnički ciklus čitanja riječi

Važna je značajka sabirnice njezina propusnost ili brzina prijenosa podataka (engl. bandwith) koja se izražava 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 vođenja 64-bitna sa-birnica podataka ima brzinu 1.6 GB/s.

Na sabirnici na kojoj su priključeni prateći moduli može se priključiti veći broj vodećih mo-dula koji moraju međusobno dijeliti sabirnicu. Istodobno veći broj vodećih modula može zahtijevati sabirnicu, međutim, samo jedan od njih može dobiti sabirnicu na upravljanje. Mehanizam kojim se određuje koji će vodeći modul dobiti na upravljanje sabirnicu naziva se sabirnička arbitraža (engl. bus arbitration). Postoje različiti sheme sabirničke arbitraže - od onih koje temelje na sklopovskoj izvedbi do onih koje koriste složene sabirničke protokole.

Način arbitraže može se klasificirati na centraliziranu (središnju) arbitražu i decentraliziranu, odnosno porazdijeljenu arbitražu. U centraliziranoj arbitraži postoji centralni ili središnji sabirnički arbitar (engl. bus arbiter; bus controller) koji zaprima zahtjeve za sabirnicom i ge-nerira signal kojim obavještava vodeći modul da mu je dodijeljena sabirnica. Odluka sabir-ničkog arbitra kojem će se od vodećih modula dodijeliti sabirnica temelji se na shemi koja obično predstavlja kompromis dvaju čimbenika: prioriteta i pravednosti (engl. fairness). Prvi se čimbenik odnosi na to da svaki od vodećih modula ima jedinstven prioritet pristupa sa-birnici, tako da se sabirnica dodjeljuje vodećem modulu koji je imao najveći prioritet. Drugi se faktor odnosi na pravednost kojom se osigurava da će svaki od vodećih modula, bez ob-zira na prioritet, dobiti sabirnicu na upravljanje. Pravednost osigurava da vodeći moduli s najnižim prioritetom ne budu isključeni iz natjecanja za sabirnicom u nadmetanju s onim

12.4. SABIRNIČKA ARBITRAŽA

Page 375: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

372 12. POGLAVLJE: SABIRNICE

visokog prioriteta. U jednostavnoj izvedbi sabirničkog arbitra primjenjuje se shema čvrstog prioriteta (engl. fixed priority) pri čemu je sabirnički arbitar prioritetni koder (engl. priority encoder) koji signal potvrde dodjele sabirnice Bus grant šalje vodećem modulu koji je imao najveći prioritet između onih koji su tražili sabirnicu. U takvoj izvedbi postoji opasnost da vodeći moduli s malim prioritetom nikada, ili vrlo rijetko, dobiju sabirnicu na upravljanje.

Kružna prioritetna shema (engl. rotating priority) omogućuje potpuno pravedan tretman svih vodećih modula jer se prioritet pojedinih vodećih modula mijenja u skladu s dodjelom sabirnice: vodeći modul koji je dobio sabirnicu na upravljanje postavlja se, nakon njezi-nog korištenja, na začelje kružne liste prioriteta. Između ovih dvaju krajnjih shema postoje brojne sheme koje kombiniraju prethodne dvije. Na primjer, vodeći moduli mogu biti or-ganizirani u grupe određenih prioritetnih razina tako da se u svakoj od razina koristi kružna prioritetna shema.

Pod "oslobađanjem sabirnice" (engl. deallocation of the bus) podrazumijeva se postupak kada vodeći modul, koji trenutno upravlja sabirnicom, prepušta sabirnicu drugim potenci-jalnim vodećim modulima. Postoje tri glavne tehnike oslobađanja sabirnice:

i) oslobađanje na zahtjev (engl. release on request) - vodeći modul ima u svom posjedu sabirnicu (iako je čak ni ne koristi) sve dok nema drugih zahtjeva. Ovakva se tehnika obično koristi u sustavima s jednim procesorom u kojima procesor posjeduje sabir-nicu cijelo vrijeme - izuzev onda kada, na primjer, DMA upravljač zahtijeva sabirnicu da bi obavio prijenos;

ii) oslobađanje sabirnice nakon korištenja (engl. release when done) - sabirnica se oslo-bađa nakon što se završi sabirnički ciklus. To znači da za svaki novi sabirnički ciklus vodeći modul mora zahtijevati sabirnicu;

iii) oslobađanje sabirnice istiskivanjem (engl. pre-emption) - u ovom načinu vodeći mo-dul s većim prioritetom od onog modula koji trenutno posjeduje sabirnicu može prisiliti trenutno vodeći modul da oslobodi sabirnicu, iako nije završio prijenos poda-taka. Istiskivanje se može upotrijebiti za prekid prijenosa velikih blokova podataka.

Vrijeme koje se utroši za sabirničku arbitražu je vrijeme potrebno za obavljanje tzv."kućan-skih poslova" u sustavu i ono izravno utječe na trajanje sabirničkog ciklusa. To je osnovni razlog zašto se vrijeme arbitraže mora smanjiti i možebitno omogućiti da se arbitraža dje-lomično prekriva s prijenosom podataka.

Osnovni scenarij centralizirane sabirničke arbitraže je sljedeći: jedan ili veći broj vodećii modula (koji trebaju sabirnicu) aktivira signal Bus request kojim zahtijeva sabirnicu i koji se upućuje sabirničkom arbitru. Svi vodeći moduli koji su zahtijevali sabirnicu očekuju sigrwi Bus grant kojim sabirnički arbitar potvrđuje da je dodijelio sabirnicu jednom od vodećii modula. No samo onaj vodeći modul koji je zahtijevao sabirnicu i koji primi signal Bus grant dobiva sabirnicu na upravljanje. Taj vodeći modul aktivira signal Bus Busy i spaja se na sa-birnicu te započinje sabirnički ciklus. Nakon što je obavio prijenos podataka i sabirnicu vise ne treba, vodeći modul o tome obavještava sabirnički arbitar (deaktiviranjem signala Bas Busy) koji sada može ponovo dodijeliti sabirnicu nekom drugom vodećem modulu koji JH je zahtijevao.

Razmotriti ćemo pet shema sabirničke arbitraže - četiri centralizirane i jednu decentra-j liziranu. i

U centraliziranoj sabirničkoj arbitražnoj shemi nazvanoj arbitraža s ulančavanjem (en^L| daisy chain) svi su vodeći moduli priključeni na jednu signalnu liniju za zahtijevanje sabi^j

Page 376: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 373 I

nice Bus request. Shema ima samo jednu signalnu liniju potvrde dodjele sabirnice Bus grant izvedenu tako da ona prolazi kroz vodeće module, i to od onog s najvećim prioritetom do onog s najmanjim prioritetom. Svaki od vodećih modula lančano je priključen na tu signalnu liniju ima sklopove koji omogućuju prihvaćanje signala Bus grant te njegovo pro-sljeđivanje sljedećem vodećem modulu u lancu (slika 12.9). Vodeći modul koji primi signal Bus grant a nije zahtijevao sabirnicu, proslijedit će ga sljedećem vodećem modulu u lancu. Vodeći modul koji je u lancu primio signal Bus grant i koji je uz to zahtijevao sabirnicu neće proslijediti signal Bus grant preostalim vodećim modulima u lancu. Njemu će biti dodijelje-na sabirnica.To znači da u slučaju kada dva (ili više) vodećih modula istodobno zahtijevaju sabirnicu aktiviranjem signala Bus request, sabirnicu dobiva onaj koji je bliži sabirničkom arbitru. Prioritet vodećeg modula u toj jednostavnoj shemi određen je mjestom modula u lančanoj strukturi - vodeći modul koji je najbliži arbitru ima najveći prioritet. (Opaska: obično je signal na linija za zahtijevanje sabirnice Bus request izvedena tako da je njeno aktivno stanje ono kada je u logičkoj 0 (Bus request) time je omogućeno da sve linije za za-htijevanje sabirnice svih vodećih modula oblikuju ožičano-ILI (engl. wired-OR). Zahvaljujući ožičanom-ILI signalna linija Bus request bit će aktivna kada jedan ili veći broj potencijalno vodećih modula zahtijeva sabirnicu.)

SI. 12.9 Sabirnička arbitraža ulančavanjem

Prednost arbitraže ulančavanjem jest njezina jednostavnost, a nedostatak je što ne osi-gurava pravednost. Naime, vodeći moduli na kraju lanca, tj. oni s najmanjim prioritetom mogu "vječno" čekati na sabirnicu. S druge strane, ulančavanje signala Bus grant ograni-čava brzinu sabirnice. Jedan od nedostataka je i to što se u slučaju greške zbog koje ne može vodeći modul proslijediti signal Bus grant ili zbog ispada jednog od vodećih modula u lancu, lanac prekida te svi vodeći moduli koji slijede tom modulu ne mogu dobiti sabir-nicu na upravljanje.

Arbitražna shema nazvana arbitraža prozivanjem ili glasovanjem (engl. polling) umjesto jedne signalne linije Bus grant kojom su lančani vodeći moduli koristi skup signalnih lini-ja koje se nazivaju rezultat glasovanja (engl. poll-count) (slika 12.10). Svi su vodeći moduli priključeni, kao i u shemi arbitraže ulančavanjem, na jednu signalnu liniju Bus request. Na signalne linije rezultat glasovanja sabirnički arbitar postavlja binarnu kombinaciju koja se može tumačiti kao jedinstvena adresa vodećeg modula - pobjednika u natjecanju za do-bivanje sabirnice. Sabirnički arbitar proziva vodeći modul koji je pobijedio na glasovanju. Svaki od vodećih modula "osluškuje" linije rezultat glasovanja i onaj koji prepozna svoju adresu, aktivira signalnu liniju Bus busy. Sabirnički arbitar završava postupak arbitraže i do-djeljuje sabirnicu izabranom vodećem modulu. Prioritet vodećih modula određen je slije-dom binarnih kombinacija postavljenih na linije rezultat glasovanja, odnosno pozicijom

Page 377: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

374 12. POGLAVLJE: SABIRNICE

adrese u slijedu prozivanja. Slijed prozivanja može biti programiran ako su linije rezultat glasovanja spojene s izlazima iz programirljivog registara tako da se prioritet mijenja pro-gramom, odnosno upisivanjem upravljačke riječi u programirljivi registar (slika 12.10).

U trećoj se arbitražnoj shemi svakom vodećem modulu dodjeljuje privatna linija Bus request i privatna linija Bus grant (slika 12.11). Na taj se način omogućuje sabirničkom arbi-tru izravno utvrđivanje koji su vodeći moduli zahtijevali sabirnicu te brzi odgovor signalom Bus grant I u ovom se slučaju prioritet vodećih modula određuje programski. Ova se she-ma č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 arbitražnu shemu s nezavisnim zahtijevanjem. Standard PCI predviđa šest linija za \ zahtijevanje sabirnice REQ0-REQ5 i šest linija za potvrdu dodjele sabirnice GNT0-GNT5. j Na te su linije priključeni vodeći moduli, koji se u skladu sa standardom PCI nazivaju ini-cijatori (engl. initiator). (Opaska: prateći se moduli u standardu PCI nazivaju ciljni moduli ; (engl. target)).

Standard PCI ne određuje algoritam arbitraže pa se može koristiti ona s čvrstim priori- i tetom, ona s kružnim prioritetom ili ona koja kombinira kružni prioritet između grupa inicijatora i čvrsti prioritet unutar grupe inicijatora.

Četvrta shema centralizirane sabirničke arbitraže predstavlja kombinaciju arbitraže s ne-zavisnim zahtijevanjem i arbitraže ulančavanjem.

Page 378: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 375 I

SI. 12.11 Sabirnička arbitraža s nezavisnim zahtijevanjem

Primjer 12.5.

Slika 12.12 prikazuje shemu sabirničke arbitraže za industrijsku sabirnicu VME (standard IEEE P1014). Shema se zasniva na kombinaciji arbitraže s nezavisnim zahtijevanjem i ar-bitraže ulančavanjem. Standard IEEE P1014 definira arbitražnu sabirnicu koja se sastoji od četiri signalne linije za zahtijevanje sabirnice (BRO - BR3) pri čemu linija BR3 ima naj-veči 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) određuju četiri razine prioriteta zahtijevanja sabirnice. Ulazne i izlazne linije za potvrdu dodjele sabirnice (BGOIN - BG3IN) te (BGOOUT- BG30UT}, omo-gućuju ulančavanje na svakoj od četiri razine.

Aktivno stanje na signalnoj liniji BBSY označava da je jedan od vodećih modula, koji su zahtijevali sabirnicu, dobio i preuzeo sabirnicu.

Sabirnički arbitar može generirati signal BCLR kada vodeći modul s najvećim prioritetom zahtjeva sabirnicu. Signalom BCLR "istiskuje" se trenutno vodeći modul sa sabirnice i ona se oslobađa za vodeći modul s najvećim prioritetom.

Arbitražna shema za VME je kombinacija shema s nezavisnim zahtijevanjem i ulančava-njem: svaku od linija BRx,x = 0,1,2,3 dijeli grupa vodećih modula koji su linijama BGxIN i BGxOUT, x = 0,1,2,3 ulančani (slika 12.12).

Prioritetna shema može biti takva da se koristi shema čvrstog prioriteta u kojoj vodeći moduli priključeni na liniju BR3 imaju najveći prioritet ili kružna prioritetna shema u kojoj se razine prioriteta linija BRx,x= 0,1,2,3 kružno mijenjaju.

Page 379: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

NJ штЛ.

к> > —i V а» N< D CD l/> =T m 3 ш N CU

П С

Page 380: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 377 I

Distribuirana sabirnička arbitraža, kao što sam naziv govori, ima funkciju arbitra porazdi-jeljenu na sve potencijalne vodeće module - sklopovlje za arbitražu porazdijeljeno je vo-dećim modulima. Svaki od potencijalno vodećih modula ima jednu liniju za zahtijevanje sabirnice. Na primjer, za sustav koji dopušta šesnaest potencijalno vodećih modula, ima-mo šesnaest linija za zahtijevanje sabirnice - svaka od njih dodijeljena je jednom vode-ćem modulu i svaka od njih određenog je prioriteta. Kada potencijalni vodeći modul želi koristiti sabirnicu, aktivira odgovarajuću liniju za zahtijevanje sabirnice. Svi potencijalno vodeći moduli pomoću svojih sklopova za arbitražu nadgledaju sve linije za zahtijevanje sabirnice. Vodeći moduli koji su zahtijevali sabirnicu, a utvrdili su daje njihov zahtjev ma-njeg prioriteta, odustaju od zahtjeva i deaktiviraju svoju liniju za zahtijevanje sabirnice pa na kraju svakog sabirničkog ciklusa vodeći modul s najvećim prioritetom dobiva sabirnicu za sljedeći sabirnički ciklus.

12.5. SABIRNICE OSOBNIH RAČUNALA (PC SABIRNICE) U Primjeru 12.2. prikazali smo događaje na sinkronoj sabirnici za x86 procesore i rekli daje ona u velikoj mjeri utjecala na ISA (Industry Standard Architecture) i EISA (Extended ISA) sabirnički standard. Sabirnički standardi ISA i EISA usko su povezani s osobnim računa-lima. Jedno od prvih osobnih računala 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 vođenja od svega 4.77 MHz. Pojavom „pravog" 16-bitnog procesora Intel 8086 počela se koristiti 16-bitna sabirnica ISA koja je, zapravo, predstavljala proširenje sabirnice XT.

Sabirnica ISA bila je sinkronizirana signalom vremenskog vođenja frekvencije 8.33 MHz. S obzirom da je najbrži sabirnički ciklus zahtijevao dvije periode signala vremenskog vo-đenja (stanje vremena adresiranja i stanje vremena podataka, bez stanja čekanja), brzi-na 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 sa-birnica EISA koja imala 32-bitnu sabirnicu podataka (ali je podržavala i 8- i 16-bitni prijenos podataka) i 32-bitnu adresnu sabirnicu te je uz signal vremenskog vođenja od 8.33 MHz omogućavala 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 većinu suvremenih primjena računala.

Osamdesetih je godina IBM uveo sabirnicu Micro Channel koja je radila na 10 MHz i omo-gućavala prijenos tijekom svake periode signala vremenskog vođenja. Uz način prijenosa 32-bitnih podataka (izvorno nazvan 32-bit Streaming Data Procedure) brzina sabirnice bila je 40 MB/s. Brži prijenosi (80 MB/s i 160 MB/s) ostvarivali su se uporabom 64- i poboljša-nih 64-bitnih prijenosa podataka (tzv. 64-bit Streaming Data Procedure i Enhanced 64-bit Streaming Data Procedure). Sabirnica Micro Channel bila je zaštićena patentom i nije se održala.

Page 381: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

378 12. POGLAVLJE: SABIRNICE

Primjer 12.6.

Procijenimo potrebnu brzinu, odnosno propusnost sabirnice računala u primjeru prika-za pokretne slike na zaslonu računala (npr. za računalnu 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) - zele-na, B (blue) - plava) u rasponu od 0 do 255 Jedna slika sadržava 1024 x 768 x 3 = 2.35 MB podataka. Samo jedan grafički 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)).

Budući 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 pri-kazala videosekvenca pohranjena na disku, CD-ROM-u ili DVD-u, podaci moraju biti pre-neseni s diska preko sabirnice u memoriju, a zatim, da bi se prikazali iz memorije preko sabirnice grafičkoj jedinici, odnosno grafičkom 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 doš-la sabirnica Micro Channel 64-bit Streaming Data Procedure i Enhanced 64-bit Streaming Data Procedure koja podržava brzinu prijenosa od 80 do 160 MB/s.

U Primjeru 12.6. vidjeli smo da su zahtjevi za velikom brzinom sabirnice prvenstveno po-stavljeni od strane grafičke jedinice (grafičke kartice ili adaptera), odnosno da se velika propusnost zahtijeva na spojnom putu između procesora i videomemorije. Da bi se po-stigla što je moguće veća brzina osvježavanja videomemorije, grafička se jedinica umje-sto na sporu sabirnicu ISA ili EISA priključila na lokalnu sabirnicu procesora. Naravno, tc je zahtijevalo određeni redizajn grafičke jedinice da bi se izbjegla stanja čekanja koja b možebitno trebala videomemoriji. Uz to, grafička jedinica dobila je i svoj lokalni procesor koji je podržavao funkcije grafičke jedinice kao što su zahtjevne operacije koje se odnose na rukovanje prikazom na zaslonu (npr. pomicanje grafičkog prozora s jednog na drugo područje videomemorije). Početkom devedesetih godina definiran je standard VESA VL (Video Electronics Standard Association; VESA Local bus) za povezivanje uređaja, a time i grafičkih 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 sabirni-ca bila namijenjena 386/486 procesorskim sabirnicama (Intel) s tim da je tip B predviđa: međupohranjivanje sabirničkih signala a dodatnim je pogonskim sklopovima (engl. driver omogućavao priključenje do tri uređaja, dok je tip A definirao izravno priključenje, ali samo jednog uređaja. VESA sabirnica imala je, pri frekvenciji signala vremenskog vođenja od 35 MHz, vršnu 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 „naslo-njena" na sabirnicu 486 procesora, njezina je dugovječnost bila ograničena. Pojavom nov** procesora sučeljni sklopovi morali su se redizajnirati, odnosno moraju se koristiti tzv. pre-mosnici (engl. bridge) - sklopovi koji međusobno povezuju dvije nezavisne sabirnice. Or» omogućuju vezu između nove procesorske sabirnice i sabirnice VL.

Godine 1992. Intel, u težnji da sabirnicu učini neovisnu o procesoru i poveća broj uredan koji se mogu priključiti na sabirnicu, uvodi PCI (Peripheral Component Interconnect) sabir-

Page 382: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 379 I

nicu. Sabirnica PCI je, poput svih sabirnica za osobna računala, sinkrona. Sabirnica PCI verzija 1.0(1992.) imala je sabirnicu podataka širine 32 bita i radila je s frekvencijom signala vremenskog vođenja od 33 MHz. Vršna 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 računalima. PCI sabirnica verzije 2.1. radi na frekvenciji 66 MHz i ima širinu sabirnice podataka od 64 bita tako da je vršna brzina sabirnice 528 MB/s. Propusnost od 528 MB/s više ne predstavlja, barem na prvi pogled, usko grlo u komunikaciji između grafičke 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 zahti-jevaju tako velike brzine prijenosa (npr. zvučne kartice, modem, sučelje za pisač).

sabirnica

SI. 12.13 Arhitektura računarskog sustava s većim brojem sabirničkih struktura

Godine 1998. tvrtke IBM, HP i Compaq uvode poboljšanu verziju sabirnice PCI nazvanu PCI-X koja radi na 133 MHz i ima propusnost od 1.06 GB/s te poboljšana svojstva u pogledu neosjetljivosti na greške. Verzija 2.0 sabirnice PCI-X (2003.) ima frekvenciju signala vremen-skog vođenja 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 uređaja, sabirnica PCI-X nije našla široku primjenu. Jedan od razloga za to je i pojava PCle ili PCI-express sabirnice (2004.). PCle zapravo nije sabirnica u pravom smislu te riječi. Naime, ona se temelji na načinu povezivanja "točka-

Page 383: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

380 12. POGLAVLJE: SABIRNICE

točka" (umjesto paralelne sabirničke strukture) i koristi serijsku komunikaciju velike brzine između samo dva priključena uređaja. Umjesto izraza sabirnica (na koju se priključuju dva uređaja), obično se koristi kod PCle naziv linija (engl .line). Na jednu je liniju moguće priklju-čiti i više uređaja, ali se u tom slučaju 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 može imati veći broj linija za prijenos. U tom se slučaju brzina prijenosa uvišestručuje. 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) općih napora da se zamjene paralelne sabirnice serijskim sabirnicamaL

Spomenuli smo da sabirnica treba imati što je moguće veću propusnost tako da svojom brzinom prati rad procesora, posebno u komunikaciji s priručnom i primarnom memori-jom, a s druge strane, mora omogućiti i povezivanje s uređajima koje se temelje na ISA/ EISA standardu koji po prirodi ne zahtijevaju velike brzine prijenosa (npr. zvučne kartice^ modemska jedinica, sučelje za printer).

Intel je ponudio rješenje: u računalu se koriste tri ili više sabirnica koje se povezuju pre-mosnicima i na taj se način omogućuje komunikacija između sabirničkih struktura (slika 12.13).

Zahvaljujući takvom pristupu omogućena je ekstremno brza izmjena podataka između procesora i priručne memorije posebnom sabirnicom namijenjenoj priručnoj memorip! (engl. cache bus) ili procesorskom sabirnicom (koja se još naziva i lokalna sabirnica ili sa-! birnica domaćina (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 sučelja između pojedinih sabirničkih struktura u osobnim ra-čunalima nazivaju se skupovi čipova ili čipset (engl. chipset). Čipset se sastoji od dva glavna či pa - j e d a n se obično naziva sjeverni premosnik (engl north bridge), a drugi južni premosn&\ (engl. south bridge). Sjeverni premosnik sučelje je između procesora i memorije te grafiči®] kartice, odnosno AGP (Accelerated Graphic Port) pristupa koji predstavlja brzo namjer»-] sko sučelje grafičkoj kartici (2.133 GB/s). Osim toga, kao opcija postoji mehanizam CSAl (Communication Streaming Architecture) kojim se povećava propusnost između mrežne] kartice i procesora tako da se mrežna kartica (Gigabit Ethernet; GbE) povezuje izravno na] sjeverni premosnik (umjesto na južni). Napomenimo da se frekvencija signala vremenskom vođenja za procesorsku, odnosno prednju sabirnicu FSB, ovisno o tipu čipseta, kreće 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 južnim premosnikom koji predstavlja sučelje | ma PCI, odnosno PCle i PC-X sabirnici, LAN (Local Area Network), USB (Universal Serial Bi RAID, Parallel ATA (PATA- Advanced Technology Attachement) - paralelno sabirničko suče za povezivanje jedinica kao što su diskovna jedinica, jedinica savitljivog diska ili jedini CD-ROM-a, Serial ATA (SATA - Serial Advanced Technology Attachement) - sabirničko suče za povezivanje jedinica magnetskog ili optičkog diska s računalom, odnosno sa sabimič^ kim adapterom računala domaćina (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.

Page 384: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 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) prven-stveno su namijenjene povezivanju perifernih uređaja i procesora. (Opaska: periferni ure-đaji je zbirni naziv za sve ulazne i izlazne uređaje). Sabirnice opisane u 12.5 (ISA, EISA, VESA VL, Micro Channel, PCI, PCI-X, PCle) primjer su ulazno-izlaznih sabirnica. U ovom potpo-glavlju opisat ćemo još tri tipične ulazno-izlazne sabirnice: USB, FireWire i SCSI.

Prva generacija osobnih računala imala je skromne mogućnosti povezivanja s perifernim uređajima. Povezivanje se temeljilo na serijskom sučelju RS-232C (za povezivanje računala i terminala ili za povezivanje udaljenog terminala s modemom, odnosno povezivanje ra-čunala s modemom (slika 12.15)) i paralelnom sučelju Centronics (za povezivanje računala s pisačem). Sučelje RS-232C (RecommendedStandard232), razvijeno od strane Electronics Industries Association (EIA), uvedeno je davne 1969. i omogućavalo je priključivanje termi-nala na računalo. Bilo koji terminal koji je podržavao RS-232C mogao se priključiti na bilo koje računalo koje je imalo to sučelje. Standard RS-232C sadržavao je specifikaciju koja se odnosila na fizički sloj (engl. physical layer) i sklopovski protokol. Prijenos podataka obav-ljao se serijski - bit po bit u vremenu preko jedne linije podataka za svaki od smjerova pri-

Page 385: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

382 12. POGLAVLJE: SABIRNICE

jenosa (TxD - predajna linija podataka, RxD - prijemna linija podataka). Protokol se podr-žavao upravljačkim 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 (logička "1"), odnosno od -3V do -15V (logička "0"). Budući da su razine napona veće 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) predočen slijedom bitova. Broj bitova podataka bio je između 5 i 8. Bitovima podataka obavezno je pridodan je jedan početni (startni) bit (engl. start bit) logičke razine "0", a slijedi im jedan ili dva stop bita uvijek logičke razine "1". Bitovima podataka može se pridodati i zaštitni 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 označava bitove podataka, p je paritetni bit i dva krajnje desna bita (logičke razine "1") su stop bitovi. Brzina prijenosa bila je relativno skromna od 75 ili 300 b/s do 19 600 b/s. Način serijskog prijenosa podataka bio je asinkroni, što u kon-tekstu serijskog prijenosa podrazumijeva da se između predaj nog i prijemnog uređaja ne prenosi još i signal vremenskog vođenja.

terminal / modem terminal / w modem

RS-232C

RS-232C

b)

SI. 12.15 Povezivanje računala pomoću RS-232C sučelja: a) s udaljenim terminalom, b) s lokalnim terminalom

Standard RS-232C predviđa konektor s 25 priključaka (nožica, pinova), međutim, većina osobnih računala koristila je konektore od samo 9 priključaka (od toga 7 aktivnih -TxD, RxD, signalna masa te linije za rukovanje RTS, CTS, DTR i DSR). Maksimalna duljina kabela za koju se još jamči brzina prijenosa iznosi oko 15 m (SOfeet). Da bi se uklonili nedostaci RS-232C sučelja, odnosno da bi se postigla veća brzina prijenosa na veće udaljenosti, uvedeni su standardi RS-422, RS-423 i RS-499.

Paralelno sučelje Centronics, razvijeno 70-ih godina prošlog stoljeća, bilo je namijenjeno povezivanju računala s pisačem i dugo je vremena predstavljalo industrijski standard. Tek je 1994. postao i službeni standard IEEE 1284. Centronics je imao 36 signalnih linija, a mak-simalna je dopuštena duljina kabela bila 5 m. Prijenos podataka obavljao se paralelno pre-

Page 386: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 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 između 10 KB/s i 100 KB/s. Pojavom USB (Universal Serial Bus) - univerzalne serijske sabirnice standard RS-232C i paralelno sučelje Centronics gotovo su istisnuti iz uporabe.

PCI sabirnica pogodna je za priključivanje perifernih uređaja velikih brzina, međutim, nije dobro rješenje za povezivanje s perifernim uređajima malih brzina (npr. pisača, tipkovnice, miša, skenera, iveb-kamere, memorijskog štapića (engl. memory stick)) jer je PCI sučelje za te uređaje ekonomski neisplativo. Naravno, uređaje je bilo moguće spojiti i na ISA/EISA slo-bodne priključke, a neki su periferni uređaji imali i relativno skupa PCI sučelja. Povezivanje takvih uređaja za "obične" korisnike predstavljalo je problem: trebalo je prespojnim mosti-ćima ili mikroprekidačima na kartici uređaja postaviti adresu uređaja vodeći brigu o tome da ta adresa ne bude u konfliktu s adresama već priključenih uređaja; nadalje, trebalo je otvoriti kućište računala i umetnuti karticu u priključno mjesto (engl. slot), zatvoriti kućište te ponovo pokrenuti računarski sustav (engl. reboot). Broj slobodnih ISA/EISA ili PCI pri-ključaka bio je ograničen tako da su se obično maksimalno mogla priključiti do tri uređaja.

PCI sabirnica

Početkom 1996. tvrtke Intel, Compaq, Microsoft, NEC, IBM, DEC i Northen Telecom udru-žile su se u rješavanju problema priključenja perifernih uređaja malih i srednjih brzina i predložila rješenje - USB (Universal Serial Bus) standard koji je vrlo brzo široko prihvaćen posebno za osobna računala. Na primjer, do 2008. prodano je ukupno oko 6 milijardi USB uređaja. Povezivanje uređaja preko USB ponudilo je korisniku niz pogodnosti: nije potreb-no postavljanje adrese na kartici ili uređaju, nije potrebno otvarati kućište računala, može

Page 387: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

384 12. POGLAVLJE: SABIRNICE

se priključiti veći broj perifernih uređaja (do 127), uređaji se mogu priključiti dok računalo radi, ponovno pokretanje računala nije potrebno i ulazno-izlazni uređaj obično dobiva na-pajanje preko USB-a. USB svojim značajkama predstavlja vrlo poželjno rješenje tzv."uključi i radi" (engl. plug-in and play).

USB je standardna serijska sabirnica namijenjena ulazno-izlaznim uređajima malih i sred-njih brzina prijenosa. USB se sastoji od tzv. korijenskog ili glavnog (središnjeg) priključnog mjesta (engl. root hub) koje se priključuje na PCI sabirnicu računala (slika 12.13). Ono ima utičnice ili podnožja (engl. socket) na koja se mogu priključiti kabeli za povezivanje s ula-zno-izlaznim uređajima ili priključno mjesto za proširenje (engl. expansion hub). Ha taj se način ostvaruje stablasta topologija USB sustava (slika 12.16) kojom je omogućeno priklju-čivanje velikog broja uređaja.

Kabel USB se sastoji od četiri žice - dvije za podatke, jedna za napajanje (+5V) i jedna za masu. Napajanje je namijenjeno uređajima koji imaju umjerene zahtjeve kao što su tip-kovnica, miš ili memorijski štapić pa takvi uređaji ne trebaju imati svoj poseban izvor na-pajanja. Kabel ima različite konektore - jedan za priključno mjesto (nazvan USB A) ijedan za uređaj (USB B) (slika 12.17). Na taj se način sprečava moguća zabuna da se međusobno spoje dvije utičnice na priključnom mjestu.

4 3 2 1

• USB A • (strana domaćina - priključno mjesto)

1 4

2 3

r*

• USBB (strana uređaja)

priključak 1:+5Vdc priključak 2: Data -priključak 3: Data + priključak 4: masa

SI. 12.17 USB konektori

Verzija USB 1.0 (siječanj 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 omogućuje dinamičku prilagodbu sustava na promjene koje nastaju priključenjem novog USB uređaja - uređaj se može priključiti i odspojiti tijekom normalnog rada računa-la, tzv. "vruće priključivanje"(engl. hot-piug-in). Kad se novi uređaj uključi, glavno priključno mjesto (root hub) detektira taj događaj, čeka određeno vrijeme (npr. 100 ms) da omogući uspostavljanje normalnih uvjeta rada za uređaj (napajanje) te nakon toga generira zahtjev za prekid. Operacijski sustav komunicira s novim uređajem da utvrdi o kojem je uređaju riječ i koju brzinu prijenosa zahtijeva. Operacijski sustav zahtijeva od novog uređaja opt-snik uređaja (engl. device descriptor), koji se sastoji od 64 bajta. Na temelju njega dobiva

Page 388: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 385 I

osnovne podatke o uređaju (npr. vrsta uređaja, isporučitelj, 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 uređaju jedinstvenu adresu u rasponu od 1 do 127 te nju i ostale informacije koje su potrebne za konfiguriranje uređaja šalje i pohranjuje u upravljačke registre uređaja. Uređaj je inicijaliziran i spreman za razmje-nu podataka.

Pojedini bitovi prenose se preko USB sabirnice tako da se grupiraju u jedinice koje se nazi-vaju paketi ili okviri (engl. frame). Paketi započinju s sinkronizacijskim blokom SYNC (dulji-ne 8 bita) kojem slijedi blok za identifikaciju paketa PID (duljine 8 bita) kojim se specificira tip paketa. Paket završava poljem EOP (End-of-packet). Standard USB predviđa šest osnov-nih tipova paketa sa 16 različitih blokova PID za identifikaciju paketa. Slika 12.18 prikazuje strukturu paketa za rukovanje (Handshakepacket), paketa podataka (Datapacket) i paketa značke (Token packet). Tri su vrste paketa za rukovanje prijenosom podataka: ACK - potvr-da da je paket podataka ispravno primljen, NAK - na temelju CRC detektirana je pogreška u prijenosu i STALL -„pričekaj, zauzet sam". Paket podataka sastoji se od već spomenutih blokova za sinkronizaciju, PID i EOP. Između bloka PID i EOP nalazi se blok podataka (du-ljine do 64 bajta) s CRC (Cyclic Redundancy Code) poljem (duljine 16 bita) za detekciju pogrešaka pri prijenosu. Paket značke šalje se od korijenskog priključnog mjesta prema uređaju i namijenjen je upravljačkim funkcijama.

SYNC PID EOP

a)

SYNC PID podaci CRC EOP

b)

SYNC PID adresa ENDP CRC EOP

c)

SI. 12.18 Struktura triju tipova paketa USB: a) Paket za rukovanje; b) Paket podataka; c) Paket značke

Komunikacija se ostvaruje prijenosom okvira ili "cijevi" (engl. pipe) koji se sastoje od jed-nog ili većeg broja paketa. Četiri su vrste okvira: upravljački, izokroni (engl. isochronous), masovni (engl. buik) i prekidni. Protokol USB prilično je složen i čitatelj može naći više infor-macije na usb.org internetskim stranicama.

Godine 1995. uveden je standard IEEE 1394 za serijsko sučelje koje se zasnivalo na FireWire specifikaciji serijskog sučelja za računala tvrtke Apple. Različiti proizvođači računala nazi-vaju sučelje IEEE 1394 različitim 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 izokro-nim prijenosom podataka podrazumijeva prijenos podataka u stvarnom vremenu za peri-ferne uređaje kao što su mikrofoni, zvučnici, videokamere i videorekorderi koji zahtijevaju slanje ili prijem podataka u točnim vremenskim intervalima. FireWire može povezivati do 63 periferna uređaja u stablastoj topologiji (slično USB-u) te dopušta komunikaciju dvaju uređaja na ravnopravnoj osnovi (engl. peer-to-peer), npr. između skenera i pisača, bez su-

Page 389: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

386 12. POGLAVLJE: SABIRNICE

djelovanja procesora ili uporabe sistemske memorije. Brzine prijenosa su 100, 200 ili 400 Mb/s za poludupleksni način (engl. half-duplex) prijenosa (za FireWire 400, 1995.), odno-sno 786.432 Mb/s za potpuno dupleksni način prijenosa (engl. full-duplex) (za FireWire 800, 2002.). Poludupleksni način prijenosa podrazumijeva dvosmjerni prijenos podataka, ali takav da se podaci prenose samo u jednom smjeru u vremenu, dok potpuno dupleksni način prijenosa označava istodobni prijenos podataka u oba smjera.

FireWire konektor ima šest kontakata (priključaka): napajanje (8 - 40 V; 1.5 A), masa, parica B - (engl. twistedpair), parica B +, parica A - i parica A +. FireWire, kao i USB, dopušta "vruće priključivanje".

SCSI (Small Computer System Interface) je sabirnički standard prvenstveno namijenjen pe-rifernim (ulazno-izlaznim) jedinicama velike brzine kao što su magnetski i optički diskovi, ali podržava i uređaje kao što su skeneri i jedinice magnetske vrpce. Standard je nastao iz SASI-a (Shugart Associates System Interface), a službeno 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 uređaji

SI. 12.19 Primjer SCSI konfiguracije

Page 390: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 387 I

Sabirnica SCSI je paralelna ulazno-izlazna sabirnica na koju se može izravno priključiti osam uređaja za SCSI-1, odnosno 16 uređaja za Wide SCSI. Adresa SCSI uređaja naziva se SCSI ID. SCSI ID ujedno definira i prioritet SCSI uređaja: uređaj s ID = 0 ima najmanji prioritet, dok onaj s ID = 7 največi prioritet (ID = 15 za Wide SCSI). Uređaji mogu imati ulogu inicijatora (vodećeg modula) (engl. initiator) ili ciijnog (pratećeg) modula (engl. target). Konfiguracija SCSI sabirnice može biti bilo koja kombinacija od ukupno osam (16 za Wide SCSI) ciljnih modula i inicijatora. Neki od uređaja mogu imati obje uloge - ulogu inicijatora i ulogu cilj-nog modula. Minimalna konfiguracija sastoji se od jednog inicijatora i jednog ciljnog mo-dula. Naravno, tijekom izmjene podataka mora biti jasno određeno koji je uređaj inicijator, a koji ciljni modul. Uređaji priključeni na SCSI sabirnici komuniciraju računalom preko SCSI upravljača domaćina (engl. SCSI host adapter, SCSI host controller) koji ima pristup sabirnici računala domaćina, npr. PCI sabirnici te preko nje do memorije sustava. SCSI upravljač do-maćina može biti smješten izravno na matičnoj ploči osobnog računala ili radne stanice i naziva se ugrađeni (engl. embedded) SCSI upravljač domaćin.

Periferni uređaji pristupaju SCSI sabirnici preko SCSI upravljača koji ima svoj ID. Periferni ure-đaji koji su priključeni na SCSI upravljač promatraju se kao logičkejedinice (LUN - Logical unit). SCSI upravljač obično je ugrađen u perifernom uređaju (ugrađeni SCSI upravljač), odnosno jedinici i tada govorimo o npr. SCSI jedinici diska ili SCSI jedinici vrpce. No ako je SCSI uprav-ljač ostvaren kao posebna kartica, onda se naziva SCSI premosnik (engl. bridge controller). Jedna od prednosti SCSI premosnika je to što on podržava osam logičkih jedinica (LUN), od-nosno osam perifernih uređaja. Slika 12.19 prikazuje SCSI konfiguraciju s jednim SCSI uprav-ljačem domaćinom, jednim ugrađenim SCSI upravljačem za diskovnu jedinicu i s tri SCSI premosnika od kojih svaki podržava do osam perifernih uređaja (logičkih jedinica - LUN).

Širina SCSI sabirnice je 8,16 ili 32 bita ovisno o konfiguraciji. SCSI sabirnice širine 16 ili 32 bita nose obično naziv Wide SCSI (široki SCSI). Trakasti kabel (engl. ribbon cable) s 50 priklju-čaka upotrebljava se za SCSI sabirnicu širine 8 bita. Široki SCSI koristi dva trakasta kabela s 50,68 ili 80 priključaka.

Komunikacija na SCSI sabirnici odvija se između inicijatora i ciljnog modula tako da se sve aktivnosti događaju u slijedu faza. Faze su:

• Bus Free (Sabirnica slobodna) - pokazuje da niti jedan uređaj ne koristi sabirnicu tako da je ona raspoloživa;

• Arbitration (Arbitraža) - tijekom te faze jedan ili više inicijatora iskazuje želju za sabirnicom;

• Selection (Selekcija) - u toj fazi inicijator koji je "pobijedio" u fazi arbitraže izabire ciljni modul (engl. target) s kojim želi komunicirati;

• Reselection (Reizbor) - omogućuje se ciljnom modulu, koji je otpustio sabirnicu da bi izvršio 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 više poruka ciljnom modulu (Message Out) ili

od ciljnog modula inicijatoru (Message In); • Status (Status) - u toj fazi ciljni modul završava SCSI naredbu i izvještava inicijator o

uspješno ili neuspješno izvršenoj naredbi.

Page 391: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

388 12. POGLAVLJE: SABIRNICE

Slika 12.20 prikazuje dijagram stanja za SCSI sabirničke faze. Važna značajka SCSI je moguć-nost reizbora - ako je naredba upućena ciljnom modulu takva da se za njezino izvođenje zahtijeva dulje vrijeme, tada ciljni modul može osloboditi sabirnicu (odspojiti se) i nakon što završi zahtijevanu operaciju ponovo se spojiti na sabirnicu. Na primjer, inicijator je iz-dao naredbu diskovnoj jedinici da formatira disk. Diskovna jedinica izvodi tu operaciju, ali tako da ne "drži" sabirnicu tijekom formatiranja. Nakon što je formatiranje diska završeno, ciljni se modul (diskovna jedinica) spaja na SCSI sabirnicu i izvještava inicijator o obavljenoj naredbi. U međuvremenu neki od inicijatora može započeti uspostavljanje nove veze jef ima indikaciju o slobodnoj sabirnici (faza BusFree).

uključenje napajanja

Sabirnički protokol kojim su podržane faze ostvaruje se s devet upravljačkih linija (za SCSh 1): BSY, SEL, C/D, l/O, MSG, REQ, ACK, ATN, RST. Opis signala i sabirnički protokol iscrpno je prikazan u materijalu standarda X3.131-1986, X3.13M994 i X3.131-1996. Za ilustraciju protokola na SCSI sabirnici opišimo događaje i prikažimo stanje na SCSI sabirnici tijekom Read naredbe kojom se prenose podaci od ciljnog modula inicijatoru. Aktivnosti započi-nju fazom Bus Free - sabirnica je slobodna. Faza Bus Free karakteristična 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 uključi napajanje ili nakon resetiranja SCSI.Tijekom normalnog rada sabirnica ulazi u fazu BusFree nakon što je naredba izvršena i nakon što se pošalje poruka COMMAND COMPLETE. Jednako tako, tijekom normalnog rada SCSI može ući u fazu Bus Free kada ciljni modul oslobađa sabirnicu slanjem poruke DISCONNECT.

iz faze Bus Free prelazi se u fazu Arbitration. U toj se fazi jedan ili više perifernih uređaja ta-kmiče za upravljanje sabirnicom. Svaki od uređaja koji iskazuje želju za sabirnicom aktivira signalnu liniju BSY\jednu od linija podataka. Svaki od osam uređaja priključenih na sabirni-cu (SCSI-1) ima jedinstven ID (od 0 do 7) i svaki će od uređaja koji želi sabirnicu tijekom faze Arbitration aktivirati odgovarajuću liniju podataka u skladu sa svojim ID-om. Na primjer, ako se natječu za sabirnicu uređaj s ID = 7 i onaj s ID = 5, tada će linije podataka D7 i D5 biti postavljene u 1. U toj točki uređaji koji su zahtijevali arbitriranje moraju čekati najmanje 2.4 ^s da se postupak arbitraže završi. Ako je više uređaja postavilo svoj ID tijekom faze Arbitration, pobjeđuje onaj s najvećom vrijednosti ID, tj. onaj s najvećim prioritetom. Ostali uređaji koji su se takmičili za sabirnicu nadgledaju linije podataka i povlače svoje zahtjeve

Page 392: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 389 I

priznajući konačan rezultat arbitraže. Iz značajki opisa faze arbitraže možemo zaključiti da SCSI sabirnica rabi distribuiranu arbitražu. Uređaj koji je pobijedio u fazi Arbitration postaje inicijator i aktivira signal SEL To je znak ostalim uređajima da oslobode signalnu liniju BSY i uklone svoj ID bit sa sabirnice podataka. Sabirnica ulazi u fazu Selection. Tijekom te faze uspostavlja se veza između inicijatora i ciljnog modula. Inicijator, koji je preuzeo upravlja-nje sabirnicom, postavlja na dvije odgovarajuće linije podataka svoj ID i ID ciljnog modula, uz to je još uvijek aktivan signal BSY koji je bio postavljen od strane uređaja 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 kašnjenja, inicijator deaktivira signal BSY. Nakon što ciljni modul prepozna svoj ID, on ak-tivira signal BSY Kad inicijator detektira aktivan signal BSYt on oslobađa linije podataka i deaktivira signal SEL. U ovom trenutku, na kraju faze Selection, upravljanje sabirnicom preuzima ciljni modul! U sljedećem koraku ciljni modul aktivira signalnu liniju C/D i time označava 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 pročita bajt, de-aktivira REQ, a nakon toga i inicijator deaktivira signal ACK. U prvom bajtu naredbe sadržan je operacijski kod naredbe u kojem se nalazi i informacija o broju bajtova naredbe koji se moraju prenijeti. Ovi se bajtovi prenose u ponavljajućoj REQ / ACK sekvenci. Nakon što je ciljni modul primio od inicijatora sve bajtove naredbe, deaktivira signalnu liniju C/D i tako završava fazu Command. Ciljni modul tumači naredbu i u skladu s tumačenjem (riječ je o Read operaciji) prelazi u fazu Data, odnosno točnije Data In te aktivira I/O signalnu liniju. Na taj način označava smjer podataka od ciljnog modula prema inicijatoru. Ciljni modul smješta prvi bajt iz zahtijevanog bloka podataka na sabirnicu podataka te aktivira signal-nu liniju REQ. Inicijator, nakon što pročita podatak, aktivira signalnu liniju ACK. Preostali se bajtovi prenose ponavljajući 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) obavještavajući ga daje uspješno za-vršen 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 slučaju 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 sadržava poruku o za-vršetku naredbe. Nakon što je inicijator primio tu poruku, ciljni modul oslobađa 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 različitim značajkama i imenima: i) asinkrona SCSI sabirnica - asinkroni je prijenos podataka osnovni oblik prijenosa za

sve SCSI uređaje. Brzina prijenosa je 5MB/s; ii) sinkrona SCSI sabirnica - sinkroni prijenos podataka upravljan signalom vremenskog

vođenja od 5MHz (SCSI-1) ili 10MHz (SCSI-2); iii) brzi SCSI (Fast SCSI) - poboljšana 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 značajki različitih varijanti SCSI sabirnice.

Page 393: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

LT)

NJ

k> <

—i 0) 3 0) 13

3

Bus Settle Delay

cn inicijator aktivira signal BSY cu

QJ D O) On n ^

0> g; -V D n '

0) O 3 30 n> a> Q. U OJ —

0) Q. O" n>

Bus Free Delay

Bus Set Delay

Bus Clear Delay

Arbitration Delay

Bus Clear Delay plus Bus Settle Delay

ciljni uređaj postavlja BSY

S S — -SS-BSY

SEL

C/D

I/O

MSG

REQ

ACK

ATN

RST

DB (7-0,P) (Data bus)

sustavi bez arbitraže započinju ovdje

-ss- -ss--ss-

-ss- Y -ss-

J / - V \

-ss-

X Z > ss / O L I Arb.

/ I IDs Targ. &lnit.

IDs

1st CMD Byte

Last CMD Byte

- 8 r

T t JT

/ — V 4 / VJ/ i

\ i V

-fr

-SS-

Data Byte

-SS J C X . t O J C X . Data Byte

Status Byte

Command I Complete

sabirnica slobodna

Arbi- Selec-tration tion

Command Data In Status Message In

sabirnica slobodna

"J

Page 394: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 391 I

Sucelje Standard Konektor Širina (bita)

Frekvencija (MHz)

Brzina (MB/s)

Duljina kabela (m)

SCSI-1 SCSI-1 (1986.)

50 priključaka 8 5 5 6

Fast SCSI SCSI-2 (1994.)

50 priključaka 8 10 10 3

Fast-Wide SCSI SCSI-2, SCSI-3 SPI (1996.)

2 x 50 (SCSI-2) 1 x 68 (SCSI-3) 16 10 20 3

Ultra SCSI SCSI-3 SPI 50 priključaka 8 20 20 1,5 ili 3

Ultra Wide SCSI SCSI-3 SPI 68 priključaka 16 20 40 1,5 ili 3

Ultra 2 SCSI SCSI-3 50 priključaka 8 40 40 -

Ultra 2 Wide SCSI SCSI-3 SPI-3 68 priključaka 80 priključaka 16 40 80 -

Ultra 3 SCSI SCSI-3 SPI-3 (1999.)

68 priključaka 80 priključaka 16 40

DDR 160 -

Ultra-320 SCSI SCSI-3 SPI-3 (2002.)

68 priključaka 80 priključaka 16 80

DDR 320 -

Ultra-640 SCSI SCSI-3 SPI-3 (2003.)

68 priključaka 80 priključaka 16 160

DDR 640 -

Tablica 12.1 Pregled značajki različitih varijanti SCSI sabirnice

Page 395: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 393 I

13. POGLAVLJE

ULAZNO-IZLAZNI SUSTAV

13.1. UVOD Računalo je neupotrebljivo ako ne može komunicirati s vanjskim svijetom. Komunikacija s vanjskim svijetom ostvaruje se ulazno-izlaznim sustavom koji mora podržati često vrlo raznolike oblike izmjene podataka između procesora i vanjskog svijeta. Na primjer, prikaz podataka i unošenje naredbi korisnika, generiranje upita bazama podataka i njihovo ob-navljanje, rezervna pohrana podataka i dokumenata (engl. bačking up), prikupljanje po-dataka iz mreže mjernih uređaja i senzora, upravljanje robotskom rukom, upravljanje ure-đajima i napravama u proizvodnim i industrijskim procesima, izmjena podataka i naredbi s udaljenih terminala, izmjenjivanje podatka s drugim računarskim sustavima i si. Izmjena podataka računala s vanjskim svijetom ostvaruje se različitim perifernim uređajima (nazi-vaju se još i vanjski uređaji ili ulazno-izlazni uređaji) koji su preko ulazno-izlaznog sučelja (engl. I/O i riter face) priključeni na sabirnicu računala. Periferni uređaji su, na primjer, tipkov-nica, miš ili skener koji su očiti primjeri ulaznih uređaja. Pisač, monitor ili grafička prikazna jedinica bez dvoumljenja su primjeri izlaznih jedinica. No što je jedinica magnetskog dis-ka? Podaci koji se izmjenjuju između procesora i diskovne jedinice nisu podaci koji izravno pristižu 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, međutim, između procesora i diskovne jedinice izmjenjuju preko ulazno-izlaznog sustava jer se diskovna jedinica zbog svojih električkih i mehaničkih značajki bitno razlikuje od glavne (primarne ili radne) memorije pa se diskovna jedinica smatra ulazno-izlaznim, od-nosno perifernim uređajem.

Periferni se uređaji mogu razvrstati prema tome jesu li ulazni, izlazni ili ulazno-izlazni, jesu li namijenjeni komunikaciji sa čovjekom ili strojem (ili drugim računalom) te prema brzini prijenosa. Na primjer, tipkovnica je ulazni uređaj namijenjen čovjeku i njome se prenose podaci brzinom od oko 10 B/s; jedinica magnetskog ili optičkog diska je ulazno-izlazni uređaj kojem je stroj (računalo) partner u komunikaciji s brzinom prijenosa od 3000 Mb/s ili grafička prikazna jedinica koja je izlazni uređaj namijenjen čovjeku i ima brzinu prijenosa podataka od 800 do 8000 Mb/s.

Periferni se uređaji izravno ne priključuju na sabirnicu računarskog sustava. Oni se, kao što smo već spomenuli, priključuju na sabirnicu računarskog sustava preko ulazno-izlaznog sučelja. Ulazno-izlazno sučelje često se naziva i ulazno-izlazni upravljač (engl. I/Ocontroller), ulazno-izlazni modul (engl. I/O module), upravljač uređaja (engl. device controller), a neki ga još nazivaju i pristupni sklop.

Page 396: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

394 13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

Pod ulazno-izlaznim sustavom (slika 13.1) podrazumijevaju se svi periferni uređaji (i njihova ulazno-izlazna sučelja) koji su priključeni na sabirnicu računarskog sustava. Jedno ulazno-izlazno sučelje na koje je priključen jedan ili više perifernih uređaja nazivat ćemo ulazno-izlazni podsustav.

sabirnica sustava

ulazno- ulazno- ulazno- ulazno-procesor memorija izlazni izlazni izlazni ... izlazni

upravljač 1 upravljač 2 upravljač 3 upravljač n

periferni uređaj

ulazno-iziazni podsustav 1

komunikacijska periferni uređaji linija

ulazno-izlazni podsustav 2

ulazno-izlazni podsustav 3

periferni uređaji povezani dijeljenom

ulazno-izlaznom sabirnicom

ulazno-izlazni podsustav n

ulazno-izlazni sustav

SI. 13.1 Ulazno-izlazni sustav

Slika 13.1 prikazuje način priključenja perifernih uređaja za jednostavnije računarske susta-ve 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 način priključenja perifernih uređaja u računarskom sustavu koji se temelji na hijerarhijskom ustroju većeg broja sabirnica (npr. lokalna sabirnica/sabirnica priručne memorije, memorijska sabirnica, PCI sabirnica, ulazno-izlazna sabirnica). U oba slučaja vidimo da se između perifernog uređaja i sabirnice pojavljuje ulazno-izlazni uprav-ljač (engl. I/O controller). Zašto? Razlozi su višestruki:

i) zbog velike je raznolikosti perifernih uređaja (načini rada, brzina i načini prijenosa podataka i si.) nepraktično, neisplativo i skoro neizvedivo ugraditi upravljačke sklo-pove za periferne uređaje u procesor. Uporabom ulazno-izlaznih upravljača postiže se nezavisnost oblikovanja procesora i memorije u odnosu na periferne uređaje. Na taj se način omogućuje nadogradnja i proširenje ulazno-izlaznog sustava novim pe-rifernim uređajima neovisno o procesoru;

ii) uporabom ulazno-izlaznih upravljača koji, između ostalog, imaju i mogućnost me-i đupohranjivanja podataka (engl. buffering), premošćuje se jaz između brzine pro-j cesora i perifernih uređaja koji su vrlo često puno sporiji od procesora ili memorije;

iii) periferni uređaji vrlo često rabe format i duljinu riječi podataka koja se razlikuje odi formata i duljine riječi procesora pa je stoga potrebno obaviti pretvorbu formata«] oblika podataka u ulazno-izlaznom upravljaču;

iv) ulazno-izlazni upravljači moraju podržati vremensko vođenje i protokol za prijenosi podataka između procesora i perifernog uređaja te omogućiti priključenje više od]

Page 397: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 395 I

jednog perifernog uređaja. Ujedno, vrlo često imaju i dodatne funkcije koje se odno-se na otkrivanje i ispravljanje pogrešaka tijekom prijenosa podataka.

lokalna sabirnica/ sabirnica priručne memorije

periferni uređaj periferni uređaji periferni uređaji

SI. 13.2 Način priključenja perifernih uređaja u računarskom sustavu koji se temelji na hijerarhijskom ustroju većeg broja sabirnica

13.2. ULAZNO-IZLAZNI UPRAVLJAČ Ulazno-izlazni upravljači, ovisno o funkcijama koje obavljaju, mogu biti izvedeni kao jed-nostavno sučelje između procesora i jednog perifernog uređaja, dok u složenijim izvedba-ma mogu nezavisno upravljati većim brojem perifernih uređaja. U oba slučaja ulazno-izla-zni upravljač mora podržavati funkcije koje se odnose na međupohranjivanje podataka i upravljanje perifernim uređajem. U najjednostavnijoj izvedbi, ulazno-izlazni upravljač koji je priključen na sistemsku sabirnicu sastoji se od dva dijela (slika 13.3): pristupnih vrata

Page 398: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

396 13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

računalu (engl. host port) i pristupnih vrata perifernom uređaju (engl. device port). Pristupna vrata računalu, kojima se ostvaruje sučelje prema procesoru, sastoje se od sklopova za pri-hvat i dekodiranje ulazno-izlaznih naredbi koje izdaje procesor, dekodiranje vlastite adrese i adrese za izbor pristupnih vrata uređaja te od jednog ili više registara podataka, uprav-ljačkog registra te registra za pohranu informacije o statusu perifernog uređaja. Uz sve ta pristupna vrata obično imaju i sklopove za generiranje zahtjeva za prekid (engl. interrupt hardware).

Pristupna vrata perifernom uređaju, kojima se ostvaruje sklopovsko sučelje prema peri-fernom uređaju, zadužena su za upravljanje i prijenos podataka od ili prema perifernom uređaju. Neke od upravljačkih funkcija pristupnih vrata su, primjerice, inicijalizacija peri-fernog uređaja, aktiviranje i zaustavljanje rada perifernog uređaja, ostvarivanje protokola izmjene podataka s perifernim uređajem, pretvorba podataka (paralelno/serijska i serijsko^ paralelna) te oblikovanje (kompozicija i dekompozicija) podataka u riječi i bajtove. Slika 13.3 prikazuje blok-dijagram jednostavnog ulazno-izlaznog upravljača koji podržava dva periferna uređaja.

sabirnica podataka

c

adresna sabirnica

upravljačna sabirnica

V-j registar podataka y

A VI

statusni registar jy upravljački registar

N j

A

V

< , \

sklopovi za dekodiranje

ulazno-izlaznih naredbi i adrese

pristupna vrata računalu

sklopovsko sučelje za periferni uređaji 1

pristupna vrata perifernom uređaju 1

sklopovsko sučelje za periferni uređaji 2

pristupna vrata perifernom uređaju 2

podaci

status >

upravljanje

podaci / — V N A

r status

N K

: — V upravljanje

SI. 13.3 Blok-dijagram jednostavnog ulazno-izlaznog upravljača

Ulazno-izlazni upravljač povezan je s računalom posredno preko ulazno-izlazne sabirnice ili izravno preko sistemske sabirnice: sabirnice podataka, adresne sabirnice i upravljačke sa-birnice. Podaci koji se izmjenjuju s vanjskim svijetom i koji se prenose od ili prema ulazno-izlaznom upravljaču međupohranjuju se u jednom ili više registara podataka. Upravljač ima jedan ili više statusnih registara u kojima se pohranjuje informacija o trenutnom stanju perifernog uređaja te jedan ili više upravljačkih registara za prihvat upravljačke informacije od procesora.

U složenijim izvedbama ulazno-izlazni upravljači imaju svoj vlastiti (lokalni) procesor i lo-kalnu memoriju tako da mogu podržati autonomni prijenos podataka bez izravnog su-

Page 399: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 397 I

djelovanja središnjeg procesora računarskog sustava. Vrlo se često takvi ulazno-izlazni upravljači nazivaju i inteligentni ulazno-izlazni upravljači. Slika 13.4 prikazuje strukturu jed-nog takvog ulazno-izlaznog podsustava s inteligentnim ulazno-izlaznim upravljačem koji podržava dva periferna uređaja.

* -

ulazno-izlazni podsustav

SI. 13.4 Struktura ulazno-izlaznog podsustava s inteligentnim ulazno-izlaznim upravljačem

U zaključku ovog potpoglavlja još jednom navedimo osnovne funkcije koje treba podržati ulazno-izlazni upravljač:

i) vremensko vođenje i upravljanje tokom podataka između perifernih uređaja i inter-nih komponenti računarskog sustava;

ii) komunikaciju s procesorom; iii) komunikaciju s perifernim uređajem (ili uređajima); iv) međupohranjivanje podataka; v) otkrivanje (detekcija) i ispravljanje pogrešaka tijekom prijenosa podataka.

Za ostvarivanje komunikacije između procesora i perifernog uređaja ulazno-izlazni uprav-ljač mora imati sposobnost dekodiranja naredbi koje šalje procesor te dekodiranja adrese za izbor perifernog uređaja ili registara u perifernom uređaju. Uz sve to, od ulazno-izla-

Page 400: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

398 13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

znog upravljača zahtijeva se i dojava statusa ili stanja u kojem se nalazi periferni uređaj, uključujući i izvještavanje o različitim pogreškama koje mogu nastupiti tijekom prijenosa podataka.

13.3. NAČINI IZMJENE PODATAKA Načini izmjene podataka između perifernog uređaja i procesora (ili memorije), tj. ulazno-izlazne 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 između pro-cesora i ulazno-izlaznog upravljača pod izravnim programskim upravljanjem procesora. Procesor izvodi program kojim izravno upravlja ulazno-izlaznim operacijama - očitava status perifernog uređaja, šalje naredbe za izvođenje ulazne ili izlazne operacije i prenosi podatke. Budući da je procesor izvođenjem programa izravno uključen u ulazno-izlazni prijenos podataka, ne može raditi ništa drugo pa nema konkurentnih operacija, odnosno više istodobnih aktivnosti u računarskom sustavu. Štoviše, kad procesor koji je obično brži od ulazno-izlaznog upravljača, odnosno perifernog uređaja, izda naredbu ulazno-izla-znom upravljaču, mora čekati da se obavi prijenos podataka između perifernog uređaja i ulazno-izlaznog upravljača te da se podaci pohrane u registrima podataka ulazno-izlaznog upravljača i postanu raspoloživi procesoru. Kada je velika razlika u brzini procesora i peri-fernog uređaja, to čekanje procesora predstavlja beskorisno veliko rasipanje procesorskog vremena.

Prijenos podataka pod programskim upravljanjem zahtijeva da procesor izvrši nekoliko instrukcija, uključujući ulaznu instrukciju (ako je riječ o prijenosu podataka iz vanjskog svi-jeta u računarski 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 računala u vanjski svijet). U računarskim sustavima koji koriste programirani ulazno-izlazni prijenos podataka, procesor, memorija i ulazno-izlazni upravljač obično komuniciraju preko sistemske sabirnice: adresne sabirnice, sabirnice po-dataka i upravljačke sabirnice. Adresna sabirnica koja služi za adresiranje memorije koristi se i za adresiranje ulazno-izlaznog upravljača. Ovisno o njegovoj složenosti, dodjeljuje mu se jedna iii veći broj adresa. I ovdje moramo naglasiti da su adrese jednoznačno dodijelje-ne - ne postoje dva ulazno-izlazna upravljača u računarskom sustavu koji imaju istu ili iste adrese. Ako je riječ o vrlo jednostavnom upravljaču koji je reduciran samo na pristupna tj. ulazno-izlazna vrata (engl. I/Oport) s jednim registrom podataka, onda njemu može biti dodijeljena samo jedna adresa. No ako je riječ o složenijem ulazno-izlaznom upravljaču, on ima dodijeljenu grupu adresa (npr. adrese za jedan ili više upravljačkih registara, adresa za statusni registar i adrese za ulazne i izlazne registre podataka).

Page 401: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 399 I

Ovisno o tome kako procesor"vidi"ulazno-izlazni upravljač, postoje dva načina adresiranja upravljača:

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 upravljačima dio su adresnog memorijskog prostora. Drugim riječima, procesor smatra ulazno-izlazne uprav-ljače, odnosno njihove registre, dijelom memorijskog adresnog prostora i njima pristupa strojnim instrukcijama koje rabi za komunikaciju s memorijskom jedinicom. Naravno, u tom je slučaju ukupni adresni memorijski prostor umanjen za dio adresnog prostora dodi-jeljenog ulazno-izlaznom sustavu. Procesori koji rabe takvu organizaciju ulazno-izlaznog sustava nemaju posebne instrukcije za ulazne operacije (instrukcije IN ili INPUT) niti in-strukcije za izlazne operacije (OUT). Umjesto njih rabe instrukcije koje se koriste za komu-nikaciju 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 uređaja ili vanjskog svijeta) i jedan izlazni za slanje podatka perifernom uređaju ili vanjskom svijetu (slika 13.5). Neka je izlaznom registru dodijeljena adresa 8000 (heksadekadno), a ula-znom registru adresa 8008 (heksadekadno). Pozor: adrese 8000 i 8008 su u tom slučaju rezervirane za ulazno-izlazni upravljač i ne smiju se dodijeliti memorijskim lokacijama! Jednostavan programski odsječak kojim će se obaviti prijenos podataka izgleda ovako:

instrukcija instrukcija dohvati podatak s memorijske lokacije čija je adresa 1000 i privremeno ga pohrani u akumulator A pohrani podatak iz A u izlazni registar U/l vrata (izlazna operacija) instrukcija instrukcija instrukcija dohvati podatak iz ulaznog registra U/l vrata pohrani podatak na memorijsku lokaciju čija je adresa 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 dohvaća se podatak iz ulaznog registra podataka U/l vrata (ula-zna operacija). Vidimo da instrukcija STA ima funkciju izlazne instrukcije (OUT) ako adresi-ra izlazni registar podataka U/l vrata, odnosno instrukcija LDA ima funkciju ulazne instruk-cije (IN) ako adresira ulazni registar. Ulazno-izlazni upravljački sklopovi koji su posebno namijenjeni programiranom ulazno-izlaznom prijenosu i rabe memorijsko preslikavanje U/l koriste upravljački signal R/W (čitaj/piši) kao i memorijski moduli (slike 13.5 i 13.6 a)).

LDA $1000

STA $ 8000

LDA $8008 STA $2000

Page 402: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

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 slučaju ima i poseb-ne 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 memo-rijskom adresnom prostoru, to čini instrukcijama tipa LDA i STA koje aktiviraju upravljačke linije READ M (čitaj memoriju), odnosno VVRITE M (piši u memoriju). No u slučaju pristupa adresnom prostoru namijenjenom U/l sustavu, instrukcijama IN i OUT aktivira upravljač-ke signale READ IO (čitaj U/l), odnosno VVRITE IO (piši U/l) (slika 13.6 b). Formati instrukcija IN i OUT sastoje se od dva ili više bajtova koji sadržavaju operacijski kod instrukcije te dva adresna dijela - jedan koji određuje adresu U/l vrata, odnosno ulaznog ili izlaznog registra podataka i drugi koji određuje izvor podataka koji će biti poslan u vanjski svijet ili odredište podatka u kojem će se privremeno pohraniti podatak dohvaćen iz vanjskog svijeta.

Page 403: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 401 I Slike 13.6 a) i 13.6 b) prikazuju organizaciju programiranog ulazno-izlaznog prijenosa po-dataka za memorijsko preslikavanje U/l i izdvojeno U/l te odnose između pojedinih adre-snih 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 uređaj periferni uređaji

a)

sabirnica podataka

adresna sabirnica

periferni uređaj periferni uređaji

b)

SI. 13.6 Programirani U/l prijenos: a) s memorijskim preslikavanjem U/l; b) s izdvojenim U/l;

Page 404: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

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

izdvojeno U/l preslikavanje

c)

SI. 13.6 Programirani U/l prijenos: c) odnos između pojedinih adresnih prostora za obje organizacije

Programirani ulazno-izlazni prijenos podataka može biti programirani bezuvjetni i progra-mirani uvjetni prijenos. Osnovna značajka programiranog bezuvjetnog prijenosa je da se prijenos podataka obavlja bez prethodnog utvrđivanja stanja ulazno-izlaznog upravljača, odnosno perifernog uređaja. Programski odsječak u Primjeru 13.1. ilustrira takvu vrstu pri-jenosa - vidimo da instrukciji STA $8000 koja ima značenje izlazne instrukcije ne prethodi ništa čime bi se utvrdilo jesu li U/l vrata, odnosno periferni uređaj koji je priključen na ta vrata, spremni za prihvat podatka.Takva vrsta prijenosa podrazumijeva daje periferni ure-đaj priključen na ulazno-izlazni upravljač spreman za prihvat ili slanje podataka u trenutku izvođenja ulazne ili izlazne instrukcije. Bezuvjetni se programirani prijenos upotrebljava samo tamo gdje su vremena odziva upravljača i perifernih uređaja točno poznata. Zbog jednostavnosti i izravnosti ovaj način prijenosa postavlja minimalne zahtjeve za programe i sklopove.

Primjer 13.2.

Prikažimo primjer programskog odsječka za bezuvjetni programirani prijenosa bloka podataka za procesor MC 680x0 koji koristi memorijsko U/l preslikavanje. Pretpostavimo da se blok podataka nazvan BLOCK, veličine 256 bajtova, koji se nalazi na početnoj adre-si 4000 (heksadekadno) želi poslati na izlazna vrata (PORT) čija je adresa 8000 (heksade-kadno). Program započinje na adresi 6000 (heksadekadno).

PORT EQU $8000 ; adresa izlaznih vrata COUNT EQU 256 ; (brojilo) veličina bloka koji se prenosi

ORG $4000 BLOCK DS.B 256

ORG $6000 MOVE #COUNT, Dl MOVE.L #BLOCK, A1

; početna adresa bloka podataka ; rezervirano 256 bajtova za BLOCK ; početak programa ; u registar Dl postavi početnu vrijednost brojila ; postavi početnu adresu bloka podataka u reg. A1

Page 405: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 403 I

MOVE.L #PORT, A2 PETLJA MOVE. B (Al)+, DO

postavi adresu izlaznih vrata u reg. A2

MOVE.B DO, (A2) SUB #1, Dl BNE PETLJA

dohvati podatak iz BLOCK i privremeno ga po-hrani u DOte povećaj sadržaj registra A1 za jedan podatak iz reg. DO pošalji 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 jedna-ku funkciju kao i STA, odnosno LDA instrukcija.Tako na primjer: Instrukcija

MOVE. B (Al)+, DO; M(A1> -•DO, A1 + 1-* A1 ima funkciju LDA - dohvaća podatak (bajt) iz memorijske lokacije čija je adresa sadrža-na 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 sadržaj registra A1 nakon dohvata bajta automatski povećava za 1. Nakon izvođenja potonje instrukcije u registru DO nalazi se podatak (bajt) koji će instrukcijom

biti poslan u vanjski svijet.

Instrukcija MOVE. B DO, (A2) predstavlja operaciju pohranjivanja (STA) bajta iz re-gistra DO na lokaciju čija je adresa sadržana u adresnom registru A2. (Adresni registar A2 sadržava 8000 (heksadekadno) što je adresa izlaznih vrata). Izlazna su vrata linijama podataka spojena s perifernim uređajem tako da se upisom podatka u izlazni registar podaci ujedno i šalju perifernom uređaju, odnosno vanjskom svijetu.

U prethodnom programskom odsječku vidimo da procesor prije negoli pošalje podatak na izlazna vrata ne provjerava jesu li vrata ili vanjski svijet (periferni uređaj) spremni za prihvat podataka.

Programirani uvjetni prijenos zahtijeva ispitivanje stanja ulazno-izlaznog upravljača, odno-sno perifernog uređaja prije negoli se obavi prijenos podataka. Periferni uređaj je jednom ili većim brojem posebnih signalnih linija za rukovanje povezan s ulazno-iziaznim uprav-ljačem ili točnije njegovim statusnim registrom kojem dojavljuje informaciju o spremnosti za prijenos podataka. Ta se spremnost ogleda u promjeni stanja određenog ili određenih bitova u statusnom registru. Na primjer, ako je periferni uređaj spreman, onda će se odre-đen bit (ili određeni bitovi) u statusnom registru postaviti u 1. Procesor ispitivanjem tog ili tih bitova utvrđuje je li periferni uređaj spreman. Ako periferni uređaj nije spreman za pri-hvat ili slanje podataka, programski se tok zatvara u "petlju čekalicu" u kojoj se uzastopce ispituje stanje perifernog uređaja (naravno, posredno ispitivanjem bita ili bitova u statu-snom registru ulazno-izlaznog upravljača). Tek kada je periferni uređaj spreman, izvodi se instrukcija za ulazno-izlazni prijenos podataka. Slika 13.7 prikazuje shematski tok progra-ma za takvu vrstu prijenosa.

MOVE.B DO, (A2)

Page 406: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

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, obično se zahtijeva da ulazno-izlazni upravljač (ili u jednostavnijoj izvedbi U/l vrata) ima dva regi-stra. 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 upravljača (ili U/l vrata) adresu 8002 (heksadekadno). Programski odsje-čak za uvjetni programirani prijenos bloka podataka za procesor MC 680x0 izgleda ovako: PORTDATA EQU $8000 PORTSTAT EQU $8002 COUNT EQU 256 PROGRAM EQU $6000 MASKA EQU 1 DATA EQU $4000

ORG DATA BLOCK 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) veličina bloka koji se prenosi ; početna adresa programa ; vrijednost maske kojom se ispituje status ; početna adresa bloka podataka

; rezervirano 256 bajtova za BLOCK ; početak programa ; u registar D1 postavi početnu ; vrijednost brojila ; postavi početnu adresu bloka ; podataka u reg. A1 ; postavi adresu izlaznih vrata u reg. A2 ; postavi adresu statusnog registra u reg. A3

Page 407: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 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 povećaj sadržaj 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 pošalji 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 značajni bit statusnog registra ulazno-izlaznog upravljača koji se automatski postavlja u 1 kada je ulazno-izlazni upravljač spreman, i to na sljedeći način:

MASKA ima ulogu tzv. maske i ima vrijednost 1, odnosno binarno 00000001. Rezultat logičke I operacije (AND.B) između sadržaja registra D2 (u kojem je upisan trenutni status upravljača, odnosno periferijske jedinice) i maske MASKA bit će 1 onda kada je postav-ljen najmanje značajni bit statusnog registra ulazno-izlaznog upravljača:

MASKA 0 0 0 0 0 0 0 1 (D2) X X X X X X X 1 AND 0 0 0 0 0 0 0 1 rezultat logičke I operacije.

(Opaska: u ovom primjeru pretpostavljamo da će se u statusnom registru ulazno-izla-znog upravljača postaviti najmanje značajni bit (bO) u 1 kada periferni uređaj signalizira da je spreman za prijenos podataka; X označava vrijednost 0 ili 1)

Instrukcijom AND.B #MASKA, D2 postavit će se zastavica Z u 1 u statusnom registru procesora ako je rezultat logičke operacije I jednak 0 (što znači da ulazno-izlazni uprav-ljač nije spreman). Instrukcijom BEQ ČEKAJ ispituje se stanje zastavice Z u statusnom registru procesora i ako je ona jednaka 1 (što znači daje rezultat logičke operacije I bio 0), grana se na ČEKAJ - upravljač nije spreman. Kada je rezultat logičke 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.

Page 408: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

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« točno poznavanje vremena odziva perifernih uređaja jer se samo na taj način može jamđfil pouzdan prijenosa podataka. U praksi su rijetke situacije u kojima se vrijeme odziva toa»J poznaje i u kojima se jamči da će ono biti nepromjenjivo. Budući da pri takvom prijenosa] podataka procesor ne ispituje je ii periferni uređaj spreman za prihvat ili slanje podatak*! može se, zbog promjene vremena odziva perifernog uređaja, dogoditi gubitak podataka.) Na primjer, procesor upisuje novi podatak u izlazni registar ulazno-izlaznog upravljača^ da prethodni podatak iz izlaznog registra periferni uređaj nije pročitao.

Pouzdanost izmjene podataka između procesora i perifernog uređaja rješava programirani j uvjetni prijenos u kojem procesor prije slanja ili prijema podataka ispituje spremnost peri-' fernog uređaja. No programirani uvjetni ulazno-izlazni prijenos podataka ima nedostatak-procesor u programskoj petlji u kojoj ispituje spremnost perifernog uređaja ostaje sve ddk periferni uređaj ne postane spreman za prijem ili slanje podataka. Ako procesor izmjenjuje podatke sa sporim perifernim uređajem, 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 elektromehaničkom pisaču 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 pro-gramsku petlju čekalicu (koja se sastoji od tri instrukcije) oko 3\xs. To znači da će se petlja čekalica izvesti preko 8330 puta pri slanju svakog znaka pisaču. Ako sada pretpostavimo da se računarski sustav koristi za upravljanje industrijskim procesom koji ima više stotina sen-! zora, mjernih instrumenata i izvršnih naprava, onda bi vremena provedena u petljama če-kalicama predstavljala golemu većinu procesorskog vremena. To rasipanje procesorskog vremena ugrožava i osnovnu funkciju računarskog sustava - nadgledanje i upravljanje in-dustrijskim procesom, odnosno izvođenje upravljačkih funkcija u stvarnom vremenu.

prekinuti (tekući) program

prekidni program

SI. 13.8 Shematski prikaz prekidnog prijenosa podataka

Djelotvornije iskorištenje procesorskog vremena postiže se prekidnim ulazno-izlaznim pri-jenosom podataka (engl. interrupt-driven l/O). U tom načinu prijenosa podataka procesor

Page 409: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RiBARIĆ - GRAĐA RAČUNALA 407

na zahtjev perifernog uređaja prekida izvođenje tekućeg programa i prelazi na izvođenje prekiđnog programa kojim poslužuje periferni uređaj, odnosno obavlja prijenos podataka (slika 13.8). Vanjski svijet, odnosno periferni uređaj koji je uzročnik ili izvor prekida upuću-je procesoru zahtjev za prekid izravno ili obično posredstvom ulazno-izlaznog upravlja-ča. Vrlo često periferni uređaj ili vanjski svijet upućuju zahtjev za prekid ulazno-izlaznom upravljaču posredno pomoću linija za rukovanje (engl. handshaking Une; poglavlje 2.), koje povezuju ulazno-izlazni upravljač i periferni uređaj, odnosno vanjski svijet, tako da se ko-riste tzv. aktivnim prijelazima signala na tim linijama (u skladu s definiranim protokolom). Slika 13.9 prikazuje organizaciju prekidne strukture. Zahtjev za prekid stiže procesoru jednom ili većim brojem upravljačkih linija koje se nazivaju linije za zahtijevanje prekida (engl. interrupt request) ili samo prekidne linije. Obično je više u lažno-izlaznih upravljača priključeno na jednu prekidnu liniju koja je izvedena kao "ožičano-ILI" (engl. wired-OR) pa istu prekidnu liniju dijeli više ulazno-izlaznih upravljača koji mogu istodobno zahtijevati prekid, odnosno aktivirati prekidnu liniju. Dakle, prekidna linija je aktivna kada je u logič-kom stanju "0" i to postaje kada jedan ili više uzročnika 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 uređaji "žive"svojom dinamikom i zato je zahtjev za prekid generiran asinkrono u odnosu na stanje procesora i na tijek izvođenja instrukcija tekućeg programa. To znači da se aktivno stanje na prekidnoj liniji (kojim periferni uređaj zahtije-va posluživanje) može pojaviti u bilo kojem trenutku tijekom izvođenja tekuće instrukcije programa. Postupak prekiđnog prijenosa provodi se obično u sljedećim glavnim koracima:

i) periferni uređaj ili ulazno-izlazni upravljač aktivira prekidnu liniju; ii) procesor završava tekuću instrukciju prije nego što će odgovoriti na zahtjev za prekid; iii) procesor neposredno nakon završetka tekuće instrukcije ispituje postoji li zahtjev

za prekid i, ako postoji, utvrđuje razinu prekida te provjerava je li prekid maskiran.

Page 410: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

408 13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

Pod„maskiranim prekidom" podrazumijevaju se okolnosti u kojima zahtjev za pre neće biti prihvaćen;

iv) ako procesor prihvaća prekid, on će signalom potvrde prekida obavijestiti ulazno-L zne upravljače, odnosno ulazno-izlazne uređaje o prihvaćanju 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 tekućeg (sadi ] prekinutog) programa. Minimalna informacija sastoji se od sadržaja statusnog gistra procesora (engl. status register, condition code register, P5W - processor ste word) i sadržaja programskog brojila koji sadržava povratnu adresu, odnosno adre instrukcije prekinutog programa koja će se prva izvesti nakon povratka iz prel< Sadržaj statusnog registra i programskog brojila naziva se minimalni kontekst (er minimal context) i obično se pohranjuje na sistemski ili upravljački stog; (Opaska: i procesori, radi bržeg odgovora na zahtjev za prekid, pohranjuju minimalni konte interno u tzv."registre u sjeni")

vi) procesor puni programsko brojilo sa sadržajem koji predstavlja adresu prve instr cije prekidnog programa tj. adresu prekidnog programa. Ovisno o arhitekturi pre sora i organizacije operacijskog sustava, može postojati jedan prekidni program; svaku vrstu prekida ili prekidni program za svaki periferni uređaj, odnosno ula2 izlazni upravljač. Ako postoji samo jedan prekidni program, onda procesor utvrditi koji je od uređaja zahtijevao prekid tako da prozove potencijalne uzročni prekida i na temelju njihova stanja utvrdi uzročnika prekida. Ako postoji veći prekidnih programa, onda obično procesor od uzročnika prekida dobiva dodatn«! informaciju na temelju koje utvrđuje tko je prouzrokovao prekid. Ta dodatna infof-j macija, ovisno o organizaciji prekidnog sustava, može biti popratna sa zahtjeve za prekid ili je procesor može dobiti izdavanjem zahtjeva upućenom uzročnitaij prekida;

vii) procesor započinje s fazom PRIBAVI i dohvaća instrukciju na koju pokazuje program-j sko brojilo, tj. prvu instrukciju prekidnog programa. Odmah je na početku prekidno§j programa obično potrebno pohraniti dodatnu informaciju o stanju registara proce-j sora, npr. sadržaj radnih registara podataka koji će se tijekom prekidnog programa! koristiti, a sadržavali su podatke potrebne prekinutom programu. Obično se i ti s*-| držaji registara pohranjuju na stog. U prekidnom je programu uključen i programs odsječak 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, sadržaji se radnih registara podataka treba-j ju obnoviti tako da se uzimaju sa stoga;

ix) procesor izvodi instrukciju za povratak iz prekida kojom obnavlja sadržaje statusno§| registra i programskog brojila, i to tako da sa sistemskog stoga uzima minimalni kon-j tekst i raspoređuje ga u statusni registar i programsko brojilo. Rezultat ovih aktivnosfij je da će se u sljedećoj fazi PRIBAVI dohvatiti instrukcija prekinutog programa, i upravo ona koja slijedi instrukciji koja je bila izvršena neposredno prije prihvaćanji| 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) podržani programski. Prekidni se program jo i | naziva i prekidna rutina ili program za rukovanje prekidom (engl. interrupt handler).

Page 411: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 409 I

SI. 13.10 Dijagram toka prekidnog U/l prijenosa podataka

Navedeni su koraci tako općeniti da zahtijevaju dodatna objašnjenja. Tako se, na primjer, u koraku iii) spominje razina prekida i maskiranje prekida. Suvremeni procesori imaju više razina prekida koje su u međusobnom hijerarhijskom odnosu: prekidni program niže razi-ne prioriteta može biti prekinut zahtjevom za prekid više razine prioriteta. Na taj se način omogućuje gniježđenje prekida. No ako se tijekom izvođenja prekidnog programa pojavi novi zahtjev za prekid niže ili iste razine prioriteta kao onaj koji se upravo poslužuje, taj novi zahtjev neće biti prihvaćen. Kažemo da je prekid ili zahtjev za prekid maskiran.

Page 412: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

410 13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

Primjer 13.4.

Procesor MC 68000 ima sedam razina prekida. Razina prekidnog zahtjeva određena je kombinacijom logičkih stanja na trima prekidnim linijama IPLO, IPL1 i IPL2. Kada su sve tri prekidne linije neaktivne, tj. u stanju logičke jedinice, onda nema zahtjeva za prekid. Zahtjev razine 1 (IPLO = 0, IPL1 = 1, IPL2 = 1) najniže je razine prioriteta, a zahtjev razine 7 (IPLO = 0, IPL 1 = 0, IPL2 = 0) naviše je razine prioriteta i predstavlja tzv. nemaskirajući pre-kid. Pod tim razumijevamo zahtjev za prekid od kojeg se procesor ne može obraniti tako da će on biti uvijek prihvaćen. Razina prekidnog zahtjeva (od 1 do 7) određuje se tako da aktivno stanje na prekidnoj liniji IPLO doprinosi ukupnoj razini prekida težinom 2C, aktivno stanje na prekidnoj liniji IPL1 težinom 21 i konačno, aktivno stanje na IPL2 dopri-nosi 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 određena je stanjem prekid ni h zastavica 10, 11 i 12 koje se nalaze u statusnom registru procesora. I ovdje zastavica 12 ima težinu 2:, II ima težinu 21 i 10 ima težinu 2°. Stanje tih zastavica određuje također i tekući prioritet prekida. Prekidi su onemogućeni (maskirani) za sve razine prekidnihzahtjeva koje su ma-nje ili jednake tekućem prioritetu koji je kodiran stanjem zastavica 10,11 i 12. Tablica 13.1. prikazuje stanje prekidnih zastavica i razine onemogućenih prekida.

Razine onemogućenih prekida Prekidne zastavice

Razine onemogućenih prekida 12 11 10 f

i 1 - 6 (001; 010; 011; 100; 101; 110) 1 1 1

1 - 6 (001; 010; 011; 100; 101; 110) 1 1 0

1-5 (001; 010; 011; 100; 101) 1 0 1

1-4 (001; 010; 011; 100) 1 0 0

1-3 (001; 010; 011) 0 1 1

1-2 (001; 010) 0 1 1

0

1 (001) 0 0 1

Sve su razine prekida omogućene 0 0 0

Tablica 13,1. Stanje prekidnih zastavica 12, II i 10 i razine onemogućenih prekida (MC 68000)

Slučaj kada je generiran zahtjev najviše razina prekida - prekid razine 7 (kada su prekid-ne linije ¥[0 = 0, lPU = 0, JPL2 = 0) i kada su prekidne zastavice 10 = 1,11 =1 i 12 = 1 pred-stavlja iznimku od pravila o uvjetima prihvaćanja prekida: iako je razina prekida jednaka prioritetu prekida kodiranom prekidnim zastavicama, zahtjev za prekid razine 7 bit će prihvaćen. Od zahtjeva razine 7 procesor se ne može zaštititi i on je nemaskirajući prekid. Prekidi razine 1 do 6 su maskirajući prekidi. Procesor ne dopušta gniježđenje prekida iste razine pa se automatski prekidne zastavice 10,11 i 12 u statusnom registru postavljaju u stanje koje odgovara razini prihvaćenog prekida. Na taj se način samo prekid više razine od trenutnog može ugnijezditi u prekid trenutne razine. Slika 13.11 prikazuje scenarij kada zahtjev za prekid razine 2 biva prihvaćen jer je njegova razina veća od razine kodi-rane zastavicama 10,11 12. Prekidni program 1 se izvodi i tijekom njegova izvođenja pre-

Page 413: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 411 I

kidne su zastavice postavljene tako da kodiraju razinu prihvaćenog prekida (10 = 0,11 = 1 i 12 = 0). Novi zahtjev za prekid koji je razine 3 (IPLO = 0, Wu - 0, ¥L2 = 1) bit će prihvaćen 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 prihvaćenog preki-da - razini 3. Tijekom izvođenja prekidnog programa 2 dogodio se zahtjev za prekid iste razine (razine 3), međutim, on neće biti prihvaćen.

prekinuti program

prekidni program 1

10=1 11 = 0 12 = 0

prekid razine 3: fPL0 = 0 IPU = 0 IPL2 - 1

prekidni program 2

nije prihvaćen zahtjev za

prekid

10 = 0 11 = 1 12 = 0

10=1 11 = 1 12 = 0

SI. 13.11 Primjer gniježđenja prekidnih programa. (Obratite pozornost da treći zahtjev za prekid neće biti prihvaćen jer je zahtjev razine jednake razini kodiranoj prekidnim zastavicama 10,11 i 12.)

Zašto se procesor štiti od prekida maskirajući ga? U mnogim primjenama procesor izvodi pojedine programske odsječke koji su kritični u smislu da se ne smiju ometati prekidom, odnosno biti prekinuti. To je, na primjer, slučaj kada se računalo koristi za upravljanje pro-izvodnim procesom u kojem se zahtijevaju točni vremenski odzivi - prekid takvog pro-gramskog odsječka i izvođenje nekog drugog prekidnog programa narušio bi željene vre-menske odnose i čak ugrozio osnovne funkcije procesa.

Korak vi) također zahtijeva objašnjenje kako procesor "zna" koji prekidni program mora izvršiti i njime poslužiti periferni uređaj koji je zahtijevao prekid. Dakle, kako procesor odre-đuje uzročnika prekida i time adresu prve instrukcije prekidnog programa?

Taj je problem još složeniji jer više potencijalnih uzročnika prekida može istodobno zahti-jevati posluživanje.

Jednostavnije organizacije prekida zasnivaju se na jednoj prekidnoj liniji (engl. single-line interrupt system) na koju su priključeni svi ulazno-izlazni upravljači - potencijalni uzročnici prekida (slika 13.9). Na kraju tekuće instrukcije procesor ispituje stanje na prekidnoj liniji IRQ (slika 13.9). Ako je IRQ = 0, to znači da je barem jedan od n > 1 potencijalnih uzročnika prekida generirao zahtjev za prekid. Procesor u odgovoru na zahtjev za prekid grana na unaprijed određenu adresu jedinstvenog prekidnog programa u kojem prvo proziva poten-cijalne uzročnike prekida i ispituje je li određeni potencijalni uzročnik zaista i generirao

Page 414: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

412 13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

zahtjev za prekid. Prozivanje (engl. polling) potencijalnih uzročnika temelji se na jedrr-značno im dodijeljenim adresama (bilo u memorijskom, bilo u izdvojenom U/l adresne-prostoru), a ispitivanjem statusnog registra ulazno-izlaznog upravljača utvrđuje seje li za-ista određeni upravljač generirao zahtjev za prekid. Ako je ispitani ulazno-izlazni upravljač zaista i uzročnik prekida, tada se u prekidnom programu grana na odgovarajući prograPV ski odsječak ili potprogram za prijenos podataka kojim se poslužuje uzročnik prekida. _ redoslijedu prozivanja potencijalnih uzročnika prekida krije se i prioritet pojedinih ulaznc-izlaznih upravljača - oni s većim prioritetom bit će prije prozvani i ako su zahtijevali prekri bit će i prije posluženi.

Primjer 13.5.

Prikažimo jednostavan prekidni sustav procesora koji ima dvije prekidne linije IRQ i NMi Prekidna linija IRQ namijenjena je tzv. sklopovskom prekidu, a prekidna linija NMI nema-skirajućem prekidu. Ove dvije vrste prekida u međusobnom su hijerarhijskom odnosu - u sklopovski se prekid može ugnijezditi nemaskirajući prekid koji je veće razine priori-teta. Pretpostavimo da je veći broj uiazno-izlaznih upravljača - potencijalnih uzročnika prekida priključen na prekidne linije IRQ i NMI Pretpostavimo, također, da postoji samo po jedan prekidni program za sklopovski prekid, odnosno nemaskirajući prekid.

Opišimo, ukratko, prvo sklopovski prekid koji je maskirajući. Jedan ili veći broj ulazno-izlazni h upravljača aktiviranjem prekidne linije IRQ (IRQ 0) generira zahtjev za prekid. Neposredno nakon završetka tekuće instrukcije procesor ispituje stanje IRQ linije i ako je ona aktivna (IRQ = 0), procesor provjerava je li prekidna zastavica I u statusnom regi-stru procesora postavljena (1 = 1). Ako je ona postavljena, zahtjev za prekid je maskiran i procesor će ga zanemariti te nastaviti izvođenje tekućeg programa. Ako je prekidna zastavica obrisana (I = 0), zahtjev za prekid bit će prihvaćen i procesor signalom potvr-de prekida (INTACK 0) obavještava da je zahtjev za prekid prihvaćen. U tom slučaju procesor obavlja kućanske poslove - pohranjuje (minimalni) kontekst na stog. (Opaska: ako je riječ o procesoru akumulatorsko orijentirane arhitekture, obično se uz minimalni kontekst pohranjuju i registri podataka - akumulatori.) Pored toga, postavlja prekidnu zastavicu I u 1 te se na taj način štiti od gniježđenja daljnjih sklopovskih prekida. U okviru kućanskih poslova procesor mora dohvatiti adresu prve instrukcije prekidnog programa. Ona se nalazi na za to unaprijed određenim memorijskim lokacijama. Te su memorijske lokacije rezervirane za tu namjenu i obično se nalaze ili na početku, ili na kraju adresirlji-vog 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 značajniji bajt adrese prve instrukcije prekidnog programa, a na FFF9 manje značajan bajt 16-bitne adrese. Dohvaćeni sadržaji tih memo-rijskih lokacija smještaju se u programsko brojilo i u sljedećoj će se fazi PRIBAVI dohvatiti prva instrukcija prekidnog programa. Budući da je jedan prekidni program namijenjen sklopovskom prekidu, on mora sadržavati programski odsječak kojim proziva potencijal-ne uzročnike prekida i identificira uzročnika. Važno je naglasiti da kućanski poslovi tako-đer troše vrijeme - za pohranu konteksta i dohvat početne adrese prekidnog programa potrebno je za jednostavni 8-bitni procesor od 12 do 14 perioda signala vremenskog vođenja.

Tijek događaja za nemaskirajući prekid sličan je onom za sklopovski prekid. U slučaju nemaskirajućeg prekida ne provjerava se stanje prekidne zastavice I u statusnom registru procesora, već se prekid prihvaća, generira se signal potvrde prekida (NMIACK->0) te se

Page 415: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

b. n l b A K I L - v j n A t J A K A L U N A L A

kućanskim poslovima pohranjuje kontekst na stog i automatski se postavlja prekidna za-stavica I u 1. Na taj se način procesor štiti od prekida vrste IRQ. Nadalje, procesor dohvaća sadržaje memorijskih lokacija čije su adrese FFFC i FFFD na kojima se nalazi adresa prve instrukcije nemaskirajućeg prekidnog programa. Slično kao i kod prekidnog programa za sklopovski prekid, nemaskirajući prekidni program sadržava programski odsječak ko-jim proziva ulazno-izlazne upravljače priključene na NMI prekidnu liniju.

Pretpostavimo da je početna adresa sklopovskog prekidnog programa 400A, a početna adresa nemaskirajućeg prekidnog programa 600C, tada u fazi inicijalizacije računarskog sustava moramo pripremiti sadržaje sljedećih memorijskih lokacija: (FFF8) = 40 i (FFF9) = OA te (FFFC) = 60 i (FFFD) = 0C. Obično su adrese početne adrese prekidnih programa na spomenutim memorijskim lokacijama pohranjene u ispisnim memorijama ROM ili PROM (poglavlje 8.) pa sadržaji ostaju sačuvani i nakon prekida napajanja.

Organizacija prekidne strukture može se temeljiti i na većem broju prekidnih linija, i to tako da svaki potencijalni uzročnik 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 većim brojem linija za zahtijevanje prekida i potvrde prekida

Prekidne linije mogu, u tom slučaju, imati i različite prioritetne razine, na primjer IRQn-1 ima najveći prioritet, dok IRQ0 ima najmanji prioritet. Ujedno, zahvaljujući privatnim pre-kidnim linijama procesor izravno zna tko je uzročnik prekida - nije potrebno prozivanje ulazno-izlaznih upravljača. Ova shema, međutim, ima jedan nedostatak - broj priključenih ulazno-izlaznih upravljača ograničen je brojem raspoloživih parova signalnih linija IRQ i INTACK. U praksi je vrlo čest slučaj daje broj ulazno-izlaznih upravljača priključenih na pre-kidne linije puno veći od broja raspoloživih parova IRQ - INTACK. I u ovoj prekidnoj shemi, kao i u onoj s jednom prekidnom linijom, procesor u okviru kućanskih poslova mora do-hvatiti iz memorije početnu adresu prekidnog programa.

Posebna prilagodljiva i djelotvorna prekidna shema jest vektorski prekid (engl. vecto-red interrupt) u kojoj se uzročnik prekida izravno identificira jednoznačnim kodom koji ujedno služi za brzo određivanje početne adrese prekidnog programa. Vrlo se često u literaturi početna adresa prekidnog programa naziva i prekidni vektor (engl. interrupt vec-tor). Svakom od ulazno-izlaznih upravljača, priključenih na prekidnu liniju, jednoznač-no je pridružen n-bitni kod koji ima ulogu poput jedinstvenog matičnog broja građana. Pretpostavimo da je to 8-bitni kod, nazovimo ga vektorski broj, tako da njime možemo jednoznačno označiti 28 = 256 ulazno-izlaznih upravljača. Slika 13.13 prikazuje shemu

Page 416: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

414 13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

vektorskog prekidnog sustava koji je prilagođen organizaciji prekidnog sustava s većkr brojem prekidnih linija i linija potvrde prekida.

SI. 13.13 Vektorski prekidni sustav s većim brojem prekidnih linija i linija potvrde prekida

Svakom od ulazno-izlaznih upravljača, odnosno perifernih uređaja, dodijeljen je jedno-značni vektorski broj koji će ulazno-izlazni upravljač postaviti na sabirnicu podataka nakoe što primi signal potvrde prekida. Procesor će tijekom kućanskih poslova unijeti sa sabirni-ce podataka vektorski broj i interno ga pohraniti. Nakon što procesor pohrani minimalni kontekst na stog, procesor će interno pohranjeni vektorski broj upotrijebiti za generiranje početne adrese memorijskih lokacija na kojima je pohranjen prekidni vektor tj. adresa pr\€ instrukcije prekidnog programa. Obično je za pohranu prekidnih vektora rezerviran cfic memorijskog prostora s najnižim adresama započevši od adrese 00000000 (heksadekao-no) tako da se vrlo jednostavno određuje, ovisno о vektorskom broju, adresa prekidnog vektora. Na primjer, ako je programsko brojilo duljine 4 bajta, onda se adresa memon-ske lokacije na kojoj se nalazi prekidni vektor dobiva kao 4 x v, gdje je v vektorski broji Podsjetimo se da množenje sa 4 odgovara brzoj operaciji posmaka ulijevo za dva mjesta.

i Primjer 13.6. i

Pretpostavimo da je ulazno-izlaznom upravljaču n - 1 (slika 13.13) dodijeljen 8-bitni vektorski broj v = 00001010 (dekadno 10), a da njegov prekidni program započinje 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 sljedeći način:

b7 b0 ; • 8-bitni vektorski broj: 0 0 0 0 1 0 1 0

Page 417: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 415 I

b9

bo • 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 pozicija-

ma b10 - b31 pridruže 0: b 3 i b m b 9 b 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 1 0 1 0 0 0

Početna adresa memorijskih lokacija gdje se nalazi prekidni vektor je 00000028 (heksa-dekadno). 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.

Opišimo sažeto korake tijekom vektorskog prekida koje možemo podijeliti na one koji su sklopovski i one koji su podržani programski.

Sklopovski koraci: i) ulazno-izlazni upravljač aktivira prekidnu liniju;

ii) procesor nakon završetka tekuće instrukcije, ako prekid nije maskiran, generira si-gnal potvrde prekida;

iii) kada ulazno-izlazni upravljač, koji je uzročnik 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 određuje početnu adresu memorijskih lokacija na kojima se nalazi pohranjen prekidni vektor, tj. početna adresa prekidnog progra-ma. Programsko brojilo puni se prekidnim vektorom i ono pokazuje na prvu instruk-ciju prekidnog programa.

Programski koraci: i) prekidnim se programom prvo pohranjuju sadržaji registara koje će prekidni pro-

gram koristiti. Na taj je način omogućena obnova njihovih sadržaja neposredno prije vraćanja iz prekida;

ii) ako je više perifernih uređaja priključeno na jedan ulazno-izlazni upravljač, potrebno je ispitati sadržaje pojedinih statusnih registara koji odgovaraju svakom od uređaja da bi se odredio odgovarajući uslužni (pot)program;

iii) obavlja se prijenos podataka; iv) obnavljaju se sadržaji registara koji su bili pohranjeni u koraku i); v) izvodi se instrukcija povratka iz prekida;

Već smo spomenuli da u praksi obično broj ulazno-izlaznih upravljača premašuje broj raspoložih parova "privatnih" linija IRQ - INTACK. U tom se slučaju koristi shema ulančava-nja, slična onoj za sabirničku arbitražu (poglavlje 12.), u kojoj se ulazno-izlazni upravljači ulančavaju signalnom linijom potvrde prekida INTACK (slika 13.14). U takvoj organizaciji ulazno-izlazni upravljač koji je najbliži procesoru ima najveći prioritet jer prvi prima signal INTACK =0 i ako je zahtijevao prekid ne prosljeđuje ga dalje drugim upravljačima u lancu.

Page 418: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

416 13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

Ulazno-izlazni upravljač koji je generirao zahtjev za prekid i koji je prvi u lancu primio si-gnal potvrde prekida postavlja svoj vektorski broj na sabirnicu podataka. Ovaj"sklopovskT način prozivanja je brži negoli je to programsko pozivanje ulazno-izlaznih upravljača. No programsko prozivanje omogućuje jednostavniju promjenu prioriteta upravljača - samo promjenom redoslijeda prozivanja u prekidnom programu.

SI. 13.14 Organizacija vektorskog prekidnog sustava s jednom prekidnom linijom i ulančavanjem

Vektorski prekidni sustav može imati organizaciju sličnu onoj sabirničkoj arbitraži (poglav-lje 12), stoga se koristi sustav s većim brojem prekidnih linija i linija potvrde prekida s tim da su ulazno-izlazni upravljači ulančani na svakoj od linija potvrde prekida. Slika 13.15 pri-kazuje takav vektorski prekidni sustav koji ima tri prekidne linije (IRQ0 - IRQ2) koje su orga-nizirane tako da IRQ2 ima najveći prioritet te tri linije potvrde prekida (INTACKO - INTACK2 kojima su ulazno-izlazni upravljači ulančani.

INTACK2

Si. 13.15 Prekidni sustav s tri linije za zahtijevanje prekida i potvrde prekida s ulančavanjem na svakoj od razina

Page 419: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 417 I

Primjer 13.7.

Pretpostavimo da su u vektorskom prekidnom sustavu prikazanom na slici 13.15 isto-dobno generirali zahtjev za prekid ulazno-izlazni upravljač 1 koji je priključen na pre-kidnu liniju IRQO te ulazno-izlazni upravljači /r+/+1 i k+l+2 priključeni na IRQ2. U tom će slučaju 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 za-htjev za prekid niže razine prioriteta IRQO te aktivirati signal potvrde prekida INTACK2. Ulazno-izlazni upravljač /c+/+1 prvi će primiti taj signal. Budući daje on jedan od uzročni-ka prekida, signal potvrde prekida neće proslijediti dalje u lancu. Upravljački sklop k+l+1 bit će poslužen u prekidu.

13.4. ANALIZA SLUČAJA-VEKTORSKI PREKID PROCESORA MC 68000 Za računarske sustave na bazi procesora MC 680x0, tvrtka Motorola koristi pojam iznimke (engl. exception) kojim opisuju posebne okolnosti koje mogu nastupiti u računarskom su-stavu i koje imaju za posljedicu prekid normalnog izvođenja programa i prijenos upravlja-nja 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 doga-đajima izvan procesora jesu:

i) sabirnička pogreška (engl. bus error), ii) reset (ponovno upuštanje u rad), iii) prekid.

Iznimke kojima su izvori stanja procesora jesu: i) ilegalne instrukcije - instrukcije koje imaju operacijski kod koji nije definiran za pro-

cesor MC 680x0, ii) neugrađene instrukcije - instrukcije kojima operacijski kod započinje 1010 ili 1111, iii) pokušaj izvođenja privilegirane instrukcije u korisničkom načinu rada, iv) praćenje - zastavica T (Trace) postavljena u 1, v) adresna pogreška - pokušaj pristupa riječi na neparnoj adresi, vi) dijeljenje nulom, vii) instrukcije TRAP, TRAPV,CHK.

Zajedničko svim vrstama iznimaka je to da se one obrađuju u nadglednom načinu rada procesora.

Prekid za procesor MC 680x0 je vanjski generiran zahtjev za obradu iznimke. U Primjeru 13.4. prikazali smo na koji način ulazno-izlazni upravljači, odnosno periferni uređaji generi-raju zahtjev za prekid i pod kojim se uvjetima prihvaća prekid.

Ako je razina zahtjeva za prekid veća od razine postavljene prekidnim zastavicama 10,11 i 12 u statusnom registru procesora, nakon završetka tekuće instrukcije prekid će biti obrađen u sljedećim koracima:

i) sadržaj statusnog registra pohranjuje se interno u procesoru; ii) zastavica S u statusnom registru postavlja se u 1 - procesor prelazi u nadgledninačin

rada (procesor obrađuje iznimku u nadglednom načinu rada!);

Page 420: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

418 13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

iii) zastavica praćenja T u statusnom registru se briše (T —• 0) i onemogućuje se funkapd praćenja, odnosno odlazak u iznimku koja je prilagođena izvođenju programa mi strukciju po instrukciju;

iv) prekidne zastavice IO, 11 i 12 poprimaju vrijednost koja odgovara upravo razini pri-j hvaćenog prekida određenoj stanjima prekidnih linija IPLO, IPL1 i IPL2. Na taj se naan procesor štiti od gniježđenja prekida niže ili jednake razine onom koji je prihvaćen;

v) procesor izvodi sabirnički ciklus potvrde prekida.Tijekom sabirničkog ciklusa potvrde prekida,procesorpostavljanaadresnelinijeA1-A3razinuprihvaćenogprekida.Adresne linije A4 - A23 poprimaju vrijednost 1. Na taj se način ulazno-izlazni upravljači obavje-i štavaju o tome koja je razina prekida prihvaćena. Procesor postavlja izlazne linije funfcH cijskog koda FCO —• 1, FC1 —• 11FC2 1. Njihovo se stanje može upotrijebiti za sinteza; signala potvrde prekida: FCO A FC1 A FC2, gdje je A , podsjetimo se, logički operator!.; Ulazno-izlazni upravljač, koji je generirao zahtjev za prekid prihvaćene razine i pr im» signal potvrde prekida, odgovara procesoru tako da smješta 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 obavještava procesor da je vektorski broj postavljen na sabirnicu podataka (u skladu s asinkronim protokolom na sabirnici). Procesor interno pohranjuje pribavljeni vektorski broj;

vi) sadržaj programskog brojila PC (4 bajta) smješta se u nadgledni stog, a sadržaj nad-gled nog kazalo stoga SSP umanjuje se za četiri;

vii) sadržaj interno pohranjenog statusnog registra SR (2 bajta) (korak i)) smješta se • nadgledni stog, pri čemu se sadržaj nadglednog kazala stoga umanjuje za dva (kora-ci vi) i vii) predstavljaju aktivnosti pohranjivanja minimalnog konteksta);

vi i i) na temelju vektorskog broja i tablice vektora iznimaka procesor određuje novi sacfc-žaj programskog brojila PC - programsko se brojilo PC puni sa četiri bajta pribavlje-nih iz odgovarajućih 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 sabirnički ciklus potvrde prekida (koraci i) - v)), i to do početka pohranjivanja minimalnog konteksta na stog.

Korak viii) zahtijeva dodatna objašnjenja. Vektori iznimaka, što znači i prekidni vektoa pohranjeni su u dijelu radne memorije računala koji se naziva tablica vektora iznimaka. Tablica sadržava 256 vektora iznimaka koji su označeni brojevima od 0 do 255 i smještena je u adresnom prostoru od 000000 do 0003FF.To znači da tablica zauzima prva 1024 bajtat odnosno 512 16-bitnih riječi memorije, koji predstavljaju tzv. nultu stranicu memorije. Svi se vektori iznimaka, osim onog koji odgovara vektorskom broju nula 0, nalaze u memo-rijskom prostoru koji se naziva nadgledna memorija podataka (oznaka ND; tablica 13.2.) i koji je određen stanjem linija funkcijskog koda FCO - FC2: FCO = 1, FC1 = 0 i FC2 = 1. Vektor iznimke koji odgovara vektorskom broju 0 jest onaj namijenjen sklopovskom rešetu (engL hardware reset) tj. sklopovskom upućivanju u rad i on se nalazi u memorijskom prostoru koji se naziva nadgledna programska memorija (oznaka NP; tablica 13.2.) (određena sta-njem linija funkcijskog koda FCO = 0, FC1 = 1 i FC2 = 1). Svi se vektori iznimaka, osim onog koji odgovara sklopovskom rešetu, sastoje od dviju riječi, odnosno 4 bajta. Za razliku od ostalih vektora iznimaka, vektor 0 ima, osim nove - početne vrijednosti programskog bro-jila (PC), dvije dodatne riječi koje određuju početnu vrijednost nadglednog kazala stoga (SSP) (tablica 13.2).

Page 421: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 419 I

završetak tekuće sabirnički ciklus pohranjivanje reg.

SI. 13.16 Vremenski dijagram stanja na sabirnicama tijekom sabirničkog ciklusa potvrde prekida (koraci i) - v)).

Slika 13.17 prikazuje format vektora iznimke, odnosno prekidnog vektora. Riječ 0 (duljine dva bajta) koja je smještena tako da su dva najmanje značajna bita njezine adrese A0 = 0 i A ^ 0 predstavlja 16 značajnijih bitova adrese programa za obradu iznimke, odnosno prekidnog programa. Riječ 1 (smještena tako da je A0 = 0 i A1 = 1) predstavlja 16 manje značajnih bitova adrese.

Page 422: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

420 13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

Vektorski broj

Adresa vektora iznimke (heksadekadno)

Vrsta memorijskog

prostora Namjena / iznimka ^

0 000 NP RESET: početna vrijednost SSP - 004 NP RESET: početna vrijednost PC

2 008 ND greška na sabirnici (Bus Error)

3 OOC ND adresna greška (Address Error)

4 010 ND ilegalna instrukcija

5 014 ND dijeljenje s nulom

6 018 ND instrukcija CHK

7 01C ND instrukcija TRAPV

8 020 ND povreda privilegiranosti

9 024 ND praćenje (Trače)

10 028 ND neugrađena instrukcija 1010 (Line A Emulator)

11 02C ND neugrađena instrukcija 1111 (Line F Emulator)

12-14

korisničkim vanjskim sklopovima nije dopuštena uporaba vektorskog broja

12-23

- ned odijeljen i prostor - rezervirano

15 03C ND neinicijalizirani prekidni vektor

16-23 04C nedodijeljeni prostor - rezervirano

05 F nedodijeljeni prostor - rezervirano

24 060 ND izjalovljeni prekid

25 064 ND prekidni autovektor -razinal

26 068 ND prekidni autovektor - razina 2

27 06C ND prekidni autovektor - razina 3

28 070 ND prekidni autovektor - razina 4

29 074 ND prekidni autovektor - razina 5

30 078 ND prekidni autovektor - razina 6

31 07C ND prekidni autovektor - razina 7

32-47 080 ND instrukcija TRAP n

0BF - -

48-63 OCO - nedodijeljeni prostor - rezervirano

0FF -

64-255 100 ND korisnički prekidni vektori

3FF korisnički prekidni vektori

NP - nadgledna programska memorija ND - nadgledna memorija podataka

Tablica 13.2. Tablica vektora iznimaka

Page 423: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 421 I

b!5 bO

riječ 0

riječ 1

značajnijih 16 bitova vektora iznimke

manje značajnih 16 bitova vektora iznimke

A0=0 A1 =0

A0=0 A1=1

SI. 13.17 Format vektora iznimke

Vektor iznimke za reset, kao što smo već spomenuli sastoji se od početne vrijednosti nad-glednog kazala stoga SP i početne vrijednosti programskog brojila PC, nalazi se pohra-njen u tablici iznimaka od adrese 000000 do 000007. Tijekom kućanskih poslova vezanih za iznimku reset prvo se puni 32-bitno nadgledno kazalo stoga SSP s vektorom iz memo-rijskih lokacija s adresa 000000, 000001, 000002 i 000003, a zatim programsko brojilo PC s memorijskih lokacija 000004,000005,000006 i 000007 (sve heksadekadno). Ovim poto-njim određena je adresa prve instrukcije programa kojim se poslužuje iznimka reset (pro-gramska rutina reset).

(periferni uređaj 0)

vektorski broj 64

(periferni uređaj 1)

vektorski broj 65

(periferni uređaj 191)

vektorski broj 255

Si. 13.18 Prekidno sklopovsko sučelje

Prekidni su vektori pohranjeni u tablici iznimaka od adrese 000100 do 0003FF (heksade-kadno). Njima odgovaraju vektorski brojevi od 64 do 255 (dekadno).To znači da procesor MC 68000 dopušta (255 - 64 + 1) = 192 vektorska broja koje mogu generirati ulazno-izla-zni upravljači, odnosno periferni uređaji. Slika 13.18 prikazuje prekidno sklopovsko sučelje

Page 424: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

422 13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

koje podržava 192 sklopovska prekida. Kako procesor oblikuje 24-bitnu adresu na temeft« koje dohvaća iz tablice vektora iznimaka prekidni vektor, odnosno adresu prve instruke-je prekidnog programa? Pretpostavimo daje ulazno-izlazni upravljač ili periferni ureda • zahtijevao prekid (INTO 0) i da je upravo njemu potvrđen zahtjev za prekid. To znači cka će tijekom sabirničkog ciklusa potvrde prekida on postaviti svoj vektorski broj, tj. 64 (ae-kadno) na manje značajne linije DO - D7 16-bitne sabirnice podataka DO - Dl 5. Procesor će pomoću tog vektorskog broja oblikovati 24-bitnu adresu koja ga upućuje u tablicu izn-imaka iz koje će dohvatiti prekidni vektor - adresu prve instrukcije prekidnog programa za ulazno-izlazni upravljač, odnosno periferni uređaj 0, i to na sljedeći način (slika 13.19

i) vektorski se broj množi sa četiri što znači da se posmiče za dva mjesta ulijevo; ii) svi značajniji bitovi adrese (od A10 do A23) poprimaju vrijednost 0.

vektorski broj 64 posmaknut ulijevo za 2 mjesta 0 1 0 0 0 0 0 0

vektorski broj 64 posmaknut ulijevo za 2 mjesta

1 r T f 1 r 1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

A23 . . . A2 A1

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 poslužuje periferni uređaj 0 nalazi na adresi 004600 (heksade-kadno), tada su sadržaji memorijskih lokacija s adresama 000100,000101,000102 i 000103 u tablici vektora iznimaka sljedeći:

(000100) = 00 (000101) = 00 (000102) = 46 (000103) = 00.

Primjer 13.8.

Pretpostavimo da periferni uređaj 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 poda-taka iz memorijskog prostora koji se sastoji od 512 bajtova, i to tako da svaki put kada je uređaj 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 počet-noj adresi 3000 (heksadekadno). Prekidnim programom procesor šalje 8-bitni podatak u registar podataka ulazno-izlaznog upravljača. Adresa izlaznog registra podataka je 8000 (heksadekadno). Prikažimo kako izgleda glavni (prekinuti) program i prekidni program. Glavni program neka ima početnu adresu 4000 (heksadekadno), a prekidni program neka započinje na adresi 4600 (heksadekadno).

Glavni program izgleda ovako: GL_PROG EQU $4000 ; početna adresa glavnog programa INT_PROG EQU $4 600 ; početna adresa prekidnog programa INT_MASK EQU $2000 ; nadgledni način/prekidi razine 1

;-omogućeni

Page 425: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 423 I

OUTREG EQU $8000 DATA EQU $3000

ORG DATA BUFFER DS.B 512

PONTER DS.L 1 ORG GL_PROG MOVE.L #BUFFER, MOVE #INT MASK,

; adresa izlaznog registra podataka

; blok podataka veličine 512 bajtova ; nalazi se na adresi 3000 ; kazaljka na blok podataka BUFFER

; početak glavnog programa POINTER ; inicijalizirana vrijednost kazaljke SR ; S = 1, omogući 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

; početak prekidnog programa ; pohrani sadržaj registra A0 na stog ; u registar A0 smjesti kazaljku na blok ; podataka ; 8-bitni podatak iz bloka pošalji u ; izlazni registar ; pohrani tekuću vrijednost kazaljke ; obnovi sadržaj registra A0 ; vrati se iz iznimke (prekida)

Ako periferni uređaj 0 ima vektorski broj 64 (dekadno), tada je u nultoj stranici memorije na memorijskim lokacijama 000100,000101,000102 i 000103 potrebno prethodno upi-sati adresu prekidnog programa: (000100) = 00, (000101) = 00, (000102) = 46 i (000103) = 00.

MOVE, MOVE, RTE

AO, POINTER (SP)+, A0

Opišimo prethodna dva programa. Prve dvije EQU pseudo naredbe u zbirnom jeziku defi-niraju početne adrese glavnog programa (4000) i prekidnog programa (4600). Treća EQU pseudo naredba određuje vrijednost 16-bitne prekidne maske (2000) koja će se upisati u statusni registar procesora SR. Četvrtom EQU pseudo naredbom definirana je adresa izla-znog registra OUTREG. Petom EQU pseudo naredbom odredili smo početnu 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 ri-ječ za pohranu kazaljke POINTER koja pokazuje na tekući bajt bloka podataka BUFFER. Instrukcijom MOVE. L #BUFFER, POINTER, u glavnom smo programu, definirali počet-nu 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 omogućili pre-kid razine 1, ali je i dalje procesor ostao u nadglednom načinu rada (zastavica S =1). Slika 13.20 prikazuje sadržaj 16-bitnog statusnog registra SR nakon upisa 2000 (heksadekadno).

Page 426: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

424 13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

Nakon instrukcije MOVE #INT_MASK, SR slijede instrukcije glavnog programa.Tijekc njihova se izvođenja može dogoditi prekid. Glavi program može završiti 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 izvođenje»] instrukcija (procesor ostaje u tom stanju dok se ne dogodi prekid određene razine ili reseOJ

nadgledni bajt statusnog registra korisnički bajt statusnog registra

bi 5 b8 b7 bO

0 0 1 0 0 0 0 olo 0 0 0 0 0 0 0 zastavice: J «2 'i 'o X N Z V C

SI. 13.20 Sadržaj SR registra: zastavica S =1, prekidne zastavice IO, 11 i 12 su 0 (procesor je u nadglednom načinu rada, omogućen je prekid razine 1)

Prekidni program započinje instrukcijom MOVE .LAO, - (S P) kojom se 32-bitni sadržaj adresnog registra AO pohranjuje na stog. Na taj se način čuva sadržaj registra AO koji je bio tijekom izvođenja tekućeg (prekinutog) programa kako bi se neposredno prije povratka iz prekida ponovo obnovio. To je potrebno jer će prekidni program koristiti registar AO i naravno, "porušiti" njegov "stari" sadržaj. Instrukcijom MOVE. L POINTER, AO trenut-na se vrijednost 32-bitne kazaljke (POINTER) smješta 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, budući da instrukcija koristi indirektni po-sti nkrementni način adresiranja, sadržaj se adresnog registra AO automatski povećava za jedan. Ova instrukcija ima funkciju izlazne (output) instrukcije. Instrukcijom MOVE. L AC, POINTER priprema se obnovljena vrijednost kazaljke za sljedeći prijenos podatka.

Sadržaj 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) vraća upravljanje na prekinuti program tako da se uzima minimalni kontekst (16-bitni sadržaj registra SR, 32- bitni sadržaj registra PC) s vrha sistemskog (nadglednogj stoga i smješta u SR, odnosno PC. (Opaska: u ovom jednostavnom primjeru pretpostav® smo da periferni uređaj 0 ima programirljivo sklopovsko brojilo koje "broji" generirane za-htjeve za prekid tako da se ne prekorači broj od 512 prenesenih podataka.)

Spomenuli smo daje prekid samo jedna od brojnih iznimaka koje se mogu dogoditi u ra-čunarskom sustavu utemeljenom na procesoru MC 680x0. Svi programi za obradu iznimke imaju općenito sljedeći oblik: IZNIMKA MOVEM.L Dp - Dq / Ar-As, - (SP)

instrukcije za obradu iznimke

MOVEM.L (SP)+, Dp - Dq / Ar-As RTE

Page 427: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 425 I

Instrukcijom MOVEM (Move Multiple) premještaju se sadržaji 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"sadržaji pohranjuju na nadgledni stog. Naravno, instrukcijom MOVEM. L D0-D7/A0-A6, -(SP) možemosve "korisničke" 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 sadržaji navedenih registara.

13.5. IZRAVNI PRISTUP MEMORIJI DMA - DIRECT MEMORY ACCESS Programirani U/l prijenos i prekidni ulazno-izlazni prijenos podataka imaju jednu zajednič-ku značajku - izmjena podataka s vanjskim svijetom obavlja se programom koji izvršava procesor. Procesor izravno sudjeluje u U/l prijenosu podataka između vanjskog svijeta i memorije, štoviše put podataka prolazi kroz procesor. Pritom je brzina U/l prijenosa ogra-ničena brzinom kojom procesor obavlja "kućanske poslove" i ispituje stanje i poslužuje pe-riferne uređaje izvođenjem instrukcija pri svakom prijenosu podataka, lako prekidni prije-nos podataka oslobađa procesor od čekanja da ulazno-izlazni upravljač, odnosno periferni uređaj postane spreman za prijem ili slanje podataka, analize pokazuju da se za prijenos podataka od ili prema jedinici diska troši oko 25% ukupnog procesorskog vremena. Riječ je o prijenosima blokova podataka veličine od nekoliko stotina bajtova pa sve do nekoliko tisuća bajtova.

Ulazno-izlazni prijenos podataka izravnim pristupom memoriji DMA (Direct Memory Access) ostvaruje se između ulazno-izlaznog upravljača, odnosno perifernog uređaja i memorije bez izravnog sudjelovanja procesora. DMA omogućuje najbrži prijenos podataka između vanjskog svijeta i memorije računarskog sustava, i to tako da ne zahtijeva izravno sudje-lovanje procesora. Budući da se DMA ostvaruje sklopovski bez programskog upravljanja, granice brzine prijenosa podataka postavljene su sklopovskim značajkama sastavnicama U/l puta podataka - brzina perifernog uređaja, odnosno ulazno-izlaznog upravljača, pro-pusnost sabirnice i brzina memorije (vrijeme pristupa). DMA zahtijeva relativno veliku slo-ženost sklopovlja koje je objedinjeno u DMA upravljaču (engl. DMA controller) koji se vrlo često zbog svoje složenosti 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 po-

dataka/riječi (veličina bloka podataka) koje se trebaju prenijeti; • registar IOA sadržava adresu područja u memoriji koje će se koristiti tijekom DMA

prijenosa; • registar IOD je ulazno-izlazni registar podataka, često umjesto jednog takvog regi-

stra DMA upravljač može imati spremnik koji se sastoji od većeg broja registara; • statusno-upravljački registar SC koji se koristi za izmjenu upravljačkih informacija i

informacija o stanju DMA prijenosa. U registru SC pohranjuje se upravljačka riječ koja određuje smjer toka podataka tijekom DMA prijenosa te način DMA prijenosa.

Page 428: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

426 13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

TransferAck

SI. 13.21 Sklopovska konfiguracija za DMA prijenos podataka

DMA prijenos obavlja se na temelju sljedeća tri glavna koraka: i) inicijalizacije DMA upravljača,

ii) DMA prijenosa podataka, iii) završetka DMA prijenosa.

i) Tijekom inicijalizacije DMA upravljača procesor izvršava U/l instrukcije kojima definira sadržaje registara SC, DC i IOA. U statusno-upravljačkom registru SC upisuje upravljačku riječ kojom određuje smjer podataka (operaciju čitanja ili pisanja) te način DMA prijenosa (prijenos krađom ciklusa ili prijenos u snopu različitih veličina (engl. one continous burst severalshorter bursts). U registru DC upisuje broj riječi koji će se DMA prijenosom prenijeti, a u registar IOA upisuje početnu memorijsku adresu područja koje će biti izvor ili ponor podataka. Kada DMA upravljač podržava veći broj periferijskih uređaja, procesor treba u postupku inicijalizacije definirati DMA upravljaču i adresu perifernog uređaja koji će sudje-lovati u DMA prijenosu.

Faza inicijalizacije provodi se programiranim U/l prijenosom pri čemu se registri DMA upravljača SC, DC i IOA promatraju kao dio memorijskog ili izdvojenog U/l adresnog pro-stora. Nakon inicijalizacije DMA upravljača, procesor nastavlja s izvođenjem tekućeg pro-grama budući da je zadatak U/l prijenosa delegirao DMA upravljaču.

Page 429: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 427 I

ii) Kada je DMA upravljač spreman za prijem ili slanje podataka, odnosno kada periferni uređaj priključen na DMA upravljač aktivira signalnu liniju TransferReq (slika 13.21), DMA upravljač aktivira signalnu liniju DMAReq i upućuje zahtjev procesoru. (Opaska: u računar-skim sustavima s više (potencijalno) vodećih modula zahtjev za sabirnicom upućuje se sa-birničkom arbitru.) Tim zahtjevom DMA upravljač traži upravljanje sabirnicom, odnosno pokazuje želju da postane vodeći modul i preuzme vlasništvo nad sabirnicom sustava. Procesor čeka sljedeću ispitnu točku u kojoj može prepustiti sabirnicu DMA upravljaču. Za razliku od prekida gdje postoji samo jedna ispitna točka u kojoj je procesor provjera-vao postoji li zahtjev za prekid (točka nakon završetka tekuće instrukcije), u slučaju DMA postoji više ispitnih točaka tijekom tekuće instrukcije u kojima procesor može osloboditi sabirnicu sustava. To su točke tijekom instrukcijskog ciklusa neposredno prije nego pro-cesor treba ponovo sabirnicu (slika 13.22). U svakoj od tih točaka može se prekinuti (ili suspendirati) izvođenje tekuće instrukcije i dodijeliti sabirnica DMA upravljaču. Obratite pozornost da to nije prekid - procesor ne pohranjuje (minimalni) kontekst na stog niti gra-na na obradu prekida ili iznimke. Procesor u ispitnoj točki oslobađa sabirnicu i aktiviranjem signala DMAAck obavještava o tome DMA upravljač.

- perioda procesorskog signala vremenskog vođenja

4 -f 4 <- •

pribavljanje instrukcije

dekodiranje instrukcije

dohvat operanda

izvršavanje instrukcija

pohrana rezultata

9 f f » f ' ' ' ispitne L -

točke

0

ispitna točka za prekid-

SI. 13.22 Ispitne točke za DMA tijekom instrukcijskog ciklusa

DMA upravljač, preuzevši upravljanje sabirnicom, prenosi podatke izravno memoriji ili od memorije. Nakon svakog prijenosa riječi obnavljaju se sadržaji registra I OA i DC tako da se sadržaj registra IOA povećava za jedan i sadržava adresu sljedeće memorijske lokacije na koju (ili iz koje) će se sljedeći podatak prenijeti, a sadržaj registra DC umanjuje se za jedan. Ako nisu prenesene sve riječi, tj. ako sadržaj registra DC nije jednak 0, ali periferni uređaj nije spreman za slanje ili prijam podataka, DMA upravljač oslobađa sabirnicu i vraća je procesoru deaktiviranjem signala DMAReq. Procesor odgovara deaktiviranjem signala DMAAck.

iii) Jednom kada je DMA prijenos obavljen u potpunosti (sadržaj registra DC je jednak 0), DMA upravljač oslobađa sabirnicu deaktiviranjem signala DMAReq. DMA upravljač može, također, prekidom obavijestiti procesor o tome, tako da procesor može ispitivanjem sadr-žaja statusnog registra DMA upravljača ili memorije utvrditi je li cijela operacija izravnog prijenosa podataka uspješno završena. Nakon toga, procesor može odgovoriti zaustavlja-njem rada perifernog uređaja ili inicijalizacijom novog DMA prijenosa.

Prema načinu DMA prijenosa podataka razlikujemo prijenos podataka krađom ciklusa (engl. cycle stealing mode), prijenos podataka u snopu (engl. burst mode) i kombinacijom

Page 430: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

428 13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

krađe ciklusa i prijenosa podataka u snopu. U načinu prijenosa krađom ciklusa međusobno se isprepliću operacije DMA prijenosa s normalnim sabirničkim ciklusom u kojem proce-sor pristupa memoriji. Budući da procesor, tijekom izvođenja instrukcija, ne treba cijelo vrijeme sabirnicu (vidi poglavlja 2. i 3.), DMA prijenos može se obaviti kada je sabirnica slo-bodna - to se događa kada je procesor zauzet internom operacijom npr. izvođenjem neke aritmetičke ili logičke operacije na već dohvaćenim operandima ili generiranja adrese za sljedeći sabirnički ciklus. U tim kratkim vremenskim intervalima DMA upravljač preuzima upravljanje sabirnicom i obavlja prijenos podatka. Ovaj je način prijenosa transparentan zato što je "nevidljiv" procesoru i ne narušava njegovu performansu. Nakon što je uzasto-pnim krađama ciklusa prenesen predefiniran blok podataka, DMA upravljač prekidom o tome obavještava procesor, tako da procesor može započeti novi prijenos ili pak koristiti rezultate upravo obavljenog DMA prijenosa. U načinu 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 omogućuje najslabija karika, od-nosno najsporija sastavnica u "lancu" memorija - sabirnica - periferni uređaj. Vrlo se često možebitna sporost perifernog uređaja kompenzira tako da DMA upravljač ima spremnik većeg 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 za-ustavljen i ne napreduje s izvođenjem instrukcija. Vrijeme u kojem je procesor zaustavljen ovisi o veličini bloka podataka koji se prenosi u snopu. Da bi se izbjeglo dugo vrijeme za-ustavljanja procesora, što bi moglo prouzrokovati i osjetnu degradaciju performanse ra-čunarskog sustava, DMA upravljač može biti organiziran tako da razdijeli relativno veliki blok podataka na manje dijelove i onda ih prenosi u slijedu DMA prijenosa koji kraće traju koristeći i periode vremenskog vođenja kada procesor ne treba sabirnicu. Takav način pri-jenosa zapravo predstavlja kombinaciju krađe ciklusa i prijenosa u snopu.

lako je očito da DMA prijenos povećava performansu U/l podsustava, ova metoda ima i svoje nedostatke. Kad je DMA uključen u U/l podsustav računarskog sustava, mijenjaju se odnosi između procesora i memorijskog sustava. Bez DMA, svi su pristupi memorijskom su-stavu ostvareni procesorom izravno ili adresnom translacijom u slučaju virtualne i priručne memorije. No DMA ostvaruje drugi put prema memorijskom sustavu, i to onaj koji ne pro-lazi kroz mehanizam adresne translacije ili kroz hijerarhijsku organizaciju priručne memori-je. Ako DMA koristi fizičko adresiranje, a računarski sustav ima virtualni memorijski sustav, mogu nastupiti problemi jer virtualne stranice nisu nužno slijedne u glavnoj memoriji tako da prijenos bloka podataka koji višestruko premašuje veličinu stranice ne može biti određen samo početnom adresom bloka i njegovom veličinom. Ako se DMA temelji na virtualnim adresama, onda DMA treba imati ugrađen mehanizam adresne translacije. DMA u memo-rijskom sustavu s priručnom memorijom također uzrokuje dodatne probleme jer postoje dvije kopije podataka - jedna u priručnoj memoriji, a jedna u glavnoj. Obje kopije moraju biti identične, međutim, DMA upravljač obično komunicira izravno s glavnom memorijom tako da se mogu razlikovati sadržaji 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 smještaju izravno u glavnu memoriju pri čemu su neke lokacije, odno-sno stranice u koje DMA upravljač upisuje podatke, ujedno i u priručnoj memoriji, procesor će čitanjem tih lokacija iz priručne memorije dobiti stare vrijednosti. Jedno rješenje koje se nudi jest ono da se sav DMA prijenos ostvaruje između DMA upravljača i priručne memorije. No to je složenije i skuplje rješenje, a uz sve to može negativno utjecati na performansu procesora jer se DMA pristupom priručnoj memoriji odlaže pristup procesora toj memoriji.

Page 431: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 429 I

14. POGLAVLJE

PROTOČNOST

14.1. UVOD Vrlo općenito protočnost (engl. pipelining) možemo definirati kao poseban oblik paraleliz-ma ili istodobnog izvođenja više operacija koji se dobiva rastavljanjem nekog složenijeg zadatka na manje zadatke (podzadatke) koji jedan drugoga slijede određenim redom i koji se izvršavaju u dodijeljenim samostalnim jedinicama. Samostalne jedinice, koje se naziva-ju protočni segmenti, istodobno su aktivne tako da se izvršavanje podzadataka prekriva u vremenu. Niz međusobno povezanih protočnih segmenata, pri čemu je izlaz prethodnog ulaz u sljedeći protočni segment, oblikuje protočnu strukturu. Slika 14.1 prikazuje protočnu strukturu sastavljenu od M protočnih segmenata.

SI. 14.1 Protočna struktura sastavljena od M protočnih segmenata

Analogiju s protočnosti i protočnom strukturom možemo naći u organizaciji suvremene industrijske proizvodnje na tekućoj vrpci: proizvodi putuju na tekućoj vrpci, a autonomni specijalizirani robotski obrađivači obavljaju nad njima određene operacije. Istodobno se veći broj proizvoda nalazi na tekućoj vrpci i svi su robotski obrađivači istodobno aktivni. Jedan od osnivača moderne proizvodnje utemeljene na zamislima protočnosti jest H. Ford koji je u razdoblju od 1908. do 1915. u svojim tvornicama automobila uveo montažne pro-izvodne vrpce i na taj način uveo masovnu proizvodnju u automobilskoj industriji.

Primjer 14.1.

Zamisao protočnosti možemo zorno ilustrirati na zadatku dobivanja tople vode: potreb-no je dobiti mehanički čistu i omekšanu (s niskom razinom kamenca) toplu vodu. Taj zadatak možemo obaviti tako da ga rastavimo na tri podzadatka: omekšavanje vode, filtriranje vode i grijanje vode. Svakom od podzadataka dodijeljen je po jedan protočni segment (slika 14.2). Neprerađena "sirova" hladna voda protjecanjem kroz tri protočna segmenta pretvara se u omekšanu toplu vodu. Jasno je da su sva tri protočna segmenta istodobno aktivna, ali na različitim volumnim dijelovima vode koja protječe kroz cjevo-vod. Možemo primijetiti daje opisano rješenje primijenjeno u protočnim bojlerima.

Page 432: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

430 14. POGLAVLJE: PROTOČNOST

filtar

protočni segment 1 "— protočni segment 2

SI. 14.2 Dobivanje tople vode uporabom protočnosti

Primjer 14.2.

Osnovnu zamisao protočnosti možemo objasniti na primjeru koji je bliži području kojim se bavimo u ovoj knjizi. Pretpostavimo da se treba u aritmetičko-logičkoj jedinici zbrojiti dva vektora a i b, dimenzija n, pri čemu su njihove komponente a. \bjl\ = 1,2,... n pred-stavljene brojevima s pomičnim zarezom. Da bi se dobio rezultat c, potrebno je obaviti n zbrajanja a.+ bjt i = 1,2,..., n. Postupak zbrajanje brojeva s pomičnim zarezom može-mo rastaviti na četiri glavna koraka (podzadatka; poglavlje 8.): oduzimanje eksponenata, poravnavanje mantise, zbrajanje i normalizacija rezultata. Pretpostavimo da je jedinica za zbrajanje brojeva s pomičnim zarezom izvedena kao protočna s M = 4 protočna se-gmenta. Svaki od njih dodijeljen je jednom od podzadataka. Pretpostavimo, također, da su dimenzije vektora n » M. Pretpostavimo još i to da se svaki od podzadataka izvodi u jednakom vremenu - vrijeme obrade u svakom protočnom segmentu neka je ts = ts1 = ts2

= ts3 = t^. Komponente vektora a i b neka ulaze u protočnu strukturu brzinom koja odgo-vara brzini rada svakog od protočnih segmenata - dakle, svakih t$ vremenskih jedinica novi par a. i b. ulazi u protočnu strukturu.

Postupak računanja zbroja vektora u protočnoj strukturi možemo prikazati na sljedeći način:

Vrijeme

Protočni segment 1

(oduzimanje eksponenata)

Protočni segment 2

(poravnanje)

Protočni segment 3 (zbrajanje)

Protočni segment 4

(normalizacija)

a i . b i - - -

2t S a2,b2 a i< b i - -

3ts a3, b3 a2,b2 a , b i i -

4t =Mt s s a 4 ' b 4 a3,b3 a , b 2 2 c , = a , + b ,

5ts a5,b5 a 4 ' b 4 a , b 3 3 c2 = a2 + b2

a . b a H < b i- i a. v b. ^ t-2 1-2 C ,3 = ai-3 + b,-3

Page 433: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 431 I

nt s

(n + 1)ts

(n + 2)ts

(n + 3)ts = (M + n -1)ts

a , b n' n 3 ,/b , n - V n-1

a , b n' n

3 n - 2 < b n - 2

3 n - 1 < b n - 1

a , b

c =a 3+ b . n-3 n-3 n-3

c = a . + b , n-2 n-2 n-2

c = a , + b , n-1 n -1 n-1

c =a + b n n n

Prvi rezultat c dobivamo iz protočne strukture nakon Mts vremenskih jedinica (4ts). Nakon toga, svakih t vremenskih jedinica dobivamo novi rezultat, odnosno novu kom-ponentu vektora c. Za zbrajanje dvaju vektora u protočnoj strukturi potrebno je Mts + (n - 1)ts vremenskih jedinica. Za zbrajanje dvaju vektora u neprotočnoj izvedbi aritmetičke 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. Pokažimo to na primjeru aritmetičke jedinice za operacije brojevima s pomičnim zarezom za koju su vremena trajanja operacija u protočnim segmentima sljedeća:

Operacija

1. Oduzimanje eksponenata

2. Poravnavanje

3. Zbrajanje

4. Normalizacija

Vrijeme trajanja

tsl = 40 ns

ts2 = 70ns

t s 3 -50ns

t = 80 ns s4

Ukupno vrijeme obrade T 240 ns

(Opaska: vremena trajanja operacija u protočnim segmentima približno odgovaraju stvarnim vrijednostima.)

Pretpostavimo da su vektori dimenzija n = 1000. Za neprotočnu izvedbu vrijeme potreb-no za dobivanje rezultata je n T, odnosno 1000 x 240 ns = 240 ^s.

Iz podataka o vremenima obrade u pojedinim protočnim segmentima uočavamo da su ona različita i zato se između protočnih segmenata postavljaju zaporni sklopovi (engl. latch) koji imaju ulogu protočnog registra te sprečavaju da podatak koji je obrađen u jednom protočnom segmentu ometa rad sljedećeg segmenta prije nego što on završi obradu (slika 14.3). Na taj se način ostvaruje sinkrona protočna struktura u kojoj je protok podataka "gladak" a za vrijeme obrade u svakom protočnom segmentu uzima se ono koje odgovara najsporijem segmentu (u našem slučaju ts = 80 ns).

Vrijeme potrebno za računanje zbroja dvaju vektora u protočnoj izvedbi aritmetičke je-dinice je: Mts + (n -1 )ts = 4 x 80 ns + (1000 -1) x 80 ns = 320 ns + 79920 ns. Ukupno vrije-me obrade u protočnoj strukturi iznosi 80240 ns, odnosno 80.240 juis.

Ako usporedimo vremena obrade za neprotočnu i protočnu strukturu, vidimo daje fak-tor ubrzanja obrade:

(vrijeme obrade za neprotočnu izvedbu) / (vrijeme obrade za protočnu izvedbu) = 240/80.24.

Page 434: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

432 14. POGLAVLJE: PROTOČNOST

Faktor ubrzanja je 2.99, odnosno protočna izvedba približno je triput brža od neprotoč-ne izvedbe.

protočni registar 1 protočni registar 2 protočni registar M-1 (zaporni sklopovi) {zaporni sklopovi) (zaporni sklopovi)

signal vremenskog vođenja

SI. 14.3 Protočna struktura s međuspremnicima

Što se dobiva uporabom protočnosti i kako se ona odražava na brzinu obrade, odnosno na performansu ili propusnost sustava? Odgovor na to pitanje dobit ćemo analizom jedno-stavnog modela protočne strukture (slika 14.1). Neka se protočna struktura sastoji od M > 1 protočnih segmenata i neka je vrijeme obrade u svim protočnim segmentima jednako:

t = t = t =... = t = t si s2 s3 sM s

Pretpostavimo daje broj identičnih operacija koje treba protočna 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 protočne strukture nakon M x ts vremenskih jedi-nica, a nakon toga slijedi rezultat svakih ts vremenskih jedinica. Ukupno vrijeme obrade je:

T k = Mts + (n-1)t5

T k = (M + n -1) t s

Vrijeme obrade, odnosno vrijeme potrebno za izvođenje jedne od n identičnih operacija je: Te

= Tuk/ n = (M + /1 -1 )ts / r?

Pretpostavili smo da je n » 1, međutim, ako n teži prema vrlo velikim vrijednostima, npr. prema beskonačnosti n-*™, onda vrijeme obradeTe teži vremenu obrade u jednom protoč-nom segmentu ts. Dobili smo vrlo zanimljiv rezultat: efektivno vrijeme izvođenja jedne od n identičnih operacija u protočnoj izvedbi jednako je vremenu obrade u jednom protočnom segmentu ts, dok je u neprotočnoj izvedbi vrijeme potrebno za izvođenje iste operacije Mts.

Faktor ubrzanja jednak je M, tj. odgovara broju protočnih segmenata.

Pri priređivanju složenog zadatka za protočnu obradu, odnosno pri rastavljanju zadatka na podzadatke moraju se poštovati pravila koja određuju temeljne značajke protočne strukture:

i) Konačan rezultat izvođenja slijeda podzadataka u protočnoj strukturi mora biti jed-nak rezultatu izvođenja cjelovitog zadatka, tj. onog koji bi se izveo u neprotočnoj strukturi.

ii) Ulazi u protočni segment /su izlazi iz prethodnog protočnog segmenta / -1. iii) Osim izmjene ulaznih i izlaznih podataka ne zahtijeva se drugi način međudjelovanja

protočnih segmenata. iv) Vrijeme potrebno pojedinim protočnim segmentima za izvođenje podzadatka treba

biti za sve protočne segmente približno jednako.

Page 435: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 433 I

14.2. PROTOČNE STRUKTURE U RAČUNARSKOM SUSTAVU Kao što se protočnost može primijeniti u različitim proizvodnim procesima ili svakodnev-noj organizaciji poslova, tako se postupak rastavljanja zadataka može provesti na različi-tim razinama organizacije računarskog sustava. Na primjer, na razini aritmetičko-logičke jedinice (Primjer 14.2.), memorijske jedinice (poglavlje 9.), memorijske sabirnice, priručne memorije iii na razini upravljačke jedinice procesora.

Primjer 14.3.

Procesor Pentium II koristi protočnu izvedbu memorijske sabirnice koja dopušta do osam istodobnih sabirničkih prijenosa, odnosno sabirničkih transakcija. Zadatak sabir-ničke transakcije ostvaruje se sa šest protočnih segmenata ili faza:

i) faza sabirničke arbitraže (engl. bus arbitration) u kojoj se određuje koji od će od potencijalno vodećih modula dobiti memo rij sku sabirnicu na upravljanje;

ii) faza zahtjeva (engl. request phase) u kojoj vodeći modul postavlja adresu na sabirnicu; iii) faza izvještavanja o pogrešci (engl. error reporting phase) dopušta pratećem modu-

lu izvještavanje da je došlo do pogreške, npr. greška pariteta u adresi; iv) faza "njuškanja" (engl. snoop phase) koja dopušta procesoru da detektira neki drugi

procesor - ova se faza rabi samo u multiprocesorskim sustavima; v) faza odgovora (engl. response phase) u kojoj vodeći modul dobiva informaciju na-

preduje li transakcija dobro i hoće li dobiti podatke koje je zatražio; vi) faza podataka (engl. data phase) u kojoj se prenose podaci.

Sabirnički ciklus

T, T2 T3 T4 T5 T6 T7 i s T9 T „ T l t T12

A A A A A A A A A A A A A ©

©

@

\ J l A T A v ^ v

V Req

{ Reg V Error V Snoop Resp. ^ /V

Snoop Resp. Y A Error Y Snoop v ^ v

Req

Data

rz\r~\{ Error

Data

Snoop^/^Resp.

Req Error ^ ^ S n o o p ^ ^

Data

Req Error V A

r Data

Resp.

Snoop

V J\ZU

Data

nz\/ Resp.

\ _ A Data >~

sabirničke transakcije

SI. 14.4 Vremenski dijagram stanja na protočnoj memorijskoj sabirnici sa 6 istodobnih sabirničkih transakcija

Page 436: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

434 14. POGLAVLJE: PROTOČNOST

Ovisno o konfiguraciji računarskog sustava i vrsti sabirničke transakcije neke od faza mogu biti ispuštene (npr. ako je samo jedan vodeći modul u sustavu, faza sabirničke arbitraže nije potrebna; ako sustav nije organiziran kao multiprocesorski, faza njuškanja može se izostaviti).

Pentium II procesor podržava protočnu izvedbu memorijske sabirnice izravno tako da za svaku od faza ima potpuno nezavisne upravljačke signale. Slika 14.4 prikazuje vre-menski dijagram stanja na protočnoj memorijskoj sabirnici sa 6 istodobnih sabirničkih transakcija.

Primjer 14.4.

Slika 14.5 prikazuje protočnu izvedbu priručne memorije (poglavlje 10.) koja se sastoji od četiri protočna segmenta: adresna translacija, dekodiranje retka i čitanje, dekodiranje stupca i izbor te usporedba značke i utvrđivanje valjanosti. Zahvaljujući takvoj izvedbi istodobno se obavljaju četiri prijenosa podataka.

SI. 14.5 Shematski prikaz protočne izvedbe priručne memorije

Protočnost je naročito važna u izvedbi upravljačke jedinice kojoj je osnovna funkcija izvo-đenje instrukcija. Naime, u procjeni ubrzanja rada rezultat koji smo dobili (faktor ubrzanja u odnosu na neprotočnu izvedbu jednak je broju protočnih segmenata M!) temelji na pret-postavci da je broj identičnih zadataka n koji se izvode vrlo, vrlo velik, odnosno da n teži prema beskonačno. Zadatak izvođenja instrukcija, odnosno izvršavanja programa je upra-vo 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 izvođenja instrukcije može se rastaviti na veći broj podzada-taka koji slijede u nizu i koji su pogodni za izvođenje u sklopovsko ostvarenim protočnim segmentima.

14.3. INSTRUKCIJSKA PROTOČNA STRUKTURA Rastavljanjem osnovne funkcije upravljačke jedinice - izvođenje instrukcija - dobivamo in-strukcijsku protočnu strukturu. Ona je određena na temelju analize tijeka izvođenja instruk-cija, odnosno dijagrama stanja instrukcijskog ciklusa. U 2. poglavlju vidjeli smo da se dija-gram stanja instrukcijskog ciklusa sastoji od dviju faza (ili stanja): faze PRIBAVI i faze IZVRŠI (slika 14.6). Izvođenje svake instrukcije započinje aktivnostima koje su određene za fazu PRIBAVI (pribavljanje instrukcije, inkrementiranje programskog brojila, dekodiranje ope-racijskog koda instrukcije), a nakon toga se nastavlja s aktivnostima u fazi IZVRŠI (dohvat operanada, izvođenje aritmetičke ili logičke operacije, pohrana rezultata). To znači da se zadatak izvođenja instrukcije može rastaviti na dva slijedna podzadatka: PRIBAVI i IZVRŠI.

Page 437: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

SI. 14.6 Dijagram stanja instrukcijskog ciklusa

Ako se svakom od podzadataka dodijeli samostalni sklop - protočni segment, dobiva se in-strukcijska protočna struktura s M = 2 protočna segmenta čije ćemo aktivnosti u vremenu za jednu instrukciju simbolički prikazati kao na slici 14.7.

1

pribavi izvrši w pribavi w izvrši w

a)

i • vr i jeme

b)

SI. 14.7 (a) Instrukcijska protočna struktura s M = 2 protočna segmenta; (b) Simbolički prikaz aktivnosti u vremenu (za jednu instrukciju) dvaju protočnih segmenata PRIBAVI i IZVRŠI

Protočni segmenti potpuno su samostalni što znači da mogu istodobno biti aktivni, i to tako da se njihove aktivnosti tijekom izvođenja slijeda instrukcija:..., instrukcija / - 1, in-strukcija /, instrukcija i + 1,... preklapaju - protočni segment PRIBAVI pribavlja instrukciju /, a protočni segment IZVRŠI 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 izvođenje slijeda instrukcija, tj. programa u instrukcijskoj protočnoj strukturi s M = 2 protočna segmenta.

Na slici vidimo da se aktivnosti dvaju protočnih segmenata preklapaju pa se u skladu s analizom jednostavnog modela protočnosti može očekivati, pod idealnim uvjetima -"glat-kog" protjecanja instrukcija kroz protočnu strukturu, faktor ubrzanja izvođenja programa u odnosu na neprotočnu izvedbu jednak broju protočnih segmenata, tj. 2.

Page 438: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

436 14. POGLAVLJE: PROTOČNOST

vrijeme

instrukcija i-1 pribavi/ izvrši ) |

instrukcija i pribavi J izvrši

instrukcija i+1 /

pribavi izvrši

instrukcija i+2 pribavi izvrši ! i

instrukcija i+3 pribavi izvrši

SI. 14.8 Izvođenje slijeda instrukcija u instrukcijskoj protočnoj strukturi s M = 2 protočna segmenta

Primjer 14.5.

D. A. Patterson i D. R. Ditzel su 1980. u okviru dvaju istraživačkih projekata dizajnirali jedan od prvih procesora RISC arhitekture koji su nazvali RISC I.

Procesor RISC I imao je instrukcijsku protočnu strukturu sa samo dva protočna segmenta: segment za pribavljanje instrukcije IF (Instruction Fetch) i segment za izvršavanje instruk-cije EX (Execution). Vrijeme obrade u protočnom segmentu bilo je ts = 500 ns. Vrijeme obrade od 500 ns u svakom od protočnih segmenata nije bilo uvjetovano brzinom sklo-pova u protočnim segmentima, već vremenom pristupa memoriji.

Protočnost, u kontekstu izvođenja instrukcija, možemo sad vrlo precizno definirati kao teh-niku koja iskorištava paralelizam između instrukcija u slijednom instrukcijskom toku.

Aktivnosti u protočnoj strukturi možemo prikazati Ganttovim dijagramom u kojem se na osi x nanose diskretni vremenski trenuci koji odgovaraju vremenu aktivnosti u protoč-nim segmentima ts, a na osi y oznake aktivnih protočnih segmenata. Slika 14.9 prikazuje Ganttov dijagram za instrukcijsku protočnu strukturu s M = 2 protočna segmenta (PRIBAVI i IZVRŠI). Ganttov dijagram zorno nam predočava istodobno izvođenje instrukcija u protoč-noj strukturi: od vremenskog trenutka 2ts na dalje, aktivna su oba protočna segmenta na dvjema instrukcijama. Na primjer, u trenutku 4ts, protočni segment PRIBAVI aktivan je na instrukciji / + 2, a istodobno protočni segment IZVRŠI obrađuje instrukciju / + 1.

-

izvrši instrukcija

i-1 instrukcija

i instrukcija

i+1 instrukcija

i+2 instrukcija

i+3

pribavi instrukcija i-1

instrukcija i

instrukcija i+1

instrukcija i+2

instrukcija i+3

instrukcija i + 4

I t s 2t s 3t, 4ts 5t s

6t s

t

SI. 14.9 Ganttov dijagram izvođenja slijednog instrukcijskog toka u instrukcijskoj protočnoj strukturi s M = 2 protočna segmenta

Page 439: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 437 I

14.3.1. PODROBNIJI DIJAGRAM STANJA INSTRUKCIJSKOG CIKLUSA

Da bi se postigao faktor ubrzanja obrade veći od 2, potrebno je povećati broj protočnih segmenata u instrukcijskoj protočnoj strukturi. Broj protočnih segmenata i njihove funk-cije 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 IZVRŠI (poglavlje 2.), možemo rastaviti na veći 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 poslu-žiti za određivanje broja i funkcija protočnih segmenata. Opišimo aktivnosti u pojedinim stanjima:

i) računanje adrese instrukcije (iac - instruction address caicuiation) - u ovom se stanju određuje adresa instrukcije koja će se sljedeća izvesti. Adrese sljedeće instrukcije ti-jekom faze PRIBAVI dobiva se povećanjem sadržaja programskog brojila PC za iznos koji odgovara broju riječi prethodno pribavljene instrukcije (poglavlje 2.). U slučaju procesora CISC arhitekture taj je iznos promjenjiv i ovisi o vrsti instrukcije (duljina in-strukcija CISC procesora nije fiksna). Ako je riječ o procesoru RISC arhitekture, onda se adresa sljedeće instrukcije dobiva povećanjem sadržaja za stalan iznos (duljina instruk-cije RISC procesora je čvrsta). Na primjer, ako RISC procesor ima 32-bitne instrukcije i ako je memorija bajtne zrnatosti, sadržaj programskog brojila PC povećava se za 4. Stanje računanje adrese instrukcije može biti aktivno i tijekom faze IZVRŠI ako se upra-vo izvršava instrukcija grananja. U tom se slučaju u stanju računanje adrese instrukcije određuje 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 priručne memorije, priručne memorije (l&D cache; poglavlje 10.) ili iz glavne memorije;

i i i) dekodiranje operacijskog koda instrukcije (iod - instruction operation decoding) - ana-lizira se i dekodira operacijski kod instrukcije da bi se odredila vrsta operacije i tip operanada na kojima se treba izvesti operacija;

Page 440: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

438 14. POGLAVLJE: PROTOČNOST

iv) računanje adrese operanda (oac - operand address calculation) - računa ili se odre-đuje adresa operanda. Ako se referencira operand koji se već nalazi u jednom od registara u skupu registara, onda je adresa određena 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, računanje adrese operanda može biti relativno složeno, posebno za CISC procesore koji imaju veliki broj različitih i složenih načina adresiranja;

v) dohvat operanda (of - operand fetch) - operand se čita, odnosno dohvaća iz me-morije ili U/l podsustava. Ovisno o organizaciji memorijskog sustava, operand se može pribaviti iz priručne memorije podataka, priručne memorije (l&D cache) ili glavne (radne) memorije. Operand se može dohvatiti i iz registra u skupu registara. Stanja računanje adrese operanda i dohvat operanda mogu se izmjenjivati više puta ako je riječ o operaciji koja zahtijeva višestruke operande;

vi) izvođenje operacije na operandima (do - data operation) izvodi se operacija koja je specificirana operacijskim kodom instrukcije;

vii) računanje adrese rezultata (rac - result address calculation) - određuje se odredišna adresa rezultata operacije. Odredište rezultata može biti memorija, odnosno pri-ručna memorija, priručna memorija podataka, glavna memorija ili U/l podsustav. Naravno, odredište rezultata može biti i registar u skupu registara - u tom je slučaju adresa odredišta određena adresnim poljem koje se nalazi u instrukciji;

viii) pohranjivanje rezultata (rs - result store) - upis rezultata u memorijski sustav ili u regi-star u skupu registara ili u U/l podsustav.

Stanja računanje adrese rezultata i pohranjivanje rezultata mogu se, također, izmjenjivati više puta u slučaju instrukcija koje se koriste višestrukim 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 slučaju za jedan sli-jed stanja računanje adrese instrukcije - pribavljanje instrukcije - dekodiranje operacijskog koda instrukcije višestruko ponavljaju stanja računanje adrese operanda - dohvat operanda - izvođenje operacije na operandima - računanje adrese rezultata - pohranjivanje rezultata.

Cijeli se postupak izvođenja instrukcije može smislenim grupiranjem stanja u dijagramu stanja instrukcijskog ciklusa prikazati kao logički slijed podzadataka. Na primjer, slijed sa-stavljen od podzadataka: pribavljanje instrukcije, dekodiranje instrukcije, izvršavanje in-strukcije, tj. izvođenje operacije na operandima te upis rezultata oblikovao bi instrukcijsku protočnu strukturu sastavljenu od četiri protočna segmenta. Dakako, moguća su i druga-čija grupiranja stanja, primjerice pribavljanje instrukcije, dekodiranje instrukcije, računanje (efektivne) adrese operanada, izvršavanje instrukcije, upis rezultata. Instrukcijske protočne strukture mogu imati sedam ili više protočnih segmenata. Na primjer, instrukcijska pro-točna struktura sastoji se od deset protočnih segmenata: (pret)pribavljanje instrukcije u in-strukcijski međuspremnik (engl. instruction buffer), pribavljanje instrukcije u instrukcijski registar, dekodiranje instrukcije, računanje adrese prvog operanda, računanje adrese dru-gog operanda, dohvat prvog operanda, dohvat drugog operanda, izvršavanje instrukcije, računanje adrese rezultata i, konačno, pohranjivanje, odnosno upis rezultata.

Funkcije koje odgovaraju pojedinim stanjima (podzadacima) u dijagramu stanja instruk-cijskog ciklusa, koje će se dodijeliti pojedinim protočnim segmentima te broj protočnih segmenata u instrukcijskoj protočnoj strukturi vrlo su važne arhitektonske značajke pro-cesora koje imaju veliki utjecaj na performansu procesora, a time i na performansu raču-

Page 441: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 439 I

narskog sustava. Na način grupiranja stanja u dijagramu stanja instrukcijskog ciklusa i na broj protočnih segmenata utječe i to temelji li se procesor na RISC ili CISC konceptima (poglavlje 3.).

14.4. INSTRUKCIJSKA PROTOČNA STRUKTURA ZA RISC PROCESORE U poglavlju 3. Pojednostavnjeni modeli CISC i RISC procesora upoznali smo se s osnovnim značajkama procesora RISC arhitekture. Podsjetimo se, ukratko, tih značajki:

i) reduciran skup instrukcija sastavljen od relativno jednostavnih instrukcija, ii) instrukcijski skup čine tri osnovne vrste instrukcija: aritmetičko-logičke 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 premje-

štaju podaci između registra u skupu registara i memorije (load-store arhitektura), v) registarsko orijentirani procesor. Operandi za aritmetičke i logičke operacije moraju

se nalaziti u skupu registara. Aritmetičko-logičke operacije na podacima pohranje-nim u registrima podataka mijenjaju obično cijele sadržaje registra (ne djeluju selek-tivno na bajt ili 16-bitnu riječ u 32- ili 64-bitnom registru podataka),

vi) većina instrukcija je tipa registar-registar.

Potonje značajke pojednostavnjuju izvedbu instrukcijske protočne strukture i izravno dje-luju na povećanje performanse procesora.

Opisat ćemo "klasičnu" instrukcijsku RISC protočnu strukturu koja se sastoji od pet protoč-nih segmenata. Opravdanje za izbor pet segmentne protočne strukture naći ćemo vrlo brzo kada budemo govorili o načinu ostvarivanja jednog od osnovnih ciljeva RISC arhitek-tu re - izvođenje instrukcije u jednoj periodi signala vremenskog vođenja.

Protočna struktura sastoji se od sljedećih protočnih segmenata (slika 14.11): pribavljanje instrukcije (IF), dekodiranje instrukcije i dohvat operanada (ID-OF), izvršavanje instrukcije (EX), pristup memoriji (ME) i upis rezultata ili podatka dohvaćenog iz memorije (WB).

IF ID-OF EX ME WB

Legenda: IF - pribavljanje instrukcije ID-OF - dekodiranje instrukcije i dohvat operanada EX - izvršavanje instrukcije ME - pristup memoriji WB - upis rezultata ili podataka

SI. 14.11 Simbolički prikaz instrukcijske protočne strukture RISC procesora

Page 442: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

440 14. POGLAVLJE: PROTOČNOST

14.4.1. POTREBNE SKLOPOVSKE PREINAKE U PROTOČNOM RISC PROCESORU

Da bi se djelotvorno iskoristila protočna izvedba, potrebne su određene preinake u arhi-tekturi RISC procesora:

i) ako se želi postići izvođenje instrukcije u jednoj periodi signala vremenskog vođenja, onda to znači da instrukcije moraju pristizati u protočnu strukturu u svakoj periodi signala vremenskog vođenja. Štoviše, brzina pristizanja instrukcija treba odgovarati vremenu obrade u protočnom segmentu. Ovdje se pojavljuju dva problema: • vrijeme pristupa radnoj memoriji tA (poglavlje 9.) dulje je od vremena obrade u

jednom protočnom segmentu ts: tA > ts i; • ako se instrukcije i podaci dohvaćaju iz iste memorijske jedinice, onda se zbog

istodobnog izvođenja većeg broja instrukcija (koje se nalaze u različitim fazama izvođenja) pojavljuje konflikt - protočni segment IF u svakoj periodi signala vre-menskog vođenja pristupa memorijskoj jedinici, a pristup memorijskoj jedinici za-htijeva i protočni segment ME tijekom izvođenja load ili store instrukcije.

Rješenje obaju problema jest u uporabi priručne memorije i zamisli na kojima počiva harvardska arhitektura (poglavlje 2.) - izdvojenih priručnih memorija - instrukcijske priručne memorije i priručne memorije podataka (poglavlje 10.).

i i) Skup registara podataka treba biti izveden kao jednou lažna i dvoizlazna memorija (engl. one write port & two read ports; 3-port register file) tako da se omogući istodobni dohvat (čitanje) dva operanda, ali i upis rezultata u istoj periodi signala vremenskog vođenja (poglavlje 7.).

iii) Umjesto internih sabirnica (jedne ili više njih) protočna izvedba RISC procesora vrlo često koristi načine povezivanja točka-točka i na taj se način omogućuje istodobni prijenos između registara i drugih komponenti procesora u svakom od protočnih segmenata. To ima za posljedicu i uvođenje protočnih registara između protočnih segmenata koji su potrebni za prosljeđivanje informacija (podataka) između protoč-nih segmenata.

iv) Sklop za posmak u aritmetičko-logičkoj jedinici (ALU) mora biti tako izveden da se posmakza proizvoljni broj mjesta izvodi u jednoj periodi signala vremenskog vođe-nja (uporaba bačvastog posmačnog sklopa; poglavlje 8.).

v) Protočna izvedba zahtijeva dodatne sklopove kao što je zbrajalo ili poseban sklop za inkrementiranje/dekrementiranje sadržaja programskog brojila PC u protočnom segmentu IF, protočni registri između protočnih segmenata i multipleksori za (pre) usmjeravanje podataka na putu podataka kroz protočne segmente.

Slika 14.12 prikazuje preinačenu protočnu strukturu RISC procesora s pet protočnih segmenata.

Page 443: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 441 I

SI. 14.12 Podrobniji prikaz protočne struktura RISC procesora s pet protočnih segmenata i potrebnim preinakama

Page 444: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

442 14. POGLAVLJE: PROTOČNOST

Opišimo aktivnosti u pojedinim protočnim segmentima (slika 14.12). U protočnom se-gmentu IF pribavlja se instrukcija iz instrukcijske priručne memorije, i to ona na koju po-kazuje programsko brojilo PC. Sadržaj se programskog brojila povećava za 4 (ako je riječ o 32-bitnom RISC procesoru i bajtnoj adresnoj zrnatosti memorije). Ta se operacija (PC + 4) izvodi pomoću zbrajala u protočnom segmentu IF. Pribavljena instrukcija i obnovljena vrijednost PC-a prosljeđuju se protočnom segmentu ID-OF preko protočnog registra IF/ID-OF (slika 14.12). Pribavljena instrukcija, koja je bila privremeno pohranjena u protočnom registru IF/ID-OF, smješta se u instrukcijski registar u protočnom segmentu ID-OF i deko-dira se. Istodobno s dekodiranjem operacijskog koda instrukcije dohvaćaju se operandi iz skupa registara i privremeno se pohranjuju u protočnom registru ID-OF/EX. U protočnom segmentu ID-OF nalazi se i sklop za širenje bita predznaka koji služe za pretvorbu podatka (konstante) sadržanog u samoj instrukciji u 32-bitni operand ili adresu (vidi 3. poglavlje)

Kako je moguće istodobno dohvaćati operande i dekodirati operacijski kod instrukcije? Ako je dekodiranjem operacijskog koda utvrđeno da je riječ o instrukciji tipa registar-regi-star, onda dohvaćeni podaci iz skupa registara zaista predstavljaju operande. (Podsjetimo se još jednog dobrog svojstva RISC procesora, operandi za sve aritmetičke i logičke ope-racije 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 slučaju nije ništa pogriješilo - dohvaćeni se podaci upotre-bljavaju u protočnom segmentu EX za oblikovanje efektivne adrese memorijske lokacije kojoj će se pristupiti tijekom aktivnosti u protočnom 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 protočnom segmentu EX, koja je privremeno pohranje-na u protočnom registru EX/ME, povratnom vezom upućuje u protočni segment IF gdje se preko multipleksora MUX upisuje u programsko brojilo PC. Ciljna adresa dobiva se na temelju dohvaćenog sadržaja iz jednog od registara iz skupa registara tijekom aktivnosti u protočnom segmentu IF-OD. Ciljna adresa može se dobiti (ovisi o načinu adresiranja) u protočnom segmentu EX i zbrajanjem sadržaja programskog brojila PC, koje je bilo pri-vremeno pohranjeno u protočnom registru ID-OF/EX, i dohvaćene adrese ili pomaknuća (adresna komponenta) iz jednog od registara iz skupa registara. Adresa, odnosno adresna komponenta je, također, bila pohranjena u protočnom registru ID-OF/EX.

U protočnom segmentu EX izvršava se aritmetička ili logička operacija na dohvaćenim podacima. No ako je riječ o instrukciji tipa load/store ili o instrukciji grananja, onda se ari-tmetičko-logička jedinica (ALU) u protočnom segmentu EX koristi za računanje efektivne adrese koja je potrebna protočnom segmentu ME ili ciljne adrese potrebne protočnom segmentu IF.

Aktivnosti u protočnom segmentu ME mogu se opisati na sljedeći način: ako je riječ o in-strukciji tipa load, koristi se efektivna adresa iz EX za pristup podatku u priručnoj memoriji podataka. Dohvaćen (pročitan) podatak privremeno se pohranjuje u protočni registar ME/ WB. Ako je riječ o instrukciji tipa store, onda se podatak koji je privremeno pohranjen u protočnom registru EX/ME upisuje u priručnu memoriju podataka.

U slučaju da je riječ o aritmetičko-logičkoj instrukciji, nema aktivnosti u protočnom se-gmentu ME jer takve su instrukcije sve vrste registar-registar i ne rabe pristup memoriji. Rezultat aritmetičke ili logičke operacije izravno se prosljeđuje protočnom registru ME/WB.

Page 445: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 443 I

Tijekom aktivnosti u protočnom segmentu WB upisuje se podatak natrag u skup registra. Ako je riječ o instrukciji tipa load, podatak koji je bio privremeno pohranjen u protočnom registru ME/WB upisuje se u jedan od registara u skupu registara. U slučaju da je riječ o aritmetičkoj ili logičkoj instrukciji, onda se rezultat koji je bio privremeno smješten u pro-točnom registru ME/WB upisuje natrag ujedan od registara u skupu registara.

U slučaju instrukcije tipa store nema aktivnosti u protočnom segmentu WB.

Zanimljivo je izvođenje instrukcija uvjetnog i bezuvjetnog grananja u protočnoj strukturi. Na primjer, promotrimo izvođenje instrukcije uvjetnog grananja koju smo upoznali u po-glavlju 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 sadržaj registra R[1] u skupu registara i ako je on jednak 0, onda u programsko brojilo PC smješta 32-bitni sadržaj registra R[31].

Tijekom izvođenja te instrukcije, u protočnom segmentu ID-OF dohvaćaju se sadržaji regi-stara R[31] i R[l]. Oni se privremeno pohranjuju u protočni registar ID-OF/EX. Potrebno je ispitati je li sadržaj registra R[1] jednako, odnosno je li uvjet grananja ispunjen. Ako su pro-točnom segmentu ID-OF pridodani sklopovi za ispitivanje uvjeta, onda se zadovoljavanje uvjeta (R[1] = 0) može utvrditi u segmentu ID-OF. Ako je R[1] jednako, onda se privremeno pohranjeni sadržaj registra R[31] prosljeđuje bez promjena kroz protočni segment EX te se preko protočnog registra EX/ME upućuje povratnom vezom u protočni segment IF, odno-sno preko multipleksora u programsko brojilo PC (slika 14.12). Ovdje vidimo da smo izved-bom protočne strukture (slika 14.12) narušili jedno od pravila protočnosti koje izvorno ne dopušta povratne veze između protočnih segmenata ("Ulazi u protočni segment / su izlazi iz prethodnog protočnog segmenta i -1"). Strogo poštovanje spomenutog pravila protoč-nosti vodilo bi rješenju u kojem se tek djelovanjem protočnog segmenta WB ciljna adresa upisivala u programsko brojilo PC. Vrlo brzo ćemo, međutim, vidjeti da strogo poštovanje potonjeg načela narušava "gladak" tok instrukcija kroz instrukcijsku protočnu strukturu.

Ako uvjet za grananje, u slučaju instrukcije brzr r31, rl, nije zadovoljen (sadržaj registra R[1] nije 0), sadržaj registra R[31] nema utjecaja na sadržaj programskog brojila PC te se grananje neće dogoditi.

Slika 14.13 prikazuje "glatki"jednolični protok slijeda instrukcija i 3 , i n 1 , in - instruk-cije protječu kroz protočnu strukturu bez ikakvog remećenja i zastoja. Slika 14.14 prikazuje Ganttov dijagram aktivnosti protočnih segmenata.

Na slici 14.14 uočavamo fazu "punjenja" ili uspostavljanja protočne strukture u kojoj po-stupno raste broj istodobno aktivnih protočnih segmenata. Nakon vremena potrebnog za "punjenje" protočne strukture (4ts) slijedi dugi period u kojem su svi protočni segmenti aktivni, i to tako da svaki djeluje na različitu instrukciju iz slijeda instrukcija. Izvođenje in-strukcija završava "pražnjenjem" protočne strukture u kojoj postupno protočni segmenti jedan za drugim postaju neaktivni. Ako je slijed instrukcija koje se trebaju izvršiti vrlo velik n » 1, onda se vrijeme punjenja i pražnjenja može zanemariti u usporedbi s vremenom kada su svi protočni segmenti istodobno aktivni.

Page 446: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

444 14. POGLAVLJE: PROTOČNOST

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"jednolični protok slijeda instrukcija kroz 5-segmentnu instrukcijsku protočnu strukturu

protočni segmenti

WB

ME

EX

ID-OF

IF

punjenje protočne strukture pražnjenje protočne strukture

r

rv-4

n-3

n-2

n-1

n-3

n-2

n-1

n-2

n-1

n-1

t 1t 2t 3t 4t 5t 6t s s s s s $ >

SI. 14.14 Ganttov dijagram aktivnosti protočnih segmenata

8t nt (n+1)t (n+2)t (n+3)t (n+4)t =(n+M-1)t

14.4.2. OSTVARIVANJE CILJA: JEDNA INSTRUKCIJA U JEDNOJ PERIODI SIGNALA VREMENSKOG VOĐENJA

Jedna od osnovnih težnji arhitekture RISC jest izvođenje instrukcije u jednoj periodi signa-la vremenskog vođenja. Preciznije, umjesto izvođenja instrukcije u jednoj periodi signala vremenskog vođenja, zahtijeva se započinjanje izvođenja nove instrukcije u svakoj periodi signala vremenskog vođenja te, isto tako, generiranje rezultata u svakoj periodi signala vremenskog vođenja. Na taj se način postiže prividno izvođenje instrukcije u jednoj pe-riodi signala vremenskog vođenja. Osim toga, da bi se postigla maksimalno moguća per-formansa, želi se postići stoje moguće kraće vrijeme trajanja periode signala vremenskog vođenja.

Page 447: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 445 I

Procjena vremena trajanja periode signala vremenskog vođenja temelji se na vremenskom ciklusu puta podataka (poglavlje 7.) koji je potreban, podsjetimo se, za izvođenje temeljne operacije na putu podataka koja se sastoji od dohvata (čitanja) operanada iz skupa registara opće namjene, izvođenja aritmetičke ili logičke operacije na njima te pohranjivanja rezul-tata natrag ujedan od registara u skupu registara. Izvorno,jedno od "zlatnih pravila"RISC arhitekture je: Žrtvuj sve da bi se ostvario stoje moguće kraći vremenski ciklus na putu po-dataka. S druge strane, želimo da procesor ima takvu arhitekturu koja dopušta izvođenje instrukcije u vremenu trajanja ciklusa puta podataka koje je izabrano kao perioda signala vremenskog vođenja. Ovdje moramo spomenuti da se posebni napori trebaju uložiti u oblikovanje memorijske jedinice koja svojom brzinom mora podržavati brzinu protočne strukture (protočna izvedba memorije, priručna memorija, protočna izvedba priručne me-morije) jer ako se to ne postigne, onda se vrijeme obrade uvjetuje upravo brzinom najspo-rije komponente u izvršavanju instrukcija - memorije (vidi Primjer /4.5.).

Poštovanje spomenutog zlatnog pravila ima za posljedicu prvu "žrtvu": složene instrukcije s raskošnim načinima adresiranja, koje su ujedno i vremenski zahtjevne, isključuju se iz skupa instrukcija - skup instrukcija se reducira. Očuvanje minimalnog vremenskog ciklusa puta podataka, prema izvornim načelima RISC arhitekture, vodilo je i eliminaciji operacija kao što su operacije brojevima s pomičnim zarezom, operacije na nizovima znakova pa čak isključivanju operacija, odnosno instrukcija cjelobrojnog dijeljenja!

Ako se pažljivo izaberu instrukcije koje čine instrukcijski skup tako da vremenski najzah-tjevnija instrukcija, ako se promatra izdvojeno, traje M perioda signala vremenskog vođe-nja, pri čemu je M broj protočnih segmenata u instrukcijskoj protočnoj strukturi, onda se s obzirom na faktor ubrzanja uslijed protočnosti koji je jednak M ostvaruje željeni cilj: jedna instrukcija u jednoj periodi signala vremenskog vođenja. Naravno, to vrijedi uz pretpostav-ku jednoličnog i glatkog protoka instrukcija kroz protočnu strukturu sastavljenu od M pro-točnih segmenata. Vrlo brzo vidjet ćemo da postoje tzv. hazardi u protočnoj strukturi koji izazivaju zastoj instrukcija u protočnoj strukturi i time se narušava glatki protok instrukcija. Naravno, time se smanjuje faktor ubrzanja obrade u protočnoj strukturi.

14.5. INSTRUKCIJSKA PROTOČNA STRUKTURA ZA CISC PROCESORE Protočnost, kao vrlo važna arhitektonska značajka, rabi se u RISC, ali i u CISC procesorima. Procesori CISC arhitekture imaju u svom raskošnom skupu instrukcija one koje variraju po razini složenosti, od vrlo jednostavnih koje se izvode za samo nekoliko perioda signala vremenskog vođenja, sve do onih koje zahtijevaju nekoliko desetaka pa i stotinu perioda signala vremenskog vođenja. Na primjer, za procesor MC 68060 instrukcija za cjelobrojno predznačeno dijeljenje DIVS zahtijeva 38 perioda signala vremenskog vođenja, a floating-point instrukcija za računanje drugog korijena (FSSQRT) izvodi se za 68 ili 70 perioda signa-la vremenskog vođenja (ovisno o načinu adresiranja).

Raznolikost u složenosti instrukcija u skupu instrukcija CISC procesora negativno se odra-žava na propusnost instrukcijske protočne strukture. Ilustrirajmo to na jednostavnom pri-mjeru izvođenja slijeda cjelobrojnih instrukcija za CISC procesor (slika 14.15).

Page 448: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

446 14. POGLAVLJE: PROTOČNOST

Pretpostavimo da se instrukcija izvodi za 24 periode signala vremenskog vođenja (od toga zauzeće aritmetičko-logičke jedinice (označeno na slici s EX) iznosi 10 perioda). Instrukcija / izvodi se za 12 perioda (zauzeće ALU je 2 periode), / se izvodi za 16 perioda (zauzeće ALU je 4 periode) i /4zahtijeva 12 perioda signala vremenskog vođenja (zauzeće ALU 2 periode). Programski odsječak i3, i4 u neprotočnoj izvedbi izvodi se za 24 + 12 + 16 +12 = 64 periode signala vremenskog vođenja.

ID EX ME W8 IF ID EX ME WB IF ID EX ME WB IF ID EX ME WB

24 periode i 12 perioda i 16 perioda i 12 perioda

SI. 14.15 Izvođenje slijeda instrukcija u neprotočnoj izvedbi

Slika 14.16 prikazuje izvođenje slijeda instrukcija /;# i3, i4 u protočnoj izvedbi. Na slici 14.16 zapažamo negativni utjecaj različitih razina složenosti pojedinih instrukcija. Zbog istodobnih zahtjeva za protočnim segmentima od strane instrukcija koje se nalaze u pro-točnoj strukturi pojavljuje se dodatno kašnjenje u njihovom izvođenju (označeno sjenča-nim područjima na slici 14.16). Tako, na primjer, instrukcija i2 ne može biti pribavljena sve dok se pribavlja instrukcija i r Također, instrukcija i2 ne može napredovati s izvođenjem dok joj instrukcija / ne oslobodi protočni segment EX. Slično se događa i s instrukcijama / i i4

Na slici 14.16 možemo uočiti da se instrukcije i i2 sukobljavaju i oko protočnog segmenta ME, odnosno pristupa memoriji podataka. Vrijeme potrebno za izvođenje slijeda instruk-cija i, ip i3, i4 u protočnoj strukturi iznosi 36 perioda signala vremenskog vođenja. Faktor ubrzanja obrade u odnosu na neprotočnu strukturu je 64/36 = 1.77, što je vrlo daleko od teorijskog ubrzanja koje bi trebalo biti jednako broju protočnih segmenata, tj. 5.

t \ 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 p.

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 (vremenske jedinice)

SI. 14.16 Izvođenje slijeda instrukcija i^ iy i4 u protočnoj strukturi

U ovom smo potpoglavlju načeli jednu vrlo važnu temu koja se odnosi na probleme u instrukcijskoj protočnoj strukturi, kako RISC tako i CISC, koji nastupaju kada se dvije ili više instrukcija, koje se nalaze u protočnoj strukturi, natječu ili sukobljavaju oko pojedinih protočnih segmenata.

Page 449: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 447 I

14.6. INSTRUKCIJSKA PROTOČNA STRUKTURA CISC PROCESORA MC 68060 - ANALIZA SLUČAJA Procesor MC 68060 tvrtke Motorola poslužit će nam za ilustraciju uporabe protočnosti u CISC arhitekturi. Procesor je definiran kao superkalarni CISC procesor što znači da izdaje i izvršava više od jedne instrukcije (u ovom slučaju instrukcije koje se odnose na rukovanje cjelobrojnim tipovima podataka) u jednoj periodi signala vremenskog vođenja. Osnovna značajka superskalarnih CISC procesora jest njihova superskalarna RISC jezgra, pri čemu se CISC instrukcije pretvaraju tijekom postupka dekodiranja u niz RISC instrukcija koje se zatim izvršavaju u superskalarnoj jezgri. Slika 14.17 prikazuje blok-shemu procesora. Procesor se sastoji od sljedećih glavnih funkcijskih jedinica:

• izvršne jedinice (Execution Unit) koja je sastavljena od jedinice za pribavljanje instruk-cije (Instruction Fetch Unit), cjelobrojne jedinice (Integer Unit) i jedinice za operacije brojevima s pomičnim zarezom (FPU - Floating-point Unit),

• memorijskih jedinica koje sačinjavaju instrukcijska memo rij ska jedinica (Instruction Memory Unit) i memorijska jedinica podataka (Data Memory Unit) - procesor je in-terno harvardske arhitekture. Instrukcijska memorijska jedinica sastoji se od instruk-cijske priručne memorije (Instruction Cache; 8 KB), priručne memorije za translaciju virtualne (logičke) adrese u fizičku adresu ATC (Address Translation Cache), tj. transla-cijski spremnik TLB (Translation Lookaside Buffer) (poglavlje 10.) i upravljača instruk-cijskom priručnom memorijom (Instruction Cache Controller). Memorijska jedinica podataka sastoji se od priručne memorije podataka (Data Cache; 8 KB), priručne me-morije za translaciju virtualne adrese u fizičku adresu ATC (translacijski spremnikTLB) koja se odnosi na memoriju podataka i upravljača priručnom memorijom podataka (Data Cache Controller),

• sabirničkog upravljača (Bus Controller) kojim se podržava nemultipleksirani, potpuno sinkroni sabirnički protokol.

Jedinica za pribavljanje instrukcije (Instruction Fetch Unit) sastoji se od četiri protočna segmenta:

i) protočni segment za računanje adrese instrukcije (AIG) u kojem se određuje virtual-na adresa instrukcije,

ii) protočni segment za pribavljanje instrukcije (IF) u kojem se pribavlja instrukcija iz memorije,

iii) protočni segment za rano dekodiranje operacijskog koda instrukcije (ED) koje je po-trebno za upravljanje protočnom strukturom,

iv) instrukcijski međuspremnik (IB) u kojem se privremeno pohranjuje instrukcija i infor-macija potrebna protočnoj strukturi. Instrukcija i dodatna informacija ostaju pohra-njeni u međuspremniku sve dok cjelobrojna jedinica ne postane raspoloživa.

U jedinici za pribavljanje nalazi se i priručna memorija grananja (Branch Cache) koja služi za predviđanje grananja.

Page 450: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

on —u

VJ

izvršna jednica (Execution Unit)

jedinica za pribavljanje instrukcije (instruction Fetch Unit)

Branch Cache

A

Branch Cache Branch Cache

N

K Branch Cache Branch Cache

K

' AIG IA Calculate

Instruction Fetch'

• ED Early Decode

instruction Buffer

FPU (Floating Point Unit)

• oc E/A Fefc/i

FP Execute

pOEP sOEP

Decode [DS

EA Calculate

EA Fetch

INT Execution

DS Decode

EA Calculate

EA Fetch

INT Execution

Data Available

Write-Back

TV Open Bus

Page 451: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

instrukcijska memorijska jedinica (Instruction Memory Unit)

Instruction ATC Instruction Cache

Instruction Cache Controller

Address

cjelobrojna jedinica (integer Unit)

memorijska jedinica podataka (Data Memory Unit)

Data Cache Controller

Data ATC Data Cache

•I c

3 QQ Data

Control

Page 452: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. R1BARIĆ - GRAĐA RAČUNALA 449

Cjelobrojna jedinica (Integer Unit) sastoji se od dviju protočnih struktura (superskalarnost!) od kojih svaka ima po šest protočnih segmenata:

i) protočni segment za dekodiranje (DS) u kojem se instrukcija dekodira u potpunosti, ii) protočni segment za računanje efektivne adrese (EA Calculate) u kojem se određuje

adresa efektivna adresa podatka, iii) protočni segment za dohvat operanda iz memorije podataka {EA Fetch), iv) protočni segment za izvršavanje cjelobrojne instrukcije (I NT Execution), v) protočni segment u kojem se smješta raspoloživi rezultat (Data Available), vi) protočni segment (Write-Back) u kojem se rezultat upisuje natrag u priručnu memo-

riju podataka (ostvarenu na procesorskom čipu) ili u vanjsku memoriju.

Dvije protočne strukture u cjelobrojnoj jedinici pOEP (Primary Operand Execution Pipeline) i sOEP (Secondary Operand Execution Pipeline) omogućuju istodobno izvođenje instrukcija i na taj se način simultano izvodi više od jedne cjelobrojne instrukcije.

Jedinica za operacije brojevima s pomičnim zarezom FPU sastoji se od četiri funkcijske je-dinice (FPADD - jedinica za zbrajanje, FPMUL - jedinica za množenje, FPDIV - jedinica za dijeljenje, FPMISC - jedinica kojom se podržavaju instrukcije za rukovanje sadržajima FP registara u slučaju iznimke). Istodobno samo jedna od četiri FP jedinice može biti aktivna.

Budući da istodobno mogu biti aktivne dvije protočne strukture u cjelobrojnoj jedinici te jedna od FP jedinica - vršna performansa procesora je tri instrukcije u jednoj periodi signa-la vremenskog vođenja.

14.7. HAZARDI U INSTRUKCIJSKOJ PROTOČNOJ STRUKTURI Istodobno izvođenje više instrukcija u protočnoj strukturi može dovesti do situacije u koji-ma se ne može izvesti sljedeća instrukcija u slijedu instrukcija u za nju predviđenoj periodi signala vremenskog vođenja. Takvi događaji nazivaju se hazardi. Postoje tri vrste hazarda:

i) strukturni hazard, ii) podatkovni hazard (engl. data hazard), iii) upravljački hazard (engl. control hazard).

14.7.1. STRUKTURNI HAZARD

Strukturni hazardi nastaju zbog resursnih konflikata kada sklopovi ne mogu podržati sve moguće kombinacije instrukcija koje se istodobno izvode u protočnoj strukturi. Na primjer, za slijed instrukci ja/ j , /5 , /4u protočnoj strukturi (slika 14.16) instrukcije/^ i/2su u konfliktu zbog toga što istodobno obje zahtijevaju protočni segment EX, a nakon toga i sklopove u protočnom segmentu ME. Instrukcija i2 mora "pričekati" i zaustaviti se u napredovanju jer joj u trenutku 11ts nije raspoloživ resurs— protočni 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 protočnoj strukturi. Takav se zastoj zorno grafički predočava protočnim mjehurićem (engl. bubble) koji asocira na to da nema u cijevi djelotvornog protoka tekućine - umjesto volumskog dijela tekućine u cijevi se nalazi zračni mjehurić.

Page 453: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

450 14. POGLAVLJE: PROTOČNOST

Primjer 14.6.

Za procesor RISC arhitekture vrijedi da je tijekom svake periode signala vremenskog vođenja aktivan protočni segment IF. Ako sada pretpostavimo da je memorijska jedini-ca 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 kon-flikt, tj. sukobljavanje oko memorije s instrukcijom i5 i prouzročiti zastoj u napredovanju instrukcije i5 (pribavljanje instrukcije i5 mora biti odgođeno) u trajanju jedne periode si-gnala vremenskog vođenja, i to u trenutku (tijekom pete periode signala vremenskog vođenja) kada protočni segment ME za nju (instrukciju i) dohvaća podatak iz zajedničke memorije:

perioda signala vremenskog vođenja

instrukcija 1 2 3 4 5 6 7 8 9 10

'I IF ID EX ME WB

i2 = load IF ID EX ME WB

h IF ID EX ME WB

K IF ID EX ME WB

h zastoj IF ID EX ME WB

<6 IF ID EX ME

Opaska: radi jednostavnosti protočni segment za dekodiranje instrukcije i dohvat opera-nada (ID-OF) označavamo u tablici i na slikama samo s ID.

Slika 14.18 grafički predočava ovaj strukturni hazard.

IF ID EX ME WB

IF ID EX ME WB

IF ID EX ME WB

IF ID EX ME WB

protočni mjehurić

SI. 14.18 Grafički prikaz strukturnog hazarda (Primjer 14.6)

IF ID EX ME WB

IF ID EX ME WB

Budući da su instrukcije vrste ioad i store zastupljene približno 30% u odnosu na sve dru-ge instrukcije u programu, zbog resursnog konflikta ove vrste performansa procesora umanjuje se za više od 10%. Konflikti ove vrste u RISC arhitekturi rješavaju se višepri-stupnim memorijskim jedinicama (engl. multiple-port memory), uporabom instrukcijske

Page 454: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 451 I

priručne memorije i priručne memorije podataka, uporabom harvardske arhitekture u kojoj su izdvojeno ostvarene instrukcijska memorija i memorija podataka ili pak instruk-cijskim spremnikom (engl. instruction buffer) u kojem (pret)pribavljene instrukcije čekaju na izvršenje.

Drugi primjer resursnog konflikta jest istodobni pristup skupu registara. Taj se konflikt rje-šava uporabom višepristupnog skupa registara (engl. multiple-ports register file).

14.7.2. PODATKOVNI HAZARD

Podatkovni hazard nastupa zbog međuzavisnosti podataka. On nastaje kad dvije ili više instrukcija, koje se nalaze u protočnoj strukturi, pristupaju istom podatku ili modificiraju isti podatak (smješten u registru ili u memoriji). Podatkovni hazard događa se kad se zbog protočnosti mijenja redoslijed pristupa operandima operacijom čitanja ili pisanja tako da se taj redoslijed razlikuje od onog koji je određen slijednim izvođenjem instrukcija u ne-protočnoj izvedi. Opčenito, 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 predočili ove vrste hazarda, moramo razmotriti skup ulaznih operanada i skup izlaznih operanada (rezultata) za svaku od instrukcija koja ulazi u pro-točnu strukturu. Skup ulaznih operanada neke instrukcije /; označit ćemo s D(/;) i nazivat ćemo ga domena instrukcije ir Skup izlaznih operanada (rezultata) instrukcije /? označit ć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. Označimo s D(i2) i R(/2) domenu i vidokrug instrukcije i2. Grafički domenu i vidokrug svake od instrukcija možemo predočiti kao što je to prikazano na slici 14.19. a). Hazard vrste RAW grafički je prikazan na slici 14.19 b). Vidimo da se vidokrug instrukcije i1 (djelomično) preklapa s domenom instrukcije i2 koja slijedi u programu instrukciji /',: rezultati koje instrukcija i1 upisuje (pohranjuje) u registre su operan-di koje instrukcija i2čita (dohvaća). Formalno se RAW hazard opisuje kao:

R(/j) n D(/"2) * 0, gdje f l označava presjek skupova a 0 prazan skup.

Slično je opisan WAW hazard u kojem se vidokrug instrukcije i1 i vidokrug instrukcije i2

(djelomično) preklapaju - obje instrukcije upisuju operande (rezultate) u iste registre. Nepravilan rezultat dobiva se ako se u protočnoj strukturi dogodi da instrukcija /7 završi nakon instrukcije i2 jer će se u tom slučaju u registru koji dijele obje instrukcije naći "stari" rezultat. Čitatelj će se zapitati kako je moguće da se instrukcija i ] koja se nalazi u program-skom slijedu prije instrukcije i2 završi nakon instrukcije koja joj slijedi u programu. Odgovor na to pitanje dobit ćemo vrlo brzo - riječ je o superskalarnoj arhitekturi procesora u kojoj postoje različite strategije izdavanja i izvršavanja instrukcija. Formalno WAW hazard opisu-je se kao:

R(/j) H R(/2) * 0.

Hazard vrste WAR je formalno definiran kao: D ( / , )nR( />0 .

Page 455: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

452 14. POGLAVLJE: PROTOČNOST

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. antide-pendency). Antizavisnost (kažemo: instrukcija i Je antizavisna o instrukciji i,) nastupa ako i2

slijedi instrukciji i1 u programskom slijedu i ako se vidokrug instrukcije i2 preklapa s dome-nom instrukcije i r

Hazardi u protočnoj strukturi koji nastupaju zbog međuzavisnosti podataka mogu se de-tektirati provjerom uvjeta R(/,) Pi D(/2) * 0, R(#r) f l R(y * 0 i D^) n R(/\,) * 0 tijekom pre-vođenja programa (statička detekcija hazarda) ili tijekom izvođenja programa (dinamička detekcija hazarda).

SI. 14.19 Grafički prikaz: a) domene i vidokruga instrukcije; b) RAW hazard; c) WAW hazard; d) WAR hazard

Značajke protočne arhitekture procesora su takve da je za hazard, koji nastupa zbog me-đuzavisnosti podataka, kritičan hazard vrste RAW.

Primjer 14.7.

Prikažimo hazard vrste RAW koji nastupa u instrukcijskoj protočnoj strukturi. Pretpostavimo ovakav slijed instrukcija za protočni model RISC procesora sa slike 14.12:

Page 456: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 453 I

loadr1,A ; R[1]<- M [A], dohvati operand s memorijske lokacije A i smjesti ga u reg. r l loadr2fB ;R[2]<-M[B] add r3, rl, r2 ; R[3] R[1 ] + R[2]

Slika 14.20 prikazuje očekivani slijed izvođenja prethodnog programskog odsječka.

loadrl,A IF ID EX ME WB

loadr2rB

addr3,r1,r2

IF ID EX ME WB

IF ID EX ME WB

l t 2t_ 3t 4t 5t 6t 7t

SL 14.20 Očekivani slijed izvođenja programskog odsječka (Primjer 14.7.)

No očekivani slijed izvođenja za potonji programski odsječak treba zbog podatkovnog hazarda biti preinačen. Obratimo pozornost na sljedeće: instrukcija odd r3, rl, r2 u pro-točnom se segmentu ID-OF dekodira (diskretni vremenski trenutak 4ts (slika 14.20)). Istodobno s dekodiranjem dohvaćaju se operandi smješteni u registrima rl i r2 (u skla-du s opisom djelovanja segmenta ID-OF). U segmentu EX (diskretni vremenski trenutak 5ts) izvršava se operacija zbrajanja raspoloživih operanada. No instrukcija load r1,A tek tijekom aktivnosti protočnog segmenta WB (trenutak 5ts) upisuje dohvaćeni operand s memorijske lokacije A u registar r r Instrukcija load r2, B tek u trenutku 6ts upisuje do-hvaćeni sadržaj s memorijske lokacije B u registar rr To znači da instrukcija addr3, rl, r2 u protočnom segmentu ID-OF (u trenutku 4ts) nije dohvatila (pročitala) 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 pogrešan: u protočnom segmentu EX (u vremenskom trenutku 5ts) zbrojit će se „stari" sadržaji 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 protočnoj strukturi

i 1 (

IF ID EX ME WB

1t 2t 3t 4t 5t 6t 7t 8t 9t

SI. 14.21 Rješenje hazarda vrste RAW umetanjem protočnih mjehurića

Page 457: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

454 14. POGLAVLJE: PROTOČNOST

Da bi se osigurao logički ispravan slijed instrukcija i time dobio rezultat jednak onom za neprotočnu izvedbu, mora se početak izvođenja instrukcija add r3, rl, r2 odgoditi za dvije periode signala vremenskog vođenja (2 x ts), odnosno izazvati zastoj u protočnoj strukturi. Dakle, prisutni podatkovni hazard vrste RAW imat će za posljedicu kašnjenje protoka instrukcija. Grafički ćemo to predočiti dvama protočnim mjehurićima (slika 14.21).

Umetanje protočnog mjehurića utječe nepovoljno na performansu procesora, odnosno povećava prosječan broj perioda signala vremenskog vođenja po instrukciji (CPI).

Procesori protočne arhitekture upotrebljavaju posebne tehnike isključivanja (engl. inter-lock) kojima rješavaju problem hazarda, ali i umanjuju ili u potpunosti uklanjaju zastoj (mjehuriće) u protočnoj strukturi. Tim se tehnikama i zahvatima (uporaba zaobilaznica (engl. bypass) u protočnoj strukturi) može broj protočnih mjehurića koje traži instrukci-ja load smanjiti na jedan, a zatim uporabom tzv. zakašnjelih load instrukcija i „pametnih* prevodioca u potpunosti ukloniti protočne mjehuriće. Jednostavna i uobičajena tehnika u većini RISC procesora jest uporaba zakašnjelih load instrukcija (engl. delayed load). Njezina osnovna zamisao sastoji se od sljedećeg: prevodilac tijekom prevođenja programa detek-tira potencijalni hazard tipa RAW i preuređuje slijed instrukcija neposredno nakon instruk-cije load, i to tako da neposredno nakon instrukcije load umeće instrukciju čije izvođenje ne ovisi o podatku koji se dohvaća instrukcijom load. Mjesto instrukcije u slijedu instrukci-ja neposredno nakon instrukcije load naziva se priključak load kašnjenja (engl. load-delay slot). Dakle, prevodilac umeće u priključak load kašnjenja instrukciju koja ne koristi poda-tak iz instrukcije load (koja joj neposredno prethodi).

U najjednostavnijem rješenju prevodilac umeće 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 ništa osim što troši procesorsko vrijeme i ima u ovom slučaju ulogu protočnog mjehurića kojim se osigurava pravilan rezultat izvođenja slijeda instrukcija u protočnoj strukturi.

Primjer 14.8.

Pri kažimo kako će se hazard RAW u programskom odsječku iz Primjera 14.7. riješiti zakaš-njelom load instrukcijom (uz pretpostavku da load instrukcija zahvaljujući preinakama u protočnoj strukturi zahtijeva samo jedan protočni mjehurić).

Izvorni programski odsječak: loadr1,A load r2, B addr3, rl, r2

prevodilac će umetanjem instrukcije nop u priključak load kašnjenja osigurati pravilan rezultat koji generira instrukcija add:

load rl, A load r2, B nop addr3,r1,r2

Slika 14.22 prikazuje slijed izvođenja instrukcija za tako preinačen programski odsječak.

Page 458: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 455 I

loadrhA

load r2, B

IF ID EX ME WB

IF ID EX ME WB

nop IF ID EX ME WB

IF ID EX ME WB addr3,rl,r2

— priključak load kašnjenja

SI. 14.22 Izvođenje programskog odsječka s umetnutom nop instrukcijom u priključak load kašnjenja

Bolje rješenje od onog iz Primjera 14.8. jest rješenje u kojem prevodilac u priključak load kašnjenja umeće, umjesto nop instrukcije, neka korisnu instrukciju iz slijeda instrukcija.

Primjer 14.9.

Programski odsječak, koji u višem programskom jeziku: C := A + B E := D

u zbirnom jeziku možemo napisati kao: loadr1,A load r2fB addr3,rhr2 load r4, D.

Instrukcija addr3, rl, r2 nalazi se u priključku load kašnjenja. No ona upotrebljava poda-tak koji se dohvaća neposrednom prethodnom instrukcijom load r2, B. Ovaj izvorni slijed instrukcija vodi hazardu vrste RAW.

Prevodilac mora detektirati takvu situaciju tijekom prevođenja i instrukciju add premje-stiti iz priključka. Umjesto umetanja nop instrukcije, prevodilac će, međutim, preurediti program tako da će u priključak smjestiti korisnu instrukciju load r4, D.

Prevodilac s takvim svojstvima obično se naziva optimirajući prevodilac. On će preurediti izvorni program na sljedeći način:

loadrhA load r2t B load r4, D add r3, r 1, r2.

Preuređenjem slijeda instrukcija, odnosno umetanjem korisne instrukcije load r4, D u priključak load kašnjenja, postignuta je glatkoća protoka instrukcija kroz protočnu struk-turu bez zastoja - nema više protočnih mjehurića.

Negativan utjecaj podatkovnog hazarda, odnosno zastoja u protočnoj strukturi, može se umanjiti uporabom tehnike koja se naziva otpremanje (engl. forwarding). (Opaska: ta se tehnika u literaturi još naziva i zaobilaženje (engl. bypassing).)

Page 459: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

456 14. POGLAVLJE: PROTOČNOST

Zamisao tehnike otpremanja ilustrirat ćemo jednim zahvatom u protočnoj strukturi (slika 14.12) kojim se ostvaruje povratna veza između protočnog registra EX/ME i ALU tako da se rezultat ALU operacije vraća u protočni segment EX. Jednako tako, treba ostvariti i po-vratnu vezu između protočnog registra ME/WB i ALU.Tim se povratnim vezama izravno ot-premaju podaci u protočni segment EX. Što se time dobiva? Ako posebni sklopovi kojima se podržava tehnika otpremanja (engl. forwarding hardware) detektiraju da rezultat pret-hodne ALU operacija sudjeluje kao operand u tekućoj ALU operaciji, onda će oni povrat-nom vezom otpremiti taj rezultat prethodne ALU operacije izravno u protočni segment EX, umjesto da se čeka na valjani operand koji će tek tijekom aktivnosti protočnog segmenta WB biti upisan u izvorišni registar u skupu registara i biti raspoloživ protočnom segmentu ID za tekuću ALU operaciju.

Primjer 14.10.

Za programski odsječak: 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 protočnom segmentu ID-OF dohvaća operande, tj. sadržaje registara r1 i r5. No pravi operand u registru rl bit će raspoloživ tek tijekom aktivnosti protočnog 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 protočna mjehuri-ća, odnosno instrukcija sub r4, rl, r5 mora biti u zastoju u vremenu trajanja triju perioda signala vremenskog vođenja (slika 14.23).

addr1,r2,r3 IF ID EX ME WB

subr4,r1,r5 O O O

and 16, rl, r7

IF ID EX ME WB

IF ID EX ME WB

i 1 1 ( ) 1 1 1 1 1 * 1t 2t 3t 4t 5t 6t 7t 8t 9t t s s s s s s s s s

SL 14.23 Zastoj u trajanju triju perioda signala vremenskog vođenja

Ako se uporabi tehnika otpremanja i iskoristi povratna veza između protočnog registra EX/ME i ALU jedinice u protočnom segmentu EX (slika 14.24), programski se odsječak izvodi bez zastoja u protoku. Na slici 14.24 koristimo malo drugačiji prikaz protočnih segmenata tako da smo nacrtali i protočne registre IF/ID, ID/EX, EX/ME i ME/WB jer na taj način možemo prikazati povratne veze.

Na slici 14.24 vidimo da se rezultat prve instrukcije (add rl, r2, r3) iz protočnog registra EX/ME izravno otprema u protočni segment EX gdje ima ulogu operanda u instrukci-ji sub. Uočavamo i da se zahvaljujući drugoj povratnoj vezi rezultat prve instrukcije iz protočnog registra ME/WB otprema u protočni segment EX za potrebe instrukcije add.

Page 460: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 457 I

Potrebno je naglasiti da se tehnikom otpremanja ne mogu riješiti svi oblici podatkovnog hazarda.

IF/ID ID/EX EX/ME ME/WB

add rl, r2, r3 IF ID

IF/ID

sub r4, rl, r5 IF ID IF ID

WB

ME/WB

IF/ID

addr6,r1,r7 IF ID IF w 1 w ID

zaobilaznice

SI. 14.24 Uporaba otpremanja i povratnih veza u protočnoj strukturi

14.7.3. UPRAVLJAČKI HAZARD

Upravljački hazard nastupa u protočnoj strukturi tijekom izvođenja instrukcija grananja ili drugih instrukcija koje tijekom faze IZVRŠI mijenjaju sadržaj programskog brojila PC (npr., instrukcije pozivanja potprograma ili vraćanja 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 sadržaj registra r1 i ako je sadržaj 0, grana se na ciljnu adresu koja je sadržana u registru r31 tako da se nakon instrukcije grananja izvodi instrukcija označena oznakom c. (U 3. poglavlju vidjeli smo da se sadržaj programskog brojila PC «- R[31] mijenja u fazi IZVRŠI instrukcije grana-nja.) Ako r1 nije jednako, onda se grananje ne obavlja te se program nastavlja instrukcijom add r2, r4, r5.

Kako izgleda izvođenje prethodnog programskog odsječka u protočnoj strukturi? Operacijski kod instrukcije grananja dekodira se tijekom aktivnosti u protočnom segmentu ID-OF. Istodobno se u ID-OF dohvaća sadržaj registra r31 (ciljna adresa grananja) i sadržaj registra r1 koji se ispituje je li 0. Ako je uvjet grananja zadovoljen (rl = 0), dohvaćeni se

Page 461: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

458 14. POGLAVLJE: PROTOČNOST

sadržaj registra r31 u sljedećem diskretnom vremenskom trenutku prosljeđuje protočnom segmentu EX i privremeno se smješta u protočni registar EX/ME (slika 14.12). Iz protočnog registra EX/ME ciljna se adresa upućuje u programsko brojilo PC. Dakle, tek je završetkom aktivnosti protočnog segmenta EX određena ciljna adresa c.

Istodobno s aktivnostima segmenta ID-OF koje se odnose na instrukciju brzr r31, r1, akti-van je protočni segment IF koji pribavlja instrukciju add r2, r4, r5 (vremenski trenutak 3ts; slika 14.25). Problemi vezani za upravljački hazard nastupaju u ovom trenutku. Instrukcija koja se pribavlja odmah nakon instrukcije grananja i koja bi se trebala nastaviti s izvođe-njem je u slučaju da je uvjet grananja zadovoljen "kriva" instrukcija: procesor bi tu trebao započeti pribavljanje instrukcije koja se nalazi na ciljnoj adresi c.

Najjednostavnija metoda rukovanja grananjem suspendira daljnje izvođenje instrukcije koja u programskom odsječku slijedi instrukciji uvjetnog grananja. Taj se postupak naziva "ispiranje protočne strukture" (engl. flushing) i zapravo odgovara umatanju dva protočna mjehurića u protočnu strukturu (slika 14.25). U diskretnom vremenskom trenutku ozna-čenom 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 protočnog segmenta IF, odnosno ponovo pribaviti instrukcija add r2, r4, r5.

addr1,r2,r3

brzrr3l,r1

IF ID EX ME WB

IF ID EX ME WB

add r2, r4, r5 IF ID IF ID EX ME WB

i 1 1 1 1 1 1 1 1 1 • It 2t 3t 4t 5t 6t 7 t 8 t 9 t t s s s s s s s s s

aktivnosti instrukcije čije će daljne izvođenje biti suspendirano

SI. 14.25 Izvođenje slijeda instrukcija u protočnoj strukturi, pri čemu instrukcija uvjetnog grananja prouzrokuje zastoj u trajanju dvije periode signala vremenskog vođenja

Dva protočna mjehurića za svaku instrukciju uvjetnog grananja nepovoljno utječu na performansu procesora. Vrijeme zastoja može se smanjiti na jednu periodu signala vre-menskog vođenja ako se računanje ciljne adrese grananja (za npr. relativno adresiranje s pomaknućem: PC = PC + pomaknuće) dodatnim zbrajalom izvede u protočnom segmentu ID-OF te ako se tako dobivena ciljna adresa proslijedi iz protočnog registra IF/ID-OF (slika 14.12). U tom se slučaju mora uvesti i povratna veza između protočnog registara IF/ID-OF i protočnog segmenta IF.

Zastoj u protočnoj strukturi u trajanju jedne periode signala vremenskog vođenja za svaku instrukciju grananja prouzrokuje smanjenje performanse procesora između 10% i 30% ovi-sno o učestalosti pojavljivanja instrukcija grananja u programu. Različitim metodama i teh-nikama rukovanja grananjem u protočnoj strukturi želi se umanjiti taj nepovoljni utjecaj na performansu procesora. Jedna od metoda je zakašnjelo grananje (engl. delayed branch).

Page 462: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 459 I

Ako je ciljna adresa raspoloživa nakon aktivnosti protočnog segmenta ID-OF tijekom in-strukcije grananja (u tom je slučaju potreban samo jedan protočni mjehurić), onda slično kao i kod instrukcije load za instrukciju koja neposredno slijedi instrukciji grananja kaže-mo da se nalazi u priključku branch kašnjenja (engl. branch delay slot). U najjednostavnijoj izvedbi prevodilac će tijekom prevođenja umetnuti u priključak 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 način samo osigurati pravilno izvođenje programa, ali negativan utjecaj na performansu procesora neće biti uklonjen.

Optimirajući prevodilac, umjesto nop instrukcije u priključku branch kašnjenja, umetnut će "korisnu" instrukciju koja se izvodi bez obzira na grananje. Na taj se način uklanja protočni mjehurić i postiže glatkoća protoka instrukcija.

Primjer 14,11.

Optimirajući prevodilac će uporabom metode zakašnjelog grananja slijed instrukcija: str22,27(r6) addr1tr2fr3 brzrr31fr1 add r2, r4, r5

c: sub r6, r7, r8

preinačiti u: addrl,r2fr3 brzrr31fr1 str22,27(r6) add r2, r4, r5

c: sub r6, r7f r8

Uočavamo da je korisna instrukcija st r22,27(r6) popunila priključak branch kašnje-nja i ona će se uvijek izvesti. Logički slijed instrukcija u programskom odsječku neće biti narušen.

Page 463: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

460 14. POGLAVLJE: PROTOČNOST

Zakašnjelo grananje ima kao posljedicu promjenu slijeda izvođenja instrukcija i on se razli-kuje od onog koji je određen u programu napisanom u zbirnom jeziku. Na primjer, pretpo-stavimo daje u programskom odsječku:

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" izvođenje programskog odsječka (bez zakašnjelog grananja) izgleda ovako: instrukcija 1 instrukcija 2 instrukcija 3 , instrukcija 4 ' instrukcija 13 instrukcija 14

Izvođenje programskog odsječka s zakašnjelim grananjem izgleda ovako: instrukcija 1 instrukcija 2 instrukcija 3 instrukcija 4 instrukcija 5 instrukcija 13 instrukcija 14

Uočavamo da će se instrukcija koja je u priključku branch kašnjenja uvijek izvesti, i to bez obzira hoće li se grananje dogoditi ili ne.

Page 464: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 461 I

14.7.4. PREDVIĐANJE GRANANJA

Jedan od načina rukovanja grananjem jest predviđanje grananja (engl. branch prediction). Predviđanje grananja može biti statičko ili dinamičko. Najjednostavnije statičko predviđanje grananja je ono koje pretpostavlja da se grananje neće nikad dogoditi. U tom se slučaju nastavlja s izvođenjem u protočnoj 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 neće nastaviti s izvođenjem i bit će "uklonjene" iz protočne strukture. Izvođenje će se nastaviti pribavlja-njem ciljne instrukcije.

Primjer 14.12.

Prikažimo kako izgleda izvođenje programskog odsječka ako se rabi statičko predviđa-nje grananja koje se temelji na pretpostavci da se grananje nikad neće dogoditi.

Prvo razmotrimo slučaj kada se zaista grananje neće dogoditi jer uvjet za grananje nije zadovoljen:

instrukcija i-1 IF ID EX ME WB

instrukcija i (grananje) IF ID EX ME WB

instrukcija i -f 7 IF ID EX ME WB

instrukcija i + 2 IF ID EX ME WB

instrukcija i + 3 IF ID EX ME WB

Vidimo daje protok instrukcija "gladak" i bez protočnih mjehurića.

Izvođenje u protočnoj strukturi kada se zaista dogodi grananje izgleda ovako:

instrukcija i- 7 IF ID EX ME WB

instrukcija i (grananje) IF ID EX ME WB

instrukcija i + 1 IF - - - -

ciljna instrukcija i IF ID EX ME WB

ciljna instrukcija i + 1 IF ID EX ME WB

Vidimo da se u tom slučaju u protočnoj strukturi pojavljuje jedan protočni mjehurić.

Analize programa pokazale su da je 37% svih uvjetnih grananja takvo da se ona neće dogoditi.

Druga statička metoda predviđanja grananja je ona koja pretpostavlja da će se grananje uvijek dogoditi - to se događa u 63% uvjetnih grananja. Ako je zaista tako, onda je statičko predviđanje na temelju pretpostavke da će se grananje uvijek dogoditi djelotvornije.

Jedna od statičkih metoda predviđanja grananja je ona koja upotrebljava operacijski kod instrukcija grananja za predviđanje hoće li se grananje dogoditi ili ne. Na primjer, instrukci-ja uvjetnog grananja koje se koriste za ostvarivanje programskih petlji (instrukcije vrste is-pitaj - dekrementiraj i granaj) imaju veći postotak ostvarenih grananja od instrukcija uvjet-

Page 465: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

nog grananja koje ispituju zastavicu preljeva (engl. overflow), dok instrukcija br (branch always - granaj uvijek; poglavlje 3.) ima, naravno, 100% ostvarenih grananja.

Dinamičko predviđanje grananja temelji se na povijesti grananja i predviđanje se obavlja dinamički tijekom izvođenja programa. Najjednostavnija dinamička shema upotrebljava poseban spremnik za predviđanje grananja (engl. dynamic branch-prediction buffer) koji sa-država tzv. tablicu povijesti grananja. Spremnik je zapravo mala priručna memorija s izrav-nim preslikavanjem kojoj se pristupa na temelju manje značajnog dijela adrese instrukcije grananja (npr. osam najmanje značajnih bitova adrese). U toj se memoriji pohranjuje bit predviđanja koji govori o tome je li posljednje grananje bilo izvedeno ili ne. Zapravo, na te-melju samo tog bita predviđanja ne može se točno znati je li predviđanje ispravno. Naime, može se dogoditi da čak i neka druga instrukcija grananja ima jednak manje značajan dio adrese koji služi za pristup spremniku.

No to i nije tako važno. Ako je pretpostavka o grananju ispravna, započinje pribavljanje u predviđenom smjeru. Ako se pokaže da je predviđanje bilo pogrešno, bit predviđanja se mijenja: ako je bio 1, postaje 0 i obratno. Ovakva shema predviđanja grananja u kojoj se ko-risti jedan bit govori o tome je li se dogodilo samo posljednje grananje. Odluka o grananju je u tom slučaju jednostavna - ona će biti jednaka odluci koja joj je prethodila.

Umjesto sheme s jednim bitom predviđanja koja se temelji na povijesti grananja koja seže samo do zadnjeg prošlog grananja, koriste se shema s dva bita predviđanja (engl. two-bit branch history) koja uzimaju u obzir povijest dvaju uzastopnih prošlih grananja. S dva bita predviđanja 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 gra-nanje ne bude ostvareno, bitovi predviđanja određuju stanje 10 u kojem se još uvijek pred-

Page 466: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 463 I

viđa 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 predviđanje da se grananje neće dogoditi.

Složenije sheme dinamičkog predviđanja grananja uporabom posebnih spremnika ciljnih adresa izvedenih kao asocijativne memorije (9. poglavlje) (engl. branch-target buffer) omo-gućuju određivanje ciljne adrese tijekom aktivnosti u protočnom segmentu IF. Dakle, prije dekodiranja operacijskog koda instrukcije! Na taj se način ostvaruje grananje bez ikakva zastoja u protočnoj strukturi (engl. zero-cycle branch).

14.7.5. PRECIZNI I NEPRECIZNI PREKID (IZNIMKA)

Jedan od uzroka narušavanja "glatkog" instrukcijskog toka kroz protočnu strukturu jest i prekid ili iznimka. Kada se dogodi prekid ili iznimka, obično očekujemo da se završi tekuća instrukcija te da se, nakon obaveznih kućanskih poslova (13. poglavlje), prenese upravljanje na prvu instrukciju prekidnog programa ili programa za obradu iznimke. No u protočnoj se strukturi nalazi veći broj instrukcija u različitim fazama izvođenja i tu se pojavljuje problem. Ako se zaista želi nakon završetka tekuće instrukcije (tijekom koje je generiran zahtjev za prekid) prenijeti upravljanje na prekidni program, potrebno je zaustaviti "dotok" instrukcija u protočnu strukturu, obustaviti daljnje napredovanje preostalih instrukcija u protočnoj strukturi, zapamtiti njihovo stanje, isprazniti protočnu strukturu ("isprati je", engl. flushing) te, konačno, nakon toga protočnu strukturu početi puniti instrukcijama prekidnog progra-ma. Ovaj način posluživanja prekida odgovara prekidu koji se naziva precizni prekid (engl. precise interrupt, precise exception) i zahtijeva dodatne potrebne kućanske poslove.

U procesorima s protočnom strukturom koristi se i tzv. neprecizni prekid ili neprecizna iznim-ka (engl. imprecise interrupt, imprecise exception), kod kojeg prekid nije precizno pridružen instrukciji tijekom koje je zahtjev za prekid generiran, već se izvršavaju sve instrukcije koje su se nalazile u protočnoj strukturi da bi se tek nakon toga poslužio prekid (ili iznimka). Na taj se način smanjuje količina kućanskih poslova koje treba obaviti procesor, ali se produ-ljuje vrijeme odgovora na prekid ili iznimku.

14.8. SUPERSKALARNI PROCESORI U potpoglavlju 14.6. upotrijebili smo termin "superskalarni procesor". On označava poseb-nu vrstu procesora koji se koriste tzv. skalarnim tipovima podataka - podacima jednostav-ne strukture kao što su, na primjer, cjelobrojni (integer) ili brojevi s pomičnim zarezom [floating-point). Za razliku od skalarnih tipova podataka, postoje i strukturni tipovi podata-ka kao što su vektori, dvo- i višedimenzionalna polja podataka, nizovi i skupovi. Ovim smo objasnili drugi dio kovanice "superskalarni". Osnovna značajka superskalarnih procesora je daje prosječan broj perioda po instrukciji (CPI) manji od jedan. To znači da se tijekom jedne periode signala vremenskog vođenja izdaje i izvršava veći broj instrukcija. Superskalarni procesor iskorištava implicitni paralelizam koji je sadržan u slijedno napisanim programi-ma - slijedu instrukcija koje bi se trebale izvršavati 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 veći broj izvršnih jedinica od kojih je svaka izvedena kao protočna. Dakle, superskalarni procesor je procesor koji ima veći broj nezavisnih instrukcijskih protočnih struktura. Slika 14.27 prikazuje načelnu orga-nizaciju superskalarnog procesora. Ona se, u našem slučaju, sastoji od jednog zajedničkog

Page 467: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

464 14. POGLAVLJE: PROTOČNOST

protočnog segmenta zaduženog za istodobno pribavljanje tri instrukcije (jedinice za pri-bavljanje instrukcija; slika 14.27) i tri nezavisne instrukcijske protočne strukture.

I ovdje možemo naći analogiju s industrijskom proizvodnjom na tekućoj vrpci - to je or-ganizacija proizvodnje koja ima veći broj međusobno nezavisnih tekućih vrpci na kojima se istodobno odvijaju proizvodni procesi. Na izlazu se, tada, umjesto jednog gotovog pro-izvoda u jedinici vremena, pojavljuje q > 1 gotovih proizvoda.

protočni segment 1

instl ^ tx, ME, WB, tx, ME, WB, w

jedinica za pribavljanje instrukcija

jedinica za pribavljanje instrukcija

inst2 ^ tx2 ME2 WB2

jedinica za pribavljanje instrukcija

w tx2 w ME2 WB2

jedinica za pribavljanje instrukcija

in5t3 ^ ILJ3 tx3 ME3 WB3 ILJ3 w tx3 w ME3 "W WB3

SI. 14.27 Načelna organizacija superskalarnog procesora

Slika 14.28 prikazuje izvođenje slijeda instrukcija u superskalarnom procesoru. Vidimo da istodobno u svakoj periodi signala vremenskog vođenja iz tri nezavisne protočne strukture "izlaze" rezultati triju instrukcija (CPI = 1/3).

instrukcija 1 IF ID, EX1 ME1 WB,

instrukcija 2 IF EX2 ME2 WB2

instrukcija 3 IF EX3 ME3 WB3

instrukcija 4 IF I D i E X i ME1 WB1

instrukcija 5 IF EX2 ME2 WB2

instrukcija 6 IF EX3 ME3 WB3

instrukcija 7 IF EX1 ME, WB,

instrukcija 8 IF EX2 ME2 WB2

instrukcija 9 IF EX3 ME3 WB3

instrukcija 10 IF EX, ME, WB,

instrukcija 11 IF EX2 ME2 WB2

instrukcija 12 IF ©3 EX3 ME3 WB3

i i i i i i i i i ^

1t 2t 3t 4t 5t ... t s s s s s

SI. 14.28 Izvođenje slijeda instrukcija u superskalarnom procesoru

Page 468: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 465 I

Slika 14.29 prikazuje organizaciju superskalarnog RISC procesora. Procesor ima više izvrš-nih jedinica koje su ostvarene kao nezavisne protočne strukture. Procesor ima posebnu upravljačku jedinicu PCU (program control unit). Ona se sastoji od protočnog segmenata IF, protočnog segmenta ID i instrukcijskog spremnika. Njezin je zadatak pribavljanje i dekodi-ranje nekoliko instrukcija istodobno. Jednako tako, upravljačka jedinica PCU istodobno ot-prema, preko instrukcijskog spremnika, veći broj (q> 1) instrukcija u različite specijalizirane izvršne jedinice. Izvršne su jedinice po funkciji specijalizirane (slika 14.29):

• load/store jedinica (sastoji se od 4 protočna segmenta), zadužena je za izvođenje load i store instrukcija,

• dvije nezavisne jedinice za cjelobrojne operacije (engl. integer unit) izvedene s tri protočna segmenta. Obje jedinice imaju pristup višepristupnom skupu cjelobrojnih registara (engl. integer registerfile),

• jedinica za zbrajanje brojeva s pomičnim zarezom s pet protočnih segmenata, • jedinica za množenje brojeva s pomičnim zarezom s pet protočnih segmenata.

Jedinice za operacije brojevima s pomičnim zarezom također zajednički dijele više-pristupni skup fioating-point registara.

L. J

Legenda: RR (Read Register) - čitanje registra Alig (Aiign) - poravnanje CA {Computer Address) - računanje adrese Pack {Package) - normalizacija L (Load) - dohvat operanada ADD (Add) - zbrajanje mantisa WR {Write Register) - upis u registar MUL (Multiply) - množenje EX (Exclude) - izvrši ALU operaciju SP (Sum Product) - zbrajanje

SI. 14.29 Organizacija superskalarnog RISC procesora

Teoretski, superskalarni procesor, koji npr. ima q protočnih jedinica, pri čemu je svaka od njih n protočnih segmenata, ima faktor ubrzanja obrade jednakg x n u odnosu na procesor

Page 469: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

466 14. POGLAVLJE: PROTOČNOST

koji ne koristi paralelizam na razini instrukcija. Na primjer, superskalarni procesor organiza-cije prikazane na slici 14.27 imao bi faktor ubrzanja obrade jednak gx n = 3 x 5 = 15.

Performansa superskalarnog procesora ovisi o mogućnosti istodobnog izvođenja više in-strukcija. Istodobno izvođenje većeg broja instrukcija podrazumijeva paralelizam na razini instrukcija (ILP - Instruction-level Parallelism) koji je prisutan u programu koji se izvršava. Kažemo da postoji paralelizam na razini instrukcija kada su instrukcije u slijedu nezavisne i kada se mogu izvesti paralelno, odnosno kada slijed njihova izvođenja ne utječe na ko-načni rezultat.

Ako izvođenje instrukcija promatramo u protočnoj strukturi, onda su dvije instrukcije pa-ralelne ako se mogu izvršiti istodobno u protočnoj strukturi bez izazivanja zastoja, ali uz pretpostavku da protočna struktura ima dovoljno resursa, odnosno da ne postoji struktur-ni hazard.

Primjer 14.13.

Promotrimo sljedeća dva programska odsječka: Programski odsječak 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 odsječku 1 nezavisne su - rezultat njihova izvođenja ne ovisi o redoslijedu njihova izvođenja i zato se mogu izvesti paralelno.

Programski odsječak 2 addi r3, r3, 1 ; R[3] <- R[3] + 1 addr4f r3, r2 ; R[4] R[3] + R[2] strO, (r4) ; M[R[4]] R [0]

Instrukcije u programskom odsječku nisu nezavisne - druga instrukcija ovisi o rezultatu prve instrukcije, treća instrukcija ovisi o rezultatu druge instrukcije. Promijenjeni redo-slijed izvođenja instrukcija ili paralelno izvođenje navedenih triju instrukcija neće dat rezultat jednak slijednom izvođenju.

U superskalarnim procesorima koriste se kombinacija optimirajućih prevodioca i sklopov-skih tehnika da bi se djelotvorno iskoristio paralelizam na razini instrukcija.

Razina paralelizma određena je sljedećim ograničenjima: • stvarna zavisnost podataka (engl. true data dependency), • postupkovna zavisnost (engl. procedural dependency), • resursni konflikti, • izlazna zavisnost (engl. output dependency), • antizavisnost (engl. antidependency).

Ograničenje stvarne zavisnosti podataka ogleda se u tome što rezultat sljedeće instrukcije izravno ovisi o rezultatu jedne ili više prethodnih instrukcija. Na primjer,

add rl, r2, r3 ; R[1 ]«- R[2] + R[3] str1,(r5) ;M[R[5]]«-R[l]

Page 470: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 467 I

druga se instrukcija može pribaviti i dekodirati prije prve instrukcije, ali se ne smije i izvršiti prije nego što se izvrši 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 instruk-cija grananja. Ciljne instrukcije koje slijede grananju postupkovno ovise o grananju i ne smiju se izvesti sve dok se ne obavi grananje. U potpoglavlju Upravljački hazard vidjeli smo da je ovaj oblik zavisnosti prisutan i kod skalarnih protočnih procesora.

Resursni konflikti su u superskalarnoj arhitekturi izraženiji nego kod skalarnih protočnih procesora. U ovom se slučaju istodobno veći broj instrukcija može natjecati za isti resurs (npr. memoriju, izvršnu jedinicu, registre i si.). Resursni konflikt u superskalarnoj arhitekturi rješava se uvišestručavanjem resursa (npr. uporaba dviju ili više cjelobrojnih izvršnih jedi-nica, dviju ili više jedinica za operacije brojevima s pomičnim zarezom i si.).

Izlaznu zavisnost možemo ilustrirati na jednostavnom primjeru programskog odsječka: 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 između prve i druge instrukcije postoji stvarna zavisnost podataka - dru-ga instrukcija treba rezultat prve instrukcije jer ga koristi kao operand. Četvrta instrukcija ovisi o rezultatu treće instrukcije (treba čekati rezultat koji će treća instrukcija upisati u re-gistar r3). Između prve i treće instrukcije ne postoji stvarna zavisnost podataka - instrukcija addir3, r5,1 ne treba rezultat instrukcije add r3, r3, r5. No ako se treća instrukcija izvrši prije negoli se izvrši prva instrukcija, tada će četvrta instrukcija dohvatiti pogrešan operand iz registra r3. To znači da se treća instrukcija mora izvršiti nakon prve instrukcije da bi izlazna vrijednost (sadržaj registra r3) bila ispravna. Ne smije se dopustiti da se treća instrukcija izvrši prije prve jer u tom slučaju rezultat u registru r3 neće biti ispravan (WAW hazard -izlazna zavisnost).

Antizavisnost predstavlja hazard vrste WAR koji smo definirali u odjeljku Podatkovni ha-zard. Na primjer, u programskom odsječku:

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 izvrši prije instrukcije mul rl, r2, r3, dobit će se pogrešan rezultat. Napomenimo da se u stručnoj literaturi WAW i WAR nazivaju još i lažne zavisnosti (engl. false dependency) koje se mogu ukloniti preimenovanjem registara (engl. register renaming).

Primjer 14.14.

U programskom odsječku: mul rl, r2, r3 addr2/r4/r5

u kojem su dvije instrukcije antizavisne, prevodilac nakon što detektira zavisnost WAR može preimenovanjem registra r2 u npr. registar r6 ukloniti WAR zavisnost:

Page 471: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

468 14. POGLAVLJE: PROTOČNOST

rnul rl, r2, r3 add r6, r4, r5

Slično je i sa zavisnosti WAW, U programskom odsječku: 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 način dobivaju dvije instrukcije koje su potpuno nezavisne i zato se mogu izve-sti paralelno.

Potrebno je istaknuti da se preimenovanje registara može temeljiti na tzv. statičkoj izved-bi koja se upotrebljava tijekom postupka prevođenja programa (izvode je optimiraju-či prevodioci), ali i na dinamičkoj izvedbi koja se koristi tijekom izvršavanja programa u superskalarnom procesoru. Jasno je da ova druga izvedba zahtijeva dodatne sklopove - registre, međuspremnike i dodatne putove podataka. Superskalarni procesori kao što su K5, PentiumPro, R 10000, PowerPC 620 i mnogi drugi koriste dinamičku izvedbu prei-menovanja registara.

14.8.1. NAČINI IZDAVANJA I ZAVRŠAVANJA INSTRUKCIJA U SUPERSKALARNOJ ARHITEKTURI PROCESORA

Performansa superskalarnih procesora ne ovisi samo o broju nezavisnih protočnih struk-tura i broju protočnih segmenata u svakoj od njih, već i o tome je li procesor sposoban naći paralelizam na razini instrukcija i u skladu s njim uspješno koordinirati pribavljanje, dekodiranje i izvršavanje više instrukcija istodobno.

U literaturi se koristi izraz "izdavanje instrukcija" (engl. instruction issue) i on podrazumi-jeva postupak započinjanja izvođenja instrukcija u funkcijskim jedinicama procesora. Superskalarni procesor ima ugrađene mehanizme kojima može "gledati unaprijed" (engl. lookahead, iookahead window) u odnosu na trenutnu instrukciju koja se izvršava i otkriti instrukcije koje se zahvaljujući tomu što su međusobno nezavisne mogu paralelno izvoditi. Na taj se način pokušava riješiti problem koji nastupa kada su susjedne ili bliske instrukcije u programskom slijedu zavisne i kada se zbog toga moraju umetati protočni mjehurići, odnosno odgađati izvođenje pojedinih instrukcija, i to bez obzira što postoje višestruke funkcijske jedinice.

Završavanje instrukcije (engl. instruction completion) odnosi se na trenutak kada je instruk-cija okončana.

Tri su osnovna načina izdavanja i završavanja instrukcija u superskalarnoj arhitekturi i oni se temelje na redoslijedu u kojem se instrukcije pribavljaju, redoslijedu u kojem one zavr-šavaju te redoslijedu u kojem instrukcije mijenjaju sadržaje registara i memorijskih lokacija:

• izdavanje i završavanje instrukcija u redoslijedu u kojem se pojavljuju i u programu (engl. in-order issue with in-order completion),

Page 472: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 469 I

• izdavanje instrukcija u redoslijedu, ali sa završavanjem izvan redoslijeda (engl. in-or-der issue with out-of-order completion),

• izdavanje i završavanje instrukcija izvan redoslijeda (engl. out-of-order issue with out-of-order completion).

Vrlo se često u literaturi koristi termin "izvođenje instrukcija izvan redoslijeda"(engl. out-of-order execution) koji se, općenito, odnosi na posljednji navedeni način izvođenja instrukcija.

Najjednostavniji način izdavanja i izvršavanja instrukcija je onaj koji točno odgovara redo-slijedu pojavljivanja instrukcija u programu. Taj se način u superskalarnoj arhitekturi pro-cesora ne koristi, a rijetko ga možemo naći i u arhitekturi "običnih" protočnih procesora (podsjetimo se optimirajućih prevodioca koji koriste priključak lood kašnjenja).

Izdavanje instrukcija u redoslijedu, ali sa završavanjem izvan redoslijeda koristi se u skalar-nim RISC i superskalarnim procesorima. Na taj se način postiže djelotvornije iskorištenje protočnih segmenata u pojedinim protočnim strukturama.

Kad procesor koristi tehniku izdavanja instrukcija u redoslijedu njihova pojavljivanja u programu, on samo može dekodirati instrukcije do točke kad je utvrđena međuzavisnost podataka ili resursni konflikt. Nakon toga se druge instrukcije u slijedu ne mogu pribavljati i dekodirati sve dok se konflikt ili međuzavisnost ne razriješi.

Da bi se omogućilo izdavanje instrukcija izvan redoslijeda, nužno je odvojiti protočni se-gment za dekodiranje od protočnog segmenta za izvršavanje. To se postiže uporabom instrukcijskog međuspremnika koji se još naziva i instrukcijski prozor (engl. instruction win-dow) kao što je to prikazano na slici 14,29. U instrukcijski spremnik smještaju se dekodirane instrukcije koje čekaju na izvršavanje. Sve dok instrukcijski spremnik nije pun, procesor pribavlja i dekodira instrukcije. Instrukcijski se spremnik prazni tako da se iz njega izdaju (upućuju) instrukcije u izvršavanje, i to ako su ispunjena dva sljedeća uvjeta:

i) funkcijska jedinica koju zahtijeva instrukcija je slobodna, ii) nema resursnih konflikata niti međuzavisnosti podataka za tu instrukciju.

Zahvaljujući uporabi instrukcijskog spremnika superskalarni procesor ima sposobnost "gledanja unaprijed" (engl. lookahead) i može naći nezavisne instrukcije u programskom slijedu i izdavati ih izvan redoslijeda u kojem se one nalaze u programu. Instrukcijski spre-mnik nije dodatni protočni segment, već služi procesoru tako da mu pruža dovoljno infor-macija o instrukciji na temelju kojih on odlučuje o njenziom izdavanju, odnosno upućiva-nju u izvršnu protočnu strukturu.

Uporaba najopćenitijeg načina izdavanja i završavanja instrukcija na način "izdavanje i završavanje instrukcija izvan redoslijeda" dopušta najdjelotvornije iskorištenje protočnih struktura u superskalarnom procesoru, ali se suočava i s novim problemom, a to je nova antizavisnost podataka.

Primjer 14.15.

Ilustrirajmo kako različiti načini izdavanja i završavanja instrukcija utječu na performansu superskalarnog procesora, koji ima dvije protočne strukture za pribavljanje i dekodiranje instrukcija (IF1 - ID1 i IF2 - ID2), instrukcijski spremnik te četiri protočne funkcijske jedinice (logičku jedinicu, jedinicu load, zbrajalo, množilo) (slika 14.30), za programski odsječak koji se sastoji od šest instrukcija:

Page 473: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

470 14. POGLAVLJE: PROTOČNOST

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] R[3] R[4] R[6] R[6]

M[A] R[2] + R[1] R[3] + R[4] R[4] * R[5] R[6] R[6] * R[7]

1 1 ID,

podaci iz priručne memorije podataka

logička jedinica

instrukcije iz instrukcijske

priručne memorije

mstrukcijski spremnik množilo

1 i

M, M2 M, M2

zbrajalo

A1 A2 A1 A2

iD.

SL 1430 Superskalarni procesor (Primjer 14.74.)

Prije negoli prikažemo aktivnosti u protočnim segmentima dviju protočnih struktura, pokušajmo utvrditi vrste zavisnosti podataka koje rabe prethodno navedene instrukcije.

Instrukcija i2 koristi operand iz registra r1 koji upisuje instrukcija /? - riječ je o RAW, odno-sno 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: instrukci-ja i4 upisuje rezultat u registar r4 koji sadržava operand instrukcije i3.

Odnos između instrukcija /5 i / J e takav da postoji stvarna zavisnost podataka jer je vido-krug instrukcije i5 domena instrukcije /6: instrukcija i6 koristi sadržaj registra r6 kao ope-rand. 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 izvođenje programskog odsječka kada se instrukcije izdaju i zavr-šavaju redoslijedom u kojem se pojavljuju i u programu. Protočna struktura 1 (IF1 - IDt) koristi se instrukcijama iJf i3 i /5. Protočna struktura 2 (IF2 - ID2) radi s instrukcijama i2, i4 i /6. Zbog stvarne zavisnosti instrukcija i2 mora pričekati jednu periodu signala vremenskog vođenja 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

Page 474: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 471 I

vremenskog vođenja da bi se sačuvalo završavanje instrukcija u slijedu. Instrukcija i6

treba čekati prije nego što se izda rezultat koji generira instrukcija On će biti raspoloživ nakon aktivnosti protočnog segmenta E zahvaljujući povratnoj vezi između segmenata.

periode signala vremenskog vođenja

protočna struktura 1 (IFflD,)

protočna struktura 2 (IF -ID)

111 1 r — 1 !

t

1

j ]

!

i I

>F, ID, E2 WB, 1

j ]

!

i I

IF2 I D 2 A, WB2

1

j ]

| IF, ID, A, A2 WB7

j ]

i

i

i i

I F 2 ID2 M, M2 M3 WB2

j ]

i

i

i i

i 1

>F, 'D, E, WB,

i

i

i i

i 1 >F2 "D3 M, M2 M3 WB2

i

i

i i

i 1

i

SI. 14,31 Izdavanje i završavanje instrukcija u redoslijedu u kojem se pojavljuju i u programu

Slika 14.32 a) prikazuje slučaj izdavanja instrukcija u redoslijedu, ali sa završavanjem izvan redoslijeda. Slika 14.32 b) prikazuje redoslijed završavanja instrukcija. Vidimo da je i u ovom slučaju potrebno devet perioda signala vremenskog vođenja, ali da instrukcija i5 ne mora čekati dvije periode vremenskog vođenja i može završiti prije instrukcija /3 i i4

koje su potpuno neovisne o instrukciji / r

periode signala vremenskog vođenja

1 2 3 4 5 6 7 8 9

2 4—» VI c

V> !

a)

periode:

protočna struktura 1

protočna struktura 2

1 [ 1 i y , , ,

i i

i

1

IF, ID, WB,

y , , ,

i i

i

1

I F 2 ID2 A, A. WB2

i

i

1

i i

IF, ID, A, A2 WB,

i

i

1

i i

IF2 I D 2 M, M2 M3 WB2

i

i

1 i j

i i

j

i

IF, ID, E, WB,

i

i

1 i j

i i

j

i

•F2 ID2 M, M2 M3 WB2

i j

i i

j

i 1

j5 l3

>2 >4 «6

b)

SI. 14,32 Izdavanje instrukcija u redoslijedu, ali sa završavanjem izvan redoslijeda

Page 475: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

472 14. POGLAVLJE: PROTOČNOST

Slika 14.33 a) prikazuje izvođenje istog programskog odsječka na način izdavanja i zavr-šavanja instrukcija izvan redoslijeda. Možemo primijetiti da jeza izvođenje programskog odsječka potreban manji broj perioda signala vremenskog vođenja te da je povećana iskoristivost protočnih segmenata u odnosu na prethodna dva načina izdavanja i završa-vanja instrukcija. Slike 14.33 b) i c) prikazuju redoslijed izdavanja i završavanja instrukcija.

periode signala vremenskog vođenja 1 2 3 4 5 6 7 8

£ 3

! | i | I 1 1

3 IF, ID, A2 WB1

i

4 I F 2 I D 2 M, M2 M3 WB2 j

5 IF, ID, E,

1 ' F 2 I D 2 F2 WB2

I

6 IF, ID, M, M2 M3

2 >F2 I D 2 A, A2 WB2 i

i r 1 ! i

a)

periode:

protočna struktura 1

protočna struktura 2

>3 's

>4 >2

b)

periode:

protočna struktura 1

protočna struktura 2

j3 's j6

'4 '2

c)

SI. 14.33 Izdavanje i završavanje instrukcija izvan redoslijeda a), redoslijed izdavanja instrukcija b), redoslijed završavanja instrukcija c)

Page 476: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

15. POGLAVLJE

VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGRENI I GRAFIČKI PROCESORI

.1. OBLICI I RAZINE PARALELIZMA U 14. poglavlju upoznali smo se s protočnim procesorima, superskalarnim procesorima i paralelizmom na razini instrukcija ILP - Instruction-level Parallelism. U relativno kratkoj povijesti računarskih sustava možemo uočiti različite razine paralelizma koje se pojavlju-ju u procesoru, odnosno računarskom sustavu. Do približno druge polovine osamdese-tih godina prošlog stoljeća prevladavajući oblik paralelizma temeljio se na bitovnoj razini (engl. bit-level) koji se očitovao u povećanju duljine riječi 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 povećanje izravno adresirljivog prostora (prije nego izravno povećanje performanse procesora) te poboljšani načini prikaza i rukovanja brojevima s pomičnim zarezom.

Kada govorimo o paralelizmu, razlikujemo dva različita konteksta: raspoloživi paralelizam u programima i iskorišteni paralelizam koji se pojavljuje tijekom izvođenja programa.

Raspoloživi paralelizam sadržan je u biti samog problema i njegovom programskom rješe-nju. Može se govoriti o raspoloživom funkcijskom paralelizmu i raspoloživom podatkovnom paralelizmu. Raspoloživi funkcijski paralelizam očituje se u logičkom rješenju problema i po-javljuje se u formalnim opisima rješenja problema kao što su dijagrami toka, grafovi toka podataka (engl. dataflow graph), programi i si.

Raspoloživi podatkovni paralelizam izvire iz same prirode podataka svojstvenih problemu i iz struktura podataka koje se rabe u rješenju problema te koje dopuštaju paralelne ope-racije 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.

Raspoloživi funkcijski paralelizam može se predočiti različitim razinama koje se izražavaju sa zrnatosti. Zrnatost je mjera količine računanja ili obrade u programu. Na primjer, kao mjera se može uzeti broj instrukcija u nekom programskom odsječku ili programskom se-gmentu. Na taj način zrnatost određuje osnovni programski segment koji je izabran za paralelnu obradu. Razlikujemo četiri razine raspoloživog funkcijskog paralelizma:

Page 477: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

474 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI 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 progra-ma možemo 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 može izvesti istodobno s svim ostalim iteracijama tako da se njihovo izvođenje preklapa (istodobno se mogu izvesti 1000 zbrajanja x[i] = x[i] +y[i]; i = 1,2,..., 1000).

Raspoloživi funkcijski paralelizam mogu iskoristiti arhitektura procesora i operacijski su-stav da bi se povećala brzina obrade. Razine iskorištenog paralelizma su sljedeće:

• paralelizam na razini instrukcija, • paralelizam na razini d ret vi (engl. thread), • paralelizam na razini procesa, • paralelizam na korisničkoj razini.

Paralelizam na razini instrukcija isključivo se koristi u arhitekturi procesora, dok se pa-ralelizam na razini dretvi i procesa iskorištava u arhitekturi, ali i u operacijskom sustavu. Paralelizam na korisničkoj razini rabi se u operacijskim sustavima, npr. višezadaćni rad (engl. multitasking), višeprogramski rad (engl. multiprogramming) i obrada dodjeljivanjem vremena (engl. time-sharing).

Podatkovni se paralelizam može iskoristiti na dva načina: • izravno uporabom arhitektura procesora koje podržavaju paralelne operacije na po-

datkovnim elementima (npr. procesori SIMD arhitekture, procesori upravljani tokom podataka (engl. data-flow)),

• pretvorbom raspoloživog podatkovnog paralelizma u funkcijski tako da se upora-bom naredbi iz viših programskih jezika označe paralelno izvodljive operacije na po-datkovnim elementima.

15.1.1. PARALELIZAM NA RAZINI INSTRUKCIJA

Od druge polovine osamdesetih godina pa sve do sredine devedesetih godina prošlog stoljeća prevladava paralelizam na razini instrukcija koji je jednako značajan za RISC i CISC procesore. Ova razina paralelizma podloga je za izvedbu superskalarnih procesora koji ko-riste različite načine izdavanja, izvršavanja i završavanja instrukcija (14. poglavlje). Slika 15.1 prikazuje udio ukupnog broja perioda signala vremenskog vođenja (izražen u %) ovisno o broju izdanih instrukcija. Podaci prikazani na slikama 15.1 i 15.2 dobiveni su kao srednja

Page 478: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 475 I

vrijednost brojnih ispitnih programa (engl. benchmark) čije je izvođenje simulirano virtu-alnim tzv. agresivno oblikovanim strojevima (engl. aggressive machine design) koji mogu paralelno izvesti veći broj instrukcija pod idealnim uvjetima u kojima nema ograničenja raspoloživih resursa i uz uvjet savršenog predviđanja grananja. Vidimo daje paralelizam na razini tri instrukcije najveći, 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 vođenja troši na strogo sekvencijalne instrukcije. Uz sve to vidimo da pet ili više instrukcija može biti izdano istodobno za svega 10 % slučajeva. Ovaj dijagram može poslužiti i kao putokaz u dizajnu novih arhitektura i za donošenje odluke o tome koliko nezavisnih protočnih struktura treba implementirati u procesoru. Ujedno nam govori o ograničenjima paralelizma na razini instrukcija.

c OJ rs o > o> o c (U E

c CT1 "O o

35

30

25

20 o o> O c o.

o S

15

10 • I I I n I I I

0 1 2 3 4 5 6 7 broj izdanih instrukcija

SI. 15.1 Odnos udjela broja perioda signala vremenskog vođenja (%) ovisno o broju instrukcija koje se mogu paralelno izvesti

Slika 15.2 prikazuje odnos između faktora ubrzanja obrade i broja izdanih instrukcija u jednoj periodi signala vremenskog vođenja. Vidimo da je faktor ubrzanja obrade najveći i iznosi između 2.5 i 3.0 za 15 istodobno izdanih instrukcija. Možemo primijetiti da se već na-kon pet izdanih instrukcija u jednoj periodi signala vremenskog vođenja postiže ubrzanje obrade veće od 2.5 puta.

Paralelizam na razini instrukcija je implicitni paralelizam koji prevodilac ili sklopovlje pro-cesora mora detektirati u slijednom programu - statički tijekom prevođenja programa ili dinamički tijekom izvođenja samog programa. Važno je naglasiti da je program, koji se izvodi tako da koristi višestruko izdavanje instrukcija i protočnu strukturu (superskalarnost i protočnost), izvorno napisan u sekvencijalnom obliku i predviđa izvođenje instrukciju po instrukciju.

Page 479: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

476 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

broj izdanih instrukcija po periodi

SI. 15.2 Odnos između faktora ubrzanja obrade i broja izdanih instrukcija u jednoj periodi signala vremenskog vođenja

Djelotvornije iskorištenje paralelizma na razini instrukcija može se postići uporabom ek-splicitnog ili izravno izraženog paralelizma u samoj specifikaciji instrukcije ili niza instrukci-ja. Ovaj pristup u arhitekturi računarskog sustava poznat je pod nazivom VLIW (Very Long Instruction Word) arhitektura ili EPIC (Explicitly Parallel Instruction Computing).

Arhitektura procesora s vrlo dugim instrukcijskim riječima (VLIW) temelji se na tri usta-ljena koncepta koja već poznajemo - horizontalno mikroprogramiranje, superskalarna obrada i višestrukost funkcijskih jedinica. Osnovna značajka VLIW procesora je vrlo duga instrukcijska riječ kojom se određuju višestruke operacije koje se mogu istodobno izvesti. Programer ili prevodilac (što je češći slučaj) izravno specificiraju operacije koje se mogu izvesti istodobno. Ovakav pristup izgleda logičniji od onog u kojem se paralelizam "skriva" u sekvencijalno napisanom programskom kodu da bi se nakon toga trebao otkriti i iskori-stiti. Slika 15.3 a) prikazuje arhitekturu VLIW procesora, a slika 15.3 b) format VLIW instruk-cije. Procesor ima višestruke funkcijske jedinice koje dijele veliki zajednički skup registara. Svaka funkcijska jedinica izvedena je kao protočna jedinica. Operacije koje se izvode isto-dobno u funkcijskim jedinicama sinkronizirane su VLIW instrukcijama koje su duljine npr. 256,512 ili 1024 bita. Međusobna zavisnost operacija i ograničenja u pogledu broja raspo-loživih funkcijskih jedinica uzimaju se u obzir pri"pakiranju"tih operacija u VLIW instrukciju tako da je sklopovlje jednostavnije - ne treba otkrivati (detektirati) i izlučivati paralelne operacije te utvrđivati međusobnu zavisnost između njih. Veća 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.

Page 480: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 477 I

memorija

load/ store

jedinica

O O FP

zbrajalo 1

veliki skup registara opće namjene

— n — n —

FP zbrajalo 2

FP množilo

O cjelobrojna

jedinica jedinica grananja

a)

FP množenje

load/store FP zbrajanje FP zbrajanje grananje cjelobrojna operacija b)

SI. 15.3 Arhitektura VLIW procesora a) i format VLIW instrukcije b)

Vrlo sličan koncept eksplicitnog izražavanja paralelizma, nazvan EPIC, korišten je u arhi-tekturi 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 opće namjene. Procesor ima i skup od 128 registara za brojeve s po-mičnim zarezom (duljine 82 bita), 64 1-bitnih tzv. predikatnih registara i 8 registara (svaki duljine 64 bita) koji se koriste za grananje. Procesor ima veći broj izvršnih jedinica različitih namjena (cjelobrojne jedinice, jedinice za operacije brojevima s pomičnim za rezom, jedi ni-če grananja, jedinice load/store, multimedijske jedinice). Slika 15.4 prikazuje pojednostav-ljeno sklopovsku organizaciju procesora IA-64 arhitekture. Ako je usporedimo s organiza-cijom VLIW procesora (slika 15.3), možemo uočiti vrlo veliku sličnost, tako da se IA-64 može opravdano smatrati arhitekturom koja se temelji na VLIW/EPIC pristupu.

memorija

128 64-bitna registra opće

namjene

128 FP registra (82-bitni)

64 pred i katna registra (1-bitni)

A-

izvršna jedinica

O O

izvršna jedinica

O

izvršna jedinica izvršna jedinica

izvršna jedinica izvršna jedinica izvršna jedinica izvršna jedinica

SI. 15.4 Pojednostavnjeni prikaz sklopovske organizacije procesora IA-64 arhitekture

Page 481: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

478 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

Instrukcijska riječ za procesor IA-64 arhitekture duljine je 128 bita i sadržava tri instrukcije tipa RISC koje tvore tzv. "svežanj" (engl. bundle). Svaka od instrukcija u svežnju duljine je 41 bita pa u svežnju tri instrukcije zauzimaju 123 bita, dok se preostalih 5 bitova koriste kao predložak koji sadržava informaciju o njihovom raspoređivanju (engl. scheduling). Točnije, 41-bitna"instrukcija"zapravo nije prava instrukcija (u Intelu je nazivaju slog {engl. sy//afc>/e)) jer se ona mora kombinirati s 5-bitnim predloškom. Predložak određuje tipove instrukcija u svežnju i određuje koje će se instrukcije izvesti pora/e/no. Tipovi instrukcija u svežnju mogu biti sljedeći:

• A tip - odnosi se na cjelobrojnu jedinicu (l-unit) i određuje operacije cjelobrojne ALU jedinice (npr. zbroji, oduzmi, logičko I, logičko ILI, usporedi),

• I tip - odnosi se na cjelobrojnu jedinicu, ali određuje operacije koje nisu cjelobrojne aritmetičko-logičke, već se odnose na tzv. multimedijske operacije kao što multime-dijski posmak, ispitivanje bitova, premještanje,

• M tip - odnosi se na jedinicu za pristup memoriji (M-unit) i određuje load i store in-strukcije za cjelobrojne i FP (floating-point) registre,

• F tip - odnosi se na jedinicu za operacije brojevima s pomičnim zarezom (F-unit) i određuje operacije brojevima s pomičnim zarezom,

• B tip - odnosi se na jedinicu grananja (B-unit) i određuje uvjetno, bezuvjetno grana-nje te pozive potprograma,

• L + X tip - izvršavaju se u jedinici grananja ili u cjelobrojnoj jedinici i određuju mješo-vite i specijalne instrukcije (npr. nop, stop).

Specifikacija paralelnosti u izvođenju instrukcija može se proširiti i na dijelove nekoliko svežanja. Zahvaljujući 5-bitnom predlošku pojednostavljenje postupak dekodiranja i izda-vanja instrukcija. Mogući su sljedeći načini kombiniranja triju instrukcija u svežnju (ovisno o binarnom uzorka u 5-bitnom predlošku):

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 svežnju izvode slijedno.

Jedna od najvažnijih metoda za nalaženje i djelotvorno iskorištenje paralelizma na razini instrukcija u protočnoj i superskalarnoj arhitekturi procesora je metoda špekulacije ili naga-đanja (engl. speculation). Pojednostavljeno, špekulacija je pristup koji dopušta prevodiocu ili procesoru nagađanje o svojstvima i/ili ishodu neke instrukcije, i to tako da omogući za-počinjanje ostalih instrukcija koje mogu ovisiti o instrukciji na koju se špekulacija odnosi. Na primjer, špekulacija se može odnositi na to da instrukcija store koja prethodi instrukciji load neće referenci rati istu memorijsku lokaciju (nagađanje da nije riječ o RAW hazardu). Drugi primjer je špekulacija o ishodu instrukcije uvjetnog grananja i na temelju tog naga-đanja upućuju se instrukcije u protočnu strukturu.

Slaba strana špekulacije su poteškoće koje nastupaju ako je nagađanje bilo pogrešno. Mehanizam špekulativnog izvršavanja instrukcija mora predvidjeti postupke koji se od-nose na provjeru toga je li nagađanje bilo ispravno i postupke koji se trebaju provesti da bi se vratili na stanje koje je bilo prije špekulativnog izvođenja (engl. back out process) ako se pokaže da je nagađanje bilo pogrešno. Špekulacija se provodi uporabom prevodioca ili sklopovljem procesora, a u novije se vrijeme kombiniraju obje izvedbe.

Page 482: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 479 I

15.1.2. PARALELIZAM NA RAZINI DRETVII PROCESA

Dretvu (engl. thread) objasnit ćemo pomoću vrlo jednostavnog modela računala J. Backusa (poglavlje 2.) u kojem se računalo može predočiti memorijskom jedinicom, procesorom i spojnim putom između njih. U memorijskoj su jedinici pohranjeni program (niz strojnih instrukcija) i podaci, a uz to je predviđen i dio memorijskog prostora za (sistemski) stog.

Pretpostavimo da u našem jednostavnom modelu procesor može pristupiti cijelom adre-snom prostoru koji je određen kapacitetom memorije tako da instrukcije mogu dohvatiti podatke koji su smješteni bilo gdje u memorijskoj jedinici. Program se izvodi tako da se u programsko brojilo upiše adresa prve instrukcije programa i procesor započinje izvođenje programa instrukciju po instrukciju (poglavlje 2.). Izvođenje programa možemo promatrati kao da procesor provlači kroz program (slijed instrukcija) "nit" ili instrukcijsku dretvu, ili kra-će, samo dretvu.

Slika 15.5 ilustrira izvođenje programa prikazano dretvom.

SI. 15.5 Prikaz izvođenja programa dretvom

Da bi se u potpunosti razumio paralelizam na razini dretvi, potrebno je uputiti na razliku između dretve i računalnog procesa, ili kraće, procesa.

Iz operacijskih sustava znademo daje program koji se izvršava organiziran u jedan ili u više procesa. Proces se sastoji barem od jedne instrukcijske dretve (može imati i veći broj dretvi) te predstavlja izvršljivi program ili programski odsječak kojem su dodijeljeni programsko brojilo, adresni prostor, registri i varijable. U tom se smislu može smatrati da svaki proces

Page 483: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

480 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

ima svoj virtualni procesor. Ako je riječ o jednoprocesorskom računarskom sustavu, tada se mora stvarni procesor dijeliti između više procesa prijenosom upravljanja s procesa na pro-ces (engl. process switching). U tom se slučaju samo jedan proces izvodi u vremenu, ali zbog brzog prospajanja s procesa na proces, svi procesi promatrani u nešto duljem vremenskom intervalu napreduju. Na taj se način ostvaruje višeprogramski način rada (engl. multipro-gramming). Slika 15.6 a) prikazuje višeprogramski način rada - u memoriji su pohranjena tri programa A, B i C, pri čemu se svaki od njih može 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

a)

L b)

procesi

vrijeme

c)

SI. 15.6 Višeprogramski način 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

Računalnom procesu su, budući da je riječ o procesu u vremenu, pridruženi i neki vremen-ski atributi kao što su trenutak početka izvođenja, trenuci zaustavljanja izvođenja, trenutak završetka izvođenja i trajanje izvođenja, lako je proces samostalna i nezavisna jedinka sa svojim programskim brojilom, memorijom i registrima, on je vrlo često u interakciji s ostalim

Page 484: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 481 I

procesima (npr. jedan od procesa generira izlazne rezultate koji su ulazni podaci za neki dru-gi proces). S obzirom na interakciju procesa i njihovu međuzavisnost te raspoloživost stvar-nog procesora, možemo identificirati tri stanja u kojima se proces može 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 izvođenje 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 događaj, čeka na istek nekog vremenskog intervala).

Potonja stanja procesa jednoznačno su određena ako se proces sastoji samo od jedne dre-tve. Slika 15.7 prikazuje dijagram stanja procesa i uvjete prijelaza iz stanja u stanje.

1 proces se blokira (npr. čeka na vanjski događaj ili završetak ulazno-izlazne operacije) 2 raspoređivač procesa izabrao je drugi proces 3 raspoređivač procesa izabrao je upravo ovaj proces 4 ulaz je postao raspoloživ - blokirani proces prelazi u pripravno stanje

SL 15.7 Dijagram stanja procesa

Operacijski sustav održava tabiicuprocesa (engl.process table) u kojoj svaki element tablice odgovara jednom procesu i sadržava informaciju potrebnu za rukovanje procesom (engl. process management), informaciju potrebnu za rukovanje memorijom (engl. memory ma-nagement) te informaciju potrebnu za rukovanje datotekama (engl. file management). Na primjer, tablica sadržava informaciju o stanju registara dodijeljenih procesu, sadržaju pro-gramskog brojila, sadržaju statusnog registra, sadržaju kazala stoga, vremenima početka i trajanja procesa, vremenu korištenja procesora (engl. CPU time) i si. Dio koji se odnosi na rukovanje memorijom sadržava informaciju o dodijeljenom memorijskom prostoru, ka-zaljkama na programski segment i segment podataka i si. Dio koji se odnosi tia rukovanje datotekama sadržava informaciju o stanju otvorenih datoteka, informaciju o korijenskom direktoriju (engl. root directory) i radnom direktoriju (engl. working directory) te opis da-toteka. Posebni procesi namijenjeni su U/l uređajima i njihovoj komunikaciji s proceso-rom uporabom prekida ili iznimke. Aktivnosti tijekom prekidnog procesa opisali smo u 13. poglavlju.

Page 485: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

482 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

Važno je naglasiti da se sva informacija koja se odnosi na određeni proces mora pohraniti natrag u tablicu procesa, i to svaki put kada proces iz aktivnog stanja prelazi u stanje pri-pravnosti ili blokiranosti.

Do sada smo razmatrali višeprogramski način rada u kojem je više procesa dijelilo u vreme-nu jedan stvarni procesor. No ako računarski sustav ima više procesora, tj. ako je višepro-cesorski sustav, onda je moguće svakom procesu, umjesto virtualnog procesora, dodijeliti procesor i tada se međusobno nezavisni procesi mogu izvoditi istodobno.

Proces u najjednostavnijem obliku ima samo jednu dretvu ili nit instrukcija i jedno pro-gramsko brojilo.

Današnji višenamjenski računarski sustavi, odnosno njihovi operacijski sustavi podržava-ju veći broj d ret vi u jednom procesu. Takve se dretve nazivaju još i "laki" procesi (engl. li-ghtweight process) jer se pri prijenosu upravljanja s dretve na dretvu ne zahtijeva pohrana onoliko velike količine informacije kao kod procesa te su i kućanski poslovi manji.

Pokušajmo uputiti na razlike između procesa i dretve. Pretpostavimo da u računarskom su-stavu imamo tri procesa: A, B i C. Svaki od njih ima svoju jednu dretvu i programsko brojilo te svaki od procesa djeluje u tri različita adresna prostora (slika 15.8).

računarski sustav

SI. 15.8 Tri procesa u računarskom sustavu

Slika 15.9 prikazuje jedan proces u računarskom sustavu koji ima tri dretve. One, kao i u slu-čaju "klasičnog" procesa imaju svaka svoje programsko brojilo, ali dijele zajednički adresni prostor koji je dodijeljen tom procesu.

računarski sustav

SI. 15.9 Jedan proces s tri dretve

proces

Page 486: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 483 I

Prisutnost više 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 identifi-katoru dretve, pripadnosti dretve određenom procesu, stanju i prioritetu dretve, početnoj adresi dretvenog adresnog prostora, sadržaju programskog brojila te sadržaju registara. Sadržaj programskog brojila, sadržaji registara i stanje dretve čine kontekst dretve koji je potreban jer se izvođenje dretve poput procesa može suspendirati, a nakon izvjesnog vre-mena ponovo aktivirati. Dretva može biti, jednako kao i proces, u aktivnom stanju, stanju pripravnosti i stanju blokiranosti.

Stanje procesa s više dretvi ne može se jednoznačno opisati kao u slučaju procesa s jed-nom dretvom. Na primjer, jedna dretva procesa može biti u aktivnom stanju, dvije u stanju pripravnosti, a jedna u stanju blokiranosti - u kojem je stanju taj proces?

Proces s više dretvi može se izvoditi u jednoprocesorskom računarskom sustavu tako da se procesor dodjeljuje naizmjence pojedinim dretvama. U tom se slučaju prenosi upravljanje s dretve na dretvu uz uzastopno pohranjivanje i obnavljanje konteksta dretvi. U slučaju izvođenja više dretvi u jednoprocesorskom sustavu teško se može očekivati ubrzanje od-vijanja procesa. Ono je moguće ako procesor izvodi neku drugu dretvu, dok druga zbog nekog razloga mora čekati.

Potpuno iskorištenje paralelizma na razini dretvi postiže se u višeprocesorskom računar-skom sustavu u kojem je svaki procesor zadužen za jednu od više raspoloživih dretvi u procesu. U tom slučaju govorimo o višedretvenom radu (engl. multithreading).

(Opaska: u stručnoj se literaturi često izraz "višedretveni rad" (engl. multithreading) upo-trebljava za izvođenje više dretvi na jednom procesoru (odnosno većem broju virtualnih procesora) analogno nazivu "višeprogramski rad" (engl. multiprogramming). Izvođenje ve-ćeg broja dretvi u višeprocesorskom sustavu često se naziva i "hiperdretveni rad" (engl. hyperth reading).)

Tvrtka Intel koristi kovanicu "hiperdretvena tehnološka arhitektura" (engl. hyperthreading technology architecture) pod kojom se podrazumijeva da se jedan fizički procesor pojavlju-je kao veći broj logičkih procesora. Svakom logičkom procesoru dodijeljena je jedna kopija stanja i oni dijele jedan skup izvršnih resursa fizičkog procesora. Ovakav se pristup koristi u tzv. Intelovoj Net burst mikroarhitekturi.Tako definirana "hi perdretvenost" više odgovara nazivu "višedretvenost".

Paralelizam na razini dretvi (engl. thread-levelparalellism;TLP) bitna je alternativa paraleliz-mu na razini instrukcija (ILP) jer se može 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 arhi-tekture procesora međusobno ne isključuju, štoviše, one se podupiru i doprinose većoj performansi procesora (vidi 15.4).

15.1.3. PARALELIZAM NA KORISNIČKOJ RAZINI

Paralelizam na korisničkoj razini korišten je u obliku višeprogramskog rada u kojem se pro-cesor djelotvorno koristi tako da se oblikuju pripravni procesi koji pripadaju različitim kori-sničkim programima. U trenutku kada proces koji se izvodi postane blokiran zato što čeka određen događaj, npr. završetak U/l operacije, procesor se dodjeljuje drugom pripravnom procesu. Višezadaćni način rada (engl. multitasking) sličan je višeprogramskom načinu rada

Page 487: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

484 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

te ga stoga neki autori poistovjećuju s njim, međutim, postoji jedna razlika - istodobno aktivni procesi u višezadaćnom načinu rada pripadaju istom korisniku, štoviše vrlo često pripadaju i istom korisničkom programu.

Pseudoparalelizam na korisničkoj razini postiže se rodom u vremenskojpodjeii (engl. time-sharing) kojim se nudi istodobna usluga većem broju korisnika koji pristupaju računarskom sustavu terminalima. I u ovom se slučaju oblikuju pripravni procesi za svakog korisnika te se raspoređuju tako da se svakom korisniku jamči odgovarajuće vrijeme odgovora (engl. response time). Da bi se to postiglo, svakom se od procesa naizmjence dodjeljuje procesor-sko vrijeme i ostali računalni resursi.

15.1.4. PODATKOVNI PARALELIZAM

Podatkovni paralelizam može se dvojako iskoristiti. Jedna je mogućnost izravne uporabe podatkovnog paralelizma namjenskom arhitekturom koja dopušta paralelne operacije na podatkovnim elementima, npr. SIMD (Single Instruction Stream Multiple Data Stream) arhi-tektura ili arhitektura upravljana tokom podataka (engl. dataflow) (vidi 1. poglavlje). Druga je mogućnost pretvorba podatkovnog paralelizma u funkcijski paralelizam tako da se na slijedan način izraze paralelno izvodljive operacije na podatkovnim elementima upora-bom jezičnog konstrukta za specifikaciju programskih petlji (vidi Primjer 15.1.).

SIMD računarski sustavi iskorištavaju podatkovni paralelizam djelovanjem na vektorima ili dvo- i višedimenzionalnim poljima podataka. Na primjer, jednom SIMD instrukcijom mogu se obaviti zbrajanja 64 para raspoloživih operanada u 64 aritmetičko-logičke jedinice, i to u jednoj periodi signala vremenskog vođenja. Podatkovni paralelizam se u SIMD arhitekturi iskorištava zahvaljujući brojnim izvršnim jedinicama koje su sinkronizirane tako da djeluju paralelno i sve izvode istu operaciju koja je određena jednom instrukcijom. Izvorna moti-vacija razvoja SIMD arhitekture bila je smanjenje troškova realizacije upravljačkih jedinica za brojne izvršne jedinice te smanjenje zahtjeva za kapacitetom programske memorije. Programska memorija SIMD računala sadržava samo jedan primjerak programa - slijeda instrukcija.

Osnovne zamisli SIMD nalazimo i u arhitekturi suvremenih procesora. Mnogi od njih imaju SIMD instrukcije koje su namijenjene poboljšanju performansi za multimedijske aplikacije. One omogućuju istodobno izvođenje jedne operacije na većem broju operanada u većem broju aritmetičko-logičkih jedinica (ALU) ili omogućuju veći broj operacija na većem broju operanda koji su duljine manje od duljine riječi (engl. subword operand) kojima se koristi procesor. U ovom drugom slučaju (kraći operandi - duljine podriječi) SIMD instrukcije re-konfiguriraju jednu ALU koja se koristi dugim riječima u više manjih ALU koje djeluju pa-ralelno na kraćim 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 odgovarajuće duljine. Kraći se operandi, u odnosu na 32- i 64-bitne duljine riječi, upravo pojavljuju u multimedijskim aplikacijama, tako se na primjer podaci duljine 8 bita kori-ste za definiranje vrijednosti primarnih boja (R, G, B) slikovnih elemenata (engl. pixel) ili se 16-bitni podaci koriste za prikaz vrijednosti zvučnog uzorka.

Page 488: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 485 I

Primjer 15.2.

Godine 1997. tvrtka Intel je proširila skup instrukcija za procesore Pentium i PentiumPro s 57 SIMD instrukcija koje su nazvane MMX (Multi Media Extensions). One djeluju na vi-šestrukim kraćim cjelobrojnim operandima i djelotvorno te uz nisku cijenu iskorištavaju podatkovni paralelizam. MMX instrukcije djeluju nad skupom 64-bitnih registara koji su nazvani MMX registri. Zapravo, MMX instrukcije koriste osam registara za podatke s po-mičnim zarezom (floating-point registre) koji se koriste kao MMX 64-bitni registri. Svaki od 64-bitna MMX registra sadržava ili jedan 64-bitni cijeli broj ili vektor koji se sastoji od 2, 4 ili 8 cjelobrojnih podataka (sukcesivno kraćih operanada, npr. osam 8-bitnih ope-ranada). Različite aritmetičke i logičke MMX instrukcije te MMX instrukcije za uspoređi-vanje podataka i njihovo preuređenje 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 izvođenje MMX instrukcije za paralelno zbrajanje dvaju 8-kom-ponentnih vektora pri čemu su onemogućeni bitovi prijenosa na granicama pojedinih 8-bitnih operanada.

64-bitni MMX registar

64-bitni MMX registar

a b / c d e f 9 h

63

/ 0

i j k 1 m n 0 P

63

T T

w T

y

1 r

w T Y

V 0

a+i b+j c+k d+l e+m f+n g+o h+p

SI. 15.10 Izvođenje MMX 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 djelu-ju na osam dodatnih registara duljine 128 bita i podržavaju operacije jednostruke točnosti podacima s pomičnim zarezom (engl. single precision floating-point operation) tako da se istodobno mogu izvesti četiri operacije s pomičnim zarezom na četiri 32-bitna operanda, Proširenje skupa SIMD instrukcija nastavilo se pa su 2001. skupu instrukcija dodane nove 144 instrukcije SSE2 koje podržavaju SIMD operacije na 64-bitnim podacima s pomičnim zarezom. Nakon toga slijede nova proširenja 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 proširuju s 128 na 256 bita duljine te se skup SIMD instrukcija povećava na više od tri stotine!

Page 489: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

486 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

15.2. PARALELNE ARHITEKTURE: VIŠEPROCESORSKI SIMD, VEKTORSKI PROCESORI I MIMD SUSTAVI Raspoloživi funkcijski paralelizam i podatkovni paralelizam podloga su za ostvarivanje paralelnih računarskih arhitektura. Prema Flynnovoj klasifikaciji koja se temelji na parale-lizmu instrukcijskih tokova i tokova podataka (1. poglavlje), tri se kategorije arhitekture odnose na paralelne računarske 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) višeprocesorski sustav MISD koji bi se temeljio na izvornim značajkama te kategorije arhitekture.

U14. smo poglavlju vidjeli kako se paralelizam na razini instrukcija djelotvorno koristi u pro-točnim RISC i CISC procesorima koji se obično razvrstavaju u MISD kategoriju arhitekture.

Računarske sustave koji se temelje na većem broju procesora nazivat ćemo višeprocesorski sustavi. Oni s obzirom na kategoriju arhitekture (prema Flynnu) mogu biti višeprocesorski SIMD i višeprocesorski MIMD. Za višeprocesorske sustave MIMD koristiti ćemo uobičajen naziv - multiprocesori \li multiprocesorski sustavi.

15.2.1. VIŠEPROCESORSKI SIMD SUSTAVI

Osnovna značajka SIMD arhitekture je istodobno izvođenje iste instrukcije od strane većeg broja procesora koji djeluju na različitim, višestrukim tokovima podataka. Višeprocesorski SIMD računarski sustavi namijenjeni su rješavanju složenih problema s visokim stupnjem inherentnog paralelizma, prvenstveno sadržanog u podacima. Dakle, višeprocesorski SIMD sustavi iskorištavaju podatkovni paralelizam. Slika 15.11 prikazuje osnovnu organi-zaciju višeprocesorskog SIMD računarskog sustava. Ono ima jednu središnju upravljačku 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.

Središnja upravljačka jedinica pribavlja instrukcije iz jedne programske memorije i odašilje ih procesorima. Upravljačke jedinice procesora interpretiraju operacijski kod instrukcije i u skladu s njim izvode operaciju. Svi procesori djeluju istodobno i izvode istu instrukciju, ali nad različitim podacima koji se dohvaćaju iz privatnih memorija podataka. Instrukcije koje se istodobno izvode u svim procesorima definiraju aritmetičke i logičke operacije, opera-cije preusmjeravanja podataka, maskiranja i druge lokalne operacije. Na temelju operacije maskiranja određuju se procesori koji će u skladu s programom propustiti izvođenje neke zadane instrukcije.

Središnja upravljačka jedinica zapravo je računalo koje osim funkcije pribavljanja i odašilja-nja instrukcija izvodi instrukcije koje se odnose na skalarne operacije i na one za upravlja-nje tokom programa (npr. instrukcije uvjetnog grananja).

Svi su procesori identični i preko prospojne mreže (engl. interconnection netvvork) među-sobno izmjenjuju podatke.

Višeprocesorski SIMD sustav obično je povezan s računalom opće namjene - računalom domaćinom (engl. host computer) tako da je omogućeno punjenje programske memorije novim programom te punjenje lokalnih memorija novim podacima.

Page 490: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 487 I

procesor 1

procesor 2

procesor N

lokalna memori ja

podataka 1

lokalna memorija

podataka 2

lokalna memorija

podataka N

SI. 15.11 Organizacija višeprocesorskog SIMD računarskog sustava

-A V

prospojna mreža

računalo domaćin

SIMD arhitektura u nekoliko je posljednjih godina dobila na značenju, posebno u multime-dijskoj primjeni (naročito u računalnoj grafici) kao jedan od djelotvornih pristupa oblikova-nja trodimenzionalnih virtualnih okruženja u stvarnom vremenu. Utjecaj SIMD koncepata na arhitekturu procesora prikazali smo u Primjeru 15.2.

15.2.2. VEKTORSKI PROCESORI

Jedan od najdjelotvornijih načina iskorištavanja podatkovnog paralelizma postiže se u računarskim sustavima koji se svrstavaju u SIMD kategoriju arhitekture i temelje se na vektorskom procesoru (engl. vectorprocessor). Osnovna značajka 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 odre-đen pomoću pridruženog mu indeksa. Na primjer, vektor x koji se sastoji od 64 elemenata, od kojih je svaki tipa reai (floating-point ili broj s pomičnim zarezom) predočen je kom-ponentama x(l), x(2), x(3),..., x(63), x(64). Vektorski procesor obavlja aritmetičke i logičke operacije na operandima koji su vektori.

Page 491: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

488 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

Primjer 15.3.

Razmotrimo računanje sume dvaju 64-dimenzionalnih vektora x I y. Rezultat je vektor w: W = X + y .

U "običnom" jednoprocesorskom sustavu ta bi se operacija izvela na temelju program-skog odsječka:

for i = 1 to 64 w(i) := x(i) + y(i);

Vidimo da bi se računanje zbroja dvaju vektora izvelo u programskoj petlji, i to slijedno uzastopnim operacijama zbrajanja odgovarajućih komponenti obaju vektora.

U vektorskom procesoru gornja bi se operacija izvela samo jednom vektorskom instruk-cijom, odnosno instrukcijom tipa vektor-vektor kojoj su operandi dva 64-dimenzionalna vektora, a rezultat, koji se dobiva u vektorskoj aritmetičko-logičkoj jedinici (vektorska ALU), također je 64-dimenzionalni vektor. Vektorska ALU može istodobno zbrojiti sve odgovarajuće komponente obaju vektora. Svaki od vektora, koji predstavlja operand u vektorskoj instrukciji, smješten je u vektorski registar, npr. V., odnosno V., a rezultat se smješta u vektorski registar Vk.

Vektorska instrukcija specificira veliku količinu posla i jednakovrijedna je, u potonjem slu-čaju, cijeloj programskoj petlji. Takva vektorska instrukcija, koja predstavlja desetke ili stoti-ne "klasičnih" instrukcija, značajno je smanjila vrijeme potrebno za pribavljanje i dekodira-nje 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 množila brojevima s pomičnim zarezom (koji bi istodobno generirao sve produkte), u praksi se kori-sti protočno množilo s relativno velikim brojem protočnih segmenata te se svaki parcijalni rezultat (umnožak dviju komponenata) dobiva u svakoj periodi signala vremenskog vođe-nja čije je trajanje određeno vremenom obrade u jednom protočnom segmentu. Razlozi takva rješenja nisu tehnološka ograničenja, već ekonomski faktor.

Primjer 15.4.

Razmotrimo izvođenje vektorske instrukcije množenja dvaju 64-komponentnih vektora u 7-segmentnom protočnom množilu brojevima s pomičnim zarezom:

MULTV VI, V2, V3 ; V3 = VI * V2 Slika 15.12 prikazuje vremenski dijagram izvođenja gornje operacije. Svaka horizontal-na linija odgovara potpunoj obradi para komponenti 64 komponentnih vektora. Sa r je označeno vrijeme dohvata (čitanja) para komponenti vektora, a s w je označeno vrijeme upisa rezultata u odredišni vektorski registar V3 (za svaku njegovu komponentu).

Sukcesivni se parovi vektorskih komponenti vektora V1 i V2 učitavaju u množilo, i to započevši od t^ prvi se rezultat generira u trenutku t8 da bi se u sljedećem trenutku tg

upisao u prvi element odredišnog vektorskog registra V3. Nakon toga, nakon svakog se trenutka novi rezultat upisuje u odgovarajući element vektorskog registra V3.

Konačan se rezultat dobiva nakon 9 + 63 periode signala vremenskog vođenja.

Page 492: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 489 I

t 0 »i l2 l3 % t5 t6 t7 t8 t 9 t , 0 t „ t , 2 t u t1 4

I 1 1 1 1 » 1 i 1 I i i 1 \ h~

V,(1),V2(1) i - — i V30)=V1(1),V2(1)

V1(2),V2(2) _ ! _ h - ^ - l V3i2)=V1(2).V2(2)

VI (3), V2(3) i r i V3(3)=V1(3)«V2(3>

vrijeme

SI. 15.12 Vremenski dijagram izvođenja vektorske instrukcije MULTV V I , V2, V3

Vektorski se procesor može opisati kao objedinjenje sklopovskih resursa koje uključuje vektorske registre, skalarne registre, (registarska) brojila, protočne funkcijske jedinice te procesne elemente kojima se podržavaju vektorske operacije, odnosno aritmetičke i logičke operacije kojima su opera nd i vektori, ali i skala rne operacije te mješovite operacije s vekto-

w rima i skalarima. Slika 15.13 prikazuje pojednostavljenu shemu računarskog sustava koji se temelji na vektorskom procesoru. (Opaska: u literaturi se vrlo često umjesto "računarski sustav koji se temelji na vektorskom procesoru" koristi samo izraz "vektorski procesor")

Vektorski se procesor sastoji od tri podsustava: podsustava za pribavljanje instrukcija, ska-larnog te vektorskog podsustava. Podsustav za pribavljanje instrukcija dohvaća instrukcije iz instrukcijske priručne memorije i ovisno o tipu instrukcije distribuira instrukcije skalar-nom ili vektorskom podsustavu. Oba podsustava - skalarni i vektorski - djeluju istodob-no. Programski segmenti koji su bogati instrukcijama grananja podesniji su za izvođenje u skalarnom podsustavu. Skalarni podsustav podržava i računanje efektivnih adresa te rukovanje iznimkama. Vektorski podsustav namijenjen je izvođenju uniformnih, računski intenzivnih podatkovno paralelnih segmenata.

Skalarni se podsustav sastoji od instrukcijskih međuspremnika i odgovarajućih sklopova za izdavanje skalarnih instrukcija. Sastavni dio skalarnog podsustava je skalama priruč-na memorija, skup skalarnih registara te skalarne protočne funkcijske jedinice. U sklopu skalarnog podsustava nalazi se još i skup adresnih registara i adresna jedinica (nisu zbog jednostavnosti prikazani na slici 15.13). Tipične skalarne funkcijske jedinice su: protočno zbrajalo brojeva s pomičnim zarezom, protočno množilo brojeva s pomičnim zarezom i protočna jedinica za računanje recipročnih vrijednosti operanada. Nadalje, tu su protočno zbrajalo brojeva čvrstim zarezom, posmačni sklop i jedinica za logičke operacije. Adresna jedinica sastoji se od cjelobrojnog protočnog zbrajala i cjelobrojnog protočnog množila i tako podržava djelotvorno računanje efektivnih adresa.

Vektorski se podsustav sastoji od skupa vektorskih registara (npr. osam vektorskih regista-ra V(0) - V(7)), pri čemu svaki od registara sadržava broj riječi koji je potencija broja dva, na primjer, 64 ili 128 riječi. Primjerice, jedan vektorski registar sadržava stotinu dvadeset i osam 64-bitnih riječi. Skup vektorskih registara izveden je kao višeulazna i višeizlazna pri-stupna memorija tako da podržava preklapanje vektorskih operacija koje koriste različite registre. Tipične vektorske funkcijske jedinice su protočno zbrajalo za istodobno zbrajanje vektora čiji su elementi skalari predočeni kao brojevi sa čvrstim zarezom, protočni posmač-ni sklop i protočna logička jedinica. Vektorske load i store jedinice specijalizirane su za do-hvat i pohranu vektora iz/u memoriju. Memorijska jedinica izvedena je kao protočna tako

Page 493: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

490 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

da se riječi između (glavne) memorije i vektorskih registara premještaju brzinom koja od-govara brzini sklopovlja vektorskih funkcijskih jedinica (jedna riječ u jednoj periodi signala vremenskog vođenja). Budući da se vektorske operacije izvode na velikim skupovima po-dataka koji se, obično, ne podudaraju s kapacitetom priručne memorije, vektorske load i stote jedinice izravno su povezane s glavnom memorijom.

o E O) E ro c > J5 U)

vektorska load

jedinica

V(0)

vektorska store

jedinica

I.-

4 • - -

4 • - -

4 • - -

4 • - -

4 • - -

4 • - -

V<7)

- -

V<7) J

skup vektorskih registara V(0)-V(7)

skalama priručna

memorija

protočna funkcijska jedinica 1

z j

protočna funkcijska jedinica 2

=J * *

protočna funkcijska jedinica 3

z j *

vektorski podsustav

skup skalarnih registara

protočne funkcijske jedinice

skalarni podsustav

instrukcijska priručna memorija

jedinica za pribavljanje instrukcija

instrukcijski međuspremnici

podsustav za pribavljanje instrukcija

SI. 15.13 Vektorski procesor (pojednostavnjeni prikaz)

Page 494: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 491 I

Vektorski procesor podržava šest tipova vektorskih instrukcija: i) instrukcije vektor-vektor (slika 15.14 a)) - jedan ili dva vektorska operanda dohvaćaju

se iz vektorskih registara i ulaze u protočnu funkcijsku jedinicu te proizvode rezultat koji se u obliku vektora pohranjuje u jednom od vektorskih registara. Formalno, in-strukcija vektor-vektor može se opisati kao:

f - V . ^ V 1 i k

f V X V V '2: i j k'

gdje su V. i V. izvorišni vektorski registri, a Vk odredišni vektorski registar;

ii) instrukcije vektor-skalar (slika 15.14 b)) - jedan operand je vektor smješten u vektor-skom registru V., a drugi je operand skalar s smješten u jednom od skalarnih registara s. Formalno:

J

gdje je s skalarni registar; f : s. x V. V.,

3 j i k'

iii) instrukcija vektor-memorija (slika 15.14 c)) - odgovara operaciji dohvata vektora iz memorije (load) ili operaciji pohrane vektora u memoriju (store). Vektori se pohranju-ju ili dohvaćaju element po element između vektorskog registra i protočno izvedene memorije. Ovaj je tip instrukcija podržan vektorskom load i vektorskom store jedini-com (slika 15.13). Formalno se ovaj tip instrukcije može opisati kao:

, f4: M V. za operaciju load I f5: V. M za operaciju store,

gdje je M glavna memorija;

iv) instrukcija redukcije vektora. Formalno se taj tip instrukcije može opisati kao: f • V. s. 6 i }

f * V. x V s. 7 i j j

Na primjer, vektorske instrukcije koje odgovaraju funkciji f6 su traženje elementa u vektoru koji ima maksimalnu ili minimalnu vrijednost ili, pak, instrukcija koja računa 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 raspršivanja (engl. scatter) - tim se tipom in-strukcija uporabom dvaju vektorskih registara okupljaju vektorski elementi dohva-ćeni iz memorije ili se uporabom dvaju vektorskih registara raspršuju elementi vek-tora u memoriju. Formalno se instrukcije ovog tipa mogu opisati kao:

f8 :M->V,xV0 okupljanje f9: V1 x VQ M raspršivanje.

Operacijom okupljanja iz memorije se dohvaćaju elementi različiti od nule, i to tako da vektorski registar VQ sadržava indekse (kazaljke) na podatke u memoriji, a vektor-ski registar V1 sadržava podatke koji se iz memorije dohvaćaju i oblikuju tzv. rijetko popunjeni vektor. Slika 15.14 d) prikazuje operaciju okupljanja, pri čemu adresni re-gistar A0 sadržava adresu početne memorijske lokacije na kojoj se nalaze podaci, a pomoćni registar VL definira duljinu novonastalog vektora. Operacija raspršivanja obrnuta je operacija u odnosu na operaciju okupljanja. Pomoću nje se u memoriju pohranjuje rijetko popunjeni vektor;

Page 495: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

492 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

vi) instrukcije maskiranja - taj tip instrukcije upotrebljava vektor maskiranja Vm (engl. maskvector) pomoću kojeg sažima ili proširuje izvorni vektor. Formalno maskiranje može se opisati kao preslikavanje:

f in:V_xV - • V . 10 0 m 1

I u ovoj operaciji sudjeluje pomoćni registar VL koji pokazuje koliko elemenata registra V0

sudjeluje u operaciji maskiranja (slika 15.14 e)). Na slici 15.14 e) prikazanje primjer ope-racije maskiranja kojom se ispituje dvanaest komponenti ispitnog vektorskog registra V0. Ispituje se jesu li komponente vektora VQ različite 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 različiti od 0.

vektorski registar

V vektorski registar

V.

vektorski registar

V,

f

protočna funkcijska jedinica

- > - >

a)

vektorski vektorski registar registar

V- V i k

skaJarni registar

s j

protočna funkcijska jedinica

w

b)

SI. 15.14 a) i b) Prikaz tipova vektorskih instrukcija

Page 496: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 493 I

vektorski registar

M V/V,

pomoćni registar

V.

0100

adresni registar

A„

vektorski registar

V„

vektorski registar

V, adresa sadržaj

0600

0400 0250 0200

- 0100 0200

0101 0300 - 0102 0400

0103 0500

- 0104 0600

0105 0700

0106 0100 - 0107 0250

0108 0350

0109 010A

010B

d)

pomoćni registar

V,

12

010110011101...

maski rni registar

V

vektorski registar V0

{ispitivani registar)

0 1

0 1

1

0 0 1 1

1

0 1

e)

SI. 15.14 c), d) i e) Prikaz tipova vektorskih instrukcija

vektorski registar V1

(rezultat)

01_

03

04

07

08

09

11

Page 497: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

494 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

Paralelizam u izvođenju vektorskih instrukcija postiže se uporabom protočnih funkcijskih jedinica s velikim brojem protočnih segmenata ili većim brojem istorodnih funkcijskih je-dinica koje djeluju istodobno, ili kombinacijom uporabe većeg broja istorodnih funkcijskih jedinica koje su izvedene kao protočne s velikim brojem protočnih segmenata. Svaka od paralelnih protočnih jedinica naziva se traka (engl. lane).

Performansa vektorskog procesora povećava se uporabom metode koja se naziva više-tračna vektorska obrada (engl. multilane vector processing) kojom se dodatno iskorištava paralelizam u vektorskim operacijama tako da se jedna vektorska operacija porazdijeli na npr. četiri ili više traka. Slika 15.15 prikazuje primjer vektorske operacije zbrajanja u jed-notračnoj izvedbi (slika 15.15 a)) i u 4-tračnoj izvedbi (slika 15.15 b)) u kojoj se koriste četiri zbrajala koja djeluju paralelno. Vidimo da se jednotračnoj izvedbi tijekom jedne periode signala vremenskog vođenja generira jedan rezultat zbrajanja komponenti vektora x(i) i y(i), dok se u 4-tračnoj 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 vektor y

x(8) y(8)

x(7) y(7)

x(6) y(6)

x(5) y(5)

x(4) y(4)

x(3) y(3)

x(2) y(2)

x(l) y(D

x(5)

x(1) I V(5)

y(D

x(6) y(6)

x(2) y(2)

i r

protočno zbrajalo

+

grupa od četiri rezultata t i jekom jedne periode signala vremenskog vođenja

a)

SI. 15.15. Jednotračna i višetračna izvedba vektorske operacije

b)

Kako se vektorska obrada odražava na performansu procesora? Performansa takva proce-sora ovisi o mnogo faktora, na primjer o:

i) razini "vektorizacije" programa - koliki dio od ukupne obrade može biti izveden vek-torskim operacijama,

ii) prosječnoj duljini vektora, odnosno prosječnom broju komponenti vektora, iii) razini ulančavanja vektora - mogućnosti izdavanja sljedeće 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 može se prikazati njemu prilagođenim Amdahlovim zakonom, gdje je faktor ubrzanja obrade s u odnosu na skalarni procesor jednak:

Page 498: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5 = 1

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 različite vrijednosti f. Vidimo da se značaj na ubrzanja postižu kada je dio vektoriziranog koda veči od 0.8.

0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1,0 f

SI.15.16 Ilustracija Amdahlovog zakona za vektorske procesore

Primjer 15.5.

Ilustrirajmo izvođenje operacije y = sx + y, gdje su y i x 64 komponentni vektori pri čemu je svaka komponenta predočena u notaciji broja s pomičnim zarezom dvostruke točno-sti (duljine 64 bita), a s je skalar također dvostruke točnosti, na skalarnom procesoru i vektorskom procesoru.

Pretpostavit ćemo da se y, x i s nalaze na početku izvođenja pohranjeni u memoriji.tako da je početna adrese za x jednaka $s0, za y $s1, a za skalar s $sp.

Programski odsječak za skalarni procesor izgleda ovako: Id fO, $sp addi r4, $s0, #512

opet: Id f2,0($s0) mul f2, f0, f2 Id f4,0($s1) add f4,f2J4 st f4,0($s1) addi $s0, $s0, #8 addi $s1,$s1,#8

dohvati skalar s i pohrani ga u floating-point registar fO gornja adresa lokacije na kojoj se nalazi vektor x dohvati x(i) s x x(i) dohvati y(i) s x x( i) + y(i)

pohrani rezultat na y(i) inkrementiraj indeks za x inkrementiraj indeks za y

Page 499: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

sub $t0,r4,$s0 ; izračunaj granicu bne $tO, $zero, opet ; 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 odsječak za vektorskiprocesor izgleda ovako: Id f0, $sp ; dohvati skalar s i pohrani ga u floating-point registar fO Idv v1,0($s0) ; dohvati vektor x i pohrani ga u vektorski registar v i mulvs v2, vi, fO ; množenje vektora x sa skalarom s Idv v3,0($s1) ; dohvati vektor y i pohrani ga u vektorski registar v3 addv v4, v2, v3 ; pribroji y produktu sx stv v4,0($sV ; pohrani rezultat

Zanimljiva je usporedba gornjih programskih odsječaka. Vidimo da vektorski procesor značajno 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 učestalosti hazarda - za skalarni procesor svaka add instruk-cija 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 protočnu strukturu.

Zamisao vektorske obrade stara je više od pedeset godina. Prva vektorska superračuna-la pojavljuju se početkom sedamdesetih godina prošlog stoljeća (CDC STAR-100, TI ASC, 1972.), Cray-1 (1976.) da bi devedesetih godina na tržištu bio veći broj višeprocesorskih vektorskih superračunala (Cray Y-MP 816, Hitachi S-820, Fujitsu VP-2000, NEC Sx-8).

Danas vektorska obrada nije rezervirana samo za superračunala, već se pojavljuje i u proce-sorima koji se rabe u multimedijskim aplikacijama (procesori s instrukcijskim podskupovi-ma MMX, SSE, AltiVec) i procesorima namijenjenim igraćim konzolama. Razvoj tehnologije visokog stupnja integracije (VLSI) omogućio je izvedbe vektorskih mikroprocesora - vek-torskih procesora s jednom (npr. SPERT-II procesor) ili više 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 statičkim RAM-om umjesto priručne memorije. PPE i SPE povezani su pomoću visokopropusne (> 300 GB/s) prstenaste sabirnice podataka nazvane EIB - Element Interconnect Bus. U cilju maksimalnog iskorištenja 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 matematički intenzivnim zadacima kao što su generiranje ili transformacije trodimenzionalnih struktura podataka, kodiranje i dekodiranje MPEG toko-va (engl. MPEG stream), Fourierova analiza podataka i si.

Neke od arhitektonskih zamisli koje se koriste u procesoru Cell mogu se naći u vektorskom mikroprocesoru V-IRAM (Intelligent RAM) koji je 1997. realiziran na sveučilištu California,

Page 500: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 497 I

Berkeley. Vektorski mikroprocesor ima DRAM kapaciteta 96 MB (800 milijuna tranzisto-ra), procesor-jezgru s priručnom memorijom i vektorsku jedinicu. Vektorska se jedinica sastoji od dvije load i store jedinice te dvije protočne aritmetičke 64-bitne jedinice. Vršna 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 opera-cije (u tom se slučaju 64-bitna aritmetička jedinica transformira u osam tračnih 8-bitnih protočnih struktura). (Opaska: naziv Intelligent RAM odnosi se na izvedbu memorije i njoj pridruženim procesorima na istom čipu tako da se dinamička memorija može promatrati kao memorija s procesnim sposobnostima.)

15.3. MULTIPROCESORSKI SUSTAVI -VIŠEPROCESORSKI MIMD SUSTAVI MIMD arhitektura obilježena je višestrukim instrukcijskim tokom i višestrukim tokom po-dataka. Svaki od procesora pribavlja i izvršava svoje vlastite instrukcije na svojim podaci-ma. Višeprocesorski MIMD sustavi ili multiprocesorski sustavi iskorištavaju paralelizam na razini procesa I dretvi. U multiprocesorskom sustavu svaki procesor može izvršavati njemu dodijeljen proces. Procesi mogu biti dijelovi jednog korisničkog programa (višezadaćni na-čin rada) ili mogu biti dijelovi različitih korisničkih programa (višeprogramski način rada). Uz to, svaki od procesa može imati više dretvi tako da se izvođenje jednog procesa s većim brojem dretvi može povjeriti većem broju procesora. Višedretvena arhitektura temeljena na MIMD-u, u načelu, dopušta istodobno izvođenje većeg broja procesa s izdvojenim adre-snim prostorima i izvođenje više dretvi koje dijele adresni prostor.

Osnovna značajka multiprocesorskog sustava jest veći broj procesora približno jednakih (vrlo često) identičnih obilježja koji na izvjestan način dijele zajednički memorijski prostor. Ovisno o broju procesora i načinu organizacije memorijskog sustava multiprocesorski se sustavi mogu klasificirati u sljedeće skupine:

• sustavi s uniformnim pristupom memoriji UMA (engl. Uniform Memory Access), • sustavi s neuniformnim pristupom memoriji NUMA (engl. Nonuniform Memory Access), • sustavi samo s priručnom memorijom COMA (engl. Cache-Only Memory Architecture).

U UMA modelu multiprocesorskog sustava (slika 15.17) svi procesori dijele zajedničku fizičku memoriju i svi imaju jednako vrijeme pristupa svakoj od riječi u memoriji (uniformni, odno-sno ujednačeni pristup memoriji). Svaki od procesora može imati i svoju vlastitu priručnu memoriju organiziranu u jednu ili više razina. Na sličan način kao što dijele memoriju, pro-cesori dijele resurse U/l podsustava. Ovakav se model još naziva i multiprocesorski sustav sa središnjom dijeljenom memorijom (engl. centralized shared-memory) ili simetrični multipro-cesorski sustav s dijeljenom memorijom SMP (engl. symmetric shared-memory multiproce-ssor) - zato što memorija ima isti ("simetrični") odnos spram svih procesora. Komunikacija procesora sa zajedničkom memorijom i U/l podsustavom ostvaruje se prospojnom mre-žom koja ovisno o zahtijevanoj propusnosti može biti ostvarena sabirničkim sustavom, crossbar prospojnom matricom ili višerazinskom (ili višeslojnom) prospojnom mrežom (npr. Omega).

UMA model pogodan je za relativno mali broj procesora (manji od 100) jer je za taj broj procesora još uvijek moguće ostvariti dijeljenje i uniformni pristup memoriji. UMA model još se naziva i čvrsto povezan multiprocesorski sustav (engl. tightly coupled) zbog visokog stupnja dijeljenja zajedničkih resursa (memorije i U/l podsustava).

Page 501: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

498 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

SI. 15.17 UMA model multiprocesorskog sustava ^

Ovaj model multiprocesorskog sustava najčešće se koristi zato što je podesan za primjene opće namjene i izvedbu obrade dodjeljivanjem vremena u višekorisničkim okruženjima. Djelotvorno se koristi za ubrzanje obrade zahtjevnih programa jednog korisnika (višeza-daćni rad) ili programa većeg broja korisnika (višeprogramski rad). Koordinacija paralelnih događaja, procesa i dretvi te sinkronizacija i komunikacija između procesora ostvaruju se dijeljenim varijablama koje su pohranjene u zajedničkoj 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 memo-rija naziva lokalna ili privatna memorija. Zbirka svih lokalnih memorija oblikuje globalni adresni prostor kojem mogu pristupiti svi procesori u sustavu. Zbog takve organizacije me-morije razlikujemo dvije vrste pristupa memoriji:

• brzi pristup memoriji (kraće 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 kašnjenjima jer se "udaljenoj" memoriji pristupa kroz pros-pojnu mrežu.

Multiprocesorski sustavi oblikovani u skladu s modelom NUMA imaju veliki broj proce-sora, npr. nekoliko stotina ili tisuća, i zato se za toliki broj procesora teško može realizirati središnja memorija sa zahtijevanom, odnosno prihvatljivom propusnosti (engl. memory bandwidth).

Page 502: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 499 I

lokalna memorija

procesor & priručna memorija

procesor & priručna memorija

U/l podsustav

lokalna memorija

procesor & priručna memorija

U/l podsustav

lokalna memorija

U/l podsustav

prospojna mreža

lokalna memorija

U/l podsustav

lokalna memorija

i z

U/l podsustav

lokalna memorija

procesor & priručna memorija

i z procesor &

priručna memorija

U/l podsustav

procesor & priručna memorija

SI. 15.18 NUMA model multiprocesorskog sustava

Na slici 15.18 vidimo da se svaki čvor u NUMA modelu sastoji od procesora, lokalne memo-rije, U/l podsustava i sučelja za pristup prospojnoj mreži. Ovisno o izvedbi NUMA modela, čvor može biti sastavljen od određenog broja procesora i lokalnih memorijskih modula tako da čini procesorsku nakupinu (engl. cluster). Primjer takve organizacije je multipro-cesorski sustav velikih razmjera (engl. large-scale multiprocessor) Cedar. Multiprocesorski sustavi temeljeni na modelu NUMA često se zbog načina na koji je ostvarena veza između procesora nazivaju i labavo povezanim (engl. loosely coupled).

Multiprocesorski sustavi temeljeni na modelu COMA (slika 15.19) su, zapravo, poseban slučaj NUMA multiprocesorskog sustava u kojem je umjesto glavne memorije po razdijeljena pri-ručna memorija tako da sve priručne memorije oblikuju globalni adresni prostor. Udaljeni pristup priručnoj memoriji ostvaruje se pomoću distribuiranih direktorija.

SL 15.19 COMA model multiprocesorskog sustava

Multiprocesorski sustavi temeljeni na UMA modelu dijele zajednički memorijski prostor tako da procesori mogu međusobno izmjenjivati podatke instrukcijama load i store (zato

Page 503: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

500 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

se i nazivaju sustavi s dijeljenom memorijom). U sustavima temeljenim na NUMA mode-lu komunikacija između procesora odvija se porukama koje procesori izmjenjuju preko prospojne mreže - takvi se multiprocesorski sustavi nazivaju još i multiprocesorskisustavi s prosijeđivanjem poruka (engl. message-passing muitiprocessor).

Naglasimo još jednom da je organizacija muitiprocesorskog sustava s dijeljenom memorijom najraširenija te da mnogi proizvođači računala (npr. Sun, AMD, Intel, IBM) imaju proširenje svojih proizvodnih uniprocesorskih ili jednoprocesorskih linija na multiprocesorske susta-ve na čipu. Oni se nazivaju višejezgreni mikroprocesori (engl. multicore microprocessor) ili kraće višejezgreni procesori (izraz "jezgra" (engl. ćore) upotrebljava se za procesor u više-jezgrenom procesoru). Višejezgreni je procesor, zahvaljujući tehnologiji visokog stupnja integracije, procesor koji ima dva ili više procesora (jezgri) najednom čipu. Na taj se način, uz manji potrošak snage, ostvaruje djelotvorna istodobna obrada vise zadataka.

15.3.1. KOHERENCIJA PRIRUČNE MEMORIJE U MULTIPROCESORSKOM SUSTAVU

U poglavlju 10. (Priručna memorija) opisali smo problem koherencije priručne memorije i istaknuli važnost rješavanja tog problema u multiprocesorskim sustavima. U ovom ćemo se potpoglavlju ukratko još jednom osvrnuti na problem koherencije, i to za multiproce-sorski sustav sa središnjom dijeljenom memorijom (slika 15.17). Budući da svaki procesor ima svoju privatnu priručnu memoriju, ali dijeli i središnju zajedničku memoriju, u svakoj od priručnih memorija pohranjeni su "privatni" podaci koji se odnose na lokalni proces, ali i zajednički podaci koji se odnose na procese drugih procesora i koji su dohvaćeni i pohranjeni u pojedine priručne memorije na temelju komunikacije procesora, odnosno njihovim pristupom zajedničkoj memoriji. Dakle, istodobno se dijeljeni podatak nalazi u zajedničkoj memoriji, a njegove kopije distribuirane su u priručne memorije pojedinih pro-cesora. Sada nastupa problem! Ako neki od procesora promijeni vrijednost zajedničkog podatka u svojoj priručnoj memoriji, taj se podatak treba promijeniti i u zajedničkoj me-moriji, ali i u svim priručnim memorijama ostalih procesora koji koriste taj podatak (uvjet koherencije priručne memorije; poglavlje 10). Bez dodatnih mehanizama nije moguće to ostvariti i nastupa problem (ne)koherencije priručne memorije.

Primjer 15.6.

Pretpostavimo, radi jednostavnosti, da imamo multiprocesorski sustav koji ima samo dva procesora (jezgre) i daje ostvaren kao sustav sa središnjom dijeljenom memorijom. Dakle, sustav ima zajedrtičku memoriju, a svaki od procesora ima priručnu memoriju. Neka priručne memorije koriste tehniku obnavljanja sadržaja memorije „pohranjiva-nje-kroz"(10. poglavlje). Pretpostavimo da oba procesora (procesor 1 i procesor 2) dijele zajedničku varijablu V koja je pohranjena u središnjoj dijeljenoj memoriji na lokaciji X. Pretpostavimo, također, da se u trenutku t = 0 varijabla V ne nalazi u priručnim memo-rijama procesora 1 i procesora 2. U trenutku t = 1 procesor 1 dohvaća (čita) varijablu V iz središnje memorije i pohranjuje je u svoju priručnu memoriju. U sljedećem trenutku (t = 2) procesor 2 dohvaća (čita) varijablu V iz središnje memorije i pohranjuje je u svoju priručnu memoriju. U ovom trenutku (t = 2) koherencija podataka nije narušena: oba procesora imaju pohranjenu vrijednost varijable V jednaku onoj koja je pohranjena na memorijskoj lokaciji X u središnjoj memoriji. Pretpostavimo da u sljedećem trenutku

Page 504: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 501 I

(t = 3) procesor i mijenja vrijednost varijable V u V'i pohranjuje je u svoju priručnu me-moriju. Uporabom tehnike „pohranjivanje-kroz"procesor 1 upisuje novu vrijednost V' na memorijsku lokaciju X u središnjoj memoriji. Sada u vremenskom trenutku t = 3 imamo sljedeću situaciju: procesor 7 u svojoj priručnoj memoriji ima pohranjenu novu vrijednost varijable V, tj. V', središnja dijeljena memorija ima također na memorijskoj lokaciji X po-hranjenu novu vrijednost V. No procesor 2 ima u svojoj priručnoj memoriji pohranjenu staru vrijednost varijable V. Ako u sljedećem trenutku (t = 4) procesor2 dohvaća varijablu V iz svoje priručne memorije - dohvatit će staru vrijednost V, a ne V'. Došlo je do povrede koherencije - umjesto prave vrijednosti V' (koja je pohranjena u priručnoj memoriji pro-cesora 7 i u središnjoj memoriji), procesor2 koristit će se starom vrijednosti V.

Problem (ne)koherencije priručne memorije rješava se programski ili sklopovski. Relativno jednostavno programsko rješenje sastoji se u tome da prevodilac tijekom prevođenja pro-grama označi informaciju (podatke) koja se smije pohraniti (engl. cacheable) i onu koja se ne smije pohraniti u priručnu memoriju (engl. non-cacheable). Sve zajedničke varijable koje se mogu mijenjati upisivanjem označavaju se kao nepodesne (non-cacheable) za po-hranu u priručne memorije i njima procesori jedino mogu pristupiti tako da pristupe sre-dišnjoj dijeljenoj memoriji. Ovo rješenje, međutim, degradira performansu sustava zbog pojačanog prometa između središnje dijeljene memorije i procesora.

Multiprocesorski sustavi obično koriste sklopovska rješenja kojima se održava koherencija priručnih memorija. Protokoli kojima se održava koherencija u multiprocesorskim susta-vima nazivaju se protokoli koherencije priručne memorije (engl. cache coherence protocol) i mogu se klasificirati na:

• snooping protokole (engl. snoop - njuškati), • protokole koji se temelje na direktoriju (engl. directory based).

Snooping protokol prvenstveno je namijenjen multiprocesorskim sustavima koji se teme-lje na prospojnoj mreži koja je izvedena kao zajednička sabirnica. Taj se protokol može koristiti i u multiprocesorskim sustavima sa složenijom prospojnom mrežom (npr. višera-zinskom) uz izvjesne sklopovske preinake kojima se omogućuje odašiljanja informacije svim procesorima o promašajima u priručnoj memoriji. Snooping protokolom postiže se koherencija podataka u priručnim memorijama i središnjoj dijeljenoj memoriji tako da svi upravljači priručnih memorija (engl. cache controller) nadgledaju događaje na zajedničkoj sabirnici ("njuškaju"zajedničku sabirnicu) i određuju trebaju ili ne trebaju kopirati dijeljeni blok podataka. Održavanje koherencije temelji se na dvjema operacijama: čitanju i pisa-nju. Višestruke kopije koje se nalaze u priručnim memorijama pojedinih procesora nisu problem kada je riječ o operaciji čitanja, međutim, procesori imaju i ekskluzivno pravo upi-sivanja podataka u te dijeljene blokove podataka. Naravno, koherencija podataka u mul-tiprocesorskom 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 između središnje dijeljene memorije i priručne memorije, loci-rati sve priručne memorije koje dijele taj podatak koji će se upisati.

Posljedica upisivanja (promjene) dijeljenog podatka može biti dvojaka (ovisno o vrsti pro-tokola) - sve ostale kopije dijeljenog bloka podataka koje se nalaze u ostalim priručnim memorijama proglašavaju se nevažećima (tehnika "piši i proglasi nevažećim"; engl. write-invalidate) ili se, pak, aktivira postupak osvježavanja svih ostalih kopija dijeljenog bloka u ostalim priručnim memorijama (tehnika "piši i obnovi"; engl. write-update).

Page 505: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

502 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

U tehnici "piši i proglasi nevažećim" procesor koji će modificirati dijeljeni podatak mora, neposredno prije nego što to učini, generirati poseban signal "nevažeće" (engl. invalidation signal) i postaviti ga na sabirnicu te time obavijestiti sve druge priručne memorije da su kopije dijeljenog bloka podataka nevažeće. Kada upravljači priručnih memorija prime taj signal, provjeravaju sadržava li ona taj dijeljeni blok podataka, a ako sadržava, taj blok po-dataka u priručnoj memoriji proglašava nevažećim. Pokušaj čitanja tog podatka od strane nekog procesora, zbog nevažećeg bloka, izazvat će promašaj tako da će se iz središnje dijeljene memorije dohvatiti blok s modificiranom (novom) vrijednosti podatka.

Tehnika "piši i obnovi" umjesto da kopije dijeljenog bloka podataka proglasi nevažećim, dopušta procesoru koji je modificirao podatak da taj modificirani podatak pošalje preko sabirnice tako da se obnove sve kopije u ostalim priručnim memorijama.

Tehnika "piši i obnovi" slična je postupku "pohranjivanja-kroz" jer se svaka promjena za-jedničkog podatka šalje preko sabirnice središnjoj dijeljenoj memoriji, samo što se ovdje obnavljaju i sadržaji priručnih memorija. Svaka promjena (upisivanje u zajednički dijeljeni blok podataka) ima za posljedicu prijenos tog podatka zajedničkom sabirnicom.

U tehnici "piši i proglasi nevažećim" sabirnica se koristi samo jednom, i to pri prvom pisanju da bi se kopije dijeljenog bloka proglasile nevažećim. Daljnje upisivanje, odnosno promje-ne, drugih podataka u tom zajedničkom bloku ne zahtijevaju aktivnost na sabirnici.

Primjer 15.7.

Prikažimo osnovnu zamisao dviju tehnika snooping protokola u multiprocesorskom su-stavu sa središnjom dijeljenom memorijom. Pretpostavimo da imamo u sustavu osam procesora P1# P ,..., P8 koji imaju svoje priručne memorije C1# C2,..., C8 te da se kao pros-pojna mreža koristi zajednička sabirnica. Pretpostavimo da se dijeljeni blok podataka X nalazi u priručnim memorijama procesora P2, i P4, tj. u C1# C2 i C4 (slika 15.20).

O

X

P3

4

T

i.

r

* /•V

s / T

X c3

4 8

prospojna mreža / zajednička sabirnica

X memorija

(središnja dijeljena memori ja)

SI. 15.20 Važeće kopije bloka podataka X nalaze se središnjoj dijeljenoj memoriji i u priručnim memorijama C^ C2 i C4

Page 506: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

Pretpostavimo da je procesor P1 promijenio podatak u bloku X (promijenjeni sadržaj blo-ka X označit ćemo s X'). Slika 15.21 prikazuje stanje multiprocesorskog sustava nakon operacije koja odgovara tehnici "piši i proglasi nevažećim". Vidimo da priručna memorija C1 i središnja dijeljena memorija imaju novu vrijednost X', a da su blokovi X u C2 i C4 ozna-čeni s I kao nevažeći (engl. invalidate).

X'

2 3

" T V

o prospojna mreža / zajednička sabirnica

_ _

X' memorija

{središnja dijeljena memorija)

SI. 15.21 Stanje nakon operacije koja odgovara snooping protokolu "piši i proglasi nevažećim"

Slika 15.22 prikazuje stanje multiprocesorskog sustava nakon operacije koja odgovara snooping protokolu "piši i obnovi". Vidimo da su obnovljeni dijeljeni blokovi X u X' u priručnim memorijama C2 i C4 i, naravno, u središnjoj dijeljenoj memoriji.

X' X' c

O

X

prospojna mreža / zajednička sabirnica

X' memorija

(središnja dijeljena memorija)

p, p2 p3 p* . . . p8

5 > <> o o

SI. 15.22 Stanje nakon operacije koja odgovara snooping protokolu "piši i obnovi"

Page 507: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

504 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

Spomenimo još jedan od poznatijih snooping protokola koherencije priručne memorije MESI (engl. modified-exclusive-shared-invalid) koji se djelotvorno koristi kako u jednopro-cesorskim sustavima, tako i u multiprocesorskim sustavima. Ukratko, MESI protokol mo-žemo opisati za jednorazinsku organizaciju priručne memorije na sljedeći način: Odmah nakon upuštanja u rad sustava svi su sadržaji priručnih memorija proglašeni nevažećim. Prvi put kada neki od procesora (npr. procesor P^ izvodi operaciju čitanja ili pisanja - do-gađa se promašaj i referencirani se blok podataka prenosi iz središnje dijeljene memorije u priručnu memoriju tog procesora. Taj blok podataka dobiva oznaku E (engl. exclusive) jer je isključivo samo jedna kopija u jednoj priručnoj memoriji. Sada su podaci u bloku podataka raspoloživi procesoru P1 i on ih može čitati. Pretpostavimo da sada neki dru-gi procesor (npr. procesor P2) referencira podatak u istom bloku podataka - dogodio se promašaj i dohvaća se isti blok podataka iz središnje dijeljene memorije i smještava ga u svoju priručnu memoriju procesora P2. Sada procesor P)t koji je izvorni vlasnik bloka poda-taka, na temelju nadgledanja ("njuškanja") sabirnice vidi da nije više jedini vlasnik kopije te objavljuje preko sabirnice da i on ima takvu kopiju bloka. Obje se kopije označavaju sa S (engl. shared) - dijeljeni blok. Stanje kopija S označava da postoje dvije i više kopija bloka podataka u priručnim memorijama. I u ovom slučaju operacija čitanja podataka iz bloka, bilo od strane procesora P1 i/ili P2 ne traži dodatne aktivnosti na zajedničkoj sabirni-ci. 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 nevažeća (engl. invalid). Blok podatka u priručnoj memoriji procesora koji je izveo operaciju pisanja prelazi u stanje M (engl. modified). No taj se blok podataka još ne upisuje u središnju dijeljenu memoriju. Pretpostavimo sada da procesor P3 izvodi operaciju čitanja podatka iz bloka podataka dohvatom bloka podataka iz središnje dijeljene memorije. Procesor P2, koji je sada jedini vlasnik modificiranog bloka podataka, zna da kopija bloka podataka u središnjoj dijelje-noj memoriji nije važeća, postavlja signal na sabirnicu i njime obavještava procesor P3 da treba pričekati dok on ne izvede operaciju "kopiranja nazad". Kada završi operacija kopi-ranja modificiranog bloka podataka u središnju dijeljenu memoriju, procesor P3 dohvaća kopiju bloka i blok je označen kao dijeljen (S) u obje priručne memorije. Ako sada ponovo npr. procesor P2 upisuje u blok podataka koji je označen sa S, ponovo će se morati progla-siti kopija bloka podataka u priručnoj memoriji procesora P3 nevažećom. I konačno, ako sada procesor P1 izvodi operaciju upisa u dijeljeni blok (što izaziva promašaj), procesor P2 na temelju "njuškanja" na sabirnici to utvrđuje te postavlja signal na sabirnicu kojim obavještava procesor P1 da mora pričekati dok on ne izvede operaciju kopiranja nazad. Kada je procesor P2 završio s tom operacijom, označava svoju kopiju nevažećom jer zna da će procesor P1 modificirati taj blok podataka. Da bi procesor P1 izveo operaciju pisanja, mora dohvatiti blok podataka iz središnje dijeljene memorije (ako koristi tehniku dodjele upisa (engl. write allocation; poglavlje 9.)) i blok označiti s M. Ako se ne koristi tehnika do-djele upisa, već tehnika izravnog upisivanja (10. poglavlje), onda se upis obavlja izravno u središnjoj dijeljenoj memoriji i blok se ne smještava u priručnu memoriju procesora P r

Slika 15.23 prikazuje pojednostavljeni dijagram stanja za MESI protokol. (Opaska: MESI protokol podržava i višerazinsku organizaciju priručne memorije.)

Protokoli koji se temelje na direktoriju obično se koriste u multiprocesorskim sustavima koji imaju prospojnu mrežu izvedenu kao višerazinsku. Protokoli ove vrste mogu se temeljiti na jednom središnjem direktoriju u kojem je pohranjena informacija o statusu dijeljenih blokova fizičke memorije - središnji direktorij sadržava kopije svih direktorija priručnih me-morija s informacijom u kojim se priručnim memorijama nalaze kopije blokova podataka.

Page 508: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 505 I

51.15.23 Pojednostavljeni dijagram stanja za MESl protokol

U porazdijeljenoj shemi svaki memorijski modul ima poseban direktorij u kojem se bilježi stanje i prisutnost svakog bloka. Informacija o stanju bloka je lokalna dok informacija o prisutnosti pokazuje koje priručne memorije imaju kopiju tog bloka. Protokoli koji koriste središnji direktorij imaju središnji upravljač koji je sastavni dio upravljača središnje dijeljene memorijske jedinice, a direktorij se pohranjuje u središnjoj dijeljenoj memoriji. Kada neki upravljač lokalne priručne memorije generira zahtjev, središnji upravljač provjerava taj za-htjev i na temelju informacije koju ima u direktoriju generira naredbe za prijenos podataka između središnje dijeljene memorije i priručnih memorija ili između priručnih memorija. Zadatak središnjeg upravljača jest održavanje informacije o stanju tako da on mora biti obaviješten o svakoj lokalnoj akciji koja utječe na dijeljene blokove podataka. Prije nego što procesor modificira podatak u dijeljenom bloku podataka, mora zatražiti dopuštenje za tu operaciju od središnjeg upravljača. Upravljač prije slanja signala kojim potvrđuje pra-vo na promjenu podatka mora poslati poruku svim dugim procesorima koji također kori-ste taj dijeljeni blok podataka. Tom porukom središnji upravljač zahtijeva da se sve kopije tog bloka podataka proglase nevažećim. Tek kada dobije potvrdu od svih procesora da je blok označen kao nevažeći, središnji upravljač šalje signal potvrde kojim dopušta proce-soru promjenu podatka u dijeljenom bloku. Kada drugi procesor pokuša čitati podatak iz tog dijeljenog bloka, dogodit će se promašaj koji će se signalizirati središnjem upravljaču. Središnji će upravljač tada izdati naredbu procesoru koji je vlasnik modificiranog bloka da taj blok upiše natrag u središnju dijeljenu memoriju (tehnika obnavljanja sadržaja "kopira-njem nazad" (10. poglavlje). Nakon pohranjivanja osvježenog dijeljenog bloka u središnju dijeljenu memoriju omogućit će se prijenos tog bloka u priručnu memoriju procesora koji je želio čitati podatak.

Page 509: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

506 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

15.3.2. SINKRONIZACIJA PROCESA I DRETVI

Općenito u paralelnim procesnim okruženjima dva ili više konkurentna procesa (ili dretve) trebaju međusobno komunicirati (na primjer, tijekom izvođenja proces2 u nekom trenutku treba podatke koje generira proces 7). Komunikacija između procesa temelji se na osnov-nom aksiomu da se ne mogu predvidjeti ili pretpostaviti relativne brzine procesa. To znači da bi se ostvarila komunikacija ili izmjena podataka između procesa 1 i procesa 2 u točno definiranoj točki, oba procesa moraju biti sinkronizirana. Još je jedan važan detalj - sinkro-nizacija mora biti ugrađena programski u procese, a ne ostvarena procesorima, npr. nekim satnim mehanizmom - signalom vremenskog vođenja.

Ovisno o tome jesu li procesi ili dretve takve da se međusobno natječu ili konkuriraju (na primjer, međusobno se natječu za dobivanje nekog resursa), ili su pak kooperativni, tj. me-đusobno surađuju, razlikujemo dvije vrste sinkronizacije:

i) međusobno isključivanje (engl. mutual exclusion), ii) uvjetovana sinkronizacija (engl. condition synchronization).

Dvije osnovne vrste sinkronizacije kojima se ostvaruje međusobno isključivanje i uvjetova-na sinkronizacija opisat ćemo na sljedećem 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 izvršavaju.

Opišimo prvo slučaj kada sa dva procesa međusobno natječu za neki resurs.

U nekoj točki izvršavanja oba procesa, proces 1 i proces 2, zahtijevaju modifikaciju zajednič-ke strukture podataka D koja se nalazi u središnjoj dijeljenoj memoriji. Pretpostavimo da programski segmenti procesa 7 i procesa 2 izgledaju ovako: f

Budući da su oba procesa konkurentna i da nemamo pretpostavke o njihovim relativnim brzinama, može se dogoditi da se instrukcije gornjih dvaju programskih odsječaka me-đusobno isprepliću što vodi nepredvidljivom rezultatu: ako pretpostavimo da je početna vrijednost za D bila 0, onda vrijednost D-a nakon procesa 7 i procesa 2 kada se oba izvrše može biti 1, 2 ili 3, ovisno o relativnim vremenima u kojima se instrukcije izvode. Da bi se ta neodređenost izbjegla, odnosno da bismo imali jamstvo da će vrijednost za D biti 3 kadgod se procesi 1 i 2 izvrše, zahtijeva se da gornji programski odsječci budu nedjeljivi',

proces 7:

ldr1,D addirl, 7 str1,D

proces 2:

IdrZD addi r2,2 st r2f D

Page 510: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 507 I

što znači da pristupaju i modificiraju D na međusobno isključivi način i promatraju se kao kritični programski odsječci. Da bi se zadovoljili uvjeti nedjeljivosti programskog odsječka i njihovo međusobno isključivanje, upotrebljava se mehanizam zaključavanja (engl. loc-king)f i to na sljedeći način: Pretpostavimo da smo strukturi podataka D pridružili "ključ" k i dvije operacije lock(k) i uniock(k) kojima se k postavlja u 1 ("zaključana brava"), odnosno 0 ("otključana brava"). Proces može izvesti operaciju lock(k) samo kada je k = 0, odnosno kada je brava otključana. Rezultat operacije lock je postavljanje k u 1 i zato onemogućavanje 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 pretpo-stavku da je inicijalna vrijednost za k bila 0, dva kritična programska odsječka se mogu implementirati na sljedeći način:

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 također na primjeru sa slike 15.24. U ovom su slučaju procesi proces 7 i proces 2 kooperativni procesi, odnosno procesi koji me-đusobno surađuju. 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, pretpo-stavimo da D može pohranjivati samo jednu vrijednost tako da se mora osigurati sljedeće:

i) kad proces 7 generira vrijednost V. i smještaje u D, on čeka sve dok proces2 ne konzu-mira vrijednost V.. Tek će poslije toga pohraniti sljedeću vrijednost V.+1 u D;

ii) nakon što proces 2 konzumira vrijednost V. iz D, on čeka sve dok proces 1 ne generira sljedeću vrijednost Vj+1. Tek poslije toga ponovo čita iz D.

Vidimo da proces 7 i proces 2 moraju biti međusobno sinkronizirani, i to na sljedeći način: proces 7 mora kasniti s upisivanjem u D dok nije određen uvjet postavljen od procesa 2, također, proces 2 mora kasniti sa čitanjem iz D dok određen uvjet nije postavljen od proce-sa 7. Uvjetovana sinkronizacija može se ostvariti uporabom istog koncepta koji se koristi za međusobno isključivanje. U ovom slučaju imamo dva ključa k1 i k2 koja su pridružena strukturi podataka D: proces 7 "otključava" k2 i time signalizira procesu 2 da je pohranio novu vrijednost u D, dok proces 2 otključava k1 da bi obavijestio proces 1 o konzumiranju vrijednosti koja je posljednja pohranjena u D. Uz pretpostavku da je početna vrijednosti kj jednaka 0, a početna vrijednost k2 jednaka 1, programski odsječci kojima se ostvaruje

Page 511: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

508 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI 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 test-and-set primitiva, fetch-and-add primitiva, semafora;

ii) sinkronizacija na temelju prosljeđivanja poruka.

Prvi mehanizam sinkronizacije pogodan je i zato prevladava u multiprocesorskim sustavi-ma sa središnjom dijeljenom memorijom UMA, dok se drugi koristi u multiprocesorskim sustavima s porazdijeljenom memorijom NUMA.

Page 512: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 509 I

15.4. VIŠEDRETVENOST I SIMULTANA VIŠEDRETVENOST Višedretvenost (engl. multithreading) za razliku od hiperdretvenosti, kao što smo u uvod-nom dijelu ovog poglavlja vidjeli, podrazumijeva da se više dretvi izvodi u jednom proce-soru tako da se izvođenje dretvi međusobno isprepliće, odnosno dretve se naizmjenično izvode u dodijeljenim funkcijskim jedinicama procesora uz nužno prospajanje konteksta sadržanog u tablici dretvi, i to nakon svake izmjene dretve.

Dva su glavna pristupa višedretvenosti: • finozrnata višedretvenost (engl. fine-grained multithreading), • grubozrnata višedretvenost (engl. coarse-grained multithreading).

Finozrnata višedretvenost podrazumijeva prospajanje dretvi nakon svake instrukcije. (Opaska: procesori s takvom značajkom nazivaju se još i "bačvasti", odnosno barrel proce-sori.) Te su instrukcije međusobno nezavisne jer pripadaju različitim dretvama tako da se protočna struktura djelotvorno iskorištava. No može se dogoditi povećani broj promašaja priručne memorije zbog narušavanja lokalnosti programa. Obično se izvođenje dretvi u tom slučaju temelji na kružnom prioritetu (engl. round-robin) uz "preskakanje" dretvi koje su u stanju zastoja. Da bi se finozrnata višedretvenost djelotvorno iskoristila, procesor mora biti u stanju prospajati dretve u svakoj periodi signala vremenskog vođenja, a uz to, vrijeme prospajanja konteksta dretvi mora biti vrlo kratko. Očekuje se da je vrijeme potreb-no za kućanske poslove koje treba obaviti procesor tijekom izmjene konteksta dretvi kraće od vremena potrebnog za prospajanje procesa. Višedretveni procesori imaju sklopovski podržano brzo prospajanje konteksta dretvi (tzv. hardware based fast context switching) koje se temelji na tome da svaka dretva ima dodijeljene fizičke registre za pohranu kon-teksta dretvi. Na primjer, višedretveni procesor Tera podržava 128 dretvi, pri čemu je svakoj dretvi dodijeljen 41 64-bitni registar u procesoru Jezgre, osim sklopovski podržanog brzog prospajanja konteksta, imaju i dinamičku izvedbu preimenovanja registara (14. poglavlje) kojim se rješavaju hazardi WAW i WAR koji se nazivaju još i lažne zavisnosti.

Grubozrnata višedretvenost predviđa prospajanje dretvi samo onda kada nastupa dulji za-stoj u tekućoj dretvi (npr. promašaj u priručnoj memoriji). Za kraće zastoje, na primjer one izazvane u instrukcijskoj protočnoj strukturi uslijed hazarda, ne predviđa se izmjena dretvi te je to jedan od glavnih nedostataka grubozrnate višedretvenosti. Razlog da se ne koristi prospajanje dretvi kod zastoja izazvanih u protočnoj strukturi leži u procjeni cijene i koli-čine posla za pražnjenje protočne strukture da bi se u nju mogao uputiti instrukcijski tok druge dretve. Izmjena dretvi i prospajanje njihova konteksta može se događati i pri svakoj load instrukciji (neovisno o tome je li se dogodio promašaj) ili nakon programskog odsječ-ka (bloka instrukcija) koji pripadaju jednoj dretvi.

Grubozrnata i finozrnata višedretvenost može se kombinirati s paralelizmom na razini in-strukcija ILP, ali i sa superskalarnosti (višestrukim protočnim strukturama u jednom proce-soru). Tri su procesorske konfiguracije moguće u tom slučaju:

• superskalarnost s grubozrnatom višedretvenosti, • superskalarnost s finozrnatom višedretvenosti, • superskalarnost sa simultanom višedretvenosti.

Superskalarni procesori s grubozrnatom višedretvenosti izvode istodobno veći broj in-strukcija koje pripadaju istoj dretvi sve do trenutka kada nastupi dulji zastoj, u tom se tre-nutku prospaja kontekst dretvi i nastavlja se s izvođenjem druge dretve.

Page 513: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

510 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

Superskalarni procesori s finozrnatom višedretvenosti isprepliću dretve i na taj način eli-miniraju možebitne zastoje u izdavanju instrukcija. Budući da samo jedna dretva izdaje instrukcije tijekom periode signala vremenskog vođenja, još uvijek postoje ograničenja u paralelizmu na razini instrukcija. Višejezgreni procesori tvrtke Sun nazvani T1 (Niagara 1) i T2 (Niagara 2) koriste finozrnatu višedretvenost.

Simultana višedretvenost SMT (engl. simultaneous multithreading) zasniva se na činjenici da suvremeni (superskalarni) procesori imaju paralelizam na razini funkcijskih jedinica veći od onog koji jedna dretva može iskoristiti. Zato se dinamičkim raspoređivanjem izdaje istodobno više instrukcija iz nezavisnih dretvi u istoj periodi signala vremenskog vođenja. Dakle, u SMT-u se iskorištava paralelizam na razini dretvi i paralelizam na instrukcijskoj ra-zini u kombinaciji s izdavanjem više instrukcija u jednoj periodi signala vremenskog vođe-nja. Primjeri procesora koji se temelje na SMT zamislima su Intelovi višejezgreni procesori Nehalem i Pentium D te IBM-ovi višejezgreni procesori POWERS, POWER6 i POWER7.

Da bismo zorno predočili razliku između superskalarnosti, višedretvenosti (MT) i simultane višedretvenosti (SMT), poslužit ćemo se jednostavnim modelom obrade koji su predložili S. J. Eggers i suradnici. Slika 15.25 prikazuje primjer izvođenja za potonje navedene tri arhi-tekture procesora. Pretpostavimo da su sva tri procesora superskalarna i da mogu izdavati do četiri instrukcije u jednoj periodi signala vremenskog vođenja. Na slici 15.25 svaki redak predočava stanje četiriju protočnih struktura superskalarnog procesora u koju se upuću-ju instrukcije na izvođenje, i to tijekom jedne periode signala vremenskog vođenja. Svaki se kvadrat u retku naziva i priključak za izdavanje instrukcije (engl. instruction issue slot). Popunjen kvadrat u retku odgovara u pora bijenom priključku za izdavanje, dok bijeli kva-drat označava da se u toj periodi nije izdala instrukcija za taj priključak i da je on neiskori-šten. Na primjer, na slici 15.25 a), koja se odnosi na "obični" superskalarni procesor, od četiri priključka za izdavanje instrukcija samo su dva iskorištena tijekom prve periode signala vremenskog vođenja, što znači da zbog npr. međuzavisnosti instrukcija, odnosno ogra-ničene razine paralelizma na razini instrukcija nije bilo moguće četiri instrukcije uputiti u izvođenje (u prvoj periodi signala vremenskog vođenja). Nekorišteni priključci za izdavanje instrukcija mogu se promatrati kao "horizontalno neiskorišteni priključci" i kao "vertikalno neiskorišteni priključci". Pod horizontalno neiskorištenim priključcima podrazumijevamo slučaj kada su u jednom retku jedan ili više priključaka neiskorišteni (ali ne svi!). Na primjer, na slici 15.25 a) tijekom prve, treće i osme periode imamo slučaj da dva priključka nisu isko-rištena - osnovni razlog je skromna razina paralelizma na razini instrukcija u istoj dretvi. Tijekom četvrte periode, zbog velike međuzavisnosti instrukcija, samo je jedan priključak iskorišten.

Vertikalno neiskorišteni priključci događaju se kada su tijekom jedne periode svi priključci neiskorišteni - to nastupa zbog dulje latencije (duljeg zastoja u izvođenju) instrukcije, npr. pristupa memoriji, kada je privremeno spriječeno daljnje izdavanje instrukcija.

Slika 15.25 a) prikazuje slijed izvođenja instrukcija za konvencionalni superskalarni procesor.

U tom se slučaju izvodi jedan program (proces) ili jedna dretva, i to tako da se pokušava naći više instrukcija (do četiri) koje se mogu istodobno izvesti. Kad se to ne može naći, onda se događaju horizontalni i vertikalni neiskorišteni priključci.

Slika 15.25 b) prikazuje slijed izvođenja za finozrnati višedretveni procesor (MT) koji po-država sklopovski prospajanje konteksta dretvi. On djeluje tako da tijekom jedne periode signala vremenskog vođenja izvodi veći broj instrukcija iz jedne dretve. Tijekom sljedeće

Page 514: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 511 I

c a> *o o > o> o

10 <V

"O o a> a) a. 0) E a>

periode procesor izvršava instrukcije iz druge dretve. Svakom novom periodom signala vremenskog vođenja, procesor prospaja kontekst dretve i izvršava instrukcije iz nove dre-tve. Iz slike 15.25 b) vidimo da višedretveni procesor djelotvornije koristi resurse procesora, posebice u situacijama kada bi nastupale dulje latencije instrukcija, odnosno vidimo da se s višedretvenosti uklanjaju vertikalno neiskorišteni priključci. No višedretvenost ne utječe na uklanjanje horizontalno neiskorištenih priključaka jer oni ovise o paralelnosti instrukcija unutar jedne dretve.

pr i k l j učak za i zdavan je ins t rukc i je •

superska la rn i p rocesor • • • | • • 1 | • • 1 | • n n |

• • • • | • • n |

1 1 • M • • M s 1 1 1 1 1 1 • u 1 1 1 1

1 1 1 I1

M M M • 1 • n

Ivlv! LVHI

a)

MT • • • • • •

• • •

• • •

• b)

SMT

• •

dretva 1

dretva 2

dretva 3

|\\v| dretva 4

dretva 5

SI. 15.25 Prikaz izvođenja dretvi: a) u superskalarnom procesoru konvencionalne arhitekture, b) u superskalar nom višedretvenom procesoru MT, c) u superskalarnom procesoru sa simultanom višedretvenosti SMT

Slika 15.25 c) pokazuje slijed izvođenja za simultano višedretveni procesor (SMT). Vidimo da u svakoj periodi signala vremenskog vođenja procesor"izabire" instrukcije za izvođenje iz svih dretvi. On iskorištava paralelizam na razini instrukcija izborom instrukcija iz bilo koje dretve. Nakon toga procesor dinamički raspoređuje resurse procesora između 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

Page 515: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

512 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

horizontalno neiskorištenih priključaka. Ako paralelizam na razini instrukcija za jednu dre-tvu nije dovoljno visok, onda se izabire još jedna dretva (ili više njih) s nižim stupnjem paralelizma koja će popuniti prazne horizontalne priključke. Na taj se način postiže ukla-njanje i vertikalnih neiskorištenih priključaka i u velikoj mjeri horizontalnih neiskorištenih priključaka, tako da se performansa SMT procesora povećava u odnosu na konvencionalni superskalarni procesor, ali i u odnosu na višedretveni procesor.

Posebno zanimljiv pristup arhitekturi procesora je pristup koji se naziva treća generacija DPL (engl. Data Parallel Processor) u kojem se kombiniraju vektorske instrukcije, izdavanje instrukcija izvan redoslijeda i preimenovanje registara te simultano izvođenje više dretvi. Procesori s tim značajkama nose oznaku SMV - Simultaneous Multithreaded Vector- simul-tano višedretveni vektorski procesori.

15.5 VIŠEJEZGRENI PROCESORI Višedretvenost i simultana višedretvenost ostvaruje se uporabom višejezgrenih (engl. mul-ticore) procesora. Opišimo arhitekturu nekoliko vodećih višejezgrenih procesora.

15.5.1 IBM POVVER4 DVOJEZGRENI PROCESOR

Godine 2001. tvrtka IBM oblikovala je prvi komercijalni 64-bitni multiprocesorski sustav na čipu (višejezgreni procesor) opće namjene - POVVER4 (slika 15.26). Višejezgreni pro-cesor POVVER4 sadržava dvije jezgre - dva superskalarna procesora na čipu te dijeljenu zajedničku priručnu memoriju druge razine (L2) koja je organizirana u tri bloka (svaki kapaciteta 470 KB) i direktorij za priručnu memoriju razine L3 (kapaciteta 32 MB) koja je ostvarena izvan procesorskog či pa. Jedinica Cl U - Ćore Interface U nit povezuje svaki od L2 blokova priručne memorije s priručnom memorijom podataka LI (kapaciteta 32 KB) i instrukcijskom priručnom memorijom LI (kapaciteta 64 KB) svake od jezgri. Jedinice NC - Non-Cacheable odgovorne su za rukovanje operacijama koje ne koriste priručne memo-rije jezgara. Sabirnička upravljačka jedinica GX upravlja komunikacijom s U/l jedinicama i podržava dvije tzv. GX sabirnice širine 4 bajta. Fabric Controller glavni je upravljač za sabir-ničku strukturu i komunikaciju s L2/L3 upravljačima priručne memorije te za komunikaciju više POVVER4 procesora.

Dvojezgreni procesor namijenjen je iskorištavanju paralelizma na razini dretvi. Značajke POVVER4 arhitekture su superskalarnost i izvođenje instrukcija izvan redoslijeda. Izvođenje instrukcija izvan redoslijeda omogućuje sklopovlju procesora da "odgodi" instrukcije čiji operandi nisu još raspoloživi, npr. zbog promašaja u priručnoj memoriji tijekom instruk-cije load i izvodi neku drugu instrukciju koja ima spremne operande. Nakon što operan-di za odgođenu instrukciju postanu raspoloživi, procesor izvršava odgođenu instrukciju. Superskalarna jezgra POVVER4 procesora (slika 15.27) ima osam nezavisnih izvršnih jedini-ca: dvije jedinice za operacije brojevima s pomičnim zarezom (FPU), dvije jedinice za ope-racije brojevima sa čvrstim zarezom (FXU), dvije load/store jedinice, jedinicu grananja (BR) i logičku jedinicu (jedinicu uvjetnog registra CR - Conditional-register unit). Superskalarna jezgra može izvoditi do osam operacija u jednoj periodi signala vremenskog vođenja. Svaka od jezgri ima instrukcijsku priručnu memoriju razine L1 kapaciteta 64 KBte dvoula-znu priručnu memoriju podataka razine L1 kapaciteta 32 KB.

Page 516: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. R1BARIĆ - GRAĐA RAČUNALA 513

SI. 15.26 Organizacija dvojezgrenog procesora POWER4

POWER4 može se koristiti i u konfiguraciji s više čipova POWER4 uporabom MCM - Multi-Chip Module tako da se mogu kombinirati četiri POWER4 čipa u jednom pakovanju.

Višejezgreni 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 potrošak snage oko 115 W.

Poboljšana verzija procesora POWER4+ radi na frekvenciji 1.9 GHz i ima 184 milijuna tran-zistora na čipu površine 267 mm2 (tehnologija 130 nm SOI CMOS).

Page 517: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

514 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

SI. 15.27 Jezgra procesora POWER4

15.5.2. ULTRASPARC TI IT2 Krajem 2005. tvrtka Sun najavila je višejezgreni (osam jezgri) procesor Ultra SPARCT1, pod nazivom Niagara, koji je ujedno i višedretveni, a namijenjen je za računarske sustave koji obavljaju funkciju poslužitelja (engl. server). Jedna od arhitektonskih značajki mu je da je orijentiran na djelotvorno iskorištavanje paralelizma na razini dretvi (višedretvenost), više no na razini instrukcija. No svaka od jezgri ima protočnu strukturu koja se sastoji od šest protočnih segmenata (pribavi, izbor dretve, dekodiraj, izvrši, pristup memoriji, upiši na-trag). Vidimo da pet protočnih segmenata odgovara onima u "klasičnoj" instrukcijskoj RISC protočnoj strukturi (13. poglavlje) uz dodatak protočnog segmenta za prospajanje dretvi.

Zbog relativne jednostavnosti protočne strukture instrukcije grananja i instrukcije load prouzrokuju kašnjenje od tri periode signala vremenskog vođenja, međutim, to se kašnje-nje "prekriva" izvođenjem instrukcija drugih dretvi. Jezgra izdaje jednu instrukciju i upu-ćuje je u protočnu strukturu - ne koristi se tehnika izdavanja i završavanja instrukcija izvan redoslijeda što u velikoj mjeri pojednostavnjuje izvedbu procesora. Svaka od osam jezgri podržava istodobno četiri dretve, tako da, zapravo, višejezgreni procesor T1 kombinira vi-šedretvenost na razini procesora (jezgre) i hiperdretvenost - istodobno izvođenje većeg broja dretvi u osam jezgri. Već smo spomenuli da T1 rabi finozrnatu višedretvenost, odno-sno da ima značajke "bačvastog" procesora (engl. barrelCPU). Svaka jezgra u svakoj periodi

Page 518: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 515 I

signala vremenskog vođenja prospaja dretve. Dretve koje su zbog kašnjenja u protočnoj strukturi ili zbog promašaja priručne memorije u trenutnom zastoju "zaobilaze" se pri ras-poređivanju. S obzirom da jezgra rukuje sa četiri dretve, neaktivna je samo u slučaju kada su sve četiri dretve u zastoju.

Slika 15.28 prikazuje organizaciju višejezgrenog procesora TI. Osam jezgri, od kojih svaka ima svoju "privatnu" instrukcijsku priručnu memoriju i priručnu memoriju podataka (razina L1), prospojnom su mrežom crossbor spojene sa četiri izdvojene priručne memorije razine 2. Svaka od priručnih memorija razine L2 ima svoj direktorij. Koherencija priručnih memo-rija razine LI postiže se protokolom koherencije koji se temelji na direktoriju. Procesor T1 ima samo jednu jedinicu za operacije brojevima s pomičnim zarezom (engl. floating-point unit; FPU) kojoj jezgre pristupaju preko prospojne mreže.

crossbar prospojna mreža

r — — — — — — — — — — — — — — "I o 0 O O Q

-0-

-O-

-o

-o

-o

-0-

-0

-o

-o

-6

-o

-0

priručna memorija 1

(L2)

o -

•o

-0-

-O-

•o

•o

o

priručna memorija 2

(L2)

-o-

•o

-0-

•O

O

• o

-0-

priručna memorija 3

(L2)

priručna memorija 4

(L2)

o

-0

-0

O

o

•o

0

FPU

SI. 15.28 Organizacija višejezgrenog procesora Sun Ultra SPARC TI (Niagara 1)

Page 519: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

L n

LTt NJ &

=h lQ c Q> O

NJ X 00

fD O)

o o fD cn o -* OJ CO c 3 c r+ —x QJ to

3D n - I NJ

Q> NJ

visejezgreni procesor

jezgra jezgra jezgra jezgra jezgra jezgra jezgra jezgra spare spare spare spare spare spare spare spare

8KB 8KB 8KB 8KB 8KB 8KB 8KB 8KB L1 L1 LI LI LI L1 L1 L1

prospojna mreža crossbar

90 GB/s (piši skroz) 179 GB/s

4 MB dijeljena priručna memorija L2

razdjeljnici (hub)

memorijski upravljač

21.33 GB/s (čitanje)

A-V

10.66 GB/s (pisanje)

667 MHz FBDIMM memorija

Page 520: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

visejezgreni procesor

jezgra jezgra jezgra jezgra jezgra jezgra jezgra jezgra spare spare spare spare spare spare spare spare

8KB 8KB 8KB 8KB 8KB 8KB 8KB 8KB LI LI LI LI LI L1 L1 L1

prospojna mreža crossbar

90 GB/s (piši skroz)

£0 O 4

A V

179 GB/s

4 MB dijeljena priručna memorija L2

razdjeljnici {hub)

memorijski upravljač

21.33 GB/s (čitanje)

10.66 GB/s (pisanje)

667 MHzFBDIMM memorija

FBDIMM - Fully-buffered DIMM

Page 521: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 517 I

Navedimo neke od arhitektonskih značajki višejezgrenog procesora TI: • finozrnata višedretvenost na razini instrukcije, • osam jezgri, • četiri dretve po jezgri, • jedna FPU, • crossbar prospojna mreža, • relativno jednostavna protočna struktura sastavljena od šest poput RISC protočnih

segmenata, • jezgra ima priručne memorije razine LI: 16 KB instrukcijske memorije i 8 KB priručne

memorije podataka (blok ili linija duljine je 64 bajta), • četiri odvojene priručne memorije razine L2 svaka po 750 KB, • koristi se protokol koherencije koji se temelji na direktoriju.

Navedimo još neke tehnološke detalje: izveden je u 90 nm CMOS VLSI tehnologiji, ima 279 milijuna tranzistora ostvarenih na silicijskom čipu površine 379 mm2, potrošak snage mu je 79 W, a maksimalna frekvencija signala vremenskog vođenja je 1.2 GHz. Vršna performansa višejezgrenog procesora TI iznosi oko 9600 MIPS-a i oko 1200 MFLOPS-a.

U listopadu 2007. na tržištu se pojavio Ultra SPARC T2 (kodnog imena Niagara 2) (slika 15.29) koji je poboljšana verzija prethodnika T1. Procesor T2 je realiziran u 65 nm VLSI teh-nologiji, ima osam jezgri i svaka se jezgra može istodobno koristiti s osam dretvi, dakle T2 ima ukupno 64 konkurentnih dretvi. Svaka je jezgra ostvarena kao protočna jedinica s osam protočnih segmenata i ima i dvije aritmetičko-logičke 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 priručne memorije razine L2 je s 3 MB povečan na 4 MB i organizirana je kao 16-putna asocijativna memorija (10. poglavlje). Frekvencija signala vremenskog vođe-nja je s 1.2 GHz povećana na 1.6 GHz. Performansa procesora T2, u odnosu na T1, znatno je poboljšana tako da ispitni programi pokazuju da je propusnost za cjelobrojne operacije veća od dva puta (u odnosu na T1), propusnost za cjelobrojnu dretvu veća je za 1.4 puta, a performansa dretve koje rabi operacije brojevima s pomičnim zarezom povećana je 5 puta (što je i razumljivo s obzirom na 8 FPU jedinica). Višejezgreni 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

Višejezgreni procesor Opteron X4 2356 tvrtke AMD jedan je iz brojne porodice 4-jezgre-nih procesora serija 1300,2300,4100 i 8300, različitih 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 podnožja (engl. CPU slot, CPU socket) tako da oblikuje sustav s 8 jezgri. (Opaska: kada se govori o takvim vi-šejezgrenim konfiguracijama, često se koristi izraz "broj jezgri po podnožju", npr. four cores per socket). Slika 15.30 prikazuje organizaciju višejezgrenog procesora Opteron X4 2356. Jezgra je složeni procesor koji ima 6-segmentnu instrukcijsku protočnu strukturu, 72 fi-zička registra, međuspremnikza cjelobrojne i FP operacije u repu čekanja (engl. operation queue), međuspremnik za load/store operacije u repu čekanja, tri ALU za cjelobrojne opera-cije, tri FPU (zbrajalo, množilo, mješovite operacije), instrukcijsku priručnu memoriju (razi-na L1,64 KB) i priručnu memoriju podataka (razina L1,64 KB). Svaka od jezgri ima i dodatnu 512 KB lokalnu priručnu memoriju, tzv. victim cache koja sadržava blokove podataka koji

Page 522: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

518 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

su "Izbačeni" iz priručne memorije tijekom zamjene blokova (vidi 9. poglavlje) te dijeli 2MB priručne memorije koja se naziva još i quasi-victim. Svaka od jezgri podržava osam dretvi. Na čipu je ostvareno posebno tzv. sistemsko sučelje SRI (System Request Interface) i pros-pojna mreža crossbar koja ostvaruje vezu između quasi-victim priručne memorije, memo-rijskog upravljača i sučelja za komunikaciju s višejezgrenim procesorom (HyperTransport link) koji se nalazi u drugom podnožju. Brzina prijenosa podataka između dvaju sučelja je 4 GB/s. Da bi čitatelj dobio osjećaj o povezivanju višejezgrenih procesora "četiri jezgre po podnožju" u 8-jezgrenu konfiguraciju, navedimo da AMD Opteron koristi LGA (engl. land grid array) podnožje tipa F (Socket F) koje ima preko 1200 priključaka.

Višejezgreni procesor Opteron X4 2356 na ISA razini odgovara procesorima sa skupom in-strukcija porodice x86 s proširenjem na 64-bitnu arhitekturu (x86/64).

Memorijski upravljač ostvaruje pristup 667 MHz DDR2 dinamičkoj memoriji (8. poglavlje) uz propusnost od 10.66 GB/s. Višejezgreni procesor radi s frekvencijom signala vremen-skog vođenja od 2.3 GHz i postiže vršnu performansu od 74 GFLOPS-a.

Krajem prvog desetljeća ovog stoljeća 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 vođenja) i koristi izdavanje i završava-nje instrukcija izvan redoslijeda (13. poglavlje). Jezgra pribavlja (iz instrukcijske priručne memorije) i dekodira do tri X 8 6 - 6 4 instrukcije tijekom svake periode signala vremenskog vođenja. Instrukcije promjenjive duljine pakiraju se u tzv. makrooperacije (mops) čvrste duljine. Nakon toga se makrooperacije upućuje u dvije nezavisne jedinice za raspoređiva-nje - jedna je za cjelobrojne operacije, a druga za FP i multimedijske operacije. Jedinice za raspoređivanje mogu rasporediti do devet takvih makrooperacija, i to sljedećim izvršnim resursima:

• trima cjelobrojnim protočnim izvršnim jedinicama i jedinici za generiranje adrese, • trima FP i multimedijskim protočnim jedinicama, • load/store jedinica.

Jezgra ima i load/store jedinicu kojoj se upućuju load i store instrukcije. Load/store jedinica može izvesti dvije load instrukcije i jednu store tijekom svake periode signala vremenskog vođenja. Način izdavanja i izvođenja instrukcija je takav da se za do 72 makrooperacije može preurediti redoslijed njihova izvođenja. Slika 15.31 prikazuje konfiguraciju koja se sa-stoji od dva čipa koji čine 12-jezgreni procesor tako da su oba čipa smještena u jednom pa-kiranju MCM (Multichip Module package). Svaki čip ima po šest jezgri, a čipovi komuniciraju, slično kao i u višejezgrenom procesoru Opteron X4 2356, preko HyperTransport 3 sučelja. Pakiranje ima podnožje tipa LGA, ali s 1944 priključka (735 više od prethodne generacije višejezgrenih procesora Opteron). Svaka od Opteron jezgri ima instrukcijsku priručnu me-moriju i priručnu memoriju podataka (svaka kapaciteta 64 KB; razina L1). Svakoj je jezgri pridružena i priručna memorija razine L2 kapaciteta 512 KB (nalazi se na procesorskom čipu) te zajednička dijeljena priručna memorija razine L3 (6 MB).

Page 523: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

LO

to o

N Qi <

n> 3 o IO

o n 0) (/> o

fD -* o X

NJ LO Ln o>

jezgra Opteron

jezgra Opteron

jezgra Opteron

jezgra Opteron

512KB priručna

memorija

512KB priručna memorija

512KB priručna

memorija

512KB priručna

memorija

2MB dijeljena priručna memorija

SRI / crossbar prospojna mreža

0 & c 1 <u #

A V

A V r

memorijski upravljač

— z ^

10.66 GB/s

667 MHz FBDIMM memori ja

Page 524: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

2x4 GB/s

0 a c 1

i

K fV

jezgra Opteron

jezgra Opteron

jezgra Opteron

jezgra Opteron

512KB priručna

memorija

512KB priručna

memorija

512KB priručna memorija

512KB priručna memorija

2MB dijeljena priručna memorija

SRI / crossbar prospojna mreža

memorijski upravljač

" Z V

667 MHz FBDIMM memori ja

7 Y 10.66 GB/s

Page 525: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

525 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

u

o iy> (U U O

£ OJ i— CD N

\D

A V

I Z f }JodsuDJ±JddA(-j

jezg

ra

Opt

eron

512

KB

L2

jezg

ra

Opt

eron

512

KB

L2

jezg

ra

Opt

eron

512

KB

L2

jezg

ra

Opt

eron

512

KB

L2

jezg

ra

Opt

eron

512

KB

L2

jezg

ra

Opt

eron

512

KB

L2

o m E

c ČT o . t/> o O.

V CL

O E <D £

A V m QC Q Cl

A V

m QC Q

SI. 15.31 Konfiguracija od dva čipa smještenih u MCM pakovanju kojom se oblikuje 12-jezgreni procesor Opteron kodnog imena "Magny Cours"

Page 526: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

5. R1BARIĆ - GRAĐA RAČUNALA 521

15.5.4. 1MB POWERS DVOJEZGRENI SMT PROCESOR, POWER61 POWER7

POWER5 je dvojezgreni SMT procesor koji podržava 64-bitnu PowerPC arhitekturu. Najed-nom čipu su ostvarene dvije identične jezgre pri čemu svaka od njih podržava jednu fizičku dretvu i dvije logičke dretve, pored instrukcijske priručne memorije razine LI kapaciteta 32 KB i priručne memorije podataka razine L1 kapaciteta 32 KB, procesor ima i priručnu memoriju razine L2 kapaciteta 1.875 MB (koju dijele obje jezgre) i direktorij za priručnu memoriju razine L3. Direktorij je namijenjen priručnoj memoriji kapaciteta 36 MB koja je realizirana izvan procesorskog čipa. Procesor POWER5 koristi crossbar prospojnu mrežu. Na procesorskom čipu nalazi se i memorijski upravljač i na taj se način izbjegava dodatno kašnjenje koje je uzrokovano pogonskim sklopovima u slučaju kada je upravljač ostvaren kao vanjski (izvan procesorskog čipa).

Jezgra POWER5 podržava dva načina rada: simultanu višedretvenost (SMT način rada) u kojem se izdaje više instrukcija iz različitih dretvi u jednoj periodi signala vremenskog vo-đenja te jednodretveni način rada ST (engl. single-threaded mode).

U simultanom višedretvenom načinu rada POWER5 upotrebljava dva odvojena adresna registra za pohranjivanje programskih brojila za obje dretve. Protočni segment za pribav-ljanje instrukcija IF naizmjence se koristi za dvije dretve. Dvije dretve dijele in stru kcijsku priručnu memoriju i sklopovlje za adresnu translaciju.

U jednodretvenom načinu rada jezgra koristi samo jedno programsko brojilo i pribavlja instrukcije iz jedne dretve. Procesor može pribavljati do osam instrukcija iz instrukcijske priručne memorije (IC - Instruction Cache) tijekom svake periode. Razlog uporabe i jed-nodretvenog načina rada je u tome što su arhitekti ocijenili da postoji mnogo primjena u kojima nema višdretvenosti te bi "umjetno" izvođenje dviju dretvi u tim slučajevima degra-diralo performansu procesora.

U oba slučaja (SMT i ST) pribavlja se osam instrukcija iz iste dretve, međutim, njihovo izda-vanje će biti, ako je riječ o SMT, takvo da su iz različitih dretvi.

Jezgra pribavlja do osam instrukcija, a izdaje ih četiri za izvođenje izvan redoslijeda. Slika 15.32 prikazuje instrukcijsku protočnu strukturu POWERS jezgre. Pribavljene se instrukcije "prosijavaju" u protočnom segmentu za predviđanje grananja (BP - Branch Prediction) i ako se nađe instrukcija grananja, onda se predviđa smjer grananja na temelju složene sheme koja koristi tri tablice povijesti grananja (BHT - Branch History Table). Obje dretve dijele te tri tablice. Nakon pribavljanja, POWER5 smještava instrukcije na predviđene instrukcijske putove u odvojene repove čekanja za obje dretve (protočni segmenti DO - D3). Jezgra ras-poređuje do pet instrukcija u svakoj periodi signala vremenskog vođenja. Na temelju pri-oriteta dretvi procesor izabire instrukcije iz jednog od repova čekanja (D1, D2, D3 protočni 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 izvršenje, jezgra mora osigurati raspoloživost resur-sa. Kada su svi potrebni resursi raspoloživi, grupa instrukcija se raspoređuje. Taj zadatak obavlja protočni segment GD (Group Dispatch). Nakon raspoređivanja, svaka od instrukcija protječe kroz protočni segment MP (Mapping) u kojem se obavlja preimenovanje registara (uklanjanje lažne zavisnosti) tako da se logički registri preslikavaju u fizičke registre. Jezgra ima 120 registara opće namjene i 120 FP registara. Obje dretve dinamički dijele ta dva skupa registara. Nakon preimenovanja registara, instrukcije ulaze u repove za čekanje koje dijele obje dretve. Jezgra POWER5 ima osam izvršnih jedinica (dvije load/store jedinice, dvije cjelobrojne jedinice FXU (Fixed-point Execution Unit), dvije FP jedinice, jedinicu gra-

Page 527: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

522 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

nanja BXU (Branch Execution Unit) I posebnu jedinicu za logičke operacije CRL (Condition Register Logical Execution Unit). Kad su svi potrebni operandi za instrukciju raspoloživi, ona postaje prikladna za izdavanje. Prikladne instrukcije izabiru se u protočnom segmentu ISS (Instruction Issue) i šalju se u izvršavanje. Protočni segment ISS ne razlikuje instrukcije po pripadnosti pojedinoj dretvi. Kada su sve instrukcije u grupi izvršene, one se predaju pro-točnom segmentu CP (Group Commit). U jezgri se oblikuju dvije grupe (po jedna za svaku dretvu) u jednoj periodi signala vremenskog vođenja.

Višejezgreni procesor POWER5 radi s frekvencijom signala vremenskog vođenja od 1.9 GHz, ostvaren je u 130 nm VLSI tehnologiji na čipu površine 389 mm2, ima oko 200 milijuna tranzistora te ima potrošak snage od oko 130 W.

Poboljšane verzija POWER5+ (2005. i 2006. godina) rade s frekvencijom signala vremen-skog vođenja do 2.3 GHz i imaju priručnu memoriju razine L3 ostvarene na procesorskom čipu. POWER5+ realiziranje u 90 nm tehnologiji na komadiću silicija površine 389 mm2.

Poboljšana verzija SMT procesora, također s dvije jezgre, je POWER6 procesor (2007.) koji radi na frekvenciji 5.0 GHz. Svaka jezgra ima dvije cjelobrojne aritmetičke jedinice, dvije jedinice za operacije brojevima s pomičnim zarezom FPU, jedinicu za izvođenje SIMD in-strukcija (AltiVec unit) i jednu FP jedinicu za operacije decimalnim brojevima (engl. decimal floating-point unit). Jezgra ima instrukcijsku priručnu memoriju kapaciteta 64 KB ostvare-nu kao četveroputna memorija sa skupnim asocijativnim preslikavanjem te 64 KB priruč-ne memorije podataka (osamputna memorija sa skupnim asocijativnim preslikavanjem; 10. poglavlje). Osim toga, svaka jezgra ima priručnu memoriju razine L2 kapaciteta 4 MB. Procesor POWER6 ostvaren je na čipu površine 341 mm2 uporabom 65 nm VLSI tehnologije i ima oko 790 milijuna tranzistora.

Poboljšana verzija POWER6+ pojavila se na tržištu 2009. godine.

Procesor POWER7 (2010.) je prvi IBM-ov 8-jezgreni SMT procesor i predstavlja procesor za poslužitelje nove generacije. Svaka od jezgri podržava četiri istodobne višedretvene ope-racije, dakle ukupno 32 istodobno izvršljive dretve.

Jezgra ima 12 izvršnih protočnih jedinica (dvije cjelobrojne jedinice, dvije load/store jedi ni-ce, četiri FP jedinice dvostruke točnosti, jednu vektorsku jedinicu, jednu jedinicu grananja, jednu FP jedinicu za operacije decimalnim brojevima te jednu posebnu jedinicu za logičke operacije CRU (Condition Register Logic Unit) i istodobno izvodi četiri dretve. U svakoj pe-riodi signala vremenskog vođenja jezgra pribavlja do osam instrukcija, dekodira i raspore-đuje do šest instrukcija te izdaje i izvršava do osam instrukcija.

Jezgra ima 32 KB instrukcijsku priručnu memoriju (readonly) i 32 KB priručnu memoriju po-dataka, 256 KB priručne memorije razine L2 te priručnu memoriju razine L3 (kapaciteta 32 MB) također izvedene na procesorskom čipu. POWER7 višejezgreni procesor ima za faktor 4 veću performansu u odnosu na POWER6 višejezgreni procesor.

Procesor POWER7 ostvaren je u 45 nm VLSI tehnologiji, ima 1.2 milijarde (!) tranzistora na čipu površine 567 mm2.

Page 528: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

ISS - izdavanje instrukcija (Instruction Issue) RF - skup registara (Register File) EX - izvrši (Execute) EA - računanje efektivne adrese (Address Computation) DC - priručna memori ja podataka {Data Cache) F6 - protočna struktura FP jednica Fmt - formatiranje podataka WB - upisivanje natrag (Write Back) CP - grupa izvršenih instrukcija (Group Commit)

Page 529: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

MP 1 1 ISS RF EX MP 1 ISS RF EX

MP i i ISS RF EA

jedinica grananja (BXU) WB Xfer WB Xfer

DC - Fmt WB Xfer -

2 pro točne strukture load/store

MP i

ISS RF Ex MP i i

ISS RF Ex WB Xfer

2 pro točne strukture c je lobro jne jedin ice (FXU)

MP i i ISS RF

F6 WB Xfer

2 pro točne strukture za FPU jed in ice

CP

Page 530: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

524 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI 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 područja linearne alge-bre i Gaussove eliminacijske metode, SPECrate - temelji se na SPEC CPU 2006 ispitnim pro-gramima, NAS - NASA ADVENCED Supercomputing - koristi programe kojima se rješavaju problemi iz dinamike fluida, PARSEC (Princeton Application Respository for Shared Memory Computers) - ispitni višedretveni 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 uključuje ispitne programe kao što su kompleksna 1D FFT (Fast Fourier Transformation), složeni simulacijski programi, prikazi 3D tijela i si.

15.6. GRAFIČKI PROCESORI (GRAFIČKE PROCESNE JEDINICE) Prikaz informacija u grafičkom obliku jedan je od najpodesnijih i najrazumljivijih načina komunikacije čovjeka i računala. Grafičke pri kazne jedinice (engl. graphics display) jedan su od najfascinantnijih U/l uređaja. Zaslon prikazne jedinice može biti katodna cijev CRT (Cathode Ray Tube), zaslon temeljen na tehnologiji tekučih kristala LCD (Liquid Crystal Display), na tehnologiji plazme (engl. plasma display) ili na tehnologiji OLED (Organic Light-emitting Diode) te njezinim inačicama: TOLED - transparent OLED i FOLED - flexible OLED različitih rezolucija. Izvorno su prikazne jedinice osobnih računala imale rezoluciju 640x480 slikovnih elemenata (VGA - Video Graphics Array). Sredinom devedesetih godi-na uobičajena rezolucija bila je 1024x768 slikovnih elemenata (XGA - Extended VGA), a za web-aplikacije obično se rabila rezolucija 800x600 (SVGA - Super VGA). Današnje prika-zne jedinice imaju obično rezoluciju 1280x1024 slikovnih elemenata (SXGA - Super XGA). Rezolucija LCD, ovisno o veličini zaslona prikazne jedinice, kreče se od 640x480 (prva ge-neracija) pa sve do 2560x1600 slikovnih elemenata. Uobičajena rezolucija za LCD prikazne jedinice veličine 21 inča 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 računala koje podržava grafiku sastoji se od slikovnog međuspremnika (engl. frame buffer) ili videomemorije u kojoj se pohranjuje slika za prikaz, upravljača (engl. con-troller) i sučelja za prikaznu jedinicu.

Organizacija grafičkog sučelja za osobna računala tijekom vremena se mijenjala - u jednoj je fazi razvoja sklopovlje namijenjeno grafici bilo isključivo smješteno na matičnoj ploči, a u drugoj je varijanti bilo ostvareno na posebnoj pločici (grafička kartica; engl. video display card, graphics card). I danas prijenosna računala obično imaju grafičko sklopovlje na ma-tičnoj ploči, dok stolna računala vrlo često imaju, uz grafičko sklopovlje na matičnoj ploči, mogućnost priključivanja dodatnih grafičkih kartica.

Slika 15.33 prikazuje uobičajenu konfiguraciju osobnog računala početkom devedesetih go-dina prošlog stoljeća. Sjeverni premosnik (engl. North Bridge) imao je širokopojasno sučelje koje je povezivalo procesor, memoriju i PCI sabirnicu. Sklopovlje grafičke jedinice koje se sa-stojalo od VGA upravljača (Video Graphics Array Controller), koji je zapravo memorijski uprav-ljač, prikaznog generatora i slikovnog međuspremnika, bilo je priključeno na PCI sabirnicu.

Page 531: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

SI. 15.33 Uobičajena konfiguracija osobnog računala početkom devedesetih godina \

Zbog potrebe prijenosa velike količine podataka između procesora, memorije i grafičke jedinice, umjesto priključenja na PCI sabirnicu, koristila se i brza veza točka-točka između memorije i grafičke jedinice preko AGP (Accelerated Graphic Port) pristupa koji predstavlja brzo namjensko sučelje grafičkoj kartici (2,133 GB/s).

Slika 15.34 prikazuje konfiguraciju koja je tipična za osobna računala u prvom desetljeću ovog stoljeća. Osnovna značajka je da se koriste dva odvojena procesora - središnja (cen-tralna) procesna jedinica CPU i grafički procesor GPU (Graphics Processing Unit - grafička procesna jedinica) koji imaju dva odvojena memorijska podsustava - jedan namijenjen procesoru CPU i jedan namijenjen grafičkom procesoru GPU. Grafički je procesor PCle (PCI-express) sabirnicom povezan sa sjevernim premosnikom, čime se ostvaruje vršna brzina prijenosa od 16 GB/s.

Sigurno ste primijetili da se u opisu suvremene konfiguracije osobnog računala koristi ter-min "grafički procesor", odnosno "grafička procesna jedinica". Naime, krajem devedesetih godina razvoj tehnologije VLSI omogućio je da se VGA upravljaču pridoda sklopovlje (tzv. sklopovski akceleratori) kojim se ubrzavaju neke funkcije definirane u logičkoj grafičkoj pro-točnoj strukturi (engl. logical graphics pipeline) koja je podloga za sklopovsko/programsku izvedbu grafičke jedince. (Opaska: logička grafička protočna struktura (ili grafički protočni sustav) termin je koji se koristi u računalnoj grafici za opisivanje faza potrebnih za prikaz slike (engl. rendering) - od matematičkog modela do 2D prikaza virtualne 3D scene na zaslonu prikazne jedinice.)

Page 532: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

526 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

SI. 15.34 Konfiguracija osobnog računala u prvom desetljeću ovog stoljeća \

Opišimo glavne faze u logičkoj grafičkoj protočnoj strukturi i skrenimo pozornost na one funkcije kojima su namijenjeni sklopbyski akceleratori.

Logička grafička protočna 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 točku u 2DlfT3D prostoru te operacije na atri-butima koji su pridruženi vrhovima krpica (engl. patch) - malim trokutastim ili pravokutnim poligonima, kojima se predočava ploha objekata. Vrhovima krpica pridružuju se, osim in-formacije o položaju, drugi grafički atributi kao što su boja, reflektivnost plohe, tekstura te normala na aproksimiranu zakrivljenost plohe. Grafička procesna funkcija koja se izvorno naziva vertex shader (sjenčanje vrhova) koristi se za manipulaciju vrhovima, odnosno nji-hovim atributima: promjenu položaja, boje i koordinata teksture, proračun osvjetljenja te transformaciju 3D pozicije vrha u virtualnom prostoru u 2D koordinatni sustav zaslona. Transformaciji vrhova slijedi procesna funkcija koja se naziva geometry shader. Pomoću nje se generiraju novi grafički primitivi kao što su točke, linije i plohe, odnosno krpice odre-đene trima ili četirima vrhovima. Sljedeća funkcija u grafičkoj protočnoj strukturi je raste-rizacija koja se sastoji od pretvorbe kontinuiranih koordinata u diskretne koordinate u pri-kaznoj memoriji, otklanjanja neželjenih učinaka uslijed diskretizacije, uklanjanja skrivenih ploha te preslikavanja boje i teksture na poligone (pixelshader). Zadnji segment u grafičkoj protočnoj strukturi jest prikaz oblikovane slike na zaslonu prikazne jedinice.

Krajem devedesetih godina sklopovi za ubrzanje (akceleratori) u grafičkim jedinicama bili su namijenjeni funkcijama generiranja grafičkih primitiva te preslikavanju boje i teksture na poligone.

Početkom 2000. počinje se koristiti naziv grafički procesor jer se u jednom čipu objedinjuju sve uobičajene funkcije potrebne za djelotvorni prikaz 2D i 3D grafike. Grafički procesor postaje čvrsto definirana funkcijska protočna struktura namijenjena visoko kvalitetnom prikazu jednakom onom filmskom (engl. film-quality rendering) u stvarnom vremenu. Zapravo, krajem 1999. tvrtka NVIDIA uvela je termin "grafička procesna jedinica" GPU -Graphics Processing Unit kojim je opisala procesor na čipu GeForce 256 u kojem su integri-rane funkcije koje podržavaju logičku grafičku protočnu strukturu.

Page 533: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 527 I

Grafička procesna jedinica GeForce 256 obrađivala je 15 M poligona (krpica) u sekundi i 480 M slikovnih elemenata u sekundi. Imao je čvrsto definiranu 32-bitnu FP (engl. floating-point) jedinicu za transformacije vrhova, procesor za proračun 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 grafičkih procesora godišnje - od toga najviše (oko 50 milijuna) za interaktivne računalne igre na osobnim računalima. Osim toga, grafički se procesori koriste u radnim stanicama, simulatorima vožnje i letenja. Veliki dio tržišta grafičkih procesora namijenjen je mobitelima.

S vremenom, grafički procesori postajali su programirljivi i zamijenili su čvrsto definira-ne funkcije određene logičkom grafičkom protočnom strukturom. Uz to, računske su se operacije s cjelobrojnih raširile na operacije brojevima s pomičnim zarezom jednostruke i dvostruke točnosti.

Trenutačno stanje (2010.) je sljedeće: grafički su se procesori pretvorili u programirljivepa-ralelne procesore koji svojom procesnom snagom premašuju višejezgrene (engl. multicore) procesore. Grafički procesori i njima pridružene programske rutine (engl. driver) ostvarene s OpenGL i DirectX definiraju različite modele grafičke obrade. OpenGL je otvoreni stan-dard za programiranje funkcija 3D grafike, a DirectX je dio Microsoftovog multimedijskog programskog sučelja koje uključuje i Direct3D za 3D grafiku. Oba aplikacijska programska sučelja API (Application Programming Interfaces) omogućuju oblikovanje djelotvornih sklo-povskih ubrzanja grafičkih funkcija.

S arhitektonskog gledišta, grafički procesor je visoko paralelni, više dretveni procesor s vrlo velikim brojem jezgri namijenjen vizualnom računanju (engl. visual computing). Vizualno računanje je novi pojam koji se odnosi na složenu mješavinu grafičke obrade i računanja tako da omogućuje vizualnu interakciju u stvarnom vremenu računalno oblikovanih obje-kata uporabom grafike, slika i videa.

Grafičkim procesorima pridodane su nove instrukcije i memorija tako da podržavaju više programske jezike i programska okruženja opće namjene. Grafički procesori sada se mogu programirati u programskim jezicima sličnim C i C++ i postaju procesori opće namjene s vrlo velikim brojem jezgri (engl. manycore)\

U skladu s arhitektonskim značajkama suvremenih grafičkih procesora, definiran je i novi model programiranja jer velika procesna moć koja se odnosi na operacije brojevima s pomičnim zarezom te veliki stupanj paralelizma ostvaren vrlo velikim brojem procesora, odnosno jezgri, nudi djelotvornu primjenu grafičkih procesora na područjima izvan raču-nalne grafike (na primjer, obrada digitalnih slika i videa, složeni postupci optimizacije upo-rabom evolucijskih algoritama, postupci kriptiranja/dekriptiranja podataka i si.).

Jedan od modela paralelnog programiranja namijenjen grafičkim procesorima (ali i više-jezgrenim 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 piše program za jednu dretvu koja se potom instancira ili oprimjeruje u velikom broju dretvi na velikom broju procesora u grafičkoj procesnoj jedinici.

Page 534: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

528 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

15.6.1. NVIDIA TESLA - UNIFICIRANA ARHITEKTURA ZA GRAFIKU I RAČUNANJE

Tradicionalna izvedba 3D grafičkog procesora zasniva se na logičkoj grafičkoj protočnoj strukturi utemeljenoj na odvojenim programirljivim stupnjevima procesora za sjenčanje vrhova (engl. vertex processor) koji izvode programe za obradu vrhova i stupnjevima pro-cesora za obradu slikovnih elemenata (engl. fragment pixel processor).

U studenom 2006. tvrtka NVIDIA definirala je novu arhitekturu pod nazivom Tesla za gra-fički procesor GeForce 8800. Osnovna značajka arhitekture Tesla jest da se programi za sjenčanje vrhova (engl. vertex shader) i programi za sjenčanje slikovnih elemenata (engl. pixel-fragment shader) izvode na ujednačenoj (uniformnoj) visokoparalelnoj arhitekturi procesora. Drugim riječima, u grafičkom procesoru koji se temelji na Tesla arhitekturi nema razlike između procesora za sjenčanje vrhova i procesora za sjenčanje slikovnih elemenata. Programi se izvode na jednakim procesorima koji, uz to što objedinjuju obje funkcije, ima-ju i dodatne funkcije tako da se grafički procesor može koristiti i u negrafičkim aplikacijama koje su vrlo zahtjevne u pogledu performansi. Programi za tu vrstu aplikacija razvijaju se u višim programskim jezicima sličnim C i C++u skladu s modelom paralelnog programiranja ČUDA Jedan od razloga ujednačenosti procesora u arhitekturi Tesla je i zahtjev za dinamič-kim uspostavljanjem ravnoteže radnog opterećenja između procesora za sjenčanje vrhova i procesora za sjenčanje slikovni elemenata. Uz to, ujednačenost dopušta djelotvorno uvo-đenje novih postupaka iz logičke grafičke protočne strukture, primjerice postupaka koji se odnose na generiranje geometrijskih primitiva (engl. geometry shader).

Slika 15.35 prikazuje blok-dijagram grafičkog procesora GeForce 8800. Sustavno se arhi-tektura grafičkog procesora GeForce 8800 može 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).

Grafički procesor ima polje tokovnih procesora SPA (Streaming Processor Array) koje se sasto-ji od 128 tokovnih procesora (ili tgkovnih procesorskih jezgri) SP (engl. streaming-processor core). Svaki tokovni procesor SP je višedretveni procesor koji podržava 96 istodobnih dre-tvi. Tokovni procesori SP organizirani su u 16 tokovnih muItiprocesora SM (engl streaming-multiprocessor) grupiranih u osam nezavisnih procesorskih jedinica koje se nazivaju tek-stu 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 može istodob-no izvršavati do 8 x 96 = 768 dretvi. Tokovni multiprocesor SM opisuje se kao procesor SIMT - Single-Instruction, Multiple-Thread (jedna instrukcija višestruke dretve). Teksturno-procesorska nakupina TPC ima i upravljač geometrijskih operacija koji služi za preslikava-nje logičkih grafičkih vrhova u fizičke 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!

Page 535: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

in

cn to LH ro O

CD I D —i Q> 3

I D QJ n< O lQ

o n (T> i/i o 3 CD fl)

n fD 00 00 O O

Host CPU Bridge System memory Host CPU Bridge System memory

fTk^ i

1 CPU domaćin 2 premosnik 3 sistemska memorija 4 sučelje za CPU domaćina 5 ulazni zbirnik 6 raspoređivanje poslova za procesore za

sjenčanje vrhova 7 blokzarasterizaciju 8 raspoređivanje poslova za procesore za

sjenčanje slikovnih elemenata 9 raspoređivanje računalnih poslova 10 TPS - teksturno-procesorska nakupina

11 SM - tokovi multiprocesor 12 SP - tokovni procesor 13 tekstu rna jedinica 14 priručna memorija 15 dijeljena memorija 16 procesor za rasterske operacije

Page 536: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

530 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

Arhitektura tokovnog procesora prilagođena 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, općenito, mogu opisati kao sljedovi sličnih zapisa podataka, a jezgre kao mali programi koji djeluju na skupini ulaznih tokova generi-rajući skupine izlaznih tokova. Iz ovog jednostavnog opisa možemo opravdano zaključiti da tokovni programski model odgovara modelu koji se temelji na arhitekturi upravljanoj tokom podataka (engl. dataflow) (poglavlje 1). Tokovni procesor kombinira značajke SIMD arhitekture i arhitekture upravljane tokom podataka. Tokovni procesor se, općenito, sastoji od tokovne memorije (engl. streaming memory), skupa tokovnih registara (engl. stream re-gister file), većeg broja nakupina ALU jedinica koje podržavaju operacije definirane jezgrom te mikroupravljača (engl. micro-controller). U skladu sa SIMD arhitekturom, sve nakupine ALU djeluju istodobno. Tokovna memorija djelotvorno podržava dohvat tokova iz memo-rijskog sustava te pohranu tokova u memorijski sustav. Skup tokovnih registara pohranjuje veliku količinu podataka i tako je organiziran da omogućuje dohvat (ima ulogu izvora to-kova podataka) i pohranu (ponor) tokova na samom procesorskom čipu. Slijed operacija koje definiraju jezgru određuju se mikroupravljačem. Vratimo se opisu GeForce 8800.

Grafički procesor GeForce 8800 ima sučelje s procesorom domaćinom (engl. host interface) koje omogućuje komunikaciju s procesorom domaćinom (engl. host CPU) preko PCle sa-birnice. Ulazni zbirnik (engl. input assembler) prikuplja geometrijske primitive (točke, linije, krpice). Blokovi za raspodjelu poslova (označeni sa 6,8 i 9; slika 15.35) raspoređuju vrhove, slikovne elemente i dretve teksturnim procesorskim nakupinama TPC.

Teksturne procesorske nakupine TPC izvršavaju programe koji se odnose nS operacije vr-hovima, geometrijskim primitivima (vertex shader, geometry shader) te ostalim računskim programima. Izlazni se podaci, koji su rezultat potonjih operacija, pohranjuju u spremnike koji se nalaze na procesorskom čipu. Sadržaji tih spremnika prosljeđuju 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 sli-kovnih elemenata ponovno teksturnim procesorskim nakupinama TPC za obradu slikov-nih elemenata (pixel-fragments shader). Sjenčani se slikovni elementi preko pros poj ne mreže šalju procesorima za rasterske operacije ROP (Raster Operations Processor) koji izvode operacije koje se odnose na proračun dubine i miješanje boja s različitim prozirnostima (engl. colour blending).

Već smo spomenuli daje procesorslća jezgra SP GeForce 8800 višedretvena i da rukuje isto-dobno s 96 dretvi. Jezgra ima skup od 1024 32-bitnih registara kojima podržava 96 dretvi, skalarnu jedinicu za množenje i zbrajanje brojeva s pomičnim zarezom MAD (multiply-add) tako da svaki tokovni multiprocesor SM ima osam takvih jedinica. Svaka jezgra podrža-va 32-bitnu i 64-bitnu cjelobrojnu aritmetiku te logičke PTX (Parallel Thread execution) in-strukcije. Procesori su povezani sa šest 64~bitnim DRAM modula pomoću prospojne mreže.

Svaki od šesnaest tokovnih multiprocesora SM ima, osim osam jezgri SP, instrukcijsku pri-ručnu memoriju (I cache), višedretvenu instrukcijsku jedinicu za pribavljanje i izdavanje in-strukcija MT i priručnu ispisnu (read-only cache) memoriju za pohranu konstanti C-Cache (Constant-cache), dvije specijalne jedinice SFU (Special Function Unit) te zajedničku, dije-ljenu memoriju (slika 15.37). Višedretvena instrukcijska jedinica za pribavljanje i izdava-nje instrukcija oblikuje, raspoređuje 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

Page 537: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 531 I

daje 768 dretvi. U skladu s arhitekturom SIMT (jedna instrukcija višestruke dretve), jedna se instrukcija odnosi na jednu grupu od 32 dretve.

1 upravljač geometrijskih operacija 2 upravljač tokovnih mu Iti procesora 3 teksturna jedinica 4 dijeljena memorija

SI. 15.36 Tekstumo-procesorska nakupina TPC

SP SP

; SP SP

SP SP

\ sp SP :

SP

SP

SP

SP

SP

SP

5 instrukcijska priručna memorija 6 višedretvena instrukcijska jedinica 7 priručna memorija teksturne jedinice 8 specijalna jedinica za transcedentne funkcije

SI. 15.37 Tokovni multiprocesorSM

1 instrukcijska priručna memori ja višedretvena instrukcijska jedinica dijeljena memori ja specijalna jedinica za transcedentne funkcije priručna ispisna memori ja

Dvije specijalne jedinice SFU namijenjene su za računanje transcedentnih funkcija (sin/cos, log2x, recipročne vrijednosti, recipročne vrijednosti drugog korijena) i za funkcije za inter-polaciju atributa pridruženim slikovnim elementima (boja, dubina, koordinate teksture). Svaka SFU ima četiri množila brojeva s pomičnim zarezom.

Tokovni multiprocesor SM je ujednačeni grafički i računski multiprocesor koji izvršava programe za sjenčanje vrhova, oblikovanje grafičkih primitiva (engl. geometry shader) i programe za sjenčanje slikovnih elemenata, ali i druge paralelne (ne-grafičke) računske programe.

Page 538: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

532 15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

Već smo napomenuli da je tokovni multiprocesor arhitekture SIMT koja je slična SIMD ar-hitekturi jer se i ovdje jedna instrukcija primjenjuje na višestrukom toku podataka. No po-stoji jedna važna razlika, SIMT primjenjuje jednu instrukciju istodobno na višestrukim, a ne samo na višestrukim tokovima podataka. Arhitektura SIMT dopušta 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 ograničenje programeru u pogledu broja istodobno izvršljivih dretvi.

Performansa grafičkog procesora GeForce 8800 ovisno o izvedbi (Ultra ili GTX) je između 518 GFLOPS-a i 576 GFLOPS-a. Zanimljiva je i usporedba performansi grafičkog procesora GeForce 8800 i višejezgrenih procesora. Na primjer, pri množenju dvaju matrica dimenzija 1024 x 1024 GeForce 8800 GTX (radna frekvencija 1.35 GHz) postiže performansu od oko 200 GFLOPS-a, dok četverojezgreni procesor Intel Core-2 (2.4 GHz) postiže performansu od oko 70 GFLOPS-a. Usporedba GeForce 8800 GTX i 4-jezgrenog procesora Intel Xeon (2.8 GHz) pokazuje da je grafički procesor otprilike sedam puta brži u računanju brze Fouriereve transformacije FFT (Fast Fourier Transform).

Krajem 2010. na tržištu se pojavio grafički procesor, odnosno grafička kartica NVIDIA GeForce GTX 580 marketinški najavljen kao "najbrži grafički procesor na planeti" koji se temelji na arhitekturi NVIDIA Fermi. GTX 580 ima 512 tokovnih procesora SP koji su orga-nizirani u 16 tokovnih multiprocesora SM i 48 procesora za rasterske operacije ROP. Svaki tokovni procesor ima protočnu cjelobrojnu aritmetičko-logičku jedinicu i protočnu ari-tmetičku jedinicu FPU (floating-point unit). FPU podržava aritmetičke operacije u skladu sa standardom IEEE 754-2008. Tokovni multiprocesor SM ima 32 tokovna procesora SP, dvije jedinice za raspoređivanje grupa od po 32 dretve (engl. warp scheduler), dvije jedinice za dodjeljivanje (engl. dispatch unit), skup tokovnih registara koji se sastoji od 32768 32-bit-nih registara, četiri jedinice SPU, 16 jedinica load/store (LD/ST), prospojnu mrežu, 64 KB rekonfigurabilnu memoriju koja se može organizirati tako da 48 KB bude priručna memo-rija razine 1, a preostalih 16 KB bude tzv. scratchpad memory, priručnu memoriju razine 2 kapaciteta 768 KB, četiri teksturne jedinice s teksturnom priručnom memorijom (engl. texture cache). Osim svega toga, SM ima i tzv. polimorfni stroj (engl. PolyMorph Enginee) koji je namijenjen grafičkim funkcijama (transformacija pogleda, rukovanje vrhovima).

Grafički procesor GTX 580 ima sučelje za PCle 2.0x16 s vršnom brzinom prijenosa do 20 GB/s te memorijsko sučelje GDDR5 (Graphics Double Data Rate version 5) širine 384 bita. Aplikacijsko programsko sučelje API procesora NVIDIA GeForce GTX 580 podržava Č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 proizvođače grafičkih procesora - to su AMD/ATI (grafički pro-cesor AMD Radeon HD 6990 s 2 x 1536 tokovnih procesora!), S3 Graphics, VlATechnologies i Matrox.

Page 539: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 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.

Page 540: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

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. Peruško, Digitalna elektronika, Logičko i električko projektiranje, Školska knjiga, Zagreb, 1991.

U. Peruško, 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,Tehnička knjiga, Zagreb, 1982. (prvo izdanje)

S. Ribarić, Arhitektura računala pete generacije, Tehnička knjiga, Zagreb, 1986.

S. Ribarić, Naprednije arhitekture mikroprocesora, Element, Zagreb, 2006.

S. Ribarić, Arhitektura računala RISC i CISC, Školska knjiga, Zagreb, 1996.

Page 541: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 535 I

F. Schmidt, The SCSI Bus and IDE Interface, Protocols, Applications and Programming, Addison-Wesley, 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, Prentice-Hall 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 računala, Školska knjiga, Zagreb, 1988.

Page 542: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 537 I

KAZALO POJMOVA

A ACIA 48 adresiranje

bazno s pomaknućem 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 analitički stroj 32 ANSI/IEEE Std 754 217 antizavisnost 452 arbitraža prozivanjem ili glasovanjem 373 arbitraža s nezavisnim zahtijevanjem 374 arbitraže ulančavanjem 373 arhitektura

dinamička 25 rekonfigurabilna 25 statička 25

arhitektura računala 18 arhitektura računala upravljana zahtjevom 23 aritmetičke operacije brojevima s pomičnim zarezom 252 aritmetičko-logička 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 bačvasti posmačni 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 pomičnim 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

Page 543: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

538 KAZALO POJMOVA

Denningov model virtualne memorije 341 diferencijski stroj 31 dijeljenja obnavljanjem djelomičnog ostatka 241 dijeljenje 240 dijeljenje metodom "olovka i papir" 241 DIMM 285 dinamički 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 priručna 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 višedretvenost 509 FireWire 380,385 fizički 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 vođenja 186 generator sljedova 183,194 glavna ili radna memorija 272 gniježđenje poziva 128 Goldstein, H.H. 31

GPU 525 grafički procesor 524,528 grananje

bezuvjetno 126 uvjetno 126

grubozrnata višedretvenost 509 GTX580 532 gustoča zapisa 294 gustoće staza 294

H

harvardski tip priručne 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 pomičnim zarezom 217 ILP 466,473 implicitni paralelizam 475 instrukcije

aritmetičke 80 I grananja 89 logičke 80 mješovite 91 za pristup memoriji 85

instrukcijska protočna struktura 434 instrukcijskidekoder 182 instrukcijski registar 62 Intel 8080 33 interpretacijski dijagram 437 interpreter 22 ISA 77 ISA/EISA 379 ispiranje protočne 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 način adresiranja 67 izravni pristup memoriji 425

Page 544: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 539 I

izravno preslikavanje 324 izvorni program 108 IZVRŠI 45 izvršljivi binarni program 108

J

JBOD 299 jedinični ili nepotpuni komplement 212 jednostruki format broja s pomičnim 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 priručne 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

izvrši 164 pribavi 164

mikroinstrukcija 164 mikrooperacija 165 mikroprogram 164 mikroprogramirana upravljačka 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 množenje 232 Mooreov zakon 34 Motorola 6800 33,49 MPEG 496 MTBF 297 multiprocesorski sustav 486 MWIPS 105

N

nanoinstrukcija 201 nanoprogramirana upravljačka jedinica 201 Nehalem procesor 510 nemaskirajući prekid 410 nepotpuni komplement 212 Neumannov model 3,18,31 Niagara 2 517 Niagara procesor 514 nop 91,454 normalizacije mantise 216 notacija vrijednost + prekoračenje 216 NRU 330 NUMA 497 NVIDIA Fermi 532 NVIDIA Tesla 528

O

obrada podataka 1 omjer pogotka 319 omjer promašaja 319 OpenGL 527 Operon "Magny Cours" procesor 518

Page 545: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

540 KAZALO POJMOVA

opisnik dretve 483 optičke memorije 306 organizacija računarskog sustava 18 oslobađanje na zahtjev 372 oslobađanje sabirnice istiskivanjem 372 oslobađanje sabirnice nakon korištenja 372 ožičano-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 računala 93 periferni uređaj 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 posmačni sklop 246

posmak aritmetički posmak 252 kružni posmak 250 logički posamak 250

postinkrementno registarsko indirektno adresiranje 403 postupak množenja "olovka i papir" 232 postupkovna zavisnost 466 potpuni ili dvojni komplement 212 potpuno asocijativno preslikavanje 321 potpuno oduzimalo 226 potpuno zbrajalo 222 potrošak snage 163 Poveznik 22 POWER4 512 POWER5 521 POWER6 522 POWER7 59,522 PowerPC 620 468 pozivajući program 126 pozvani program 126 prateći modul 363 precizni i neprecizni prekid 463 predviđanje bita prijenosa 229 predviđanje 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 sučelje 421 prekinuti program 126 preljev V 264 pretpribavljanje 333 PRIBAVI 45 pribavljanje na zahtjev 333 prijenos parametara 130 priključak branch kašnjenja 459 priključak load kašnjenja 469 primarna memorija 268 priručna diskovna memorija 297 priručna memorija 266,311 priručni 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

Page 546: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

S. RIBARIČ - GRAĐA RAČUNALA 541 I

programirljiva memorija 270 programska izvedba stoga 142 programski model procesora 68 programsko brojilo 44 projektiranje memorijskog modula 278 prospojna matrica 249 prospojna mreža 486 prostorna lokalnost 320 protočna memorija 288 protočni segment 288 protočnost 429 protokol MESI 334, 504 pseudoinstrukcije 109 pulI 134 punilac 22,121 push 134 put podataka 159

R

R 10000 468 računski modeli 3 radni skup WS 320 rad u vremenskoj podjeli 484 RAID 299 RAM 48 random 330 razlomački 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 upravljačka 361

sabirnička arbitraža 371 sabirnički ciklus potvrde prekida 363 sabirnički protokol 388 savitljivi disk 305 SCSI 291,381 SDRAM 284 SEC-DED 290 segmentacija 353 segmentacija sa straničenjem 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 vođenja 62 SIMD 26 SIMD instrukcije 484 simultana višedretvenost SMT 510 sinkrona protočna struktura 431 sinkrona sabirnica 365 sinkronizacija dretvi 506 sinkronizacija procesa 506 sintetični ispitni programi 105

Drystone 105 VVhetstone 105

SISD 26 sklopovska upravljačka jedinica 165 skupno asocijativno preslikavanje 321 skup registara opće namjene 266 SLED 300 SMV 512 snooping protokol 501 SPEC 102 SPECfp2000 104 SPECmark 102 SPERT-II 496 SPMD 527 SSE 485 statički parametri diskovne jedinice 295 statički RAM (SRAM) 272 statusni registar SR 147 stog 133 straničenje 346 stranični okvir 346 strojni jezik 107 strukturni hazard 449 stvarna zavisnost podataka 466 superskalarni procesor 463 suvišakn 216

Š

širenje bita predznaka 83 špekulacija 478 špekulativnog izvršavanj 478

T

tablica dretve 483 tablica procesa 481 tablica vektora iznimaka 420 TLB 350

Page 547: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

542 KAZALO POJMOVA

TLP 483 tokovni procesor 528 tok podataka 7,8 translacijski spremnik TLB 350 Turingov model računanja 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 upravljačka jedinica 48,159 upravljačka jedinica diska 291 upravljačka memorija 164 upravljačka sabirnica 361 upravljački hazard 449 upravljački 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 stranični broj 344 višedretvenost 483 višejezgreni procesori 500,510,517 višeprocesorski MIMD 486 višeprocesorski SIMD 486 višeprogramski rad 474 višestruki formati mikroinstrukcija 206 višetračna vektorska obrada 494 višezadaćni rad 474 viši programski jezici 107 Vizualno računanje 527 VLIW 35 VLIW/EPIC 477

VLSI 31 VME 375 vodeći 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 traženja 298

W

Whetstone 105 Whirlwind I 32 Wide SCSI 387 Wilkes, M. 32 WORM 307

Z

zakašnjelo grananje 458 zamjena blokova 319 zamjena stranica 353

na zahtjev 353 pretpribavljanjem 353

zastavica C 61,245 zastavica polovičnog 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

Page 548: ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)

Knjiga Građa računala - arhitektura i orga-nizacija računarskih sustava bavi se digital-nim računalima, računarskim sustavima i sučeljem sklopovske i programske opreme.

Zamišljena je kao udžbenik koji omogućuje sustavni, postupni uvod u to složeno znan-stveno područje koje je izloženo vr lo brzim i učestalim tehnološkim promjenama. Zamisli i osnovni koncepti u knjizi predstavljeni su na način koji može osigurati razumijevanje, obli-kovanje i održavanje računarskih sustava, od jednostavnih ugrađenih računalnih sustava, osobnih računala pa sve do poslužitelja i računarskih višeprocesorskih SiMD i MIMD sustava. Posebna pozornost posvećena je konceptima arhi tekture računarskih sustava koji su vremenski nepromjenjivi i u velikoj mjeri ne ovise o burnom razvoju tehnologije vr lo visokog stupnja integracije (VLSI - Very Large Scale integration).

Osim temeljnih zamisli i arhi tektonskih kon-cepata, knjiga sadržava podrobne opise više-procesorskih i paralelnih sustava, superska-larnih procesora, višedretvenih i simultano višedretvenih arhi tektura procesora, više-jezgrenih procesora te opise mult iprocesor-skih grafičkih jedinica.

Brojni pr imjer i i analize slučaja kojima se i lustr iraju pojedini arhitektonski koncepti omogućit će čitateljima lakše razumijevanje i savladavanje gradiva.

Knjiga je plod dugogodišnjih predavanja o arhi-tekturi i organizaciji računarskih sustava te građi računala koja je autor izvodio i izvodi na Fakultetu elektrotehnike i računarstva (FER), Fakultetu organizacije i informatike (FOI), Prirodoslovno-matematičkom fakultetu (PMF) Sveučilišta u Zagrebu, Tehničkom fakultetu Sveučilišta u Rijeci, Elektrotehničkom fakul-tetu Sveučilišta u Osijeku te Fakultetu elek-trotehnike. strojarstva i brodogradnje (FESB) Sveučilišta u Splitu. Sadržajno udžbenik u potpunosti pokriva i dijelom nadilazi nastavni plan kolegija Građa računala na Visokoj školi za primijenjeno računarstvo u Zagrebu, koja je i njegov naručitelj.

Udžbenik je prvenstveno namijenjen visoko-školskoj nastavi na tehničkim i njima srod-nim fakultet ima, međutim, neka poglavlja nude gradivo koje se može obrađivati u sred-njim školama informatičkog i elektrotehnič-kog usmjerenja.

www.racunarstvo.hr

ISBN 978-953-322-07

RAČUNARSTVO visoka škola ALGEBRA

G R U P A