Nov. 2021 - Offres de stages M2


1. Exploration microarchitecturale avec Chisel : Prédiction de valeurs sur Rocket Chip

Mots clés : Chisel, Rocket, prédiction de valeurs, in-order

Contexte

D’une part, Chisel est un langage de génération de matériel basé sur le langage de programmation Scala. De ce fait, il permet d’utiliser des paradigmes haut niveau emprunté notamment à la programmation fonctionelle, ce qui permet d’augmenter la productivité du concepteur et de faciliter l’exploration microarchitecturale via l’utilisation de générateurs de circuits plutôt que de descriptions comme classiquement utilisé dans les langages HDL (i.e. Hardware Description Language). Un certain nombre de designs de processeurs RISC-V récents sont exprimés en Chisel, notamment Rocket (processeur superscalaire à exécution dans l’ordre) et BOOM (processeur superscalaire à exécution dans le désordre).

D’autre part, il existe une technique matérielle nommée “prédiction de valeurs” qui, en ajoutant une unité de prédiction à un processeur généraliste, permet de casser spéculativement les dépendances de données entres instructions et ainsi augmenter la performance via plus de parallélisme d’instructions.

Objectif

Le stage a donc pour but d’explorer différents paramètres d’une unité de prédiction de valeurs que l’on rajouterait dans un processeur à exécution dans l’ordre. L’idée est de déterminer sur un prototype à quel point la prédiction de valeurs sur un tel processeur permet d’approcher la performance d’un processeur à exécution dans le désordre, et d’estimer le coût en matériel (par exemple en Lookup Tables sur un FPGA) d’une telle unité de prédiction, suivant les paramètres utilisés.

Pour ce faire, on utilisera Chisel et on partira du processeur RISC-V Rocket comme base. On cherchera notamment à se poser la question de comment décrire une unité de prédiction de valeurs en Chisel de façon à pouvoir faciliter l’exploration de différents paramètres (algorithme, taille des structures, mécanisme de validation et de mise à jour) \textit{a priori}. On cherchera aussi à déterminer si Rocket tel qu’il est décrit en Chisel est adapté à servir de base pour le prototypage d’autres techniques microarchitecturales, et notamment si il est décrit de façon assez générique et modulaire.

Compétences attendues/mises en oeuvre

Il sera attendu du candidat ou de la candidate les compétences suivantes :

  • Familiarité avec les concepts architecturaux (ISA) et microarchitecturaux (pipelining, caches, etc.) utilisés dans les processeurs généralistes.
  • La compréhension de l’anglais et la capacité à synthétiser, un travail de bibliographie étant attendu.
  • Une connaissance des concepts de programmation haut-niveau (programmation objet et fonctionnelle, etc.) est bienvenue.

Contacts :

Arthur Perais

2. Étude et implémentation d’un protocole de cohérence de cache dans gem5

Mots clés : architecture, muticœur, cohérence de cache, gem5

Contexte

Les architectures multicœurs sont de plus en plus utilisées autant dans un contexte scientifique que dans l’industrie. L’un de point bloquant concernant les performances de ce type d’architecture est le temps d’accès aux données, partiellement résolu en utilisant des hiérarchies mémoires. Néanmoins, les protocoles de cohérence de caches passent difficilement à l'échelle des muticœurs. L'étude de ces protocoles et en particulier l’exploration architecture est nécessaire au développement de ces architectures. Pour cela, des techniques de simulation doivent être mises en œuvre et l’un des simulateurs les plus utilisées par la communauté scientifique est gem5. Ce dernier est un simulateur système où on peut modéliser les détails de l’architecture, comme le pipeline du cœur ou encore la hiérarchie mémoire.

Objectif

Actuellement gem5 permet de choisir entre plusieurs protocoles de cohérence de caches de type MSI, MOESI, etc, mais une seule représentation de la liste des copies est modélisée~: la représentation sous forme de champ de bits complet (1 bit par cœur dans le système). L’objectif de stace est donc de modéliser une autre représentation de la liste des copies comme par exemple Ackwise ou toute autre représentation de la liste des copies avec un répertoire de taille limité.

Les différentes étapes de ce stage sont les suivantes:

  • Prise en main de gem5
  • Choix des paramètres du système simulé, en particulier de l’ISA: RISC-V, ARM, X86 ou autre
  • Instrumentation dans gem5 pour extraire les métriques nécessaires à l'évaluation du protocole de cohérence de caches
  • Implémentation d’une nouvelle représentation de la liste des copies dans gen5
  • Évaluation et comparaison des protocoles de cohérence de caches dans gem5

Compétences attendues/mises en oeuvre

Le ou la candidat(e) utilisera les compétences suivantes:

  • Logiciel: le développement dans gem5 nécessite des compétences en C++ ainsi qu’en Python et l’utilisation d’un debugger sera sûrement utile
  • Matériel: des connaissances en architecture des ordinateurs sont souhaitées
  • Anglais:
    • le protocole de cohérence de cache à implémenter est décrit dans un article scientifique écrit en anglais.
    • De plus, la documentation de gem5 est également en anglais.
    • Une compréhension de l’anglais est donc nécessaire au bon déroulement de ce stage.}

Contacts :

Julie Dumas