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

January 29, 2017 | Author: Rio_72 | Category: N/A
Share Embed Donate


Short Description

Download ARH2 S. Ribaric - Grada Racunala - Arhitektura i Organizacija Racunarskih Sustava (2011)...

Description

prof. dr. sc. Slobodan Ribarić

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

prof. dr. sc. Slobodan Ribarić

GRAĐA RAČUNALA ARHITEKTURA I ORGANIZACIJA RAČUNARSKIH SUSTAVA 1. izdanje

2011.

SADRŽAJ Q 1. ARHITEKTURA RAČUNARSKOG SUSTAVA 1.1. Uvod 1.2. Osnovni računski modeli 1.3. Upravljački tok, tok podataka i upravljanje slijedom izvršavanja na temelju zahtjeva 1.3.1 Upravljački tok 1.3.2. Tok podataka 1.3.3 Upravljanje zahtjevom 1.3.4.Turingov stroj 1.3.5. k-ta konfiguracijaTS-a 1.3.6. Von Neumannov model 1.4. Arhitektura, organizacija i građa računarskog sustava 1.4.1. Definicija arhitekture računarskog sustava 1.5 Klasifikacija arhitekture računarskog sustava 1.5.1. Flynnova klasifikacija

1 1 3 4 5 7 9 10 16 18 18 18 23 25

2. VON NEUMANNOV MODEL RAČUNALA : 2.1. Uvod 2.1.1. Nulta generacija - generacija mehaničkih strojeva za računanje (1644. - 1945.) 2.1.2. Prva generacija - elektronička računala s elektronskim cijevima (1945. - 1955.) 2.1.3. Druga generacija računala - tranzistor kao građevna komponenta (1955.-1965.) 2.1.4.Treča generacija - integrirani sklopovi (1965.-1980.) 2.1.5. Četvrta generacija računala - sklopovi vrlo visokog stupnja integracije (1980. - ?) 2.2. Funkcijske jedinice von Neumannovog modela računala 2.2.1. Upravljački tok, instrukcijski tok i tok podataka u Neumannovom modelu računala 2.2.2. Aritmetičko-logička jedinica 2.2.3. Upravljačka jedinica 2.2.4. Memorijska jedinica 2.2.5. Ulazno-izlazna jedinica 2.3. Jednostavno mikroračunalo - von Neumannov model računala 2.4. Von Neumannovo računalo - računalo SISD 2.5. UsporedbaTuringovog stroja i von Neumannovog modela računala

31 31 31 32 32 33 33 35 37 39 41 46 47 48 55 56

3. POJEDNOSTAVLJENI MODELI CISC I RISC PROCESORA 3.1. Uvod 3.2. Pojednostavljeni model CISC procesora 3.3. Primjer izvođenja programa 3.4. Stanje na vanjskim sabirnicama 3.5. Pojednostavljeni model RISC procesora 3.5.1. Aritmetičke i logičke instrukcije 3.5.2. Instrukcije za pristup memoriji 3.5.3. Instrukcije grananja 3.5.4. Mješovite instrukcije

59 59 59 64 70 77 81 85 89 91

4. PERFORMANSA RAČUNALA 4.1. Uvod: performansa, cijena i omjer cijene i performanse 4.2. Mjere performanse 4.2.1 .MIPS - Millions of Instructions per Second 4.2.2. FLOPS - Floating-point Operations per Second 4.2.3. SPEC (System Performance Evaluation Cooperative) mjera 4.2.4 Sintetični ispitni programi 43. Amdahlov zakon

93 93 95 98 100 100 105 106

5. ZBIRNI JEZIK I PREVODIOCI ZA ZBIRNI JEZIK 5.1. Zbirni jezik 5.1.1. Izvršljive instrukcije i pseudoinstrukcije 5.1.2. Makroinstrukcije 5.2. Razlozi uporabe zbirnog jezika 5.3. Dvoprolazni asembler 5.4. Postupak prevođenja zbirnog programa 5.5. Punilac (engl. loader)

107 107 109 112 115 116 120 121

6. UPRAVLJAČKA JEDINICA 6.1. Uvod 6.2. Prijenos upravljanja unutar istog programa 6.3. Prijenos upravljanja između različitih programa 6.3.1. Prijenos upravljana između pozivajućeg i pozvanog programa 6.4. Rekurzivne programske procedure (rekurzivni potprogrami) 6.4.1. Stog 6.4.2. Izvedba stoga 6.5. Prijenos upravljanja između prekinutog i prekidnog programa 6.6. Primjer uporabe stoga - analiza slučaja za MC 68000

123 123 125 125 126 131 134 142 145 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 8.1. Uvod: bit, riječ, bajt i znakovi 8.2. Prikaz brojeva 8.2.1. Prikaz cijelih brojeva 8.2.2. Prikaz brojeva s pomičnim zarezom (floating-point number) 8.2.3. Binarno kodirani dekadski brojevi 8.3. Binarna aritmetika 8.3.1. Zbrajanje dvaju binarnih brojeva 8.3.2. Paralelno zbrajalo 8.3.3. Serijsko zbrajalo 8.3.4. Oduzimanje dvaju binarnih brojeva 8.3.5. Oduzimanje pomoću komplementa binarnog broja 8.3.6. Paralelno zbrajalo s predviđanjem bita prijenosa (engl. carry lookahead) 8.3.7 Množenje 8.3.7.1. Množenje nepredznačenih brojeva 8.3.7.2. Množenje brojeva predočenih u notaciji dvojnog komplementa 8.3.7.3. Boothov algoritam 8.3.8. Dijeljenje 8.3.9. Posmak 8.3.10 Bačvasti posmačni sklop 8.4. Aritmetičke operacije brojevima s pomičnim zarezom

211 211 212 212 215 219 220 220 224 225 226 228 229 232 232 235 235 240 244 249 252

8.5. Oblikovanje jednostavne aritmetičko-logičke jedinice-analiza slučaja 8.5.1. Aritmetička sekcija 8.5.2. Logička sekcija 8.5.2.1. Logička operacija ISKLJUČIVO ILI 8.5.2.2. Logička operacija NE 8.5.2.3. Logička operacija ILI 8.5.2.4. Logička operacija 1

256 258 260 261 262 262 262

9. MEMORIJSKI SUSTAV 9.1. Uvod 9.2. Memorijska hijerarhija 9.3. Osnovne organizacijske i tehnološke značajke memorijskog sustava 9.4. Glavna ili radna memorija 9.4.1 Projektiranje memorijskog modula 9.5. Porodice DRAM 9.6. Ubrzanje rada memorije 9.7. Kod za ispravljanje pogrešaka 9.8. Sekundarna memorija 9.8.1. Magnetska diskovna memorija 9.8.2 Organizacija podataka na disku 9.8.3. Statički i dinamički parametri diskovne jedinice 9.8.4. Priručna diskovna memorija (engl. disk cache) 9.9. Polje diskova RAID (Redundant Array of Inexpensive Disks) 9.10. Savitljivi disk (engl. floppy disk) 9.11. Magnetska vrpca 9.12. Optičke memorije 9.12.1. CD-ROM 9.12.2. CD-R, CD-RW i DVD

265 265 265 269 271 278 284 285 289 290 291 293 295 297 299 305 305 306 306 307

10. PRIRUČNA MEMORIJA 10.1. Uvod 10.2. Djelovanje priručne memorije 10.3. Performansa priručne memorije 10.4. Organizacija priručne memorije 10.4.1. Način smještanja blokova u bločne priključke priručne memorije 10.4.1.1. Priručna memorija s potpuno asocijativnim preslikavanjem 10.4.1.2. Priručna memorija s izravnim preslikavanjem 10.4.1.3. Priručna memorija sa skupnim asocijativnim preslikavanjem 10.5. Način zamjene blokova 10.5.1. Veličina bloka i kapacitet priručne memorije 10.5.2. Način obnavljanja sadržaja glavne memorije 10.5.2. Način pribavljanja bloka iz glavne memorije 10.6. Koherencija priručne memorije 10.7. Priručna memorija - analiza slučaja procesor MC 68030

311 311 316 319 320 321 321 323 327 329 331 333 333 334 335

11. VIRTUALNA MEMORIJA 337 11.1. Uvod 337 11.2. 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

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

359 363 363 371 377 381

13. ULAZNO-IZLAZNI SUSTAV 13.1. Uvod 13.2. Ulazno-izlazni upravljač 13.3. Načini izmjene podataka 13.3.1. Programirani ulazno-izlazni prijenos podataka 13.3.2. Prekidni ulazno-izlazni prijenos podataka 13.4. Analiza slučaja - vektorski prekid procesora MC 68000 13.5. Izravni pristup memoriji DMA - Direct Memory Access

393 393 395 398 398 406 417 425

14. PROTOČNOST 14.1. Uvod 14.2. Protočne strukture u računarskom sustavu 14.3. Instrukcijska protočna struktura 14.3.1. Podrobniji dijagram stanja instfukcijskog ciklusa 14.4. Instrukcijska protočna struktura za RISC procesore 14.4.1. Potrebne sklopovske preinake u protočnom RISC procesoru 14.4.2. Ostvarivanje cilja: jedna instrukcija u jednoj periodi signala vremenskog vođenja 14.5. Instrukcijska protočna struktura za CISC procesore 14.6. Instrukcijska protočna struktura CISC procesora MC 68060 - analiza slučaja 14.7. Hazardi u instrukcijskoj protočnoj strukturi 14.7.1. Strukturni hazard 14.7.2. Podatkovni hazard 14.7.3. Upravljački hazard 14.7.4. Predviđanje grananja 14.7.5. Precizni i neprecizni prekid (iznimka) 14.8. Superskalarni procesori 14.8.1. Načini izdavanja i završavanja instrukcija u superskalarnoj arhitekturi procesora

429 429 433 434 437 439 440 444 445 447 449 449 451 457 461 463 463 468

15. VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGRENII GRAFIČKI PROCESORI 15.1. Oblici i razine paralelizma 15.1.1. Paralelizam na razini instrukcija 15.1.2. Paralelizam na razini dretvi i procesa 15.1.3. Paralelizam na korisničkoj razini 15.1.4. Podatkovni paralelizam 15.2. Paralelne arhitekture: višeprocesorski SIMD, vektorski procesori i MIMD sustavi 15.2.1. Višeprocesorski SIMD sustavi 15.2.2. Vektorski procesori 15.3. Multiprocesorski sustavi - višeprocesorski MIMD sustavi 15.3.1. Koherencija priručne memorije u multiprocesorskom sustavu 15.3.2. Sinkronizacija procesa i dretvi 15.4. Visedretvenost i simultana višedretvenost 15.5 Višejezgreni procesori 15.5.1 IBM POWER4 dvojezgreni procesor 15.5.2. Ultra SPARCT1 i T2 15.5.3. AMD Opteron X4 2356 15.5.4.1MB POWER5 dvojezgreni SMT procesor, POWER6 i POWER7 15.5.5. Ocjena performansi multiprocesora 15.6. Grafički procesori (grafičke procesne jedinice) 15.6.1. NVIDlATesla - unificirana arhitektura za grafiku i računanje

473 473 474 479 483 484 486 486 487 497 500 506 509 512 512 514 517 521 524 524 528

LITERATURA

533

KAZALO POJMOVA

537

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 napravama i sustavima - od mobitela, igračaka, sustava za upravljanje industrijskim i proizvodnim procesima 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čunarski sustav" često podrazumijevamo računalo kojem su pridruženi različiti periferni uređaji i programska oprema - odjezgre 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čunarski 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 znanstveno 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 pozornost 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 integracije (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šeprocesorskih i paralelnih sustava, superskalarnih procesora, višedretvenih i simultano višedretvenih arhitektura 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.

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 informatike (FOI), Prirodoslovno-matematičkom fakultetu (PMF) Sveučilišta u Zagrebu, Tehničkom fakultetu 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žbenikje 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 zahvaljujem suradnicima sa Zavoda za elektroniku; mikroelektroniku, računalne i inteligentne sustave (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 doprinijeli 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

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 svrsishodnu 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 sastavnice (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 transformacije grupiran je u korake algoritma. Svaki algoritam ima svojstva određenosti, konačnosti 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 najveć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.

2

1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

Određenost se Euklidovog algoritma ogleda u tome stoje u svakom koraku precizno naznač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 namijenjen 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 supstituciju, 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 problemu 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-} = 3 0 $ , W | =4kg,V2 = 4 8 $ , 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 ).

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 mogao izvoditi algoritam u ovakvom izvornom obliku? To bi trebao biti inteligentan stroj s vidnom percepcijom i drugim senzorima (npr. težine, pritiska, dodira), opremljen mehaničkim hvataljkama, bazom znanja i strojem za zaključivanje te sučeljem za razumijevanje prirodnog jezika.

1.2. OSNOVNI RAČUNSKI MODELI U ovoj ćemo se knjizi baviti samo izvršiteljem - strojem koji se temelji na računskom modelu (engl. computational model) definiranom kao von Neumannovmodel. Računski model predstavlja višu razinu apstrakcije od arhitekture računala i programskog jezika. On se opisuje 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 podataka 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 memorijskih lokacija i adresa (imena) registara. Operacije se izvode nad podacima - svaki definirani tip podataka ima i definirani skup operacija. Model kojim se opisuje problem odnosi se na stil i metode opisa problema. Stilovi su proceduralni i deklarativni. Proceduralnim stilom opisuje se postupak 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 druga primjenjuje opis odnosa i činjenica u obliku predikata.

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 if

n

0 then f a c := 1 else fac :=1; f o r i : = 1 t o n do fac :=i * fac;

end; Deklarativni stil fac fac

(0) (n >0)

1 n

*fac(n-l);

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 semantika može se promatrati kao pravilo koje propisuje kako se izvodi pojedini korak računanja. 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, posluž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 (operandi i rezultati), adrese operanada, adresa rezultata te adrese koje upućuju na sljedeću instrukciju. 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 programa koji se može u višem programskom jeziku zapisati samo jednom naredbom: z = (a*5) + (c*d).

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 implicitno 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: (* a 5 z1) (* c d z2) (+z1 z2z), 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. upravljački

( *

c:(4)

T

a

5

z1 )

d :(7)

z1:( )

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 upravljač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

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

(

FORK

i2

2 )

c:(4)

L

a:(2)

t

(

*

a

5

d : ( 7)

zl )

I

?

(

*

(JOIN )

*

c

t d

z2 )

Z1 :( )

*

(JOIN )

I (

+

z1

z2

1

z2:( )

tok podataka

z )

I i T

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 in/m (npr. /3//) određuju sljedeću instrukciju in i položaj argumenta m u toj instrukciji koji očekuje 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).

S. RIBARIĆ - GRAĐA RAČUNALA

iO : ( . . . il/O I _

_ _ _ _ _

i 2/0 ) I

J

L

_ _

_

a : (2)

i l : (( ) * a 5 zl

i3/0 )

1

tt

'

i .u c : (4)

d : (7)

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

zl : ( )

i3 : ( ( ) ( ) +

7

I

z2 : ( )

i

r z1 z2 z )

1-

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, odnosno 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 ( ).

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, odnosno 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 : ( * ( ) (

U

13 : ( + ( ) ( )

z/1 )

ii

1

il : ( * ( ) 5 i3/0 )

t

) »3/1 )

12 : { * ( ) (

10

U

13 : ( + < ) ( )

) i3/1 )

i

128

z/1 )

11

I

11 : ( * ( ) 5 13/0 )

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

u

13 : { + ( ) ( )

z/1 )

i

38

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.

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

1.33 UPRAVLJANJE ZAHTJEVOM Osnovna značajka računskog modela upravljanog zahtjevom je ta da zahtjev za rezultatom 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 generirati zahtijevanu vrijednost. Vrijednost za z dobiva se redukcijom definicije (slika 1.5): (2 * 5) + (4 * 7) 10 + 28 38. To je i razlog zbog kojeg se obično takvi modeli nazivaju i redukcijski modeli, a računala koja se temelje na tom modelu nazivaju se redukcijska računala. a:(2)

c : ( 4 )

d:(7)

r* il : ( * a 5 )

i2 : ( * c d )

( . . . z . . . ) = > ( . . . ( + il \2 )...)=> ^ ( . . . (( * a 5 ) ( * c d ) ) . . . ) => = > ( . . . ( + ( * 2 5 ) ( * 4 7 ) ) . . • )=* = M . . . ( + 10 28 ) . . . ) = > ( . . . 38 . . . ) SI. 1.5 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 objektno 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 argumenti, 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.

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 postupak 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,q o , 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 naredbi za pomak glave za čitanje i pisanje P, q0 početno stanje stroja, q f 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 brojem simbola s^ s2,..., b,..., sk koji su elementi skupa S = {s^ s2, ...,b,..., sk}. U skupu S nalazi se i prazni simbol b koji ima 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 : S x Q - + S x P x Q , koja preslikava ulaznu dvojku koja se sastoji od trenutno promatranog simbola (simbola koji je upisan u polju nad kojim se nalazi R/W glava) i trenutnog unutarnjeg stanja stroja koje je zapamćeno u unutarnjoj memoriji q, u izlaznu trojku: simbol vanjske abecede koji će se upisati u promatrano polje na vrpci, naredbe za pomak R/W glave koja će se pohraniti u unutarnjoj memoriji p te novog unutarnjeg stanja stroja koje će se pohraniti u unutarnjoj memoriji q. Slika 1.6 prikazuje Turingov stroj.

S. RIBARIĆ - GRAĐA RAČUNALA

11

beskonačna vrpca (vanjska memorija)

Si. 1.6. Turingov stroj

p € {N, L, 0}

