Vous êtes sur la page 1sur 113

Dpartement dInformatique Institut Universitaire de Technologie Universit de la Mditerrane

Elments dArchitecture des Ordinateurs

Vincent RISCH

version 10.05, chapitre 6 incomplet

Conditions dutilisation de ce document


Ce document est sous licence Creative Commons 2.0 France 1 : PaternitPas dUtilisation CommercialePas de Modication.

Cela signie que vous tes libres : de reproduire, distribuer et communiquer cette cration au public Selon les conditions suivantes : Paternit. Vous devez citer le nom de lauteur original de la manire indique par lauteur de loeuvre ou le titulaire des droits qui vous confre cette autorisation (mais pas dune manire qui suggrerait quils vous soutiennent ou approuvent votre utilisation de loeuvre). Pas dUtilisation Commerciale. Vous navez pas le droit dutiliser cette cration des ns commerciales. Pas de Modication. Vous navez pas le droit de modier, de transformer ou dadapter cette cration.

1. http://creativecommons.org/licenses/by-nc-nd/2.0/fr/

Table des matires


Introduction 1 Information et calcul 1.1 Traitement de linformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 La machine de Turing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Numration et codage 2.1 Le codage des caractres . . . . . . . . . . . . . . 2.2 Le codage des entiers naturels . . . . . . . . . . . 2.3 Conversion dun entier naturel . . . . . . . . . . . 2.4 0prations binaires . . . . . . . . . . . . . . . . . 2.5 Reprsentation des nombres signs . . . . . . . . 2.6 Reprsentation des nombres fractionnaires . . . . 2.7 Autres codages : codes de Gray, codes dtecteurs, 3 Introduction lalgbre de Boole 3.1 La somme logique . . . . . . . . . . . . . . . 3.2 Le produit logique . . . . . . . . . . . . . . 3.3 Linversion logique . . . . . . . . . . . . . . 3.4 Proprits drives . . . . . . . . . . . . . . 3.5 La somme logique exclusive . . . . . . . . . 3.6 Proprits liant somme, inversion, et somme 3.7 Expressions boolennes . . . . . . . . . . . . 3.8 Fonctions boolennes et formes canoniques . 3.9 Image dune fonction boolenne . . . . . . . 3.10 Simplication des fonctions boolennes . . . 3.11 Ralisation dun circuit logique . . . . . . . 4 Quelques circuits combinatoires 4.1 Dcodeur . . . . . . . . . . . . . 4.2 Multiplexeur . . . . . . . . . . . 4.3 Demultiplexeur . . . . . . . . . . 4.4 Rseaux logiques programmables 4.5 Additionneur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . codes correcteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 6 6 8 12 12 12 14 17 19 24 36 42 42 43 43 43 44 45 45 45 48 48 50 52 52 53 55 56 56

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . exclusive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 Circuits squentiels, registres, compteurs 5.1 Circuits asynchrones . . . . . . . . . . . . . . . . 5.2 Circuits synchrones . . . . . . . . . . . . . . . . . 5.3 Registres, transfert dinformation, bus de donnes 5.4 Compteurs et squenceurs . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

59 60 71 75 77 83 83 84 84 85 85 86 86 87 87 88 89 91

6 Architecture du processeur 6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Jeux dinstructions et modle dexcution . . . . . . . . . 6.3 Equivalence machine accumulateur machine de Turing 6.4 Modes dadressage, alignement . . . . . . . . . . . . . . . 6.5 Squencement des micro-oprations . . . . . . . . . . . . . 6.6 Contrle cabl . . . . . . . . . . . . . . . . . . . . . . . . . 6.7 Contrle microprogramm . . . . . . . . . . . . . . . . . .

7 Evaluation des performances 7.1 Equation de performance de lUnit Centrale . . . . . . . . . . . . . . . . . . . . 7.2 Units de mesure de la performance : MIPS et MFLOPS . . . . . . . . . . . . . . 7.3 Mesure de lacclration : la loi dAmdahl . . . . . . . . . . . . . . . . . . . . . . A Le code ASCII B Bases de numration sur les entiers B.1 Division euclidienne dans N . . . . . . . . . . . B.2 Dveloppement polynmial dun entier naturel . B.3 Division euclidienne dans Z . . . . . . . . . . . B.4 Congruences modulo n . . . . . . . . . . . . . . C La norme IEEE 754 C.1 Reprsentation IEEE 754 . . . . . . . C.2 Oprations ottantes . . . . . . . . . . C.3 Drapeaux et gestionnaires dexceptions C.4 Prcision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

93 93 94 95 96

99 . 99 . 100 . 102 . 103 104

D Relations fondamentales de lalgbre de Boole E Aide-mmoire MIPS E.1 Registres . . . . . . . . E.2 Formats dinstruction . E.3 Gestion de la mmoire E.4 Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

105 105 105 106 107

ii

Introduction
Sil fallait tenter de rsumer brivement par ses usages ce quest un ordinateur, le plus simple serait sans doute de le dsigner comme un bidule-automatis--tout-faire-ou-presque . Cette universalit avre confre aux ordinateurs une part dcisive dans le fonctionnement de bien des systmes, de la programmation dun grille-pain la simulation de mondes virtuels, en passant par le pesage du linge dans une machine laver, la correction automatique de trajectoire dune automobile, lestimation prvisionnelle dun vote, le calcul dun modle mtorologique, ou le squenage du gnome, pour ne citer que ces exemples... Pour autant, ce phnomne dont lacclration a t remarquable au cours des cinquante dernires annes, rsulte dune volution historique de longue haleine conjugant la fois dcouvertes scientiques, contraintes conomiques et dveloppements technologiques, la croise de direntes branches des mathmatiques et de la physique. De ce point de vue, il est intressant denvisager lhistoire de linformatique sous langle dune sorte de thorie de lvolution des mcanismes de calcul : le dveloppement de nouvelles ides scientiques conjugues aux volutions conomiques marquant une poque donne forment un environnement favorisant ou contraignant lmergence de nouvelles formes de machines. Puisquil est question d automatisme , il est naturel de faire remonter a posteriori lorigine de linformatique aux premiers dispositifs permettant deectuer une tche sans intervention humaine. A cet gard, de nombreux mcanismes sont potentiellement en mesure de revendiquer le statut dordinausore... Et cest sans aucun doute dabord du ct du dcompte, du dnombrement, et de la mesure que se font sentir la ncessit et la possibilit dune mcanisation. La capacit de compter, et ds lre palolitique, la ncessit de dnombrer (par exemple le nombre de ttes dun troupeau), donne naissance aux premires techniques de numration : dabord le systme dcimal issu, comme le signale avec humour [Tisserant03] de la premire calculatrice de poche connue (la main), le systme binaire connu en Chine trois mille ans avant J.C. (sous lexpression du Yin et du Yang) et dont on trouve trace sur les gures magiques de lempereur Fou-Hi, puis la numration positionnelle accompagne du zro, dveloppe en Inde environ trois cents ans avant J.C. et diuse grce la traduction vers 820 aprs J.C. des ouvrages dAl-Khuwarizmi, mathmaticien de Bagdad. Paralllement aux progrs de la numration, la mise au point de bouliers (en Asie) et abaques (bassin mditerranen) facilitent et acclrent les calculs. La mesure prcise du temps est par ailleurs lun des premiers problmes qui se soit prt une tentative dautomatisation. Lutilisation du cadran solaire, en quelque sorte norme horloge naturelle, nira par cder la place la conception dhorloges articielles dont un exemple remarquable est la clepsydre, invente par Ctsibios au troisime sicle avant J.C. : de leau scoule dans un rservoir contenant un otteur qui pointe sur des graduations qui correspondent aux heures de la journe et de la nuit ; un pointeau ottant, intercal entre le cylindre et la canalisation darrive deau, assure la rgularit du systme de telle sorte 1

que dune part chaque fraction mesure soit gale la suivante, et que dautre part, deux clepsydres places dans des conditions initiales similaires pointent tout moment sur la mme graduation. Des horloges mcaniques sont ralises ds le dixime sicle, et au douzime sicle apparaissent en Hollande des carillons dont la mlodie peut tre choisie, choix prgurant la notion de programme. Au seizime sicle, les jacquemarts sont en mesure de marquer les heures. Au dix-septime sicle, Galile (15641642) invente lhorloge pendule qui amliore la rgularit du mouvement, tandis que Huygens (16291695) conoit un peu plus tard lhorloge balancier. Les progrs techniques de lhorlogerie permettent denvisager son utilisation dans le cadre dautres champs dapplication : le dix-huitime sicle voit lavnement des automates mcaniques, dont un exemple clbre est le joueur de te de Vaucanson, capable dexcuter jusqu douze airs dirents. Conu partir dun dispositif pneumatique et mcanique, il comporte un cylindre cames qui permet le mouvement des doigts suivant un ordre dtermin et qui conditionne les positions des lvres pour obtenir une variation dans le dbit produit par la souerie. Le programme est inscrit sur le cylindre qui contrle les mouvements, le changement de cylindre permettant lexcution dairs dirents. Le dveloppement de lindustrialisation au dbut du dix-neuvime sicle, et la ncessit dune automatisation des procds de tissage, conduisent la conception de mtiers tisser utilisant un codage binaire pour la reproduction de motifs partir de cartes perfores (dabord des planchettes en bois perces de trous pour le mtier de Falcon en 1728, puis des cartes en carton perfores articules pour le mtier de Jacquard en 1850), procd qui sera repris ultrieurement pour le codage de linformation sur les premiers calculateurs lectroniques. Les progrs raliss dans la fabrication des automates conjugus aux progrs mathmatiques permettent partir du quinzime sicle denvisager la fabrication dune forme particulire dautomate, destine au calcul arithmtique. La machine multiplier introduite par Napier (15501617), inventeur des logarithmes, constitue une transition entre le boulier et les premires machines calculer mcaniques. La premire machine capable deectuer additions, soustractions, et multiplications, est mise au point en 1623 par Wilhelm Schickard (15921635) lattention de Kepler ; cette horloge calculante est destine au calcul des phmrides. Additions et soustractions y sont ralises grce un systme de roues dentes, compltes par un procd de Napier pour les multiplications. Elle permet de mmoriser des calculs intermdiaires, et une clochette prvient du dpassement de capacit de la machine. Elle disparat en 1624, en raison de la guerre de trente ans qui ravage lAllemagne du sud cette priode, et ne sera reconstitue quen 1960, partir des plans dorigine. La machine calculer la plus connue cette poque est la pascaline due Blaise Pascal (16231662) : il la conoit en 1642 an de dcharger son pre, collecteur des impts, de calculs fastidieux. Base galement sur un systme de roues dentes, elle eectue des additions et soustractions six chires, et convertit direntes monnaies de lpoque. Elle est aussi capable de raliser des multiplications par rptition des additions, comme le montrera Moreland en 1666. La pascaline est considre comme le premier additionneur retenue automatique. Gottfried Wilhelm Leibniz (16461716) construit en 1673 une machine plus perfectionne, capable deectuer les quatre oprations et mme dextraire des racines carres, le tout par une srie dadditions sous la dpendance dun compteur. Leibniz rinvente aussi le systme binaire, et lapplique ltude des gures de Fou-Hi. La premire commercialisation dune machine calculer, baptise arithmomtre, due Charles Xavier Thomas de Colmar (17851870) et conue sur le principe de la machine de Leibniz, 2

intervient en 1821 : mille cinq cents exemplaires sont vendus en trente ans. La technologie des automates au dbut de lre industrielle est telle quelle semble pouvoir repousser toujours plus loin les capacits des machines. Cest dans ce contexte que Charles Babbage (17911871) tente de rapprocher machine calculer et systme de commande de Jacquard en vue de raliser un mcanisme permettant lexcution en squence de plusieurs oprations arithmtiques, et donc la ralisation de calculs complexes. Il tente dabord de raliser une machine dirence destine au calcul de tables de navigation ou de tir, mais face aux dicults techniques et faute de moyens, le projet partiellement ralis, est abandonn aprs une dizaine dannes de travail. Babbage a alors lide dune machine plus gnrale, la machine analytique, permettant denchaner lexcution doprations arithmtiques en fonction dinstructions donnes par lutilisateur. La conception de la machine analytique prgure larchitecture gnrale des ordinateurs modernes : on y trouve une unit de traitement (le moulin ) commande par une unit de contrle, une mmoire (le magasin ), une unit dentre constitue de cylindres inspirs des jacquemarts et pouvant recevoir des cartes perfores (oprations et nombres), une unit de sortie pouvant tracer des courbes et perforer un rsultat sur des cartes. Babbage sera aid dans la conception de sa machine par Ada Lovelace (lle du pote Lord Byron) qui peut tre considre comme la premire programmeuse de lHistoire : cest elle qui dni le principe de lenchanement ditrations successives pour la ralisation dune opration, baptis algorithme en hommage au mathmaticien Al-Khuwarizmi. La machine de Babbage est certainement le projet dautomate le plus ambitieux du dix-neuvime sicle, mais il ne sera pas ralis du vivant de Babbage (un prototype sera partiellement ralis par le ls de Babbage en 1888, avant quun nouvel exemplaire soit totalement reconstruit dans les annes quatre-vingt partir des plans dorigine). Au moins deux raisons expliquent lchec de Babbage dans la tentative de ralisation eective de sa machine. Dune part la complexit du projet savre trop importante au regard de la technologie de lpoque. Dautre part, la machine qui traite de linformation sous forme digitale, va contre-courant de la conception analogique du traitement de linformation en vigueur lpoque, qui fait suite aux travaux de Joseph Fourier (17681830) sur la reprsentation des fonctions continues partir de sommes trigonomtriques. Alors que la machine de Babbage, malgr la modernit de certains des ides mises en oeuvre dans sa conception apparat comme une impasse, de nouveaux dveloppements scientiques vont fournir les outils thoriques et technologiques permettant lmergence dune ligne de machine qui conduira lordinateur. En 1854, Georges Boole (18151864) introduit la formulation mathmatique des propositions logiques qui, appliqu au systme binaire conu par Leibniz, sera la base du fonctionnement des ordinateurs. Les progrs accomplis en physique dans ltude et la fabrication de llctricit vont tre dcisifs. En 1890, pour les besoins du recensement de la population aux Etats-Unis, Hermann Hollerith (18601929) construit une machine lectromcanique approprie, utilisant des cartes perfores et pouvant compter et trier celles-ci an dtablir des donnes statistiques. La dtection ou la prsence dune perforation est ralise au moyen daiguilles qui traversent les trous et ferment chacune un circuit lectrique en trempant dans un godet de mercure. Cette machine est la premire dune ligne de machines mcanographiques, utilises pour le calcul et surtout, la gestion. Hollerith fonde en 1896 la Tabulating Machine Company, qui devient en 1924 la clbrissime I.B.M. (International Business Company). Dans le mme temps, dautres inventeurs amliorent les machines calculer, dont William Burroughs 3

(18571898) et Door F. Felt (18621930). Ce dernier adapte aux machines calculer le principe du clavier qui commence tre utilis pour les machines crire. Sur la voie de Babbage, Leonardo Torres y Quevedo (18521936) propose la ralisation dune version lectromcanique de la machine analytique, mais faute de moyens, cest un nouvel chec. Le rythme des innovations sacclre. En 1930, Vannemar Bush construit au M.I.T. un analyseur direntiel capable de rsoudre des quations direntielles rencontres dans ltude des circuits lectriques. La mme anne, Georges Stibitz ralise un additionneur binaire relais, le modle K, sappuyant sur les travaux de Boole. Nanmoins ce moment, les ordinateurs analogiques, dont le fonctionnement est bas sur lutilisation de quantits physiques continues telles que la tension, ou la vitesse de rotation des axes pour reprsenter les nombres, apparaissent comme le futur de linformatique. Ces machines ont lavantage, par rapport aux premires approches numriques, de pouvoir traiter des problmes plus complexes, incluant mme une certaine forme de paralllisme. Les dbuts de llectronique, la veille et pendant la seconde guerre mondiale, vont changer la donne. De fait, chacun des progrs majeurs ralis dans le domaine de llectronique permettra la naissance dune nouvelle gnration de machines. Paralllement, les logiciens Alan Turing et Alonzo Church dnissent en 1936 chacun de leur ct des modles thoriques quivalents qui dlimitent les frontires de la calculabilit. La premire gnration dordinateurs voit le jour entre 1938 et 1956. Elle est lie lapparition des premiers tubes vide, condensateurs et relais lectroniques. En 1938, de faon tonnament solitaire, Konrad Zuse met au point une machine binaire programmable mcanique, le Z1. Cest le premier calculateur universel binaire contrl par programme, mais il ne fonctionnera jamais vraiment correctement, faute de crdits de dveloppement.. En 1939, il perfectionne sa machine en remplaant une partie des pices mcaniques par des relais lectromcaniques, et obtient ainsi le Z2. Le Z3 et le Z4 sont construits en 1941 et seront utiliss pour des calculs aronautiques. Le Z4 a une mmoire de 512 mots de 32 bits. En 1939, John Atanaso et Cliord Berry ralisent un additionneur binaire 16 bits, utilisant pour la premire fois la technologie des tubes vide. Pendant la seconde guerre mondiale, Max Newman et ses collgues, parmi lesquels Alan Turing, concoivent Colossus, premire machine programmable totalement lectronique, compose uniquement de tubes vide, et destine au dcryptage des codes de communication militaires allemands. Lexistence de cette machine sera tenue secrte jusque dans les annes 1970, et il apparat que les travaux de lquipe de Newman seront dcisifs pour la victoire des allis. En 1941, John Atanaso et Cliord Berry construisent le premier ordinateur binaire lampes, lABC (AtanasoBerry Computer). Parmi les derniers calculateurs lectromcaniques, le Mark 1, dvelopp en 1944 conjointement par I.B.M. et lUniversit de Harward sous la direction de Howard H. Aiken (19001973) est une norme machine inspire de la machine de Babbage. Elle pse cinq tonnes, mesure 16,60 mtres de long et 2,60 mtres de haut, occupant une surface de trente-sept mtres carrs, et consommant 25kW. Elle comporte 3000 relais et 760000 pices mcaniques. Pour la petite histoire, en 1945, un insecte qui coince un relais provoquant un dysfonctionnement, est lorigine du mot bug , utilis aujourdhui universellement pour dsigner une erreur qui sest glisse dans un programme. En 1946, Prespert Eckert John Mauchly achvent lENIAC (Electronic Numerical Integrator And Computer), souvent considr comme le premier ordinateur lectronique universel. Il est compos de 17468 tubes vide, pse 30 tonnes, occupe 72 mtres carrs, consomme 160 kW, est cadenc 100 kHz et est capable dexcuter 100000 additions ou 357 multiplications par secondes. 4

Direntes machines vont suivre : le Manchester Mark 1 en 1949, lEDVAC, puis lEDSAC, qui contrairement lENIAC ne possde quune unit de calcul et tourne 0,5MHz. En loccurence, larchitecture des ordinateurs actuels drive globalement de ces trois dernires machines. En 1952, IBM produit son premier ordinateur pour la dfense amricaine, lIBM 701, puis en 1953, un ordinateur scientique, lIBM 650, et en 1955 le premier ordinateur commercial implmentant larithmtique des nombres virgule ottante, lIBM 704. Linvention du transistor par William Shockley, John Bardeen, et Walter Brattain en 1947, donne naissance la seconde gnration dordinateurs, dans lesquels les lampes, fragiles et encombrantes, sont remplacs par des composants plus petits et plus ables permettant une diminution sensible de la taille et de la consommation. Le premier ordinateur utilisant des transistors est le TRADIC en 1955. Lapparition du circuit intgr (invent par Jack St. Clair Kilby en 1958) va permettre de poursuivre la miniaturisation des composants, et susciter la troisime gnration dordinateurs. On y trouve des machines telles que lIBM 360, le PDP 8 de Digital Equipment Corporation, lHP-2115 dHewlett-Packard. Enn, linvention du microprocesseur en 1971, suscite la quatrime gnration dordinateurs et permet daugmenter encore le degr de miniaturisation, jusqu lapparition des premiers micro-ordinateurs, vritable rvolution assurant chacun un accs personnel linformatique. LINTEL 4004, premier microprocesseur 4 bits est en 1971 le premier circuit intgr incorporant unit de calcul, mmoire, gestion des entres-sorties, et comporte 2300 transistors. Le premier micro-ordinateur est le Micral N, construit en 1973 par une petite entreprise franaise, R2E. En 1975, sort lAltair, utilisant un processeur Intel 8080, en 1976 apparait lApple I, puis en 1977, lApple II. A partir, de 1978, IBM commence sintresser au march de la micro-informatique, et sort en 1981 le premier IBM PC. Suivront encore le Commodore 64 et lAmiga, de Commodore International, et les premiers clones compatibles PC lancs par Compaq. En 1983, Apple propose Lisa, premier micro-ordinateur dot dune interface graphique, et prcurseur du Macintosh, tandis que le PC compatible simpose au grand public au travers de constructeurs comme Hewlett-Packard, Compaq, Dell, ou NEC. Si lvolution actuelle des machines en termes de performances est prvisible jusqu un certain terme (en particulier par la Loi de Moore), il est dicile de prvoir le futur de larchitecture des ordinateurs au del du seuil connu dintgration des composants. Les recherches menes actuellement ouvrent des pistes dans le domaine de la physique quantique, tandis quen bioinformatique des tentatives de codage et de manipulation de linformation sur les quatres bases fondant lADN ont t ralises avec un certain succs. Il nest pas impossible que les ordinateurs du futurs bncient dune nouvelle rvolution scientique qui modiera encore une fois le cours de leur volution. Les chapitres suivants se contentent dexplorer succintement les concepts fondamentaux communs au standard des architectures actuelles. Par ailleurs, le lecteur intress par lhistoire de linformatique et des ordinateurs peut se rfrer notamment [Breton90], ainsi qu lexcellente page de lencyclopdie en ligne [Wikipedia], dont est issue la majeure partie des informations de cette courte introduction.

Chapitre 1

Information et calcul
Sil est tabli que linformatique repose sur lutilisation dordinateurs 1 , a contrario il est vident que le rle et le fonctionnement dun ordinateur nont de sens quau regard de la notion de traitement de linformation. Ainsi les descriptions les plus gnralistes dun ordinateur saccordent toutes sur le concept minimal de machine conue pour permettre le traitement de linformation. Limbrication des deux notions, informatiqueordinateur, amne donc directement aux questions : Quest-ce que linformation ? De quel traitement sagit-il ? Cest ces deux questions que tente de rpondre de faon extrmement sommaire le prsent chapitre.

1.1

Traitement de linformation

En loccurence, et pour aborder la premire de ces questions, nous adoptons ici en premire approche la dnition propose dans [MeyerBaudoin80] : on appelle information tout critre de choix parmi les lments dun ensemble, cest--dire tout critre permettant de restreindre la taille dun ensemble o lon recherche la rponse une certaine question. Par exemple, sur des questions aussi diverses que le calcul de la rsistance dun pont en bton arm, le choix dune orbite optimum pour un satellite de tlcommunication, la traduction dun texte dune langue une autre, des informations pertinentes seront au choix et respectivement la donne du coecient de rsistance du bton, la longueur, la hauteur du pont, la densit du trac de passage, ou la hauteur et le type de lorbite, la masse du satellite, son autonomie, ou encore les lexiques respectifs des langues considres, les rgles de grammaire et de conjugaison et leurs exceptions. . . A ce stade, apprendre que la couleur du pont est rouge, que le satellite porte linscription made in France , ou que le texte traduire contient 57 fois la lettre e napporte pas dinformation puisquaucun moyen ne nous est ainsi fourni de rduire lensemble de recherche. La recherche dune solution, cest dire le traitement de linformation par ltre humain, revient donc essentiellement en lapplication dun ensemble de mthodes permettant une rduction de la quantit dinformation partir des donnes de dpart.
1. Quoique ?

recherche dune solution

Nous sommes en mesure daborder la deuxime question : sur un ordinateur, machine conue pour permettre le traitement de linformation , il sagit alors de simuler dune faon ou dune autre ces mthodes de rduction de linformation. Pour ce faire, il faut disposer dune reprsentation physique de lensemble des donnes D , soit D ; dune reprsentation physique de lensemble des solutions S , soit S ; dune reprsentation physique des mthodes de rduction de linformation, oprant sur D et fournissant un rsultat S ; cest dire un calcul. Pour pouvoir lancer le traitement physique et interprter son rsultat, on doit en outre disposer de deux codes de reprsentation : lun pour reprsenter une donne de D (abstraite) par un lment de D (physique) ; cest un codage ; lautre pour interprter un lment de S , rsultat dun calcul, comme la reprsentation dune solution appartenant S ; cest un dcodage.
recherche dune solution

codage

dcodage

calcul D x y S

y = dcodage(calcul(codage(x)))

Un programme de traitement de linformation sera donc la donne densembles physiquement reprsentables 2 D et S conus respectivement comme le codage et le dcodage de D et S , dun calcul oprant sur D et S , tels que solution(x) = dcodage(calcul(codage(x))) Dans la mesure o lon montre que jusqu un certain point les oprations de codage et de dcodage se rsument elles mme un calcul, un ordinateur apparat donc essentiellement comme un dispositif de calcul volu. Mais quest ce quun calcul ?
2. cest--dire, entre autres, nis. . .

