HABILITATION À DIRIGER DES RECHERCHES

Dimension: px
Commencer à balayer dès la page:

Download "HABILITATION À DIRIGER DES RECHERCHES"

Transcription

1 HABILITATION À DIRIGER DES RECHERCHES présentée devant L'Université de Rennes 1 Spécialité : Informatique par Arnaud Tisserand Étude et conception d'opérateurs arithmétiques soutenue le 6 juillet 2010 devant le jury composé de : M. Daniel Etiemble, Professeur Université Paris Sud M. Guy Gogniat, Professeur Université Bretagne Sud M. Bernard Goossens, Professeur Université Perpignan M. Dominique Lavenier, Professeur ENS Cachan Antenne de Bretagne M. Jean-Michel Muller, Directeur de Recherche CNRS, Président du jury M. Olivier Sentieys, Professeur Université Rennes 1 et au vu des rapports de : M. Daniel Etiemble, Professeur Université Paris Sud M. Bernard Goossens, Professeur Université Perpignan M. Paolo Ienne, Professeur EPFL Lausanne Suisse

2

3 Table des matières Avant-propos 5 1. Introduction Arithmétique des ordinateurs Représentations des nombres Algorithmes Implantations Validation au niveau arithmétique Outils et support pour l'arithmétique des ordinateurs Résumé des travaux Arithmétique en ligne Architectures recongurables Architecture FPPA Architecture FPOP Méthodes à base de tables Méthode à base de tables et de petits multiplieurs Méthode à base de tables et additions, méthode multipartite Méthode à base de tables et polynômes très particuliers Division pour circuits asynchrones Opérateurs arithmétiques spéciques pour FPGA Variantes de la multiplication Multiplication par des constantes Multiplication tronquée Fonction puissance entière x n Bibliothèques ottantes pour processeurs entiers Bibliothèque ottante pour processeurs CoolRisc Bibliothèque FLIP pour processeur VLIW ST Division par des constantes Approximations polynomiales Calcul à basse consommation d'énergie Opérateurs arithmétiques pour la basse consommation Modélisation et évaluation de la consommation d'opérateurs arithmétiques Consommation d'énergie dans les processeurs graphiques Opérateurs arithmétiques pour la cryptographie Arithmétique dans les corps nis Fonctions de hachage cryptographique Sécurisation d'opérateurs arithmétiques pour la cryptographie Générateur de diviseur divgen Bibliothèque logicielle PACE pour la cryptographie

4 2.14. Maîtrise des erreurs d'arrondi dans les outils de CAO Générateurs aléatoires TRNG Arithmétique par estimation Opérateurs arithmétiques matériels pour l'évaluation de fonctions par approximation polynomiale Introduction Notations et état de l'art Notations Erreurs Polynôme minimax Vers des polynômes d'approximation avec des coecients représentables Génération des meilleurs approximants Outils pour le calcul de bornes d'erreur globale Méthode d'optimisation proposée Calcul du polynôme minimax Détermination des coecients du polynôme et de leur taille Détermination de la taille du chemin de données Résumé de la méthode Exemples d'applications sur FPGA Fonction 2 x sur [0, 1] Racine carrée sur [1, 2] Conclusion et perspectives Conclusion et perspectives Autres activités Encadrement Enseignements Administration et tâches collectives Animation Collaborations académiques Collaborations et contrats industriels Développement de logiciels Participation à des comissions de spécialistes Édition, comités de programmes, relectures Expertises Bibliographie personnelle Bibliographie générale 95 A. Sélection de publications 99 A.1. Opérateurs en arithmétique en ligne pour le contrôle numérique A.2. Opérateurs à base de petits multiplieurs pour l'évaluation de fonctions A.3. Méthode des tables multipartites A.4. Optimisation de la multiplication par des constantes A.5. Génération d'approximations polynomiales ecaces en machine

5 Avant-propos Ce mémoire résume les activités eectuées en recherche, encadrement, animation et enseignement depuis ma thèse soutenue en septembre Ces activités ont été réalisées dans plusieurs contextes. Une partie a été eectuée lors de mon séjour post-doctoral dans le groupe Ultra Low Power de la division microélectronique du Centre suisse d'électronique et microtechnique (CSEM) à Neuchâtel en Suisse entre octobre 1997 et septembre Entre octobre 1999 et septembre 2005, j'ai travaillé dans l'équipe Arénaire du Laboratoire de l'informatique du parallélisme (Lip) à Lyon sur un poste de chargé de recherche (CR) à l'institut national de recherche en informatique et automatique (Inria). Entre octobre 2005 et novembre 2008, j'ai travaillé dans l'équipe Arith du Laboratoire d'informatique robotique et microélectronique de Montpellier (Lirmm) sur un poste de CR au Centre national de la recherche scientique (CNRS). Enn, depuis décembre 2008, je travaille, toujours comme CR CNRS, dans l'équipe Cairn de l'institut de recherche en informatique et systèmes aléatoires (Irisa) à Lannion. Mes travaux de recherche portent essentiellement sur l'arithmétique des ordinateurs, en matériel et en logiciel. Ces travaux comportent des liens avec les domaines de la conception de circuits intégrés numériques, de l'architecture des machines et du développement logiciel de bibliothèques de calcul. Les principaux domaines d'application de ces travaux sont : le calcul numérique dans les systèmes embarqués, la cryptographie asymétrique, la sécurité numérique, le traitement numérique du signal et des images et de façon plus limitée les dispositifs numériques de contrôlecommande en automatique. Ce mémoire se décompose comme suit. Le chapitre 1 est une courte introduction à l'arithmétique des ordinateurs et au contexte des travaux. Le chapitre 2 résume les principaux travaux eectués ou en cours. Quelques articles parus dans des journaux, et reproduits en annexe A, décrivent les travaux les plus signicatifs. Le chapitre 3 détaille un peu plus l'un des axes de recherche étudié ces dernières années : la conception d'opérateurs arithmétiques pour l'évaluation de fonctions en matériel. J'ai choisi ce thème car il me semble bien illustrer l'ensemble de mes travaux. En particulier, il montre les diérentes facettes étudiées en arithmétique des ordinateurs : les représentations des nombres, les algorithmes de calculs, les implantations ecaces, les problèmes de validation et les outils d'aide à la conception de circuits arithmétiques. La conclusion, au chapitre 4, dresse un bilan des travaux eectués ou en cours et propose quelques perspectives. Une grande partie des travaux présentés dans ce mémoire a été réalisée en collaboration avec d'autres chercheurs (doctorants, permanents, stagiaires de M2RDEA ou ingénieurs). Ces collaborations locales, nationales et internationales, seront rapidement présentées dans les diérentes sections techniques. Les activités en encadrement, animation, enseignement, expertise et administration sont résumées dans le chapitre 5. Les travaux décrits dans ce mémoire ont été publiés dans des journaux, des conférences ou en rapport de recherche. Les références à ces publications sont regroupées dans la bibliographie personnelle au chapitre 6. Les autres références bibliographiques sont regroupées au chapitre 7. La liste complète de mes publications est disponible sur ma page web 1. Ces publications sont disponibles, quand les droits le permettent, sur cette page web. Deux ordres des auteurs sont util- 1. Page web accessible à l'adresse : 5

6 isés dans mes publications. Ceci correspond à des modes de fonctionnement diérents propres à chaque communauté. Dans la communauté arithmétique des ordinateurs, issue de l'informatique, l'ordre des auteurs est l'ordre alphabétique car tous les auteurs participent de façon signicative aux publications. Dans la communauté issue de la micro-électronique et du traitement du signal, c'est l'ordre d'implication dans la publication qui est utilisé avec éventuellement des participations essentiellement administratives en n de liste (p. ex. codirections de thèses). Je m'eorcerai de préciser la nature et le degré d'implication de mes participations dans les travaux collectifs. Enn, les annexes, à partir de la page 99, reproduisent une sélection de quelques publications illustrant les principaux résultats résumés au chapitre 2. 6

7 Chapitre 1 Introduction Cette introduction décrit les diérentes facettes de l'arithmétique des ordinateurs étudiées dans nos travaux. Elle précise aussi le contexte de ces travaux ainsi que certaines notations utilisées dans ce mémoire. Elle se décompose en quatre sections. La section 1.1 présente quelques notions d'arithmétique des ordinateurs sur les représentations des nombres et les algorithmes de calcul. La section 1.2 introduit les principales cibles utilisées pour nos implantations matérielles et logicielles. La section 1.3 présente quelques problèmes et méthodes de validation au niveau arithmétique. Enn, la section 1.4 résume les principales dicultés et quelques solutions proposées sur les outils et le support aux utilisateurs pour la conception et l'utilisation d'opérateurs arithmétiques en matériel Arithmétique des ordinateurs L'arithmétique des ordinateurs est la branche de l'informatique qui traite des représentations des nombres et des algorithmes pour eectuer les calculs de base en machine. Cette première dénition informelle nécessite quelques précisions. Les représentations des nombres et les algorithmes seront abordés respectivement aux sous-sections et Par calculs de base, nous désignons les opérations suivantes : addition, soustraction, comparaisons, multiplication, division, inverse, racine carrée et son inverse. À ces opérations nous ajoutons des variantes comme l'incrémentation, la multiplication par une ou des constantes, le carré, le cube et la norme euclidienne. Nous ajoutons aussi l'évaluation de fonctions plus complexes comme les fonctions trigonométriques, le logarithme, l'exponentielle, etc. On s'intéresse aussi à la composition de plusieurs de ces opérations. On considère aussi le cas de calculs sur des objets composés de plusieurs nombres comme le calcul sur les nombres complexes. À ces opérations, classiques en calcul scientique, on ajoute des opérations spéciques nécessaires dans certaines applications. On a, par exemple, des ltres numériques en traitement du signal, des transformées en cosinus discret (DCT) et des sommes de diérences de valeurs absolues (SAD) en multimédia. Il en va de même pour certaines primitives cryptographiques comme l'exponentiation modulaire et l'addition de points d'une courbe elliptique. Par contre, la réalisation de calculs évolués sur des objets plus complexes ne rentre pas dans le cadre de notre travail (par exemple des opérations matricielles en algèbre linéaire [89]). Par en machine, on entend à la fois la réalisation des calculs dans des circuits intégrés numériques et dans des processeurs généralistes ou dédiés. Nous visons des opérateurs dédiés à certaines applications (approximation de fonctions, primitives cryptographiques, ltres numériques, DCT, etc.) mais aussi des ressources généralistes (unités arithmétiques, opérateurs ottants, etc.). Plus de détails seront donnés en section 1.2. Comme dans de nombreux domaines de l'informatique, le choix de la structure des données et des algorithmes de traitement associés inuence grandement les performances obtenues. Dans la suite, nous utiliserons souvent le terme arithmétique comme un ensemble de systèmes de représentations des nombres et des algorithmes de calcul associés. Ces deux aspects sont étroitement liés. L'un de nos principaux objectifs est de trouver, pour un problème donné, une bonne adéquation entre une arithmétique et son implantation matérielle ou logicielle. Les critères 7

