BÀI 9

BỘ NHỚ TRONG

Nguyễn Hồng Sơn Khoa CNTT, PTITHCM

Toång quan heä thoáng boä nhôù maùy tính (cid:1) Ñaëc tröng cuûa heä thoáng boä nhôù (cid:1) Vò trí: trong hay ngoaøi, trong CPU (cid:1) Dung löôïng: kích thöôùc töø nhôù, soá löôïng töø nhôù (cid:1) Ñôn vò truyeàn taûi: töø hay khoái (cid:1) Phöông phaùp truy xuaát: truy xuaát tuaàn töï, truy xuaát tröïc tieáp, truy xuaát ngaãu nhieân, truy xuaát lieân keát (cache)

(cid:1) Hieäu suaát: thôøi gian truy xuaát, toác ñoä truyeàn, chu kyø (cid:1) Daïng vaät lyù: baùn daãn hay baêng töø (cid:1) Ñaëc tính vaät lyù: thay ñoåi/khoâng thay ñoåi, xoùa

ñöôïc/khoâng theå xoùa

(cid:1) Toå chöùc boä nhôù: saép xeáp vaät lyù caùc bit ñeå hình thaønh

1/44

moät töø

1

2

Phaân caáp boä nhôù

-Giaûm giaù thaønh

Thanh ghi

-Dung löôïng taêng

cache

-Thôøi gian truy xuaát taêng

Main memory

Disk cache

-Taàn suaát truy xuaát cuûa CPU giaûm

Ñóa töø

Ñóa quang

Baêng töø

3

Boä nhôù chính_caùc loaïi boä nhôù baùn daãn

(cid:1) RAM (Random Access Memory)

(cid:1) RAM ñoäng: laøm töø tuï ñieän, caàn laøm töôi, maät ñoä cao (cid:1) RAM tónh: laøm baèng caùc flip-flop, nhanh

(cid:1) ROM (Read Only Memory) (cid:1) PROM (Programmable ROM) (cid:1) EPROM(Erasable PROM) (cid:1) EEPROM (Electrically EPROM) (cid:1) Flash Memory: laäp trình laïi raát nhanh, maät ñoä cao,

xoùa baèng ñieän vaø chæ caàn vaøi giaây.

2

4

Boä nhôù chính_toå chöùc boä nhôù

(cid:1) Cell nhôù laø phaàn töû cô baûn coù caùc thuoäc

tính: (cid:1) Hai traïng thaùi: 1 vaø 0 (cid:1) Coù theå caøi ñaët traïng thaùi, hoaït ñoäng ghi (cid:1) Coù theå ñoïc traïng thaùi, hoaït ñoäng ñoïc

Ñieàu khieån

Ñieàu khieån

Choïn

Data vaøo

Choïn

Data ra

Cell

Cell

Ghi

Ñoïc

5

3

6

Boä nhôù chính_chip logic

(cid:1) Moãi chip goàm moät daõy caùc cell nhôù (cid:1) Daõy ñöôïc toå chöùc thaønh W töø B bit (vd:

16_Mbit chip ñöôïc toå chöùc töø 1M töø 16 bit)

(cid:1) 1bit chip: data ñöôïc ñoïc ghi moãi laàn moät

bit

RAS CAS WE OE

Ñònh thôøi vaø ñieàu khieån

4

Boä ñeám laøm töôi

MUX

Daõy boä nhôù 2048x2048

Giaûi maõ haøng

A0

A1

7

D1

Ñeäm nhaäp

D2

D3

Boä khueách ñaïi vaø coång I/O

D4

Ñeäm xuaát

A10

Giaûi maõ coät

Ñeäm ñòa chæ coät

Ñeäm ñòa chæ haøng

4

8

9

Boä nhôù chính_chip logic

(cid:1) RAS (row address select), CAS (column

address select)

(cid:1) Haøng keát noái ñeán ngoõ Choïn (select) cuûa

cell

(cid:1) Coät keát noái ñeán ngoõ vaøo/ra data (cid:1) Soá ñöôøng ñòa chæ caàn = log2W

5

10

Boä nhôù chính_toå chöùc module

(cid:1) Neáu chip 1 bit thì caàn soá chip ít nhaát baèng

soá bit/töø cuûa RAM

