3 points par GN⁺ 2024-07-29 | Aucun commentaire pour le moment. | Partager sur WhatsApp

Deux threads, un cœur : comment fonctionne le multithreading simultané

Contexte et motivation
  • Pourquoi le SMT a été introduit : il a été conçu pour améliorer l’utilisation des ressources du processeur. Un processeur dispose de centaines de registres, de plusieurs unités de chargement/stockage et d’unités arithmétiques. Pour mieux les exploiter, on utilise des techniques de parallélisme au niveau des instructions (ILP).
  • Pipeline d’instructions : l’exécution des instructions est divisée en plusieurs étapes afin de pouvoir traiter de nouvelles instructions à chaque cycle. Plus le pipeline est profond, plus il est possible de traiter d’instructions en parallèle.
  • Architecture superscalaire : elle permet d’émettre plusieurs instructions à chaque cycle. Par exemple, les processeurs Intel Core i7 récents peuvent émettre 4 instructions par cycle.
  • Gaspillage horizontal et vertical : il s’agit d’un gaspillage de ressources qui survient lorsqu’on ne trouve pas suffisamment d’instructions indépendantes. Le gaspillage horizontal apparaît lorsque le processeur ne trouve pas assez d’instructions indépendantes, et le gaspillage vertical lorsque toutes les instructions dépendent de celles en cours d’exécution.
Implémentation du SMT dans les processeurs Intel
  • Duplication de l’état architectural : pour exécuter deux threads simultanément, le processeur duplique son état architectural. Ainsi, un seul processeur physique apparaît comme deux processeurs logiques pour le système d’exploitation.
  • Partage et duplication des ressources : certaines ressources sont dupliquées, d’autres sont partagées. Le choix dépend de plusieurs facteurs, notamment la consommation électrique et l’espace réel disponible sur la puce.

Microarchitecture du processeur

  • Frontend, backend et unité de retrait : la microarchitecture du processeur se divise en trois parties. Le frontend récupère et décode les instructions, le backend alloue les ressources d’exécution et exécute les instructions. L’unité de retrait valide les résultats des instructions exécutées dans l’état architectural.
Détails de l’implémentation du SMT
  • Frontend : il comprend plusieurs composants comme le pointeur d’instruction, le trace cache, le cache ITLB et la file de uop. Chaque composant est soit dupliqué, soit partagé pour prendre en charge deux processeurs logiques.
  • Backend : il se compose notamment de l’allocateur de ressources, du renommage de registres, de la file de préparation des instructions et de l’ordonnanceur d’instructions. L’allocateur de ressources bascule entre les processeurs logiques à chaque cycle.
  • Unité de retrait : elle suit les instructions lorsqu’elles sont prêtes à être validées dans l’état architectural et les valide dans le bon ordre.

Sous-système mémoire

  • TLB : petit cache qui convertit les adresses virtuelles en adresses physiques. Il est partagé dynamiquement entre les deux processeurs logiques.
  • Caches L1, L2 et L3 : chaque cœur CPU possède son propre cache L1. Le cache L2 peut varier selon la microarchitecture, et le cache L3 est partagé entre les cœurs.

Impact du SMT sur les performances

  • Exécution d’un seul thread : lorsqu’un seul thread s’exécute sur un cœur avec le SMT activé, les performances peuvent baisser en raison du partage des ressources.
  • Exécution de deux threads : les performances peuvent varier selon les schémas d’accès au cache. Des threads coopératifs peuvent améliorer les performances, tandis que des threads en concurrence peuvent les dégrader.
  • Vulnérabilités de sécurité : plusieurs problèmes de sécurité liés au SMT ont été découverts ces dernières années. Le partage des ressources et l’exécution spéculative des instructions peuvent entraîner des fuites de données sensibles.

Conclusion

  • Décider d’utiliser ou non le SMT : le SMT a été conçu pour améliorer l’utilisation des ressources CPU et augmenter le débit d’instructions, mais il implique des compromis en matière de performances et de sécurité. Il est important de décider de son usage en fonction de la charge de travail.

Récapitulatif de GN⁺

  • Comprendre le SMT : le SMT a été conçu pour améliorer l’utilisation des ressources CPU et augmenter le débit d’instructions.
  • Performances et sécurité : le SMT peut aider à améliorer les performances, mais la concurrence pour les ressources et les vulnérabilités de sécurité peuvent aussi provoquer des baisses de performances et des problèmes de sécurité.
  • Décider de l’utiliser ou non : il faut décider avec prudence d’activer ou non le SMT selon la charge de travail. Si des performances maximales sont requises, il peut être préférable de désactiver le SMT.
  • Projets connexes : l’implémentation du SMT par AMD et les projets d’analyse des performances du SMT sur les processeurs ARM valent aussi le détour.

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.