Changeset 57 for trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation-internal_seminary_overview/fr/root.tex
- Timestamp:
- Sep 28, 2007, 2:58:08 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation-internal_seminary_overview/fr/root.tex
r52 r57 1 1 \section{Motivations} 2 3 %\ContentsCurrent 4 5 \slidetitle{Problématique} 6 {7 On désire une plateforme de confiance totale :8 \begin{itemize}9 \item La plateforme-matérielle est composée de processeur(s) généraliste(s).10 \item La plateforme-logicielle est composée de plusieurs applications qui peuvent être cryptographique.11 \end{itemize}12 13 Notre travail consiste à faire le processeur pour un tel système.14 }15 {16 } 17 18 \slidetitle{A ncienne tendance}2 \ContentsCurrent 3 4 \slidetitle{Cadre de la thèse} 5 { 6 \begin{itemize} 7 \item {\it Cadre :}\newline 8 Collaboration avec Bull sur le projet PFC\newline 9 (Plate-forme de confiance totale) 10 \item {\it Notre contribution :}\newline 11 Réalisation d'un générateur de processeur ouvert. 12 \end{itemize} 13 } 14 { 15 Expliquer PFC 16 } 17 18 \slidetitle{Approche actuelle fondée sur le secret} 19 19 { 20 20 \begin{itemize} 21 21 \item Composants fermés. 22 \item Label de sécurité.22 \item Consortium de certification 23 23 \begin{itemize} 24 24 \item Trusted Computing Platform Alliance 25 \item Next-Generation Secure Computing Base 26 \end{itemize} 27 \item Plateforme multi-chip. 28 \end{itemize} 29 } 30 { 25 % \begin{itemize} 26 % \item Next-Generation Secure Computing Base 27 % \item Intel Trusted Execution Technology 28 % \end{itemize} 29 \end{itemize} 30 \end{itemize} 31 32 \printgraph{Logo-trusted_computing_group}{0.8} 33 34 Limite de l'approche : 35 36 \begin{itemize} 37 \item Pas de confiance : 38 \begin{itemize} 39 \item Chevaux de troie 40 \end{itemize} 41 \item Pas de pérennité : 42 \begin{itemize} 43 \item Arrêt de production 44 \item Changement de protocole 45 \end{itemize} 46 \end{itemize} 47 } 48 { 49 Consortium : intel, amd, ibm, microsoft ... 50 51 Le principe du TCG : 52 53 \begin{itemize} 54 \item Assigner une signature à chaque objet informatique (logiciel, par extension matériel). 55 \item Déléguer à un {\it tiers de confiance} la tâche de vérifier si l'objet manipulé est autorisé à être utilisé sur le système local. 56 \end{itemize} 57 58 Enjeux commerciaux != Ouvert et Pérennité. 59 } 60 61 \slidetitle{Nouvelle approche} 62 { 63 \begin{itemize} 64 \item Composants ouverts 65 \begin{itemize} 66 \item Pas de fonctionnalités cachées. 67 \item Pas de secret à conserver. 68 \end{itemize} 69 \item Intégration : 70 \begin{itemize} 71 \item Field-Programmable Gate Array (FPGA). 72 \item System On Chip (SOC). 73 \end{itemize} 74 \end{itemize} 75 76 \begin{center} 77 \begin{minipage}{.4\textwidth} 78 \printgraph{Logo-opencores}{0.8} 79 \end{minipage} 80 \begin{minipage}{.4\textwidth} 81 \printgraph{Logo-soclib}{0.8} 82 \end{minipage} 83 \end{center} 84 } 85 { 86 Composant matériel ouvert = code source disponible = FPGA = prototypage = SOC. 87 } 88 89 \section{Cahier des charges} 90 \ContentsCurrent 91 92 \slidetitle{Besoins : Cahier des charges} 93 { 94 Il faut une architecture : 31 95 \begin{description} 32 \item[Trusted Computing Platform Alliance :] Le Trusted Computing Group (TCG, nommé jusqu'en 2003 TCPA pour Trusted Computing Platform Alliance) est une consortium d'entreprises d'informatique (Compaq, HP, IBM, Intel, Microsoft, AMD, etc.) visant à sécuriser les équipements et communications informatiques. 33 \item[Next-generation secure computing base :] Le Next-Generation Secure Computing Base (NGSCB, littéralement : Base d'information sécurisée de nouvelle génération) ou ordinateur sécurisé de la prochaine génération fait partie de la nouvelle architecture de Microsoft pour l'informatique de confiance. Ce projet était connu sous le nom de Palladium. 96 \item [Ouverte :] Évite les fonctionnalités cachées. 97 \item [Pérenne :] Évite les problèmes d'approvisionnements. 98 \item [Paramétrable :] S'adapte aux critères de l'application. 99 \item [Performante :] Applications nécessitant de la puissance de calculs. 34 100 \end{description} 35 101 } 36 37 \slidetitle{Nouvelle tendance} 38 { 39 \begin{itemize} 40 \item Utilisation de composants ouvert. \\Evite les fonctionnalités cachés 41 \item Intégration de System On Chip (SOC).\\Réduit la vunérabilité des communications entre deux chips. 42 \end{itemize} 43 } 44 { 45 } 46 47 \section{Besoins} 48 \slidetitle{Besoins} 49 { 102 { 103 Concevoir un cpu pour PFC : 104 105 ouverte, pérenne, paramétrable, performante. 106 107 Applications cibles : cryptographique. 108 } 109 110 \subsection{Architecture Ouverte} 111 \slidetitle{Architecture Ouverte} 112 { 113 \begin{itemize} 114 \item Instruction Set Architecture gratuite. 115 %\item Présence d'une communauté autour de l'architecture logicielle. 116 \item Chaîne de compilation disponible et ouverte. 117 \item Modèle disponible : 118 \begin{itemize} 119 \item Modèle systemC-CABA 120 \item Modèle VHDL-RTL 121 \end{itemize} 122 \end{itemize} 123 } 124 { 125 Chaîne de compilation $\Rightarrow$ présence d'une communauté, espère une pérennité des logicielles. 126 127 VHDL = FPGA 128 129 SystemC = dévellopement 130 } 131 132 \subsection{Architecture Pérenne} 133 \slidetitle{Architecture Pérenne} 134 { 135 \begin{itemize} 136 \item Instruction Set Architecture gratuite. 137 %\item Présence d'une communauté autour de l'architecture logicielle. 138 \item Chaîne de compilation disponible et ouverte. 139 \item Technologie cible flexible : FPGA. 140 \end{itemize} 141 } 142 { 143 ISA et Modèle disponible = implémentation possible. 144 } 145 146 \subsection{Architecture Paramétrable} 147 \slidetitle{Architecture Paramétrable} 148 { 149 S'adapter aux critères de l'application : 150 \begin{itemize} 151 \item Performance 152 \item Surface 153 \item Consommation 154 \item Temps réel 155 \item \dots 156 \end{itemize} 157 158 Pas un processeur mais plusieurs processeurs.\\ 159 \begin{itemize} 160 \item[$\Rightarrow$] Générateur d'architecture. 161 \item[$\Rightarrow$] Technologie cible : FPGA. 162 \end{itemize} 163 } 164 { 165 Aucune connaissance à priori des besoins des applications. Peuvent avoir des critères variés ... 166 167 Pas 1CPU mais plusieurs CPU = ASIC trop onéreux 168 } 169 170 \subsection{Architecture Performante} 171 \slidetitle{Architecture Performante} 172 { 173 \begin{center} 174 {\it Exécution de plusieurs instructions simultanément} 175 \end{center} 176 177 Exploitation de toutes les formes de parallélisme. 178 50 179 \begin{description} 51 \item [Open :] Absence de fonctionnalités cachées. (Cheval de troie)52 \item [Configurable :] Adaptable aux besoins des applications.53 \item [Performance :] Application cryptographique.180 \item[ILP :] Instruction Level Parallelism 181 \item[TLP :] Thread Level Parallelism 182 \item[DLP :] Data Level Parallelism 54 183 \end{description} 55 184 } … … 57 186 } 58 187 59 \slidetitle{Besoins : Open} 60 { 61 \begin{itemize} 62 \item Instruction Set Architecture libre. (Implémentation possible) 63 \item Tools Chains présente et libre. 64 \item Implémentation sur FPGA (Pérennité). 65 \item Présence d'une communauté autour de l'architecture logicielle. 66 \end{itemize} 67 } 68 { 69 } 70 71 \slidetitle{Besoins : Configurable} 72 { 73 \begin{itemize} 74 \item Pas de connaissance préalable du besoin des applications. 75 \item Toutes les applications non pas les mêmes besoins de Performance / Surface. 76 \end{itemize} 77 } 78 { 79 } 80 81 \slidetitle{Besoins : Performance} 82 { 83 Exploitation de toutes les formes de parrallélisme. 188 %\subsubsection{ILP} 189 \slidetitle{Instruction Level Paralelism} 190 { 191 \begin{center} 192 {\it Exécution simultanée de plusieurs instructions provenant d'un même flux.} 193 \end{center} 194 \printgraph{GENERAL_ILP}{1 } 195 } 196 { 197 } 198 %\slide 199 % { 200 % \begin{description} 201 % \item[Avantages :]~ 202 % \begin{itemize} 203 % \item Exploitation implicite du point de vue logicielle. 204 % \end{itemize} 205 % \item[Inconvénients :]~ 206 % \begin{itemize} 207 % \item Coût quadratique du contrôle. 208 % \end{itemize} 209 % \end{description} 210 % } 211 % { 212 % } 213 214 215 %\subsubsection{TLP} 216 \slidetitle{Thread Level Paralelism} 217 { 218 \begin{center} 219 {\it Exécution simultanée de plusieurs instructions provenant de différents flux.} 220 \end{center} 221 222 \printgraph{GENERAL_TLP}{1 } 223 } 224 { 225 } 226 227 %\slide 228 % { 229 % \begin{description} 230 % \item[Avantages :]~ 231 % \begin{itemize} 232 % \item Implantation très simple : duplication des coeurs 233 % \item Ressources dédiés aux threads exécutés sur le coeur 234 % \end{itemize} 235 % \item[Inconvénients :]~ 236 % \begin{itemize} 237 % \item Il doit avoir plus de thread que de coeurs afin d'éviter l'oisiveté des coeurs 238 % \end{itemize} 239 % \end{description} 240 % } 241 % { 242 % } 243 % 244 %\slidetitle{TLP - Simulatenous Multi Threading (SMT)} 245 % { 246 % \printgraph{GENERAL_TLP-SMT}{1 } 247 % } 248 % { 249 % } 250 % 251 %\slide 252 % { 253 % \begin{description} 254 % \item[Avantages :]~ 255 % \begin{itemize} 256 % \item Implantation très simple et peu coûteuse en surface. 257 % \item Meilleur exploitation des ressources 258 % \end{itemize} 259 % \item[Inconvénients :]~ 260 % \begin{itemize} 261 % \item Dimensionner le nombre de threads proportionnellement à l'ILP exploitable. 262 % \end{itemize} 263 % \end{description} 264 % } 265 % { 266 % } 267 268 %\subsubsection{DLP} 269 \slidetitle{Data Level Paralelism} 270 { 271 \begin{center} 272 {\it Exécution d'instructions avec plusieurs données. (SIMD)} 273 \end{center} 274 275 \printgraph{GENERAL_DLP}{1 } 276 } 277 { 278 Matrice 3x3 + 10 279 } 280 %\slide 281 % { 282 % \begin{description} 283 % \item[Avantages :]~ 284 % \begin{itemize} 285 % \item Une instruction SIMD est équivalente à beaucoup d'instructions SISD. 286 % \end{itemize} 287 % \item[Inconvénients :]~ 288 % \begin{itemize} 289 % \item Pas adapter pour les applications qui n'exploite pas le DLP. 290 % \item Exploitation explicite par le programmeur. 291 % \end{itemize} 292 % \end{description} 293 % } 294 % { 295 % } 296 % 297 298 \slidetitle{Implémentation matérielle} 299 { 300 \printgraph{GENERAL_hardware}{.98} 301 } 302 { 303 Streaming SIMD Extensions, généralement abrégé SSE, est un jeu de 70 instructions supplémentaires pour microprocesseurs x86, apparu sur le Pentium III. Le fonctionnement est de type SIMD. 304 305 306 AltiVec est un ensemble d'instructions SIMD d'opérations en virgule flottante conçu par, et propriété de, Apple, IBM et Motorola (l'AIM alliance), et mis en application sur des versions du PowerPC telle le G4 de Motorola et le G5 d'IBM. 307 } 308 309 \slide 310 { 84 311 \begin{description} 85 \item [ILP :] Instruction Level Paralelism 86 \item [TLP :] Thread Level Paralelism 87 \item [DLP :] Data Level Paralelism 312 \item[ILP] 313 \begin{itemize} 314 \item Super Scalaire\\ 315 \item \sout{VLIW} 316 \begin{itemize} 317 \item[$\Rightarrow$] Compilateur spécialisé. 318 \item[$\Rightarrow$] Pas scalable 319 \end{itemize} 320 \end{itemize} 321 \item[TLP] 322 \begin{itemize} 323 \item CMP 324 \begin{itemize} 325 \item[$\Rightarrow$] Scalable mais sous utilisation des ressources. 326 \end{itemize} 327 \item SMT 328 \begin{itemize} 329 \item[$\Rightarrow$] Utilisation optimale des ressources mais peu scalable. 330 \end{itemize} 331 \item Mixte 332 \end{itemize} 333 \item[DLP] 334 \begin{itemize} 335 \item Extension SIMD\\ 336 \end{itemize} 88 337 \end{description} 89 338 } 90 339 { 91 } 92 93 \slidetitle{ILP} 94 { 340 Mixte : tirer partie du CMP et SMT 341 } 342 343 \section{État actuel} 344 \ContentsCurrent 345 346 \slidetitle{Processeurs libres existants} 347 { 348 \begin{tabular}{l|ccccc} 349 350 {\it Processeur} & {\it Date} & {\it ISA} & \multicolumn{2}{c}{{\it Support}} \\ 351 & & & {\it ASIC} & {\it FPGA} \\ 352 353 \hline 354 OpenRISC 1200 & 2001 & or1000-ORBIS32 & X & X\\ %&Mono-core, Scalaire 5 étages, 32 bits\\ 355 LEON2 & 2003 & SPARC-V8 & X & X\\ %&Mono-core, Scalaire 5 étages, 32 bits\\ 356 LEON3 & 2005 & SPARC-V8e & X & X\\ %&Mono-core, Scalaire 7 étages, 32 bits\\ 357 OpenSparcT1 & 2005 & UltraSPARC-V9 & X & X\\ 358 MANIK & 2006 & MANIK & & X\\ 359 aeMB & 2007 & Xilinx EDK 3.2 & & X\\ %&Mono-core, Scalaire 3 étages, 32 bits\\ 360 OpenFIRE & 2007 & Xilinx EDK 6.3 & & X\\ %&Mono-core, Scalaire 3 étages, 32 bits\\ 361 OpenSparcS1 & 2007 & UltraSPARC-V9 & X & X\\ 362 OpenSparcT2 &$>$2007 & UltraSPARC-V9 & & \\ 363 \end{tabular} 364 } 365 { 366 Xilinx EDK 3.2 : 2003 367 368 Xilinx EDK 6.3 : 2004 369 370 \begin{tabular}{l|cccc} 371 372 {\it Processeur} & FPGA & taille & freq (Mhz) & remarque\\ 373 374 \hline 375 OpenRISC 1200 & statix 2 & 3000 & 33 & sans cache\\ 376 LEON2 & virtex 2 & 5000 + RAM & 80 & \\ 377 LEON3 & ? & 3500 & 125 & \\ 378 MANIK & & & & \\ 379 aeMB & & & & \\ 380 OpenFIRE & virtex 2 & 641 & 100\\ 381 \end{tabular} 382 383 384 Xilinx XC4VLX200 SPARC FPU CCX 385 LUTs 134,973 13,863 25,090 386 387 388 With FPGA\_SYN, FPGA\_SYN\_1THREAD, and FPGA\_SYN\_NO\_SPU options: 389 Xilinx XC4VFX100 SPARC FPU CCX 390 LUTs 40,613 9,398 26,051 391 392 393 394 With FPGA\_SYN and FPGA\_SYN\_NO\_SPU options (4 threaded core): 395 Xilinx XC4VFX100 SPARC FPU CCX 396 LUTs 68,476 9,398 26,051 397 } 398 399 \slidetitle{État actuel} 400 { 401 Il existe plusieurs processeurs libres, mais : 402 403 \begin{itemize} 404 \item Aucun processeur n'exploite l'ILP. 405 \item Les paramètres concernent principalement le cache. 406 \item Seuls les modèles de l'OpenSPARC exploitent le TLP. 407 \end{itemize} 408 } 409 { 410 } 411 412 %\slidetitle{Fonction de coûts} 413 % { 414 % Comparaison de deux instances du générateur : 415 % 416 % \begin{itemize} 417 % \item Soit : obtenir le meilleur compromis Performance / Complexité. 418 % \begin{itemize} 419 % \item Performance : nombre de cycles nécessaire pour exécuter les Benchmarks. 420 % \item Complexité : surface occupée du FPGA. 421 % \end{itemize} 422 % \item Soit : obtenir le meilleur partage des ressources entre les contextes matériels. (Gain Performance / Coût surface). 423 % \begin{itemize} 424 % \item Gain en performance : rapport entre la performance MT sur la performance ST. 425 % \item Coût en surface : rapport entre la surface MT sur la surface ST. 426 % \end{itemize} 427 % \end{itemize} 428 % } 429 % { 430 % benchmark : SPECINT2k, Dhrystone 431 % 432 % 433 % } 434 435 \section{Morpheo} 436 \ContentsCurrent 437 438 %\slidetitle{Morpheo} 439 % { 440 % \printgraph{MORPHEO_service}{0.75} 441 % } 442 % { 443 % } 444 445 \subsection{Paramètres} 446 \slidetitle{Paramètres} 447 { 448 3 types : 95 449 \begin{description} 96 \item[Avantages :]~ 97 \begin{itemize} 98 \item Exploitation implicite. 99 \end{itemize} 100 \item[Inconvénients :]~ 101 \begin{itemize} 102 \item Coût quadratique du contrôle. 103 \end{itemize} 450 \item [Global] 451 \begin{itemize} 452 \item Occurrence de chaque entité [1:8] 453 \item Nombre d'instructions pour chaque entité [1:8] 454 \end{itemize} 455 \item [Local] 456 \begin{itemize} 457 \item Présence/Absence du réseau de bypass 458 \item Nombre de registres physiques [32:512] 459 \item Nombre de ports du banc de registres [2:16] 460 \item Taille des files d'attente (fetch\_queue, \dots) [2:8] 461 \item Taille des structures internes (BTB, RAS, \dots) 462 \item Type et taille du prédicteur de branchement 463 \item Type des unités d'exécution 464 \end{itemize} 465 \item [Routage] 466 \begin{itemize} 467 \item Entre les différentes entités 468 \end{itemize} 104 469 \end{description} 105 470 } … … 107 472 } 108 473 109 \slidetitle{TLP - Chip Multi Processor (CMP)} 110 { 111 \begin{description} 112 \item[Avantages :]~ 113 \begin{itemize} 114 \item Implémentation très simple : duplication des cores 115 \item Ressources dédiés au thread executé sur le core 116 \end{itemize} 117 \item[Inconvénients :]~ 118 \begin{itemize} 119 \item Il doit avoir plus de thread que de core afin d'éviter l'oisiveté des cores. 120 \end{itemize} 121 \end{description} 122 } 123 { 124 } 125 126 \slidetitle{TLP - Simulatenous Multi Threading (SMT)} 127 { 128 \begin{description} 129 \item[Avantages :]~ 130 \begin{itemize} 131 \item Implémentation très simple et peu coûteuse en surface. 132 \item Meilleur exploitation des ressources 133 \end{itemize} 134 \item[Inconvénients :]~ 135 \begin{itemize} 136 \item Dimensionnement du nombre de thread proportionnel à l'ILP exploitable. 137 \end{itemize} 138 \end{description} 139 } 140 { 141 } 142 143 \slidetitle{DLP} 144 { 145 \begin{description} 146 \item[Avantages :]~ 147 \begin{itemize} 148 \item Une instruction SIMD est équivalente à beaucoup d'instructions SISD. 149 \end{itemize} 150 \item[Inconvénients :]~ 151 \begin{itemize} 152 \item Pas adapter pour les applications qui n'exploite pas le DLP. 153 \item Exploitation explicite par le programmeur. 154 \end{itemize} 155 \end{description} 156 } 157 { 158 } 159 160 161 \slidetitle{Etat de l'art} 162 { 163 \begin{description} 164 \item [sofcore :]~ 165 \begin{description} 166 \item [Commercial :] Nios, MicroBlaze, ... 167 \item [Libre :] OpenRISC 1200, Leon 2/3, OpenSPARC T1/S1 168 \end{description} 169 {\it Non : Peu configurable, faible exploitation du paralélisme d'instruction} 170 \item [Simulateur :] SimpleScalar, SMTSim, ...\\ 171 {\it Non : Simulateur non prévut pour avoir une synthèse} 172 \item [Hardcore :] POWER5, Intel Pentium 3/4, MIPS R10000, ...\\ 173 {\it Non : ISA non libre} 174 \end{description} 175 } 176 { 177 } 178 179 \slidetitle{Objectif} 180 { 181 } 182 { 183 } 184 185 \slidetitle{Service offert} 186 { 187 \printgraph{MORPHEO_service}{0.75} 188 } 189 { 190 } 191 192 \slidetitle{Fonction de coûts} 193 { 194 } 195 { 196 } 197 198 \section{Morpheo} 199 %\ContentsCurrent 200 201 \subsection{Micro Architecture} 202 \slidetitle{Micro Architecture : Overview} 474 \subsection{Architecture interne} 475 \slidetitle{Architecture interne} 203 476 { 204 477 \printgraph{MORPHEO_micro_architecture-overview}{0.48} … … 207 480 3 grandes parties : 208 481 \begin{description} 209 \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 ...)210 \item[Out Of Order Engine :] Renom e 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.211 \item[Execution Loop :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres.482 \item[Front end :] Amène des paquets d'instructions en séquence, et les décodes. Calcules les adresses suivantes (spéculation) et maintiens l'état des threads (idle, wait, run ...) 483 \item[Out Of Order Engine :] Renomme les registres (annulations des dépendances RAW, WAW et WAR). Re Order Buffer : mettre à jour l'état du contexte dans l'ordre d'arriver des threads. 484 \item[Execution Loop :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres. 212 485 \end{description} 213 486 } 214 487 215 \slidetitle{Micro Architecture : Front end} 216 { 217 \printgraph{MORPHEO_micro_architecture-front_end}{0.7} 218 } 219 { 220 } 221 222 \slidetitle{Micro Architecture : Out Of Order Engine} 223 { 224 \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7} 225 } 226 { 227 } 228 229 \slidetitle{Micro Architecture : Execution Loop} 230 { 231 \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7} 232 } 233 { 234 } 235 488 \slide 489 { 490 \printgraph{MORPHEO_micro_architecture-ex01}{0.48} 491 } 492 { 493 Hypothèse de départ 494 495 SMT 2 496 } 497 498 \slide 499 { 500 \printgraph{MORPHEO_micro_architecture-ex02}{0.48} 501 } 502 { 503 contexte x4 prédicteur dédié 504 } 505 506 \slide 507 { 508 \printgraph{MORPHEO_micro_architecture-ex03}{0.48} 509 } 510 { 511 Select ... 512 } 513 514 \slide 515 { 516 \printgraph{MORPHEO_micro_architecture-ex04}{0.48} 517 } 518 { 519 possibilité de CMP 520 } 521 522 523 %\slidetitle{Micro Architecture : Front end} 524 % { 525 % \printgraph{MORPHEO_micro_architecture-front_end}{0.7} 526 % } 527 % { 528 % } 529 % 530 %\slidetitle{Micro Architecture : Out Of Order Engine} 531 % { 532 % \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7} 533 % } 534 % { 535 % } 536 % 537 %\slidetitle{Micro Architecture : Execution Loop} 538 % { 539 % \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7} 540 % } 541 % { 542 % } 543 % 544 \section{Validation fonctionnelle} 545 \ContentsCurrent 546 547 \subsection{Validation du modèle systemC/CABA} 236 548 237 549 \slidetitle{Environnement de simulation} 238 550 { 551 \begin{itemize} 552 \item Benchmark SPECINT2k. 553 \begin{tabular}{ll} 554 164.gzip & Compression. \\ 555 175.vpr & Placement et routage de circuit FPGA. \\ 556 181.mcf & Optimisation combinatoire. \\ 557 255.vortex & Object-oriented Database. \\ 558 256.bzip2 & Compression. \\ 559 300.twolf & Simulateur de placement et de routage.\\ 560 \end{tabular} 561 \item Appel système : librairie {\it newlib}. 562 \item Plate-forme matérielle ``custom'' 563 \begin{itemize} 564 \item Gestion de l'endienness. 565 \item Pont entre la simulation et le système hôte. 566 \end{itemize} 567 \end{itemize} 568 } 569 { 570 sim2os : 571 \begin{itemize} 572 \item SERVICE\_OPEN 573 \item SERVICE\_CLOSE 574 \item SERVICE\_READ 575 \item SERVICE\_WRITE 576 \item SERVICE\_TIME 577 \item SERVICE\_CLOCK 578 \item SERVICE\_LSEEK 579 \end{itemize} 580 } 581 582 \slidetitle{Hypothèse de travail} 583 { 584 Architecture de références 585 \begin{itemize} 586 \item 4 Threads 587 \item 8 Unités d'exécutions 588 \item 8 Instructions lancées par cycle 589 \end{itemize} 590 591 Variation de l'architecture 592 \begin{itemize} 593 \item Nombre de cache de premier niveau 594 \item Nombre d'unité de lancement (Front\_End et OoO\_Engine) 595 \item Nombre de contexte matériel 596 \item Partage des unités fonctionnelles 597 \end{itemize} 239 598 } 240 599 { … … 243 602 \slidetitle{Résultats} 244 603 { 245 } 246 { 247 } 248 249 \slidetitle{Morpheo on FPGA} 250 { 251 } 252 { 253 } 254 255 256 257 %\section{Besoins} 258 % 259 %\ContentsCurrent 260 % 261 %\slidetitle{Besoins} 262 % {Besoins pour les processeurs embarquées : 263 % 264 % \begin{itemize} 265 % \item Maîtrise du système 266 % \item Souplesse 267 % \item Performance 268 % \end{itemize} 269 % } 270 % { 271 % Où : téléphone portable, baladeur mp3/vidéo, automobile ... 272 % 273 % \begin{description} 274 % \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é. 275 % \item[Souplesse :] Pour un concepteur de système embarqués : bien dimensionner son système 276 % \item[Performance :] Application cible de plus en plus gourmande en ressources : beaucoup de threads avec des impératifs de rapidité. 277 % \end{description} 278 % } 279 % 280 %\subsection{Maîtrise du système} 281 %\slidetitle{Besoin de la Maîtrise du système} 282 % { 283 % {\bf Plate-forme de confiance totale} 284 % 285 % \begin{itemize} 286 % \item Projet Open 287 % \item ISA Open 288 % \item Instructions customisables 289 % \end{itemize} 290 % } 291 % { 292 % Morpheo s'inscrit dans le cadre du projet plate-forme de confiance totale. 293 % 294 % Instructions customisables : possibilité à l'utilisateur de rajouter de nouvelles instructions. Comme par exemple pour le chiffrement ou le déchiffrement ... 295 %% 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. 296 %% 297 %% En hard dans le proc? cache? interconnect? I/O? 298 % } 299 % 300 % 301 %\subsection{Souplesse} 302 %\slidetitle{Besoin de Souplesse} 303 % { 304 % {\bf Adapation aux besoins des concepteurs} 305 % 306 % \begin{itemize} 307 % \item Processeur hautement paramètrables 308 % \item Ressources internes hétérogènes 309 % \item FPGA 310 % \end{itemize} 311 % } 312 % { 313 % Souplesse : s'adapter aux besoins des concepteur de SoC. 314 % 315 % \begin{description} 316 % \item[Paramètrables :] Fournir un grand jeu de paramètres afin de satisfaire les contraintes du concepteur 317 % \item[Hétérogènes :] En découle des paramètres 318 % \item[FPGA :] Cible de + en + utilisé, Si mappage possible sur les ressources limités d'un FPGA, alors possible également sur un ASIC 319 % \end{description} 320 % } 321 % 322 %\subsection{Performance} 323 %\slidetitle{Besoin de Performance (1) - ILP vs TLP} 324 % { 325 % {\bf Exploitation des différentes formes de parallélisme} 326 % 327 % Paquet d'instruction pouvant s'éxecuter en parallèle : 328 % \begin{itemize} 329 % \item {\it Intra flot} : exploitation de l'ILP\newline limitation intrasèque au soft (3-5 instructions) 330 % \item {\it Inter flot} : exploitation du TLP \newline limitation intrasèque au système cible 331 % \end{itemize} 332 % } 333 % { 334 % \begin{itemize} 335 % \item ILP : superscalaire, OutOfOrder, Spéculation 336 % \item TLP : CMP, SMT 337 % \end{itemize} 338 % } 339 % 340 %\slidetitle{Besoin de Performance (2) - CMP vs SMT} 341 % { 342 % \printgraph{GENERAL_type_of_multi_thread}{0.5} 343 % 344 %% (schéma) 345 %% 346 %% Comparaison théorique de 5 types d'architectures : 347 %% ||Mono Coeur ||Mono Contexte ||Largeur infini||Idéal || 348 %% ||Mono Coeur ||Mono Contexte ||Largeur 4 ||Monolithique|| 349 %% ||Multi Coeur d'ordre 4||Mono Contexte ||Largeur 1 ||CMP || 350 %% ||Mono Coeur ||Multi Contexte d'ordre 4||Largeur 4 ||SMT || 351 %% ||Multi coeur d'ordre 2||Multi Contexte d'ordre 2||Largeur 2 ||CMP de SMT || 352 % } 353 % { 354 % \begin{itemize} 355 % \item A et B : 17 instructions en 7 UT idéale 356 % \item (1) : 14 UT 357 % \item (2) : 17 UT, 34 slot vide, occupation 50\% 358 % \item (3) : 12 UT, 14 slot vide, occupation 70\% 359 % \item (4) : 11 UT, 10 slot vide, occupation 77\% 360 % \end{itemize} 361 % } 362 %\slidetitle{Besoin de Performance (3) - Entre le CMP et le SMT} 363 % { 364 % \begin{description} 365 % \item[CMP :] L'intégralité des ressources d'un coeur sont dédiées à un contexte. 366 % \item[SMT :] L'intégralité des ressources d'un coeur sont partagées entre tous les contextes. 367 % \item[Hybride :] Multitude de possibilité de partage des ressources internes.\\ 368 % Une ressource est soit dédiée à un contexte soit partagée entre un certain nombre de contextes. 369 % \end{description} 370 % } 371 % { 372 % Définir ce qu'est une ressource : ALU, predicteur de branchement, cache ... 373 % } 374 % 375 % 376 %\section{Solution} 377 %\ContentsCurrent 378 %\subsection{Initiatives actuelles} 379 %\slidetitle{Initiatives actuelles} 380 % { 381 % Tous les processeurs sont des RISC scalaires. 382 % 383 % \begin{description} 384 % \item[OpenRISC 1200 :] 32 bits, 5 étages. Jusqu'à 8 contextes. 385 % \item[Leon 2 :] 32 bits, 5 étages. 386 % \item[Leon 3 :] Leon 2 en 7 étages. 387 % \item[OpenSparcS1 :] 1 coeur 64bits, 6 étages et CMT 4. 388 % \item[OpenSparcT1 :] OpenSparcS1 avec 8 coeurs. Version OpenSource du Niagara. 389 % \item[Micro32 :] 32 bits, 6 étages. 390 % \item[OpenFire :] 32 bits, 3 étages. Dérivés du MicroBlaze 391 % \item[aeMB :] 32 bits, 3 étages. Dérivés du MicroBlaze 392 % \end{description} 393 % } 394 % { 395 % \begin{description} 396 % \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. 397 % \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) 398 % \item[OpenSparc :] Présence de la Stream Processing Unit (cryptographie), 1 seul thread par coeur. 399 % \item[Micro32 :] Présence icache, dcache, debug. Taille des caches. Matériel spécifique : div, rotate, mul pipeline, extension de signes. 400 % \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 401 % \item[aeMB :] 3 étages (Fetch, Decod, Execute). Support de caches. Pas configurable (Juste la largeur de l'espace d'addressage) 402 % \end{description} 403 % } 404 % 405 %\slide { 406 % \printgraph{GENERAL_Art_of_State-Comparaison}{0.8} 407 % } 408 % { 409 % } 410 %\subsection{Solution proposée} 411 %\slidetitle{Solution proposée} 412 % { 413 % \begin{itemize} 414 % \item Partir d'une micro-architecture HighPerf. 415 % \item Ajout de la gestion du multi-thread. 416 % \item Rendre paramétrable les ressources internes. 417 % \item Mappage des instances de ce générateur de processeur sur les ressources limitées d'un FPGA. 418 % \end{itemize} 419 % } 420 % { 421 % Pentium 4, MipsR10000, Power5 422 % } 423 % 424 %\subsection{Métrique} 425 %\slidetitle{Métrique} 426 % { 427 % \begin{itemize} 428 % \item Obtenir le meilleur compromis Performance / Complexité. 429 % \begin{itemize} 430 % \item Performance : nombre de cycles nécessaire pour éxecuter les Benchmarks. 431 % \item Compléxité : surface occupée du FPGA. 432 % \end{itemize} 433 % \item Obtenir le meilleur partage des ressources entre les contextes matériels. (Gain Performance / Coût surface). 434 % \begin{itemize} 435 % \item Gain en performance : rapport entre la performance MT sur la performance ST. 436 % \item Coût en surface : rapport entre la surface MT sur la surface ST. 437 % \end{itemize} 438 % \end{itemize} 439 % } 440 % { 441 % benchmark : SPECINT2k, Dhrystone 442 % 443 % FPGA : virtex5LX 330 444 % } 445 % 446 %\section{Morpheo} 447 %\ContentsCurrent 448 % 449 %\subsection{Micro Architecture} 450 %\slidetitle{Micro Architecture : Overview} 451 % { 452 % \printgraph{MORPHEO_micro_architecture-overview}{0.48} 453 % } 454 % { 455 % 3 grandes parties : 456 % \begin{description} 457 % \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 ...) 458 % \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. 459 % \item[Execution Loop :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres. 460 % \end{description} 461 % } 462 % 463 %\slidetitle{Micro Architecture : Front end} 464 % { 465 % \printgraph{MORPHEO_micro_architecture-front_end}{0.7} 466 % } 467 % { 468 % } 469 % 470 %\slidetitle{Micro Architecture : Out Of Order Engine} 471 % { 472 % \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7} 473 % } 474 % { 475 % } 476 % 477 %\slidetitle{Micro Architecture : Execution Loop} 478 % { 479 % \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7} 480 % } 481 % { 482 % } 483 % 484 %\subsection{Méthodologie} 485 %\slidetitle{Service proposé} 486 % { 487 % \printgraph{MORPHEO_service}{0.75} 488 % } 489 % { 490 % libMorpheo : 491 % \begin{itemize} 492 % \item Simulation systemC 493 % \begin{itemize} 494 % \item TestBench Vhdl 495 % \item Statistiques lors de la simulation 496 % \end{itemize} 497 % \item Vhdl : synthétisable sur FPGA 498 % \item Positions: Point d'entrée d'un outil de visualisation architectural (Stage M1) 499 % \end{itemize} 500 % } 501 % 502 %\slidetitle{Méthodologie - Boucle d'Iteration} 503 % { 504 % \printgraph{MORPHEO_methodologie}{0.3} 505 % } 506 % { 507 % \begin{enumerate} 508 % \item SystemC 509 % \begin{enumerate} 510 % \item Ecriture du modèle systemC 511 % \item Ecriture d'un TestBench pour le systemc - goto 1.1 512 % \end{enumerate} 513 % \item VHDL 514 % \begin{enumerate} 515 % \item Ecriture du vhdl 516 % \item Validation de la stricte compatibilité entre le systemC et le Vhdl - goto 2.1 ou 1.1 517 % \end{enumerate} 518 % \item FPGA 519 % \begin{enumerate} 520 % \item Synthèse sur FPGA - goto 2.1, 1.1 521 % \item Mappage sur FPGA 522 % \end{enumerate} 523 % \end{enumerate} 524 % } 525 % 526 %\subsection{Perspective} 527 %\slidetitle{Comment remplir nos journées?} 528 % { 529 % Il "reste" à faire ... 530 % } 531 % { 532 % } 533 534 \slide{}{} 604 \begin{center} 605 Variation du partage des ressources entre les contextes matérielles. 606 \end{center} 607 %Rapport entre la performance MT sur la performance ST. 608 609 \printgraph{simulation_performance}{0.7} 610 } 611 { 612 DIRE : ST / MT. 613 614 MT = exécution parallèle des benchmarks 615 616 ST = exécution séquentielle des benchmarks 617 618 619 ordonnée : IPC 620 621 abscisse : degré de partage 622 } 623 624 \slide 625 { 626 %Rapport entre la performance MT sur la performance ST. 627 628 \printgraph{simulation_surface}{0.7} 629 } 630 { 631 } 632 633 \subsection{Méthodologie pour le modèle VHDL/RTL} 634 635 \slidetitle{Méthodologie pour l'écriture du générateur VHDL} 636 { 637 \printgraph{VHDL_methodologie}{0.7} 638 } 639 { 640 FPGA : virtex5LX 330 641 } 642 643 \slidetitle{Exemple : Banc de registres 512x32 bits} 644 { 645 \printgraph{synthese_FPGA-registerfile}{0.7} 646 } 647 { 648 } 649 650 \slidetitle{Planning} 651 { 652 \begin{itemize} 653 \item Optimisation du modèle SytemC/CABA 654 \item Écriture du générateur de VHDL/RTL 655 \item Réalisation d'un démonstrateur : 656 \begin{itemize} 657 \item synthèse sur un FPGA d'une instance du générateur. 658 \item exécution d'une application de test 659 \end{itemize} 660 \end{itemize} 661 } 662 { 663 } 664 665 \slidetitle{Conclusion} 666 { 667 \begin{itemize} 668 \item Définition d'un processeur ouvert, haute performance, paramétrable et pérenne. 669 \item Disposer d'un outil d'aide à l'exploration architecturale 670 \end{itemize} 671 } 672 { 673 }
Note: See TracChangeset
for help on using the changeset viewer.