(cid:1) Toå chöùc moät RAM caên cöù vaøo dung löôïng

yeâu caàu vaø loaïi chip

256K 1bit

D e c o d e 1 / 5 1 2

Decode 1/512

11

1 2

9

9

7 8

256K 1bit

D e c o d e 1 / 5 1 2

MBR

Decode 1/512

Bit #1

MAR

256K 1bit

D e c o d e 1 / 5 1 2

Boä nhôù 256 Kbyte

Decode 1/512

Bit #7

6

Bit #8 12

13

Baøi taäp

256Kbit? Từ nhớ 1 byte.

(cid:1) Thieát keá boä nhôù DRAM dung löôïng 1Mbyte vôùi caùc chip 1bit (dung löôïng moät chip laø tuøy choïn)? Từ nhớ 1 byte. (cid:1) Thiết kế DRAM 1Mbyte với các chip 1 bit co dung lượng

bit coù dung löôïng 128Mbit? Từ nhớ 1 byte.

(cid:1) Haõy veõ sô ñoà thieát keá DRAM 256Mbyte vôùi caùc chip 2

(cid:1) Thiết kế DRAM 1Mbyte với 16 chip 1 bit co dung lượng 256Kbit va cac chip 4 bit co dung luong 1Mbit? Từ nhớ 1 byte.

2bit (dung löôïng moät chip laø tuøy choïn)

(cid:1) Thieát keá boä nhôù DRAM dung löôïng 4Mbyte vôùi caùc chip

7

14

1 / 1 0 2 4

D e c o d e

1M 1bit

Decode 1/1024

1 2

10

10

7 8

1M 1bit

D e c o d e 1 1 0 2 4

MBR

Decode 1/1024

Bit #1

MAR

1 / 1 0 2 4

D e c o d e

1M 1bit

Boä nhôù 1Mbyte

Decode 1/1024

Bit #7

Bit #8

15

Boä nhôù cache

(cid:1) Nguyeân lyù:

Bộ nhớ cache là một giải pháp tăng tốc truy xuất bộ nhớ chính. Cache chứa một phần bộ nhớ chính. Vì vậy khi muốn truy xuất một từ nhớ, CPU sẽ tìm trong cache, nếu có sẽ lấy từ nhớ rất nhanh, nếu không thấy sẽ lấy từ bộ nhớ chính và nạp nguyên khối nhớ chứa từ đó vào cache. Lý do nạp cả khối nhớ vào cache: trên cơ sở dự đoán các truy xuất tiếp theo sẽ tham chiếu đến các từ nhớ lân cận từ nhớ vừa truy xuất và như vậy truy xuất kế tiếp sẽ nhanh.

8

16

CPU

Truyeàn vaøo töøng töø (word)

Cache

Truyeàn vaøo töøng khoái (block)

Boä nhôù chính

Chæ soá line Tag

Block

Ñòa chæ

Noäi dung

0

0

1

1

2

Block (K töø)

2

C-1

17

Block (K töø)

Cache

Block (K töø)

2n-1

K töø

Chieàu daøi moät töø Boä Nhôù Chính

9

18

Baét ñaàu

Hoaït ñoäng ñoïc cache

Nhaän ñòa chæ töø CPU

khoâng

Truy xuaát boä nhôù chính

coù

Caáp line cho khoái boä nhôù chöùa ñòa chæ naøy

Laáy noäi dung chuyeån cho CPU

Chuyeån noäi dung cho CPU

Keát thuùc

Naïp khoái nhôù vaøo cache

Coù block chöùa ñòa chæ naøy khoâng?

19

Kích thöôùc cuûa cache

(cid:1) Boä nhôù coù kích thöôùc 2n, chia laøm M khoái, moãi

khoái coù K töø => M=2n/K

(cid:1) Cache coù C line, moãi line chöùa moät tag vaø moät

khoái K töø

(cid:1) M>>C (cid:1) Cache ñuû nhoû ñeå chi phí ~ main memory vaø

khoâng trôû neân chaäm

(cid:1) Cache ñuû lôùn ñeå truy xuaát nhanh (cid:1) Phaåm chaát cache∈coâng ngheä vi maïch (cid:1) Heä soá tìm thaáy (hit ratio): khaû naêng laáy ñöôïc soá

