Professional Documents
Culture Documents
Primjeri Zadataka Projektovanja Memorije
Primjeri Zadataka Projektovanja Memorije
Rješenje:
A0-13
ROM
E D0-7
E
A0-15
RAM
R/W D0
a) Segment od 64kB koji čine ROM moduli se projektuje korištenjem 4 čipa od po 16kB
(4 x 16kB = 64kB). 16 adresnih linija je potrebno za adresiranje segmenta memorije
od 64kB (216 = 64k) Donjih 14 adresnih linija A0 – A13 se vodi na svaki čip paralelno
i one se koriste za adresiranje bajta memorije unutar čipa (214 = 16k), a gornje 2 se
vode na ulaze dekodera 2 x 4 što je prikazano na Slici a. Ovaj memorijski segment je
projektovan tako da se povezivanjem četiri čipa kapaciteta 16kB proširuje broj
memorijskih riječi do potrebnog kapaciteta od 64kB.
A0-15 A0-13
A0-13 0x0000 – 0x3FFF
ROM
E D0-7
E D0-7
A14
Dekoder
A15
A0-13 0x8000 – 0xBFFF
SEL ROM
E D0-7
E D0-7
Slika a.
(8 linija ......
D0-7 podataka)
D0 D1 D7
D D ...... D
R/W R/W R/W
E E ...... E
A0-15 A0-15 A0-15
A0-15 ......
SEL ......
64 KB segment RAM-a
Slika b.
c) Kompletan memorijski sistem od 256kB se projektuje povezivanjem dva segmenta od
po 64kB ROM-a svaki formiran kako je opisano pod (a): ROM1 i ROM2 i dva
segmenta od po 64kB RAM-a svaki formiran kako je opisano pod (b): RAM1 i
RAM2. Ova četiri segmenta se vezuju tako da proširavanjem broja riječi grade sistem
memorije od (4 x 64kB = 256kB). 18 adresnih linija je potrebno za adresiranje
memorije od 256kB (218 = 256k) Donjih 16 adresnih linija A0 – A15 se vodi na svaki
segment i one se koriste za adresiranje bajta memorije unutar segmenta (216 = 64k), a
gornje 2 adresne linije se vode na ulaze dekodera 2 x 4 koji selektira odgovarajući
segment kao što je prikazano na Slici c.
A0-17 A0-15
A0-15 0x00000 – 0x0FFFF
ROM1
SEL D0-7
SEL D0-7
A16
Dekoder
A17
A0-15 0x20000 – 0x2FFFF
MEMSEL RAM1
SEL D0-7
R/W
SEL D0-7
R/W R/W
D0-7
Blok dijagram
memorijskog sistema
Slika c.
CE
A4 A7
A5 A6
CE
A4
A5 A6 A7
CE
A4 A7
A5 A6
Zadatak 5: Projektovati segment RAM memorije 16 x 4 korištenjem memorisjkih čipova
RAM 8x2, ako je pri organizaije memorije primjenjeno straničenje.
A 2-A 0
A2 A2 8x2 A2 A2 8x2
D1 D1
A1 A1 RA M A1 A1 RA M
D0 D0
A0 A0 CE A0 A0 CE
D3
D2
D1
D0
A2 A2 8x2 A2 A2 8x2
D1 D1
A1 A1 RA M A1 A1 RA M
D0 D0
A0 A0 A0 A0 CE
CE
A3
Zadatak 6:
Projektovati memorijski podsistem za arhitekturu sa 8-bitnim sabirnicama adresa i podataka
čiji je ulazno-izlazni podsistem memorijski mapiran. Memorijski podsistem se sastoji od 32
bajta ROM-a na adresi 00h napravljenih od jednog čipa 32x8; 128 bajta RAMa na adresi 80h
izgrađenog od čipova 64x4, dvosmjerni ulazno-izlazni uređaj na adresi 40h i ulazni uređaj na
adresi 60h.
8
A7 – A0 ROM
Segment
Relatively
Simple
CPU 8
D7 – D0
RAM
Segment
RD
WR
Input I/O
Device Device
ROM segment:
RD
A6
A7
A5
OE CE
32 x 8
ROM
A0-A5
A0–A5
D0-D7
D0-D7
RAM segment (potrebna su 4 čipa, prvo se dva povezuju tako da se proširi riječ na 8 bita, a
onda se takva dva para čipova povezuju do proširenja ukupnog broja riječi na 128):
RD
WR
A6
A7
WR RD CE
64 x 4
RAM WR RD CE
A0-A5
A0–A5 64 x 4
D0-D3 RAM
D0-D3
A0-A5
D4-D7
D0-D3
RD
WR
A6
A7
WR RD CE
64 x 4
RAM WR RD CE
A0-A5
A0–A5 64 x 4
D0-D3 RAM
D0-D3
A0-A5
D4-D7 D0-D3
Za ulazno izlazne uređaje nas zanima logika koja generiše pripadajuće E (enable) signale na
osnovu adrese. Logika za dvosmjerni I/O uređaj na adresi 40H (0100 0000):
A0 - A5 A7 A6
A5 A6
A0 - A4 A7
OSVJEŽAVANJE MEMORIJE
a.
b.
Zadatak 1.Odrediti postotak vremena koje se gubi na osvježavanje memorije koje se izvrši u
1024 ciklusa, svakih 16ms. Trajanje jednog ciklusa osvježavanja t RC je 130ns.
Ukupno trajanje osvježavanja = broj ciklusa * t RC = 1024 * 130ns = 133 120 ns = 0.133ms.
Zadatak 3.
Ako je učestalost osvježavanje memorije svakih 2 milisekunde, pri čemu se osvježava 1024
memorijskih lokacija organizovanih u matricu 32x32 kako često se mora inicirati
osvježavanje.
Period osvježavanja jednog reda = Period osvježavanja cijele memorije / broj redova =
= 2 ms /32 = 62.4 µs.
Zadatak 4.
Ako je memorija sa karatkteristikama opisanim u prethodnom zadatku organizovana u 128
redova, kako se često mora inicirati osvježavanje.
Period osvježavanja jednog reda = Period osvježavanja cijele memorije / broj redova =
= 2 ms /128 = 15.63 µs.
Zadatak 5.
Ako je period osvježavanja memorije 32ms, a osvježavanje zahtijeva čitanje 2048 redova,
koji je period izlaznog signala logičkog sklopa koji je odgovoran za generisanje signal za
iniciranje osvježavanja.
Period jednog ciklusa osvježavanja = period osvježavanja cijele memorije/ broj redova
a)
Prvi korak je provjera da li je pod indeksom (=1) važeća linija (blok) podataka:
1022
1023
Nakon što smo ustanovili da nema odgovarajućih podataka u kešu u drugom koraku učitava
se sadržaj memorijskih lokacija koji odgovara bloku pod indeksom 1 tj. memorijske lokacije
sa adresa 0x0000 0010 - 0x0000 001F (to su 4 riječi, kapaciteta 4 bajta svaka i u ovom
primjeru svaka označena respektivno sa a, b, c i d). Osim učitavanja potrebnih podataka
ažuriraju se tag – u ovo polje se upisuju vrijednosti adresnih bita b31 do b14 i polje Valid.
Vrijednost 1 Valid polja indicira da je u bloku (liniji) pod indeksom 1 korektan sadržaj sa
memorijskih lokacija određenih pripadnim tagom. Nakon ažuriranja podataka keš ima izgled:
1022
1023
Procesor je zahtijevao čitanje riječi sa ofseta 4, tako da se riječ b šalje procesoru na obradu.
b)
I u slučaju drugog podatka prvi korak je provjera da li je pod indeksom (=1) važeća linija
(blok) podataka. Analiziranjem prethodnu slika koja nam daje aktuelno stanje keša vidimo
da je pod indeksom 1, važeća linija podataka (polje Valid je 1, a tag iz adrese i tag zapisan
u kešu su saglasni). Podatak se ne mora učitavati iz memorije pošto je pronađen u
kešu.Drugi korak je čitanje riječi pod ofsetom 1100 (0xC) iz keša, a to je u ovom slučaju
riječ d.
c)
Prvi korak je opet provjera da li je pod indeksom (=3) važeća linija (blok) podataka:
1022
1023
Nakon što smo ustanovili da nema odgovarajućih podataka u kešu u drugom koraku učitava
se sadržaj memorijskih lokacija koji odgovara bloku pod indeksom 3 tj. memorijske lokacije
sa adresa 0x0000 0030 - 0x0000 003F (to su 4 riječi, kapaciteta 4 bajta svaka i u ovom
primjeru svaka označena respektivno sa e, f, g i h). Osim učitavanja potrebnih podataka opet
se ažuriraju tag – u ovo polje se upisuju vrijednosti adresnih bita b31 do b14 i polje Valid.
Nakon ažuriranja podataka keš ima izgled:
1022
1023
d)
I kod čitanja četvrtog podatka prvi korak je provjera da li je pod indeksom (=1) važeća linija
(blok) podataka. Polje Valid ima vrijednost 1, ali kad izvršimo poređenje taga zapisanog u
kešu pod indeksom 1 (00............................000) i taga izdvojenog iz adrese podatka koji se čita
(00............................010) vidimo da se razlikuju. Traženi podatak nije pronađen u kešu i
pristupa se čitanju iz memorije. Čitaju se memorijske lokacije sa adresa 0x0008 0010 -
0x0008 001F (to su 4 riječi, kapaciteta 4 bajta svaka i u ovom primjeru svaka označena
respektivno sa p, q, r i s). Nakon učitavanja ovih podataka ažurira se tag – u ovo polje se
upisuju vrijednosti adresnih bita b31 do b14 i ažurira se polje Valid. Novi izgled keša je:
Indeks Valid Tag 0x0-3 0x4-7 0x8-B 0xC-F
0
1 1 00............................10 p q r s
2
3 1 00............................00 e f g h
4
5
1022
1023
Zadatak 3.
Razmotrite memorijski sistem sa direktno preslikanim kešom, sa 8,192 blokova veličine 8
riječi svaki, za arhitekturu sa 4-bajtnom riječi i 32-bitnom adresom. Ako se zahtijeva čitanje
bajt sa adresom 0x081a9ed8 tada:
(a) Odredite indeks, izražen u dekadnom brojnom sistemu, bloka keša koji će se ispitati?
(b) Koja vrijednost taga, izražena u dekadnom brojnom sistemu, će se porediti sa
vrijednosti taga tog bloka?
(c) Ako tag odgovara koja od riječi (0-7) iz bloka će se proslijediti procesoru?
(d) Ako tag ne odgovara sa koje će se adrese čitati podaci?
(a) Prvo treba odrediti veličinu indeksa i ofseta da bismo mogli izdvojiti indeks iz adrese.
Pošto je u kešu 8K blokova, onda indeks zadovoljava izraz
2Indeks = 8K ,
tj. indeks se kodira na 13 bita. Veličina bloka je 8 riječi x 4 bajta, tj. 32 B, pa je ofset
na osnovu
2M = 32 , 2M = 25
jednak 5.
Adresa je 0x081a9ed8, pa su indeks i ofset izdvojeni iz adrese su 29ed8, donjih 18
bita – voditi računa da heksadecimalna cifra “a” predstavlja 10-10 binarno i da se
adresa na ovom mjestu dijeli na tag i ostatak adrese.Tako da se dobiju 29ed8 za indeks
i ofset. Kada se odbije donjih 5 bita koji predstavljaju ofset indeks je:
01 1001 1110 1101 1000 - tj. 0 1100 1111 0110 – binarno; a 0x14f6 – heksadecimalno
- 5366 – dekadno.
(b) Kada se iz adrese izdvoje indeks i ofset, presotali biti čine tag koji binarno ima
vrijednost: 0000 1000 0001 10, tj. 00 0010 0000 0110 binarno; a 0x206 - 518 dekadno
(d) Adresa sa koje se čita je adresa odgovarajućeg bloka memorije i koja se odredi
postavljanjem svih bita adrese koji odgovaraju ofsetu na 0. Dobijena adresa je
0x081a9ec0.
Slike za ilustraciju organizacije i rada keša:
Zadatak 1. Odredite u koji dio keša će se smjestiti “blok 12” iz memorije u slučaju slijedeća
tri primjera organizacije keša? Kapacitet keša i bloka keša je isti za sva tri slučaja.
Memorija
Blok
0 1 2 3 4 5 6 7 8 9 10 1112 ……. ……………..20 …………………………30
broj
Blok 12 iz memorije može se smjestiti u bilo koji blok keša. Tag adrese bloka 12 se upisuje u
lokaciju odgovarajuću izabranom bloku.
012 34 567
Podaci
Tag
b) Direktno preslikavanje – samo na blok 4 (12 moduo 8), adresu bloka 12 dijelimo sa brojem
blokova u kešu da dobijemo ostatak dijeljenja i tako odredimo lokaciju na koju se blok
smješta. Rezultat je 4 što predstavlja indeks bloka na kojem se smješta memorijski blok 12, a
tag se upisuje takođe pod indeksom 4. Indeks se kodira na 3 bita jer je ukupan broj keš linija
kojima se pristupa pomoću indeksa 8 = 23.
012 3 4567
Podaci
Tag
c) Grupno asocijativno – bilo gdje u grupi 0 (12 moduo 4). Adresu bloka 12 dijelimo sa
brojem blokova u kešu da dobijemo ostatak dijeljenja i tako odredimo lokaciju na koju se blok
smješta. Rezultat je 0 što predstavlja indeks blokova na koje se može smjestiti memorijski
blok 12, a tag se upisuje takođe pod indeksom 0. Indeks se u ovom slučaju kodira na 2 bita jer
je ukupan broj keš linija kojima se pristupa pomoću indeksa 4 = 22. Ovo smanjenje formata
zapisa indeksa se odražava na tag koji će upravo za jedan bit biti duži.
0 1 2 3
Podaci
Tag
Zadatak 7: Ako je koeficijent iskoristivosti keša h=0.75, a vrijeme odziva keša 8ns po
čitanju i vrijeme čitanja iz RAMa 65ns, koliko je prosječno vrijeme odziva memorije?
TC = 8ns
TP = 65ns
h = 0.75
TM = ?
Zadatak 8: Ako je prosječno vrijeme odziva memorije 39.9ns, koeficijent iskoristivosti keša
h=0.65, a vrijeme čitanja iz RAMa 75ns, koliko je vrijeme odziva keša po čitanju Tc?
TP = 75ns
h = 0.65
TM = 39.9ns
TC = ?
TM = h TC +(1-h) TP
TC = (TM - (1-h) TP )/h = (39.9ns – 0.35* 75ns)/0.65