Fig. 9 Pasqyrimi direkt prej memories kryesore në kesh
m blloqet tjera të mëmories kryesore pasqyrohen ne kesh sipas të njëjtës mënyrë,
bloku Bm i memories pasqrohet prapë nëlinjën L0, Blloku Bm +1 pasqyrohet në
linjën L1, e kështu më radhë.
Funksioni i pasqyrimit implementohet lehtë duke përdorur adresat e 51
memories kryesore.
Me qëllim të qasjes në cache, çdo adresë e memories kryesore mund
të shihet si e përbërë nga tre fusha.
Bitët më pak të rëndësishëm (ë) identifikojnë një fjalë unike ose bajt brenda
një blloku të memories kryesore.
Bitat e mbetur (s) specifikojnë një prej 2s blloqeve të memories kryesore.
Logjika e keshit interpreton këto s bita si një etiketë (tag) të s-r bite (pjesa
më e rëndësishme) dhe një linjë fushe e r-bitë. Kjo fushë e fundit
identifikon një nga m = 2r linjat të cache-it.
Të përmbledhim:
52
Gjatësia e adresës = (s + ë) bita
Numri i njësive të adresueshme = 2s+ë (fjalë ose bajtë)
Madhësia e blloku = madhësia e linjës = 2ë fjalë ose bajtë
Numri blloqeve në memorie kryesore 2sw 2s
2w
Numri i injave në kesh = m = 2r
Madhësia e keshit 2rw fjalë ose bajtë
Madhësia e tagut (etiketës) = (s-r) bita
53
Struktura e adresës për pasqyrimin direkt
Etiketa s-r Linja r fjala ë
8 14 2
s ë
Adresa e memories: s+ ë = 24 bita 54
Madhësia e bllokut = 2ë = 22 Bajt = 4 Bajt
Identifikuesi i fjalës: ë = 2 bita (sepse 1 bllok = 4 bajta)
Identifikuesi i bllokut: s = 22 bita
8 bita për etiketat (s-r = 22-14)
14 bita për linjat e keshit (r=14)
Kur një bllok është aktualisht në linjën e caktuar në kesh, shtë e nevojshme
të etiketoni të dhënat për ta dalluar atë nga të blloqet e tjera që mund të
përshtaten në atë rresht.
Bitam më të rëndësishmë s-r shërbejnë për këtë qëllim.
Teknika e pasyrimit direct është e thjeshtë dhe më e lirë që të
implementohet.
E meta kryesore e kësaj teknike është se ka vetëm një një lokacion të
fiksuar të keshit për ndonjë bllok të dhënë nga memoria kryesore.
Pra, një numër i caktuar i blloqeve nga memoria kryesore duhet të
konkurrojnë për të njëjtin vend në cache, edhepse në cache ka vende
tjera të lira.
Kjo e metë disavantazh do të qojë në nivel të ultë të “ hit ratio” (gjasa e
gjetjes së sukseshme në cache nga CPU-ja zvogëlohet). 55
Shembull: nëse keshi përmbanë 10 blloqe, atëherë blloku 0 i memories
kryesore pasqyrohet në bllokun 0 të keshit, blloku 1 i memories kryesore
pasqyrohet në bllokun 1 të keshit, blloku 9 i memories kryesore pasqyrohet
në bllokun 9 të memories kesh dhe
blloku 10 i memories kryesore
pasqyrohet në bllokun 0 të keshit
siç shihet në figurë.
Pyetja: nëse blloqet 0 dhe 10 të memories
kryesore ose blloqet e tjera pasqyrohen të
dyja në bllokun 0 ose në blloqet përkatëse
të keshit, atëherë si CPU-ja e di se cili bllok
aktualisht gjendet në bllokun 0 të keshit
në secilën kohë?
Përgjigjia për këtë është që secili bllok është kopjuar në kesh dhe 56
identifikuar nga tag-u.
Pasqyrimi asociativ
Pasqyrimi asocitiv tejkalon problemin e pasqyrimit direkt duke lejuar që çdo
bllok memories kryesore të ngarkohet në çdo linjë të keshit. (Fig. 10).
Në këtë rast, logjika e kontrollit të cache interpreton një adresë të memories
thejsht si një etiketë dhe një fushë fjale.
Fig. 10 Pasqyrimi asociativ prej memorie në kesh. 57
Blloku nga memoria kryesore mund te vendoset në cilën do linjë të keshit
(dallon nga pasqyrimi direkt)
Adresa e memories trajtohet si dypjesëshe (dy fusha): etiketa, fjala
Fusha e etiketës identifikon në mënyrë unike një bllok memorie
kryesore.
Për ta gjetur të dhënën nëse ajo gjendet në kesh, duhet që në mënyrë
simultane të hulumtohen të gjitha etiketat e linjave të keshit
Për të përcaktuar nëse një bllok është në cache, logjika e kontrollit të cache-
it duhet njëkohësisht të shqyrtojë etiketën e çdo rreshti për një përshtatje.
Figura 11 ilustron logjikën.
Hulumtimi i këtillë i keshit është i kushtueshem!!!
58
.
Fig. 11 Organizimi Keshit plotësisht Asociativ
59
Duhet theksuar se asnjera nga dy fushat e adresës nuk ka kurrfarë lidhje me
numrin e linjës së keshit.
Pra, asnjëra fushë në adresë nuk korrespondon me numrin e linjës, kështu
që numri e linjave në cache nuk përcaktohet nga formati i adresës.
Gjatësia e adresës = (s + ë) bita
Numri i njësive të adresueshme = 2s+ë (fjalë ose bajtë)
Madhësia e blloku = madhësia e linjës = 2ë fjalë ose bajtë
Numri blloqeve në memorie kryesore 2sw 2s
2w
Numri i injave në kesh – i papërcaktuar
Madhësia e tagut (etiketës) = (s) bita 60
Me ketë teknikë të pasqyrimit, ka fleksibilitet se cili blok do të zëvëndësohet kur
një bllok I ri lexohet në kesh. Algoritmet zëbëndësuese, dizajnohen për të
akmsimizuar hit ratio.
E metë e pasyqrimit asociativ është kerkesa për qark kompleks për të
ekzaminuar etiketat e të gjita linjave të keshit në parallel.
Përbërja e adresës te pasqyrimi asociativ Fjala
Etiketa 22 bita 2 bita
22 bitat e etiketës memorohen se bashku me bllokun e të dhënave (32
bita)
Krahasohet fusha e etiketës me etiketën e linjës së keshit për ta gjetur të
dhënën brenda keshit
Duhet theksuar se asnjera nga dy fushat e adresës nuk ka kurrfarë
lidhje me numrin e linjës së keshit
Dy bitat me peshë më të vogël përcaktojnë fjalën brenda bllokut 32 bitesh
61
Shembull: Konsideroni një sistem memorues që shfrytëzon një adresë 32
bitë për të adresuar në nivel bajti, plus një cache që përdorë një madhësi
linje (line size) prej 64 bajt.
a) Supozoni një cache me pasqyrim direkt me fushë të TAG-ut me
madhësi 20 bitë në adresë. Paraqitni formatin e adresës dhe percaktoni
parametrat vijues: numrin e njësive të adresueshme, numrin e blloqeve në
memorie kryesore, dhe numrin e linjave në cache.
b) Supozoni një cache asociativ. Paraqitni formatin e adresës dhe
percaktoni paramaterat vijues: numrin e njësive të adresueshme, numrin e
blloqeve në memorie kryesore, numrin e linjave në cache, madhësinë e
tag-ut.
62
Zgjidhje:
a) Për kesh me pasqyrim direkt kemi sa vijon:
Sistemi i adresimit të memories kryesore është 32 bitë
Fusha e Tagu-t përbëhet prej 20 bitë
Madhësia e linjës (bllokut) është 64 Bajt
Etiketa s-r Linja r fjala ë
20 bita 6 bita 6 bita
32 bita 63
Madhësia e blloku = madhësia e linjës = 2ë = 64 bajtë
2ë = 26 , pra ë = 6 bite
s = 32-6 = 26 bite
s = r + 20, r= 26- 20 = 6 bitë
Numri i njësive të adresueshme = 2s+ë = 226+6 = 232 bajtë
Numri i blloqeve në memorie kryesore është 232 / 26 = 226 bajtë
Numri i linjave të keshit është 2r = 26 = 64 linja
Numri i njësive të adresueshme = 2s+ë = 226+6 = 232 bajtë
Numri i blloqeve në memorie kryesore është 232 / 26 = 226
Numri i linjave të keshit është i paërcaktuar
Madhësia e Tagut = 26 bitë
b) Për kesh me pasqyrim asociativ Fjala 6 bita
Etiketa 26 bita
s ë
Gjatësia e adresës = (s + ë) = 32 bite 64
Madhësia e blloku = madhësia e linjës = 2ë = 64 bajtë
2ë = 26 , pra ë = 6 bite
Prandaj, s= 32- 6 = 26 bitë (madhësia e Tag-ut).
Pasqyrimi set asociativ
Pasqyrimi set-asociativ është një kompromis që paraqet pikat e forta të
qasjeve direkte dhe associative duke zvogëluar te metat e tyre.
Në këtë rast, cache përbëhet nga një numer i setave, secili prej të cilave
përbëhet nga një numër linjash. Marrëdhëniet janë:
m=vxk 65
i = j modulo v
i = numri setit ne kesh
j = numri i bllokut ne memorie kryesore
m = numri i linjave ne kesh
v = numri i setave
k = numri i linjave në secilin set.
A particular block of main memory can be mapped to one particular
cache set only!!!
Kjo referohet si pasqyrim k-ëay set-associativ.
Me pasqyrim set-asociativ, bloku Bj mund të pasqyrohet në ndonjë linjë të
set-it j. (kjo tregohet ne Fig. 12.a ) ku pasqyrohen v-blloqet e para te
memories kryesore
Fig. 12 (a) pasqyrimi k-ëay set asociativ 66
Me pasqyrim asociativ, cdo fjalë pasqyrohet në shumë linja te keshit.
Për pasqyrim set-asociativ, cdo fjalë pasqyrohet në të gjitha linjat e keshit në
setin specifik, kështu që blloku Bo pasqyrohet në setin 0 dhe kështu me
radhë.prandaj keshi set asociativ mundet fizikisht të iplementohet si një k-
associative kesh.
Po ashtu është e mundur implementimi i keshit set-asociativ si pasqyrim k
direkt i keshit siq eshte prezantuar në Fig.12.b.
Fig. 12. (b) k direct–mapped caches 67
Nëse një blok vendoset në një set të restriktuar në kesh, cache është set
asociativ. Në shembullin e mëposhtëm Set ka 2 blloqe!!!
Bloku memorues 3 mund të shkojë vetëm në Cashe SET (3 MOD 2) = 1 në
cache.
Seti zakonisht zgjidhet nga selektimi i bitit që është: 68
(Adresa e Block-ut) MOD (numri i set-eve në cashe)
Pra këtu k = 2 atëherë kemi një pasqyrim tëo-ëay set asociativ
Tek kjo teknikë e pasqyrimit adresa e memories kryesore është e ndarë në
fushën tag, fushën set, dhe fushën ëord. Fushat tag dhe ëord pretendojnë të
njejtin rol si më parë ndërsa fusha set na tregon se në clin set të keshit të
pasqyrohet memoria kryesore.
Të përmbledhim:
Gjatësia e adresës = (s + ë) bita
Numri i njësive të adresueshme = 2s+ë (fjalë ose bajtë)
Madhësia e blloku = madhësia e linjës = 2ë fjalë ose bajtë
Numri blloqeve në memorie kryesore 2sw 2s
2w
Numri i linjave në set = k
Numri i setave v = 2d
Numri i linjave në kesh = m = k v = k x 2d
Madhësia e keshit = k x 2d+ë 69
Madhësia e tagut = (s-d)
Përmbledhje-Strategjitë e organizimit të cach-it
70
Shembull: Konsideroni një kesh me pasqyrim 8-ëay set associative me madhësi
512 KB me madhësi blloku prej 1 KB. Madhësia e tagut është 7 bitë. Gjeni
kapacitetin e memories.
Zgjidhje:
Janë dhënë
Madhësia e setit = 8
Madhësia e memories kesh = 512 KB
Madhesia e bllokut = madhësia e linjes = 1 KB
Numri i bitave në tag = 7 bitë
Konsiderojmë se memoria është adresueshme në bajt.
Kemi, madhësinë e bllokut = 1 KB = 210 Bajta
Prandaj, numri i bitave në block-offset është = 10 bits
71
Numri i linjave në kesh-
Numri total i linjave në kesh
= Madhësia e keshit / madhësia e linjës = 512 KB / 1 KB = 512 lines
Prandaj, numri i linjave në kesh është = 512
Numri i setave në kesh
Total number of sets in cache
= Total number of lines in cache / Set size = 512 / 8 = 64 sets = 26 sete
Thus, Number of bits in set number = 6 bits
72
Numri i bitave në adresën fizike-
Numri I bitave në adresën fizike
= Numri i bitave në tag + Number of bits in set number + Number of bits in block
offset = 7 bits + 6 bits + 10 bits = 23 bits
Prandaj, numri i bitave në adresën fizike është = 23 bitë
Madhesia e memories fizike
Numri i bitave në adresen fizike = 23 bitë
Prandaj, madhësia e memories kryesore është = 223 Bajt = 8 MB
73
Detyra te zgjidhura në lidhje me teknikat e pasqyrimit në Kesh (perveç
nga libri bazë) mund te gjeni edhe në linqet e mëposhtme:
https://ëëë.gatevidyalay.com/direct-mapping-cache-practice-problems/
https://ëëë.gatevidyalay.com/fully-associative-cache-practice-problems/
https://ëëë.gatevidyalay.com/set-associative-mapping-practice-problems
74
Adresimi Cache/Procesor
Cache ka një etiketë adrese në çdo bllok kornizë. Tiketa(tagu) i çdo Cache
blloku mund të përmbajë informata të mjaftueshme kur kërkohet të shihet a
përshtatet bllok adresa nga CPU-ja. është rregull që të gjithë TAG-s kërkohen
në paralel sepse shpejtësia është kritike.
Ka një mënyrë për të ditur që një cache bllok nuk ka informatë të vlefshme.
Procedura më e zakonshme është duke shtuar një bit të vlefshëm (Valid Bit)
në tag për të thënë nëse është ose jo adresa valide.
INDEX: Zgjedh Set-in. 75
TAG: Përdoret për të kërkuar për gjetje në Cache nëse biti valid (VB) është
1
INDEX: Zgjedh Set-in.
TAG: Përdoret për të kërkuar për gjetje në Cache nëse biti valid (VB) është 1.
76
Nëse biti nuk është vendosur, para TAG-ut atëherë nuk mund të ketë
përshtatje në ketë adrese
77
Nëse adresa e gjeneruar nga procesori nuk përshtatet me adresën e TAG-ut
atëherë nuk mund të ketë përshtatje në ketë adrese
78
Cache Miss: Teknikat e zëvendësimit
Cili bllok duhet të zëvendësohet në një Cache miss?
Kur ngjan një “dështim” kontrolleri i Cache-it duhet të selektoj një bllok që ta
zëvendësojë me të dhënën e dëshiruar.
• Cashe me adresim direkt:
Vetëm një opcion: vetëm një bllok kërkohet për ta gjetur dhe vetëm një bllok
duhet zëvëndsuar. (zëvendësohet blloku në lokacionin ku blloku ardhës ka për
të shkuar.
•Fully Associative ose Set Associative
• Përfshinë një bllok të zgjedhur rastësisht
• First in First Out- Blloku që ka ndenjur për më shumë kohë në cache
• Least Reccently used (LRU)- blloku që është përdorur më së pakti
gjatë qëndrimit në cache (blloku zëvendësohet me një që nuk eshte
përdorur për një kohë të gjatë) 79
Me kesh plotësisht shoqërues (fully associative ) dhe set asociativ , një politikë
zëvëndësimi është e nevojshme për të nxjerrë një bllok nga keshi.
• Një politikë zëvendësimi optimale do të jetë në gjendje të “shikojë në të
ardhmen” se cilat blloqe nuk do të nevojiten një periudhë më të gjatë kohore.
• Edhe pse është e pamundur të implementohet një algoritëm optimal i
zëvendësimit, është e dobishme për ta përdorur atë si një pikë referimi për
vlerësimin e efikasitetit të cilësdo skemë me të cilën do të mirremi
Politika e zëvendësimit që zgjedhim varet nga lokaliteti që po përpiqemi të
optimizojmë- zakonisht jemi të interesuar në lokalitetin e përkohshëm
• Algoritmi least recently used (LRU) mban gjurmët e tij të herës së fundit qe nje
bllok ishte i qaseshem dhe debon bllokun qe ka qenë i paperdorur per nje peride
me te gjate kohore.
E meta e kësaj qasjeje është kompleksiteti i tij: 80
LRU duhet të mbajë një histori qasjeje për secilin bllok, i cili në fund të fundit
ngadalëson keshin.
First-in, first-out (FIFO) është një politikë popullore e zëvendësimit në kesh.
Sipas ketij algoritmi blloku që ka qenë me gjatë në kesh duhet të
zëvëndësohet pavarësisht se kur është përdorur më së fundi.
Një politikë (random replacement) e zëvendësimit të rastësishëm nënkupton:
zgjedhjen e një blloku në mënyrë të rastësishme dhe e zëvendëson atë me
një bllok të ri.
Zëvendësimi i rastësishëm me siguri mund të nxjerrë një bllok që
do të jetë i nevojshëm më shpesh ose të nevojitet së shpejti.
Performanca e memories në hierarki vlerësohet nga koha efektive e qasjes
(effective access time)-(EAT).
• EAT merr në konsideratë raportin e gjetjes (hit ratio) dhe kohët relative të
qasjes në nivelet sukcesive të memories
81
.
• EAT për dy nivele të memories jepet me:
EAT = H × AccessC + (1-H) × AccessMM.
ku H është cache hit rate
AccessC dhe AccessMM janë kohët e qasjes për kesh dhe memorie
kryesore.
Shembull: Konsideroni një sistem me kohë të qasjes në memorie kryesore
prej 200ns i mbeshtetur nga Keshi që ka një kohë të qasjes prej 10ns dhe
raport të gjetjes ( hit rate) prej 99%.
• Nëse qasja do not overlap, atëherë EAT është:
0.99 (10 ns) + 0.01 (10 ns + 200 ns) = 9.9 ns + 2.01 ns = 12 ns
Ky ekuacion pë përcaktimin e e kohës efektive të qasjes mund të zgjerohet
për numër më të madh të niveleve të memorive. 82
Teknikat e shkrimit në Cache
• Koherenca ndërmjet një fjale në Cache dhe kopjes së saj në memorie
duhet të mbahet në çdo kohë.
• Një grup teknikash përdoren për operacionet e shkrimit për blloqet në
memorien kryesore për sa kohë janë edhe në Cache
• Këto teknika përcaktojnë edhe shkallën e koherencës që mund të mbahet
në mes të informacionit në cache dhe kopjes së tij në memorien kryesor
•Çfarë ngjanë në një shkrim?
• Janë dy teknika (strategji) bazike kur shkruhet në cache:
• ërite-through 83
• ërite back
ërite –through. Informata shkruhet në të dyja blloqet, në cache dhe në bllok
të nivelit tjetër më poshtë në hierarki. Kjo teknikë mban koherencën ndërmjet
informacionit në cache dhe kopjes së tij në memorie dhe e gjithë kjo reflekton
me koston e kohës shtesë për të shkruar informacion në memorie.
Kjo sjellë në rritjen e kohës së aksesit
84
Nevojitet një ërite Buffer ndërmjet Cache-it dhe memories.
-Procesori: shkruan te dhënat edhe në Cache edhe në ërite
buffer
Kontrolleri i memories: shkruan përmbajtjen e buffer-it në
memorie.
ërite bufferi është vetëm një FIFO.
85
ërite-back – Informacioni shkruhet vetëm në bllok të cache-it. Shkrimi në
memorie shtyhet deri kur të vjen nevoja për zëvendësim.
- Çdo blloku në cache i jepet një bit i quajtur “dirty bit”, që tregon se
të paktën një operacion shkrimi ka ndodhur në bllok
- Në momentin e zëvendësimit shikohet biti i “papastërtisë”, nëse
është i vendosur atëherë shkruhet në memorien kryesore, përndryshe
blloku mbishkruhet nga blloku i ri
- Koherenca sigurohet vetëm në momentin e zëvendësimit
86
ërite back – Pjesa II
87
Memoria virtuale –konceptet dhe “analogjia” me Cache
Cache ruan një nënbashkësi të hapësirave të adresave të RAM-it.
Hapësira e adresave është bashkësi e adresave valide.
Çdo adresë në Cache, ka një adresë korrosponduese në RAM.
Kjo nënbashkësi e adresave (dhe kopjet korrosponduese të të dhënave)
ndryshon në lidhje me kohen, varësisht nga sjellja e programit.
Cache shfrytëzohet për të mbajtur seksionet më të shpeshta të RAM-it, për
qasje më të shpejtë në to.
Kjo është e nevojshme, sepse shpejtësia e CPU-së rritet më shpejt se sa
shpejtësia e qasjes në memorie
Pasi RAM-i s’mund t’iu pershtatet CPU-së - shfrytëzohet Cache.
Nëse do të kishte mundësi të iu qasemi RAM-it në 3 GHz, s’do të kishte
ndonjë nevojë për Cache, sepse RAM-i do të mund të përshtatej.
88
Çka nëse ne dëshirojmë më shumë RAM se sa që kemi në dispozicion?
P.sh, ne mund të kemi 4 GB RAM, çka nëse dëshirojmë të kemi 16 GB.
Si do të mund ti menaxhojmë?
Një mënyrë për të zgjeruar sasinë në qasje të memories nga një program është
shfrytëzimi i diskut.
Prej këtu ne mund të shfrytëzojmë 16 GB të hapësirës së diskut.
Në ndonjë moment vetëm 4 GB “qëndron” në RAM.
Në fakt, RAM luan rolin e Cach-it për disk (shikuar nga aspekti i hierarkisë)
Ideja e zgjerimit të memories quhet memorie virtuale.
Quhet “virtuale” vetëm pse nuk është RAM.
Nuk e ka kuptimin që është fallco.
89
Problemi real me disk është vërtetë problemi real i qasjes së më ngadaltë.
P.sh. nëse regjistrat mund të qasen në 1 ns dhe Cache në 5 ns, RAM në rreth
100 ns, atëherë disku është i qasshëm në pjesë të sekondës.
Pra, rreth një milion herë më ngadalë është qasja në disk se sa në një
regjistër.
Ku është epërsia atëherë?
Epërsia e diskut është, mundësia e lehtë e shfrytëzimit të shumë hapësire
memoruese për çmim të vogël.
Fillimisht, memoria virtuale u përdor për të zgjeruar RAM-in.
Programet nuk do të duhej “ të kujdeseshin” që memoria është “ RAM real”
ose disk. SO do të kuptoj se nga.
Më vonë, memoria virtuale u përdor si një mjet për të mbrojtur memorien.
Çdo program shfrytëzon një rang të adresave që quhen hapësirë e adresave
90
Supozimi i dizajnerve te Sistemeve Operative ishte që ndonjë user programi
nuk i besohej.
User programet do të shkatërrojnë vetveten, programet tjera user, dhe
vetë sistemin operativ. Kjo duket si një pamje negative, megjithatë kjo
është se si janë dizejnuar sistemet operative.
Nuk është e nevojshme që programet janë qëllimisht malicioze.
Programet munden aksidentalisht të jenë malicioze ( të modifikojnë të
dhënat në memorie)
Memoria virtuale mund të ndihmojë këtu. Ajo mund të parandalojë
programet prej interferimeve nga programet tjera.
Kohë pas kohe, dëshirojmë që programet të bashkëpunojnë (kooperojnë)
dhe të ndajnë memorien.
Memoria virtuale ndihmon në ketë aspekt. 91
Si punon memoria virtuale?
Kur një kompjuter është duke ekzekutuar, shumë programe janë njëkohesisht
“sharing” në CPU.
Çdo program në ekzekutim, plus struktura e të dhënave për të menaxhuar
atë, quhet Proces.
Çdo proces është i alokuar në hapësirë të adresave. Kjo është një bashkësi
e adresave valide që mund të përdoren.
Këto hapësira adresash duhet të ndryshohen në mënyrë dinamike. P.sh,
programi mund të kërkojë memorie shtesë (nga alokimi i memories dinamike)
prej Sistemit Operativ.
Nëse procesi përpiqet t’iu qaset një adrese që nuk është pjesë e
hapësirës së saj të adresave, do ngjan një gabim dhe Sistemi Operativ
e merr përsipër “dështimin” e procesit 92
Cili është roli i memories virtuale? Kur ju ekzekutoni ndonjë program, ai
gjeneron adresa. Adresat gjenerohen në njërën prej tri mënyrave:
A load instruction
A store instruction
Fetching an instruction
Load & store krijojnë adresë të të dhënave, ndërsa fetching an instruction
krijon instruksione të adresave. Natyrisht, RAM-i nuk bën dallim ndërmjet
këtyre dy lloj adresave. Ai thjesht e sheh si një adresë.
Çdo adresë e gjeneruar nga një program konsiderohet virtuale. Ajo duhet
të përkthehet në adresë reale fizike. Prej këtu përkthimi ngjanë gjatë
gjithë kohës.
Mund të mendohet ndoshta që përkthimi i secilës adresë nga virtual
në fizike është ide e “marrë”, për shkak të asaj se sa ngadalë bëhet ajo.
Megjithatë, prej përkthimit të adresave bëhet mbrojtja e memories.
93
Paging –u (Faqosja)
Në cache sjellen sasi të të dhënave që quhen blloqe ose cache lines.
Këto zakonisht janë ndërmjet 4 dhe 64 bajtë.
Ka një termonologji korrosponduese për memorien virtuale në cache line.
Kjo quhet faqe
Një faqe është një sekuencë e N- bajtve ku N është një fuqi e 2-shit.
Madhësia e faqeve ka qenë së paku 4 KB madhësi dhe mund të jetë
64KB ose më shumë.
Hapsira e adresave të një procesi është e ndarë në madhësi të barabarta
(pages). (p.sh, me madhësi 4KB).
Memoria kryesore ndahet page frames ku mund të “mbajë” secila nga një
faqe.
94
Madhësia e hapësirës së adresave të një procesi mund të jetë më e
madhe se memoria kryesore
Në ndonjë moment, disa faqe të një procesi mund të mos jenë në memorie
kryesore. Të gjitha faqet janë faqosur në disk (paging disk).
Le ta marrim një shëmbull më të thjeshtë:
Po supozojmë që kemi 1 MB të RAM-it fizik. Në mund ta ndajmë RAM-
in në faqe nga 4 KB.
Prej këtu 1M/4K = 256 FAQE. Nga këtu, RAM-i jonë ka 256 faqe fizike,
ku secila mban nga 4 KB.
Le të zupozojmë që kemi 10 MB të diskut. Nga këtu, ne kemi 2560 faqe
disku. Në realitet, shumë nga këto faqe mund të konsiderohen faqe
invalide.
95
Kur një faqe nuk është referencuar në memorie, ajo duhet të sjellët prej disku
në memorie. Kjo është page fault (gabim faqeje).
Nëse të gjitha kornizat e faqes janë mbushura një gabim faqeje ka ndodhur ,
një faqe duhet të nxjerret prej memorie duke shfrytëzuar një algoritëm
zëvëndësues të faqes.
E fundit e përdorur është një shëmbull Least Rcently Used (LRU) i kësaj.
Ka një Tablë faqeje (Page Table) për proces, të mbajtur nga Sistemi Operativ.
Përkthimi prej adrese virtuale në adresë fizike kryhet nga hardueri.
Një page fault (gabim faqeje) therret S.O.
96
Nëse një program bëhet shumë i madh për memorien fizike, kjo është punë e
programerit që ta përshtatë atë. Programerët do të duhej ndarë programet në
pjesë. Memoria virtuale u zbulua që tu lehtësohet programerëve kjo barrë:
Kjo në mënyrë automatike menaxhon dy nivelet e hierarkisë së memories të
reprezentuar nga memoria kryesore dhe kujtesa sekondare.
Fig. Adresimi i memories virtuale 50
Në Fig. ** është paraqitur pasqyrimi i memories virtuale në memorie fizike për
një program me katër faqe.
Kjo bazohet në katër faqe, A, B, C dhe D. Lokacioni aktual i tri prej
katër blloqeve është në memorien fizike kryesore ndërsa tjetri është
i loacionuar në disk.
Fig. ** Shembull pasqyrimi të memories virtuale në memorie fizike 98
Virtual Memory Example
A computer system has 4 GB of main memory and a virtual address space
equal
64 GB. Each page is 8 KB long.
Hoë many pages are there in the virtual address space?
Hoë many page frames are there in memory?
64 * 2^30 / (8 * 2^10) = 8 * 2^20 = 2^23 pages
4 * 2^30 / (8 * 2^10) = 4 * 2^17 = 2^15 page frames
99
Shembull 2. Supozoni një sistem ka një hapësirë të adresave virtuale prej 8 KB,
një memorie fizike prej 4 KB, dhe një madhësi faqeje prej 1 KB.
a) Sa faqe virtuale janë?
b) Të paraqitet formati i adresës virtuale.
c) Të paraqitet formati i adresës fizike
Zgjidhje:
a) Ne kemi 213/210 = 23 faqe virtuale
b) Një adresë virtuale ka 13 bitë (8K = 213) me 3 bitë për fushen e faqes (page)
dhe 10 bitë për fushën offset, sepse madhësia e faqës është 1024 B.
100