Index: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation-internal_seminary_overview/fr/root.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation-internal_seminary_overview/fr/root.tex	(revision 17)
+++ trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation-internal_seminary_overview/fr/root.tex	(revision 17)
@@ -0,0 +1,278 @@
+\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{}{}