RadTS-a odvija se na sljedeći način: • na samom početku rada stroja on se nalazi u unutarnjem stanju q 0 (inicijalno ili početno 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 promatranom polju na vrpci, u logičkom se bloku stroja L dvojka (sj7 qm), gdje je q m trenutno unutarnje stanje stroja, preslikava u trojku (s., p, qk), gdje je s. simbol koji će se upisati u promatrano polje na vrpci, p je naredba za pomak R/W glave koja će se pohraniti u unutarnjoj memoriji p a qk je novo unutarnje stanje stroja koje će se pohraniti u unutarnjoj memoriji q; • na kraju tekućeg takta R/W glava će se pomaknuti ulijevo (naredba L) ili udesno (naredba D), ali samo zajedno polje u odnosu na promatrano polje ili se pak neće pomaknuti (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)informaciju; - 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 napredovanja taktova), a informacija koja je zapisana na vrpci tumači se kao rezultat obrade, odnosno izlazna supstitucija.

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 q m = 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 definirana logičkom funkcijom stroja 6. Slika 1.7 prikazuje logički blok L kao "crnu kutiju" koja ulaznu dvojku preslikava u izlaznu trojku.

s.i

q~m

L

s

j

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 funkcionalna 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 tablice 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 q m 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 q m u tablici preslikavanja (slika 1.8).

S. RIBARIĆ - GRAĐA RAČUNALA

elementi vanjske abecede

trojka

13

unutarnja stanja stroja {osim qf)

trojka

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

b} a skup unu-

Slika 1.9 prikazuje funkcionalnu shemu stroja kojom je 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 odgovara 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 q 3 i pomaknut će glavu za jedno polje ulijevo.

b

aDq,

|Lq,

{5Nq 3

|Dq,

a

PLq 2

|Lq2

aDq,

P L q3

P

|Dq,

|Lq2

aLq3

a L q,

i

bDq,

aDq3

pLq,

|Dqf

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

14

1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

Primjer 1.5. Pretpostavimo da je na vrpci TS zapisan proizvoljni dekadski broj. Želimo napisati program 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 = ^ q 2 ,..., qf}. Vidimo da se u skupu Q nalaze početno stanje stroja q0 i konačno stanje q f i određen broj radnih unutarnjih stanja stroja q , qr.... Broj tih radnih unutarnjih stanja stroja ovisi o algoritmu kojim ćemo riješiti zadani 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 inkrementiranja 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 najmanje 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 (prelazi u stanje q f ), 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 nastaviti s radom jer se tada jedinica prenosi na značajnije mjesto zapisanog broja.

% 0

0Dq,

0Dq,

1Nqf

1

1Dq,

1Dq,

2Nqf

2

2Dq,

2Dq,

3Nqf

3

3Dq,

3Dq,

4Nqf

4

4Dq,

4Dq,

5Nqf

5

5Dq,

5Dq,

6Nqf

6

6Dq,

6Dq,

7Nqf

7

7Dq,

7Dq,

8Nqf

8

8Dq,

8Dq,

9Nqf

9

9Dq,

9Dq,

0Lq2

b

bDq0

bLq2

1 N qf

Tabltca 1.1. Funkcionalna shema stroja (Primjer 7.5.)

S. RIBARIĆ - GRAĐA RAČUNALA

15

Rješenje problema, tj. program za TS predočen funkcionalnom shemom stroja koja predstavlja 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: q 0 1.10 Početno stanje TS-a (Primjer /.5.)

Uporabom programa (Tablica 1.1.) obavljaju se sljedeće operacije: 1. takt: (b,q 0 )->(b,D,q 0 ) komentar: R/W glava se pomiče udesno i stroj ostaje u stanju q 0 2. takt: (b, q0) (b, D, q0) komentar: R/W glava se pomiče udesno i stroj ostaje u q 0 3.takt:(1,q)->(1,D,qi)

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

4. takt: (2, (2, D, 5. takt: (6,q,) ->(6, D , ^ ) 6. takt: (9, q,) 7. takt: (b,

(9, D, q,) (b, L, q2); komentar: stroj je našao prazno polje desno od najmanje značajne znamenke i pozicionirao je glavu na najmanje značajnoj znamenci broja,

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

(0, L, q2); komentar: inkrementira se najmanje značajna znamenka, (7, N, q f ); komentar: stroj "prenosi"jedinicu s najmanje značajnog mjesta, inkrementira znamenku na značajnijoj poziciji i zaustavlja se.

7

o

b

i

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.)

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, q f }. (Opaska: u ovom elegantnom rješenju q 0 je ujedno i radno unutarnje stanje stroja).

16

1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

Funkcionalna shema stroja ima oblik prikazan u Tablici 1.2.:

0

1Nqf

1

OLq 0

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

b

0 Z X R/W glava stanje: q0

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

1 > takt;

(1, q0)

(0, L, q0)

2. takt 3. takt

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

4. takt

(0, q0)

(1,N, qf)

Rezultat izvođenja programa prikazanje na slici 1.13. s-

1

0

1

0

Z K

0

0

•5 -S

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 unutarnje stanje stroja (također na početku k-tog takta).

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-

b

1

z s R/W glava stanje: q 0 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: q 2 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 rezultat obrade te se "vratiti" pod upravljanje operacijskog sustava računala. No ako je slučaj-

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 program) i koje se slijedno (sekvencijalno) izvršavaju i na taj način ulazne podatke pretvaraju (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 tehnologije), 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

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 specificira 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 moraju 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 strojnom 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čkologič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 oblikovanja, 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-

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 konkurentniji 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 sastavnim 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činima 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 ©

TO

namjenski sustav

E

£ Q.

O TO J*.

jezični procesori (prevodioci) ©

upravljanje logičkim resursima

O

upravljanje fizičkim resursima

središnja procesna jedinica (izvršavanje programa) ©

ulazno-izlazni sustav

©

upravljački sklopovi

©

upravljački sklopovi

©

komunikacijski putovi i uređaji

©

memorija

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

E 03 U) O

S. RIBARIĆ - GRAĐA RAČUNALA

21

Prva, najviša razina naziva se arhitektura sustava i predstavlja sliku sustava s motrišta korisnika 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 kojima 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 ostvaruje 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 oblikovanje 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 razine koje odgovaraju funkcijama operacijskog sustava računala. Upravljanje logičkim resursima 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, sekundarnom), upravljanje procesorom (njegovo dodjeljivanje, odnosno dodjeljivanje vremena procesora različitim programima) i upravljanje drugim uređajima računarskog sustava. Razine 5 . - 1 0 . odnose se na funkcije koje su ostvarene sklopovski. Razina 5. koja se odnosi 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 odgovaraju funkcijama dodijeljenim sklopovskoj opremi. Crtkane linije određuju funkcije koje su zaista realizirane sklopovljem i one koje su ostvarene "programski" odnosno mikroprogramom . Naime, na području arhitekture računala može se govoriti o tzv. dualizmu sklopovske i programske opreme (kao što se u modernoj fizici govori o dualizmu mase i energije). Pojednostavljeno, dualizam sklopovske i programske opreme 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 (mikroprogramom), prevodioci za više programske jezike obično su programski izvedeni, ali postoje procesori koji imaju sklopovski ostvarene prevodioce (procesori izravno izvršne arhitekture; 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).

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 prevodioci za različite više programske jezike (C, C++, Pascal, FORTRAN, Basic, Prolog, Lisp,...), interpreteri (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 prevodioca, 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 glavnu memoriju i time biva spreman za izvođenje. Povez/7/Tcje uslužni program za povezivanje kojim se različiti prevedeni programi ili programski moduli povezuju u oblik pogodan za izvršavanje.

SI. 1.17 Hijerarhijski model računarskog sustava

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 modifikaciju podataka u tekstualnom obliku. Takvi podaci mogu biti naredbe u višem programskom 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 programskim 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 oblikovanje 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 organization). Pod tim se pojmovima podrazumijevaju podrobni opisi pojedinih sastavnica računala (aritmetička jedinica, logička jedinica, upravljačka jedinica, memorijska jedinica, ulaznoizlazne 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čunarskog sustava.

1.5 KLASIFIKACIJA ARHITEKTURE RAČUNARSKOG SUSTAVA Postojanje različitih računskih modela i različitih definicija, pristupa te poimanja arhitekture 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 arhitekture koja se korjenito od njih razlikuju.

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 klasifikaciju 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 programe 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 jeziku 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);

S. RIBARIĆ - GRAĐA RAČUNALA

25

iv) Put 3 - arhitektura omogućuje izravno izvršavanje programa napisanog u višem programskom 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 naziva 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 konfiguracije 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 programskim 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 instrukcijskom toku (iS) koji se uspostavljaju između funkcijskih jedinica stroja. Upravo su tok podataka 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 instrukcijskih tokova (slika 1.19). tok podataka

1

SIMD

MIMD

SISD

MISD

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:

26

1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

i) SISD (Single Instruction Stream Single Data Stream) - računalo s jednostrukim instrukcijskim 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 instrukcijskim tokom i višestrukim tokom podataka. U ovu se kategoriju svrstavaju paralelna 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 instrukcijskim 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 ulaznoizlazne 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čunala i računarske sustave koji se temelje na sistoličkim poljima. Prikažimo shematski pojedine tipove arhitekture pomoću veza među memorije (MU - memory 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 jedinica 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).

S. RIBARIĆ - GRAĐA RAČUNALA

A

DS

^

PE2

DS

^

,

2



DS

W

LM,

^

W

LM2

^

DS

,

2

w

27

A

W

skupovi podataka prema/od računalu domaćinu







PEn

^

DS

p

LM n

4

DS n

fc

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 podaci 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 arhitekture 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 organizirani 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 dvodimenzionalnom 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

28

1. POGLAVLJE: ARHITEKTURA RAČUNARSKOG SUSTAVA

arhitekture ipak svrstavamo protočna računala. Istaknimo, već na ovom mjestu, da je koncept 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 M I M D 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 protječ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.

S. RIBARIĆ - GRAĐA RAČUNALA

& 1.23 Shematski prikaz MISD kategorije arhitekture

29

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 pojave 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 ozbiljna 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 mehanič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 stoljeć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 jedinica: memorije (ili spremnika), jedinice za računanje (izvorno nazvane mili - što na engleskom 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 kartica 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.

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, njemač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čunalo 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 releja, 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 pohranjivanjem programa. Dok su J. Mauchley i J. P. Eckert radili na EDVAC-u (Electronic Discrete Variabile Automatic Computer) koji je trebao biti nasljednik ENIAC-a, J. von Neumann, koji je 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 izumljena 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.

S. RIBARIĆ - GRAĐA RAČUNALA

r B

j ,

33

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 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, 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 osnovati svoju tvrtku i graditi superračunala Cray I, II,..., Cray-XMP itd. Općenito, pod superrač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 oblikovati 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 magnetskim jezgricama, a brzina poluvodičkih memorija dopušta uporabu mikroprogramiranja 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 pojedinih 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-

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 tehnologije 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čunala 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čunala opće namjene, oni se rabe za izgradnju ugrađenih računalnih sustava koji se kao sastavnice ugrađuju u proizvode kao što su videoigre, kućanske naprave, laserski pisači, mobilni 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 tehnologije, 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.).

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 (superskalarni 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 primjenu 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

: r a 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.

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 obavlja aritmetičke operacije. Ta se jedinica naziva aritmetička jedinica. No stroj treba izvoditi 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

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 podataka, 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čkologič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 operacije podaci koji predstavljaju rezultat obrade pohranjuju se natrag u memorijsku jedinicu. 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 jedinice. 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: podaci (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 razlog postojanju dvosmjernog toka podataka između aritmetičko-logičke jedinice i ulaznoizlazne jedinice. Prethodno opisani smjerovi podataka odgovaraju dvjema operacijama: izlaznoj operaciji {smjer podataka od memorijske jedinice prema ulazno-izlaznoj jedinici) i ulaznoj operaciji (smjer podataka od ulazno-izlazne jedinice prema memorijskoj jedinici). Obje su operacije određene strojnim instrukcijama. Vidimo da aritmetičko-logička jedinica 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).

38

2. POGLAVLJE: VON NEUMANNOV MODEL RAČUNALA

SI. 2.3 Model von Neumannovog računala s izravnim pristupom memoriji D M A

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 aritmetič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 ishodiš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

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 izmjena podataka između vanjskog svijeta i računala. Obično se signalne linije kojima se prenose 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 zajedničkom okviru. Razlog tome je što se objedinjenje aritmetičko-logičke jedinice s najnužnijom memorijom (radnim registrima) i upravljačkom jedinicom naziva središnja (centralna) 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 odgovarajuć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 operacije na podacima (ti se podaci nazivaju operandi) te registara za privremeno pohranjivanje operanada i rezultata. Unatoč dugoj povijesnoj tradiciji uporabe dekadskog brojevnog sustava u računskim strojevima, 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 zadanom 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 cijena 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

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 = k x 10x 2 = 20k pri čemu 10 odgovara broju potrebnih brojevnih mjesta za prikaz brojeva u opsegu 0 999, a 2 je broj diskretnih stanja. Na primjer, 999 (dekadno) 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= kx nxB pri čemu za pozicijske brojevne sustave vrijedi da je: N - Bn

(2.1)

(2.2)

Logaritmirajmo lijevu i desnu stranu izraza (2.2): N - Bn / log dobivamo: log N = n log B n = log N / log B

(2.3) (2.4)

Uvrstimo izraz (2.4) u jednadžbu (2.1): c = k (log N / log B) B

(2.5)

Tražimo vrijednost za B za koju će funkcija c postići svoj minimum: dc - 0 dB — = /c log A/ dB

l°9B-BWB)\age log2 B

slijedi log B - log e = 0, dakle B = e. Rezultat je pomalo čudan - baza optimalnog brojevnog sustava bi trebala biti e = 2.71828... (baza prirodnog logaritma ln)! 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

S. RIBARIĆ - GRAĐA RAČUNALA

41

posmak, operacija oduzimanja izvršavala se zbrajanjem umanjenika (minuenda) i potpunog komplementa (engl. two's complement) odbitnika (suptrahenda). Množenje i dijeljenje nije bilo izvedeno sklopovljem, već se izvršavalo pod programskim upravljanjem izvođenjem uzastopnih operacija zbrajanja, odnosno oduzimanja i posmaka (podsjetimo se dualizma sklopovske i programske opreme; poglavlje 1.) Operandi su u IAS računalu imali duljinu od 40 bita: 39 bitova bilo je namijenjeno za znamenke, 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 temelju 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 operanda: 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 predznač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 funkcijskim jedinicama. Uz to, upravljačka jedinica zadužena je za automatsko izvršavanje programa - 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 prikazuje format strojne instrukcije IAS računala. Pod formatom strojne instrukcije razumijeva se oblik (organizacija) strojne instrukcije s označenim poljima (nizovima binarnih znamenki 0 i 1) kojima je naznačena funkcija. b7 b8

bO operacijski kod

b19 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 bitova (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.

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

bi 9 b20

b7 b8 operacijski kod

adresno polje lijeva instrukcija

b27 b28

operacijski kod

b39 adresno polje

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 kodiranom 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 algoritam 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 predoč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 operacijskog 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 odredišta. No strojna instrukcija IAS računala je jednoadresna. Kako se jednoadresnom instrukcijom 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žemo 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).

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 tijekom 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)|

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 := - |M(X)| AC := AC + M(X) AC = AC + |M(X)| AC = AC - M(X) AC = AC - |M(X)| AC.MQ := MQxM(X) MQ.AC := AC / M(X) AC := AC x 2 AC := AC/2

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)

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

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) if AC > 0 then go to M(X, 20:39) 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 M(X, 8:19) := AC(28:39) krajnje desnih bitova AC Zamijeni adresno polje desne instrukcije u M(X) s 12 M(X, 28:39) :=AC (28:39) krajnje desnih bitova AC

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

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 pohranjuje u privremeni registar CR. Operacijski kod (8 bita) desne instrukcije prosljeđuje se sklopu za dekodiranje (izvorno se taj sklop naziva funkcijska tablica), a preostalih se 12 bitova (adresno polje) prenosi u memorijski adresni registar MAR. MAR 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 skoka (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)

iV 40 / /

/

^

40/

*

/

registar MQ y ik

'40

40 / /

(40)

'40

aritmetički sklopovi

40 /

' 40

