Générateur d ’architecture pour plate-forme reconfigurable...

44
Générateur d ’architecture pour plate-forme reconfigurable dédié au traitement d ’image P.E.R.C.I.P. : Programming Environment on Reconfigurable Components for Image Processing

Transcript of Générateur d ’architecture pour plate-forme reconfigurable...

Page 1: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Générateur d ’architecture pour plate-forme reconfigurable dédié au

traitement d ’image

P.E.R.C.I.P. : Programming Environment on Reconfigurable Components for Image Processing

Page 2: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Positionnement

Implantation en FPGA de nouveaux algorithmesEtudier et formaliser l ’approche Extraire une méthodologieMettre au point un environnement de développement

Page 3: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Plan de la présentation

Traitement d ’imageLes systèmes reconfigurablesMéthodologie suivieMoyens de description UtilisésL ’environnement PERCIPApplicationsConclusion et perspectives

Page 4: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Traitement d ’image et architectures parallèles

Toute manipulation d ’image met en jeu un volume considérable de données

le volume de calcul des applications de T.I. excède souvent la capacité de traitement d ’une machine conventionnellele problème s ’accentue davantage dans un contexte temps réel (suivre le taux vidéo)

Page 5: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Niveaux de traitement d’image

Haut niveau (Reconnaissance des formes, Stéréovision, etc.)

Niveau intermédiaire(LPE, FFT, Hough, etc.)

Bas niveau(Sobel, Laplacien, Médian, etc.)

Page 6: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Chaîne classique de traitement d ’image

Acquisition Filtrages Extraction

Prise deDécision

Reconnaissance

Page 7: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Puissance de calcul et complexité des algorithmes

Acquisition Filtrages Extraction Reconnaissance Décision

Puissance de calcul

FPGA, ASIC

Complexité des algorithmes

μP

Page 8: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Niveau de Traitement d ’Image choisi

Choix : Traitement Bas Niveau d ’Image (TBNI)

les algorithmes linéaires (filtre de Sobel, Prewitt, etc.)les algorithmes non-linéaires (filtre médian, etc…)

Facilité de générer les architectures câblées

Page 9: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Les architectures reconfigurables

Objectif :La flexibilitéLa rapiditéLa compacité

L’élément technologique qui a permis la mise au point de ces architectures est le FPGA (Field Programmable Gate Array)

Page 10: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Exemple de FPGA

IOB

CLB CLB CLB

CLB

CLB

CLB CLB

CLB CLB

Plan de cellules SRAM Ressources d’interconnexion

Matrice d’interrupteurs

Page 11: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Cycle de câblage d ’une application

Codage en VHDL

Simulation fonctionnelle

Erreur ?Non

Oui

1- Synthèse logique ; 2- Simulation post-synthèse ;

Erreur ?Non

Oui

1- Routage ; 2- Simulation post-routage ;

Erreur ?

Non

Oui

Configuration du FPGA

Page 12: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

La méthode classique et celle utilisant PERCIP

Programme Apply

P.E.R.C.I.P.

Configuration des FPGAs

Synthèse logique

Codage en VHDL

Simulation fonctionnelle

Simulations temporelles :Simulation post-synthèseSimulation post-routage

Configuration des FPGAs

a : Approche classique b : Approche PERCIP

Page 13: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Pourquoi Apply

Un langage procéduralNiveau d ’abstraction élevé

liberté pour générer l ’architectureun choix libre du modèle d ’exécutiondétacher la description de l ’algorithme du modèle d ’entrée/sortie

Traitement d ’imageLes systèmes reconfigurablesMéthodologie suivieMoyens de description UtilisésL ’environnement PERCIPApplicationsConclusion et perspectives

Page 14: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Approche de développement en utilisant Apply

P(-1,0) P(0,0)

P(0,1)

P(-1,-1)

P(1,0)

P(-1,1)

P(0,-1) P(1,-1)

P(1,1)

Page 15: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Exemple de programme Apply

procedure Sobel ( inimg : in array (-1. . 1, -1. . 1) of byte border 0, --1thresh : const real,mag : out real) is --2

horiz, vert : integer ; --3

begin --4horiz := inimg(-1, -1) + 2 * inimg(-1, 0) + inimg(-1, 1) --5

