Tôi đang nêu lên một thắc mắc liên quan đến hướng dẫn MONITOR-MWAIT và HLT. Cả hai tạm dừng bộ vi xử lý, cả hai đều tỉnh dậy trên các bộ kích hoạt bên ngoài khác nhau (ngắt vv).MWAIT và HALT về hiệu quả
Trong các thí nghiệm của tôi, HLT và chức năng MWAIT gần như giống nhau, khi chụp trong tài khoản:
- Nếu bạn là không scheduler OS, một vòng lặp đơn giản với các hướng dẫn nêu trên, sẽ bị gián đoạn khá nhanh chóng, và vì MWAIT yêu cầu kiểm tra lại điều kiện giữa MONITOR và MWAIT, sự khác biệt là gì? (những gì tôi hỏi là, tại sao không sử dụng HLT ở vị trí đầu tiên, và tiết kiệm nỗi đau của việc phân bổ vùng truy tìm (trong đó, nếu không được cấu hình cẩn thận, tránh cơ chế mon/mwait và biến nó thành NOP), vì nếu bạn ' không phải là lịch trình hệ điều hành, không có cơ hội bạn sẽ không thức dậy đủ nhanh để chỉ cần kiểm tra giá trị trong một vòng HLT ... ???
(chắc chắn, MWAIT có thể cao hơn res, i haven 't đo độ phân giải, nhưng có vẻ như nó over-wake-up bởi (tôi giả định) ngắt và như vậy) .. vì vậy tôi không thể nhìn thấy lợi thế lớn.
Cảm ơn, Bất kỳ suy nghĩ theo cách đó sẽ rất nhiều được đánh giá cao
Brendan, Cảm ơn rất nhiều về cái nhìn tổng quan rất nhiều thông tin này, Bạn chắc chắn đã xóa được sương mù tôi có xung quanh vấn đề này. Tôi đã nghĩ đến việc sử dụng mon/mwait để đồng bộ hóa giữa chủ đề và HW (để tránh setEvent từ DPC đến sau mỗi lần ngắt từ HW). Dường như độ trễ xung quanh WaitForSingleObj và SetEvent, so với một spinlock trong chuỗi chờ đợi (và var toàn cục), cao hơn nhiều, vì vậy mwait có vẻ như một điểm nào đó ở giữa .. –