Tải bản đầy đủ (.doc) (8 trang)

Kiến trúc MT BT chương 4 các cấp bộ nhớ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (94.67 KB, 8 trang )

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. 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:
Khối
8
17
23
34
38
67
69
132



0
0
0
0
0
0
0
1

Nhản
0 0 0
0 0 1
0 0 1
0 1 0
0 1 0
1 0 0
1 0 0
0 0 0

1
0
0
0
0
0
0
0

Chỉ số

0 0 0
0 0 1
1 1 1
0 1 0
1 1 0
0 1 1
1 0 1
1 0 0

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

`


Chỉ số
0
1
2
3
4
5
6
7

0
0
0
0

1
0
0
0

Nhản
0 0 0
0 0 1
0 1 0
1 0 0
0 0 0
1 0 0
0 1 0
0 0 1

1
0
0
0
0
0
0
0

M
0
0
0
0
0

0
0
0

Thành
công

Trướ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
Chỉ số
0
1
2
3
4
5
6
7

0
0
1
0
1
0
0
0


0
0
0
1
0
1
0
0

Nhản
0 0
0 1
0 0
0 0
0 0
0 0
1 0
0 1

Thất
bại

Trước khi đọc

`

Sau khi đọc

1
0

0
0
0
0
0
0

M
0
0
0
0
0
0
0
0


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.
3) Đọc 915H: 100100010101
Chỉ số
0
1
2
3
4
5
6
7


0
1
1
0
1
0
0
0

0
0
0
1
0
1
0
0

Nhản
0 0
0 1
0 0
0 0
0 0
0 0
1 0
0 1

1
0

0
0
0
0
0
0

Thất
bại

Trướ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.

`

M
0
0
0
0
0
0
0
0


4) Ghi 08CH: 000010001100
Chỉ số
0

1
2
3
4
5
6
7

0
1
1
0
1
0
0
0

Nhản
0 0 0
0 0 1
0 0 0
1 0 0
0 0 0
1 0 0
0 1 0
0 0 1

1
0
0

0
0
0
0
0

M
1
0
0
0
0
0
0
0

1
0
0
0
0
0
0
0

M
1
0
0
0

0
0
0
0

Thành
công

Trước khi ghi
Sau khi ghi
M = 0 => Chỉ ghi vào bộ nhớ cache, cập nhật bit M = 1
5) Ghi B4AH: 101101001010
Chỉ số
0
1
2
3
4
5
6
7

0
1
1
0
1
0
0
0


Nhản
0 0 0
0 0 1
0 0 0
1 0 0
0 1 1
1 0 0
0 1 0
0 0 1

Thất
bại

Trước khi ghi
Sau khi ghi
M = 0 => Ghi vào bộ nhớ trong và nạp khối lên cache, cập nhật bảng nhản.

`


6) Ghi 45DH: 010001011101
Chỉ số
0
1
2
3
4
5
6

7

0
1
1
0
1
0
0
0

0
0
0
1
0
1
0
0

Nhản
0 0
0 1
0 0
0 0
1 1
0 0
1 0
0 1


1
0
0
0
0
0
0
0

M
1
0
0
0
0
1
0
0

1
0
0
0
0
0
1
0

M
1

0
0
0
0
1
0
0

Thành
công

Trước khi ghi
Sau khi ghi
M = 0 => Chỉ ghi vào bộ nhớ cache, cập nhật bit M = 1.
7) Đọc 5E9H: 010111101001

Chỉ số
0
1
2
3
4
5
6
7

Thất
bại

`


0
1
1
0
1
0
0
0

0
0
0
1
0
1
1
0

Nhản
0 0
0 1
0 0
0 0
1 1
0 0
0 1
0 1



Trướ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
Chỉ số
0
1
2
3
4
5
6
7

0
1
1
0
1
0
0
1

0
0
0
1
0
1
1

1

Nhản
0 0
0 1
0 0
0 0
1 1
0 0
0 1
0 0

1
0
0
0
0
0
1
0

M
1
0
0
0
0
1
0
0


Thất
bại

Trước khi ghi
Sau khi ghi
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
Chỉ số
0
1
2
3
4
5
6
7

Thất
bại

`

1
1
1
0
1
0
0

1

1
0
0
1
0
1
1
1

Nhản
0 1
0 1
0 0
0 0
1 1
0 0
0 1
0 0

1
0
0
0
0
0
1
0


M
0
0
0
0
0
1
0
0


Trướ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

Chỉ số
0
1
2
3
4
5
6
7

1
1
1

0
1
0
0
1

1
0
0
1
0
1
1
1

Nhản
0 1
0 1
0 1
0 0
1 1
0 0
0 1
0 0

1
0
0
0
0

0
1
0

M
0
0
0
0
0
1
0
0

1
0
0
0
1
0
1
0

M
0
0
0
0
0
1

0
0

Thất
bại

Trước khi ghi
Sau khi ghi
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
Chỉ số
0
1
2
3
4
5
6
7

Thất
bại
`

1
1
1
0
0
0

0
1

1
0
0
1
1
1
1
1

Nhản
0 1
0 1
0 1
0 0
1 0
0 0
0 1
0 0


Trướ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
Chỉ số
0
1

2
3
4
5
6
7

1
1
1
0
0
0
0
1

1
0
0
1
1
1
1
1

Nhản
0 1
0 1
0 1
0 0

1 0
0 0
0 1
0 0

Thành
công

Trước khi ghi
Sau khi ghi
M = 1 => Chỉ ghi vào bộ nhớ cache, bảng nhản không thay đổi.

`

1
0
0
0
1
0
1
0

M
0
0
0
0
0
1

0
0



×