lieäu caàn thieát töø cache.

10

20

A#nh xaï boä nhôù chính vaøo cache

(cid:1) Toå chöùc cache phuï thuoäc vaøo phöông phaùp

aùnh xaï ñöôïc duøng

(cid:1) Coù ba phöông phaùp aùnh xaï chuû yeáu

(cid:1) Tröïc tieáp (cid:1) Lieân keát toàn bộ (cid:1) Lieân keát nhoùm

21

A#nh xaï tröïc tieáp (cid:1) i= j modulo c

(cid:1) i : chæ soá line (cid:1) j : chæ soá khoái boä nhôù chính (cid:1) c : soá löôïng line cuûa cache

(cid:1)Haøm aùnh xaï deã daøng thöïc hieän baèng ñòa chæ. Ñeå phuïc vuï cho vieäc truy xuaát, moãi ñòa chæ boä nhôù chính coù theå ñöôïc chia thaønh ba phaàn:

(cid:1) w bit thaáp nhaát ñònh danh cho 1 töø hay moät byte trong moät khoái (cid:1) s bit coøn laïi chæ ra moät trong 2s khoái boä nhôù chính

(cid:1) Trong ñoù s-r bit cao nhaát laø danh ñònh cuûa tag (cid:1) r bit coøn laïi laø danh ñònh cuûa cache line.

11

22

A#nh xaï tröïc tieáp….

Boä nhôù chính

s+w

Cache

W0 W1 W2 W3

Tag Noäi dung

Line

B0

Ñòa chæ boä nhôù line

töø

tag

0 K0

s-r

r

w

S

s-r

w

1

W4j W(4j+1) W(4j+2) W(4j+3)

So saùnh

Ki

w

Bj

Kc-1

Khoâng coù trong cache

Coù trong cache C-1

A#nh xaï tröïc tieáp…..

Cache line 0 1

Caùc khoái boä nhôù ñöôïc gaùn 0,c,…,2s-c 1,c+1,…,2s-c+1

c-1

c-1,2c-1,….,2s-1

23

12

24

A#nh xaï tröïc tieáp…

(cid:1) Ñôn giaûn, chi phí thöïc hieän thaáp (cid:1) Moät khoái boä nhôù cho tröôùc chæ ñöôïc gaùn

moät vò trí cache coá ñònh => heä soá tìm thaáy seõ thaáp trong moät soá tröôøng hôïp, khoâng taän duïng toái ña hieäu suaát cache

25

A#nh xaï tröïc tieáp…

(cid:1) Vi# du$

(cid:1) Kích thöôùc cache 64Kbyte (cid:1) K=4byte (cid:1) Boä nhôù chính 16Mbyte=224 (24 ñöôøng ñòa chæ) ⇒ M=222 Block, C=214 Trình baøy hoaït ñoäng aùnh xaï vaø cho bieát caùc khoái boä nhôù chính naøo vaøo line naøo cuûa cache?

13

26

27

A#nh xaï lieân keát toàn bộ (full associative mapping)

(cid:1) Cho pheùp moãi khoái boä nhôù ñöôïc aùnh xaï

vaøo baát kyø line naøo cuûa cache. (cid:1) Ñòa chæ boä nhôù goàm coù hai phaàn:

(cid:1) Tag: ñònh danh duy nhaát cho moät khoái boä nhôù (cid:1) Töø: vò trí noäi dung caàn laáy trong khoái boä nhôù

14

28

A#nh xaï lieân keát toàn bộ….

Boä nhôù chính

s+w

Cache

W0 W1 W2 W3

Tag Noäi dung

Line

B0

Ñòa chæ boä nhôù tag

töø

0 K0

w

s

s

S

s

w

1

W4j W(4j+1) W(4j+2) W(4j+3)

w

So saùnh

Ki

Bj

s

Kc-1

Khoâng coù trong cache

Coù trong cache C-1

29

A#nh xaï lieân keát toàn bộ…

(cid:1) Ñeå xaùc ñònh khoái coù trong cache hay

khoâng, logic ñieàu khieån cache phaûi kieåm tra tag ôû moïi line => maïch thöïc hieän kieåm tra khaù phöùc taïp.