- inimg(1, -1) - 2 * inimg(1, 0) - inimg(1, 1) ;vert := inimg(-1, -1) + 2 * inimg(0, -1) + inimg(1, -1) --6

- inimg(-1, 1) - 2 * inimg(0, 1) - inimg(1, 1) ;mag := sqrt(horiz*horiz + vert * vert) ; --7if mag < thresh then --8

mag := 0.0 ; --9end if ; --10

end Sobel ; --11

Page 16: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Types de modélisation en VHDL

VHDLcomportemental

VHDLStructurel

VHDL R.T.L.

(Register Transfer Level)

Niveaux de

Hiérarchie

Page 17: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Exemple de code VHDLentity fir_filter is

port(entree : in integer; sortie : out integer; horloge : in bit; reset : in bit);end fir_filter;

architecture structurelle of fir_filter iscomponent reg port ( d : in integer; clk, reset : in bit; q : out integer); end component;component mul port ( a, b : in integer; s : out integer); end component; component add port ( a, b : in integer; s : out inetger) ; end component;

constant coefficient1 : integer := 1; constant coefficient2 : integer := 2;constant coefficient3 : integer := 3;

signal tmp1, som1 : integer; signal tmp2, som2 : integer; signal prod1, prod2, prod3 : integer;

begin

mul1 : mul port map (a => entree, b => coefficient1, s => prod1);reg1 : reg port map ( d => prod1, q => tmp1, clk => horloge, reset => reset);mul2 : mul port map (a => entree, b => coefficient2, s => prod2);add1 : add port map (a => prod2, b => tmp1, s => som1);reg2 : reg port map(d => som1, q => tmp2, clk => horloge, reset => reset);mul3 : mul port map (a => entree, b => coefficient3, s => prod3);add2 : add port map (a => prod3, b => tmp2, s => som2);reg3 : reg port map(d => som2, q => sortie, clk => horloge, reset => reset);

end structurelle;

Page 18: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

P.E.R.C.I.P.

procedure entree(x : in array(-1..0)of byte,s : out byte) isbegins := x(-1) + x(0);end entree;

GENERATEUR D’ARCHITECTURE

BIBLIOTHEQUE

X

S+

PERCIP

Traitement d ’imageLes systèmes reconfigurablesMéthodologie suivieMoyens de description UtilisésL ’environnement PERCIPApplicationsConclusion et perspectives

Page 19: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Etapes du générateur d’architectures de PERCIP

programme.apl (code Apply)

Analyse lexicale

Analyse syntaxique

Génération de l’architecture

Optimisation de l’architecture

Génération du code VHDL

architecture.vhdl

Le générateur d’architecture de PERCIP

Page 20: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Réseau FIR

MXK

W0W1

W2 WN-1

YK

M

+

M

+ +

M Elément de retard

XK-1 XK-2 XK-N+1

• 1122110 ... +−−−− ++++= NKNKKKK XWXWXWXWY

Page 21: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

FIR 1D (-1, -1, -1)

FIR 1D (-1, 8, -1)

FIR 1D (-1, -1, -1)

+

image(k, -1)

image(k, 0)

image(k, +1)

sortie

Page 22: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Réseau systolique

+

*

+

*

+

*X4X4X3X3X2X2 X1 X1

W3W2W1

Y0

PT1

M

M

M

M

M

M

• Y = W1X3 + W2X2 + W3X1

• PT1 = X1X1 X2X2 X3X3 ...

Page 23: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Etapes du générateur d’architectures de PERCIP

programme.apl (code Apply)

Analyse lexicale

Analyse syntaxique

Génération de l’architecture

Optimisation de l’architecture

Génération du code VHDL

architecture.vhdl

Le générateur d’architecture de PERCIP

Page 24: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Organisation non optimale

+

+

+

+

+

E0

E1

E2

E3

EN-1S

(N-1) * τ

τ

Page 25: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Organisation optimale

+

++E0

E1

E2

E3

EN-1

S

P * τ

τ

+

+EN-2

⎩⎨⎧

+=

nonsiNentierestNsiN

