• Aucun résultat trouvé

On voit que dans tous les cas, le calcul de l’addition LNS nécessite l’évaluation de fonc-tions non linéaires. Les précisions mises en jeu sont également de l’ordre de 8 bits (traitement de signial audio) à 24 bits (précision comparable à la virgule flottante simple précision).

2.3 Les cibles technologiques

2.3.1 ASIC ou FPGA

Par matériel, on entend dans ce chapitre deux technologies bien distinctes. La première est celle des circuits intégrés classiques (application-specific integrated circuit ou ASIC).

Nous n’avons toutefois pas réalisé de circuit ASIC incluant les travaux présentés dans ce chapitre. Une raison en est leur coût : la réalisation d’un tel circuit se chiffre en dizaines de milliers d’euros, et le prix des outils pour les concevoir est en proportion. Une autre raison est que les opérateurs que nous concevons n’ont pas vocation à être des circuits intégrés complets, mais plutôt de petites parties d’un circuit plus grand.

Pour valider nos algorithmes et nos architectures, nous les avons donc implémentés sur des circuits reconfigurables, ou FPGA pourfield-programmable gate array. Ce sont des cir-cuits dans lesquels on peut implanter par programmation, donc relativement facilement et rapidement, des circuits logiques arbitraires. Les FPGA permettent un compromis coût-flexibilité intermédiaire entre circuit ASIC, très performant mais très coûteux à concevoir et peu flexible, et microprocesseur, peu coûteux et très flexible mais moins performant. Les FPGA sont des composants du commerce produits en grande série, donc immédiatement disponibles et relativement peu coûteux. L’implantation d’un circuit dans un FPGA présen-tera des performances inférieures à celles qu’aurait une réalisation sous forme d’ASIC, mais très supérieures à une émulation logicielle. Ces circuits sont donc économiquement intéres-sants pour de petites séries d’applications. Pour les grandes séries, le coût initial supérieur d’un circuit intégré spécifique pourra être amorti. Leurs applications vont aussi du prototy-page rapide [128] à l’accélération de calcul numérique [145, 44, 12, 146, 90, 7, 101, 144, 72, 46, 59].

Concrètement, ces FPGA sont constitués d’un grand nombre deblocs logiques dont la fonction est programmable (figure 2.5), reliés par unréseau de connexion également

0

FIG. 2.3 – Les fonctions mises en jeu dans l’arithmétique logarithmique.

FIG. 2.4 – Vue schématique d’un FPGA d’architecture «insulaire».

gurable (figure 2.4). Ces schémas seront détaillées dans la suite.

2.3.2 Les métriques du matériel et les compromis architecturaux

On mesure la qualité d’un circuit à sa vitesse, à la quantité de matériel qu’il occupe, et parfois à sa consommation électrique. Chacune de ces métriques se décline selon plusieurs modalités

– La surface d’un circuit ASIC est à terme la taille du rectangle de silicium qui le contien-dra2. Lors de la conception, on l’évalue en termes d’équivalent-portes. Pour les FPGA, nos opérateurs arithmétiques ayant vocation à être des sous-circuits dans des appli-cations plus conséquentes, la surface qu’ils occupent doit également être minimisée.

Pour une application complète, la situation est légèrement différente : soit le circuit rentre dans le FPGA, soit il ne rentre pas. On mesure la surface en «îles» effectivement occupées. Pour les FPGA de la firme Xilinx que nous utilisons principalement, nous suivons la terminologie de la marque : une île s’appelle une slice. Il est à noter que certains des FPGA récents incluent de petits multiplieurs (18 bits par 18 bits) en plus desslices[152]. Si nous les utilisons, ils seront intégrés dans la mesure de la quantité de matériel occupée.

– La vitesse est mesurée à l’identique pour les technologies ASIC et FPGA : on peut considérer lalatence(en secondes), qui est le délai total entre l’entrée de la donnée et la sortie du résultat. Son inverse est la fréquence de fonctionnement. Lorsqu’on pipeline l’opérateur, le délai augmente en principe peu, la fréquence augmente et la latence se mesure alors encycles, qui sont aussi une mesure de la profondeur du pipeline.

Pour des applications plus spécialisées, d’autres métriques pourront être prises en compte.

Par exemple, le niveau d’émissions électromagnétiques est un critère de qualité pour un cir-cuit devant prendre place dans un téléphone portable. Pour un circir-cuit utilisé en

