Commit 4dfca2c81adc4a2b8480d3d34f4a3b299f65260e

Authored by Arthur HUGEAT
1 parent c17cf5a2e6
Exists in master

merge jmf + ajout discours sur le choix des coeff et sur le modéle utilisé.

Showing 1 changed file with 148 additions and 118 deletions Side-by-side Diff

ifcs2018_proceeding.tex
... ... @@ -67,7 +67,7 @@
67 67 the non-linear behavior of the downconverter introduces noise or spurious signal aliasing as
68 68 well as the generation of the frequency sum signal in addition to the frequency difference.
69 69 These unwanted spectral characteristics must be rejected before decimating the data stream
70   -for the phase noise spectral characterization. The characteristics introduced between the
  70 +for the phase noise spectral characterization. The characteristics introduced between the
71 71 downconverter
72 72 and the decimation processing blocks are core characteristics of an oscillator characterization
73 73 system, and must reject out-of-band signals below the targeted phase noise -- typically in the
74 74  
75 75  
76 76  
77 77  
78 78  
... ... @@ -82,31 +82,34 @@
82 82 \section{Finite impulse response filter}
83 83  
84 84 We select FIR filter for their unconditional stability and ease of design. A FIR filter is defined
85   -by a set of weights $b_k$ applied to the inputs $x_k$ through a convolution to generate the
  85 +by a set of weights $b_k$ applied to the inputs $x_k$ through a convolution to generate the
86 86 outputs $y_k$
87 87 $$y_n=\sum_{k=0}^N b_k x_{n-k}$$
88 88  
89 89 As opposed to an implementation on a general purpose processor in which word size is defined by the
90 90 processor architecture, implementing such a filter on an FPGA offer more degrees of freedom since
91   -not only the coefficient values and number of taps must be defined, but also the number of bits
  91 +not only the coefficient values and number of taps must be defined, but also the number of bits
92 92 defining the coefficients and the sample size. For this reason, and because we consider pipeline
93 93 processing (as opposed to First-In, First-Out memory batch processing) of radiofrequency
94   -signals, High Level Synthesis (HLS) languages \cite{kasbah2008multigrid} are not considered but
  94 +signals, High Level Synthesis (HLS) languages \cite{kasbah2008multigrid} are not considered but
95 95 the problem is tackled at the Very-high-speed-integrated-circuit Hardware Description Language (VHDL).
96 96 Since latency is not an issue in a openloop phase noise characterization instrument, the large
97   -numbre of taps in the FIR, as opposed to the shorter Infinite Impulse Response (IIR) filter,
  97 +numbre of taps in the FIR, as opposed to the shorter Infinite Impulse Response (IIR) filter,
98 98 is not considered as an issue as would be in a closed loop system.
99 99  
100 100 The coefficients are classically expressed as floating point values. However, this binary
101 101 number representation is not efficient for fast arithmetic computation by an FPGA. Instead,
102 102 we select to quantify these floating point values into integer values. This quantization
103   -will result in some precision loss.
  103 +will result in some precision loss.
104 104  
105 105 %As illustrated in Fig. \ref{float_vs_int}, we see that we aren't
106 106 %need too coefficients or too sample size. If we have lot of coefficients but a small sample size,
107 107 %the first and last are equal to zero. But if we have too sample size for few coefficients that not improve the quality.
108 108  
109 109 % JMF je ne comprends pas la derniere phrase ci-dessus ni la figure ci dessous
  110 +% AH en gros je voulais dire que prendre trop peu de bit avec trop de coeff, ça induit ta figure (bien mieux faite que moi)
  111 +% et que l'inverse trop de bit sur pas assez de coeff on ne gagne rien, je vais essayer de la reformuler
  112 +
110 113 %\begin{figure}[h!tb]
111 114 %\includegraphics[width=\linewidth]{images/float-vs-integer.pdf}
112 115 %\caption{Impact of the quantization resolution of the coefficients}
113 116  
114 117  
115 118  
116 119  
117 120  
118 121  
... ... @@ -148,23 +151,51 @@
148 151  
149 152 The degrees of freedom when addressing the problem of replacing the single monolithic
150 153 FIR with a cascade of optimized filters are the number of coefficients $N_i$ of each filter $i$,
151   -the number of bits $c_i$ representing the coefficients and the number of bits $d_i$ representing
  154 +the number of bits $C_i$ representing the coefficients and the number of bits $D_i$ representing
152 155 the data fed to the filter. Because each FIR in the chain is fed the output of the previous stage,
153 156 the optimization of the complete processing chain within a constrained resource environment is not
154   -trivial. The resource occupation of a FIR filter is considered as $c_i+d_i+\log_2(N_i)$ which is
  157 +trivial. The resource occupation of a FIR filter is considered as $D_i+C_i \times N_i)$ which is
155 158 the number of bits needed in a worst case condition to represent the output of the FIR.
  159 +Unfortunately this representation is not sufficient to represent the real occupation inside FPGA.
  160 +In fact the FPGA have some BRAM block on which the coefficients are stored and each BRAM are not
  161 +share between different filters. Moreover the multiplication need Digital Signal Processor to be
  162 +perform. Those DSP are in limited quantity so in the future we shall to consider this.
