2012-02-18 24 views
9

Tôi muốn ước tính chi phí hoạt động do TLB bỏ lỡ trên máy x86-64 (Intel Nehalem) chạy Linux. Tôi muốn có được ước tính này bằng cách sử dụng một số bộ đếm hiệu suất. Có ai có một số gợi ý về cách tốt nhất để ước tính này là gì?Đo TLB bỏ lỡ chi phí xử lý trong x86-64

Cảm ơn Arka

+0

Điều này có thể có ích: http://oprofile.sourceforge.net/docs/intel-corei7-events.php –

Trả lời

15

Nếu bạn có thể được tiếp cận với một "Westmere" dựa trên hệ thống các đặc tính hiệu suất của mã của bạn nên được khá giống với những gì bạn có trên "Nehalem", nhưng bạn sẽ phải truy cập vào một sự kiện truy cập hiệu suất phần cứng mới đo lường gần như chính xác những gì bạn muốn.

Trên Westmere, ước tính hiệu suất tốt nhất bị mất trong khi chờ đợi TLB bị hoãn xử lý có thể là từ bộ đếm hiệu suất phần cứng Event 08H, Mask 04H "DTLB_LOAD_MISSES.WALK_CYCLES", được mô tả là đếm "Cycles Page Miss Handler is bận rộn với một trang đi bộ do một tải bỏ lỡ ở cấp độ thứ hai TLB ". này được mô tả trong "Intel® 64 và IA-32 Kiến trúc phần mềm hướng dẫn sử dụng Tập 3B nhà phát triển: Hệ thống Hướng dẫn lập trình, Phần 2" (số tài liệu: 253.669), có sẵn trực tuyến tại http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-3b-part-2-manual.html

Lý do sự kiện này là cần thiết là TLB bỏ lỡ thời gian xử lý bị chi phối bởi thời gian cần thiết để đọc dòng bộ nhớ cache chứa mục bảng trang. Nếu dòng bộ nhớ cache đó nằm trong bộ đệm L2, thì chi phí của một TLB bị bỏ qua sẽ rất nhỏ (theo thứ tự 10 chu kỳ). Nếu dòng trong bộ nhớ cache L3, thì có thể 25 chu kỳ. Nếu dòng nằm trong bộ nhớ, thì ~ 200 chu kỳ.

  • Nếu đó cũng là một bỏ lỡ trong cache trang dịch trên cấp, nó sẽ mất nhiều chuyến đi đến ký ức để tìm và lấy bảng nhập trang mong muốn (ví dụ, https://stackoverflow.com/a/9674980/1264917).
  • Trên một số bộ xử lý, bộ nhớ cache L2 có thể cho bạn biết số lần truy cập bảng bị đánh và bỏ qua trong L2, nhưng không phải trên Nehalem. (Nó sẽ không giúp đỡ rất nhiều trong trường hợp này kể từ khi TLB đi mà nhấn trong L3 cũng khá nhanh và những gì bạn thực sự muốn là TLB đi mà phải đi vào bộ nhớ.)