Tôi đang làm việc về phát hiện CPU và mã phát hiện môi trường chung cho hệ điều hành sở thích của mình. Có bao giờ một trường hợp mà CPUID cần phải được gọi là nhiều lần? Đó là nếu hệ thống có nhiều lõi, hệ điều hành có cần gọi CPUID trên mỗi lõi không? Tương tự cho NUMA.CPUID trên nhiều lõi/NUMA
Cả hai hướng dẫn sử dụng CPU AMD và Intel CPUID không rõ ràng về điều này. Có một bài viết trên wiki osdev đề cập đến việc gọi CPUID được gọi là Detecting CPU Topology, nhưng để đọc của tôi không rõ ràng về thời gian và số lần CPUID cần được gọi.
Tôi cho rằng một tình huống mà CPUID có thể hoạt động bất thường là AMD Fusion, chứa cả CPU và GPU trên cùng một chip. Bạn sẽ phải xem tài liệu để biết thêm thông tin. Khác hơn thế, tôi không thấy lý do tại sao bất kỳ lõi CPU bên trong nào sẽ hiển thị một CPUID khác với một lõi khác. – Polynomial
Bên cạnh câu trả lời đã cho, một lý do khác để gọi CPUID nhiều lần là khi sử dụng lệnh rdtsc cho phép đo hiệu suất. Bạn thường sử dụng cpuid trước đó vì cpuid là lệnh 'serializing' và ngăn chặn pipelining, nhưng cpuid cũng có thói quen khó chịu mất nhiều thời gian hơn để thực thi vài lần đầu tiên (theo hướng dẫn intel cũ trên rdtsc), gọi nó một vài lần khi khởi động để đảm bảo nó được tăng tốc, sau đó sử dụng nó trước tất cả các cuộc gọi rdtsc của bạn. –