8 que nous regarderons pour qualier cette adéquation sont la vitesse ou la durée des calculs, la surface de silicium, la taille des programmes, la taille mémoire, le nombre de registres intermédiaires nécessaires et la consommation d'énergie. Souvent la précision des calculs est ajoutée à ces critères. Pour nous, la précision est plus une contrainte à garantir dans nos applications. Par exemple, nous étudions des opérateurs arithmétiques permettant de réaliser des opérations avec une précision cible minimale donnée. Le problème de la validation de la précision de nos opérateurs, ou plus généralement, de leur bon comportement mathématique, sera abordé en section 1.3. La robustesse aux attaques par canaux cachés ou par injection de fautes est aussi un critère de qualité des opérateurs arithmétiques utilisés dans des cryptosystèmes. Nous verrons en section que mesurer cette robustesse n'est pas une chose simple. Plusieurs ouvrages traitent d'arithmétique des ordinateurs : [83] est la référence la plus complète actuellement en anglais, [112] est une très bonne référence en français. Avec Marc Daumas et Florent de Dinechin, nous avons été éditeurs invités pour un numéro spécial sur l'arithmétique des ordinateurs dans la revue Réseaux et systèmes répartis, calculateurs parallèles [21] en À cette occasion, nous avons écrit une introduction à l'arithmétique des ordinateurs [20] et sur quelques thèmes de recherche abordés dans la communauté française de ce domaine Représentations des nombres Il existe une grande variété de systèmes de représentations des nombres, voir [91, 93] pour des aspects historiques et [112, 83] pour une revue des principales représentations utilisées en arithmétique des ordinateurs. Les travaux présentés dans ce mémoire utilisent principalement des représentations en numération de position. Dans cette catégorie de représentation, les nombres sont représentés par des séquences de chires. Les chires sont des éléments de l'ensemble (ni) des chires possibles. Chaque chire est associé à une puissance de la base. La base choisie est souvent 2 ou une puissance de 2 pour des raisons d'implantation. Nous utiliserons des chires entiers (naturels ou relatifs). Dans la suite, nous manipulerons essentiellement des entiers et des approximations des réels en virgule xe. Nous utiliserons un peu la représentation approchée des réels en virgule ottante dans la section consacrée à la bibliothèque FLIP. Cette bibliothèque fournit un support ottant pour des processeurs particuliers qui intègrent uniquement des unités entières ou en virgule xe. On note () 2 la représentation binaire d'une valeur, par exemple = ( ) 2 ou = (11.001) 2. La notation classique en base 10 est simpliée : pas de () 10. La notation de la virgule suit le standard anglo-saxon, avec un point, an de simplier les interactions avec des programmes. On représente un entier positif a en numération simple de position, sur n bits, par la suite (a n 1 a n 2... a 1 a 0 ) 2, où les chires a i appartiennent à l'ensemble de chires {0, 1} et où la valeur du nombre est n 1 i=0 a i2 i. Un chire a i, de rang ou position i, est associé au poids 2 i. En virgule xe avec k bits entiers et l bits fractionnaires, on représente un nombre a dont la valeur est k i= l a i2 i. Pour la représentation des nombres relatifs, nous utiliserons suivant les notations suivantes : complément à deux, signe et valeur absolue (aussi appelée signe et magnitude) et redondante à chires signés. Le livre [112] présente en détail ces diérentes représentations. En numération de position de base β, on peut autoriser les chires à avoir d'autres valeurs entières que celles de l'ensemble habituel {0, 1, 2,..., β 1}. En 1961, Avizienis [70] a proposé des représentations redondantes des nombres très utiles en arithmétique des ordinateurs où, en base β, l'ensemble de chires contient strictement plus de β éléments et il est symétrique autour de 0. On note () β,d la notation en base β avec l'ensemble de chires D. Les chires négatifs (seulement les chires, pas les nombres) seront notés avec une barre au-dessus de leur valeur 8

9 absolue an d'éviter les confusions avec le signe de l'opération de soustraction. Par exemple, le chire 1 est noté 1. Avoir une représentation redondante des nombres signie que certains nombres possèdent plusieurs écritures. Par exemple, en base β = 10, si on utilise l'ensemble de chires D = {9,..., 1, 0, 1,..., 9}, alors le nombre 2010 peut s'écrire (2010) 10,D, (2190) 10,D, (3990) 10,D, (18010) 10,D, (18190) 10,D, etc. Le nombre 9999 s'écrit assez élégamment (10001) 10,D. Les représentations redondantes à chires signées sont très anciennes. En 1840, par exemple, Cauchy propose de les utiliser pour limiter les erreurs lors de longues séquences de calculs eectués manuellement [76]. Ce problème de validation était important à cette époque pour bon nombre de professions. Les représentations redondantes permettent de calculer certaines opérations plus rapidement. L'addition et la soustraction s'eectuent en un temps indépendant de la taille des nombres ou temps constant. On parle souvent d'addition et de soustraction sans propagation de retenue. Les éventuelles retenues générées à un certain rang ne peuvent pas se propager plus loin que le rang immédiatement supérieur. Ceci brise, de façon systématique au niveau de chaque rang, la chaîne de dépendance des propagations de retenues, ce qui permet bien d'avoir la propriété d'addition/soustraction en temps constant. Ces représentations permettent d'accélérer notablement des suites d'additions ou de soustractions. Ceci est particulièrement utile pour eectuer la somme des produits partiels dans l'opération de multiplication. Par contre, pour une seule opération d'addition ou de soustraction, une représentation redondante n'est pas intéressante si il faut la somme (ou la diérence) en représentation classique (non redondante). Le coût de la conversion d'une représentation redondante vers une représentation non redondante est celui d'une vraie addition avec propagation de retenues (en temps logarithmique avec la taille des opérandes pour les meilleurs algorithmes). Dans le cas de la division, l'utilisation d'une notation redondante pour les chires du quotient dans l'algorithme SRT permet d'accélérer signicativement les calculs [82]. À chaque itération, la sélection d'un nouveau chire du quotient est basée sur une estimation du reste partiel et du diviseur. Quelques chires de poids forts de ces deux valeurs servent d'entrée à une table donnant le nouveau chire du quotient. Les erreurs dues aux estimations sont corrigées dans les itérations suivantes. Si les erreurs sont limitées à chaque itération, l'écriture redondante du quotient permet de tendre vers la valeur théorique en s'autorisant des petites modications. Dans SRT, la mise à jour du reste partiel, qui est une soustraction, s'eectue souvent en représentation redondante pour accélérer le calcul. L'algorithme SRT est un cas idéal pour étudier les représentations redondantes. La section 2.12 résume les travaux sur un générateur automatique de code VHDL pour des diviseurs SRT réalisé avec Nicolas Veyrat-Charvillon et Romain Michard. Nous utiliserons beaucoup les représentations carry-save et borrow-save, cf. [83]. Ce sont des représentations redondantes de base 2. Les chires sont dans l'ensemble {0, 1, 2} pour la représentation carry-save et dans l'ensemble { 1, 0, 1} pour la représentation borrow-save. La représentation carry-save, notée () cs, est utilisée pour eectuer la somme de plusieurs termes, comme pour la réduction des produits partiels dans les multiplieurs rapides. La représentation borrow-save, notée () bs, permet d'éviter simplement des longues suites de chires à 1, par exemple 63 = ( ) 2 = ( ) bs. Elle nous sera particulièrement utile pour recoder des constantes an de diminuer leurs nombres de bits non nuls et ainsi diminuer signicativement la quantité de calculs lors de multiplications par ces constantes, cf. section et chapitre 3. Mais les représentations redondantes ont un coût. Comme il y a plus de chires à représenter que dans une notation non redondante, le stockage est plus coûteux. La base 2 constitue l'un des pires cas pour l'augmentation des besoins de mémorisation. On passe de 1 bit par chire en représentation classique à 2 bits par chire en carry-save et en borrow-save. Plus la base augmente moins le surcoût de mémorisation est important. Par exemple, en base 4 avec les 9

10 chires dans { 2, 1, 0, 1, 2}, on a 3 bits par chire au lieu de 2. L'augmentation du nombre de portes logiques nécessaires pour traiter les chires codés sur plus de bits est souvent assez faible. En eet, la représentation redondante permet de se dispenser des algorithmes de propagation, ou de génération, rapides des retenues intermédiaires. Un additionneur carry-save ou borrow-save est bien plus petit, et régulier, qu'un additionneur rapide (non redondant). D'autre part, du fait de la redondance les comparaisons sont plus complexes (p. ex. (2010) 10,D = (18010) 10,D dans l'exemple donné plus haut). Les représentations redondantes sont donc souvent utilisées dans des calculs intermédiaires mais rarement pour des résultats naux. Une autre représentation que nous commençons à utiliser est la représentation modulaire 1 des nombres ou RNS pour residue number system [118]. Elle est beaucoup utilisée en traitement du signal et un peu en cryptographie dans la mesure où elle fait apparaître un fort parallélisme. On représente un entier a par les valeurs a i de a modulo m i pour chacun des moduli m i. L'ensemble des m i est appelée base du système RNS. Le théorème des restes chinois donne une construction de a modulo m i à partir des a i quand les m i sont premiers deux à deux. Les opérations d'addition et de multiplication s'eectuent en parallèle sur les diérents moduli. La représentation RNS n'est pas un système de position. L'ordre des calculs sur les diérents éléments de la base des moduli n'a aucune importance. C'est cette propriété qui utilisée dans [71] pour protéger des cryptosystèmes contre certaines attaques par canaux cachés (analyse de la consommation d'énergie, du rayonnement électromagnétique ou du temps de calcul). Depuis quelques années, nous étudions aussi les représentations des nombres sur des corps nis F q utilisés en cryptographie. Dans notre cas, nous nous limitons aux corps premiers F p et aux extensions du corps binaire F 2 m. Dans le cas F p, c'est l'arithmétique modulo un grand nombre premier p qui est utilisée. On utilise des représentations pour des grands nombres proches de la multiprécision en logiciel. Dans le cas F 2 m, les éléments du corps sont représentés par des polynômes univariés avec des coecients dans F 2. Les nombres sont alors des suites de ces coecients avec aussi un aspect multiprécision. Dans l'avenir, nous comptons étudier les caractéristiques de représentations pour des extensions de la forme F 3 m Algorithmes En arithmétique des ordinateurs, on classe habituellement les opérations ou fonctions à évaluer en plusieurs catégories : les opérations arithmétiques : addition, soustraction, multiplication et opérations dérivées (carré, cube, additionmultiplication fusionnée, multiplication par des constantes, etc.) ; les fonctions algébriques comme la division, l'inverse, la racine carrée et son inverse ou la norme euclidienne ; les fonctions élémentaires comme les fonctions trigonométriques, l'exponentielle, le logarithme, l'élévation à une puissance réelle, etc. Cette décomposition correspond non seulement à des caractéristiques mathématiques différentes mais aussi à des complexités de mise en uvre diérentes pour les implantations des opérateurs matériels ou logiciels. Il existe d'autres catégories de fonctions à évaluer comme les fonctions spéciales (fonction gamma, fonction erreur, etc.), mais nous n'utilisons pas ces fonctions dans nos applications. Pour les opérations arithmétiques, on sait calculer exactement le résultat en utilisant des algorithmes assez simples et directs (sans de nombreuses itérations qui convergent vers le résultat nal). L'implantation de ces algorithmes donne lieu à des opérateurs rapides et autonomes (ne 1. À ne pas confondre avec l'arithmétique modulaire dans laquelle on eectue des opérations modulo un nombre premier. 10

