2013-02-03 37 views
10

Bản ghi chi nhánh lần cuối đề cập đến một tập hợp các cặp đăng ký (MSR) lưu trữ địa chỉ nguồn và đích liên quan đến các nhánh được thực hiện gần đây. Tài liệu http://css.csail.mit.edu/6.858/2012/readings/ia32/ia32-3b.pdf có thêm thông tin trong trường hợp bạn quan tâm.Chi phí sử dụng Bản ghi chi nhánh cuối cùng của Intel là bao nhiêu?

  • a) Ai đó có thể đưa ra ý tưởng về mức LBR làm chậm chương trình thực thi chương trình thông thường - cả CPU và IO chuyên sâu?
  • b) Dự đoán rẽ nhánh có được TẮT khi dò tìm LBR được BẬT không?
+1

Bạn sẽ sử dụng Intel LBR như thế nào? Tôi nghĩ rằng, trên đầu của LBR là nhỏ để ghi lại và dự đoán không bị tắt. – osgx

+0

Tôi chỉ cần kích hoạt LBR ở đầu chương trình và tắt nó ở cuối. Tôi cũng nghĩ rằng chi phí phải tương đối nhỏ, ít nhất là khi so sánh với công cụ phần mềm. Tuy nhiên, sẽ hữu ích nếu một số tài liệu chính thức về chi phí tồn tại. – user655617

+0

Nơi duy nhất cho tài liệu chính thức là http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html – osgx

Trả lời

10

Giấy Intel Code Execution Trace Resources (bằng cách nhân Arium, Craig Pedersen và Jeff Acampora, 29 Tháng 4 năm 2012) liệt kê ba biến thể của chi nhánh tracing:

  • cuối Chi nhánh Ghi (LBR) cờ trong DebugCtlMSR và các LastRranchToIP và LastBranchFromIP MSRs tương ứng cũng như LastExceptionToIP và LastExceptionFromIP MSRs.

  • Chi nhánh Cửa hàng theo dõi (BTS) sử dụng bộ nhớ cache dưới dạng RAM hoặc hệ thống DRAM.

  • Dấu vết kiến ​​trúc sự kiện (AET) được chụp khỏi cổng XDP và được lưu trữ bên ngoài trong Đầu dò đích trong kết nối.

Như đã nói ở trang 2, LBR tiết kiệm thông tin trong MSR, "không cản trở bất kỳ hiệu suất theo thời gian thực", nhưng chỉ có ích cho mã rất ngắn ("hiệu quả theo dõi màn hình là rất nông và thường chỉ có thể hiển thị hàng trăm hướng dẫn. "). Chỉ lưu thông tin về 4-16 nhánh.

BTS cho phép chụp nhiều cặp "Từ" và "Tới" và lưu trữ chúng trong bộ nhớ cache (Cache-as-RAM, CAR) hoặc trong hệ thống DRAM. Trong trường hợp CAR, chiều sâu/chiều dài của dấu vết bị giới hạn bởi kích thước bộ nhớ cache (và một số hằng số); với chiều dài theo dõi DRAM gần như không giới hạn. Bài báo ước tính chi phí của BTS từ 20 đến 100% do các cửa hàng bộ nhớ bổ sung. BTS trên Linux dễ sử dụng với đề xuất perf branch record (chưa có trong vanilla) hoặc btrax project. perf branch bản trình bày cung cấp một số gợi ý về tổ chức BTS: có bộ đệm BTS, chứa các trường "từ", "tới" và "cờ dự đoán". Vì vậy, dự đoán nhánh không bị tắt khi sử dụng BTS. Ngoài ra, khi bộ đệm BTS được lấp đầy đến kích thước tối đa, ngắt được tạo ra. Mô-đun xử lý BTS trong hạt nhân (hệ thống con perf_events hoặc mô-đun hạt nhân btrax) nên sao chép dữ liệu từ bộ đệm BTS đến vị trí khác trong trường hợp ngắt như vậy.

Vì vậy, ở chế độ BTS có hai nguồn trên cao: Cache/Memory store và ngắt từ tràn bộ đệm BTS.

AET sử dụng tác nhân bên ngoài để lưu gỡ lỗi và theo dõi dữ liệu. Tác nhân này được kết nối qua cổng gỡ lỗi eXtended (XDP) và các giao diện với đầu dò đích (ITP). Phần trên của AET "có thể có ảnh hưởng đáng kể đến hiệu suất hệ thống, có thể có nhiều đơn đặt hàng lớn hơn" theo bài báo này, vì AET có thể tạo/nắm bắt nhiều loại sự kiện hơn. Nhưng lưu trữ dữ liệu thu thập được bên ngoài nền tảng gỡ lỗi.

giấy nhiều triển vọng "Tóm tắt" nói: 

LBR không có người trên cao, nhưng là rất cạn (4-16 địa điểm chi nhánh, tùy thuộc trên CPU). Dữ liệu theo dõi có sẵn ngay lập tức trong quá trình đặt lại.

BTS sâu hơn nhiều, nhưng có tác động đến hiệu suất CPU và yêu cầu RAM trên bo mạch. Dữ liệu theo dõi có sẵn ngay khi CAR được khởi tạo.

AET yêu cầu phần cứng ITP đặc biệt và không khả dụng trên tất cả các kiến ​​trúc CPU . Nó có lợi thế là lưu trữ dữ liệu theo dõi khỏi bảng.

+0

Cảm ơn bạn đã chia sẻ bài báo và tóm tắt các điểm chính! – user655617

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