2010-04-23 35 views
9

Tôi đang cố gắng tìm một tham chiếu cho khoảng bao nhiêu chu trình CPU mà các hoạt động khác nhau yêu cầu.Số lượng gần đúng chu kỳ CPU cho các hoạt động khác nhau

Tôi không cần số chính xác (vì điều này sẽ thay đổi giữa các CPU) nhưng tôi muốn một cái gì đó tương đối đáng tin cậy mang lại số liệu ballpark mà tôi có thể trích dẫn trong cuộc thảo luận với bạn bè.

Ví dụ, chúng ta đều biết rằng phân chia dấu chấm động mất nhiều chu kỳ CPU hơn so với việc thực hiện bithift.

Tôi đoán rằng sự khác biệt là phân chia là khoảng 100 chu kỳ, trong đó như một sự thay đổi là 1 nhưng tôi đang tìm kiếm một cái gì đó để trích dẫn để trở lại đó lên.

Bất kỳ ai cũng có thể đề xuất một tài nguyên như vậy không?

+2

Bộ xử lý nào? – nos

Trả lời

1

Điều này sẽ phụ thuộc vào phần cứng. Điều tốt nhất cần làm là chạy một số điểm chuẩn trên phần cứng cụ thể mà bạn muốn kiểm tra.

Một điểm chuẩn sẽ đi gần như thế này:

  • Chạy một hoạt động nguyên thủy một triệu lần (nói, thêm hai số nguyên)
  • Ghi thời gian nó đã chạy (nói, tính bằng giây)
  • Nhân với số chu kỳ máy của bạn thực thi mỗi giây - điều này sẽ cung cấp cho bạn tổng số chu kỳ đã sử dụng.
  • Chia 1000000 theo số từ bước trước - điều này sẽ cung cấp cho bạn số lượng hướng dẫn trên mỗi chu kỳ. Hãy ghi nhớ rằng với pipelining, đây có thể ít hơn 1.
3

Đối với vi xử lý x86, xem Intel® 64 and IA-32 Architectures Optimization Reference Manual, có lẽ Phụ lục C.

Tuy nhiên, nó không có trong bất kỳ cách nào dễ dàng để tìm ra bao nhiêu chu kỳ một lệnh cần thực thi trên bộ vi xử lý x86 hiện đại, vì nó phụ thuộc quá nhiều vào ví dụ truy cập dữ liệu trong bộ nhớ cache, truy cập liên kết, cho dù dự đoán nhánh không thành công, nếu có một gian hàng trong đường dẫn hướng dẫn và khá nhiều thứ khác.

4

Tôi đã làm một ứng dụng nhỏ để kiểm tra điều này. Một ứng dụng rất gần đúng bằng Synthmaker phiên bản miễn phí ... e là trống rỗng, con số này là rất xấp xỉ chu kỳ

divide|e:115|10 
    mult|e: 48|10 
    add|e: 48|10 
    subs|e: 50|10 
compare>|e: 50|10 
    sin|e:135:10 

Các bài đọc trong máy phân tích chu kỳ khác nhau một cách hoang dại 50-100, thường đơn hoặc kép của giá trị dự kiến, Đây là những con số đại diện cho trung bình, phân tích chu kỳ là một công cụ rất thô, nhưng nó cho kết quả công bằng, một người sử dụng workaround làm cho số mũ được mã hóa trong ASM tính cả điểm kinh nghiệm và cơ sở ở tốc độ âm thanh chẳng hạn là khoảng 800 chu kỳ, vì vậy tôi 'd nói rằng các con số trên là gần ít nhất 50 phần trăm. Tôi nghĩ rằng sự phân chia là cách nhiều hơn nữa! Nó có vẻ gấp đôi. Nếu bạn muốn các tập tin tôi thực hiện để chạy trong phiên bản miễn phí SM mail cho tôi, tôi sẽ tiết kiệm một exe đó là lý do tại sao tôi đã làm nó, nhưng bạn không thể lưu trong phiên bản miễn phí ngớ ngẩn tôi! Tôi sẽ không viết mã từ hình vuông trong phiên bản 1.17:/ ant.stewart tại địa điểm yahoo dotty com.

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