1.2

La machine de Turing

Cest Alonzo Church et Alan Turing, qui en 1936 et de faon indpendante apportent chacun avec leurs propres outils thoriques une rponse cette question. Church propose un paradigme formel appel Lambda calcul et montre que toute fonction rcursive, ni plus ni moins, est reprsentable au sein de ce calcul. De son ct, Turing, bien avant la construction des premires calculatrices lectroniques introduit un modle thorique original appel depuis lors machine de Turing. Turing montre lquivalence de son modle avec le lambda calcul, ce qui permet dobtenir trois modles de la calculabilit strictement quivalents : La thorie des fonctions rcursives ; Le lamba calcul ; La machine de Turing. De ces trois modles, la machine de Turing est sans nul doute le plus intuitif, et cest ce modle que nous prsentons ici. Dnition 1.1 Une machine de Turing se compose prcisment dune unit centrale, laquelle peut prendre un certain nombre dtats internes en nombre ni ; dun ruban de longueur innie sur lequel sont inscrites les donnes de dpart traiter (des symboles pris dans un ensemble ni dtermin) et sur lequel la machine peut crire de nouveaux symboles ; dune tte de lecturecriture qui opre sur un symbole du ruban la fois, et qui, en fonction de ltat courant de lunit centrale, peut remplacer le symbole lu par un nouveau symbole et ventuellement se dplacer dune case vers la gauche ou vers la droite sur le ruban.
Etat courant Tete de lecture criture

Ruban

Caractre Lu Etat q0 c0 cm Unit centrale

qn

La machine fonctionne par pas discontinus et instantans. Dans une situation dtermine par un tat interne et un symbole lu sur le ruban, elle volue en changeant dtat et en agissant sur le ruban ; des rgles de transition (autrement dit, un programme ) dterminent cette volution. Plus prcisment : Dnition 1.2 Un programme est compltement dtermin par : La donne dun ensemble ni de symboles, incluant un sous-ensemble de symboles dentre, ainsi quun symbole spcial appel blanc , not b, avec b \ . Un ensemble ni Q dtats, incluant un tat spcial de dpart q0 et au moins un tat nal qF . 8

Une fonction de transition : (Q \ {qF }) Q {G, D, } matrialis par un ensemble de rgles de la forme tat courant, symbole lu nouvel tat, symbole crit, mouvement du ruban. Lentre dune machine de Turing est une squence de symboles pris dans telle que chaque symbole composant la squence est plac un par un sur le ruban qui contient des caractres b partout ailleurs. Le calcul commence dans ltat initial q0 et se termine dans ltat nal qF . On peut alternativement considrer deux tats naux qY et qN tels que qY est atteint si la rponse un programme de calcul est oui , qN est atteint si la rponse ce programme de calcul est non (par exemple, telle squence dentre possde-telle telle proprit ?). Exemple 1.1 Comment eectuer une addition sur une machine de Turing ? Une manire de faire (pas la seule...) est de coder les nombres additionner sous forme de squences de 1 successifs, par exemple 2 scrivant 11, 3 scrivant 111, et ainsi de suite... On considre donc = = {1}, et le caractre blanc b. Lide est alors dcrire un programme capable de concatner les deux squences additionner en une seule qui en est lunion. Par exemple de la somme des squences 11 et 111 rsulte la squence 11111. Un tel programme est, par exemple : q0 , b q0 , b, D q1 , b q2 , 1, D q2 , b qF , b

q0 , 1 q1 , b, D

q1 , 1 q1 , 1, D q2 , 1 qF , 1 Cet ensemble de rgles est une matrialisation de la fonction de transition : gauche de la che se trouvent ltat courant de la machine et le symbole lu par la tte de lecturecriture ; droite de la che se trouvent ltat dans lequel passe la machine aprs lecture, le nouveau symbole crire sous la tte de lecturecriture, et enn le mouvement eectu par la tte sur le ruban (dune case vers la gauche ou vers la droite, ou mouvement nul). Lexcution du programme commence dans ltat q0 et se termine dans ltat qF . Des reprsentations quivalentes de ce programme existent : Sous forme dune table de transition :
XXX XXX Symbole lu XX XXX Etat courant

b q0 , b, D q2 , 1, D qF , b

1 q0 , b, D q1 , 1, D qF , 1

q0 q1 q2

Chacune des entres de la table, en ligne (tats) et en colonne (symboles lus sur le ruban), dnit une situation correspondant une des ttes de rgle envisages dans le programme. Les cellules de la table sont associes aux transitions dnies par chacune des queues de rgles correspondantes, et dterminent les transitions vers de nouveaux tats ainsi que les oprations eectues sur le ruban. 9

Sous forme de diagramme dtats nis :


b D b q0 1 1 D b D q1 b

b qF 1

b 1

D 1 q2

A chacun des tats est associ un noeud du graphe, les transitions entre tats ainsi que les oprations eectues sur le ruban tant matrialises par les arcs orients reliant les noeuds. Ltat nal est signal comme un noeud particulier. La trace de lexcution du programme sur laddition de 11 et 111 est :
Etape 1 q0 b b b 1 1 b 1 b q0 , b, D q2 , 1, D qF , b 1 1 q1 , b, D q1 , 1, D qF , 1 1 b b b b b b Etape 2 q1 1 b 1 1 b q0 , b, D q2 , 1, D qF , b 1 1 q1 , b, D q1 , 1, D qF , 1 b b b b

``` ``` ``Symbole lu Etat courant ````` `

``` ``` ``Symbole lu Etat courant ````` `

q0 q1 q2

q0 q1 q2

Etape 3 q2 b b 1 b 1 1 1 b q0 , b, D q2 , 1, D qF , b b 1 q1 , b, D q1 , 1, D qF , 1 b b b b

Etape 4 qF b 1 1 1 1 1 b b q0 , b, D q2 , 1, D qF , b b 1 q1 , b, D q1 , 1, D qF , 1 b b b b

``` ``` ``Symbole lu Etat courant ````` `

``` ``` ``Symbole lu Etat courant ````` `

q0 q1 q2

q0 q1 q2

Un calcul tant prcisment ce qui peut tre accompli sur une machine de Turing, la machine de Turing reprsente la plus petite architecture possible pour un ordinateur, et peut donc tre vue sous son aspect fonctionnel comme lintersection de tous les ordinateurs possibles. En dlimitant prcisment les frontires de la calculabilit, elle est thoriquement capable de simuler 3 tout ordinateur pass, prsent ou futur. En fait et malgr sa simplicit, elle reprsente sous son aspect matriel bien plus quun ordinateur, car elle dispose travers son ruban dune capacit de mmorisation innie. La thorie des machines de Turing et ltude de la calculabilit vont bien au-del de cette prsentation succinte 4 . Sans aller plus loin dans cette voie, nous illustrerons nanmoins divers
3. si ncessaire en un temps trs long... 4. Une tude plus approfondie peut tre mene, par exemple, au travers les ouvrages de rfrence de Minsky [Minsky67] ou de Lewis et Papadimitriou [LewisPapadimitrou81]

10

moments le fonctionnement de certains lments rels darchitecture par leur quivalent sous forme de machine de Turing. Ayant abord la calculabilit et donc pressenti la fonction fondamentale dun ordinateur, la question est maintenant de savoir sous quelle forme raliser eectivement une machine calculer, ce quoi sattachent les chapitres qui suivent...

11

Chapitre 2

