2010-04-02 18 views
12

Comment fonctionne _mm_mwait de pmmintrin.h? (Je veux dire pas le asm pour cela, mais l'action et comment cette action est prise dans les systèmes NUMA. La surveillance store est facile à mettre en œuvre que sur les systèmes SMP à bus avec Espionne de bus.)Comment fonctionne _mm_mwait?

Quels processeurs ne Mettre en œuvre?

Est-il utilisé dans certains spinlocks?

+0

Est-ce que quelqu'un utilise _mm_mwait & _mm_monitor? – osgx

+0

Voulez-vous dire que fait-il, ou comment est-il physiquement mis en œuvre dans le matériel? – Martin

+1

@Martin, oui. Je veux juste comme l'aperçu de l'organisation matérielle comme pour les étudiants. – osgx

Répondre

3

Chaque fois qu'une UC sur une puce multicœur essaie d'écrire une adresse mémoire spécifique, toutes les autres CPU, qui ont cette adresse mémoire particulière dans leurs caches, doivent être averties de cette modification. Cette notification pourrait être utilisée pour implémenter le réveil à partir de MWAIT sur des processeurs modernes indépendants d'eux ayant un ou plusieurs bus mémoire séparés.

Quels processeurs l'implémentent?

MWAIT fait partie de SSE3.

Est-il utilisé dans certains spinlocks?

Ceci est contraire à la définition d'un spinlock - la CPU n'est pas occupée.

+0

Je pense, la notification est en vigueur seulement pour les données dans le cache qui est dans l'état Partagé (quand il peut être stocké dans des caches de plusieurs processeurs). S'il y a un "tous les autres processeurs doivent être notifiés" pour toute écriture, la performance sera briquée (tuée); il suffit de considérer un système quad-socket avec NUMA. – osgx

+0

reformulé un peu – mschneider

+0

Je pense que seuls les processeurs Intel ont ces deux instructions. Je me souviens d'avoir lu quelque part qu'AMD avait décidé de ne pas les implémenter lors de l'ajout de SSE3. – Mysticial