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

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

Documentation : ajout du séminaire du 01/06/2007

File size: 9.7 KB
Line 
1\section{Besoins}
2
3\ContentsCurrent
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           }
14           {
15             Où : téléphone portable, baladeur mp3/vidéo, automobile ...
16
17             \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.
113             \end{description}
114           }
115           {
116             Définir ce qu'est une ressource : ALU, predicteur de branchement, cache ...
117           }
118
119
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           }
277
278\slide{}{}
Note: See TracBrowser for help on using the repository browser.