| Assembleur 370 |
CDS |
| Compare Double and Swap |
Syntaxe
Paramètres
| Nom |
Description |
| R1 |
Ce paramètre permet d'indiquer un registre contenant le mot de gauche (premiers 4 octets). |
| R3 |
Ce paramètre permet d'indiquer un registre contenant le mot de droite (suivants 4 octets). |
| D2(B2) |
Ce paramètre permet d'indiquer une adresse mémoire du double mot (8 octets consécutifs) à comparer/remplacer. |
Description
Cette instruction permet d'effectuer la comparaison d'une opérande et d'un registre. S'ils sont égales, alors l'autre registre est copié dans l'opérande.
Remarques
- L'instruction CDS est utilisée pour les opérations atomiques sur 8 octets, ce qui est essentiel pour la synchronisation dans les environnements multiprocesseurs.
Elle permet de s'assurer qu'un bloc mémoire n'a pas changé avant de le modifier. C'est une base pour implémenter des sémaphores ou des verrous logiciels.
- Le double mot en mémoire (8 octets) est comparé avec la paire de registres R1 et R3. Si la comparaison est vraie, c'est-à-dire que la mémoire correspond exactement à
R1/R3, alors la mémoire est remplacée par la nouvelle valeur contenue dans ces registres. Sinon, rien n'est modifié, garantissant l'intégrité concurrentielle.
- L'opérande mémoire est désigné via D2(B2), ce qui permet une adresse mémoire calculée dynamiquement. Cela rend CDS flexible pour manipuler diverses structures de
données en mémoire partagée. Ce mécanisme est adapté aux architectures concurrentes.
- CDS utilise deux registres pour manipuler un double mot, une opération sur 64 bits. R1 correspond aux 4 premiers octets, et R3 aux 4 suivants, ce qui nécessite une
bonne coordination. Le programmeur doit donc gérer soigneusement la cohérence des valeurs dans les registres.
- Cette instruction est non destructive en cas d'échec de la comparaison : les données en mémoire ne sont remplacées que si la condition est satisfaite. Cela évite
les effets de bord non contrôlés. C'est ce qui la rend précieuse pour les mécanismes de test et mise à jour atomique.
- CDS peut retourner un code condition utile pour savoir si la substitution a eu lieu ou non. Ce retour permet de reprogrammer une tentative ou d'adopter un autre
comportement. C'est un élément central des boucles d'attente active (spinlocks).
- En l'absence d'instructions spécialisées comme TS (Test and Set), CDS peut être utilisée pour construire des primitives de verrouillage. C'est une brique essentielle
dans la gestion de la concurrence bas niveau. Elle permet de garantir l'exclusivité d'accès à une zone mémoire critique.
- CDS est une instruction complexe et puissante, mais qui exige une précision absolue dans le codage. Mauvais alignement, contenu erroné des registres ou interprétation
incorrecte du code condition peuvent provoquer des bogues difficiles à déceler. Elle est souvent réservée aux développeurs systèmes ou experts bas niveau.
Dernière mise à jour : Mardi, le 22 août 2017