cryptogra-2Le coût unitaire de fabrication d’un gros circuit intégré est plus que proportionnel à cette surface. En effet, le processus de fabrication du circuit n’est pas parfait : il subsiste une certaine densité de défauts au mm2, et il faudra jeter tous les circuits contenant un défaut. Ainsi, plus les circuits fabriqués sont gros, plus le pour-centage qu’il faudra jeter est élevé. Le coût des circuits ainsi perdus s’ajoute au coût des circuits qu’on garde, proportionnel lui à la surface.

2.3 Les cibles technologiques 17

FIG. 2.5 – Vue schématique d’une île (ouslice) de FPGA Xilinx Virtex, d’après la documen-tation constructeur. Une petite boîte munie d’une croix représente un bit de configuration.

phie, un critère capital est que l’information privée qu’il contient ne puisse être déduite de mesures externes (variations de sa consommation ou de ses émissions, par exemple). Ces aspects n’ont pas concerné nos travaux.

2.3.3 Les briques de base et leur coût

La suite de cette section détaille les briques de bases disponibles dans chacune de ces technologies, c’est-à-dire les opérateurs que nous pouvons espérer trouver facilement en bi-bliothèque, et que nous n’aurons donc pas à construire. Nous insistons sur leurs coûts et per-formances relatives, car ces métriques influencent le choix des algorithmes et l’exploration architecturale. Ainsi, si certaines des techniques que nous avons développées s’appliquent parfaitement à la technologie ASIC comme à celle des FPGA, les paramètres optimaux de l’architecture pourront être très différents d’une cible à l’autre.

Portes logiques

D’un point de vue théorique, la porte logique NON-ET est suffisante pour construire toutes les autres. Toutefois, pour construire un circuit intégré dédié performant, il est plus efficace de se donner un ensemble plus conséquent de portes, incluant les portes NON, ET, OU et OU exclusif (ou XOR), leurs versions complémentées et à une entrée complémentée, leurs versions à trois ou quatre entrées, les multiplexeurs et démultiplexeurs, etc. Les coûts respectifs de ces différentes portes varient suivant leurs caractéristiques électriques (notam-ment lefan-out, qui mesure le nombre de portes qu’une porte peut alimenter), lesquelles sont également liées à leur vitesse et consommation électrique [135, 136]. Ainsi, une biblio-thèque de base pour une technologie ASIC donnée pourra comporter plusieurs centaines de portes.

Toutefois, il est possible de nos jours d’ignorer cette complexité – et c’est même sans doute le plus sage. Les outils de synthèse associés aux langages de description de matériel comme VHDL et Verilog sont extrêmement performants lorsqu’il s’agit de compiler une description de matériel vers une technologie donnée. Pour les circuits relativement petits que sont les opérateurs arithmétiques décrits dans ce chapitre, on fait confiance à l’outil de synthèse pour leur implémentation optimale. Et si l’on continue de mesurer les surfaces en termes de «nombre de portes équivalent», c’est l’outil qui fournit ces chiffres.

Lorsque l’on cible des circuits reconfigurables, la porte de base est typiquement la pe-tite mémoire adressable (look-up table ou LUT) à 4 entrées, et l’on raisonne et mesure en termes de LUT. Mais ici aussi, le circuit effectivement ciblé est plus complexe, comme l’in-dique la figure 2.5 : on y voit qu’il y a deux LUT par slice, et que les LUT sont entourées d’une circuiterie plus ou moins orthogonale qui permet d’implanter efficacement des sous-circuits courants comme des additionneurs, des mémoires... Nous y reviendrons. De plus, les contraintes sur le routage sont très variables d’un FPGA à l’autre – et pas toujours do-cumentées. Ici aussi, on s’en remet donc également à l’outil qui compile notre description VHDL.

En conclusion, quelle que soit la technologie, on écrira des AND et des XOR en VHDL, et on les dessinera sur les figures représentant nos architectures, mais ces opérations pourront apparaître de manière très différente – et, on l’espère, plus efficace – dans l’implementation physique de ces architectures, et ce en fonction de la technologie visée.

2.3 Les cibles technologiques 19

Les quatre opérations

L’addition de deux entiers est l’opération arithmétique de base à partir de laquelle on peut construire les autres (multiplications, divisions, ...). Comme les opérateurs logiques, elle peut s’exprimer par un simple+en VHDL. Lorsque l’on cible les FPGA, c’est la bonne approche : l’architecture des FPGAs modernes comporte une logique dédiée à la propaga-tion des signaux de retenue (pour les Virtex, de l’entréeCINà la sortieCOUTsur la figure 2.5).

