Multicœur et synchronisation

Quelle description de la cohérence de cache par espionnage (snooping) est correcte ?

  1. AL’OS examine périodiquement tous les caches et corrige les incohérences
  2. BLe cache de chaque cœur surveille les lectures et écritures des autres cœurs circulant sur un bus partagé, etc., et modifie l’état de ses propres lignes
  3. CLe programmeur envoie manuellement la valeur aux autres cœurs à chaque écriture
Afficher la réponse et l'explication

Réponse : B. Le cache de chaque cœur surveille les lectures et écritures des autres cœurs circulant sur un bus partagé, etc., et modifie l’état de ses propres lignes

Avec l’espionnage, les demandes de lecture et d’écriture des cœurs parviennent à tous les caches ; chacun vérifie s’il détient la même ligne et l’invalide ou transmet les données. Le mécanisme est simple et convient à un petit nombre de cœurs. Mais lorsque le nombre de cœurs augmente, diffuser toutes les demandes à tous les caches génère trop d’échanges ; les grands systèmes utilisent donc la cohérence par répertoire.

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

Autres questions sur Multicœur et synchronisation

  1. Pourquoi utilise-t-on, dans les systèmes à grand nombre de cœurs, la cohérence par répertoire plutôt que l’espionnage ?
  2. 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 ?
  3. Quelle description du faux partage (false sharing), qui survient dans les programmes multithreads, est correcte ?
  4. 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 ?
  5. Quelle description de la course aux données (data race) est correcte ?

Comparatifs sur ce thème