pomnilniška hierarhija

37
http://vision.fe.uni-lj.si/classes/GSPV GSPV (13) Navidezni pomnilnik Stanislav Kovačič Univerza v Ljubljani Fakulteta za elektrotehniko

Upload: sydnee-holt

Post on 01-Jan-2016

27 views

Category:

Documents


0 download

DESCRIPTION

Pomnilniška hierarhija. Kaj je navidezni pomnilnik. Mehanizem, ki daje uporabniku vtis, da je glavnega pomnilnika več, kot ga je v resnici. Koncept navideznega pomnilnika ni nov (pozna šestdeseta leta prejšnjega stoletja). Sprva realiziran na velikih računalniških sistemih. - PowerPoint PPT Presentation

TRANSCRIPT

http://vision.fe.uni-lj.si/classes/GSPV

GSPV (13)

Navidezni pomnilnik

Stanislav Kovačič

Univerza v Ljubljani

Fakulteta za elektrotehniko

Pomnilniška hierarhijaPomnilniška hierarhija

Kaj je navidezni pomnilnikKaj je navidezni pomnilnik

• Mehanizem, ki daje uporabniku vtis, da je glavnega pomnilnika več, kot ga je v resnici.

• Koncept navideznega pomnilnika ni nov (pozna šestdeseta leta prejšnjega stoletja).

• Sprva realiziran na velikih računalniških sistemih.• Množična prisotnost je razmeroma nova (osebni računalniki).• Obravnavanje navideznega pomnilnka spada v širši kontekst

upravljanja pomnilnika, ta pa v kontekst operacijskih sistemov.• Podlago delovanju navideznega pomnilnika daje lokalnost

pomnilniških referenc.• Za realizacijo je potrebna ustrezna strojna in programska oprema.

Navidezni pomnilnikNavidezni pomnilnik

• Analize kažejo:• Nekateri deli programa se redko ali celo nikoli ne izvršijo.• Deli programa se (v enoprocesorskih sistemih) ne izvršujejo sočasno,

niti ves čas.• Torej ni potrebe, da bi se v pomnilniku nahajali sočasno ali ves čas.• Zadostuje, da se v pomnilniku nahaja tisti del “delovni del” programa ,

ki se tedaj izvršuje.

• Zamisel:• Dodeljevanje pomnilnika programom/procesom oziroma delom

programov/procesov samo, če ga zares potrebujejo (to je “na zahtevo”).

• Pridobitve:• Možno je izvrševati programe, ki so večji od velikosti glavnega

pomnilnika• Maks. velikost programa ni direktno dvisna od velikosti glavnega

pomnilnika.• Možnost sočasnega izvrševanja večjega števila programov (procesov

oz. opravil) kot bi to dovoljevala velikost glavnega pomnilnika.

Logični in fizični nasloviLogični in fizični naslovi

• Za razumevanje delovanja navideznega pomnilnika je bistvenega pomena razlikovanje logičnih od fizičnih naslovov.• Logični naslov je naslov znotraj programa (naslov ukaza ali podatka).• To je v bistvu naslov, ki ga generira procesor med izvrševanjem

programa (na primer vsebina programskea števca).• Fizični naslov je naslov pomnilniške besede (glavnega) pomnilnika. To je

v bistvu naslovna kombinacija na naslovnem vodilu.

• Logični naslovi sestavljajo logično naslovno področje programa. • Torej je velikost logičnega naslovnega področja dana z velikostjo

programa. Maksimalna velikost programa je dana z dolžino logičnega naslova oziroma dolžino (ter funkcijo) naslovnih registrov procesorja.

• Fizični naslovi sestavljajo fizično naslovno področje pomnilnika. • Velikost fizičnega naslovnega področja je dana z velikostjo glavnega

pomnilnika. Maksimalna velikost glavnega pomnilnika je dana s širino naslovnega vodila.

Logični in fizični nasloviLogični in fizični naslovi

Logičninaslovi

Fizičninaslovi

Na primer, ukazu z logičnim naslovom 1000 dodelimo pomnilniško besedo s fizičnim naslovom 3000.Vprašanje: kdaj in kako naj se l. n. 1000 preslika v f. n.?

Ko program namestimo v pomnilnik – dodelimo pomnilnik – mu dodelimo fizične naslove.

Preslikava l.n. v f.n.Preslikava l.n. v f.n.

• Statično – pred izvršitvijo: • Prevajanje:

program prevedemo tako, da so logični naslovi po vrednosti kar enaki fizičnim naslovom (absolutni program). Program namestimo na te fizične naslove (dodelimo tisti del pomnilnika) in ga izvršimo.

• Povezovanje:program prevedemo ob predpostavki, da bodo fizični naslovi izbrani v času povezovanja. Program ali dele programov prevedemo tako, da začnejo z logičnim naslovom 0000. V času povezovanja se logični naslovi “preračunajo” v fizične naslove, program namestimo na predvidene naslove in ga izvršimo.

• Nameščanje:Programu dodelimo (“izračunamo”) dejanske naslove v času nameščanja, program v glavni pomnilnik tja tudi namestimo in izvršimo.

Preslikovanje l.n. v f.n.Preslikovanje l.n. v f.n.• Dinamično – med izvrševanjem:

• Ko procesor generira logični naslov, se le-ta “preračuna” – to je preslika v fizični naslov pomnilniške besede, kjer je nameščen ukaz (ali podatek) .