(cid:1) Linh hoaït choïn block ñeå thay theá khi ñoïc moät block môùi vaøo cache => thieát keá caùc thuaät toaùn thay theá ñeå toái ña heä soá tìm thaáy

15

30

A#nh xaï lieân keát nhoùm (set associative mapping)

(cid:1) Dung hoøa öu ñieåm cuûa caû hai phöông phaùp treân. (cid:1) Toaøn boä cache ñöôïc chia thaønh v nhoùm, moãi

nhoùm coù k line.

(cid:1) Pheùp aùnh xaï nhö sau:

c=v.k i=j modulo v

i: chæ soá cuûa nhoùm trong cache j: chæ soá cuûa khoái boä nhôù chính c: toång soá line trong cache

31

A#nh xaï lieân keát nhoùm (tt)

(cid:1) Khoái Bj ñöôïc aùnh xaï vaøo baát kyø line naøo trong

nhoùm i

(cid:1) Ñòa chæ boä nhôù coù ba phaàn:

(cid:1) Tag (cid:1) Nhoùm (cid:1) Töø

(cid:1) d bit chæ ra coù 2d nhoùm, s-d laø soá bit cuûa phaàn tag. Nhö vaäy boä nhôù chính ñöôïc chia thaønh 2s khoái.

16

32

A#nh xaï lieân keát nhoùm….

Boä nhôù chính

s+w

B0

Cache

B1

Tag Noäi dung

line

F0

0

Ñòa chæ boä nhôù nhoùm

töø

tag

F1

Nhoùm 0

s-d

d

w

s+w

s-d

Bj

FK-1

FK

So saùnh

w

Nhoùm 1

FK+i

1

F2K-1

s-d

Coù trong cache

Khoâng coù trong cache

C-1

Ví dụ 2 line/nhóm (two way associative mapping)

33

17

34

Thuaät toaùn thay theá

(cid:1) Least-recently used (cid:1) FIFO (cid:1) Least-frequently used (cid:1) Random

35

Chính saùch ghi

(cid:1) Hai vaán ñeà

(cid:1) Thay ñoåi moät töø trong cache (cid:2) töø trong boä nhôù khoâng

hôïp leä

(cid:1) Thay ñoåi moät töø trong boä nhôù(cid:2) töø trong cache khoâng

hôïp leä (cid:1) Kyõ thuaät ghi

(cid:1) Write througth (cid:1) Write back : duøng UPDATE bit

18

36

Chính saùch ghi…

(cid:1) Toå chöùc bus vôùi nhieàu thieát bò (boä xöû lyù) coù cache rieâng vaø

duøng chung moät main memory(cid:2) vaán ñeà môùi

(cid:1) Cache coherency system

(cid:1) Bus watching with Write Througth: moãi boä ñieàu khieån cache ñeàu giaùm saùt caùc ñöôøng ñòa chæ ñeå phaùt hieän hoaït ñoäng boä nhôù vôùi caùc bus master khaùc, neáu coù ghi vaøo moät vò trí boä nhôù naøo ñoù maø moät line cache coù chöùa thì boä ñieàu khieån seõ ñaët line vaøo traïng thaùi baát hôïp leä.

(cid:1) Hardware Transparency: boå sung phaàn cöùng ñeå ñaûm baûo moïi

caäp nhaät boä nhôù ñeàu ñöôïc thoâng baùo vôùi taát caû caùc cache

(cid:1) No-cachable memory: chæ moät phaàn boä nhôù ñöôïc chia seû cho nhieàu boä xöû lyù (thieát bò). Khoâng bao giôø copy phaàn boä nhôù chia seû vaøo trong cache.

37

Kích thöôùc khoái

(cid:1) Khi moät khoái baét ñaàu gia taêng kích thöôùc töø nhoû ñeán lôùn. Thoaït ñaàu hit ratio taêng, khi kích thöôùc khoái lôùn ñeán moät möùc naøo ñoù hit ratio laïi giaûm.

(cid:1) Khoái lôùn(cid:2) soá line giaûm (cid:1) Khi khoái lôùn (cid:2)moãi töø theâm vaøo trôû neân xa vôùi töø ñang tham chieáu vaø hieám khi ñöôïc tham chieáu trong töông lai gaàn.

