You are on page 1of 21

Zadatak 1:

Projektovati memorijski sistem sa slijedećim rasporedom:

ROM ROM RAM RAM

0KB 64KB 128KB 192KB 256KB

koristeći čipove ROM - 16K x 8 i RAM - 64K x 1.

Rješenje:

Modeli čipova koji se trebaju koristiti:

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.

Prvi i drugi segment memorije od po 64kB su projektovani na ovaj način.

b) Segment od 64kB koji čine RAM moduli se projektuje korištenjem 8 čipova od po 64


kb (kilo bita) koji se vezuju paralelno da bi formirali put podataka od 8 bita (8 x 64kb
= 64kB). 16 adresnih linija je potrebno za adresiranje segmenta memorije od 64kB
(216 = 64k) Svih 16 adresnih linija A0 – A15 se vodi na svaki čip paralelno i one se
koriste za adresiranje jednog bita memorije unutar svakog čipa istovremeno. Tako
svaki čip istovremeno razmjenjuje po jedan bit podataka na put podataka (sabirnicu
podataka) čime se formira kompletan put od 8 bita, tj. 1 bajt. Ovo je prikazano na
Slici b.
Ovaj memorijski segment je projektovan tako da se povezivanjem osam čipova kapaciteta
8kB proširuje memorijska riječi sa 1 bita na potrebnih 8 bita i tako se postiže traženi
kapacitet od 64kB.

A0-15 A0-13
A0-13 0x0000 – 0x3FFF
ROM

E D0-7

A0-13 0x4000 – 0x7FFF


ROM

E D0-7
A14
Dekoder

A15
A0-13 0x8000 – 0xBFFF
SEL ROM

E D0-7

A0-13 0xC000 – 0xFFFF


64 KB segment ROM
ROM-a

E D0-7

D0-7 (8 linija podataka)

Slika a.

(8 linija ......
D0-7 podataka)
D0 D1 D7
D D ...... D
R/W R/W R/W

RAM RAM RAM

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

A0-15 0x10000 – 0x1FFFF


ROM2

SEL D0-7
A16
Dekoder

A17
A0-15 0x20000 – 0x2FFFF
MEMSEL RAM1

SEL D0-7
R/W

A0-15 0x30000 – 0x3FFFF


RAM2

SEL D0-7
R/W R/W

D0-7

Blok dijagram
memorijskog sistema

Slika c.

Za projektovanje opisanog memorijskog sistema korišeno je 8 predloženih čipova ROM-a i


16 predloženih čipova RAM-a.
Provjera:
8 x 16k x 8 = 128k x 8 = 128kB (ROM) i
16 x 64k x 1 = 2 x 64k x 8 = 128kB (RAM)
Zadatak 1: Projektovati segment ROM memorije 8 x 4 korištenjem memorisjkih čipova
ROM 8x2,

Zadatak 2: Projektovati logiku koja generiše signal selekcije memorijskog segmenta iz


prethodnog zadatka, za sistem sa 7-bitnom adresnom sabirnicom i ako je ROM segment
smješten na adresu 0.
Zadatak 3: Projektovati segment ROM memorije 16 x 2 korištenjem memorisjkih čipova
ROM 8x2
Moduli se povezuju tako da memoriju proširimo do potrebnog broja riječi (16). Kapacitet
modula (8=23) određuje da se tri adresne linije dovode na adresne pinove modula, a preostala
četvrta linija (kapacitet segmenta je 16 =24) se koristi za selekciju modula. A0-A2 se vode na
pinove modula, a A3 se kombinovana (AND) sa signalom selekcije ovog memorijskog
segmenta vodi na CE pin.
Zadatak 4: Projektovati logiku koja generiše signal selekcije memorijskog segmenta iz
prethodnog zadatka, za sistem sa 8-bitno adresnom sabirnicom i ako je ROM segment
smješten na adrese:
a) 0 - 15
b) 16 - 31
c) 240 - 255

a) 0 - 15 heksadecimalno je 00 - 0f, gornja 4 bita adrese su 0000.

CE

A4 A7
A5 A6

b) 16 - 31 heksadecimalno je 10 - 1f, gornja 4 bita adrese su 1000.

CE

A4
A5 A6 A7

c) 240 - 255 heksadecimalno je f0 - ff, gornja 4 bita adrese su 1111.

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.

Dizajn cjelokupnog sistema:

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

Ulazni uređaj na adresi 60H (0110 0000):

A5 A6

A0 - A4 A7
OSVJEŽAVANJE MEMORIJE

Blok šema DRAM čipa sa logikom za osvježavanje: brojač za osvježavanje, multiplekser za


izbor adresnih linija iz brojača ili iz latcha eksternih adresa reda memorije i sklop za
upravljanje i tajming osvježavanja. Signal kojim se zahtijeva osvježavanje je eksterni
(Initiate)

Vremenski dijagram operacija osvježavanja:

a.

b.

svaki impuls – jedan ciklus T - ukupno vrijeme u kojem je


osvježavanja – u trajanju tRC neophodno izvršiti osvježavanje

gdje j e pod a. prikazano distribuirano osvježavanje, a pod b. ‘burst’ osvježavanje. Broj


ciklusa osvježavanja koji se obave u T je jednak broju redova.

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.

(0.133ms : 16 ms) * 100% = 0.85%


