Multicœur et synchronisation

Les protocoles de cohérence se divisent en protocoles par invalidation et par mise à jour. Quelle est la raison la plus appropriée pour laquelle la plupart des CPU adoptent l’invalidation ?

  1. ALorsqu’un même cœur écrit plusieurs fois dans la même ligne, une seule invalidation initiale suffit et les échanges sont réduits
  2. BAvec la mise à jour, les autres cœurs lisent l’ancienne valeur
  3. CL’invalidation double la capacité du cache
Afficher la réponse et l'explication

Réponse : A. Lorsqu’un même cœur écrit plusieurs fois dans la même ligne, une seule invalidation initiale suffit et les échanges sont réduits

La mise à jour envoie la nouvelle valeur aux copies des autres cœurs à chaque écriture ; c’est avantageux si les autres cœurs lisent aussitôt, mais un cœur qui écrit en continu génère un échange à chaque fois. Avec l’invalidation, une fois les autres copies invalidées lors de la première écriture, la ligne en état M peut être écrite sans échange. Les programmes réels écrivant souvent en continu, l’invalidation est la règle.

S'entraîner sur ce thème Retour au thème

Autres questions sur Multicœur et synchronisation

  1. Quelle description du faux partage (false sharing), qui survient dans les programmes multithreads, est correcte ?
  2. Un faux partage se produit dans un tableau de compteurs par thread déclaré « long cnt[8]; ». Quelle est la mesure la plus appropriée ?
  3. Quelle description de la course aux données (data race) est correcte ?
  4. Si le code ci-dessus est exécuté simultanément par deux threads, la valeur finale de counter peut être inférieure à 200000. Pour quelle raison ?
  5. Quelle description d’une instruction atomique (instruction indivisible) est correcte ?

Comparatifs sur ce thème