(cid:1) Quan heä giöõa kích thöôùc khoái vaø hit ratio raát phöùc taïp, khoù tìm ra chính xaùc quan heä naøo trong ñoù hit ratio luoân toái öu.

19

38

Soá löôïng cache

(cid:1) Cache ñôn

(cid:1) On-chip cache (internal cache): Cache naèm treân

cuøng chip vôùi CPU.

(cid:1) Off-chip cache (external cache) : Cache coù theå ñoïc

qua external bus

(cid:1) Cache hai möùc: duøng caû hai loaïi

(cid:1) internal cache_L1 (cid:1) vaø external cache _L2 (thöôøng duøng SRAM)

39

20

40

Soá löôïng cache…

(cid:1) Hôïp nhaát

(cid:1) Khi môùi xuaát hieän on-chip cache, nhieàu thieát keá duøng

moät cache ñeå chöùa data vaø instruction

(cid:1) Coù hit ratio cao, do coù ñieàu kieän laøm vieäc theo Data-

bound hay Instruction-bound

(cid:1) Ñôn giaûn cho thieát keá vaø hieän thöïc

(cid:1) Taùch bieät

(cid:1) Nhöõng thieát keá gaàn ñaây chia cache thaønh hai phaàn:

moät chöùa data vaø moät chöùa insruction

(cid:1) Hoã trôï xöû lyù song song, pipelining caùc chæ thò (cid:1) Ngaên chaën söï tranh chaáp giöõa boä xöû lyù chæ thò vaø ñôn

vò thöïc thi.

41

Ñieàu khieån cache

(cid:1) Cache beân trong ñöôïc ñieàu khieån bôûi hai bit cuûa moät thanh ghi ñieàu khieån, goïi laø CD (cache disable) vaø NW (not write-througth)

(cid:1) Coù hai chæ thò

(cid:1) INVD: huûy boû noäi dung trong cache vaø baùo cho cache

ngoaøi.

(cid:1) WBINVD: cuõng coù chöùc naêng töông töï nhöng baùo cho cache ngoaøi thöïc hieän ghi vaøo boä nhôù khoái ñaõ hieäu chænh.

21

42

Sô ñoà cache trong Pentium IV

43

Sô ñoà cache trong PowerPC G5

22

44

Tính toán với cache

(cid:1) Hiệu suất cache được đánh giá qua:

CPU execution time =(CPU clock cycles + Memory stall cycles)× Clock cycle time

(cid:1) Giả sử CPU clock cycles đã bao gồm thời gian xử lý một cache hit và CPU bị treo trong khi cache miss.

45

Tính toán với cache (tt)

(cid:1) Số chu kỳ treo do đợi bộ nhớ là:

(cid:1) Average memory access time = Hit time+Miss rate.Miss penalty

23

46

Ví dụ

Một máy tính chỉ cần 1 clock cho một chỉ thị nếu tìm thấy trong cache. Số chỉ thị cần truy xuất data chiếm 50%. Chi phí không tìm thấy trong cache là 25 chu kỳ clock và hệ số hit là 98%. Nếu tất cả các chỉ thị đều tìm thấy trong cache thì máy tính chạy nhanh gấp bao nhiêu lần so với trường hợp này?

47

Giải

-Tính thời gian thực thi nếu luôn tìm thấy trong cache: TCPU-EX = (Số chu kỳ CPU+ Số chu kỳ treo đợi).Tck

= (IC.CPI + 0).Tck= IC.1.Tck -Tính thời gian thực thi có miss rate:

Thời gian treo = IC.(1+0,5).(1-0,98).25=0,75IC Thời gian thực thi = (IC.1+0,75IC).Tck

Số lần nhanh hơn = (IC.1+0,75IC).Tck/IC.1.Tck= 1,75

24

48

Tính số hit trong hoạt động ghi

Có hai tùy chọn với hoạt động ghi: -Write allocate: Cấp block trên cache cho hoạt

động ghi.

-No-write allocate: Không cấp block, block được

cập nhật ngay trên bộ nhớ.

49

Ví dụ

Giả sử ánh xạ cache là liên kết với write-back. Xem xét đoạn chương trình sau: write M[100] write M[100] read M[200] write M[200] write M[100]

Hãy tính số hit và miss: a, với write allocate b, với no-write allocate

25

50