Numration et codage
Les machines calculer auquelles on sintresse sont des dispositifs physiques dont le fonctionnement repose sur lemploi du courant lectrique. Cette simple remarque, aussi vidente quelle paraisse, est lourde de consquences. En eet, linformation la plus simple que lon puisse reprsenter sur un tel dispositif est (schmatiquement) le courant passe ou le courant ne passe pas 1 . Autrement dit, lordinateur traite de linformation digitale, le support de linformation tant un systme deux tats dquilibre 0 et 1 correspondant aux informations lmentaires du systme, appeles bits (contraction des mots anglais binary et digit . Toute information est alors reprsente par une combinaison de bits. A n bits correspondent 2n congurations binaires possibles direntes (le nombre dapplications dun ensemble de cardinal n dans lensemble {0, 1}, de cardinal 2). Un mot est une squence qn1 . . . q0 de n bits, qn1 tant le bit de poids fort, et q0 le bit de poids faible. En particulier, un mot de 8 bits est appel octet. Enn, nous appelons dsormais codage lopration qui tablit une correspondance biunivoque (appele code ) entre les informations reprsenter et les congurations binaires possibles. Lensemble des dveloppements de ce chapitre sappuient sur les rsultats thoriques donns en annexe B.

2.1

Le codage des caractres

De nombreux standards existent. Le plus simple et le plus rpandu est le code ASCII (American Standard Code for Information Interchange). Il permet de reprsenter sur un octet 2 des donnes alphanumriques, dont les caractres latins, les chires dcimaux, et dautres informations comme, par exemple, le retour chariot (une table complte du codage ASCII est donne en annexe A). Le code ASCII a volu vers le standard ISO 88591 (Latin 1), qui utilise huit bits pour reprsenter entre autres les caractres accentus. Un autre standard trs rpandu est Unicode, qui utilise deux octets pour coder aussi des jeux de caractres non latins, cyrilliques, hbreu, asiatiques.

2.2

Le codage des entiers naturels

Un rsultat lmentaire de numration sur les entiers nous dit que tout entier a sexprime comme la dcomposition polynmiale dune suite de coecients entiers dans une base b donne
1. En ralit ce sont des tensions lectriques servant de seuils qui sont mesures. 2. En fait sept bits plus un bit de parit.

12

(cf. Thorme B.2, annexe B). Puisque nous ne disposons que des deux symboles 0 et 1, la base 2 simpose comme le seul systme de numration adapt la reprsentation interne des entiers naturels. Autrement dit, avec b = 2, le thorme B.2, annexe B, devient : Corollaire 2.1 (Thorme B.2) Pour tout a N, suprieur ou gal 2, il existe une squence unique q0 . . . qn1 telle que : a = qn1 .2n1 + . . . + q2 .22 + q1 .2 + q0
n 1

=
i=0

qi .2i

avec qn1 = 1 et qi {0, 1} pour 0 i n 2. q0 , coecient de plus petit indice, est le bit de poids faible ; qn1 , coecient de plus grand indice, est le bit de poids fort. Exemple 2.1 Lentier 4310 se dcompose en base 2 : 4310 = 1.25 + 0.24 + 1.23 + 0.22 + 1.21 + 1.20 Autrement dit, 4310 scrit en binaire 1010112 . Thorme 2.1 Sur n bits, on peut reprsenter les entiers naturels a tels que 0 a 2n 1. Preuve : Le plus grand entier reprsentable sur k bits est :
n 1 i=0

2i = 2n 1

Q.E.D. Ainsi, sur un octet on peut reprsenter tous les entiers naturels de 0 255. Deux octets permettent de reprsenter tous les entiers naturels de 0 32 767. Un mot de 32 bits permet de compter de 0 4 294 967 295. On a aussi le rsultat suivant 3 : Corollaire 2.2 Pour tout entier naturel a, il existe un entier n strictement suprieur 0, tel que 2n1 a < 2n . Si lutilisation du code binaire est proche de la ralit physique, il sagit dune reprsentation malcommode utiliser pour ltre humain : la longueur du codage et le manque de discrimination d lutilisation de deux caractres seulement est facilement source derreurs dans la communication. Aussi une reprsentation compacte, plus aise manipuler, mais permettant un passage immdiat au code binaire est videmment bienvenue : le systme de numration hxadcimale reprsente le meilleur choix pour tout systme informatique qui utilise des mots dont le nombre de bits est divisible par 4, ce qui est le cas de la quasi-totalit des ordinateurs actuellement sur le march (mots de 8, 16, 32, et 64 bits).
3. Ce rsultat se gnralise une base quelconque.

13

Reprsentation hexadcimale
Le systme de numration hxadcimale requiert 16 chires : les 10 premiers chires sont emprunts au systme dcimal et les 6 derniers sont les lettres A F de lalphabet latin. La table suivante fournit lquivalent de chaque chire hxadcimal dans le systme de numration dcimal et le code de numration binaire sur quatre bits (appel Dcimal Cod Binaire ou encore code DCB ) : Dcimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 DCB 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Hxadcimal 0 1 2 3 4 5 6 7 8 9 A B C D E F

En hexadcimal, b = 16, et le thorme B.2 devient : Corollaire 2.3 (Thorme B.2) Pour tout a N, suprieur ou gal 16, il existe une squence unique q0 . . . qn1 telle que : a = qn1 .16n1 + . . . + q2 .162 + q1 .16 + q0
n 1

=
i=0

qi .16i et pour 0 i n 2.

avec qn1 {1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F } qi {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F } Exemple 2.2 Lentier 4310 se dcompose en base 16 : 43 = 2.161 + B.160 Autrement dit, 4310 scrit en hexadcimal 2B16

2.3

Conversion dun entier naturel

La conversion dun nombre exprim en dcimal en une base b quelconque peut tre ralise par lune des deux mthodes suivantes : 14

la mthode des divisions successives ; la mthode des soustractions successives. La mise en uvre de chacune de ces deux mthodes nest quune variation partir du rsultat du thorme B.1. La mthode des divisions successives calque la dmonstration du thorme B.2. La mthode des soustractions successives repose, elle, sur le corollaire B.1. Mthode des divisions successives Lide est de diviser par b lentier a dont on veut obtenir la reprsentation dans la base b, puis de diviser le quotient obtenu par b, et de rpter lopration jusqu ce que le quotient obtenu soit nul. La suite des restes des divisions successives correspond la reprsentation de a dans la base b. En eet : a = qn1 .bn1 + qn2 .bn2 + . . . + q2 .b2 + q1 .b1 + q0 = (qn1 .bn2 + qn2 .bn3 + . . . + q2 .21 + q1 ) .b + a1 (quotient) q0
(reste)

La dernire galit dit que q0 , cest dire le chire le moins signicatif de la reprsentation en base b de lentier a, est le reste obtenu par suite de la division euclidienne de a par b. De la mme faon, considrons le quotient a1 , obtenu lors de la premire division. On a : a1 = qn1 .bn2 + qn2 .bn3 + . . . + q2 .b1 + q1 = (qn1 .bn3 + qn2 .bn4 + . . . + q2 ) .b + a2 (quotient) q1
(reste)

o q1 , cest dire le prochain chire dans la reprsentation en base b, est donn par le reste de la division du quotient a1 par b. En poursuivant les divisions, on suit lalgorithme de conversion de la reprsentation dcimale dun entier en base b. Plus prcisment : 1. lentier dcimal a est divis par b, ce qui donne pour quotient a1 et pour reste q0 ; 2. si a1 > 0, il est divis par b, ce qui donne pour quotient a2 et pour reste q1 ; 3. lopration de division mentionne ci-dessus est renouvele sur chacun des quotients obtenus jusqu obtenir un quotient am = 0 ; 4. les restes obtenus successivement sont les chires de la reprsentation en base b de lentier a, avec q0 comme chire le moins signicatif, q1 comme chire suivant, et ainsi de suite. Autrement dit, en base b, a scrit qn1 . . . q1 q0 (avec 0 < qn1 < b et 0 qi < b, 0 i n 2). Exemple 2.3 Conversion du nombre 4310 en binaire : 43 = 21.2 + 1 21 = 10.2 + 1 10 = 5.2 + 0 5 = 2.2 + 1 2 = 1.2 + 0 1 = 0.2 + 1 4310 = 2.(2.(2.(2.(2.(2.0 + 1) + 0) + 1) + 0) + 1) + 1 donc 4310 scrit en binaire 1010112 . 15

Mthode des soustractions successives La mthode des soustractions successives est souvent plus rapide que la mthode des divisions successives, pour peu que soit connue la suite des puissances successives de la base b dans laquelle est eectue la conversion. Cette remarque la rend plus particulirement adapte la conversion en base 2. On rappelle (gnralisation du corollaire B.1) que tout entier naturel a peut tre encadr par deux puissances successives de b (par exemple en binaire, il existe k N tel que 2k1 a < 2k ). Le principe de la mthode consiste soustraire a la plus grande puissance de b immdiatement infrieure a, puis rpter lopration avec le rsultat obtenu jusqu ce que le rsultat de lopration soit nul. Plus prcisment : 1. La puissance de b infrieure a la plus proche (par exemple bm ) est soustraite de a, ce qui donne pour rsultat sm ; 2. si sm > 0, la puissance de b infrieure sm la plus proche (par exemple bp , p < m)est soustraite de sm , ce qui donne pour rsultat sp ; 3. lopration de soustraction mentionne ci-dessus est renouvele sur chacun des si obtenus (0 i m) jusqu obtenir un certain i = z tel que sz = 0 ;

4. les restes obtenus par soustractions successives sont les chires de la reprsentation en base b de lentier a, avec sm comme chire le plus signicatif, sp comme chire suivant, et ainsi de suite jusqu sz le chire le moins signicatif. Autrement dit, en base b, a scrit sm sp . . . sz . Exemple 2.4 Conversion du nombre 4310 en binaire : 25 23 21 20 43 < 26 , 11 < 24 , 3 < 22 , 1 < 21 , 43 11 3 1 25 23 21 20 = 11 = 3 = 1 = 0

43 = 25 + 23 + 21 + 20 = 1.25 + 0.24 + 1.23 + 0.22 + 1.21 + 1.20 autrement dit 4310 scrit en binaire 1010112 . Conversion binairehexadcimal Les 16 chires du code hexadcimal se codent en binaire sur 4 bits. En utilisant cette correspondance on peut convertir de lhexadcimal en binaire, chaque chire hxadcimal correspond une combinaison binaire de 4 bits. Inversement, en dcoupant la combinaison binaire convertir, par paquets de 4 bits partir du poids le plus faible et en associant ce paquet le chire hexadcimal correspondant, on peut convertir du binaire en hxadcimal. Exemple 2.5 19810 scrit 110001102 en binaire, 1100 4310 scrit 1010112 en binaire, 0010
2 C

0110 et donc C 616 en hexadcimal.


6

1011 et donc 2B16 en hexadcimal.


B

16

2.4

0prations binaires

Les oprations arithmtiques lmentaires dun seul bit sont simples et suivent les tables prsentes ci-dessous. Certaines situations impliquent la gnration dune retenue et son report vers le bit de poids suprieur le plus proche. La division binaire, semblable la division dcimale, seectue par une succession de comparaisons, de soustractions et de multiplications. Enn, on notera les oprations particulires que sont le dcalage logique gauche et le dcalage logique droite. Table daddition binaire 0+0 0+1 1+0 1+1 Exemple 2.6
11 11 10

= = = =

1
retenue

0 1 1 0

+ 1 Table de soustraction binaire 00 10 11 01 Exemple 2.7 1 Table de multiplication binaire 00 01 10 11


1

1 1

1 0

1 1 0

= = = =

1
retenue

0 1 0 1

0 1 1

1 0 1

1 1 0

= = = = 1 0 1 0 0 1 1

0 0 0 1 1 0 1 0 1 1 1 1

Exemple 2.8

10

1 1

0 1

1 0 1 0 17

Table de division binaire 00 01 10 11 Exemple 2.9 1 1 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1 0 0 1 : = : = indni 0 indni 1

0 0 0

Oprations de dcalages Les deux oprations suivantes de dcalage sont dnies : sll (Shift Logical Left, ou dcalage logique gauche), slr (Shift Logical Right, ou dcalage logique droite). Etant donne la reprsentation dun entier sur n bits (qn1 qn2 . . . q0 ), on a : sll(qn1 qn2 . . . q0 ) = qn2 . . . q0 0 slr(qn1 qn2 . . . q0 ) = 0 qn1 . . . q1

Linterprtation arithmtique des dcalages est donne par le thorme suivant : Thorme 2.2 Etant donne qn1 qn2 . . . q0 la reprsentation sur n bits dun entier naturel a, on a : sll(qn1 qn2 . . . q0 ) = 2 a

slr(qn1 qn2 . . . q0 ) = a 2 Preuve : Immdiate, en eectuant les multiplications qn1 qn2 . . . q0 2 et 0 qn1 . . . q1 2. Q.E.D.

Dpassement de capacit Laddition est lopration fondamentale eectue par lUAL (Unit Arithmtique et Logique) dun ordinateur : toutes les autres oprations, soustraction dentiers naturels, addition et soustraction dentiers relatifs, multiplication, division devront tre conues pour exploiter ecacement ladditionneur naturel. Or toute addition eectue par lUAL lest sur un nombre xe de bits correspondant par convention la taille maximum du type dentier reprsentable (par exemple, souvent 16 bits pour un entier, 32 bits pour un entier long. . .). Lorsque laddition UAL 18

produit une retenue au del du nme bit de poids le plus fort autoris par la reprsentation, il se produit un dpassement de capacit : le rsultat de la somme des deux entiers considrs nest pas reprsentable sur la taille de mot choisie, et le rsultat produit est erron. Par exemple, sur quatre bits, laddition UAL de 0111 et 1100 donne 0011 avec retenue 1 : en eet, 7 + 12 = 19 qui ne peut tre reprsent sur quatre bits. Toutefois la dtection dun dpassement de capacit sur laddition de deux entiers naturels est immdiate : notons par laddition telle queectue conventionnellement par lUAL sur une taille xe de mots de n bits ; a2 et b2 tant les reprsentations binaires des entiers naturels a et b, on a : a2 + b2 = a2 b2 + (R.2n )2 o R {0, 1}

Si laddition de deux entiers naturels produit un dpassement de capacit, R = 1, sinon R = 0. Nous verrons que ce critre nest plus aussi simple si lon considre la somme dentiers relatifs.

2.5

Reprsentation des nombres signs

On a vu que n bits permettent de parcourir un ensemble de 2n congurations binaires permettant de reprsenter tout entier naturel compris entre 0 et 2n 1. La reprsentation des entiers signs implique de diviser cet ensemble de congurations par 2, car on veut pouvoir reprsenter autant dentiers positifs que dentiers ngatifs, ce qui ncessite dutiliser une moiti des congurations binaires disponibles pour les entiers positifs et lautre moiti pour les entiers ngatifs : 2n1 congurations seront donc dvolues la reprsention des entiers ngatifs et 2n1 congurations resteront disponibles pour la reprsentation des entiers positifs. 2n1 0 2n1 1
2n valeurs

distinctes

Autrement dit, n 1 bits seront utiliss pour coder les entiers positifs comme les entiers ngatifs, la distinction sur le signe dcoulant donc du positionnement 1 ou 0 du nme bit de poids fort, appel ds lors bit de signe : q n 1 bit de signe q n 2 . . . q 1 q 0 valeur absolue (n 1 bits)

An de rester cohrent avec la reprsentation des entiers naturels donne prcdemment, on dcide conventionnellement de positionner le bit de signe 0 pour les entiers positifs et 1 pour les entiers ngatifs. La question qui reste alors rsoudre est celle de lordre adopter sur les 2n1 congurations binaires utilises pour coder les entiers ngatifs (bit de signe est 1). Trois solutions sont habituellement envisages : le codage en signe et valeur absolue le codage en complment 1 le codage en complment 2 Codage en signe et valeur absolue Il sagit du codage le plus intuitif. Lide est dassocier une seule conguration binaire la valeur absolue de chaque entier, la distinction entre la reprsentation ngative et la reprsentation 19

positive de cet entier tant assure par le bit de signe. Par exemple, sur quatre bits, on codera +1 par 0001 et 1 par 1001. Linconvnient de ce codage est quil implique deux reprsentations de zro : une reprsentation positive donne par 0000 et une reprsentation ngative donne par 1000. Il y a donc gaspillage dune conguration binaire. Mais surtout, les oprations algorithmiques utilises dans la mise en uvre de laddition et de la soustraction sont direntes. Malgr sa simplicit apparente, il sagit tout point de vue dun codage peu conomique, mais dont on verra une application dans le cadre du cadre du codage des nombres ottants. Codage en complment 1 Dans le codage en complment 1, le changement de signe seectue en inversant les 0 et les 1 : toute occurence de 0 devient 1, et toute occurence de 1 devient 0. Par exemple, sur quatre bits, +1 tant cod par 0001, 1 est cod 1110. On constate, en procdant ainsi quune moiti des congurations binaires disponibles est eectivement dvolue la reprsentation des entiers ngatifs et que le bit de poids fort est bien le bit de signe. Par contre, tout comme dans le codage en signe et valeur absolue, deux reprsentations distinctes de zro coexistent : par exemple sur quatre bits, un zro positif cod 0000, et un zro ngatif cod 1111. Il en dcoule le mme type de dicult dans la mise en uvre des oprations arithmtiques lmentaires. Codage en complment 2 Lide la base du complment deux est prcisment lobtention dune reprsentation des entiers ngatifs qui permette un codage uniforme des oprations daddition et de soustraction : un entier ngatif est tel quadditionn lentier positif correspondant, on obtienne bien un zro unique, le mme que celui obtenu lors de la soustraction de cet entier par lui mme. Autrement dit, la reprsentation de lentier ngatif en question doit pouvoir tre obtenue en soustrayant la reprsentation positive de cet entier zro. Par exemple sur quatre bits, +1 tant cod 0001, on aura : 0 0 0 1 0 0 0 1 0 0 0 0 Le codage de 1 est alors normalement obtenu par la soustraction 0 1 en binaire : 0 1
10

0
10

0
10

0 1 1

Il est facile de constater partir de cet exemple que la soustraction de tout entier positif zro gnre une retenue qui se propage au-del du bit de poids le plus fort, correspondant un dpassement de capacit. En loccurence, cest bien la gnration de cette retenue qui permet de diviser lensemble des congurations binaires en deux et permet de constituer le bit de poids fort en bit de signe, abstraction faite du dpassement de capacit. Si on ignore le dpassement de capacit, on obtient bien une reprsentation des entiers ngatifs compatible avec les comportements attendus de laddition et de la soustraction. Or, du point de vue arithmtique, ignorer un dpassement de capacit sur le n + 1me bit revient considrer un codage des entiers modulo 2n . Autrement dit, on reprsente 2n congurations binaires distinctes sur un cercle, chacune reprsentant une des classes dquivalence de la relation de congruence modulo 2n (cf. annexe B, paragraphe B.4). 20

Par exemple sur quatre bits, cest--dire pour n = 4 : 1111 0000 0001 1110 1101 1100 1011 1010 1001 1000 0111 Une moiti des congurations accessibles sert reprsenter les entiers positifs (de 0 2n1 1), lautre moiti les entiers ngatifs (de 2n1 1). Puisque la relation de congruence est compatible avec laddition, toute conguration x accessible sur le cercle est telle quadditionne avec la conguration reprsentant sa valeur oppose, x , on obtienne 0 modulo 2n : x + x n n 0 (mod 2 ). Par exemple : 0001+ 1111 0 (mod 2 ) et par consquent 1111 est la reprsentation sur quatre bits de 1. Sur le cercle modulo 2n , il est ais de constater que chaque paire de valeurs opposes se trouve sur une mme ligne horizontale : 1111 0000 0001 1110 1101 1100 1011 1010 1001 1000 0111 Sur quatre bits, on obtient donc le codage suivant des entiers relatifs sur le cercle : 0010 0011 0100 0101 0110 0010 0011 0100 0101 0110

21

1111 0000 0001 1110 1101 1100 1011 2 3 4 5 6 1 +0 +1 0010 +2 +3 +4 +5 +6 0011 0100 0101

1010

7 8 +7

0110

1001 1000 0111 Le thorme suivant permet le calcul de la reprsentation en complment deux dun entier naturel partir de sa reprsentation en complment 1 : Thorme 2.3 Etant donn un entier naturel a [2n1 + 1, 2n1 1], la reprsentation de a en complment 2 est obtenue partir du complment 1 de a auquel on ajoute 1. Preuve : Supposons a > 0 (sinon il sut dinverser les rles de a et a). On a
n 1

a=
i=0

qi .2i

Le nombre a obtenu en ajoutant 1 au complment 1 de a est :


n 1

a = 1 +
i=0

q i .2i

en notant q i le conjugu du bit qi , et en remarquant que lopration ne produit pas de retenue pour a > 0. Par consquent
n 1

a + a = 1 +
i=0

(qi + q i ).2i = 2n

donc a est la reprsentation de a. Q.E.D. Exemple 2.10 a Complment 1 ajot de 1 -a : : : : 0 1 + 1 1 1 0 1 0 1 1 0 1 1

22

Extension de signe Thorme 2.4 Etant donn un entier relatif a reprsent sur n bits par qn1 qn2 . . . q0 , a est reprsent sur m (m > n) bits par qn1 . . . qn1 qn2 . . . q0 . Preuve : La proposition est vidente si a 0. Si a < 0, les deux nombres ont le mme complment 2. Q.E.D. Cette opration est appele extension de signe : le bit de poids fort qn1 est recopi sur les m n bits manquants. Par exemple, 7 est reprsent par 0111 sur quatre bits, et par 00000111 sur un octet ; 2 est reprsent par 1110 sur quatre bits, et par 11111110 sur un octet. Dpassement de capacit Si la reprsentation en complment deux permet dunier addition et soustraction des entiers relatifs, elle ne rsoud pas pour autant la question du dpassement de capacit qui peut se produire au sein de lUAL. La question est de savoir si laddition UAL est compatible avec la reprsentation en complment deux, ou plus prcisment, si laddition binaire est isomorphe laddition UAL : Comp2 dsignant la fonction qui un entier relatif associe sa reprsentation en complment 2, a-ton Comp2 (a + b) = Comp2 (a) Comp2 (b) On sait dores et dj que cela nest pas toujours vrai pour les entiers positifs. Cela ne lest pas non plus pour les entiers ngatifs : par exemple sur quatre bits, laddition UAL de 7 (1001) et 6 (1010) donne 0011, soit 3 et non 13. De mme, laddition UAL de 7 (0111) et 2 (0010) donne 1001, qui reprsente 7 et non 9 : on voit que le critre de dtection dun dpassement de capacit sur laddition des entiers naturels (gnration dun bit de retenue sur le nme bit) nest pas applicable tel quel aux entiers relatifs. Pour laddition des relatifs, le thorme suivant [GermainEtiemble] fournit un critre de correction qui gnralise le critre obtenu pour laddition des entiers naturels. Thorme 2.5 Laddition UAL de deux entiers relatifs a et b fournit toujours un rsultat correct si a et b ne sont pas de mmes signes. Si a et b sont de mme signe, le rsultat est correct si le bit de signe est gal la retenue. Preuve : Il sagit de vrier que Comp2 (a + b) = Comp2 (a) Comp2 (b) (2.1)
?

si et seulement si les conditions du thorme sont vries. On distingue trois cas : Cas 1 : (a 0, b < 0) . Alors 2n1 a + b < 2n1 car 0 a < 2n1 et 2n1 b < 0 ; donc a2 + b2 est reprsentable. On a Comp2 (a) = a2 , Comp2 (b) = (2n + b)2 = (2n )2 + b2 do Comp2 (a) Comp2 (b) = a2 + b2 + (2n )2 (R.2n )2 o R est le dpassement de capacit gnr par laddition binaire a2 + b2 . Il y a retenue si a + b + 2n 2n , autrement dit, si a + b 0. Dune part Comp2 (a + b) = (a + b)2 = a2 + b2 , car a + b 0 est reprsentable. Dautre part, Comp2 (a) Comp2 (b) = a2 + b2 puisque R = 1. Par consquent Comp2 (a + b) = Comp2 (a) Comp2 (b). 23

Il ny a pas retenue si a + b +2n < 2n , autrement dit, si a + b < 0. Dans ce cas Comp2 (a + b) = a2 + b2 + (2n )2 , car a + b < 0 est reprsentable. On a aussi Comp2 (a) Comp2 (b) = a2 + b2 + (2n )2 car R = 0. Par consquent Comp2 (a + b) = Comp2 (a) Comp2 (b). Cas 2 : (a 0, b 0) . Alors 0 a + b < 2n ; par consquent a + b est reprsentable si 0 a + b < 2n1 et non reprsentable sinon. On a Comp2 (a) = a2 , Comp2 (b) = b2 . Laddition UAL ne produit jamais de retenue : les bits de poids fort sont tous deux 0, do Comp2 (a) Comp2 (b) = a2 + b2 (R.2n )2 = a2 + b2 puisque R = 0. Dautre part Comp2 (a + b) = a2 + b2 si a + b est reprsentable, puisque a + b 0. Donc lquation (2.1) est vraie si et seulement si a + b 2n1 , autrement dit si le bit de poids fort est gal 0, comme la retenue. Cas 3 : (a < 0, b < 0) . Alors 2n a + b < 0 ; par consquent a + b est reprsentable si 2n1 a + b < 0 et non reprsentable sinon. On a Comp2 (a) = a2 + 2n 2 , Comp2 (b) = b2 + (2n )2 . Laddition UAL produit toujours une retenue, les bits de poids fort tant tous deux 1, do Comp2 (a) Comp2 (b) = a2 + (2n )2 + b2 + (2n )2 (R.2n )2 = a2 + b2 + (2n )2 puisque R = 1. Dautre part Comp2 (a + b) = a2 + b2 + (2n )2 si a + b est reprsentable, puisque a + b < 0. Donc lquation (2.1) est vraie si et seulement si a + b > 2n1 , donc si 2n + a = b > 2n1 , autrement dit si le bit de poids fort est gal 1, comme la retenue. Q.E.D.

2.6

Reprsentation des nombres fractionnaires

Tout nombre fractionnaire scrit comme la somme dune partie entire (suprieure ou gale 1) et dune partie fractionnaire (comprise entre 0 et 1). Or, le principe de la dcomposition polynmiale dun entier en base b stend de faon immdiate la partie fractionnaire dun nombre, exprime comme une somme de puissances ngatives de b (puisque par dnition la partie fractionnaire est infrieure 1). Autrement dit : a = qn1 .bn1 + qn2 .bn2 + . . . + q1 .b1 + q0 .b0 + q1 .b1 + q2 .b2 + . . . + qm .bm
n 1 m

=
i=0

qi .b

+
j =1

qj .bj partie fractionnaire

partie entire

avec qi et qj {0, . . . , b 1} pour 0 i n 1 et 1 j m.

24

Exemple 2.11 3 ( )10 = 0.100 + 7.101 + 5.102 4 25, 7610 = 2.101 + 5.100 + 7.101 + 6.102 1 ( )5 = 0.50 + 2.51 + 2.52 + 2.53 + . . . 2 0.50 + 2.51 + 2.52 + 2.53 trois dcimales aprs la virgule 0, 011012 = 0.20 + 0.21 + 1.22 + 1.23 + 0.24 + 1.25 10 = 3.100 + 1.101 + 4.102 + . . . 3.100 + 1.101 + 4.102 deux dcimales aprs la virgule

Lensemble des nombres fractionnaires est donc un sous-ensemble des rationnels. Dit autrement, un nombre fractionnaire dsigne un nombre rationnel (le quotient de deux entiers naturels) quand le dveloppement polynmial de ce nombre est ni, ou dans le cas contraire, son approximation partir dun dveloppement ni. Il permet donc aussi lapproximation nie dun nombre irrationnel. La conversion dun nombre fractionnaire seectue par la conversion de la partie entire, puis par la conversion de la partie fractionnaire. La conversion des nombres entiers a t vue prcdemment, on note f , la partie fractionnaire : f = q1 .b1 + q2 .b2 + . . . + qm .bm en multipliant par b, on obtient : b.f = q1 .b0 partie entire + q2 .b1 + . . . + qm .bm+1 partie fractionnnaire

on a donc dtermin q1 . Notons maintenant f la partie fractionnaire de f : f = q2 .b1 + . . . + qm .bm+1 en multipliant par b, on obtient : b.f = q2 .b0 partie entire + q3 .b1 + . . . + qm .bm+2 partie fractionnaire

on a donc dtermin q2 et on rpte ainsi lopration jusqu la dtermination de qm . La reprsentation de f en base b est q1 q2 , . . . , qm . Exemple 2.12 Conversion de 0, 75 en binaire : la partie entire de 0, 75 est 0, la partie fractionnaire est 0, 75 : 0, 75 2 = 1, 50 q1 = 1

0, 00 2 = 0, 00 q3 = 0 0, 75 s crit donc en binaire 0, 1102 . 25

0, 50 2 = 1, 00 q2 = 1

Exemple 2.13 Conversion de 1, 57 en binaire : la partie entire de 1, 57 est 1, la partie fractionnaire est 0, 57 : 0, 57 2 = 1, 14 q1 = 1

0, 12 2 = 0, 24 q5 = 0 1, 57 s crit en binaire 1, 100102 .

0, 56 2 = 1, 12 q4 = 1

0, 28 2 = 0, 56 q3 = 0

0, 14 2 = 0, 28 q2 = 0

Il existe deux formats de codage des nombres fractionnaires : la reprsentation en virgule xe et la reprsentation en virgule ottante. Reprsentation en virgule xe En virgule xe, la virgule nest pas reprsente, elle est virtuelle : cest le programmeur qui dcide du nombre de chires avant et aprs la virgule. Sil sagit dun codage trs naturel dun nombre fractionnaire, il prsente cependant un inconvnient : il faut penser conserver un certain nombre de chires avant et aprs la virgule faute de quoi un dpassement de capacit risque de se produire. Mais la ncessit de conserver ces chires, peut dune part amener une approximation assez mauvaise du nombre reprsenter, et dautre part ralentit le temps dexcution des direntes oprations. Exemple 2.14 Soient a = 4328 et b = 3612 deux nombres entiers de 4 chires, en virgule xe pour pouvoir calculer correctement leur produit, il faut penser conserver au moins 8 chires avant la virgule, car le produit, a b = 15632736, ncessite 8 chires. Reprsentation en virgule ottante En virgule ottante, le systme de reprsentation est indpendant du nombre de chires signicatifs. x= s signe m mantisse be base et exposant

La mantisse m est exprime dans la base b. La prcision est le nombre de chires de la mantisse, lexposant est un nombre entier sign. En machine, b = 2. Un nombre dcimal a une innit de reprsentations mantisseexposant : Exemple 2.15 Par exemple, en notation dcimale 3, 14 = 3, 14 100 = 0, 314 101 = 314 102 . . . Clairement, la reprsentation des nombres fractionnaires pose un problme de prcision. Lordinateur travaillant sur des reprsentations nies, plusieurs dicults se prsentent :

26

1. Dune part, on est souvent amen approximer la valeur dun nombre. Par exemple, que ce soit en base 10 ou en base 2, 1/3 nest pas reprsentable prcisment, ni en virgule xe, ni en virgule ottante, puisque lensemble des nombres fractionnaires reprsentables en machine (appels usuellement, mais tort, rels dans le jargon informatique) est un sousensemble propre des rationnels. La question est alors darriver minimiser lerreur issue de larrondi, cest--dire minimiser lerreur absolue (= valeur approche valeur relle) et lerreur relative (= erreur absolue ) qui en rsulte, correspondant au pourcentage de | valeur relle | dviation de larrondi par rapport la valeur exacte. 2. Dautre part, et on le sait dj, il nest pas possible de reprsenter en machine des nombres arbitrairement grands ou petits en valeur absolue. Or, la longueur dun mot de type donn tant xe par larchitecture, le choix du nombre de positions binaires attribues lexposant dune part, et la mantisse dautre part, reprsente un compromis : si lon attribue plus de positions lexposant, on augmente la plage de reprsentation, mais la prcision se trouve diminue. Inversement, si lon attribue plus de positions la mantisse, la prcision se trouve augmente, mais la plage de reprsentation est plus restreinte. 3. Enn, et puisquil sagit de nombres, il est ncessaire de disposer dun format unique permettant dassurer leur comparaison. Sachant que les algorithmes de comparaison procdent (naturellement) une comparaison chire chire (en binaire bit bit) partir des poids forts, comment par exemple comparer ecacement 31, 4 101 et 4, 13 101 ? On constate sans dicult sur cet exemple que lutilisation dun format de reprsentation unique (par exemple 3, 14 100 et 41, 3 100 ) rend cette comparaison immdiatement plus aise. Le choix dune valeur unique dexposant, qui facilite ici la lecture par un tre humain, nest toutefois pas la solution la plus adquate une reprsentation en machine. Dans ce dernier cas, on prfre utiliser un cas particulier de reprsentation scientique (un seul chire avant la virgule dans la mantisse), appel reprsentation normalise (un seul chire, dirent de 0, avant la virgule dans la mantisse). Par exemple, 4, 13 101 est en reprsentation normalise (ce qui nest pas le cas pour 41, 3 100 ). La normalisation produit la fois une reprsentation unique et une rpartition quilibre des nombres. A la suite de [Goldberg91], considrons titre dillustration lexemple (simpliste) de normalisation de nombres ottants exprims en base 2 sur 3 bits de mantisse avec un exposant sur 2 bits pouvant prendre les valeurs successives 1, 0, 1, 2 (correspondant un codage en excs 3, dont le principe est expos un peu plus loin). En considrant uniquement des nombres positifs, les mantisses disponibles aprs normalisation sont : 1, 002 = 110 1, 012 = 1, 2510 1, 102 = 1, 510 1, 112 = 1, 7510 chacune tant multiplie avec lune des quatre valeurs possibles de baseexposant parmi 21 , 20 , 21 , 22 , soient seize nombres normaliss au total. Les valeurs successives obtenues

27

sont : 1.21 , 1, 25.21 , 1, 5.21 , 1.75.21 soient 0, 5 0, 625 0, 75 0, 875 1.20 , 1, 25.20 , 1, 5.20 , 1.75.20 1, 25.21 , 1, 25.22 , 1, 5.21 , 1, 5.22 , 1.75.21 1.75.22 soient 1 1.21 , 1.22 , soient soient 2 4
1 0,125 0,25 0,5 0,125 0,25 0,5 1 0,125 0,25 0,5 1

1, 25 2, 5 5

1, 5 3 6

1, 75 3, 5 7

La gure suivante dcrit les nombres reprsents :


1 2

Les barres fonces correspondent au cas o la mantisse vaut 1. Dans chaque intervalle, lespacement est double du prcdent : la dirence entre deux nombres conscutifs nest pas constante, mais lerreur relative cre par un arrondi est, elle, constante. Remarquons encore quen base 2, et en reprsentation normalise, le seul chire dirent de zro avant la virgule tant ncessairement 1, on peut considrer quil est inutile de gaspiller un bit pour lindiquer. La mantisse comporte donc souvent conventionnellement un 1 implicite, et dans lexemple prcdent, deux bits susent alors la reprsentation de la mantisse (ou inversement, trois bits permettent de gagner en prcison). En laissant momentanment de ct la question de la reprsentation de zro (non normalis par dnition), peut-on se contenter des seules reprsentations normalises ? Dans lexemple trait ci-dessus, un vide important apparat entre zro et le plus petit nombre normalis accessible, en loccurence 1/2. Cela signie que toute valeur prise dans la plage [0, 1/2[, trop petite pour tre reprsente, est approxime par 0. Bien sr, lexemple utilis dcrit ici une situation plutt grossire, et il sut daugmenter le nombre de bits allous lexposant pour gagner en plage de reprsentation : par exemple, en passant lexposant de deux trois bits, il devient possible de reprsenter des nombres sous forme normalise entre 1/4 et 8. On peut alors lgitimement penser quil sut dlargir la plage de reprsentation lie lexposant autant que ncessaire pour approximer de faon plus satisfaisante les nombres proches de zro. Pour autant, aussi loin quon aille, il est ais de constater quun dsquilibre subsiste sur lerreur relative dun arrondi, selon quil est eectu dans lintervalle des nombres normaliss, ou dans lintervalle qui spare zro du premier nombre normalis accessible. Une consquence grave dcoulant de cette situation est que la soustraction en machine de deux nombres normaliss peut donner pour rsultat zro alors que ces nombres sont distincts. Par exemple, x = 1, 012 .21 et y = 1, 002 .21 sont deux nombres normaliss distincts, dont la dirence x y = 0, 625 0, 5 = 0, 125 = 1 8 . La soustraction eectue en machine est x y = 0 parce que la dirence x y , trop petite pour tre reprsente ici par un nombre normalis, est arrondie zro. On a donc x y = 0 alors que x = y ! Autrement dit, deux codes identiques du point de vue mathmatique peuvent produire des rsultats dirents : par exemple [Goldberg91], le fragment de code if not(x=y) then z=1/(x-y) risque de conduire une division par zro inattendue, alors que if not(x-y=0) 28

then z=1/(x-y) ne produit pas derreur. Il est donc essentiel de prserver la proprit (x = y ) (x y = 0) (2.2)

La solution consiste autoriser lutilisation de valeurs dnormalises entre zro et le premier nombre normalis accessible de faon remplir le vide existant entre ces deux valeurs. Dans notre exemple, cela revient placer lensemble des nombres dnormaliss disponibles, soient a priori seize nombres compris entre 0 (inclus) et 1/2 (exclus). En ralit, sagissant de nombres dnormaliss, lunicit de la reprsentation acquise la normalisation nest pas conserve, et sur les seize reprsentations possibles, seules quatre ne correspondent pas des reprsentations de nombres dj obtenus. Plus prcisment, partir des quatres valeurs disponibles de mantisse 0, 002 = 010 0, 012 = 0, 2510 0, 102 = 0, 510 0, 112 = 0, 7510 et des quatre valeurs possibles de baseexposant parmi 21 , 20 , 21 , 22 , on obtient les valeurs successives suivantes : 0.21 , 0, 25.21 , 0, 5.21 , 0.75.21 soient 0
0,125 1 8

0,125

1 4

0,125

1 4

1 8

3 8

Les douze reprsentations dnormalises restantes (0.20 , 0, 25.20 , 0, 5.20 , 0.75.20 , 0.21 , 0, 25.21 , 0, 5.21 , 0.75.21 , 0.22 , 0, 25.22 , 0, 5.22 , 0.75.22 ) correspondent des valeurs dj obtenues. Quatre nombres dnormaliss (dont zro) sont donc placer :

1 8

1 4

3 8

1 2

et on obtient nalement la rpartition suivante : 0


1 2

dnormaliss

normaliss

Il est ais de vrier la validit de la proprit 2.2 pour x et y normaliss en montrant que la plus petite dirence que lon peut obtenir entre x et y est gale au plus petit nombre dnormalis dirent de zro constructible par cette mthode. Si lapproche utilise garantit bien la validit de la proprit 2.2 sur les nombres normaliss, elle suscite aussi quelques remarques... En premier lieu, lutilisation dun 1 implicite pour le bit de partie entire des 29

nombres normaliss implique de distinguer les nombres dnormaliss par un moyen qui ne fasse pas appel la partie entire (en loccurence zro pour un nombre dnormalis). Une possibilit est par exemple dutiliser une valeur spcique dexposant. En second lieu, si la proprit 2.2 est vrie pour les nombres normaliss, par contre la dirence de deux nombres dnormaliss peut elle-mme tre trop petite pour tre reprsente, mme de faon dnormalise, et peut donc gnrer un arrondi zro. Il est donc important de tenir compte de la plus petite valeur reprsentable, et de la faon dont on procde un arrondi. La prise en compte de toutes les questions lies la reprsentation et au traitement des ottants a suscit de trs longs dbats entre constructeurs de machine et utilisateurs du calcul scientique. Cest la raison pour laquelle le standart actuel, la norme IEEE 754, initie en 1977, na nalement t compltement adopte quen 1985. Cette norme fait dailleurs actuellement lobjet de nouvelles rvisions, sous le nom IEEE 754r. Le standard IEEE 4 prescrit lutilisation de la reprsentation normalise en signe et valeur absolue pour la mantisse, le positionnement des bits dexposant entre le bit de signe et les bits de la mantisse, et distingue deux formats : simple et double prcision, chacun de ces deux formats pouvant tre en outre tendus. 1 s 1 s Simple prcision (32 bits) 8 23 E (exposant) M (mantisse) Double prcision (64 bits) 11 52 E (exposant) M (mantisse)

Il ais de constater que le positionnement relatif des dirents champs (bit de signe, exposant, mantisse) est destin faciliter la comparaison de deux nombres ottants. Un algorithme de comparaison, partant donc des bits de poids forts, traitera dabord les signes, puis les exposants, et enn les mantisses sous forme normalise : clairement, ds quun bit du premier nombre comparer est infrieur ou suprieur au bit de mme rang du second nombre traiter, la comparaison est termine. Sans plus de prcision toutefois, deux problmes demeurent a priori : Une dicult surgit dans le cas de la reprsentation du zro. Evidemment, la mantisse du nombre zro doit contenir dans toutes les positions binaires correspondantes des chires 0. Thoriquement, son exposant peut avoir nimporte quelle valeur, mais compte-tenu de la faon dont sexpriment les nombres qui sapprochent de zro (cest--dire par des valeurs de puissances ngatives de plus en plus leves), il est cohrent que la valeur de lexposant pour zro soit la puissance ngative la plus leve possible. Un tel zro est appel zro propre. Si lexposant est donn en complment deux, et en dehors de toute tentative de normalisation, la reprsentation du zro propre en simple prcision (par exemple) est alors : 0 signe 10000000 exposant 00000000000000000000000 mantisse

Cette reprsentation ne contient pas le bit 0 dans toutes les positions, ce qui constitue un inconvnient au moment du test et pose un problme de compatibilit avec la reprsentation de zro en virgule xe (reprsentation qui ne contient que des zros dans toutes les positions).
4. Acronyme de Institute of Electrical and Electronics Engineers

30

Plus grave encore, un nombre ayant un exposant ngatif apparatra suprieur un nombre ayant un exposant positif. Le problme provient de la comparaison bit bit des des reprsentations binaires : par exemple 11000000 apparatra suprieur lexposant 01000000, alors quen complment deux, le premier est ngatif, et le second positif. Pour remdier ces problmes, le standard IEEE utilise un exposant corrig e, donn en valeur par excs dune constante gale au nombre de positions binaires positives, moins une, aectes lexposant. Par exemple, en simple prcision, donc sur 8 bits, la constante utilise est 256/2 1 = 127. Par consquent, e reprsentant la valeur relle de lexposant en complment deux, e = interprtation de E en naturel 127. Lutilisation dun exposant corrig permet la translation de 127 valeurs ngatives vers des reprsentations positives considres comme quivalentes, et on obtient la correspondance suivante : Binaire 00000000 00000001 ... 01111111 10000000 ... 11111111 e (excs 127) 127 (emin ) 126 ... 0 +1 ... +128 (emax ) E (interprtation non signe) 0 1 ... 127 128 ... 255

Il est facile de constater que cette approche permet bien dobtenir une reprsentation homogne de zro : linterprtation en naturel du plus grand exposant ngatif reprsentable sur 8 bits tant 127 (8 bits positionns 1), lexposant corrig e = 127 127 = 0, do une reprsentation ottante de zro dont tous les bits sont positionns 0, mais dont lexposant exprime bien la puissance ngative la plus leve possible. Puisquen simple prcision, e est linterprtation de E en excs 127 (e = E10 (28 /2 1), on a emin = 127, emax = +128. En double prcision, e est linterprtation de E en excs 1023 (e = E10 216 /2 1), on a donc emin = 1023, emax = +1024. Une question reste en suspend : en eet, le choix par le standard IEEE dun dplacement de 127 valeurs droite (en simple prcision) nest pas le plus naturel a priori. Puisque sur 256 congurations binaires disponibles en complment deux, on compte de 128 +127, il semble cens de considrer alors un dplacement de 256/2 = 128 positions vers la droite (le nombre de positions ngatives disponibles), au lieu du dplacement de 256/2 1 = 127 positions adopt. Autrement dit, pourquoi enlever 1, cest--dire prendre le parti de ne compter qu partir de 127 ? En loccurence, le standard IEEE fait le choix de rserver les valeurs extrmes de e la reprsentation de valeurs exceptionnelles, dont les nombres dnormaliss. On distingue ainsi le cas emin < e < emax , associ aux nombres normaliss, le cas e = emin , associ aux nombres dnormaliss (dont zro), et enn le cas e = emax associ la reprsentation de valeurs particulires : , +, dune part et NaN (Not a Number ) dautre part. La prsence des innis permet de simuler la clture topologique de R : par exemple, la division dun nombre distinct de zro par zro renvoie un des innis. Le codage dun inni est caractris par le bit de signe, le champs de lexposant valant emax , et la mantisse tant gale zro. La valeur particulire NaN permet la dtection dune opration invalide : tentative de division de zro par lui mme, division dun inni par un inni, multiplication de zro par 31

un inni, soustraction de deux innis, extraction de la racine carre dun nombre ngatif... Toute opration dont un des oprateurs est NaN renvoie NaN. Le codage dun NaN est caractris par le fait que le champs de lexposant vaut emax , la mantisse tant dirente de zro. Lensemble des cas possibles est nalement rpertori dans le tableau suivant : Cas Normalis Dnormalis Zro Inni NaN e (en excs) emin < e < emax e = emin e = emin e = emax e = emax M quelconque =0 0 0 =0 valeur 1, M 2e s (1) 0, M 2emin (1)s 0 (1)s NaN (1)s

Exemple 2.16 Soit le nombre +87, 125 quon veut reprsenter comme un ottant en simple prcision. On convertit en binaire, sparment sa partie entire et sa partie fractionnaire : 8710 = 10101112 0, 12510 = 0, 0012 do 87, 12510 = 1010111, 0012 . En eectuant la normalisation, on obtient 1010111, 0012 = 1, 0101110012 26 donc 1, 010111001 reprsente la mantisse (dont le 1 en partie entire est laisser implicite) 110 reprsente lexposant lexposant corrig est 10000101 (133 = 6 + 127). Par consquent, la reprsentation de +87, 125 comme un ottant en simple prcision est : 0 10000101 01011100100000000000000 La reprsentation de 87, 125 ne dire que par le bit de signe : 1 10000101 01011100100000000000000 Les tailles des champs dvolus la reprsentation de la fraction et de lexposant donnent un ordre de magnitude important. Le plus grand nombre ottant reprsentable en simple prcision est donn par : (1 + 21 + 22 + . . . + 223 ) 2+127 = 1 224 2+127 1 21 = 2 (1 224 ) 2+127 = (2 223 ) 2+127 = 2128 2104

3, 402 823 466.1038 Le standard IEEE impose le reprage des situations suivantes : 32

dpassement de prcision (underow) dpassement de capacit (overow) Le reprage et un bon traitement de ces situations exceptionnelles peut tre vital dans certains cas. Le crash du vol 501 de la fuse Ariane aprs quarante secondes de vol en juin 1996 en est un exemple particulirement patent : d un mauvais traitement dun dpassement de capacit, il a cot la bagatelle de 500 millions de dollars, et mis mal un programme de dveloppement dune dizaine d annes pour un cot estim 7 billions de dollars... Lorigine du problme sest avr tre une erreur de programmation dans le systme de rfrence inertielle : un ottant cod sur 64 bits, et donnant la vitesse horizontale de la fuse, tait converti en entier sign sur 16 bits. Lentier obtenu tant plus grand que 32767 (le plus grand entier positif reprsentable en complment deux sur 16 bits), la conversion chouait, dclanchant une exception non traite. Le plus remarquable est que tous les tests logiciels avaient t passs avec succs par le programme en question, mais quils avaient t eectus avec les donnes dAriane 4, fuse moins puissante et donc moins rapide quAriane 5, pour laquelle la vitesse horizontale restait infrieure au maximum de 32767 (cf. [Arnold98])... Outre le traitement de situations exceptionnelles, la norme stipule quatre modes possible darrondi : Arrondi au nombre pair le plus proche (mode par dfaut) Arrondi zro Arrondi au nombre suprieur le plus plus proche Arrondi au nombre infrieur le plus plus proche La standard IEEE 754 prcise de quelle faon raliser un certain nombre d oprations arithmtiques sur les ottants. Les oprations les plus courantes (comparaison, addition, soustraction, multiplication, et division) sont traites de la faon suivante : Comparaison. Le format de codage dun ottant (signe, exposant en valeur par excs, mantisse) permet, on la vu, deectuer la comparaison de deux ottants bit bit partir des poids forts. Addition et soustraction. Laddition et la soustraction de deux ottants sont ralises partir dune dnormalisation du ottant le plus petit an de rendre les exposants gaux en minimisant une possible perte de prcision. Les mantisses sont ensuite additionnes ou soustraites, avant renormalisation. Plus prcisment, lalgorithme suivi est le suivant : Dbut x et y, deux flottants additionner ou soustraire, respectivement sous la forme : signe_x exp_x mant_x signe_y exp_y mant_y; Si (exp_x > exp_y) alors exp_G = exp_x; exp_p = exp_y; mant_G = mant_x; mant_p = mant_y; sinon exp_G = exp_y; exp_p = exp_x; mant_G = mant_y; 33

mant_p = mant_x; diff = exp_G - exp_p; slr(mant_p) sur diff bits; mant_res = mant_G +/- mant_p; arrondir mant_res; Si (underflow ou overflow) alors lever une exception; sinon normaliser : exp_res et mant_res modifis; rsultat = sign_res exp_res mant_res; Fin Par exemple, laddition des deux ottants en simple prcision x = 1, 01000 . . . 0 25 et y = 1, 11010 . . . 0 23 est eectue de manire suivante : Calcul de la dirence entre lexposant le plus grand et lexposant le plus petit : expx expy = 3 + 5 = 2 Alignement de la mantisse du plus petit nombre sur la valeur dexposant le plus lev do dcalage de deux positions droite de la mantisse de plus petit exposant, ce qui dnormalise y : manty = 0, 01010 . . . 0. Les exposants tant maintenant gaux, il est possible de procder laddition des mantisses : mantres = 0, 01010 . . . 0 + 1, 11010 . . . 0 = 10, 0010 . . . 0 Arrondi par dfaut (nombre pair le plus proche), et renormalisation : mantres = 1, 00010 . . . 0 expres = 4

Laddition des ottants x et y donne : rsultat = 1, 00010 . . . 0 24 Remarque : Laddition ottante nest pas associative... Etants donns par exemple trois nombres ottants en simple prcision x = 1, 5 1038 z = 1 y = 1, 5 1038

x + (y + z ) = (x + y ) + z En eet, compte-tenu des limitations imposes sur la prcision et des approximations ncessairement ralises au cours des calculs, la dirence de magnitudes entre x ou y dune part, et z dautre part, amne aux squences de calcul direntes suivantes : x + (y + z ) = 1, 5 1038 + (1, 5 1038 + 1) = 0 1, 5 1038 + (1, 5 1038 )

(x + y ) + z = (1, 5 1038 + 1, 5 1038 ) + 1 = 0+1 = 1 34

Multiplication. Le produit de deux ottants a pour rsultat le produit des signes de chacun des ottants, suivi du produit des mantisses, et enn de laddition des exposants respectifs. Plus prcisment, lalgorithme de multiplication est le suivant : Dbut x et y, deux flottants multiplier, respectivement sous la forme : signe_x exp_x mant_x signe_y exp_y mant_y; Effectuer en parallle 1) et 2) : 1) traitement des mantisses et des signes : mant_res = mant_x.mant_y; signe_res = signe_x.signe_y; 2) traitement des exposants : exp-res = exp_x + exp_y - valeur par excs; arrondir mant_res; Si (underflow ou overflow) alors lever une exception; sinon normaliser : exp_res et mant_res modifis; rsultat = sign_res exp_res mant_res; Fin Par exemple, la multiplication des deux ottants en simple prcision x = 1, 01000 . . . 0 25 et y = 1, 11010 . . . 0 23 est eectue de manire suivante : 1. Produit des mantisses, des signes, et calcul parallle de lexposant rsultant : mantx manty = 1, 01000 0 . . . 0 1, 11010 0 . . . 0
18 bits = 10, 0010001000 0 . . . 0 18 36 bits expx + expy + 127 = 3 5 + 127 = 119