11 nécessitant aucune autre ressource pour eectuer leurs calculs). En matériel, ces algorithmes s'implantent souvent comme des circuits combinatoires très ecaces. L'introduction de registres permet d'augmenter le débit ou bien de réduire la surface du circuit en repliant l'opérateur comme avec certaines décompositions récursives de la multiplication. L'opération d'addition est de loin l'opération arithmétique la plus répandue. La recherche en arithmétique des ordinateurs est encore active pour cette opération tant le spectre des algorithmes et des implantations possibles est large [129]. En règle générale, lorsque l'on parle d'addition en arithmétique des ordinateurs, on sous-entend addition et soustraction car ces deux opérations sont très proches, en particulier dans des représentations comme le complément à deux ou le borrow-save. La multiplication peut se ramener à une succession d'additions. En eet, il sut d'eectuer la somme de tous les produits partiels. On nomme cette phase la réduction des produits partiels. La génération des produits partiels est massivement parallèle à un problème de sortance près. En eet, chaque chire de l'un des opérandes doit être multiplié par chacun des chires de l'autre. La sortance sur l'élément de mémorisation (souvent une bascule ou un verrou) qui stocke un bit des opérandes est alors très importante. Dans les multiplieurs de grande taille, la génération des produits partiels peut nécessiter jusqu'à 25% du temps de calcul total alors qu'en théorie une simple porte ET sut pour chaque bit de produit partiel. Une utilisation astucieuse de recodages, comme celui de Booth [83], permet de réduire le nombre de produits partiels. La phase de réduction des produits partiels est théoriquement très simple. Il sut de faire la somme en utilisant une notation redondante des nombres. En utilisant un arbre d'addition, on obtient la solution optimale en temps de calcul. Le problème ici est encore un problème de contraintes sur l'implantation et en particulier un problème de topologie. En eet, implanter un arbre sur une surface plane et si possible carrée ou rectangulaire n'est pas simple, cf. [86]. Enn, la phase d'assimilation des retenues permet de transformer la représentation redondante de la somme des produits partiels en une représentation classique. En pratique, il s'agit d'une addition des composantes de l'écriture redondante de la somme des produits partiels. Dans le cas des fonctions algébriques courantes dans les applications visées, on utilise essentiellement trois types d'algorithmes [83, 117] : les algorithmes à base d'additions et de décalages (shift-and-add), ceux basés sur des itérations de fonctions (style Newton-Raphson) et des approximations polynomiales. Dans les algorithmes à base d'additions et de décalages, le résultat est produit en commençant par les poids forts, chire par chire [82]. Les méthodes à additions et des décalages sont aussi appelées méthodes à récurrence de chires. La méthode utilise une représentation redondante du résultat, ce qui permet d'accélérer les calculs en limitant les multiples comparaisons qui doivent être faites à chaque itération pour sélectionner le nouveau chire du résultat. Les algorithmes à itération de fonction, comme Newton-Raphson ou Goldschmidt, utilisent une itération qui converge vers la valeur du résultat avec des additions et des multiplications [103]. On a alors une convergence quadratique (et même cubique dans certains cas). Cette méthode est très utilisée dans les processeurs généralistes mais elle est souvent désastreuse en termes de consommation énergétique par rapport à des opérateurs autonomes (comme des unités dédiées utilisant des algorithmes à additions et décalages). Nous avons travaillé sur les approximations polynomiales, cf. chapitre 3. Les fonctions élémentaires sont utiles pour le calcul scientique, mais aussi pour de plus en plus d'applications comme les applications graphiques ou le contrôle numérique. Contrairement aux opérations arithmétiques et aux fonctions algébriques, on ne sait pas calculer les fonctions élémentaires, sauf pour certains arguments triviaux, on sait seulement les approcher. Ici encore, on utilise trois types d'algorithmes pour évaluer les fonctions élémentaires [113] : les approximations polynomiales ou rationnelles, les algorithmes à base d'additions et de décalages et enn 11

12 les méthodes à base de tables. Nous avons travaillé sur des approximations polynomiales (cf. chapitre 3) et sur des méthodes à base de tables (cf. section 2.3). Les méthodes à base de tables, très étudiées ces dernières années, permettent d'obtenir des opérateurs rapides pour des précisions jusqu'à une vingtaine de bits. Au delà, la taille des tables devient bien trop grande pour des implantations ecaces. Les algorithmes à base d'additions et de décalages fournissent des opérateurs de taille raisonnable mais nécessitent un grand nombre d'itérations pour fournir le résultat. Enn, les approximations polynomiales s'imposent dans bon nombre d'applications pour des questions d'ecacité et de réutilisabilité des ressources de calcul. Les approximations rationnelles sont assez peu utilisées en pratique du fait du coup important de la division - nale. Nous verrons en section 3.5, que ceci pourrait bien changer dans certains cas du fait des caractéristiques de circuits récents Implantations La troisième facette de notre travail en arithmétique des ordinateurs concerne l'implantation des algorithmes de calcul et représentations des nombres. Cette facette est souvent très coûteuse en temps de travail pour des implantations d'arithmétiques évoluées. Dans nos travaux, ces implantations ont été réalisées majoritairement pour des cibles matérielles et un peu pour des cibles logicielles. Toutefois, notre implication dans des développements logiciels est importante même pour les cibles matérielles. En eet, la plupart des codes sources utilisés pour les implantations matérielles sont générés par des programmes spéciques (cf. section 1.4). La plupart de nos réalisations matérielles a été implantée et validée sur des circuits FPGA (pour eld programmable gate arrays). Cibler des implantations Asic (pour application-specic integrated circuits) ne nous était généralement pas possible pour des raisons budgétaires, en particulier, du fait des coûts de main d' uvre sur l'installation et la maintenance des lourds outils de conception de circuits. Au CSEM, la structure de la division microélectronique nous permettait de cibler des circuits Asic. Ceci n'a plus été possible par la suite. À l'irisa, nous espérons pourvoir cibler de nouveau des Asic. Les opérateurs présentés au chapitre 3 ont été implantés en matériel et en logiciel. Nous verrons quelles sont les implications des possibilités et contraintes des supports d'exécution sur les algorithmes de calcul et les représentations des nombres. La bonne réussite de l'implantation pratique d'une arithmétique pour une application donnée dépend en partie des caractéristiques du support d'exécution. Par exemple, nous regardons comment proposer des dispositifs de calcul diérents à partir des ressources disponibles dans les circuits FPGA actuels comme des petits blocs de multiplication câblée. Nous verrons que dans certains cas, il faudra adapter les algorithmes pour proter au mieux des performances de certaines ressources matérielles comme pour les méthodes à base de tables (cf. section 2.3). Le travail d'implantation est souvent long et pas toujours simple à valoriser, et particulièrement lorsqu'il faut concevoir des outils pour eectuer ces implantations. Néanmoins, cet aspect de validation expérimentale par implantation de nos résultats est une motivation importante an de prouver que nos solutions sont réellement viables en pratique. Ceci permet aussi d'obtenir des mesures de performances bien plus pertinentes que des nombres d'opérations ou de grossières évaluations de complexité. L'implantation matérielle d'opérateurs arithmétiques et de représentations des nombres évolués est souvent dicile en pratique. Le concepteur doit jongler entre le large espace des paramètres possibles, la faiblesse des langages et outils de conception et les contraintes technologiques. L'évolution rapide des technologies demande de reconcevoir régulièrement des unités de calcul. Ceci demande beaucoup d'eorts et de temps. Malheureusement, cela limite souvent la complexité 12

