Tôi đã tìm thấy một cuốn sách hay ở thư viện đã cung cấp cho tôi lời giải thích rõ ràng mà tôi cần và bây giờ tôi sẽ chia sẻ ở đây trong trường hợp một số sinh viên khác tình cờ gặp chủ đề này trong khi tìm kiếm về bộ nhớ cache.
Cuốn sách này là "Kiến trúc máy tính - Cách tiếp cận định lượng" 3rd edition bởi Hennesy và Patterson, trang 390.
Đầu tiên, hãy ghi nhớ rằng bộ nhớ chính được chia thành các khối cho bộ nhớ cache. Nếu chúng tôi có bộ nhớ cache 64 byte và RAM 1 GB, RAM sẽ được chia thành khối 128 KB (1 GB RAM/64B bộ nhớ cache = 128 KB Kích thước khối).
Từ cuốn sách:
đâu một khối có thể được đặt trong một bộ nhớ cache?
- Nếu mỗi khối chỉ có một nơi nó có thể xuất hiện trong bộ nhớ cache, bộ nhớ cache được cho là trực tiếp ánh xạ. Khối đích được tính bằng công thức này:
<RAM Block Address> MOD <Number of Blocks in the Cache>
Vì vậy, giả sử chúng ta có 32 khối RAM và 8 khối bộ nhớ cache.
Nếu chúng ta muốn lưu trữ khối 12 từ RAM vào bộ nhớ cache, khối RAM 12 sẽ được lưu vào khối Cache 4. Tại sao? Bởi vì 12/8 = 1 phần còn lại 4. Phần còn lại là khối đích.
Nếu một khối có thể được đặt bất cứ nơi nào trong bộ nhớ cache, bộ nhớ cache được cho là liên kết đầy đủ.
Nếu khối có thể được đặt ở bất kỳ đâu trong một nhóm địa điểm bị hạn chế trong bộ nhớ cache, bộ nhớ cache là đặt liên kết.
Về cơ bản, tập hợp là một nhóm các khối trong bộ nhớ cache. Một khối được ánh xạ đầu tiên lên một tập hợp và sau đó khối có thể được đặt ở bất kỳ vị trí nào bên trong tập hợp.
Công thức là: <RAM Block Address> MOD <Number of Sets in the Cache>
Vì vậy, chúng ta hãy giả sử chúng ta có 32 khối bộ nhớ RAM và một bộ nhớ cache chia thành 4 bộ (mỗi bộ có hai khối, có nghĩa là 8 khối trong tổng số). Bằng cách này thiết lập 0 sẽ có khối 0 và 1, thiết lập 1 sẽ có khối 2 và 3, và như vậy ...
Nếu chúng ta muốn lưu trữ khối RAM 12 vào bộ nhớ cache, khối RAM sẽ được lưu trữ trong Các khối bộ nhớ cache 0 hoặc 1. Tại sao? Bởi vì 12/4 = 3 phần còn lại 0. Do đó, thiết lập 0 được chọn và khối có thể được đặt ở bất kỳ vị trí nào bên trong thiết lập 0 (có nghĩa là khối 0 và 1).
Bây giờ tôi sẽ quay lại vấn đề ban đầu của mình với địa chỉ.
Khối tìm thấy như thế nào nếu nó nằm trong bộ nhớ cache?
Mỗi khung khối trong bộ nhớ cache có địa chỉ. Chỉ cần để làm cho nó rõ ràng, một khối có cả địa chỉ và dữ liệu.
Địa chỉ khối được chia thành nhiều phần: Thẻ, Chỉ mục và Bù đắp.
Thẻ được sử dụng để tìm khối bên trong bộ nhớ cache, chỉ mục hiển thị tập hợp trong đó khối được đặt (làm cho nó khá dư thừa) và bù đắp được sử dụng để chọn dữ liệu.
Bằng cách "chọn dữ liệu", có nghĩa là trong khối bộ nhớ cache, rõ ràng sẽ có nhiều hơn một vị trí bộ nhớ, độ lệch được sử dụng để chọn giữa chúng.
Vì vậy, nếu bạn muốn có thể tưởng tượng một bảng, đây sẽ là các cột:
TAG | INDEX | OFFSET | DATA 1 | DATA 2 | ... | DATA N
Tag sẽ được sử dụng để tìm ra khối, chỉ số sẽ hiển thị trong đó thiết lập các khối là, bù đắp sẽ chọn một của các trường bên phải của nó.
Tôi hy vọng rằng sự hiểu biết của tôi về điều này là chính xác, nếu nó không phải là xin vui lòng cho tôi biết.
u nên đọc chủ đề này từ "Kiến trúc máy tính" của cuốn sách Morris Mano. Điều này được giải thích ở đó theo cách tốt. –
plz .. đi qua liên kết dưới đây, tôi nghĩ rằng nó sẽ giúp bạn hiểu rõ khái niệm ánh xạ trực tiếp trong bộ nhớ cache và các thông số như thẻ, chỉ mục http://csciwww.etsu.edu/tarnoff/labs4717/x86_sim/direct .html – user2891771
@ user2891771 trong liên kết mà bạn đã tham chiếu, trong biểu đồ, tại sao hai khối cuối không liên tiếp (cả 2^n -1)? Điều đó không theo mô hình mà các mã định danh khối liên tiếp - 1,2,3, .... – committedandroider