Ignore:
Timestamp:
Sep 28, 2007, 2:58:08 PM (17 years ago)
Author:
rosiere
Message:
  • VHDL - RegisterFile_Multi_Banked (only partial_crossbar)
  • SystemC - modif Component, interface and co -> ajout du type Tusage_T pour instancier un coposant mais ne demander que le VHDL ou le systemC.
  • Séminaire interne
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation-internal_seminary_overview/fr/root.tex

    r52 r57  
    11\section{Motivations}
    2 
    3 %\ContentsCurrent
    4 
    5 \slidetitle{Problématique}
    6            {
    7              On désire une plateforme de confiance totale :
    8              \begin{itemize}
    9              \item La plateforme-matérielle est composée de processeur(s) généraliste(s).
    10              \item La plateforme-logicielle est composée de plusieurs applications qui peuvent être cryptographique.
    11              \end{itemize}
    12 
    13              Notre travail consiste à faire le processeur pour un tel système.
    14            }
    15            {
    16            }
    17 
    18 \slidetitle{Ancienne tendance}
     2\ContentsCurrent
     3
     4\slidetitle{Cadre de la thèse}
     5           {
     6             \begin{itemize}
     7             \item {\it Cadre :}\newline
     8               Collaboration avec Bull sur le projet PFC\newline
     9               (Plate-forme de confiance totale)
     10             \item {\it Notre contribution :}\newline
     11               Réalisation d'un générateur de processeur ouvert.
     12             \end{itemize}
     13           }
     14           {
     15             Expliquer PFC
     16           }
     17
     18\slidetitle{Approche actuelle fondée sur le secret}
    1919           {
    2020             \begin{itemize}
    2121             \item Composants fermés.
    22              \item Label de sécurité.
     22             \item Consortium de certification
    2323               \begin{itemize}
    2424               \item Trusted Computing Platform Alliance
    25                \item Next-Generation Secure Computing Base
    26                \end{itemize}
    27              \item Plateforme multi-chip.
    28              \end{itemize}
    29            }
    30            {
     25%                \begin{itemize}
     26%                \item Next-Generation Secure Computing Base
     27%                \item Intel Trusted Execution Technology
     28%                \end{itemize}
     29               \end{itemize}
     30             \end{itemize}
     31
     32             \printgraph{Logo-trusted_computing_group}{0.8}
     33
     34             Limite de l'approche :
     35
     36             \begin{itemize}
     37             \item Pas de confiance :
     38               \begin{itemize}
     39                 \item Chevaux de troie
     40               \end{itemize}
     41             \item Pas de pérennité :
     42               \begin{itemize}
     43                 \item Arrêt de production
     44                 \item Changement de protocole
     45               \end{itemize}
     46             \end{itemize}
     47           }
     48           {
     49             Consortium : intel, amd, ibm, microsoft ...
     50
     51             Le principe du TCG :
     52
     53             \begin{itemize}
     54               \item Assigner une signature à chaque objet informatique (logiciel, par extension matériel).
     55               \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.
     56             \end{itemize}
     57
     58             Enjeux commerciaux != Ouvert et Pérennité.
     59           }
     60
     61\slidetitle{Nouvelle approche}
     62           {
     63             \begin{itemize}
     64             \item Composants ouverts
     65               \begin{itemize}
     66               \item Pas de fonctionnalités cachées.
     67               \item Pas de secret à conserver.
     68               \end{itemize}
     69             \item Intégration :
     70               \begin{itemize}
     71               \item Field-Programmable Gate Array (FPGA).
     72               \item System On Chip (SOC).
     73               \end{itemize}
     74             \end{itemize}
     75
     76             \begin{center}
     77               \begin{minipage}{.4\textwidth}
     78                 \printgraph{Logo-opencores}{0.8}
     79               \end{minipage}
     80               \begin{minipage}{.4\textwidth}
     81                 \printgraph{Logo-soclib}{0.8}
     82               \end{minipage}
     83             \end{center}
     84           }
     85           {
     86             Composant matériel ouvert = code source disponible = FPGA = prototypage = SOC.
     87           }
     88
     89\section{Cahier des charges}
     90\ContentsCurrent
     91
     92\slidetitle{Besoins : Cahier des charges}
     93           {
     94             Il faut une architecture :
    3195             \begin{description}
    32              \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.
    33              \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.
     96             \item [Ouverte :] Évite les fonctionnalités cachées.
     97             \item [Pérenne :] Évite les problèmes d'approvisionnements.
     98             \item [Paramétrable :] S'adapte aux critères de l'application.
     99             \item [Performante :] Applications nécessitant de la puissance de calculs.
    34100             \end{description}
    35101           }
    36 
    37 \slidetitle{Nouvelle tendance}
    38            {
    39              \begin{itemize}
    40              \item Utilisation de composants ouvert.   \\Evite les fonctionnalités cachés
    41              \item Intégration de System On Chip (SOC).\\Réduit la vunérabilité des communications entre deux chips.
    42              \end{itemize}
    43            }
    44            {
    45            }
    46 
    47 \section{Besoins}
    48 \slidetitle{Besoins}
    49            {
     102           {
     103             Concevoir un cpu pour PFC :
     104             
     105             ouverte, pérenne, paramétrable, performante.
     106
     107             Applications cibles : cryptographique.
     108           }
     109
     110\subsection{Architecture Ouverte}
     111\slidetitle{Architecture Ouverte}
     112           {
     113             \begin{itemize}
     114             \item Instruction Set Architecture gratuite.
     115            %\item Présence d'une communauté autour de l'architecture logicielle.
     116             \item Chaîne de compilation disponible et ouverte.
     117             \item Modèle disponible :
     118               \begin{itemize}
     119                 \item Modèle systemC-CABA
     120                 \item Modèle VHDL-RTL
     121               \end{itemize}
     122             \end{itemize}
     123           }
     124           {
     125             Chaîne de compilation $\Rightarrow$ présence d'une communauté, espère une pérennité des logicielles.
     126
     127             VHDL = FPGA
     128
     129             SystemC = dévellopement
     130           }
     131
     132\subsection{Architecture Pérenne}
     133\slidetitle{Architecture Pérenne}
     134           {
     135             \begin{itemize}
     136             \item Instruction Set Architecture gratuite.
     137            %\item Présence d'une communauté autour de l'architecture logicielle.
     138             \item Chaîne de compilation disponible et ouverte.
     139             \item Technologie cible flexible : FPGA.
     140             \end{itemize}
     141           }
     142           {
     143             ISA et Modèle disponible = implémentation possible.
     144           }
     145
     146\subsection{Architecture Paramétrable}
     147\slidetitle{Architecture Paramétrable}
     148           {
     149             S'adapter aux critères de l'application :
     150             \begin{itemize}
     151             \item Performance
     152             \item Surface
     153             \item Consommation
     154             \item Temps réel
     155             \item \dots
     156             \end{itemize}
     157
     158             Pas un processeur mais plusieurs processeurs.\\
     159             \begin{itemize}
     160               \item[$\Rightarrow$] Générateur d'architecture.
     161               \item[$\Rightarrow$] Technologie cible : FPGA.
     162             \end{itemize}
     163           }
     164           {
     165             Aucune connaissance à priori des besoins des applications. Peuvent avoir des critères variés ...
     166
     167             Pas 1CPU mais plusieurs CPU = ASIC trop onéreux
     168           }
     169
     170\subsection{Architecture Performante}
     171\slidetitle{Architecture Performante}
     172           {
     173             \begin{center}
     174               {\it Exécution de plusieurs instructions simultanément}
     175             \end{center}
     176
     177             Exploitation de toutes les formes de parallélisme.
     178
    50179             \begin{description}
    51              \item [Open         :] Absence de fonctionnalités cachées. (Cheval de troie)
    52              \item [Configurable :] Adaptable aux besoins des applications.
    53              \item [Performance  :] Application cryptographique.
     180             \item[ILP :] Instruction Level Parallelism
     181             \item[TLP :] Thread      Level Parallelism
     182             \item[DLP :] Data        Level Parallelism
    54183             \end{description}
    55184           }
     
    57186           }
    58187
    59 \slidetitle{Besoins : Open}
    60            {
    61              \begin{itemize}
    62              \item Instruction Set Architecture libre. (Implémentation possible)
    63              \item Tools Chains présente et libre.
    64              \item Implémentation sur FPGA (Pérennité).       
    65              \item Présence d'une communauté autour de l'architecture logicielle.
    66              \end{itemize}
    67            }
    68            {
    69            }
    70 
    71 \slidetitle{Besoins : Configurable}
    72            {
    73              \begin{itemize}
    74              \item Pas de connaissance préalable du besoin des applications.
    75              \item Toutes les applications non pas les mêmes besoins de Performance / Surface.
    76              \end{itemize}
    77            }
    78            {
    79            }
    80 
    81 \slidetitle{Besoins : Performance}
    82            {
    83              Exploitation de toutes les formes de parrallélisme.
     188%\subsubsection{ILP}
     189\slidetitle{Instruction Level Paralelism}
     190           {
     191             \begin{center}
     192               {\it Exécution simultanée de plusieurs instructions provenant d'un même flux.}
     193             \end{center}
     194             \printgraph{GENERAL_ILP}{1  }
     195           }
     196           {
     197           }
     198%\slide
     199%          {
     200%            \begin{description}
     201%            \item[Avantages     :]~
     202%              \begin{itemize}
     203%              \item Exploitation implicite du point de vue logicielle.
     204%              \end{itemize}
     205%            \item[Inconvénients :]~
     206%              \begin{itemize}
     207%              \item Coût quadratique du contrôle.
     208%              \end{itemize}
     209%            \end{description}
     210%          }
     211%          {
     212%          }
     213
     214
     215%\subsubsection{TLP}
     216\slidetitle{Thread Level Paralelism}
     217           {
     218             \begin{center}
     219               {\it Exécution simultanée de plusieurs instructions provenant de différents flux.}
     220             \end{center}
     221
     222             \printgraph{GENERAL_TLP}{1  }
     223           }
     224           {
     225           }
     226
     227%\slide
     228%          {
     229%            \begin{description}
     230%            \item[Avantages     :]~
     231%              \begin{itemize}
     232%              \item Implantation très simple : duplication des coeurs
     233%              \item Ressources dédiés aux threads exécutés sur le coeur
     234%              \end{itemize}
     235%            \item[Inconvénients :]~
     236%              \begin{itemize}
     237%              \item Il doit avoir plus de thread que de coeurs afin d'éviter l'oisiveté des coeurs
     238%              \end{itemize}
     239%            \end{description}
     240%          }
     241%          {
     242%          }
     243%
     244%\slidetitle{TLP - Simulatenous Multi Threading (SMT)}
     245%          {
     246%            \printgraph{GENERAL_TLP-SMT}{1  }
     247%          }
     248%          {
     249%          }
     250%
     251%\slide
     252%          {
     253%            \begin{description}
     254%            \item[Avantages     :]~
     255%              \begin{itemize}
     256%              \item Implantation très simple et peu coûteuse en surface.
     257%              \item Meilleur exploitation des ressources
     258%              \end{itemize}
     259%            \item[Inconvénients :]~
     260%              \begin{itemize}
     261%              \item Dimensionner le nombre de threads proportionnellement à l'ILP exploitable.
     262%              \end{itemize}
     263%            \end{description}
     264%          }
     265%          {
     266%          }
     267
     268%\subsubsection{DLP}
     269\slidetitle{Data Level Paralelism}
     270           {
     271             \begin{center}
     272               {\it Exécution d'instructions avec plusieurs données. (SIMD)}
     273             \end{center}
     274
     275             \printgraph{GENERAL_DLP}{1  }
     276           }
     277           {
     278             Matrice 3x3 + 10
     279           }
     280%\slide
     281%          {
     282%            \begin{description}
     283%            \item[Avantages     :]~
     284%              \begin{itemize}
     285%              \item Une instruction SIMD est équivalente à beaucoup d'instructions SISD.
     286%              \end{itemize}
     287%            \item[Inconvénients :]~
     288%              \begin{itemize}
     289%              \item Pas adapter pour les applications qui n'exploite pas le DLP.
     290%              \item Exploitation explicite par le programmeur.
     291%              \end{itemize}
     292%            \end{description}
     293%          }
     294%          {
     295%          }
     296%
     297
     298\slidetitle{Implémentation matérielle}
     299           {
     300             \printgraph{GENERAL_hardware}{.98}
     301           }
     302           {
     303             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.
     304
     305
     306             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.
     307           }
     308
     309\slide
     310           {
    84311             \begin{description}
    85              \item [ILP :] Instruction Level Paralelism
    86              \item [TLP :] Thread      Level Paralelism
    87              \item [DLP :] Data        Level Paralelism
     312             \item[ILP]
     313               \begin{itemize}
     314               \item Super Scalaire\\
     315               \item \sout{VLIW}
     316                 \begin{itemize}
     317                   \item[$\Rightarrow$] Compilateur spécialisé.
     318                   \item[$\Rightarrow$] Pas scalable
     319                 \end{itemize}
     320               \end{itemize}
     321             \item[TLP]
     322               \begin{itemize}
     323               \item CMP
     324                 \begin{itemize}
     325                   \item[$\Rightarrow$] Scalable mais sous utilisation des ressources.
     326                 \end{itemize}
     327               \item SMT
     328                 \begin{itemize}
     329                   \item[$\Rightarrow$] Utilisation optimale des ressources mais peu scalable.
     330                 \end{itemize}
     331               \item Mixte
     332               \end{itemize}
     333             \item[DLP]
     334               \begin{itemize}
     335               \item Extension SIMD\\
     336               \end{itemize}
    88337             \end{description}
    89338           }
    90339           {
    91            }
    92 
    93 \slidetitle{ILP}
    94            {
     340             Mixte : tirer partie du CMP et SMT
     341           }
     342
     343\section{État actuel}
     344\ContentsCurrent
     345
     346\slidetitle{Processeurs libres existants}
     347           {
     348             \begin{tabular}{l|ccccc}
     349               
     350               {\it Processeur}    & {\it Date} & {\it ISA}            & \multicolumn{2}{c}{{\it Support}} \\
     351                             &      &                & {\it ASIC} & {\it FPGA}                 \\
     352               
     353               \hline
     354               OpenRISC 1200 & 2001 & or1000-ORBIS32 & X & X\\ %&Mono-core, Scalaire 5 étages, 32 bits\\
     355               LEON2         & 2003 & SPARC-V8       & X & X\\ %&Mono-core, Scalaire 5 étages, 32 bits\\
     356               LEON3         & 2005 & SPARC-V8e      & X & X\\ %&Mono-core, Scalaire 7 étages, 32 bits\\
     357               OpenSparcT1   & 2005 & UltraSPARC-V9  & X & X\\
     358               MANIK         & 2006 & MANIK          &   & X\\
     359               aeMB          & 2007 & Xilinx EDK 3.2 &   & X\\ %&Mono-core, Scalaire 3 étages, 32 bits\\
     360               OpenFIRE      & 2007 & Xilinx EDK 6.3 &   & X\\ %&Mono-core, Scalaire 3 étages, 32 bits\\
     361               OpenSparcS1   & 2007 & UltraSPARC-V9  & X & X\\
     362               OpenSparcT2   &$>$2007 & UltraSPARC-V9  &   &  \\
     363             \end{tabular}
     364           }
     365           {
     366             Xilinx EDK 3.2 : 2003
     367
     368             Xilinx EDK 6.3 : 2004
     369
     370             \begin{tabular}{l|cccc}
     371               
     372               {\it Processeur}    & FPGA & taille & freq (Mhz) & remarque\\
     373               
     374               \hline
     375               OpenRISC 1200 &  statix 2 & 3000 & 33 & sans cache\\
     376               LEON2         &  virtex 2 & 5000 + RAM & 80 & \\
     377               LEON3         &  ? & 3500 & 125 & \\
     378               MANIK         &  &  & & \\
     379               aeMB          &  &  & & \\
     380               OpenFIRE      &  virtex 2 & 641 & 100\\
     381             \end{tabular}
     382
     383             
     384             Xilinx XC4VLX200   SPARC   FPU     CCX
     385             LUTs       134,973         13,863  25,090
     386             
     387             
     388             With FPGA\_SYN, FPGA\_SYN\_1THREAD, and FPGA\_SYN\_NO\_SPU options:
     389             Xilinx XC4VFX100   SPARC   FPU     CCX
     390             LUTs       40,613  9,398   26,051
     391             
     392             
     393             
     394             With FPGA\_SYN and FPGA\_SYN\_NO\_SPU options (4 threaded core):
     395             Xilinx XC4VFX100   SPARC   FPU     CCX
     396             LUTs       68,476  9,398   26,051
     397           }
     398           
     399\slidetitle{État actuel}
     400           {
     401             Il existe plusieurs processeurs libres, mais :
     402
     403             \begin{itemize}
     404             \item Aucun processeur n'exploite l'ILP.
     405             \item Les paramètres concernent principalement le cache.
     406             \item Seuls les modèles de l'OpenSPARC exploitent le TLP.
     407             \end{itemize}
     408           }
     409           {
     410           }
     411
     412%\slidetitle{Fonction de coûts}
     413%          {
     414%            Comparaison de deux instances du générateur :
     415%
     416%            \begin{itemize}
     417%            \item Soit : obtenir le meilleur compromis Performance / Complexité.
     418%              \begin{itemize}
     419%              \item Performance : nombre de cycles nécessaire pour exécuter les Benchmarks.
     420%              \item Complexité  : surface occupée du FPGA.
     421%              \end{itemize}
     422%            \item Soit : obtenir le meilleur partage des ressources entre les contextes matériels. (Gain Performance / Coût surface).
     423%              \begin{itemize}
     424%              \item Gain en performance : rapport entre la performance MT sur la performance ST.
     425%              \item Coût en surface     : rapport entre la surface     MT sur la surface     ST.
     426%              \end{itemize}
     427%            \end{itemize}
     428%          }
     429%          {
     430%            benchmark : SPECINT2k, Dhrystone
     431%
     432%           
     433%          }
     434
     435\section{Morpheo}
     436\ContentsCurrent
     437
     438%\slidetitle{Morpheo}
     439%          {
     440%            \printgraph{MORPHEO_service}{0.75}
     441%          }
     442%          {
     443%          }
     444
     445\subsection{Paramètres}
     446\slidetitle{Paramètres}
     447           {
     448             3 types :
    95449             \begin{description}
    96              \item[Avantages     :]~
    97                \begin{itemize}
    98                \item Exploitation implicite.           
    99                \end{itemize}
    100              \item[Inconvénients :]~
    101                \begin{itemize}
    102                \item Coût quadratique du contrôle.
    103                \end{itemize}
     450             \item [Global]
     451               \begin{itemize}
     452                 \item Occurrence de chaque entité [1:8]
     453                 \item Nombre d'instructions pour chaque entité [1:8]
     454               \end{itemize}
     455             \item [Local]
     456               \begin{itemize}
     457                 \item Présence/Absence du réseau de bypass
     458                 \item Nombre de registres physiques [32:512]
     459                 \item Nombre de ports du banc de registres [2:16]
     460                 \item Taille des files d'attente (fetch\_queue, \dots) [2:8]
     461                 \item Taille des structures internes (BTB, RAS, \dots)
     462                 \item Type et taille du prédicteur de branchement
     463                 \item Type des unités d'exécution
     464               \end{itemize}
     465             \item [Routage]
     466               \begin{itemize}
     467                 \item Entre les différentes entités
     468               \end{itemize}   
    104469             \end{description}
    105470           }
     
    107472           }
    108473
    109 \slidetitle{TLP - Chip Multi Processor (CMP)}
    110            {
    111              \begin{description}
    112              \item[Avantages     :]~
    113                \begin{itemize}
    114                \item Implémentation très simple : duplication des cores
    115                \item Ressources dédiés au thread executé sur le core
    116                \end{itemize}
    117              \item[Inconvénients :]~
    118                \begin{itemize}
    119                \item Il doit avoir plus de thread que de core afin d'éviter l'oisiveté des cores.
    120                \end{itemize}
    121              \end{description}
    122            }
    123            {
    124            }
    125 
    126 \slidetitle{TLP - Simulatenous Multi Threading (SMT)}
    127            {
    128              \begin{description}
    129              \item[Avantages     :]~
    130                \begin{itemize}
    131                \item Implémentation très simple et peu coûteuse en surface.
    132                \item Meilleur exploitation des ressources
    133                \end{itemize}
    134              \item[Inconvénients :]~
    135                \begin{itemize}
    136                \item Dimensionnement du nombre de thread proportionnel à l'ILP exploitable.
    137                \end{itemize}
    138              \end{description}
    139            }
    140            {
    141            }
    142 
    143 \slidetitle{DLP}
    144            {
    145              \begin{description}
    146              \item[Avantages     :]~
    147                \begin{itemize}
    148                \item Une instruction SIMD est équivalente à beaucoup d'instructions SISD.
    149                \end{itemize}
    150              \item[Inconvénients :]~
    151                \begin{itemize}
    152                \item Pas adapter pour les applications qui n'exploite pas le DLP.
    153                \item Exploitation explicite par le programmeur.
    154                \end{itemize}
    155              \end{description}
    156            }
    157            {
    158            }
    159 
    160            
    161 \slidetitle{Etat de l'art}
    162            {
    163              \begin{description}
    164              \item [sofcore :]~
    165                \begin{description}
    166                \item [Commercial :] Nios, MicroBlaze, ...
    167                \item [Libre      :] OpenRISC 1200, Leon 2/3, OpenSPARC T1/S1
    168                \end{description}
    169                {\it Non : Peu configurable, faible exploitation du paralélisme d'instruction}
    170              \item [Simulateur :] SimpleScalar, SMTSim, ...\\
    171                {\it Non : Simulateur non prévut pour avoir une synthèse}
    172              \item [Hardcore :] POWER5, Intel Pentium 3/4, MIPS R10000, ...\\
    173                {\it Non : ISA non libre}
    174              \end{description}
    175            }
    176            {
    177            }
    178 
    179 \slidetitle{Objectif}
    180            {
    181            }
    182            {
    183            }
    184 
    185 \slidetitle{Service offert}
    186            {
    187              \printgraph{MORPHEO_service}{0.75}
    188            }
    189            {
    190            }
    191 
    192 \slidetitle{Fonction de coûts}
    193            {
    194            }
    195            {
    196            }
    197 
    198 \section{Morpheo}
    199 %\ContentsCurrent
    200 
    201 \subsection{Micro Architecture}
    202 \slidetitle{Micro Architecture : Overview}
     474\subsection{Architecture interne}
     475\slidetitle{Architecture interne}
    203476           {
    204477             \printgraph{MORPHEO_micro_architecture-overview}{0.48}
     
    207480             3 grandes parties :
    208481             \begin{description}
    209              \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 ...)
    210              \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.
    211              \item[Execution Loop :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres.
     482             \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 ...)
     483             \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.
     484             \item[Execution Loop      :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres.
    212485             \end{description}
    213486           }
    214487
    215 \slidetitle{Micro Architecture : Front end}
    216            {
    217              \printgraph{MORPHEO_micro_architecture-front_end}{0.7}
    218            }
    219            {
    220            }
    221 
    222 \slidetitle{Micro Architecture : Out Of Order Engine}
    223            {
    224              \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7}
    225            }
    226            {
    227            }
    228 
    229 \slidetitle{Micro Architecture : Execution Loop}
    230            {
    231              \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7}
    232            }
    233            {
    234            }
    235 
     488\slide
     489           {
     490             \printgraph{MORPHEO_micro_architecture-ex01}{0.48}
     491           }
     492           {
     493             Hypothèse de départ
     494
     495             SMT 2
     496           }
     497
     498\slide
     499           {
     500             \printgraph{MORPHEO_micro_architecture-ex02}{0.48}
     501           }
     502           {
     503             contexte x4 prédicteur dédié
     504           }
     505
     506\slide
     507           {
     508             \printgraph{MORPHEO_micro_architecture-ex03}{0.48}
     509           }
     510           {
     511             Select ...
     512           }
     513
     514\slide
     515           {
     516             \printgraph{MORPHEO_micro_architecture-ex04}{0.48}
     517           }
     518           {
     519             possibilité de CMP
     520           }
     521
     522
     523%\slidetitle{Micro Architecture : Front end}
     524%          {
     525%            \printgraph{MORPHEO_micro_architecture-front_end}{0.7}
     526%          }
     527%          {
     528%          }
     529%
     530%\slidetitle{Micro Architecture : Out Of Order Engine}
     531%          {
     532%            \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7}
     533%          }
     534%          {
     535%          }
     536%
     537%\slidetitle{Micro Architecture : Execution Loop}
     538%          {
     539%            \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7}
     540%          }
     541%          {
     542%          }
     543%
     544\section{Validation fonctionnelle}
     545\ContentsCurrent
     546
     547\subsection{Validation du modèle systemC/CABA}
    236548
    237549\slidetitle{Environnement de simulation}
    238550           {
     551             \begin{itemize}
     552             \item Benchmark SPECINT2k.
     553               \begin{tabular}{ll}
     554                 164.gzip   & Compression.                          \\
     555                 175.vpr    & Placement et routage de circuit FPGA. \\
     556                 181.mcf    & Optimisation combinatoire.            \\
     557                 255.vortex & Object-oriented Database.             \\
     558                 256.bzip2  & Compression.                          \\
     559                 300.twolf  & Simulateur de placement et de routage.\\
     560               \end{tabular}
     561             \item Appel système : librairie {\it newlib}.
     562             \item Plate-forme matérielle ``custom''
     563               \begin{itemize}
     564                 \item Gestion de l'endienness.
     565                 \item Pont entre la simulation et le système hôte.
     566               \end{itemize}
     567             \end{itemize}
     568           }
     569           {
     570             sim2os :
     571             \begin{itemize}
     572             \item SERVICE\_OPEN
     573             \item SERVICE\_CLOSE
     574             \item SERVICE\_READ
     575             \item SERVICE\_WRITE
     576             \item SERVICE\_TIME
     577             \item SERVICE\_CLOCK
     578             \item SERVICE\_LSEEK
     579             \end{itemize}
     580           }
     581
     582\slidetitle{Hypothèse de travail}
     583           {
     584             Architecture de références
     585             \begin{itemize}
     586               \item 4 Threads
     587               \item 8 Unités d'exécutions
     588               \item 8 Instructions lancées par cycle
     589             \end{itemize}
     590             
     591             Variation de l'architecture
     592             \begin{itemize}
     593             \item Nombre de cache de premier niveau
     594             \item Nombre d'unité de lancement (Front\_End et OoO\_Engine)
     595             \item Nombre de contexte matériel
     596             \item Partage des unités fonctionnelles
     597             \end{itemize}
    239598           }
    240599           {
     
    243602\slidetitle{Résultats}
    244603           {
    245            }
    246            {
    247            }
    248 
    249 \slidetitle{Morpheo on FPGA}
    250            {
    251            }
    252            {
    253            }
    254 
    255 
    256 
    257 %\section{Besoins}
    258 %
    259 %\ContentsCurrent
    260 %
    261 %\slidetitle{Besoins}
    262 %          {Besoins pour les processeurs embarquées :
    263 %           
    264 %            \begin{itemize}
    265 %            \item Maîtrise du système
    266 %            \item Souplesse
    267 %            \item Performance
    268 %            \end{itemize}
    269 %          }
    270 %          {
    271 %            Où : téléphone portable, baladeur mp3/vidéo, automobile ...
    272 %
    273 %            \begin{description}
    274 %            \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é.
    275 %            \item[Souplesse           :] Pour un concepteur de système embarqués : bien dimensionner son système
    276 %            \item[Performance         :] Application cible de plus en plus gourmande en ressources : beaucoup de threads avec des impératifs de rapidité.
    277 %            \end{description}
    278 %          }
    279 %
    280 %\subsection{Maîtrise du système}
    281 %\slidetitle{Besoin de la Maîtrise du système}
    282 %          {
    283 %            {\bf Plate-forme de confiance totale}
    284 %
    285 %            \begin{itemize}
    286 %            \item Projet Open
    287 %            \item ISA Open
    288 %            \item Instructions customisables
    289 %            \end{itemize}
    290 %          }
    291 %          {
    292 %            Morpheo s'inscrit dans le cadre du projet plate-forme de confiance totale.
    293 %
    294 %            Instructions customisables : possibilité à l'utilisateur de rajouter de nouvelles instructions. Comme par exemple pour le chiffrement ou le déchiffrement ...
    295 %%           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.
    296 %%
    297 %%           En hard dans le proc? cache? interconnect? I/O?
    298 %          }
    299 %
    300 %
    301 %\subsection{Souplesse}
    302 %\slidetitle{Besoin de Souplesse}
    303 %          {
    304 %            {\bf Adapation aux besoins des concepteurs}
    305 %
    306 %            \begin{itemize}
    307 %            \item Processeur hautement paramètrables
    308 %            \item Ressources internes hétérogènes
    309 %            \item FPGA
    310 %            \end{itemize}
    311 %          }
    312 %          {
    313 %            Souplesse : s'adapter aux besoins des concepteur de SoC.
    314 %
    315 %            \begin{description}
    316 %            \item[Paramètrables :] Fournir un grand jeu de paramètres afin de satisfaire les contraintes du concepteur
    317 %            \item[Hétérogènes :] En découle des paramètres
    318 %            \item[FPGA :] Cible de + en + utilisé, Si mappage possible sur les ressources limités d'un FPGA, alors possible également sur un ASIC
    319 %            \end{description}
    320 %          }
    321 %
    322 %\subsection{Performance}
    323 %\slidetitle{Besoin de Performance (1) - ILP vs TLP}
    324 %          {
    325 %            {\bf Exploitation des différentes formes de parallélisme}
    326 %           
    327 %            Paquet d'instruction pouvant s'éxecuter en parallèle :
    328 %            \begin{itemize}
    329 %            \item {\it Intra flot} : exploitation de l'ILP\newline limitation intrasèque au soft (3-5 instructions)
    330 %            \item {\it Inter flot} : exploitation du TLP  \newline limitation intrasèque au système cible
    331 %            \end{itemize}
    332 %          }
    333 %          {
    334 %            \begin{itemize}
    335 %            \item ILP : superscalaire, OutOfOrder, Spéculation
    336 %            \item TLP : CMP, SMT
    337 %            \end{itemize}
    338 %          }
    339 %
    340 %\slidetitle{Besoin de Performance (2) - CMP vs SMT}
    341 %          {
    342 %            \printgraph{GENERAL_type_of_multi_thread}{0.5}
    343 %           
    344 %%           (schéma)
    345 %%           
    346 %%           Comparaison théorique de 5 types d'architectures :
    347 %%           ||Mono Coeur           ||Mono Contexte           ||Largeur infini||Idéal       ||
    348 %%           ||Mono Coeur           ||Mono Contexte           ||Largeur 4     ||Monolithique||
    349 %%           ||Multi Coeur d'ordre 4||Mono Contexte           ||Largeur 1     ||CMP         ||
    350 %%           ||Mono Coeur           ||Multi Contexte d'ordre 4||Largeur 4     ||SMT         ||
    351 %%           ||Multi coeur d'ordre 2||Multi Contexte d'ordre 2||Largeur 2     ||CMP de SMT  ||
    352 %          }
    353 %          {
    354 %            \begin{itemize}
    355 %            \item A et B : 17 instructions en 7 UT idéale
    356 %            \item (1) : 14 UT
    357 %            \item (2) : 17 UT, 34 slot vide, occupation 50\%
    358 %            \item (3) : 12 UT, 14 slot vide, occupation 70\%
    359 %            \item (4) : 11 UT, 10 slot vide, occupation 77\%
    360 %            \end{itemize}
    361 %          }
    362 %\slidetitle{Besoin de Performance (3) - Entre le CMP et le SMT}
    363 %          {
    364 %            \begin{description}
    365 %            \item[CMP :] L'intégralité des ressources d'un coeur sont dédiées   à un contexte.
    366 %            \item[SMT :] L'intégralité des ressources d'un coeur sont partagées entre tous les contextes.
    367 %            \item[Hybride :] Multitude de possibilité de partage des ressources internes.\\
    368 %              Une ressource est soit dédiée à un contexte soit partagée entre un certain nombre de contextes.
    369 %            \end{description}
    370 %          }
    371 %          {
    372 %            Définir ce qu'est une ressource : ALU, predicteur de branchement, cache ...
    373 %          }
    374 %
    375 %
    376 %\section{Solution}
    377 %\ContentsCurrent
    378 %\subsection{Initiatives actuelles}
    379 %\slidetitle{Initiatives actuelles}
    380 %          {
    381 %            Tous les processeurs sont des RISC scalaires.
    382 %
    383 %            \begin{description}
    384 %            \item[OpenRISC 1200 :] 32 bits, 5 étages. Jusqu'à 8 contextes.
    385 %            \item[Leon 2        :] 32 bits, 5 étages.
    386 %            \item[Leon 3        :] Leon 2 en 7 étages.
    387 %            \item[OpenSparcS1   :] 1 coeur 64bits, 6 étages et CMT 4.
    388 %            \item[OpenSparcT1   :] OpenSparcS1 avec 8 coeurs. Version OpenSource du Niagara.
    389 %            \item[Micro32       :] 32 bits, 6 étages.
    390 %            \item[OpenFire      :] 32 bits, 3 étages. Dérivés du MicroBlaze
    391 %            \item[aeMB          :] 32 bits, 3 étages. Dérivés du MicroBlaze
    392 %            \end{description}
    393 %          }
    394 %          {
    395 %            \begin{description}
    396 %            \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.
    397 %            \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)
    398 %            \item[OpenSparc     :] Présence de la Stream Processing Unit (cryptographie), 1 seul thread par coeur.
    399 %            \item[Micro32       :] Présence icache, dcache, debug. Taille des caches. Matériel spécifique : div, rotate, mul pipeline, extension de signes.
    400 %            \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
    401 %            \item[aeMB          :] 3 étages (Fetch, Decod, Execute). Support de caches. Pas configurable (Juste la largeur de l'espace d'addressage)
    402 %            \end{description}
    403 %          }
    404 %
    405 %\slide     {
    406 %            \printgraph{GENERAL_Art_of_State-Comparaison}{0.8}
    407 %          }
    408 %          {
    409 %          }
    410 %\subsection{Solution proposée}
    411 %\slidetitle{Solution proposée}
    412 %          {
    413 %            \begin{itemize}
    414 %            \item Partir d'une micro-architecture HighPerf.
    415 %            \item Ajout de la gestion du multi-thread.
    416 %            \item Rendre paramétrable les ressources internes.
    417 %            \item Mappage des instances de ce générateur de processeur sur les ressources limitées d'un FPGA.
    418 %            \end{itemize}
    419 %          }
    420 %          {
    421 %            Pentium 4, MipsR10000, Power5
    422 %          }
    423 %         
    424 %\subsection{Métrique}
    425 %\slidetitle{Métrique}
    426 %          {
    427 %            \begin{itemize}
    428 %            \item Obtenir le meilleur compromis Performance / Complexité.
    429 %              \begin{itemize}
    430 %              \item Performance : nombre de cycles nécessaire pour éxecuter les Benchmarks.
    431 %              \item Compléxité  : surface occupée du FPGA.
    432 %              \end{itemize}
    433 %            \item Obtenir le meilleur partage des ressources entre les contextes matériels. (Gain Performance / Coût surface).
    434 %              \begin{itemize}
    435 %              \item Gain en performance : rapport entre la performance MT sur la performance ST.
    436 %              \item Coût en surface     : rapport entre la surface     MT sur la surface     ST.
    437 %              \end{itemize}
    438 %            \end{itemize}
    439 %          }
    440 %          {
    441 %            benchmark : SPECINT2k, Dhrystone
    442 %
    443 %            FPGA : virtex5LX 330
    444 %          }
    445 %
    446 %\section{Morpheo}
    447 %\ContentsCurrent
    448 %
    449 %\subsection{Micro Architecture}
    450 %\slidetitle{Micro Architecture : Overview}
    451 %          {
    452 %            \printgraph{MORPHEO_micro_architecture-overview}{0.48}
    453 %          }
    454 %          {
    455 %            3 grandes parties :
    456 %            \begin{description}
    457 %            \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 ...)
    458 %            \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.
    459 %            \item[Execution Loop :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres.
    460 %            \end{description}
    461 %          }
    462 %
    463 %\slidetitle{Micro Architecture : Front end}
    464 %          {
    465 %            \printgraph{MORPHEO_micro_architecture-front_end}{0.7}
    466 %          }
    467 %          {
    468 %          }
    469 %
    470 %\slidetitle{Micro Architecture : Out Of Order Engine}
    471 %          {
    472 %            \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7}
    473 %          }
    474 %          {
    475 %          }
    476 %
    477 %\slidetitle{Micro Architecture : Execution Loop}
    478 %          {
    479 %            \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7}
    480 %          }
    481 %          {
    482 %          }
    483 %
    484 %\subsection{Méthodologie}
    485 %\slidetitle{Service proposé}
    486 %          {
    487 %            \printgraph{MORPHEO_service}{0.75}
    488 %          }
    489 %          {
    490 %            libMorpheo :
    491 %            \begin{itemize}
    492 %            \item Simulation systemC
    493 %              \begin{itemize}
    494 %              \item TestBench Vhdl
    495 %              \item Statistiques lors de la simulation
    496 %              \end{itemize}
    497 %            \item Vhdl : synthétisable sur FPGA
    498 %            \item Positions: Point d'entrée d'un outil de visualisation architectural (Stage M1)
    499 %            \end{itemize}
    500 %          }
    501 %   
    502 %\slidetitle{Méthodologie - Boucle d'Iteration}
    503 %          {
    504 %            \printgraph{MORPHEO_methodologie}{0.3}
    505 %          }
    506 %          {
    507 %            \begin{enumerate}
    508 %            \item SystemC
    509 %              \begin{enumerate}
    510 %              \item Ecriture du modèle systemC
    511 %              \item Ecriture d'un TestBench pour le systemc - goto 1.1
    512 %              \end{enumerate}
    513 %            \item VHDL
    514 %              \begin{enumerate}
    515 %              \item Ecriture du vhdl
    516 %              \item Validation de la stricte compatibilité entre le systemC et le Vhdl - goto 2.1 ou 1.1
    517 %              \end{enumerate}
    518 %            \item FPGA
    519 %              \begin{enumerate}
    520 %              \item Synthèse sur FPGA - goto 2.1, 1.1
    521 %              \item Mappage sur FPGA
    522 %              \end{enumerate}
    523 %            \end{enumerate}
    524 %          }
    525 %
    526 %\subsection{Perspective}
    527 %\slidetitle{Comment remplir nos journées?}
    528 %          {
    529 %            Il "reste" à faire ...
    530 %          }
    531 %          {
    532 %          }
    533 
    534 \slide{}{}
     604             \begin{center}
     605               Variation du partage des ressources entre les contextes matérielles.
     606             \end{center}
     607             %Rapport entre la performance MT sur la performance ST.
     608
     609             \printgraph{simulation_performance}{0.7}       
     610           }
     611           {
     612             DIRE : ST / MT.
     613
     614             MT = exécution parallèle des benchmarks
     615
     616             ST = exécution séquentielle des benchmarks
     617
     618
     619             ordonnée : IPC
     620
     621             abscisse : degré de partage
     622           }
     623
     624\slide
     625           {
     626             %Rapport entre la performance MT sur la performance ST.
     627
     628             \printgraph{simulation_surface}{0.7}           
     629           }
     630           {
     631           }
     632
     633\subsection{Méthodologie pour le modèle VHDL/RTL}
     634
     635\slidetitle{Méthodologie pour l'écriture du générateur VHDL}
     636           {
     637             \printgraph{VHDL_methodologie}{0.7}
     638           }
     639           {
     640             FPGA : virtex5LX 330
     641           }
     642
     643\slidetitle{Exemple : Banc de registres 512x32 bits}
     644           {
     645             \printgraph{synthese_FPGA-registerfile}{0.7}
     646           }
     647           {
     648           }
     649
     650\slidetitle{Planning}
     651           {
     652             \begin{itemize}
     653             \item Optimisation du modèle SytemC/CABA
     654             \item Écriture du générateur de VHDL/RTL
     655             \item Réalisation d'un démonstrateur :
     656               \begin{itemize}
     657               \item synthèse sur un FPGA d'une instance du générateur.
     658               \item exécution d'une application de test
     659               \end{itemize}
     660             \end{itemize}
     661           }
     662           {
     663           }
     664
     665\slidetitle{Conclusion}
     666           {
     667             \begin{itemize}
     668               \item Définition d'un processeur ouvert, haute performance, paramétrable et pérenne.
     669               \item Disposer d'un outil d'aide à l'exploration architecturale
     670             \end{itemize}
     671           }
     672           {
     673           }
Note: See TracChangeset for help on using the changeset viewer.