13 des solutions envisagées dans bon nombre de circuits ou processeurs. Dans le cas des circuits Asic, nous nous limitons aux implantations basées sur des bibliothèques de cellules standards. À long terme, l'un de nos buts est de permettre l'implantation d'arithmétiques évoluées, à partir d'une description simple au niveau arithmétique, qui utiliseraient le type des cellules de la bibliothèque utilisée et des optimisations des outils. Les circuits recongurables FPGA sont de plus en plus utilisés pour des implantations matérielles. Les plus petites performances de ces circuits par rapport aux circuits de type Asic sont souvent compensées par la rapidité de mise en uvre, la réelle possibilité de prototypage à bas coût au niveau universitaire et le faible coût pour des petites séries lors de contrats industriels. L'implantation d'opérateurs arithmétiques en FPGA ne pose pas de problèmes théoriques plus complexes que pour des circuits intégrés classiques. C'est même un peu le contraire qui se produit en pratique. Les FPGA, bien que proches des circuits classiques, n'obéissent pas du tout aux mêmes métriques. Concernant le temps, par exemple, l'additionneur le plus simple à propagation séquentielle de retenue reste plus rapide qu'un additionneur plus sophistiqué et ce jusqu'à des tailles importantes. Ceci est lié à la logique dédiée à la propagation rapide des retenues ou fast carry lines. L'apparition de très nombreux blocs de multiplication câblée dans les FPGA biaise aussi un peu les choses. Par exemple, dans les FPGA Xilinx qui embarquent des dizaines ou des centaines de multiplieurs câblés, utiliser des multiplications avec des opérandes de moins de 18 bits n'a aucun intérêt (même la réduction de la consommation est très faible). Dans les FPGA, ce sont aussi les aspects de surface qui sont modiés. Comment comparer deux solutions dont une utilise les blocs de multiplication câblée et pas l'autre? Nous verrons que certaines des ressources spéciques aux circuits FPGA nous demandent d'utiliser des algorithmes un peu diérents de ceux que l'on utilise pour les circuits intégrés classiques. Le support de la virgule ottante dans les FPGA ne se pose que depuis peu. Les FPGA des générations précédentes étaient de taille trop limitée. Aujourd'hui des bibliothèques complètes et performantes, comme celle proposée par J. Detrey [79], permettent de synthétiser des opérateurs ottants en FPGA. Mais ici aussi, l'avenir des arithmétiques évoluées est incertain. Si des blocs câblés spéciques à la virgule ottante font leur apparition dans les futures générations de FPGA, ce qui semble probable, le support d'autres représentations des nombres pour l'approximation des réels comme le système logarithmique deviendront probablement inecaces en comparaison à des structures ottantes dédiées. En fait, pour des applications classiques, l'arithmétique à un niveau n n'a plus vraiment de place dans les FPGA actuels où les structures arithmétiques élémentaires sont déjà câblées. Dans l'avenir, cette tendance risque de se renforcer avec des structures de FPGA dont la granularité est de plus en plus importante. La basse consommation d'énergie est un critère de conception de plus en plus important, et même critique dans de nombreux cas. Il faut se poser la question de l'ecacité énergétique des calculs. Les interactions entre les algorithmes et les représentations des nombres sont nombreuses et assez peu étudiées. C'est une thématique vraiment intéressante, mais faute de réussite dans les demandes de nancement de projets sur ce thème, nous ne travaillons que très peu sur ces aspects pour le moment. Nous espérons que cela changera prochainement. Pour les implantations logicielles, nous nous sommes essentiellement intéressés au cas de processeurs dédiés (type DSP pour digital signal processor). En particulier, nous avons développé des algorithmes et des bibliothèques pour des processeurs embarqués dans des applications multimédia ou de traitement du signal (processeurs ST100 et ST200). Le type des représentations des nombres supportées directement par le processeur dépend des applications cibles. Les données sont souvent représentées en entier ou en virgule xe pour des raisons de coût de silicium (les unités ottantes optimisées sont bien trop coûteuses pour ces applications). En plus d'unités arithmétiques et logiques (additions, soustractions, comparaisons, décalages et fonctions 13

14 logiques), on trouve souvent des unités de type MAC (pour multiply and accumulate) ou FMA (pour fused multiply and add) 2 dans ces processeurs. Notre travail sur la génération automatique de code de division par des constantes pour le processeur ST100, cf. section 2.8, illustre assez bien l'impact du type des unités de calcul sur les algorithmes arithmétiques mis au point. Celui sur le support ottant pour des processeurs entiers, cf. section 2.7.2, illustre l'impact des types de données supportés dans un processeur (ici ceux de la famille ST200) sur les arithmétiques. Depuis quelques temps, nous nous intéressons aussi au développement de bibliothèques arithmétiques rapides pour la cryptographie (cf. section 2.13) Validation au niveau arithmétique Une autre facette, complexe et multiforme, du problème de la conception et l'implantation d'algorithmes arithmétiques et de représentations des nombres est celui de leur validation. Ce problème est présent à diérentes étapes. Lors la conception d'un opérateur arithmétique (algorithmes et représentations), la validation a priori est importante étant donnée la complexité des méthodes de détermination des paramètres. Ce problème est actuellement un problème important pour la communauté d'arithmétique des ordinateurs. Bon nombre de travaux, en France particulièrement, portent sur ce problème. Enn, la validation a posteriori permet de vérier le bon comportement des opérateurs arithmétiques réalisés. En plus du test traditionnel et indispensable des circuits après fabrication, il faut pouvoir garantir que les descriptions des opérateurs arithmétiques sont correctement utilisées. Les outils de synthèse et de compilation sont souvent très limités au niveau arithmétique. Il faut donc vérier que les descriptions qui sont injectées dans ces outils sont totalement correctes et bien comprises. Par exemple, dans le domaine de l'arithmétique pour la cryptographie, l'implantation de multiplieurs modulaires de plusieurs milliers de bits (a b mod p) en utilisant des décompositions des opérandes en sousmots est assez complexe. Comme garantir que la description VHDL, où dans tout autre langage, de l'algorithme est totalement correcte (découpages complets, machines d'états, manipulation des valeurs intermédiaires, etc.)? Générer des cas de tests pathologiques pour des si grandes structures n'est pas chose facile. La mise au point d'algorithmes arithmétiques utilisant des représentations des nombres évoluées, ou même exotiques, pose un problème important : comment garantir la validité des solutions proposées. Ce problème de validation est omniprésent à diérentes étapes des travaux. Dans un premier temps, comment garantir que la preuve mathématique d'un algorithme est correcte? Ensuite, la description de cet algorithme et des représentations des nombres utilisées dans un langage de programmation ou de description de matériel est-elle l'image dèle de la solution théorique proposée? En particulier, comment vérier que les produits des outils comme les compilateurs ou les synthétiseurs sont corrects? Loin de proposer des solutions à tous ces problèmes, nous avons essayé de limiter les risques en adoptant une méthodologie de validation basée sur diérents niveaux de tests et diérentes techniques basées sur des outils récents et proches du domaine de la preuve formelle. La validation a priori, lors de la conception théorique, des opérateurs arithmétiques est souvent complexe. Ces algorithmes ne sont pas très longs en pratique, mais ils dépendent de nombreux paramètres. Par exemple, un algorithme SRT optimisé ne nécessite qu'une petite dizaine de lignes pour sa description. Mais la détermination des paramètres internes (p. ex. les tailles 2. On parle de MAC dans les processeur de type DSP (souvent pour la virgule xe) et de FMA pour les processeurs généralistes (souvent pour la virgule ottante), mais tous eectuent des opérations de type a b ± c avec éventuellement accumulation. 14

