Commit 4dfca2c81adc4a2b8480d3d34f4a3b299f65260e
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} |