WFE |
Attendre pour l'événement |
| ARM |
Syntaxe
Paramètres
| Nom |
Description |
| cond |
Ce paramètre optionnel permet d'indiquer le code de condition |
Description
Cette instruction permet d'attendre après un événement.
Remarques
- Fonctionnement similaire à WFI mais avec plus de souplesse : WFE suspend l'exécution du processeur jusqu'à ce qu'un événement (et non forcément une
interruption) se produise. Cela la rend particulièrement utile dans des architectures multicoeurs ou dans les systèmes coopératifs avec signaux logiciels.
- Pratique pour la synchronisation entre processus légers : Dans les systèmes multi-processus léger ou multi-CPU, un coeur peut exécuter un WFE pour
attendre un signal d'un autre cour via l'instruction SEV (Send Event). Cela permet une synchronisation efficace sans polling actif, réduisant la consommation CPU.
- Redémarre suite à une interruption ou à un événement SEV : Contrairement à WFI, qui ne réagit qu'à une interruption matérielle, WFE peut être déclenchée
aussi bien par une interruption qu'un événement logiciel (SEV). C'est cette double réactivité qui la rend très puissante dans les systèmes embarqués.
- Le bit d'événement est conservé dans l'état du système : Le processeur entre en veille avec WFE uniquement si le bit d'événement n'est pas déjà défini. Ce
bit est mis à 1 par SEV ou par des événements internes, ce qui évite que l'appel à WFE bloque inutilement si un événement s'est déjà produit.
- Peut être rendue conditionnelle avec {cond} : Le suffixe {cond} permet d'exécuter WFE seulement si une condition logique est remplie, ce qui peut affiner
le contrôle d'entrée en veille, en combinant par exemple avec l'état d'un drapeau logiciel ou d'un registre.
- Utilisée dans les boucles d'attente passive : WFE est souvent utilisée dans des boucles d'attente passive comme while (!flag) { WFE(); } pour éviter
un polling consommateur en ressources. Cela permet d'attendre efficacement une ressource ou un avertissement.
- Comportement déterministe, bénéfique pour la gestion d'énergie : Comme WFE peut être utilisée sans déclenchement d'interruption, elle permet d'optimiser
finement la consommation énergétique tout en restant compatible avec un modèle logiciel événementiel ou coopératif.
- Ne modifie pas l'état des registres ou de la mémoire : L'exécution de WFE ne change aucun registre général ni n'interagit directement avec la mémoire. Elle
agit uniquement sur l'état d'exécution du cour, en attendant un déclencheur externe ou interne.
Dernière mise à jour : Dimanche, le 12 novembre 2017