15 optimales des estimations du reste partiel et du diviseur pour SRT) nécessite souvent l'écriture de programmes ou des calculs beaucoup assez longs. Prouver qu'un algorithme fraîchement conçu retourne toujours le bon résultat, et ce quels que soient les opérandes et les paramètres internes, est un problème dicile en informatique en général et pas seulement en arithmétique des ordinateurs. De nombreux travaux récents, et particulièrement en France, proposent des méthodes et des outils dans le domaine de la preuve formelle pour aider les concepteurs d'arithmétiques. En particulier, nous renvoyons aux travaux de jeunes chercheurs, S. Boldo [73] et G. Melquiond [108] pour ces aspects. Dans plusieurs travaux récents, cf. chapitre 3, nous utilisons le logiciel gappa [107] développé par G. Melquiond pour obtenir des preuves formelles d'opérateurs pour l'approximation de fonctions. Les preuves formelles générées par gappa sont ensuite vériées par l'assistant de preuves coq [126]. De plus, nous utilisons le logiciel de calcul formel Maple [102] an de vérier certains calculs. Nous essayons, grâce à ces diérents outils, de vérier formellement le plus possible de nos algorithmes et méthodes d'optimisation. L'implantation pratique d'arithmétiques en utilisant des langages de programmation ou de description de matériel pose aussi un problème de validation. En eet, il faut vérier a posteriori le bon fonctionnement, ou comportement, des opérateurs arithmétiques réalisés. Les outils de synthèse pour le matériel ou bien les compilateurs pour le logiciel sont souvent très limités au niveau arithmétique. Il faut donc vérier que les descriptions qui sont injectées dans ces outils sont bien comprises. On ne parle pas d'erreurs dans les outils, mais seulement d'un problème de la bonne forme des descriptions que l'on injecte dans ces outils. Un exemple simple est celui de l'addition binaire, normalement toute simple, en VHDL. Si on déclare A et B deux vecteurs de bits de taille n, l'opération VHDL A + B retourne en fait (A + B) mod 2 n. Si l'on souhaite obtenir la somme complète sur n + 1 bits, il faut concaténer un zéro sur les poids forts de A et de B puis les additionner (en VHDL : ('0'\&A)+('0'\&B)). Vérier que l'on n'a pas oublié ce genre de détail n'est pas une chose simple en pratique étant donné de nombre de découpages de valeurs arithmétiques dans nos algorithmes. Le jour où un concepteur pourra déclarer deux signaux en représentation ottante IEEE 754 et en faire la division directement en VHDL (sans passer par des bibliothèques qui ne garantissent actuellement rien quant au respect de la norme) n'est pas encore venu. An de valider nos opérateurs arithmétiques, nous utilisons des simulations fonctionnelles à plusieurs niveaux : exhaustif (lorsque c'est possible), vecteurs de valeurs choisies, vecteurs de valeurs aléatoires. Dans chacun de ces cas, on doit comparer la sortie du simulateur fonctionnel à une référence théorique. En pratique, nous utilisons soit le système de calcul formel Maple soit un programme spécique développé en C ou C++ (utilisant des bibliothèques comme GMP [88] ou MPFR [87]) pour générer ces valeurs de référence. Remarquons que ces programmes spéci- ques n'utilisent pas les mêmes algorithmes que ceux que nous testons. La probabilité de faire les mêmes erreurs est donc faible, mais clairement non nulle. En dehors du domaine de la cryptographie, pour bon nombre de nos opérateurs, le nombre de bits d'entrée est modéré : 8 à 24 bits typiquement. Pour quelques valeurs des paramètres, on peut très bien tester l'ensemble des entrées possibles en simulation fonctionnelle (par exemple avec un simulateur VHDL raisonnablement rapide comme Modelsim). Dans ce cas, même si la couverture des tests eectués n'est pas totale (l'espace des paramètres internes étant souvent trop grand), ces simulations exhaustives, au niveau des opérandes, nous donnent une première garantie de la validité de nos opérateurs, au moins pour les jeux de paramètres testés. Quand le nombre de bits d'entrée ou le nombre de paramètres devient trop important pour simuler exhaustivement nos opérateurs, on utilise des simulations à base de vecteurs de valeurs. En plus des tests classiques utilisant de très nombreuses valeurs aléatoires, nous essayons de générer automatiquement des vecteurs de test correspondants à des cas particuliers de nos algo- 15

16 rithmes. Un bon exemple est présenté dans nos travaux sur la bibliothèque FLIP, cf. section Dans certains cas, nous sommes capables de générer automatiquement les cas extrêmes des découpages internes dans nos opérateurs. Depuis quelques temps, nous nous intéressons à l'intégration de méthodes de gestion des erreurs de calcul dans les outils de conception assistée par ordinateur (CAO) pour les circuits intégrés numériques. En section 2.14, nous décrivons deux travaux en cours sur ce thème. Nous travaillons sur l'intégration de la gestion et l'optimisation des erreurs d'arrondi dans le langage SystemC. Nous faisons le lien entre des descriptions arithmétiques en SystemC et les bornes d'erreurs calculées par le logiciel gappa. Ceci permet de valider la précision d'opérateurs ou bien de calculer des tailles d'opérateurs sous contrainte de précision. D'un autre côté, avec le laboratoire VLSI CAD de l'université du Massachusetts à Amherst aux USA, nous essayons d'intégrer la gestion des erreurs d'arrondis (calculées par gappa) dans leur outil de synthèse de haut niveau an de pouvoir synthétiser des circuits avec des précisions validées à la conception. Nous espérons pouvoir travailler, les prochaines années, sur la validation au niveau arithmétique dans les langages de haut niveau. Les progrès eectués ces dernières années sur les outils d'aide à la preuve formelle nous invitent à essayer de voir comment utiliser au mieux ces outils pour le développement et l'utilisation d'opérateurs arithmétiques. Dans le monde des circuits intégrés, la conception pour le test (ou DfT pour design for testability en anglais) est depuis longtemps une réalité. Dans le monde du logiciel, un grand chemin reste encore à parcourir Outils et support pour l'arithmétique des ordinateurs Enn, la dernière facette de nos travaux concerne le problème du support utilisateur lors de la conception de dispositifs faisant intervenir des arithmétiques évoluées. Le manque de support et d'outils au niveau arithmétique ne se fait pas uniquement ressentir lors de la phase de validation. Il apparaît dès les premières étapes de la conception d'algorithmes à un niveau n. En eet, les outils actuels (langages de programmation et de description de matériel en particulier) ne supportent directement que des types arithmétiques très simples et un tout petit nombre d'opérations. Dans le cas du logiciel, de nombreuses bibliothèques arithmétiques sont disponibles, mais ce n'est pas du tout le cas pour le matériel. Les seules représentations des nombres supportées dans les outils de synthèse sont la numération simple de position et le complément à deux pour les entiers et la virgule xe. Les entiers sont assez bien pris en compte, mais c'est déjà moins évident pour la virgule xe du fait du manque total d'aide à la gestion de la précision. Les langages de description de matériel comme VHDL et Verilog permettent même de déclarer des nombres ottants et de faire des opérations plus ou moins complexes sur ces ottants. Même si cela fonctionne bien en simulation (en utilisant les ressources ottantes du processeur qui exécute le simulateur assez souvent), aucune description utilisant des ottants n'est directement synthétisable pour le moment. Il faut alors utiliser des blocs IP (pour intellectual property) pour les opérateurs ou des bibliothèques spéciques. Au niveau des algorithmes pour eectuer les calculs de base, le constat est assez similaire. En règle générale, seuls quelques algorithmes simples, voire rudimentaires, sont utilisés dans les synthétiseurs. Une simple addition, ou soustraction, est bien gérée. Par contre, une séquence d'additions ou de soustractions de plusieurs valeurs de tailles diérentes conduit souvent à un opérateur lent et gourmand en surface. Pour la multiplication, le cas des opérandes de même type et de même taille multiple d'une puissance de 2 est correcte (car souvent disponible sous forme de descriptions toutes prêtes pour ces paramètres précis). Pour des opérandes de tailles diérentes et en mélangeant les représentations des opérandes, le résultat est assez souvent bien 16

17 inférieur à ce que l'on sait faire à la main même en utilisant des techniques simples. La solution retenue est basée sur des conversions et des extensions de tailles avant d'utiliser les descriptions toutes prêtes décrites plus haut. L'idée est de laisser faire les outils de simplication logique pour éliminer les portes inutiles. Mais en faisant ainsi, on se prive d'un grand nombre de simplications au niveau arithmétique. Pour les autres opérations, les possibilités sont souvent quasiment nulles pour la synthèse. La plupart des travaux présentés dans ce mémoire proposent des outils : générateurs automatiques ou bibliothèques. Une bibliothèque spécique fournit soit directement des opérateurs particuliers soit un ensemble complet (opérateurs, types de données, propriétés, fonctions de test, etc.) permettant le support d'arithmétiques évoluées. Les générateurs sont des programmes autonomes qui permettent de produire automatiquement des descriptions particulièrement optimisées comme du code VHDL ou C de bas niveau (proche de l'assembleur). La plupart du temps, ces descriptions issues de générateurs ne peuvent pas être obtenues manuellement étant donnée la diculté des problèmes mis en uvre pour déterminer les paramètres algorithmiques évoqués plus haut. Tout comme les générateurs automatiques, le développement de bibliothèques pour améliorer le support en arithmétique des ordinateurs constitue une de nos activités importantes depuis de nombreuses années. Cet eort, long et pas toujours simple à valoriser, est nécessaire pour que les progrès réalisés en arithmétique des ordinateurs puissent se propager réellement en pratique. Nous essayons de limiter le développement de bibliothèques d'opérateurs pour le matériel. Nous préférons développer des générateurs. Il y a plusieurs raisons dans ce choix. La principale raison est probablement la pauvreté des langages de description de matériel et en particulier de leurs sous-ensembles eectivement synthétisables. Décrire un arbre totalement générique (profondeur, type des n uds, etc.) en VHDL reste particulièrement dicile au niveau syntaxique et de la structure de données dans le langage. Comment décrire de façon ecace en VHDL une arithmétique sur les corps nis avec de multiples représentations des nombres possibles suivant la caractéristique du corps? Utiliser des langages de ce type pour manipuler des types de données assez complexes et garantir des propriétés de typage n'est pas vraiment la vocation première de ces langages. En fait, il n'y a pas vraiment de langage reconnu et diusé qui soit orienté synthèse au niveau algorithmique aujourd'hui. An de pouvoir utiliser des outils informatiques puissants comme le typage fort, le polymorphisme ou l'abstraction, nous utilisons des outils informatiques pour générer, plus ou moins automatiquement des descriptions de bas niveau de nos opérateurs. Toute la partie algorithmique et arithmétique est alors décrite dans des outils informatiques et c'est l'exécution de ces outils qui va produire une description optimisée d'une solution. Nous présentons dans la suite de ce mémoire diérents générateurs d'opérateurs. Un problème qui commence à se produire est celui de la cohérence et de la simplicité du développement de systèmes complets quand il faut associer diérents générateurs. Ceci constituera l'un de nos axes de recherche secondaires dans les toutes prochaines années. Pour le logiciel, nous avons participé activement au développement de la bibliothèque FLIP, cf. section 2.7.2, permettant un support ottant sur des processeurs entiers. Nous participons aussi au développement d'une bibliothèque logicielle pour la cryptographie, cf. section

18

19 Chapitre 2 Résumé des travaux Sommaire 2.1. Arithmétique en ligne Architectures recongurables Architecture FPPA Architecture FPOP Méthodes à base de tables Méthode à base de tables et de petits multiplieurs Méthode à base de tables et additions, méthode multipartite Méthode à base de tables et polynômes très particuliers Division pour circuits asynchrones Opérateurs arithmétiques spéciques pour FPGA Variantes de la multiplication Multiplication par des constantes Multiplication tronquée Fonction puissance entière x n Bibliothèques ottantes pour processeurs entiers Bibliothèque ottante pour processeurs CoolRisc Bibliothèque FLIP pour processeur VLIW ST Division par des constantes Approximations polynomiales Calcul à basse consommation d'énergie Opérateurs arithmétiques pour la basse consommation Modélisation et évaluation de la consommation d'opérateurs arithmétiques Consommation d'énergie dans les processeurs graphiques Opérateurs arithmétiques pour la cryptographie Arithmétique dans les corps nis Fonctions de hachage cryptographique Sécurisation d'opérateurs arithmétiques pour la cryptographie Générateur de diviseur divgen Bibliothèque logicielle PACE pour la cryptographie Maîtrise des erreurs d'arrondi dans les outils de CAO Générateurs aléatoires TRNG Arithmétique par estimation Les travaux résumés dans ce mémoire sont regroupés par thèmes dont la liste est donnée dans le sommaire ci-dessus. L'ordre de présentation de ces thèmes est assez proche de l'ordre chronologique de leur réalisation (ou de leur début pour les études les plus longues). Pour chacun de ces thèmes de recherche, nous terminons la description par un petit tableau récapitulatif contenant : le contexte (collaborations, période), les publications, les encadrements (niveau, étudiants, pourcentage d'encadrement, et devenir des étudiants quand il est connu), les réalisations particulières (logiciels, blocs matériels, prototypes), ainsi que les éventuels contrats (académiques ou industriels) liés au thème. 19

20 digit-parallel solution conv a/d op 1 op 2 op 3 op 4 op 5 conv d/a on-line solution conv a/d op 1 op 2 op 3 op 4 op 5 conv d/a operation dependence graph 1 3 a/d 5 d/a 2 4 sample processing time Figure 2.1.: Utilisation typique des arithmétiques parallèle et en ligne en contrôle numérique Arithmétique en ligne L'arithmétique en ligne, cf. [83, chap. 9], est une arithmétique dans laquelle les nombres circulent en série, chire par chire, les poids forts en tête. Cette arithmétique permet d'obtenir des opérateurs de plus petite taille que leurs équivalents parallèles au prix d'un temps de calcul linéaire en la taille des opérandes. Le mode de communication, entre opérateurs, en série avec les poids forts en tête permet d'aner les résultats à chaque nouveau cycle. On peut donc facilement concevoir des algorithmes où des décisions peuvent être prises en fonction de l'ordre de grandeur de certaines valeurs. Cette propriété est très intéressante pour des applications qui utilisent ou produisent des grandeurs physiques comme des signaux issus de capteurs ou des consignes d'actionneurs. Nous avons essentiellement utilisé l'arithmétique en ligne pour réaliser des contrôleurs numériques en automatique. L'arithmétique en ligne permet aussi un pipeline au niveau du chire très ecace lors de calculs successifs (cf. gure 2.1 et gure 1.c du papier présenté en section A.1). Toutes les opérations usuelles peuvent être eectuées en arithmétique en ligne en utilisant un système redondant de représentation des nombres. Ceci n'est pas le cas en série avec les poids faibles en tête où la comparaison et la division ne peuvent être eectuées sans devoir attendre de connaître complètement les opérandes. Il est clair que pour l'opération de comparaison, commencer par les poids forts permet de déterminer le résultat au plus vite. Durant le séjour postdoctoral au CSEM, nous avons travaillé sur deux aspects assez diérents liés à l'arithmétique en ligne : étude et conception d'opérateurs de calcul et de systèmes complets en arithmétique en ligne pour le contrôle numérique ; étude et conception d'une architecture recongurable, de type FPGA dédié, utilisant l'arithmétique en ligne, elle sera décrite en section L'étude et la conception d'opérateurs en arithmétique en ligne pour le contrôle numérique a débuté par une collaboration avec Martin Dimmler alors en thèse à l'institut d'automatique de l'école polytechnique fédérale de Lausanne (EPFL) en Suisse. J'étais l'un des co-encadrants du CSEM qui nançait cette thèse. Nous avons amélioré la bibliothèque d'opérateurs de calcul en arithmétique en ligne commencée durant ma thèse [49] et nous avons implanté un système de régulation pour le contrôle numérique de la position d'un miroir dans une application de communication aérospatiale. Les résultats de ce travail ont été publiés dans [25] et [63]. Les opérateurs de base (addition, soustraction, multiplication, multiplication par une constante, 20

