Transformer le TLP en DLP avec l'architecture de vectorisation dynamique inter-thread
Auteur / Autrice : | Sajith Kalathingal |
Direction : | André Seznec, Caroline Collange |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 13/12/2016 |
Etablissement(s) : | Rennes 1 |
Ecole(s) doctorale(s) : | École doctorale Mathématiques, télécommunications, informatique, signal, systèmes, électronique (Rennes) |
Partenaire(s) de recherche : | ComuE : Université Bretagne Loire (2016-2019) |
Laboratoire : Institut national de recherche en informatique et en automatique (France). Unité de recherche (Rennes, Bretagne-Atlantique) - ALF |
Mots clés
Mots clés contrôlés
Résumé
De nombreux microprocesseurs modernes mettent en œuvre le multi-threading simultané (SMT) pour améliorer l'efficacité globale des processeurs superscalaires. SMT masque les opérations à longue latence en exécutant les instructions de plusieurs threads simultanément. Lorsque les threads exécutent le même programme (cas des applications SPMD), les mêmes instructions sont souvent exécutées avec des entrées différentes. Les architectures SMT traditionnelles exploitent le parallélisme entre threads, ainsi que du parallélisme de données explicite au travers d'unités d'exécution SIMD. L'exécution SIMD est efficace en énergie car le nombre total d'instructions nécessaire pour exécuter un programme est significativement réduit. Cette réduction du nombre d'instructions est fonction de la largeur des unités SIMD et de l'efficacité de la vectorisation. L'efficacité de la vectorisation est cependant souvent limitée en pratique. Dans cette thèse, nous proposons l'architecture de vectorisation dynamique inter-thread (DITVA) pour tirer parti du parallélisme de données implicite des applications SPMD en assemblant dynamiquement des instructions vectorielles à l'exécution. DITVA augmente un processeur à exécution dans l'ordre doté d'unités SIMD en lui ajoutant un mode d'exécution vectorisant entre threads. Lorsque les threads exécutent les mêmes instructions simultanément, DITVA vectorise dynamiquement ces instructions pour assembler des instructions SIMD entre threads. Les threads synchronisés sur le même chemin d'exécution partagent le même flot d'instructions. Pour conserver du parallélisme de threads, DITVA groupe de manière statique les threads en warps ordonnancés indépendamment. DITVA tire parti des unités SIMD existantes et maintient la compatibilité binaire avec les architectures CPU existantes.