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