Download as pdf or txt
Download as pdf or txt
You are on page 1of 36

5/27/2017

Leksion 9: Memorja (I).


Pergatiti: Dr. Ina Papadhopulli

Transferimi i të dhënave
Computer

Processor Devices

Control Input
Memory
Store to
Datapath memory Output
+
Registers Load from
memory

Regjistrat ndodhen në datapath. Nëse të dhënat ndodhen në


memorje duhet të bëhet load i tyre në proçesor (regjistra), te
kryhen veprime me to edhe te bëhet store në memorje.
2

1
5/27/2017

Hyrje
• Nevojitet memorje me kapacitet të madh,
kosto të ulët dhe që aksesohet shpejt!
• Si realizohet?
– Shfrytëzohet fakti që jo gjithë të dhënat dhe
instruksionet aksesohen vetëm një herë dhe me
të njëjtin probabilitet.

Parimi i lokalitetit
• Lokalitet në kohë: nëse një e dhënë është
aksesuar, atëhërë ka një probabilitet të madh
që kjo e dhënë të aksesohet sërisht.
• Lokalitet në hapësirë: nëse një e dhënë është
aksesuar, atëherë ka një probabilitet të madh
që edhe të dhënat që ndodhen afër saj të
aksesohen së shpejti.

2
5/27/2017

Analogji me një librari

Imagjinoni sikur të duhet të vendosni çdo


libër në vend përpara se të merrni një
libër tjetër.

Zgjidhje: Mbaj disa libra në tavolinë!

Po sikur të mbajmë në tavolinë disa libra që


mendojmë se do na duhen sërisht?

3
5/27/2017

Hierarkia e memorjes
• Eshtë një strukturë që përdor disa nivele mmorjeje; sa
më shumë rritet distanca nga proçesori aq më shumë
rritet madhësia e memorjes dhe koha e aksesimit.
• Shfrytëzon parimin e lokalitetit
• Ka tre lloje teknologjish për ndërtimin e memorjeve.

Kapaciteti Koha mesatare Kosto/GB (në


e aksesimit 2008)
SRAM 100 KB 0.5-5 ns $2000-$5000

DRAM 100 MB 50-70 ns $20 - $70

Hard Disk 100 GB 5-20 ms $0.20 - $2


7

Teknologjia SRAM/DRAM

A SRAM Cell

SRAM DRAM
6 transistorë / qelizë memorjeje 1 transistor / qelizë memorjeje
 Densitet i ulët  Densitet i lartë

Aksesim i shpejtë: vonesa 0.5 – 5 Aksesim i ngadaltë: vonesa 50-


ns 70ns

4
5/27/2017

Tekonologjia Disk Magnetik

Vonesa mesatare: 5 - 20 ms
Kapaciteti: 500-2000GB

Diferenca midis shpejtësisë së


DRAM dhe proçesorit

10

5
5/27/2017

Një hierarki tipike e memorjes


• Tentohet që të këtë aq kapacitet sa memorja më e
lirë dhe me shpejtësinë e memorjes më të
shpejtë!

11

Hierarkia e memorjes
• Kopjimi i të dhënave bëhet midis
dy niveleve që janë afër.
• Sasia më e vogël e informacionit
që mund të zhvendoset quhet
bllok (madhësia e tyre është fuqi
e 2-it).
• Nëse të dhënat e kërkuara nga
proçesori gjenden në nivelin e
sipërm atëherë kemi hit; në të
kundërt kemi miss.
12

6
5/27/2017

Cache: Ideja
• Ruaj të dhënat e përdorura së fundmi në një
memorje të vogël por të shpejtë.
• Shko tek memoja e madhe dhe e ngadaltë:
– Vetëm kur nuk gjen dot të dhënat/instruksionet në
memorjen më të shpejtë
• Si funksionon?
Parimi i Lokalitetit
Programi akseson vetëm një pjesë të vogël të hapësirës
së adresimit të memorjes brenda një intervali të shkurtër
kohe.
13

Cache
• Memorja midis proçesorit dhe memorjes kryesore.
• Mban të dhëna që janë aksesuar edhe që mendohet se do
të aksesohen së shpejti (parimi i lokalitetit)
• Zakonisht ka disa nivele cache-je
– Niveli i parë L1 ndodhet ne proçesor
– Niveli i dyte L2 ndodhet midis proçesorit dhe memorjes
kryesore
• Cache-ja ndërtohet nga teknologjia SRAM

