Blame view
ifcs2018_proceeding.tex
36.5 KB
30a06bd2a
|
1 2 3 |
\documentclass[a4paper,conference]{IEEEtran/IEEEtran} \usepackage{graphicx,color,hyperref} \usepackage{amsfonts} |
6dfba800f
|
4 5 6 |
\usepackage{amsthm} \usepackage{amssymb} \usepackage{amsmath} |
3ca9d7dfc
|
7 |
\usepackage{algorithm2e} |
30a06bd2a
|
8 9 10 11 12 13 14 15 16 17 18 |
\usepackage{url} \usepackage[normalem]{ulem} \graphicspath{{/home/jmfriedt/gpr/170324_avalanche/}{/home/jmfriedt/gpr/1705_homemade/}} % correct bad hyphenation here \hyphenation{op-tical net-works semi-conduc-tor} \textheight=26cm \setlength{\footskip}{30pt} \pagenumbering{gobble} \begin{document} \title{Filter optimization for real time digital processing of radiofrequency signals: application to oscillator metrology} |
970e2bac6
|
19 20 |
\author{\IEEEauthorblockN{A. Hugeat\IEEEauthorrefmark{1}\IEEEauthorrefmark{2}, J. Bernard\IEEEauthorrefmark{2}, G. Goavec-M\'erou\IEEEauthorrefmark{1}, |
190924a53
|
21 |
P.-Y. Bourgeois\IEEEauthorrefmark{1}, J.-M. Friedt\IEEEauthorrefmark{1}} |
30a06bd2a
|
22 23 24 25 26 27 28 |
\IEEEauthorblockA{\IEEEauthorrefmark{1}FEMTO-ST, Time \& Frequency department, Besan\c con, France } \IEEEauthorblockA{\IEEEauthorrefmark{2}FEMTO-ST, Computer Science department DISC, Besan\c con, France \\ Email: \{pyb2,jmfriedt\}@femto-st.fr} } \maketitle \thispagestyle{plain} \pagestyle{plain} |
6dfba800f
|
29 30 |
ewtheorem{definition}{Definition} |
30a06bd2a
|
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
\begin{abstract} Software Defined Radio (SDR) provides stability, flexibility and reconfigurability to radiofrequency signal processing. Applied to oscillator characterization in the context of ultrastable clocks, stringent filtering requirements are defined by spurious signal or noise rejection needs. Since real time radiofrequency processing must be performed in a Field Programmable Array to meet timing constraints, we investigate optimization strategies to design filters meeting rejection characteristics while limiting the hardware resources required and keeping timing constraints within the targeted measurement bandwidths. \end{abstract} \begin{IEEEkeywords} Software Defined Radio, Mixed-Integer Linear Programming, Finite Impulse Response filter \end{IEEEkeywords} \section{Digital signal processing of ultrastable clock signals} Analog oscillator phase noise characteristics are classically performed by downconverting |
970e2bac6
|
49 |
the radiofrequency signal using a saturated mixer to bring the radiofrequency signal to baseband, |
30a06bd2a
|
50 51 |
followed by a Fourier analysis of the beat signal to analyze phase fluctuations close to carrier. In a fully digital approach, the radiofrequency signal is digitized and numerically downconverted by |
970e2bac6
|
52 |
multiplying the samples with a local numerically controlled oscillator (Fig. \ref{schema}) \cite{rsi}. |
30a06bd2a
|
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
\begin{figure}[h!tb] \begin{center} \includegraphics[width=.8\linewidth]{images/schema} \end{center} \caption{Fully digital oscillator phase noise characterization: the Device Under Test (DUT) signal is sampled by the radiofrequency grade Analog to Digital Converter (ADC) and downconverted by mixing with a Numerically Controlled Oscillator (NCO). Unwanted signals and noise aliases are rejected by a Low Pass Filter (LPF) implemented as a cascade of Finite Impulse Response (FIR) filters. The signal is then decimated before a Fourier analysis displays the spectral characteristics of the phase fluctuations.} \label{schema} \end{figure} As with the analog mixer, the non-linear behavior of the downconverter introduces noise or spurious signal aliasing as well as the generation of the frequency sum signal in addition to the frequency difference. These unwanted spectral characteristics must be rejected before decimating the data stream |
4dfca2c81
|
71 |
for the phase noise spectral characterization. The characteristics introduced between the |
5c78fa3b0
|
72 |
downconverter |
30a06bd2a
|
73 74 75 76 77 78 79 80 81 |
and the decimation processing blocks are core characteristics of an oscillator characterization system, and must reject out-of-band signals below the targeted phase noise -- typically in the sub -170~dBc/Hz for ultrastable oscillator we aim at characterizing. The filter blocks will use most resources of the Field Programmable Gate Array (FPGA) used to process the radiofrequency datastream: optimizing the performance of the filter while reducing the needed resources is hence tackled in a systematic approach using optimization techniques. Most significantly, we tackle the issue by attempting to cascade multiple Finite Impulse Response (FIR) filters with tunable number of coefficients and tunable number of bits representing the coefficients and the data being processed. |
7fcf1da2a
|
82 83 84 |
\section{Finite impulse response filter} We select FIR filter for their unconditional stability and ease of design. A FIR filter is defined |
4dfca2c81
|
85 |
by a set of weights $b_k$ applied to the inputs $x_k$ through a convolution to generate the |
5c78fa3b0
|
86 |
outputs $y_k$ |
7fcf1da2a
|
87 |
$$y_n=\sum_{k=0}^N b_k x_{n-k}$$ |
190924a53
|
88 |
As opposed to an implementation on a general purpose processor in which word size is defined by the |
7fcf1da2a
|
89 |
processor architecture, implementing such a filter on an FPGA offer more degrees of freedom since |
4dfca2c81
|
90 |
not only the coefficient values and number of taps must be defined, but also the number of bits |
5c78fa3b0
|
91 92 |
defining the coefficients and the sample size. For this reason, and because we consider pipeline processing (as opposed to First-In, First-Out memory batch processing) of radiofrequency |
4dfca2c81
|
93 |
signals, High Level Synthesis (HLS) languages \cite{kasbah2008multigrid} are not considered but |
5c78fa3b0
|
94 95 |
the problem is tackled at the Very-high-speed-integrated-circuit Hardware Description Language (VHDL). Since latency is not an issue in a openloop phase noise characterization instrument, the large |
4dfca2c81
|
96 |
numbre of taps in the FIR, as opposed to the shorter Infinite Impulse Response (IIR) filter, |
5c78fa3b0
|
97 |
is not considered as an issue as would be in a closed loop system. |
7fcf1da2a
|
98 |
|
76ebb20ed
|
99 100 101 |
The coefficients are classically expressed as floating point values. However, this binary number representation is not efficient for fast arithmetic computation by an FPGA. Instead, we select to quantify these floating point values into integer values. This quantization |
4dfca2c81
|
102 |
will result in some precision loss. |
6dfba800f
|
103 104 105 106 |
%As illustrated in Fig. \ref{float_vs_int}, we see that we aren't %need too coefficients or too sample size. If we have lot of coefficients but a small sample size, %the first and last are equal to zero. But if we have too sample size for few coefficients that not improve the quality. |
190924a53
|
107 |
|
76ebb20ed
|
108 |
% JMF je ne comprends pas la derniere phrase ci-dessus ni la figure ci dessous |
4dfca2c81
|
109 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) % et que l'inverse trop de bit sur pas assez de coeff on ne gagne rien, je vais essayer de la reformuler |
6dfba800f
|
111 112 113 |
%\begin{figure}[h!tb] %\includegraphics[width=\linewidth]{images/float-vs-integer.pdf} %\caption{Impact of the quantization resolution of the coefficients} |
ee2ff04c6
|
114 |
%\label{float_vs_int} |
6dfba800f
|
115 116 117 118 119 120 121 122 123 124 125 126 |
%\end{figure} The tradeoff between quantization resolution and number of coefficients when considering integer operations is not trivial. As an illustration of the issue related to the relation between number of fiter taps and quantization, Fig. \ref{float_vs_int} exhibits a 128-coefficient FIR bandpass filter designed using floating point numbers (blue). Upon quantization on 6~bit integers, 60 of the 128~coefficients in the beginning and end of the taps become null, making the large number of coefficients irrelevant and allowing to save processing resource by shrinking the filter length. This tradeoff aimed at minimizing resources to reach a given rejection level, or maximizing out of band rejection for a given computational resource, will drive the investigation on cascading filters designed with varying tap resolution and tap length, as will be shown in the next section. |
ee2ff04c6
|
127 128 129 130 131 132 |
\begin{figure}[h!tb] \includegraphics[width=\linewidth]{images/demo_filtre} \caption{Impact of the quantization resolution of the coefficients: the quantization is set to 6~bits, setting the 30~first and 30~last coefficients out of the initial 128~band-pass filter coefficients to 0.} |
190924a53
|
133 134 |
\label{float_vs_int} \end{figure} |
30a06bd2a
|
135 136 137 138 139 140 141 142 143 144 145 146 147 |
\section{Filter optimization} A basic approach for implementing the FIR filter is to compute the transfer function of a monolithic filter: this single filter defines all coefficients with the same resolution (number of bits) and processes data represented with their own resolution. Meeting the filter shape requires a large number of coefficients, limited by resources of the FPGA since this filter must process data stream at the radiofrequency sampling rate after the mixer. An optimization problem \cite{leung2004handbook} aims at improving one or many performance criteria within a constrained resource environment. Amongst the tools developed to meet this aim, Mixed-Integer Linear Programming (MILP) provides the framework to provide a formal definition of the stated problem and search for an optimal use of available resources \cite{yu2007design, kodek1980design}. |
3ca9d7dfc
|
148 149 150 151 152 153 154 155 |
First we need to ensure that our problem is a real optimization problem. When we design a process inside the FPGA we want reach some requirements by example the throughput, the computation time or the rejection noise... But we some limited resources to design the process like BRAM (high performance RAM), DSP (Digital Signal Processor) or LUT (Look Up Table). Since we want optimize some criteria and we have some limited resources our problem is a classical optimization problem. Specifically the degrees of freedom when addressing the problem of replacing the single monolithic |
970e2bac6
|
156 |
FIR with a cascade of optimized filters are the number of coefficients $N_i$ of each filter $i$, |
4dfca2c81
|
157 |
the number of bits $C_i$ representing the coefficients and the number of bits $D_i$ representing |
970e2bac6
|
158 159 |
the data fed to the filter. Because each FIR in the chain is fed the output of the previous stage, the optimization of the complete processing chain within a constrained resource environment is not |
4dfca2c81
|
160 |
trivial. The resource occupation of a FIR filter is considered as $D_i+C_i \times N_i)$ which is |
30a06bd2a
|
161 |
the number of bits needed in a worst case condition to represent the output of the FIR. |
4dfca2c81
|
162 163 |
Unfortunately this representation is not sufficient to represent the real occupation inside FPGA. In fact the FPGA have some BRAM block on which the coefficients are stored and each BRAM are not |
3ca9d7dfc
|
164 |
share between different filters. Moreover the multiplication need DSP to be |
4dfca2c81
|
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
perform. Those DSP are in limited quantity so in the future we shall to consider this. At the moment our model can be express like this : \begin{align} \begin{cases} \mathcal{R}_i &= \mathcal{F}(N_i, C_i)\\ \mathcal{A}_i &= N_i * C_i + D_i\\ \Delta_i &= \Delta _{i-1} + \mathcal{P}_i \end{cases} \label{model-FIR} \end{align} To explain the system \ref{model-FIR}, $\mathcal{R}_i$ represent the rejection of depending on $N_i$ and $C_i$, $\mathcal{A}$ is just theoretical occupation and $\Delta_i$ is the total rejection for the current stage $i$. At this moment we are not able to express the function $\mathcal{F}$ so we are run some simulations to determine the rejection noise depending on $N_i$ and $C_i$. But to choose the right filter we must define clearly the rejection criterion. If we take incorrect criterion |
3ca9d7dfc
|
180 181 |
the linear program will produce a wrong solution. So we define a criterion to avoid ripple on passband and just keep the maximum of rejection on the stopband (see the figure \ref{rejection-shape}). Thank to this system, we can able to design our linear program. |
4dfca2c81
|
182 183 184 185 186 187 188 189 |
\begin{figure}[h!tb] \begin{center} \includegraphics[width=.5\linewidth]{schema2} \caption{Shape of rejection} \label{rejection-shape} \end{center} \end{figure} |
30a06bd2a
|
190 |
|
30a06bd2a
|
191 192 193 194 195 |
\begin{figure}[h!tb] \includegraphics[width=\linewidth]{images/noise-rejection.pdf} \caption{Rejection as a function of number of coefficients and number of bits} \label{noise-rejection} \end{figure} |
4dfca2c81
|
196 |
The objective function maximizes the noise rejection ($\max(\Delta_{i_{\max}})$) while keeping resource occupation below |
30a06bd2a
|
197 198 199 |
a user-defined threshold. The MILP solver is allowed to choose the number of successive filters, within an upper bound. The last problem is to model the noise rejection. Since filter noise rejection capability is not modeled with linear equation, a look-up-table is generated |
4dfca2c81
|
200 |
for multiple filter configurations in which the $C_i$, $D_i$ and $N_i$ parameters are varied: for each |
30a06bd2a
|
201 202 203 204 205 206 207 |
one of these conditions, the low-pass filter rejection defined as the mean power between half the Nyquist frequency and the Nyquist frequency is stored as computed by the frequency response of the digital filter (Fig. \ref{noise-rejection}). Linear program formalism for solving the problem is well documented: an objective function is defined which is linearly dependent on the parameters to be optimized. Constraints are expressed as linear equation and solved using one of the available solvers, in our case GLPK\cite{glpk}. |
3ca9d7dfc
|
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 |
With the notation explain in system \ref{model-FIR}, we have defined our linear problem like this: \paragraph{Variables} \begin{align*} x_{i,j} \in \lbrace 0,1 \rbrace & \text{ $i$ is a specific filter} \\ & \text{ $j$ is the stage} \\ & \text{ If $x_{i,j}$ is equal to 1, the filter is selected} \\ \end{align*} \paragraph{Constants} \begin{align*} \mathcal{F} = \lbrace F_1 ... F_p \rbrace & \text{ All possible filters}\\ & \text{ $p$ is the number of different filters} \\ C(i) & \text{ Constant to let the number of coefficients}\\ & \text{ for the filter $i$}\\ \pi_C(i) & \text{ Constant to let the number of bits of}\\ & \text{ each coefficient for the filter $i$}\\ \mathcal{A}_{\max} & \text{ Max space available inside the FPGA} \end{align*} \paragraph{Constraints} \begin{align*} 1 \leq i \leq p & \\ 1 \leq j \leq q & \text{ $q$ is the max of filter stage} \\ \forall j, \mathlarger{\sum_{i}} x_{i,j} = 1 & \text{ At most one filter by stage} \\ \mathcal{S}_0 = 0 & \text{ initial occupation}\\ \forall j, \mathcal{S}_j = \mathcal{S}_{j-1} + \forall i, x_{i,j} \times \mathcal{A}_i \\%\label{cstr_size} \mathcal{S} \leq \mathcal{S}_{\max} \\ \mathcal{N}_0 = 0 & \text{ initial rejection}\\ \forall j, \mathcal{N}_j = \mathcal{N}_{j-1} + \forall i, x_{i,j} \times \mathcal{R}_i \\%\label{cstr_rejection} \mathcal{N}_q \geqslant 160 & \text{ an user's bound}\\ \end{align*} \paragraph{Goal} \begin{align*} \min \mathcal{S}_q \end{align*} % AH j'aimerai mettre deux equations avec un label mais je ne sais pas comment faire The constraint \ref{cstr_size} means the occupation for the current stage $j$ depends on the previous occupation and the occupation of current selected filter (it is possible that no filter is selected for this stage). And the second one \ref{cstr_rejection} means the same thing but for the rejection, the rejection depends the previous rejection plus the rejection of selected filter. |
30a06bd2a
|
248 249 250 |
The MILP solver provides a solution to the problem by selecting a series of small FIR with increasing number of bits representing data and coefficients as well as an increasing number |
970e2bac6
|
251 |
of coefficients, instead of a single monolithic filter. Fig. \ref{compare-fir} exhibits the |
30a06bd2a
|
252 253 254 255 256 257 258 259 |
performance comparison between one solution and a monolithic FIR when selecting a cutoff frequency of half the Nyquist frequency: a series of 5 FIR and a series of 10 FIR with the same space usage are provided as selected by the MILP solver. The FIR cascade provides improved rejection than the monolithic FIR at the expense of a lower cutoff frequency which remains to be tuned or compensated for. \begin{figure}[h!tb] % \includegraphics[width=\linewidth]{images/compare-fir.pdf} |
3ca9d7dfc
|
260 |
\includegraphics[width=\linewidth]{images/fir-mono-vs-fir-series-noise-fixe-jmf-light.pdf} |
30a06bd2a
|
261 262 263 264 265 266 267 268 269 270 |
\caption{Comparison of the rejection capability between a series of FIR and a monolithic FIR with a cutoff frequency set at half the Nyquist frequency.} \label{compare-fir} \end{figure} The resource occupation when synthesizing such FIR on a Xilinx FPGA is summarized as Tab. \ref{t1}. \begin{table}[h!tb] \caption{Resource occupation on a Xilinx Zynq-7000 series FPGA when synthesizing the FIR cascade identified as optimal by the MILP solver within a finite resource criterion. The last line refers |
3ca9d7dfc
|
271 |
to available resources on a Zynq-7020 as found on the Zedboard.} |
30a06bd2a
|
272 |
\begin{center} |
315be2a30
|
273 274 |
\begin{tabular}{|c|cccc|}\hline FIR & BlockRAM & LookUpTables & DSP & rejection (dB)\\\hline\hline |
3ca9d7dfc
|
275 276 277 278 |
1 (monolithic) & 1 & 76183 & 220 & -162 \\ 5 & 5 & 18597 & 220 & -160 \\ 10 & 8 & 24729 & 220 & -161 \\\hline\hline \textbf{Zynq 7020} & \textbf{420} & \textbf{53200} & \textbf{220} & \\\hline |
30a06bd2a
|
279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 |
\end{tabular} \end{center} %\vspace{-0.7cm} \label{t1} \end{table} \section{Filter coefficient selection} The coefficients of a single monolithic filter are computed as the impulse response of the filter transfer function, and practically approximated by a multitude of methods including least square optimization (Matlab's {\tt firls} function), Hamming or Kaiser windowing (Matlab's {\tt fir1} function). Cascading filters opens a new optimization opportunity by selecting various coefficient sets depending on the number of coefficients. Fig. \ref{2} illustrates that for a number of coefficients ranging from 8 to 47, {\tt fir1} provides a better rejection than {\tt firls}: since the linear solver increases the number of coefficients along the processing chain, the type of selected filter also changes depending on the number of coefficients and evolves along the processing chain. \begin{figure}[h!tb] \includegraphics[width=\linewidth]{images/fir1-vs-firls} \caption{Evolution of the rejection capability of least-square optimized filters and Hamming FIR filters as a function of the number of coefficients, for floating point numbers and 8-bit encoded integers.} \label{2} \end{figure} \section{Conclusion} We address the optimization problem of designing a low-pass filter chain in a Field Programmable Gate Array for improved noise rejection within constrained resource occupation, as needed for real time processing of radiofrequency signal when characterizing spectral phase noise characteristics of stable oscillators. The flexibility of the digital approach makes the result best suited for closing the loop and using the measurement output in a feedback loop for controlling clocks, e.g. in a quartz-stabilized high performance clock whose long term behavior |
970e2bac6
|
313 |
is controlled by non-piezoelectric resonator (sapphire resonator, microwave or optical |
30a06bd2a
|
314 315 316 |
atomic transition). \section*{Acknowledgement} |
970e2bac6
|
317 318 319 |
This work is supported by the ANR Programme d'Investissement d'Avenir in progress at the Time and Frequency Departments of the FEMTO-ST Institute (Oscillator IMP, First-TF and Refimeve+), and by R\'egion de Franche-Comt\'e. |
30a06bd2a
|
320 321 |
The authors would like to thank E. Rubiola, F. Vernotte, G. Cabodevila for support and fruitful discussions. |
6dfba800f
|
322 |
|
5c78fa3b0
|
323 |
XXX |
6dfba800f
|
324 325 |
\subsubsection{Contraintes} |
4dfca2c81
|
326 327 |
Dans les r\'ef\'erences \cite{zhuo2007scalable, olariu1993computing, pan1999improved}, les auteurs |
6dfba800f
|
328 |
proposent tous des optimisations hardware uniquement. Cependant ces articles sont focalis\'es sur des optimisations mat\'erielles |
4dfca2c81
|
329 |
or notre objectif est de trouver une formalisation math\'ematique d'un FPGA. |
6dfba800f
|
330 331 |
Une dernière approche que nous avons \'etudi\'ee est l'utilisation de \emph{skeletons}. D. Crookes et A. Benkrid ont beaucoup parl\'e de cette m\'ethode dans leur articles \cite{crookes1998environment, crookes2000design, benkrid2002towards}. |
4dfca2c81
|
332 333 |
L'id\'ee essentielle est qu'ils r\'ealisent des composants très optimis\'es et param\'etrables. Ainsi lorsqu'ils veulent faire un d\'eveloppement, ils utilisent les blocs d\'ejà faits. |
6dfba800f
|
334 |
|
4dfca2c81
|
335 |
Ces blocs repr\'esentent une \'etape de calcul (une d\'ecimation, un filtrage, une modulation, une |
6dfba800f
|
336 |
d\'emodulation etc...). En prenant le cas du FIR, on rend param\'etrables les valeurs des coefficients |
4dfca2c81
|
337 |
utilis\'es pour le produit de convolutions ainsi que leur nombre. Le facteur de d\'ecimation est |
6dfba800f
|
338 |
lui aussi param\'etrable. |
4dfca2c81
|
339 |
|
6dfba800f
|
340 |
On gagne ainsi beaucoup de temps de d\'eveloppement car on r\'eutilise des composants d\'ejà \'eprouv\'es et optimis\'es. |
4dfca2c81
|
341 |
De plus, au fil des projets, on constitue une bibliothèque de composants nous |
6dfba800f
|
342 |
permettant de faire une chaine complète très simplement. |
4dfca2c81
|
343 |
|
6dfba800f
|
344 345 346 |
K. Benkrid, S. Belkacemi et A. Benkrid dans leur article\cite{hide} caract\'erisent ces blocs en Prolog pour faire un langage descriptif permettant d'assembler les blocs de manière optimale. En partant de cette description, ils arrivent à g\'en\'erer directement le code VHDL. |
4dfca2c81
|
347 |
|
6dfba800f
|
348 |
\begin{itemize} |
4dfca2c81
|
349 |
\item la latence du bloc repr\'esente, en coups d'horloge, le temps entre l'entr\'ee de la donn\'ee |
6dfba800f
|
350 |
et le temps où la même donn\'ee ressort du bloc. |
4dfca2c81
|
351 |
\item l'acceptance repr\'esente le nombre de donn\'ees par coup d'horloge que le bloc est capable |
6dfba800f
|
352 353 354 |
de traiter. \item la sortance repr\'esente le nombre de donn\'ees qui sortent par coup d'horloge. \end{itemize} |
4dfca2c81
|
355 |
|
6dfba800f
|
356 |
Gr\^ace à cela, le logiciel est capable de donner une impl\'ementation optimale d'un problème qu'on lui |
4dfca2c81
|
357 |
soumet. Le problème ne se d\'efinit pas uniquement par un r\'esultat attendu mais aussi par des |
6dfba800f
|
358 |
contraintes de d\'ebit et/ou de pr\'ecision. |
4dfca2c81
|
359 360 361 362 363 364 |
Dans une second temps, nous nous sommes aussi int\'eress\'es à des articles d'ordonnancement. Nous avons notamment lu des documents parlant des cas des micro-usines. Les micro-usines ressemblent un peu à des FPGA dans le sens où on connait à l'avance les t\^aches à effectuer et leurs caract\'eristiques. Nous allons donc nous inspirer |
6dfba800f
|
365 |
de leur modèle pour essayer de construire le notre. |
4dfca2c81
|
366 367 368 |
Dans sa thèse A. Dobrila \cite{these-alex} traite d'un problème de tol\'erance aux pannes dans le contextes des mirco-usines. Mais les FPGA ne sont pas concern\'es dans la mesure |
6dfba800f
|
369 370 |
où si le composant tombe en panne, tout le traitement est paralys\'e. Cette thèse nous a n\'eanmoins permis d'avoir un exemple de formalisation de problème. |
4dfca2c81
|
371 |
|
6dfba800f
|
372 |
Pour finir nous avons lu la thèse de M. Coqblin \cite{these-mathias} qui elle aussi traite du sujet |
4dfca2c81
|
373 |
des micro-usines. Le travail de M. Coqblin porte surtout sur une chaine de traitement |
6dfba800f
|
374 |
reconfigurable, il tient compte dans ses travaux du surcoût engendr\'e par la reconfiguration d'une machine. |
4dfca2c81
|
375 376 |
Cela n'est pas tout à fait exploitable dans notre contexte puisqu'une puce FPGA d\'es qu'elle est programm\'ee n'a pas la possibilit\'e de reconfigurer une partie de sa chaine de |
6dfba800f
|
377 |
traitement. Là encore, nous avions un exemple de formalisation d'un problème. |
4dfca2c81
|
378 |
|
6dfba800f
|
379 380 |
Pour conclure, nous avons vu deux approches li\'ees à deux domaines diff\'erents. La première est le point de vue \'electronique qui se focalise principalement sur des optimisations mat\'erielles ou algorithmiques. |
4dfca2c81
|
381 |
La seconde est le point de vue informatique : les modèles sont très g\'en\'eriques et ne sont pas |
6dfba800f
|
382 383 |
adapt\'es au cas des FPGA. La suite de ce rapport se concentrera donc sur la recherche d'un compromis entre ces deux points de vue. |
4dfca2c81
|
384 |
|
6dfba800f
|
385 |
\section{Contexte d'ordonnancement} |
4dfca2c81
|
386 |
Dans cette partie, nous donnerons des d\'efinitions de termes rattach\'es au domaine de l'ordonnancement |
6dfba800f
|
387 |
et nous verrons que le sujet trait\'e se rapproche beaucoup d'un problème d'ordonnancement. De ce fait |
4dfca2c81
|
388 |
nous pourrons aller plus loin que les travaux vus pr\'ec\'edemment et nous tenterons des approches d'ordonnancement |
6dfba800f
|
389 |
et d'optimisation. |
4dfca2c81
|
390 |
|
6dfba800f
|
391 |
\subsection{D\'efinition du vocabulaire} |
4dfca2c81
|
392 |
Avant tout, il faut d\'efinir ce qu'est un problème d'optimisation. Il y a deux d\'efinitions |
6dfba800f
|
393 394 395 |
importantes à donner. La première est propos\'ee par Legrand et Robert dans leur livre \cite{def1-ordo} : \begin{definition} \label{def-ordo1} |
4dfca2c81
|
396 |
Un ordonnancement d'un système de t\^aches $G\ =\ (V,\ E,\ w)$ est une fonction $\sigma$ : |
6dfba800f
|
397 398 |
$V \rightarrow \mathbb{N}$ telle que $\sigma(u) + w(u) \leq \sigma(v)$ pour toute arête $(u,\ v) \in E$. \end{definition} |
4dfca2c81
|
399 400 401 402 403 |
Dit plus simplement, l'ensemble $V$ repr\'esente les t\^aches à ex\'ecuter, l'ensemble $E$ repr\'esente les d\'ependances 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 chacune des t\^aches. La d\'efinition dit que si une t\^ache $v$ d\'epend d'une t\^ache $u$ alors 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 |
6dfba800f
|
404 |
temps d'ex\'ecution. |
4dfca2c81
|
405 |
|
6dfba800f
|
406 407 408 409 410 411 |
Une autre d\'efinition importante qui est propos\'ee par Leung et al. \cite{def2-ordo} est : \begin{definition} \label{def-ordo2} L'ordonnancement traite de l'allocation de ressources rares à des activit\'es avec l'objectif d'optimiser un ou plusieurs critères de performance. \end{definition} |
4dfca2c81
|
412 |
|
6dfba800f
|
413 414 415 |
Cette d\'efinition est plus g\'en\'erique mais elle nous int\'eresse d'avantage que la d\'efinition \ref{def-ordo1}. 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. Dans les faits les dates de d\'ebut ne nous int\'eressent pas r\'eellement. |
4dfca2c81
|
416 |
|
6dfba800f
|
417 |
En revanche la d\'efinition \ref{def-ordo2} sera au c\oe{}ur du projet. Pour se convaincre de cela, |
4dfca2c81
|
418 |
il nous faut d'abord d\'efinir quel est le type de problème d'ordonnancement qu'on traite et quelles |
6dfba800f
|
419 |
sont les m\'ethodes qu'on peut appliquer. |
4dfca2c81
|
420 |
|
6dfba800f
|
421 422 |
Les problèmes d'ordonnancement peuvent être class\'es en diff\'erentes cat\'egories : \begin{itemize} |
4dfca2c81
|
423 |
\item T\^aches ind\'ependantes : dans cette cat\'egorie de problèmes, les t\^aches sont complètement ind\'ependantes |
6dfba800f
|
424 425 |
les unes des autres. Dans notre cas, ce n'est pas le plus adapt\'e. \item Graphe de t\^aches : la d\'efinition \ref{def-ordo1} d\'ecrit cette cat\'egorie. La plupart du temps, |
4dfca2c81
|
426 427 428 429 |
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 des t\^aches qui ont un certain nombre de d\'ependances. On pourra même dire que dans certain cas, on a des anti-arbres, c'est à dire que nous avons une multitude de t\^aches d'entr\'ees qui convergent vers une t\^ache de fin. |
6dfba800f
|
430 431 432 433 |
\item Workflow : cette cat\'egorie est une sous cat\'egorie des graphes de t\^aches dans le sens où 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 que nous traitons ici. \end{itemize} |
4dfca2c81
|
434 |
|
6dfba800f
|
435 436 |
Bien entendu, cette liste n'est pas exhaustive et il existe de nombreuses autres classifications et sous-classifications de ces problèmes. Nous n'avons parl\'e ici que des cat\'egories les plus communes. |
4dfca2c81
|
437 438 |
Un autre point à d\'efinir, est le critère d'optimisation. Il y a là encore un grand nombre de |
6dfba800f
|
439 440 441 |
critères possibles. Nous allons donc parler des principaux : \begin{itemize} \item Temps de compl\'etion total (ou Makespan en anglais) : ce critère est l'un des critères d'optimisation |
4dfca2c81
|
442 |
les plus courant. Il s'agit donc de minimiser la date de fin de la dernière t\^ache de l'ensemble des |
6dfba800f
|
443 444 445 446 447 448 |
t\^aches à ex\'ecuter. L'enjeu de cette optimisation est donc de trouver l'ordonnancement optimal permettant la fin d'ex\'ecution au plus tôt. \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 et d'optimiser ce r\'esultat. \item Le d\'ebit : ce critère quant à lui, vise à augmenter au maximum le d\'ebit de traitement des donn\'ees. \end{itemize} |
4dfca2c81
|
449 |
|
6dfba800f
|
450 451 452 453 |
En plus de cela, on peut avoir besoin de plusieurs critères d'optimisation. Il s'agit dans ce cas d'une optimisation multi-critères. Bien entendu, cela complexifie d'autant plus le problème car la solution la plus optimale pour un 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 de faire le meilleur compromis entre tous les critères. |
4dfca2c81
|
454 |
|
6dfba800f
|
455 456 |
\subsection{Formalisation du problème} \label{formalisation} |
4dfca2c81
|
457 |
Maintenant que nous avons donn\'e le vocabulaire li\'e à l'ordonnancement, nous allons pouvoir essayer caract\'eriser |
6dfba800f
|
458 459 |
formellement notre problème. En effet, nous allons reprendre les contraintes \'enonc\'ees dans la sections \ref{def-contraintes} et nous essayerons de les formaliser le plus finement possible. |
4dfca2c81
|
460 |
|
6dfba800f
|
461 462 463 |
Comme nous l'avons dit, une t\^ache est un bloc de traitement. Chaque t\^ache $i$ dispose d'un ensemble de paramètres que nous nommerons $\mathcal{P}_{i}$. Cet ensemble $\mathcal{P}_i$ est propre à chaque t\^ache et il variera d'une t\^ache à l'autre. Nous reviendrons plus tard sur les paramètres qui peuvent composer cet ensemble. |
4dfca2c81
|
464 |
|
6dfba800f
|
465 466 467 468 |
Outre cet ensemble $\mathcal{P}_i$, chaque t\^ache dispose de paramètres communs : \begin{itemize} \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. 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. |
4dfca2c81
|
469 470 |
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 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 |
6dfba800f
|
471 |
et de sa date d'entr\'ee. Nous nommerons cette dur\'ee $\delta_i$. % Je devrais la nomm\'ee w comme dans la def2 |
4dfca2c81
|
472 |
\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 |
6dfba800f
|
473 |
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^+$. |
4dfca2c81
|
474 |
\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). |
6dfba800f
|
475 476 477 478 |
Selon les t\^aches, les fr\'equences varieront. En effet, certains blocs ralentissent le flux c'est pourquoi on distingue la fr\'equence du 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^+$. \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. est capable de produire). Les t\^aches peuvent avoir à traiter des gros volumes de donn\'ees et n'en ressortir qu'une partie. Cette |
4dfca2c81
|
479 |
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^-$ |
6dfba800f
|
480 |
et la quantit\'e de donn\'ees sortantes $q_i^+$ pour une t\^ache $i$. |
4dfca2c81
|
481 482 |
\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 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 |
6dfba800f
|
483 484 485 |
t\^ache $i$ comme $d_i^-\ =\ q_i^-\ *\ f_i^-$ et le d\'ebit sortant comme $d_i^+\ =\ q_i^+\ *\ f_i^+$. \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. Nous nommerons $\mathcal{A}_i$ cette taille. |
4dfca2c81
|
486 |
\item Les pr\'ed\'ecesseurs et successeurs d'une t\^ache : cela nous permet de connaître les t\^aches requises pour pouvoir traiter |
6dfba800f
|
487 488 489 |
la t\^ache $i$ ainsi que les t\^aches qui en d\'ependent. Ces ensemble sont not\'es $\Gamma _i ^-$ et $ \Gamma _i ^+$ \\ %TODO Est-ce vraiment un paramètre ? \end{itemize} |
4dfca2c81
|
490 491 492 |
Ces diff\'erents paramètres communs sont fortement li\'es aux \'el\'ements de $\mathcal{P}_i$. Voici quelques exemples de relations que nous avons identifi\'ees : |
6dfba800f
|
493 494 495 496 497 498 499 500 |
\begin{itemize} \item $ \delta _i ^+ \ = \ \mathcal{F}_{\delta}(\pi_i^-,\ \pi_i^+,\ d_i^-,\ d_i^+,\ \mathcal{P}_i) $ donne le temps d'ex\'ecution de la t\^ache en fonction de la pr\'ecision voulue, du d\'ebit et des paramètres internes. \item $ \pi _i ^+ \ = \ \mathcal{F}_{p}(\pi_i^-,\ \mathcal{P}_i) $, la fonction $F_p$ donne la pr\'ecision en sortie selon la pr\'ecision de d\'epart et les paramètres internes de la t\^ache. \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 sortant et des variables internes de la t\^ache. \item $A_i^+\ =\ \mathcal{F}_A(\pi_i^-,\ \pi_i^+,\ d_i^-,\ d_i^+, \mathcal{P}_i)$ |
4dfca2c81
|
501 502 503 |
\end{itemize} Pour le moment, nous ne sommes pas capables de donner une d\'efinition g\'en\'erale de ces fonctions. Mais en revanche, sur quelques exemples simples (cf. \ref{def-contraintes}), nous parvenons à donner une \'evaluation de ces fonctions. |
6dfba800f
|
504 505 |
Maintenant que nous avons donn\'e toutes les notations utiles, nous allons \'enoncer des contraintes relatives à notre problème. Soit un DGA $G(V,\ E)$, on a pour toutes arêtes $(i, j)\ \in\ E$ les in\'equations suivantes : |
4dfca2c81
|
506 |
|
6dfba800f
|
507 |
\paragraph{Contrainte de pr\'ecision :} |
4dfca2c81
|
508 |
Cette in\'equation traduit la contrainte de pr\'ecision d'une t\^ache à l'autre : |
6dfba800f
|
509 510 511 |
\begin{align*} \pi _i ^+ \geq \pi _j ^- \end{align*} |
4dfca2c81
|
512 |
|
6dfba800f
|
513 |
\paragraph{Contrainte de d\'ebit :} |
4dfca2c81
|
514 |
Cette in\'equation traduit la contrainte de d\'ebit d'une t\^ache à l'autre : |
6dfba800f
|
515 516 517 |
\begin{align*} d _i ^+ = q _j ^- * (f_i + (1 / s_j) ) & \text{ où } s_j \text{ est une valeur positive de temporisation de la t\^ache} \end{align*} |
4dfca2c81
|
518 |
|
6dfba800f
|
519 |
\paragraph{Contrainte de synchronisation :} |
4dfca2c81
|
520 |
Il s'agit de la contrainte qui impose que si à un moment du traitement, le DAG se s\'epare en plusieurs branches parallèles |
6dfba800f
|
521 522 523 |
et qu'elles se rejoignent plus tard, la somme des latences sur chacune des branches soit la même. Plus formellement, s'il existe plusieurs chemins disjoints, partant de la t\^ache $s$ et allant à la t\^ache de $f$ alors : \begin{align*} |
4dfca2c81
|
524 525 526 527 528 |
\forall \text{ chemin } \mathcal{C}1(s, .., f), \forall \text{ chemin } \mathcal{C}2(s, .., f) \text{ tel que } \mathcal{C}1 eq \mathcal{C}2 \Rightarrow |
6dfba800f
|
529 530 |
\sum _{i} ^{i \in \mathcal{C}1} \delta_i = \sum _{i} ^{i \in \mathcal{C}2} \delta_i \end{align*} |
4dfca2c81
|
531 |
|
6dfba800f
|
532 |
\paragraph{Contrainte de place :} |
4dfca2c81
|
533 |
Cette in\'equation traduit la contrainte de place dans le FPGA. La taille max de la puce FPGA est nomm\'e $\mathcal{A}_{FPGA}$ : |
6dfba800f
|
534 535 536 |
\begin{align*} \sum ^{\text{t\^ache } i} \mathcal{A}_i \leq \mathcal{A}_{FPGA} \end{align*} |
4dfca2c81
|
537 |
|
6dfba800f
|
538 539 |
\subsection{Exemples de mod\'elisation} \label{exemples-modeles} |
4dfca2c81
|
540 |
Nous allons maintenant prendre quelques blocs de traitement simples afin d'illustrer au mieux notre modèle. |
6dfba800f
|
541 |
Pour tous nos exemple, nous prendrons un d\'ebit en entr\'ee de 200 Mo/s avec une pr\'ecision de 16 bit. |
4dfca2c81
|
542 |
|
6dfba800f
|
543 544 |
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 que certaines donn\'ees à intervalle r\'egulier. Cet intervalle est appel\'e le facteur de d\'ecimation, on le notera $N$. |
4dfca2c81
|
545 |
|
6dfba800f
|
546 547 548 549 550 551 552 553 554 555 556 557 |
Donc d'après notre mod\'elisation : \begin{itemize} \item $N \in \mathcal{P}_i$ %TODO N ou 1 ? \item $\delta _i = N\ c.h.$ (coup d'horloge) \item $\pi _i ^+ = \pi _i ^- = 16 bits$ \item $f _i ^+ = f _i ^-$ \item $q _i ^+ = q _i ^- / N$ \item $d _i ^+ = q _i ^- / N / f _i ^-$ \item $\Gamma _i ^+ = \Gamma _i ^- = 1$\\ %TODO Je ne sais pas trouver la taille... \end{itemize} |
4dfca2c81
|
558 559 560 |
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 simple qui permet de dupliquer un flux. On peut donc donner un nombre de sorties à cr\'eer, on note ce paramètre |
6dfba800f
|
561 562 563 564 565 566 567 568 569 570 571 572 |
%TODO pas très inspir\'e... $X$. Voici ce que donne notre mod\'elisation : \begin{itemize} \item $X \in \mathcal{P}_i$ \item $\delta _i = 1\ c.h.$ \item $\pi _i ^+ = \pi _i ^- = 16 bits$ \item $f _i ^+ = f _i ^-$ \item $q _i ^+ = q _i ^-$ \item $d _i ^+ = d _i ^-$ \item $\Gamma _i ^- = 1$ \item $\Gamma _i ^+ = X$\\ \end{itemize} |
4dfca2c81
|
573 |
|
6dfba800f
|
574 |
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 |
4dfca2c81
|
575 |
donn\'ees afin d'acc\'el\'erer les traitement sur les blocs suivants. On peut donc donner le nombre de bits à shifter, |
6dfba800f
|
576 577 578 579 580 581 582 583 584 585 |
on note ce paramètre $S$. Voici ce que donne notre mod\'elisation : \begin{itemize} \item $S \in \mathcal{P}_i$ \item $\delta _i = 1\ c.h.$ \item $\pi _i ^+ = \pi _i ^- - S$ \item $f _i ^+ = f _i ^-$ \item $q _i ^+ = q _i ^-$ \item $d _i ^+ = d _i ^-$ \item $\Gamma _i ^+ = \Gamma _i ^- = 1$\\ \end{itemize} |
4dfca2c81
|
586 587 |
Nous allons traiter un dernier exemple un peu plus complexe, le cas d'un filtre d\'ecimateur (ou FIR). Ce bloc |
6dfba800f
|
588 |
est compos\'e de beaucoup de paramètres internes. On peut d\'efinir un nombre d'\'etages $E$, qui repr\'esente le nombre |
4dfca2c81
|
589 |
d'it\'erations à faire avant d'arrêter le traitement. Afin d'effectuer son filtrage, on doit donner au bloc un ensemble |
6dfba800f
|
590 591 592 593 594 595 596 597 598 599 600 601 602 603 |
de coefficients $C$ et par cons\'equent ces coefficients ont leur propre pr\'ecision $\pi _C$. Pour finir, le dernier paramètre à donner est le facteur de d\'ecimation $N$. Si on applique notre mod\'elisation, on peut obtenir cela : \begin{itemize} \item $E \in \mathcal{P}_i$ \item $C \in \mathcal{P}_i$ \item $\pi _C \in \mathcal{P}_i$ \item $N \in \mathcal{P}_i$ \item $\delta _i = E * |C| * q_i^-\ c.h.$ %Trop simpliste \item $\pi _i ^+ = \pi _i ^- * \pi _C$ \item $f _i ^+ = f _i ^-$ \item $q _i ^+ = q _i ^- / N$ \item $d _i ^+ = q _i ^- / N / f _i ^-$ \item $\Gamma _i ^+ = \Gamma _i ^- = 1$\\ \end{itemize} |
4dfca2c81
|
604 605 |
Ces exemples ne sont que des modèles provisoires; pour s'assurer de leur performance, il faudra les |
6dfba800f
|
606 |
confronter à des simulations. |
4dfca2c81
|
607 608 609 |
Bien que les articles sur les skeletons, \cite{gwen-cogen}, \cite{skeleton} et \cite{hide}, nous aient donn\'e des indices sur une possible |
6dfba800f
|
610 611 |
mod\'elisation, ils \'etaient encore trop focalis\'es sur l'optimisation spatiale des blocs. Nous nous sommes donc inspir\'es de ces travaux pour proposer notre modèle, en faisant abstraction des optimisations bas niveau. |
4dfca2c81
|
612 |
|
30a06bd2a
|
613 |
\bibliographystyle{IEEEtran} |
6dfba800f
|
614 |
\bibliography{references,biblio} |
30a06bd2a
|
615 |
\end{document} |