Khi nào bộ đệm CPU được xóa trở lại bộ nhớ chính?


18

Nếu tôi có CPU có hai lõi, mỗi lõi có bộ đệm L1 riêng, có thể Core1 và Core2 lưu trữ cùng một phần bộ nhớ không?
Nếu có thể, giá trị của bộ nhớ chính sẽ là bao nhiêu nếu cả Core1 và Core2 đã chỉnh sửa giá trị của chúng trong bộ đệm?

Câu trả lời:


26

Nếu tôi có CPU có hai lõi, mỗi lõi có bộ đệm L1 riêng, có thể Core1 và Core2 lưu trữ cùng một phần bộ nhớ không?

Đúng. Hiệu suất sẽ là khủng khiếp nếu đây không phải là trường hợp. Hãy xem xét hai luồng chạy cùng một mã. Bạn muốn mã đó trong cả bộ đệm L1.

Nếu có thể, giá trị của bộ nhớ chính sẽ là bao nhiêu nếu cả Core1 và Core2 đã chỉnh sửa giá trị của chúng trong bộ đệm?

Giá trị cũ sẽ nằm trong bộ nhớ chính, điều này sẽ không thành vấn đề vì cả CPU sẽ không đọc nó. Trước khi đẩy một giá trị được sửa đổi từ bộ đệm, nó phải được ghi vào bộ nhớ. Thông thường một số biến thể của giao thức MESI được sử dụng. Trong triển khai MESI truyền thống, nếu một giá trị được sửa đổi trong một bộ đệm, thì nó không thể xuất hiện ở tất cả các bộ đệm khác ở cùng cấp đó.


15

Vâng, điều này (có hai bộ nhớ cache trong cùng một vùng bộ nhớ) có thể xảy ra, thực sự nó là một vấn đề xảy ra rất nhiều trong thực tế. Có nhiều giải pháp khác nhau, ví dụ:

  • hai bộ nhớ cache có thể giao tiếp để đảm bảo chúng không đồng ý
  • bạn có thể có một số loại giám sát viên theo dõi tất cả các bộ đệm và cập nhật chúng cho phù hợp
  • mỗi bộ xử lý giám sát các vùng nhớ mà nó đã lưu trong bộ nhớ cache và khi phát hiện ghi, nó sẽ xóa bộ đệm (bây giờ không hợp lệ)

Vấn đề được gọi là sự kết hợp bộ nhớ cache . Các bài viết trên Wikipedia về chủ đề này có một cái nhìn tổng quan tốt đẹp của các vấn đề và giải pháp khả thi.


2

Để trả lời câu hỏi trong tiêu đề của bạn, nó phụ thuộc vào giao thức bộ đệm. Nếu nó được ghi lại, bộ đệm sẽ chỉ được xóa trở lại bộ nhớ chính khi bộ điều khiển bộ đệm không có lựa chọn nào khác ngoài việc đặt một khối bộ đệm mới vào không gian đã bị chiếm dụng. Khối chiếm chỗ trước đó được loại bỏ và giá trị của nó được ghi lại vào bộ nhớ chính.

Giao thức khác là ghi qua. Trong trường hợp đó, bất cứ khi nào khối bộ đệm được ghi ở cấp n, khối tương ứng ở cấp (n + 1) được cập nhật. . Trong sơ đồ ghi lại, chỉ bộ đệm cấp cao nhất mới có giá trị cập nhật nhất cho một khối bộ nhớ cụ thể.


1
Tôi tự hỏi bao nhiêu phần trăm độc giả ở đây đã từng sử dụng giấy carbon. :)
Barmar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.