Processor Devices
Control Input
Memory
Datapath Cache (DRAM) Output
Registers (SRAM) 14

7
5/27/2017

Blloqet në cache
Adresa 8-byte blocks
Bllok
..00000 Word
..00001 Byte
Word0
..00010
..00011
Block0
..00100
..00101
Word1 Memory Address
..00110
31 N N-1 0
..00111
Numri i Bllokut Offset
..01000
..01001
Word2
..01010
..01011
Block1 Bitet [31:N]  numri i bllokut
..01100
..01101
Bitet [N-1:0]  byte offset brenda bllokut
Word3
..01110
..01111

15

Hierarkia e memorjes: Terminologji


• Hit Rate: përqindja e aksesimeve të memorjes që
gjenden në nivelin e sipërm.
• Hit Time: koha për të aksesuar nivelin e sipërm të
hierarkisë, duke përfshirë edhe kohën që duhet për të
përcaktuar nëse blloku ndodhet apo jo në atë nivel.

• Miss Rate: 1-(Hit Rate)


• Miss Penality: koha për zëvendësimin e bllokut në një
nivel hierarkie më të lartë edhe koha për kalimin e
bllokut te proçesori.
16

8
5/27/2017

Hierarkia e memorjes: Terminologji


• Hit Time << Miss Penality
• Miss Penality = Access Time + Transfer Time

17

Hierarkia e memorjes
• Nëse hit rate është i madh atëherë koha efektive e aksesimit
është afërsisht sa koha e aksesimit të nivelit më të lartë.

18

9
5/27/2017

Sistemi i memorjes
• Faktor kryesor në përcaktimin e performancës, pasi
gjithë programet harxhojnë shumicën e kohës për
aksesimin e memorjes.
• Ndërtimi i sistemit të memorjes përcakton
gjithashtu:
– Si gjenerohet kodi nga kompilatorët
– Si aplikacionet përdorin kompjuterin
– Si Sistemi Operativ menaxhon memorjen dhe I/O

19

Cache - adresimi
• Si mund të përcaktohet nëse një e dhënë
është apo jo në cache?
• Po nëse është, si do të gjendet kjo e dhënë?
• Ka disa teknika hartëzimi:
– Direct Mapped
– Associative
– Set-Associative
20

10
5/27/2017

Teknikat e hartëzimit
• Adresa që gjenerohet nga CPU është adresa e të
dhënës në memorjen kryesore (do specifikohet më
saktë në leksionin pasardhës).
• Nëse e dhëna është kopjuar në cache atëherë
adresa e saj nuk është e njëjtë më adresën e
memorjes kryesore
• Teknikat e hartëzimit: konvertojnë adresën e
memorjes kryesore në pozicionin e të dhënës në
cache.
• Bitet tek adresa grupohen në fusha që kanë
kuptime te ndryshme 21

Si kopjohen të dhënat në cache


• Cache dhe memorja kryesore janë të ndara
në blloqe me të njëjtën madhësi.
• Kur gjenerohet një adresë nga CPU, ajo
kërkohet në cache
• Nëse nuk gjendet, ateherë gjithë blloku ku
bën pjesë e dhëna kopjohet në cache (parimi
i lokalitetit)

22

11
5/27/2017

Hartëzimi “Direct Mapped”


Adresa Numri i bllokut
..00000 00
..00001 01
..00010 10
..00011 11
..00100
Cache
..00101
Memorja

..00110
..00111
..01000
..01001
..01010
..01011 Cdo bllok në memorjen kryesore ka
..01100
..01101
një pozicion të caktuar në cache!
..01110
..01111

23

Hartëzimi “Direct Map”


• Fushat e adresës:
– Offset (Word): identifikon një byte në një bllok
– Index (Block): identifikon një bllok në cache
– Tag: pjesa e mbetur e biteve (nëse cache është n
herë më e vogël se memorja kryesore identifikon
një prej këtyre n grupeve)
Adresa e Memorjes
31 N+M-1 N N-1 0
Tag Index Offset

Madhësia e bllokut të cache = 2N byte


Numri i blloqeve të cache= 2M
Offset = N bite
Index = M bite 24
Tag = 32 – (N + M) bite

12
5/27/2017

Hartëzimi Direct Map


2 bitet me më pak
peshë përcaktojnë
byte në fjalë (1
fjalë: 32 bit)

Dy bitet e tjera me
më pak peshë të
adresës përcaktojnë
Ndodhet e dhëna bllokun në cache
në cache?
Krahasohet tag-u
me dy bitet më me
peshë të adresës
25