bits

2. La mantisse est normalise : on obtient 1, 00100010000 0 . . . 0 2, autrement dit, et sa36 bits chant que la mantisse est exprime sur 23 bits, 1, 00100010 0 . . . 0 , avec pour exposant 16

rsultant 120.

bits

Division. La division est eectue de manire standard partir dune suite de soustraction successives. Lalgorithme est le suivant : Dbut x et y, deux flottants diviser, respectivement sous la forme : signe_x exp_x mant_x signe_y exp_y mant_y; Soient Z_x e Z_y le nombre de zro sur les poids forts de x et y; Effectuer en parallle 1) et 2) : 35

1) traitement des mantisses et des signes : sll(mant_x) sur Z_x bits; sll(mant_y) sur Z_y bits; mant_res = mant_x/mant_y; signe_res = signe_x.signe_y; 2) traitement des exposants : exp_res = exp_x - exp_y + valeur par excs - Z_x + Z_y; arrondir mant_res; Si (cas exceptionnel) alors lever une exception; sinon normaliser : exp_res et mant_res modifis; rsultat = sign_res exp_res mant_res; Fin Une description prcise de la norme IEEE 754, dtaillant en particulier larithmtique tendue et la gestion des erreurs, est prsente dans [Goldberg91].

2.7

Autres codages : codes de Gray, codes dtecteurs, codes correcteurs

De nombreux types de codages des nombres sont envisageables. Si les codes binaires tudis dans les paragraphes prcdents sont cohrents par rapport des besoins calculatoires arithmtiques, ils sont inadapts dautres applications comme par exemple le cryptage, le transport de donnes, la numrisation rapide partir de capteurs. . . Codes de Gray Illustrons le problme avec lexemple suivant : on souhaite minimiser le nombre de commutations de bits eectues par un compteur au moment du passage dune conguration binaire la suivante. Avec le codage binaire des entiers sous forme de dcomposition polynmiale en base 2, ce critre nest pas respect : par exemple, lorsquon passe de la valeur 7 (01112 ) la valeur 8 (10002 ), quatre bits sont changs dun coup. Il est pourtant possible dassurer la commutation dun seul bit la fois quelque soient les entiers n et n + 1 considrs. La famille de codes assurant une telle proprit est celle des codes de Gray. Un tel code fut utilis en 1878 par lingnieur Emile Baudot dans la conception de son tlgraphe ; toutefois cest Frank Gray, chercheur du Bell Labs, qui en ralisa en 1953 la premire tude mathmatique. Dnition 2.1 Tout ordre dni sur les 2n congurations binaires de mots de n bits tel que le passage dune conguration la suivante ne change quun seul bit est un code de Gray 5 . Exemple 2.17 Un code de Gray sur 3 bits est (000, 010, 011, 001, 101, 111, 110, 100). Parmi les codes de Gray, le code binaire rchi est remarquable en ce sens qu la proprit caractristique dun code de Gray, il ajoute la proprit dadjacence : deux congurations binaires successives ne dirent que par un bit de mme rang.
5. De faon alternative et pour les spcialistes : Tout cycle hamiltonien sur un hypercube de dimension n dtermine un code de Gray. . .

36

Exemple 2.18 Le codage binaire rchi des entiers de 0 15 est : dcimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 binaire pur 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 binaire rchi 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000

Lalgorithme suivant permet de gnrer du code binaire rchi sur n bits : Dbut squence = 0 1; rang = 1; Tant que rang < n : raliser une copie de la squence; inverser lordre de la copie; concatner 0 la gauche de chaque lment de la squence; concatner 1 la gauche de chaque lment de la copie; squence = concatnation(squence,copie); rang = rang + 1; Fin Le code binaire rchi sert notamment la fabrication des tables de Karnaugh, qui seront vues dans le chapitre suivant. Les codes dtecteurs Il est pratiquement impossible dviter lapparition derreurs dans un ordinateur, erreurs de transmission, de traitement, pannes dlments internes ou externes. Une mthode simple et ecace pour dtecter un bit en erreur dans un caractre ou un mot est le contrle de parit. Il sagit dajouter aux n bits dun mot ou dun caractre, un bit supplmentaire appel bit de parit. Dans le cas du contrle impair de parit, on ajoute un bit de telle sorte que le nombre total de bits gaux 1 soit impair. Dans le cas du contrle pair de parit, on ajoute un bit de telle sorte que le nombre total de bits gaux 1 soit pair.

37

Exemple 2.19 Le code ASCII, avec un contrle de parit pair : bit de parit 1 1 0 1 0 26 1 1 1 1 1 25 1 1 1 1 0 24 0 0 0 1 0 23 0 0 0 1 0 22 0 0 0 0 0 21 0 1 1 1 0 20 1 0 1 0 1 caractre a b c z A

Le contrle de parit permet dans le cas dune erreur, de dtecter lerreur, cest dire de savoir quil y a eu une erreur sans pour autant la corriger. Pour cela, on attribue aux mots du code une proprit qui disparat dans le cas dune erreur. Le principe est le suivant : on fabrique dabord les messages sous forme de mots binaires de mme longueur et on ajoute une nouvelle composante, la somme modulo 2 des composantes. Par exemple, 10110 devient 101101 ou encore 11000 devient 110000. La dernire composante est appel bit de parit, 0 si la somme des composantes du mot initial est paire, 1 dans le cas contraire. De ce fait, dans chaque nouveau mot le nombre de 1 est pair, cest--dire que la somme modulo 2 de toutes les composantes est nulle. Si la rception cette somme nest pas nulle, cest quil y a au mois une erreur. Si cette somme est nulle, et dans lhypothse que lon na pas pu faire plus dune erreur, alors le mot reu est correct. Une autre mthode est celle de la rptition. Elle consiste par exemple envoyer deux fois de suite le mme mot. Si lon suppose quil y a eu au plus une erreur sur lensemble des deux mots (condition plus contraignante que dans le cas du bit de parit), la dtection se fait en constatant que les deux mots reus sont dirents. On pourra mme corriger en envoyant trois fois le mme mot, mais il faudra supposer quil y a eu au plus une erreur sur lensemble des trois mots (de plus en plus contraignant). Dans ce cas il y aura necessairement un mot rpt deux fois la rception et ce sera le bon. Sur ce dernier exemple on voit apparatre un problme important : pour corriger plusieurs erreurs et pour des mots de grandes longueurs 6 , ce procd devient rapidement onreux en transmission car il augmente considrablement la longueur des mots transmettre, et donc le temps de transmission. On cherchera donc, en plus de la possibilit de correction, un codage le plus conomique possible en longueur des mots. Toute la thorie du codage correcteur derreurs vise gnraliser de manire conomique les procds lmentaires de bit de parit et de rptition. Les codes correcteurs Protger les transmissions des erreurs de faon ecace, est prcisment lobjet que se xe la thorie des codes correcteurs derreurs. La necessit dutiliser plus de symboles est due lintroduction de la redondance qui est lun des matre-mots du codage correcteur derreurs. Comme dans le langage courant cest la redondance qui permet de se protger contre la perte dinformation. Cest pourquoi les mots dune langue sont susamment longs, ce qui permet quils soient susamment dirents les uns des autres, an que lon puisse les reconstituer lors dune coute imparfaite. Impossible de confondre fli..tations pour flicitations avec congd..ment pour congdiement. De mme, on enfonce le clou au tlphone en disant, par exemple : C comme Carole, O comme Odile, D comme Daniel, A comme Alfred, G comme Galois, E comme Europe, C.O.D.A.G.E. : codage.
6. La longueur dun mot est le nombre de symboles qui le constituent.

38

Dans le mme ordre dides, examinons ce quon peut faire avec des 0 et des 1. On supposera maintenant, et dans toute la suite, que les mots ont toujours le mme nombre de symboles (ou de lettres, si lon prfre). Ce nombre dtermine la longueur des mots. Exemple 2.20 Messages a b c d e Code 000 010 001 110 101

Supposons que le mot envoy soit 001 et que le mot reu soit 011, cest dire avec une erreur dans la deuxime position. Il est impossible de savoir quel est le message initial, car 011 peut trs bien provenir galement 010 avec une erreur dans la troisime position. La raison de cela est videmment que 001 ressemble trop 010. Au contraire, un bon exemple (pdagogique) est donn par le tableau ci-dessous. Exemple 2.21 On a reprsent 5 mots, C1 , C2 , C3 , C4 , C5 de longueur 6, et en dessous de chacun deux, tous les mots erronns possibles qui peuvent en provenir en faisant une erreur. C1 110011 010011 100011 111011 110111 110001 110010 C2 010100 110100 000100 011100 010000 010110 010101 C3 000111 100111 010111 001111 000011 000101 000110 C4 101101 001101 111101 100101 101001 101111 101100 C5 011001 111001 001001 010001 011101 011011 011000

On constate que les dirents ensembles de mots erronns sont deux deux disjoints. Il ny a donc pas dambiguit possible dans le cas dune seule erreur et lon peut donc corriger le mot reu par simple comparaison avec les mots du code C1 , C2 , C3 , C4 , C5 . Un seul dentre eux dire du mot reu en une seule position. Pour gnraliser dans la suite lexemple prcdent, on va sintresser la transmission de messages qui peuvent se dcrire au moyen dun n-uple (x1 , x2 , . . . , xn ) o les xi appartiennent un ensemble A, appel alphabet. Chaque n-uple ainsi obtenu sappelle alors un mot , lentier n sappelle la longueur du mot, et lensemble des mots ainsi fabriqus sappelle un code (sur lalphabet A). Lalphabet le plus utilis est lensemble des nombres 0 et 1. A partir dune telle reprsentation des messages, on peut tenter de dcrire des proprits concernant la possibilit de dtecter et corriger des erreurs ventuelles apparues en cours de transmission. Inversement, en choisissant convenablement lalphabet et le code, on peut aussi tenter damliorer la transmission propos des erreurs. En particulier, on peut choisir, dans ce but, un alphabet et un code dots de structures algbriques et combinatoires particulires. Soit A un ensemble ni, non vide, et n un entier naturel non nul. An dsigne lensemble des x = (x1 , x2 , . . . , xn ) avec xi A. 39

Dnition 2.2 Soient x et y deux lments de An . On appelle distance de Hamming entre x et y , le nombre de composantes pour lesquelles ces lments dirent. Plus prcisement si x = (x1 , x2 , . . . xn ) et y = (y1 , y2 , . . . yn ), alors : d(x, y ) = {i {1, 2, . . . , n} tel que xi = yi } dsignant la cardinalit de lensemble considr. Dnition 2.3 Un code sur A de longueur n est un sous-ensemble C de An . Lensemble A est appel lalphabet, n la longueur du code C et les lments de C sont appels les mots du code. Exemple 2.22 Le code C = {(0, 1, 1, 0, 1, 0), (1, 1, 1, 0, 1, 1), (1, 1, 1, 1, 1, 1), (1, 1, 0, 0, 0, 0), (0, 1, 1, 1, 0, 0)} est un code de longueur 6 sur lalphabet A = {0, 1}. Lorsquon utilise un code pour transmettre des messages, si x = (x1 , x2 , . . . xn ) est un mot envoy et x = (x 1 , x2 , . . . xn ) le mot reu, ventuellement entach derreurs, alors le nombre derreurs commises sur les composantes du mot x est d(x, x ), daprs la dnition de la distance de Hamming. Lorsquon suppose quil ny a pas plus de e erreurs commises 7 , cest--dire, d(x, x ) e, on pourra corriger ces erreurs, autrement dit retrouver x, la condition que chaque mot erron reu ne puisse provenir que dun seul mot du code. Cest dans une note interne de 1948, quHamming donne le moyen de construire des codes corrigeant une erreur ayant le meilleur rendement possible R = k/n, k tant le nombre de symboles du message transmettre. Lalphabet {0, 1} est dlibrment choisi an dutiliser le contrle de parit. Le calcul dun contrle de parit partiel, appel syndrome, est eectu partir de certains symboles du message coder et de certains symboles de contrle. Le syndrome comportant n k symboles doit correspondre aux direntes possibilits derreur et doit donner la position de lerreur exprime en binaire. Exemple 2.23 (Le code de Hamming (7,4)) Le code de Hamming de longueur n = 7, permet de coder des messages comportant k = 4 symboles, en ajoutant n k = 3 symboles de contrle. La construction du syndrome constitu de 3 symboles, repose sur la reprsentation binaire des entiers : Le 1symbole, cest dire le symbole le plus droite, reprsente le rsultat du premier contrle de parit, il correspond aux positions 1, 3, 5, 7, 9, . . . car les reprsentations binaires de ces nombres comportent un 1 en 1position. Le 2symbole reprsente le rsultat du second contrle de parit, il correspond aux positions 2, 3, 6, 7, 10, . . . car les reprsentations binaires de ces nombres comportent un 1 en 2position. Le 3symbole reprsente le rsultat du troisime contrle de parit, il correspond aux positions 4, 5, 6, 7, 12, . . . car les reprsentations binaires de ces nombres comportent un 1 en 3position.
7. Hypothse qui peut tre justie par une tude probabiliste du domaine de la thorie de linformation.

40

Les symboles de contrle ne sont pas placs aprs les symboles du message coder, mais le isymbole de contrle est plac en position 2i1 an de prserver lindpendance des symboles de contrle. Le codage et le dcodage seectuent respectivement de manire suivante : Codage du code de Hamming (7, 4) Soit le message 1010 coder, les symboles du message sont placs ailleurs que sur les positions 1, 2, 4. 1 2 3 1 4 5 0 6 1 7 0

Le 1symbole de contrle correspond la parit des positions 3, 5, 7, donc 1+0+0 1 (mod 2).

Le 2symbole de contrle correspond la parit des positions 3, 6, 7, donc 1+1+0 0 (mod 2).

Le 3symbole de contrle correspond la parit des positions 5, 6, 7, donc 0+1+0 1 Le mot du code correspondant est : 1 1 2 0 3 1 4 1 5 0 6 1 7 0 (mod 2).

Un mot envoy ne peut tre aect par plus dune erreur. Si il ny a pas derreur de transmission le syndrome est gal 000. Dcodage du code de Hamming (7, 4) Soit 1011000 le mot reu alors que le mot transmis est 1011010. Le syndrome est calcul de la faon suivante : Le 1symbole de contrle correspond la parit des positions 1, 3, 5, 7, donc 1+1+0+0 0 (mod 2).

Le 2symbole de contrle correspond la parit des positions 2, 3, 6, 7, donc 0+1+0+0 1 (mod 2).

Le 3symbole de contrle correspond la parit des positions 4, 5, 6, 7, donc 1+0+0+0 1 (mod 2).

Le syndrome est 110 lerreur se trouve donc en position 6 (exprime en binaire), le mot transmis est bien 1011010. Ce code, ayant le meilleur rendement possible pour coder un message de quatre symboles R = 4/7 = 0, 57, est cit, en 1948, par C. Shannon dans son article fondamental sur la thorie de linformation.

41

Chapitre 3

Introduction lalgbre de Boole


La conception des circuits logiques qui constituent la couche physique dun ordinateur ncessite la construction doprateurs logiques dont la description relve dune thorie mathmatique appele algbre de Boole. Outre ce chapitre qui lui est exclusivement consacre, on trouvera dautres lments introductifs lalgbre de Boole dans, par exemple, [DanceaMarchand92] et [Darche02]. On considre lensemble {0, 1} que lon munit des oprations somme logique, produit logique et inversion logique.

3.1

La somme logique

La somme logique est dnie par la table daddition suivante : + 0 1 0 0 1 1 1 1

Soient x et y deux variables boolennes (cest dire que x {0, 1} et y {0, 1}), on associe une variable boolenne didenticateur x + y dont les valeurs sont donnes par la table de vrit suivante qui est la table de vrit de loprateur logique OU : x 0 0 1 1 y 0 1 0 1 x+y 0 1 1 1

