Changeset 19
- Timestamp:
- Jun 26, 2009, 5:23:11 AM (15 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/doc
- Property svn:ignore
-
old new 5 5 *.toc 6 6 *.snm 7 .*.swp
-
- Property svn:ignore
-
trunk/doc/slides
-
Property
svn:ignore
set to
.*.swp
-
Property
svn:ignore
set to
-
trunk/doc/slides/1_contexte_sujet.tex
r17 r19 3 3 %============================================================================== 4 4 5 % reviewed 0.2 6 % [Contexte : La simulation c'est bien mais c'est lent] 5 7 \begin{frame} \FT{Contexte} 6 8 \BI … … 8 10 développement de compilateurs et d'applications, pour bon nombre de raisons : 9 11 \BI 10 \o Il n'est pas nécessaire d'avoir à sa disposition le micro-processeur12 \o Il n'est pas nécessaire d'avoir à sa disposition le processeur 11 13 \o Elle permet un diagnostic spécifique à un processeur des performances 12 14 d'un programme … … 15 17 très nombreux des processeurs, il en découle des simulations très lentes, 16 18 voire inutilisables pour simuler des architectures multic\oe ur. 19 20 \o Un facteur de ralentissement de 10 à 10000 est constaté entre 21 l'exécution native et la simulation d'un programme. À titre d'exemple, il 22 n'est pas rare que la simulation d'un programme s'exécutant nativement en 23 dix minutes dure jusqu'à trois semaines. 17 24 \EI 18 25 \end{frame} %------------------------------------------------------------------- 26 27 % reviewed 0.2 28 % [Problématique : Est-ce qu'on peut simplifier la simulation pour aller plus 29 % vite ?] 30 \section{Problématique et approche} 31 \begin{frame} \FT{Problématique} 32 \BI 33 \o Les simulations complètes sont trop longues pour être exploitables 34 \o Les simulations entraînent souvent des approximations du fait de 35 certaines spécificités non toujours documentées des différents processeurs. 36 \o Les modèles de simulation doivent donc être simplifiés, tout en 37 préservant la pertinence de la simulation : on doit garder une bonne 38 approximation du comportement des applications, notamment dans le cas 39 d'applications utilisant des fonctionnalités multic\oe urs. 40 \EI 41 \end{frame} 42 43 % reviewed 0.1++ 44 % [Approche : simuler seulement le comportement de la mémoire] 45 \begin{frame} \FT{Approche} 46 \BI 47 \o % simulation gros grain 48 \o % hum hum : la mémoire est un facteur déterminant 49 \o % modèle choisi : intégrer uniquement la simulation 50 % des accès mémoire et un temps de traitement des 51 % instructions 52 \o % et le 1 53 \EI 54 \end{frame} 55 56 19 57 \begin{frame} \FT{Description détaillée} 20 58 \BI … … 22 60 l'aspect mémoire : 23 61 \BI 24 \o La hi erarchie de cache62 \o La hiérarchie de cache 25 63 \o La communication entre les cache 26 64 \o La gestion de la cohérence entre les caches partagés … … 42 80 \BI 43 81 \o SimpleScalar, qui est inutilisable (sans extension) pour simuler 44 des systèmes multi -processeurs ou multic\oe urs.82 des systèmes multiprocesseurs ou multic\oe urs. 45 83 \o Unisim, qui est beaucoup plus modulaire, mais qui procure un 46 84 framework assez important, dont il aurait fallu extraire la 47 85 simple modélisation de cache. 48 86 \o Simics, semble offrir des avantages considérables sur les autres, 49 not emment quant à sa vitesse d'exécution, mais c'est un logiciel87 notamment quant à sa vitesse d'exécution, mais c'est un logiciel 50 88 propriétaire que nous n'avons pas testé 51 89 \EI -
trunk/doc/slides/2_definition_analyse_probleme.tex
r17 r19 3 3 %============================================================================== 4 4 5 \begin{frame} \FT{Simulation de caches de processeurs multic oeurs}5 \begin{frame} \FT{Simulation de caches de processeurs multic\oe urs} 6 6 \BI 7 7 \o La simulation doit prendre en compte les aspects suivants : 8 - hi erarchie paramétrabe de plusieurs caches, de façon modulaire8 - hiérarchie paramétrable de plusieurs caches, de façon modulaire 9 9 (cache L1, L2, etc.) 10 \o communications entres les caches hi erarchiques11 \o gestion de caches de processeurs multic oeurs :10 \o communications entres les caches hiérarchiques 11 \o gestion de caches de processeurs multic\oe urs : 12 12 \BI 13 13 \o caches partagés -
trunk/doc/slides/3_principe_solution.tex
r17 r19 5 5 \begin{frame} \FT{Principe de la solution} 6 6 \BI 7 \o Modélisation de la hi erarchie de cache7 \o Modélisation de la hiérarchie de cache 8 8 \o Traitement d'une séquence d'accès (read, write) à des adresses 9 9 \o Un modèle très simplifié pour le reste des instructions: … … 11 11 \o pas d'analyse de dépendances 12 12 \o pas de prédiction de branchement 13 \o constantes pour les temps d'ex ecution des instructions13 \o constantes pour les temps d'exécution des instructions 14 14 \EI 15 15 \o le traitement des autres instructions est encore à définir -
trunk/doc/slides/4_identification_taches.tex
r17 r19 7 7 \o Étude modèle simplifié du processeur, différentes approches possibles 8 8 \BI 9 \o in trumentation d'un exécutable (modèle de valgrind)9 \o instrumentation d'un exécutable (modèle de Valgrind) 10 10 \o émulation 11 11 \EI -
trunk/src/l1cache.cpp
r16 r19 1 1 #include "l1cache.h" 2 2 3 // TODO il manque un signal pour faire des requetes au L2 3 4 4 5 void L1Cache::read() … … 19 20 miss_info = false; 20 21 hit_info = false; 22 out_activate = false; 21 23 22 24 … … 40 42 Address element(req, cstore->get_line_width()); 41 43 42 //43 // XXX FIXME A PARTIR d'ICI C'EST N'IMPORTE QUOI44 //45 44 // rappel : processing queue c'est le chargement interne. Si un élement 46 45 // est déjà chargé dans le cache, il va dans la processing queue, 47 46 // sinon, il part en requete dans le L2 48 47 // 49 // ca m'apprendra a faire du copier coller et commiter sans verifier50 48 // 51 49 // Si la donnée est chargée dans le cache 52 50 if (cstore->is_loaded(element)) { 53 54 out_activate= true;51 processing_queue->insert(element, latency); 52 hit_info = true; 55 53 56 54 // affichage de l'action 57 cout << sc_time_stamp() << " L1Cache : access to loaded data [" << element << "] -> hit" << endl;55 cout << sc_time_stamp() << " L1Cache : access to data [" << element << "] -> hit ... [start loading]" << endl; 58 56 59 hit_info = true;60 out_data = in_data;61 57 } else { 58 // XXX requete a un module exterieur 62 59 63 60 // affichage de l'action 64 cout << sc_time_stamp() << " L1Cache : access to loadeddata [" << element << "] -> miss" << endl;61 cout << sc_time_stamp() << " L1Cache : access to data [" << element << "] -> miss" << endl; 65 62 63 out_data = in_data; 66 64 miss_info = true; 67 processing_queue->insert(element, latency);68 processing_queue->print();69 65 } 70 71 //72 // XXX JUSQU'A ICI, C'est N'IMPORTE QUOI73 //74 66 } 75 67
Note: See TracChangeset
for help on using the changeset viewer.