Të dhënat që ruhen në cache


Valid Tag Data Index
00
01
10
11
Cache
Krahas të dhënave, cache përmban:
1.Tag: Identifikon cili prej blloqeve eshte ne cache
2.Valid bit: 1 bit që tregon nëse blloku është i vlefshëm apo jo.
Nëse pozicioni ku duhet të vendoset një bllok i ri është i zënë,
atëherë ky bllok hiqet nga cache-ja

Cache hit :
( Valid[index] = TRUE ) AND
( Tag[ index ] = Tag[ memory address ] )
26

13
5/27/2017

Cache Mapping: Shembull


Adresa e Memorjes
31 N N-1 0
Memory Block Number Offset
4GB
Offset, N = 4 bite
Block Number = 32 – 4 = 28 bite
1 Block Check: Number of Blocks = 228
= 16 bytes

31 N+M-1 N N-1 0
Tag Index Offset
Cache
16KB Number of Cache Blocks
1 Block = 16KB / 16bytes = 1024 = 210
= 16 bytes Cache Index, M = 10 bite
Cache Tag = 32 – 10 – 4 = 18 bite

27

Shembull
• Supozojmë se cache (slide 25), është bosh dhe duhet
të aksesohen blloqet në pozicionet: 0 1 2 3 4 3 4 15

28

14
5/27/2017

Cache Direct Mapped


Memory: 4GB
16-KB cache:
31 30 . . . 15 14 13 . . . 4 3 2 1 0
Hit Tag Idx Os
4-word (16-byte) blocks Data
Tag 18 10 Block offset
Index
Data
Valid Tag Word0 Word1 Word2 Word3
0
1
2
.
.
.
1022
1023
18

Cache Hit =
[Tag Matches]
AND [Valid] 32

29

Aksesimi i të dhënave
• Nëse na jepet një cache direct mapped 16KB:
– 16-byte blocks x 1024 cache blocks

• Shembull: Supozojmë se kemi kërkesat e mëposhtme


të adresave nga CPU. Tregoni çfarë ndodh në cache!

Tag Index Offset


31 14 13 4 3 0
000000000000000000 0000000001 0100
000000000000000000 0000000001 1100
000000000000000000 0000000011 0100
000000000000000010 0000000001 1000
000000000000000000 0000000001 0000

30

15
5/27/2017

Aksesimi i të dhënave: Gjendja


fillestare
• Në fillim cache është bosh
 Gjithë bitet valid janë 0.
Të dhënat në një bllok
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 0
2 0
3 0
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

31

Aksesimi i të dhënave: LOAD #1-1


Tag Index Offset
• Load nga 000000000000000000 0000000001 0100
Hapi 1. Kontrollo bllokun e cache me index 1

Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 0
2 0
3 0
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

32

16
5/27/2017

Aksesimi i të dhënave : LOAD #1-2


Tag Index Offset
• Load nga 000000000000000000 0000000001 0100
Hapi 2. Të dhënat në bllokun 1 janë invalid [ Miss ]

Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 0
2 0
3 0
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

33

Aksesimi i të dhënave : LOAD #1-3


Tag Index Offset
• Load nga 000000000000000000 0000000001 0100
Hapi 3. Load 16 byte nga memorja; Vendos Tag-un dhe Valid bit

Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 0 A B C D
2 0
3 0
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

34

17
5/27/2017

Aksesimi i të dhënave : LOAD #1-4


Tag Index Offset
• Load nga 000000000000000000 0000000001 0100
Hapi 4. Kthe Word1 (byte offset = 4) tek Regjistri

Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 0 A B C D
2 0
3 0
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

35

Aksesimi i të dhënave : LOAD #2-1


Tag Index Offset
• Load nga 000000000000000000 0000000001 1100
Hapi 1. Kontrollo bllokun e cache tek index 1

Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 0 A B C D
2 0
3 0
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

36

18
5/27/2017

Aksesimi i të dhënave : LOAD #2-2


Tag Index Offset
• Load nga 000000000000000000 0000000001 1100
Hapi 2. [Cache Block është Valid] AND [Tag përputhet]  Cache hit!

Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 0 A B C D
2 0
3 0
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

37

Aksesimi i të dhënave : LOAD #2-3


Tag Index Offset
• Load nga 000000000000000000 0000000001 1100

Hapi 3. Kthe Word3 (byte offset = 12) tek Regjistri [Lokalitet në hapësirë ]
Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 0 A B C D
2 0
3 0
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