• Za to preslikavo je potrebna ustrezna strojna oprema, na primer, ko procesor generira logični naslov 1000, se le ta s pomočjo strojne opreme preslika v fizični naslov 3000.

• Na tem temelji izvedba navideznega pomnilnika.• Vprašanje: kako na učinkovit način realizirati to preslikavo?

Dodeljevanje pomnilnikaDodeljevanje pomnilnika

• Zvezno:• Program (proces ali opravilo) namestimo v pomnilnik v enem kosu.

• V pomnilnik lahko namestimo sicer tudi več programov (več opravilnost), vendar vsakega zase zvezno.

• Nezvezno:• Posamezen program namestimo v pomnilnik po delih. Zvezno je

nameščen v pomnilnik samo posamezen del programa.

• To je podlaga za izvedbo navideznega pomnilnika, program delimo na:

• Enako velike dele – strani, “ostranjenje”,• Različno velike dele – segmente, “segmentiranje”,• Kombinacijo obeh – segmentiranje z ostranjenjem.

Upravljanje pomnilnikaUpravljanje pomnilnika

Navidezni pomnilnik – povzetekNavidezni pomnilnik – povzetek

Navidezni pomnilnik – prednostiNavidezni pomnilnik – prednosti

Navidezni pomnilnik – opombeNavidezni pomnilnik – opombe

Ostranjen navidezni pomnilnikOstranjen navidezni pomnilnik

Ostranjenje - primerOstranjenje - primer

Ostranjen navidezni pomnilnikOstranjen navidezni pomnilnik

Preslikava l.n. V f.n.Preslikava l.n. V f.n.

Tabela straniTabela strani

• Primer:• Velikost strani = velikost okvirja = 4 KB• Logični naslovni prostor: 4 GB, maks. št. strani 1 M• Fizični naslovni prostor: 4 MB, št. okvirjev 1 K• Poleg logičnega in fizičnega naslova vsebuje tabela še dodatna

določila: bit veljavnosti (V), bit spremembe (M), bit zaščite (WP), bit prisotnosti, ipd.

• Tabela strani je lahko zelo velika• Velikost tabele strani = število strani x velikost posamezne

komponente,• Na primer, 1 M x 8 = 8 MB

• Vsak program, ki je nameščen v pomnilnik, mora imeti svojo tabelo,• Toliko tabel kot programov.• Vprašanje: Kam namestiti vse tabele?• Tabele so nameščene v glavni pomnilnik.

Tabela straniTabela strani

Tabela straniTabela strani

• Posledica:• Upočasnitev napredovanja programa – za vsako koristno rferenco

sta potrebna dva pomnilniška dostopa, eden do tabele in eden do programa (vsebine)

• V uporabi pa so tudi večnivojski sistemi tabel• Vsakemu program v tem primeru pripada ena tabela prvega nivoja

in več tabel naslednjega (drugega), tretjega , ..., nivoja.• Za vsako pomnilniško referenco je potrebno toliko dodatnih

dostopov kolikor je nivojev tabel.• Preslikava l.n. v f.n. pa mora biti hitra

• Rešitev – naslovni preslikovalni predpomnilnik – ATC ali TLB• ATC – Address Translation Cache• TLB – Translation Look-aside Buffer• ATC (TLB) vsebuje samo del – aktivni del – tabele strani• Tabela strani se sicer še vedno nahaja v glavnem pomnilniku.

Tabela strani in ATCTabela strani in ATC

• Tabela strani se nahaja v glavnem pomnilniku, aktivni del tabele se nahaja tudi v ATC

• Ta predpomnilnik je največkrat asociativen ali delno (npr. 4 ali 8-stransko delno asociativen)

• Dokler je aktivni del tabele v predpomnilniku, je dostop do pomnilnika hiter oz. se praktično ne podaljša

• V nasprotnem primeru je potreben dodaten pomnilniški dostop do pomnilnika (za vsak nivo tabel) in polnjenje ATC.

• V primeru, da stran ni v pomnilniku, pa je (seveda) potreben tudi dostop do diska (torej nameščanje strani).

Prekrivanje straniPrekrivanje strani

Ostranjenje - primerOstranjenje - primer

Ostranjenje - primerOstranjenje - primer

Ostranjenje - primerOstranjenje - primer

SegmentiranjeSegmentiranje

• Segmentiranje temelji na izgledu naslovnega področja, kot ga vidi programer.

• Logično naslovno področje za njega ni linearno zaporedje pomnilniških naslovov.

• Program sestavlja določeno število različno velikih delov programa – segmentov.

• Segment je del programa, ki ima za programerja enoten pomen (npr. ukazi, podatki, sklad)

• Vsak segment ima svoje ime (oznako ali številko) in velikost.• Logični naslov je tako dan z dvema določiloma: imenom segmenta in

odmikom znotraj segmenta.

SegmentiranjeSegmentiranje

Segmentiran pomnilnikSegmentiran pomnilnik

Segmentiran pomnilnikSegmentiran pomnilnik

Segmentiran pomnilnikSegmentiran pomnilnik

Segmentiran navidezni pomnilnikSegmentiran navidezni pomnilnik

Segmentiran navidezni pomnilnikSegmentiran navidezni pomnilnik

Asociativni segmentni registriAsociativni segmentni registri

Asociativni segmentni registriAsociativni segmentni registri

Asociativni segmentni registriAsociativni segmentni registri

836+ in ostranjenje836+ in ostranjenje

836+ in navidezni pomnilnik836+ in navidezni pomnilnik