prema memoriji i ulazno-izlaznim jedinicama

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

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 registar 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 pribavlja 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 instrukcije 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 sklopovljem, 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 nalazi 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

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čunala 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 skromnog 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 uporabom 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 dohvatiti (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) procesoru 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.

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, podatak 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 organizaciju 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 memorijom, 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živosti (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 procesoru i onda pohranu na N slijednih memorijskih lokacija, započevši s memorijskom lokacijom 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 obavljala pod izravnim upravljanjem procesora. Autori računala IAS razmatraju mogućnost istodobnog rada ulazno-izlazne jedinice i procesora, međutim, zbog tehnoloških ograničenja odustaju od takve izvedbe.

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 suvremenih 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 osnovne funkcijske jedinice (aritmetičko-logičko jedinica, upravljačka jedinica, memorijska jedinica, ulazno-izlazna jedinica) i četiri osnovna razreda strojnih instrukcija (instrukcije za prijenos (premještanje) podataka, instrukcije za obradu podataka, ulazno-izlazne instrukcije, instrukcije za upravljanje izvršavanjem programa) određuju značajke koje nalazimo u suvremenim 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 performansi, pouzdanosti, raspoloživosti, prilagodljivosti i dramatičnom padu cijene računala. Veliku je zaslugu za sve to imao strahoviti tehnološki napredak, posebno mikroelektronike, odnosno tehnologije visokog stupnja integracije. Da bismo potkrijepili tvrdnju o snažnom utjecaju 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 ispisnoj memoriji pohranjuju podaci koji se ne mijenjaju te stalni programi (npr. programi koji čine jezgru operacijskog sustava). Čip s oznakom RAM (Random Access Memory) predstavlja memorijsku jedinicu, odnosno memoriju s izravnim pristupom. Ona tijekom izvođenja programa dopušta i upisivanje i čitanje 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 ulaznoizlazne jedinice mikroračunala. PIA omogućuje paralelni prijenos podataka između mikrorač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, paralelni je prijenos podataka takav prijenos pri kojem je svakom bitu podatka dodijeljena jedna linija (vodič) za prijenos i cijeli se podatak prenosi istodobno. Smjer prijenosa podataka preko linija PAO - PA7 i PBO - PB7 određuje se tijekom incijalizacije PIA koja se obavlja programom. Kažemo da je PIA prog ram irijiv sklop jer mu se početna konfiguracija i način rada određuje programom.

S. RIBARIĆ - GRAĐA RAČUNALA

AB0-AB15

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

49

DB0-DB7

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 izmjena 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 mikrorač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 detalji 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 vremenskog 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 uporabom 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 mijenja 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: c> j 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 pritiskom 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 procesor 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 podataka, 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 odgovaraju 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.

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 procesoru. Odmah ovdje navedimo jedan važan detalj: referentna točka u analizi ponašanja računalnog sustava i određivanju smjerova prijenosa jest procesor, koji ima ulogu vodećeg modula (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 instrukcija, 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 jedinicama 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 razlozima 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 sabirnice č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

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 noznač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 postojati 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 sabirnicu i ako utvrde da je na njoj adresa koja upravo odgovara adresi koja je njima dodijeljena, aktiviraju se te obavljaju zadatak koji im je procesor odredio na temelju stanja 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 moraju 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 2 (odnosno kada njegova amplituda poprima visoku vrijednost koja se može tumačiti kao logičko 1).

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 0 0 0 0 0 0 0

A8 0

A7 0

Adresne linije A0 do A6 poprimaju vrijednosti 0 ili 1, ovisno o kojoj se memorijskoj lokaciji u čipu RAM želi pristupiti. Ovih nam sedam adresnih linija govori koliki je kapacitet memorijskog čipa. Zbog 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 0 0 0 0 :o 0 0 ; 0 0 0 0 0 u

l1 o 0

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

0 0

0 0

0 0

0 0

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

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

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

A6 0 0 0 0 0 0 0 0 0

0 0

0 0

0 0

1 1

A5 0 0 0 0 0 0 0 0 0

.

.





1 1

A4 0 0 0 0 0 0 0 0 0

A3 0 0 0 0 0 0 0 0 1

.

.





1 1

1 1

A2 0 0 0 0 1 1 1 1 0

.



1 1

A1 0 0 1 1 0 0 1 1 0

A0 0 1 0 1 0 1 0 1 0

Adresa 0000 0001 0002 0003 0004 0005 0006 0007 0008

. . •



1 1

0 1

007E 007F

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 najmanje 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 adresne linije A7 - A15 poprimile odgovarajuće vrijednosti), onda se obično adresa sklopa prikazuje u obliku: A15 A14 A13 A12 A l i 0

0

0

0

0

A10 0

0

A9

A8

A7

A6

A5

0

0

X

X

X

A4 X

A3 X

A2 X

A1 X

A0 ,

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 prethodnom primjeru), • CS1 (Chip Select) - priključak za izbor čipa (ima istu funkciju kao priključak E u prethodnom primjeru), • CS2 (Chip Select) - priključak za izbor čipa (ima istu funkciju kao priključak £ u prethodnom primjeru). RS DB0 - DB7

CSO CS1

AC IIA

ČS2

E

D0-D7

02

IRQ R/W Tx

Rx

CT5

DCD

R/W

RTS

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 dovodi 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 + A 2 + A4 + A5 + A6 + A7 + A 8 +A9 +A10 +A11 + A12 + A13 + A15). Adresnom linijom A0 koja se dovodi na priključak RS izabire se jedan od dva registara u ACIA.

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 0 0

1

0 1

0

A8

A7

A6

A5

A4

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

1

A3

A2 0

0

0

A1 AO Adresa 0

0

4008

1

4009.

Dakle ACIA se javlja procesoru na dvjema sljednim adresama: 4008 i 4009 (heksadekadno), odnosno adresu ACIA možemo prikazati i kao: A15 A14 A13 A12 A l i A10 A9 A8 A7 A6 A5 A4 0 1 0 0 0 0 0 0 0 0 0 0 1

A3 0

A2 0

A1

A0 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 sliku 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, fizič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 analiziramo 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 pristupa 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 jedinici 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 procesora 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 obrade podatka negoli je to "pumpanje" ogromne količine podataka naprijed-natrag kroz taj spojni put.

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 predstavljaju 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 podataka 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čunskih 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 naredbe za pomak glave (N, L, D). Osim vanjske memorije, TS ima i dvije jednostavne unutarnje memorije za pohranu stanja stroja i naredbe za pomak R/W glave. U vanjskoj memoriji pohranjuju se 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.

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 kapaciteta sastavljena od konačnog broja memorijskih lokacija. Svakoj je memorijskoj lokaciji jednoznač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 pohranjeni 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 cijevima Selectron. U tom se slučaju memorijska jedinica računala može promatrati i kao izlazna grafička jedinica.

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: upravljačke i aritmetičko-logičke jedinice. Današnji su procesori realizirani u tehnologiji vrlo visokog 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 mikroelektroniku). 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 mm 2 (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 adresnoj sabirnici) jedan je od osnovnih preduvjeta uspješnog oblikovanja i kvalitetnog održavanja 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čajkama 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 procesori 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-

60

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

logičkoj jedinici. Na primjer, ako su registri podataka koji se rabe za pohranjivanje operanada i rezultata 8-bitni, ako je širina interne sabirnice 8-bitna i ako su sklopovi aritmetičkologič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: upotrebljava 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 ponavljajuć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 ulazno-izlaznoj jedinici, privremeno pohranjen u akumulatoru AC. Naravno, ovo ne vrijedi ako se prijenos ostvaruje izravnim pristupom memoriji DMA (vidi poglavlje 2.).

S. RIBARIČ - 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 aritmetič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 potpuni 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 (poprimaju 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 instrukcije 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 zastavice 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 upravljač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 jedinice, aktiviraju sklopove za izvršavanje aritmetičkih ili logičkih operacija ili izazivaju inkrementiranje 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 jedinicama) prenose se signalnim linijama koje formiraju upravljačku sabirnicu računala.

62

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC1RISC 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 (IO 6 s). Slika 3.2 prikazuje signal vremenskog vođenja (|>. Ponovimo još jednom, događaji u procesoru i drugim 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 pribavljena 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, odnosno 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 operand 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 registara, 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 vanjske 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 adresni 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 sabirnicu 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-

S. RIBARIČ - GRAĐA RAČUNALA

63

povi generiraju upravljački signal Čitaj i šalju ga na upravljačku sabirnicu računala (upravljač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 priključ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 podataka 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, poglavlje 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 - komplementiraj 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 jedinica 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 jedinica, 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 specificirane 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.

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: inkrementiraj sadržaj memorijske lokacije čija je adresa 05FF (heksadekadno), odnosno 0000 0101 1111 1111 (binarno). Operacijski kod instrukcije INC je 7C (heksadekadno), odnosno 0111 1100 (binarno). Simbol $ upotrebljava se kao znak asembleru (prevodiocu za zbirni jezik) da slijede oznake zapisane heksadekadno. Podsjetimo se, u Primjeru 1.6. napisali smo program za Turingov stroj koji također inkrementira 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 lokacija 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.

S. RIBARIČ - GRAĐA RAČUNALA

adresa

sadržaj

0100

7C

0101

05

0102

FF

65

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

05FE 05FF

23

0600 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 lokaciji 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činjanja programa. Uvjet je samo jedan - sadržaj programskog brojila PC mora sadržavati adresu prve strojne instrukcije našeg programa. To znači: (PC) = 0100. Početni sadržaji drugih registara procesora nisu važni. AC

DC

15

PC

15

0100

T

i

upravljački Signal

upravljački signal

upravljački signal

i n t e r n a sabirnica

0

TR

IR

upravljački signal

upravlj. signal

upravljački signal

DB7 dekoder SR O t u s n i registar Registar uvjeta)

I

upravljački ^signal

15

a r i t m e t i č k o - l o g i č ka

DB0

sabirnica podataka

• AB0

AB15 adresna sabirnica

jedinica (ALU) upravljački signal

upravljački signali upravljački sklop

Čitaj upravljačka sabirnica Piši

upravljačka jedinica

0 signal vremenskog vođenja

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

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 programsko 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 jednostavan unos podataka u memoriju preko heksadekadne tipkovnice, definiranja početne adrese 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 adresnog 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 sadrž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 zapisati 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.

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 sabirnicu 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 (heksadekadno) dohvaća njezin sadržaj 05 (heksadekadno) te se preko sabirnice podataka prenosi procesoru 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 memorijskog 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 vremenskog 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 brojila PC 0103 (heksadekadno) i da pokazuje na sljedeću strojnu instrukciju (podsjetimo se,

68

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC 1 RISC PROCESORA

program je niz slijednih strojnih instrukcija). Ocijenimo potrebno vrijeme za fazu PRIBAVI instrukcije INC $05FF: Za fazu PRIBAVI procesor je trebao tri periode signala vremenskog 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 jedinica 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 lokacije 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 podatak 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 prethodni sadržaj, a uz to instrukcija INC ne specificira sudjelovanje akumulatora AC u njezinom izvođenju. Važno je naglasiti da je akumulator AC sastavnica programskog modela procesora, dok privremeni registar TR to nije. Pojednostavljeno, programski model procesora čine sve sastavnice procesora koje su "vidljive" i dohvatljive programeru u strojnom ili zbirnom jeziku (poglavlje 5.). Stanje registara nakon dohvata operanda je 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

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 sabirnica 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 pohranjen 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 perioda 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

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 registara 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 jedino 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.

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 . 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 #2

#1

o

•V-AB15 GtBj

perioda

perioda

/ \ / \ / \ ^

0100

/ \

^^

0101

^^

0102

\ / \

perioda

/ \

\ ^

05FF

\

)

*

*

D67

/ \ ,

tW

5FF

( ° )

*

t.

*

t T. *



perioda

*

\

th

w

• *

, ...

tw

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

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 operaciju Load - puni) akumulatora AC s podatkom koji se nalazi na memorijskoj lokaciji 0007(heksadekadno). Instrukcija LDA koristi adreslranje nulte memorijske stranice (raspon adresa od 0000 do 00FF) ili kako se još naziva izravno kratko adreslranje. 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

A3

0008

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 komplement 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.

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 I Z V R Š I instrukcija COMA ne koristi vanjsku sabirnicu te da se procesor električki odspaja od sabirnice. perioda #1

Ф

AB0-AB15

perioda #3

perioda #2

/ \ / \

1

\

perioda #4

perioda

/ \ / \ ./ \ .. p.

*

^

0103

^^

0104

^^

0007

perioda

^^

0105

#

^ 4

Čitaj

/ \

\

\ / \

p

* *

t p.

* *

Piši

t

wh

* *

DBO - DB7

•i") «•••'•



4 « )

t

w



vnjeme pristupa memoriji

wgenda: " * - stanje visoke impedancije

faza pribavi

faza izvrši

>4-

faza pribavi

faza izvrši

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

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 instrukcije 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

inkrement

Izravni (engl. Direct Extended)

Mnemonik

operacijski kod (OP)

broj perioda H

broj bajtova

C7

6

3

INC

Oblica 3.1. Detalj iz priručnika za mikroprocesor M C 6800

