Sto sollevando una meraviglia per quanto riguarda le istruzioni MONITOR-MWAIT vs HLT. Entrambi interrompono il processore, entrambi si attivano su vari trigger esterni (interrupt, ecc.).MWAIT vs HALT in termini di efficienza
Nei miei esperimenti, HLT e la funzione MWAIT quasi la stessa, quando prende in considerazione:
- Se siete non lo scheduler del sistema operativo, un semplice ciclo con le istruzioni di cui sopra, saranno interrotti abbastanza rapidamente, e poiché MWAIT richiede di ricontrollare la condizione tra MONITOR e MWAIT, qual è la differenza? (Quello che sto chiedendo è, perché non usare HLT al primo posto, e risparmiando il dolore dell'allocazione dell'area di tracciamento (che, se non accuratamente configurato, evita il meccanismo mon/mwait e lo trasforma in un NOP), dal momento che se tu? non è il programmatore del sistema operativo, non c'è possibilità che non ti svegli abbastanza rapidamente per controllare semplicemente il valore in un ciclo HLT ... ??
(sicuramente, MWAIT potrebbe essere più elevato, ho rifugio ho misurato la risoluzione, ma sembra che si sia sovrastato da (presumo) interruzioni e così via .. quindi non riesco a vedere il grande vantaggio
Grazie, Qualsiasi pensiero in quel modo sarebbe molto gradito
Brendan, grazie mille per questa panoramica molto informativa, hai sicuramente chiarito la nebbia che avevo intorno a questo. Stavo pensando di usare mon/mwait per sincronizzare tra thread e HW (per evitare setEvent da DPC dopo ogni interrupt proveniente dall'HW). Sembra che la latenza attorno a WaitForSingleObj e SetEvent, in confronto a uno spinlock nel thread in attesa (e una var globale), sia molto più alta, quindi mwait sembra un punto da qualche parte nel mezzo .. –