Contacts : T. Carle, H. Cassé, C. Rochange

Année : M1

Equipe : 2-3personnes

Mots-clé : architecture, mémoires, mémoires caches

Outils /langages de programmation : C, C++

Description : La compréhension du fonctionnement d’un microprocesseur est la clé pour l’analyse de ses performances et l’optimisation des programmes. Une clé majeure des performances des microprocesseurs sont les mémoires caches qui permettent d’atténuer les différences de vitesse entre les mémoires principales (RAM, ROM, etc) et le microprocesseur. Cependant, le fonctionnement des caches est assez difficile à appréhender et à analyser car les effets du cache (a) dépendent du programme exécuté et (b) ne produisent leur effet que sur un grand nombre d’accès à la mémoire.

L’objectif de ce projet est de mettre en oeuvre un simulateur de microprocesseur et de hiérarchie mémoire permettant de visualiser le fonctionnement des mémoires caches. Cet outil intégrera un simulateur d’ARM fourni par nos soins qui permettra l’exécution de programmes réels et un simulateur de cache à développer dans le cadre du projet. Ce simulateur devra être configurable pour supporter plusieurs politiques de gestion et plusieurs dimensionnements du cache. De plus, afin d’aider à la compréhension du fonctionnement du cache, différents outils de visualisation (accès à la mémoire, état interne du cache, pas à pas, etc) et de statistiques devront être fournis. Une version avancée du simulateur pourra éventuellement intégrer plusieurs coeurs d’exécution et des politiques de cohérence de cache.

L’outil produit sera utilisé en cours, en TP ou fourni aux étudiants pour explorer le fonctionnement des caches. Les sources seront disponibles en code ouvert et distribuées selon la licence ouverte GPL (tout comme le simulateur ARM fourni).