Dรฉfinitions
ย ย Le terme ยซย architecture reconfigurableย ยป suscite toujours dโintenses dรฉbats. Partant du principe que reconfiguration signifie le changement des fonctionnalitรฉs dโune architecture aprรจs le processus de fabrication, on peut considรฉrer que le processeur gรฉnรฉrique est le plus reconfigurable des systรจmes numรฉriques, car il peut changer de comportement ร chaque cycle dโhorloge. Pourtant il est possible de dire quโil est lโun des moins flexibles, car son architecture cรขblรฉe ne se modifie pas aprรจs sa fabrication. De plus, les processeurs gรฉnรฉriques nโexploitent que faiblement le parallรฉlisme. Dans ce document les architectures numรฉriques ne seront considรฉrรฉes comme reconfigurables que si elles comportent plusieurs composants de base tels que รฉlรฉments de calculs reconfigurables, interconnectรฉs par un moyen dโinterconnexion lui aussi reconfigurable. Lโexemple classique dโun dispositif avec cette caractรฉristique est le FPGA1 , mais dโautres circuits en font partie. Le FPGA est un exemple dโarchitecture reconfigurable ร petit grain. Dans ce domaine le grain est lโunitรฉ de calcul de base. La taille du grain est donnรฉe par la taille des donnรฉes atomiques qui lโarchitecture en question est capable de manipuler ร chaque opรฉration. Dans un FPGA les donnรฉes sont reprรฉsentรฉes bit ร bit, et calculรฉes ร lโaide des tables de vรฉritรฉ (LUT – look-up tables). Un dispositif reconfigurable comprenant des opรฉrateurs comme multiplieurs, additioneurs, multiplexeurs, par exemple, peut รชtre considรฉrรฉ comme appartenant ร la catรฉgorie des architectures reconfigurables ร grain moyen. Cependant, un dispositif composรฉ par des unitรฉs logiques et arithmรฉtiques interliรฉes par un rรฉseau intra-circuit peut รชtre considรฉrรฉ comme รฉtant une architecture reconfigurable ร gros grain. Cette dรฉfinition de taille de grain peut รชtre รฉtendue par rapport au fichier de configuration des architectures reconfigurables. Une architecture ร petit grain est configurรฉe normalement par un bitstream (flot de bits). De lโautre cรดtรฉ, la configuration dโune architecture ร gros grain est faite ร lโaide dโun fichier comprenant la programmation de toutes les unitรฉs de calcul. Une architecture reconfigurable peut รชtre reconfigurable de maniรจre statique ou dynamique, complรจte ou partielle. La reconfiguration dynamique est celle qui permet que le comportement dโun circuit soit modifiรฉ sans que lโapplication quโil tourne soit complรจtement arrรชtรฉe. Au contraire, la reconfiguration statique demande que le circuit soit mis hors tension pour que la nouvelle configuration puisse รชtre chargรฉe. Une reconfiguration, quโelle soit statique ou dynamique, peut รชtre totale ou partielle. Dans le premier cas, tout le fichier de configuration est tรฉlรฉchargรฉ vers le circuit. Dans le deuxiรจme, seule la partie du fichier de configuration correspondant ร des modifications de fonctionnalitรฉ nรฉcessaires est envoyรฉe au circuit. Les systรจmes dynamiquement reconfigurables (SDR) permettent la spรฉcialisation de la logique implantรฉe et/ou du routage des ressources de calcul en cours de fonctionnement. La Figure 1.1 illustre la reconfiguration dynamique au travers dโun graphique en trois axes. Les axes X et Z indiquent le plan spatial, dans lequel le routage et le placement de la logique sont rรฉalisรฉs. Les systรจmes reconfigurables de faรงon statique ne peuvent quโรชtre vus dans ce plan. Pour les SDR il est nรฉcessaire dโeffectuer une analyse temporelle des reconfigurations, car le comportement du dispositif change dans le temps, sans lโarrรชt du systรจme. Pour cela, il a รฉtรฉ introduit lโaxe Y, qui indique les diffรฉrentes implantations de modules fonctionnels (cลurs) dans le dispositif, par rapport au moment dโarrivรฉe
Lโobjectif de lโarchitecture
ย ย Selon [78], une architecture reconfigurable peut avoir comme objectif, lโune des deux caractรฉristiques ci-dessous :
โข Tolรฉrance aux fautes :Il sโagit dโun des premiers buts du domaine de la reconfiguration. Durant la fabrication et lโutilisation dโun circuit, il y a une probabilitรฉ que ce circuit devienne dรฉfectueux. A lโรฉpoque de la publication de lโarticle de Radunovic [78], dans des architectures classiques, un problรจme de ce genre implique que le systรจme entier soit inutilisable. Nรฉanmoins, dans une architecture reconfigurable la partie dรฉfectueuse du systรจme peut รชtre dรฉtectรฉe et remplacรฉe.
โข Accรฉlรฉration : Lโutilisation des architectures reconfigurables pour accรฉlรฉrer les performances des systรจmes a vu le jour dans les annรฉes 80, principalement due ร sa capacitรฉ dโimplanter des algorithmes dโune maniรจre plus performante que sur des processeurs gรฉnรฉriques, en exploitant par exemple le parallรฉlisme.
Rรฉseau dโinterconnexion pour les architectures reconfigurables ร gros grain
ย ย En 2001 Reiner Hartenstein a rรฉalisรฉ une discussion ร propos des architectures reconfigurables ร gros grain. Dans [44] il parle des problรฉmatiques liรฉes ร la faรงon de programmer (configurer) une architecture reconfigurable, mais il montre aussi diffรฉrentes maniรจres de connecter les รฉlรฉments qui la composent. Dans cette section ces caractรฉristiques sont prises comme des critรจres de classification. Architectures en maille Architectures mesh-based (en maille) organisent ses รฉlรฉments de calcul dans une matrice rectangulaire 2-D, avec des connexions horizontales et verticales, qui supportent un riche rรฉseau de communication, privilรฉgiant les รฉchanges voisin ร voisin, de faรงon ร privilรฉgier le parallรฉlisme. Typiquement sont ajoutรฉs des lignes longues รฉtablissant les connexions de longueur supรฉrieure ร 1.
Architectures en vecteur linรฉaire Quelques architectures reconfigurables sont basรฉes sur des vecteurs linรฉaires (linear arrays), avec une communication voisin ร voisin, envisageant le mapping de pipelines. Si les pipelines ont des divergences, alors des ressources de routage additionnelles sont nรฉcessaires, comme des lignes plus longues, souvent nรฉcessitant une segmentation.
Architectures en croisillon La ressource de routage le plus performant est un commutateur en croix (crossbar ), car il facilite le routage parmi tous les รฉlรฉments de calcul. Aux critรจres de Hartenstein il est possible dโajouter celui du rรฉseau sur puce, moyen de communication intra circuit(NoC) qui se dรฉveloppe de maniรจre accรฉlรฉrรฉ derniรจrement. 3Network on Chip.
Architectures basรฉes sur un rรฉseau sur puce Rรฉcemment les rรฉseaux sur puce ont vu le jour comme une alternative pour connecter des cลurs hรฉtรฉrogรจnes. Pourtant ces rรฉseaux peuvent servir de mรฉdia de communication pour une matrice homogรจne dโรฉlรฉments de calcul, permettant la construction dโarchitectures ร gros grain trรจs flexibles.
Niveaux de reconfiguration
ย ย Conformรฉment ร ce qui est avancรฉ dans la Section 1.1, il existe diffรฉrents niveaux dโabstraction selon lesquels il est possible de classiffier le degrรฉ de reconfiguration dโune architecture. Raphaรซl David [30] propose une classification selon le potentiel de reconfiguration qui reflรจte notamment les caractรฉristiques des microprocesseurs, des FPGAs et des architectures reconfigurables ร gros grain.
Niveau systรจme Ce niveau de reconfiguration traite le changement de fonctionnalitรฉ des processeurs via la modification de lโorientation du chemin de donnรฉes. Les donnรฉes sont acheminรฉes vers des unitรฉs de calcul (ou vers les registres, ou la mรฉmoire) selon les besoins de lโapplication, en modifiant des bits dans les commutateurs et multiplexeurs dans lโarchitecture. Cela permet une trรจs grande flexibilitรฉ logicielle, pourtant, les unitรฉs de calcul ne se modifient pas, ce que entraรฎne une certaine rigiditรฉ matรฉrielle.
Niveau fonctionnel Pour assouplir cet effet, des nouvelles architectures orientรฉes flot de donnรฉes ont รฉtรฉ proposรฉes. Une architecture reconfigurable au niveau fonctionnel suppose une multitude dโunitรฉs de calcul interconnectรฉs par un rรฉseau dโinterconnexion. รtant donnรฉ la taille du chemin de donnรฉes de ces architectures, elles sont souvent appelรฉes architectures reconfigurables ร gros grain. Le problรจme de cet approche est la difficultรฉ de trouver un modรจle fiable de programmation, au contraire des architectures du type processeur.
Niveau logique Une architecture est dite reconfigurable au niveau logique quand elle est composรฉe de plusieurs unitรฉs de calcul et avec un riche rรฉseau dโinterconnexion, avec un chemin de donnรฉes de faible largeur. Les unitรฉs de calcul opรจrent au niveau logique, implantant des fonctions boolรฉenes. Normalement, pour implanter une application, il est nรฉcessaire de disposer dโune grande quantitรฉ de ressources, aussi bien que lโutilisation dโun complexe rรฉseau de communication. Cela induit une faible frรฉquence de reconfiguration, malgrรฉ son apport en flexibilitรฉ matรฉrielle.
Dart
ย ย DART [28] est une architecture reconfigurable dรฉveloppรฉe dans le but dโapporter ร la fois puissance de calcul et faible consommation aux applications mobiles de troisiรจme gรฉnรฉration. Cette architecture est composรฉe par des grappes dโunitรฉs de calcul, comme dรฉcrit la Figure 1.6. Ces grappes peuvent fonctionner indรฉpendamment oรน en combinaison avec les autres. Cela diminue la complexitรฉ du contrรดle de lโensemble du systรจme. Donc la prioritรฉ du contrรดleur du systรจme nโest pas de gรฉrer chaque grappe, mais dโagencer des tรขches qui seront exรฉcutรฉes par les grappes, selon sa prioritรฉ et la disponibilitรฉ des ressources. Ainsi le contrรดleur nโa pas ร ordonnancer les instructions de chaque tรขche, mais simplement spรฉcifier aux grappes quel tรขche elles doivent exรฉcuter. Lโorganisation hiรฉrarchique de DART permet, au delร de la distribution du contrรดle, la rรฉpartition du calcul. Par consรฉquent, il est possible de joindre un grand nombre de ressources sans augmenter le coรปt dโinterconnexion. En effet, cela entraรฎne une amรฉlioration de la performance et de la consommation. De plus, cette organisation facilite le dรฉveloppement dโoutils de programmation. Pour donner plus de flexibilitรฉ, tout en restant simple ร programmer, les grappes comprennent des unitรฉs de calcul appelรฉes DataPath Reconfigurable (DPR), et un petit cลur FPGA (voir Figure 1.4. 1.7). Les DPRs peuvent รชtre connectรฉs les uns avec les autres ร travers dโun rรฉseau du type maille segmentรฉ, ce qui permet un calcul massivement parallรจle ; mais ils peuvent aussi agir comme des unitรฉs indรฉpendantes, opรฉrant sans liaison les uns avec les autres, sur diffรฉrentes flots de tรขches. Toutes les primitives de calcul accรจdent ร la mรชme mรฉmoire, et la reconfiguration est gรฉrรฉe par un contrรดleur local. La reconfiguration de la zone FPGA est faite de faรงon sรฉrie, pendant que la reconfiguration des DPR arrive de maniรจre semblable ร celle des microprocesseurs. La diffรฉrence cโest que le schรฉma de configuration du DART รฉvite des lectures excessives de la mรฉmoire dโinstructions, en stockant les microinstructions dans des registres dans chaque DPR. Par consรฉquent, lโarchitecture devient efficace du point de vue consommation dโรฉnergie. Les primitives de calcul arithmรฉtiques du DART sont les DPRs. Chaque DPR est organisรฉ autour de ressources fonctionnelles et de mรฉmoires, liรฉs selon un flexible rรฉseau de communication. Chaque DPR possรจde quatre unitรฉs fonctionnelles suivies dโun registre et supportant des calculs SWP (Sub-Word Parallelism). Ce concept est justifiรฉ par la nรฉcessitรฉ dโopรฉrer sur des diffรฉrents tailles de donnรฉes, notamment codage dโaudio et de video sur 8 et 16 bits. Les concepteurs de DART ont donc optรฉ pour implanter des opรฉrateurs arithmรฉtiques optimisรฉs pour les formats de donnรฉes les plus ordinaires (16 bits), mais supportant SWP pour pouvoir traiter des donnรฉes plus petits. Les rรฉsultats prรฉsentรฉs en [29] montrent que les DPRs ont รฉtรฉ synthรฉtisรฉs, atteignant une frรฉquence de 130MHz. Basรฉs sur ce rรฉsultat, les auteurs estiment que DART peut atteindre 10, 9 GOPS par grappe. Par rapport ร la consommation, DART rรฉalise 32M0PS/mW pour des opรฉrations sur 16 bits.
Architectures ร Petit Grain
ย ย Les architectures reconfigurables ร petit grain sont des dispositifs contenant des composants logiques et un rรฉseau dโinterconnexion programmable. Les unitรฉs logiques sont programmables afin dโรฉmuler les fonctions logiques tels que AND, OR, XOR, NOT, ou mรชme des fonctions plus complexes comme des decodeurs. Dans la plupart des dispositifs ร petit grain, notamment les FPGAs, ces รฉlรฉments programmables (blocs logiques) incluent des รฉlรฉments de mรฉmoire, qui vont des simples bascules jusquโร des blocs complets de mรฉmoire. La hiรฉrarchie dโinterconnexion permet au concepteur de circuits une flexibilitรฉ trรจs importante. Dans le cas des FPGAs, cette flexibilitรฉ reste au-delร de la manufacture du dispositif, et pour cela il est utilisรฉ le terme ยซย reconfigurableย ยป ร ce genre de dispositifs. Les dispositifs reconfigurables ร petit grain, comme les FPGAs sont gรฉnรฉralement plus lents que les ASICs ou que les architectures ร gros grain, et aussi ils consomment plus dโรฉnergie. Cependant, ils offrent des avantages intรฉressants. Par rapport aux ASICs, les FPGAs ont un temps plus court pour arriver sur le marchรฉ, coรปtent moins cher pour faibles quantitรฉs, et restent flexibles aprรจs la fabrication. En comparaison avec les architectures ร gros grain, les FPGAs offrent un ensemble dโoutils de configuration et de programmation beaucoup plus mรปr que les premiers. Les FPGAs ont รฉtรฉ conรงus au dรฉpart pour substituer les CPLDs comme ยซย logique de colleย ยป pour les PCBs. Toutefois, due ร lโรฉvolution des technologies de synthรจse de silicium, la taille et la complexitรฉ des FPGAs ont augmentรฉ, les menant au rรดle de compรฉtiteurs sur le marchรฉ des systรจmes sur puce. Aujourdโhui le domaine dโapplications des architectures ร petit grain sโรฉtend aux algorithmes pour lโindustrie spatial, imagerie mรฉdicale, vision par ordinateur, cryptographie, au delร dโune vaste รฉtendue dโautres domains de recherche et de dรฉveloppement. Dans la suite deux architectures ร petit grain reprรฉsentatives du marchรฉ industriel actuel sont prรฉsentรฉes. Les FPGAs Virtex et FPSLIC ont รฉtรฉ choisis pour ses capacitรฉs de reconfiguration dynamique, implantรฉes de maniรจre diffรฉrent en chacun.
ARDOISE
ย Le projet ARDOISE (Architecture Reconfigurable Dynamiquement Orientรฉe Image Signal Embarquable) vise ร dรฉmontrer lโintรฉrรชt des architectures matรฉrielles ร reconfiguration dynamique (RD) dans les systรจmes associant contraintes temps rรฉel fortes et versatilitรฉ des traitements. ร lโheure actuelle, ARDOISE est la seule architecture dรฉveloppรฉe en France, dont un prototype a effectivement รฉtรฉ rรฉalisรฉ et testรฉ en situation rรฉelle, qui mette en oeuvre ce concept [34]. Lโidรฉe de base de cette architecture est dโenchaรฎner des algorithmes nรฉcessaires au traitement dโimages dans la mรชme structure matรฉrielle, en utilisant la reconfiguration ร petit grain ร quelques reprises, pendant le calcul dโune seule image. Cela รฉquivaut ร sโen servir dโun FPGA afin dโexรฉcuter une sรฉquence dโalgorithmes selon un agenda pre-รฉtabli. Ce concept permet lโimplantation dโapplications sur FPGA avec une performance raisonnable, tout en gardant la flexibilitรฉ dโun microprocesseur. Lโarchitecture dโARDOISE est basรฉe sur trois modules identiques (Figure 1.18). Chacun contient un FPGA ร 45k portes connectรฉs ร deux mรฉmoires locales qui stockent les rรฉsultats intermรฉdiaires. Ces blocs identiques sont appelรฉs MARD (Modules ARDoises) et sont contrรดlรฉs par le module GCC (Gestion des Configurations et des Communications). Le GCC permet ร ARDOISE de fonctionner soit en stand alone, soit en liaison avec un DSP. Le FPGA, la mรฉmoire et la connexion ร une liaison en sรฉrie autorisent la configuration du FPGA et le chargement de la mรฉmoire flash ร partir dโun PC.
La fonction de Feistel
ย ย La fonction F observรฉe dans la Figure 2.5 opรจre dans une moitiรฉ dโun bloc (donc 32-bits). Cette fonction consiste de quatre รฉtages :
1. Expansion : Le demi-bloc de 32-bits est รฉtendu ร 48 bits en faisant usage de la permutation dโexpansion, dรฉnotรฉ E dans le diagramme ;
2. Mixage de la clรฉ : Le rรฉsultat est combinรฉ avec une sous-clรฉ utilisant le XOR. Seize sousclรฉs de 48-bits (une pour chaque itรฉration) sont dรฉrivรฉes de la clรฉ principale ร travers dโun ordonnancement de clรฉs.
3. Substitution : Aprรจs avoir mixรฉ ร la sous-clรฉ, le bloc est alors divisรฉ dans huit parties de six-bits ; avant de passer par les boรฎtes de substitution (S-boxes – Substitution Boxes). Chacune de ces 8 S-boxes transforment les six bits dโentrรฉes vers 4 bits de sortie, avec une transformation non-linรฉaire. Les S-Boxes fournissent le cลur de la sรฉcuritรฉ du DES. Sans les S-box les transformations seraient linรฉaires, et par consรฉquent lโalgorithme serait facilement cassรฉ.
4. Permutation :Finalement, les sorties ร 32-bits ร partir des S-boxes sont disposรฉes en accord avec un tableau fixe de permutation, appelรฉe P โ Box. Lโalternance de substitutions, permutations et expansions provoquent le concept de ยซย confusion et diffusionย ยป respectivement ; concept identifiรฉ par Shannon dans les annรฉes 40 comme รฉtant des conditions nรฉcessaires pour un algorithme de cryptographie sรปr.
|
Table des matiรจres
Introduction
1 Architectures reconfigurablesย
1.1 Dรฉfinitions
1.2 Classificationย
1.2.1 La Taxonomie de Radunovic [78]
1.2.2 Les critรจres de Page [76]
1.2.3 Statique versus Dynamique [85]
1.2.4 Rรฉseau dโinterconnexion pour les architectures reconfigurables ร gros grain
1.2.5 Modรจles de reconfiguration
1.2.6 Niveaux de reconfiguration
1.3 Mรฉtriques
1.3.1 La densitรฉ fonctionnelle
1.3.2 La Rรฉmanence
1.4 รtat de lโartย
1.4.1 Architectures ร Gros Grain
1.4.2 Architectures ร Grain Moyen
1.4.3 Architectures ร Petit Grain
1.5 Tendancesย
1.6 Le Reconfigurable pour la cryptographie
2 Introduction ร la Cryptographieย
2.1 Introduction ร la cryptographieย
2.2 Types dโalgorithmes de Cryptographie
2.2.1 Cryptographie ร Clรฉ Symรฉtrique
2.2.2 Cryptographie Asymรฉtrique
2.3 Exemples dโalgorithmes de Cryptographie
2.3.1 Data Encryption Standard
2.3.2 Algorithme RSA
2.4 Nombres Premiersย
2.5 Fonctions ร sens uniqueย
2.5.1 Fonctions ร sens unique avec une trappe
2.5.2 Fonctions de hachage ร sens unique
2.6 Arithmรฉtique Modulaire
2.6.1 Congruence
2.6.2 LโAlgorithme dโEuclide
2.6.3 Lโinverse modulaire
2.6.4 Residue Number System
2.7 Multiplication Modulaire – Lโalgorithme de Montgomery
2.8 Leak Resistant Arithmeticย
2.9 Conclusion du Chapitre
3 Attaques et contremesuresย
3.1 Attaques Matรฉrielles
3.1.1 Considรฉrations ร propos de sรฉcuritรฉ et types dโattaques SCA
3.2 Contremesures
3.2.1 รtat de lโart
3.2.2 Une contremesure originale : le CMG
3.2.3 Aspects de sรฉcuritรฉ liรฉs ร la LRA
3.3 Conclusion du Chapitre
4 Vers une Implantation Matรฉrielle du LRAย
Vers une Architecture Reconfigurable pour la Cryptographie
4.1 Dรฉmarches architecturalesย
4.2 Leak Resistant Reconfigurable Architecture : Vue dโensembleย
4.3 La composition de la LR2Aย
4.3.1 Le contrรดleur
4.3.2 Les รฉlรฉments de calcul
4.3.3 Rรฉseau dโInterconnexion
4.3.4 Le modรจle de configuration
4.3.5 La gestion de la mรฉmoire
4.4 Validationsย
4.5 Lโintรฉrรชt de la reconfiguration
4.6 Conclusion du Chapitreย
Considรฉrations Finales
Bibliographie
Table des figures
Liste des tableaux
Annexes
Abrรฉviations
RSA
B.1 La description succinte de lโalgorithme
B.2 Le choix des nombres
B.3 Un example avec un message textuel
DES
C.4 S boxes
C.4.1 S boxes comme matrices
C.4.2 S boxes comme tableaux
C.5 Constantes de Permutation
C.6 Conversion entre diffรฉrents types de donnรฉes
C.7 Permutation de vecteurs et XOR
C.8 S-Boxes et la Fonction de Feistell
C.9 Commandes en ligne
C.10 Sauvegarde des fonctions et des constantes
C.11 Setup Initial
C.12 Une รฉtape de cryptage
C.13 Les 15 รฉtapes suivantes de cryptage
C.14 Pour decrypter
Algorithme de Montgomery
LRA
Current Mask Generator
Tรฉlรฉcharger le rapport complet