Cette circuiterie permet d’implémenter l’additionneur le plus simple, qui propage les rete-nues comme on le fait à la main. Ce n’est pas le plus rapide asymptotiquement : son temps est enO(n)nest le nombre de bits à additionner, alors qu’il existe tout un bestiaire d’ad-ditionneurs enO(log(n))[154, 63]. Toutefois ceux-ci sont moins performants en pratique jus-qu’à des valeurs dentrès grandes, tout en occupant plus de surface. La raison en est qu’ils utilisent le routage général du FPGA (les canaux de fils visibles sur la figure 2.4), qui est comparativement plus lent que le routage dédié d’unCOUTauCINsuivant. En effet, chaque signal allant d’unesliceà une autre à travers le routage général doit traverser les nombreux transistors – plusieurs dizaines – qui assurent la programmabilité du routage [27].

Lorsqu’on considère l’implémentation d’une addition pour un circuit ASIC, on a beau-coup plus de choix, de l’additionneur à propagation de retenue (vitesseO(n), surfaceO(n)) aux additionneurs rapides (vitesseO(log(n)), surfaceO(nlog(n))avec toute une gamme de compromis [154]). Les outils de synthèse offrent en général un choix d’additionneurs.

Dans les architectures que nous développons, on a le plus souvent à additionner plus de deux termes. Il existe des techniques spécifiques pour ce problème demultiaddition, utili-sant des représentations internes redondantes, comme la retenue conservée(carry-save)[63].

Les additions dans une telle représentation sont pleinement parallèles, donc très rapides (pas de propagation de retenue), et l’opérateur correspondant est petit. L’inconvénient est qu’il faut ensuite convertir le résultat en la représentation binaire classique, ce qui nécessite un additionneur rapide. Toutefois, pour les applications qui nous intéressent, il arrive souvent que l’opérateur destinataire du résultat s’accomode également d’une représentation redon-dante. C’est le cas pour les approximations initiales pour les diviseurs, par exemple [24].

Dans ce cas, on économise l’additionneur rapide final.

Toutefois, pour les raisons déjà citées, l’utilisation de représentations redondantes est ra-rement avantageuse lorsqu’on cible les FPGA. Dans ce cas, une multi-addition arborescente naïve est la meilleure solution.

Les opérateurs plus gros (multiplication, division) présentent une diversité architecturale encore plus grande – le lecteur intéressé se rapportera aux ouvrages de référence [85, 63].

Il est toujours intéressant de savoir spécialiser un opérateur pour son contexte. Ainsi, nous utiliserons des opérateursad-hoc lorsqu’il s’agira de multiplier par une constante [19, 95, 34, 147]. Lorsqu’on cible les FPGA comportant de petits multiplieurs, leur taille spécifique orientera la conception de nos algorithmes [8].

Mémoires et tables

Nos architectures feront souvent appel à des tables de valeurs précalculées. En fait, l’ar-chitecture la plus simple pour implémenter une boîte noire pour une fonction telle que repré-sentée à la figure 2.1 consiste à tabuler les 2wIvaleurs en entrée. Cette approche est praticable (et pratiquée, par exemple pour les cœurs trigonométriques vendus par Xilinx [153]) pour des valeurs dewIne dépassant pas 16.

Les outils de synthèse pour ASIC fournissent des générateurs de mémoires mortes abou-tissant à des architectures extrêmement compactes et optimisées en fonction de la techno-logie. Pour les FPGA, les mémoires mortes de l’architecture sont implémentées par des moires vives dans le circuit cible. Si l’on compare le coût d’une addition donnée et d’une mé-moire morte donnée, on constatera donc qu’une grosse mémé-moire est comparativement plus coûteuse dans un FPGA. Toutefois, cette généralité doit être nuancée. D’une part, les FPGA récents offrent des blocs de mémoire comme ils offrent de petits multiplieurs. On est alors contraint par la taille de ces blocs, et l’on cherchera à adapter l’architecture à cette contrainte.

D’autre part, les petites mémoires peuvent être implémentées par des arbres de LUT ce qui offre une flexibilité supplémentaire : en effet, les outils pourront appliquer des techniques d’optimisation logique [125] au contenu de la mémoire, ce qui peut réduire la taille dans un facteur considérable – mais dépendant des valeurs stockées [30]. Ces techniques ne sont pas applicables lorsqu’on cible un générateur de mémoire morte en ASIC ou un bloc mémoire dans un FPGA.