Skripta iz Arhitekture i organizacije računara (radna verzija) Nikola Milosavljević Prirodno-matematički fakultet, Univerzitet u Nišu Departman za računarske nauke e-mail: nikola5000@gmail.com Niš, Novembar 2014.
Sadržaj 1 Ocena performansi 2 1.1 Teorija............................................ 2 1.2 Zadaci............................................ 4 1.3 Rešenja........................................... 6 2 Glavna memorija i keš memorija 9 2.1 Teorija............................................ 9 2.2 Zadaci............................................ 11 2.3 Rešenja........................................... 13 3 Sekundarna memorija i organizacija ulaza/izlaza 18 3.1 Teorija............................................ 18 3.2 Zadaci............................................ 20 3.3 Rešenja........................................... 22 4 MIPS 25 4.1 Teorija............................................ 25 4.2 Zadaci............................................ 26 4.3 Rešenja........................................... 28 5 Hazardi, protočnost i adresiranje 36 5.1 Teorija............................................ 36 5.2 Zadaci............................................ 38 5.3 Rešenja........................................... 39 6 Mikroprocesor Intel 8086 41 6.1 Teorija............................................ 41 6.2 Zadaci............................................ 42 6.3 Rešenja........................................... 43 1
Glava 1 Ocena performansi 1.1 Teorija Svi procesori (kao konačni automati) izvršavaju instrukcije u diskretnim vremenskim intervalima na osnovu impulsa koje generiše specijalno elektronsko kolo - sat. Radni takt (frekvencija) procesora je učestalost tih impulsa i meri se u Hercima (Hz 1 ). Na primer, ukoliko je radni takt nekog procesora 2.8 GHz, to znači da njegov sat svake sekunde generiše 2.8 10 9 taktnih intervala 1 (ciklusa) pri čemu svaki od njih traje sekundi. Radni takt procesora R označavaćemo sa 2.8 10 9 f R a dužinu njegovog taktnog intervala sa t R. Jasno je da važi t R = 1 f R. (1.1) Program (za neki procesor) dužine N je niz od N instrukcija (naredbi) - I 1, I 2,..., I N. Za svaku instrukciju je karakteristična mera CP I (cycles per instruction) - broj ciklusa (radnih taktova) koji su potrebni da bi se data instrukcija izvršila. CP I za i-tu instrukciju ćemo označavati sa cpi i. Skup svih mogućih instrukcija je konačan i može se podeliti na klase (tipove) koje se sastoje od srodnih instrukcija. Na primer, klase mogu biti: Load/Store instrukcije, Addi/Subi instrukcije, logičke instrukcije... Pretpostavimo da je dati skup instrukcija podeljen u K klasa. Neka se neki program P sastoji od N instrukcija ovog skupa, pri čemu njih k 1 pripada klasi 1, k 2 pripada klasi 2,..., k K pripada klasi K (k 1 + k 2 +... + k K = N). Za i-tu klasu (i {1, 2,..., K}) koristimo sledeće oznake: CP I i - prosečan broj taktnih intervala (CP I) potreban za izvršavanje instrukcije iz ove klase. IF i (instruction frequency) - procenat instrukcija iz klase i u odnosu na ukupan broj instrukcija 2. Ovaj broj je jednak k i N. CP I prosečne instrukcije datog programa P dužine N, u oznaci CP I avg, predstavlja aritmetičku sredinu CP I vrednosti svih instrukcija: CP I avg = cpi 1 + cpi 2 +... + cpi N N = K IF i CP I i (1.2) i=1 Označimo vreme izvršavanja prethodnog programa P na nekom fiksiranom procesoru R sa T R (P ). Ova vrednost je jednaka prozivodu ukupnog broja taktnih intervala potrebnih za izvršavanje 1 Podsetimo se da je 1Hz = 1s 1 gde je s (sekunda) osnovna jedinica SI sistema. 2 Obratiti pažnju da u nekim literaturama ova oznaka označava broj instrukcija (k i) a ne procenat. 2
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 3 svih instrukcija programa P i dužine trajanja jednog taktnog intervala 3. Koristeći ranije oznake, dobijamo nekoliko različitih formula: T R (P ) = N K cpi i t R = N IF i CP I i t R = N CP I avg t R. (1.3) i=1 i=1 Primetimo da definicija broja CP I avg služi za pojednostavljivanje: možemo zamisliti da se program P sastoji od N identičnih instrukcija čiji je CP I jednak CP I avg i njegovo vreme izvršavanja će ostati isto. MIPS (million instructions per second) je mera koja se često koristi za predstavljanje brzine računara i označava koliko miliona prosečnih instrukcija dati računar može izvršiti u sekundi. Za dati računar R važi MIP S R = f R CP I avg 10 6 = 1 CP I avg t R 10 6. (1.4) Primetimo da je za računanje MIPS-a potrebno imati podatak o CP I avg tj. znati šta je prosečna instrukcija. Zbog toga ova mera zavisi ili od datog programa (u odnosu na koji definišemo prosečnu instrukciju) ili od unapred zadate raspodele instrukcija datog skupa. Izvršavanje nekog programa P na mašini R se može ubrzati poboljšanjem nekog dela mašine ili poboljšanjem nekog dela programa. Posmatrajući poslednji deo jednačine (1.3) ubrzanje možemo postići optimizovanjem programa (smanjivanjem dužine N), boljom implementacijom seta instrukcija (smanjivanjem CP I avg ) kao i povećanjem radnog takta (tj. smanjivanjem t R ). Ukoliko je T old vreme izvršavanja programa P na mašini R pre poboljšanja a T new vreme izvršavanja posle poboljšanja (programa i/ili mašine), tada ubrzanje definišemo kao S = T old T new. (1.5) Većina programa sadrže delove koji se mogu ubrzati (usavršiti) i delove koji se ne mogu ubrzati. Označimo sa F upg deo datog programa P koji se može ubrzati (npr. F upg = 0.25 označava da se 25% programa može ubrzati) a ubrzanje tog dela programa sa S upg. Tada za novo i staro vreme izvršavanja ovog programa važi T new = T old (1 F upg ) + T old S upg F upg odakle dobijamo formulu za ubrzanje programa 4 : 1 S =. (1.6) (1 F upg ) + Fupg S upg Jako je bitno napomenuti da se u prethodnom razmatranju (poslednje dve jednačine) podrazumeva da je brzina delova programa proporcionalna njihovoj veličini - npr. 25% programa P troši 25% od ukupnog vremena (T old ). Ukoliko to nije slučaj 5 tada pod F upg podrazumevamo vremenski deo programa. Primer: instrukcije množenja čine 30% programa (npr. 300 od 1000 instrukcija su instrukcije množenja) ali se na ove instrukcije troši 80% vremena celog programa; ako se množenje može ubrzati, tada je F upg = 0.8 a ne 0.3. 3 Ovde podrazumevamo (i podrazumevaćemo ukoliko nije drugačije naglašeno) da nema praznih taktnih intervala izmed u instrukcija, da se instrukcija izvršava tokom uzastopnih taktnik intervala i da nema nikakve paralelizacije. 4 Ova formula predstavlja specijalan slučaj Amdahl-ovog zakona koji se odnosi na ubrzanje koristeći paralelizaciju. 5 A često nije, npr. ako neki program čini 50% celobrojnih i 50% float-point instrukcija, tada će se za float-point instrukcije potrošiti znatno više od 50% vremena za izvršavanje celog programa.
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 4 1.2 Zadaci Zadatak 1. Za izvršavanje neke instrukcije potrebno je 5 ciklusa na računaru R. Ako je njegov radni takt 2 GHz, za koje vreme će se pomenuta instrukcija izvršiti? Zadatak 2. Data su dva računara, R 1 čija je dužina taktnog intervala t 1 = 1ns i R 2 čija je dužina taktnog intervala t 2 = 2ns. Obe mašine poseduju isti skup naredbi ali im je arhitektura različita. Poznato je da je za dati program P, CP I prosečne instrukcije na računaru R 1 jednak CP I 1 = 2.0 a na računaru R 2 je ova vrednost CP I 2 = 1.2. Koja mašina brže izvršava program P i za koliko? Zadatak 3. Dužina trajanja taktnog intervala nekog računara je 10 ns, dok je skup njegovih instrukcija i njihova učestanost (dobijena na osnovu neke statistkike) data u Tabeli 1.1. Odredititi CP I prosečne instrukcije i MIP S datog računara. Tip (klasa) instrukcije Učestanost (IF ) u procentima Broj taktnih intervala po instrukciji (CP I) Load i Store 30,4 1,5 Addi i Subbi 10,0 1 Muli i Divi 3,8 10 Addf i Subbf 9,5 7 Mulf i Divf 6,5 15 Logičke 3,0 1 Branch 20,0 1,5 Compare, Shift 16,8 2 Tabela 1.1: Skup instrukcija i njihova učestanost za Zadatak 3. Zadatak 4. Neka se program P izvršava na računaru R 1 za 10 s pri čemu je taktna frekvencija R 1 jednaka 400 MHz. Projektantima je postavljen cilj da konstruišu računar R 2 koji će izvršavati isti program za 6 s. Analizom je utvrd eno da je moguće povećati taktnu frekvenciju ali to povećanje ima za posledicu da je novom računaru R 2 potrebno 1,2 puta više taktnih intervala za izvršenje programa P u odnosu na računar R 1. Odrediti taktnu frekvenciju računara R 2. Zadatak 5. Skup instrukcija neke arhitekture se može podeliti u 3 klase, A, B i C pri čemu su odgovarajuće vrednosti CP I za svaku klasu jednake CP I A = 1, CP I B = 2 i CP I C = 3. Na raspolaganju imamo dve kodne sekvence (programa) P 1 i P 2. Znamo da se P 1 sastoji od 2 instrukcije iz klase A, 1 instrukcije iz klase B i 2 instrukcije iz klase C, dok se P 2 sastoji iz 4 instrukcije iz klase A, 1 instrukcije iz klase B i 1 instrukcije iz klase C. Odrediti: a) Koji program izvršava veći broj instrukcija? b) Koji program je brži? c) Koliki je CP I prosečne instrukcije za svaki program? Zadatak 6. Data su dva računara, R 1 čija je radni takt 500 MHz i R 2 čiji je radni takt 750 MHz. Obe mašine poseduju isti skup instrukcija ali im je arhitektura različita. Dati skup instrukcija se može podeliti u 4 klase, A, B, C i D; CP I vrednosti za svaku klasu na svakoj od mašina su prikazane u Tabeli 1.2. Ako program P sadži podjednak broj instrukcija iz svake klase, odrediti koja mašina (i koliko puta) će brže izvršiti program P.
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 5 Klasa instrukcije CP I na mašini R 1 CP I na mašini R 2 A 1 2 B 2 2 C 3 4 D 4 4 Tabela 1.2: CP I vrednosti mašina R 1 i R 2 za svaku od klasa A, B, C i D za Zadatak 6. Zadatak 7. Dužina trajanja taktnog intervala nekog CPU-a je 20 ns i na njemu se izvršava program P u kome svaka instrukcija ima isti CP I. Ovom procesoru je moguće redukovati dužinu trajanja taktnog intervala na 18 ns ali po ceni da se broj taktnih intervala potreban za izvršenje instrukcije I, koja čini 2% programa P, poveća 5 puta. Da li će modifikovani CPU brže izvršavati program P? Zadatak 8. Poznato je da se 40% programa P može usavršiti tako da se taj usavršeni deo izvršava 10 puta brže od originalnog. Koliko je ubrzanje posle poboljšanja? Zadatak 9. Program P se na nekoj mašini izvršava za 100s, pri čemu se na za operaciju množenja (u tom programu) troši 80s od tog vremena. Koliko puta treba ubrzati množenje da bi se ceo program P izvršavao 5 puta brže? Zadatak 10. Program P se izvršava na procesoru čija je taktna frekvencija 300 MHz. Klase instrukcije ovog procesora, CP I za svaku od njih i učestanost svake od njih u programu P date su u Tabeli 1.3. Tip (klasa) instrukcije Učestanost (IF ) u procentima Broj taktnih intervala po instrukciji (CP I) Aritmetičko/logičke 40 1 Load 20 1 Store 10 2 Branches 20 3 Floating point 10 5 Tabela 1.3: Skup instrukcija i njihova učestanost za Zadatak 10. a) Odrediti CP I prosečne instrukcije i MIP S datog procesora. b) Ako optimizator eliminiše 30% aritmetičko/logičkih instrukcija (tj. 12% svih instrukcija), 30% Load instrukcija i 20% floating-point instrukcija, odrediti ubrzanje koje se može postići izvršavanjem optimizovanog programa na datom procesoru. c) Odrediti CP I prosečne instrukcije i M IP S datog procesora za optimizovanu verziju programa i uporediti sa vrednostima dobijenim za neoptimizovanu verziju. Koje vrednosti su bolje?
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 6 1.3 Rešenja 1. Za izvršenje je potrebno 5 t R = 5 f R = 5 2 10 9 s 1 = 2.5 ns. 2. Kako je skup naredbi isti, dužina programa na oba računara je ista - označimo je sa n. Tada je vreme izvršavanja programa P na prvom računaru jednako T 1 = n CP I 1 t 1 a na drugom računaru T 2 = n CP I 2 t 2. Kako je T 2 = n CP I 2 t 2 = 2 1.2 T 1 n CP I 1 t 1 1 2 = 1.2 sledi da je R 1 1.2 puta brži od R 2. 3. CP I prosečne instrukcije odred ujemo na osnovu jednačine (1.2), pri čemu imamo K = 8 klasa instrukcija: CP I avg = 0.304 1.5 + 0.1 1 + 0.038 10 + 0.095 7 + 0.065 15 + 0.03 1 + 0.2 1.5 + 0.168 2 = 3.242 Sada brzinu računamo po formuli (1.4) kao MIP S = 1 CP I avg t 10 6 = 30.845. Dakle, ovaj računar izvršava 30.845 miliona prosečnih instrukcija (koje traju 3.242 ciklusa) u sekundi. 4. Na računaru R 1 se program izvršavao T 1 = 10s a zahteva se da se na računaru R 2 ovaj program izvršava za T 2 = 6s. Ukoliko sa N 1 i N 2, označimo ukupan broj taktnih intervala potrebnih da se P izvrši na R 1 i R 2, redom 6, a sa f 1 i f 2 frekvencije računara R 1 i R 2, redom, tada imamo: T 1 = N 1 f 1 T 2 = 1.2 N 1 f 2 Zamenom N 1 iz prve jednačine u drugu (ili direktnim izračunavanjem vrednosti N 1 ) dobijamo f 2 = 1.2 N 1 T 2 = 1.2 f 1 T 1 T 2 = 800 MHz 5. Program P 1 izvršava 2 + 1 + 2 = 5 instrukcija a probram P 2 izvršava 4 + 1 + 1 =6 instrukcija. Dakle, odgovor pod a) je P 2. Za izvršavanje P 1 je potrebno 2 1 + 1 2 + 2 3 = 10 taktnih intervala dok je za izvršavanje P 2 potrebno 4 1+1 2+1 3 = 9 taktnih intervala. Kako je vreme izvršavanja direktno proporcionalno ukupnom broju taktnih intervala, sledi da je P 2 brži od P 1 što daje odgovor na b). Odgovarajući CP I prosečne instrukcije za ove programe su CP I 1 = 1+1+2+3+3 5 = 10 5 = 2 i CP I 2 = 1+1+1+1+2+3 6 = 9 6 = 1.5, što daje odgovor pod c). Obratiti pažnju da je P 2 brži od P 1 iako ima veći broj instrukcija - kao što je pomenuto, broj instrukcija nije jedina mera brzine programa. 6 Dakle N 1 i N 2 predstavljaju sumu svih cpi-ova, tj. m i=1 cpii gde je m ukupan broj instrukcija programa. Zato za računanje vremena možemo koristiti prvu formulu iz (1.3).
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 7 6. Kako program P sadrži podjednak broj instrukcija iz svake klase, sledi da je frekventnost (IF ) svake klase jednaka 7 0.25. Dakle, CP I prosečne instrukcije za svaku od mašina je CP I avg (R 1 ) = 0.25 1 + 0.25 2 + 0.25 3 + 0.25 4 = 2.5 CP I avg (R 2 ) = 0.25 2 + 0.25 2 + 0.25 4 + 0.25 4 = 3 Ako dužinu programa označimo sa N, tada je odnos vremena potreban da se program izvrši na ove dve mašine jednak 1 T R1 (P ) N CP I avg(r 1 ) T R2 (P ) = 1 N CP I avg (R 2 ) f R1 f R2 = CP I avg(r 1 ) f R2 CP I avg (R 2 ) f R1 = 1.25 tj. R 2 će 1.25 puta brže izvršiti program P od R 1. 7. Neka je N dužina programa P, neka su t 1 i t 2 dužine trajanja taktnog intervala početnog i modifikovanog CPU-a, redom i neka je c vrednost CP I-a instrukcija početnog CPU-a. Tada je c ujedno i CP I avg za P na početnom CPU-u (jer je CP I svih instrukcija isti). Med utim, na modifikovanom CP I-u, 2% instrukcija uzima 5 puta više taktnih intervala (5c) pa je na njemu CP I avg za P jednak 0.98 c + 0.02 5c = 1.08c. je Dakle, odnos vremena izvršavanja programa P na modifikovanom i nemodifikovanom računaru T old T new = N c t 1 N 1.08c t 2 = t 1 1.08t 2 = 20 19.44 pa kako je 20 > 19.44, sledi da je (za dati program P ) modifikovani CP U bolji. 8. Koristeći oznake iz (1.5), imamo da je F upg = 0.4 i S upg = 10 pa direktnom zamenom u (1.5) 1 dobijamo da je ubrzanje posle poboljšanja jednako = 1.5625. 0.6+ 0.4 10 Naravno, ovo smo mogli i koristeći postupak kojim smo dobili formulu (1.5): 60% programa će se izvršavati starom brzinom a 40% će se izvršavati 10 puta brže, tj. novo vreme izvršavanja je jednako T new = 0.6T old + 0.4 T old 10 = 0.64T old odnosno, ubrazanje je jednako T old T new = 1 0.64 = 1.5625. 9. Na osnovu podataka iz zadatka, na operaciju koju je moguće usavršiti (množenje) odlazi 80% procesorskog vremena, tj. F upg = 0.8. Traži se ubrzanje S = 5 pa nepoznatu vrednost S upg odred ujemo iz formule (1.5): 1 5 = 0.2 + 0.8. S upg 4 Posle skraćivanja imenioca i prebacivanja na drugu stranu dobijamo S upgr = 0 što je nemoguće (tj. potrebno je beskonavčno puta ubrzati operaciju množenja da bismo dobili 5 puta brži kod). Dakle, program P se, pri ovim ograničenjima, ne može nikako izvršavati 5 puta brže 8. 10. Koristeći formule (1.2) i (1.4) jednostavno dobijamo odgovor pod a): CP I avg = 0.4 1 + 0.2 1 + 0.1 2 + 0.2 3 + 0.1 5 = 1.9 7 Tj. dovoljno je uzeti običnu aritmetičku sredinu CP I-a svih klasa. 8 Nije teško zaključiti da ako nismo u mogućnosti da ubrzamo ceo program, tada je konačno ubrzanje koje možemo postići ograničeno odozgo nekom konstantom koja zavisi od F upg.
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 8 MIP S = 300 106 1.9 10 6 = 157.9 miliona instrukcija u sekundi Neka je N ukupan broj instrukcija. Tada je ukupan broj taktnih intervala jednak N 5 i=1 IF i CP I i = N CP I avg (imamo 5 klasa instrukcija). Prilikom optimizacije, gubimo odred eni broj taktnih intervala jer eliminišemo instrukcije. Posle optimizacije gubimo N 0.4 0.3 1 taktnih intervala zbog aritmetičko logičkih operacija (izabacujemo 30% od 40% od N instrukcija koje troše po 1 ciklus), N 0.2 0.3 1 taktnih intervala zbog load instrukcija i N 0.1 0.2 5 taktnih intervala zbog floating-pint instrukcija. Prema tome, posle optimizacije ukupno imamo N (CP I avg 0.4 0.3 1 0.2 0.3 1 0.1 0.2 5) taktnih intervala, ubrzanje je jednako T old T new = što daje odgovor pod b). N CP I avg t N (CP I avg 0.4 0.3 1 0.2 0.3 1 0.1 0.2 5) t = 1.17 Kako se optimizacijom gubi 20% instrukcija (0.3 0.4 + 0.3 0.2 + 0.2 0.1 = 0.2), potrebno je odrediti nove vrednosti IF -ova 9. Ovo radimo tako što za svaku instrukciju odred ujemo novi procenat prilikom eventualnog uklanjanja i dobijenu vrednost delimo sa 80% preostalih instrukcija, tj. sa 0.8. Dakle, nove vrednosti IF -a su: za aritmeticko/logicke instrukcije 0.4 (1 0.3) 0.8 = 0.35, za Load instrukcije 0.2 (1 0.3) 0.8 = 0.175, za Store instrukcije 0.1 0.8 = 0.125, za Branches instrukcije 0.2 0.8 = 0.25 i za Floating-point instrukcije 0.1 (1 0.2) 0.8 = 0.1. Kako (naravno) ne dolazi do promene ciklusa po instrukciji, lako dobijamo vrednosti CP I avg i MIP S za optimizovani program kao što se i traži u delu c). CP I avg = 0.35 1 + 0.175 1 + 0.125 2 + 0.25 3 + 0.1 5 = 2.025 MIP S 300 106 = 10 6 = 148.1 miliona instrukcija u sekundi 2.025 Komentar: Obratiti pažnju da je MIPS optimizovanog programa manji od MIPS-a početnog (neoptimizovanog) što naizgled zvuči malo čudno. Med utim, podsetimo se da nam program u računanju brzine samo predstavlja uzorak instrukcija na osnovu kojih mi odred ujemo šta je to prosečna instrukcija; MIPS jednostavno predstavlja koliko se tih prosečnih instrukcija izvršava u sekudni. Mi smo iz početnog programa izbacili puno instrukcija koje traju mali broj ciklusa i znatno manje instrukcija koje troše veći broj ciklusa pa se zbog toga CP I avg povećao, odnosno MIP S smanjio. Kako smo onda u delu b) dobili da nam ova promena daje ubrzanje? Zato što se ubrzanje definiše preko vremena izvršavanja programa koje je, uz oznake iz formule (1.2), jednako N CP I avg t; mi jesmo povećali CP I avg ali smo skratili čak 20% programa (smanjili N) i rezultujuće vreme je na kraju ispalo bolje (kraće). 9 Npr. ako se neki program sastoji od 50% instrukcija tipa Load i 50% instrukcija tipa Store, ako uklonimo 30% Load instrukcija tada novi program ima više Store instrukcija, tj. odnos više nije 50-50.
Glava 2 Glavna memorija i keš memorija 2.1 Teorija Memorija je deo računarskog sistema u kome se čuvaju programi i podaci. Sastoji se od niza memorijskih lokacija koje se sastoje od istog broja ćelija - bitova; ukupan broj ćelija predstavlja kapacitet memorije. Veličina (obim, dužina) memorijske lokacije zavisi od arhitekture računara i uglavnom je 1 bajt (byte-addressable računari) ili je jednaka dužini procesorske reči (word-addressable računari) što je uglavnom 2, 4 ili 8 bajtova 1. Svakoj memorijskoj lokaciji je pridružen jedinstven broj koji predstavlja njenu adresu - ukoliko imamo N memorijskih lokacija, njihove adrese su 0, 1,..., N 1 gde uzastopni brojevi odgovaraju uzastopnim lokacijama u nizu. Kako se brojevi u računaru predstavljaju u binarnom obliku, za adresiranje N lokacija je potrebno bar log 2 N bitova. Napomena: Kod svih modernih računara su veličine poput broja memorijskih lokacija, dužine reči itd. stepeni broja 2; zbog toga ćemo takve veličine označavati velikim slovom engleskog alfabeta a podrazumevaćemo da im je logaritam za osnovu 2 odgovarajuće malo slovo. Npr. ukoliko imamo N memorijskih lokacija, podrazumevamo da je N = 2 n, tj. n = log 2 N. Sama memorija može biti podeljena u nekoliko blokova od kojih se svaki sastoji od jednakog broja uzastopnih memorijskih lokacija. U daljem tekstu pretpostavljamo da se memorija sastoji od N = 2 n memorijskih lokacija, pri čemu je veličina jedne memorijske lokacije X = 2 x bajtova. Ova memorija je podeljena na M = 2 m blokova od koji svaki sadrži W = 2 w memorijskih lokacija (M W = N odnosno m + w = n). Blokove ćemo označavati sa B 0, B 1,..., B M 1 ; veličina svakog od njih je W X bajtova. Viših m bitova n-tobitne adrese neke memorijske lokacije označavaju redni broj bloka u kome se ova lokacija nalazi (0, 1,..., M 1) dok nižih w bitova označavaju redni broj u okviru bloka ove memorijske lokacije (0, 1,..., W 1). Slika Keš memorija je brza memorija koja se nalazi izmed u procesora i glavne (sporije) memorije. Ova memorija je relativno mala (u odnosu na glavnu) i sadrži kopiju nekog dela glavne memorije. Keš se sastoji od R = 2 r linija C 1, C 2,..., C R, od kojih je svaka veličine jednog bloka glavne memorije. Kada procesor pokušava da pročita sadržaj neke memorijske lokacije, on prvo proverava da li se ta lokacija (i podatak u njoj) nalazi u kešu. Ukoliko se nalazi (keš pogodak) traženi podatak se čita iz keša; u suprotnom (keš promašaj), ceo blok iz glavne memorije koji sadrži traženu memorijsku lokaciju se učitava u keš (u neku od keš linija) a zatim se cita podatak. 1 Skoro svi moderni računari su bajt-adresibilni dok im je veličina procesorske reči 4 ili 8 bajta (32-bitni ili 64-bitni). 9
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 10 Kako je uglavnom broj keš linija R mnogo manji od broja blokova M, potrebno je odrediti u koju keš liniju će se učitati (preslikati) dati blok B i. Ova pravila nazivaju se funkcije preslikavanja; razlikujemo tri tipa ovih funkcija: Asocijativno preslikavanje: Blok B i može da se preslika u bilo koju keš liniju (zavisi od algoritma zamene). Veličina TAG polja je m = n w bitova. Direktno preslikavanje: Blok B i se slika u liniju i mod R (broj dobijen čitanjem r bitova koji su odmah ispred poslednjih w bitova). Veličina TAG polja je m r = n w r bitova. Skupno-asocijativno preslikavanje: Neka imamo V = 2 v skupova sa po K = 2 k linija (K-tostruko skupno asocijativno preslikavanje). Blok B i se slika u bilo koju keš liniju skupa i mod V (broj dobijen čitanjem v bitova koji su odmah ispred poslednjih w bitova) - zavisi od algoritma zamene. Veliǐna TAG polaj je m v = n w v bitova. Asocijativno i skupno-asocijativno preslikavanje zahtevaju dodatna pravila/kriterijume na osnovu kojih se odred uje gde se slika blok B i, tj. koji blok iz trenutno punog keša (ili skupa keš linija) će biti izbačen. Ova pravila se nazivaju algoritmi zamene; ovo su najstandardniji: LRU (Least Recently Used): Iz keša (ili skupa u kešu) se izbacuje blok kome je zadnji put pristupano najranije od svih blokova u kešu. MRU (Most Recently Used): Iz keša (ili skupa u kešu) se izbacuje blok kome je zadnji put pristupano najkasnije od svih blokova u kešu. F IF O (First In First Out): Iz keša (ili skupa u kešu) se izbacuje blok koji je ubačen u keš najranije od svih blokova u kešu. LF U (Least Frequently Used): Iz keša (ili skupa u kešu) se izbacuje blok kome se najmanje pristupalo od svih blokova u kešu. Ako imamo više blokova kojima se najmanje pristupalo, postupa se po nekom dodatnom kriterijumu. OP T (Optimal Algorithm): Iz keša (ili skupa u kešu) se izbacuje blok kome kome će se naredni put pristupati najdalje u budućnosti od svih blokova. Ovo je samo teoretksi algoritam jer zahteva poznavanje svih obraćanja kešu unapred.
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 11 2.2 Zadaci Zadatak 1. Glavnu memoriju, čiji je ukupni kapacitet 256 MB potrebno je organizovati tako da je veličina memorijske lokacije što manja. Kako to postići ukoliko za adresiranje ovih lokacija imamo na raspolaganju 25 bitova? Zadatak 2. Kapacitet glavne memorije je 16 MB. a) Ukoliko je veličina bloka 4 bajta, koliko ukupno ima blokova? b) Ukoliko je dužina memorijske lokacije 2 bajta i imamo 2 18 blokova, koliko memorijskih lokacija sadrži jedan blok? Zadatak 3. Na sistemu gde se adresira svaki bajt, obim bloka iznosi 64 bajta. Ukoliko blok sadrži podatak čija je adresa 0xBEE3DE72, odrediti adresu prvog bajta tog bloka. Zadatak 4. Koliko ima linija u kešu čiji je kapacitet 32KB ako je obim linije 128 bajta? Zadatak 5. Obim keš linije iznosi 64 bajta. Veličina memorijske lokacije je a) 1 bajt. b) 4 bajta. Koliko se bitova koristi za odred ivanje memorijske lokacije u okviru keš linije? Zadatak 6. Ako je kapacitet keš memorije 32KB a obim linije 128 bajtova (adresira se svaki bajt), koliko skupova postoji kod dvostruko, četvorostruko i osmostruko skupno asocijativnog keša? Zadatak 7. Kapacitet glavne memorije je 4 GB, dužina memorijskih lokacija koje se adresiraju 2 bajta a veličina bloka 128 bajta. Kolika je veličina TAG polja keš memorije ako a) keš koristi tehniku direktnog preslikavanja i ima 1024 linije? b) keš koristi tehniku asocijativnog preslikavanja? c) keš koristi tehniku 4-skupno-asocijativnog preslikavanja i ima 1024 linije? Zadatak 8. Četvorostruko skupno-asocijativni keš ima kapacitet od 64 KB a obim svake linije je 128 bajtova (adresira se svaki bajt). Sistem koji ima implementiran ovaj keš koristi 32-bitne adrese. Ako se svaka od navedenih adresa nalazi u kešu, odrediti redne brojeve skupova u kome će se pretraživati kao i redne brojeve adresiranih bajtova u okviru keš linije. a) 0xABC89987 b) 0x32651987 c) 0x228945DB d) 0x48569CAC Zadatak 9. Keš memorija ima stopu pogodaka od 75%. Memorijski zahtev, kada se javi keš pogodak, se kompletira za 12 ns, dok se promašaj kompletira za 100 ns. Koliko iznosi prosečno vreme pristupa keš memoriji? Zadatak 10. Memorijski sistem čini keš, glavna memorija i virtuelna memorija. Vreme pristupa kešu je 5 ns a stopa pogodaka 80%. Ukoliko se ne javi pogodak, pristupa se glavnoj memoriji čije
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 12 je vreme pristupa 100 ns a stopa pogodaka 99.5%. U slučaju da ni ovde nema pogodka, sistem se obraća virtuelnoj memoriji čije je vreme pristupa 10 ms. Koliko je prosečno vreme pristupa kod ove hijerarhije? Zadatak 11. Vreme pristupa kešu kod keš pogodka je 10 ns, dok je stopa keš promašaja 5%. Odred ena modifikacija keša rezultiraće stopi keš promašaja od 3%, alii će povećati latenciju keša kod pogodka na 15 ns. Za koje vrednosti latencije kod keš promašaja će ova modifikacija rezultirati boljim performansama (niže prosečno vreme pristupa kešu)? Zadatak 12. Asocijativni keš se sastoji od 4 keš linija. CPU pristupa blokovima u sledećem redosledu: A, B, A, C, D, E, A, C, F, A, D, E Vreme pristupa kešu je 10 ns a vreme pristupa glavnoj memoriji je 100 ns. Odrediti procenat keš pogodaka i prosečno vreme pristupa memoriji ako keš koristi a) LRU politiku zamene b) F IF O politiku zamene c) LF U politiku zamene (a u slučaju jednakosti F IF O) Zadatak 13. Računski sistem na kome se adresira svaki bajt ima dvostruko-skupno asocijativni keš (LRU politika zamene). Keš se sastoji od 8 keš linija a obim keš linije je a) 1 bajt. b) 2 bajta. CPU pristupa memorijskim lokacijama u sledećem redosledu: A 0 B 0 C 2 A 0 B 1 B 0 E 4 F 5 C 2 C 3 F 3 F 4 C 1 B 0 Indeks kod svake vrednosti predstavlja tri poslednja (LS) bita adrese memorijske lokacije. Odrediti procenat keš pogodaka i prosečno vreme pristupa memoriji ako je vreme pristupa kešu 10 ns a vreme pristupa glavnoj memoriji 60 ns. Zadatak 14. Računar ima 256 bajta glavne memorije i 8 bajta keš memorije (adresira se svaki bajt). Svaku keš liniju čine 2 bajta a keš je a) asocijativan (LRU politiku zamene) b) direktno preslikani keš. CPU pristupa sledećim meorijskim lokacijama Odrediti procenat keš pogodaka. 4, 9, 82, 255, 8, 2, 5, 164, 1, 3, 254, 0 Zadatak 15. Keš se sastoji od 4 keš linija. Odrediti procenat keš pogodaka ako se koristi optimalni algoritam (OPT) za sledću sekvencu blokova kojima pristupa CPU: A, B, A, C, D, E, A, C, F, A, D, E
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 13 2.3 Rešenja 1. Kapacitet memorije je N X, gde je N broj memorijskih lokacija a X veličina memorijske lokacije. Da bi X bilo minimalno, N mora biti što veće. Na raspolaganju imamo 25 bitova pa možemo adresirati najviše 2 25 memorijskih lokacija. Dakle, najmanja moguća veličina memorijske lokacije pri datim ograničenjima je 256 MB / 2 25 = 8 bajta. 2. a) Imamo ukupno N/W = 2 24 /4 = 2 22 blokova. b) Veličina bloka je N/M = 2 24 /2 18 = 2 6 bajtova. Kako svaka lokacija sadrži po 2 bajta, sledi da svaki blok sadrži 2 6 /2 = 2 5 memorijskih lokacija. 3. Kako se adresira svaki bajt, sledi da se blok sastoji od 64 memorijskih lokacija. Kako je adresa 32-bitna 2, poslednjih log 64 = 6 bitova predstavljaju redni broj memorijske lokacije u okviru bloka a prvih 32 6 = 26 bitova predstavljaju redni broj bloka koji sadrži datu memorijsku lokaciju. Dakle, adresa prvog bajta (lokacije) tog bloka je ona čijih je prvih 26 bitova jednako datoj adresi a poslednjih 6 su nule. 6 bitova obuhvataju jednu i po heksa cifri pa ćemo umesto zadnje dve cifre 72 = 0111 0010 imati 0100 0000 tj. 40 u heksa zapisu. Tražena adresa je dakle 0xBEE3DE40 4. Broj keš linija je 32 KB / 128 bajta = 2 8. 5. Broj memorijskih lokacija u okviru keš linije u delu a) iznosi 64/1 = 64 = 2 6 a u delu b) 64/4 = 16 = 2 4. Prema tome, za odred ivanje memorijske lokacije je potrebno a) log 2 6 = 6 bitova; b) log 2 2 4 = 4 bita. 6. Broj keš linija u kešu je R = 32 2 10 /128 = 256. k-tostruki asocijativni keš koji se sastoji od R linija sadrži R/k skupova. Prema tome, dvostruko, četvorostruko i osmostruko asocijativni keš imaju, redom, 256/2 = 128, 256/4 = 64 i 256/8 = 32 skupova. 7. Kako je kapacitet glavne memorije 4 GB a veličina memorijske lokacije 2 bajta, imamo 2 32 /2 = 2 31 memorijskih lokacija, pa se svaka adresa sastoji od 31 bita (n = 31). Slično, kako je veličina bloka 128 bajta, jedan blok sadrži 128/2 = 64 memorijskih lokacija. Dakle poslednjih w = log 2 64 = 6 bitova odred uju redni broj lokacije u okviru bloka a prvih m = n w = 25 bitova odred uju redni broj bloka. a) Za adresiranje linije keša potrebno je r = log 2 1024 = 10 bitova. Prema tome TAG polje u ovom slučcaju čini prvih n w r = 31 6 10 = 15 bitova adrese (veličina je 15). b) Kod asocijativnog preslikavanja TAG polje čini prvih n w = 31 6 = 25 bitova adrese. c) Kako imamo R = 1024 linija, kod 4-skupno-asocijativnog preslikavanja imamo R/4 = 256 skupova. Za indeksiranje svakog skupa koristimo v = log 2 256 = 8 bitova, pa se sada TAG polje sastoji od prvih n w v = 31 6 8 = 17 bitova adrese. 8. Ukupno imamo 64 KB / 128 bajtova = 512 keš linija, pri čemu se svaka keš linija sastoji od 128 memorijskih lokacija (adresira se svaki bajt). Dakle, za indeksiranje memorijske lokacije u okviru bloka/keš linije potrebno je w = log 2 128 = 7 bitova. Keš je podeljen na 512 / 4 = 128 skupova; za indeksiranje ovih skupova je potrebno log 2 128 = 7. Dakle poslednjih 7 bitova adrese odred uju redni broj memorijske lokacije (bajta) u okviru bloka/keš linije (boldovani su) a narednih 7 bitova 2 Adresa je data u heksadecimalnom obliku (zaključujemo na osnovu oznake 0x koja nije deo adrese). Svaka heksa cifra (0, 1,..., 9, A, B,... F ) na prirodan način predstavlja prirodan broj iz [0, 2 4 ] i možemo je zamisliti kao niz od 4 bita. Npr. 0xBEE3DE72 = 1101 1110 1110 0011 1101 1110 0111 0010
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 14 odred uju redni broj skupa u kome se nalazi memorijska lokacija sa datom adresom (podvučeni su). Kako je 7 + 7 = 14 dovoljno je posmatrati zadnjih tri i po heksa cifri. a) 0xABC89987 = A B C 8 1001 1001 1000 0111. Redni broj skupa je (0110011) 2 = 51 a redni broj lokacije u okviru keš linije je (0000111) 2 = 7. b) 0x32651987 = 3 2 6 5 0001 1001 1000 0111. Redni broj skupa je (0110011) 2 = 51 a redni broj lokacije u okviru keš linije je (0000111) 2 = 7. c) 0x228945DB = 2 2 8 9 0100 0101 1101 1011. Redni broj skupa je (0001011) 2 = 11 a redni broj lokacije u okviru keš linije je (1011011) 2 = 91. d) 0x48569CAC = 4 8 5 6 1001 1100 1010 1100. Redni broj skupa je (0111001) 2 = 57 a redni broj lokacije u okviru keš linije je (0101100) 2 = 44. 9. Prosečno vreme pristupa keš memoriji iznosi 0.75 12 ns + 0.25 100 ns = 34 ns. 10. Neka su vremena pristupa za keš, glavnu i virtuelnu mermoriju, redom, t k, t g i t v a stope pogodatak za keš i glavnu memoriju, redom p k i p g. Ukoliko zanemarimo keš i posmatramo samo sistem glavna-virtuelna memorija, prosečno vreme pristupa ovog sistema je p g t g + (1 p g ) t v. Dakle, ovo je prosečno vreme pristupa kada nema keš-pogotka pa je prosečno vreme pristupa za ceo sistem jednak t avg = p k t k + (1 p k ) (p g t g + (1 p g ) t v ) = 10.024 ns 11. Označimo sa t 1 i t 2, redom, vreme pristupa kešu kod keš pogodka pre i posle modifikacije a sa p 1 i p 2, redom, stopu keš pogodaka pre i posle modifikacije. Neka je latencija kod keš promašaja (u oba slučaja) jednaka T. Prosečno vreme pristupa pre modifikacije je p 1 t 1 + (1 p 1 ) T a posle modifikacije je p 2 t 2 + (1 p 2 ) T. Da bi drugo prosečno vreme bilo bolje, mora važiti p 1 t 1 + (1 p 1 ) T > p 2 t 2 + (1 p 2 ) T. Sred ivanjem dobijamo da je prethodna nejednačina ekvivalentna sa T > p 2 t 2 p 1 t 1 p 2 p 1 = 252.5 ns Prema tome, dok važi da je vrednost latencije kod keš promašaja veća od 252.5 ns, ova modifikacija vodi poboljšanju. 12. Rešenja su data u Tabelama 2.1, 2.2 i 2.3. Kada dod e do keš promašaja, trenutni blok uvek stavljamo na vrh keša (linija 1) da bismo lakše pratili koji element treba izbaciti. Kod LRU algoritma, prilikom keš pogodka, pogod eni element takod e stavljamo na vrh keša dok kod F IF O algoritma to ne radimo. Brojevi kod blokova u delu pod c) predstavljaju koliko puta smo pristupali datom bloku (potrebno za LF U algoritam). Na osnovu tabela zaključujemo: a) Procenat keš pogodaka je 4/12 = 0.33 dok je prosečno vreme pristupa 0.33 10 ns + 0.67 100 ns = 70.3 ns. b) Procenat keš pogodaka je 5/12 = 0.42 dok je prosečno vreme pristupa 0.42 10 ns + 0.58 100 ns = 62.2 ns. c) Procenat keš pogodaka je 4/12 = 0.33 dok je prosečno vreme pristupa 0.33 10 ns + 0.67 100 ns = 70.3 ns.
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 15 Keš linija A B A C D E A C F A D E 0 A B A C D E A C F A D E 1 A B A C D E A C F A D 2 B A C D E A C F A 3 B A C D E E C F Pogodak? Tabela 2.1: Zadatka 12 a) Stanje keša posle svakog upita Keš linija A B A C D E A C F A D E 0 A B B C D E A A F F F F 1 A A B C D E E A A A A 2 A B C D D E E E E 3 A B C C D D D D Pogodak? Tabela 2.2: Zadatka 12 b) Stanje keša posle svakog upita Keš linija A B A C D E A C F A D E 0 A 1 B 1 B 1 C 1 D 1 E 1 E 1 E 1 F 1 F 1 D 1 E 1 1 A 1 A 2 B 1 C 1 D 1 D 1 D 1 E 1 E 1 F 1 D 1 2 A 2 B 1 C 1 C 1 C 2 C 2 C 2 C 2 C 2 3 A 2 A 2 A 3 A 3 A 3 A 4 A 4 A 4 Pogodak? Tabela 2.3: Zadatka 12 c) Stanje keša posle svakog upita 13. Opis dogad aja prilikom pristupa je dat u Tabelama 2.4 i 2.5. Keš linije koje pripadaju istom skupu su, radi bolje preglednosti, numerisane istim brojem (broj skupa), iako, naravno, u pravom kešu svaka keš linija ima poseban broj. Imamo 4 skupa od po 2 keš linije. a) Kako je veličina keš linije = jedna memorijska lokacija, sledi da se jedan blok sastoji od samo jedne memorijske lokacije (w = 0). Prema tome vršimo ubacivanje/izbacivanje pojedinih memorijskih lokacija i poslednja dva bita odred uju kom skupu ide memorijska lokacija (ostatak pri deljenju sa 4). Procenat keš pogodaka je 3/14 = 0.21 dok je prosečno vreme pristupa 0.21 10 ns + 0.79 60 ns = 49.5 ns. b) Svaka keš linija sadrži 2 memorijske lokacije pa prilikom keš promašaja moramo u keš ubaciti ceo blok koji sadrži datu memorijsku lokaciju (tj. datu memorijsku lokaciju i njoj susednu). Poslenji bit odred uje redni broj memorijske lokacije u okviru keša a pretposlednja dva bita odred uju kom skupu ide memorijska lokacija. Procenat keš pogodaka je 7/14 = 0.5 dok je prosečno vreme pristupa 0.5 10 ns + 0.5 60 ns = 35 ns.
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 16 Keš linija A0 B0 C2 A0 B1 B0 E4 F5 C2 C3 F3 F4 C1 B0 0 A0 B0 B0 A0 A0 B0 E4 E4 E4 E4 E4 F4 F4 B0 0 A0 A0 B0 B0 A0 B0 B0 B0 B0 B0 E4 E4 F4 1 B1 B1 B1 F5 F5 F5 F5 F5 C1 C1 1 B1 B1 B1 B1 B1 F5 F5 2 C2 C2 C2 C2 C2 C2 C2 C2 C2 C2 C2 C2 2 3 C3 F3 F3 F3 F3 3 C3 C3 C3 C3 Pogodak? Tabela 2.4: Zadatka 13 a) Stanje keša posle svakog upita Keš linija A0 B0 C2 A0 B1 B0 E4 F5 C2 C3 F3 F4 C1 B0 0 A0 A1 B0 B1 B0 B1 A0 A1 B0 B1 B0 B1 B0 B1 B0 B1 B0 B1 B0 B1 B0 B1 B0 B1 C0 C1 B0 B1 0 A0 A1 A0 A1 B0 B1 A0 A1 A0 A1 A0 A1 A0 A1 A0 A1 A0 A1 A0 A1 A0 A1 B0 B1 C0 C1 1 C2 C3 C2 C3 C2 C3 C2 C3 C2 C3 C2 C3 C2 C3 C2 C3 F2 F3 F2 F3 F2 F3 F2 F3 1 C2 C3 C2 C3 C2 C2 C2 C3 2 E4 E5 F4 F5 F4 F5 F4 F5 F4 F5 F4 F5 F4 F5 F4 F5 2 E4 E5 E4 E5 E4 E5 E4 E5 E4 E5 E4 E5 E4 E5 3 3 Pogodak? Tabela 2.5: Zadatka 13 b) Stanje keša posle svakog upita 14. Broj keš linija u kešu je 8 / 2 = 4. Veličina keš linije, odnosno bloka, jednaka je 2 memorijske lokacije (adresira se svaki bajt) što znači da uvek prenosimo po 2 uzastopne memorijske lokacije. Kod direktno preslikanog keša, redni broj linije odred uju 2 pretposlednja bita adrese (jer je w = 1, r = 2). Opis dogad aja prilikom pristupa je dat u Tabelama 2.6 i 2.7. a) Procenat keš pogodaka je 3/12 = 0.25 b) Procenat keš pogodaka je 5/12 = 0.42
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 17 Keš linija 4 9 82 255 8 2 5 164 1 3 254 0 0 1 2 3 4 5 8 9 4 5 82 83 8 9 4 5 254 255 82 83 8 9 4 5 8 9 254 255 82 83 4 5 2 3 8 9 254 255 82 83 4 5 2 3 8 9 254 255 164 165 4 5 2 3 8 9 0 1 164 165 4 5 2 3 2 3 0 1 164 165 4 5 254 255 2 3 0 1 164 165 Pogodak? Tabela 2.6: Zadatka 14 a) Stanje keša posle svakog upita 0 1 254 255 2 3 164 165 Keš linija 4 9 82 255 8 2 5 164 1 3 254 0 0 1 2 3 4 5 8 9 4 5 8 9 82 83 4 5 8 9 82 83 4 5 254 255 8 9 82 83 4 5 254 255 8 9 2 3 4 5 254 255 8 9 2 3 4 5 254 255 8 9 2 3 164 165 254 255 0 1 2 3 164 165 254 255 0 1 2 3 164 165 254 255 0 1 2 3 164 165 254 255 Pogodak? Tabela 2.7: Zadatka 14 b) Stanje keša posle svakog upita 0 1 2 3 164 165 254 255 15. Keš se ponaša kao obični asocijativni keš pri čemu uvek izbacujemo element koji će nam trebati najkasnije od svih trenutnih. Opis dogad aja prilikom pristupa je dat u Tabeli 2.8. U svakom koraku smo (radi lakšeg praćenja) u kešu od čuvali elemente po vremenu sledećeg pristupa, od najskorijeg do najkasnijeg. Na taj način uvek treba izbaciti onaj koji je na poziciji 4. Stopa keš pogodaka je 6/12 = 0.5. Keš linija A B A C D E A C F A D E 0 A A A A A A C A A D E E 1 B B C C C A D D E D D 2 B D D D E E A A A 3 B E E C F F F F Pogodak? Tabela 2.8: Zadatka 15. Stanje keša posle svakog upita
Glava 3 Sekundarna memorija i organizacija ulaza/izlaza 3.1 Teorija Sekundarne memorije: Pod sekundarnom memorijom računara podrazumeva se skup memorijskih medijuma na kojima se čuvaju podaci van glavne memorije i koje karakterišu osobine poput: nisu direktno adresibilni, ne gube informacije nakon isključenja napona, niža cena po bitu i relativno spori pristup. Ured aji za ovakav način memorisanja se dele na magnetne (hard diskovi), optičke (CD) i električne (flash memorije 1 ). Hard disk pripada klasi magnetnih sekundarnih memorija i sastoji se od nekoliko (N) jednakih diskova (ploča, tanjira) pored anih jedan iznad drugog na zajedničkoj osovini. Svaki disk se sastoji od 2 površine na kojima je moguć upis podataka. Površine su podeljene koncentričnim kružnicama na nekoliko (M) pisti a svaka pista je podeljena na konstantan broj (K) sektora pri čemu su svi sektori istog obima (tj. u svaki je moguće upisati isti broj bajtova). Numeracija sektora u okviru piste i pisti u okviru površine je sukcesivna. Ukoliko je obim sektora X bajtova, tada je kapacitet hard diska Size = 2 N M K X bajtova. (3.1) Skup svih pisti na istom rastojanju od osovine (tj. sa jednakim rednim brojevima u okviru površina) naziva se cilindar. Sam upis podataka se vrši po cilindrima, tj. kreće se od odred enog sektora, zatim se ide po pisti koja ga sadrži, zatim se prelazi na sledeću pistu u okviru cilindra sve dok se ne popuni ceo cilindar. Ukoliko ima još podataka, prelazi se na naredni cilindar. Upis čitanje podataka se vrši preko glave (igle). Seek time t S je prosečno vreme potrebno da se glava pozicionira na zadatu pistu; track-to-track access time t T T predstavlja vreme da se glava pomeri sa neke piste na njoj susednu pistu. Rotational latency t R je prosečno vreme potrebno da se glava pozicionira na početni sektor u okviru piste. Ovo predstavlja vreme potrebno da se izvrši pola rotacije diska; ako je brzina rotacije diska r tada važi t R = 1 2r (3.2) Vreme pristupa (access time) t je vreme potrebno da se dod e do zadatog sektora i važi t = t S + t R (3.3) 1 Koje koriste drugačiju tehnologiju od standardnih RAM memorija da im se podaci ne bi izgubili prilikom isključenja napona. 18
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 19 Brzina prenosa (Burst/data transfer rate) v predstavlja brzinu čitanja podataka sa jedne piste (bajt/sekunda): v = r K X. (3.4) Organizacija ulaza/izlaza: Treći ključni element računarskog sistema, pored procesora i memorije, čini ulazno-izlazni (U/I) podsistem. Ovaj podsistem služi kao veza izmed u sistemske magistrale i U/I ured aja (ekran, tastarua, miš, štampač itd.). Postoje tri tehnike za komunikaciju CPU U/I ured aji: Programirana U/I tehnika: U/I ured aj samo postavlja odgovarajuće bitove u svom statusnom registru dok je posao CPU-a da periodično proverava (pool-uje) U/I ured aje. Na osnovu trenutnih naredbi u programu i statusnih registara U/I ured aja, CPU odred uje da li je potrebno da se počne/prekine opsluživanje nekog U/I ured aja. Ukoliko CPU pool-uje neki U/I ured aj sa frekvencijom ν (npr. ν = 50Hz znači da CPU proverava status ured aja 50 puta u sekundi), dok mu je za proveru statusa potrebno C p taktnih intervala, tada CPU troši ν C p taktnih intervala u sekundi za pooling datog U/I ured aja. Prekidna U/I tehnika: Kada je U/I ured aju potrebno opsluživanje od strane CPU-a, ured aj sam generiše zahtev za prekid i šalje ga CPU-u. Kada CPU primi i obradi zahtev, on prekida trenutni program (za šta mu npr. treba C i1 taktnih intervala), opsluži ured aj, a zatim se vraća u prekinuti program (za šta mu npr. treba C i2 taktnih intervala) - obrada prekida traje ukupno C i = C i1 + C i2 taktnih intervala. Direktan memorijski pristup (DMA): Pretpostavimo da imamo U/I ured aj koji je potrebno opslužiti x puta u sekundi (kod programirane U/I tehnike, taj ured aj postavlja status spreman x puta u sekundi dok kod prekidne U/I tehnike on generiše zahtev za prekid x puta u sekundi) i da je za opsluživanje tog ured aja potrebno N taktnih intervala. Tada, Ukoliko koristimo programiranu U/I tehniku sa parametrima ν i C p, procesor za opsluživanje ovog ured aja troši O p = ν C p + x N taktnih intervala u sekundi. (3.5) Ukoliko koristimo prekidnu U/I tehniku sa parametrom C i, procesor za opsluživanje ovog ured aja troši O i = x (C i + N) taktnih intervala u sekundi (3.6) Ukoliko više ured aja istovremeno šalje zahtev za opsluživanje, tada treba odrediti kojim redosledom će CPU opslužiti ove ured aje. Jedno od najjednostavnijih rešenja je dodeliti svakom ured aju prioritet (npr. ceo broj) a zatim se prilikom primanja zahteva za prekid odred uje da li ured aj koji je poslao zahtev ima viši prioritet od ured aja koji se trenutno opslužuje. Ako je odgovor potvrdan, prekida se opsluživanje starog ured aja sve dok se ne opsluži novi; u suprtonom, novi ured aj ostaje na čekanju dok se ne opsluži stari.
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 20 3.2 Zadaci Zadatak 1. Hard disk se sastoji od 8 ploča, svaka površina ploče se sastoji od 200 pisti, svaka pista od 64 sektora, dok je obim sektora 4 bajta. Ovaj hard disk je modifikovan tako što su mu dodate još 2 ploče, ali mu je zato broj pisti po površini smanjen na 128. Koji hard disk je imao veći kapacitet? Zadatak 2. Ploča hard diska se sastoji od 100 pisti. Vreme pristupa pista-ka-pisti (track-to-track access time) je 0.1 ms a brzina rotacije diska je 3600 obrtaja/minuti. Prosečno vreme pozicioniranja (seek time) se računa kao trećina vremena potrebnog da se dod e od prve do poslednje piste. Da li će se prosečno vreme pristupa (access time) smanjiti ako povećamo brzinu rotacije za 20% i dodamo još 10 pisti? Zadatak 3. Hard disk ima 8 površina, 521 pistu po površini i 64 sektora po pisti. Obim sektora je 1 KB. Prosečno vreme pozicioniranja (seek time) je 8 ms, vreme pristupa pista-ka-pisti (track-totrack access time) je 1.5ms a drajv se okreće brzinom od 3600 obrtaja u minuti. Sukcesivne piste na istom cilindru se mogu čitati bez pomeranja glave. Pretpostaviti da je 1MB = 10 3 KB = 10 6 B. a) Koliki je kapacitet drajva? b) Koliko je prosečno vreme pristupa drajvu? c) Koliko je vremena potrebno da se prenese fajl veličine 5MB? d) Kolika je brzina prenosa paketa (burst transfer rate)? Zadatak 4. Hard disk kapaciteta 300 MB ima 815 cilindara, 19 glava (to znači da ima 10 ploča ali da se jedna od 20 površina ne koristi), brzinu prelaska sa piste na pistu od 17.5 m/s i rotacionu brzinu od 3600 obrtaja/minuti. Brzina prenosa izmed u diska i CPU-a je 300 KB/s. Razmak izmed u pisti je 0.25mm. Koliko je vremena potrebno da se pročita ceo disk i smesti u glavnu memoriju računara? Na počeku je glava pozicionirana na početku prvog sektora prve piste i čitanje se vrši cilindar po cilindar. Takod e, odjednom se može baferovati sadržaj jednog cilindra ali ne i više; to znači da se prvo puni bafer, zatim se prazni ka memoriji računara a tek nakon toga se čitaju naredni podaci sa diska. Pretpostaviti da je 1MB = 10 3 KB = 10 6 B. Zadatak 5. Hard disk ima n pisti a vreme pristupa pista-ka-pisti (t T T ) je jedinično. Ukoliko se na početku igla nalazi na pisti i i treba da ode na pistu j, gde su indeksi i i j izabrani sa jednakom verovatnoćom, dokazati da je očekivano vreme pristupa (seek time) jednako n 3 kada n. Zadatak 6. U/I ured aj koji je povezan na procesor izdaje 150 zahteva za opsluživanje svake sekunde, pri čemu je za opsluživanje ovog ured aja potrebno 10 000 taktnih intervala. Ukoliko procesor koristi prekidnu U/I tehniku, njemu je potrebno 1000 taktnih intervala da bi počeo sa izvršenje rutine za obradu prekida i još 1000 taktnih intervala da se vrati iz prekidnog programa u prekinuti. Sa druge strane, ako koristi programiranu U/I tehniku, njemu je potrebno 500 taktnih intervala za ispitivanje statusa U/I ured aja pri čemu on ispituje status svakih 0.5 ms. a) Koliko taktnih intervala u sekundi troši procesor opslužujući U/I ured aj ako koristi prekidnu U/I tehniku? b) Koliko taktnih intervala u sekundi troši procesor opslužujući U/I ured aj ako koristi programiranu U/I tehniku? c) Koliko često treba procesor da ispituje status U/I ured aja (programiranom U/I tehnikom) da bi trošio isti broj taktnih intervala po sekundi kao i kod prekidne U/I tehnike?
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 21 Zadatak 7. CPU radi na frekvenciji od 50 MHz i poznato je da mu je potrebno 100 taktnih intervala da obavi jednu operaciju pooling (periodična provera U/I ured aja). Odrediti deo vremena koji CPU troši poll-ovanje sledeća tri ured aja: a) Miš mora da se pool-uje 30 puta u sekundi kako bi se obezbedili da će biti prihvaćen svaki pomeraj koji je učinio korisnik. b) Flopi-disk prenosi podatke procesoru u 16-bitnim jedinicama a karakteriše ga brzina prenosa od 50 KB/s. U toku prenosa se ne sme izgubiti nijedan podaka. c) Hard disk prenosi podatke kao jedinične blokove obima 32 bita a brzina prenosa je 2 MB/s. U toku prenosa se ne sme izgubiti nijedan podatak. Zadatak 8. Kod nekog mikroračunara se U/I prenos podataka vrši prekidnom U/I tehnikom. Brzina prenosa podataka je 8 KB/s (podaci se prenose bajt-po-bajt). Za obradu prekida potrebno je vreme od 100 µs. Koji se deo CPU-ovog vremena troši na obradu prekida U/I ured aja? Zadatak 9. Neka U/I ured aj iz prethodnog zadatka ima ugrad ena dva 16-bitna bafera i zahtev za prekid se generiše onog trenutka kada se jedan od bafera napuni. Sada obrada prekida traje duže jer se vrši prenos od 16 bajtova - vreme obrade je 100 µs za početak obrade i inicijalni bajt + 8 µs za svaki dodatni bajt. Koji deo CPU-ovog vremena se sada troši na obradu prekida U/I ured aja? Zadatak 10. Na računarski sistem povezana su 3 U/I ured aja, štampač, disk i RS 232 linija čiji su prioriteti 2, 4 i 5, respektivno (veći broj = veći prioritet). Inicijalno (t = 0) se izvršava program korisnika, zatim u trenutku t = 10 štampač generiše zahtev za prekid. U trenutku t = 15 linija RS 232 zahtev opsluživanje i generiše zahtev za prekid. Kasnije, u trenutku t = 20 disk želi opsluživanje. Ako izvršenje svake od prekidnih rutina traje 10 vremenskih jedinica, skicirati grafik opsluživanja i za svaki ured aj odrediti trenutak kada je završeno njegovo opsluživanje.
Nikola Milosavljević - Skripta iz arhitekture i organizacije računara 22 3.3 Rešenja 1. Kapacitet prvog hard diska je 2 8 200 64 4 bajta = 819200 bajta, dok je kapacitet drugog diska 2 10 128 64 4 bajta = 655360 bajta. Dakle, prvi hard disk ima veći kapacitet. 2. Neka je t T T vreme pristupa pista-ka-pisti r brzina rotacije. Ako imamo M pisti, tada je, prema uslovima zadatka, prosečno vreme pozicioniranja (seek time) jednako t S = (M 1)t T T 3. Prema tome, naše početno vreme pristupa jednako je t = t S + t R = (M 1)t T T 3 + 1 2r = 3.3 ms + 8.3 ms = 11.6 ms Kada povećamo brzinu rotacije za 20% smanjujemo t R ali kada dodamo još 10 pisti povećavamo t S. Novo vreme pristupa je jednako t = t S + t R = (M + 10 1)t T T 3 Dakle, prosečno vreme pristupa se smanjuje. + 1 2 1.2r 3. a) Kapacited drajva je 8 521 64 1 KB = 266.752 MB. = 3.6 ms + 6.9 ms = 10.5 ms b) Rotaciona latentnost je t R = 1 2r = 8.3 ms. Prosečno vreme pristupa je t = t S + t R = 8 ms + 8.3 ms = 16.3 ms. c) Pretpostavimo da je fajl smešten na uzastopnim cilindrima (a u okviru njih na uzastopnim pistama i sektorima) kao i da počinje od cilindra #0, piste #0, sektora #0. 2 Kapacitet cilindra je 2N K X = 512 KB, a kapacitet jedne piste je K X = 64 KB, pa dati fajl od 5 MB zauzima 9 celih cilindara i 6 celih pisti, 8 sektora sedme piste (narednog, desetog, cilindra); tj. fajl se završava u cilindru #9, pisti #6, sektoru #7 (indeksiranje od 0). Prilikom učitavanja fajla iz hard diska (prenosa) dešava se sledeće: na početku je disku potrebno t = t S (pozicioniranje na cilindar #0) + t R (pozicioniranje na sektor #0) vremena. Zatim 9 puta ponavlja sledeću operaciju: očita ceo trenutni cilindar za šta mu je potrebno 2N 1 r vremena (vreme za koje se disk okrene 2N puta da bi očitao svih 2N pisti trenutnog cilindra), pomeri se na sledeći cilindar (t T T vremena) i pozicionira glavu na sektor #0 (t R vremena). Kada glava dod e do desetog cilindra (#9), potrebno je da očita 6 pisti (6 1 r vremena) i konačno da očita 8 sektora tj. napravi 8 K -ti deo kruga ( 8 1 K r vremena). Prema tome, ukupno vreme za prenos datog fajla je: T = t + 9(2N 1 r + t T T + t R ) + 6 1 r + 8 1 = 1406.9 ms K r d) Na osnovu formule (3.4) imamo da je tražena brzina prenosa jednaka r K X = 3600/60 64 1 KB = 34.8 MB/s. 4. Po uslovima zadatka, vreme pristupa pista-ka-pisti je t T T = 0.25 10 3 m 17.5 m/s = 0.014 ms. Vreme za čitanje celog cilindra je t c = 19 1 r = 317 ms, gde je r brzina rotacije. Zatim se, pre čitanja narednog cilindra, bafer mora isprazniti ka memoriji. Uzimajući u obzir veličinu jednog cilindra 300 MB/815 i brzinu prenosa, na ovo odlazi t mem = 300 KB/s = 1.23s. Zatim se igla prebacuje na narednu pistu-cilindar (t T T ) i pozicionira se na početni sektor (sektore) na šta odlazi t R = 1 2r = 8.3 ms vremena. 2 Kada god je moguće (ima mesta) fajlovi se pamte na ovakav način. Pretpostavku o numeraciji ćemo uvek koristiti jer ona samo utiče na lakši račun.