Zadatak 2.
Odrediti postotak vremena koje se gubi na osvježavanje memorije koje se izvrši u 64 puta u
milisekundi, pri čemu je trajanje jednog ciklusa osvježavanja tRC je 250ns.

Ukupno trajanje osvježavanja = 64 * 250ns = 16000 ns = 0.016ms.

(0.016ms : 1 ms) * 100% = 1.6%.

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

Period jednog ciklusa osvježavanja = 32ms / 2048 = 15.625µs.


KEŠ MEMORIJE
Zadatak 1:
Objasniti korake u radu sa keš memorijom u slučaju sukcesivnog adresiranja riječi dimenzije
32 bita sa slijedeće četiri lokacije:

b31.........................................................b14 b13........................ b4 b3........b0


a) 000000000000000000 0000000001 0100 (0x0000 0014)
b) 000000000000000000 0000000001 1100 (0x0000 001C)
c) 000000000000000000 0000000011 0100 (0x0000 0034)
d) 000000000000000010 0000000001 0100 (0x0008 0014)

Keš je direktno preslikani, kapaciteta 16kB i organizovan je u 1024 linije (bloka) od po 16


bajta. Adrese su radi lakše postavke zadatke već podijeljene na tag, indeks i ofset.

a)
Prvi korak je provjera da li je pod indeksom (=1) važeća linija (blok) podataka:

Index Valid Tag 0x0-3 0x4-7 0x8-B 0xC-F


0
1
2
3
4
5

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:

Indeks Valid Tag 0x0-3 0x4-7 0x8-B 0xC-F


0
1 1 00............................00 a b c d
2
3
4
5

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:

Indeks Valid Tag 0x0-3 0x4-7 0x8-B 0xC-F


0
1 1 00............................00 a b c d
2
3
4
5

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:

Indeks Valid Tag 0x0-3 0x4-7 0x8-B 0xC-F


0
1 1 00............................00 a b c d
2
3 1 00............................00 e f g h
4
5

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

Procesoru ide riječ q pošto se ona nalazi na ofsetu 4 (0100).

Zadatak 2. Razmotriti sistemski keš direktno preslikan sa slijedećim osobinama:


Riječ = 32 bita (pretpostavljamo da je veličina adrese jednaka veličini riječi)
Blok (linija) = 2 riječi
Kapacitet keša (namijenjen za blokove sa podacima) = 32 KB

(a) Koliko je blokova u kešu?


Kapacitet keša/veličina bloka = 32KB/8B = 4K
(b) Koliko je bita potrebno da se specificira indeks?
2Indeks = 4K (broj linija), 2I = 22 210 = 212 , I =12
(c) Koliko je bita potrebno da se specificira ofset?
2M = 8 (broj bajta u liniji), 2M = 23 , M =3
(d) Koliko je bita potrebno da se specificira tag?
T = 32 - I – M = 32 – 15 = 17

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

(c) Pošto je ofset 11000, tj. 24 proslijedit će se riječ 6.

(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:

Slika 1. Primjer direktno preslikanog keša, sa 8 blokova (linija)


Slika 2. Primjer dvostruko grupno preslikanog keša, sa 4 grupe
KEŠ MEMORIJE

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

a) Potpuno asocijativno preslikavanje:

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 2. Projektovati sistemski keš kapaciteta 64kB sa 32-bitnom linijom keša, za


memoriju kapaciteta 64MB:

a) kao direktno preslikani


b) kao 4-struko grupno preslikani

Direktno preslikani 4-struko grupno preslikani


Broj linija/grupa keša 16,384 - 16k 4,096 – 4k
Veličina linije u bajtima 4 bajta 4 bajta
Format indeksa 14 bita (214 = 16kB) 12 bita (212 = 4kB)
Format ofseta 2 bita 2 bita
26 26
Broj adresnih linija 26 (2 = 64MB) 26 (2 = 64MB)
(Tag + Indeks + Ofset)
Format taga 10 12
Broj linija u grupi 1 4
Zadatak 3. Projektovati sistemski keš kapaciteta 512kB za 64bitnu memoriju kapaciteta
512MB:
a) kao direktno preslikani
b) kao 4-struko grupno preslikani

Direktno preslikani 4-struko grupno preslikani


Broj linija/grupa keša 64k = 216 16k = 214
Veličina linije u bajtima 8 bajta 8 bajta
Format indeksa 16 bita 14 bita
Format ofseta 3 bita 3 bita
Broj adresnih linija 29 (229 = 512MB) 29 (229 = 512MB)
(Tag + Indeks + Ofset)
Format taga 10 12
Broj linija u grupi 1 4

Zadatak 6: Pretpostavimo da posamatrate keš radi snimanja njegovih performansi. Uočite


da nakon 200 čitanja se ostvari samo 150 hitova. Ako znate da je vrijeme odziva keša 10 ns
po čitanju a da je brzina RAMa 60 ns po čitanju, koliko je prosječno vrijeme odziva
memorije?

Koeficijent iskoristivosti keša je h=150/200 =0.75


Prosječan odziv memorije je:
TM = h TC +(1-h) TP = 0.75 *10ns + (1-0.75)*60ns
TM = 7.5ns + 15ns = 22.5 ns

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 = ?

TM = h TC +(1-h) TP = 0.75 *8ns + (1-0.75)*65ns


TM = 6ns + 13.25ns = 19.25 ns

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

TC = (39.9ns – 26,25ns)/0.65 = 21ns

You might also like