156 163  
  164 +At the moment our model can be express like this :
  165 +\begin{align}
  166 + \begin{cases}
  167 + \mathcal{R}_i &= \mathcal{F}(N_i, C_i)\\
  168 + \mathcal{A}_i &= N_i * C_i + D_i\\
  169 + \Delta_i &= \Delta _{i-1} + \mathcal{P}_i
  170 + \end{cases}
  171 + \label{model-FIR}
  172 +\end{align}
  173 +To explain the system \ref{model-FIR}, $\mathcal{R}_i$ represent the rejection of depending on $N_i$ and $C_i$, $\mathcal{A}$
  174 +is just theoretical occupation and $\Delta_i$ is the total rejection for the current stage $i$. At this moment
  175 +we are not able to express the function $\mathcal{F}$ so we are run some simulations to determine the rejection noise depending
  176 +on $N_i$ and $C_i$. But to choose the right filter we must define clearly the rejection criterion. If we take incorrect criterion
  177 +the linear program will produce a wrong solution. So we define a criterion to avoid ripple on baseband and just keep
  178 +the maximum of rejection (see the figure \ref{rejection-shape}). Thank to this system, we can able to design our linear program.
  179 +
157 180 \begin{figure}[h!tb]
  181 +\begin{center}
  182 +\includegraphics[width=.5\linewidth]{schema2}
  183 +\caption{Shape of rejection}
  184 +\label{rejection-shape}
  185 +\end{center}
  186 +\end{figure}
  187 +
  188 +\begin{figure}[h!tb]
158 189 \includegraphics[width=\linewidth]{images/noise-rejection.pdf}
159 190 \caption{Rejection as a function of number of coefficients and number of bits}
160 191 \label{noise-rejection}
161 192 \end{figure}
162 193  
163   -The objective function maximizes the noise rejection while keeping resource occupation below
  194 +The objective function maximizes the noise rejection ($\max(\Delta_{i_{\max}})$) while keeping resource occupation below
164 195 a user-defined threshold. The MILP solver is allowed to choose the number of successive
165 196 filters, within an upper bound. The last problem is to model the noise rejection. Since filter
166 197 noise rejection capability is not modeled with linear equation, a look-up-table is generated
167   -for multiple filter configurations in which the $c_i$, $d_i$ and $N_i$ parameters are varied: for each
  198 +for multiple filter configurations in which the $C_i$, $D_i$ and $N_i$ parameters are varied: for each
168 199 one of these conditions, the low-pass filter rejection defined as the mean power between
169 200 half the Nyquist frequency and the Nyquist frequency is stored as computed by the frequency response
170 201 of the digital filter (Fig. \ref{noise-rejection}).
171 202  
172 203  
173 204  
174 205  
175 206  
176 207  
177 208  
178 209  
179 210  
180 211  
181 212  
182 213  
183 214  
184 215  
185 216  
186 217  
187 218  
188 219  
189 220  
190 221  
191 222  
192 223  
193 224  
194 225  
195 226  
196 227  
197 228  
198 229  
199 230  
200 231  
201 232  
202 233  
203 234  
204 235  
205 236  
206 237  
207 238  
208 239  
209 240  
210 241  
211 242  
212 243  
213 244  
214 245  
215 246  
216 247  
217 248  
218 249  
... ... @@ -253,175 +284,175 @@
253 284 XXX
254 285  
255 286 \subsubsection{Contraintes}
256   -
257   - Dans les r\'ef\'erences \cite{zhuo2007scalable, olariu1993computing, pan1999improved}, les auteurs
  287 +
  288 + Dans les r\'ef\'erences \cite{zhuo2007scalable, olariu1993computing, pan1999improved}, les auteurs
258 289 proposent tous des optimisations hardware uniquement. Cependant ces articles sont focalis\'es sur des optimisations mat\'erielles
259   - or notre objectif est de trouver une formalisation math\'ematique d'un FPGA.
260   -
  290 + or notre objectif est de trouver une formalisation math\'ematique d'un FPGA.
  291 +
261 292 Une dernière approche que nous avons \'etudi\'ee est l'utilisation de \emph{skeletons}. D. Crookes et A. Benkrid
262 293 ont beaucoup parl\'e de cette m\'ethode dans leur articles \cite{crookes1998environment, crookes2000design, benkrid2002towards}.
263   - L'id\'ee essentielle est qu'ils r\'ealisent des composants très optimis\'es et param\'etrables. Ainsi lorsqu'ils
264   - veulent faire un d\'eveloppement, ils utilisent les blocs d\'ejà faits.
  294 + L'id\'ee essentielle est qu'ils r\'ealisent des composants très optimis\'es et param\'etrables. Ainsi lorsqu'ils
  295 + veulent faire un d\'eveloppement, ils utilisent les blocs d\'ejà faits.
265 296  
266   - Ces blocs repr\'esentent une \'etape de calcul (une d\'ecimation, un filtrage, une modulation, une
  297 + Ces blocs repr\'esentent une \'etape de calcul (une d\'ecimation, un filtrage, une modulation, une
