BÀI TẬP CHƯƠNG 4 Cho một bộ nhớ cache tương ứng trực tiếp có 8 khối, mỗi khối có 16 byte.. Khi thành công cache sử dụng cách ghi lại.. Khi thất bại cache dùng cách ghi có nạp.. Viết bảng
Trang 1BÀI TẬP CHƯƠNG 4 Cho một bộ nhớ cache tương ứng trực tiếp có 8 khối, mỗi khối có 16 byte Bộ nhớ trong có
256 khối Khi thành công cache sử dụng cách ghi lại Khi thất bại cache dùng cách ghi có nạp Giả sử lúc khởi động, 8 khối sau đây của bộ nhớ trong đã được đưa lên cache: 8, 17,
23, 34, 38, 67, 69, 132.
1 Viết bảng nhãn của các khối hiện đang nằm trong cache.
2 Cập nhật bảng nhản khi CPU lần lượt đưa ra các địa chỉ sau đây để đọc/ghi vào bộ nhớ trong:
1) Đọc: 43FH,
2) Đọc: 82AH,
3) Đọc: 915H,
4) Ghi: 08CH,
5) Ghi: B4AH,
6) Ghi: 45DH,
7) Đọc: 5E9H,
8) Ghi: C7AH,
9) Đọc: D85H,
10) Ghi: 92AH,
11) Đọc: 6C5H,
12) Ghi: 458H
Giải:
1 Bảng nhãn của các khối hiện đang nằm trong cache:
2 Cập nhật bảng nhản khi CPU lần lượt đưa ra các địa chỉ sau đây để đọc/ghi vào bộ nhớ trong:
1) Đọc 43FH: 010000111111
Trang 2Trước khi đọc Sau khi đọc
M = 0 => Đọc dữ liệu từ bộ nhớ cache, bảng nhản không thay đổi 2) Đọc 82AH: 100000101010
`
0 0 0 0 0 1 0
1 0 0 0 1 0 0
2 0 0 1 0 0 0
4 1 0 0 0 0 0
5 0 1 0 0 0 0
6 0 0 1 0 0 0
7 0 0 0 1 0 0
0 0 0 0 0 1 0
1 0 0 0 1 0 0
2 1 0 0 0 0 0
3 0 1 0 0 0 0
4 1 0 0 0 0 0
5 0 1 0 0 0 0
6 0 0 1 0 0 0
7 0 0 0 1 0 0
Thành công
Thất bại
Trang 3M = 0 => Nạp khối mới lên cache, cập nhật bảng nhản, đọc dữ liệu từ bộ nhớ cache 3) Đọc 915H: 100100010101
M = 0 => Nạp khối mới lên cache, cập nhật bảng nhản, đọc dữ liệu từ bộ nhớ cache.
0 0 0 0 0 1 0
1 1 0 0 1 0 0
2 1 0 0 0 0 0
3 0 1 0 0 0 0
4 1 0 0 0 0 0
5 0 1 0 0 0 0
6 0 0 1 0 0 0
7 0 0 0 1 0 0
Thất bại
Trang 44) Ghi 08CH: 000010001100
M = 0 => Chỉ ghi vào bộ nhớ cache, cập nhật bit M = 1 5) Ghi B4AH: 101101001010
M = 0 => Ghi vào bộ nhớ trong và nạp khối lên cache, cập nhật bảng nhản.
`
1 1 0 0 1 0 0
2 1 0 0 0 0 0
3 0 1 0 0 0 0
4 1 0 0 0 0 0
5 0 1 0 0 0 0
6 0 0 1 0 0 0
7 0 0 0 1 0 0
0 0 0 0 0 1 1
1 1 0 0 1 0 0
2 1 0 0 0 0 0
3 0 1 0 0 0 0
4 1 0 1 1 0 0
5 0 1 0 0 0 0
6 0 0 1 0 0 0
7 0 0 0 1 0 0
Thành công
Thất bại
Trang 56) Ghi 45DH: 010001011101
M = 0 => Chỉ ghi vào bộ nhớ cache, cập nhật bit M = 1 7) Đọc 5E9H: 010111101001
0 0 0 0 0 1 1
1 1 0 0 1 0 0
2 1 0 0 0 0 0
3 0 1 0 0 0 0
4 1 0 1 1 0 0
6 0 0 1 0 0 0
7 0 0 0 1 0 0
0 0 0 0 0 1 1
1 1 0 0 1 0 0
2 1 0 0 0 0 0
3 0 1 0 0 0 0
4 1 0 1 1 0 0
5 0 1 0 0 0 1
6 0 1 0 1 1 0
7 0 0 0 1 0 0
Thành công
Thất bại
Trang 6Trước khi đọc Sau khi đọc
M = 0 => Nạp khối mới lên cache, cập nhật bảng nhản, đọc dữ liệu từ bộ nhớ cache 8) Ghi C7AH: 110001111010
M = 0 => Ghi vào bộ nhớ trong và nạp khối lên cache, cập nhật bảng nhản 9) Đọc D85H: 110110001101
`
0 0 0 0 0 1 1
1 1 0 0 1 0 0
2 1 0 0 0 0 0
3 0 1 0 0 0 0
4 1 0 1 1 0 0
5 0 1 0 0 0 1
6 0 1 0 1 1 0
7 1 1 0 0 0 0
0 1 1 0 1 1 0
1 1 0 0 1 0 0
2 1 0 0 0 0 0
3 0 1 0 0 0 0
4 1 0 1 1 0 0
5 0 1 0 0 0 1
6 0 1 0 1 1 0
7 1 1 0 0 0 0
Thất bại
Thất bại
Trang 7Trước khi đọc Sau khi đọc
M = 1 => Chép khối vào bộ nhớ, nạp khối mới lên cache, cập nhật bảng nhản và bit M = 0,
đọc dữ liệu từ bộ nhớ cache.
10) Ghi 92AH: 100100101010
M = 0 => Ghi vào bộ nhớ trong và nạp khối lên cache, cập nhật bảng nhản.
11) Đọc 6C5H: 011011000101
0 1 1 0 1 1 0
1 1 0 0 1 0 0
2 1 0 0 1 0 0
3 0 1 0 0 0 0
4 1 0 1 1 0 0
5 0 1 0 0 0 1
6 0 1 0 1 1 0
7 1 1 0 0 0 0
0 1 1 0 1 1 0
1 1 0 0 1 0 0
2 1 0 0 1 0 0
3 0 1 0 0 0 0
4 0 1 1 0 1 0
5 0 1 0 0 0 1
6 0 1 0 1 1 0
7 1 1 0 0 0 0
Thất bại
Thất bại
Trang 8Trước khi đọc Sau khi đọc
M = 0 => Nạp khối mới lên cache, cập nhật bảng nhản, đọc dữ liệu từ bộ nhớ cache 12) Ghi 458H: 010001011000
M = 1 => Chỉ ghi vào bộ nhớ cache, bảng nhản không thay đổi.
`
0 1 1 0 1 1 0
1 1 0 0 1 0 0
2 1 0 0 1 0 0
3 0 1 0 0 0 0
4 0 1 1 0 1 0
6 0 1 0 1 1 0
7 1 1 0 0 0 0
Thành công