Présentation du sujet:

Aujourd'hui, 10 à 15 millions de transistors de logique peuvent être intégrés sur un même composant. Ainsi peuvent être réunis sur un circuit, plusieurs dizaines d'unités fonctionnelles (unités de séquencement, unités entières, unités flottantes, ...), une hiérarchie mémoire importante (2 niveaux de caches), ... Parallèlement à l'accroissement de la densité d'intégration, les fréquences d'horloge internes des microprocesseurs ont augmenté rapidement. Le fossé entre horloge interne (sur le circuit intégré) et horloge système (sur la carte) ne cesse de s'accroître rendant de plus en plus énorme le temps d'accès relatif de la mémoire principale du processeur.

Cette tendance devrait encore s'accentuer dans les années à venir. Afin d'exploiter au mieux ces nouvelles données technologiques, plusieurs formes de parallélisme d'exécution peuvent être mises en oeuvre sur le circuit intégré lui-même : parallélisme pipeline, parallélisme superscalaire et parallélisme multiprocessus.

Un mixage de ces divers types de parallélisme est nécessaire afin de tirer le meilleur parti du potentiel d'intégration. Comme répliquer au niveau composant ce qui aujourd'hui est réalisé au niveau d'un système multiprocesseur, n'est sans doute pas la meilleure solution architecturale, les recherches se tournent vers les architectures dites multiflots simultanées. Les architectures multiflots simultanées exécutent simultanément plusieurs processus (issus ou non de la même application) en se partageant les ressources du «processeur», unités fonctionnelles, hiérarchie mémoire, ..

Les travaux déjà réalisés au sein du projet CAPS de l'IRISA/INRIA (thèse de S. Hily 1997) ou à l'Université du Washington (thèse de D. Tullsen , 1996) ont montré que l'approche multiflot simultané permet d'atteindre un débit important d'exécution sur des charges multi-processus de 4 à 8 processus. L'approche multiflot simultané sera implémentée dans la prochaine génération des processeurs vers 2002-2005.

Cependant deux faits majeurs limitent le gain de performance que l'on peut espérer actuellement par cette approche. Tout d'abord si l'on augmente le nombre de processus, la demande sur la hiérarchie mémoire augmente (pollution des caches, ..) et diminue finalement la performance, surtout si les processus sont indépendants et donc travaillent sur des espaces de disjoints. En second lieu, la plupart des applications sont mono-processus, on n'est donc pas toujours à même de fournir au «processeur», les processus dont il aurait besoin pour fournir toute sa performance potentielle.

Le sujet de thèse proposé est l'exploration de l'exécution multiflot simultanée spéculative. Quand un seul flot est disponible, des «processus spéculatifs» sont prédits et commencent leur exécution (itérations suivantes d'une boucle, retour d'une procédure lancée avant l'exécution d'une procédure, ..). Ainsi, on espère produire dynamiquement des flots d'exécution parallèles pour un processeur. L'utilisation de «processus spéculatifs» issus d'un même processus doit permettre d'éviter les deux écueils vus plus haut: comme les «processus spéculatifs» sont issus d'un même processus, on réduit la pollution des mémoires caches, et d'autre part on fournit le parallélisme d'instruction nécessaire au processeur.

Les questions ouvertes par l'exécution multiflot simultané spéculative sont très nombreuses:

  • Quand et comment prédire un nouveau «processus spéculatif» ?
  • Comment valider l'exécution d'un «processus spéculatif» ?
  • Quelles performances peut-on attendre de cette approche ?
  • ...

    Travail demandé

    Le but de la thèse est l'étude et la validation d'architectures de «processeurs». Les propositions en architecture de «processeur» haute performance doivent aujourd'hui être validées par simulation fine c-à-d au cycle près.

    Le travail demandé au cours de la thèse a deux facettes : tout d'abord la définition et le développement dŽune plateforme de simulation de processeur multiflot simultané, puis la proposition de solutions architecturales et leur étude par simulation réaliste.

    Il n'existe pas actuellement d'outils génériques pour la simulation architecturale de processeurs multiflots simultanés, et bien entendu, encore moins de simulateurs permettant de prendre en compte les «processus spéculatifs». Pour les besoins de la thèse, une nouvelle infrastructure de simulation pour explorer les «processus spéculatifs» doit être développée. Ce développement constituera (du point de vue temps de travail) la partie la plus importante de la thèse.

    Pour le développement de cette plateforme de simulation, on désire s'appuyer sur la plateforme de collecte de traces d'exécution CALVIN qui est par ailleurs en cours de conception au sein du projet CAPS (thèse de T. Lafage). On essaiera de plus de rendre la plateforme de simulation le plus modulaire possible afin de pouvoir l'adapter et la réutiliser pour étudier un grand nombre de solutions architecturales.

    Le travail attendu au début de la thèse est donc la définition et l'implémentation d'une première plateforme de simulation de «processus spéculatifs». Ensuite, tout au long de la thèse, ensuite on fera "vivre" la plateforme.

    Au niveau architecture, le premier travail qui devra être mené à bien sera d'étudier le degré de granularité que l'on peut utiliser sur les "processus spéculatifs", puis on explorera les heuristiques de prédictions de "processus spéculatifs": quand prédire ? comment valider ? ...

    Au fur et à mesure de l'avancée des travaux, on intégrera les nouvelles idées de micro-architectures émergeantes (prédictions de valeurs, prédiction de dépendances, ...), ainsi qu'une comparaison avec les solutions déjà existantes.