2010-04-02 17 views
12

Come funziona _mm_mwait da pmmintrin.h? (Intendo non l'asm per esso, ma l'azione e come è preso questa azione nei sistemi NUMA. Il monitoraggio store è facile da implementare solo su sistemi SMP basati su bus con snooping dei bus.)Come funziona _mm_mwait?

Quali processori fa implementarlo?

È utilizzato in alcuni spinlock?

+0

Qualcuno usa _mm_mwait & _mm_monitor? – osgx

+0

Intendi cosa fa o come viene implementato fisicamente nell'hardware? – Martin

+1

@ Martin, sì. Voglio una visione d'insieme dell'hardware come per gli studenti. – osgx

risposta

3

Ogni volta che una CPU su un chip multicore tenta di scrivere uno specifico indirizzo di memoria, tutte le altre CPU, che hanno questo particolare indirizzo di memoria nella cache, devono essere informate di tale modifica. Questa notifica potrebbe essere utilizzata per implementare il risveglio da MWAIT su CPU moderne, indipendentemente dal fatto che abbiano bus di memoria singoli o separati.

Quali processori lo implementano?

MWAIT fa parte di SSE3.

È utilizzato in alcuni spinlock?

Ciò è contrario alla definizione di uno spinlock: la CPU non è occupata.

+0

Penso che la notifica sia valida solo per i dati nella cache che si trova in stato Condiviso (quando può essere memorizzato in cache di diverse CPU). Se c'è una "tutte le altre CPU devono essere notificate" per qualsiasi scrittura, la performance sarà bricked (ucciso); considera solo un sistema quad-socket con NUMA. – osgx

+0

riformulato un po ' – mschneider

+0

Penso che solo i processori Intel abbiano queste due istruzioni. Ricordo di aver letto da qualche parte che AMD ha deciso di non implementarli quando hanno aggiunto SSE3. – Mysticial