267 298 d\'emodulation etc...). En prenant le cas du FIR, on rend param\'etrables les valeurs des coefficients
268   - utilis\'es pour le produit de convolutions ainsi que leur nombre. Le facteur de d\'ecimation est
  299 + utilis\'es pour le produit de convolutions ainsi que leur nombre. Le facteur de d\'ecimation est
269 300 lui aussi param\'etrable.
270   -
  301 +
271 302 On gagne ainsi beaucoup de temps de d\'eveloppement car on r\'eutilise des composants d\'ejà \'eprouv\'es et optimis\'es.
272   - De plus, au fil des projets, on constitue une bibliothèque de composants nous
  303 + De plus, au fil des projets, on constitue une bibliothèque de composants nous
273 304 permettant de faire une chaine complète très simplement.
274   -
  305 +
275 306 K. Benkrid, S. Belkacemi et A. Benkrid dans leur article\cite{hide} caract\'erisent
276 307 ces blocs en Prolog pour faire un langage descriptif permettant d'assembler les blocs de manière
277 308 optimale. En partant de cette description, ils arrivent à g\'en\'erer directement le code VHDL.
278   -
  309 +
279 310 \begin{itemize}
280   - \item la latence du bloc repr\'esente, en coups d'horloge, le temps entre l'entr\'ee de la donn\'ee
  311 + \item la latence du bloc repr\'esente, en coups d'horloge, le temps entre l'entr\'ee de la donn\'ee
281 312 et le temps où la même donn\'ee ressort du bloc.
282   - \item l'acceptance repr\'esente le nombre de donn\'ees par coup d'horloge que le bloc est capable
  313 + \item l'acceptance repr\'esente le nombre de donn\'ees par coup d'horloge que le bloc est capable
283 314 de traiter.
284 315 \item la sortance repr\'esente le nombre de donn\'ees qui sortent par coup d'horloge.
285 316 \end{itemize}
286   -
  317 +
287 318 Gr\^ace à cela, le logiciel est capable de donner une impl\'ementation optimale d'un problème qu'on lui
288   - soumet. Le problème ne se d\'efinit pas uniquement par un r\'esultat attendu mais aussi par des
  319 + soumet. Le problème ne se d\'efinit pas uniquement par un r\'esultat attendu mais aussi par des
289 320 contraintes de d\'ebit et/ou de pr\'ecision.
290   -
291   - Dans une second temps, nous nous sommes aussi int\'eress\'es à des articles d'ordonnancement.
292   - Nous avons notamment lu des documents parlant des cas des micro-usines.
293   -
294   - Les micro-usines ressemblent un peu à des FPGA dans le sens où on connait à l'avance les
295   - t\^aches à effectuer et leurs caract\'eristiques. Nous allons donc nous inspirer
  321 +
  322 + Dans une second temps, nous nous sommes aussi int\'eress\'es à des articles d'ordonnancement.
  323 + Nous avons notamment lu des documents parlant des cas des micro-usines.
  324 +
  325 + Les micro-usines ressemblent un peu à des FPGA dans le sens où on connait à l'avance les
  326 + t\^aches à effectuer et leurs caract\'eristiques. Nous allons donc nous inspirer
296 327 de leur modèle pour essayer de construire le notre.
297   -
298   - Dans sa thèse A. Dobrila \cite{these-alex} traite d'un problème de tol\'erance aux pannes
299   - dans le contextes des mirco-usines. Mais les FPGA ne sont pas concern\'es dans la mesure
  328 +
  329 + Dans sa thèse A. Dobrila \cite{these-alex} traite d'un problème de tol\'erance aux pannes
  330 + dans le contextes des mirco-usines. Mais les FPGA ne sont pas concern\'es dans la mesure
300 331 où si le composant tombe en panne, tout le traitement est paralys\'e. Cette thèse nous a n\'eanmoins
301 332 permis d'avoir un exemple de formalisation de problème.
302   -
  333 +
303 334 Pour finir nous avons lu la thèse de M. Coqblin \cite{these-mathias} qui elle aussi traite du sujet
304   - des micro-usines. Le travail de M. Coqblin porte surtout sur une chaine de traitement
  335 + des micro-usines. Le travail de M. Coqblin porte surtout sur une chaine de traitement
305 336 reconfigurable, il tient compte dans ses travaux du surcoût engendr\'e par la reconfiguration d'une machine.
306   - Cela n'est pas tout à fait exploitable dans notre contexte puisqu'une
307   - puce FPGA d\'es qu'elle est programm\'ee n'a pas la possibilit\'e de reconfigurer une partie de sa chaine de
  337 + Cela n'est pas tout à fait exploitable dans notre contexte puisqu'une
  338 + puce FPGA d\'es qu'elle est programm\'ee n'a pas la possibilit\'e de reconfigurer une partie de sa chaine de
308 339 traitement. Là encore, nous avions un exemple de formalisation d'un problème.
309   -
  340 +
