source: trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation-2008_02_25/fr/root.tex @ 78

Last change on this file since 78 was 78, checked in by rosiere, 16 years ago

Add :

  • Execute_loop (must be test systemC)
  • Prediction
    • Direction : predifined scheme
    • Branch Target Buffer
  • iFetch_unit
    • ifetch_queue
    • pc management
  • Decod_unit
    • coming soon : support for custom operation
  • Rename_unit
    • RAT
    • Free_list
    • Dependence RAW check
    • Load store unit pointer
  • New Environnement (hierarchy_memory will remove in a next version)


Modif :

  • Manage Custom Operation
  • All component in execute_loop to use the new statistics management

Not Finish :

  • Return Address Stack
  • Environnement
File size: 6.6 KB
Line 
1\section{Vue d'ensemble}
2
3\slidetitle{Vue d'ensemble}
4{
5  \printgraph{MORPHEO_micro_architecture-overview}{0.48}
6}
7{
8}
9
10\slidetitle{Avancement}
11{
12  \printgraph{MORPHEO_micro_architecture-overview-20080225}{0.48}
13
14}
15{
16}
17
18\section{Statistiques}
19
20\slidetitle{Statistiques}
21{
22  Refonte complète de la manière de générer les statistiques.
23  \begin{description}
24  \item[Déclaration]~
25    \begin{itemize}
26    \item Stat * \_stat;
27    \item counter\_t * \_nb\_inst;
28    \end{itemize}
29  \item[Construction / Destruction]~\\
30    La classe {\it Stat} à 4 paramètres :
31    \begin{enumerate}
32    \item Nom de l'instance
33    \item Nom du composant
34    \item Nombre de cycles à ignorer avant l'évaluation des statistiques
35    \item Période entre deux statistiques
36    \end{enumerate}
37    Lors de la destruction de l'objet, un fichier de statistiques au format XML est généré.
38  \end{description}
39}
40{
41}
42
43\slide
44{
45  \begin{description}
46  \item[Compteur]~
47    \begin{itemize}
48    \item \_nb\_inst = \_stat $->$ create\_variable\\("nb\_inst");
49    \item \_average\_inst = \_stat $->$ create\_counter\\("average\_inst", "IPC", "Instructions by cycle");
50    \item \_stat $->$create\_expr\\("average\_inst", "/ nb\_inst cycle", false);
51    \end{itemize}
52  \item[Run time]~
53    \begin{itemize}
54    \item (* \_nb\_inst) ++ ;
55    \item A la fin de chaque fonction de transition de chaque composant : \_stat $->$ end\_cycle();
56    \end{itemize}
57  \item[Composant interne]~
58    \begin{itemize}
59    \item \_stat $->$ add\_stat (component $->$ \_stat);\\
60      Le fichier de statistiques du "top level" contiendra les statistiques des composants internes.
61    \end{itemize}
62  \end{description}
63}
64{
65}
66
67\section{Zoom sur ...}
68
69\subsection{Custom unit}
70\slidetitle{Custom unit}
71{
72  La norme OpenRISC propose :
73  \begin{itemize}
74  \item 14 codes opérations réservés
75    \begin{itemize}
76    \item 8 ORBIS.
77    \item 2 ORFPX (1 simple précision et 1 double précision).
78    \item 4 ORVDX.
79    \end{itemize}
80  \item 8 groupes pour les registres spéciaux
81  \item 7 exceptions réservées
82  \end{itemize} 
83}
84{
85}
86
87\slidetitle{Nos limitations}
88{
89  \begin{itemize}
90  \item Une instruction custom ne cible qu'un seul groupe custom.
91  \item Un groupe ne peut être instancier qu'une seule fois par thread.
92  \item L'interface de l'unité custom est fixe.
93  \item Les unités custom peuvent générer n'importe quelles exceptions custom (plus l'exception "RANGE").
94  \item Seule une exécution d'opération custom provoque des exceptions.
95  \end{itemize}
96}
97{
98}
99
100\slidetitle{Implémentation}
101{
102  L'utilisateur doit fournir au composant "Execute\_loop" un pointeur sur une fonction dont le prototype est :
103 
104  \begin{itemize}
105  \item custom\_information\_t {\it get\_information} (int context);
106  \end{itemize}
107
108  custom\_information\_t est une structure qui regroupe plusieurs pointeurs de fonction.
109}
110{
111}
112 
113\slide
114{
115
116  \begin{itemize}
117  \item bool                             {\it get\_valid\_group       } (int gpr);
118  \item int                              {\it get\_nb\_register       } (int gpr);
119  \item access\_mode\_t                  {\it get\_mode               } (int gpr, int reg);
120  \item custom\_decod\_t               * {\it get\_decod              } (Toperation\_t op);
121  \item custom\_execute\_transition\_t * {\it get\_execute\_reset     } (int gpr);
122  \item custom\_execute\_transition\_t * {\it get\_execute\_transition} (int gpr);
123  \item custom\_execute\_genMoore\_t   * {\it get\_execute\_genMoore  } (Toperation\_t op);
124  \item custom\_vhdl\_t                * {\it get\_vhdl\_decod        } (void);
125  \item custom\_vhdl\_t                * {\it get\_vhdl\_execute      } (void);
126  \end{itemize}
127}
128{
129}
130
131\subsection{Morpheo v1}
132\slidetitle{Morpheo v1}
133{
134  \printgraph{MORPHEO_overview}{0.67}
135}
136{
137}
138
139\subsection{Load Store Unit}
140\slidetitle{Load Store Unit}
141{
142  \begin{itemize}
143  \item MORPHEO v1 : perte de performance du à la gestion de la Load Store Unit.
144    \begin{itemize}
145    \item Load Store Unit est placé dans la OOO\_Engine : insertion in-order.
146    \item Le calcul d'adresse est réalisé par les ALU.
147    \item Lancement tardif des lectures.
148    \end{itemize}
149  \item Modèle mémoire : weakly ordered.\\Présence d'instruction de synchronisation.
150  \item Si mémoire virtuelle : Bit WOM (Weakly-Ordered-Memory)\\(si = 0, load/store in-order sans prefetch).
151  \end{itemize}
152
153
154  % Graphe expliquant l'implémentation de la LSU de la v1
155}
156{
157}
158
159\slidetitle{Augmenter la performance (1)}
160{
161  \begin{itemize}
162  \item Insertion dans le LSU out-of-order
163    \begin{description}
164    \item [Comment ?] Gestion des pointeurs dans le OOO\_Engine
165    \item [Pourquoi ?] La LSU peut être placer dans l'Execute\_loop (au coeur de la boucle Read / Write).
166    \end{description}
167  \end{itemize}
168
169  \printgraph{MORPHEO_component-load_store_queue-ooo}{1}
170}
171{
172}
173
174
175\slidetitle{Augmenter la performance (2)}
176{
177  \begin{itemize}
178  \item Lectures spéculatives : Lancer la lecture avant de vérifier les dépendances avec des stores précédents.
179    \begin{description}
180    \item [Comment ?] Accès au cache dès réceptions de la lecture. Ajout d'une file d'attente qui va attendre puis vérifier les dépendence avec les stores.
181    \item [Pourquoi ?] Dépendances RAW entre accès mémoires relativement rare.
182    \end{description}
183  \end{itemize}
184
185  \printgraph{MORPHEO_component-load_store_queue-load_speculative}{1}
186}
187{
188}
189
190\slidetitle{Augmenter la performance (3)}
191{
192  \begin{itemize}
193  \item Commit spéculatif des lectures.
194    \begin{description}
195    \item [Comment ?] Ecrire le résultat dans le banc de registres dès réceptions de la réponse.
196    \item [Pourquoi ?] Diminuer la surface de la store queue : vérifier des dépendances sur plusieurs cycles.
197    \end{description}
198  \end{itemize}
199
200  \printgraph{MORPHEO_component-load_store_queue-commit_speculative}{1}
201}
202{
203}
204
205\slidetitle{Augmenter la performance (4)}
206{
207  \begin{itemize}
208  \item Bypass du résultat des lectures
209    \begin{description}
210    \item [Comment ?] Ajouter le contenu de la check queue au réseau de bypass.
211    \item [Pourquoi ?] Augmenter la performance.
212    \end{description}
213  \end{itemize}
214
215  \printgraph{MORPHEO_component-load_store_queue-commit_speculative_bypass}{1}
216}
217{
218}
219
220\subsection{Rename Unit}
221\slidetitle{Rename Unit}
222{
223  \begin{itemize}
224  \item Unité qui demande beaucoup de structure multi accès
225  \item Remplacement des structures à N accès par M strutures à 1 accès (M multiple de N)
226  \end{itemize}
227
228  \printgraph{MORPHEO_component-free_list}{1}
229}
230{
231}
232
233\section{Etapes suivantes}
234\slidetitle{Etapes suivantes}
235{
236  \begin{enumerate}
237  \item Finir systemC
238  \item Test ``limité''
239  \item Cache non bloquant : wrapper plusieurs xcache
240  \item Test sur plate-forme réel
241  \item VHDL
242  \item Test avec la plate-forme précédente
243  \end{enumerate}
244}
245{
246}
Note: See TracBrowser for help on using the repository browser.