Représentation des Nombres

Représentation des Nombres Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...

Plus en détail

Exemple d implantation de fonction mathématique sur ST240

Exemple d implantation de fonction mathématique sur ST240 Exemple d implantation de fonction mathématique sur ST240 Guillaume Revy Encadrants : Claude-Pierre Jeannerod et Gilles Villard Équipe INRIA Arénaire Laboratoire de l Informatique du Parallélisme - ENS

Plus en détail

2. RAPPEL DES TECHNIQUES DE CALCUL DANS R

2. RAPPEL DES TECHNIQUES DE CALCUL DANS R 2. RAPPEL DES TECHNIQUES DE CALCUL DANS R Dans la mesure où les résultats de ce chapitre devraient normalement être bien connus, il n'est rappelé que les formules les plus intéressantes; les justications

Plus en détail

Calculons avec Albert!

Calculons avec Albert! Calculons avec Albert! Par : Guy Lefebvre, 1257 rue Principale, St-Prime, G8J 1V2, 418-251-2170 Guillaume Rainville, 610 8 e rue, St-Prime, G8J 1P6, 418-251-8290 Résumé : Lefebvre G. et Rainville G., 2001,

Plus en détail

Vers l'ordinateur quantique

Vers l'ordinateur quantique Cours A&G Vers l'ordinateur quantique Données innies On a vu dans les chapîtres précédents qu'un automate permet de représenter de manière nie (et même compacte) une innité de données. En eet, un automate

Plus en détail

Le chiffre est le signe, le nombre est la valeur.

Le chiffre est le signe, le nombre est la valeur. Extrait de cours de maths de 6e Chapitre 1 : Les nombres et les opérations I) Chiffre et nombre 1.1 La numération décimale En mathématique, un chiffre est un signe utilisé pour l'écriture des nombres.

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Logiciel de Base. I. Représentation des nombres

Logiciel de Base. I. Représentation des nombres Logiciel de Base (A1-06/07) Léon Mugwaneza ESIL/Dépt. Informatique (bureau A118) mugwaneza@univmed.fr I. Représentation des nombres Codage et représentation de l'information Information externe formats

Plus en détail

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,

Plus en détail

Introduction à l étude des Corps Finis

Introduction à l étude des Corps Finis Introduction à l étude des Corps Finis Robert Rolland (Résumé) 1 Introduction La structure de corps fini intervient dans divers domaines des mathématiques, en particulier dans la théorie de Galois sur

Plus en détail

V- Manipulations de nombres en binaire

V- Manipulations de nombres en binaire 1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,

Plus en détail

Chapitre 1 : Introduction aux bases de données

Chapitre 1 : Introduction aux bases de données Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données

Plus en détail

Cryptographie et fonctions à sens unique

Cryptographie et fonctions à sens unique Cryptographie et fonctions à sens unique Pierre Rouchon Centre Automatique et Systèmes Mines ParisTech pierre.rouchon@mines-paristech.fr Octobre 2012 P.Rouchon (Mines ParisTech) Cryptographie et fonctions

Plus en détail

QUESTION 1 {2 points}

QUESTION 1 {2 points} ELE4301 Systèmes logiques II Page 1 de 8 QUESTION 1 {2 points} En se servant de paramètres électriques donnés dans le Tableau 1 ci-dessous, on désire déterminer la fréquence d opération du compteur présenté

Plus en détail

Calculateur quantique: factorisation des entiers

Calculateur quantique: factorisation des entiers Calculateur quantique: factorisation des entiers Plan Introduction Difficulté de la factorisation des entiers Cryptographie et la factorisation Exemple RSA L'informatique quantique L'algorithme quantique

Plus en détail

Ordonnancement. N: nains de jardin. X: peinture extérieure. E: électricité T: toit. M: murs. F: fondations CHAPTER 1

Ordonnancement. N: nains de jardin. X: peinture extérieure. E: électricité T: toit. M: murs. F: fondations CHAPTER 1 CHAPTER 1 Ordonnancement 1.1. Étude de cas Ordonnancement de tâches avec contraintes de précédences 1.1.1. Exemple : construction d'une maison. Exercice. On veut construire une maison, ce qui consiste

Plus en détail

Calcul de développements de Puiseux et application au calcul du groupe de monodromie d'une courbe algébrique plane

Calcul de développements de Puiseux et application au calcul du groupe de monodromie d'une courbe algébrique plane Calcul de développements de Puiseux et application au calcul du groupe de monodromie d'une courbe algébrique plane Poteaux Adrien XLIM-DMI, UMR-CNRS 6172 Université de Limoges Soutenance de thèse 15 octobre

Plus en détail

Problèmes arithmétiques issus de la cryptographie reposant sur les réseaux

Problèmes arithmétiques issus de la cryptographie reposant sur les réseaux Problèmes arithmétiques issus de la cryptographie reposant sur les réseaux Damien Stehlé LIP CNRS/ENSL/INRIA/UCBL/U. Lyon Perpignan, Février 2011 Damien Stehlé Problèmes arithmétiques issus de la cryptographie

Plus en détail

ÉPREUVE COMMUNE DE TIPE 2008 - Partie D

ÉPREUVE COMMUNE DE TIPE 2008 - Partie D ÉPREUVE COMMUNE DE TIPE 2008 - Partie D TITRE : Les Fonctions de Hachage Temps de préparation :.. 2 h 15 minutes Temps de présentation devant le jury :.10 minutes Entretien avec le jury :..10 minutes GUIDE

Plus en détail

Conception de circuits numériques et architecture des ordinateurs

Conception de circuits numériques et architecture des ordinateurs Conception de circuits numériques et architecture des ordinateurs Frédéric Pétrot Année universitaire 2014-2015 Structure du cours C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 Codage des nombres en base 2, logique

Plus en détail

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS = 7 10 1 + 5 10 2 + 2 10 3

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS = 7 10 1 + 5 10 2 + 2 10 3 8 Systèmes de numération INTRODUCTION SYSTÈMES DE NUMÉRATION POSITIONNELS Dans un système positionnel, le nombre de symboles est fixe On représente par un symbole chaque chiffre inférieur à la base, incluant

Plus en détail

Introduction à l'informatique. Vincent Boyer et Jean Méhat

Introduction à l'informatique. Vincent Boyer et Jean Méhat Introduction à l'informatique Vincent Boyer et Jean Méhat 19 février 2010 Copyright (C) 2009 Jean Méhat Permission is granted to copy, distribute and/or modify this document under the terms of the GNU

Plus en détail

Informatique Générale

Informatique Générale Informatique Générale Guillaume Hutzler Laboratoire IBISC (Informatique Biologie Intégrative et Systèmes Complexes) guillaume.hutzler@ibisc.univ-evry.fr Cours Dokeos 625 http://www.ens.univ-evry.fr/modx/dokeos.html

Plus en détail

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...

Plus en détail

OPÉRATIONS SUR LES FRACTIONS

OPÉRATIONS SUR LES FRACTIONS OPÉRATIONS SUR LES FRACTIONS Sommaire 1. Composantes d'une fraction... 1. Fractions équivalentes... 1. Simplification d'une fraction... 4. Règle d'addition et soustraction de fractions... 5. Règle de multiplication

Plus en détail

Chapitre 1. Une porte doit être ouverte et fermée. 1.1 Les enjeux de l'informatique quantique

Chapitre 1. Une porte doit être ouverte et fermée. 1.1 Les enjeux de l'informatique quantique Chapitre Une porte doit être ouverte et fermée Crois et tu comprendras ; la foi précède, l'intelligence suit. Saint Augustin. Les enjeux de l'informatique quantique La puissance de calcul des ordinateurs

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

Conversion d un entier. Méthode par soustraction

Conversion d un entier. Méthode par soustraction Conversion entre bases Pour passer d un nombre en base b à un nombre en base 10, on utilise l écriture polynomiale décrite précédemment. Pour passer d un nombre en base 10 à un nombre en base b, on peut

Plus en détail

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Chapitre V : La gestion de la mémoire Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Introduction Plusieurs dizaines de processus doivent se partager

Plus en détail

La conversion de données : Convertisseur Analogique Numérique (CAN) Convertisseur Numérique Analogique (CNA)

La conversion de données : Convertisseur Analogique Numérique (CAN) Convertisseur Numérique Analogique (CNA) La conversion de données : Convertisseur Analogique Numérique (CAN) Convertisseur Numérique Analogique (CNA) I. L'intérêt de la conversion de données, problèmes et définitions associés. I.1. Définitions:

Plus en détail

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

VIII- Circuits séquentiels. Mémoires

VIII- Circuits séquentiels. Mémoires 1 VIII- Circuits séquentiels. Mémoires Maintenant le temps va intervenir. Nous avions déjà indiqué que la traversée d une porte ne se faisait pas instantanément et qu il fallait en tenir compte, notamment

Plus en détail

Codage d information. Codage d information : -Définition-

Codage d information. Codage d information : -Définition- Introduction Plan Systèmes de numération et Représentation des nombres Systèmes de numération Système de numération décimale Représentation dans une base b Représentation binaire, Octale et Hexadécimale

Plus en détail

Problème : Calcul d'échéanciers de prêt bancaire (15 pt)

Problème : Calcul d'échéanciers de prêt bancaire (15 pt) Problème : Calcul d'échéanciers de prêt bancaire (15 pt) 1 Principe d'un prêt bancaire et dénitions Lorsque vous empruntez de l'argent dans une banque, cet argent (appelé capital) vous est loué. Chaque

Plus en détail

Druais Cédric École Polytechnique de Montréal. Résumé

