Multicœur et synchronisation
Avec une paire d’instructions comme LR/SC (load-reserved/store-conditional) de RISC-V, dans quel cas le SC (store-conditional) échoue-t-il ?
- ALorsque la valeur écrite par SC est identique à la valeur lue par LR
- BLorsque la réservation a été perdue entre le LR et le SC, par exemple parce qu’un autre cœur a écrit à cette adresse
- CLorsqu’au moins une autre instruction a été exécutée entre LR et SC
Afficher la réponse et l'explication
Réponse : B. Lorsque la réservation a été perdue entre le LR et le SC, par exemple parce qu’un autre cœur a écrit à cette adresse
LR lit la valeur et « réserve » simultanément l’adresse. Lors de l’écriture par SC, si la réservation est maintenue, l’écriture a lieu et réussit ; si elle a été perdue, par exemple à cause d’une écriture d’un autre cœur, SC n’écrit pas et renvoie un échec. Alors que CAS vérifie la concordance des valeurs, LR/SC vérifie s’il y a eu une écriture ; il détecte donc aussi le cas où la valeur a changé puis est revenue à l’original. ARM possède une paire d’instructions similaire.
Continuer : 9 autres questions sur Multicœur et synchronisation