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