Druais Cédric École Polytechnique de Montréal. Résumé Étude de load balancing par un réseau de neurones de types HME (Hierarchical Mixture of s). Druais Cédric École Polytechnique de Montréal Résumé Cet article tente d introduire le principe de load balancing

Plus en détail

La Certification de la Sécurité des Automatismes de METEOR

La Certification de la Sécurité des Automatismes de METEOR 1 La Certification de la Sécurité des Automatismes de METEOR 2 un mot sur METEOR 3 Le projet METEOR, c'est... un système automatique complexe fortement intégré matériel roulant, équipements électriques,

Plus en détail

Chapitre 10 Arithmétique réelle

Chapitre 10 Arithmétique réelle Chapitre 10 Arithmétique réelle Jean Privat Université du Québec à Montréal INF2170 Organisation des ordinateurs et assembleur Automne 2013 Jean Privat (UQAM) 10 Arithmétique réelle INF2170 Automne 2013

Plus en détail

chapitre 4 Nombres de Catalan

chapitre 4 Nombres de Catalan chapitre 4 Nombres de Catalan I Dénitions Dénition 1 La suite de Catalan (C n ) n est la suite dénie par C 0 = 1 et, pour tout n N, C n+1 = C k C n k. Exemple 2 On trouve rapidement C 0 = 1, C 1 = 1, C

Plus en détail

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice

Plus en détail

Chapitre 1 I:\ Soyez courageux!

Chapitre 1 I:\ Soyez courageux! Chapitre 1 I:\ Soyez courageux! Pour ne rien vous cacher, le langage d'assembleur (souvent désigné sous le terme "Assembleur", bien que ce soit un abus de langage, puisque "Assembleur" désigne le logiciel

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

avec des nombres entiers

avec des nombres entiers Calculer avec des nombres entiers Effectuez les calculs suivants.. + 9 + 9. Calculez. 9 9 Calculez le quotient et le rest. : : : : 0 :. : : 9 : : 9 0 : 0. 9 9 0 9. Calculez. 9 0 9. : : 0 : 9 : :. : : 0

Plus en détail

Arithmétique réelle. Introduction à l arithmétique flottante La précision des calculs: analyse et améliorations. Valérie Ménissier-Morain

Arithmétique réelle. Introduction à l arithmétique flottante La précision des calculs: analyse et améliorations. Valérie Ménissier-Morain Arithmétique réelle Introduction à l arithmétique flottante La précision des calculs: analyse et améliorations Valérie Ménissier-Morain Université Pierre et Marie Curie - Paris 6 LIP6 - Département CALSCI

Plus en détail

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/2011. 1.1 Présentation. 1.2 Ressources

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/2011. 1.1 Présentation. 1.2 Ressources Master Maths Finances 2010/2011 Data Mining janvier 2011 RapidMiner 1 Introduction 1.1 Présentation RapidMiner est un logiciel open source et gratuit dédié au data mining. Il contient de nombreux outils

Plus en détail

Cryptographie. Master de cryptographie Architectures PKI. 23 mars 2015. Université Rennes 1

Cryptographie. Master de cryptographie Architectures PKI. 23 mars 2015. Université Rennes 1 Cryptographie Master de cryptographie Architectures PKI 23 mars 2015 Université Rennes 1 Master Crypto (2014-2015) Cryptographie 23 mars 2015 1 / 17 Cadre Principe de Kercho : "La sécurité d'un système

Plus en détail

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique DOMAINE P3.C3.D1. Pratiquer une démarche scientifique et technologique, résoudre des

Plus en détail

Machines virtuelles Cours 1 : Introduction

Machines virtuelles Cours 1 : Introduction Machines virtuelles Cours 1 : Introduction Pierre Letouzey 1 pierre.letouzey@inria.fr PPS - Université Denis Diderot Paris 7 janvier 2012 1. Merci à Y. Régis-Gianas pour les transparents Qu est-ce qu une

Plus en détail

De l arithmétique d intervalles à la certification de programmes

De l arithmétique d intervalles à la certification de programmes N d ordre : 388 N attribué par la bibliothèque : 06ENSL0388 ÉCOLE NORMALE SUPÉRIEURE DE LYON Laboratoire de l Informatique du Parallélisme THÈSE présentée et soutenue publiquement le 21 novembre 2006 par

Plus en détail

Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes.

Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes. Introduction L'objectif de mon TIPE est la reconnaissance de sons ou de notes de musique à l'aide d'un réseau de neurones. Ce réseau doit être capable d'apprendre à distinguer les exemples présentés puis

Plus en détail

Équations non linéaires

Équations non linéaires CHAPTER 1 Équations non linéaires On considère une partie U R d et une fonction f : U R d. On cherche à résoudre { x U 1..1) f x) = R d On distinguera les cas d = 1 et d > 1. 1.1. Dichotomie d = 1) 1.1.1.

Plus en détail

ÉCOLE POLYTECHNIQUE DE MONTRÉAL. Département de Génie Électrique. La technologie de TEXAS INSTRUMENTS DSP pour le cours Analyse des Signaux ELE2700

ÉCOLE POLYTECHNIQUE DE MONTRÉAL. Département de Génie Électrique. La technologie de TEXAS INSTRUMENTS DSP pour le cours Analyse des Signaux ELE2700 ÉCOLE POLYTECHNIQUE DE MONTRÉAL Département de Génie Électrique La technologie de TEXAS INSTRUMENTS DSP pour le cours Analyse des Signaux ELE2700 M. Corinthios et Zaher Dannawi 29 août 2007 2 Tables des

Plus en détail

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

Calculer avec Sage. Revision : 417 du 1 er juillet 2010 Calculer avec Sage Alexandre Casamayou Guillaume Connan Thierry Dumont Laurent Fousse François Maltey Matthias Meulien Marc Mezzarobba Clément Pernet Nicolas Thiéry Paul Zimmermann Revision : 417 du 1

Plus en détail

Ebauche Rapport finale

Ebauche Rapport finale Ebauche Rapport finale Sommaire : 1 - Introduction au C.D.N. 2 - Définition de la problématique 3 - Etat de l'art : Présentatio de 3 Topologies streaming p2p 1) INTRODUCTION au C.D.N. La croissance rapide

Plus en détail

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES Leçon 11 PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES Dans cette leçon, nous retrouvons le problème d ordonnancement déjà vu mais en ajoutant la prise en compte de contraintes portant sur les ressources.

Plus en détail

Définition : On obtient les nombres entiers en ajoutant ou retranchant des unités à zéro.

Définition : On obtient les nombres entiers en ajoutant ou retranchant des unités à zéro. Chapitre : Les nombres rationnels Programme officiel BO du 8/08/08 Connaissances : Diviseurs communs à deux entiers, PGCD. Fractions irréductibles. Opérations sur les nombres relatifs en écriture fractionnaire.

Plus en détail

Sécurité de l'information

Sécurité de l'information Sécurité de l'information Sylvain Duquesne Université Rennes 1, laboratoire de Mathématiques 24 novembre 2010 Les Rendez-Vous Mathématiques de l'irem S. Duquesne (Université Rennes 1) Sécurité de l'information

Plus en détail

Les clusters Linux. 4 août 2004 Benoît des Ligneris, Ph. D. benoit.des.ligneris@revolutionlinux.com. white-paper-cluster_fr.sxw, Version 74 Page 1