La somme logique possde les proprits algbriques remarquables suivantes : associativit : (x, y, z ) {0, 1}3 (x + y ) + z = x + (y + z ) ; commutativit : (x, y ) {0, 1}2 x + y = y + x ; lment neutre : x {0, 1} x + 0 = 0 + x.

42

3.2

Le produit logique

Le produit logique est dni par la table de multiplication : . 0 1 0 0 0 1 0 1

Soient x et y deux variables boolennes, on associe une variable boolenne didenticateur x.y dont les valeurs sont donnes par la table de vrit suivante qui est la table de vrit de loprateur logique ET : x 0 0 1 1 y 0 1 0 1 x.y 0 0 0 1

Le produit logique possde les proprits algbriques remarquables suivantes : associativit : (x, y, z ) {0, 1}3 (x.y ).z = x.(y.z ) ; commutativit : (x, y ) {0, 1}2 x.y = y.x ; lment neutre : x {0, 1} x.1 = 1.x.

3.3

Linversion logique

Linversion est note avec une barre et est dnie par 0 = 1 et 1 = 0. Soit x une variable boolenne, on associe une variable boolenne didenticateur x dont les valeurs sont donnes par la table de vrit suivante qui est la table de vrit de loprateur logique NON : x x 0 1 1 0

Les proprits de linversion logique sont les suivantes : x {0, 1} x + x = 1 ; x {0, 1} x.x = 0.

3.4

Proprits drives

Tout ensemble muni de deux lments particuliers 1 et 0 et des trois oprations somme, produit et inversion logiques vriant toutes les proprits nonces prcdemment est une algbre de Boole. Les proprits suivantes sont des proprits drives dune algbre de Boole : dualit tout non exprim en fonction de + et de 0 est vrai lorsque lon remplace + par . et 0 par 1 ; unicit

43

les lments neutres 0 et 1 pour la somme et le produit logiques, respectivement, sont uniques ; linverse de tout lment est unique ; involution x {0, 1} x = x ; idempotence x {0, 1} x + x = x, x {0, 1} x.x = x ; lment absorbant x {0, 1} x + 1 = 1, x {0, 1} x.0 = 0 ; absorption (x, y ) {0, 1}2 x + x.y = x, (x, y ) {0, 1}2 x.(x + y ) = x ; simplication (x, y ) {0, 1}2 x + x.y = x + y , (x, y ) {0, 1}2 x.(x + y ) = x.y ; formules de De Morgan (x, y ) {0, 1}2 x + y = x.y , (x, y ) {0, 1}2 x.y = x + y ; distributivit du produit sur la somme (x, y, z ) {0, 1}3 x.(y + z ) = (x.y ) + (x.z ) ; distributivit de la somme sur le produit (x, y, z ) {0, 1}3 x + (y.z ) = (x + y ).(x + z ).

3.5

La somme logique exclusive

La somme logique exclusive est dnie par la table daddition suivante : 0 1 0 0 1 1 1 0

Soient x et y deux variables boolennes, cest dire que x {0, 1} et y {0, 1}, on associe une variable boolenne didenticateur x y dont les valeurs sont donnes par la table de vrit suivante qui est la table de vrit de loprateur logique OUexclusif : x 0 0 1 1 y 0 1 0 1 xy 0 1 1 0

La somme logique exclusive possde les proprits algbriques suivantes : associativit : (x, y, z ) {0, 1}3 (x y ) z = x (y z ) ; commutativit : (x, y ) {0, 1}2 x y = y x ; lment neutre : x {0, 1} x 0 = 0 x = x ; 44

lment symtrique : x {0, 1} x x = 0. Lensemble {0, 1} muni de la somme logique exclusive a une structure de groupe ablien.

3.6

Proprits liant somme, inversion, et somme exclusive

distributivit du produit sur la somme exclusive : (x, y, z ) {0, 1}3 x.(y z ) = (x.y ) (x.z ) ; relations avec linversion : (x, y ) {0, 1}2 x y = x y = x y ; (x, y ) {0, 1}2 x y = x y . Lensemble {0, 1} muni de la somme logique exclusive et du produit logique a une structure danneau 1 .

3.7

Expressions boolennes

Dnition 3.1 Soient x1 , x2 , . . . , xn un ensemble de variables boolennes, on appelle expression boolenne sur les variables x1 , x2 , . . . , xn toute variable exprime laide des oprations + , . et de linversion. Exemple 3.1 Voici un exemple dexpression boolenne : (x.y + z ).(y + z ). Les proprits des expressions boolennes sont les suivantes : La somme de 2 expressions boolennes est une expression boolenne ; le produit de 2 expressions boolennes est une expression boolenne ; linverse dune expression boolenne est une expression boolenne. Thorme 3.1 Lensemble des expressions boolennes sur un ensemble de variables x1 , x2 , . . . , xn est une algbre de Boole.

3.8

Fonctions boolennes et formes canoniques


f : {0, 1}n {0, 1}

Dnition 3.2 On appelle fonction boolenne, la fonction dnie de la faon suivante : (x1 , . . . , xn ) f (x1 , . . . , xn ). Dnition 3.3 On appelle terme minimal ou minterm sur un ensemble de variables boolennes, le produit logique de ces variables ou de leur inverses logiques tel que chaque variable, ou son inverse, napparat quune seule fois. Exemple 3.2 Dans le cas o n = 3, un minterm est de la forme xi . xj . xk , avec (i, j, k ) {1, 2, 3}. Dans la suite on omettra dcrire le . pour spcier le produit logique, un minterm scrira xi xj xk . Les 23 minterms sont les suivants : x1 .x2 .x3 , x1 .x2 .x3 , x1 .x2 .x3 , x1 .x2 .x3 x1 .x2 .x3 , x1 .x2 .x3 , x1 .x2 .x3 , x1 .x2 .x3
1. Cest un anneau unitaire, puisque par convention un anneau est unitaire.

45

Thorme 3.2 Soit f une fonction boolenne de n variables x1 , . . . , xn alors f scrit comme une combinaison linaire des 2n minterms : f (x1 , . . . , xn ) = f (0, . . . , 0) x1 . . . xn + + f (1, . . . , 1) x1 . . . xn . Les coecients sont obtenus en remplaant dans f (x1 , . . . , xn ), chaque variable par 1 si celle-ci gure dans le minterm correspondant, chaque variable par 0 si son inverse gure dans le minterm correspondant. Exemple 3.3 Une fonction boolenne de 3 variables scrit : f (x1 , x2 , x3 ) = f (0, 0, 0).x1 .x2 .x3 + f (0, 0, 1).x1 .x2 .x3 + f (0, 1, 0).x1 .x2 .x3 + f (0, 1, 1).x1 .x2 .x3 + f (1, 0, 0).x1 .x2 .x3 + f (1, 0, 1).x1 .x2 .x3 + f (1, 1, 0).x1 .x2 .x3 + f (1, 1, 1).x1 .x2 .x3 . Corollaire 3.1 Toute fonction boolenne de n variables, x1 , . . . , xn , scrit de faon unique comme une somme de minterms o chacun gure une fois au plus, cest ce quon appelle la forme canonique disjonctive. Exemple 3.4 f (x, y, z ) = (x + y + z ).(x + y ).z = x.x.z + x.y.z + x.y.z + y.y.z + z.x.z + z.y.z = x.y.z + x.y.z On remarque que dans cet exemple, f (1, 1, 0) = f (0, 0, 0) = 1 et f (0, 0, 1) = f (0, 1, 0) = f (1, 0, 0) = f (0, 1, 1, ) = f (1, 0, 1) = f (1, 1, 1) = 0. Il existe une forme canonique duale, appele forme canonique conjonctive : Dnition 3.4 On appelle terme maximal ou maxterm sur un ensemble de variables boolennes, la somme logique de ces variables ou de leur inverses logiques tel que chaque variable, ou son inverse napparat quune seule fois. Exemple 3.5 Dans le cas o n = 3, un maxterm est de la forme xi + xj + xk , avec (i, j, k ) {1, 2, 3}. Les 23 maxterms sont les suivants : x1 + x2 + x3 , x1 + x2 + x3 , x1 + x2 + x3 , x1 + x2 + x3 x1 + x2 + x3 , x1 + x2 + x3 , x1 + x2 + x3 , x1 + x2 + x3 Thorme 3.3 Soit f une fonction boolenne de n variables x1 , . . . , xn alors f scrit comme un produit des 2n sommes, o dans chacune gure lun des 2n maxterms : f (x1 , . . . , xn ) = (f (0, . . . , 0) + x1 + + xn ). .(f (1, . . . , 1) + x1 + + xn ) Les coecients sont obtenus en remplaant dans f (x1 , . . . , xn ), chaque variable par 0 si celle-ci gure dans le maxterm correspondant, chaque variable par 1 si son inverse gure dans le maxterm correspondant. 46

Exemple 3.6 Une fonction boolenne de 3 variables scrit : f (x1 , x2 , x3 ) = (f (0, 0, 0) + x1 + x2 + x3 ).(f (0, 0, 1) + x1 + x2 + x3 ). (f (0, 1, 0) + x1 + x2 + x3 ).(f (0, 1, 1) + x1 + x2 + x3 ).(f (1, 0, 0) + x1 + x2 + x3 ). (f (1, 0, 1) + x1 + x2 + x3 ).(f (1, 1, 0) + x1 + x2 + x3 ).(f (1, 1, 1) + x1 + x2 + x3 ). Corollaire 3.2 Toute fonction boolenne de n variables, x1 , . . . , xn , scrit de faon unique comme un produit de maxterms o chacun gure une fois au plus, cest ce quon appelle la forme canonique conjonctive. Exemple 3.7 f (x, y, z ) = x.y + z = (x + z ).(y + z ) = (x + y.y + z ).(x.x + y + z ) = (x + z + y.y ).(y + z + x.x) = (x + z + y ).(x + z + y ).(y + z + x).(y + z + x) = (x + z + y ).(x + y + z ).(x + y + z ) On remarque que dans cet exemple, f (0, 0, 0) = f (0, 1, 0) = f (1, 1, 0) = 0 et f (0, 0, 1) = f (1, 0, 0) = f (0, 1, 1, ) = f (1, 0, 1) = f (1, 1, 1) = 1. Toute fonction boolenne de n variables peut scrire comme une combinaison linaire des 2n minterms, cela peut se reprsenter par une table de vrit comportant n + 1 colonnes et 2n lignes comme suit : entier 0 . . . 2n 1 minterm x1 . . . xn . . . x1 . . . xn x1 0 . . . 1 x2 0 . . . 1 ... ... . . . ... xn 0 . . . 1 f (x1 , . . . , xn ) f (0, . . . , 0) . . . f (1, . . . , 1)

Exemple 3.8 La table de vrit de la fonction boolenne de trois variables est : entier 0 1 2 3 4 5 6 7 minterm x1 .x2 .x3 x1 .x2 .x3 x1 .x2 .x3 x1 .x2 .x3 x1 .x2 .x3 x1 .x2 .x3 x1 .x2 .x3 x1 .x2 .x3 x1 0 0 0 0 1 1 1 1 x2 0 0 1 1 0 0 1 1 x3 0 1 0 1 0 1 0 1 f (x1 , x2 , x3 ) f (0, 0, 0) f (0, 0, 1) f (0, 1, 0) f (0, 1, 1) f (1, 0, 0) f (1, 0, 1) f (1, 1, 0) f (1, 1, 1)

47

3.9

Image dune fonction boolenne

Dnition 3.5 On appelle image de la fonction f (x1 , . . . , xn ), note : f , le vecteur form par les 2n coecients de la forme canonique disjonctive dans lordre croissant de la reprsentation binaire des entiers de 0 2n 1, cest dire de f (0, . . . , 0) f (1, . . . , 1). Exemple 3.9 Limage de f (x, y, z ) = x.y.z + x.y.z est : f = 10000010. Les proprits de limage sont : : f .g = : f. : g : f + g = : f+ : g

3.10

Simplication des fonctions boolennes

La conception des circuits logiques ncessite lexpression dune fonction boolenne correspondant la fonction logique souhaite, puis la simplication de cette fonction boolenne de faon raliser le circuit le plus simple possible et le moins coteux possible. Il existe de nombreuses mthodes de simplication implmentables, parmi lesquelles lalgorithme de Nelson, lalgorithme de Quine-McCluskey, et lutilisation des BDDs. Toutefois, dans le cadre de ce cours, nous nous contentons dtudier les mthodes dites manuelles : simplications algbriques dune part et tables de Karnaugh dautre part. Simplications algbriques La simplication algbrique dune fonction boolenne seectue directement partir des proprits de lalgbre de Boole. Exemple 3.10 f (x, y, z ) = x.y.z + x.y.z + x.y.z + x.y.z = x.y.z + x.y.z + x.y.z + x.y.z + x.y.z + x.y.z = (x.y.z + x.y.z ) + (x.y.z + x.y.z ) + (x.y.z + x.y.z ) = (x + x).y.z + (y + y ).x.z + (z + z ).x.y = y.z + x.z + x.y Simplication par les tables de Karnaugh Une table de Karnaugh est une table associe la valeur de la fonction boolenne dont les cases correspondent aux direntes lignes de la table de vrit. Table de Karnaugh 2 variables
HH x H 1 x2 HH H

0 f (0, 0) f (0, 1)

1 f (1, 0) f (1, 1)

0 1

48

Table de Karnaugh 3 variables


PP P P x1 x2 PP x3 PP P

00 f (0, 0, 0) f (0, 0, 1)

01 f (0, 1, 0) f (0, 1, 1)

11 f (1, 1, 0) f (1, 1, 1)

10 f (1, 0, 0) f (1, 0, 1)

0 1 Table de Karnaugh 4 variables


PP PP x1 x2 PP x3 x4 PP P

00 f (0, 0, 0, 0) f (0, 0, 0, 1) f (0, 0, 1, 1) f (0, 0, 1, 0)

01 f (0, 1, 0, 0) f (0, 1, 0, 1) f (0, 1, 1, 1) f (0, 1, 1, 0)

11 f (1, 1, 0, 0) f (1, 1, 0, 1) f (1, 1, 1, 1) f (1, 1, 1, 0)

10 f (1, 0, 0, 0) f (1, 0, 0, 1) f (1, 0, 1, 1) f (1, 0, 1, 0)

00 01 11 10

Les lignes et les colonnes dune table de Karnaugh sont crites dans lordre binaire rchi, ce qui met en vidence la proprit dadjacence, cest--dire, deux cases adjacentes de la table contenant la valeur boolenne 1 correspondent 2 minterms qui ne dirent que par ltat dune seule variable. Soit xi cette variable, f (x1 , . . . , xi1 , xi , xi+1 , . . . , xn ) = . . . + x1 . . . xi . . . xn + x1 . . . xi . . . xn + . . . = . . . + x1 . . . xi1 .(xi + xi ).xi+1 . . . xn + . . . = . . . + x1 . . . xi1 .xi+1 . . . xn + . . . En utilisant la proprit xi + xi = 1, on obtient, partir de 2 minterms, un produit qui ne contient plus la variable xi . Les tables de Karnaugh sont construites pour mettre en vidence graphiquement la proprit dadjacence. La simplication sopre en regroupant, par un nombre gal une puissance de 2, les cases adjacentes contenant la valeur 1. De plus, les regroupements se font de telle sorte quun maximum de valeurs 1 soient englobes dans un minimum de regroupements. Autrement dit, on cherche raliser les plus gros regroupements possibles, et en plus petit nombre possible. Enn, il est important de noter que la proprit dadjacence permet de regrouper des valeurs 1 aux extrmits du tableaux. On obtient autant de minterms dans lcriture simplie de la fonction quil y a de regroupements dans la table. Exemple 3.11 Soit la fonction f (x1 , x2 , x3 ) = x1 .x2 .x3 + x1 .x2 .x3 + x1 .x2 .x3 + x1 .x2 .x3 La table de Karnaugh correspondante est :
PP PP x1 x2 00 PP x3 PP P

01

11 1

10 1 1

0 1 49

Il y a trois regroupements, dont un qui runit les 1 des deux extrmits de la deuxime ligne. Une forme simplie de la fonction est : f (x1 , x2 , x3 ) = x1 .x2 + x1 .x3 + x2 .x3 Exemple 3.12 Soit la fonction f (x1 , x2 , x3 , x4 ) = x1 .x2 .x3 .x4 + x1 .x2 .x3 .x4 + x1 .x2 .x3 .x4 + x1 .x2 .x3 .x4 + x1 .x2 .x3 .x4 + x1 .x2 .x3 .x4 + x1 .x2 .x3 .x4 + x1 .x2 .x3 .x4

La table de Karnaugh correspondante est :


PP PP x1 x2 00 PP x3 x4 PP P

01 1 1 1

11 1 1 1

10

00 01 11 10

On peut remarquer que les regroupements sont bien les plus gros possibles et que chacun des 1 composant le regroupement central est contenu dans un autre regroupement ; par consquent, et compte-tenu du critre de minimisation du nombre de regroupements, le regroupement central de quatre 1 nest pas retenu dans lnonc de la forme simplie. Une forme simplie de la fonction est donc : f (x1 , x2 , x3 , x4 ) = x1 .x2 .x3 + x1 .x3 .x4 + x1 .x2 .x3 + x1 .x3 .x4

3.11

Ralisation dun circuit logique

Il est commode de donner une reprsentation graphique dune fonction boolenne sous la forme dun schma normalis, ralis laide dun ensemble de portes logiques associes aux oprateurs boolens de base. Chacune de ces portes comporte une ou plusieurs entres (les variables boolennes sur lesquelles porte loprateur en question) et une sortie. Le branchement en cascade des sorties de certaines portes sur les entres dautres portes permet de reprsenter nimporte quelle fonction boolenne sous la forme dun circuit logique associ cette fonction. Autrement dit, lensemble de toutes les entres du circuit sont les variables boolennes sur lesquelles porte la fonction, et la sortie du circuit correspond la ralisation de la fonction. De mme, plusieurs circuits logiques peuvent tre combins comme les composants lmentaires dun ensemble plus important, par exemple une unit arithmtique et logique.

50

La reprsentation suivante des portes logiques de base est issue de la norme ANSI/IEEE Std 91-1984, qui a pour objectif de faciliter la reprsentation de circuits intgrs complexes : Porte IDENTIT 1

Porte NON

ou

Porte OU

1 &

Porte ET

Porte OU-EXCL

=1

La dmarche suivie dans la conception dun circuit passe globalement par les tapes suivantes : 1. Spcication de la fonction logique raliser (en franais ou tout autre dialecte familier. . .). 2. Tables de vrit, si ncessaire, ou lorsque cest possible. 3. Simplications boolennes. 4. Trac du circuit (viter lesthtique spaghettis ). Exemple 3.13 On considre la fonction logique suivante : 1. f (x, y, z ) = x.y.z + x.y.z + x.y.z + x.y.z + x.y.z 2. La table de vrit correspondante est : x 0 0 0 0 1 1 1 1 4. Le circuit correspondant est : x y z & 1 f (x, y, z ) y 0 0 1 1 0 0 1 1 z 0 1 0 1 0 1 0 1 f (x, y, z ) 1 0 1 0 1 1 1 0

3. Aprs simplication, f (x, y, z ) = x.y + z

51

Chapitre 4

Quelques circuits combinatoires


Un circuit combinatoire est un circuit logique dont ltat des sorties ne dpend que des valeurs assignes aux variables dentre au moment considr (par opposition aux circuits squentiels, tudis au chapitre suivant, et dont les sorties dpendent non seulement des entres, mais aussi de lhistoire du circuit). Le prsent chapitre dcrit succintement le dveloppement thorique de quelques structures combinatoires de base qui jouent un rle fondamental dans la conception des dirents blocs dun ordinateur : dcodeurs, multiplexeurs, dmultiplexeurs, rseaux logiques programmables, et additionneurs. Laccent est mis sur les tapes de conception dun circuit combinatoire : spcication de la fonction logique ralise, traduction en tables de vrit quand cest possible, optimisation par rapport certains critres (comme la minimisation du nombre de portes, ou lemploi dun certain type de portes seulement), trac du circuit. Enn, lanalyse de certains circuits montre que dautres outils, plus faciles comprendre ou utiliser, peuvent tre employs (par exemple les tables de fonctionnement en lieu et place des tables de vrit dans le cas dun multiplexeur).

4.1

Dcodeur

Un dcodeur est un circuit comportant : n entres ; 2n sorties, dont une toujours 1 ; telle quelle est celle dont le numro est lentier cod par la conguration binaire des entres.
E0 E 1 S0 S1

E n1 S 2 n 1

Autrement dit, un dcodeur permet de slectionner une sortie Si , 0 i 2n 1, avec i = valeur10 (En , . . . , E0 ). Exemple 4.1 Soit un dcodeur 38 (3 entres, 8 sorties) et tel que la conguration binaire des entres soit E2 = 1, E1 = 1, E0 = 0, soit 110. Lentier cod par E2 E1 E0 est 6, par consquent la sortie S6 est slectionne, elle vaut 1. 52

Spcication du circuit logique ralisant une fonction de dcodage. Pour xer les ides, on dcide de raliser un dcodeur 24. La table de vrit comporte deux entres E1 et E0 , quatre sorties S3 , S2 , S1 , S0 telles que la sortie dont le numro dindice de la sortie est cod par la conguration binaire des entres E1 E0 est mise 1. E1 0 0 1 1 E0 0 1 0 1 S0 1 0 0 0 S1 0 1 0 0 S2 0 0 1 0 S3 0 0 0 1

On dduit immdiatement les quations boolennes des sorties en fonction des entres : S0 = E1 .E0 S1 = E1 .E0 S2 = E1 .E0 S3 = E1 .E0 do le circuit :
E0 E 1 & S0 & S1 & S2 & S3

4.2

Multiplexeur

Un multiplexeur est un circuit comprenant : n ls de contrle Cn , Cn1 , . . . , C0 ; 2n entres ; Une sortie S qui prend la valeur de lune des entres, de telle sorte que la conguration binaire des n ls de contrle code le numro dindice de cette entre.
E0 E1 MUX S

E 2 n1

C0 C1

Cn

Autrement dit, un multiplexeur permet de connecter une entre Ei , 0 i 2n 1, la sortie S de telle sorte que i = valeur10 (Cn , . . . , C0 ). 53

Exemple 4.2 Soit un multiplexeur 81 (8 entres, 1 sortie) et tel que la conguration binaire des trois variables de contrle soit C2 = 1, C1 = 1, C0 = 0, soit 110. Lentier cod par C2 C1 C0 est 6, par consquent la sortie S prend la valeur (1 ou 0) qui se trouve sur lentre slectionne E6 . Spcication du circuit logique ralisant une fonction de multiplexage. Pour xer les ides, on dcide de raliser un multiplexeur 41. Parce que les entres sont mutuellement exclusives, il est possible denvisager la construction dune table de vrit simplie, appele table de fonctionnement, et dont la colonne de sortie, plutt que de contenir des 1 et des 0, contient les variables dentres. La table en question contient donc deux variables de contrle C1 et C0 , et une sortie S qui prend la valeur de lune des quatre entres E3 , E2 , E1 , E0 quand la conguration binaire C1 C0 code le numro dindice de la dite entre. C1 0 0 1 1 C0 0 1 0 1 S E0 E1 E2 E3

Bien sr, il existe, quivalent cette table de vrit un peu inhabituelle, une table classique comportant une colonne asscie E0 , une E1 , une E2 , et une E3 , ainsi que les colonnes associes C1 et C0 et la colonne de sortie S ... Mais cette table est moins aise manipuler. En eet, elle masque la proprit qui nous intresse directement (connexion de la sortie lune des entres en fonction des variables de contrle), et il est plus laborieux den extraire la fonction boolenne. Lquation bolenne de sortie se dduit sans dicult de la table de fonctionnement ralise ici : S = C1 .C0 .E0 + C1 .C0 .E1 + C1 .C0 .E2 + C1 .C0 .E3 do le circuit :
E0 E1 E2 E &

&

1
&

&

C1 C0

Remarque : Un multiplexeur permet de raliser nimporte quelle fonction boolenne de ses variables de contrle (pas toujours de manire conomique). Il sut pour cela de xer les valeurs des variables dentres au regard de la fonction quon dsire raliser. Par exemple, sur un multiplexeur 41, en xant E0 = 0, E1 = 1, E2 = 1, E3 = 0, on obtient la fonction : f (C1 , C0 ) = C1 .C0 + C1 .C0 qui reprsente le OUexclusif des deux variables C1 , C0 . 54

4.3

Demultiplexeur

Un dmultiplexeur est un circuit comprenant : n ls de contrle Cn , Cn1 , . . . , C0 ; 2n sorties S0 , . . . S2n 1 ; Une entre E qui donne sa valeur lune des sorties, de telle sorte que la conguration binaire des n ls de contrle code le numro dindice de cette sortie.
S0 S E DEMUX 1

S 2 n 1

C0 C1

Cn

Autrement dit, un dmultiplexeur permet daiguiller lentre E vers la sortie Si , 0 i 2n 1, de telle sorte que i = valeur10 (Cn , . . . , C0 ). Exemple 4.3 Soit un dmultiplexeur 18 (1 entre, 8 sorties) et tel que la conguration binaire des trois variables de contrle soit C2 = 1, C1 = 1, C0 = 0, soit 110. Lentier cod par C2 C1 C0 est 6, par consquent la sortie S6 est slectionne. Elle prend la valeur (1 ou 0) qui se trouve sur lentre E . Spcication du circuit logique ralisant une fonction de dmultiplexage. Comme dhabitude ( !), on dcide de raliser (par exemple...) un dmultiplexeur 41. La table de vrit comporte deux variables de contrle C1 et C0 , quatre sorties S0 , S1 , S2 , S3 dont une prend la valeur de lentre E quand la conguration binaire C1 C0 code le numro dindice de cette sortie. En suivant cette contrainte, on obtient une table de fonctionnement dont la colonne de sortie, plutt que de contenir des 1 et des 0, contient les variables dentres. C1 0 0 1 1 C0 0 1 0 1 S0 E 0 0 0 S1 0 E 0 0 S2 0 0 E 0 S3 0 0 0 E

Remarque : Dune certaine manire, le dmultiplexage peut tre vu comme un ranement de la fonction de dcodage : la sortie nest plus systmatiquement mise 1 (cas du dcodage), mais prend la valeur de lentre E . Les quations boolennes de sortie se dduisent sans dicult de la table de vrit : S0 = C1 .C0 .E S1 = C1 .C0 .E S2 = C1 .C0 .E S3 = C1 .C0 .E do le circuit : 55

C0 C1 E & S0 & S1 & S2 & S3

4.4

Rseaux logiques programmables

Les rseaux logiques programmables sont des matrices de type ET-OU-NON qui peuvent tre programms pour raliser nimporte quelle fonction logique. Il existe deux grandes familles de rseaux logiques programmables : les PLA (Programmable Logic Arrays) et les PAL (Programmable Array Logic). Un PLA est constitu de la runion de portes ET, OU, NON, lies ensemble pour raliser une structure logique combinatoire sous la forme ET-OU, ou sous la forme NON-ET-OU. Deux connexions, lune directe, lautre complmente, partent de chaque entre vers toutes les portes ET. Un autre niveau de connexion fait les liaisons entre chaque sortie dune porte ET et toutes les entres des portes OU. Les sorties des portes OU, qui reprsentent les sorties du circuit, sont elles aussi doubles, donnes la fois sous forme directe et complmente. Les trois niveaux de connexions (entres vers les portes ET, portes ET vers les portes OU, portes OU vers les sorties) sont raliss laide de microfusibles. Durant la programmation, certains des microfusibles sont dtruits tandis que dautres restent intacts, de fan raliser la forme canonique disjonctive des fonctions combinatoires imposes. Un PAL est un PLA ne disposant que dun seul niveau de microfusibles (au lieu de trois) entre les entres et physiques et les portes ET. Les sorties des portes ET sont lies durant le processus de fabrication directement aux portes nales OU, sans lutilisation de microfusibles. Autrement dit, les portes ET ne peuvent tre partages, et chaque porte OU doit avoir ses propres portes ET. Les rseaux logiques programmables sont utiliss surtout pour la matrialisation de structures combinatoires complexes.

4.5

Additionneur

La ralisation dun additionneur complet (1 bit avec 1 bit avec retenue dentre) passe par la ralisation dun demi-additionneur (1 bit avec 1 bit sans retenue dentre). Le demi-additionneur est un circuit qui ralise laddition de deux bits. La somme sobtient sur deux bits, S pour le poids faible, R pour le poids fort (la retenue). A partir de la table de vrit suivante : A B 0 0 0 1 1 0 1 1 56 R S 0 0 0 1 0 1 1 0

on obtient : S = A.B + A.B = AB R = A.B Le demi-additionneur est ralis par le circuit suivant : A B =1 S

&

Le demi-additionneur correspond laddition de deux bits isols. Pour raliser laddition de deux nombres binaires, il faut tenir compte lors de laddition de deux bits de rang n de la retenue de rang n 1. Loprateur qui ralise laddition de deux bits, en tenant compte dune ventuelle retenue en entre, sappelle tage dadditionneur. Il possde trois entres A, B, et R et deux sorties S et R : A B R R S 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 On dduit les quations : S = A.B.R + A.B.R + A.B.R + A.B.R = R .(A.B + A.B ) + R .(A.B + A.B ) = R .(A B ) + R .(A B ) = R A B

R = A.B.R + A.B.R + A.B.R + A.B.R = (A B ).R + A.B


R1 R2

La retenue comporte donc deux termes : R2 = A.B qui reprsente la retenue gnre dans ltage dadditionneur ; R1 = (A B ).R qui reprsente la retenue propage par ltage dadditionneur. On peut alors construire ltage dadditionneur en ralisant la somme de A et B dans un premier demi-additionneur, puis en additionnant au rsultat la retenue R en provenance de ltage 57

prcdent. On obtient la somme S et deux retenues : R2 gnre dans ltage, R1 propage par ltage, runies dans un OU logique pour obtenir la retenue R : R A B
1/2-Add

1/2-Add

S 1 R

Le schma dun additionneur pour deux nombres sur quatre bits est : B3 B2 R2 B1 R1 B0 R0

A3
Add

A2
Add

A1
Add

A0
Add

Dpassement

S3

S2

S1

S0

58

Chapitre 5

Circuits squentiels, registres, compteurs


Un circuit squentiel est un circuit combinatoire dont les valeurs des variables de sortie dpendent non seulement des valeurs de variables dentre, mais aussi de variables internes, autrement dit de variables ralisant un rebouclage du circuit combinatoire sur lui-mme, comme cela est reprsent dans la gure suivante :

t : temps de propagation rtroactif

Lintroduction dune boucle de rtroaction a pour eet de rendre ncessaire la prise en compte dun temps de propagation des valeurs des variables internes qui permette une stabilisation du circuit dans un tat donn. On obtient ainsi la dnition suivante : un circuit squentiel est un circuit dont ltat des sorties un instant t donn dpend la fois des valeurs assignes aux variables dentre et de ltat quavaient les sorties linstant t 1. La stabilisation du circuit squentiel dans un tat donn, lorsquelle est possible, induit un eet de mmorisation, cest pourquoi on utilise ce type de circuit pour reprsenter le fonctionnement des registres dun ordinateur. Llment de mmoire est dni comme un circuit squentiel deux tats, 0 et 1, utilis pour stocker le contenu dun bit : ltat du circuit est modi par des signaux de commutation aux entres ; il possde deux sorties dont lune est le complment de lautre. Les circuits squentiels se divisent en deux catgories : asynchrone et synchrone. Dans un circuit asynchrone, les variables du systme voluent librement au cours du temps, autrement dit laction des entres est prise en compte ds leur changement dtat. Au contraire, un circuit synchrone est tel que lvolution des variables dpend dune impulsion dhorloge comme un des signaux dentre : 59

t : temps de propagation rtroactif

Par consquent, les entres dun circuit synchrone ne sont sensibles aux signaux qui leur sont appliqus que pendant un court intervalle de temps dtermin par le signal dhorloge. De fait, les changements synchrones rendent plus ables le fonctionnement des circuits squentiels, cest pourquoi les circuits squentiels synchrones sont utiliss pour la ralisation de la plupart des blocs fonctionnels dun ordinateur. Inversement, les circuits asynchrones sont peu nombreux et les exemples tudis dans la suite (bascules RS , D , JK , et T ) servent essentiellement introduire leurs pendants synchrones.

5.1

Circuits asynchrones

Bascule RS asynchrone La bascule RS est un circuit squentiel deux entres R et S (pour Reset et Set respectivement), dni par le schma suivant :

t q S 1 P

Les quations des sorties sont : Q = R + p = R.p P = S + q = S.q Dans ces quations, q et p caractrisent ltat actuel du circuit, et Q et P ltat suivant du circuit, tat qui se produit aprs lapplication des signaux aux entres. Notons quil existe une version duale comportant des portes NON-ET la place des portes NON-OU. Il est intressant dillustrer le fonctionnement de la bascule RS par une tude de cas. 60

Exemples de fonctionnement de la bascule RS Exemple 5.1 R = 0, S = 1 R = 1, S = 1 On suppose la bascule dans un tat stable, avec R = 0, S = 1, et on commute lentre R 1. La bascule passe successivement par les tats suivants :
0 0

R = 0, S = 1
1 1 1 0

1 0

t : q = Q 1 1 1 0

R = 1, S = 1

1 0

Propagation du signal
0 1 1 0

On constate sur cet exemple que la mise 1 de lentre R correspond eectivement lmission dun signal Reset, la bascule mmorisant ltat 0 ; les sorties Q et P ntant plus complmentes, la bascule ne fonctionne clairement pas comme un lment de mmoire.

61

Exemple 5.2 R = 1, S = 1 R = 1, S = 0

On repart de la conguration obtenue dans lexemple prcdent. Lentre R tant positionne 1, on commute lentre S de 1 0. La bascule passe successivement par les tats suivants :
1 0

R = 1, S = 1
0 1 1 0

1 0

t : p = P 0 0 1 1

R = 1, S = 0

1 1

Propagation du signal
0 0 1 1

Avec la mise 0 de lentre S (Set = 0), la bascule mmorise bien ltat 0 ; cette fois les sorties Q et P sont complmentes. En rsum, et partir des deux exemples prcdents, on constate que : Avec S = 1 (Set ), la bascule mmorise la valeur 1. Avec R = 1 (Reset ), la bascule mmorise la valeur 0. En raison du temps de propagation rtroactif t, la bascule passe par une phase dinstabilit (q = Q ou p = P ) avant de se stabiliser dans un tat dtermin. La bascule ne vrie pas la dernire contrainte caractristique dun lment de mmoire (les sorties Q et P ne sont pas complmentaires lune de lautre dans tous les cas). En fait les problmes entrevus jusquici ne sont pas les seuls, comme le montre lexemple suivant.

62

Exemple 5.3 R = 1, S = 1 R = 0, S = 0

On fait passer simultanment les entres R et S de 1 0.


1 0

R = 1, S = 1
0 1 1 0

0 0

R = 0, S = 0
0 0 1 1

0 1

oscillation. . .
1 0 1 0

0 0

oscillation. . .
0 0 1 1

63

0 1

oscillation. . .
1 0 1 0

0 0

oscillation. . .
0 0 1 1

. . . On constate une instabilit chronique de la bascule.

. . .

En basculant simultanment les entres de R = S = 1 R = S = 0 : La bascule entre dans une phase doscillation permanente due au fait qu tout instant q = Q et p = P . A aucun moment les sorties Q et P ne sont complmentaires lune de lautre, ce qui contredit totalement la dernire proprit caractristique dun lment de mmoire. Etude systmatique Une tude systmatique du comportement du circuit passe par la dtermination de ses tats stables : un circuit est dans un tat stable sil peut rester dans le mme tat pour un temps indni, ce qui sexprime ici par les conditions suivantes : Q=q et P = p

La dtermination des tats stables est ralise partir dune forme particulire de diagramme de Karnaugh, appele matrice dtats assigns, ralise en fonction des entres prsentes et de lensemble des valeurs courantes des sorties du circuit. Dans chaque cellule du diagramme, on positionne ltat futur de la bascule (les valeurs futures des sorties) partir des entres considres et de ltat courant de la bascule (les valeurs courantes des sorties), comme illustr par la gure suivante :

64

entres courantes tat prsent

tat futur binaire rchi

Ainsi, la matrice dtats assigns ralise pour la bascule RS tudie ici est telle que dans chaque cellule de la matrice la valeur de la sortie Q est inscrite dans la partie gauche et la valeur de la sortie P dans la partie droite.
HH RS H 00 qp HH H

01 ... ... ... ...

11 ... ... ... ...

10 ... ... ... ...

00 01 11 10

... 01 ... ...

Par exemple, dans le cas pour lequel les valeurs des entres R et S sont respectivement 0 et 0 et ltat courant est dcrit par q = 0, p = 1, la cellule correspondante se trouve lintersection de la colonne 00 et de la ligne 01 ; les quations de sorties donnent alors : p Q = R. = 0. 1 = 1.0 = 0 q P = S. = 0. 0 = 1.1 = 1 On place donc 01 dans la cellule en question. On remarque que pour les valeurs de cette cellule Q = q et P = p, par consquent elle dsigne un tat stable. En procdant ainsi pour chaque cellule du tableau, et en marquant lensembles des tats stables, on obtient la matrice dtats assigns suivante :
HH RS H 00 qp HH H

01 10 00 00 10

11 00 00 00 00

10 01 01 00 00

00 01 11 10

11 01 00 10

Les transitions dun tat de la bascule un autre reprsentent alors un ensemble de chemins dans la matrice. En reprenant les exemples prcdents, on a : 65

Exemple 5.1 (suite) R = 0, S = 1 R = 1, S = 1


0 0

HH RS H 00 qp HH H

01 10 00 00 10

11 00 00 00 00

10 01 01 00 00

1 1 1 0

00 01 11 10

11 01 00 10

1 0

HH RS H 00 qp HH H

01 10 00 00 10

11 00 00 00 00

10 01 01 00 00

t : q = Q 1 1 1 0

00 01 11 10

11 01 00 10

1 0

HH RS H 00 qp HH H

01 10 00 00 10

11 00 00 00 00

10 01 01 00 00

0 1 1 0

00 01 11 10

11 01 00 10

En partant de ltat stable QP = 10 et en faisant passer les entres de R = 0, S = 1 R = 1, S = 1, on passe par ltat instable QP = 00 (premier arc). Un tat instable ne peut exister quun trs court laps de temps, et q passe alors de 1 0, ce qui implique un dplacement vertical dans la matrice jusqu ltat stable qp = QP = 00 (deuxime arc). Il est noter que, durant ce rgime transitoire, les signaux de sortie restent inchangs.

66

Exemple 5.3 (suite) R = 1, S = 1 R = 0, S = 0


1 0

H HH RS 00 qp HH H

01 10 00 00 10

11 00 00 00 00

10 01 01 00 00

0 1 1 0

00 01 11 10

11 01 00 10

0 0

H HH RS 00 qp HH H

01 10 00 00 10

11 00 00 00 00

10 01 01 00 00

0 0 1 1

00 01 11 10

11 01 00 10

0 1

HH RS H 00 qp HH H

01 10 00 00 10

11 00 00 00 00

10 01 01 00 00

1 0 1 0

00 01 11 10

11 01 00 10

0 0

HH RS H 00 qp HH H

01 10 00 00 10

11 00 00 00 00

10 01 01 00 00

0 0 1 1

00 01 11 10

11 01 00 10

La bascule entre dans une phase doscillation entre les deux tats instables QP = 11 et QP = 00. Lensemble des chemins dans la matrice dtats assigns permet la construction dun graphe de transitions sous forme de diagramme dtats nis : chaque tat de la bascule correspond un tat du graphe, les tats stables pouvant tre vus comme des tats naux. Le graphe de 67

transitions obtenu partir de la matrice ci-dessus est le suivant :

11 01 11

*0

10

00 00 1* 01

00 11

10 0*

En rsum : Pour la combinaison R = 0 et S = 0 aux entres, il existe deux tats stables. Le changement R = 1, S = 0 R = 0, S = 0 conduit ltat stable QP = 01 ; le changement R = 0, S = 1 R = 0, S = 0 conduit ltat stable QP = 10. Cette particularit exprime lessence de la fonction de mmorisation lmentaire du circuit : si lon passe dune situation dans laquelle le signal actif est transmis une seule entre une situation dans laquelle des signaux inactifs sont transmis aux deux entres, le circuit mmorise ltat impos par la dernire situation active. Pour la combinaison R = 1 et S = 1 aux entres, le circuit se trouve dans ltat stable . QP = 00, ce qui met en vidence que P = Q Pour le changement R = 1, S = 1 R = 0, S = 0, le circuit entre dans une phase doscillation permanente entre les tats 00 et 11 sans jamais atteindre dtat stable. On peut remarquer ce propos que dans la pratique, si on peut considrer qu une chelle donne la commutation des deux variables est simultane, il est en principe toujours possible de trouver une chelle assez ne pour que lune varie avant lautre. Toutefois, mme en posant lhypothse que les commutations ne peuvent tre rellement simultanes, on constate quil existe partir de ltat 11 deux chemins possibles menant deux tats stables dirents :
H HH RS 00 qp HH H

01 10 00 00 10

11 00 00 00 00

10 01 01 00 00

00 01 11 10

11 01 00 10

Si on suppose que la dure minimale dun tat est suprieure ou gale au temps de rponse du systme, cest--dire au temps ncessaire pour quil atteigne un tat stable, ltat instable 00 ne peut plus tre atteint. En conclusion il apparat ncessaire dviter toute combinaison des entres qui mne ltat 11. Plusieurs solutions sont envisageables, dont la plus immdiate est la bascule D , et une solution plus labore, la bascule JK . . .

68

Bascule D asynchrone La bascule D est une bascule RS dont une des entres est connecte lautre via une inversion logique.

q S 1 P =Q

Il sagit dune bascule asynchrone qui fonctionne bien comme un lment de mmoire car : Les sorties sont complmentes. La bascule mmorise la dernire valeur de lentre. Le diagramme de transitions de la bascule D est trs simple :

0 1

La bascule fonctionne de faon transparente cest--dire que la sortie Q recopie ltat de lentre. La bascule tant asynchrone, elle prsente peu dintrt car elle nopre que comme un retardateur de signal. Bascule JK asynchrone La bascule JK est une bascule dont on attend le comportement suivant : si J = 0 et K = 0 alors la sortie Q ne change pas dtat ; si J = 0 et K = 1 alors la sortie Q passe 0 ; si J = 1 et K = 0 alors la sortie Q passe 1 ; si J = 1 et K = 1 alors la sortie Q passe Q. La table dexcitation suivante rsume ce comportement, Qt et Qt+1 reprsentant les valeurs de la sortie Q aux instant t et t + 1 respectivement, en fonction des entres J et K : J 0 0 1 1 K 0 1 0 1 Qt+1 Qt 0 1 Qt 69 Qt

Une bascule JK peut tre ralise partir dune bascule RS en rebouclant les sorties sur chacune des entres :

& S Q

R &

Le diagramme dtats nis de la bascule est le suivant :

0*

*1 1*

*0

Bascule T asynchrone A partir de la table dexcitation dune bascule JK asynchrone, on constate que ltat de la sortie est invers (Qt+1 = Qt ) lorsque J = K = 1. Une bascule T (Trigger) est obtenue partir dune bascule JK , en injectant le mme signal sur les entres J et K . On obtient la table dexcitation suivante : T 0 1 correspondant au circuit suivant : J T K Le diagramme dtats nis de la bascule est le suivant : Q Q Qt+1 Qt Qt Qt

1 1

Les bascules T sont utilises en particulier dans la conception des compteurs. 70

5.2

Circuits synchrones

Une bascule synchrone est contrle par un signal dhorloge de type impulsion : le signal se trouve la valeur logique 0, passe la valeur logique 1, puis repasse la valeur logique 0, de faon priodique et rgulire. Le temps de commutation entre valeurs basse et haute tant ngligeable, on peut sans aucun problme considrer que la transition est instantane. Limpulsion dhorloge prend donc idalement lallure dun signal carr priodique :

Front antrieur

Front postrieur

Dure

Lobservation du signal dhorloge permet immdiatement denvisager deux techniques de commutation des bascules synchrones. Les bascules verrou : ces bascules sont considres comme actives pendant toute la dure du signal haut (en logique positive). Autrement dit, une bascule verrou bloque la dernire information qui se trouve aux entres, avant que limpulsion dhorloge eectue la transition de 1 0. Pour obtenir une seule transition par impulsion dhorloge, ce qui est frquemment demand en pratique, il est ncessaire que le ou les signaux dentre demeurent constants pendant toute la dure active de limpulsion. Cette condition est, en gnral, assez dicile remplir. Les bascules commutation sur front : ces bascules sont actives au seul moment de la transition sur front (antrieur ou postrieur) du signal dhorloge. La commutation sur front pose le problme du choix du front actif ; en fait, la plupart des bascules commutent sur front postrieur, et sont gnralement ralises par la connexion de plusieurs bascules de type verrou et lajout de rtroactions supplmentaires (cf. les exemples donns plus bas). Une autre technique consiste utiliser un circuit dtecteur de front [Tisserant03]. Ce type de circuit produit en concidence avec le front antrieur ou le front postrieur une impulsion de largeur juste susante pour permettre un basculement dtat. Les gures suivantes illustrent respectivement le principe dun dtecteur de front antrieur et dun dtecteur de front postrieur : lide est de prendre en compte le faible retard induit par la traverse dun inverseur.
a) Dtecteur de front antrieur

&

71

b) Dtecteur de front postrieur

&

Y Graphiquement, on distingue une bascule verrou dune bascule commutation sur front par lintroduction dun symbole supplmentaire au niveau de lentre dhorloge. Par exemple, pour une bascule JK : J Q J Q J Q

K
a) bascule verrou

K
b) bascule commutation sur front antrieur

K
c) bascule commutation sur front postrieur

Les exemples qui suivent illustrent quelques-unes des plus courantes parmi les bascules synchrones : Bascule D verrou

&

q D & 1 P =Q

La propagation du signal dentre se fait sur la valeur haute du signal dhorloge (logique positive) qui fait alors oce dautorisation en criture. La dure du cycle doit tre suprieure ou gale la dure de propagation dans la bascule : Cycle dhorloge t. 72

Bascule D commutation sur front antrieur

&

&

&

&

&

&

La bascule D commutation sur front antrieur est ici constitue de trois bascules RS NON-ET sous forme dun tage dentre et dun tage de sortie. La rtroaction eectue au niveau de ltage dentre permet la commutation de la bascule sur le front antrieur.

73

Bascule JK verrou

& S Q

R K &

Bascule JK commutation sur front postrieur

&

&

&

&

&

&

&

&

La bascule JK commutation sur front postrieur est ici constitue de deux bascules RS NONET sous forme dun tage dentre et dun tage de sortie. La premire bascule lit linformation qui se trouve aux entres, immdiatement aprs le front antrieur de limpulsion dhorloge : quand limpulsion dhorloge se trouve au niveau bas (valeur logique 0), les sorties des premires portes NON-ET de ltage dentre se trouvent la valeur logique 1 ; aprs la transition de 0 1 de limpulsion dhorloge ces portes sont dbloques et les signaux dentre J et K entrent sur la premire bascule qui eectue la lecture de linformation. Simultanment, en raison de la prsence dun inverseur, ltage de sortie est isol de ltage dentre. Quand limpulsion dhorloge eectue la transition de 1 0, ltage dentre se trouve nouveau isol des entres dinformation tandis que linformation sauvegarde dans la premire bascule est transmis la deuxime bascule. Linformation stocke dans ltage dentre est donc transfre vers ltage de sortie par 74

lintermdiaire du front postrieur de limpulsion dhorloge. Du point de vue externe, le circuit constitue une seule bascule qui commute sur le front postrieur.

5.3

Registres, transfert dinformation, bus de donnes

Le circuit squentiel synchrone aect au stockage temporaire dune information de plusieurs bits est appel registre. Un registre est constitu dune collection de bascules de mme type, actionnes par la mme impulsion dhorloge. Le nombre de bascules constituant un registre dtermine sa capacit. Registre verrou D
E3 E2 E1 E0

D W

D W

D W

D W

S3

S2

S1

S0

Un registre de type verrou est utilis comme mmoire tampon, cest--dire pour stocker linformation pendant un temps assez court, avant de lacheminer vers une autre destination. Transfert entre registres
Lecture & & J K & & J K & & J K & & J K

J K

J K

J K

J K

Si la condition Lecture est vraie et que limpulsion dhorloge arrive, linformation stocke par le registre source est copie dans le registre destination. Cette information est saisie dans les sorties du registre destination, aprs le front postrieur de limpulsion dhorloge (cf. [DanceaMarchand92]).

75

Banc de registres
W D @ Q D W @ Q D W @ Q D W @ Q

W D @ Q D

W @ Q D

W @ Q D

W @ Q

A1
W D @ Q D W @ Q D W @ Q D W @ Q

A0
W D @ Q D W @ Q D W @ Q D W @ Q

D3

D2

D1

D0

Le dcodeur 2 4 permet de slectionner un registre parmi les quatre composant le banc de registres. Le signal dhorloge joue le rle dautorisation en criture. Bus de donnes Un bus (abbrviation de liaison omnibus) est utilis pour connecter entre eux plusieurs registres : il sagit dun ensemble de ls sur lesquels les informations binaires sont maintenues sous forme de tension par lun des registres source. Un bus comporte au choix un, ou deux ls par bit, portant respectivement la sortie, ou les sorties complmentes de chaque lment mmoire auquel est reli le bus. Lutilisation dun bus reliant quatre registres est prsente dans la gure ci-dessous (cf. [DanceaMarchand92]) :
Ligne n 1 Ligne 1 Ligne 0 & & & & & & & & & & & &

Cd31

Cd21

Cd11

Cd01

Cd30

&

& &

Cd20

&

& &

Cd10

&

& &

Cd00

&

& &

76

Chacune des sorties, tout comme chacune des entres, de chaque bascule composant chaque registre est connecte une ligne du bus laide dune porte ET contrle par un signal de commande. Par exemple, le transfert dinformation du registre 2 vers le registre 0 ncessite que les signaux de commande Cd21 et Cd00 soient 1 et que les autres signaux de commande soient 0 : les sorties des bascules du registre 2 ainsi que les entres des bascules du registre 0 se trouvent connectes simultanment au bus, ce qui permet le transfert parallle de linformation au moment de larrive de limpulsion dhorloge, non reprsente sur ce schma. Les portes ET qui controlent la connexion entre un registre et le bus sont gnralement remplaces par des barrires trois tats, qui permettent au registre de poser un 0, un 1, ou de se dconnecter lectriquement du bus. Une entre de contrle spare est utilise soit pour ouvrir la barrire de sortie, soit pour la mettre dans un tat de haute impdance (lectriquement dconnecte) :