310 341 Pour conclure, nous avons vu deux approches li\'ees à deux domaines diff\'erents. La première est le
311 342 point de vue \'electronique qui se focalise principalement sur des optimisations mat\'erielles ou algorithmiques.
312   - La seconde est le point de vue informatique : les modèles sont très g\'en\'eriques et ne sont pas
  343 + La seconde est le point de vue informatique : les modèles sont très g\'en\'eriques et ne sont pas
313 344 adapt\'es au cas des FPGA. La suite de ce rapport se concentrera donc sur la recherche d'un compromis
314 345 entre ces deux points de vue.
315   -
  346 +
316 347 \section{Contexte d'ordonnancement}
317   - Dans cette partie, nous donnerons des d\'efinitions de termes rattach\'es au domaine de l'ordonnancement
  348 + Dans cette partie, nous donnerons des d\'efinitions de termes rattach\'es au domaine de l'ordonnancement
318 349 et nous verrons que le sujet trait\'e se rapproche beaucoup d'un problème d'ordonnancement. De ce fait
319   - nous pourrons aller plus loin que les travaux vus pr\'ec\'edemment et nous tenterons des approches d'ordonnancement
  350 + nous pourrons aller plus loin que les travaux vus pr\'ec\'edemment et nous tenterons des approches d'ordonnancement
320 351 et d'optimisation.
321   -
  352 +
322 353 \subsection{D\'efinition du vocabulaire}
323   - Avant tout, il faut d\'efinir ce qu'est un problème d'optimisation. Il y a deux d\'efinitions
  354 + Avant tout, il faut d\'efinir ce qu'est un problème d'optimisation. Il y a deux d\'efinitions
324 355 importantes à donner. La première est propos\'ee par Legrand et Robert dans leur livre \cite{def1-ordo} :
325 356 \begin{definition}
326 357 \label{def-ordo1}
327   - Un ordonnancement d'un système de t\^aches $G\ =\ (V,\ E,\ w)$ est une fonction $\sigma$ :
  358 + Un ordonnancement d'un système de t\^aches $G\ =\ (V,\ E,\ w)$ est une fonction $\sigma$ :
328 359 $V \rightarrow \mathbb{N}$ telle que $\sigma(u) + w(u) \leq \sigma(v)$ pour toute arête $(u,\ v) \in E$.
329 360 \end{definition}
330   -
331   - Dit plus simplement, l'ensemble $V$ repr\'esente les t\^aches à ex\'ecuter, l'ensemble $E$ repr\'esente les d\'ependances
332   - des t\^aches et $w$ les temps d'ex\'ecution de la t\^ache. La fonction $\sigma$ donne donc l'heure de d\'ebut de
333   - chacune des t\^aches. La d\'efinition dit que si une t\^ache $v$ d\'epend d'une t\^ache $u$ alors
334   - la date de d\'ebut de $v$ sera plus grande ou \'egale au d\'ebut de l'ex\'ecution de la t\^ache $u$ plus son
  361 +
  362 + Dit plus simplement, l'ensemble $V$ repr\'esente les t\^aches à ex\'ecuter, l'ensemble $E$ repr\'esente les d\'ependances
  363 + des t\^aches et $w$ les temps d'ex\'ecution de la t\^ache. La fonction $\sigma$ donne donc l'heure de d\'ebut de
  364 + chacune des t\^aches. La d\'efinition dit que si une t\^ache $v$ d\'epend d'une t\^ache $u$ alors
  365 + la date de d\'ebut de $v$ sera plus grande ou \'egale au d\'ebut de l'ex\'ecution de la t\^ache $u$ plus son
335 366 temps d'ex\'ecution.
336   -
  367 +
337 368 Une autre d\'efinition importante qui est propos\'ee par Leung et al. \cite{def2-ordo} est :
338 369 \begin{definition}
339 370 \label{def-ordo2}
340 371 L'ordonnancement traite de l'allocation de ressources rares à des activit\'es avec
341 372 l'objectif d'optimiser un ou plusieurs critères de performance.
342 373 \end{definition}
343   -
  374 +
344 375 Cette d\'efinition est plus g\'en\'erique mais elle nous int\'eresse d'avantage que la d\'efinition \ref{def-ordo1}.
345 376 En effet, la partie qui nous int\'eresse dans cette première d\'efinition est le respect de la pr\'ec\'edance des t\^aches.
346 377 Dans les faits les dates de d\'ebut ne nous int\'eressent pas r\'eellement.
347   -
  378 +
348 379 En revanche la d\'efinition \ref{def-ordo2} sera au c\oe{}ur du projet. Pour se convaincre de cela,
349   - il nous faut d'abord d\'efinir quel est le type de problème d'ordonnancement qu'on traite et quelles
  380 + il nous faut d'abord d\'efinir quel est le type de problème d'ordonnancement qu'on traite et quelles
350 381 sont les m\'ethodes qu'on peut appliquer.
351   -
  382 +
352 383 Les problèmes d'ordonnancement peuvent être class\'es en diff\'erentes cat\'egories :
353 384 \begin{itemize}
354   - \item T\^aches ind\'ependantes : dans cette cat\'egorie de problèmes, les t\^aches sont complètement ind\'ependantes
  385 + \item T\^aches ind\'ependantes : dans cette cat\'egorie de problèmes, les t\^aches sont complètement ind\'ependantes
355 386 les unes des autres. Dans notre cas, ce n'est pas le plus adapt\'e.
356 387 \item Graphe de t\^aches : la d\'efinition \ref{def-ordo1} d\'ecrit cette cat\'egorie. La plupart du temps,
357   - les t\^aches sont repr\'esent\'ees par une DAG. Cette cat\'egorie est très proche de notre cas puisque nous devons \'egalement ex\'ecuter
358   - des t\^aches qui ont un certain nombre de d\'ependances. On pourra même dire que dans certain cas,
359   - on a des anti-arbres, c'est à dire que nous avons une multitude de t\^aches d'entr\'ees qui convergent vers une
360   - t\^ache de fin.
  388 + les t\^aches sont repr\'esent\'ees par une DAG. Cette cat\'egorie est très proche de notre cas puisque nous devons \'egalement ex\'ecuter
  389 + des t\^aches qui ont un certain nombre de d\'ependances. On pourra même dire que dans certain cas,
  390 + on a des anti-arbres, c'est à dire que nous avons une multitude de t\^aches d'entr\'ees qui convergent vers une
  391 + t\^ache de fin.
361 392 \item Workflow : cette cat\'egorie est une sous cat\'egorie des graphes de t\^aches dans le sens où
362 393 il s'agit d'un graphe de t\^aches r\'ep\'et\'e de nombreuses de fois. C'est exactement ce type de problème
363 394 que nous traitons ici.
364 395 \end{itemize}
365   -
  396 +
366 397 Bien entendu, cette liste n'est pas exhaustive et il existe de nombreuses autres classifications et sous-classifications
367 398 de ces problèmes. Nous n'avons parl\'e ici que des cat\'egories les plus communes.
368   -
369   - Un autre point à d\'efinir, est le critère d'optimisation. Il y a là encore un grand nombre de
  399 +
  400 + Un autre point à d\'efinir, est le critère d'optimisation. Il y a là encore un grand nombre de
370 401 critères possibles. Nous allons donc parler des principaux :
371 402 \begin{itemize}
372 403 \item Temps de compl\'etion total (ou Makespan en anglais) : ce critère est l'un des critères d'optimisation
373   - les plus courant. Il s'agit donc de minimiser la date de fin de la dernière t\^ache de l'ensemble des
  404 + les plus courant. Il s'agit donc de minimiser la date de fin de la dernière t\^ache de l'ensemble des
374 405 t\^aches à ex\'ecuter. L'enjeu de cette optimisation est donc de trouver l'ordonnancement optimal permettant
375 406 la fin d'ex\'ecution au plus tôt.
376 407 \item Somme des temps d'ex\'ecution (Flowtime en anglais) : il s'agit de faire la somme des temps d'ex\'ecution de toutes les t\^aches
377 408 et d'optimiser ce r\'esultat.
378 409 \item Le d\'ebit : ce critère quant à lui, vise à augmenter au maximum le d\'ebit de traitement des donn\'ees.
379 410 \end{itemize}
380   -
  411 +
381 412 En plus de cela, on peut avoir besoin de plusieurs critères d'optimisation. Il s'agit dans ce cas d'une optimisation
382 413 multi-critères. Bien entendu, cela complexifie d'autant plus le problème car la solution la plus optimale pour un
383 414 des critères peut être très mauvaise pour un autre critère. De ce cas, il s'agira de trouver une solution qui permet
384 415 de faire le meilleur compromis entre tous les critères.
385   -
386   -
  416 +
  417 +
387 418 \subsection{Formalisation du problème}
388 419 \label{formalisation}
389   - Maintenant que nous avons donn\'e le vocabulaire li\'e à l'ordonnancement, nous allons pouvoir essayer caract\'eriser
  420 + Maintenant que nous avons donn\'e le vocabulaire li\'e à l'ordonnancement, nous allons pouvoir essayer caract\'eriser
390 421 formellement notre problème. En effet, nous allons reprendre les contraintes \'enonc\'ees dans la sections \ref{def-contraintes}
391 422 et nous essayerons de les formaliser le plus finement possible.
392   -
  423 +
393 424 Comme nous l'avons dit, une t\^ache est un bloc de traitement. Chaque t\^ache $i$ dispose d'un ensemble de paramètres
394 425 que nous nommerons $\mathcal{P}_{i}$. Cet ensemble $\mathcal{P}_i$ est propre à chaque t\^ache et il variera d'une
395 426 t\^ache à l'autre. Nous reviendrons plus tard sur les paramètres qui peuvent composer cet ensemble.
396   -
  427 +
397 428 Outre cet ensemble $\mathcal{P}_i$, chaque t\^ache dispose de paramètres communs :
398 429 \begin{itemize}
399 430 \item Dur\'ee de la t\^ache : Comme nous l'avons dit auparavant, dans le cadre d'un FPGA le temps est compt\'e en nombre de coup d'horloge.
400 431 En outre, les blocs sont toujours sollicit\'es, certains même sont capables de lire et de renvoyer une r\'esultat à chaque coups d'horloge.
401   - Donc la dur\'ee d'une t\^ache ne peut être le laps de temps entre l'entr\'ee d'une donn\'ee et la sortie d'une autre. Nous d\'efinirons la
402   - dur\'ee comme le temps de traitement d'une donn\'ee, c'est à dire la diff\'erence de temps entre la date de sortie d'une donn\'ee
  432 + Donc la dur\'ee d'une t\^ache ne peut être le laps de temps entre l'entr\'ee d'une donn\'ee et la sortie d'une autre. Nous d\'efinirons la
  433 + dur\'ee comme le temps de traitement d'une donn\'ee, c'est à dire la diff\'erence de temps entre la date de sortie d'une donn\'ee
403 434 et de sa date d'entr\'ee. Nous nommerons cette dur\'ee $\delta_i$. % Je devrais la nomm\'ee w comme dans la def2
404   - \item La pr\'ecision : La pr\'ecision d'une donn\'ee est le nombre de bits significatifs qu'elle compte. En effet, au fil des traitements
  435 + \item La pr\'ecision : La pr\'ecision d'une donn\'ee est le nombre de bits significatifs qu'elle compte. En effet, au fil des traitements
405 436 les pr\'ecisions peuvent varier. On nomme donc la pr\'ecision d'entr\'ee d'une t\^ache $i$ comme $\pi_i^-$ et la pr\'ecision en sortie $\pi_i^+$.
406   - \item La fr\'equence du flux en entr\'ee (ou sortie) : Cette fr\'equence repr\'esente la fr\'equence des donn\'ees qui arrivent (resp. sortent).
  437 + \item La fr\'equence du flux en entr\'ee (ou sortie) : Cette fr\'equence repr\'esente la fr\'equence des donn\'ees qui arrivent (resp. sortent).
407 438 Selon les t\^aches, les fr\'equences varieront. En effet, certains blocs ralentissent le flux c'est pourquoi on distingue la fr\'equence du
408 439 flux en entr\'ee et la fr\'equence en sortie. Nous nommerons donc la fr\'equence du flux en entr\'ee $f_i^-$ et la fr\'equence en sortie $f_i^+$.
409 440 \item La quantit\'e de donn\'ees en entr\'ee (ou en sortie) : Il s'agit de la quantit\'e de donn\'ees que le bloc s'attend à traiter (resp.
410 441 est capable de produire). Les t\^aches peuvent avoir à traiter des gros volumes de donn\'ees et n'en ressortir qu'une partie. Cette
411   - fois encore, il nous faut donc diff\'erencier l'entr\'ee et la sortie. Nous nommerons donc la quantit\'e de donn\'ees entrantes $q_i^-$
  442 + fois encore, il nous faut donc diff\'erencier l'entr\'ee et la sortie. Nous nommerons donc la quantit\'e de donn\'ees entrantes $q_i^-$
412 443 et la quantit\'e de donn\'ees sortantes $q_i^+$ pour une t\^ache $i$.
413   - \item Le d\'ebit d'entr\'ee (ou de sortie) : Ce paramètre correspond au d\'ebit de donn\'ees que la t\^ache est capable de traiter ou qu'elle
414   - fournit en sortie. Il s'agit simplement de l'expression des deux pr\'ec\'edents paramètres. Nous d\'efinirons donc la d\'ebit entrant de la
  444 + \item Le d\'ebit d'entr\'ee (ou de sortie) : Ce paramètre correspond au d\'ebit de donn\'ees que la t\^ache est capable de traiter ou qu'elle
  445 + fournit en sortie. Il s'agit simplement de l'expression des deux pr\'ec\'edents paramètres. Nous d\'efinirons donc la d\'ebit entrant de la
415 446 t\^ache $i$ comme $d_i^-\ =\ q_i^-\ *\ f_i^-$ et le d\'ebit sortant comme $d_i^+\ =\ q_i^+\ *\ f_i^+$.
416 447 \item La taille de la t\^ache : La taille dans les FPGA \'etant limit\'ee, ce paramètre exprime donc la place qu'occupe la t\^ache au sein du bloc.
417 448 Nous nommerons $\mathcal{A}_i$ cette taille.
418   - \item Les pr\'ed\'ecesseurs et successeurs d'une t\^ache : cela nous permet de connaître les t\^aches requises pour pouvoir traiter
  449 + \item Les pr\'ed\'ecesseurs et successeurs d'une t\^ache : cela nous permet de connaître les t\^aches requises pour pouvoir traiter
419 450 la t\^ache $i$ ainsi que les t\^aches qui en d\'ependent. Ces ensemble sont not\'es $\Gamma _i ^-$ et $ \Gamma _i ^+$ \\
420 451 %TODO Est-ce vraiment un paramètre ?
421 452 \end{itemize}
422   -
423   - Ces diff\'erents paramètres communs sont fortement li\'es aux \'el\'ements de $\mathcal{P}_i$. Voici quelques exemples de relations
424   - que nous avons identifi\'ees :
  453 +
  454 + Ces diff\'erents paramètres communs sont fortement li\'es aux \'el\'ements de $\mathcal{P}_i$. Voici quelques exemples de relations
  455 + que nous avons identifi\'ees :
425 456 \begin{itemize}
426 457 \item $ \delta _i ^+ \ = \ \mathcal{F}_{\delta}(\pi_i^-,\ \pi_i^+,\ d_i^-,\ d_i^+,\ \mathcal{P}_i) $ donne le temps d'ex\'ecution
427 458 de la t\^ache en fonction de la pr\'ecision voulue, du d\'ebit et des paramètres internes.
428 459  
429 460  
430 461  
431 462  
432 463  
433 464  
434 465  
435 466  
436 467  
437 468  
438 469  
439 470  
440 471  
... ... @@ -430,51 +461,51 @@
430 461 \item $d_i^+\ =\ \mathcal{F}_d(d_i^-, \mathcal{P}_i)$, la fonction $F_d$ donne le d\'ebit sortant de la t\^ache en fonction du d\'ebit
431 462 sortant et des variables internes de la t\^ache.
432 463 \item $A_i^+\ =\ \mathcal{F}_A(\pi_i^-,\ \pi_i^+,\ d_i^-,\ d_i^+, \mathcal{P}_i)$
433   - \end{itemize}
434   - Pour le moment, nous ne sommes pas capables de donner une d\'efinition g\'en\'erale de ces fonctions. Mais en revanche,
435   - sur quelques exemples simples (cf. \ref{def-contraintes}), nous parvenons à donner une \'evaluation de ces fonctions.
436   -
  464 + \end{itemize}
  465 + Pour le moment, nous ne sommes pas capables de donner une d\'efinition g\'en\'erale de ces fonctions. Mais en revanche,
  466 + sur quelques exemples simples (cf. \ref{def-contraintes}), nous parvenons à donner une \'evaluation de ces fonctions.
  467 +
437 468 Maintenant que nous avons donn\'e toutes les notations utiles, nous allons \'enoncer des contraintes relatives à notre problème. Soit
438 469 un DGA $G(V,\ E)$, on a pour toutes arêtes $(i, j)\ \in\ E$ les in\'equations suivantes :
439   -
  470 +
440 471 \paragraph{Contrainte de pr\'ecision :}
441   - Cette in\'equation traduit la contrainte de pr\'ecision d'une t\^ache à l'autre :
  472 + Cette in\'equation traduit la contrainte de pr\'ecision d'une t\^ache à l'autre :
442 473 \begin{align*}
443 474 \pi _i ^+ \geq \pi _j ^-
444 475 \end{align*}
445   -
  476 +
446 477 \paragraph{Contrainte de d\'ebit :}
447   - Cette in\'equation traduit la contrainte de d\'ebit d'une t\^ache à l'autre :
  478 + Cette in\'equation traduit la contrainte de d\'ebit d'une t\^ache à l'autre :
448 479 \begin{align*}
449 480 d _i ^+ = q _j ^- * (f_i + (1 / s_j) ) & \text{ où } s_j \text{ est une valeur positive de temporisation de la t\^ache}
450 481 \end{align*}
451   -
  482 +
452 483 \paragraph{Contrainte de synchronisation :}
453   - Il s'agit de la contrainte qui impose que si à un moment du traitement, le DAG se s\'epare en plusieurs branches parallèles
  484 + Il s'agit de la contrainte qui impose que si à un moment du traitement, le DAG se s\'epare en plusieurs branches parallèles
454 485 et qu'elles se rejoignent plus tard, la somme des latences sur chacune des branches soit la même.
455 486 Plus formellement, s'il existe plusieurs chemins disjoints, partant de la t\^ache $s$ et allant à la t\^ache de $f$ alors :
456 487 \begin{align*}
457   - \forall \text{ chemin } \mathcal{C}1(s, .., f),
458   - \forall \text{ chemin } \mathcal{C}2(s, .., f)
459   - \text{ tel que } \mathcal{C}1 \neq \mathcal{C}2
460   - \Rightarrow
  488 + \forall \text{ chemin } \mathcal{C}1(s, .., f),
  489 + \forall \text{ chemin } \mathcal{C}2(s, .., f)
  490 + \text{ tel que } \mathcal{C}1 \neq \mathcal{C}2
  491 + \Rightarrow
461 492 \sum _{i} ^{i \in \mathcal{C}1} \delta_i = \sum _{i} ^{i \in \mathcal{C}2} \delta_i
462 493 \end{align*}
463   -
  494 +
464 495 \paragraph{Contrainte de place :}
465   - Cette in\'equation traduit la contrainte de place dans le FPGA. La taille max de la puce FPGA est nomm\'e $\mathcal{A}_{FPGA}$ :
  496 + Cette in\'equation traduit la contrainte de place dans le FPGA. La taille max de la puce FPGA est nomm\'e $\mathcal{A}_{FPGA}$ :
466 497 \begin{align*}
467 498 \sum ^{\text{t\^ache } i} \mathcal{A}_i \leq \mathcal{A}_{FPGA}
468 499 \end{align*}
469   -
  500 +
470 501 \subsection{Exemples de mod\'elisation}
471 502 \label{exemples-modeles}
472   - Nous allons maintenant prendre quelques blocs de traitement simples afin d'illustrer au mieux notre modèle.
  503 + Nous allons maintenant prendre quelques blocs de traitement simples afin d'illustrer au mieux notre modèle.
473 504 Pour tous nos exemple, nous prendrons un d\'ebit en entr\'ee de 200 Mo/s avec une pr\'ecision de 16 bit.
474   -
  505 +
475 506 Prenons tout d'abord l'exemple d'un bloc de d\'ecimation. Le but de ce bloc est de ralentir le flux en ne gardant
476 507 que certaines donn\'ees à intervalle r\'egulier. Cet intervalle est appel\'e le facteur de d\'ecimation, on le notera $N$.
477   -
  508 +
478 509 Donc d'après notre mod\'elisation :
479 510 \begin{itemize}
480 511 \item $N \in \mathcal{P}_i$
... ... @@ -487,9 +518,9 @@
487 518 \item $\Gamma _i ^+ = \Gamma _i ^- = 1$\\
488 519 %TODO Je ne sais pas trouver la taille...
489 520 \end{itemize}
490   -
491   - Un autre exemple int\'eressant que l'on peut donner, c'est le cas des spliters. Il s'agit la aussi d'un bloc très
492   - simple qui permet de dupliquer un flux. On peut donc donner un nombre de sorties à cr\'eer, on note ce paramètre
  521 +
  522 + Un autre exemple int\'eressant que l'on peut donner, c'est le cas des spliters. Il s'agit la aussi d'un bloc très
  523 + simple qui permet de dupliquer un flux. On peut donc donner un nombre de sorties à cr\'eer, on note ce paramètre
493 524 %TODO pas très inspir\'e...
494 525 $X$. Voici ce que donne notre mod\'elisation :
495 526 \begin{itemize}
496 527  
... ... @@ -502,9 +533,9 @@
502 533 \item $\Gamma _i ^- = 1$
503 534 \item $\Gamma _i ^+ = X$\\
504 535 \end{itemize}
505   -
  536 +
506 537 L'exemple suivant traite du cas du shifter. Il s'agit d'un bloc qui a pour but de diminuer le nombre de bits des
507   - donn\'ees afin d'acc\'el\'erer les traitement sur les blocs suivants. On peut donc donner le nombre de bits à shifter,
  538 + donn\'ees afin d'acc\'el\'erer les traitement sur les blocs suivants. On peut donc donner le nombre de bits à shifter,
508 539 on note ce paramètre $S$. Voici ce que donne notre mod\'elisation :
509 540 \begin{itemize}
510 541 \item $S \in \mathcal{P}_i$
511 542  
... ... @@ -515,10 +546,10 @@
515 546 \item $d _i ^+ = d _i ^-$
516 547 \item $\Gamma _i ^+ = \Gamma _i ^- = 1$\\
517 548 \end{itemize}
518   -
519   - Nous allons traiter un dernier exemple un peu plus complexe, le cas d'un filtre d\'ecimateur (ou FIR). Ce bloc
  549 +
  550 + Nous allons traiter un dernier exemple un peu plus complexe, le cas d'un filtre d\'ecimateur (ou FIR). Ce bloc
520 551 est compos\'e de beaucoup de paramètres internes. On peut d\'efinir un nombre d'\'etages $E$, qui repr\'esente le nombre
521   - d'it\'erations à faire avant d'arrêter le traitement. Afin d'effectuer son filtrage, on doit donner au bloc un ensemble
  552 + d'it\'erations à faire avant d'arrêter le traitement. Afin d'effectuer son filtrage, on doit donner au bloc un ensemble
522 553 de coefficients $C$ et par cons\'equent ces coefficients ont leur propre pr\'ecision $\pi _C$. Pour finir, le dernier
523 554 paramètre à donner est le facteur de d\'ecimation $N$. Si on applique notre mod\'elisation, on peut obtenir cela :
524 555 \begin{itemize}
525 556  
526 557  
... ... @@ -533,15 +564,15 @@
533 564 \item $d _i ^+ = q _i ^- / N / f _i ^-$
534 565 \item $\Gamma _i ^+ = \Gamma _i ^- = 1$\\
535 566 \end{itemize}
536   -
537   - Ces exemples ne sont que des modèles provisoires; pour s'assurer de leur performance, il faudra les
  567 +
  568 + Ces exemples ne sont que des modèles provisoires; pour s'assurer de leur performance, il faudra les
538 569 confronter à des simulations.
539   -
540   -
541   -Bien que les articles sur les skeletons, \cite{gwen-cogen}, \cite{skeleton} et \cite{hide}, nous aient donn\'e des indices sur une possible
  570 +
  571 +
  572 +Bien que les articles sur les skeletons, \cite{gwen-cogen}, \cite{skeleton} et \cite{hide}, nous aient donn\'e des indices sur une possible
542 573 mod\'elisation, ils \'etaient encore trop focalis\'es sur l'optimisation spatiale des blocs. Nous nous sommes donc inspir\'es de ces travaux
543 574 pour proposer notre modèle, en faisant abstraction des optimisations bas niveau.
544   -
  575 +
545 576 \bibliographystyle{IEEEtran}
546 577 \bibliography{references,biblio}
547 578 \end{document}