source: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation_bull/fr/root.tex @ 88

Last change on this file since 88 was 88, checked in by rosiere, 15 years ago

Almost complete design
with Test and test platform

  • Property svn:keywords set to Id
File size: 20.1 KB
Line 
1\section{Motivations}
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           {
20             \begin{itemize}
21             \item Composants fermés.
22             \item Consortium de certification
23               \begin{itemize}
24               \item Trusted Computing Platform Alliance
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 :
95             \begin{description}
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.
100             \end{description}
101           }
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
179             \begin{description}
180             \item[ILP :] Instruction Level Parallelism
181             \item[TLP :] Thread      Level Parallelism
182             \item[DLP :] Data        Level Parallelism
183             \end{description}
184           }
185           {
186           }
187
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}{}
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}{}
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}{}
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           {
311             \begin{description}
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}
337             \end{description}
338           }
339           {
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  & X & X\\
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\subsection{Paramètres}
439\slidetitle{Paramètres}
440           {
441             3 types :
442             \begin{description}
443             \item [Global]
444               \begin{itemize}
445                 \item Occurrence de chaque entité %[1:8]
446                 \item Nombre d'instructions pour chaque entité %[1:8]
447               \end{itemize}
448             \item [Local]
449               \begin{itemize}
450                 \item Présence/Absence du réseau de bypass
451                 \item Nombre de registres physiques %[32:512]
452                 \item Nombre de ports du banc de registres %[2:16]
453                 \item Taille des files d'attente (fetch\_queue, \dots) %[2:8]
454                 \item Taille des structures internes (BTB, RAS, \dots)
455                 \item Type et taille du prédicteur de branchement
456                 \item Type des unités d'exécution
457               \end{itemize}
458             \item [Routage]
459               \begin{itemize}
460                 \item Entre les différentes entités
461               \end{itemize}   
462             \end{description}
463           }
464           {
465           }
466
467\subsection{Architecture interne}
468\slidetitle{Architecture interne}
469           {
470             \printgraph{MORPHEO_micro_architecture-overview}{0.48}
471           }
472           {
473             3 grandes parties :
474             \begin{description}
475             \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 ...)
476             \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.
477             \item[Execution Loop      :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres.
478             \end{description}
479           }
480
481\slide
482           {
483             \printgraph{MORPHEO_micro_architecture-ex01}{0.48}
484           }
485           {
486             Hypothèse de départ
487
488             SMT 2
489           }
490
491\slide
492           {
493             \printgraph{MORPHEO_micro_architecture-ex02}{0.48}
494           }
495           {
496             contexte x4 prédicteur dédié
497           }
498
499\slide
500           {
501             \printgraph{MORPHEO_micro_architecture-ex03}{0.48}
502           }
503           {
504             Select ...
505           }
506
507\slide
508           {
509             \printgraph{MORPHEO_micro_architecture-ex04}{0.48}
510           }
511           {
512             possibilité de CMP
513           }
514
515
516%\slidetitle{Micro Architecture : Front end}
517%          {
518%            \printgraph{MORPHEO_micro_architecture-front_end}{0.7}
519%          }
520%          {
521%          }
522%
523%\slidetitle{Micro Architecture : Out Of Order Engine}
524%          {
525%            \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7}
526%          }
527%          {
528%          }
529%
530%\slidetitle{Micro Architecture : Execution Loop}
531%          {
532%            \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7}
533%          }
534%          {
535%          }
536%
537\section{Méthodologie}
538\ContentsCurrent
539
540\subsection{Service offert}
541\slidetitle{Service offert}
542           {
543             \printgraph{MORPHEO_service}{0.75}
544           }
545           {
546           }
547
548\subsection{Méthodologie pour le modèle systemC/CABA}
549\slidetitle{Structure du modèle systemC/CABA}
550           {
551             Deux types de composants :
552             \begin{description}
553             \item[Comportementale : ]~\\
554               \begin{itemize}
555               \item 0-1 Fonction de Transition
556               \item 0-1 Fonction de Moore
557               \item 0-N Fonction de Mealy
558               \end{itemize}
559             \item[Structurelle : ] Contient des instances de composants comportementale et/ou structuelle.
560             \end{description}
561
562             Encapsulation des interfaces de chaque composant ainsi que les instanciations.
563           }
564           {
565           }
566
567
568\slide
569           {
570             Pour chaque composant du modèle
571             \begin{itemize}
572             \item<1->{\bf Construction :}~\\
573               \begin{itemize}
574               \item Vérification des paramètres
575               \item Génération du modèle VHDL
576               \item Création des compteurs d'activités
577               \end{itemize}
578             \item<2-> {\bf Run-time :} A chaque cycle~\\
579               \begin{itemize}
580               \item Evaluation des compteurs d'activités
581               \item Enregistrement de l'état des interfaces
582               \end{itemize}
583             \item<3-> {\bf Destruction :}~\\
584               \begin{itemize}
585               \item Sauvegardes des compteurs d'activités dans un fichier au format XML
586               \item Mise en forme des activités sur les interfaces afin de générer un test bench pour le modèle VHDL
587               \end{itemize}
588             \end{itemize}
589
590           }
591           {
592
593           }
594
595%\subsection{Validation du modèle systemC/CABA}
596%
597%\slidetitle{Environnement de simulation}
598%          {
599%            \begin{itemize}
600%            \item Benchmark SPECINT2k.
601%              \begin{tabular}{ll}
602%                164.gzip   & Compression.                          \\
603%                175.vpr    & Placement et routage de circuit FPGA. \\
604%                181.mcf    & Optimisation combinatoire.            \\
605%                255.vortex & Object-oriented Database.             \\
606%                256.bzip2  & Compression.                          \\
607%                300.twolf  & Simulateur de placement et de routage.\\
608%              \end{tabular}
609%            \item Appel système : librairie {\it newlib}.
610%            \item Plate-forme matérielle ``custom''
611%              \begin{itemize}
612%                \item Gestion de l'endienness.
613%                \item Pont entre la simulation et le système hôte.
614%              \end{itemize}
615%            \end{itemize}
616%          }
617%          {
618%            sim2os :
619%            \begin{itemize}
620%             \item SERVICE\_OPEN
621%             \item SERVICE\_CLOSE
622%             \item SERVICE\_READ
623%             \item SERVICE\_WRITE
624%             \item SERVICE\_TIME
625%             \item SERVICE\_CLOCK
626%             \item SERVICE\_LSEEK
627%            \end{itemize}
628%          }
629
630%\slidetitle{Hypothèse de travail}
631%          {
632%            Architecture de références
633%            \begin{itemize}
634%              \item 4 Threads
635%              \item 8 Unités d'exécutions
636%              \item 8 Instructions lancées par cycle
637%            \end{itemize}
638%           
639%            Variation de l'architecture
640%            \begin{itemize}
641%            \item Nombre de cache de premier niveau
642%            \item Nombre d'unité de lancement (Front\_End et OoO\_Engine)
643%            \item Nombre de contexte matériel
644%            \item Partage des unités fonctionnelles
645%            \end{itemize}
646%          }
647%          {
648%          }
649%
650%\slidetitle{Résultats}
651%          {
652%            \begin{center}
653%              Variation du partage des ressources entre les contextes matérielles.
654%            \end{center}
655%            %Rapport entre la performance MT sur la performance ST.
656%
657%            \printgraph{simulation_performance}{0.7}       
658%          }
659%          {
660%            DIRE : ST / MT.
661%
662%            MT = exécution parallèle des benchmarks
663%
664%            ST = exécution séquentielle des benchmarks
665%
666%
667%            ordonnée : IPC
668%
669%            abscisse : degré de partage
670%          }
671%
672%\slide
673%          {
674%            %Rapport entre la performance MT sur la performance ST.
675%
676%            \printgraph{simulation_surface}{0.7}           
677%          }
678%          {
679%          }
680
681\subsection{Méthodologie pour le modèle VHDL/RTL}
682
683\slidetitle{Passage du modèle systemC au modèle VHDL}
684           {
685             \begin{description}
686               \item [Composants structurelles :]~\\
687                 \begin{itemize}
688                   \item Générés automatiquement.
689                 \end{itemize}
690               \item [Composants comportementales : ]~\\
691                 \begin{itemize}
692                 \item En tête et interfaces sont générés automatiquement.
693                 \item Reste le corps du composant à écrire.
694                 \end{itemize}
695               \item [Tests :]~\\
696                 \begin{itemize}
697                 \item  Générés lors de la simulation systemC.
698                 \end{itemize}
699             \end{description}
700           }
701           {
702           }
703
704\slide%title{Méthodologie pour l'écriture du générateur VHDL}
705           {
706             \begin{minipage}{0.54\textwidth}
707             \printgraph{VHDL_methodologie}{0.65}
708             \end{minipage}
709             \begin{minipage}{0.44\textwidth}
710               \begin{itemize}
711               \item Simulation systemC :\\{\it SystemCass   }
712               \item Simulation VHDL    :\\{\it Modelsim            }
713               \item Synthèse FPGA      :\\{\it Xilinx ISE   }
714               \item FPGA cible         :\\{\it Virtex5LX 330}
715               \end{itemize}
716             \end{minipage}
717           }
718           {
719             FPGA : virtex5LX 330
720           }
721
722%\slidetitle{Exemple : Banc de registres 512x32 bits}
723%          {
724%            \printgraph{synthese_FPGA-registerfile}{0.7}
725%          }
726%          {
727%          }
728%
729%\slidetitle{Planning}
730%          {
731%            \begin{itemize}
732%            \item Optimisation du modèle SytemC/CABA
733%            \item Écriture du générateur de VHDL/RTL
734%            \item Réalisation d'un démonstrateur :
735%              \begin{itemize}
736%              \item synthèse sur un FPGA d'une instance du générateur.
737%              \item exécution d'une application de test
738%              \end{itemize}
739%            \end{itemize}
740%          }
741%          {
742%          }
743
744
745\slidetitle{Conclusion}
746           {
747             \begin{itemize}
748               \item Définition d'un processeur ouvert, haute performance, paramétrable et pérenne.
749               \item Disposer d'un outil d'aide à l'exploration architecturale
750             \end{itemize}
751           }
752           {
753           }
Note: See TracBrowser for help on using the repository browser.