BÀI TP CHƯƠNG 4
1. Giaû söû coù boä nhôù Cache phoái hôïp
hoaøn toaøn nhö hình veõ, Cho bieát:
a. Kích thöôùc boä nhôù trong?
b. Kích thöôùc Cache?
c. Ñeå laáy byte döõ lieäu coù giaù trò 32
(hình veõ), CPU caàn ñoïc ñòa chæ naøo?
d. Ñieàu gì xaûy ra khi CPU ñoïc caùc ñòa
chæ sau:
+) 0000111011
+) 0100100100
+) 0E4h
e. Chæ ra ñòa chæ cuûa 3 oâ nhôù khaùc nhau ñang hieän dieän trong Cache
2. Giaû söû moät maùy tính coù boä nhôù trong laø 512 byte, Cache 256 byte.
a. Haõy xaây döïng baûng moâ taû toå chöùc Cache töông öùng tröïc tieáp cho maùy naøy, neáu moãi
khoái trong cache laø 32 byte.
b. Cho bieát caùc khoái: 2, 9, vaø 15 cuûa boä nhôù trong ñöôïc ñaët vaøo vò trí naøo cuûa Cache.
c. Cho ví duï moät tröôøng hp thaønh coâng Cache.
3. Laëp laïi caâu 2 cho tröôøng hôïp Cache 2-way phoái hôïp taäp hôïp (töùc laø moãi taäp hôïp coù 2
khoái).
4. Xeùt moät CPU chaïy ôû 500MHz, taäp leänh coù daïng nhö bng. Trung bình moãi leänh coù tæ leä
thaâm nhaäp boä nhôù laø 1.3
Coù 2 khaû naêng toå chöùc boä nhôù Cache cho maùy naøy:
Caùch 1: Duøng Cache töông öùng tröïc tieáp vôùi:
- miss penalty = 50 chu kyø
- miss rate = 1,4%
Caùch 2: Duøng Cache phoái hôïp taäp hôïp vôùi:
- miss penalty = 65 chu kyø
- miss rate = 1%
- Thôøi gian choïn taäp hôïp laøm cho CPI trung bình taêng 1,1 laàn
Anh (chò) haõy choïn caùch toát hôn. Giaûi thích vì sao.
5. Câu 4 (Giáo trình)
Cho mt b nh cache tương ng trc tiếp có 8 khi, mi khi có 16 byte. B nh trong có
64 khi. Gi s lúc khi động máy, 8 khi đầu tiên ca b nh trong được đưa lên cache.
a. Viết bng nhãn ca các khi đang hin din trong Cache
b. CPU đọc các ô nh sau đây: 04AH, 27CH, 3F5H. Nếu tht bi Cache thì cp nht bãng
nhãn.
c. CPU dùng cách ghi li. Khi tht bi cache, CPU dùng cách ghi có np. Mô t công vic
ca b qun lý cache khi CPU ghi d liu mi vào các ô nh: 0C3H, 05AH, 1D5H.
BÀI GII CHƯƠNG 4
2. BNT = 512 byte; Cache 256 byte
a. Cache tương ng trc tiếp:Tag – Index – Offset
- Khi có 32 byte => Offset = 5 bit
- S khi cache = 256/32 = 8 => Index = 3 bit
- BNT 512 byte => Địa ch ô nh = 9 bit
==> Tag = 9 bit – (5 + 3) = 1
b. Đưa các khi vào Cache
- Khi i=2: ==> k = 2 mod 8 = 2
i=2 ==> 0010 = Tag ca i=2: 0 và Đặt V = 1 ti khi Index =
010
- Khi i=9: ==> k = 9 mod 8 = 1
i=9 ==> 1001 = Tag ca i=9: 1 và Đặt V = 1 ti khi Index =
001
- Khi i=15: ==> k = 15 mod 8 = 7
i=15 ==> 1111 = Tag ca i=15: 1 và Đặt V = 1 ti khi Index =
111
c. Cache hit: 111111111, 111111110, 111111101
3. Lp li câu 2 cho trường hp Cache 2-way phi hp tp hp (tc
là mi tp hp có 2 khi).
a. Cache 2-way: Tag – Index – Offset
- Khi có 32 byte => Offset = 5 bit
- S khi cache = 256/32 = 8
=> S tp hp = 8/2 = 4 => Index = 2 bit
- BNT 512 byte => Địa ch ô nh = 9 bit
==> Tag = 9 bit – (5 + 2) = 2 bit
b. Đưa các khi vào Cache:
- Khi i=2: => k = 2 mod 4 = 2. i=2 => 0010 => Tag ca i=2 là 00
Đặt V = 1 ti khi Index = 10
- Khi i=9: => k = 9 mod 4 = 1. i=9 => 1001 => Tag ca i=9 là 10
Đặt V = 1 ti khi Index = 01
- Khi i=15: => k = 15 mod 4 = 3; i=15 => 1111 => Tag ca i=15
là 11 và Đặt V = 1 ti khi Index = 11
4.
Tính thi gian thi hành (CPUTime) ca tng cách t chc Cache
CÁCH 1:
CPI1 = (2x0.45) + (2x0.35) + (3x0.2) = 2.2
=> CPUTime1 = IC x (2.2 + 1.3 x 1.4 x 50) x 1/500*106 = IC x 93.2 x 1/500*106
CÁCH 2:
CPI2 = 1.1 x CPI1 = 1.1 x 2.2 = 2.42
=> CPUTime2 = IC x (2.42 + 1.3 x 1 x 65) x 1/500*106 = IC x 86.92 x 1/500*106
n = CPUTime1 / CPUTime2 = 93.2 / 86.92 = 1.07 ln
Index V D Tag (1 bit)
000 0 0
001 0 0
010 0 0
011 0 0
100 0 0
101 0 0
110 0 0
111 0 0
Index V D Tag (1bit)
000 0 0
001 1 0 1
010 1 0 0
011 0 0
100 0 0
101 0 0
110 0 0
111 1 0 1
Index V D Tag (2bit)
00 0 0
0 0
01 0 0
0 0
10 0 0
0 0
11 0 0
0 0
Index V D Tag (2bit)
00 0 0
0 0
01 1 0 10
0 0
10 0 0
1 0 00
11 1 0 11
0 0
CycleTimeyMissPenaltMissRate
Inst
MemAccess
Execution
CPIICCPUtime ×
××+×=
Î CPUTime1 > CPUTime2
Vy, tc độ thi hành ca chương trình trên Cache cách 2
nhanh hơn trên Cache cách 1 Î La chn Cache cách 2 để s dng.
5.
Cho mt b nh cache tương ng trc tiếp có 8 khi, mi khi có 16 byte. B nh trong có
64 khi. Gi s lúc khi động máy, 8 khi đầu tiên ca b nh trong (i=0 ... 7) được đưa lên
cache.
a. Viết bng nhãn ca các khi đang hin din trong Cache
- Khi có 16 byte => Offset = 4 bit
- Cache có 8 khi => Index = 3 bit
- BNT: 64 x 16 = 1024 byte
=> Địa ch ô nh = 10 bit
==> Tag = 10 – (4 + 3) = 3 bit
- Đưa 8 khi đầu tiên vào Cache:
* Khi i =0 => k = 0 mod 8 = 0
i=0 => 000000 => Tag ca i=0: 000 và Đặt V = 1 ti khi Index = 000
* Khi i =1 => k = 1 mod 8 = 1
i=1 => 000001 => Tag ca i=0: 000 và Đặt V = 1 ti khi Index = 001
* Khi i =2 => k = 2 mod 8 = 2
i=2 => 000010 => Tag ca i=0: 000 và Đặt V = 1 ti khi Index = 010
* Khi i =3 => k = 3 mod 8 = 3
i=3 => 000011 => Tag ca i=3: 000 và Đặt V = 1 ti khi Index = 011
* Khi i =4 => k = 4 mod 8 = 4
i=4 => 000100 => Tag ca i=4: 000 và Đặt V = 1 ti khi
Index = 100
* Khi i =5 => k = 5 mod 8 = 5
i=5 => 000101 => Tag ca i=5: 000 và Đặt V = 1 ti khi
Index = 101
* Khi i =6 => k = 6 mod 8 = 6
i=6 => 000110 => Tag ca i=6: 000 và Đặt V = 1 ti khi
Index = 110
* Khi i =7 => k = 7 mod 8 = 7
i=7 => 000111 => Tag ca i=7: 000 và Đặt V = 1 ti khi
Index = 111
b. CPU đọc các ô nh sau đây: 04AH, 27CH, 3F5H. Nếu tht bi Cache thì cp nht bãng
nhãn.
* 04Ah = 0001001010 => Cache hit
* 27Ch = 1001111100 => Cache miss => Trng pht cache
Ô nh 27Ch đang nm trong khi i=39 trong BNT
=> k = 39 mod 8 = 7 => Ly khi i=39 đưa vào Cache ti
khi k=7. Cp nht bng nhn:
Index V D Tag (3 bit)
000 1 0 000
001 1 0 000
010 1 0 000
011 1 0 000
100 1 0 000
101 1 0 000
110 1 0 000
111 1 0 000
Index V D Tag (3 bit)
000 1 0 000
001 1 0 000
010 1 0 000
011 1 0 000
100 1 0 000
101 1 0 000
110 1 0 000
111 1 0 100
* 3F5h = 1111110101 => Cache miss => Trng pht cache
Ô nh 3F5h đang nm trong khi i=63 trong BNT
=> k = 63 mod 8 = 7 => Ly khi i=63 đưa vào Cache ti
khi k=7. Cp nht bng nhn:
c. CPU dùng cách ghi li. Khi tht bi cache, CPU dùng
cách ghi có np. Mô t công vic ca b qun lý cache khi
CPU ghi d liu mi vào các ô nh: 0C3H, 05AH, 1D5H.
* 0C3h = 0011000011 => Cache miss => CPU dùng
cách ghi có np: CPU ghi trc tiếp giá tr vào b nh
trong. Sau đó np khi cha ô nh 0C3h vào Cache:
=> i=12 => k=12 mod 8 = 4. Cp nht bng nhn:
* 05Ah = 0001011010 => Cache hit => CPU dùng cách
ghi li: CPU ghi d liu mi cho ô nh 05Ah vào Cache
=> Đặt D = 1. Cp nht bng nhn
* 1D5h = 0111010101 => Cache miss => CPU dùng cách
ghi có np: CPU ghi trc tiếp d liu ca ô nh 1D5h vào
b nh trong. Sau đó np khi cha ô nh 1D5h vào
Cache: i=29 => k=29 mod 8 = 5 => Ly khi i=29 đưa
vào cache ti k=5. Vì khi k=5 trong cache có D=1 (d
liu có thay đổi) nên phi copy khi k=5 vào BNT ti i=5
trước khi đưa khi i=29 vào cache.
Cp nht bng nhn:
Index V D Tag (3 bit)
000 1 0 000
001 1 0 000
010 1 0 000
011 1 0 000
100 1 0 001
101 1 0 011
110 1 0 000
111 1 0 111
Index V D Tag (3 bit)
000 1 0 000
001 1 0 000
010 1 0 000
011 1 0 000
100 1 0 001
101 1 1 000
110 1 0 000
111 1 0 111
Index V D Tag (3 bit)
000 1 0 000
001 1 0 000
010 1 0 000
011 1 0 000
100 1 0 001
101 1 0 000
110 1 0 000
111 1 0 111
Index V D Tag (3 bit)
000 1 0 000
001 1 0 000
010 1 0 000
011 1 0 000
100 1 0 000
101 1 0 000
110 1 0 000
111 1 0 111