Có phải vấn đề răng cưa xuất hiện trong bộ đệm được gắn thẻ vật lý hầu như được lập chỉ mục?


7

Về cơ bản, và như một phương pháp đơn giản, chúng ta có thể truy cập bộ đệm với Địa chỉ vật lý từ TLB.

Nhưng, như một phương pháp khác, chúng ta có thể truy cập bộ đệm với Địa chỉ ảo . Nhưng, trong trường hợp này, nếu bộ đệm không được xóa hoàn toàn giữa chuyển đổi ngữ cảnh (dữ liệu của quá trình khác có thể tồn tại trong bộ đệm), có một vấn đề răng cưa. Cùng một bộ nhớ có thể được chuyển hướng từ các địa chỉ ảo khác nhau.

Nhưng trong cuốn sách văn bản của tôi, bao gồm cả những vấn đề này, nhiều vấn đề có thể được giải quyết bằng cách hầu như được lập chỉ mục vật lý . Tôi nghĩ rằng điều này vẫn có thể làm cho một vấn đề răng cưa.

Tôi có lầm không?


Shubham đã đưa ra câu trả lời đúng. Để biết thêm chi tiết / thông tin chi tiết, bạn có thể xem bài khảo sát của tôi về TLB để xem xét hơn 85 bài báo. Hình 3a của bài báo thảo luận về phân chia địa chỉ và 3b cho thấy trường hợp đặc biệt khi hiện tượng răng cưa không xảy ra đối với kích thước bộ đệm nhất định do chỉ số bộ đệm được tính toán hoàn toàn từ phần bù trang.
dùng984260

Câu trả lời:


6

Vấn đề Aliasing có thể được giải quyết nếu chúng ta chọn kích thước bộ đệm đủ nhỏ. Nếu kích thước bộ đệm sao cho tất cả các bit để lập chỉ mục bộ đệm đều xuất phát từ các bit bù trang, nhiều địa chỉ ảo sẽ trỏ đến cùng một vị trí chỉ mục trong bộ đệm và bí danh sẽ được giải quyết.

Ví dụ, hãy xem xét địa chỉ ảo 32 bit 0xFFFF FFFF, hệ thống này sử dụng kích thước trang là 64kB, giả sử trang này bù lại các bit 16 bit. Bây giờ nếu chúng ta chọn Các bit chỉ mục là 10 (số bộ 1024) và kích thước khối là 64 Byte. Sau đó, các bit chỉ số và các bit bù khối đều được cung cấp trong các bit bù trang của địa chỉ ảo. Hãy xem xét một địa chỉ khác 0xEEEE FFFF, địa chỉ này có vẻ như sẽ gây ra răng cưa nhưng mặc dù có địa chỉ ảo khác nhau, các bit thứ tự thấp hơn buộc nó ánh xạ tới cùng một vị trí trong bộ đệm và không có bí danh. Hạn chế của phương pháp này là kích thước bộ đệm được giới hạn bởi kích thước trang.


Trong lời nói của cư sĩ. Toàn bộ khái niệm bộ nhớ ảo dựa trên các số trang ảo và vật lý khác nhau. Vì vậy, trong VI-PT, số vật lý là Thẻ vật lý. Vì vậy, không có vấn đề răng cưa (như địa chỉ vật lý là duy nhất). Địa chỉ ảo được sử dụng để thu hẹp vào một mục trong bộ đệm bằng cách sử dụng lập chỉ mục từ phần bù (tương tự như vậy đối với địa chỉ vật lý / ảo). Vì vậy, việc lập chỉ mục giới hạn này để sử dụng các bit không có số trang. Do đó kích thước bộ đệm nhỏ hơn.
Anup Buchke

1

Có hai khía cạnh liên quan đến bộ nhớ VIPT và răng cưa. Và các vấn đề có thể khác một chút giữa các kiến ​​trúc tập lệnh.

1)

Có một số cách để ánh xạ các địa chỉ ảo của từng quá trình sang các địa chỉ vật lý bên ngoài.

Một số sử dụng "định danh quy trình" hoặc "định danh không gian địa chỉ" (iirc ARM, SPARC, MIPS) trong đó mỗi quy trình đang chạy được cung cấp một giá trị khác nhau được sử dụng để chọn các bảng trang khác nhau.

Một số sử dụng địa chỉ "logic / vật lý" trong đó các địa chỉ cho mỗi quy trình (= logic) được dịch oa không gian địa chỉ lớn hơn (ví dụ từ 32 đến 52 bit) (= ảo) được chia sẻ giữa tất cả các quy trình và TLB chuyển đổi các địa chỉ ảo mở rộng này thành địa chỉ vật lý. PowerPC là như thế.

Để tránh phải xóa tất cả các TLB và tất cả bộ đệm trong mỗi lần chuyển ngữ cảnh, các thẻ bộ đệm (và TLB) có thể lưu trữ các mã định danh không gian địa chỉ tương ứng hoặc địa chỉ ảo mở rộng: Mỗi địa chỉ của mỗi quy trình là khác nhau và không thể có bí danh ( tốt, đôi khi có khả năng khử răng cưa, ví dụ như khi chạy mã hạt nhân đặc quyền được ánh xạ trong cùng một dải địa chỉ ảo của tất cả các quy trình)

2)

Một vấn đề tinh tế hơn là khi một số quy trình chia sẻ cùng một vùng nhớ vật lý. Phạm vi bộ nhớ vật lý này có thể được ánh xạ ở các địa chỉ ảo khác nhau theo từng quy trình. Sửa đổi bởi một quá trình có thể không được nhìn thấy bởi quá trình khác. Đặc biệt với bộ đệm ghi lại, nơi ghi không được chuyển ngay tới RAM. Một giải pháp, với sự trợ giúp của HĐH, là đảm bảo một số căn chỉnh giữa các quy trình tùy thuộc vào kích thước bộ đệm, ngay cả khi các địa chỉ ảo khác nhau giữa các quy trình khác nhau, chúng sẽ được đặt bí danh trong cùng một dòng bộ đệm và sẽ tự động đẩy nhau.

Bộ nhớ cache được lập chỉ mục hầu như được sử dụng chủ yếu trên các CPU đơn giản (cũ), vì những vấn đề răng cưa này. Ngày nay, một kỹ thuật rất phổ biến là giới hạn từng cách của bộ đệm L1 ở kích thước trang MMU (thường là 4kB hoặc 8kB) để chỉ số bộ đệm được chia sẻ giữa các địa chỉ vật lý và ảo, việc tìm nạp bộ đệm xảy ra cùng lúc với độ phân giải địa chỉ MMU .

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.