source: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation-internal_seminary_overview/fr/root.tex @ 52

Last change on this file since 52 was 52, checked in by rosiere, 17 years ago

Modif du seminaire interne

File size: 16.9 KB
Line 
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{Ancienne tendance}
19           {
20             \begin{itemize}
21             \item Composants fermés.
22             \item Label de sécurité.
23               \begin{itemize}
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           {
31             \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.
34             \end{description}
35           }
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           {
50             \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.
54             \end{description}
55           }
56           {
57           }
58
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.
84             \begin{description}
85             \item [ILP :] Instruction Level Paralelism
86             \item [TLP :] Thread      Level Paralelism
87             \item [DLP :] Data        Level Paralelism
88             \end{description}
89           }
90           {
91           }
92
93\slidetitle{ILP}
94           {
95             \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}
104             \end{description}
105           }
106           {
107           }
108
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}
203           {
204             \printgraph{MORPHEO_micro_architecture-overview}{0.48}
205           }
206           {
207             3 grandes parties :
208             \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 :] 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.
211             \item[Execution Loop :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres.
212             \end{description}
213           }
214
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
236
237\slidetitle{Environnement de simulation}
238           {
239           }
240           {
241           }
242
243\slidetitle{Résultats}
244           {
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{}{}
Note: See TracBrowser for help on using the repository browser.