[23] | 1 | \section{Motivations} |
---|
[17] | 2 | |
---|
| 3 | \ContentsCurrent |
---|
| 4 | |
---|
[23] | 5 | \slidetitle{Motivations} |
---|
[17] | 6 | { |
---|
[23] | 7 | Sécurité du hardware : |
---|
[17] | 8 | \begin{description} |
---|
[23] | 9 | \item[Ancienne tendance :] IPs (Intellectual Propritie) fermées labelisés sécuritaires. |
---|
| 10 | \item[Nouvelle tendance :] Ouverture des IPs, intégration de System On Chip (SOC) |
---|
[17] | 11 | \end{description} |
---|
| 12 | } |
---|
| 13 | { |
---|
[23] | 14 | |
---|
[17] | 15 | } |
---|
| 16 | |
---|
| 17 | |
---|
| 18 | |
---|
[23] | 19 | %\section{Besoins} |
---|
| 20 | % |
---|
| 21 | %\ContentsCurrent |
---|
| 22 | % |
---|
| 23 | %\slidetitle{Besoins} |
---|
| 24 | % {Besoins pour les processeurs embarquées : |
---|
[17] | 25 | % |
---|
[23] | 26 | % \begin{itemize} |
---|
| 27 | % \item Maîtrise du système |
---|
| 28 | % \item Souplesse |
---|
| 29 | % \item Performance |
---|
| 30 | % \end{itemize} |
---|
| 31 | % } |
---|
| 32 | % { |
---|
| 33 | % Où : téléphone portable, baladeur mp3/vidéo, automobile ... |
---|
| 34 | % |
---|
| 35 | % \begin{description} |
---|
| 36 | % \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é. |
---|
| 37 | % \item[Souplesse :] Pour un concepteur de système embarqués : bien dimensionner son système |
---|
| 38 | % \item[Performance :] Application cible de plus en plus gourmande en ressources : beaucoup de threads avec des impératifs de rapidité. |
---|
| 39 | % \end{description} |
---|
| 40 | % } |
---|
| 41 | % |
---|
| 42 | %\subsection{Maîtrise du système} |
---|
| 43 | %\slidetitle{Besoin de la Maîtrise du système} |
---|
| 44 | % { |
---|
| 45 | % {\bf Plate-forme de confiance totale} |
---|
| 46 | % |
---|
| 47 | % \begin{itemize} |
---|
| 48 | % \item Projet Open |
---|
| 49 | % \item ISA Open |
---|
| 50 | % \item Instructions customisables |
---|
| 51 | % \end{itemize} |
---|
| 52 | % } |
---|
| 53 | % { |
---|
| 54 | % Morpheo s'inscrit dans le cadre du projet plate-forme de confiance totale. |
---|
| 55 | % |
---|
| 56 | % Instructions customisables : possibilité à l'utilisateur de rajouter de nouvelles instructions. Comme par exemple pour le chiffrement ou le déchiffrement ... |
---|
| 57 | %% 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. |
---|
| 58 | %% |
---|
| 59 | %% En hard dans le proc? cache? interconnect? I/O? |
---|
| 60 | % } |
---|
| 61 | % |
---|
| 62 | % |
---|
| 63 | %\subsection{Souplesse} |
---|
| 64 | %\slidetitle{Besoin de Souplesse} |
---|
| 65 | % { |
---|
| 66 | % {\bf Adapation aux besoins des concepteurs} |
---|
| 67 | % |
---|
| 68 | % \begin{itemize} |
---|
| 69 | % \item Processeur hautement paramètrables |
---|
| 70 | % \item Ressources internes hétérogènes |
---|
| 71 | % \item FPGA |
---|
| 72 | % \end{itemize} |
---|
| 73 | % } |
---|
| 74 | % { |
---|
| 75 | % Souplesse : s'adapter aux besoins des concepteur de SoC. |
---|
| 76 | % |
---|
| 77 | % \begin{description} |
---|
| 78 | % \item[Paramètrables :] Fournir un grand jeu de paramètres afin de satisfaire les contraintes du concepteur |
---|
| 79 | % \item[Hétérogènes :] En découle des paramètres |
---|
| 80 | % \item[FPGA :] Cible de + en + utilisé, Si mappage possible sur les ressources limités d'un FPGA, alors possible également sur un ASIC |
---|
| 81 | % \end{description} |
---|
| 82 | % } |
---|
| 83 | % |
---|
| 84 | %\subsection{Performance} |
---|
| 85 | %\slidetitle{Besoin de Performance (1) - ILP vs TLP} |
---|
| 86 | % { |
---|
| 87 | % {\bf Exploitation des différentes formes de parallélisme} |
---|
| 88 | % |
---|
| 89 | % Paquet d'instruction pouvant s'éxecuter en parallèle : |
---|
| 90 | % \begin{itemize} |
---|
| 91 | % \item {\it Intra flot} : exploitation de l'ILP\newline limitation intrasèque au soft (3-5 instructions) |
---|
| 92 | % \item {\it Inter flot} : exploitation du TLP \newline limitation intrasèque au système cible |
---|
| 93 | % \end{itemize} |
---|
| 94 | % } |
---|
| 95 | % { |
---|
| 96 | % \begin{itemize} |
---|
| 97 | % \item ILP : superscalaire, OutOfOrder, Spéculation |
---|
| 98 | % \item TLP : CMP, SMT |
---|
| 99 | % \end{itemize} |
---|
| 100 | % } |
---|
| 101 | % |
---|
| 102 | %\slidetitle{Besoin de Performance (2) - CMP vs SMT} |
---|
| 103 | % { |
---|
| 104 | % \printgraph{GENERAL_type_of_multi_thread}{0.5} |
---|
| 105 | % |
---|
| 106 | %% (schéma) |
---|
| 107 | %% |
---|
| 108 | %% Comparaison théorique de 5 types d'architectures : |
---|
| 109 | %% ||Mono Coeur ||Mono Contexte ||Largeur infini||Idéal || |
---|
| 110 | %% ||Mono Coeur ||Mono Contexte ||Largeur 4 ||Monolithique|| |
---|
| 111 | %% ||Multi Coeur d'ordre 4||Mono Contexte ||Largeur 1 ||CMP || |
---|
| 112 | %% ||Mono Coeur ||Multi Contexte d'ordre 4||Largeur 4 ||SMT || |
---|
| 113 | %% ||Multi coeur d'ordre 2||Multi Contexte d'ordre 2||Largeur 2 ||CMP de SMT || |
---|
| 114 | % } |
---|
| 115 | % { |
---|
| 116 | % \begin{itemize} |
---|
| 117 | % \item A et B : 17 instructions en 7 UT idéale |
---|
| 118 | % \item (1) : 14 UT |
---|
| 119 | % \item (2) : 17 UT, 34 slot vide, occupation 50\% |
---|
| 120 | % \item (3) : 12 UT, 14 slot vide, occupation 70\% |
---|
| 121 | % \item (4) : 11 UT, 10 slot vide, occupation 77\% |
---|
| 122 | % \end{itemize} |
---|
| 123 | % } |
---|
| 124 | %\slidetitle{Besoin de Performance (3) - Entre le CMP et le SMT} |
---|
| 125 | % { |
---|
| 126 | % \begin{description} |
---|
| 127 | % \item[CMP :] L'intégralité des ressources d'un coeur sont dédiées à un contexte. |
---|
| 128 | % \item[SMT :] L'intégralité des ressources d'un coeur sont partagées entre tous les contextes. |
---|
| 129 | % \item[Hybride :] Multitude de possibilité de partage des ressources internes.\\ |
---|
| 130 | % Une ressource est soit dédiée à un contexte soit partagée entre un certain nombre de contextes. |
---|
| 131 | % \end{description} |
---|
| 132 | % } |
---|
| 133 | % { |
---|
| 134 | % Définir ce qu'est une ressource : ALU, predicteur de branchement, cache ... |
---|
| 135 | % } |
---|
| 136 | % |
---|
| 137 | % |
---|
| 138 | %\section{Solution} |
---|
| 139 | %\ContentsCurrent |
---|
| 140 | %\subsection{Initiatives actuelles} |
---|
| 141 | %\slidetitle{Initiatives actuelles} |
---|
| 142 | % { |
---|
| 143 | % Tous les processeurs sont des RISC scalaires. |
---|
| 144 | % |
---|
| 145 | % \begin{description} |
---|
| 146 | % \item[OpenRISC 1200 :] 32 bits, 5 étages. Jusqu'à 8 contextes. |
---|
| 147 | % \item[Leon 2 :] 32 bits, 5 étages. |
---|
| 148 | % \item[Leon 3 :] Leon 2 en 7 étages. |
---|
| 149 | % \item[OpenSparcS1 :] 1 coeur 64bits, 6 étages et CMT 4. |
---|
| 150 | % \item[OpenSparcT1 :] OpenSparcS1 avec 8 coeurs. Version OpenSource du Niagara. |
---|
| 151 | % \item[Micro32 :] 32 bits, 6 étages. |
---|
| 152 | % \item[OpenFire :] 32 bits, 3 étages. Dérivés du MicroBlaze |
---|
| 153 | % \item[aeMB :] 32 bits, 3 étages. Dérivés du MicroBlaze |
---|
| 154 | % \end{description} |
---|
| 155 | % } |
---|
| 156 | % { |
---|
| 157 | % \begin{description} |
---|
| 158 | % \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. |
---|
| 159 | % \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) |
---|
| 160 | % \item[OpenSparc :] Présence de la Stream Processing Unit (cryptographie), 1 seul thread par coeur. |
---|
| 161 | % \item[Micro32 :] Présence icache, dcache, debug. Taille des caches. Matériel spécifique : div, rotate, mul pipeline, extension de signes. |
---|
| 162 | % \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 |
---|
| 163 | % \item[aeMB :] 3 étages (Fetch, Decod, Execute). Support de caches. Pas configurable (Juste la largeur de l'espace d'addressage) |
---|
| 164 | % \end{description} |
---|
| 165 | % } |
---|
| 166 | % |
---|
| 167 | %\slide { |
---|
| 168 | % \printgraph{GENERAL_Art_of_State-Comparaison}{0.8} |
---|
| 169 | % } |
---|
| 170 | % { |
---|
| 171 | % } |
---|
| 172 | %\subsection{Solution proposée} |
---|
| 173 | %\slidetitle{Solution proposée} |
---|
| 174 | % { |
---|
| 175 | % \begin{itemize} |
---|
| 176 | % \item Partir d'une micro-architecture HighPerf. |
---|
| 177 | % \item Ajout de la gestion du multi-thread. |
---|
| 178 | % \item Rendre paramétrable les ressources internes. |
---|
| 179 | % \item Mappage des instances de ce générateur de processeur sur les ressources limitées d'un FPGA. |
---|
| 180 | % \end{itemize} |
---|
| 181 | % } |
---|
| 182 | % { |
---|
| 183 | % Pentium 4, MipsR10000, Power5 |
---|
| 184 | % } |
---|
| 185 | % |
---|
| 186 | %\subsection{Métrique} |
---|
| 187 | %\slidetitle{Métrique} |
---|
| 188 | % { |
---|
| 189 | % \begin{itemize} |
---|
| 190 | % \item Obtenir le meilleur compromis Performance / Complexité. |
---|
| 191 | % \begin{itemize} |
---|
| 192 | % \item Performance : nombre de cycles nécessaire pour éxecuter les Benchmarks. |
---|
| 193 | % \item Compléxité : surface occupée du FPGA. |
---|
| 194 | % \end{itemize} |
---|
| 195 | % \item Obtenir le meilleur partage des ressources entre les contextes matériels. (Gain Performance / Coût surface). |
---|
| 196 | % \begin{itemize} |
---|
| 197 | % \item Gain en performance : rapport entre la performance MT sur la performance ST. |
---|
| 198 | % \item Coût en surface : rapport entre la surface MT sur la surface ST. |
---|
| 199 | % \end{itemize} |
---|
| 200 | % \end{itemize} |
---|
| 201 | % } |
---|
| 202 | % { |
---|
| 203 | % benchmark : SPECINT2k, Dhrystone |
---|
| 204 | % |
---|
| 205 | % FPGA : virtex5LX 330 |
---|
| 206 | % } |
---|
| 207 | % |
---|
| 208 | %\section{Morpheo} |
---|
| 209 | %\ContentsCurrent |
---|
| 210 | % |
---|
| 211 | %\subsection{Micro Architecture} |
---|
| 212 | %\slidetitle{Micro Architecture : Overview} |
---|
| 213 | % { |
---|
| 214 | % \printgraph{MORPHEO_micro_architecture-overview}{0.48} |
---|
| 215 | % } |
---|
| 216 | % { |
---|
| 217 | % 3 grandes parties : |
---|
| 218 | % \begin{description} |
---|
| 219 | % \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 ...) |
---|
| 220 | % \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. |
---|
| 221 | % \item[Execution Loop :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres. |
---|
| 222 | % \end{description} |
---|
| 223 | % } |
---|
| 224 | % |
---|
| 225 | %\slidetitle{Micro Architecture : Front end} |
---|
| 226 | % { |
---|
| 227 | % \printgraph{MORPHEO_micro_architecture-front_end}{0.7} |
---|
| 228 | % } |
---|
| 229 | % { |
---|
| 230 | % } |
---|
| 231 | % |
---|
| 232 | %\slidetitle{Micro Architecture : Out Of Order Engine} |
---|
| 233 | % { |
---|
| 234 | % \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7} |
---|
| 235 | % } |
---|
| 236 | % { |
---|
| 237 | % } |
---|
| 238 | % |
---|
| 239 | %\slidetitle{Micro Architecture : Execution Loop} |
---|
| 240 | % { |
---|
| 241 | % \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7} |
---|
| 242 | % } |
---|
| 243 | % { |
---|
| 244 | % } |
---|
| 245 | % |
---|
| 246 | %\subsection{Méthodologie} |
---|
| 247 | %\slidetitle{Service proposé} |
---|
| 248 | % { |
---|
| 249 | % \printgraph{MORPHEO_service}{0.75} |
---|
| 250 | % } |
---|
| 251 | % { |
---|
| 252 | % libMorpheo : |
---|
| 253 | % \begin{itemize} |
---|
| 254 | % \item Simulation systemC |
---|
| 255 | % \begin{itemize} |
---|
| 256 | % \item TestBench Vhdl |
---|
| 257 | % \item Statistiques lors de la simulation |
---|
| 258 | % \end{itemize} |
---|
| 259 | % \item Vhdl : synthétisable sur FPGA |
---|
| 260 | % \item Positions: Point d'entrée d'un outil de visualisation architectural (Stage M1) |
---|
| 261 | % \end{itemize} |
---|
| 262 | % } |
---|
| 263 | % |
---|
| 264 | %\slidetitle{Méthodologie - Boucle d'Iteration} |
---|
| 265 | % { |
---|
| 266 | % \printgraph{MORPHEO_methodologie}{0.3} |
---|
| 267 | % } |
---|
| 268 | % { |
---|
| 269 | % \begin{enumerate} |
---|
| 270 | % \item SystemC |
---|
| 271 | % \begin{enumerate} |
---|
| 272 | % \item Ecriture du modèle systemC |
---|
| 273 | % \item Ecriture d'un TestBench pour le systemc - goto 1.1 |
---|
| 274 | % \end{enumerate} |
---|
| 275 | % \item VHDL |
---|
| 276 | % \begin{enumerate} |
---|
| 277 | % \item Ecriture du vhdl |
---|
| 278 | % \item Validation de la stricte compatibilité entre le systemC et le Vhdl - goto 2.1 ou 1.1 |
---|
| 279 | % \end{enumerate} |
---|
| 280 | % \item FPGA |
---|
| 281 | % \begin{enumerate} |
---|
| 282 | % \item Synthèse sur FPGA - goto 2.1, 1.1 |
---|
| 283 | % \item Mappage sur FPGA |
---|
| 284 | % \end{enumerate} |
---|
| 285 | % \end{enumerate} |
---|
| 286 | % } |
---|
| 287 | % |
---|
| 288 | %\subsection{Perspective} |
---|
| 289 | %\slidetitle{Comment remplir nos journées?} |
---|
| 290 | % { |
---|
| 291 | % Il "reste" à faire ... |
---|
| 292 | % } |
---|
| 293 | % { |
---|
| 294 | % } |
---|
[17] | 295 | |
---|
[23] | 296 | \slide{}{} |
---|