Lưu trữ dữ liệu lưu trữ, thường trong SRAM như mảng dữ liệu, nhưng cũng có phí. Tôi không đặc biệt thích các thuật ngữ "kích thước bit dữ liệu" và "kích thước bit trên cao", bởi vì (a) có chi phí không phải là ô lưu trữ bit, và (b) không phải tất cả các ô bit đều tốn kém như nhau. Nhưng chúng ta hãy đi cùng với các điều khoản cho bây giờ.
Việc chụp của tôi là "kích thước bit trên cao" có thể đề cập đến số bit thẻ cần được lưu trữ để truy cập bộ nhớ cache. Thông thường chúng được lưu trữ trong một mảng khác nhau, một mảng thẻ tách biệt với mảng dữ liệu. So sánh với số bit dữ liệu.
Dưới đây là ba ví dụ đơn giản:
Xem xét bộ nhớ cache 32 KiB (kilobyte), với 64 dòng bộ nhớ cache (B). Thông thường, chúng tôi sẽ để bit 0-5 của địa chỉ được bù đắp dòng bộ nhớ cache.
32 KiB/(64 B/dòng) => 2^(5 + 10)/2^6 => 2^9 => 512 dòng bộ nhớ cache.
--- ++ Ví dụ 1: Direct Mapped
Chúng ta hãy tưởng tượng rằng đó là một bộ nhớ cache ánh xạ trực tiếp. Sau đó, chúng tôi có thể mất 9 bit tiếp theo, bit 6-14 của địa chỉ, như là một "chỉ mục" vào mảng của dòng bộ nhớ cache.
Cho đến nay rất tốt. Bây giờ, để tìm ra thẻ, chúng ta cần biết chiều rộng địa chỉ đầy đủ. Chúng ta hãy nói rằng nó là 64 bit (mặc dù hầu hết các máy "64-bit" chỉ thực hiện 40 hoặc 48 bit vào năm 2012). Để phân biệt một dòng bộ nhớ cache từ bất kỳ dòng bộ nhớ cache nào khác ánh xạ tới cùng một mục trong bộ đệm, chúng ta cần lưu trữ các bit còn lại của địa chỉ, bit 15-63, 49 bit, làm thẻ.
Quyền truy cập vào bộ nhớ cache được ánh xạ trực tiếp sau đó tiến hành bằng cách trích xuất chỉ mục, đọc thẻ và dữ liệu với chỉ mục đó, so sánh thẻ đọc với thẻ của địa chỉ mà chúng tôi đang tra cứu. phù hợp và bỏ lỡ nếu không, và như vậy.
Chi phí: 49 bit thẻ cho mỗi 64B (512 bit) dữ liệu.
Tổng số: * thẻ hoặc "trên cao": 512 * 49 bit * bit dữ liệu: 512 * 512 = 32KiB = 256 Kib (kibi-bit).
--- ++ Ví dụ 2: Liên kết thiết lập 8 chiều
Bây giờ, hãy tưởng tượng rằng bộ nhớ cache là 8 cách kết hợp. Điều này có nghĩa là các dòng 512 sẽ được chia thành 512/8 = 64 bộ, mỗi dòng chứa 8 dòng.
Khoảng trống bên trong một dòng bộ nhớ cache vẫn là bit 0-5.
Tuy nhiên, hiện tại chúng tôi chỉ cần 6 bit làm chỉ mục, để xác định số tập hợp. Các bit 6-11.
Thẻ cần phải là tất cả các bit còn lại, bit 12-63, 52 bit tổng.
Vì vậy, chi phí của thẻ cho bộ nhớ cache kết hợp 8 chiều là 52 bit thẻ cho 512 bit dữ liệu.
Tổng số: * tag: 512 * 52 bit * dữ liệu: 512 KiB
So với 49 bit của thẻ cho trực tiếp ánh xạ. 8-cách thiết lập liên kết về cơ bản di chuyển log2 (8) bit hơn vào thẻ; nói chung, N-way set associative chuyển các bit ceil (log2 (N)) vào thẻ.
--- ++ Ví dụ 3: Liên kết đầy đủ
Đây là đầu xa của phổ từ ánh xạ trực tiếp. Chúng tôi vẫn có 512 bit dữ liệu trên mỗi dòng bộ nhớ cache, nhưng bây giờ toàn bộ địa chỉ 64 bit, ngoại trừ bù đắp 6 bit, là thẻ. 58 bit của thẻ cho kết hợp đầy đủ, so với 52 bit cho 8 chiều, so với 49 bit cho ánh xạ trực tiếp.
Nhưng hãy nhớ tôi đã nói rằng tôi không thích cụm từ "bit trên cao"? Các bit thẻ trong bộ nhớ cache kết hợp hoàn toàn thường không chỉ là các bit lưu trữ thông thường mà còn phải có các bộ so sánh - về cơ bản là các cổng XOR. Các bit "CAM (Bộ nhớ địa chỉ nội dung)" thường đắt hơn các bit thông thường.
--- + Kết luận
Vì vậy, tôi nghĩ đây là những gì giáo viên của bạn muốn: so sánh đơn giản bit dữ liệu so với bit thẻ. Đây là một ràng buộc thấp hơn trên đầu.
Quang phổ từ ánh xạ trực tiếp thông qua liên kết thiết lập N-way đến liên kết đầy đủ cung cấp một ví dụ. Nhưng có những khía cạnh khác của thiết kế bộ nhớ cache ảnh hưởng đến overhead. Ví dụ:
nếu bạn sử dụng các kích thước địa chỉ khác nhau, phần trăm thay đổi trên không. Ví dụ. Địa chỉ 32 bit sẽ chỉ có 17 bit thẻ trong ví dụ được ánh xạ diredt, so với 49 bit cho địa chỉ 64 bit.
nếu bạn thay đổi chức năng lập chỉ mục bộ nhớ cache, bạn có thể phải thay đổi kích thước thẻ. Ví dụ: có một số lợi ích khi có số lượng dòng bộ nhớ cache chính hoặc tập hợp trong bộ nhớ cache, ví dụ: 511 dòng thay vì 512 cho bộ nhớ cache được ánh xạ trực tiếp. Số nguyên tố như thế này đã làm giảm các vấn đề cộng hưởng. Nhưng thực hiện đơn giản, họ yêu cầu tăng chiều rộng thẻ đến toàn bộ chiều rộng 58 bit.
các sơ đồ như bộ nhớ cache theo ngành cho phép chia sẻ một số phần của thẻ.
Và cứ tiếp tục như vậy.
Đối với một trang web hướng dẫn:
xin lỗi, tôi không biết một cho những thứ mới bắt đầu như vậy. Nhưng tôi sẽ google cho các ghi chú lớp học từ nhiều trường đại học.
trang web của tôi, http://comp-arch.net, bao gồm các chủ đề nâng cao trong kiến trúc máy tính. Nhưng loại điều này quá cơ bản, quá sơ cấp, đối với tôi để đưa vào comp.arch. Mặc dù tôi cho rằng tôi có lẽ nên viết một số giải thích đơn giản về những điều cơ bản trước khi chuyển sang các chủ đề nâng cao. Thỉnh thoảng tôi viết hướng dẫn như vậy, như ở đây, nhưng tôi đã không thu thập chúng.
Tổ chức nhóm tin của USEnet có thể hữu ích.
--- + Tại sao điều này lại quan trọng đối với người lập trình trên stackoverflow?
Đây chủ yếu là chủ đề phần cứng.
Nhưng lập trình viên điều chỉnh mã cần phải hiểu những thứ như thế này, để có được hiệu suất tốt nhất.
Cách tốt nhất để tìm hiểu là yêu cầu hướng và không phải là câu trả lời –