Syntaxe
Paramètres
| Nom |
Description |
| cond |
Ce paramètre optionnel permet d'indiquer le code de condition |
Description
Cette instruction permet d'indiquer au matériel que le processus léger courant effectue une tâche s'il implémenter sinon il effectue un NOP.
Remarques
- Instruction utilisée pour la gestion de la concurrence : YIELD est utilisée principalement dans des environnements multi-processus léger ou temps réel pour
signaler que le thread courant peut céder volontairement l'UC (unité centrale) à un autre processus léger de priorité égale. Cela permet une gestion plus équitable du
temps processeur.
- Ne fait rien au niveau calcul, mais agit sur la planification : L'instruction ne modifie pas les registres ou la mémoire. Elle sert uniquement à informer
le système d'exploitation ou le gestionnaire de processus légers que le contexte peut être changé, ce qui la rend essentielle pour des systèmes multitâches coopératifs.
- Très utile dans des boucles d'attente (busy-wait) : Dans les boucles où un processus léger attend un événement, YIELD permet d'éviter une consommation
excessive du CPU en indiquant qu'il n'a pas besoin d'exécuter activement à chaque cycle, améliorant ainsi les performances globales du système.
- Compatible avec le code conditionnel grâce au suffixe {cond} : L'instruction YIELD peut être conditionnelle (par exemple, YIELDEQ, YIELDNE,...), ce qui
permet de l'exécuter uniquement dans certaines conditions, donnant plus de flexibilité dans les scénarios multitâches.
- Utilisée dans les systèmes embarqués avec système d'exploitation temps réel : Dans des systèmes d'exploitation comme
FreeRTOS, YIELD permet un changement volontaire de contexte, essentiel pour les tâches ayant la même priorité. Cela permet une rotation équitable entre tâches coopératives.
- Supportée uniquement en mode Thumb-2 (et certains contextes ARMv7+) : L'instruction YIELD appartient à la famille d'instructions WFE/WFI/SEV/YIELD
introduites dans ARMv6K et ARMv7, principalement pour les systèmes embarqués et mobiles. Elle n'est pas disponible sur toutes les architectures ARM.
- Ne doit pas être confondue avec NOP : Contrairement à NOP, qui ne fait absolument rien, YIELD a un impact potentiel sur la planification, même si ce
n'est pas visible immédiatement dans le flot d'instructions. Elle interagit avec le système, pas seulement le pipeline.
- Peut réduire la consommation énergétique dans certains cas : En réduisant les boucles actives inutiles, YIELD peut indirectement économiser de l'énergie,
notamment dans les microcontrôleurs ou systèmes embarqués où la gestion fine de l'énergie est cruciale.
Dernière mise à jour : Dimanche, le 12 novembre 2017