(#)

74

3. POGLAVLJE: POJEDNOSTAVLJENI MODELI CISC I RISC PROCESORA

Iz tablice 3.1 vidimo da je broj perioda signala vremenskog vođenja potreban za izvođenje 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 razlikuje 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

interna sabirnica

A

akumulator

В

(8)

akumulator

(8)

(8)

f

о

instrukcijski registar

(8)

IX indeksni registar (16)

PC

programsko brojilo

(16)

sklopovi za dekodiranje

ALU

SP kazalo stoga

(16)

registar zastavice (CCR) uvjeta

Л 7

Slika 3.11

^

sklopovi za vremensko vođenje i upravljački sklopovi

adresni međuspremnik MAR

signal vremenskog vođenja i upravljački signali

adresna sabirnica

(16)

AB0-AB15

Model mikroprocesora MC 6800 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-bitnog 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.

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 podataka koje su pohranjene u memoriji. Mikroprocesor MC 6800 koristi dvofazni signal vremenskog vođenja, odnosno signale l i 4>2 sadržaj p r o g r a m s k o g brojila PC povećava se za 1

sadržaj PC-a na adresnu sabirnicu

A

r^i8 10

Sun-4/260/O9"



;

. /



VAX 8700

VAX-11/780

1978

„—**l,5VAlH1/785

""""T"^...

0< 1980

1982

»

1984

"" i

1986

i

i

i

i

i

i

1988

1990

1992

1994

1996

1998

i 2000

i ... 2002

*' 2004

i 2006 godine

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

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 programa 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 - program 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 prevodilac, 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 programi 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. floating-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čunala (libquantum). Zbirka ispitnih programa koji koriste operacije brojevima s pomičnim zarezom sastoji se od programa za modeliranje metodom konačnih elemenata, preko programa 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čena u zbirku SPEC2006. Udruga SPEC nudi i ispitne programe koji su namijenjeni procjeni performanse računala - 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

S. RIBARIČ - GRAĐA RAČUNALA

wupwise

1600

56.1

28,52

swim

3100

70.7

43.85

mgrid

1800

65.8

27.36

applu

2100

50.9

41.26

mesa

1400

108.0

12.96

galgel

2900

40.0

72.50

art

2600

21.0

123.80

equake

1300

36.3

35.81

facerec

1900

86.9

21.86

ammp

2200

132.0

16.67

lucafs

2000

107.0

18.70

fma3d

2100

131.0

16.03

sixtrac

1100

68.8

15.99

apsi

2600

231.0

11.25

SPECmark

105

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 ispitna programa su Whetstone i Dhrystone. Whetstone ispitni program razvijen je 1972. i bio je izvorno napisan u programskom jeziku Algol (kasnije u FORTRAN-u, Pascalu i jeziku C). Izvorno se temeljio na statistici 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 prevodioca što u izvjesnoj mjeri narušava objektivnost dobivenih procjena performanse.

106

4. POGLAVLJE: PERFORMANSA RAČUNALA

AMDAHLOV ZAKON Povećanje performanse računala jedan je od osnovnih ciljeva koji se želi ostvariti uporabom 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 poboljš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 (1-0

f +

13* IntRegALU IntBUS IntBUS A 14' Upravljački signali kojima će biti aktivirane mikrooperacije za cjelovitu fazu IZVRŠI za instrukciju addaX su: Vremenski trenutak

Upravljački signali

*io 11 12

C3 c 5' c 0' c15

13

14

Mikrooperacija MDR IntBUS IntBUS MAR čitanje mem. lokacije (DB0-DB31) MDR IntBUS MDR, P + Q IntRegALU IntRegALU IntBUS 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; 1. korak: MDR(ADRESA)

operacijski kod = 011 MAR; 24-bitnu adresu operanda iz MDR prenesi u MAR

Vremenski slijed aktivnosti za 1. korak faze IZVRŠI je: 08: MDR (ADRESA) IntBUS 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

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: MDR IntBUS; P - Q • IntRegALU (logička operacija I) IntBUS IntBUS MAR čitanje mem. lokacije (DB0-DB31) MDR IntBUS MDR, P • Q IntRegALU IntRegALU IntBUS IntBUS A

176

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

instrukcija coma; 1. korak: A

operacijski kod = 100

A; jedinični komplement

Vremenski slijed aktivnosti za 1. korak faze IZVRŠI je: Og:

IntRegALU

09:

IntRegALU

O10:

IntBUS

IntBUS

A

Vremenski slijed aktivnosti za 1. korak faze IZVRŠI je: Vremenski trenutak

Upravljački signali

Mikrooperacija

9

C6

d>10

C6,C10

IntRegALU IntBUS

IntBUS A

Faza IZVRŠI za instrukciju coma traje tri vremenska intervala, odnosno instrukcija coma zahtijeva 10 vremenskih intervala. instrukcija jmpX; 1. korak: MDR(ADRESA)

operacijski kod = 101 PC

Vremenski slijed aktivnosti za 1. korak faze IZVRŠI je: Vremenski trenutak

Upravljački signali

0>8

C5

%

C 5 ,C„

Mikrooperacija MDR(ADRESA) IntBUS

IntBUS PC

Instrukcija jmpX je "brza" instrukcija koja zahtijeva samo 9 vremenskih intervala. instrukcija jmpzX; 1. korak: MDR(ADRESA)

operacijski kod = 110 PC ako je A = 0 inače nema promjene sadržaja PC-a

Vremenski slijed aktivnosti za 1. korak faze IZVRŠI je: Vremenski trenutak Upravljački signali O

CJ

0>9

ako je A= 0 onda C5, C n

instrukcija shra; 1. korak: Shr A

Mikrooperacija MDR(ADRESA) IntBUS

PC

operacijski kod =111 A

Vremenski slijed aktivnosti za 1. korak faze IZVRŠI je: Vremenski trenutak Upravljački signali 8

IntBUS

C17

Mikrooperacija 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 kombinaciju na njegovom ulazu. Primjerice, ako je na ulazu u instrukcijski dekoder binarna kombinacija 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

S. RIBARIČ - GRAĐA RAČUNALA

aktivan samo izlaz l4 (slika 7.12). Na slici 7.12 vidimo da se izlazi iz instrukcijskog dekodera (l Q - 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 pretpostavljati 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 hipotezu da se upravljački signali C i = 0, 1,2,..,, 17 mogu opisati logičkom jednadžbom oblika: 16 {f

77

y=i V

m=0

\

(7.1)

m

/

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 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 sklopovima 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 7. Kada upravljačka jedinica prijeđe u fazu IZVRŠI, izlaz bistabila FB se automatski resetira, odnosno postavlja u"0". CD,

C3

CD,

CD,

c5

O,

Qc

(D,

...

c8

cu

c13

c14

c16

SI. 7.14 Kombinacijski dio upravljačke jedinice (sinteza dijela upravljačkih signala potrebnih za fazu PRIBAVI)

180

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

Uočavamo da kombinacijski sklopovi upravljačke jedinice imaju pravilnu strukturu - sastoje 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 polja 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

Mikrooperacija MDR(ADRESA)

3>

C 5 ,c„

IntBUS

IntBUS -> PC

i upravljačkih signala za instrukciju jmpzX: Vremenski trenutak

Upravljački signali

a>

C C5, ako je A= 0 onda C n

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 ]

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%. 0O O

(Dq V

" l " a k o je A=0

SI. 7.16 Kombinacijski dio upravljačke jedinice (sinteza dijela upravljačkih signala potrebnih za fazu IZVRŠI za instrukcije jmpX\ jmpzX)

182

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

instrukcija $taX;

operacijski kod = 001

Vremenski trenutak

Upravljački signali



C5,c13

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

10 n 12

4>13 /cfaXi staXsu: = 1 + T =# J+ J 12 1. 13 1 11 8 V T 8 'l T • 1 : j 1 'i 1 1 ^10 1 I C,o



0

9 1

12 0

13 0



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 sijedova. 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

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

S. RIBARIČ - GRAĐA RAČUNALA

197

yyyyyyyy A—L; 8—R; aktiviraj zbrajalo s Cm = 1; S—Q; Q—MB; proslijedi A - B na MB

operacijski kodstrojne instrukcije CBR (početna adresa mikroprograma)

MB (15)—SR (1) AND (IF (2TT = 0)THEN (O—SR (0)) ELSE (1-SR (0)) SR (0)—H (1), SR (1)—H (0) (zastavice: Z = 0;N = 1)

AljeCBB = 1 0 ;SR(1) H(0) ; w y e d n o s t z ^ seuH{0) polje CST = 1 1 ; M8(15) SR{1) AND (/F(ZT = 0} THEN (0 SRtO)); s l o v n i utjecaj na zastavicu N i Z; polje CNA='xxxxxx'(binarno) ;npn '010000'polje EM ='00000000' ;8-bitna

SR(0)) ELSE (1

198

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

Prva mikroinstrukcija izgleda ovako:

r

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

0 1

2. mikroinstrukcija (nalazi se na adresi 01000001 pri čemu je šest značajnijih bitova adrese 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 AH(0); polje CST = 00 ; 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:

0 10

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 j e 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'

S. RIBARIČ - GRAĐA RAČUNALA

0 0 0

M

199

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 mikroprograma 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

CNA EM 11 010 10 00 0 0 0 # t o n 010000 00000000 •

777777

01000001 0*000010

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

"---



-

. . .

M m m m m

.

Ž2ŽZŽZ00 •

1. mikroinstrukcija mikroprograma za fazu PRIBAVI SI. 7.29

pokažimo kako se ta v r ^ m ^ s t o

«^Izvođer^

ikdm^ntar;

; prva mikroinstrukcija - adresa mikroinstrukcije je '00001000'

početak sekvence s ;c /GP(1)/

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

'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' CM(H) F; faza "mikro-pribavi" A L; na L se smještava 16-bitni sadržaj akumulatora A B-+ R; prijenos jediničnog komplementa sadržaja akumulatora B na desnu; sabirnicu R

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

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

/G P(2)/

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

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

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 pristup 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 mikroprogramom 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 prikazuje dvorazinsku organizaciju upravljačke jedinice koja se zasniva na mikro- i nanoprogramiranju. 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 nanoprogrami - 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 + [log 2 H m ], gdje je N broj upravljačkih bitova a [log 2 H m ] broj bitova potreban za povratnu adresu ([x] označava gornju cjelobrojnu vrijednost od x). Kapacitet upravljačke memorije za jednorazinsku izvedbu je: S ^ H J N + Pog.Hj)

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 memoriji nCM. Nadalje, svaka mikroinstrukcija u CM je duljine |"log2Hn], gdje je Hn broj nanoinstrukcija jer mikroinstrukcija, zapravo, predstavlja adresu za nanoinstrukcijsku memoriju. Uz pretpostavku da ima vrlo mali broj grananja (ili čak uopće i nema) u nanoprogramu, možemo ocijeniti ukupni kapacitet memorije dvorazinske izvedbe: S2 = H m ( P o g 2 H j + pog 2 H n l) + H n N, gdje je flog 2 H m ] broj bitova adresnog polja potreban za 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 dvorazinske izvedbe mikroprogramirane upravljačke jedinice: S2 = H m (Pog 2 HJ + [ l o g 2 r H m l ) + rH m N, = Hm ( P o g 2 H j + [log 2 r ] + p 0 g 2 Hm ] ) + r Hm N, S2 = H m (2pog 2 H m l + p o g 2 r l + rN).

5. RIBARIČ - 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 mikroprogram 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.

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 upravljač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 mikroinstrukcija i em/f polje. Format mikroinstrukcije koji se temelji na izravnom upravljanju prikazan je na slici 7.32 Svaki bit mikroinstrukcije koji je izravno dodijeljen mikrooperaciji određuje hoće li se mikrooperacija izvesti (bit ima vrijednost 1) ili neće (vrijednost bita je 0). p bitova adresa sljedeće mikroinstrukcije

n bitova, n-odgovora broju mikrooperacija

emit polje -•H-

H h

r"i -nJ

-H-

0 : nop

1 : M01 0 : nop

0 : nop 1 : MOn

1 : M02

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 mikrooperacije kojima je dodijeljen bit s vrijednosti 1) te velika prilagodljivost pri izmjeni mikroprograma (bez zahtjeva za promjenom organizacije mikroinstrukcije). Mikroinstrukcije ovog tipa ne zahtijevaju sklopove za dekodiranje pojedinih njezinih sadržaja, odnosna grupe upravljačkih bitova. Nedostatak ovakvog pristupa je velika duljina mikroinstrukcije. Naime, ako mikroprogram i ran i procesor ima veliki skup mikrooperacija koji se sastoji od stotinu i 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,

S. RIBARIČ - GRAĐA RAČUNALA

205

ii) grupiranjem upravljačkih bitova koji se odnose na mikrooperacije koje se međusobno 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 [log 2 r] 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 jednoznač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. grupiranje mikrooperacija koje se međusobno isključuju grupiranje mikrooperacija koje se izvode istodobno

adresa sljedeće mikroinstrukcije

emit polje -M-

г-П-i

ГИ1

-n-

1

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

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

0000 пор 0001 MOP9 0010 МОРЮ 1110 M022 1111

M024

SL 7.33 Format mikroinstrukcije koja se temelji na pristupu grupiranja bitova

PH

-u-

206

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

U slučaju grupiranja mikroopercija koje se međusobno isključuju potrebno je grupi upravljačkih bitova dodijeliti dekoder kojim se n kombinacija upravljačkih bitova dekodira u jedan 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 odnose 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 mikroinstrukcija duljine 16 ili 32 bita kojom se specificira maksimalno do četiri mikroopeacije. Mikroinstrukcije koriste različite formate za pojedine tipove mikrooperacija tako da svojom organizacijom odgovaraju formatu (strojnih) instrukcija na ISA razini. Na primjer, 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 (zbrajanje, 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 formata 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

'

v

"

format

^ mop

b,

" operand 1

b,

I — ne koristise 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

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

b,9

5 bitova

2 bita

b„ b12

b,8 b,7

K

1 bit

6 bitova

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 mikrooperacija, 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/

208

7. POGLAVLJE: SKLOPOVSKA I MIKROPROGRAMSKA IZVEDBA UPRAVLJAČKE JEDINICE

2 bita

b

b

19

18

5 bitova

b

bi3 b12

!7

6 bitova

6 bitova

b7

b

1 bit b1

e

b0

ne koristi se format

bd 1

mop

bd 2

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 l 9 b18= 11 tada je format 3, ako je format 3 onda je mikroopercija (mop) (bi3 — b17) iz skupa mikrooperacija uvjetno i bezuvjetno grananje u mikroprogramu polje (bO - b12) je odredišna (ciljna) adresa grananja. 2 bita

5 bitova

13 bitova

N—— b

!9

b

,B

format

b

b

,7

mop grananja

,3

b12

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, nailazimo i na dva pojma: horizontalno mikroprogramiranje i vertikalno m ikroprog ra miranje. 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.

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 koristiti uvezivanje mikroinstrukcija koje onda određuju skup ili slijed mikrooperacija.

S. RIBARIČ - GRAĐA RAČUNALA

211

8. POGLAVLJE

ARITMETIČKOLOGIČ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 duljinu 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 procesori 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).

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

0

@

P

1 0001

SOH

DC1

SP j

1

A

Q

a

2 0010

STX

DC2

2

B

R

b

q r

3 0011

ETX

DC3

#

3

c

s

c

s

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

4 0100

u

/

1

P

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 brojevni sustav), iako postoje izvedbe posebnih računala koja za prikaz brojeva koriste simbolič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 vrijednosti 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 negativnim predznakom.

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 dobiva se komplementiranjem svih n bitova pozitivnog broja. Podsjetimo se, komplementiranje je operacija kojom se zamjenjuju vrijednosti binarnih znamenki u broju - nule jedinicama i jedinice nulama. Opseg prikaza cijelih brojeva u tom prikazu je: -(2n1 -1) 55 v(x) £

J

7

čip 63 (32x32)

/

L

SL 9.15 Organizacija memorijskog modula 1K 64 bita

CS

S. RIBARIĆ - GRAĐA RAČUNALA

283,

R/W=T

data out

R/W = "1"

data in

dvosmjerna sabirnička linija podataka b)

R/W = "0"

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-

^ 286

9. POGLAVLJE: MEMORIJSKI SUSTAV

lova koji se prosljeđuju procesoru, i to za vrijeme jedne memorijske periode. Tijekom operacije 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 ..., M s ^ pri čemu je S = 2k (slika 9.18). Svaki od tih modula zauzima dio memorijskog adresnog prostora i ima svoje sklopove za dekodiranje adrese. Memo rij ski moduli su tako 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: a

m am-l

a

k+1 a k ak-l 3k-2 -

a a

i (y

pri čemu m - k + 1 najznačajnijih bitova adrese istodobno adresiraju po jednu riječ u svakom od S memorijskih modula. Kapacitet svakog pojedinom memorijskog modula je N = 2(m-k+1). vrlo široka sabirnica

adresa

m-k+1 bitova adrese

SI. 9.18 Organizacija memorije s prepletanjem

adresa

k bitova adrese

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 riječ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 prepletanjem. 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

^

memorijski modul

M,

1

izlaz

i—i—i—i—i - • - i—i—i—i—i—ivrijeme

riječ 0

riječ 0

riječ 1

riječ s-1

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 memorijskom modulu tA, odnosno ako je vrijeme memorijske periode t M i ako je pozivanje na memoriju takvo da su adrese slijedne: 0,1,2,..., odnosno q + 0, q + 1, q + 2,..., tada je vrijeme potrebno za dohvat (ili pristup) 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: 0, r, 2r,..., odnosno q + 0,q + r,q + 2r,...,

^ 288

9. POGLAVLJE: MEMORIJSKI SUSTAV

pri čemu je r ^ S , tada je prosječno vrijeme pristupa riječi, odnosno vrijeme memorijske periode jednako: Vf=(|'xtM)/SAko je faktor raspršenosti r veći ili jednak S, tada jet Mef = t M i nema povećanja brzine memorije (naravno samo tijekom takvog slijeda adresa). Primjer 9.4. Pretpostavimo daje memorija s prepletanjem organizirana u 16 memorijskih modula ili banaka pri čemu je kapacitet svakog od modula jednak 4 M riječi. Sljedećim je parametrima opisana memorija: k = 4, S = 2 k = 16; i N = 2(m k+1) = 4M; (m - k + 1) = 22, m = 25. Adresa: a a ,... a, , a. a,, a.,... a,aft je: a,c a^... ac a,, a,a, ataA. ^ 0J 25 24 5 4 3 2 1 0 Modul MQ 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. m

m-1

k+1

k

k-1 k-2

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 modula 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

25

0

a

24

0

a

23

0

a

22

0

3

21

0

3

20

0

3

19

0

3

18

0

3

17

0

3

T6

0

3

15

0

3

14

0

3

13

0

3

12

0

3

11

0

3

10

0

3

0

9

3

1

8

3

7

3

1

6

3

1

5

3

4

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: dekodiranje 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 naziva 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

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đivanje 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 ćelijama, 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 pouzdanost 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 kbitni 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

^ 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-detecting 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 klasificiraju 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 - Singleerror-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 memorijskim 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 pouzdanost memorijskih sustava jest povećanje duljine memorijske riječi (ujedno i kapaciteta 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 magnetske 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

S. RIBARIĆ - GRAĐA RAČUNALA

291,

glavne memorije, koja je ostvarena kao poluvodička memorija, predstavlja nepremostivu 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 pohranu 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 materijalom (magnetski diskovi), specijalan istosmjerni DC (engl. direct current) elektromotor (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 jedinice diska, memorije, sklopova za zapis i čitanje podataka (engl. Recording Channel, Reading Channel), sklopova za upravljanje ručicama i sklopovima za upravljanje istosmjernim 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 ostvaruje 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 uzrokovanih 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 temeljnih 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 upravljačke jedinice diska. Upravljačka jedinica diska je, zapravo, računalo čiji je blok-dijagram prikazan na slici 9.21.

^ 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 podataka 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.

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 čitanje 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 osovini 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-

^ 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 središ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 jedinicu 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štite 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 \ \ staze \ 4-8 ^m

^--podaci —— adresna značka ^ ^ 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 stazi). 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 '

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 formatiranog diska od neformatiranog. Proizvođači diskovnih jedinica isporučuju formatirane jedinice što podrazumijeva daje inicijalno upisana informacija o stazi i sektoru na svim površ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 ispravno 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, rezervnih 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 najmanjim 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 sektora 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 podaci: 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 IO 10 )/2 30 = 21.076 GB. Uz pretpostavku da se oko 10% od ukupnog kapaciteta gubi na razmake između sektora, zaglavlja, adresne značke i na područje zaštite (CRC i EEC) formatirani kapacitet diskovne jedinice bio bi oko 18 GB.

^ 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 zaprimljen 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 brzinu vrtnje od 15000 RPM srednje vrijeme rotacijske latencije iznosi: 0.5 okreta /15000RPM = 0.5 okreta / (15000 RPM / (60 sekunda/minuta)) = 2.0 ms. Brzina prijenosa bloka podataka je između 70 i 125 MB/s. Kada diskovna jedinica koristi posebnu 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 jednom 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 vrijeme 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, prosječ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.

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 srednjeg 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 smanjio 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 (poglavlje 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

^ 298

9. POGLAVLJE: MEMORIJSKI SUSTAV

memorije (engl. hit of disk cache), a mjeru pogotka izražavamo omjerom pogotka (poglavlje 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 modifikacija 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 primjer, 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 pretpostavku 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 prosječ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 dohvat svih sektora sa staze. Ubrzanje iznosi: (10 x 20.16 ms) / 27.28 ms = 7.39

S. RIBARIĆ - GRAĐA RAČUNALA

299,

Stvarno je ubrzanje nešto manje jer smo zanemarili da latencije koje se odnose na pohranu 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 elektromehanič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 nezavisno. 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 jedne 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 jedinicu - a2 je na disku 1, a3 je na disku 2. Datoteka b, koja se sastoji od sedam pojasnih jedinica, 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 velika 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-

^

300

9. POGLAVLJE: MEMORIJSKI SUSTAV

lihosno (redundantno) polje jeftinih diskova. Proizvođači diskovnih jedinica zbog komercijalnih 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 diskovnu 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 diskovnom 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.

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 0

pojasna jedinica 1

pojasna jedinica 2

pojasna jedinica 3

pojasna jedinica 1

pojasna jedinica 4

pojasna jedinica 5

pojasna jedinica 6

pojasna jedinica 7

pojasna jedinica 2

pojasna jedinica 8

pojasna jedinica 9

pojasna jedinica 3

pojasna jedinica 4 pojasna jedinica 5

pojasna jedinica 6 pojasna jedinica 7

programska oprema za upravljanje poljem diskova

pojasna jedinica 8 pojasna jedinica 9

SI. 9.25 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 - srednje 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 odvojena fizička diska - osnovni disk i njegov zrcaljeni disk (slika 9.26). diskO

disk ]

disk 2

disk3

osnovni diskovi

disk 4

^

disk 5

disk 6

disk 7

zrcaljeni diskovi

SI. 9.26 Organizacija RAID 1 diskovnog sustava

Slika 9.26 prikazuje primjer RAID 1 diskovnog sustava koji se sastoji od četiri osnovna diska i četiri zrcaljena diska. Zalihost takve organizacije je 100%, odnosno ako jedan disk ispadne iz rada, jednostavno se rabi zrcaljeni disk umjesto njega. Oporavak od posljedica ispada

^ 302

9. POGLAVLJE: MEMORIJSKI SUSTAV

postiže se instalacijom novog diska i kopiranjem sadržaja s odgovarajućeg zrcaljenog diska. 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 performansu 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 informaciju, 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 pohranjuje na po jedan od redundantnih diskova. Operacijom čitanja istodobno se pristupa svim diskovima u polju. Zahtijevani se podaci zajedno s korekcijskim kodom prosljeđuju upravljač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

osnovni diskovi

SI. 9.27 Diskovna organizacija RAID 2

disk3

disk 4

^

disk 5

disk 6

diskovi na kojima se pohranjuju korekcijski kodovi

^

S. RIBARIČ - GRAĐA RAČUNALA

303

Diskovna organizacija RAID 3 koristi pojasne jedinice veličine bita i po tomu je slična organizaciji 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 zahtijeva samo jedan zalihi disk (paritetni disk), i to bez obzira na to koliko ima osnovnih diskovnih jedinica. Slika 9.28 ilustrira takvu diskovnu organizaciju. U 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, zamijeni novom, podaci koji nedostaju mogu se ponovo pohraniti u toj diskovnoj jedinici. Na primjer, pretpostavimo da imamo diskovno polje RAID 3 od devet diskovnih jedinica: osam osnovnih i jedne paritetne. Svaki od osnovnih diskovnih jedinica pohranjuje po jedan od osam bitova podataka. Pojas čini osam bitova podataka dQ-d7 i paritetni bit p. Paritetna diskovna jedinica pohranjuje paritetni bit p koji se 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 pohranjuje 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

11

12

15

16

19

o s n o v n i diskovi

disk na k o j e m se p o h r a n j u j u paritetni b i t o v i

SL 9.28 Diskovna organizacija RAID 3

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.

^ 304

9. POGLAVLJE: MEMORIJSKI SUSTAV

Diskovna organizacija RAID 4 (slika 9.29) slična je organizaciji RAID 3 po tome što za korekciju 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 diska. Pri ispadu iz rada jednog od diskova mogu se rekonstruirati podaci pokvarene pojasne jedinice uz pomoć pripadne pojasne jedinice paritetnog diska. diskO

disk 1

disk 2

disk3

disk 4

p(0-3) p(4-7) p(8-11) P02-15)

paritetni disk

osnovni diskovi SI. 9.29 Diskovna organizacija RAID 4

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

disk 4

p(0-3)

11

15 19 p(20-23)

p(28-31) SI. 9.30 Diskovna organizacija RAID 5

Osim šest osnovnih izvedbi diskovnih organizacija RAID postoji i 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 sustavi koji kombiniraju različite osnovne RAID izvedbe (RAID 0 + 5, RAID 5 + 0 (RAID 50), RAID 1 + 5 (RAID 15)).

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 memorija 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 malog 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 diskete (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) kapaciteta 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, kapaciteta 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 magnetskog 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 memorije 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 pohranjuju u digitalnom (binarnom) obliku u longitudinalnim stazama. Broj staza je za ranije izvedbe bio 9 - osam za pohranu jednog bajta podatka i jedna za paritetni bit. 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 record). 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 brzinom. 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 vrijeme 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.

^ 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 pohranjivanja 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 memorije 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 pohranjena 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 izboč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 reflektirajućeg aluminijskog sloja. Kad zrake padnu na izbočinu, odnosno mjesto između dvije 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 odgovaraju 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 slijedne 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 sadrž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žavaju 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. singlespeed 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).

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 programa 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 mijenjati 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 navrata u različitim vremenskim intervalima (satima, danima, mjesecima...).

308

9. POGLAVLJE: MEMORIJSKi SUSTAV

Razvoj tehnologije optičkih diskova omogućio je kompaktne diskove koji dopuštaju brisanje te ponovni zapis podataka. Takvi se kompaktni diskovi nazivaju CD-RW, tj. ispisnoupisni CD. CD-RW-i koriste posebnu smjesu srebra (Ag), indija (In), antimona (Sb) i telura (Te) za sloj u kojem se podaci zapisuju. CD-RW pisači koriste lasere triju snaga. Laserskom zrakom najveće snage topi se smjesa koja se pretvara iz visoko reflektivne kristalne strukture u nisko reflektivnu amorfnu strukturu koja odgovara udubini. Srednjom se snagom laserske zrake amorfna struktura 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 intenziteta 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 aktivnom sloju za zapis.Tanki se aktivni sloj sastoji od legure telura (Te), željeza (Fe) i kobalta (Co) koji mijenja polarizaciju reflektiranog laserskog svjetla ovisno o smjeru magnetiziranja. 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 mijenja 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 elektromagneta 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 polarizaciju ovisno o smjeru magnetiziranja aktivnog sloja. T

.

.

Značajka

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 D V D

Krajem devedesetih godina prošlog stoljeća pojavila se nova tehnologija diskova nazvanih DVD-ROM (Digital Versatile Disk; engl. versatile - svestran). DVD-ROM izgleda kao konvencionalan CD-ROM i temelji se na istoj tehnologiji, ali s 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, singlelayer) kapaciteta 4.7 GB, jednostrani i dvoslojni (Single-sided, dual-layer) kapaciteta 8.5 GB,

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 zrakom mijenjaju njegova optička ili magnetska svojstva. Postoji više standarda za upisnoispisne 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

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 hijerarhijskom memorijskom sustavu (slika 10.1) jest uporaba priručne memorije (engl. cache memory), odnosno dvorazinske memorijske hijerarhije. Slika 10.1 prikazuje osnovnu zamisao organizacije koja se sastoji od priručne memorije M 1 i glavne memorija M2. Obratite pozornost 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

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), memorije 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 pridruž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 (pohranjena 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

S. RIBARIĆ - GRAĐA RAČUNALA

313,

u priručnoj memoriji ima BM1, pri čemu je BM1 jednak kapacitetu priručne memorije podijeljen 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 3 o "5 XI o.

O i rvim m vo r^ ' ' S 5 S S 2 S 5 : CO CO 0Q 00 CO co co co

r-v

o

o*

J2

< co

tO N (D

% 'i— JD

-O

==. o ~ CL

u

< <

-C &

o £ 0» E fO c >u 3

00

"O oo .

o o. o X! N

< LU

fN

o o

< 0_ N _ 3 .2. c ro" 'u ®

8 o

o o o o

£ o c (L) O. N £

o o o

¥

T3

rtj

ro < 00

(TJ

fN

fN

< <

5 1C OJ £

o o o

f0 c

T3

•Si

«36.

•si

8 _ o o

o o o o

o o o o o o

o o o o o o

«o o o o o

o o

o o o o

O

o o o o

o «— — ' O

o o o o

o o o o

O O O

o o o o o o o o o

o o o o o o o o o

r- O «- o o «o o o o o o o o o o o o o o

SI. 10.3 Pojednostavljeni prikaz odnosa između blokova u glavnoj memoriji i priručnih blokova (linija)

314

11. POGLAVLJE: VIRTUALNA MEMORIJA

Na slici 10.3 vidimo da priručna memorija, u ovom pojednostavljenom prikazu, pohranjuje 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 pohranu 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.) Primjer

10.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-bitna adresa 100001111110, koja odgovara trećoj riječi, dovodi se na adresne priključke priruč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 priruč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 signalom R/W određuje vrstu sabirničkog ciklusa. Priručna memorija M 1 uspoređuje adresu na sabirnici sa značkama koje su pohranjene u memoriji za pohranu značaka. Ako je podudaranje uspješno (dogodio se pogodak), pristup će se okončati čitanjem ili pisanjem u priručnu memoriju. Pri svemu tome, glavna memorija M 2 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 skriveno 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

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 pomoć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 istodobno 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 povezuju 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 sabirnice 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.

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 (operacija čitanja) ili generira zahtjev za upisivanje podatka u memoriju (operacija pisanja), on se adresom poziva na lokaciju u glavnoj memoriji. (Opaska: pretpostavimo li daje procesor generirao adresu koja je u slučaju postojanja virtualne memorije (tj. razine glavna memorija - sekundarna memorija) virtualna ili logička adresa podatka ili instrukcije, ona će se pomoću adresnog translacijskog mehanizma virtualne 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 referenciranu 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-

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 upisni 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 pristupa 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 memoriju 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 govora u nastavku, a svodi se na to da podatak s adresom A u priručnoj memoriji M 1 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 prijenosa 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 memorija 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.

318

11. POGLAVLJE: VIRTUALNA MEMORIJA

SI. 10.6 Pojednostavljeni dijagram toka za operaciju čitanja i pisanja u priručnu memoriju

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 nakon š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 memoriji. 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 memoriji. Definirajmo omjer pogotka H (engl. hitratio) kao omjer broja referenciranja memorije u kojima je postignut pogodak i ukupnog broja referenciranja memorije: H = (broj referenciranja u kojima je postignut pogodak) / (ukupan broj referenciranja). Uz omjer pogotka često se rabi i mjera omjer 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 pogotka (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: t

A = tM,

X H +

(1-H)XtM2'

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 memoriji 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 = t M2 = 250 ns. Vidimo da se uvođenjem priručne memorije srednje vrijeme pristupa memorijskom sustavu popravilo skoro za jedan razred veličine.

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 usmjerava 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 nekog 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 njegova 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) ponavljano 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... ( 2 0 , 1 9 , 2 0 , 2 0 , 1 9 , 1 9 , 20, 20, 2 1 , 4 , 5 , 6 , 2 0 ) ,

WS = {19, 20}. Od vremenskog trenutka t = 6 u oknu h = 4 (unatrag) bili su referencirani blokovi 19 i 20. Što je radni skup WS(t, h) s manjim brojem elemenata, to je lokalnost programa 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) iii) iv) v)

način zamjene blokova (engl. replacement policy); veličinu bloka i kapacitet priručne memorije; način obnavljanja sadržaja glavne memorije (engl. update policy); način pribavljanja bloka iz glavne memorije (engl. memory fetch policy).

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 glavnoj 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-bitnim 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 prilagodljivost 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) sklopovska 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 zahtjevima za površinom na čipu pa se priručne memorije s potpuno asocijativnim preslikavanjem mogu naći u izvedbama skupih procesora visokih performansi.

322

11. POGLAVLJE: VIRTUALNA MEMORIJA

SI. 10.7 Shematski prikaz potpunog asocijativnog preslikavanja

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. «

« ^ ^ S c Ci G O f " i ""i i -O O. CD CD OD OD

SI. 10.8 Shematski prikaz organizacije izravne priručne memorije

5 S9š OD

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štanja 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

S. RIBARIĆ - GRAĐA RAČUNALA

325,

značka (1bit) bločni priključak

b=4 rijeci

3

BJO)

2

3

BM1(D

2

3

B«,

status

linije statusa

adresna sabirnica

adresa stabilna I

/

ALE

READY

i\

I

X

sabirnica podataka HJ in

č 2.fOc in

MEMR ili I/O READ

\

r podatak stabilan

sabirnica podataka >u uo Č^c -Q LCI u o

MEMW ili I/O WRITE

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 generira 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 podatak je sa sabirnice podataka dohvaćen i pohranjen u memorijskoj jedinici). Trenutak generiranja signala potvrde ovisi o brzini pratećeg modula pa se može smatrati neovisnim o

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 pristupa, postavlja podatak na sabirnicu podataka i tek tada g e n e r i r a signal p o t v r d e - signa_ *ra 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 d a s e b r z i n a k o m u n i k a c i j e između vodećeg modula i različitih pratećih modula koji imaj različite brzine prilagođava pojedinačnim modulima. linije statusa

y

r

adresna sabirnica READ —

podataka

\

/

X

signal potvrde

Podaci stab'lni 1 \



) f

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 najsporijem modulu koji je priključen na sabirnicu. Asinkrona sabirnica ima dodatnu upravljačku liniju (signal potvrde) i nešto složenije sabirničko sučelje, ali dopušta uporabu pratećih modula različitih brzina. Brzina prijenosa podataka 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ć spomenuta sabirnička jedinica koja je sastavni dio procesora. Budući da je riječ o sinkronoj sabirnici, pretpostavimo da su aktivnosti na sabirnici sinkronizirane signalom vremenskog vođenja PCLKfrekvencije 40 MHz. U usporedbi s frekvencijom signala vremenskog vođenja 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 - zbogfizičkeduljine sabirnice i električ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.

366

12. POGLAVLJE: SABIRNICE

Događaje na sinkronoj sabirnici za procesore x86 možemo jednostavno opisati ako sabirničku jedinicu (engl. bus unit) promatramo kao stroj stanja koji je opisan sa četiri diskretna stanja (slika 12.5): i) stanje vremena adresiranja (engl. address time); ii) stanje vremena podataka (engl. data time); iii) stanje čekanja (engl. wait); iv) stanje neaktivnosti (engl. idie time). Vrijeme trajanja stanja odgovara vremenu trajanje jedne periode signala vremenskog vođenja, dakle 1/40 MHz = 25 ns. Sabirnički ciklus započinje Stanjem vremena adresiranja. Sabirnička jedinica iz Stanja neaktivnosti prelazi u Stanje vremena adresiranja koje traje jednu periodu signala vremenskog 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 sabirnič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 signalom 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 (detektirala) da je signalna linija READY# neaktivna (READY# = 1). Budući da signalnom linijom 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 odgovara 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 spreman 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 čekanja (a) i s jednim stanjem čekanja.

S. RIBARIĆ - GRAĐA RAČUNALA

25ns

U

J

stanje neaktivnosti

stanje vremena adresi ran ja

stanje vremena podataka

367,

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 D 0 - 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 organizirana (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

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 asinkronim 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 prateći modul postavio podatke na sabirnicu podataka. Tada će procesor pohraniti podatke 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 jedinica) ili u registar (ulazno-izlazna jedinica). Linijama statusa FC0 - FC2 procesor obavještava prateće module o svom stanju i specificira 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 započni sljedeći ciklus Si. 12.6 Dijagram aktivnosti tijekom sabirničkog ciklusa čitanja riječi

1

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 procesora, 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 poluperiode 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 impedancije. Procesorske linije statusa FC0 - FC2 također su u stanju visoke impedancije. 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 FC 0 ~ 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 aktiviraju u stanju S2 pokazujući da je riječ o sabirničkom ciklusu koji rukuje 16-bitnom riječi.

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 zadovoljenog 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 interne 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 detektira 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đenja). Na taj način procesor čeka spori prateći modul. Nakon umetnuta dva stanja Sw procesor 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 ostane 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 slobodnom 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, vremenski 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.

S. RIBARIČ - GRAĐA RAČUNALA

S0

Sj

s2

s3

s4

Sw

Sw

Sw

Sw

S5

S6

S7

371 I

S0

CLK

A1-A23 AS, UDS, LDS R/W=1

DTACK

• [ podaci valjani

D0-D15 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 sabirnica podataka ima brzinu 1.6 GB/s.

12.4. SABIRNIČKA ARBITRAŽA Na sabirnici na kojoj su priključeni prateći moduli može se priključiti veći broj vodećih modula 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 generira signal kojim obavještava vodeći modul da mu je dodijeljena sabirnica. Odluka sabirnič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 sabirnici, 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 obzira 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

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 njezinog 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 organizirani 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 potencijalnim 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 sabirnicu 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 oslobađ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 modul 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 podataka. 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ćanskih 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 djelomič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 sabirnicu 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

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 prosljeđ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 dodijeljena 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 zahtijevanje 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 osigurava 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 sabirnicu 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 linija 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 dobivanje 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 dodjeljuje sabirnicu izabranom vodećem modulu. Prioritet vodećih modula određen je slijedom binarnih kombinacija postavljenih na linije rezultat glasovanja, odnosno pozicijom

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 programom, 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 arbitru 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 shema često naziva i shema s nezavisnim zahtijevanjem (engl. independent requesting). Primjer 12.4.

j

Sabirnica PCI (Peripheral Component Interconnect) (vidi potpoglavlje 12.5) koristi centrali- * ziranu 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 inicijatori (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 nezavisnim zahtijevanjem i arbitraže ulančavanjem.

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 arbitraž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 največ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}, omoguć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čavanjem: 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.

NJ штЛ.

к> > —i

V

а» N< D CD l/> =T m 3 ш N CU



П С

S. RIBARIČ - GRAĐA RAČUNALA

377 I

Distribuirana sabirnička arbitraža, kao što sam naziv govori, ima funkciju arbitra porazdijeljenu na sve potencijalne vodeće module - sklopovlje za arbitražu porazdijeljeno je vodeć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, imamo š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 manjeg 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čunalima. 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), brzina sabirnice bila je 4.165 miliona prijenosa u sekundi. No kako je sabirnica podataka bila 16-bitna, maksimalna brzina prijenosa bila je 8.33 MB/s. Adresna sabirnica bila je širine 20 bita (SA 0 - SA 19; SA - System Address Bus) za 8-bitni prijenos podataka, odnosno 24 bita (SA 0 -SA 19 i LA 17 - LA 23; LA - Latchable Address Bus) za 16-bitni prijenos podataka. Skromna brzina prijenosa sabirnice ISA i mali izravno adresirljiv prostor (24-bitna adresna sabirnica) bili su jedan od osnovnih uzroka njezina brza zastarijevanja. Nju je zamijenila sabirnica EISA koja imala 32-bitnu sabirnicu podataka (ali je 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 omoguć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šanih 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.

378

12. POGLAVLJE: SABIRNICE

Primjer 12.6. Procijenimo potrebnu brzinu, odnosno propusnost sabirnice računala u primjeru prikaza 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) - zelena, 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 prikazala videosekvenca pohranjena na disku, CD-ROM-u ili DVD-u, podaci moraju biti preneseni s diska preko sabirnice u memoriju, a zatim, da bi se prikazali iz memorije preko sabirnice 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 postavljeni 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 postigla što je moguće veća brzina osvježavanja videomemorije, grafička se jedinica umjesto 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 sabirnica 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 „naslonjena" 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. premosnici (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-

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 zahtijevaju 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 vremenskog 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-

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 memorijom, 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 premosnicima 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, o d n o s n o PCle i PC-X sabirnici, LAN (Local Area Network), USB (Universal Serial Bi

RAID, Parallel ATA (PATA- Advanced Technology Attachement) - paralelno 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.

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) prvenstveno 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 potpoglavlju 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 terminala 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 obavljao se serijski - bit po bit u vremenu preko jedne linije podataka za svaki od smjerova pri-

382

12. POGLAVLJE: SABIRNICE

jenosa (TxD - predajna linija podataka, RxD - prijemna linija podataka). Protokol se 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 kontekstu serijskog prijenosa podrazumijeva da se između predaj nog i prijemnog uređaja ne prenosi još i signal vremenskog vođenja.

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 RS232C 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 maksimalna je dopuštena duljina kabela bila 5 m. Prijenos podataka obavljao se paralelno pre-

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 slobodne 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 priključ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 potrebno postavljanje adrese na kartici ili uređaju, nije potrebno otvarati kućište računala, može

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 napajanje 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 srednjih 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 ulazno-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 tipkovnica, miš ili memorijski štapić pa takvi uređaji ne trebaju imati svoj poseban izvor napajanja. 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

r* 1 4

priključak priključak priključak priključak

2 3



USB A (strana domaćina - priključno mjesto)

USBB (strana uređaja)

1:+5Vdc 2: Data 3: Data + 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čunala, 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 optsnik uređaja (engl. device descriptor), koji se sastoji od 64 bajta. Na temelju njega dobiva

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 razmjenu podataka. Pojedini bitovi prenose se preko USB sabirnice tako da se grupiraju u jedinice koje se nazivaju paketi ili okviri (engl. frame). Paketi započinju s sinkronizacijskim blokom SYNC (duljine 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 osnovnih 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 - potvrda 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 (duljine 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

CRC

EOP

b)

SYNC

PID

adresa

ENDP 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 jednog 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 informacije 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 nazivaju 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 izokronim prijenosom podataka podrazumijeva prijenos podataka u stvarnom vremenu za periferne 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-

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.), odnosno 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 perifernim (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

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 ciljnog modula. Minimalna konfiguracija sastoji se od jednog inicijatora i jednog ciljnog modula. 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č domać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 upravljač 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), odnosno osam perifernih uređaja. Slika 12.19 prikazuje SCSI konfiguraciju s jednim SCSI upravljač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.

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 izdao 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činju 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 takmič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 sabirnicu (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

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 upravljanje 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 aktivira 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, deaktivira 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 signalnu 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 završ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 završ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.

LT) NJ

k> < —i

0) 3 0) 13

Bus Settle Delay

Bus Free Delay Bus Set Delay Bus Clear Delay Arbitration Delay

3 cn cu QJ D O) On n ^

Bus Clear Delay plus Bus Settle Delay inicijator aktivira signal BSY ciljni uređaj postavlja BSY SS— sustavi bez arbitraže započinju ovdje

BSY SEL

0> g; -V D n' 0) O

I/O MSG

30 n> a> Q. U

REQ

0) Q. O" n>

-ss-

-ss-ss-

C/D

3

OJ —^

-SS-

Y

-ss-

V

-

ACK ATN

t JT

VJ/

-8r

-ss-

J /

T

\

/



V

4

/

\

i

i

V

-fr

-ss-

-SS-

RST

XZ>

DB (7-0,P) (Data bus)

I /

sabirnica slobodna

Arb. I IDs

Targ. &lnit. IDs

Arbi- Selectration tion

ss

/ O L Last CMD Byte

1st CMD Byte

Command

Data Byte

-SS J

C X . Data Byte

Data In

t

O Status Byte

Status

J C X . Command I Complete

Message In sabirnica slobodna

"J

S. RIBARIČ - GRAĐA RAČUNALA

391 I

Širina (bita)

Frekvencija (MHz)

Brzina (MB/s)

Duljina kabela (m)

50 priključaka

8

5

5

6

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

-

Sucelje

Standard

Konektor

SCSI-1

SCSI-1 (1986.)

Fast SCSI

Tablica 12.1 Pregled značajki različitih varijanti SCSI sabirnice

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 obnavljanje, rezervna pohrana podataka i dokumenata (engl. bačking up), prikupljanje podataka 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 (nazivaju se još i vanjski uređaji ili ulazno-izlazni uređaji) koji su preko ulazno-izlaznog sučelja (engl. I/O iriterface) priključeni na sabirnicu računala. Periferni uređaji su, na primjer, tipkovnica, 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 diska? 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, odnosno 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.

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 ulaznoizlazno sučelje na koje je priključen jedan ili više perifernih uređaja nazivat ćemo ulaznoizlazni

podsustav. sabirnica sustava

procesor

memorija

ulaznoizlazni upravljač 1

ulaznoizlazni upravljač 2

ulaznoizlazni upravljač 3

periferni uređaj

komunikacijska linija

periferni uređaji

ulazno-iziazni podsustav 1

ulazno-izlazni podsustav 2

ulazno-izlazni podsustav 3

...

ulaznoizlazni upravljač n

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 sustave relativno malih performansi (engl. low-end system) koji se temelje na jednoj (sistemskoj) sabirnici. (Opaska: upotrebljavat ćemo i naziv sabirnica sustava.) Slika 13.2 prikazuje 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 upravljač (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 sklopove 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 perifernim 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]

S. RIBARIČ - GRAĐA RAČUNALA

395 I

jednog perifernog uređaja. Ujedno, vrlo često imaju i dodatne funkcije koje se odnose 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 jednostavno sučelje između procesora i jednog perifernog uređaja, dok u složenijim izvedbama mogu nezavisno upravljati većim brojem perifernih uređaja. U oba slučaja ulazno-izlazni 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

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 prihvat 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, upravljačkog registra te registra za pohranu informacije o statusu perifernog uređaja. Uz sve t a 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 perifernom 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 perifernog 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.

j sabirnica podataka

c

A VI

podaci

registar podataka Vy

statusni registar

sklopovsko sučelje za periferni uređaji 1

jy

status

>

upravljanje

pristupna vrata perifernom uređaju 1

upravljački registar

/ — adresna sabirnica N

j V

< , A

upravljačna sabirnica

\



sklopovi za dekodiranje ulazno-izlaznih naredbi i adrese



sklopovsko sučelje za periferni uređaji 2

V N A

podaci status

r

N K

: — V upravljanje

pristupna vrata perifernom uređaju 2

pristupna vrata računalu

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 sabirnice. Podaci koji se izmjenjuju s vanjskim svijetom i koji se prenose od ili prema ulaznoizlaznom 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 lokalnu memoriju tako da mogu podržati autonomni prijenos podataka bez izravnog su-

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 jednog 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 internih 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 upravljač 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-

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. ulaznoizlazne operacije mogu se razvrstati u tri grupe: i) programirani ulazno-izlazni prijenos podataka (engl. programmed I/O), ii) prekidni ulazno-izlazni prijenos podataka (engl. interrupt-driven I/O), iii) ulazno-izlazni prijenos podataka izravnim pristupom memoriji (engl. DMA - Direct Memory

Access).

13.3.1. PROGRAMIRANI ULAZNO-IZLAZNI PRIJENOS PODATAKA Pri programiranom ulazno-izfaznom prijenosu podataka podaci se izmjenjuju između procesora 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-izlaznom 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 perifernog 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 svijeta 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 podataka 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 dodijeljene - 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).

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 upravljač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 dodijeljenog ulazno-izlaznom sustavu. Procesori koji rabe takvu organizaciju ulazno-izlaznog sustava nemaju posebne instrukcije za ulazne operacije (instrukcije IN ili INPUT) niti instrukcije za izlazne operacije (OUT). Umjesto njih rabe instrukcije koje se koriste za komunikaciju s memorijom - instrukcije STA i LDA, odnosno MOVE. Primjer 13.1. Pretpostavimo da je jednostavan ulazno-izlazni upravljač sveden na U/l vrata te da ima samo dva registra podataka - jedan ulazni (za prihvat podataka iz perifernog 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 ulaznom 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 LDA $1000 dohvati podatak s memorijske lokacije čija je adresa 1000 i privremeno ga pohrani u akumulator A STA $ 8000 pohrani podatak iz A u izlazni registar U/l vrata (izlazna operacija) instrukcija instrukcija instrukcija LDA $8008 dohvati podatak iz ulaznog registra U/l vrata pohrani podatak na memorijsku lokaciju čija je adresa 2000 STA $2000 instrukcija instrukcija instrukcija Instrukcijom STA $8000 obavlja se izlazna operacija, odnosno podatak iz akumulatora A pohranjuje se u izlaznom registru i šalje vanjskom svijetu jer je 8000 adresa izlaznog registra. Instrukcijom LDA $8008 dohvaća se podatak iz ulaznog registra podataka U/l vrata (ulazna operacija). Vidimo da instrukcija STA ima funkciju izlazne instrukcije (OUT) ako adresira izlazni registar podataka U/l vrata, odnosno instrukcija LDA ima funkciju ulazne instrukcije (IN) ako adresira ulazni registar. Ulazno-izlazni 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)).

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 posebne instrukcije u skupu strojnih instrukcija za unos podataka (IN ili INPUT) i za slanje podataka u vanjski svijet (OUT). Procesor razlikuje dva adresna prostora tako što, ako pristupa memorijskom adresnom prostoru, to čini instrukcijama tipa LDA i STA koje aktiviraju 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.

S. RIBARIČ - GRAĐA RAČUNALA

401

I

Slike 13.6 a) i 13.6 b) prikazuju organizaciju programiranog ulazno-izlaznog prijenosa podataka za memorijsko preslikavanje U/l i izdvojeno U/l te odnose između pojedinih adresnih prostora (13.6 c)). Napomenimo da, primjerice, procesori MC 680x0 tvrtke Motorola koriste memorijsko U/l preslikavanje, dok procesori 86x86 tvrtke Intel rabe izdvojeno U/l. sabirnica podataka

adresna sabirnica

periferni uređaj

periferni uređaji

periferni uređaj

periferni uređaji

a)

sabirnica podataka

adresna sabirnica

b)

SI. 13.6 Programirani U/l prijenos: a) s memorijskim preslikavanjem U/l; b) s izdvojenim U/l;

402

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

U/l adresni prostor

ukupni adresni prostor

memorijski adresni prostor

memorijski adresni prostor

U/l adresni prostor

memorijsko U/l preslikavanje

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 programirani 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 prijenosa - 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 adresi 4000 (heksadekadno) želi poslati na izlazna vrata (PORT) čija je adresa 8000 (heksadekadno). Program započinje na adresi 6000 (heksadekadno). PORT COUNT

EQU $8000 EQU 256

ORG $4000 BLOCK DS.B 256 ORG $6000 MOVE #COUNT, Dl MOVE.L #BLOCK, A1

; adresa izlaznih vrata ; (brojilo) veličina bloka koji se prenosi ; 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

S. RIBARIČ - GRAĐA RAČUNALA

MOVE.L #PORT, A2 PETLJA MOVE. B (Al)+, DO MOVE.B DO, (A2) SUB #1, Dl BNE PETLJA

403 I

postavi adresu izlaznih vrata u reg. A2 dohvati podatak iz BLOCK i privremeno ga pohrani 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 jednaku funkciju kao i STA, odnosno LDA instrukcija.Tako na primjer: Instrukcija

MOVE. B (Al)+, DO; M(A1> -•DO, A1 + 1-* A1 ima funkciju LDA - dohvaća podatak (bajt) iz memorijske lokacije čija je adresa sadržana 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

MOVE.B DO, (A2) biti poslan u vanjski svijet. Instrukcija MOVE. B DO, (A2) predstavlja operaciju pohranjivanja (STA) bajta iz registra DO na lokaciju čija je adresa 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, odnosno 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 upravljač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 prihvat 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 statusnom 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 programa za takvu vrstu prijenosa.

404

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

U/l instrukcija

SI. 13.7 Shematski prikaz programiranog uvjetnog prijenosa

Primjer 13.3. Da bi se djelotvorno, jednostavno i sigurno ostvario programirani uvjetni prijenos, obično se zahtijeva da ulazno-izlazni upravljač (ili u jednostavnijoj izvedbi U/l vrata) ima dva registra. Jedan registar ima funkciju registra podataka, a drugi je statusni registar. Memorijskim preslikavanjem U/l svakom od registara dodijeljena je po jedna adresa iz memorijskog adresnog prostora. Pretpostavimo da izlazni registar ima adresu 8000 (heksadekadno), a statusni registar 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

; adresa izlaznog registra podataka

PORTSTAT COUNT PROGRAM MASKA DATA

EQU $8002 EQU 256 EQU $6000 EQU 1 EQU $4000 ORG DATA DS.B 256

; 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

ORG PROGRAM MOVE.W #C0UNT,D1

; 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

BLOCK

MOVE.L #BLOCK, A1 MOVE.L #PORTDATA, A2 MOVE.L #PORTSTAT, A3

; rezervirano 256 bajtova za BLOCK

S. RIBARIČ - GRAĐA RAČUNALA

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

405 I

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 postavljen najmanje značajni bit statusnog registra ulazno-izlaznog upravljača:

MASKA (D2) AND

0 0 0 0 0 0 0 1 X X X X X X X 1 0 0 0 0 0 0 0 1

rezultat logičke I operacije.

(Opaska: u ovom primjeru pretpostavljamo da će se u statusnom registru ulazno-izlaznog 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 upravljač 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.

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 t o a » 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 nedostatakprocesor 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 programsku 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 čekalicama predstavljala golemu većinu procesorskog vremena. To rasipanje procesorskog vremena ugrožava i osnovnu funkciju računarskog sustava - nadgledanje i upravljanje industrijskim 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 prijenosom podataka (engl. interrupt-driven l/O). U tom načinu prijenosa podataka procesor

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ćuje 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 koriste 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 zahtijeva 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.

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 j o i | naziva i prekidna rutina ili program za rukovanje prekidom (engl. interrupt handler).

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 razine 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.

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 prekid. 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 doprinosi 22. Tako, na primjer, ako je IPL2 = 0 (aktivno stanje), /PL 7=0 (aktivno stanje) i IPLO = 1 (neaktivno stanje), onda je razina zahtjeva za prekid jednaka 1 x 22 + 1 x 21 + 0 x 2° = 6. Razina prekida kojeg će procesor prihvatiti 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 manje 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. Prekidne zastavice Razine onemogućenih prekida 12

11

1 - 6 (001; 010; 011; 100; 101; 110)

1

1

10 f i 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

0

1 (001)

0

0

1

Sve su razine prekida omogućene

0

0

0

1

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 prekidne linije ¥[0 = 0, lPU = 0, JPL2 = 0) i kada su prekidne zastavice 10 = 1,11 =1 i 12 = 1 predstavlja iznimku od pravila o uvjetima 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 kodirane zastavicama 10,11 12. Prekidni program 1 se izvodi i tijekom njegova izvođenja pre-

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 prekida - 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 prekidni program 2

nije prihvaćen zahtjev za prekid prekid razine 3: fPL0 = 0 IPU = 0 IPL2 - 1 10=1 11 = 0 12 = 0

10 = 0 11 = 1 12 = 0

10=1 11 = 1 12 = 0

SI. 13.11 Primjer 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 proizvodnim procesom u kojem se zahtijevaju točni vremenski odzivi - prekid takvog programskog odsječka i izvođenje nekog drugog prekidnog programa narušio bi željene vremenske 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 zahtijevati 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

412

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

zahtjev za prekid. Prozivanje (engl. polling) potencijalnih uzročnika temelji se na jedrrznačno im dodijeljenim adresama (bilo u memorijskom, bilo u izdvojenom U/l adresneprostoru), a ispitivanjem statusnog registra ulazno-izlaznog upravljača utvrđuje seje li zaista 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 ulazncizlaznih 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 nemaskirajuć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 prioriteta. 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 ulaznoizlazni 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 registru 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 potvrde 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 adresirljivog memorijskog prostora. Pretpostavimo da su to memorijske lokacije s adresama FFF8 i FFF9 ako je ukupni adresirljivi memorijski prostor od 0000 - FFFF (heksadekadno). Na memorijskoj lokaciji FFF8 pohranjen je značajniji bajt adrese prve instrukcije prekidnog programa, a na FFF9 manje značajan bajt 16-bitne adrese. Dohvaćeni sadržaji tih memorijskih 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 potencijalne 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

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 zastavica 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 kojim 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 prekidnim 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 prekidne 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 dohvatiti iz memorije početnu adresu prekidnog programa. Posebna prilagodljiva i djelotvorna prekidna shema jest vektorski prekid (engl. vectored 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 vector). 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

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 jednoznač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 sabirnice podataka vektorski broj i interno ga pohraniti. Nakon što procesor pohrani minimalni kontekst na stog, procesor će interno pohranjeni vektorski broj upotrijebiti za generiranje 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 (heksadekaono) 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 memonske 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

• 8-bitni vektorski broj:

b0

0 0 0 0 1 0 10

;

S. RIBARIČ - GRAĐA RAČUNALA

b

b 9

415 I

o

• vektorski broj posmaknut ulijevo za dva mjesta: 0 0 0 0 1 0 1 0 0 0 • oblikuje se 32-bitna adresa tako da se posmaknutom vektorskom broju na pozicijama b10 - b31 pridruže 0: b

3i

b

m

b

b

9

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

01

0

000

Početna adresa memorijskih lokacija gdje se nalazi prekidni vektor je 00000028 (heksadekadno). Ako je adresna zrnatost memorije bajtna, onda će se 32-bitni prekidni vektor nalaziti na memorijskim lokacijama od 00000028 do 0000002B:

(00000028) = 00 (00000029) = BI (0000002A) = 00 (0000002B) = 00. 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 signal 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 programa. Programsko brojilo puni se prekidnim vektorom i ono pokazuje na prvu instrukciju prekidnog programa. Programski koraci: i) prekidnim se programom prvo pohranjuju sadržaji registara koje će prekidni program 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čavanja, 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.

416

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

Ulazno-izlazni upravljač koji je generirao zahtjev za prekid i koji je prvi u lancu primio signal potvrde prekida postavlja svoj vektorski broj na sabirnicu podataka. Ovaj"sklopovskT 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 (poglavlje 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 prikazuje takav vektorski prekidni sustav koji ima tri prekidne linije (IRQ0 - IRQ2) koje su organizirane 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

S. RIBARIČ - GRAĐA RAČUNALA

417 I

Primjer 13.7. Pretpostavimo da su u vektorskom prekidnom sustavu prikazanom na slici 13.15 istodobno generirali zahtjev za prekid ulazno-izlazni upravljač 1 koji je priključen na prekidnu 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 zahtjev 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čnika 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 sustavu i koje imaju za posljedicu prekid normalnog izvođenja programa i prijenos upravljanja na poseban program za obradu iznimke. Iznimke se mogu podijeliti na one koje imaju vanjske uzroke i one koje izazvane unutarnjim stanjem procesora. Iznimke izazvane 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 procesor 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 generiraju 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!);

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 n a a n 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,procesorpostavljanaadresnelinijeA 1 -A 3 razinuprihvać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 p r i m » 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 nadgled 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 (koraci 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 pribavljenih 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 memorijskom 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 stanjem 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 brojila (PC), dvije dodatne riječi koje određuju početnu vrijednost nadglednog kazala stoga (SSP) (tablica 13.2).

S. RIBARIČ - GRAĐA RAČUNALA

završetak tekuće

sabirnički ciklus

419 I

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.

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

15

03C

16-23

04C

-

ND

ned odijeljen i prostor - rezervirano

neinicijalizirani prekidni vektor nedodijeljeni prostor - rezervirano

05 F 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

48-63

64-255

0BF

-

OCO

-

0FF

-

100 3FF

NP - nadgledna programska memorija ND - nadgledna memorija podataka Tablica 13.2. Tablica vektora iznimaka

ND

-

nedodijeljeni prostor - rezervirano

korisnički prekidni vektori

^

S. RIBARIČ - GRAĐA RAČUNALA

421 I

bO

b!5

riječ 0

značajnijih 16 bitova vektora iznimke

A0=0 A1 =0

riječ 1

manje značajnih 16 bitova vektora iznimke

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 nadglednog kazala stoga SP i početne vrijednosti programskog brojila PC, nalazi se pohranjen 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 memorijskih lokacija s adresa 000000, 000001, 000002 i 000003, a zatim programsko brojilo PC s memorijskih lokacija 000004,000005,000006 i 000007 (sve heksadekadno). Ovim potonjim određena je adresa prve instrukcije programa kojim se poslužuje iznimka reset (programska rutina reset).

(periferni (periferni uređaj 0) uređaj 1) vektorski broj 64 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 (heksadekadno). 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-izlazni upravljači, odnosno periferni uređaji. Slika 13.18 prikazuje prekidno sklopovsko sučelje

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 instrukeje 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 (aekadno) 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 iznimaka 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

0

0

0

0

0

0

0

A23

0

0

0

0

0

0

0

1

1r

T

0

0

f 1r 0

...

0

0

0

0

0

0

0

0

0

0

A2

A1

1 0

SI. 13.19 Oblikovanje adrese prekidnog vektora za vektorski broj 64 (dekadno)

24-bitna adresa prekidnog vektora je 000100 (heksadekadno) (slika 13.19). Pretpostavimo da se prekidni program koji poslužuje periferni uređaj 0 nalazi na adresi 004600 (heksadekadno), 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 podataka 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četnoj 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

:

S. RIBARIČ - GRAĐA RAČUNALA

OUTREG DATA BUFFER

EQU $8000 EQU $3000 ORG DATA DS.B 512

PONTER

DS.L 1

423 I

; adresa izlaznog registra podataka

; blok podataka veličine 512 bajtova ; nalazi se na adresi 3000 ; kazaljka na blok podataka BUFFER

; početak glavnog programa ORG GL_PROG MOVE.L #BUFFER, POINTER ; inicijalizirana vrijednost kazaljke MOVE #INT MASK, 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 MOVE, MOVE, RTE

AO, POINTER (SP)+, A0

; ; ; ;

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 upisati adresu prekidnog programa: (000100) = 00, (000101) = 00, (000102) = 46 i (000103) = 00.

Opišimo prethodna dva programa. Prve dvije EQU pseudo naredbe u zbirnom jeziku definiraju 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 izlaznog 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 riječ za pohranu kazaljke POINTER koja pokazuje na tekući bajt bloka podataka BUFFER. Instrukcijom MOVE. L #BUFFER, POINTER, u glavnom smo programu, definirali početnu 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 prekid 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).

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 # koja 16-bitni podatak 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

bi 5

korisnički bajt statusnog registra

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 . L A O , - (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 trenutna 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 posti 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 zahtjeve 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 RTE

(SP)+, Dp - Dq / Ar-As

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 ograničena brzinom kojom procesor obavlja "kućanske poslove" i ispituje stanje i poslužuje periferne uređaje izvođenjem instrukcija pri svakom prijenosu podataka, lako prekidni prijenos 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 sudjelovanje 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, propusnost 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 podataka/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 registra 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.

426

13. POGLAVLJE: ULAZNO-IZLAZNI SUSTAV

TransferAck

SI. 13.21 Sklopovska konfiguracija za DMA prijenos podataka

DMA i) ii) iii)

prijenos obavlja se na temelju sljedeća tri glavna koraka: inicijalizacije DMA upravljača, DMA prijenosa podataka, 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 sudjelovati 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 prostora. Nakon inicijalizacije DMA upravljača, procesor nastavlja s izvođenjem tekućeg programa budući da je zadatak U/l prijenosa delegirao DMA upravljaču.

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čunarskim sustavima s više (potencijalno) vodećih modula zahtjev za sabirnicom upućuje se sabirnič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 provjeravao 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 procesor 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 grana 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 4

-f F2

"D3

IF,

ID,

IF

ID2

i

2

j]

WB2

i

i 1

WB, M,

i i

M3

M2

WB2

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

1

3 1

[

4 y , ,

i

5

6

7

8

,

9 i

i i

IF,

ID,

WB,

I F

ID2

A,

2

i i

IF,

ID,

IF2

I D

i j i

V> !i 42 —» VI c

A.

WB2

A,

A2

WB, WB2

2

M,

M2

M3

IF,

ID,

E,

WB,

•F2

ID2

M,

1

M2

M3

WB2

j i

1

a) periode: protočna struktura 1

j

5

l3

protočna struktura 2

>2

>4

b) SI. 14,32 Izdavanje instrukcija u redoslijedu, ali sa završavanjem izvan redoslijeda

«6

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šavanja instrukcija. Slike 14.33 b) i c) prikazuju redoslijed izdavanja i završavanja instrukcija. periode signala vremenskog vođenja 1

IF,

3

I F

4

£3 ir

2

2

3

!

2

5

IF,

1

'

F

M,

M2

M3

ID,

E,

2

6

7

|i

WB1

I D

2

5

A2

ID, I D

4

j

WB2

WB2 M,

M2

M3

A,

A2

WB2

IF,

ID,

2

>F2

I D

2

1

i

F2

6

8 1

|I

I

1 !

i

i

a) periode: protočna struktura 1

>3

protočna struktura 2

>4

's >2 b)

periode: protočna struktura 1 protočna struktura 2

j

3

j

's '4

6

'2

c) SI. 14.33 Izdavanje i završavanje instrukcija izvan redoslijeda a), redoslijed izdavanja instrukcija b), redoslijed završavanja instrukcija c)

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 pojavljuju u procesoru, odnosno računarskom sustavu. Do približno druge polovine osamdesetih 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šenju. 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 pojavljuje 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 operacije na njihovim elementima. Na primjer, podatkovni paralelizam svojstven je digitalnoj obradi slike i problemima u kojima se rukuje strukturama podataka kao što su vektori i matrice. 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 segmentu. Na taj način zrnatost određuje osnovni programski segment koji je izabran za paralelnu obradu. Razlikujemo četiri razine raspoloživog funkcijskog paralelizma:

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 programa 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 o > o c

(U

E

30

c

25 CT1 "O

o

20

o o> O c o.

o S

15

10

I I I I I I

• n 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ć nakon 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 procesora 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.

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 eksplicitnog ili izravno izraženog paralelizma u samoj specifikaciji instrukcije ili niza instrukcija. 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 ustaljena 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 iskoristiti. Slika 15.3 a) prikazuje arhitekturu VLIW procesora, a slika 15.3 b) format VLIW instrukcije. 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 istodobno 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 raspolož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.

S. RIBARIČ - GRAĐA RAČUNALA

477 I

veliki skup registara opće namjene

—n—n— memorija

O load/ store jedinica

O

O

FP zbrajalo 1

FP zbrajalo 2

FP množilo

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 arhitekturi IA-64 64-bitnog Intelovog procesora Itanium. (Opaska: naziv Itanium koristi se za Intelovu porodicu RISC procesora koji su razvijeni od 2001. do 2010. i nose oznake Itanium (kodnog imena Merced) i Itanium 2 (procesori s 1,2 ili 4 jezgre)). Procesor Itanium je load/ store arhitekture i ima 64-bitne adresne registre i registre podataka koji su organizirani kao skup od 128 registra opće namjene. Procesor ima i skup od 128 registara za brojeve s pomič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 pojednostavljeno sklopovsku organizaciju procesora IA-64 arhitekture. Ako je usporedimo s organizacijom 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.

128 64-bitna registra opće namjene

memorija

O

O

O

izvršna jedinica

izvršna jedinica

izvršna jedinica

izvršna jedinica

izvršna jedinica

izvršna jedinica

izvršna jedinica

izvršna jedinica

64 pred i katna registra (1-bitni)

A-

128 FP registra (82-bitni)

SI. 15.4 Pojednostavnjeni prikaz sklopovske organizacije procesora IA-64 arhitekture

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 multimedijski posmak, ispitivanje bitova, premještanje, • M tip - odnosi se na jedinicu za pristup memoriji (M-unit) i određuje load i store instrukcije 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 grananje te pozive potprograma, • L + X tip - izvršavaju se u jedinici grananja ili u cjelobrojnoj jedinici i određuju mješovite 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 izdavanja 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 započ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 odnose 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.

S. RIBARIČ - GRAĐA RAČUNALA

15.1.2.

479 I

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 adresnom 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

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 proces (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. multiprogramming). 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

L

memonja

a)

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 vremenski 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

S. RIBARIČ - GRAĐA RAČUNALA

481 I

procesima (npr. jedan od procesa generira izlazne rezultate koji su ulazni podaci za neki drugi proces). S obzirom na interakciju procesa i njihovu međuzavisnost te raspoloživost stvarnog 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 dretve. 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 management) te informaciju potrebnu za rukovanje datotekama (engl. file management). Na primjer, tablica sadržava informaciju o stanju registara dodijeljenih procesu, sadržaju programskog 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, kazaljkama 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 datoteka. Posebni procesi namijenjeni su U/l uređajima i njihovoj komunikaciji s procesorom uporabom prekida ili iznimke. Aktivnosti tijekom prekidnog procesa opisali smo u 13. poglavlju.

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 pripravnosti ili blokiranosti. Do sada smo razmatrali višeprogramski način rada u kojem je više procesa dijelilo u vremenu jedan stvarni procesor. No ako računarski sustav ima više procesora, tj. ako je višeprocesorski 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 programsko brojilo. Današnji višenamjenski računarski sustavi, odnosno njihovi operacijski sustavi podržavaju veći broj d ret vi u jednom procesu. Takve se dretve nazivaju još i "laki" procesi (engl. lightweight process) jer se pri prijenosu upravljanja s dretve na dretvu ne zahtijeva pohrana onoliko velike 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 sustavu imamo tri procesa: A, B i C. Svaki od njih ima svoju jednu dretvu i programsko brojilo te svaki od procesa djeluje u tri 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

proces SI. 15.9 Jedan proces s tri dretve

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 identifikatoru 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 vremena 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 jednom 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 odvijanja 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čunarskom 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) upotrebljava 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 pojavljuje 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 paralelizmu 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 arhitekture 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 procesor djelotvorno koristi tako da se oblikuju pripravni procesi koji pripadaju različitim korisnič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

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. timesharing) 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 procesorsko 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) arhitektura 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 uporabom 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 motivacija 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 rekonfiguriraju jednu ALU koja se koristi dugim riječima u više manjih ALU koje djeluju paralelno 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 koriste za definiranje vrijednosti primarnih boja (R, G, B) slikovnih elemenata (engl. pixel) ili se 16-bitni podaci koriste za prikaz vrijednosti zvučnog uzorka.

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 pomič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 operanada). Različite aritmetičke i logičke MMX instrukcije te MMX instrukcije za uspoređivanje 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-komponentnih vektora pri čemu su onemogućeni bitovi prijenosa na granicama pojedinih 8-bitnih operanada. 64-bitni MMX registar 64-bitni MMX registar

a

c

b /

d

f

e

h

9

/ 0

63

i

k

j

w T

m

1

y

n

w

T

T

63

0

T 1r

a+i

b+j

c+k

d+l

e+m

P

Y V

f+n

g+o

0

h+p

SI. 15.10 Izvođenje M M X instrukcije paralelnog zbrajanja dvaju vektora

MMX instrukcije barataju samo cjelobrojnim vrijednostima. Procesoru Pentium III (1998.) pridodano je još 70 SIMD instrukcija, nazvanih SSE (Streaming SIMD Extensions) koje djeluju na osam dodatnih registara duljine 128 bita i 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!

486

15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI, VIŠEJEZGREN! I GRAFIČKI PROCESORI

15.2. PARALELNE ARHITEKTURE: VIŠEPROCESORSKI SIMD, VEKTORSKI PROCESORI I M I M D SUSTAVI Raspoloživi funkcijski paralelizam i podatkovni paralelizam podloga su za ostvarivanje paralelnih računarskih arhitektura. Prema Flynnovoj klasifikaciji koja se temelji na paralelizmu 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 protoč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 organizaciju 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, operacije 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šiljanja instrukcija izvodi instrukcije koje se odnose na skalarne operacije i na one za upravljanje tokom programa (npr. instrukcije uvjetnog grananja). Svi su procesori identični i preko prospojne mreže (engl. interconnection netvvork) međusobno 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.

S. RIBARIČ - GRAĐA RAČUNALA

487 I

procesor 1 lokalna memorija podataka 1

procesor 2 lokalna memorija podataka 2

-A V prospojna mreža

procesor N lokalna memorija podataka N

računalo d o m a ć i n

SI. 15.11 Organizacija višeprocesorskog SIMD računarskog sustava

SIMD arhitektura u nekoliko je posljednjih godina dobila na značenju, posebno u multimedijskoj primjeni (naročito u računalnoj grafici) kao jedan od djelotvornih pristupa oblikovanja 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 komponentama x(l), x(2), x(3),..., x(63), x(64). Vektorski procesor obavlja aritmetičke i logičke operacije na operandima koji su vektori.

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 programskog 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 instrukcijom, 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 stotine "klasičnih" instrukcija, značajno je smanjila vrijeme potrebno za pribavljanje i dekodiranje instrukcija - vektorska se instrukcija samo jednom pribavlja i samo jednom dekodira (za razliku od gornje programske petlje koja zahtjeva 64 pribavljanja i dekodiranja instrukcija). Uz sve to, rezultat - sve komponente vektora w, vektorska instrukcija generira istodobno. Uporaba vektorske ALU u kojoj se istodobno izvode operacije nad svim komponentama vektora u vektorskim je procesorima ipak rijetka. Umjesto, na primjer, vektorskog množila brojevima s pomičnim zarezom (koji bi istodobno generirao sve produkte), u praksi se koristi 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đenja č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 horizontalna 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 t 8 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.

S. RIBARIČ - GRAĐA RAČUNALA

t0 I

V,(1),V2(1) i

»i 1

l

2 1

l

3 1

% 1

-—i

t5 »

t6 1

t7 i

t8 1

t9 I

t,0 i

t,2 1

t

u

\

t14 h~ vrijeme

V30)=V1(1),V2(1)

V1(2),V2(2) _ ! _

VI (3), V2(3) i

h - ^ - l r

i

SI. 15.12 Vremenski dijagram izvođenja vektorske instrukcije MULTV V I ,

w

t„ i

489 I

V3i2)=V1(2).V2(2)

V3(3)=V1(3)«V2(3>

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 vektorima 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, skalarnog te vektorskog podsustava. Podsustav za pribavljanje instrukcija dohvaća instrukcije iz instrukcijske priručne memorije i ovisno o tipu instrukcije distribuira instrukcije skalarnom ili vektorskom podsustavu. Oba podsustava - skalarni i vektorski - djeluju istodobno. Programski segmenti koji su bogati instrukcijama grananja podesniji su za 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 registara 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 pristupna 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 dohvat i pohranu vektora iz/u memoriju. Memorijska jedinica izvedena je kao protočna tako

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 odgovara brzini sklopovlja vektorskih funkcijskih jedinica (jedna riječ u jednoj periodi signala vremenskog vođenja). Budući da se vektorske operacije izvode na velikim skupovima podataka koji se, obično, ne podudaraju s kapacitetom priručne memorije, vektorske load i stote jedinice izravno su povezane s glavnom memorijom.

protočna funkcijska jedinica 1 I.-

zj vektorska load jedinica

- -

4

protočna funkcijska jedinica 2



=J V J5

protočne funkcijske jedinice

U)

skalama priručna memorija

skup skalarnih registara

skalarni podsustav

instrukcijski međuspremnici

instrukcijska priručna memorija

jedinica za pribavljanje instrukcija

podsustav za pribavljanje instrukcija

SI. 15.13 Vektorski procesor (pojednostavnjeni prikaz)

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, instrukcija vektor-vektor može se opisati kao: f 1- V i. ^ V k f'2: Vi X Vj V 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 vektorskom registru V., a drugi je operand skalar s smješten u jednom od skalarnih registara s.J Formalno: f 3: s.j x V.i V., k' gdje je s skalarni registar; iii) instrukcija vektor-memorija (slika 15.14 c)) - odgovara operaciji dohvata vektora iz memorije (load) ili operaciji pohrane vektora u memoriju (store). Vektori se pohranjuju ili 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 jedinicom (slika 15.13). Formalno se ovaj tip instrukcije može opisati kao: , f4: M I f5: V. gdje je M glavna memorija;

V. za operaciju load M za operaciju store,

iv) instrukcija redukcije vektora. Formalno se taj tip instrukcije može opisati kao: f 6 • V.i s.} f 7* V.i x Vj s. 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 instrukcija uporabom dvaju vektorskih registara okupljaju vektorski elementi dohvaćeni iz memorije ili se uporabom dvaju vektorskih registara raspršuju elementi vektora u memoriju. Formalno se instrukcije ovog tipa mogu opisati kao: f 8 :M->V,xV 0 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 vektorski 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 registar 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;

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 i10n :V_xV - • V1. 0 m 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 operacije 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 registar V-i

vektorski registar Vk

skaJarni registar

sj

protočna funkcijska jedinica



w b)

SI. 15.14 a) i b) Prikaz tipova vektorskih instrukcija

S. RIBARIČ - GRAĐA RAČUNALA

vektorski registar V/V,

M

vektorski registar V„

pomoćni registar V.

vektorski registar V,

adresa

sadržaj

0600 0400

- 0100

0200

0250

0101

0300

0200

- 0102

0400

0103

0500

- 0104

0600

0105

0700

0106

0100

- 0107

0250

0108

0350

0100 adresni registar A„

0109 010A 010B

d) pomoćni registar V, 12

493 I

vektorski registar V0 {ispitivani registar)

vektorski registar V1 (rezultat)

0

01_

1

03

0

04

1

07

010110011101...

1

08

maski rni registar V

0 0 1

09 11

1 1

0 1

e)

SI. 15.14 c), d) i e) Prikaz tipova vektorskih instrukcija

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 jedinica 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šetrač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 jednotrač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(5)

V(5)

x(6)

y(6)

x(l)

y(D

x(1)

y(D

x(2)

y(2)

I

i

r

+ protočno zbrajalo

grupa od četiri rezultata tijekom jedne periode signala vremenskog vođenja

a)

b)

SI. 15.15. Jednotračna i višetračna izvedba vektorske operacije

Kako se vektorska obrada odražava na performansu procesora? Performansa takva procesora ovisi o mnogo faktora, na primjer o: i) razini "vektorizacije" programa - koliki dio od ukupne obrade može biti izveden vektorskim 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:

1

5 =

Q-f)+f/k gdje je f dio vektoriziranog koda, a k brzina vektorske jedinice u odnosu na skalarnu jedini cu. k je funkcija duljine vektora i tipa operacije. Slika 15.16 prikazuje faktor ubrzanja s za k = 20 i 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čnosti (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: dohvati skalar s i pohrani ga u floating-point registar fO Id fO, $sp gornja adresa lokacije na kojoj se nalazi vektor x addi r4, $s0, #512 opet: Id f2,0($s0) dohvati x(i) mul f2, f0, f2 s x x(i) Id f4,0($s1) dohvati y(i) add f4,f2J4 s x x(i) + y(i) st f4,0($s1) pohrani rezultat na y(i) addi $s0, $s0, #8 inkrementiraj indeks za x addi $s1,$s1,#8 inkrementiraj indeks za y

sub bne

$t0,r4,$s0 $tO, $zero, opet

; izračunaj granicu ; provjeri je li sve obavljeno

(Opaska: adresna zrnatost memorije je bajtna, zato je gornja granica 512, tj. 64 x 8, gdje je 64 broj komponenti vektora, a svaka je njegova komponenta duljine 8 bajtova.) Programski odsječak za vektorskiprocesor izgleda ovako: ; dohvati skalar s i pohrani ga u floating-point registar fO f0, $sp Id ; dohvati vektor x i pohrani ga u vektorski registar v i Idv v1,0($s0) v2, vi, fO ; množenje vektora x sa skalarom s mulvs ; dohvati vektor y i pohrani ga u vektorski registar v3 Idv v3,0($s1) addv v4, v2, v3 ; pribroji y produktu sx ; pohrani rezultat stv v4,0($sV Zanimljiva je usporedba gornjih programskih 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 instrukcija mora čekati na mul instrukciju te svaka st instrukcija mora čekati na add instrukciju. Za vektorski će procesor svaka vektorska instrukcija biti u zastoju samo za prvi element svakog od vektora, tako da će ostali elementi glatko protjecati kroz protočnu strukturu. Zamisao vektorske obrade stara je više od pedeset godina. Prva vektorska superračunala 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 procesorima koji se rabe u multimedijskim aplikacijama (procesori s instrukcijskim podskupovima MMX, SSE, AltiVec) i procesorima namijenjenim igraćim konzolama. Razvoj tehnologije visokog stupnja integracije (VLSI) omogućio je izvedbe vektorskih mikroprocesora - vektorskih 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 tokova (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,

S. RIBARIČ - GRAĐA RAČUNALA

497 I

Berkeley. Vektorski mikroprocesor ima DRAM kapaciteta 96 MB (800 milijuna tranzistora), 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 operacije (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 M I M D SUSTAVI MIMD arhitektura obilježena je višestrukim instrukcijskim tokom i višestrukim tokom podataka. Svaki od procesora pribavlja i izvršava svoje vlastite instrukcije na svojim podacima. 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 adresnim 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, odnosno 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, procesori 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 multiprocesorski sustav s dijeljenom memorijom SMP (engl. symmetric shared-memory multiprocessor) - 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).

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šezadać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 memorija naziva lokalna ili privatna memorija. Zbirka svih lokalnih memorija oblikuje globalni adresni prostor kojem mogu pristupiti svi procesori u sustavu. Zbog takve organizacije memorije razlikujemo dvije vrste pristupa memoriji: • brzi pristup memoriji (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 prospojnu mrežu. Multiprocesorski sustavi oblikovani u skladu s modelom NUMA imaju veliki broj procesora, 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).

S. RIBARIČ - GRAĐA RAČUNALA

procesor & priručna memorija

lokalna memorija

procesor & priručna memorija

U/l podsustav

lokalna memorija

499 I

procesor & priručna memorija

U/l podsustav

lokalna memorija

U/l podsustav

lokalna memorija

U/l podsustav

prospojna mreža

lokalna memorija

U/l podsustav

lokalna memorija

U/l podsustav

iz

iz

procesor & priručna memorija

procesor & priručna memorija

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 memorije, 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 multiprocesorski 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 priruč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

500

15. POGLAVLJE: VIŠEPROCESORSKI SUSTAVI,VIŠEJEZGREN!I GRAFIČKI PROCESORI

se i nazivaju sustavi s dijeljenom memorijom). U sustavima temeljenim na NUMA modelu 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 sustave 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šejezgrenom 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 multiprocesorski 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 procesora. 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 memoriji, 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 „pohranjivanje-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 memorijama 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

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 memoriju. 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 pohranjenu 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 procesora 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 programa 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 pohranu u priručne memorije i njima procesori jedino mogu pristupiti tako da pristupe središ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 sustavima 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 temelje 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šerazinskom) 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 pisanju. 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 upisivanja podataka u te dijeljene blokove podataka. Naravno, koherencija podataka u multiprocesorskom sustavu zahtijeva da bilo koji procesor koji koristi dijeljeni blok podataka i kada čita podatak mora čitati njegovu novu vrijednost (onu nakon operacije upisivanja). Snooping protokol mora, na temelju nadgledanja sabirnice kojom se i ostvaruju prijenosi dijeljenih blokova podataka između središnje dijeljene memorije i priručne memorije, locirati sve priručne memorije koje dijele taj podatak koji će se upisati. Posljedica upisivanja (promjene) dijeljenog podatka može biti dvojaka (ovisno o vrsti protokola) - 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. writeinvalidate) 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).

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 podataka 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 zajednič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 promjene, 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 sustavu 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 prospojna 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). P3

O X

4

i.

T

r X

*

4

/•V

s/

T

c3

prospojna mreža / zajednička sabirnica

X memorija (središnja dijeljena memorija)

SI. 15.20 Važeće kopije bloka podataka X nalaze se središnjoj dijeljenoj memoriji i u priručnim memorijama C^ C 2 i C 4

8

Pretpostavimo da je procesor P1 promijenio podatak u bloku X (promijenjeni sadržaj bloka 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).

2

3

"TV

X'

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. p,

p2

5 >



X'

X'

p3

p*

...

o

p8 o

c

X

O prospojna mreža / zajednička sabirnica

X' memorija (središnja dijeljena memorija)

SI. 15.22 Stanje nakon operacije koja odgovara snooping protokolu "piši i obnovi"

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 jednoprocesorskim 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 - događ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 drugi 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 podataka, 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 sabirnici. Pretpostavimo sada da procesor P2 upisuje podatak u svojoj kopiji bloka (bloka koji ima status dijeljenog bloka S). On će na sabirnicu postaviti signal kojim će obavijestiti ostale procesore da je kopija bloka podataka koji i oni posjeduju 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 dijeljenoj 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 kopiranja 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 proglasiti 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 dodjele 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 memorija s informacijom u kojim se priručnim memorijama nalaze kopije blokova podataka.

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 zahtjev 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 pravo na promjenu podatka mora poslati poruku svim dugim procesorima koji također koriste 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 procesoru 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 "kopiranjem 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.

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 osnovnom 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 - sinkronizacija 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 uvjetovana 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 proces 7: ldr1,D addirl, 7 str1,D

proces 2: IdrZD addi r2,2 st r2f D

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',

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. locking)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 pretpostavku 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, pretpostavimo 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 konzumira 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 procesa 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

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 testand-set primitiva, fetch-and-add primitiva, semafora; ii) sinkronizacija na temelju prosljeđivanja poruka. Prvi mehanizam sinkronizacije pogodan je i zato prevladava u multiprocesorskim sustavima sa središnjom dijeljenom memorijom UMA, dok se drugi koristi u multiprocesorskim sustavima s porazdijeljenom memorijom NUMA.

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 uvodnom dijelu ovog poglavlja vidjeli, podrazumijeva da se više dretvi izvodi u jednom procesoru 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 procesori.) 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 potrebno 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 konteksta 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 zastoj 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 instrukcija ILP, ali i sa superskalarnosti (višestrukim protočnim strukturama u jednom procesoru). 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 instrukcija koje pripadaju istoj dretvi sve do trenutka kada nastupi dulji zastoj, u tom se trenutku prospaja kontekst dretvi i nastavlja se s izvođenjem druge dretve.

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 eliminiraju 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 razini u kombinaciji s izdavanjem više instrukcija u jednoj periodi signala vremenskog vođenja. 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 arhitekture 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ćuju 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 kvadrat 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 ogranič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 iskoriš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 podrž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

S. RIBARIČ - GRAĐA RAČUNALA

511 I

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 dretve. 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. p r i k l j u č a k za i z d a v a n j e i n s t r u k c i j e • superskalarni procesor

a> *o o > o o> c

MT

• ••• | •• | • • • • | • • •• | • • • • • •| •• | • •• •• • •• • • • • • •

SMT

1 1

10 O

visejezgreni procesor

NJ X

00

jezgra spare

jezgra spare

jezgra spare

jezgra spare

jezgra spare

jezgra spare

jezgra spare

jezgra spare

8KB L1

8KB L1

8KB LI

8KB LI

8KB

fD

8KB L1

8KB L1

8KB L1

O)

o o fcD n o -*

OJ CO c 3 c r+ —x Q J

LI

prospojna mreža crossbar

90 GB/s (piši skroz)

179 GB/s

4 MB

to

3D n -NIJ

dijeljena priručna memorija L2

razdjeljnici (hub)

A-

V memorijski upravljač

Q>

NJ 21.33 GB/s (čitanje)

10.66 GB/s (pisanje)

667 MHz FBDIMM memorija

visejezgreni procesor

jezgra spare

jezgra spare

jezgra spare

jezgra spare

jezgra spare

jezgra spare

jezgra spare

jezgra spare

8KB LI

8KB LI

8KB LI

8KB LI

8KB LI

8KB L1

8KB L1

8KB L1

prospojna mreža crossbar

90 GB/s (piši skroz)

£O 0

179 GB/s

4 4 MB

dijeljena priručna memorija L2

A

V

razdjeljnici {hub)

memorijski upravljač

10.66 GB/s (pisanje)

21.33 GB/s (čitanje)

667 MHzFBDIMM memorija

FBDIMM - Fully-buffered DIMM

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 tehnologiji, 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đenja 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-jezgrenih 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 fizič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 operacije, tri FPU (zbrajalo, množilo, mješovite operacije), instrukcijsku priručnu memoriju (razina 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

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 prospojna mreža crossbar koja ostvaruje vezu između quasi-victim priručne memorije, memorijskog 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 instrukcija 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 vremenskog 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šavanje 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đivanje - 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 sastoji od dva čipa koji čine 12-jezgreni procesor tako da su oba čipa smještena u jednom pakiranju 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 memoriju 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).

LO

t o o

N

Qi <

n> 3 o IO

jezgra Opteron

jezgra Opteron

jezgra Opteron

jezgra Opteron

o n

512KB priručna memorija

512KB priručna memorija

512KB priručna memorija

512KB priručna memorija

0) (o/> fD -*

c 1 memorijski upravljač

— z ^ 10.66 GB/s

667 MHz FBDIMM memorija

V

A Vr

0 a c 1

i

2x4 GB/s

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č

"ZV

7 Y 10.66 GB/s

667 MHz FBDIMM memorija

52515.POGLAVLJE: VIŠEPROCESORSKI SUSTAVI,VIŠEJEZGREN!I GRAFIČKI PROCESORI

u

o iy>

A V

(U

U

O £

OJ i—

A

CD

N

m

QC Q Cl

V

\D

IZ

512 KB L2 512 KB L2 512 KB L2 512 KB L2 512 KB L2

m

o m E

c Č T o. t/> o

V

CL

A V

QC Q

O.

O E



3 ID

QJ n< O lQ o n

(T> i/i

o

3 CD fl) n fD 00 00

O O

1 2 3 4 5 6

CPU domaćin premosnik sistemska memorija sučelje za CPU domaćina ulazni zbirnik raspoređivanje poslova za procesore za

7 8 9 10

sjenčanje vrhova blokzarasterizaciju raspoređivanje poslova za procesore za sjenčanje slikovnih elemenata raspoređivanje računalnih poslova TPS - teksturno-procesorska nakupina

11 12 13 14 15 16

SM - tokovi multiprocesor SP - tokovni procesor tekstu rna jedinica priručna memorija dijeljena memorija procesor za rasterske operacije

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 generirajuć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 register 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 memorijskog 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 tokova 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 sabirnice. 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 vrhovima, 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 slikovnih elemenata ponovno teksturnim procesorskim nakupinama TPC za obradu slikovnih 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 istodobno 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žava 32-bitnu i 64-bitnu cjelobrojnu aritmetiku te logičke PTX (Parallel Thread execution) instrukcije. 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 priručnu memoriju (I cache), višedretvenu instrukcijsku jedinicu za pribavljanje i izdavanje instrukcija 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, dijeljenu memoriju (slika 15.37). Višedretvena instrukcijska jedinica za pribavljanje i izdavanje 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

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.

SP

SP

SP

SP

; SP

SP

SP

SP

SP

SP

SP

SP

\ sp

1 2 3 4

upravljač geometrijskih operacija upravljač tokovnih m u Iti procesora teksturna jedinica dijeljena memorija

5 6 7 8

SP :

instrukcijska priručna memorija višedretvena instrukcijska jedinica priručna memorija teksturne jedinice specijalna jedinica za transcedentne funkcije

SI. 15.36 Tekstumo-procesorska nakupina TPC

1

instrukcijska priručna memorija višedretvena instrukcijska jedinica dijeljena memorija specijalna jedinica za transcedentne funkcije priručna ispisna memorija

SI. 15.37 Tokovni multiprocesorSM

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 interpolaciju 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.

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 arhitekturi jer se i ovdje jedna instrukcija primjenjuje na višestrukom toku podataka. No postoji 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 organizirani 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 aritmetič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-bitnih 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 memorija 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 procesor AMD Radeon HD 6990 s 2 x 1536 tokovnih procesora!), S3 Graphics, VlATechnologies i Matrox.

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.

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.

S. RIBARIČ - GRAĐA RAČUNALA

535 I

F. Schmidt, The SCSI Bus and IDE Interface, Protocols, Applications and Programming, AddisonWesley, 1995. T. Shanely, D. Anderson, ISA System Architecure, Addisson-Wesley Pub. Company, Reaading, 1995. S. Schneider, J-S. Yeom, D. S. Nikolopoulos, Programming Multiprocessors with Explicitly Managed Memory Hierarchies, IEEE Computer, December 2009., str. 28 - 34. D. Sima,T. Fountain, P. Kacsuk, Advanced Computer Architectures, A Design Space Approach, Addison-Wesley, Harlow, 1997. A. C. Sodan, J. Machina, A. Deshmeh, K. Macnaughton, B. Esbaugh, Parallelism via Multithread and Multicore CPUs, IEEE Computer, March 2010., str. 24-32. W. Stallings, Computer Organization and Architecture, Designing for Performance, Prentice Hall, Upper Saddle River, 1996. A. S.Tanenbaum, Structured Computer Organization, Prentice-Hall Int., Upper Saddle River, 1999. A. S.Tanenbaum, A. S. Woodhull, Operating Systems, Design and Implementation, PrenticeHall Int., Upper Saddle River, 1997. J.Torrellas, Architecture for Extreme Scale Computing, IEEE Computer, November, 2009., str. 28-35. W. A.Triebel, A. Singh,The 68000 Microprocessor, Architecture, Software, an Interfacing Techniques, Prentice-Hall, Englewood Cliffs, 1986. S.Turk, Arhitektura i organizacija digitalnih računala, Školska knjiga, Zagreb, 1988.

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

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

S. RIBARIČ - GRAĐA RAČUNALA

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

539 I

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

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

S. RIBARIČ - GRAĐA RAČUNALA

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

541 I

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

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

Knjiga Građa računala - arhitektura i organizacija računarskih sustava bavi se digitalnim 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 znanstveno područje koje je izloženo v r l o brzim i učestalim tehnološkim promjenama. Zamisli i osnovni koncepti u knjizi predstavljeni su na način koji može osigurati razumijevanje, oblikovanje 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 arhitekture računarskih sustava koji su vremenski nepromjenjivi i u velikoj mjeri ne ovise o burnom razvoju tehnologije vrlo visokog stupnja integracije (VLSI - Very Large Scale integration). Osim temeljnih zamisli i arhitektonskih koncepata, knjiga sadržava podrobne opise višeprocesorskih i paralelnih sustava, superskalarnih procesora, višedretvenih i simultano višedretvenih arhitektura procesora, višejezgrenih procesora te opise multiprocesorskih grafičkih jedinica. Brojni primjeri i analize slučaja kojima se ilustriraju pojedini arhitektonski koncepti omogućit će čitateljima lakše razumijevanje i savladavanje gradiva. Knjiga je plod dugogodišnjih predavanja o arhitekturi 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 fakultetu Sveučilišta u Osijeku te Fakultetu elektrotehnike. 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 srodnim fakultetima, međutim, neka poglavlja nude gradivo koje se može obrađivati u srednjim školama informatičkog i elektrotehničkog usmjerenja.

www.racunarstvo.hr

ISBN 978-953-322-07 RAČUNARSTVO visoka škola

ALGEBRA GRUPA

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF