- Poravnanost operandov v pomnilniku in slabosti neporavnanosti
- Kaj vpliva na velikost strani 348
- Velikost sektorja na magnetnem disku
- Ker se lahko vedno prenese samo cel sektor je optimalno, če je velikost strani enaka nekemu večkratniku velikosti sektorja (najpogostejša dolžina sektorja je 512 bajtov)
- Izkoriščenost pomnilnika
- Ker je dolžina programa ali segmenta redko enaka dolžini strani, bodo zato deli strani neizkoriščeni, to lahko odpravimo z zmanjševanjem strani, ampak se tako poveča tabela deskriptorjev ki prav tako zavzema prostor v pomnilniku
- VEDI FORMULO !!
- Število napak strani
- Bistveno pomembnejše kot izkoriščenost pomn. Če sta zaporedna naslova oba naslova operandov ali ukazov potem bo najverjetneje razdalja med njima kratka. V tem primeru povečanje strani zmanjšuje možnost napake. Če sta pa zaporedna naslova mešana, potem lahko sklepamo, da bo razdalja velika in tam s povečevanjem strani večamo možnost napake, saj je večjih strani lahko manj v gl. pomn.
- Kaj vpliva na izkoriščenost pomnilnika 348
- Odvisen je od povprečne velikosti segmenta (ali programa pri čistem odstranjevanju). Če je velikost segmenta Ss, velikost strani Sp besed in dolžina deskriptorja c besed je v povprečju v vsakem segmentu izkoriščenih N besed. N = Sp/ 2 + c*(Ss/Sp)
- kam shranjujemo tabele strani TLB 343
- V poseben TLB predpomnilnik
- Kontrolne nevarnosti 226
- Do njih pride pri vseh programih, ki spreminjajo vsebino PC (pogojni, brezpogojni skoki, klici, vrnitve). Ukaza v IF in ID se ob izpolnjenem pogoju za skok zavržeta, saj sta neveljavna.
- dinamična predikcija 231
- Prediktorske tabele,
- korelacijski prediktor (več tabel ki hranijo zgodovino za več skokov nazaj)
- turnirski prediktor(korelacijski in in prediktorska tabela, uporabi se tisti, ki je bolj natančen.
- Skočni predpomnilnik(hrani zgodovino pravilno napovedanih skočnih naslovov lahko pa tudi ukaze).
- Vrnitveni prediktor (sklad z vrnitvenimi naslovi procedur).
- Enota za prevzem ukazov (namesto stopnje IF ta enota prevzame ukaz, opravi predikcije in prevzemu ukazov iz predpomnilnika, tako obdelane ukaze pošlje ostalim stopnjam naprej v obdelavo.
- katera vrsta zank pride v poštev pri dvobitni prediktorski tabeli (vgnezdene zanke)
- kako je z zadevo, če se predvidi, da skok bo
- V PC se mora naložiti skočni naslov (pri HIP skočni naslov gre v PC, v register IR se vstavi mehurček (oboje je v stopnji IF) Tudi ob pravilni napovedi moramo počakati 1up, da bo skočni naslov znan )
- Zunanja fragmentacija, notranja fragmentacija 329-338
- Notranja fragmentacija nastane pri navideznemu pomnilniku z odstranjevanjem. Do nje pride, ker program skoraj nikoli ne dolg celo število strani, zato je del (ponavadi zadnje) strani neizkoriščen.
- Zunanja fragmentacija nastane pri segmentaciji, saj spremenljiva velikost segmentov v glavnem pomnilniku pušča luknje praznega prostora. Po daljšem obratovanju postanejo te luknje tako majhne, da je potrebno zgoščanje pomnilnika, kar je zelo počasna operacija.
- Ponavadi je predpomnilnik realiziran kot kombinacija obojega, kar izniči zunanjo fragmentacijo in omogoči prenašanje samo tistih delov segmenta, ki jih zares potrebujemo.
- WS (working set) algoritem 358
- W(t,T) --- množica tistih strani, ki so bile uporabljene v času t-T do t (čas t teče samo ko se program izvaja)
- D – stopnja multiprogramiranja
- 1. Dodeljevalna strategija. Vsakemu programu se na začetku dodeli fiksno št okvirov strani.
- 2. Polnilna strategija. Ob vsaki napaki se v enega od okvirjev prenese stran iz pomožnega pomn. Če ni prostih okvirov se program izloči iz množice aktivnih programov(d-1).
- 3. Zamenjevalna strategija. Strani ki niso v množivi W(t,T) prenesejo nazaj v pomožni pomn. Pripadajoči okvirji so sedaj prosti.
- Če število prostih okvirjev preseže neko določeno vrednost se aktivira nov program (d+1)
- PFF (page fault frequency) algoritem 359
- Deluje podobno kot WS
- t-navidezni čas
- T - parameter
- Če je t_i-1 – t_i < T (čas od zadnje napake strani) algoritem ne naredi ničesar razen prenosa strani
- Sicer deluje enako kot WS algoritem
- Kako deluje predpomnilnik 288
- Če je predpomnilink en ga imenujemo homogen, sicer je nehomogen. Lahko je sestavljen iz več nivojev kjer so ponavadi vsi razen prvega nivoja homogeni. Majhni predpomnilniki delujejo zaradi lokalnosti pomnilniških naslovov. Zmogljivost se meri v verjetnosti zadetka(zgrešitve).
- kako je zgrajen
- Iz kontrolnega in podatkovnega dela. Podatkovni del vsebuje bloke(več zaporednih pomnilniških besed). Kontrolni pa informacijo ki enolično opisuje vsak blok in ponavadi tudi kontrolne bite (veljavni, umazani bit …)
- kakšne vrste predpomnilnikov poznamo
- Homogene, nehomogene in več-vhodne(pri superskalarnih računalnikih omogoča več istočasnih dostopov do pomnilniških celic, je pa zgradba bolj zapletena kar ponavadi pomeni manjši predpomnilnik).
- kako dostopamo do njega
- Statična predikcija 229
- Predpostavimo neizpolnjen pogoj. Zakasnjeni skoki, po skočnem ukazu se vedno izvrši še toliko ukazov kolikor je skočna zakasnitev(pri hip 2). Včasih se skočnih rež ne da polno izkoristiti in je potrebno vstavljanje NOPov,
- Zakasnjeni skoki 229
- Po skočnem ukazu se vedno izvrši še toliko ukazov kolikor je skočna zakasnitev(pri hip 2). Včasih se skočnih rež ne da polno izkoristiti in je potrebno vstavljanje NOPov,
- Kako zmanjšamo tabele strani 347
- 1. Večnivojske tabele strani
- Namesto ene velike tabele strani uporbljamo več manjših, ki se lahko prilagajajo velikosti programa.
- 2. Invertirana tabela strani
- Tabela v kateri so samo tiste strani, ki so v glavnem pomnilniku. Ker je gl pomn manjši od navideznega prostora je taka tabela majhna. Težava je, da iz številke strani v navideznem naslovu ni razvidno kje in če sploh je stran v glavnem pomnilniku.
- 3. Shranjevanje tabel v navideznem prostoru
- določene tabele, ki niso absolutno nujne (take ki niso del op.sistema.) so lahko shranjene izven gl. pomn. Takšna rešitev ponavadi nekoliko poveča število napak strani in zahteva dodatno previdnost pri zasnovi OS. ampak se vseeno pogosto uporablja.
- kakšna je razprševalna funkcija HASH
- Podatkovne (operandne) nevarnosti kje so kako se jih odpravlja 221
- kadar kak ukaz nalaga vrednost iz pomnilnika in kateri od naslednjih ukazov dostopa do te iste vrednosti (registra) pride do podatkovne nevarnosti. Pri hip prihaja do teh samo v stopnji ID saj le tam nalagamo vrednosti iz pomnilnika v registre. Najenostavnejše je če stopnja ID takrat stoji in se v stopnje naprej podajo mehurčki. V splošnem mora logika preveriti če v i-ti stopnji obstaja nevarnost, če je ni (več) potem se lahko izvršijo operacije v stopnji i. Če nevarnost je se mora stopnja ustaviti in v stopnje naprej vstavlja mehurčke. Stopnje pred i-to morajo čakati.
- Premoščanje:
- Lahko, da rezultati ukazov ki povzročajo nevarnost že obstajajo v kakšni stopnji, a še niso zapisani v registre/pomnilnik. Če lahko to vrednost prenesemo(premostimo) v stopnjo kjer je ugotovljena nevarnost potem čakanje ni potrebno.(pri HIP se premošča iz EX, MEM in WB v stopnjo ID) Pri HIP pri ukazu load se čakanja ne da popolnoma odpraviti s premoščanjem potreben je 1 mehurček. Nevarnostim se lahko izognemo tudi s preureditvijo ukazov.
- Vrste pod nevarnosti:
- 1. Read After Write
- 2. Write After Read
- 3. Write After Write
- Načini naslavlanja 123
- 1. Takojšnje naslavljanje
- operand je podan kar z vrednostjo in je del ukaza
- 2. Neposredno naslavljanje
- operand je podan z konkretnim naslovom v pomnilniku
- (registrsko naslavljanje če je operand v registru je podan naslov registra)
- 3. Posredno naslavljanje
- naslovimo polje v pomnilniku kjer je shranjen naslov operanda (pomnilniško posredno naslavljanje, potrebna sta 2 dostopa do pomnilnika) naslov operanda je lahko tudi v registru(registrsko posredno naslavljanje)
- 4. Bazno naslavljanje(naslavljanje z odmikom)
- Naslov operanda dobimo tako da vsebini registra(baze) prištejemo odmik.
- 5. Indeksno naslavljanje
- Bazno naslavljanje kjer lahko z odmikom zajamemo celotni pomnilniški prostor. (ali če uvedemo še en register tako da je A = r2 +r3 +d)
- 6. Pred dekrementno naslavljanje
- indeks(vrednost baze) se avtomatično zmanjšuje pred izračunom naslova
- 7. Po inkrementno
- indeks se povečuje po izračunu naslova
- 8. Velikostno indeksno
- A = r2 +r3*ß + D kjer je ß velikost operanda (popravljanje registra r3 ni vključeno v izračun naslova)
- Zakaj se pri naslavljanju predpomnilnika uporabljajo fizični naslovi in ne navidezni 326
- 1. Ker želimo pri navideznem pomnilniku imeti možnost, da se dva ali več navideznih naslovov preslika v enega fizičnega (imenujemo jih aliasi ali sinonimi). To omogoča, da več programov dostopa do istih procedur ali podatkov. Pri navideznih predpomnilnikih lahko en program takšno vsebino spremeni drugi pa je ne vidi in pride do napak. Pri fizičnih naslovih do te težave ne pride.
- 2. Za V/I naprave je lažje, če uporabljajo fizične naslove, saj bi bilo sicer potrebno dodatno preslikovanje.
- Obe točki je mogoče realizirati tudi z navideznimi naslovi, vendar je taka realizacija komplicirana.
- Zaščita pomnilnika 283
- Zaščita pred poseganjem programov v pomnilniške lokacije drugih programov(predvsem OS). Ponavadi se zaščiti pred pisanjem, branje zaščitimo takrat ko je pomembna tajnost.
- 1. Par registrov ki določajo spodnjo in zgornjo mejo pomnilniškega prostora določenega programa. (lahko tudi spodnja meja in dolžina). Slabost je da mora program zasedati zvezen prostor v pomnilniku in vse besede so zaščitene na enak način(vse samo read only ali read/write…)
- 2. Metabiti:
- biti, ki vsaki besedi določajo kateremu programu pripadajo. Danes se ne uporablja, ker zahteva veliko časa za spreminjanje teh bitov in veliko dodatnega prostora.
- 3. Delitev na zaščitene strani/bloke (drugačna stran kot pri navideznem pomnilniku)
- programu je dodeljen prostor, ki je enak celemu številu strani. Vsaka stran ima svoje zaščitne metabite, ki jim pravimo ključ. Ključi so shranjeni v posebnem pomnilniku, ki ni del gl.pom. in dostop z običajnimi ukazi ni možen. Teh bitov je v primerjavi s prejšnjo rešitvijo manj in je zato čas in prostor potreben za realizacijo občutno manjši.
- Kako še drugače rečemo zgrešitvi v navideznem pomnilniku (napaka strani)