Les clusters Linux. 4 août 2004 Benoît des Ligneris, Ph. D. benoit.des.ligneris@revolutionlinux.com. white-paper-cluster_fr.sxw, Version 74 Page 1 Les clusters Linux 4 août 2004 Benoît des Ligneris, Ph. D. benoit.des.ligneris@revolutionlinux.com white-paper-cluster_fr.sxw, Version 74 Page 1 Table des matières Introduction....2 Haute performance (High

Plus en détail

IFT2880 Organisation des ordinateurs et systèmes

IFT2880 Organisation des ordinateurs et systèmes Représentation des nombres flottants Notation exponentielle Représentations équivalentes dans la base 10 de 1,234 1 2 3, 4 0 0. 0 x 1 0-2 1 2, 3 4 0. 0 x 1 0-1 1, 2 3 4. 0 x 1 0 1 2 3. 4 x 1 0 1 2. 3 4

Plus en détail

Observation des modalités et performances d'accès à Internet

Observation des modalités et performances d'accès à Internet Observation des modalités et performances d'accès à Internet Avant-propos La base de cette étude est constituée par les informations collectées par l'outil Cloud Observer d'iplabel (chargement des différents

Plus en détail

Année Universitaire 2009/2010 Session 2 de Printemps

Année Universitaire 2009/2010 Session 2 de Printemps Année Universitaire 2009/2010 Session 2 de Printemps DISVE Licence PARCOURS : CSB4 & CSB6 UE : INF 159, Bases de données Épreuve : INF 159 EX Date : Mardi 22 juin 2010 Heure : 8 heures 30 Durée : 1 heure

Plus en détail

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION 145 NOTION DE PROGRAMMATION 1/ Complétons notre microprocesseur Nous avons, dans les leçons précédentes décrit un microprocesseur théorique, cependant il s inspire du 6800, premier microprocesseur conçu

Plus en détail

Nombre de marches Nombre de facons de les monter 3 3 11 144 4 5 12 233 5 8 13 377 6 13 14 610 7 21 15 987 8 34 16 1597 9 55 17 2584 10 89

Nombre de marches Nombre de facons de les monter 3 3 11 144 4 5 12 233 5 8 13 377 6 13 14 610 7 21 15 987 8 34 16 1597 9 55 17 2584 10 89 Soit un escalier à n marches. On note u_n le nombre de façons de monter ces n marches. Par exemple d'après l'énoncé, u_3=3. Pour monter n marches, il faut d'abord monter la première. Soit on la monte seule,

Plus en détail

modélisation solide et dessin technique

modélisation solide et dessin technique CHAPITRE 1 modélisation solide et dessin technique Les sciences graphiques regroupent un ensemble de techniques graphiques utilisées quotidiennement par les ingénieurs pour exprimer des idées, concevoir

Plus en détail

3 Approximation de solutions d équations

3 Approximation de solutions d équations 3 Approximation de solutions d équations Une équation scalaire a la forme générale f(x) =0où f est une fonction de IR dans IR. Un système de n équations à n inconnues peut aussi se mettre sous une telle

Plus en détail

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique NOM DE L'UE : Algorithmique et programmation C++ LICENCE INFORMATIQUE Non Alt Alt S1 S2 S3 S4 S5 S6 Parcours : IL (Ingénierie Logicielle) SRI (Systèmes et Réseaux Informatiques) MASTER INFORMATIQUE Non

Plus en détail

I. Polynômes de Tchebychev

I. Polynômes de Tchebychev Première épreuve CCP filière MP I. Polynômes de Tchebychev ( ) 1.a) Tout réel θ vérifie cos(nθ) = Re ((cos θ + i sin θ) n ) = Re Cn k (cos θ) n k i k (sin θ) k Or i k est réel quand k est pair et imaginaire

Plus en détail

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

Plus en détail

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation Complexité Objectifs des calculs de complexité : - pouvoir prévoir le temps d'exécution d'un algorithme - pouvoir comparer deux algorithmes réalisant le même traitement Exemples : - si on lance le calcul

Plus en détail

COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE

COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE Le cours de la première année concerne les sujets de 9ème et 10ème années scolaires. Il y a bien sûr des différences puisque nous commençons par exemple par

Plus en détail

LE PROBLEME DU PLUS COURT CHEMIN

LE PROBLEME DU PLUS COURT CHEMIN LE PROBLEME DU PLUS COURT CHEMIN Dans cette leçon nous définissons le modèle de plus court chemin, présentons des exemples d'application et proposons un algorithme de résolution dans le cas où les longueurs

Plus en détail

Quelques tests de primalité

Quelques tests de primalité Quelques tests de primalité J.-M. Couveignes (merci à T. Ezome et R. Lercier) Institut de Mathématiques de Bordeaux & INRIA Bordeaux Sud-Ouest Jean-Marc.Couveignes@u-bordeaux.fr École de printemps C2 Mars

Plus en détail

Petit lexique de calcul à l usage des élèves de sixième et de cinquième par M. PARCABE, professeur au collège Alain FOURNIER de BORDEAUX, mars 2007

Petit lexique de calcul à l usage des élèves de sixième et de cinquième par M. PARCABE, professeur au collège Alain FOURNIER de BORDEAUX, mars 2007 Petit lexique de calcul à l usage des élèves de sixième et de cinquième par M. PARCABE, professeur au collège Alain FOURNIER de BORDEAUX, mars 2007 page 1 / 10 abscisse addition additionner ajouter appliquer

Plus en détail

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

IV- Comment fonctionne un ordinateur?

IV- Comment fonctionne un ordinateur? 1 IV- Comment fonctionne un ordinateur? L ordinateur est une alliance du hardware (le matériel) et du software (les logiciels). Jusqu à présent, nous avons surtout vu l aspect «matériel», avec les interactions

Plus en détail

Une version javascript sera disponible directement dans le cours prochainement.

Une version javascript sera disponible directement dans le cours prochainement. Author : Cédric Vanconingsloo Ce cours est principalement axé sur la compréhension du fonctionnement d'un ordinateur et l'étude du seul langage qu'il connaisse, le binaire. De ce fait, le cours est relativement

Plus en détail

Fonctions de plusieurs variables

Fonctions de plusieurs variables Module : Analyse 03 Chapitre 00 : Fonctions de plusieurs variables Généralités et Rappels des notions topologiques dans : Qu est- ce que?: Mathématiquement, n étant un entier non nul, on définit comme

Plus en détail

Licence Sciences, Technologies, Santé Mention Informatique Codage de l'information

Licence Sciences, Technologies, Santé Mention Informatique Codage de l'information 1 Licence Sciences, Technologies, Santé Mention Informatique Codage de l'information année universitaire 2013-2014 Licence Creative Commons cbea 2 Introduction Objectifs du cours Le cours de Codage de

Plus en détail

DÉVELOPPEMENT INFONUAGIQUE - meilleures pratiques

DÉVELOPPEMENT INFONUAGIQUE - meilleures pratiques livre blanc DÉVELOPPEMENT INFONUAGIQUE MEILLEURES PRATIQUES ET APPLICATIONS DE SOUTIEN DÉVELOPPEMENT INFONUAGIQUE - MEILLEURES PRATIQUES 1 Les solutions infonuagiques sont de plus en plus présentes sur

Plus en détail

Les opérations binaires

Les opérations binaires Les opérations binaires Compétences associées A2 : Analyser et interpréter une information numérique Objectifs Etre capable: - De coder les nombres entiers en code complément à 2. - De résoudre les opérations

Plus en détail

Cours 3 : L'ordinateur

Cours 3 : L'ordinateur Cours 3 : L'ordinateur Abdelkrim Zehioua 2éme année Licence Gestion Faculté des sciences Économiques et sciences de Gestion Université A, Mehri - Constantine 2 Plan du cours 1.Définitions de l'ordinateur

Plus en détail

Cryptologie. Algorithmes à clé publique. Jean-Marc Robert. Génie logiciel et des TI

Cryptologie. Algorithmes à clé publique. Jean-Marc Robert. Génie logiciel et des TI Cryptologie Algorithmes à clé publique Jean-Marc Robert Génie logiciel et des TI Plan de la présentation Introduction Cryptographie à clé publique Les principes essentiels La signature électronique Infrastructures

Plus en détail

LA NOTATION STATISTIQUE DES EMPRUNTEURS OU «SCORING»

LA NOTATION STATISTIQUE DES EMPRUNTEURS OU «SCORING» LA NOTATION STATISTIQUE DES EMPRUNTEURS OU «SCORING» Gilbert Saporta Professeur de Statistique Appliquée Conservatoire National des Arts et Métiers Dans leur quasi totalité, les banques et organismes financiers

Plus en détail

Traitement numérique de l'image. Raphaël Isdant - 2009

Traitement numérique de l'image. Raphaël Isdant - 2009 Traitement numérique de l'image 1/ L'IMAGE NUMÉRIQUE : COMPOSITION ET CARACTÉRISTIQUES 1.1 - Le pixel: Une image numérique est constituée d'un ensemble de points appelés pixels (abréviation de PICture

Plus en détail

La correction des erreurs d'enregistrement et de traitement comptables

La correction des erreurs d'enregistrement et de traitement comptables La correction des erreurs d'enregistrement et de traitement comptables Après l'étude des différents types d'erreurs en comptabilité (Section 1) nous étudierons la cause des erreurs (Section 2) et les techniques

Plus en détail

Architecture de l ordinateur

Architecture de l ordinateur Architecture de l ordinateur Emmanuel Lazard Université Paris-Dauphine mars 2011 Computers are my forte! BRAZIL (Terry Gilliam, 1985) Ce document a initialement été publié sous forme de livre : Emmanuel

Plus en détail

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv> Langage HTML (2 partie) «Je n'ai fait que prendre le principe d - hypertexte et le relier au principe du TCP et du DNS et alors boum! ce fut le World Wide Web!» Tim Berners-Lee

Plus en détail

La voix sur IP n'est pas un gadget, et présente de réels bénéfices pour l'entreprise.

La voix sur IP n'est pas un gadget, et présente de réels bénéfices pour l'entreprise. VOIX SUR IP - VoIP Comprendre la voix sur IP et ses enjeux La voix sur IP n'est pas un gadget, et présente de réels bénéfices pour l'entreprise. Introduction La voix sur IP (Voice over IP) est une technologie

Plus en détail

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN Table des matières. Introduction....3 Mesures et incertitudes en sciences physiques

Plus en détail

MASTER (LMD) MODELISATION, OPTIMISATION, COMBINATOIRE ET ALGORITHME

MASTER (LMD) MODELISATION, OPTIMISATION, COMBINATOIRE ET ALGORITHME MASTER (LMD) MODELISATION, OPTIMISATION, COMBINATOIRE ET ALGORITHME RÉSUMÉ DE LA FORMATION Type de diplôme : Master (LMD) Domaine ministériel : Sciences, Technologies, Santé Mention : INFORMATIQUE Spécialité

Plus en détail

REALISATION D UNE CALCULATRICE GRACE AU LOGICIEL CROCODILE CLIPS 3.

REALISATION D UNE CALCULATRICE GRACE AU LOGICIEL CROCODILE CLIPS 3. 1 sur 6 REALISATION D UNE CALCULATRICE GRACE AU LOGICIEL CROCODILE CLIPS 3. OBJECTIF - PUBLIC - LOGICIEL - MATERIEL - METHODE - BIBLIOGRAPHIE - AVANTAGES - DIFFICULTES - AUTEUR DU DOCUMENT - LE DOCUMENT

Plus en détail

PC Check & Tuning 2010 Optimisez et accélérez rapidement et simplement les performances de votre PC!

PC Check & Tuning 2010 Optimisez et accélérez rapidement et simplement les performances de votre PC! PC Check & Tuning 2010 Optimisez et accélérez rapidement et simplement les performances de votre PC! MAGIX PC Check & Tuning 2010 est la solution logicielle complète pour l'analyse, la maintenance et l'accélération

Plus en détail

LibreOffice Calc : introduction aux tableaux croisés dynamiques

LibreOffice Calc : introduction aux tableaux croisés dynamiques Fiche logiciel LibreOffice Calc 3.x Tableur Niveau LibreOffice Calc : introduction aux tableaux croisés dynamiques Un tableau croisé dynamique (appelé Pilote de données dans LibreOffice) est un tableau

Plus en détail

Structures algébriques

Structures algébriques Structures algébriques 1. Lois de composition s Soit E un ensemble. Une loi de composition interne sur E est une application de E E dans E. Soient E et F deux ensembles. Une loi de composition externe

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Glossaire des nombres

Glossaire des nombres Glossaire des nombres Numérisation et sens du nombre (4-6) Imprimeur de la Reine pour l'ontario, 008 Nombre : Objet mathématique qui représente une valeur numérique. Le chiffre est le symbole utilisé pour

Plus en détail

NOTATIONS PRÉLIMINAIRES

NOTATIONS PRÉLIMINAIRES Pour le Jeudi 14 Octobre 2010 NOTATIONS Soit V un espace vectoriel réel ; l'espace vectoriel des endomorphismes de l'espace vectoriel V est désigné par L(V ). Soit f un endomorphisme de l'espace vectoriel

Plus en détail

Date : 18.11.2013 Tangram en carré page

Date : 18.11.2013 Tangram en carré page Date : 18.11.2013 Tangram en carré page Titre : Tangram en carré Numéro de la dernière page : 14 Degrés : 1 e 4 e du Collège Durée : 90 minutes Résumé : Le jeu de Tangram (appelé en chinois les sept planches

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

ELP 304 : Électronique Numérique. Cours 1 Introduction

ELP 304 : Électronique Numérique. Cours 1 Introduction ELP 304 : Électronique Numérique Cours 1 Introduction Catherine Douillard Dépt Électronique Les systèmes numériques : généralités (I) En électronique numérique, le codage des informations utilise deux

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail