Leksion 10

You might also like

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

1/22/2020

Leksion 10: 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
1/22/2020

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
1/22/2020

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
1/22/2020

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
1/22/2020

Tekonologjia Disk Magnetik

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

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ë!

10

10

5
1/22/2020

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.
11

11

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.
12

12

6
1/22/2020

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) 13

13

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

14

14

7
1/22/2020

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: diferenca midis kohës së aksesimit të
nivelit të ulët (‘lower’), kundrejt kohës së aksesimit
të nivelit të lartë (‘upper’). 15

15

Hierarkia e memorjes: Terminologji


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

16

16

8
1/22/2020

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ë.

17

17

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.

18

18

9
1/22/2020

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
19

19

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 20

20

10
1/22/2020

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)

21

21

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

22

22

11
1/22/2020

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 23
Tag = 32 – (N + M) bite
23

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
24

24

12
1/22/2020

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 ] )
25

25

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

26

26

13
1/22/2020

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

27

27

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

28

28

14
1/22/2020

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

29

29

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

30

30

15
1/22/2020

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

31

31

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

32

32

16
1/22/2020

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

33

33

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

34

34

17
1/22/2020

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

35

35

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

36

36

18
1/22/2020

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

37

37

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

38

38

19
1/22/2020

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

39

39

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

40

40

20
1/22/2020

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

41

41

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

42

42

21
1/22/2020

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

43

43

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

44

44

22
1/22/2020

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

45

45

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

46

46

23
1/22/2020

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

47

47

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

48

48

24
1/22/2020

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

49

49

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

50

50

25
1/22/2020

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
51

51

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


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

26
1/22/2020

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

53

53

27

You might also like