CLREX |
Effacement exclusif |
| ARM |
Syntaxe
Paramètres
| Nom |
Description |
| cond |
Ce paramètre optionnel permet d'indiquer le code de condition. |
Description
Cette instruction permet d'effectuer un effacement exclusif.
Remarques
- Instruction utilisée pour la synchronisation mémoire : CLREX est une instruction utilisée principalement dans des contextes de synchronisation
multi-processus léger. Elle permet d'abandonner un accès exclusif à une adresse mémoire précédemment acquise via une opération LDREX (Load Exclusive). Cela évite
de maintenir inutilement un état exclusif lorsqu'un traitement conditionnel est interrompu ou annulé.
- Interrompt une séquence LDREX/STREX : Dans une séquence typique d'accès exclusif (LDREX suivi de STREX), CLREX peut être utilisée pour annuler l'état
exclusif avant la fin. Cela est utile si une condition logique empêche de poursuivre vers STREX. Sans CLREX, l'état exclusif reste actif jusqu'à un autre événement de
synchronisation.
- Utile pour éviter des conflits mémoire : L'utilisation de CLREX contribue à la bonne gestion de la cohérence mémoire dans les architectures multi-coeurs.
Elle permet de libérer explicitement les verrous implicites liés aux opérations exclusives, réduisant ainsi les risques de conflits ou d'interblocages entre processus légers
concurrents.
- Instruction conditionnelle (comme beaucoup d'ARM) : Comme d'autres instructions ARM, CLREX peut être conditionnelle grâce au champ {cond}. Cela permet de
ne l'exécuter que si une condition est remplie, évitant d'effacer l'état exclusif inutilement. Cela renforce le contrôle fin sur l'exécution des instructions critiques.
- Aucun paramètre mémoire ni registre : CLREX ne prend aucun paramètre lié à une adresse mémoire ou à un registre spécifique. Elle agit de manière
globale sur l'état exclusif du processeur qui l'exécute. Cela la rend simple à utiliser, mais également très spécifique dans son effet.
- Impact local à un coeur de processeur : L'effet de CLREX est local au cour ARM qui exécute l'instruction. Elle ne libère pas les accès exclusifs acquis par
d'autres coeurs dans un système multiprocesseur. Ce comportement est conforme au modèle mémoire ARM, qui maintient des états exclusifs par coeur.
- Indispensable pour la gestion d'interruptions : CLREX est souvent utilisée après une interruption ou une exception pour effacer un état exclusif laissé
incomplet. Cela empêche qu'un retour d'interruption tente d'effectuer un STREX basé sur un LDREX trop ancien, ce qui entraînerait un échec de synchronisation ou un
comportement non déterministe.
- Peut améliorer les performances dans certains cas : Même si CLREX ne modifie pas directement des données, elle peut avoir un impact sur les performances
du système. En libérant rapidement l'état exclusif lorsque nécessaire, elle évite que le matériel conserve inutilement des ressources pour une opération qui ne sera jamais
finalisée.
Dernière mise à jour : Dimanche, le 12 novembre 2017