P1))(int(log

)(log)(log

2

22

Page 26: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Réseau systolique

+

*

+

*

+

*X4X4X3X3X2X2 X1 X1

W3W2W1

Y0

PT1

M

M

M

M

M

M

• Y = W1X3 + W2X2 + W3X1

• PT1 = X1X1 X2X2 X3X3 ...

Page 27: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Optimisation des cellules MAC

Cellule

MAC

ENDMAC

MAC0

MAC1

ENDMAC1

MACM1

ENDMACM1

MAC2

ENDMAC2

Coefficient

x

x

0

1

1

-1

-1

2

-2

Coût (CLBs)

99

87

12

21

9

37

34

37

34

Page 28: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

T.B.N.I. non-linéaire (1/2)

ComparateurS = (A<B)

A

B

S

MUX

sel0

1s

e1

e2

procedure if_complet (e1, e2 : in byte,s : out byte) is

begin

if e1 < e2 thens := e1 ;

elses := e2 ;

end if ;

end if_complet;

Page 29: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

T.B.N.I. non-linéaire (2/2)

ComparateurS = (A<B)

A

BS

e1

e2

e5

e6

e3

e4

MUX

sel01

f1f2

f3

S

ComparateurS = (A<B)

A

BS

ComparateurS = (A<B)

A

BS

MUX

sel01

MUX

sel01

procedure if_deux (e1, e2, e3, e4, e5, e6 : in byte,f1, f2 : in byte,

S : out byte) is

begin

if e1 < e2 thenif e3 < e4 then

S := f1;else

S := f2;end if;

elseif e5 < e6 then

S := f3;end if;

end if;end if_deux;

Page 30: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Applications : T.B.N.I. linéaires

procedure SobelVertical ( inimg : in array (-1. . 1, -1. . 1) of byte, vert : out integer) is

beginvert := inimg(-1, -1) + 2 * inimg(0, -1) + inimg(1, -1)

- inimg(-1, 1) - 2 * inimg(0, 1) - inimg(1, 1) ;end SobelVertical ;

1

0

-1

2

0

-2

1

0

-1

1

2

1

0

0

0

-1

-2

-1Sobel vertical Sobel horizontal

Page 31: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Architecture systolique du filtre de Sobel

++

inimgM1

M M

M

M

M

++

inimgP1

M M

M

M

M

+ vert

* 2

* (-2)* (-1) * (-1)

Page 32: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Architecture FIR du filtre de Sobel

inimgM1

1 2 1M

+

M

+

inimgP1-1 -2 -1

M

+

M

+

+ vert

Page 33: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Applications : T.B.N.I. non-linéaires (filtre médian)

MEDIAN

1 3 57 9 1113 2 4

5

Image originale TraitementImage traitée

Page 34: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Médian 1D

Max(A,B)

Min(A,B)

A

B

A>BComparateur

A

B

Max(A,B)

Min(A,B)

Médiane

A

B

C

UCE : Unité de Comparaison et Echange

Page 35: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Médian 2D simplifié

MEDIAN1D

Médiane

Page 36: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Description Apply du Médian 2D simplifié

procedure Median2D ( inimg : in array (-1..1, -1..1) of byte,Mediane : out byte) is

si : array(-1..1) of byte;

beginif inimg(-1, -1) < inimg(-1,0) then

if inimg(-1,0) < inimg(-1,1) thensi(-1) := inimg(-1,0);

else if inimg(-1, -1) < inimg(-1,1) thensi(-1) := inimg(-1,1);

elsesi(-1) := inimg(-1,-1);

end if;end if;

else if inimg(-1,-1) < inimg(-1,1) thensi(-1) := inimg(-1,-1);

else if inimg(-1, 0) < inimg(-1,1) thensi(-1) := inimg(-1,1);

elsesi(-1) := inimg(-1,0);

end if;end if;

end if ;

.

.

. if si(-1) < si(0) then

if si(0) < si(1) thenMediane := si(0);

else if si(-1) < si(1) thenMediane := si(1);

elseMediane := si(-1);

end if;end if;

else if si(-1) < si(1) thenMediane := si(-1);

else if si(0) < si(1) thenMediane := si(1);

elseMediane := si(0);

end if;end if;

end if ;

end Median2D;

Page 37: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

M Minimg(1,-1) inimg(0,-1) inimg(-1,-1)

M Minimg(1,0) inimg(0,0) inimg(-1,0)

M Minimg(1,1) inimg(0,1) inimg(-1,1)

comp<

mux0 1

comp<

mux0 1

comp<

comp<

mux0 1

comp<

mux0 1

mux1 0

si(1)

MEDIAN 1D

MEDIAN1D

MEDIAN1D

MEDIAN1D

si(0) si(-1)

Mediane

Page 38: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Contre exemple

MEDIAN1D

1

2

5

3

4

6

7

89

2

4

84

Page 39: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Médian basé sur un tri complet (tri-bulle)

AB

Max(A,B)Min(A,B)

UCE

4

3

4

3 8 4 13

8

8

13

8

7

8

7 13 3 7

13

4

7

13 7 3

3 4

PIXELS

Page 40: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

proc

edur

eM

edia

n2D

( ini

mg

: in

arra

y (-

1..1

, -1.

.1) o

f byt

e,M

edia

ne: o

ut b

yte)

is

UC

EMA

X:a

rray

(1..2

9)of

byt

e;U

CEM

IN:a

rray

(1..2

8)of

byt

e;

begi

n

--U

CE1

ifin

img(

1, 0

) < in

img(

1,-1

) the

nU

CEM

AX

(1):

= in

img(

1,-1

);U

CEM

IN(1

):=

inim

g(1,

0);

else U

CEM

AX

(1):

= in

img(

1,0)

;U

CEM

IN(1

):=

inim

g(1,

-1);

end

if;

--U

CE2

ifin

img(

0, -1

) < in

img(

1, 1

) the

nU

CEM

AX

(2):

= in

img(

1, 1

);U

CEM

IN(2

):=

inim

g(0,

-1);

else U

CEM

AX

(2):

= in

img(

0, -1

);U

CEM

IN(2

):=

inim

g(1,

1);

end

if;

-- --…

-- --U

CE3

0if

UC

EMA

X(2

7) <

UC

EMA

X(2

9) th

enM

edia

ne:=

UC

EMA

X(2

9);

else M

edia

ne:=

UC

EMA

X(2

9);

end

if;

end

Med

ian2

D;

Page 41: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Filtre médian hybride

moyenne

moyenne

MEDIAN Médiane

Page 42: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

proc

edur

eM

edia

nHyb

ride

(inim

g: i

n ar

ray

(-1.

.1, -

1..1

) of b

yte,

Med

iane

: out

byt

e)

isM

1, M

2: b

yte;

begi

n

M1

:= (i

nim

g(-1

, 0) +

inim

g(-1

, -1)

+ in

img(

0, -1

) + in

img(

1, -1

))/4

;M

2:=

(ini

mg(

-1, 1

) + in

img(

0, 1

) + in

img(

1, 1

) + in

img(

1, 0

))/4

;

ifM

1 <

inim

g(0,

0) th

enif

inim

g(0,

0) <

M2

then

Med

iane

:= in

img(

0,0)

;el

seif

M1

< M

2 th

enM

edia

ne:=

M2;

else M

edia

ne:=

M1;

end

if;en

d if;

else

ifM

1 <

M2

then

Med

iane

:= M

1;el

seif

inim

g(0,

0) <

M2

then

Med

iane

:= M

2;el

se Med

iane

:= in

img(

0, 0

);en

d if;

end

if;en

d if

;

end

Med

ianH

ybrid

e;

Page 43: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Conclusion et perspectives

PERCIP génère un VHDL synthétisableLe réseau systolique est modulaire => faciliter la génération des architectures massivement parallèlesAvec des FPGAs de 1 000 000 d ’équivalents portes les environnements tel que PERCIP trouvent leur intérêtApply est dédié au T.B.N.I., une extension aux autres niveaux est intéressante

Page 44: Générateur d ’architecture pour plate-forme reconfigurable ...shawky/hanifi/soutenance_hanifi.pdf · Générateur d ’architecture pour plate-forme reconfigurable dédié au

Etapes d’un compilateur

Programme source

Analyse lexicale

Analyse syntaxique

Analyse sémantique

Programme cible

Le compilateur

Génération de code intermédiaire

Optimisation du code

Génération de code

Analyse

Synthèse

Gestion de la table des symboles

Gestion des erreurs