Changeset 23 for trunk/IPs/systemC/processor/Morpheo/Documentation
- Timestamp:
- May 21, 2007, 12:01:51 PM (18 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Documentation/Source
- Files:
-
- 25 added
- 7 deleted
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/common/bibliographie.bib
r2 r23 1214 1214 @article{2000_barroso, 1215 1215 title={{Piranha: a scalable architecture based on single-chip multiprocessing}}, 1216 author={Barroso, L.A. and Gharachorloo, K. and McNamara, R. and Nowatzyk, A. and Qadeer, S. and Sano, B. and Smith, S. and Stets, R. and Verghese, B.},1216 author={Barroso, L.A. and al.}, 1217 1217 journal={Proceedings of the 27th annual international symposium on Computer architecture}, 1218 1218 pages={282--293}, -
trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/root.tex
r2 r23 1 \input{\dirroot/01_abstract} 2 \input{\dirroot/02_introduction} 3 \input{\dirroot/03_experimentation.tex} 4 \input{\dirroot/04_methodologie.tex} 5 \input{\dirroot/05_resultat.tex} 6 \input{\dirroot/06_conclusion.tex} 1 \begin{abstract} 2 Dans ce document nous allons étudier l'incidence du partage par les contextes matériels d'un processeur, de ces caches de niveau 1, de sa partie opérative et de sa partie exécutive. 3 Il s'agit d'une étude de performance, en terme d'exécution, utilisant les benchmarks SPECINT2000. 4 Nous montrons que le partage de la partie exécutive n'a que peu d'incidence sur les performances, alors que le partage des caches fait perdre 10\% de performances et que le partage de la partie opérative fait tomber les performances d'un facteur de 2,7 entre un CMP de degré 4 et un SMT de même degré. 5 6 \end{abstract} 7 8 %------------------------------------------------------------------------- 9 \Section{Introduction} 10 11 De nos jours, la capacité d'intégration augmente. 12 Un concepteur possède un ``tas'' de transistors toujours plus grand à sa disposition. 13 L'objectif des vingts dernières années était d'avoir un processeur monolithique pouvant extraire des programmes le plus d'ILP (Instruction Level Parallelism) possible. 14 Les études de David W. Wall \cite{1991_wall} montre que l'ILP moyen dans un programme est de 3-5 instructions. 15 Les mono-processeurs de la fin du XX ème siècles comme le MipsR10000 \cite{1996_yeager}, l'Alpha 21264 \cite{1998_kessler}, le Pentium 4 \cite{2001_hinton} ou encore l'Itanium 1 et 2 d'Intel (\cite{2000_sharangpani}, \cite{2003_mcnairy}) exploitent tous fortement l'ILP. 16 17 Dans le même laps de temps des systèmes CMP (Chip Multi Processors) firent leur apparition. 18 De telles puces peuvent exécuter plusieurs tâches simultanément. 19 Ces CMP exploitent le TLP (Thread Level Parallelism). 20 Dans cette catégorie nous pouvons citer le piranha de Compaq \cite{2000_barroso}, l'Hydra de Stanford \cite{2000_hammond}. 21 On peut également citer le Power4 \cite{2002_tendler} ou l'Alpha 21364 \cite{2002_mukherjee} qui sont des processeurs monolithiques mais conçus pour être intégrés dans un environnement multiprocesseur. 22 23 L'exploitation de l'ILP de manière aggressive, (prédiction de branchement, lancement désynchronisé) entraine une sous exploitation des ressources internes des processeurs. 24 Une technique consiste en l'éxecution de plusieurs contextes par coeur de processeur en exploitant le TLP. 25 Ceci est la technique du Multi-threading et de sa principale variante le SMT (Simultaneous multi threading). 26 C'est l'objet des travaux de recherches de l'équipe de Tullsen \cite{1996_tullsen}, \cite{1998_tullsen}. 27 Pour un ajout minime en surface (une duplication de quelques registres d'état, ajout de multiplexeurs pour sélectionner un contexte... ), nous pouvons avoir des processeurs mono-coeur multi-thread. 28 Cette technique est exploitée dans le Pentium 4 Hyper-Threading d'Intel \cite{2003_koufaty} (ajout de 5\% en surface pour un gain de performance de 30\%). 29 30 Il y a deux grands axes de recherches : 31 \begin{enumerate} 32 \item le CMP où chaque thread s'execute sur un coeur spécifique. 33 L'intégralité des ressources d'un coeur est mit à la disposition d'un thread. 34 Les ressources internes du coeur sont dédiées à un thread. 35 36 \item le SMT où tous les threads s'éxecutent dans un unique coeur. 37 Tous les threads entrent en compétition pour l'obtention des ressources d'un coeur. 38 Les ressources internes du coeur sont partagées entre plusieurs threads 39 \end{enumerate} 40 Entre ces deux axes, il y a une multitude de variation du degré de partage des ressources entre les tâches. 41 Ceci a pour conséquence l'émergence de CMP de SMT (plusieurs coeurs multi contexte). 42 Le POWER 5 \cite{2004_kalla} est un bi-coeurs où chaque coeur est SMT de degré 2. 43 De même pour le montecito d'Intel \cite{2005_mcnairy}. 44 Alors que le Niagara de Sun intègre 8 coeurs de CMT (Corse Grain Multi Threading) de degré 4 \cite{2005_kongetira}. 45 46 L'objectif de ce papier est d'analyser les performances d'exécution entre plusieurs partages des ressources d'un processeur. 47 Pour cela, nous allons voir dans la section \ref{experimentations} les expérimentations que nous avons réalisées, ainsi que celles qui ont déjà été effectuées. 48 Dans la section \ref{methodologie} nous allons montrer nos hypothèses de travail. 49 Enfin une section où nous allons interpréter les résultats. 50 51 %------------------------------------------------------------------------- 52 \Section{Expérimentations}\label{experimentations} 53 Le SMT est une solution faible-coût pour obtenir un processeur MT (multi-thread). 54 Les ressources sont intégralement partagées, dans le cas où il n'y a qu'un seul thread à exécuter, ce dernier pourra utiliser l'intégralité des ressources du processeur. 55 56 Malheureusement cette solution à deux problèmes importants. 57 58 Le premier est que la rapidité d'exécution d'un thread dépend des autres threads. 59 Ceci est dut à la compétition entre les threads pour obtenir les ressources. 60 Par exemple si tous les threads font des accès mémoires fréquents, l'unité mémoire va rapidement saturer. 61 62 Le deuxième problème est la pollution des ressources partagées. 63 Les meilleurs exemples sont les caches et le Buffer des destinations de branchement (BTB). 64 La gestion du SMT peut être gérer de manière très simple en concaténant le numéro du thread l'adresse de l'instruction ou de la donnée. 65 Dans ce cas, le cache peut évincer des lignes très utiles d'un thread au profit de lignes d'autres threads. 66 %De plus les actions comme le prefetch ou la prédiction de branchement risque de priver des threads de lignes utiles contre une hypothétique ligne utile pour le thread bénéficiaire. 67 68 Nous allons faire varier le degré de partage des ressources. 69 Des travaux équivalents ont été réalisés. 70 Dans \cite{2004_dolbeau}, ils étudient l'influence du partage des unités à latence longue (multiplication, division...), du prédicteur de branchement, ainsi que des caches Instructions et Données. 71 Pour ce faire, ils ont implémentés l'architecture {\bf CASH} (CMP And SMT Hybrid) qui consiste en 4 coeurs ce partageant les ressources cités. 72 Dans un autre article, \cite{2004_kumar}, il y a une étude en terme de performance d'exécution mais également en terme de surface. 73 Les blocs concernés sont les unités flottantes, les caches de premiers niveaux, et enfin les ports du crossbar reliant les Caches à la mémoire. 74 Ici l'équipe de Tullsen à validée leurs hypothèses sur un système à 8 coeurs. 75 Le partage des ressources ce fait entre deux coeurs voisins. 76 77 Leurs résultats ainsi que ceux que nous obtenons sont compatibles entre eux. 78 79 Notre approche consiste à tester l'incidence du partage des caches, des Unités d'exécutions et de la partie opérative. 80 81 Nous nommons les partages comme suit : 82 \begin{description} 83 \item[Cluster :] Les clusters ce partage les caches de niveaux 2 et les unités d'exécutions. 84 \item[Unité de lancement :] Les unités de lancement ce partage les ports des caches de niveaux 1 et les unités d'exécutions. 85 \item[Contexte :] Les contextes se partagent l'accès au décodeur, au Icache et au prédicteur de branchement. 86 \end{description} 87 88 L'expérimentation ce fait avec le générateur de processeur Morpheo (acronyme de ``Multi ORganisation for a Processor HEterogeneous and Open''). 89 Une vue d'ensemble de l'architecture résultante est donnée dans la figure \ref{MORPHEO_overview}. 90 91 \begin{figure}[h] 92 \begin{center} 93 \resizebox{8cm}{!}{ 94 \includegraphics{\dirschema/MORPHEO_overview.eps}} 95 \caption{\label{MORPHEO_overview}MORPHEO - Vue d'ensemble} 96 \end{center} 97 \end{figure} 98 99 Notre allons analyser l'incidence du partage des ressources au niveau Cluster, UL et Contexte dans un système à 4 Threads, pouvant lancer à chaque cycle 8 instructions. 100 Trois tableaux résument les caractéristiques communes de chaque instance ainsi que les paramètres spécifiques pour les configurations avec 1,2 et 4 coeurs. 101 (nous définissons un coeur étant équivalent à une UL). 102 Le troisième tableau résume le système mémoire. 103 104 \begin{table}[h] 105 \begin{center} 106 \begin{tabular}{|l|c|} 107 \hline 108 Unité d'exécutions & 8 \\ 109 Profondeur des Stations de Réservations & 4 \\ 110 Nombre de branchements spéculés & 8 \\ 111 Return Address Stack & 16 \\ 112 Réseau de by-pass & Complet \\ 113 Nombre de port de lecture & 12 \\ 114 Nombre de port d'écriture & 8 \\ 115 \hline 116 \end{tabular} 117 \end{center} 118 \caption{Caractéristiques communes} 119 \end{table} 120 121 \begin{table}[h] 122 \begin{center} 123 \begin{tabular}{|l|ccc|} 124 \hline 125 & 1 coeur & 2 coeurs & 4 coeurs \\ 126 \hline 127 Largeur du pipeline & 8 & 4 & 2 \\ 128 Taille-Ifetch\_queue & 8 & 4 & 2 \\ 129 Taille-Issue queue & 32 & 16 & 8 \\ 130 Taille-ReOrder Buffer & 128 & 64 & 32 \\ 131 Taille-Autres files & 16 & 8 & 4 \\ 132 Largeur des fenêtres & 16 & 8 & 4 \\ 133 Branch Target Buffer & 256 & 128 & 64 \\ 134 Méta prédicteur & 16k & 8k & 4k \\ 135 Banc de Registres & 256 & 128 & 64 \\ 136 \hline 137 \end{tabular} 138 \end{center} 139 \caption{Caractéristiques spécifiques} 140 \end{table} 141 142 \begin{table}[h] 143 144 \begin{center} 145 \begin{tabular}{|l|cc|} 146 \hline 147 & L1 & L2 \\ 148 & I/D séparé & unifié \\ 149 \hline 150 Taille & 8 ko \footnote{divisé par le nombre de cluster} & 2 Mo \\ 151 Nombre de lignes & 128 \footnote{divisé par le nombre de cluster} & 16k \\ 152 Nombre de mots/ligne & 16 & 32 \\ 153 Associativité & 4 voies & 4 voies \\ 154 Latence - Hit & 2 cycles & 6 cycles \\ 155 Pénalités - Miss & 4 cycles & 100 cycles \\ 156 \hline 157 \end{tabular} 158 \end{center} 159 \caption{Caractéristiques du système mémoire} 160 \end{table} 161 162 %(Le nombre de lignes du premier niveau de cache est divisé par le nombre de cluster). 163 164 165 %------------------------------------------------------------------------- 166 \Section{Méthodologie}\label{methodologie} 167 168 \subSection{Charge de travails} 169 170 Dans un premier temps, nous avons sélectionné 6 benchmarks parmi les SPECINT2000 (164.gzip, 175.vpr, 181.mcf, 255.vortex, 256.bzip2, 300.twolf). 171 %Nous ne les avons pas tout sélectionnés afin de ne pas avoir trop de simulations à effectuer et car tous les benchmarks ne fonctionnes pas (problème de compatibilité avec gcc 4 et avec notre modèle). 172 173 Chaque archtecture est soumise à une charge de travails composée de 15 simulations (Le nombre de simulations est décrit par la combinaison $C_{nb\_benchmarks}^{nb\_threads}$). 174 175 Pour les librairies standard (libc et libm) ainsi que les fonctions bas niveaux (read, write, open, close ...) qu'un système d'exploitation se doit d'offrir, nous utilisons la librairie {\it Newlib}. 176 177 \subSection{Simulation} 178 179 Pour les simulations, nous avons pris 14 instances de notre modèle. 180 Elles sont déterminées par le nombre de cluster (A), le nombre d'ULs de chaque cluster (B) et le nombre de contexte de chaque UL (C). 181 De plus chaque UL n'a accès qu'a un sous-ensemble distinct d'ALUs. 182 Ce nombre définit la taille du groupe (D). 183 Nous nommons une instance X$E$\_$A$\_$B$\_$C$-$D$ avec E=A*B*C. 184 185 %Le tableau suivant récapitules toutes les instances que nous avons sélectionnées. 186 187 % 188 %\begin{table}[h] 189 %\begin{center} 190 %\begin{tabular}{ccccc} 191 %Nom & Cluster & UL & Contexte & Taille groupe d'ALUs\\ 192 %X4-1\_1\_4-8 & 1 & 1 & 4 & 8\\ 193 %X4-1\_2\_2-8 & 1 & 2 & 2 & 8\\ 194 %X4-1\_2\_2-4 & 1 & 2 & 2 & 4\\ 195 %X4-1\_4\_1-8 & 1 & 4 & 1 & 8\\ 196 %X4-1\_4\_1-2 & 1 & 4 & 1 & 2\\ 197 %X4-2\_1\_2-8 & 2 & 1 & 2 & 8\\ 198 %X4-2\_1\_2-4 & 2 & 1 & 2 & 4\\ 199 %X4-2\_2\_1-8 & 2 & 2 & 1 & 8\\ 200 %X4-2\_2\_1-4 & 2 & 2 & 1 & 4\\ 201 %X4-2\_2\_1-2 & 2 & 2 & 1 & 2\\ 202 %X4-4\_1\_1-8 & 4 & 1 & 1 & 8\\ 203 %X4-4\_1\_1-4 & 4 & 1 & 1 & 4\\ 204 %X4-4\_1\_1-2 & 4 & 1 & 1 & 2\\ 205 %\end{tabular} 206 %\end{center} 207 % \caption{Instances sélectionnées} 208 %\end{table} 209 210 Chaque simulation ce fait sur 110 millions de cycles. 211 Les 10 premiers millions sont ignorés afin de chauffer les caches et les unités de prédictions. 212 Pour chaque instance, nous prenons le nombre d'instructions exécutées des 15 simulations. 213 Ce résultat est comparé à la moyenne des 6 benchmarks exécutés dans la version Single Thread du processeur (exécution séquentielle des 6 benchmarks avec la même instance). 214 215 Nous pouvons remarquer que les instances ne vont pas être comparées avec une instance de référence, mais seront comparées avec l'accéllération de la version MT par rapport à la version ST. 216 Ceci à la bonne propriété d'avoir une borne maximale à l'accélération qui est le nombre de thread (ici 4). 217 218 %------------------------------------------------------------------------- 219 \Section{Résultat}\label{resultat} 220 221 La simulation nous fournit le graphe \ref{simulation_all} 222 223 \begin{figure}[h] 224 \begin{center} 225 \resizebox{8cm}{!}{ 226 \includegraphics{\dirschema/simulation_all}} 227 \label{simulation_all} 228 \end{center} 229 \end{figure} 230 231 Première constatation simple : plus on dédit les ressources, plus on approche de l'accélération maximale. 232 La version du X4\_4\_1\_1-2 ne partage que les caches de niveau L2, et est donc une version CMP pure, atteint une accélération de 3,92. 233 Alors que la version X4-1\_1\_4-8 qui est un SMT pur à une accélération de 1,46. 234 235 En terme de performance, il y a une accélération de 2,7 entre la version CMP et la version SMT. 236 Attention dans l'interprétation des résultats, car ici nous ne comparons qu'en terme de performances l'incidence du partage des ressources matérielles. 237 Pour que l'étude soit complète, nous devons aussi ajouter l'augmentation de la surface entre la version MT et la version ST. 238 Ensuite il faudrait comparer le rapport entre l'augmentation de la performance sur le coût matériel. 239 Nous pouvons néanmoins faire une étude abstraite du coût en surface. 240 Le rapport de surface entre la version MT et ST de l'instance X4-4\_1\_1-2 est de 4. 241 Ceci donne un rapport performance/surface pour la version CMP de degré 4 de 0,98. 242 Pour le SMT, nous réutilisons les estimations d'Intel pour le Pentium 4 HT \cite{2003_koufaty}. 243 Trois contextes de plus nous amène à 15\% de surface en plus. 244 Ce qui donne un rapport de surface entre la version MT et ST de l'instance X4\_1\_1\_4-8 de 1,15. 245 Dans ce cas, le rapport performance/surface pour la version SMT de degré 4 nous donne 1,27. 246 Ce qui donne l'avantage à une implémentation SMT. 247 248 Pour le partage du cache, nous analyserons les 3 instances suivantes : 249 \begin{itemize} 250 \item X4-4\_1\_1-2 avec 4 Icaches et Dcaches L1 de 2k chacun et accessible par un seul thread . L'accélération de 3,92. 251 \item X4-2\_2\_1-2 avec 2 Icaches et Dcaches L1 de 4k chacun et accessible par deux threads. L'accélération de 3,63. 252 \item X4-1\_4\_1-2 avec 1 Icache et Dcache L1 de 8k chacun et accessible par quatre threads. L'accélération de 3,27. 253 \end{itemize} 254 255 Le partage du cache induit des conflits d'accès au port. 256 Dans le premier cas, il y a 4 ports d'accès au Icache de largeur de deux instructions. 257 Alors que dans le troisième cas, il n'y a qu'un port de largeur de 8 instructions. 258 Les paquets de 8 instructions permettent de mieux exploiter l'ILP mais moins le TLP : chaque contexte accède au cache tous les 4 cycles. 259 Nous notons aussi que le partage du cache entraîne un effet de bord qui est le pourrissement du contenu du cache par les autres threads. 260 Ainsi qu'un allongement du temps de réponses des échecs d'accès au cache du au plus grand nombre de miss et à la plus grande longueur des lignes. 261 Le cache, optimisé pour tirer parti de la localité spatiale et temporelle d'un flot d'instructions ou de données se retrouve maintenant confrontés à plusieurs flots. 262 263 Pour le partage de la partie exécutive, nous pouvons observer les instances suivantes : 264 \begin{itemize} 265 \item X4-2\_2\_1-2 où il y a 4 groupes de 2 ALUs et chacune est accessible par 1 Threads. L'accélération est de 3,63. 266 \item X4-2\_2\_1-4 où il y a 2 groupes de 4 ALUs et chacune est accessible par 2 Threads. L'accélération est de 3,41. 267 \item X4-2\_2\_1-8 où il y a 1 groupe de 8 ALUs et est accessible par 4 Threads. L'accélération est de 3,38. 268 \end{itemize} 269 270 Le partage des unités d'exécutions n'influe que légèrement sur les performances. 271 Les ressources sont mieux utilisées. 272 Or il y a une augmentation de la sensibilité du aux erreurs de routages (envoie vers une ALUs surchargés alors que d'autres ALUs sont en famine). 273 Ceci est également du à notre politique de routage actuel qui est un round robin classique. 274 Notons que dans le cas où il y aurait plus d'un contexte par coeur, le partage des unités d'exécutions est favorable. 275 Par exemple X4-1\_2\_2-8 et X4-1\_2\_2-4 qui ont une accélération de 2,37 alors que les instances X4-2\_1\_2-8 et X4-2\_1\_2-4 ont respectivement une accélération de 2,51 et 2,4. 276 Ceci est la conséquece d'une meilleur exploitation du TLP. 277 La fenêtre de lancement est mieux utilisé et le réseau de routage à plus d'instructions à sa disposition. 278 279 % Il y a aussi une hétérogénéité des instructions longues. 280 281 Pour le partage opérative, voyons les instances suivantes : 282 \begin{itemize} 283 \item X4-1\_1\_4-8, 1 cluster possédant chacun 1 UL avec 4 contextes chacun. L'accélération est de 1,46. 284 \item X4-1\_2\_2-8, 1 cluster possédant chacun 2 ULs avec 2 contextes chacun. L'accélération est de 2,37. 285 \item X4-1\_4\_1-8, 1 cluster possédant chacun 4 ULs avec 1 contexte chacun. L'accélération est de 2,94. 286 \item X4-2\_1\_2-8, 2 clusters possédant chacun 1 UL avec 2 contextes chacun. L'accélération est de 2,51. 287 \item X4-2\_2\_1-8, 2 clusters possédant chacun 2 ULs avec 1 contexte chacun. L'accélération est de 3,38. 288 \item X4-4\_1\_1-8, 4 clusters possédant chacun 1 UL avec 1 contexte chacun. L'accélération est de 3,94. 289 \end{itemize} 290 291 Le partage de la partie opérative donne des résultats très disparates et demande une analyse plus poussée des résultats. 292 Nous pouvons néanmoins dire qu'il y a une augmentation de la sensibilité des instructions de synchronisation et d'accès aux registres spéciaux (nous imposons qu'avant d'accèder au registre spéciaux, le pipeline doit être vide). 293 Il y a également une augmentation des miss de spéculations du au partage du prédicteur de branchement. 294 Ceci implique qu'il y a une augmentation des instructions inutiles dans le pipeline. 295 Elles représentent 6,12\% des instructions dans X4-1\_1\_4-8, alors qu'elles ne représentent que 2,17\% dans l'instance X4-4\_1\_1-8. 296 Ceci est aussi du à la largeur du pipeline et donc à la sous exploitation de L'ILP. 297 Lors du décodage, nous choisissons de manière round robin la fetch queue contenant un paquet. 298 Dans l'instance X4-4\_1\_1-8, 4 décodeurs décodent chacun en moyenne 1,63 instructions sur des paquets de 2 instructions (soit un total de 6,52 instructions), alors que dans l'instance X4-1\_1\_4-8, 1 décodeur prend un paquet de 8 instructions et décode en moyenne 3,7 instructions. 299 La cause venant à des paquets d'instructions devant être alignés et à la présence de branchements. 300 301 %------------------------------------------------------------------------- 302 \Section{Conclusion} 303 304 Cette étude à démontrer un fait déjà acquis, que l'accélération entre la version MT et la version ST d'un processeur diminue avec l'augmentation du partage des ressources. 305 Notre modèle de processeur étant encore en cours de développement, nous nous destinons à fournir un modèle VHDL synthétisable. 306 Ainsi la prochaine étude portera sur le coût surfacique du partage des ressources matérielles et ainsi déterminer quel degré de partage apporte le meilleur rapport performance/surface. 307 7 308 \bibliography{\dircommon/bibliographie} -
trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation-internal_seminary_overview/fr/root.tex
r17 r23 1 \section{ Besoins}1 \section{Motivations} 2 2 3 3 \ContentsCurrent 4 4 5 \slidetitle{Besoins} 6 {Besoins pour les processeurs embarquées : 7 8 \begin{itemize} 9 \item Maîtrise du système 10 \item Souplesse 11 \item Performance 12 \end{itemize} 13 } 5 \slidetitle{Motivations} 14 6 { 15 Où : téléphone portable, baladeur mp3/vidéo, automobile ... 16 7 Sécurité du hardware : 17 8 \begin{description} 18 \item[Maitrise du système :] Les processeurs généralistes sont utilisés dans un vaste échantillon d'application. Ceci touche également la sécurité. 19 \item[Souplesse :] Pour un concepteur de système embarqués : bien dimensionner son système 20 \item[Performance :] Application cible de plus en plus gourmande en ressources : beaucoup de threads avec des impératifs de rapidité. 21 \end{description} 22 } 23 24 \subsection{Maîtrise du système} 25 \slidetitle{Besoin de la Maîtrise du système} 26 { 27 {\bf Plate-forme de confiance totale} 28 29 \begin{itemize} 30 \item Projet Open 31 \item ISA Open 32 \item Instructions customisables 33 \end{itemize} 34 } 35 { 36 Morpheo s'inscrit dans le cadre du projet plate-forme de confiance totale. 37 38 Instructions customisables : possibilité à l'utilisateur de rajouter de nouvelles instructions. Comme par exemple pour le chiffrement ou le déchiffrement ... 39 % On doit supposer que la mémoire d'instruction et de donnée ce trouve en milieu accéssible par les pirates. Leur chiffrement en devient obligatoire. 40 % 41 % En hard dans le proc? cache? interconnect? I/O? 42 } 43 44 45 \subsection{Souplesse} 46 \slidetitle{Besoin de Souplesse} 47 { 48 {\bf Adapation aux besoins des concepteurs} 49 50 \begin{itemize} 51 \item Processeur hautement paramètrables 52 \item Ressources internes hétérogènes 53 \item FPGA 54 \end{itemize} 55 } 56 { 57 Souplesse : s'adapter aux besoins des concepteur de SoC. 58 59 \begin{description} 60 \item[Paramètrables :] Fournir un grand jeu de paramètres afin de satisfaire les contraintes du concepteur 61 \item[Hétérogènes :] En découle des paramètres 62 \item[FPGA :] Cible de + en + utilisé, Si mappage possible sur les ressources limités d'un FPGA, alors possible également sur un ASIC 63 \end{description} 64 } 65 66 \subsection{Performance} 67 \slidetitle{Besoin de Performance (1) - ILP vs TLP} 68 { 69 {\bf Exploitation des différentes formes de parallélisme} 70 71 Paquet d'instruction pouvant s'éxecuter en parallèle : 72 \begin{itemize} 73 \item {\it Intra flot} : exploitation de l'ILP\newline limitation intrasèque au soft (3-5 instructions) 74 \item {\it Inter flot} : exploitation du TLP \newline limitation intrasèque au système cible 75 \end{itemize} 76 } 77 { 78 \begin{itemize} 79 \item ILP : superscalaire, OutOfOrder, Spéculation 80 \item TLP : CMP, SMT 81 \end{itemize} 82 } 83 84 \slidetitle{Besoin de Performance (2) - CMP vs SMT} 85 { 86 \printgraph{GENERAL_type_of_multi_thread}{0.5} 87 88 % (schéma) 89 % 90 % Comparaison théorique de 5 types d'architectures : 91 % ||Mono Coeur ||Mono Contexte ||Largeur infini||Idéal || 92 % ||Mono Coeur ||Mono Contexte ||Largeur 4 ||Monolithique|| 93 % ||Multi Coeur d'ordre 4||Mono Contexte ||Largeur 1 ||CMP || 94 % ||Mono Coeur ||Multi Contexte d'ordre 4||Largeur 4 ||SMT || 95 % ||Multi coeur d'ordre 2||Multi Contexte d'ordre 2||Largeur 2 ||CMP de SMT || 96 } 97 { 98 \begin{itemize} 99 \item A et B : 17 instructions en 7 UT idéale 100 \item (1) : 14 UT 101 \item (2) : 17 UT, 34 slot vide, occupation 50\% 102 \item (3) : 12 UT, 14 slot vide, occupation 70\% 103 \item (4) : 11 UT, 10 slot vide, occupation 77\% 104 \end{itemize} 105 } 106 \slidetitle{Besoin de Performance (3) - Entre le CMP et le SMT} 107 { 108 \begin{description} 109 \item[CMP :] L'intégralité des ressources d'un coeur sont dédiées à un contexte. 110 \item[SMT :] L'intégralité des ressources d'un coeur sont partagées entre tous les contextes. 111 \item[Hybride :] Multitude de possibilité de partage des ressources internes.\\ 112 Une ressource est soit dédiée à un contexte soit partagée entre un certain nombre de contextes. 9 \item[Ancienne tendance :] IPs (Intellectual Propritie) fermées labelisés sécuritaires. 10 \item[Nouvelle tendance :] Ouverture des IPs, intégration de System On Chip (SOC) 113 11 \end{description} 114 12 } 115 13 { 116 Définir ce qu'est une ressource : ALU, predicteur de branchement, cache ...14 117 15 } 118 16 119 17 120 \section{Solution} 121 \ContentsCurrent 122 \subsection{Initiatives actuelles} 123 \slidetitle{Initiatives actuelles} 124 { 125 Tous les processeurs sont des RISC scalaires. 126 127 \begin{description} 128 \item[OpenRISC 1200 :] 32 bits, 5 étages. Jusqu'à 8 contextes. 129 \item[Leon 2 :] 32 bits, 5 étages. 130 \item[Leon 3 :] Leon 2 en 7 étages. 131 \item[OpenSparcS1 :] 1 coeur 64bits, 6 étages et CMT 4. 132 \item[OpenSparcT1 :] OpenSparcS1 avec 8 coeurs. Version OpenSource du Niagara. 133 \item[Micro32 :] 32 bits, 6 étages. 134 \item[OpenFire :] 32 bits, 3 étages. Dérivés du MicroBlaze 135 \item[aeMB :] 32 bits, 3 étages. Dérivés du MicroBlaze 136 \end{description} 137 } 138 { 139 \begin{description} 140 \item[OpenRISC 1200 :] Présence icache, dcache, immu, dmmu. Taille des caches, des opérandes, du banc de registres. Matériel spécifique : div, rotate, mul, mac. 141 \item[Leon 2 et 3 :] Présence de div, mul, mac, floating point. Taille du banc de registres . Nombre de load delai. Configuration avancé du cache et de la MMU (fetch, decod, execute, memory, write) (fetch, decod, register access, execute, memory, exception, write) 142 \item[OpenSparc :] Présence de la Stream Processing Unit (cryptographie), 1 seul thread par coeur. 143 \item[Micro32 :] Présence icache, dcache, debug. Taille des caches. Matériel spécifique : div, rotate, mul pipeline, extension de signes. 144 \item[OpenFire :] 3 étages (Fetch, Decod, Execute). Faiblement configurable (largeur des données, espace d'addressage, presence de mul et de cmp). Aucun support de caches 145 \item[aeMB :] 3 étages (Fetch, Decod, Execute). Support de caches. Pas configurable (Juste la largeur de l'espace d'addressage) 146 \end{description} 147 } 148 149 \slide { 150 \printgraph{GENERAL_Art_of_State-Comparaison}{0.8} 151 } 152 { 153 } 154 \subsection{Solution proposée} 155 \slidetitle{Solution proposée} 156 { 157 \begin{itemize} 158 \item Partir d'une micro-architecture HighPerf. 159 \item Ajout de la gestion du multi-thread. 160 \item Rendre paramétrable les ressources internes. 161 \item Mappage des instances de ce générateur de processeur sur les ressources limitées d'un FPGA. 162 \end{itemize} 163 } 164 { 165 Pentium 4, MipsR10000, Power5 166 } 167 168 \subsection{Métrique} 169 \slidetitle{Métrique} 170 { 171 \begin{itemize} 172 \item Obtenir le meilleur compromis Performance / Complexité. 173 \begin{itemize} 174 \item Performance : nombre de cycles nécessaire pour éxecuter les Benchmarks. 175 \item Compléxité : surface occupée du FPGA. 176 \end{itemize} 177 \item Obtenir le meilleur partage des ressources entre les contextes matériels. (Gain Performance / Coût surface). 178 \begin{itemize} 179 \item Gain en performance : rapport entre la performance MT sur la performance ST. 180 \item Coût en surface : rapport entre la surface MT sur la surface ST. 181 \end{itemize} 182 \end{itemize} 183 } 184 { 185 benchmark : SPECINT2k, Dhrystone 186 187 FPGA : virtex5LX 330 188 } 189 190 \section{Morpheo} 191 \ContentsCurrent 192 193 \subsection{Micro Architecture} 194 \slidetitle{Micro Architecture : Overview} 195 { 196 \printgraph{MORPHEO_micro_architecture-overview}{0.48} 197 } 198 { 199 3 grandes parties : 200 \begin{description} 201 \item[Front end :] Amène des paquets d'instructions en séquence, et les décodes. Calcules les addresses suivantes (spéculation) et maintiens l'état des threads (idle, wait, run ...) 202 \item[Out Of Order Engine :] Renome les registres (annulations des dépendances RAW, WAW et WAR). Re Order Buffer : mettre à jour l'état du contexte dans l'ordre d'arrivé des threads. 203 \item[Execution Loop :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres. 204 \end{description} 205 } 206 207 \slidetitle{Micro Architecture : Front end} 208 { 209 \printgraph{MORPHEO_micro_architecture-front_end}{0.7} 210 } 211 { 212 } 213 214 \slidetitle{Micro Architecture : Out Of Order Engine} 215 { 216 \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7} 217 } 218 { 219 } 220 221 \slidetitle{Micro Architecture : Execution Loop} 222 { 223 \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7} 224 } 225 { 226 } 227 228 \subsection{Méthodologie} 229 \slidetitle{Service proposé} 230 { 231 \printgraph{MORPHEO_service}{0.75} 232 } 233 { 234 libMorpheo : 235 \begin{itemize} 236 \item Simulation systemC 237 \begin{itemize} 238 \item TestBench Vhdl 239 \item Statistiques lors de la simulation 240 \end{itemize} 241 \item Vhdl : synthétisable sur FPGA 242 \item Positions: Point d'entrée d'un outil de visualisation architectural (Stage M1) 243 \end{itemize} 244 } 245 246 \slidetitle{Méthodologie - Boucle d'Iteration} 247 { 248 \printgraph{MORPHEO_methodologie}{0.3} 249 } 250 { 251 \begin{enumerate} 252 \item SystemC 253 \begin{enumerate} 254 \item Ecriture du modèle systemC 255 \item Ecriture d'un TestBench pour le systemc - goto 1.1 256 \end{enumerate} 257 \item VHDL 258 \begin{enumerate} 259 \item Ecriture du vhdl 260 \item Validation de la stricte compatibilité entre le systemC et le Vhdl - goto 2.1 ou 1.1 261 \end{enumerate} 262 \item FPGA 263 \begin{enumerate} 264 \item Synthèse sur FPGA - goto 2.1, 1.1 265 \item Mappage sur FPGA 266 \end{enumerate} 267 \end{enumerate} 268 } 269 270 \subsection{Perspective} 271 \slidetitle{Comment remplir nos journées?} 272 { 273 Il "reste" à faire ... 274 } 275 { 276 } 18 19 %\section{Besoins} 20 % 21 %\ContentsCurrent 22 % 23 %\slidetitle{Besoins} 24 % {Besoins pour les processeurs embarquées : 25 % 26 % \begin{itemize} 27 % \item Maîtrise du système 28 % \item Souplesse 29 % \item Performance 30 % \end{itemize} 31 % } 32 % { 33 % Où : téléphone portable, baladeur mp3/vidéo, automobile ... 34 % 35 % \begin{description} 36 % \item[Maitrise du système :] Les processeurs généralistes sont utilisés dans un vaste échantillon d'application. Ceci touche également la sécurité. 37 % \item[Souplesse :] Pour un concepteur de système embarqués : bien dimensionner son système 38 % \item[Performance :] Application cible de plus en plus gourmande en ressources : beaucoup de threads avec des impératifs de rapidité. 39 % \end{description} 40 % } 41 % 42 %\subsection{Maîtrise du système} 43 %\slidetitle{Besoin de la Maîtrise du système} 44 % { 45 % {\bf Plate-forme de confiance totale} 46 % 47 % \begin{itemize} 48 % \item Projet Open 49 % \item ISA Open 50 % \item Instructions customisables 51 % \end{itemize} 52 % } 53 % { 54 % Morpheo s'inscrit dans le cadre du projet plate-forme de confiance totale. 55 % 56 % Instructions customisables : possibilité à l'utilisateur de rajouter de nouvelles instructions. Comme par exemple pour le chiffrement ou le déchiffrement ... 57 %% On doit supposer que la mémoire d'instruction et de donnée ce trouve en milieu accéssible par les pirates. Leur chiffrement en devient obligatoire. 58 %% 59 %% En hard dans le proc? cache? interconnect? I/O? 60 % } 61 % 62 % 63 %\subsection{Souplesse} 64 %\slidetitle{Besoin de Souplesse} 65 % { 66 % {\bf Adapation aux besoins des concepteurs} 67 % 68 % \begin{itemize} 69 % \item Processeur hautement paramètrables 70 % \item Ressources internes hétérogènes 71 % \item FPGA 72 % \end{itemize} 73 % } 74 % { 75 % Souplesse : s'adapter aux besoins des concepteur de SoC. 76 % 77 % \begin{description} 78 % \item[Paramètrables :] Fournir un grand jeu de paramètres afin de satisfaire les contraintes du concepteur 79 % \item[Hétérogènes :] En découle des paramètres 80 % \item[FPGA :] Cible de + en + utilisé, Si mappage possible sur les ressources limités d'un FPGA, alors possible également sur un ASIC 81 % \end{description} 82 % } 83 % 84 %\subsection{Performance} 85 %\slidetitle{Besoin de Performance (1) - ILP vs TLP} 86 % { 87 % {\bf Exploitation des différentes formes de parallélisme} 88 % 89 % Paquet d'instruction pouvant s'éxecuter en parallèle : 90 % \begin{itemize} 91 % \item {\it Intra flot} : exploitation de l'ILP\newline limitation intrasèque au soft (3-5 instructions) 92 % \item {\it Inter flot} : exploitation du TLP \newline limitation intrasèque au système cible 93 % \end{itemize} 94 % } 95 % { 96 % \begin{itemize} 97 % \item ILP : superscalaire, OutOfOrder, Spéculation 98 % \item TLP : CMP, SMT 99 % \end{itemize} 100 % } 101 % 102 %\slidetitle{Besoin de Performance (2) - CMP vs SMT} 103 % { 104 % \printgraph{GENERAL_type_of_multi_thread}{0.5} 105 % 106 %% (schéma) 107 %% 108 %% Comparaison théorique de 5 types d'architectures : 109 %% ||Mono Coeur ||Mono Contexte ||Largeur infini||Idéal || 110 %% ||Mono Coeur ||Mono Contexte ||Largeur 4 ||Monolithique|| 111 %% ||Multi Coeur d'ordre 4||Mono Contexte ||Largeur 1 ||CMP || 112 %% ||Mono Coeur ||Multi Contexte d'ordre 4||Largeur 4 ||SMT || 113 %% ||Multi coeur d'ordre 2||Multi Contexte d'ordre 2||Largeur 2 ||CMP de SMT || 114 % } 115 % { 116 % \begin{itemize} 117 % \item A et B : 17 instructions en 7 UT idéale 118 % \item (1) : 14 UT 119 % \item (2) : 17 UT, 34 slot vide, occupation 50\% 120 % \item (3) : 12 UT, 14 slot vide, occupation 70\% 121 % \item (4) : 11 UT, 10 slot vide, occupation 77\% 122 % \end{itemize} 123 % } 124 %\slidetitle{Besoin de Performance (3) - Entre le CMP et le SMT} 125 % { 126 % \begin{description} 127 % \item[CMP :] L'intégralité des ressources d'un coeur sont dédiées à un contexte. 128 % \item[SMT :] L'intégralité des ressources d'un coeur sont partagées entre tous les contextes. 129 % \item[Hybride :] Multitude de possibilité de partage des ressources internes.\\ 130 % Une ressource est soit dédiée à un contexte soit partagée entre un certain nombre de contextes. 131 % \end{description} 132 % } 133 % { 134 % Définir ce qu'est une ressource : ALU, predicteur de branchement, cache ... 135 % } 136 % 137 % 138 %\section{Solution} 139 %\ContentsCurrent 140 %\subsection{Initiatives actuelles} 141 %\slidetitle{Initiatives actuelles} 142 % { 143 % Tous les processeurs sont des RISC scalaires. 144 % 145 % \begin{description} 146 % \item[OpenRISC 1200 :] 32 bits, 5 étages. Jusqu'à 8 contextes. 147 % \item[Leon 2 :] 32 bits, 5 étages. 148 % \item[Leon 3 :] Leon 2 en 7 étages. 149 % \item[OpenSparcS1 :] 1 coeur 64bits, 6 étages et CMT 4. 150 % \item[OpenSparcT1 :] OpenSparcS1 avec 8 coeurs. Version OpenSource du Niagara. 151 % \item[Micro32 :] 32 bits, 6 étages. 152 % \item[OpenFire :] 32 bits, 3 étages. Dérivés du MicroBlaze 153 % \item[aeMB :] 32 bits, 3 étages. Dérivés du MicroBlaze 154 % \end{description} 155 % } 156 % { 157 % \begin{description} 158 % \item[OpenRISC 1200 :] Présence icache, dcache, immu, dmmu. Taille des caches, des opérandes, du banc de registres. Matériel spécifique : div, rotate, mul, mac. 159 % \item[Leon 2 et 3 :] Présence de div, mul, mac, floating point. Taille du banc de registres . Nombre de load delai. Configuration avancé du cache et de la MMU (fetch, decod, execute, memory, write) (fetch, decod, register access, execute, memory, exception, write) 160 % \item[OpenSparc :] Présence de la Stream Processing Unit (cryptographie), 1 seul thread par coeur. 161 % \item[Micro32 :] Présence icache, dcache, debug. Taille des caches. Matériel spécifique : div, rotate, mul pipeline, extension de signes. 162 % \item[OpenFire :] 3 étages (Fetch, Decod, Execute). Faiblement configurable (largeur des données, espace d'addressage, presence de mul et de cmp). Aucun support de caches 163 % \item[aeMB :] 3 étages (Fetch, Decod, Execute). Support de caches. Pas configurable (Juste la largeur de l'espace d'addressage) 164 % \end{description} 165 % } 166 % 167 %\slide { 168 % \printgraph{GENERAL_Art_of_State-Comparaison}{0.8} 169 % } 170 % { 171 % } 172 %\subsection{Solution proposée} 173 %\slidetitle{Solution proposée} 174 % { 175 % \begin{itemize} 176 % \item Partir d'une micro-architecture HighPerf. 177 % \item Ajout de la gestion du multi-thread. 178 % \item Rendre paramétrable les ressources internes. 179 % \item Mappage des instances de ce générateur de processeur sur les ressources limitées d'un FPGA. 180 % \end{itemize} 181 % } 182 % { 183 % Pentium 4, MipsR10000, Power5 184 % } 185 % 186 %\subsection{Métrique} 187 %\slidetitle{Métrique} 188 % { 189 % \begin{itemize} 190 % \item Obtenir le meilleur compromis Performance / Complexité. 191 % \begin{itemize} 192 % \item Performance : nombre de cycles nécessaire pour éxecuter les Benchmarks. 193 % \item Compléxité : surface occupée du FPGA. 194 % \end{itemize} 195 % \item Obtenir le meilleur partage des ressources entre les contextes matériels. (Gain Performance / Coût surface). 196 % \begin{itemize} 197 % \item Gain en performance : rapport entre la performance MT sur la performance ST. 198 % \item Coût en surface : rapport entre la surface MT sur la surface ST. 199 % \end{itemize} 200 % \end{itemize} 201 % } 202 % { 203 % benchmark : SPECINT2k, Dhrystone 204 % 205 % FPGA : virtex5LX 330 206 % } 207 % 208 %\section{Morpheo} 209 %\ContentsCurrent 210 % 211 %\subsection{Micro Architecture} 212 %\slidetitle{Micro Architecture : Overview} 213 % { 214 % \printgraph{MORPHEO_micro_architecture-overview}{0.48} 215 % } 216 % { 217 % 3 grandes parties : 218 % \begin{description} 219 % \item[Front end :] Amène des paquets d'instructions en séquence, et les décodes. Calcules les addresses suivantes (spéculation) et maintiens l'état des threads (idle, wait, run ...) 220 % \item[Out Of Order Engine :] Renome les registres (annulations des dépendances RAW, WAW et WAR). Re Order Buffer : mettre à jour l'état du contexte dans l'ordre d'arrivé des threads. 221 % \item[Execution Loop :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres. 222 % \end{description} 223 % } 224 % 225 %\slidetitle{Micro Architecture : Front end} 226 % { 227 % \printgraph{MORPHEO_micro_architecture-front_end}{0.7} 228 % } 229 % { 230 % } 231 % 232 %\slidetitle{Micro Architecture : Out Of Order Engine} 233 % { 234 % \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7} 235 % } 236 % { 237 % } 238 % 239 %\slidetitle{Micro Architecture : Execution Loop} 240 % { 241 % \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7} 242 % } 243 % { 244 % } 245 % 246 %\subsection{Méthodologie} 247 %\slidetitle{Service proposé} 248 % { 249 % \printgraph{MORPHEO_service}{0.75} 250 % } 251 % { 252 % libMorpheo : 253 % \begin{itemize} 254 % \item Simulation systemC 255 % \begin{itemize} 256 % \item TestBench Vhdl 257 % \item Statistiques lors de la simulation 258 % \end{itemize} 259 % \item Vhdl : synthétisable sur FPGA 260 % \item Positions: Point d'entrée d'un outil de visualisation architectural (Stage M1) 261 % \end{itemize} 262 % } 263 % 264 %\slidetitle{Méthodologie - Boucle d'Iteration} 265 % { 266 % \printgraph{MORPHEO_methodologie}{0.3} 267 % } 268 % { 269 % \begin{enumerate} 270 % \item SystemC 271 % \begin{enumerate} 272 % \item Ecriture du modèle systemC 273 % \item Ecriture d'un TestBench pour le systemc - goto 1.1 274 % \end{enumerate} 275 % \item VHDL 276 % \begin{enumerate} 277 % \item Ecriture du vhdl 278 % \item Validation de la stricte compatibilité entre le systemC et le Vhdl - goto 2.1 ou 1.1 279 % \end{enumerate} 280 % \item FPGA 281 % \begin{enumerate} 282 % \item Synthèse sur FPGA - goto 2.1, 1.1 283 % \item Mappage sur FPGA 284 % \end{enumerate} 285 % \end{enumerate} 286 % } 287 % 288 %\subsection{Perspective} 289 %\slidetitle{Comment remplir nos journées?} 290 % { 291 % Il "reste" à faire ... 292 % } 293 % { 294 % } 277 295 278 296 \slide{}{} -
trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Graph/simulation_all.dat
r16 r23 1 1.46 # x04_w08-01_e08-01 2 2.37 # x04_w08-04_e08-01 3 2.37 # x04_w08-04_e08-07 4 2.94 # x04_w08-07_e08-01 5 3.27 # x04_w08-07_e08-15 6 2.51 # x04_w08-08_e08-01 7 2.4 # x04_w08-08_e08-07 8 3.38 # x04_w08-11_e08-01 9 3.64 # x04_w08-11_e08-07a 10 3.41 # x04_w08-11_e08-07b 11 3.63 # x04_w08-11_e08-15 12 3.94 # x04_w08-15_e08-01 13 3.88 # x04_w08-15_e08-07 14 3.92 # x04_w08-15_e08-15 1 1.46 # x04_w08-01_e08-01 X4-1_1_4-8 2 2.37 # x04_w08-04_e08-01 X4-1_2_2-8 3 2.37 # x04_w08-04_e08-07 X4-1_2_2-4 4 2.94 # x04_w08-07_e08-01 X4-1_4_1-8 5 3.27 # x04_w08-07_e08-15 X4-1_4_1-2 6 2.51 # x04_w08-08_e08-01 X4-2_1_2-8 7 2.4 # x04_w08-08_e08-07 X4-2_1_2-4 8 3.38 # x04_w08-11_e08-01 X4-2_2_1-8 9 3.41 # x04_w08-11_e08-07b X4-2_2_1-4 10 3.63 # x04_w08-11_e08-15 X4-2_2_1-2 11 3.94 # x04_w08-15_e08-01 X4-4_1_1-8 12 3.88 # x04_w08-15_e08-07 X4-4_1_1-4 13 3.92 # x04_w08-15_e08-15 X4-4_1_1-2 -
trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Graph/simulation_all.p
r16 r23 16 16 set yrange [0:4] 17 17 18 set xtics rotate by -25 ('x04\_w08-01\_e08-01 ' 0 , \ 19 'x04\_w08-04\_e08-01 ' 1 , \ 20 'x04\_w08-04\_e08-07 ' 2 , \ 21 'x04\_w08-07\_e08-01 ' 3 , \ 22 'x04\_w08-07\_e08-15 ' 4 , \ 23 'x04\_w08-08\_e08-01 ' 5 , \ 24 'x04\_w08-08\_e08-07 ' 6 , \ 25 'x04\_w08-11\_e08-01 ' 7 , \ 26 'x04\_w08-11\_e08-07a' 8 , \ 27 'x04\_w08-11\_e08-07b' 9 , \ 28 'x04\_w08-11\_e08-15 ' 10, \ 29 'x04\_w08-15\_e08-01 ' 11, \ 30 'x04\_w08-15\_e08-07 ' 12, \ 31 'x04\_w08-15\_e08-15 ' 13 \ 32 ) 18 set xtics rotate by -25 ('X4-1_1_4-8' 0 , \ 19 'X4-1_2_2-8' 1 , \ 20 'X4-1_2_2-4' 2 , \ 21 'X4-1_4_1-8' 3 , \ 22 'X4-1_4_1-2' 4 , \ 23 'X4-2_1_2-8' 5 , \ 24 'X4-2_1_2-4' 6 , \ 25 'X4-2_2_1-8' 7 , \ 26 'X4-2_2_1-4' 8 , \ 27 'X4-2_2_1-2' 9 , \ 28 'X4-4_1_1-8' 10, \ 29 'X4-4_1_1-4' 11, \ 30 'X4-4_1_1-2' 12 ) 33 31 34 32 plot "simulation_all.dat" notitle -
trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Makefile
r17 r23 9 9 #-------------------------------------------------------------------------------- 10 10 11 TYPE_DOC = ("doc" "ppt" )11 TYPE_DOC = ("doc" "ppt" "poster") 12 12 13 13 DEFAULT_LANG = fr … … 32 32 DIR_SCHEMA_JPG = Schema_jpg 33 33 DIR_TEX = Source 34 35 #-------------------------------------------------------------------------------- 36 # Directory 37 #-------------------------------------------------------------------------------- 38 ENV_LATEX = $(EXPORT) TEXINPUTS=$(DIR_INCLUDE):$$TEXINPUTS 39 LATEX_WITH_ENV = $(ENV_LATEX); $(LATEX) 34 40 35 41 #-------------------------------------------------------------------------------- … … 93 99 @$(ECHO) "Génération du fichier $*.dvi" 94 100 @#touch $(patsubst %.tex,%.ind,$<) 95 @$(LATEX ) $<96 @$(LATEX ) $< > /dev/null101 @$(LATEX_WITH_ENV) $< 102 @$(LATEX_WITH_ENV) $< > /dev/null 97 103 @#$(MAKEINDEX) $(patsubst %.tex,%.idx,$<) 98 104 @citation=`$(GREP) "citation" $*.aux`; \ … … 100 106 $(BIBTEX) $* ; \ 101 107 fi 102 @$(LATEX ) $< > /dev/null103 @$(LATEX ) $< > /dev/null108 @$(LATEX_WITH_ENV) $< > /dev/null 109 @$(LATEX_WITH_ENV) $< > /dev/null 104 110 105 111 #-------------------------------------------------------------------------------- -
trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/presentation-internal_seminary_overview.sty
r17 r23 2 2 %\def\review{\number\day/\number\month/\number\year\xspace} 3 3 4 \title{Séminaire interne :\newline Processeur libre, haute performance et hautementparamètrable}4 \title{Séminaire interne :\newline Processeur libre, haute performance et paramètrable} 5 5 6 \institute{ EquipeSOC - Laboratoire d'information de Paris VI - France}6 \institute{Département SOC - Laboratoire d'information de Paris VI - France} 7 7 8 8 \author{Mathieu Rosière} -
trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_micro_architecture-execute_loop.fig
r17 r23 1 #FIG 3.2 Produced by xfig version 3.2.5-alpha51 #FIG 3.2 2 2 Landscape 3 3 Center … … 13 13 4 1 0 50 -1 -1 10 0.0000 4 105 510 7920 6030 memory\001 14 14 4 1 0 50 -1 -1 10 0.0000 4 105 255 7920 5895 read\001 15 4 1 0 50 -1 -1 10 0.0000 4 1 20345 7920 6165 queue\00115 4 1 0 50 -1 -1 10 0.0000 4 105 345 7920 6165 queue\001 16 16 -6 17 17 6 10260 6390 10980 6840 … … 29 29 8280 6840 7560 6840 7560 6390 8280 6390 8280 6840 30 30 4 1 0 50 -1 -1 10 0.0000 4 105 255 7920 6570 read\001 31 4 1 0 50 -1 -1 10 0.0000 4 1 20345 7920 6750 queue\00131 4 1 0 50 -1 -1 10 0.0000 4 105 345 7920 6750 queue\001 32 32 -6 33 33 6 8640 6390 9360 6840 … … 36 36 4 1 0 50 -1 -1 10 0.0000 4 105 690 9000 6570 reservation\001 37 37 4 1 0 50 -1 -1 10 0.0000 4 105 435 9000 6750 station\001 38 -639 6 7380 7200 13860 792040 2 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 541 7380 7200 13860 7200 13860 7920 7380 7920 7380 720042 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 543 13680 7740 13680 7380 7560 7380 7560 7740 13680 774044 4 1 0 50 -1 -1 10 0.0000 4 135 480 10620 7605 register\00145 38 -6 46 39 2 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5 … … 126 119 3 0 1.00 60.00 120.00 127 120 10620 5760 10620 5130 121 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5 122 13680 7740 13680 7380 7560 7380 7560 7740 13680 7740 123 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5 124 13680 8280 13680 7920 7560 7920 7560 8280 13680 8280 125 2 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5 126 7380 7200 13860 7200 13860 8460 7380 8460 7380 7200 127 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 128 3 0 1.00 60.00 120.00 129 12780 7335 12780 7920 130 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 131 3 0 1.00 60.00 120.00 132 8505 7380 8505 7920 133 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 134 3 0 1.00 60.00 120.00 135 8415 7380 8415 7920 136 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2 137 3 0 1.00 60.00 120.00 138 3 0 1.00 60.00 120.00 139 7560 8100 7200 8100 128 140 4 1 0 50 -1 -1 10 1.5708 4 105 360 9945 6615 select\001 129 141 4 1 0 50 -1 -1 10 1.5708 4 105 360 11385 6300 select\001 130 4 1 0 50 -1 -1 10 0.0000 4 1 20345 12240 6435 queue\001142 4 1 0 50 -1 -1 10 0.0000 4 105 345 12240 6435 queue\001 131 143 4 1 0 50 -1 -1 10 0.0000 4 105 345 12240 6255 write\001 132 144 4 1 0 50 -1 -1 10 0.0000 4 90 465 13320 6255 execute\001 133 4 1 0 50 -1 -1 10 0.0000 4 1 20345 13320 6435 queue\001134 4 0 0 50 -1 -1 10 0.0000 4 1 50405 8820 5355 bypass\001145 4 1 0 50 -1 -1 10 0.0000 4 105 345 13320 6435 queue\001 146 4 0 0 50 -1 -1 10 0.0000 4 135 405 8820 5355 bypass\001 135 147 4 1 0 50 -1 -1 10 0.0000 4 105 420 10620 5085 Dcache\001 136 148 4 2 0 50 -1 -1 10 0.0000 4 90 465 13995 6660 execute\001 137 149 4 0 0 50 -1 -1 10 0.0000 4 75 435 7245 6345 rename\001 150 4 1 0 50 -1 -1 10 0.0000 4 135 480 10620 7605 register\001 151 4 1 0 50 -1 -1 10 0.0000 4 105 630 10620 8145 status list\001 152 4 0 0 50 -1 -1 10 0.0000 4 150 855 7290 8415 register_state\001 -
trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_micro_architecture-out_of_order_engine.fig
r17 r23 1 #FIG 3.2 Produced by xfig version 3.2.5-alpha51 #FIG 3.2 2 2 Landscape 3 3 Center … … 8 8 -2 9 9 1200 2 10 6 4590 5400 5310 585011 2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 512 5310 5850 4590 5850 4590 5400 5310 5400 5310 585013 4 1 0 50 -1 -1 10 0.0000 4 105 315 4950 5670 RAT\00114 -615 10 6 7020 3600 7740 4050 16 11 6 7020 3600 7740 4050 … … 26 21 4 1 0 50 -1 -1 10 0.0000 4 105 315 7380 3150 State\001 27 22 -6 28 6 6210 5985 6930 6435 23 6 5130 5400 5850 5850 24 2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5 25 5850 5850 5130 5850 5130 5400 5850 5400 5850 5850 26 4 1 0 50 -1 -1 10 0.0000 4 105 315 5490 5670 RAT\001 27 -6 28 6 6750 5985 7470 6435 29 29 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5 30 6930 6435 6210 6435 6210 5985 6930 5985 6930 643531 4 1 0 50 -1 -1 10 0.0000 4 105 375 6570 6345 RAW\00132 4 1 0 50 -1 -1 10 0.0000 4 105 375 6570 6165 Check\00130 7470 6435 6750 6435 6750 5985 7470 5985 7470 6435 31 4 1 0 50 -1 -1 10 0.0000 4 105 375 7110 6345 RAW\001 32 4 1 0 50 -1 -1 10 0.0000 4 105 375 7110 6165 Check\001 33 33 -6 34 34 1 3 0 1 0 7 50 -1 0 3.000 1 0.0000 7652 5222 30 30 7652 5222 7682 5218 35 2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2 36 3 0 1.00 60.00 120.00 37 4230 6210 6210 6210 38 2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5 39 5310 5040 4590 5040 4590 4590 5310 4590 5310 5040 40 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5 41 6390 5850 5670 5850 5670 5400 6390 5400 6390 5850 42 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5 43 7470 5850 6750 5850 6750 5400 7470 5400 7470 5850 35 1 3 0 1 0 7 50 -1 0 3.000 1 0.0000 7665 5764 30 30 7665 5764 7695 5760 44 36 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 45 37 3 0 1.00 60.00 120.00 46 4950 5850 4950 6210 47 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 48 3 0 1.00 60.00 120.00 49 6930 6210 7830 6210 50 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 51 3 0 1.00 60.00 120.00 52 7110 6210 7110 5850 38 7470 6210 7830 6210 53 39 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5 54 40 8550 6435 7830 6435 7830 5985 8550 5985 8550 6435 … … 58 44 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 59 45 3 0 1.00 60.00 120.00 60 6750 5625 6390 562561 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 262 3 0 1.00 60.00 120.0063 7110 4050 7110 540064 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 265 3 0 1.00 60.00 120.0066 7110 4815 5310 481567 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 268 3 0 1.00 60.00 120.0069 46 8910 3825 7740 3825 70 47 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 71 48 3 0 1.00 60.00 120.00 72 7110 4320 4230 432073 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 274 3 0 1.00 60.00 120.0075 49 7650 6210 7650 4050 76 2 2 2 1 0 7 50 -1 -1 3.000 0 0 7 0 0 577 8730 6570 4410 6570 4410 4410 8730 4410 8730 657078 50 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2 79 51 3 0 1.00 60.00 120.00 … … 84 56 2 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 1 0 3 85 57 3 0 1.00 60.00 120.00 86 7650 5220 5130 5220 5130 5400 58 7650 5220 5670 5220 5670 5400 59 2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2 60 3 0 1.00 60.00 120.00 61 4770 6210 6750 6210 62 2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5 63 5850 5040 5130 5040 5130 4590 5850 4590 5850 5040 64 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5 65 6930 5850 6210 5850 6210 5400 6930 5400 6930 5850 87 66 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 88 67 3 0 1.00 60.00 120.00 89 4770 5040 4770 540068 5490 5850 5490 6210 90 69 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 91 70 3 0 1.00 60.00 120.00 92 6030 5850 6030 6210 93 4 1 0 50 -1 -1 10 0.0000 4 105 315 4950 4770 RAT\001 94 4 1 0 50 -1 -1 10 0.0000 4 150 450 4950 4950 Update\001 95 4 1 0 50 -1 -1 10 0.0000 4 105 270 6030 5580 Free\001 96 4 1 0 50 -1 -1 10 0.0000 4 105 255 6030 5805 List\001 97 4 1 0 50 -1 -1 10 0.0000 4 105 390 7110 5580 Status\001 98 4 1 0 50 -1 -1 10 0.0000 4 105 255 7110 5775 List\001 71 7110 4320 4770 4320 72 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 73 3 0 1.00 60.00 120.00 74 5310 5040 5310 5400 75 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 76 3 0 1.00 60.00 120.00 77 6570 5850 6570 6210 78 2 2 2 1 0 7 50 -1 -1 3.000 0 0 7 0 0 5 79 8730 6570 4950 6570 4950 4410 8730 4410 8730 6570 80 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3 81 3 0 1.00 60.00 120.00 82 7110 4050 7110 4815 5850 4815 83 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5 84 8550 5850 7830 5850 7830 5400 8550 5400 8550 5850 85 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 86 3 0 1.00 60.00 120.00 87 7650 5760 7830 5760 88 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3 89 3 0 1.00 60.00 120.00 90 7110 4815 7110 5490 7830 5490 91 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 92 3 0 1.00 60.00 120.00 93 7830 5625 6930 5625 94 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2 95 3 0 1.00 60.00 120.00 96 3 0 1.00 60.00 120.00 97 8550 5625 8910 5625 99 98 4 1 0 50 -1 -1 10 0.0000 4 105 480 8190 6165 Rename\001 100 4 1 0 50 -1 -1 10 0.0000 4 1 20345 8190 6345 queue\00199 4 1 0 50 -1 -1 10 0.0000 4 105 345 8190 6345 queue\001 101 100 4 2 0 50 -1 -1 10 0.0000 4 75 435 8865 5940 rename\001 102 4 0 0 50 -1 -1 10 0.0000 4 150 405 4275 4230 update\001103 4 0 0 50 -1 -1 10 0.0000 4 105 345 4275 6165 decod\001104 101 4 0 0 50 -1 -1 10 0.0000 4 105 360 7695 4770 insert\001 102 4 2 0 50 -1 -1 10 0.0000 4 90 465 8865 3780 execute\001 103 4 1 0 50 -1 -1 10 0.0000 4 105 315 5490 4770 RAT\001 104 4 1 0 50 -1 -1 10 0.0000 4 135 450 5490 4950 Update\001 105 4 1 0 50 -1 -1 10 0.0000 4 105 270 6570 5580 Free\001 106 4 1 0 50 -1 -1 10 0.0000 4 105 255 6570 5805 List\001 107 4 0 0 50 -1 -1 10 0.0000 4 135 405 4815 4230 update\001 108 4 0 0 50 -1 -1 10 0.0000 4 105 345 4815 6165 decod\001 105 109 4 2 0 50 -1 -1 10 0.0000 4 105 345 7065 4770 retire\001 106 4 2 0 50 -1 -1 10 0.0000 4 90 465 8865 3780 execute\001 110 4 1 0 50 -1 -1 10 0.0000 4 105 390 8190 5535 Status\001 111 4 1 0 50 -1 -1 10 0.0000 4 105 255 8190 5670 List\001 112 4 1 0 50 -1 -1 10 0.0000 4 135 540 8190 5805 Manager\001 113 4 2 0 50 -1 -1 10 0.0000 4 150 855 8865 5355 register_state\001 -
trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_service.fig
r17 r23 1 #FIG 3.2 Produced by xfig version 3.2.5-alpha51 #FIG 3.2 2 2 Landscape 3 3 Center … … 8 8 -2 9 9 1200 2 10 5 1 0 1 0 29 50 -1 20 0.000 0 1 0 0 4575.000 2100.000 4350 2400 4575 2475 4800 2400 11 5 1 0 1 0 2 48 -1 40 0.000 0 0 0 0 5025.000 2700.000 4800 2400 5025 2325 5250 2400 10 12 6 3675 4050 4725 4650 11 13 5 1 0 1 0 2 50 -1 20 0.000 0 1 0 0 3975.000 4200.000 3750 4500 3975 4575 4200 4500 … … 31 33 2 1 0 1 0 31 50 -1 20 0.000 0 0 7 0 0 4 32 34 6150 4500 6150 4050 7050 4050 7050 4500 33 -634 6 4350 1950 5250 255035 5 1 0 1 0 29 50 -1 20 0.000 0 1 0 0 4575.000 2100.000 4350 2400 4575 2475 4800 240036 5 1 0 1 0 2 48 -1 40 0.000 0 0 0 0 5025.000 2700.000 4800 2400 5025 2325 5250 240037 2 1 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 438 4350 2400 4350 1950 5250 1950 5250 240039 4 1 0 50 -1 -1 10 0.0000 4 105 255 4800 2325 .gen\00140 4 1 0 50 -1 -1 10 0.0000 4 120 675 4800 2100 G\351n\351rateur\00141 35 -6 42 36 6 5550 1950 6450 2550 … … 87 81 2 4 0 1 0 4 50 -1 20 0.000 0 0 7 0 0 5 88 82 5850 4050 4950 4050 4950 4500 5850 4500 5850 4050 89 4 1 0 50 -1 -1 10 0.0000 4 150 570 5400 3225 Morpheo\001 83 2 1 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 4 84 4350 2400 4350 1950 5250 1950 5250 2400 85 4 1 0 50 -1 -1 10 0.0000 4 135 570 5400 3225 Morpheo\001 90 86 4 1 0 50 -1 -1 10 0.0000 4 105 435 4200 4275 VHDL\001 91 87 4 1 0 50 -1 -1 10 0.0000 4 105 435 4800 5475 VHDL\001 … … 93 89 4 1 0 50 -1 -1 10 0.0000 4 105 585 6000 5325 Statistics\001 94 90 4 1 0 50 -1 -1 10 0.0000 4 105 585 6600 4200 Positions\001 95 4 1 0 50 -1 -1 10 0.0000 4 1 20255 6600 4425 .pos\00191 4 1 0 50 -1 -1 10 0.0000 4 105 255 6600 4425 .pos\001 96 92 4 1 0 50 -1 -1 10 0.0000 4 105 465 7500 3225 Viewer\001 97 93 4 1 0 50 -1 -1 10 0.0000 4 135 555 5400 4275 SystemC\001 94 4 1 0 50 -1 -1 10 0.0000 4 105 255 4800 2325 .gen\001 95 4 1 0 50 -1 -1 10 0.0000 4 105 615 4800 2100 Generator\001
Note: See TracChangeset
for help on using the changeset viewer.