\section{Motivations} \ContentsCurrent \slidetitle{Motivations} { Sécurité du hardware : \begin{description} \item[Ancienne tendance :] IPs (Intellectual Propritie) fermées labelisés sécuritaires. \item[Nouvelle tendance :] Ouverture des IPs, intégration de System On Chip (SOC) \end{description} } { } %\section{Besoins} % %\ContentsCurrent % %\slidetitle{Besoins} % {Besoins pour les processeurs embarquées : % % \begin{itemize} % \item Maîtrise du système % \item Souplesse % \item Performance % \end{itemize} % } % { % Où : téléphone portable, baladeur mp3/vidéo, automobile ... % % \begin{description} % \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é. % \item[Souplesse :] Pour un concepteur de système embarqués : bien dimensionner son système % \item[Performance :] Application cible de plus en plus gourmande en ressources : beaucoup de threads avec des impératifs de rapidité. % \end{description} % } % %\subsection{Maîtrise du système} %\slidetitle{Besoin de la Maîtrise du système} % { % {\bf Plate-forme de confiance totale} % % \begin{itemize} % \item Projet Open % \item ISA Open % \item Instructions customisables % \end{itemize} % } % { % Morpheo s'inscrit dans le cadre du projet plate-forme de confiance totale. % % Instructions customisables : possibilité à l'utilisateur de rajouter de nouvelles instructions. Comme par exemple pour le chiffrement ou le déchiffrement ... %% 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. %% %% En hard dans le proc? cache? interconnect? I/O? % } % % %\subsection{Souplesse} %\slidetitle{Besoin de Souplesse} % { % {\bf Adapation aux besoins des concepteurs} % % \begin{itemize} % \item Processeur hautement paramètrables % \item Ressources internes hétérogènes % \item FPGA % \end{itemize} % } % { % Souplesse : s'adapter aux besoins des concepteur de SoC. % % \begin{description} % \item[Paramètrables :] Fournir un grand jeu de paramètres afin de satisfaire les contraintes du concepteur % \item[Hétérogènes :] En découle des paramètres % \item[FPGA :] Cible de + en + utilisé, Si mappage possible sur les ressources limités d'un FPGA, alors possible également sur un ASIC % \end{description} % } % %\subsection{Performance} %\slidetitle{Besoin de Performance (1) - ILP vs TLP} % { % {\bf Exploitation des différentes formes de parallélisme} % % Paquet d'instruction pouvant s'éxecuter en parallèle : % \begin{itemize} % \item {\it Intra flot} : exploitation de l'ILP\newline limitation intrasèque au soft (3-5 instructions) % \item {\it Inter flot} : exploitation du TLP \newline limitation intrasèque au système cible % \end{itemize} % } % { % \begin{itemize} % \item ILP : superscalaire, OutOfOrder, Spéculation % \item TLP : CMP, SMT % \end{itemize} % } % %\slidetitle{Besoin de Performance (2) - CMP vs SMT} % { % \printgraph{GENERAL_type_of_multi_thread}{0.5} % %% (schéma) %% %% Comparaison théorique de 5 types d'architectures : %% ||Mono Coeur ||Mono Contexte ||Largeur infini||Idéal || %% ||Mono Coeur ||Mono Contexte ||Largeur 4 ||Monolithique|| %% ||Multi Coeur d'ordre 4||Mono Contexte ||Largeur 1 ||CMP || %% ||Mono Coeur ||Multi Contexte d'ordre 4||Largeur 4 ||SMT || %% ||Multi coeur d'ordre 2||Multi Contexte d'ordre 2||Largeur 2 ||CMP de SMT || % } % { % \begin{itemize} % \item A et B : 17 instructions en 7 UT idéale % \item (1) : 14 UT % \item (2) : 17 UT, 34 slot vide, occupation 50\% % \item (3) : 12 UT, 14 slot vide, occupation 70\% % \item (4) : 11 UT, 10 slot vide, occupation 77\% % \end{itemize} % } %\slidetitle{Besoin de Performance (3) - Entre le CMP et le SMT} % { % \begin{description} % \item[CMP :] L'intégralité des ressources d'un coeur sont dédiées à un contexte. % \item[SMT :] L'intégralité des ressources d'un coeur sont partagées entre tous les contextes. % \item[Hybride :] Multitude de possibilité de partage des ressources internes.\\ % Une ressource est soit dédiée à un contexte soit partagée entre un certain nombre de contextes. % \end{description} % } % { % Définir ce qu'est une ressource : ALU, predicteur de branchement, cache ... % } % % %\section{Solution} %\ContentsCurrent %\subsection{Initiatives actuelles} %\slidetitle{Initiatives actuelles} % { % Tous les processeurs sont des RISC scalaires. % % \begin{description} % \item[OpenRISC 1200 :] 32 bits, 5 étages. Jusqu'à 8 contextes. % \item[Leon 2 :] 32 bits, 5 étages. % \item[Leon 3 :] Leon 2 en 7 étages. % \item[OpenSparcS1 :] 1 coeur 64bits, 6 étages et CMT 4. % \item[OpenSparcT1 :] OpenSparcS1 avec 8 coeurs. Version OpenSource du Niagara. % \item[Micro32 :] 32 bits, 6 étages. % \item[OpenFire :] 32 bits, 3 étages. Dérivés du MicroBlaze % \item[aeMB :] 32 bits, 3 étages. Dérivés du MicroBlaze % \end{description} % } % { % \begin{description} % \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. % \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) % \item[OpenSparc :] Présence de la Stream Processing Unit (cryptographie), 1 seul thread par coeur. % \item[Micro32 :] Présence icache, dcache, debug. Taille des caches. Matériel spécifique : div, rotate, mul pipeline, extension de signes. % \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 % \item[aeMB :] 3 étages (Fetch, Decod, Execute). Support de caches. Pas configurable (Juste la largeur de l'espace d'addressage) % \end{description} % } % %\slide { % \printgraph{GENERAL_Art_of_State-Comparaison}{0.8} % } % { % } %\subsection{Solution proposée} %\slidetitle{Solution proposée} % { % \begin{itemize} % \item Partir d'une micro-architecture HighPerf. % \item Ajout de la gestion du multi-thread. % \item Rendre paramétrable les ressources internes. % \item Mappage des instances de ce générateur de processeur sur les ressources limitées d'un FPGA. % \end{itemize} % } % { % Pentium 4, MipsR10000, Power5 % } % %\subsection{Métrique} %\slidetitle{Métrique} % { % \begin{itemize} % \item Obtenir le meilleur compromis Performance / Complexité. % \begin{itemize} % \item Performance : nombre de cycles nécessaire pour éxecuter les Benchmarks. % \item Compléxité : surface occupée du FPGA. % \end{itemize} % \item Obtenir le meilleur partage des ressources entre les contextes matériels. (Gain Performance / Coût surface). % \begin{itemize} % \item Gain en performance : rapport entre la performance MT sur la performance ST. % \item Coût en surface : rapport entre la surface MT sur la surface ST. % \end{itemize} % \end{itemize} % } % { % benchmark : SPECINT2k, Dhrystone % % FPGA : virtex5LX 330 % } % %\section{Morpheo} %\ContentsCurrent % %\subsection{Micro Architecture} %\slidetitle{Micro Architecture : Overview} % { % \printgraph{MORPHEO_micro_architecture-overview}{0.48} % } % { % 3 grandes parties : % \begin{description} % \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 ...) % \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. % \item[Execution Loop :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres. % \end{description} % } % %\slidetitle{Micro Architecture : Front end} % { % \printgraph{MORPHEO_micro_architecture-front_end}{0.7} % } % { % } % %\slidetitle{Micro Architecture : Out Of Order Engine} % { % \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7} % } % { % } % %\slidetitle{Micro Architecture : Execution Loop} % { % \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7} % } % { % } % %\subsection{Méthodologie} %\slidetitle{Service proposé} % { % \printgraph{MORPHEO_service}{0.75} % } % { % libMorpheo : % \begin{itemize} % \item Simulation systemC % \begin{itemize} % \item TestBench Vhdl % \item Statistiques lors de la simulation % \end{itemize} % \item Vhdl : synthétisable sur FPGA % \item Positions: Point d'entrée d'un outil de visualisation architectural (Stage M1) % \end{itemize} % } % %\slidetitle{Méthodologie - Boucle d'Iteration} % { % \printgraph{MORPHEO_methodologie}{0.3} % } % { % \begin{enumerate} % \item SystemC % \begin{enumerate} % \item Ecriture du modèle systemC % \item Ecriture d'un TestBench pour le systemc - goto 1.1 % \end{enumerate} % \item VHDL % \begin{enumerate} % \item Ecriture du vhdl % \item Validation de la stricte compatibilité entre le systemC et le Vhdl - goto 2.1 ou 1.1 % \end{enumerate} % \item FPGA % \begin{enumerate} % \item Synthèse sur FPGA - goto 2.1, 1.1 % \item Mappage sur FPGA % \end{enumerate} % \end{enumerate} % } % %\subsection{Perspective} %\slidetitle{Comment remplir nos journées?} % { % Il "reste" à faire ... % } % { % } \slide{}{}