2012-01-06 10 views
8

Tôi muốn sử dụng hardware performance counter, cụ thể là CPU x86 để nhận được lỗi bộ nhớ cache hoặc dự đoán sai chi nhánh. Các bộ đếm hiệu suất được sử dụng nhiều trong các trình biên dịch nâng cao như Intel VTune. Xin đừng nhầm lẫn các bộ đếm hiệu năng trên các hệ điều hành Windows.Các API truy cập hiệu suất phần cứng dành cho Windows

Để sử dụng các quầy trong C chương trình/C++, ta có thể sử dụng chỉ số PAPI: http://icl.cs.utk.edu/papi/

này cho phép bạn dễ dàng sử dụng bộ đếm hiệu suất, nhưng trên chỉ Linux. PAPI đã từng hỗ trợ Windows, nhưng không phải lúc này.

Có ai gần đây đã thử PAPI hoặc các API khác để sử dụng bộ đếm hiệu suất phần cứng trên Windows không?

+0

Thận trọng nếu tôi hỏi: Bạn có đang viết mã thực sự bằng mã-bit không? Hầu hết các cửa sổ mã ứng dụng được hư không gần đó. –

+0

Tôi sẽ đề nghị VTune, nhưng bạn đã đưa nó lên. Vì vậy, có gì sai với nó? –

+0

Không, tôi đang viết một số mã hồ sơ. Vì vậy, tôi cần API để lập trình. Linux vẫn ổn với PAPI, nhưng Windows, tôi vẫn đang tìm kiếm các API mới nhất để sử dụng các bộ đếm hiệu năng HW. – Nullptr

Trả lời

4

Bạn có thể sử dụng hướng dẫn RDPMC hoặc __readpmc trình biên dịch MSVC nội tại, điều tương tự. Tuy nhiên, Windows cấm các ứng dụng chế độ người dùng thực hiện lệnh này bằng cách đặt CR4.PCE thành 0. Có lẽ, điều này được thực hiện vì ý nghĩa của mỗi bộ đếm được xác định bởi các thanh ghi MSR, chỉ có thể truy cập ở chế độ hạt nhân. Nói cách khác, trừ khi bạn là mô-đun chế độ hạt nhân (ví dụ: trình điều khiển thiết bị), bạn sẽ nhận được bẫy "hướng dẫn đặc quyền" nếu bạn cố thực hiện lệnh này.

Nếu bạn đang viết ứng dụng chế độ người dùng, tùy chọn duy nhất của bạn (như @Christopher được đề cập trong nhận xét) để viết mô-đun hạt nhân sẽ thực hiện lệnh này cho bạn (bạn sẽ phải sử dụng lệnh gọi hạt nhân)) và cho phép đăng ký thử nghiệm trên máy tính của bạn để có thể tải "trình điều khiển" có khả năng tự gán của bạn. Điều này có nghĩa là bạn không thể dễ dàng phân phối ứng dụng này, nhưng điều đó sẽ hoạt động để điều chỉnh trong nhà.

1

Điều gì về điều này HCP Reference? Nó không cung cấp những gì bạn muốn?