38

19
5/27/2017

Aksesimi i të dhënave : LOAD #3-1


Tag Index Offset
• Load nga 000000000000000000 0000000011 0100
Hapi 1. kontrollo bllokun e cache tek index 3

Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 0 A B C D
2 0
3 0
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

39

Aksesimi i të dhënave : LOAD #3-2


Tag Index Offset
• Load nga 000000000000000000 0000000011 0100
Hapi 2. E dhëna në bllokun 3 është invalid [ Miss ]

Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 0 A B C D
2 0
3 0
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

40

20
5/27/2017

Aksesimi i të dhënave : LOAD #3-3


Tag Index Offset
• Load nga 000000000000000000 0000000011 0100
Hapi 3. Load 16 byte nga memorja; Vendos Tag-un dhe Valid bit

Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 0 A B C D
2 0
3 1 0 I J K L
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

41

Aksesimi i të dhënave : LOAD #3-4


Tag Index Offset
• Load nga 000000000000000000 0000000011 0100
Hapi 4. Kthe Word1 (byte offset = 4) tek Regjistri

Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 0 A B C D
2 0
3 1 0 I J K L
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

42

21
5/27/2017

Aksesimi i të dhënave : LOAD #4-1


Tag Index Offset
• Load nga 000000000000000010 0000000001 0100
Hapi 1. Kontrollo bllokun e cache tek index 1

Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 0 A B C D
2 0
3 1 0 I J K L
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

43

Aksesimi i të dhënave : LOAD #4-2


Tag Index Offset
• Load nga 000000000000000010 0000000001 0100

Hapi 2. Blloku i cache është Valid por kemi Tag mismatch [ Miss ]
Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 0 A B C D
2 0
3 1 0 I J K L
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

44

22
5/27/2017

Aksesimi i të dhënave : LOAD #4-3


Tag Index Offset
• Load nga 000000000000000010 0000000001 0100

Hapi 3. Zëvendëso bllokun me index 1 me të dhënat e reja; Vendos Tag-un


Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 2 E F G H
2 0
3 1 0 I J K L
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

45

Aksesimi i të dhënave : LOAD #4-4


Tag Index Offset
• Load nga 000000000000000010 0000000001 0100

Hapi 4. kthe Word1 (byte offset = 4) tek Regjistri


Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 2 E F G H
2 0
3 1 0 I J K L
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

46

23
5/27/2017

Aksesimi i të dhënave : LOAD #5-1


Tag Index Offset
• Load nga 000000000000000000 0000000001 0000

Hapi 1. Kontrollo bllokun e cache tek index 1


Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 2 E F G H
2 0
3 1 0 I J K L
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

47

Aksesimi i të dhënave : LOAD #5-2


Tag Index Offset
• Load from 000000000000000000 0000000001 0000

Hapi 2. Blloku i cache është Valid por kemi Tag mismatch [ Miss ]

Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 2 E F G H
2 0
3 1 0 I J K L
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

48

24
5/27/2017

Aksesimi i të dhënave: LOAD #5-3


Tag Index Offset
• Load nga 000000000000000000 0000000001 0000

Hapi 3. Zëvendëso bllokun 1 me të dhënat e reja; Vendos Tag-un


Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 0 A B C D
2 0
3 1 0 I J K L
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

49

Aksesimi i të dhënave : LOAD #5-4


Tag Index Offset
• Load nga 000000000000000000 0000000001 0000

Hapi 4. Kthe Word0 (byte offset = 0) tek Regjistri


Data
Word0 Word1 Word2 Word3
Index Valid Tag Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
0 0
1 1 0 A B C D
2 0
3 1 0 I J K L
4 0
5 0
... ... ... … … … … …
1022 0
1023 0

50

25
5/27/2017

Cache – Instruksioni Load : Përmbledhje


Read address (RA) sent from
processor  cache

Read Miss Access memory


In cache?
[Tag Mismatch] block at RA
OR [!Valid]
Read Hit Allocate cache line
[Tag Match]
AND [Valid]

Load into cache line


Set Tag and Valid bit
Use Offset and (if needed)
delivery data to
processor

51

Shembull
• Memorja kryesore ka 214 byte, cache ka 16 blloqe
dhe cdo bllok ka 8 byte. Përcaktoni madhësinë e
fushave të adresës.

• Zgjidhje:
Memorja ka 214 /23 = 211 blloqe
Adresat do të jenë 14 bit.
Offset-i(Word): 3 bit
Block: 4 bit (meqë ka 16 blloqe)
Tag: 7 bit
52

