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 52)
+++ trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation-internal_seminary_overview/fr/root.tex	(revision 57)
@@ -1,55 +1,184 @@
 \section{Motivations}
-
-%\ContentsCurrent
-
-\slidetitle{Problématique}
-	   {
-	     On désire une plateforme de confiance totale :
-	     \begin{itemize}
-	     \item La plateforme-matérielle est composée de processeur(s) généraliste(s).
-	     \item La plateforme-logicielle est composée de plusieurs applications qui peuvent être cryptographique.
-	     \end{itemize}
-
-	     Notre travail consiste à faire le processeur pour un tel système.
-	   }
-	   {
-	   }
-
-\slidetitle{Ancienne tendance}
+\ContentsCurrent
+
+\slidetitle{Cadre de la thèse}
+	   {
+	     \begin{itemize}
+	     \item {\it Cadre :}\newline
+	       Collaboration avec Bull sur le projet PFC\newline
+	       (Plate-forme de confiance totale)
+	     \item {\it Notre contribution :}\newline
+	       Réalisation d'un générateur de processeur ouvert.
+	     \end{itemize}
+	   }
+	   {
+	     Expliquer PFC
+	   }
+
+\slidetitle{Approche actuelle fondée sur le secret}
 	   {
 	     \begin{itemize}
 	     \item Composants fermés.
-	     \item Label de sécurité. 
+	     \item Consortium de certification
 	       \begin{itemize}
 	       \item Trusted Computing Platform Alliance
-	       \item Next-Generation Secure Computing Base
-	       \end{itemize}
-	     \item Plateforme multi-chip.
-	     \end{itemize}
-	   }
-	   {
+%		 \begin{itemize}
+%		 \item Next-Generation Secure Computing Base
+%		 \item Intel Trusted Execution Technology
+%		 \end{itemize}
+	       \end{itemize}
+	     \end{itemize}
+
+	     \printgraph{Logo-trusted_computing_group}{0.8}
+
+	     Limite de l'approche :
+
+	     \begin{itemize}
+	     \item Pas de confiance :
+	       \begin{itemize}
+		 \item Chevaux de troie
+	       \end{itemize}
+	     \item Pas de pérennité : 
+	       \begin{itemize}
+		 \item Arrêt de production
+		 \item Changement de protocole
+	       \end{itemize}
+	     \end{itemize}
+	   }
+	   {
+	     Consortium : intel, amd, ibm, microsoft ...
+
+	     Le principe du TCG :
+
+	     \begin{itemize}
+	       \item Assigner une signature à chaque objet informatique (logiciel, par extension matériel).
+	       \item Déléguer à un {\it tiers de confiance} la tâche de vérifier si l'objet manipulé est autorisé à être utilisé sur le système local.
+	     \end{itemize}
+
+	     Enjeux commerciaux != Ouvert et Pérennité.
+	   }
+
+\slidetitle{Nouvelle approche}
+	   {
+	     \begin{itemize}
+	     \item Composants ouverts
+	       \begin{itemize}
+	       \item Pas de fonctionnalités cachées.
+	       \item Pas de secret à conserver.
+	       \end{itemize}
+	     \item Intégration :
+	       \begin{itemize}
+	       \item Field-Programmable Gate Array (FPGA).
+	       \item System On Chip (SOC).
+	       \end{itemize}
+	     \end{itemize}
+
+	     \begin{center}
+	       \begin{minipage}{.4\textwidth}
+		 \printgraph{Logo-opencores}{0.8}
+	       \end{minipage}
+	       \begin{minipage}{.4\textwidth}
+		 \printgraph{Logo-soclib}{0.8}
+	       \end{minipage}
+	     \end{center}
+	   }
+	   {
+	     Composant matériel ouvert = code source disponible = FPGA = prototypage = SOC.
+	   }
+
+\section{Cahier des charges}
+\ContentsCurrent
+
+\slidetitle{Besoins : Cahier des charges}
+	   {
+	     Il faut une architecture :
 	     \begin{description}
-	     \item[Trusted Computing Platform Alliance   :] Le Trusted Computing Group (TCG, nommé jusqu'en 2003 TCPA pour Trusted Computing Platform Alliance) est une consortium d'entreprises d'informatique (Compaq, HP, IBM, Intel, Microsoft, AMD, etc.) visant à sécuriser les équipements et communications informatiques.
-	     \item[Next-generation secure computing base :] Le Next-Generation Secure Computing Base (NGSCB, littéralement : Base d'information sécurisée de nouvelle génération) ou ordinateur sécurisé de la prochaine génération fait partie de la nouvelle architecture de Microsoft pour l'informatique de confiance. Ce projet était connu sous le nom de Palladium.
+	     \item [Ouverte :] Évite les fonctionnalités cachées.
+	     \item [Pérenne :] Évite les problèmes d'approvisionnements.
+	     \item [Paramétrable :] S'adapte aux critères de l'application.
+	     \item [Performante :] Applications nécessitant de la puissance de calculs.
 	     \end{description}
 	   }
-
-\slidetitle{Nouvelle tendance}
-	   {
-	     \begin{itemize}
-	     \item Utilisation de composants ouvert.   \\Evite les fonctionnalités cachés
-	     \item Intégration de System On Chip (SOC).\\Réduit la vunérabilité des communications entre deux chips.
-	     \end{itemize}
-	   }
-	   {
-	   }
-
-\section{Besoins}
-\slidetitle{Besoins}
-	   {
+	   {
+	     Concevoir un cpu pour PFC :
+	     
+	     ouverte, pérenne, paramétrable, performante.
+
+	     Applications cibles : cryptographique.
+	   }
+
+\subsection{Architecture Ouverte}
+\slidetitle{Architecture Ouverte}
+	   {
+	     \begin{itemize}
+	     \item Instruction Set Architecture gratuite.
+	    %\item Présence d'une communauté autour de l'architecture logicielle.
+	     \item Chaîne de compilation disponible et ouverte.
+	     \item Modèle disponible :
+	       \begin{itemize}
+		 \item Modèle systemC-CABA
+		 \item Modèle VHDL-RTL
+	       \end{itemize}
+	     \end{itemize}
+	   }
+	   {
+	     Chaîne de compilation $\Rightarrow$ présence d'une communauté, espère une pérennité des logicielles.
+
+	     VHDL = FPGA
+
+	     SystemC = dévellopement
+	   }
+
+\subsection{Architecture Pérenne}
+\slidetitle{Architecture Pérenne}
+	   {
+	     \begin{itemize}
+	     \item Instruction Set Architecture gratuite.
+	    %\item Présence d'une communauté autour de l'architecture logicielle.
+	     \item Chaîne de compilation disponible et ouverte.
+	     \item Technologie cible flexible : FPGA.
+	     \end{itemize}
+	   }
+	   {
+	     ISA et Modèle disponible = implémentation possible.
+	   }
+
+\subsection{Architecture Paramétrable}
+\slidetitle{Architecture Paramétrable}
+	   {
+	     S'adapter aux critères de l'application :
+	     \begin{itemize}
+	     \item Performance
+	     \item Surface
+	     \item Consommation
+	     \item Temps réel
+	     \item \dots
+	     \end{itemize}
+
+	     Pas un processeur mais plusieurs processeurs.\\
+	     \begin{itemize}
+	       \item[$\Rightarrow$] Générateur d'architecture.
+	       \item[$\Rightarrow$] Technologie cible : FPGA.
+	     \end{itemize}
+   	   }
+	   {
+	     Aucune connaissance à priori des besoins des applications. Peuvent avoir des critères variés ...
+
+	     Pas 1CPU mais plusieurs CPU = ASIC trop onéreux 
+	   }
+
+\subsection{Architecture Performante}
+\slidetitle{Architecture Performante}
+	   {
+	     \begin{center}
+	       {\it Exécution de plusieurs instructions simultanément}
+	     \end{center}
+
+	     Exploitation de toutes les formes de parallélisme.
+
 	     \begin{description}
-	     \item [Open         :] Absence de fonctionnalités cachées. (Cheval de troie)
-	     \item [Configurable :] Adaptable aux besoins des applications.
-	     \item [Performance  :] Application cryptographique.
+	     \item[ILP :] Instruction Level Parallelism
+	     \item[TLP :] Thread      Level Parallelism
+	     \item[DLP :] Data        Level Parallelism
 	     \end{description}
 	   }
@@ -57,49 +186,285 @@
 	   }
 
-\slidetitle{Besoins : Open}
-	   {
-	     \begin{itemize}
-	     \item Instruction Set Architecture libre. (Implémentation possible)
-	     \item Tools Chains présente et libre.
-	     \item Implémentation sur FPGA (Pérennité).	       
-	     \item Présence d'une communauté autour de l'architecture logicielle.
-	     \end{itemize}
-	   }
-	   {
-	   }
-
-\slidetitle{Besoins : Configurable}
-	   {
-	     \begin{itemize}
-	     \item Pas de connaissance préalable du besoin des applications.
-	     \item Toutes les applications non pas les mêmes besoins de Performance / Surface.
-	     \end{itemize}
-	   }
-	   {
-	   }
-
-\slidetitle{Besoins : Performance}
-	   {
-	     Exploitation de toutes les formes de parrallélisme.
+%\subsubsection{ILP}
+\slidetitle{Instruction Level Paralelism}
+	   {
+	     \begin{center}
+	       {\it Exécution simultanée de plusieurs instructions provenant d'un même flux.}
+	     \end{center}
+	     \printgraph{GENERAL_ILP}{1  }
+	   }
+	   {
+	   }
+%\slide
+%	   {
+%	     \begin{description}
+%	     \item[Avantages     :]~
+%	       \begin{itemize}
+%	       \item Exploitation implicite du point de vue logicielle.
+%	       \end{itemize}
+%	     \item[Inconvénients :]~
+%	       \begin{itemize}
+%	       \item Coût quadratique du contrôle.
+%	       \end{itemize}
+%	     \end{description}
+%	   }
+%	   {
+%	   }
+
+
+%\subsubsection{TLP}
+\slidetitle{Thread Level Paralelism}
+	   {
+	     \begin{center}
+	       {\it Exécution simultanée de plusieurs instructions provenant de différents flux.}
+	     \end{center}
+
+	     \printgraph{GENERAL_TLP}{1  }
+	   }
+	   {
+	   }
+
+%\slide
+%	   {
+%	     \begin{description}
+%	     \item[Avantages     :]~
+%	       \begin{itemize}
+%	       \item Implantation très simple : duplication des coeurs
+%	       \item Ressources dédiés aux threads exécutés sur le coeur
+%	       \end{itemize}
+%	     \item[Inconvénients :]~
+%	       \begin{itemize}
+%	       \item Il doit avoir plus de thread que de coeurs afin d'éviter l'oisiveté des coeurs
+%	       \end{itemize}
+%	     \end{description}
+%	   }
+%	   {
+%	   }
+%
+%\slidetitle{TLP - Simulatenous Multi Threading (SMT)}
+%	   {
+%	     \printgraph{GENERAL_TLP-SMT}{1  }
+%	   }
+%	   {
+%	   }
+%
+%\slide
+%	   {
+%	     \begin{description}
+%	     \item[Avantages     :]~
+%	       \begin{itemize}
+%	       \item Implantation très simple et peu coûteuse en surface.
+%	       \item Meilleur exploitation des ressources
+%	       \end{itemize}
+%	     \item[Inconvénients :]~
+%	       \begin{itemize}
+%	       \item Dimensionner le nombre de threads proportionnellement à l'ILP exploitable.
+%	       \end{itemize}
+%	     \end{description}
+%	   }
+%	   {
+%	   }
+
+%\subsubsection{DLP}
+\slidetitle{Data Level Paralelism}
+	   {
+	     \begin{center}
+	       {\it Exécution d'instructions avec plusieurs données. (SIMD)}
+	     \end{center}
+
+	     \printgraph{GENERAL_DLP}{1  }
+	   }
+	   {
+	     Matrice 3x3 + 10
+	   }
+%\slide
+%	   {
+%	     \begin{description}
+%	     \item[Avantages     :]~
+%	       \begin{itemize}
+%	       \item Une instruction SIMD est équivalente à beaucoup d'instructions SISD.
+%	       \end{itemize}
+%	     \item[Inconvénients :]~
+%	       \begin{itemize}
+%	       \item Pas adapter pour les applications qui n'exploite pas le DLP.
+%	       \item Exploitation explicite par le programmeur.
+%	       \end{itemize}
+%	     \end{description}
+%	   }
+%	   {
+%	   }
+%
+
+\slidetitle{Implémentation matérielle}
+	   {
+	     \printgraph{GENERAL_hardware}{.98}
+	   }
+	   {
+	     Streaming SIMD Extensions, généralement abrégé SSE, est un jeu de 70 instructions supplémentaires pour microprocesseurs x86, apparu sur le Pentium III. Le fonctionnement est de type SIMD.
+
+
+	     AltiVec est un ensemble d'instructions SIMD d'opérations en virgule flottante conçu par, et propriété de, Apple, IBM et Motorola (l'AIM alliance), et mis en application sur des versions du PowerPC telle le G4 de Motorola et le G5 d'IBM.
+	   }
+
+\slide
+	   {
 	     \begin{description}
-	     \item [ILP :] Instruction Level Paralelism
-	     \item [TLP :] Thread      Level Paralelism
-	     \item [DLP :] Data        Level Paralelism
+	     \item[ILP]
+	       \begin{itemize}
+	       \item Super Scalaire\\
+	       \item \sout{VLIW}
+		 \begin{itemize}
+		   \item[$\Rightarrow$] Compilateur spécialisé.
+		   \item[$\Rightarrow$] Pas scalable
+		 \end{itemize}
+	       \end{itemize}
+	     \item[TLP]
+	       \begin{itemize}
+	       \item CMP
+		 \begin{itemize}
+		   \item[$\Rightarrow$] Scalable mais sous utilisation des ressources.
+		 \end{itemize}
+	       \item SMT
+		 \begin{itemize}
+		   \item[$\Rightarrow$] Utilisation optimale des ressources mais peu scalable.
+		 \end{itemize}
+	       \item Mixte
+	       \end{itemize}
+	     \item[DLP]
+	       \begin{itemize}
+	       \item Extension SIMD\\
+	       \end{itemize}
 	     \end{description}
 	   }
 	   {
-	   }
-
-\slidetitle{ILP}
-	   {
+	     Mixte : tirer partie du CMP et SMT
+	   }
+
+\section{État actuel}
+\ContentsCurrent
+
+\slidetitle{Processeurs libres existants}
+	   {
+	     \begin{tabular}{l|ccccc}
+	       
+	       {\it Processeur}    & {\it Date} & {\it ISA}            & \multicolumn{2}{c}{{\it Support}} \\
+	                     &      &                & {\it ASIC} & {\it FPGA}                 \\
+	       
+	       \hline
+	       OpenRISC 1200 & 2001 & or1000-ORBIS32 & X & X\\ %&Mono-core, Scalaire 5 étages, 32 bits\\
+	       LEON2         & 2003 & SPARC-V8       & X & X\\ %&Mono-core, Scalaire 5 étages, 32 bits\\
+	       LEON3         & 2005 & SPARC-V8e      & X & X\\ %&Mono-core, Scalaire 7 étages, 32 bits\\
+	       OpenSparcT1   & 2005 & UltraSPARC-V9  & X & X\\
+	       MANIK         & 2006 & MANIK          &   & X\\
+	       aeMB          & 2007 & Xilinx EDK 3.2 &   & X\\ %&Mono-core, Scalaire 3 étages, 32 bits\\
+	       OpenFIRE      & 2007 & Xilinx EDK 6.3 &   & X\\ %&Mono-core, Scalaire 3 étages, 32 bits\\
+	       OpenSparcS1   & 2007 & UltraSPARC-V9  & X & X\\
+	       OpenSparcT2   &$>$2007 & UltraSPARC-V9  &   &  \\
+	     \end{tabular}
+	   }
+	   {
+	     Xilinx EDK 3.2 : 2003
+
+	     Xilinx EDK 6.3 : 2004
+
+	     \begin{tabular}{l|cccc}
+	       
+	       {\it Processeur}    & FPGA & taille & freq (Mhz) & remarque\\
+	       
+	       \hline
+	       OpenRISC 1200 &  statix 2 & 3000 & 33 & sans cache\\
+	       LEON2         &  virtex 2 & 5000 + RAM & 80 & \\
+	       LEON3         &  ? & 3500 & 125 & \\
+	       MANIK         &  &  & & \\
+	       aeMB          &  &  & & \\
+	       OpenFIRE      &  virtex 2 & 641 & 100\\
+	     \end{tabular}
+
+	     
+	     Xilinx XC4VLX200  	SPARC  	FPU  	CCX
+	     LUTs 	134,973 	13,863 	25,090
+	     
+	     
+	     With FPGA\_SYN, FPGA\_SYN\_1THREAD, and FPGA\_SYN\_NO\_SPU options:
+	     Xilinx XC4VFX100 	SPARC 	FPU 	CCX
+	     LUTs 	40,613 	9,398 	26,051
+	     
+	     
+	     
+	     With FPGA\_SYN and FPGA\_SYN\_NO\_SPU options (4 threaded core):
+	     Xilinx XC4VFX100 	SPARC 	FPU 	CCX
+	     LUTs 	68,476 	9,398 	26,051
+	   }
+	   
+\slidetitle{État actuel}
+	   {
+	     Il existe plusieurs processeurs libres, mais :
+
+	     \begin{itemize}
+	     \item Aucun processeur n'exploite l'ILP.
+	     \item Les paramètres concernent principalement le cache.
+	     \item Seuls les modèles de l'OpenSPARC exploitent le TLP.
+	     \end{itemize}
+	   }
+	   {
+	   }
+
+%\slidetitle{Fonction de coûts}
+%	   {
+%	     Comparaison de deux instances du générateur :
+%
+%	     \begin{itemize}
+%	     \item Soit : obtenir le meilleur compromis Performance / Complexité. 
+%	       \begin{itemize}
+%	       \item Performance : nombre de cycles nécessaire pour exécuter les Benchmarks.
+%	       \item Complexité  : surface occupée du FPGA.
+%	       \end{itemize}
+%	     \item Soit : 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
+%
+%	     
+%	   }
+
+\section{Morpheo}
+\ContentsCurrent
+
+%\slidetitle{Morpheo}
+%	   {
+%	     \printgraph{MORPHEO_service}{0.75}
+%	   }
+%	   {
+%	   }
+
+\subsection{Paramètres}
+\slidetitle{Paramètres}
+	   {
+	     3 types :
 	     \begin{description}
-	     \item[Avantages     :]~
-	       \begin{itemize}
-	       \item Exploitation implicite.	       
-	       \end{itemize}
-	     \item[Inconvénients :]~
-	       \begin{itemize}
-	       \item Coût quadratique du contrôle.
-	       \end{itemize}
+	     \item [Global] 
+	       \begin{itemize}
+		 \item Occurrence de chaque entité [1:8]
+		 \item Nombre d'instructions pour chaque entité [1:8]
+	       \end{itemize}
+	     \item [Local] 
+	       \begin{itemize}
+		 \item Présence/Absence du réseau de bypass
+		 \item Nombre de registres physiques [32:512]
+		 \item Nombre de ports du banc de registres [2:16]
+		 \item Taille des files d'attente (fetch\_queue, \dots) [2:8]
+		 \item Taille des structures internes (BTB, RAS, \dots)
+		 \item Type et taille du prédicteur de branchement
+		 \item Type des unités d'exécution
+	       \end{itemize}
+	     \item [Routage]
+	       \begin{itemize}
+		 \item Entre les différentes entités
+	       \end{itemize}	
 	     \end{description}
 	   }
@@ -107,98 +472,6 @@
 	   }
 
-\slidetitle{TLP - Chip Multi Processor (CMP)}
-	   {
-	     \begin{description}
-	     \item[Avantages     :]~
-	       \begin{itemize}
-	       \item Implémentation très simple : duplication des cores
-	       \item Ressources dédiés au thread executé sur le core
-	       \end{itemize}
-	     \item[Inconvénients :]~
-	       \begin{itemize}
-	       \item Il doit avoir plus de thread que de core afin d'éviter l'oisiveté des cores.
-	       \end{itemize}
-	     \end{description}
-	   }
-	   {
-	   }
-
-\slidetitle{TLP - Simulatenous Multi Threading (SMT)}
-	   {
-	     \begin{description}
-	     \item[Avantages     :]~
-	       \begin{itemize}
-	       \item Implémentation très simple et peu coûteuse en surface.
-	       \item Meilleur exploitation des ressources
-	       \end{itemize}
-	     \item[Inconvénients :]~
-	       \begin{itemize}
-	       \item Dimensionnement du nombre de thread proportionnel à l'ILP exploitable.
-	       \end{itemize}
-	     \end{description}
-	   }
-	   {
-	   }
-
-\slidetitle{DLP}
-	   {
-	     \begin{description}
-	     \item[Avantages     :]~
-	       \begin{itemize}
-	       \item Une instruction SIMD est équivalente à beaucoup d'instructions SISD.
-	       \end{itemize}
-	     \item[Inconvénients :]~
-	       \begin{itemize}
-	       \item Pas adapter pour les applications qui n'exploite pas le DLP.
-	       \item Exploitation explicite par le programmeur.
-	       \end{itemize}
-	     \end{description}
-	   }
-	   {
-	   }
-
-	   
-\slidetitle{Etat de l'art}
-	   {
-	     \begin{description}
-	     \item [sofcore :]~
-	       \begin{description}
-	       \item [Commercial :] Nios, MicroBlaze, ...
-	       \item [Libre      :] OpenRISC 1200, Leon 2/3, OpenSPARC T1/S1
-	       \end{description}
-	       {\it Non : Peu configurable, faible exploitation du paralélisme d'instruction}
-	     \item [Simulateur :] SimpleScalar, SMTSim, ...\\
-	       {\it Non : Simulateur non prévut pour avoir une synthèse}
-	     \item [Hardcore :] POWER5, Intel Pentium 3/4, MIPS R10000, ...\\
-	       {\it Non : ISA non libre}
-	     \end{description}
-	   }
-	   {
-	   }
-
-\slidetitle{Objectif}
-	   {
-	   }
-	   {
-	   }
-
-\slidetitle{Service offert}
-	   {
-	     \printgraph{MORPHEO_service}{0.75}
-	   }
-	   {
-	   }
-
-\slidetitle{Fonction de coûts}
-	   {
-	   }
-	   {
-	   }
-
-\section{Morpheo}
-%\ContentsCurrent
-
-\subsection{Micro Architecture}
-\slidetitle{Micro Architecture : Overview}
+\subsection{Architecture interne}
+\slidetitle{Architecture interne}
 	   {
 	     \printgraph{MORPHEO_micro_architecture-overview}{0.48}
@@ -207,34 +480,120 @@
 	     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.
+	     \item[Front end           :] Amène des paquets d'instructions en séquence, et les décodes. Calcules les adresses suivantes (spéculation) et maintiens l'état des threads (idle, wait, run ...)
+	     \item[Out Of Order Engine :] Renomme les registres (annulations des dépendances RAW, WAW et WAR). Re Order Buffer : mettre à jour l'état du contexte dans l'ordre d'arriver 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}
-	   }
-	   {
-	   }
-
+\slide
+	   {
+	     \printgraph{MORPHEO_micro_architecture-ex01}{0.48}
+	   }
+	   {
+	     Hypothèse de départ
+
+	     SMT 2
+	   }
+
+\slide
+	   {
+	     \printgraph{MORPHEO_micro_architecture-ex02}{0.48}
+	   }
+	   {
+	     contexte x4 prédicteur dédié
+	   }
+
+\slide
+	   {
+	     \printgraph{MORPHEO_micro_architecture-ex03}{0.48}
+	   }
+	   {
+	     Select ...
+	   }
+
+\slide
+	   {
+	     \printgraph{MORPHEO_micro_architecture-ex04}{0.48}
+	   }
+	   {
+	     possibilité de CMP
+	   }
+
+
+%\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}
+%	   }
+%	   {
+%	   }
+%
+\section{Validation fonctionnelle}
+\ContentsCurrent
+
+\subsection{Validation du modèle systemC/CABA}
 
 \slidetitle{Environnement de simulation}
 	   {
+	     \begin{itemize}
+	     \item Benchmark SPECINT2k.
+	       \begin{tabular}{ll}
+		 164.gzip   & Compression.                          \\
+		 175.vpr    & Placement et routage de circuit FPGA. \\
+		 181.mcf    & Optimisation combinatoire.	    \\
+		 255.vortex & Object-oriented Database.		    \\
+		 256.bzip2  & Compression.			    \\
+		 300.twolf  & Simulateur de placement et de routage.\\
+	       \end{tabular}
+	     \item Appel système : librairie {\it newlib}.
+	     \item Plate-forme matérielle ``custom''
+	       \begin{itemize}
+		 \item Gestion de l'endienness.
+		 \item Pont entre la simulation et le système hôte.
+	       \end{itemize}
+	     \end{itemize}
+	   }
+	   {
+	     sim2os :
+	     \begin{itemize}
+             \item SERVICE\_OPEN 
+             \item SERVICE\_CLOSE
+             \item SERVICE\_READ 
+             \item SERVICE\_WRITE
+             \item SERVICE\_TIME 
+             \item SERVICE\_CLOCK
+             \item SERVICE\_LSEEK
+	     \end{itemize}
+	   }
+
+\slidetitle{Hypothèse de travail}
+	   {
+	     Architecture de références
+	     \begin{itemize}
+	       \item 4 Threads
+	       \item 8 Unités d'exécutions 
+	       \item 8 Instructions lancées par cycle
+	     \end{itemize}
+	     
+	     Variation de l'architecture 
+	     \begin{itemize}
+	     \item Nombre de cache de premier niveau
+	     \item Nombre d'unité de lancement (Front\_End et OoO\_Engine)
+	     \item Nombre de contexte matériel
+	     \item Partage des unités fonctionnelles
+	     \end{itemize}
 	   }
 	   {
@@ -243,292 +602,72 @@
 \slidetitle{Résultats}
 	   {
-	   }
-	   {
-	   }
-
-\slidetitle{Morpheo on FPGA}
-	   {
-	   }
-	   {
-	   }
-
-
-
-%\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{}{}
+	     \begin{center}
+	       Variation du partage des ressources entre les contextes matérielles.
+	     \end{center}
+	     %Rapport entre la performance MT sur la performance ST.
+
+	     \printgraph{simulation_performance}{0.7}	     
+	   }
+	   {
+	     DIRE : ST / MT.
+
+	     MT = exécution parallèle des benchmarks
+
+	     ST = exécution séquentielle des benchmarks
+
+
+	     ordonnée : IPC
+
+	     abscisse : degré de partage
+	   }
+
+\slide
+	   {
+	     %Rapport entre la performance MT sur la performance ST.
+
+	     \printgraph{simulation_surface}{0.7}	     
+	   }
+	   {
+	   }
+
+\subsection{Méthodologie pour le modèle VHDL/RTL}
+
+\slidetitle{Méthodologie pour l'écriture du générateur VHDL}
+	   {
+	     \printgraph{VHDL_methodologie}{0.7}
+	   }
+	   {
+	     FPGA : virtex5LX 330
+	   }
+
+\slidetitle{Exemple : Banc de registres 512x32 bits}
+	   {
+	     \printgraph{synthese_FPGA-registerfile}{0.7}
+	   }
+	   {
+	   }
+
+\slidetitle{Planning}
+	   {
+	     \begin{itemize}
+	     \item Optimisation du modèle SytemC/CABA
+	     \item Écriture du générateur de VHDL/RTL
+	     \item Réalisation d'un démonstrateur : 
+	       \begin{itemize}
+	       \item synthèse sur un FPGA d'une instance du générateur.
+	       \item exécution d'une application de test
+	       \end{itemize}
+	     \end{itemize}
+	   }
+	   {
+	   }
+
+\slidetitle{Conclusion}
+	   {
+	     \begin{itemize}
+	       \item Définition d'un processeur ouvert, haute performance, paramétrable et pérenne.
+	       \item Disposer d'un outil d'aide à l'exploration architecturale
+	     \end{itemize}
+	   }
+	   {
+	   }
