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

Post on 18-Oct-2020

2 views 0 download

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

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

Positionnement

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

Plan de la présentation

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

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)

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.)

Chaîne classique de traitement d ’image

Acquisition Filtrages Extraction

Prise deDécision

Reconnaissance

Puissance de calcul et complexité des algorithmes

Acquisition Filtrages Extraction Reconnaissance Décision

Puissance de calcul

FPGA, ASIC

Complexité des algorithmes

μP

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

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)

Exemple de FPGA

IOB

CLB CLB CLB

CLB

CLB

CLB CLB

CLB CLB

Plan de cellules SRAM Ressources d’interconnexion

Matrice d’interrupteurs

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

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

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

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)

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

Types de modélisation en VHDL

VHDLcomportemental

VHDLStructurel

VHDL R.T.L.

(Register Transfer Level)

Niveaux de

Hiérarchie

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;

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

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

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

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

Réseau systolique

+

*

+

*

+

*X4X4X3X3X2X2 X1 X1

W3W2W1

Y0

PT1

M

M

M

M

M

M

• Y = W1X3 + W2X2 + W3X1

• PT1 = X1X1 X2X2 X3X3 ...

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

Organisation non optimale

+

+

+

+

+

E0

E1

E2

E3

EN-1S

(N-1) * τ

τ

Organisation optimale

+

++E0

E1

E2

E3

EN-1

S

P * τ

τ

+

+EN-2

⎩⎨⎧

+=

nonsiNentierestNsiN

P1))(int(log

)(log)(log

2

22

Réseau systolique

+

*

+

*

+

*X4X4X3X3X2X2 X1 X1

W3W2W1

Y0

PT1

M

M

M

M

M

M

• Y = W1X3 + W2X2 + W3X1

• PT1 = X1X1 X2X2 X3X3 ...

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

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;

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;

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

Architecture systolique du filtre de Sobel

++

inimgM1

M M

M

M

M

++

inimgP1

M M

M

M

M

+ vert

* 2

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

Architecture FIR du filtre de Sobel

inimgM1

1 2 1M

+

M

+

inimgP1-1 -2 -1

M

+

M

+

+ vert

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

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

Médian 2D simplifié

MEDIAN1D

Médiane

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;

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

Contre exemple

MEDIAN1D

1

2

5

3

4

6

7

89

2

4

84

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

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;

Filtre médian hybride

moyenne

moyenne

MEDIAN Médiane

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;

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

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