• Aucun résultat trouvé

La programmation par contraintes peut ˆetre vue comme un puissant outil de capitalisation de connaissances sur la r´esolution de probl`emes difficiles. Les techniques de filtrage b´en´eficient des r´e- sultats avanc´es de la recherche op´erationnelle pour pr´evenir, au plus tˆot, le choix de valeurs qui ne permettront pas de satisfaire les contraintes du probl`eme.

D’autre part, on peut consid´erer la programmation par contraintes comme un support g´en´erique de mise en œuvre d’algorithmes Branch&Bound. Adapter l’algorithme au probl`eme s’envisage alors selon ces trois axes principaux : 1) utilisation de contraintes sp´ecifiques qui ´elagueront intelligemment l’espace de recherche 2) s´election d’un ordre d’´evaluation des variables adapt´e au probl`eme 3) s´election des valeurs en ad´equation avec la fonction de coˆut.

Un autre point particuli`erement int´eressant de la programmation par contraintes r´eside dans la li- sibilit´e des mod`eles de contraintes : les contraintes sp´ecifiques capturent des sous-probl`emes r´ecurrents dans de nombreux probl`emes d’optimisation. Cependant, cette lisibilit´e est souvent masqu´ee par les interfaces entre l’utilisateur et les solveurs de contraintes qui s’appuient g´en´eralement sur un langage de programmation g´en´eraliste pour d´ecrire et r´esoudre un CSP. Ce constat a motiv´e l’apparition de langages d´edi´es et le chapitre8propose un nouvel environnement de mod´elisation modulaire de CSP qui simplifie leur description et leur capitalisation.

Chapitre 3

S´election et ordonnancement

simultan´e d’instructions pour

processeurs sp´ecialis´es

Dans le premier chapitre, nous avons notamment fait apparaˆıtre que les approches existantes pour l’extension de jeu d’instructions ne sont g´en´eralement pas adapt´ees `a traiter le parall´elisme potentiel de l’architecture. Dans ce chapitre nous proposons une nouvelle technique, bas´ee sur la programmation par contraintes, qui s´electionne et ordonnance les ISE de mani`ere `a minimiser la dur´ee d’ex´ecution totale de l’application finale (i.e., utilisant les ISE).

Sommaire

3.1 Introduction . . . 44 3.2 Pr´esentation du flot de conception ASIP . . . 46 3.2.1 Infrastructure de compilation GeCoS . . . 46 3.2.2 Extraction et description d’instructions sp´ecialis´ees . . . 48 3.2.3 S´election et ordonnancement d’instructions pour un processeur extensible . . . 53 3.2.4 G´en´eration du code et synth`ese de l’extension mat´erielle . . . 54 3.3 S´election et ordonnancement sans contraintes de ressources. . . 56 3.3.1 Couverture d’un graphe par une biblioth`eque de motifs . . . 57 3.3.2 Ordonnancement temporel et couverture simultan´ee . . . 59 3.3.3 R´esultats exp´erimentaux. . . 61 3.4 Processeur coupl´e `a une extension s´equentielle . . . 64 3.4.1 Architecture de l’extension . . . 64 3.4.2 Mod`ele de contraintes . . . 65 3.4.3 R´esultats exp´erimentaux. . . 69 3.5 Processeur coupl´e `a une extension parall`ele . . . 71 3.5.1 Architecture de l’extension . . . 71 3.5.2 Exemple de couverture et d’ordonnancement . . . 72 3.5.3 Mod`ele de contraintes . . . 74 3.5.4 R´esultats exp´erimentaux. . . 77 3.6 Conclusion . . . 79

44

Chapitre 3. S´election et ordonnancement simultan´e d’instructions pour processeurs sp´ecialis´es

3.1

Introduction

L’extension du jeu d’instructions d’un processeur existant est une solution qui simplifie significa- tivement la mise en place d’une chaˆıne de compilation compl`ete pour un processeur sp´ecialis´e. En effet, contrairement `a la conception compl`ete d’un ASIP, l’architecture (i.e., processeur coupl´e `a une extension mat´erielle) dispose du jeu d’instructions standard du processeur extensible et permet donc d’ex´ecuter n’importe quelle application en utilisant le compilateur natif du processeur. Le probl`eme peut alors ˆetre r´esum´e en les questions suivantes : Quelles sont, parmi les op´erations de l’application analys´ee, celles qui utiliseront le mat´eriel d´edi´e ? Comment et quand seront-elles ex´ecut´ees ?

Dans ce chapitre, nous proposons une m´ethodologie bas´ee sur la programmation par contraintes pour exprimer, dans un unique probl`eme d’optimisation (CSP1, cf. chapitre2), la s´election et l’ordon-