26
5/27/2017

Shembull
• Adresa është 15 bit.
• Ka 64 blloqe në cache
• Cdo bllok ka 8 fjalë (1 fjale: 1 byte)
• Duhen 6 bit për bllokun; 3 bit për fjalën; 6 bit
mbeten për tag-un
• Nëse CPU do të gjeneronte adresën:

• Atëherë do të kërkonte tek blloku 0 dhe nëse gjen


53
tag-un 000010, fjala e pestë do të dërgohet në CPU.

Avantazhi/Disavantazhi i Direct
Mapping
(+) Jo e kushtueshme
(-) E kufizuar. P.sh. Supozojmë se blloqet 0 dhe 4
vendosen në të njëjtin vend në cache. Programi po
përdor bllokun 0, pastaj bllokun 4, pastaj bllokun
0 dhe pastaj bllokun 4.
Duhen bërë vazhdimisht zhvendosje të blloqeve 0
dhe 4 për zëvendësim!

54

27
5/27/2017

Shembull
• Supozojmë se cache është bosh dhe duhet të
aksesohen blloqet në pozicionet: 0 4 0 4 0 4 0 4

55

Miss rate vs. Block size vs. Cache size


10

8 KB
Miss rate (%)

16 KB
64 KB
5
256 KB

0
8 16 32 64 128 256

Block size (bytes)


• Miss Rate rritet nëse madhësia e bllokut është një
përqindje e konsiderueshme e madhësisë së cache-së,
sepse zvogëlohet numri i blloqeve ne cache. 56

28
5/27/2017

Sa duhet të zgjidhet madhsia e bllokut?


• Blloqet e mëdha shfrytëzojnë avantazhin e lokalitetit në
hapësirë por:
– Nëse madhësia e bllokut është e madhe krahasuar me
madhësinë e cache-së, atëherë do të rritet miss rate
– Nëse madhësia e bllokut është e madhe do të rritet miss
penality
• Vonesa për transferimin e fjalës së parë + vonesa për
transferimin e fjalëve të mbetura

57

Hartëzimi Fully Associative


• Secili prej blloqeve të memorjes kryesore,
mund të vendoset në secilin prej blloqeve të
cache-së.
• Nevojitet hardware shtesë për të bërë kërkimin
pasi do të kontrollohen gjithë blloqet. Ky
kërkim duhet të bëhet në paralel, prandaj duhet
memorje “associative memory” që është e
kushtueshme.

58

29
5/27/2017

Hartëzimi Fully Associative


• Adresa e memorjes kryesore do të ndahet në dy pjesë:
tag dhe offset.
• Tag-u është më i gjatë se në rastin Direct Mapped,
d.m.th. cache-ja duhet të jetë më e madhe (kujtoni se
për secilin bllok duhet të ruhet tag-u në cache).
• Kur cache është plot, atëherë nevojitet një algoritëm
zëvendësimi që të përcaktojë se cili prej blloqeve
duhet të hiqet.
Adresa e Memorjes
31 N N-1 0
Tag Offset
Madhësia e blloqeve të cache = 2N byte
Numri i blloqeve të cache = 2M
Offset = N bit 59
Tag = 32 – N bit

Shembull
• Memorja kryesore ka 214byte; cache ka 16 blloqe
dhe cdo bllok ka 8 byte. Tregoni sa bite kanë
fushat e adresës.
• Zgjidhje:
– Për përzgjedhjen e byte tek një bllok duhen 3 bite
(Byte: 3 bit)
– Tag: 14-3 = 11 bit

60

30
5/27/2017

Cache Fully Associative


• Shembull:
– 4KB cache size dhe 16-Byte block size
– Krahaso tag-et dhe valid bit në paralel
Tag Offset
28-bit 4-bit
Index Tag Valid Byte 0-3 Byte 4-7 Byte 8-11 Byte 12-15
= 0
= 1
= 2
= 3
... ... ... … … … … …
= 254
= 255

Të dhënat mund të vendosen kudo!

61

Hartëzimi Set Associative


• Kombinon hartëzimin Direct Mapped me atë
Fully Associative.
• Një bllok në memorjen kryesore mund të
vendoset në disa blloqe të caktuara në cache
(grupe blloqesh).
• Madhësia e grupeve është e njëjtë për të gjitha
grupet.
• P.sh. 2-way set associative: d.m.th. Një bllok
në memorjen kryesore mund të vendoset në 2
blloqe të caktuara në cache.
62

