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{}{} |
---|