Multicœur et synchronisation
Quel est le principe de la mémoire transactionnelle matérielle ?
- AExécuter spéculativement la section critique, valider en bloc s’il n’y a pas de conflit avec d’autres threads, et annuler puis recommencer en cas de conflit
- BEnregistrer sur disque toutes les lectures et écritures mémoire, comme des transactions bancaires
- CInterdire les écritures en mémoire et n’autoriser que les lectures
Afficher la réponse et l'explication
Réponse : A. Exécuter spéculativement la section critique, valider en bloc s’il n’y a pas de conflit avec d’autres threads, et annuler puis recommencer en cas de conflit
Avec la mémoire transactionnelle, la section critique s’exécute comme une transaction, ses écritures restant provisoires et invisibles des autres. Si aucun autre thread n’a touché les mêmes données, toutes les écritures sont validées d’un coup à la fin ; en cas de conflit, tout est annulé et l’on recommence ou l’on bascule vers un verrou ordinaire. Avec peu de conflits, on obtient même avec un verrou à gros grain un parallélisme proche de celui d’un verrou à grain fin.
Continuer : 9 autres questions sur Multicœur et synchronisation