31
5/27/2017

Hartëzimi Set Associative


Block Number (Not Address)
0
1
2 Cache
3
4
Memorja

5
6 Cache 2-way Set Associative
7
8
9
10
11 Çdo bllok në memorjen kryesore ka
12
13
dy pozicione të caktuara në cache!
14
15

63

Hartëzimi Set Associative


Adresa e Memorjes
31 N N-1 0
Block Number Offset
Madhësia e bllokut të cache = 2N byte

Cache Set Index


= logaritmi me bazë 2 i numrit të grupeve në cache

31 N+M-1 N N-1 0
Tag Set Index Offset

Madhësia e bllokut të cache= 2N byte


Numri i grupeve në cache= 2M
Offset = N bit
Set Index = M bit
Tag = 32 – (N + M) bit

64

32
5/27/2017

2-way Set Associative


2 bitet me më pak
peshë përcaktojnë
byte në fjalë (1
fjalë: 32 bit)
1 bllok ka një fjalë

Nga biti tjetër me


më pak peshë i
adresës përcaktojmë
Ndodhet e dhëna? grupin
Krahasohen gjithë
tag-et në grupin e
tre biteve më me
peshë në memorjen 65
kryesore

Hartëzimi Set Associative: Shembull


Adresa e Memorjes
31 N N-1 0
Memory
Block Number Offset
4GB
Offset, N = 2 bit
Block Number = 32 – 2 = 30 bit
1 Block Numri i blloqeve = 230
= 4 bytes
31 N+M-1 N N-1 0
Tag Set Index Offset
Numri i blloqeve të cache
Cache = 4KB / 4bytes = 1024 = 210
4 KB
4-way associative, numbri i grupeve
= 1024 / 4 = 256 = 28
Set Index, M = 8 bit

Cache Tag = 32 – 8 – 2 = 22 bit

66

33
5/27/2017

Hartëzimi Set Associative


31 30 . . . 11 10 9 . . . 2 1 0
Tag Idx Os 4-way 4-KB cache:
22 8 1-word (4-byte) blloku
Tag
Set Index
V Tag Data V Tag Data V Tag Data V Tag Data
0 0 0 0
1 1 1 1
2 2 2 2
. . . .
. . . .
. . . .
254 254 254 254
255 255 255 255
22 22 22 22

= = = =

Kërkim paralel në A B C D
blloqet e një set-i

A
B 4 x 1 Select
C
D 32
Hit Data
67

Shembull
• Supozojmë se cache është bosh dhe duhet të
aksesohen blloqet në pozicionet: 0 4 0 4 0 4 0 4

• Në këtë rast nuk ka conflict misses!


68

34
5/27/2017

Shembull
• Kemi një cache me hartëzim 2-way set
associative; memorja kryesore ka 214byte; cache
ka 16 blloqe dhe cdo bllok ka 8 byte. Tregoni sa
bite kanë fushat e adresës.
• Zgjidhje:
– Për përzgjedhjen e byte tek një bllok duhen 3 bite
(Byte: 3 bit)
– Për përzgjedhjen e grupit ku bën pjesë blloku
duhen 16 blloqe/2 mundësi = 8 (Grupi: 3 bit)
– Tag: 14-3-3 = 8 bit

69

Cache Set Associative


• Cdo rritje me faktor 2 në shoqërim dyfishon numrin e
blloqeve në një grup dhe përgjysmon numrin e grupeve;
d.m.th. Do të rritet me një bit fusha Tag dhe do të
zvogëlohet me një bit fusha Grup (Index)

70

35
5/27/2017

Përmbledhje e Hartëzimeve
Direct Mapped

• Një vend në cache për bllok, një krahasues, nuk ka MUX (për
përzgjedhjen e të dhënave midis blloqeve)

Set Associative

• Nr. i kufizuar vendesh për një bllok


• Numri i krahasuesve = numrin e blloqeve në një set
• MUX N:1 (N way set associative)

Fully associative

• Një bllok mund të vendoset kudo në cache


• Numri i krahasuesve = numrin e blloqeve në cache
• MUX të mëdhenj
71

Referenca
• Libri:
– Linda Null “Essentials of Computer
Organization and Architecture”, 2003,
Kapitulli 6 (faqe 233-247)
– Computer Organization and Design. The
Hardware/Software Interface, 4th Edition
Kapitulli 5 (faqe 450-468)

72

36

You might also like