nancement des groupes d’op´erations ex´ecut´es sur l’extension mat´erielle d’un processeur extensible. Ces groupes d’op´erations sont alors assimil´es `a des motifs de calculs, ils sont associ´es `a un mat´eriel d´edi´e qui r´eduira les dur´ees d’ex´ecution de leurs occurrences dans une application. Ces occurrences correspondent alors `a des instructions sp´ecialis´ees qui ´etendent le jeu d’instructions standard du processeur extensible.

L’int´erˆet principal de notre approche est de faciliter l’exploration de diff´erents compromis (e.g, performance, surface, consommation ´energ´etique, etc.) en proposant un cadre unifi´e dans lequel pour- ront ˆetre ajout´ees des contraintes suppl´ementaires sans remettre en cause le reste du mod`ele. Ainsi, la figure3.1illustre les deux types d’architecture que nous consid`ereront. La premi`ere (figure 3.1.a) est constitu´ee d’un unique bloc mat´eriel dont la reconfiguration fonctionnelle permettra d’acc´el´erer le traitement d’un groupement d’op´erations s´electionn´e dans l’ensemble des motifs support´es. La se- conde extension mat´erielle (figure3.1.b) utilise plusieurs de ces mˆemes blocs comme autant d’unit´es fonctionnelles parall`eles qui permettront de mettre en œuvre des instructions sp´ecialis´ees VLIW2.

NIOS II Bloc reconfigurable 1 Sélection ISE NIOS ALU + - >> << & A B sortie Bloc reconfigurable 2 crossbar NIOS II Bloc reconfigurable Sélection ISE NIOS ALU + - >> << & A B sortie (a) (b)

Figure 3.1 – Mod`eles d’architecture support´es pour un processeur extensible NiosII. (a) extension compos´ee d’un unique bloc reconfigurable fonctionnellement (b) extension compos´ee d’un ensemble de blocs reconfigurables pouvant s’ex´ecuter en parall`ele.

Cette m´ethode s’int`egre dans un flot de conception ASIP (cf. figure 3.2) qui assiste l’utilisateur dans l’identification et la s´election de nouvelles instructions sp´ecialis´ees en analysant une application ´ecrite dans un langage de haut niveau (i.e., langage C) afin de produire un code C compilable par la chaˆıne de compilation du processeur extensible, ainsi qu’une description mat´erielle synth´etisable de l’extension mat´erielle.

1. Constraint Satisfaction Problem 2. Very Long Instruction Word

3.1. Introduction 45

Génération automatique de motifs sous contraintes

Sélection des motifs Couverture/Ordonnancement Description matérielle de l'extension (VHDL/SystemC) Frontal C Spécification manuelle de motifs C Regénération Code C (asm-inline) Bibliothèque Motifs Combinatoires Code C applicatif Construction IR .elf GCC NIOS2 Couverture Contraintes architecture Contraintes temporelles CSP ASIP flot DSL 1 2 3 4 5

Figure 3.2 – Flot de conception ASIP Les principales contributions de ce chapitre sont les suivantes :

• Une technique de couverture de graphe extensible, bas´ee sur la programmation par contraintes, pour minimiser la dur´ee d’ex´ecution parall`ele, sans contraintes de ressources, de groupes de nœuds s´electionn´es et ordonnanc´es.

• La prise en compte des contraintes architecturales fines (au niveau cycle) d’une extension s´equentielle pour s´electionner et ordonnancer conjointement les groupes d’op´erations `a ex´ecuter sur l’extension.

• La prise en compte des contraintes architecturales fines (au niveau cycle) d’une extension parall`ele pour s´electionner et ordonnancer des instructions sp´ecialis´ees de type VLIW dans une application.

Le chapitre est organis´e comme suit. La premi`ere section pr´esente les diff´erentes ´etapes du flot de conception ASIP (con¸cu en collaboration avec Kevin Martin [125]) en faisant notamment apparaˆıtre les multiples contributions logicielles apport´ees `a l’infrastructure de compilation source `a source Ge- CoS3 (utilis´ee dans la mise en œuvre du flot). La deuxi`eme section d´etaille une nouvelle technique

de couverture de graphe qui a ´et´e ´etendue (cf. sections trois et quatre) pour s´electionner et ordon- nancer des instructions sp´ecialis´ees dans le cas, respectivement, d’une extension s´equentielle et d’une extension comportant diff´erents blocs pouvant s’ex´ecuter en parall`ele.

46

Chapitre 3. S´election et ordonnancement simultan´e d’instructions pour processeurs sp´ecialis´es