2013-02-08 28 views
5

Sự hiểu biết của tôi là tìm nạp trước phần cứng sẽ không bao giờ vượt qua các ranh giới trang. Tôi tự hỏi nếu một phần mềm prefetch có cùng một hạn chế, tức là tôi có thể sử dụng một phần mềm prefetch để tránh một TLB trong tương lai bỏ lỡ. Từ tìm kiếm xung quanh, nó có vẻ là có thể, nhưng tôi không thể tìm thấy bất cứ điều gì dứt khoát trong tài liệu, do đó, một tài liệu tham khảo sẽ là tốt.Tìm nạp trước phần mềm qua ranh giới trang trên x86

Tôi đặc biệt quan tâm đến Nehalem, Sandy Bridge và Westmere.

+0

Cập nhật: IvyBridge thực hiện HW prefetch trên các ranh giới trang. https://stackoverflow.com/a/20758769/224132. Đó là một tính năng mới trong IvB, và từ những thứ khác tôi đã đọc, tôi nghĩ chính xác là SnB và Intel trước đó không tìm nạp trước vào trang tiếp theo. Các tải TLB đầu cơ là một điều, tuy nhiên, ít nhất là khi được kích hoạt bởi việc thực thi đầu cơ của một lệnh tải/lưu trữ. –

Trả lời

2

Theo số Optimization Reference Manual của Intel, nó phụ thuộc vào bộ xử lý. Từ phần 7.4.3:

Có những trường hợp PREFETCH sẽ không thực hiện tìm nạp dữ liệu. Chúng bao gồm:

  • NGUYÊN NHÂN gây DTLB (Bộ đệm Lookas dịch dữ liệu) bỏ lỡ. Điều này áp dụng cho các bộ xử lý Pentium 4 có chữ ký CPUID tương ứng với họ 15, model 0, 1 hoặc 2. PREFETCH giải quyết DTLB bỏ qua và tìm nạp dữ liệu trên bộ xử lý Pentium 4 có chữ ký CPUID tương ứng với họ 15, model 3.
  • Quyền truy cập vào địa chỉ được chỉ định gây ra lỗi/ngoại lệ.

Tìm nạp trước phần mềm có thể hoặc không tránh TLB bị lỗi, tùy thuộc vào bộ xử lý. Nó sẽ không tìm nạp dữ liệu nếu nó gây ra lỗi trang.

Nếu bạn muốn đảm bảo tránh TLB bị lỡ, bạn có thể đọc giả để tải dữ liệu thay vì lệnh tìm nạp trước. Điều này có thể gây ra lỗi trang để hoán đổi trong một trang, có thể là tốt hay xấu tùy thuộc vào trường hợp sử dụng của bạn.

+0

Gia đình của CPU được đề cập bởi OP không phải là CPU lớp pentium4. – didierc

+0

@didierc Tôi không biết, nhưng tôi đã sao chép trực tiếp từ sách hướng dẫn của Intel, và [wikipedia] (http://en.wikipedia.org/wiki/List_of_Intel_Pentium_4_microprocessors) liệt kê tất cả chúng ngoại trừ mô hình 0 như Pentium 4. – ughoavgfhw

+0

Tốt con trỏ. OP quan tâm đến các thế hệ CPU ia64 mới nhất (intel i5 & i7 class, afaik). Tôi chỉ cố gắng giúp bạn giải thích một chút câu trả lời của bạn. Tệ của tôi nếu nó nghe có vẻ gay gắt, đó không phải là ý định của tôi. – didierc

2

Trong bộ xử lý hiện đại (Nehalem, Sandy Bridge và Westmere) tìm nạp trước phần mềm thực sự kích hoạt tra cứu TLB.

Từ hướng dẫn tối ưu hóa Intel: (phần 7.3.3)

Trong microarchitectures cũ, Prefetch gây ra một dữ liệu Dịch Lookaside Buffer (DTLB) bỏ lỡ sẽ bị loại bỏ. Trong các bộ vi xử lý dựa trên Nehalem, Westmere, Sandy Bridge và các vi xử lý mới hơn, bộ vi xử lý Intel Core 2 và bộ vi xử lý Intel Atom, PREFETCH gây ra lỗi DTLB có thể được tìm nạp trên một ranh giới trang.

Các vấn đề liên quan