Chào các bạn! Vì nhiều lý do từ nay Truyen2U chính thức đổi tên là Truyen247.Pro. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

Bộ nhớ Cache(Ánh xạ)

Ánh xạ trực tiếp

Mỗi Block của BNC chỉ được ánh xạ vào một Line duy nhất:

i = j mod m

i: số hiệu Line trong cache

j: số hiệu Block trong BNC

m: số lượng Line trong cache

Khi đó, địa chỉ do CPU phát ra gồm 3 trường:

Word: xác định số ngăn nhớ trong Block

 Block (Line) có 2w ngăn nhớ

Line: xác định số Line trong cache

 Cache có 2r Line, cache chứa 2r + w ngăn nhớ

Tag: xác định Block nào đang ở trong Line

 BNC chứa 2(s - r) + r + w = 2s + w ngăn nhớ

Cho máy tính có dung lượng:

BNC = 256 MB, cache = 64 KB, line = 16 byte,

Độ dài ngăn nhớ = 4 byte.

Tìm dạng địa chỉ do BXL phát ra?

Giải: Ta có:

BNC = 256 MB = 228 byte = 228/22 = 226 ng/nhớ

Cache = 64 KB = 216 byte = 216/22 = 214 ng/nhớ

Line = 16 byte =24/22 = 22 ng/nhớ  w = 2

Số lượng Line trong cache: 214/22 = 212  r = 12

Số bit của phần Tag: 26 - 12 - 2 = 12, s - r = 12

Ưu điểm:

Dễ thực hiện, vì một Block được ánh xạ cố định vào một Line  không cần thuật toán chọn Line.

Thiết kế mạch đơn giản.

Nhược điểm:

Tỉ lệ cache hit thấp.

Ánh xạ liên kết hoàn toàn

Mỗi Block trong BNC được ánh xạ vào một Line bất kỳ trong Cache

Khi đó, địa chỉ do BXL phát ra có dạng

Word: xác định ngăn nhớ trong Block

 Block có 2w ngăn nhớ

Tag: xác định Block đang ở trong Line

 Số lượng Block: 2s

 Dung lượng BNC: 2s + w ngăn nhớ

Ưu điểm:

Tỉ lệ cache hit cao hơn ánh xạ trực tiếp vì một Block được phép vào một Line bất kỳ.

Nhược điểm:

Thiết kế mạch tương đối phức tạp, thể hiện ở mạch so sánh.

Ánh xạ liên kết tập hợp

Cache được chia thành nhiều Set, mỗi Set gồm nhiều Line liên tiếp

Một Block của BNC chỉ được ánh xạ vào một Set duy nhất trong cache, nhưng được ánh xạ vào Line bất kỳ trong set đó:

i = j mod v

i: số hiệu Set trong cache

j: số hiệu Block trong BNC

v: số lượng Set trong cache

Khi đó, địa chỉ do BXL phát ra gồm:

Word: xác định số hiệu ngăn nhớ trong Block

 Block (Line) có 2w ngăn nhớ

Set: xác định số hiệu Set trong cache

 Cache có 2d Set

Tag: xác định Block nào đang ở trong Line

 BNC chứa 2(s - d) + d + w = 2s + w ngăn nhớ

Cho máy tính có dung lượng:

BNC = 256 MB, cache = 128 KB, line = 64 byte,

Set = 4 Line, độ dài ngăn nhớ = 4 byte.

Tìm dạng địa chỉ do BXL phát ra?

Giải: Ta có:

BNC = 228 byte = 228/22 = 226 ng/nhớ

Cache = 217 byte = 217/22 = 215 ng/nhớ

Line = 26/22 = 24 ng/nhớ  w = 4

D/l Set: 22 * 24= 26  s/l Set: 215/26 = 29  d = 9

Số bit của phần Tag: 26 - 9 - 4 = 13, s - d = 13

Ưu điểm:

Tỉ lệ cache hit cao vì một Block được phép vào một Line bất kỳ trong Set, và dễ so sánh.

Đây là kỹ thuật ánh xạ tốt nhất trong 3 kỹ thuật.

Nhược điểm:

Thiết kế mạch phức tạp.

Các thuật toán thay thế

Kỹ thuật ánh xạ trực tiếp: Không thay được

Hai kỹ thuật ánh xạ liên kết: có 4 thuật toán

Random: thay ngẫu nhiên một Block cũ nào đó

 Dễ thực hiện, nhanh nhất, tỉ lệ cache hit thấp.

FIFO (First In - First Out): thay Block ở đầu tiên trong số các Block đang có trong cache

 tỉ lệ cache hit không cao

LFU (Least Frequently Used): thay Block được dùng với tần suất ít nhất  tỉ lệ cache hit tương đối cao

LRU (Least Recently Used): thay Block được dùng gần đây ít nhất  tỉ lệ cache hit cao

Hoạt động của cache

Đọc:

Nếu cache hit: đọc ngăn nhớ từ cache

Nếu cache miss: thay Block  cache hit

Ghi:

Nếu cache hit: có 2 phương pháp:

Write through: ghi dữ liệu vào cả cache và cả BNC

 không cần thiết, tốc độ chậm, mạch đơn giản.

Write back: chỉ ghi vào cache, khi nào Block (trong cache) được ghi bị thay đi  ghi vào BNC

 tốc độ nhanh, mạch phức tạp.

Nếu cache miss: thay Block  cache hit

Bạn đang đọc truyện trên: Truyen247.Pro

Tags: