Trên bộ vi xử lý có quản lý TLB phần cứng (giả sử Intel x86-64) nếu xảy ra lỗi TLB và bộ xử lý đang đi qua bảng trang, những bộ nhớ (ngoài chip) này có đi qua hệ thống phân cấp bộ đệm (L1, L2, v.v.) )?
Trên bộ vi xử lý có quản lý TLB phần cứng (giả sử Intel x86-64) nếu xảy ra lỗi TLB và bộ xử lý đang đi qua bảng trang, những bộ nhớ (ngoài chip) này có đi qua hệ thống phân cấp bộ đệm (L1, L2, v.v.) )?
Câu trả lời:
Có, theo như tôi có thể nói, trên các bộ xử lý Intel x86-64, khi xảy ra lỗi TLB và bộ xử lý đang đi trên bảng trang, các truy cập bộ nhớ ngoài chip đó sẽ đi qua hệ thống phân cấp bộ đệm.
Tôi vẫn còn hơi mơ hồ về một vài chi tiết và tôi hy vọng một số câu trả lời khác sẽ điền vào chúng - không có hướng dẫn sử dụng Intel hay AMD mô tả trang đi bộ chi tiết không? Hiểu biết của tôi là:
Sơ đồ trên trang 2 của Thomas W. Barr, Alan L. Cox, Scott Rixner. "Bộ đệm dịch: Bỏ qua, không đi bộ (Bảng trang)" vẽ một đường giữa "Các mục được lưu trữ bởi bộ đệm MMU" và "các mục được lưu trữ bởi bộ đệm dữ liệu L2". (Đây có thể là một bài viết hữu ích cho những người thiết kế CPU mới , hoàn toàn thuộc chủ đề cho "Thiết kế điện tử").
Stephane Eranian và David Mosberger. "Bộ nhớ ảo trong hạt nhân Linux IA-64" và Ulrich Drepper. "Điều mà mọi lập trình viên nên biết về bộ nhớ" (Đây có thể là một bài viết hữu ích cho những người viết các hệ điều hành liên quan đến bảng trang IA-64, một chút lạc đề đối với ED - có lẽ là Stack Overflow với "hoạt động- thẻ hệ thống " hoặc thẻ " osdev " hoặc wiki OSDev.org sẽ là nơi tốt hơn cho chủ đề đó).
Bảng A-10 trên trang 533 của Intel. "Hướng dẫn dành cho nhà phát triển phần mềm kiến trúc Intel® 64 và IA-32" "PAGE_WALKS.CYCLES ... có thể gợi ý xem hầu hết các trang đi bộ có được thỏa mãn bởi bộ đệm hay gây ra lỗi bộ nhớ cache L2 hay không."
invlpg
việc vô hiệu hóa bất kỳ bộ nhớ cache TLB nào cho một addr đức cụ thể. Nếu lối đi trang CTNH không tìm thấy mục nhập cho địa chỉ ảo đó hoặc quyền của mục nhập không cho phép truy cập, bạn sẽ có #PF
ngoại lệ. HĐH xử lý việc đó bằng cách cập nhật bảng trang (có thể sau khi phân trang dữ liệu từ đĩa hoặc thực hiện sao chép khi ghi), sau đó tiếp tục lại để tải / lưu trữ bị lỗi sẽ chạy lại và việc chuyển trang CTNH sẽ thành công.
Tôi có xu hướng đồng ý rằng cái này thuộc về stackexchange, không phải là stackexchange, nhưng vì đây là:
@davidcary là chính xác.
Một số lịch sử:
Việc đi bộ bảng trang Intel x86 KHÔNG được lưu trong bộ nhớ cache cho đến P5, còn gọi là Pentium. Chính xác hơn, truy cập bộ nhớ của bảng trang không được lưu vào bộ đệm, bỏ qua bộ đệm. Vì hầu hết các máy tính đến thời điểm đó đều được ghi lại, chúng nhận được các giá trị phù hợp với bộ đệm. Nhưng họ không rình mò bộ nhớ cache.
P6, còn gọi là Pentium Pro và AFAIK, tất cả các lần đi bộ trang của bộ xử lý tiếp theo đều được phép truy cập bộ đệm và sử dụng giá trị được lấy từ bộ đệm. Vì vậy, họ đã làm việc với bộ đệm ghi lại. (Tất nhiên bạn có thể đặt các bảng trang trong bộ nhớ không thể quản lý, được xác định, ví dụ bởi MTRR. Nhưng đó là một mất hiệu suất lớn, mặc dù nó có thể hữu ích để gỡ lỗi các hệ điều hành.)
Nhân tiện, "truy cập bộ nhớ đi bộ bảng trang này có thể truy cập vào bộ đệm dữ liệu" tách biệt với "các mục trong bảng trang có thể được lưu trữ (được lưu trong bộ đệm) trong Bộ đệm tìm kiếm TLB Ttranslation)." Trên một số máy, TLB được gọi là "Bộ đệm dịch".
Một vấn đề khác có liên quan là các nút bên trong của các bảng trang có thể được lưu trong bộ dữ liệu giống như TLB hơn, ví dụ: bộ đệm PDE.
Một điểm khác biệt chính: bộ đệm dữ liệu được kết hợp và theo dõi. Nhưng bộ nhớ cache TLB và PDE không được rình mò, tức là không mạch lạc. Điểm mấu chốt là, vì các bảng trang có thể được lưu trong bộ đệm TLB và bộ đệm PDE không kết hợp, v.v., phần mềm phải xóa một cách rõ ràng các mục riêng lẻ hoặc nhóm hàng loạt (như toàn bộ TLB), khi các mục trong bảng trang có thể đã được như vậy lưu trữ được thay đổi. Ít nhất là khi thay đổi theo cách "nguy hiểm", đi từ RW-> R-> I hoặc thay đổi địa chỉ.
Tôi nghĩ thật công bằng khi nói rằng mỗi khi một loại bộ nhớ đệm giống như TLB không kết hợp mới được thêm vào, một số HĐH đã bị hỏng, bởi vì nó đã giả định rằng điều này không được thực hiện.