Entre

Sortie

Entre de contrle

La communication travers un bus laide de barrires trois tats places par exemple en sorties de registres, est alors reprsente de la faon suivante :
Ligne n 1 Ligne 1 Ligne 0 Cd1 Cd2

5.4

Compteurs et squenceurs

Un compteur est un registre dont le contenu est incrment chaque impulsion dune horloge. Il sagit donc dun ensemble de bascules interconnectes avec un circuit combinatoire aect au mode de changement dtat durant le processus de comptage, un compteur n bascules pouvant passer successivement par 2n tats distincts. Outre leur fonction initiale de comptage, les compteurs permettent aussi de construire des squenceurs dont le rle est la distribution du signal dhorloge dans un circuit complexe. On classe les compteurs en fonction : du type de codage de linformation stocke (binaire, modulo n, binaire-dcimal) ; du mode de commutation des bascules durant le processus de comptage (asynchrone ou synchrone) ; du mode davancement du compteur durant le processus de comptage (direct, inverse, rversible). Le compteur le plus simple utilise directement le systme de numration binaire, cest--dire quil compte en binaire les impulsions dhorloge qui lui sont transmises lentre de comptage, modulo n. Les deux exemples suivants illustrent le fonctionnement dun tel compteur sur quatre bits, 77

dabord en mode asynchrone, puis en mode synchrone. Ces compteurs sont construits partir de bascules JK commutation sur front postrieur. Compteur binaire modulo 16 asynchrone On sait quune bascule JK commutation sur front postrieur, utilise en mode T (J = K ), passe ltat complmentaire chaque front postrieur du signal dhorloge. En transmettant limpulsion dhorloge la bascule servant au codage du bit de poids le plus faible, et en reliant successivement chaque sortie dune bascule codant un bit de poids infrieur lentre de la bascule servant au codage du bit de poids immdiatement suprieur, limpulsion se propage de proche en proche lensemble des bascules, et on obtient le compteur recherch : Q0 1
J K

Q1 1
J K

Q2 1
J K

Q3 1
J K

Lvolution des sorties Q0 Q1 Q2 Q3 en fonction du signal dhorloge est reprsente par le chronogramme 1 suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Q0 Q1 Q2 Q3 On voit que chacune des sorties divise la frquence du signal dentre correspondant par deux : cest sur cette proprit du circuit que repose la capacit de comptage en binaire. An de mieux comprendre le comportement du circuit, considrons par exemple son volution aprs comptage de la troisime impulsion dhorloge : Q0 = 1, Q1 = 1, Q2 = 0, Q3 = 0. Au front postrieur de la nouvelle impulsion dhorloge (la quatrime), la bascule Q0 passe ltat complmentaire, soit Q0 = 0. Cette commutation produit donc un front postrieur la sortie de la bascule, front qui actionne lentre de commutation de la bascule Q1 : du coup, la bascule Q1 passe son tour ltat complmentaire, soit Q1 = 0. La commutation de la bascule Q1 de ltat 1 ltat 0 produit, elle aussi, un front postrieur qui oblige la bascule Q2 passer ltat 1. Cette commutation ne produit pas de front postrieur, et par consquent, la bascule Q3 conserve son tat initial.

1. schma donnant ltat des sorties dun circuit en fonction du temps

78

Lobtention de la liste complte des tats successifs des sorties partir du chronogramme est immdiate : Numro dimpulsion tat initial 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Q3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 Q2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 Q1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 Q0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

Bien que chaque bascule fonctionne individuellement de manire synchrone, le fonctionnement du compteur est, lui, asynchrone, puisque ltat de chacune des bascules ne dpend que des entres correspondantes, sans rfrence globale une impulsion dhorloge. Compteur binaire modulo 16 synchrone Lexemple propos est tir de [DanceaMarchand92]. A la dirence du compteur asynchrone vu prcdemment o lhorloge nagit que sur une bascule, ici chaque impulsion dhorloge synchronise lensemble du circuit. Lide est donc de construire une table dexcitation qui, outre les sorties du circuit, tienne compte de ltat de lensemble des bascules chaque impulsion dhorloge. A partir de la table dexcitation dune bascule JK individuelle, on introduit dans la table dexcitation du circuit les signaux qui doivent tre ncessairement assigns aux entres des bascules 0, 1, 2, et 3, pour que la succession des tats soit respecte. Par exemple, aprs comptage de la troisime impulsion, les bascules doivent tre respectivement dans ltat Q0 = 1, Q1 = 1, Q2 = 0, Q3 = 0. Larrive dune nouvelle impulsion dhorloge (la quatrime) doit provoquer la transition vers un nouvel tat dans lequel Q0 = 0, Q1 = 0, Q2 = 1, Q3 = 0. Au cours de cette transition, la bascule Q3 ne change pas dtat, alors que les autres bascules doivent changer dtat. En consultant la table dexcitation dune bascule JK , on observe que les transitions suivantes : Q3 Q2 Q2 Q0 : : : : 0 0 1 1 0 1 0 0

79

ont lieu lorsque les conditions suivantes sont imposes : J3 J2 J1 J0 = 0, = 0, = , = , K3 K2 K1 K0 = = =1 =1

En considrant de la mme manire et de faon exhaustive toutes les transitions imposes par le processus de comptage, on obtient la table dexcitation suivante : Numro dimpulsion tat initial 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Q3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 Q2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 Q1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 Q0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 J3 0 0 0 0 0 0 0 1 * * * * * * * * 0 K3 * * * * * * * * 0 0 0 0 0 0 0 1 * J2 0 0 0 0 * * * * 0 0 0 1 * * * * 0 K2 * * * * 0 0 0 1 * * * * 0 0 0 1 * J1 0 1 * * 0 1 * * 0 1 * * 0 1 * * 0 K1 * * 0 1 * * 0 1 * * 0 1 * * 0 1 * J0 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 K0 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 *

Il est alors possible dtablir les huit diagrammes de Karnaugh qui correspondent aux entres : J3
PP PP Q0 Q1 00 PP Q2 Q3 PP P

K3 01 * * 11 * * 1 10 * *
PP PP Q0 Q1 00 PP Q2 Q3 PP P

01 *

11 * 1 *

10 *

00 01 11 10 J2

* *

00 01 11 10 K2

PP PP Q0 Q1 00 PP Q2 Q3 PP P

01

11 1 1 * *

10

PP PP Q0 Q1 00 PP Q2 Q3 PP P

01 * *

11 * * 1 1

10 * *

00 01 11 10

* *

* *

* * 80

00 01 11 10

* *

J1
PP PP Q0 Q1 00 PP Q2 Q3 PP P

K1 01 * * * * 11 * * * * 10 1 1 1 1 K0 01 * * * * 11 1 1 1 1 10 1 1 1 1
PP PP Q0 Q1 00 PP Q2 Q3 PP P PP PP Q0 Q1 00 PP Q2 Q3 PP P

01

11 1 1 1 1

10 * * * *

00 01 11 10 J0
PP PP Q0 Q1 00 PP Q2 Q3 PP P

00 01 11 10

* * * *

01 1 1 1 1

11 * * * *

10 * * * *

00 01 11 10

* * * *

00 01 11 10

1 1 1 1

Aprs simplication, on obtient les quations suivantes : J3 J2 J1 J0 Do le circuit : Q0 1


J K J K

= Q0 .Q1 .Q2 , = Q0 .Q1 , = Q0 , = 1,

K3 K2 K1 K0

= Q0 .Q1 .Q2 = Q0 .Q1 = Q0 =1

Q1
& & J K

Q2
& & J K

Q3

Gnrateur de squences On appelle gnrateur de squences lassociation dun circuit combinatoire et dun circuit squentiel. Le dispositif rsultant permet de crer des signaux de commande dcals dans le temps, et constitue ainsi le coeur de lunit de contrle dun ordinateur : les mots binaires gnrs sont en eet la base du fonctionnement des architectures cables et microprogrammes. Le squenceur ayant la structure la plus simple rsulte de lassociation dun compteur et dun dcodeur :

81

t2n 1

t2 t1 t0

Dcodeur
qn1 q2 q1 q0

Compteur

Un compteur comportant n bascules pourra passer par 2n tats distincts successifs, le dcodeur reli aux sorties du compteurs comportant alors n entres et 2n sorties permettant de distribuer successivement 2n signaux de commandes t0 , t1 , . . . t2n 1 dans diverses parties dune architecture.

82

Chapitre 6

Architecture du processeur
6.1 Introduction

Un ordinateur est un dipositif servant lexcution dun programme, programme qui se prsente sous la forme dun ensemble dinstructions ranges dans la mmoire principale : chaque instruction est successivement lue partir de la mmoire, cest--dire transfre lUC (pour Unit Centrale ) pour y tre dcode puis excute. Ce processus se fait par lintermdiaire de cycles rythms par une horloge. On distingue : un cycle de recherche, au cours duquel une instruction est extraites de la mmoire pour tre copie vers un registre du processeur, appel registre instruction, et not IR ; un cycle dexcution, au cours duquel linstruction en cours est interprte par le dispositif de commande et des signaux sont gnrs et envoys au sein de lUC pour permettre le traitement de cette instruction.

83

Si le cycle de recherche ncessite un nombre constant dimpulsions dhorloge, le cycle dexcution peut requrir une ou plusieurs impulsions dhorloge suivant la complexit de linstruction. Les oprations lmentaires eectues durant une seule impulsion dhorloge sont appeles microoprations, et dcrites laide dun formalisme simple, le langage transfert.

6.2 6.3

Jeux dinstructions et modle dexcution Equivalence machine accumulateur machine de Turing

Il est relativement facile de montrer que les dirents modles dexcution considrs au paragraphe prcdent peuvent tre simuls sur une machine accumulateur. Nous montrons ici quune machine accumulateur possdant une mmoire virtuellement innie est par ailleurs quivalente une machine de Turing, en montrant dabord quune telle machine accumulateur peut simuler toute machine de Turing, et quinversement une machine de Turing est en mesure de simuler toute machine accumulateur. Simulation dune machine de Turing par une machine accumulateur Etant donnes une machine de Turing et une machine accumulateur, la mmoire de la premire est utilise pour simuler le ruban de la seconde, comme dans la gure suivante [Dewdney93] : 84

Acc 1 2 3 4 5 6 7 8 Position Etat

Partant de la bijection ainsi obtenue entre mot-mmoires de la machine accumulateur et cellules du ruban de la machine de Turing, il ne reste plus qu crire pour la machine accumulateur un programme qui simule les oprations de la machine de Turing : chacune de ces oprations correspond un ensemble dinstructions de la machine accumulateur qui doivent produire sur la mmoire de cette machine leet que produisent les oprations en question sur le ruban de la machine de Turing. A cet eet, il est ncessaire que le programme de la machine accumulateur soit en mesure de se souvenir la fois de la position de la tte de lecture-criture, et de ltat courant de la machine de Turing, comme cela est reprsent dans la gure. Simulation dune machine accumulateur par une machine de Turing

6.4 6.5

Modes dadressage, alignement Squencement des micro-oprations

Les instructions composant le programme que lordinateur doit excuter sont charges dans des emplacements conscutifs de la mmoire principale. Au cours du cycle de recherche, lUC va chercher les instructions une une et excute la fonction demande. LUC mmorise ladresse mmoire de linstruction suivante excuter par lintermdiaire dun registre spcialis, appel PC (pour compteur de programme ). Aprs avoir obtenu une instruction, le contenu du PC est mis jour pour dsigner linstruction suivante de la squence dinstruction excuter. Si lon suppose, pour simplier, que chaque instruction occupe un mot mmoire, alors lexcution dune instruction se dcompose en trois tapes, correspondant lexcution dun ensemble de microoprations : 2. Incrmentation du compteur de programme : PC [PC] + 1 1. Obtention du contenu de la case mmoire dsigne par PC : IR [[PC]]

3. Eectuer les actions spcies par linstruction range dans IR. Les deux premires tapes correspondent au cycle de recherche, la troisime tape au cycle dexcution. A ce stade, il est important de rappeler que les dirents blocs composant lUC peuvent

85

tre organiss et interconnects de faons direntes, en fonction du nombre de registres disposition au sein de lUC, et selon que lon considre une architecture un bus unique, ou plusieurs bus. Cependant, quelques exceptions prs, la plupart des oprations composant le cycle de recherche et le cycle dexcution peuvent ralises en excutant une ou plusieurs des fonctions suivantes dans un ordre prdni : Obtention dune case mmoire et chargement dans un registre de lUC. Rangement dun mot de donnes contenu dans un registre de lUC dans une case mmoire dtermine. Transfert dun mot de donnes dun registre un autre ou vers lUnit Arithmtique et Logique. Excution dune opration arithmtique ou logique, et rangement du rsultat dans un registre de lUC.

6.6 6.7

Contrle cabl Contrle microprogramm

86

Chapitre 7

Evaluation des performances


La mesure et la possibilit de comparaison des performances obtenues par une machine dterminent les choix de conception dune architecture. Si toute mesure de performance repose in ne sur la mesure du temps que passe lunit centrale excuter un ensemble de tches choisies, direntes units de mesures sont envisageables en fonction des caractristiques que lon cherche valuer. Dautre part, la comparaison des performances obtenues partir dun dispositif damlioration permet de mesurer lacclration eectivement obtenue par limplmentation de ce dispositif, et reprsente donc un outil thorique absolument ncessaire. Les concepts prsents dans ce chapitre sont dvelopps notamment par John Hennessy et David Patterson dans [HennessyPatterson96].

7.1

Equation de performance de lUnit Centrale

Lquation de performance de lUC dpend de la priode dhorloge, exprime sous forme : de dure (par exemple : 2ns) ; de frquence (par exemple 700MHz). Le temps UC dun programme sexprime donc de deux manires : (1) Temps dexcution UC = Nb de cycles UC Temps cycle dhorloge Nb de cycles UC (2) Temps dexcution UC = Frquence dhorloge Or, en plus du nombre de cycles utiliss pour lexcution dun programme, on peut compter le nombre dinstructions excutes, symbolis par la constante NI. Dautre part, partir du nombre de cycles et du nombres dinstructions excutes, on peut calculer le nombre moyen de cycles par instruction, reprsent par la variable CPI. On a : Nb de cycles UC (3) CPI = NI do : Nb de cycles UC = NI CPI, et en remplaant dans lquation (1) : (1) Temps dexcution UC = NI CPI Temps cycle dhorloge NICPI (2) Temps dexcution UC = Frquence dhorloge

87

Remarque : Lquation de performance de lUC montre quels sont les facteurs sur lesquels un concepteur de circuit peut agir pour obtenir un gain de performance ; Par exemple, une amlioration de 10% dans la frquence dhorloge, le CPI ou le NI conduit une amlioration de 10% du temps UC. Malheureusement, les technologies de base impliques dans une modication sont interdpendantes ; on peut relever le constat suivant : la Frquence dhorloge dpend de la technologie matrielle ; le CPI dpend de larchitecture et de la structure du jeu dinstructions ; le NI dpend de la structure du jeu dinstructions et du compilateur. Heureusement, beaucoup des techniques accessibles pour accrotre les performances amliorent essentiellement une composante avec un impact petit ou prvisible sur les deux autres. Il est noter que lquation de performance de lUC peut tre encore rane de la manire suivante : On considre NIi = le nombre de fois o linstruction i est excute dans un programme CPIi = le nombre moyen de cycles ncessaires lexcution de linstruction i On a alors : (4) Nb de cycles =
n i=1 (CPIi

do, en remplaant dans les quations (1) et (2) : NIi ) Temps cycle dhorloge CPIi NIi ) (2) Temps dexcution UC = Frquence dhorloge et dans lquation (3) : (1) Temps dexcution UC =
n i=1 (

NIi )

n i=1 (CPIi

(3) CPI =
n n i=1 (CPIi

NI
i=1

NIi ) NIi ) NI

(CPIi

7.2

Units de mesure de la performance : MIPS et MFLOPS


NI Temps dexcution 106 Frquence dhorloge CPI 106

On dsigne par MIPS, le million dinstructions excutes par seconde. On a : Nb de MIPS = =

A priori les machines rapides ont un dbit MIPS plus lev. Toutefois : 88

Le nombre de MIPS dpend du jeu dinstructions ce qui rend dicile la comparaison de machines ayant des jeux dinstructions dirents. Il dpend des programmes sur un mme ordinateur. Il peut varier en sens inverse de la performance si on ne prend pas garde au contexte de la machine sur laquelle sont faites les mesures (cas typique : une machine avec du matriel ottant optionnel). Dans le cas de programmes pour lesquels le traitement des ottants revt une importance particulire, il est en gnral plus pertinent dutiliser comme unit de mesure le MFLOPS, qui dsigne le million doprations ottantes par seconde. On a Nb de MFLOPS = Nb doprations ottantes ralises Temps dexcution UC 106

Le MFLOPS dpend de la machine et du programme (bien quon considre ici non pas des instructions mais des oprations).

7.3

Mesure de lacclration : la loi dAmdahl

Lacclration indique quel est le gain en vitesse pour une tche utilisant une machine munie dun dispositif damlioration par rapport la mme machine sans ce dispositif. Appelons Temps dexcution ancien, le temps dexcution de la tche sans utiliser le dispositif damlioration. De faon similaire, appelons Temps dexcution nouveau, le temps dexcution de la tche en appliquant le dipositif damlioration. On a : Acclration = Temps dexcution ancien Temps dexcution nouveau

En fait, et de manire plus prcise, lacclration dpend de : 1. La fraction du temps total de calcul pendant laquelle lamlioration peut tre utilise (appele fraction amliore, 1). 2. Le gain apport par le mode dexcution amlior, cest dire le gain en vitesse si le programme entier sexcutait en mode amlior (appel acclration amliore, 1). On a : fraction de temps dutilisation du dispositif Fraction amliore = Temps dexcution nouveau Temps dexcution ancien Acclration amliore = temps dexcution total avec dispositif En dtaillant, on voit que : Temps dexcution nouveau = fraction de temps dutilisation du dispositif + fraction du temps restant sans dispositif (7.1) Le temps dutilisation avec dispositif si le dispositif tait applicable tout au long de la tche est donn par Temps dexcution ancien/Acclration amliore ; le temps rel dutilisation sur la fraction amliore est alors donn par (Temps dexcution ancien/Acclration amliore) Fraction amliore 89

autrement dit : fraction de temps dutilisation du dispositif = Fraction amliore Temps dexcution ancien Acclration amliore Dautre part, la fraction de temps pendant laquelle le dispositif nest pas appliqu sexprime en retranchant du temps dorigine le temps pendant lequel le dispositif sapplique, donn par Temps dexcution ancien Fraction amliore, do : fraction du temps restant sans dispositif = Temps dexcution ancien Temps dexcution ancien Fraction amliore

= Temps dexcution ancien (1 Fraction amliore) En remplaant alors dans lexpression du Temps dexcution nouveau donne par lquation 7.1 : Temps dexcution nouveau = Temps dexcution ancien (1 Fraction amliore) + Fraction amliore Temps dexcution ancien Acclration amliore = Temps dexcution ancien Fraction amliore ) ((1 Fraction amliore) + Acclration amliore On obtient alors (Loi dAmdahl) Acclration = 1 1 Fraction amliore + Fraction amliore Acclration amliore

Exemple 7.1 Un dispositif damlioration est 10 fois plus rapide que la machine de base, mais on ne peut lappliquer que 40% du temps. Quelle est lacclration obtenue en intgrant ce dispositif ? On a : Fraction amliore = 0, 4 Acclration amliore = 10 Lacclration globale obtenue est donne par la loi dAmdhal : Acclration = 1 1 0, 4 + 1 = 0, 64 = 1, 56
0,4 0,6

90

Annexe A

Le code ASCII
Le codage dun caractre donn dans la table ciaprs est obtenu par juxtaposition de la combinaison des bits de la colonne celle de la ligne o est situ le caractre concern. Par exemple, le code du caractre D est 1000100, celui du caractre %, 0100101. Les chires dcimaux sont exprims par le groupe de trois bits 011, suivi de leur quivalent en DCB. Enn le code ASCII contient une srie de caractres de commande, comme par exemple le retour chariot (CR), le retour arrire (BS), ou encore la tabulation horizontale (HT), indispensables dans tout processus ddition de texte ou de communication. On utilise conventionnellement lensemble dacronymes suivants pour les dirents caractres de commande disponibles :

NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE

nul dbut den tte dbut de texte n de texte n de bande demande accus de reception sonnerie retour arrire tabulation horizontale saut de ligne tabulation verticale saut de page retour chariot horscode encode chappement transmission

DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US SP DEL

contrle dispositif 1 contrle dispositif 2 contrle dispositif 3 contrle dispositif 4 accus de reception ngatif synchronisation n de bloc de transmission annulation n de support substitution chappement sparateur de chier sparateur de groupe sparateur darticle sparateur de sousarticle espacement eacement

91

Le code ASCII est alors : 000 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 001 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 010 SP ! " # $ % & ( ) * + , . / 011 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 100 @ A B C D E F G H I J K L M N O 101 P Q R S T U V W X Y Z [ \ ] ^ _ 110 ` a b c d e f g h i j k l m n o 111 p q r s t u v w x y z { | } ~ DEL

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

92

Annexe B

Bases de numration sur les entiers


B.1 Division euclidienne dans N
(a N)(b N )(k N )(a < k.b) Preuve : De 1 b, on dduit a a.b do a + b a.b + b. De plus, 0 < b do a < a + b. On a donc a< a+b do a < a.b + b a + b a.b + b soit a < (a + 1).b. Par consquent il existe au moins un entier k, strictement suprieur zro, tel que a < k.b. Q.E.D. Thorme B.1 Quels que soient a N et b N , il existe un couple unique (q, r ) N N tels que a = b.q + r et 0 r < b. Preuve : Soit E , lensemble des entiers k tels que a < k.b. Daprs le lemme prcdent E = ; comme sous-ensemble de N il admet donc un plus petit lment. Cet lment nest pas nul, on le note q + 1 do a < (q + 1).b. Llment q + 1 tant le plus petit lment de E , q nest pas dans E , do a q.b. Donc il existe un entier q unique tel que b.q a < b.(q + 1) Si on pose a b.q = r (q tant unique, r lest aussi), on a a b.q = r b.q a < b.(q + 1) qui quivaut a = b.q + r 0r<b

Lemme B.1

On a eectu la division euclidienne de a par b, q est le quotient, r le reste. Q.E.D.

93

B.2

Dveloppement polynmial dun entier naturel

La reprsentation dun entier naturel dans un systme de numration donn se fonde sur le choix de b symboles (b > 1), appels chires du systme de numration. Le systme en question est dit de base b, et la reprsentation dun entier dans ce systme repose sur le rsultat suivant : Thorme B.2 Soit b N, b > 1. Pour tout a N, suprieur ou gal b, il existe une squence unique de n entiers naturels q0 . . . qn1 tels que : a = qn1 .bn1 + . . . + q2 .b2 + q1 .b + q0 avec 0 < qn1 < b et i {0, 1, . . . , (n 2)}, 0 qi < b. Preuve : Soit a N, a b (b > 1). En eectuant la division euclidienne de a par b, il existe un couple unique (q1 , r0 ) N N tel que a = q1 .b + r0 avec 1. si q1 < b le thorme est dmontr 2. si q1 b, il existe un couple unique (q2 , r1 ) N N tel que q1 = q2 .b + 1 avec (a) si q2 < b le thorme est dmontr (b) si q2 b on eectue la division euclidienne de q2 par b et on procde ainsi de suite jusqu ce que le quotient qn1 < b (ceci se produira ncessairement car la suite des quotients q1 , q2 , . . . , qn1 est dcroissante). On obtient successivement (0) (1) (2) . . . a q1 q2 . . . = = = . . . q1 .b + r0 q2 .b + r1 q3 .b + r2 . . . avec avec avec . . . avec 0 r0 b, 0 < q1 < a 0 r1 b, 0 < q2 < q1 0 r2 b, 0 < q3 < q2 . . . 0 rn2 b, 0 < qn1 < qn2 0 r0 b 0 < q1 < a 0 r0 b 0 < q1 < a

(n 1) qn2 = qn1 .b + rn2

En multipliant les galits (0), (1), (2), . . . , (n 1) respectivement par 1, b, b2 , . . . , bn2 , et en les additionnant membre membre, on obtient a = qn1 .bn1 + rn2 .bn2 + . . . + r2 .b2 + r1 .b + r0 avec 0 < qn1 < b et i {0, 1, . . . , (n 2)}, 0 ri < b. La dcomposition est unique car les couples qi , ri1 successifs sont uniques. Q.E.D. Soit b la base du systme de numration choisi, et soit a un entier naturel dans le systme de base b. La reprsentation de a en base b seectue conventionnellement de la faon suivante : Si a < b, lentier naturel a est reprsent par lun des b symboles dnissant le systme de numration de base b. 94

Si a b, a scrit de manire unique sous la forme a = qn1 .bn1 + . . . + q2 .b2 + q1 .b + q0 avec 0 < qn1 < b et i {0, 1, . . . , (n 2)}, 0 qi < b. Par convention, lentier naturel a, dans le systme de numration de base b est alors crit : a = q n 1 . . . q 2 q 1 q 0 Exemple B.1 Dans le systme de numration de base 5, les symboles utiliss sont 0, 1, 2, 3, 4. Lentier naturel a not 4302 correspond au dveloppement a = 4.53 + 3.52 + 0.51 + 2.50 Exemple B.2 Soit le nombre 9456, crit en base 10 (b = 10) et qi {0, . . . , 9} 9456 = 9.103 + 4.102 + 5.101 + 6.100

Notation
Par convention on indice la reprsentation dun nombre dans une base par la reprsentation de cette base dans le systme dcimal. Par exemple, on notera la reprsentation de lentier 377 par : 37710 en base 10, ou 43025 en base 5. Le thorme B.2 donne lieu au corollaire suivant : Corollaire B.1 Soit b N, b > 1. Pour tout a N, il existe un entier n tel que bn1 a < bn Preuve : Soit a, un entier naturel quelconque, a scrit de manire unique sous la forme a = qn1 .bn1 + . . . + q2 .b2 + q1 .b + q0 avec 0 < qn1 < b et i {0, 1, . . . , (n2)}, 0 qi < b. On obtient immdiatement lencadrement bn1 a < bn Q.E.D.

B.3

Division euclidienne dans Z

Thorme B.3 Quels que soient a Z et b Z , il existe un couple unique (q, r ) Z Z tels que a = b.q + r et 0 r < b. Preuve : Cas 1 a 0 On est ramen la division euclidienne dans N et lon sait (thorme B.1) quil existe un couple unique (q, r ) dentiers naturels tels que a = b.q + r 95 et 0r<b

Cas 2 a < 0 Considrons la division euclidienne dans N de | a | par b. Il existe un entier naturel q unique tel que b.q | a | < b.(q + 1) (b) si b.q = | a |, on a b.q < | a | < b.(q + 1) soit b.q < a < b.(q + 1), ou encore b.(q 1) < a < b.(q ). En posant q = q 1, on obtient b.q < a < b.(q + 1). Autrement dit : (a Z)(b N )(!q Z)(b.q < a < b.(q + 1)) En posant a b.q = r (q tant unique, r lest aussi), on a : a b.q = r b.q < a < b.(q + 1) quivalent a = b.q + r 0r<b Q.E.D. (a) si b.q = | a |, a = b.(q ) et en posant q = q , a = b.q

B.4

Congruences modulo n

Dnition B.1 Etant donns x Z, y Z, et n N , x est dit congru y modulo n (not x y (mod n)) si et seulement sil existe un entier rationnel k tel que x = y + k.n. Remarque : La relation de congruence modulo n est une relation dquivalence. Lensemble des classes dquivalence est not Z/nZ. Thorme B.4 Soient x Z, y Z, n N . x y (mod n) Preuve : () Supposons que x et y ont le mme reste dans la division euclidienne par n. On a : x = n.q + r y = n.q + r do x y = n.(q q ), autrement dit x = y + n.(q q ), i.e. x y (mod n). ssi x et y ont le mme reste dans la division euclidienne par n

() On procde par contrapose : montrons que si x et et y ont des restes dirents dans la division euclidienne par n, alors x nest pas congru y . En raisonnant par labsurde, on suppose que x et y ont des restes identiques dans la division euclidienne par n, i.e. x = n.q + r et y = n.q + r . Alors x y = n.(q q ), i.e. x y (mod n) : contradiction ! 96

Q.E.D. Un entier rationnel x est dit donn modulo n pour dire quil est congru au reste de sa division par n, autrement dit quil appartient la mme classe dquivalence que ce reste (par exemple si 9 est donn modulo 4, il est congru 1 modulo 4). Il est en fait commode de se munir de lopration modulo , dnie de manire suivante : Dnition B.2 Etant donns x Z, et n N ,

x modulo n = y ssi x = n.k + y, avec r Z, k Z

Remarque : La relation de congruence est compatible avec laddition et la multiplication dans Z. En eet : (x, x ) Z Z, (y, y ) Z Z, si alors x x (mod n) y y (mod n)

Les classes dquivalence de Z/nZ sont caractrises par les restes de la division euclidienne par n : les restes de la division euclidienne par n ne pouvant tre que 0, 1, . . . n 1, Z/nZ contient 1, autrement dit Z/nZ = { 1}. n lments quon note 0, 1, . . . n 0, 1, . . . n Exemple B.3 Tout entier rationnel a pour reste dans la division euclidienne par 4, soit 0, soit 1, soit 2, soit 3. Les lments de Z/4Z sont donc : 0 = {. . . , 8, 4, 0, 4, 8, 12, . . . } 1 = {. . . , 7, 3, 1, 5, 9, 13, . . . } = {. . . , 6, 2, 2, 6, 10, 14, . . . } 2

x + y x + y (mod n) et

x.y x .y (mod n)

3 = {. . . , 5, 1, 3, 7, 11, 15, . . . }

Remarque : Llment not 0 dans Z/4Z est dirent de llment not 0 dans Z/5Z. En eet : 0 = {. . . , 8, 4, 0, 4, 8, . . . } 0 = {. . . , 10, 5, 0, 5, 10, . . . } Reprsentation sur un cercle Il est parlant de visualiser les lments de chaque classe dquivalence sur un cercle ; en tournant sur ce cercle dans le sens conventionnel des aiguilles dune montre, et en ajoutant un chaque fois, on passe dune classe dquivalence une autre. Par exemple pour Z/4Z :
'$

dans Z/4Z dans Z/5Z

&%

97

La position des dirents lments de chaque classe dquivalence sur le cercle est matrialise par le nombre de tours successifs raliss sur le cercle. Par exemple, en comptant partir de 4 : Tour 1
'$ '$ '$ '$

&% &% &% &%

3 1

Tour 2

'$ '$ '$ '$

&% &% &% &%

3 1

Tour 3

'$ '$ '$ '$

&% &% &% &%

On voit par exemple que 4 (tour 1), 0 (tour 2), et +4 (tour 3) appartiennent la mme classe dquivalence.

98

Annexe C

La norme IEEE 754


C.1 Reprsentation IEEE 754

[GermainEtiemble] La norme IEEE 754 comporte deux aspects : la dnition dune reprsentation commune des nombres fractionnaires (ou rels), et des contraintes sur la prcision des calculs. Il existe deux formats : simple et double prcision, chacun de ces deux formats pouvant tre en outre tendus. 1 s Simple prcision (32 bits) 8 23 E (exposant) M (mantisse)

Double Prcision (64 bits) 1 11 52 s E (exposant) M (mantisse) En simple prcision, e est linterprtation de E en excs 128 (e = E10 127). On a donc emin = 127, emax = +128. En double prcision, e est linterprtation de E en excs 1024 (e = E10 1023). On a donc emin = 1023, emax = +1024.

On distingue cas normalis (emin < e < emax ) et cas exceptionnel (e = emin ou e = emax ).

Cas normalis Pour emin < e < emax , le codage sinterprte de la faon suivante : Le bit de poids le plus fort correspond au bit de signe. La mantisse utilise un 1 implicite ; donc pour une partie fractionnaire f1 f2 . . . fn , la mantisse m est dnie par
n

m = 1, f1 f2 . . . fn = 1 +
i=1

fi .2i = (1f1 f2 . . . fn )2 .2n

Au total le nombre est valu par : x = (1)s 1, f1 f2 . . . fn 2e Par exemple, C 890000016 code 218 (1+23 ). En eet : C 890000016 = 1100 1000 1001 0000 . . . 00002 . On a donc 99

1. bit de signe = 1 2. E = 100100012 = 145, donc e = 17 3. f = 0010 . . . 0, donc m = 1, 0012 = 1 + 23 Cas exceptionnel La table suivante montre que les valeurs extrmes sont rserves la reprsentation des nombres non reprsentables en mode normalis : Cas Normalis Dnormalis Zro Inni NaN e emin < e < emax e = emin e = emin e = emax e = emax f quelconque =0 0 0 =0 valeur 1, f 2e s (1) 0, f 2emin (1)s 0 (1)s NaN (1)s

Il existe un plus grand nombre exactement reprsentable en normalis : xm = 1, 1 . . . 1 2emax 1 Les nombres plus grands sont reprsents par les mots o le signe est positif, e = emax et f = 0. Linterprtation de tous ces mots est identique : +. Pour les nombres ngatifs, on a une reprsentation analogue de . Il existe un plus petit nombre strictement positif reprsentable en normalis. Cependant, la reprsentation dnormalise permet de reprsenter des nombres plus petits. On notera que le bit implicite nest plus 1, mais 0, do lappellation dnormalis. Il existe deux reprsentations de 0, suivant le bit de signe. Enn, un code est rserv pour reprsenter le rsultat dune opration aberrante, par exemple 0/0. Ce code est NaN.

C.2

Oprations ottantes

Les opration ottantes impliquent un traitement simultan des mantisses (cest dire des parties fractionnaires) et des exposants. Les principales oprations sont les comparaisons et les oprations arithmtiques : addition, soustraction, multiplication, et division sont ralises par des oprateurs matriels spciques. Le standard IEEE 754 ne prescrit rien sur limplmentation. Il spcie simplement les bits dune reprsentation, et du rsultat des oprations arithmtiques ottantes. Ainsi le langage java ore un calcul ottant conforme IEEE 754 indpendamment de toute plate-forme matrielle. Comparaisons Lutilisation du bit de signe permet le test rapide du signe. La notation en excs pour lexposant permet de comparer les ottants en utilisant la comparaison des entiers naturels. Addition et soustraction Laddition implique une dnormalisation du nombre le plus petit pour que les exposants deviennent gaux, suivie dune addition des mantisses, qui est suivie ventuellement dune renormalisation. La dnormalisation et la renormalisation peuvent entraner une perte dinformation. Laddition peut entraner la sortie du champs des nombres reprsentables en normalis : par exemple xm + xm .

100

Multiplication Soit deux nombres ottants x1 = s1 m1 2e1 et x2 = s2 m2 2e2 . Le produit x1 .x2 est donn par s1 s2 m1 m2 2e1 +e2 . Il y a multiplication des mantisses, ce qui correspond une multiplication entire, o lon arrondit pour obtenir un rsultat correspondant au nombre de bits de la partie fractionnaire. Compte-tenu du codage en excs, laddition des exposants correspond lopration E1 + E2 c o les Ei sont interprts comme des entiers naturels, c = 127 en simple prcision et 1023 en double prcision. L encore, il peut y avoir perte dinformation, lors de larrondi, ou sortie du champs des nombres reprsentables, lorsque lexposant est trop grand ou trop petit. Traitement des situations anormales Comme on vient de le voir, les calculs peuvent entraner soit un dpassement de capacit, le rsultat ntant pas reprsentable au format normalis, soit une erreur, le rsultat tant arrondi. La norme IEEE 754 vise permettre un programme dadopter un comportement adquat dans ce type de situation anormale. Les rsultat non-reprsentables sont pris en compte par larithmtique tendue et la reprsentation dnormalise. Les erreurs sont prises en compte par une contrainte de prcision. Arithmthique tendue Lide de larithmtique tendue est quil peut tre protable de laisser survivre un programme qui a, par exemple, eectu une division par 0. Lexemple plus simple est un solveur qui cherche les zros dune fonction dont lensemble de dnition nest pas commodment calculable. Le solveur travaille en valuant la fonction en divers points. Sil tombe sur une valeur en dehors de lensemble de dnition de la fonction, il peut fort bien calculer 0/0 ou 1. Cette erreur nest pas ncessairement gnante, si le solveur peut recommencer en un autre point, indpendamment. La norme dnit une arithmtique tendue trois valeurs supplmentaires, , +, et NaN. Les rgles utilies sont les rgles usuelles, par exemple : (+) + (+) = + (+) + () = NaN () () = () avec rgle des signes. Toute opration dont un des oprateurs est NaN a pour rsultat NaN. Du point de vue de lapplication, si une des opration produit un rsultat trop grand en valeur absolue, ou bien mathmatiquement incorrect (0/0), le rsultat tombe dans lensemble {, +, NaN}, et les calculs peuvent tre poursuivis en utilisant larithmtique tendue. Tout FPU conforme IEEE 754 doit implmenter cette arithmtique tendue. Reprsentation dnormalise La dirence de deux nombres normaliss peut ne pas tre reprsentable au format normalis. Par exemple, en simple prcision (emin = 127), x = 1, 1 . . . 11 2126 et y = 1, . . . 10 2126 sont reprsentables en normalis (respectivement par 00F F F F F F16 et 00F F F F F E16 ). Mais x y = 0, 0 . . . 01 2126 nest pas reprsentable en normalis. On pourrait tout simplement arrondir le rsultat au plus proche reprsentable, soit 0. Mais supposons que le FPU ralise correctement la comparaison de deux ottants en testant lgalit de tous leurs bits. Le test x = y donne faux, et le test x y = 0 donne vrai. Deux codes identiques du point de vue mathmatique auront des rsultats dirents : par exemple, le code if not (x=y) then z=1/(x-y) pourrait aboutir une division par 0, et le code if not (x-y=0) then z=1/(x-y) ne produit pas derreur. La reprsentation dnormalise permet prcisment la reprsentation de ces nombres trop petits : 0, 0 . . . 01 2126 = 0, 0 . . . 10 2127 , qui se reprsente comme 0000000216 . Dans ce cas les deux test ont 101

le mme rsultat. La dirence de deux nombres dnormaliss peut elle-mme tre trop petite pour tre reprsente, mme en dnormalis, et donc peut tre arrondie 0 (voir le paragraphe consacr la prcision ci-aprs).

C.3

Drapeaux et gestionnaires dexceptions

Le standard IEEE 754 fournit un fonctionnement par dfaut, qui est de continuer le calcul dans larithmtique tendue. Continuer lexcution est souvent la solution approprie, mais pas toujours. Sur erreur arithmtique ottante, une application peut donc souhaiter trois comportements : arrt immdiat, ou contrle par elle-mme, ou non-traitement. Un exemple typique dapplication dapplication qui demande un arrt immdiat est celui du x . En simple prcision, quand x = 265 (reprsentable par 6000000016 ), x2 produit calcul de 1+ x2 et le rsultat est 0, alors quil est de lordre de 1/x, qui est parfaitement reprsentable ; le rsultat est donc compltement erron et continuer lexcution en gnral sans intrt (et ventuellment coteux en temps machine). Un exemple typique dapplication qui demande un traitement nuanc est une application qui gnre des nombres dnormaliss : elle ne souhaite pas sinterrompre prmaturment chaque rsultat dnormalis, mais veut sinterrompre si elle obtient un 0 comme rsultat de la soustraction de nombres dnormaliss. Le standard prescrit que les vnements anormaux soient enregistrs dans des drapeaux (ags), et recommande fortement que des gestionnaires dexceptions soient installs. Les drapeaux permettent un traitement personnel lutilisateur (ventuellement rien) ; les gestionnaires dexception fournissent un traitement par le logiciel de base (systme ), qui permet en particulier larrt immdiat. La gure suivante prsente ces drapeaux : Flag Underow Overow Division par 0 Invalid Operation Inexact Condition Nombre trop petit Nombre trop grand Division par 0 Rsultat = NaN et Oprateurs = NaN Rsulat arrondi Rsultat 0, emin , ou nombre dnormalis ou xmax NaN Rsultat arrondi

Des instructions du processeur permettent de les tester. Finalement, des routines des bibliothques numriques orent une interface utilisateur vers ces instructions, par exemple la libm qui est la librairie numrique standard associe au langage C. Lutilisateur peut donc choisir de ne pas tester les drapeaux, ou de les tester et dappliquer un algorithme de son choix. La norme prescrit que les drapeaux soient persistants (sticky) : la dirence des drapeaux entiers, un drapeau positionn ne sera remis 0 que par une instruction explicite. Les drapeaux et les librairies numriques permettent donc le contrle par lapplication. Un traitement gnrique, en gnral larrt immdiat, est rendu possible si chaque dpassement de capacit ottant peut dclencher une exception. Le drapeau nest alors pas positionn. Le choix entre positionnement des drapeaux (avec poursuite de lexcution du programme utilisateur) et exception est programmable. Les micro-processeurs orent des bits de contrle qui font gnralement partie dun mot de contrle du processeur, et des instructions pour les positionner, qui permettent ce choix. Il y a un bit de contrle par exception. Lorsque lerreur ne produit pas lappel dun gestionnaire dexception, on dit que lexception est masque. Par 102

exemple, lexception Rsultat Inexact est presque toujours masque : la plupart des calculs eectuent des arrondis et le programme doit continuer. Linterface dun langage de haut niveau vers les instructions de masquage est ralise par des options du compilateur.

C.4

Prcision

Les oprations dalignement et darrondi perdent de linformation, ce qui peut tre sans eet, ou catastrophique. Par exemple sur trois digits dcimaux de mantisse, soient x = 2, 15 102 et y = 1, 25 105 . En alignant y sur x et en arrondissant, y = 0 et x y = 2, 15 212 , ce qui est le rsultat arrondi correct ( correspondant loprateur de soustraction sur trois digits) . Mais pour x = 1, 01 101 et y = 9, 93 en alignant y sur x et en arrondissant, y = 0, 99 101 et x y = 0, 02, alors que le rsultat sur trois digits 10, 1 9, 93 = 0, 17. Deux digits sont donc faux : lerreur sur le dernier digit sest propage. Une mesure de prcision est le ulp (units in last position). Dans le calcul prcdent, lerreur est de 15 ulp. Le standard IEEE impose que les oprations daddition, soustraction, multiplication et division soient arrondies exactement : tout se passe comme si le rsultat tait calcul exactement, puis arrondi au plus prs. Ceci requiert que lunit de calcul dispose de plus de bits que le format, pour stocker temporairement des informations. Il a t montr que trois bits susent (garde, garde supplmentaire et sticky bit). Le contrat assur par le standard IEEE ne garantit videmment rien sur le cumul des erreurs dans une squence de calculs. Ltude de la qualit numrique des rsultats dun algorithme est une branche de lanalyse numrique. Lexemple le plus simple est lassociativit, que le calcul ottant ne respecte pas. Considrons lexemple suivant, toujours avec une mantisse de trois digits dcimaux : dune part 2, 15 1012 (2, 15 1012 1, 25 105 ) = 2, 15 101 2 2, 15 101 2 = 0, dautre part (2, 15 1012 2, 15 1012 ) 1, 25 105 = 1, 25 105 .

103

Annexe D

Relations fondamentales de lalgbre de Boole


Relation x {0, 1} x + x =1 x {0, 1} x.x =0 =x x {0, 1} x x {0, 1} x + x = x x {0, 1} x.x = x x {0, 1} x + 1 = 1 x {0, 1} x.0 = 0 (x, y ) {0, 1}2 x + x.y = x (x, y ) {0, 1}2 x.(x + y ) = x (x, y ) {0, 1}2 x + x .y = x + y (x, y ) {0, 1}2 x.( x + y ) = x.y (x, y ) {0, 1}2 x + y = x .y (x, y ) {0, 1}2 x.y = x +y (x, y, z ) {0, 1}3 x.(y + z ) = (x.y ) + (x.z ) (x, y, z ) {0, 1}3 x + (y.z ) = (x + y ).(x + z ) (x, y ) {0, 1}2 x y = x.y + x.y x {0, 1} x 0 = 0 x = x x {0, 1} x x = 0 (x, y, z ) {0, 1}3 x.(y z ) = (x.y ) (x.z ) (x, y ) {0, 1}2 x y = x y = x y (x, y ) {0, 1}2 x y = x y Intitul tautologie contradiction involution idempotence lment absorbant absorption simplication formules de De Morgan distributivit de . sur + distributivit de + sur . expression de en fonction de . et + lment neutre pour lment symtrique pour distributivit de . sur relations avec linversion

104

Annexe E

Aide-mmoire MIPS
E.1 Registres
Nom $zero $at $v0 $v1 $a0 $a3 $t0 $t7 $s0 $s7 $t8 $t9 $k0 $k1 $gp $sp $fp $ra Numro 0 1 23 47 815 1623 2425 2627 28 29 30 31 Utilisation constante 0 rserv lassembleur retours de fonctions passage de paramtres registres gnraux registres gnraux registres gnraux rserv au noyau systme pointeur global pointeur de pile pointeur de frame adresse de retour de fonction A sauvegarder

non oui non oui non oui oui oui oui

E.2
R

Formats dinstruction
6 bits op 5 bits rs 5 bits rt 5 bits rd 5 bits dcal 6 bits fonct

6 bits op

5 bits rs

5 bits rt

16 bits immdiat

105

6 bits op

26 bits adresse

E.3

Gestion de la mmoire
Allocation mmoire Pile des contextes

$sp 7F F F F F F C16

pile ... argument 6 $fp argument 5

$gp 1000 800016

donnes dynamiques registres sauvegards donnes statiques

1000 000016 $sp texte PC 0040 000016 rserv 016

variables locales

106

E.4
Nom add addi and beq bne j jal jr la lui lw mul nor or ori sll slr slt slti sub sw xor

Instructions
Exemple add $s3, $s2, add $s3, $s2, and $s3, $s2, beq $t0, $t1, bne $t0, $t1, j Etiquette jal Etiquette jr $ra Format R I R I I J J J pseudo-instr. I I R R R I I I R I R I R Description s3=s2+s1; s3=s2+100; s3=s2&&s1; if (t0=t1) goto Etiquette; if (t0!=t1) goto Etiquette; goto Etiquette; ra=PC+4; goto Etiquette; Saut ladresse contenue dans le registre ra, cette adresse tant aligne sur une frontire de mot lui $t0, adresse Etiquette16 ori $t0, $t0, adresse Etiquette & 0xFFFF t0=0xFF1416; s0=Mem[sp+32]; s3=s2*s1; s3=~(s2|s1); s3=s2|s1; s3=s2|0xFFFF; s2=s14; s2=s14; if (s1<s0) t0=1; else t0=0; if (s1<2) t0=1; else t0=0; s3=s2-s1; Mem[sp+32]=s0; s3=s2||s1;

$s1 100 $s1 Etiquette Etiquette

la $t0, Etiquette lui $t0, 0xFF14 lw $s0, 32($sp) mul $s3, $s2, $s1 nor $s3, $s2, $s1 or $s3, $s2, $s1 ori $s3, $s2, 0xFFFF sll $s2, $s1, 4 slr $s2, $s1, 4 slt $t0, $s1, $s0 slt $t0, $s1, 2 sub $s3, $s2, $s1 sw $s0, 32($sp) xor $s3, $s2, $s1

107

Bibliographie
[Arnold98] Douglas N. Arnold. Some disasters attribuable to bad numerical computing, 1998. URL : http://www.ima.umn.edu/ arnold/disasters/. Philippe Breton. Une histoire de linformatique. Collection Points Sciences. Seuil, 1990. ISBN 2-02-012348-7. Ioan Dancea and Pierre Marchand. Architecture des ordinateurs. Gatan Morin, 1992. ISBN 2-89105-438-5. Philippe Darche. Architecture des ordinateurstome 2 : Fonctions boolennes, logique combinatoire et squentielle. Passeport pour lInformatique. Vuibert, 2002. ISBN 2-7117-8688-9. A. K. Dewdney. The (New) Turing Omnibus. W. H. Freeman and Company, 1993. ISBN 0-7167-8271-5. Ccile Germain and Daniel Etiemble. Architecture des ordinateurs. Licence dInformatiqueIUP MiageFIIFO, Universit Paris XI, URL : http://www.lri.fr/ENSEIGNANTS/LM/archi/L4.html. David Goldberg. What every computer scientist should know about oatingpoint arithmetic. Copyright, Association for Computing Machinery, Inc, 1991. Disponible (.html) lURL : http://docs.sun.com/source/806-3568/ncg_goldberg.html, ou tlchargeable (.pdf) lURL : http//:www.validlab.com/goldberg/paper.pdf.

[Breton90] [DanceaMarchand92] [Darche02]

[Dewdney93] [GermainEtiemble]

[Goldberg91]

[HennessyPatterson96] John Hennessy and David Patterson. Computer Architecture A Quantitative Approach. Morgan Kaufmann Publishers, 2e edition, 1996. ISBN 2-84180-022-9. [LewisPapadimitrou81] H. R. Lewis and C. H. Papadimitrou. Elements of the Theory of Computation. PrenticeHall, Englewood Clis, N. J., 1981. [MeyerBaudoin80] Bertrand Meyer and Claude Baudoin. Mthodes de Programmation. Collection de la Direction des Etudes et Recherches dElectricit de France. Eyrolles, 2e edition, 1980. ISSN 0399-4198. Marvin Minsky. Computation : Finite and Innite Machines. PrenticeHall, Englewood Clis, N. J., 1967. Sylvain Tisserant. Architecture et technologie des ordinateurs. Dpartement dInformatique Ecole Suprieure dIn108

[Minsky67] [Tisserant03]

gnieurs de Luminy, Universit de la Mditerrane, URL : http://tisserant.developpez.com/, 2003. [Wikipedia] Wikipedia. URL : http://fr.wikipedia.org/.

109