Professional Documents
Culture Documents
Polycopi du cours
Michel Castan
1 Introduction .................................................................................................................................... 7 1.1 Historique ............................................................................................................................... 7 1.2 Les diffrentes gnrations .................................................................................................... 7 1.3 Le modle Von Neumann .................................................................................................... 10 1.4 Les architectures ................................................................................................................... 25 1.5 Mesures de performances ..................................................................................................... 25 2 Code et numration ...................................................................................................................... 27 2.1 Codage .................................................................................................................................. 27 2.2 Systme de numration ........................................................................................................ 35 3 Circuits de calcul ......................................................................................................................... 3.1 Oprations arithmtiques ...................................................................................................... 3.2 Les circuits arithmtiques .................................................................................................... 3.3 Le processeur ........................................................................................................................ 4 La Mmoire .................................................................................................................................. 4.1 Caractristiques fondamentales ............................................................................................ 4.2 Les diffrentes fonctions d'accs .......................................................................................... 4.3 Organisation de la mmoire principale ................................................................................ 4.4 Contrleur de mmoire dynamique ...................................................................................... 5 Les instructions ............................................................................................................................ 5.1 Classification des jeux d'instructions ................................................................................... 5.2 Un exemple de jeu d'instructions ......................................................................................... 5.3 L'adressage des oprandes .................................................................................................... 6 Unit de commande ..................................................................................................................... 6.1 Le squenceur cabl ............................................................................................................. 6.2 Le modle de Wilkes ........................................................................................................... 6.3 Unit de commande microprogramme ............................................................................... 45 45 48 54 69 69 71 72 74 77 77 77 82 85 86 89 90
Michel Castan
Ce polycopi est le support du cours Structure et Fonctionnement des Ordinateurs. Le premier chapitre est une introduction la structure de l'ordinateur. Aprs un rapide historique de l'volution des machines, il prsente le modle de Von Neumann, modle la base de toute machine informatique, par l'tude simplifie des diffrentes parties de l'ordinateur. Le deuxime chapitre concerne le codage de l'information et le systme de numration utilis pour la reprsentation des nombres dans la machine (en particulier le systme binaire). Le troisime chapitre montre comment ces nombres sont manipuls par les circuits de calculs de la machine et comment ces circuits fonctionnent. Le quatrime chapitre tudie l'aspect mmorisation du calculateur, du simple circuit mmoire aux mcanismes de mmoire virtuelle, en passant par la notion de cache mmoire. Le cinquime chapitre s'intresse la frontire entre le monde matriel et le monde logiciel, c'est dire le niveau instruction. Quelques principes de codage du jeu d'instructions sont prsents, ainsi que les techniques modernes utilises pour amliorer la vitesse d'excution de ces instructions. Le sixime chapitre montre comment raliser l'unit de commande permettant d'interprter le jeu d'instruction. Ce polycopi s'accompagne de plusieurs appliquettes Java illustrant un point particulier du cours. Elles sont indiques par l'icne suivant :
Si vous trouvez une erreur dans cette version du polycopi, vrifiez d'abord si l'erreur n'a pas dj t corrige dans la version en ligne. Si ce n'est pas le cas, merci d'en faire part par courrier lectronique l'adresse Michel.Castan@insa-toulouse.fr. Page 5 sur 96
Page 6 sur 96
Chapitre 1
Introduction
1.1 Historique
On attribue Charles Babbage (1792-1871) l'origine de l'ordinateur lectronique moderne. Il fut, en effet, le premier avoir dcrit les principes d'un calculateur d'application gnrale. Sa machine analytique (1833) comportait les quatre oprations de base: addition, soustraction, multiplication et division, et pouvait tre programme l'aide de cartes perfores (Ada Lovelace fut la premire personne programmer cette machine). Cette machine tait capable de rpter une mme squence d'oprations mais aussi de choisir une srie d'oprations ou une autre, suivant l'tat du calcul. Comme ce ft le cas plus tard avec les ordinateurs lectroniques, la partie magasin (mmoire) et la partie moulin (processeur) taient spares. Malheureusement, cette machine ne ft jamais acheve du vivant de son concepteur. Ce n'est que quelques deux cents ans plus tard qu'un consortium de socits informatiques a pu raliser cette machine haute de 2,3 mtres et longue de 3,5 mtres, compose de 4000 pices de mtal pour un poids de prs de 3 tonnes. Elle a pu effectuer un calcul complet en novembre 1991, avec une prcision de 31 chiffres. Les premires machines lectromcaniques verront le jour dans les annes 1890 grce Hermann Hollerith qui proposa une machine pour traiter les donnes du recensement aux tats-unis. Grce l'lectricit, sa machine tait capable de compter, lire et classer les informations fournies par les agents du recensement et enregistres sur cartes perfores. Pour exploiter ses brevets, il fonda, en 1896, la Tabulating Machine Corporation qui, aprs diverses pripties, deviendra en 1924, sous la houlette de Thomas Watson, l'International Business Machines : IBM. La premire machine entirement lectronique fut construite par John Atanasoff en 1938 pour rsoudre des calculs spcifiques. C'est le premier ordinateur spcialis au monde. Du fait de la seconde guerre mondiale, le prototype n'a pas eu de successeur. Il est reconnu actuellement que le premier ordinateur lectronique usage universel est l'ENIAC (Electronic Numerical Integrator And Calculator) construit dans le plus grand secret, dans les annes 1940, par John Eckert et John Mauchly pour le calcul des tables de tir d'artillerie. C'tait une machine norme de 30 m de long, 2,50 m de haut, disposant de 20 registres de 10 chiffres (chaque registre tait compos de 550 tubes lectroniques). Avec l'aide de John Von Neumann, qui on donne tort la paternit du modle qui porte son nom (modle Von Neumann), ils commencent l'tude du successeur de l'ENIAC : l'EDVAC mais dlaissent ce projet pour fonder, en 1947, l'Eckert-Mauchly Computer Corporation qui commercialisera, ds 1951, le premier ordinateur commercial non spcialis : l'UNIVAC (Universal Automatic Computer).
Page 8 sur 96
Au niveau technologique, elle est marque par l'utilisation de circuits intgrs SSI (Small Scale Integration) puis MSI (Medium Scale Integration), c'est dire des circuits contenant environ d'abord une dizaine de composants lmentaires, puis quelques centaines. Cela permettait la construction de machines contenant plusieurs lments assez complexes, pouvant tre programms de manire indpendante. Le nombre d'lments logiques constituant une machine a encore augment d'un ordre de grandeur (10 6). Au niveau de l'architecture des machines, c'est l'avnement de la notion de famille, avec la srie 360 d'IBM : une gamme de machines excutant le mme jeu d'instructions. La troisime gnration est aussi la gnration des mini-ordinateurs. C'est aussi la gnration des premiers microprocesseurs avec le circuit 4004 d'INTEL, apparu en 1972. Cot logiciel, le systme d'exploitation devient la ressource la plus importante et aussi la plus complexe en permettant de nouveaux modes d'utilisation des machines, comme la multiprogrammation, le conversationnel, le tltraitement. Au niveau des langages de programmation, on voit apparaitre PL1, Algol 68, Simula 67, Pascal, Basic, APL.
Page 9 sur 96
1.3.2 L'horloge
Pour synchroniser l'ensemble des dispositifs logiques dans un ordinateur, nous avons besoin d'un chef d'orchestre qui puisse battre rgulirement la mesure. Ce chef s'appelle l'horloge. L'horloge va cadencer le temps avec des battements de mme dure, appels cycle. La dure du cycle de base de l'horloge permet de connatre la frquence de battement. Les microprocesseurs possdent actuellement des frquences d'horloge relativement leves. Les plus rapides arrivent ainsi des frquences de 2Ghz, c'est dire des cycles lmentaires d'une dure de 0.5 nanosecondes! Chaque cycle est numrot et correspond une phase particulire de l'horloge. Au bout d'un certain nombre de cycles appel le nombre de phases de l'horloge, l'horloge redbutera une nouvelle numrotation de cycle. Ainsi, par exemple, la figure 1.1 donne le chronogramme d'une horloge produisant quatre phases (les phases sont dsignes par H 0, H 1, H 2 et H 3).
H o r lo g e H H
0
H
1
H
2
Par la suite, nous distinguerons les deux types de registres, comme indiqu dans les figures 1.4 et 1.5.
S ig n a l d e Ch a r g e m e n t
S ig n a l d e Ch a r g e m e n t
Bu s d e la r g e u r 1
Fig 1.6 : Schma de bus
Bu s d e la r g e u r n
Page 11 sur 96
1.3.5 La mmoire
On peut assimiler la mmoire un vecteur de cellules. L'adresse est la valeur de l'index permettant de slectionner telle ou telle cellule dans le vecteur (valeur pouvant tre 0, 1, 2, ...). Les principales oprations pouvant tre effectues sur une mmoire sont la lecture et l'criture. Pour raliser ces deux oprations, l'unit de commande inscrit l'adresse d'une cellule dans un registre de la mmoire centrale, registre appel registre adresse (RA), puis demande soit lire le contenu de la cellule adresse, soit crire une information dans la cellule adresse. En gnral ces deux changes d'informations ne se font pas directement, mais par l'intermdiaire d'un registre, appel registre d'change ou encore registre mot (RM). L'unit d'information accessible en une seule opration de lecture est le mot. La taille du mot, c'est dire le nombre de caractres binaires le constituant varie d'un systme l'autre. Cela peut aller de 8 bits (un octet) jusqu' 64 bits sur de grosses machines. On dfinit la capacit de la mmoire comme le nombre de bits qu'elle contient. On parle alors de kilo bits (2 10 bits, c'est dire 1024 bits), de mga bits (2 20 bits, c'est dire 1 048 576 bits), de giga bits (2 30 bits, c'est dire 1 073 741 824 bits). La figure 1.7 reprsente un module mmoire trs simple, comprenant un registre adresse (RA), un registre mot (RM) et une mmoire. Les deux registres RA et RM peuvent tre chargs travers un seul bus amenant l'information depuis l'extrieur du module. Le registre RM peut tre lu, travers ce mme bus, depuis l'extrieur. Le chargement du registre RA se fait sur front, tandis que le chargement du registre RM se fait sur niveau.
Fig 1.7 : Module mmoire Regardons plus attentivement le fonctionnement d'un cycle de lecture ou d'criture dans cette mmoire. Ces deux oprations peuvent tre schmatises par les squences RTL suivantes :
Page 12 sur 96
L'opration de lecture ne dtruit pas l'information prsente en mmoire. L'opration d'criture dtruit l'information prsente en mmoire et la remplace par la nouvelle valeur.
Mmoire Pour voir plus en dtail ce fonctionnement, nous devons dcrire le chronogramme de chaque commande utilise. Les figures 1.8 et 1.9 donnent un chronogramme possible pour chaque opration.
H o r lo g e Ch a r g e m e n t RA Ch a r g e m e n t RM
Page 13 sur 96
L'accumulateur tant la fois le premier oprande et le destinataire du rsultat du circuit de calcul, son chargement ne peut se faire que sur front.
Fig 1.10 : Module Arithmtique et Logique Nous supposerons qu'une opration arithmtique (avec chargement du rsultat) peut se faire lors d'une phase de l'horloge. Pour une opration de transfert d'informations venant de l'extrieur vers l'accumulateur, en passant par le circuit de calcul, l'opration effectue correspond additionner la valeur zro. Les diffrentes oprations pouvant tre effectues par cette unit sont mieux dcrites par les chronogrammes des figures 1.11, 1.12 et 1.13 (on suppose que les diffrentes oprations commencent sur le front descendant de l'horloge) :
H o r lo g e S o r t ie U AL d is p o n ib le
Page 14 sur 96
H o r lo g e Ch a r g e m e n t ACC
UAL
Page 15 sur 96
Fig 1.14 : Module d'Entres-Sorties Examinons les chronogrammes pour chaque opration (Fig. 1.15 et 1.16). Une opration de lecture ou une opration d'criture sur priphrique commencera par le chargement de l'adresse du priphrique dans le registre RS. Ensuite, au cycle d'horloge suivant, l'information crite sera charge dans le registre d'change, soit partir de l'unit centrale, dans le cas d'une opration de lecture, soit partir du priphrique le cas de l'opration d'criture. Dans le cas de l'opration d'criture, on crit la donne sur le priphrique concern la fin du deuxime cycle. Dans le cas d'une opration de lecture, l'information charge dans le registre d'change est galement envoy vers l'unit centrale (ce qui explique l'utilisation d'un chargement sur niveau pour ce registre d'change).
H o r lo g e Ch a r g e m e n t RS Ch a r g e m e n t RE
Page 16 sur 96
Fig 1.16 : Opration d'criture d'un priphrique Bien sr, ce schma de fonctionnement est trs simplifi. Nous verrons pas la suite comment cela se passe en ralit.
IO
Page 17 sur 96
Fig 1.17 : Unit de contrle Une machine complte pourra tre construite partir des quatre modules (contrle, mmoire, UAL et E/S), en les reliant entre eux grce un bus inter-module (Fig 1.18).
Controle
Page 18 sur 96
Fig 1.18 : Machine complte Avant de poursuivre, nous devons dfinir le format d'une instruction. Nous allons prendre une instruction trs simple, compose de deux champs : un code opration et un paramtre. Les diffrentes instructions que nous allons pouvoir excuter sont: LirePriph, nom du priphrique Lecture du priphrique dsign par le paramtre de l'instruction. Chargement de la donne dans l'accumulateur. Ecriture du contenu de l'accumulateur dans le priphrique dsign par l'instruction. L'accumulateur est charg partir du contenu du mot mmoire dont l'adresse est donne dans l'instruction. Page 19 sur 96
Le contenu de l'accumulateur est crit dans le mot mmoire dont l'adresse est donne dans l'instruction. Le contenu du mot mmoire dont l'adresse est donne dans l'instruction est ajout l'accumulateur . Le rsultat est re-crit dans l'accumulateur. Le contenu du mot mmoire dont l'adresse est donne dans l'instruction est soustrait de l'accumulateur . Le rsultat est re-crit dans l'accumulateur. Le contenu du mot mmoire dont l'adresse est donne dans l'instruction est multipli par l'accumulateur. Le rsultat de la multiplication est re-crit dans l'accumulateur. L'accumulateur est divis par le contenu du mot mmoire dont l'adresse est donne dans l'instruction. Le rsultat de la division est re-crit dans l'accumulateur. Si l'accumulateur contient zro, le contrle de l'excution est donn l'instruction dont l'adresse est donne dans l'instruction. La machine s'arrte.
Stop
Nous pouvons maintenant dcrire de manire plus prcise les diffrentes phases de l'excution d'une instruction. Nous nous baserons pour cela, sur le fonctionnement des modules prsents prcdemment. Les quatre phases de l'horloge seront notes par H 0, H 1, H 2 et H 3. Le paramtre de l'instruction sera not par RI Param . Voici le fonctionnement des codes oprations pour chacune des phases de l'horloge. H 0: RA PC H 1: RI RM, PC PC+1 LirePriph & H 2: RS RI Param Recherche de l'instruction. Chargement du registre instruction, et incrmentation du compteur ordinal. La machine continuera lorsqu'un nombre sera tap sur le clavier, ce qui aura pour effet de charger le registre d'change RE.
LirePriph & H 3: ACC RE EcrirePriph & H 2: RS RI Param EcrirePriph & H 3: RE ACC ChargerAcc & H 2: RA RI Param Le nombre est crit sur l'cran.
Page 20 sur 96
ChargerAcc & H 3: ACC RM MmoriserAcc & H 2: RA RI Param MmoriserAcc & H 3: RM ACC Additionner & H 2: RA RI Param Additionner & H 3: ACC ACC + RM Soustraire & H 2: RA RI Param Soustraire & H 3: ACC ACC - RM Multiplier & H 2: RA RI Param Multiplier & H 3: ACC ACC * RM Diviser & H 2: RA RI Param Diviser & H 3: ACC ACC /RM TestZro & not Z & H 2: TestZro & Z & H 2: PC RI Param
L'adresse de l'oprande est donne dans l'instruction. On crit le rsultat. l'accumulateur n'est pas zro, on ne change pas le compteur ordinal. l'accumulateur est zro, on change le compteur ordinal. on ne fait rien. L'ordinateur boucle sur l'instruction stop, indfiniment.
Comme on peut le constater, pratiquement tous les codes oprations ncessitent quatre cycles d'horloge pour s'excuter. Une exception cependant pour le code opration TestZro qui pourrait s'excuter en seulement trois cycles. Cependant, pour simplifier la conception de la machine, nous avons laiss un cycle qui ne fait rien (lors de la troisime phase de l'horloge), pour conserver les quatre cycles pour chaque code opration.
Machine
Page 21 sur 96
La table 1.1 montre un petit programme pouvant tre excut par cette machine. adresse 0 1 2 3 4 5 6 7 8 9 10 11 instruction LirePriph clavier TestZro 7 MmoriserAcc 10 LirePriph clavier Diviser 10 EcrirePriph cran Stop ChargerAcc 11 EcrirePriph cran Stop 0 "?"
Table 1.1 : Exemple de programme Pour pouvoir excuter un tel programme, il faut l'avoir pralablement charg dans la mmoire principale, aux adresses qui conviennent. Comment le charger ? C'est le rle d'un programme particulier appel le chargeur. Son travail est de lire le programme sur un support externe, puis de l'inscrire dans la mmoire. La question que l'on peut se poser est qui charge le chargeur?. En gnral, on dispose d'un trs petit programme le microchargeur capable d'effectuer ce chargement initial partir d'un ruban perfor, comme c'tait le cas dans les premires machines, ou partir d'une zone fixe sur un disque dur, comme c'est le cas dans la plupart des machines actuelles. Ce microchargeur n'a pas besoin d'tre charg puisqu'il est directement cod dans le matriel (soit de manire cable, soit rsidant dans une mmoire non volatile, par exemple de type Read Only Memory).
Page 22 sur 96
Avec un tel format, il est ncessaire de disposer d'un registre accumulateur servant alors de deuxime oprande lors des oprations arithmtiques et logiques qui correspondent trs souvent des oprateurs binaires. Il existe d'autres possibilits suivant que l'on utilise deux, trois ou encore quatre adresses. Dans le format deux adresses, la deuxime adresse pourra tre l'adresse d'un second oprande. Le premier oprande pourra galement recevoir le rsultat. Format 2 adresses:
Une opration possible peut ainsi tre : oprande 1 oprande 1 opration oprande 2 Avec un format trois adresses, on poura placer le rsultat d'un oprateur binaire dans une adresse destinataire diffrente des deux adresses d'oprandes : Format 3 adresses:
En poussant ce raisonnement, on peut imaginer un format 4 adresses, en autorisant l'utilisation d'une adresse de branchement, par exemple dans une opration arithmtique. Nous obtiendrions alors le format suivant : Format 4 adresses:
Cependant, l'intrt d'un tel format est trs limit, notamment si l'on regarde l'apport de complexit que cela entraine. Dans les quatre formats que nous venons de voir, l'instruction utilise soit des adresse explicites (fournies par l'instruction), soit des adresses implicites (par exemple l'accumulateur). Il est galement possible d'utiliser dans une machine, des instructions n'utilisant que des adresses implicites. C'est le format zro adresse : Format 0 adresse:
Page 23 sur 96
Les oprandes doivent alors tre mmorises dans une pile. L'instruction pourra ainsi prendre les deux oprandes dans le sommet de la pile et le sous-sommet, puis remettre le rsultat dans la pile. L'intrt de cette approche rside principalement dans la rduction de la taille du code machine gnr par le compilateur. Ce genre de machine eut, en son temps, un certain succs. Mais l'utilisation de mmoire de grande capacit, et surtout l'utilisation de registres gnraux ont rapidement limit l'intrt de ces machines.
Page 24 sur 96
Pentium 200Mhz et un processeur Pentium 266Mhz. Ce n'est plus vrai si les machines ont des architectures diffrentes. La deuxime ide consiste comparer le nombre d'intructions machines (MIPS : Million Instructions Per Second). La comparaison peut tre correcte condition que les instructions des deux machines possdent le mme niveau smantique. Ainsi, il est illusoire de comparer une machine de type RISC (Reduced Instructions Set Computer) une machine de type CISC (Complex Instructions Set Computer) par la simple comparaison du nombre d'instructions pouvant tre excutes par seconde; une instruction d'une machine CISC peut faire le mme travail que plusieurs instructions d'une machine RISC. La notion mme de MIPS peut galement tre toute relative lorsqu'on essaye de comparer deux machines ayant des jeux d'instructions diffrents. Ainsi, lorsque la machine VAX-11/780 a t annonce, elle a t compare une machine IBM 370/158 qui pouvait excuter un million d'instructions par seconde. Comme ces deux machines traitaient les mmes programmes dans le mme temps, les commerciaux de DEC ont prsents le VAX-11/780 comme tant une machine 1 MIPS. Par la suite, les performances de nouvelles machines ont t mesures par rapport au VAX-11/780 qui tait devenue une machine de rfrence. Ainsi, une machine traitant les programmes de test cinq fois plus vite que le VAX-11/780, tait considre comme tant une machine 5 MIPS. Ce n'est que quatre ans plus tard qu'on s'est aperu que le VAX-11/780 excutait, en environnement temps partag, en moyenne 0,5 millions d'instructions par seconde. Avec l'avnement des super-ordinateurs utiliss pour le calcul scientifique, le MIPS n'a plus t une mtrique adapte. La notion de mgaflops a alors t invente. L aussi, publicit oblige, les nouvelles machines taient prsentes sous leur meilleur profil, c'est dire la puissance dans les conditions idales; c'est le MFLOPS crte. Ainsi, une machine de 100 processeurs, chaque processeur pouvant thoriquement effectuer un million d'oprations flottantes par seconde, tait considre comme une machine 100 MFLOPS, mme s'il est trs difficile, voire impossible, de traiter en permanence dans un programme, 100 oprations flottantes en parallle. Le moyen le plus sr de comparer deux machines est encore de comparer les temps d'excution sur les mmes programmes. Plutt que d'excuter des programmes complets, il est plus simple de dfinir de petits programmes reprsentatifs du traitement ralis par la plupart des programmes utiliss sur les machines. Plusieurs programmes appels Benchmark ont t crits dans ce but (Whetstone, Dhrystone, boucle Livermore). Dans les annes 80, le groupe SPEC (System Performance and Evaluation Cooperative) a t cr pour tablir une base stable de benchmark : les programmes SPEC. Pour tre vraiment reprsentatifs, ces programmes doivent tre excuts sous certaines conditions, en particulier au niveau des options de compilation pouvant tre utilises.
Page 26 sur 96
Chapitre 2
Code et numration
2.1 Codage
2.1.1 Principe du codage
Soit I un ensemble d'lments d'informations (nombres, objets, ...). Soit B un ensemble fini de symboles b 1, b 2, ..., b n appel alphabet. Les symboles b i sont appels caractres de l'alphabet B. Coder I consiste faire correspondre chaque lment de I, un ensemble ordonn de symboles (appel mot) appartenant B. Le cardinal de l'ensemble B est appel la base du codage. Suivant le nombre de caractres utiliss pour constituer le mot, on parlera soit de codage longueur fixe, soit de codage longueur variable. Dans un codage longueur fixe, tous les mots ont le mme nombre de caractres. Comme exemples de codages longueur fixe, nous avons : le numro d'un individu pour la scurit sociale, le numro de tlphone d'un particulier (10 chiffres), le code postal d'une adresse en France. Si le nombre d'lments coder est infrieur b n (o b est le nombre de caractres constituant un mot du code), alors on dit que le codage est redondant. Il existe alors au moins un lment associ plusieurs codes. Si le nombre d'lments coder est gal b n, alors on dit que le codage est irredondant. Avec une base b , on peut reprsenter b n lments grce un codage longueur fixe n; il existe alors b n! codages possibles (cf. exercice). Dans un codage longueur variable, les mots ont des longueurs diffrentes. Comme exemples de codages longueur variable, nous avons: l'alphabet morse (les lettres les plus utilises correspondent aux codes les plus courts), les numros de tlphone dans le monde, le codage d'Huffman, l'ADN. Le codage d'Huffman est une codage optimal en place, bas sur les frquence des lments coder. L'lment le plus frquemment utilis sera associ au code le plus court, tandis que l'lment le moins frquemment utilis sera associ au code le plus long. Par exemple, si on veut coder 10 lments avec un alphabet de 3 caractres (a, b, c), suivant la frquence d'utilisation de ces lments, nous pourrions avoir : Page 27 sur 96
Elments coder lment 1 lment 2 lment 3 lment 4 lment 5 lment 6 lment 7 lment 8 lment 9 lment 10
La longueur moyenne de ce code est alors gale : 1 (40+20)/(100) +2 (12+8)/(100) +3 (5+5)/(100) +4 (5+2)/(100) +5 (2+1)/(100) = 1,73 caractre Il est galement possible d'utiliser plusieurs bases diffrentes pour dfinir un code. Le codage de l'immatriculation des automobiles en est un parfait exemple.
3 4 5 ...
Cependant, suivant l'utilisation que l'on veut en faire, le code binaire naturel peut prsenter des inconvnients, comme le montrent les exemples ci-dessous.
Disque codeur Les signaux reus sur les balais traduisent une des huit positions angulaires du disque. L'information donne par A 2 A 1 A 0 code directement la position angulaire. Le problme apparait lorsque le passage d'une position la suivante implique le changement de plus d'un chiffre dans la position angulaire. Par exemple, dans le passage de la valeur 1 (001) la valeur 2 (010). Ce changement de plus d'un chiffre la fois peut induire des valeurs transitoires indsirables, si les chiffres n'voluent pas exactement en mme temps :
Page 29 sur 96
Fig 2.2 : Changement d'tat La solution ce problme consiste utiliser un code binaire rflchi (appel aussi, code de gray ) qui a justement la proprit suivante : deux mots conscutifs de ce code on une distance de 1 (la distance entre deux mots tant dfinie comme tant le nombre de caractres diffrents entre ces deux mots). Dans l'exemple ci-dessus, le codage des huit positions angulaires serait donn par: Position 0 1 2 3 4 5 6 7 Code 000 001 011 010 110 111 101 100
On peut galement remarquer que le code est cyclique, c'est dire que le premier mot et le dernier sont adjacents. La formation du code est simple. Le code binaire rflchi n correspondant au nombre binaire naturel N est donn par la formule suivante : n = (N (2 N))/(2) o est le ou exclusif, et o la division est une division entire. Le dcodage ou opration inverse correspond N = n k-1(2 k-1) ... n 1(2 2-1)n 0(2 1-1) o on attribue alternativement + et - aux diffrents chiffres 1, en commenant par + pour le chiffre 1 de plus fort poids. Par exemple, le code de gray 110 correspond 2 3 - 2 2 , c'est dire quatre.
Page 30 sur 96
Fig 2.3 : Code 2 parmi 5 Le code Biquinaire. c'est un code 2 parmi 7, mais pondr. Les poids successifs des chiffres sont : 5 0 4 3 2 1 0 (Figure 2.4).
Page 31 sur 96
Bit de parit
Page 32 sur 96
bi t s 3 2 1 0
0000 000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
bi t s 6 5 4
NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS , $ ( ) + % & # ! sp * " ' ; : < 5 9 6 0 3 8 1 4 7 2 @ J C G A D E F H I K L B Q [ \ U S P R T V W X Y Z g a e c j b d f h k l i ` y p q | u s v w x z r { t
CR GS = M ] m }
SO RS . > N ^ n ~
SI US / ? O _ o DEL
2.1.3.5 Unicode
C'est le systme de codage le plus rcent et le plus complet. Il contient pratiquement tous les alphabets existants dans le monde. La version 5.2 comprend 107_361 caractres diffrents pris dans les alaphabets/signes/symboles utiliss dans le monde. A ces caractres s'ajoutent 860_000 codes non utiliss. Ces codes sont organiss en plan multilangages (BMP) (plan 0 [U+0000, U+FFFF], plan 1 15 [U+10000, U+FFFFF], plan 16 [U+100000, U+10FFFF]. Les diffrents plans comportent plusieurs familles parmi lesquelles nous trouvons le Tibtain, le Thai, l'Hebreu, le Grec, le Cyrillic, ... Vous pouvez voir les diffrents caractres sur le site http://www.unicode.org/charts/ C'est le codage de caractres retenu par le langage de programmation Java. Tous ces caractres peuvent tre cods suivant trois standards universels (Universal Transformation Format) : UTF-8, UTF-16, UTF-32.
5 6 7 8 9
Table 2.1 : Codage DCB Ainsi, le nombre dcimal 1997 se code en DCB par 0001 1001 1001 0111. L'avantage d'une telle reprsentation est qu'elle limine toute conversion dcimal --> binaire, ce qui pouvait tre trs intressant autrefois dans les programmes de gestion qui utilisaient beaucoup d'entres-sorties de valeurs numriques. L'inconvnient majeur est la ncessaire correction lorsque, suite une addition, on obtient un code non valide (1010, 1011, 1100, 1101, 1110, 1111), puisque dans ce cas, il faut ajouter 6 au nombre obtenu. Pour simplifier le test de la correction, un autre code a t jadis utilis : le code en excs de trois. C'est le principe du DCB mais en utilisant, pour le codage des chiffres, le code binaire naturel du chiffre augment de trois. Le code obtenu n'est pas un code pondr. N 0 1 2 3 4 5 6 7 8 9 Code 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100
Table 2.2 : Code excs de 3 De cette manire, il est ncessaire de toujours corriger le rsultat d'une addition, mais la rgle utiliser est plus symtrique que pour la notation DCB : Si il n'y a pas de retenue, alors soustraire 3, sinon ajouter 3 sur chaque chiffre. Exemples :
Page 34 sur 96
hexadcimale
de multiplier chaque chiffre par le poids correspondant, puis faire la somme de toutes les valeurs obtenues. Exemple : le nombre binaire (100110011) 2 donnera en dcimal : 1 2 8+1 2 5+1 2 4+1 2 1+1 2 0 = 256 +32+16+2+1 = 307 Page 35 sur 96
Factorisation
((...(a nb+a n-1)b+...)b+a 1)b+a 0 Exemple : le nombre binaire (100110011) 2 donnera en dcimal : (((((((1 2+0) 2+0) 2+1) 2+1) 2+0) 2+0) 2+1) 2+1 = ((((((2 2+0) 2+1) 2+1) 2+0) 2+0) 2+1) 2+1 = (((((4 2+1) 2+1) 2+0) 2+0) 2+1) 2+1 = ((((9 2+1) 2+0) 2+0) 2+1) 2+1 = (((19 2+0) 2+0) 2+1) 2+1 = ((38 2+0) 2+1) 2+1 = (76 2+1) 2+1 = 153 2+1 = 307
Partie fractionnaire Comme pour la partie entire, nous aurons deux mthodes suivant la manire de reprsenter la partie fractionnaire : Pondration a b -1+a b -2+...+ a b -n+1 + a b -n
-1 -2 -n+1 -n
Pour faire le changement de base, il suffit de multiplier chaque chiffre par le poids correspondant, puis faire la somme de toutes les valeurs obtenues. Exemple : le nombre binaire (0,111001) 2 donnera en dcimal : 1 2 -1+1 2 -2+1 2 -3+1 2 -6 = 0,5 + 0,25+0,125+0,015625 = 0,890625 Factorisation (a -1+(a -2+(...+ (a -n+1+ a -nb -1)b -1 ...)b -1)b -1) b -1 Exemple : le nombre binaire (0,111001) 2 donnera en dcimal : (1+ (1+ (1+(0+(0+1 0,5) 0,5) 0,5) 0,5) 0,5) 0,5 = (1+ (1+ (1+(0+0,5 0,5) 0,5) 0,5) 0,5) 0,5 = (1+ (1+ (1+0.25 0,5) 0,5) 0,5) 0,5 = (1+ (1+ 1.125 0,5) 0,5) 0,5 = (1+ 1,5625 0,5) 0,5 = 1,78125 0,5 = 0,890625 Remarque : le changement de base peut quelquefois se faire avec une perte de prcision. C'est le cas lorsque le nombre n'a pas une reprsentation exacte dans la base b choisie. Par exemple, 0,2 s'crit en base 2 : 0,0011001100110011...
Page 36 sur 96
pouvons obtenir le chiffre a n en faisant la division entire de A par b n . Le reste de cette division donnera alors a n-1b n-1+...+a 1b 1+a 0b 0 . Il suffit alors de rpter l'opration pour obtenir les autres chiffres. Exemple : Calculons la reprsentation binaire de 1997. 1997 973 461 205 77 13 13 13 5 1 1 = 1 2 10 + 973 = 1 2 9 + 461 = 1 2 8 + 205 = 1 2 7 + 77 = 1 2 6 + 13 = 0 2 5 + 13 = 0 2 4 + 13 = 1 23 + 5 = 1 22 + 1 = 0 21 + 1 = 1 20 + 0 --> a 10 = 1 --> a 9 = 1 --> a 8 = 1 --> a 7 = 1 --> a 6 = 1 --> a 5 = 0 --> a 4 = 0 --> a 3 = 1 --> a 2 = 1 --> a 1 = 0 --> a 0 = 1
Donc le nombre 1997 s'crit aussi (11111001101) 2 . Factorisation Nous pouvons aussi crire que A = ((...(a nb+a n-1)b+...)b+a 1)b+a 0 . Le chiffre a 0 est donc le reste de la division entire de A par b. Si nous considrons le rsultat de cette division entire, nous obtenons (...(a nb+a n-1)b+...)b+a 1 . Donc, pour obtenir les autres chiffres de la reprsentation, il suffit de recommencer ce calcul sur le rsultat de la division prcdente. Par exemple, pour 1997, nous aurons : 1997 998 499 = 998 2 + 1. = 499 2 + 0. = 249 2 + 1. --> a 0 = 1 --> a 1 = 0 --> a 2 = 1 Page 37 sur 96
249 124 62 31 15 7 3 1
= 124 2 + 1. = 62 2 + 0. = 31 2 + 0. = 15 2 + 1. = 7 2 + 1. = 3 2 + 1. = 1 2 + 1. = 0 2 + 1.
Remarque : Un nombre qui s'crit en dcimal avec une infinit de chiffres peut trs bien s'crire avec un nombre fini de chiffres, en utilisant une base approprie. Par exemple, (1)/(3) = 0,333... = (0,1) 3.
Page 38 sur 96
2.2.4.2 Complment 1
Pour reprsenter un nombre ngatif, on prend la reprsentation binaire de la valeur absolue, puis on inverse chaque bit sparment. Par exemple, -14 se reprsente sur 6 bits par 110001. Avec ce type de reprsentation sur n chiffres, la somme d'un nombre ngatif et de sa valeur absolue est gale 2 n-1, c'est dire avec les n bits 1. En complment 1, nous avons donc deux reprsentations de 0 : 00...000 et 11...111. L'intervalle de valeurs pouvant tre reprsentes sur n bits est [-2 n-1 + 1, 2 n-1 - 1 ]
2.2.4.3 Complment 2
Pour reprsenter un nombre ngatif en complment 2, il suffit de prendre la reprsentation du nombre en complment 1, puis de lui ajouter 1. Par exemple, -14 se reprsente sur 6 bits par 110010. Avec le complment 2, nous n'avons qu'une seule reprsentation de zro puisque la somme d'un nombre et de son oppos donnera 2 n , c'est dire 0 si on ne conserve que n bits. L'intervalle de valeurs pouvant tre reprsentes sur n bits est [-2 n-1 , 2 n-1 - 1 ]
L'intervalle des valeurs pouvant tre reprsentes sur n bits, avec excs de 2 n-1 est [-2 n-1, 2 n-1 - 1]
Page 40 sur 96
Bien sr, suivant le nombre de bits utiliss pour reprsenter la mantisse, et le nombre de bits utiliss pour reprsenter l'exposant, nous pourrons avoir une multitude de reprsentations possibles. En voici quelques exemples tirs de machines clbres :
Page 41 sur 96
Dans cette norme, un nombre de 32 bits (simple prcision) se reprsentera l'aide d'une mantisse de 23 bits (plus le bit implicite) et un exposant de 8 bits. Nous obtiendrons donc le dcoupage de la figure 2.6.
Fig 2.6 : Format IEEE754 sur 32 bits La partie exposant est souvent utilise pour des oprations de comparaison, notamment lorsqu'on veut aligner les virgules de deux nombres dont on veut, par exemple, calculer la somme. L'opration de comparaison tant plus simple si les nombres sont uniquement positifs o nuls, nous nous ramnerons ce cas particulier en utilisant une reprsentation des nombres avec excs. Dans le cas des exposant reprsents sur 8 bits, nous utiliserons un excs de 127. Ainsi, le nombre en reprsentation flottante sur 32 bits de la figure 2.6 reprsente la valeur : (-1) S 1,F 2 E-127 Exemple : retrouvons le nombre flottant IEEE754 dont la valeur binaire est (1100 0000 1010 0000 0000 0000 0000 0000) 2 Il faut tout d'abord extraire les champs S, E et F. S vaut 1 (bit de fort poids). Donc, nous avons affaire un nombre ngatif. E vaut (1000 0001) 2 , soit la valeur 129, c'est dire un exposant gal 129-127=2 F vaut (010 0000 0000 0000 0000 0000) 2 , ce qui donne une valeur de (0,010000...) 2 soit 0,25, c'est dire une mantisse gale 1,25 Ce nombre reprsente donc une valeur gale (-1) S 1,F 2 E-127 , c'est dire (-1) 1 1,25 2 129-127 soit -5.
Reprsentation IEEE754 La norme IEEE754 dfinit galement une reprsentation sur 64 bits (double prcision), utilisant 1 bits de signe, 11 bits d'exposant et 52 bits de mantisse, mais aussi des reprsentations sur plus de 79 bits (double prcision tendue). La reprsentation des nombres rels dans un ordinateur, n'est qu'une reprsentation approche, puisqu'elle offre un nombre fini de valeurs alors que dans R, entre deux valeurs, il existe une infinit de valeurs. Ceci nous amne dfinir la Prcision de la reprsentation comme tant la diffrence qu'il y a entre les mantisses de deux nombres rels conscutifs dans la reprsentation choisie. Cette prcision est indpendante de la valeur de l'exposant et ne dpend donc que de la mantisse M. Ainsi, la reprsentation IEEE754 sur 32 bits, la prcision de la reprsentation est de (0,0000 0000 0000 0000 0000 001) 2 soit encore 2 -23 .
Page 42 sur 96
Suivant la valeur des champs E et F, la norme IEEE754 permet de reprsenter un certain nombre de valeurs particulires rsumes par la table . E E max E max 0 0 F 0 0 0 0 valeur reprsente NaN 0 nombres dnormaliss
Table 2.3 : Valeurs particulires de la norme IEEE 754 Not a Number La valeur NaN (Not a Number), est intressante notamment par sa facult de propagation dans les calculs. Par exemple, racine-carre(-1) donnera la valeur NaN, de mme que le calcul de 4 racinecarre(-1) . Nombres dnormaliss Les nombres dnormaliss sont des reprsentations de nombres tels que le bit implicite est ici gal 0, et non 1 comme dans le cas des nombres normaliss. La valeur d'un nombre dnormalis en reprsentation flottante sur 32 bits ( figure 2.6) est de : (-1) S 0,F 2 -126 Si nous ne gardions que des valeurs normalises, les nombres plus petits que la plus petite valeur normalise seraient considrs comme gal 0, ce qui pourrait poser quelques problmes, par exemple dans le cas d'un test d'galit de deux de ces nombres. Regardons ce qui se passe, par exemple en base 10 avec une mantisse de 4 chiffres. Soit x=1,234 10 Emin et y=1,256 10 Emin o Emin est la valeur minimum de l'exposant (c'est dire telle que le champ E soit nul). Nous aurons y-x=0,022 10 Emin , c'est dire une valeur diffrente de zro (au lieu de la valeur zro si nous n'avions gard que des nombres normaliss). Arrondi Etant donn le nombre fixe de bits retenus pour la reprsentation, il est ncessaire, quelquefois, d'arrondir les rsultats obtenus. Comment faire cet arrondi? la norme IEEE754 propose 4 manires d'arrondir les nombres, la premire tant le mode d'arrondi par dfaut: si on se trouve au milieu, on arrondit vers le nombre pair. Par exemple, arrondi au plus proche avec une mantisse reprsente sur deux chiffres, 3.05 sera arrondi 3.0 et non 3.1 Le langage de programmation Java utilise cet arrondi lors d'oprations par les oprateurs +, -, .. arrondi vers zro arrondi vers +infini Page 43 sur 96 Le langage de programmation Java utilise cet arrondi lors d'oprations de conversion Flottant vers Entier
Page 44 sur 96
Chapitre 3
Circuits de calcul
3.1 Oprations arithmtiques
Les oprations arithmtiques constituent une partie trs importante dans une machine. Une arithmtique errone peut tre lourde de consquences, mme si l'erreur est minime. Il suffit de considrer les 300 millions de dollars dpenss par INTEL pour le remplacement des circuits PENTIUM bogus!
Fig 3.1 : Tables de vrit de l'addition et de la soustraction Chaque opration fournit un rsultat et une retenue. Rsultats et retenues sont dfinies par les quations logiques suivantes : Addition somme(a, b) = a b retenue(a, b) = a . b Soustraction diffrence(a, b) = a b retenue(a, b) = a . b Pour effectuer une addition ou une soustraction de deux nombres de plusieurs chiffres, il suffit d'oprer comme nous le faisons en base 10, en effectuant l'opration chiffre par chifre, des faibles poids aux forts poids, en propagant la retenue issue de l'opration effectue sur le chiffre prcdent. Exemples:
Page 45 sur 96
Problme du dbordement Le dbordement intervient lorque le rsultat de l'opration n'est pas reprsentable dans le systme utilis, c'est dire lorsque le nombre de chiffres significatifs du rsultat est suprieur au nombre de chiffres utilis pour reprsenter un nombre. Par exemple, en base 10 avec une reprsentation des nombres sur 3 chiffres, la somme 856+421 provoque un dbordement, puisque le rsultat 1277 n'est pas reprsentatble sur 3 chiffres. La dtection du dbordement lors de l'addition de deux nombres binaires s'ffectue en regardant la retenue sortante sur le chiffre de plus fort poids (une retenue 1 correspond un dbordement). Exemples (on utilise 5 chiffres pour la reprsentation des nombres) :
Nous venons de voir l'opration d'addition (et de soustraction) de deux nombres binaires considrs positifs (ou nuls). Que se passe-t-il si on opre de la mme manire avec des nombres ngatifs? En fait cela dpend de la reprsentation adopte pour les nombres ngatifs. Addition avec le complment deux Soit Z=X+Y sur n bits. La valeur absolue d'un nombre |x|, peut donc se reprsenter sur n-1 bits. Dans un premier temps, on suppose qu'il n'y a pas de dbordement. Examinons les diffrentes configurations possibles pour l'opration d'addition: X et Y sont positifs ou nuls. L'addition binaire de X et Y se faisant sans dbordement, nous obtiendrons un rsultat sur n-1 bits. De plus, le bit de signe tant l'addition de deux signes positifs (0+0) donnera bien un nombre positif, ce que l'on attendait. Donc l'addition binaire est correcte. X et Y sont ngatifs. Sachant que, pour tout nombre ngatif reprsent en binaire sur n chiffres en complment 2, nous avons -|X| = 2 n - |X|, nous pouvons crire : Z= X+Y = (2 n -|X|) + (2 n -|Y|) = 2 n+1 - (|X| + |Y|) = = 2 n+1 - |Z|, sur n bits, on obtient aussi 2 n - |Z|
Page 46 sur 96
Donc, nous obtenons bien, en rsultat, la somme correspondant un nombre ngatif en complment deux. X est ngatif et Y est positif ou nul. Nous devons alors considrer deux cas (le cas o Y=-X tant trivial): |X| < Y : dans ce cas, nous avons Z= X+Y = (2 n -|X|) + Y = 2 n + (Y -|X|) 2 n correspond ici la retenue sortante. Y-|X| est un nombre positif. |X| > Y : dans ce cas, nous avons Z= X+Y = (2 n -|X|) + Y = 2 n -(|X| - Y) |X| - Y tant positif, nous avons ici l'expression d'un nombre ngatif en complment deux, ce qui tait attendu. Supposons maintenant qu'il y a un dbordement, c'est dire que le rsultat ne soit pas reprsentable sur n bits, en complment deux. Ce dbordement ne peut arriver que si X et Y sont de mme signe et si |X|+|Y| est suprieur ou gal 2 n-1 (en fait, nous aurons |X|+|Y|=2 n-1+z, avec z tant un nombre reprsentable sur n bits). Si X et Y sont positif, nous obtiendrons, suivant la reprsentation en complment deux, un nombre ngatif : bit de signe = 2 n-1 Si X et Y sont ngatifs, nous obtiendrons un rsultat positif sur n bits : 2 n+1-(2 n-1+z) = 2 n+1-2 n-1z = 2 n+2 n-1 - z or z<2 n-1, donc le bit de signe sera 0. Le dbordement peut donc tre dtect en comparant le signe des oprandes au signe du rsultat il y a dbordement si les oprandes sont de mme signe, et si le rsultat est du signe oppos. On peut galement dtecter le dbordement en comparant la retenue qui entre dans le dernier tage (l'tage de fort poids) et la retenue qui sort de ce mme tage : il y a dbordement si la retenue entrante est de l'inverse de la retenue sortante. Exemples (on utilise 5 chiffres pour la reprsentation des nombres en complment 2) :
Page 47 sur 96
Il y a donc une grande simplicit dans le principe. De plus, cette mthode fonctionne galement avec la reprsentation des nombres ngatifs en complment 1 et en complment 2 ( condition toutefois d'tendre le bit de signe).
Demi-Additionneur A partir de ce circuit de base, on peut construire un additionneur complet, gnrant les deux sorties du demi-additionneur, mais partir de trois entres, les deux donnes plus une retenue entrante. Un additionneur complet ralise en fait l'opration (a + b + r in) (Fig. 3.2). La table 3.1 donne la table de vrit de l'additionneur complet. r in 0 0 0 0 1 1 1 Page 48 sur 96 a 0 0 1 1 0 0 1 b 0 1 0 1 0 1 0 somme r out 0 1 1 0 1 0 0 0 0 0 1 0 1 1
r _in
r _o u t
Additionneur complet Pour raliser un additionneur sur n bits, nous prendrons n additionneur complet, puis nous relierons la retenue de sortie du i e additionneur la retenue entrante du i+1 e additionneur, comme le montre la figure 3.3. La retenue entrante au premier tage (celui correspondant aux bits de plus faible poids) est positionne 0, tandis que la retenue sortante du dernier tage (celui correspondant aux bits de plus fort poids) fournira la retenu sortante de l'additionneur (et pourra donc servir d'indicateur de dbordement dans le cas d'addition de nombres binaires naturels). On obtient ainsi un Circuit Propagation Simple de Retenue.
a7 b7 a1 b1 a0 b0 0
a d d it io n n e u r c o m p le t
...
a d d it io n n e u r c o m p le t
a d d it io n n e u r c o m p le t
r _o u t q 7
q1
q0
Fig 3.3 : Additionneur complet sur 8 bits L'inconvnient majeur du circuit d'addition propagation simple de retenue est le temps ncessaire pour propager cette retenue, du premier tage au dernier, puisque ce temps est proportionnel au nombre d'tages (voir exercice). Il existe cependant plusieurs techniques pour acclrer l'addition.
3.2.2 La multiplication
Page 49 sur 96
1 b it
n b it s
n b it s
1 b it
n b it s
Multiplication squentielle
3.2.3 La division
Le diviseur le plus simple opre sur deux nombres non signs et produit un bit du quotient chaque tape (Figure 3.5). Au dbut de la division, le registre A contient le dividende, le registre B contient le diviseur, tandis que le registre P est initialis 0. On rpte n fois l'tape suivante : On dcale les registres (P,A) d'un bit gauche (le bit de fort poids de A est inject dans le bit de faible poids de P). On effectue P = P - B. Si la valeur contenue dans P est ngative, on met 0 dans le bit de faible poids de A sinon on met 1. Si la valeur contenue dans P est ngative, on restaure l'ancien contenu en effectuant P = P + B. Page 50 sur 96
De c a la g e
n + 1 b it s
n b it s
1 b it
n b it s
Fig 3.5 : Diviseur squentiel A la fin de cette rptition, le quotient se trouve dans le registre A, tandis que le reste de la division se trouve dans le registre P. Cet algorithme est appel division avec restauration, du fait de la dernire partie de l'itration.
Division Sequentielle avec Rest. On peut viter cette restauration, en changeant l'tape itrative par la suivante : Si le contenu de P est ngatif alors On dcale les registres (P,A) d'un bit gauche (le bit de fort poids de A est inject dans le bit de faible poids de P). On effectue P = P + B
sinon On dcale les registres (P,A) d'un bit gauche (le bit de fort poids de A est inject dans le bit de faible poids de P). - On effectue P = P - B Si P est ngatif, mettre 0 dans le bit de faible poids de A, si non mettre 1 dans le bit de faible poids de A. A la fin de cette rptition, si le registre P contient un nombre ngatif, nous devons effectuer une restauration en ajoutant P le contenu du registre B. Finalement, le registre P contient le reste de la division, tandis que le registre A contient le quotient. Page 51 sur 96
On obtient ainsi un algorithme de division sans restauration. En fait, par rapport l'algorithme avec restauration, le registre P contiendra la mme valeur puisque, le fait d'additionner B aprs un dcalage donne correspond bien la restauration avant le dcalage, plus une soustraction de B aprs le dcalage : si p-B est le contenu de P avant le dcalage, nous avons bien 2(p-B)+B=2p-B.
Division SRT Analyse: Tout d'abord, nous pouvons constater que cet algorithme permet l'utilisation d'un reste ngatif. Ceci n'est pas un problme dans la mesure o l'on s'autorise l'utilisation de chiffres ngatifs dans le quotient. Ainsi, dans le cas de la division en base 10, nous pourrions avoir la dmarche suivante :
Page 52 sur 96
Pour obtenir le quotient avec seulement des chiffres positifs, nous ferons : 126 = 120 - 006 = 114. Examinons maintenant les diffrentes instructions qui se trouvent dans la boucle de l'algorithme. Lorsque le registre P contient trois chiffres identiques en fort poids, cela signifie que le nombre contenu dans P est compris entre -1/4 et +1/4 en considrant que la virgule se trouve aprs le premier chiffre (0,00 si le nombre est positif, 1,11 si le nombre est ngatif). Donc, en valeur absolue, ce nombre est plus petit que le diviseur qui contient le nombre 0,1xxxxxx > 1/2. Ainsi, il ne pourra pas contenir, aprs dcalage, le diviseur. D'o le chiffre 0 du quotient. Lorsque le registre P ne contient pas trois chiffres identiques, alors nous pouvons dire que le nombre contenu dans P possde une valeur absolue suprieure 1/4. Si P est positif, on rajoute le chiffre 1 au quotient, si c'est un nombre ngatif, on rajoute le chiffre -1 (1). Exemple: Examinons la division de 8 (1000 2) par 3 (0011 2). Etape 1 : P=00000 A=1000 B=0011 il y a deux bits 0 dans les fort poids de B, on dcale donc (P,A) et B de 2 positions vers la gauche Etape 2.1 : P=00010 A=0000 B=1100 Les trois bits de fort poids de P sont gaux. On fait un simple dcalage, et q 0=0. Etape 2.2 : P=00100 A=0000 B=1100 Les trois bits de fort poids de P sont ingaux et P positif. On dcale, on soustrait B, q 1=1. Etape 2.3 : P=11100 A=0001 B=1100 Les trois bits de fort poids de P sont gaux. On dcale, q 2=0. Etape 2.4 : P=11000 A=0010 B=1100 Les trois bits de fort poids de P sont ingaux et P ngatif. On dcale, on ajoute B, q 3=1. Etape 3 : P=11100 A=0101 B=1100 P ngatif. On rajoute B, on fait -1 sur le quotient, on dcale le reste de 2 positions droite (pour annuler le dcalage de la premire tape). Enfin, nous avons : reste=10, quotient = 0101-1 = 0010. Remarque : Le Pentium utilise un algorithme de division SRT base 4 avec un additionneur conservation de retenue. Page 53 sur 96
3.3 Le processeur
Nous venons de voir les divers circuits permettant d'effectuer telle ou telle opration arithmtique. En gnral, ces circuits n'apparaissent pas seuls dans la machine, ils sont organiss dans une structure appele processeur. Le processeur est la partie de l'ordinateur qui va excuter les oprations indiques par les instructions. C'est l'unit de commande qui pilote le processeur, en lui envoyant, par exemple, un certain nombre de commandes excuter. Le processeur son tour peut envoyer l'unit de commande, des informations concernant l'tat du calcul, comme le signe d'un rsultat, la retenue sortante aprs une opration, etc. Le processeur peut contenir plusieurs lments dont le plus important, pour le calcul, est l'unit arithmtique et logique. A cette unit, se greffe divers dispositifs, comme le registre condition ou encore un dcaleur, ou, plus important, un ou plusieurs registres. Dans la machine tudie au chapitre 1, le processeur tait rduit la simple unit arithmtique, couple un registre appel accumulateur. Il ne faut pas confondre processeur et microprocesseur. Le microprocesseur reprsente une unit centrale complte (c'est dire processeur et unit de commande) intgre dans un seul circuit.
m od e
k
F o n c t io n Co u t
F
n
Cin
Fig 3.6 : Unit Arithmtique et Logique Une commande mode permet de spcifier le type de calcul (arithmtique ou logique). La commande fonction sur k bits, permet d'indiquer l'une parmi les 2 k fonctions possibles dans le mode considr. La fonction slectionne s'appliquera sur les donnes A et B pour fournir le rsultat F. L'entre Cin sera utilise dans le mode arithmtique comme retenue entrante, tandis que la sortie Cout sera la retenue sortante dans ce mme mode arithmtique. Dans le cas du mode logique, tant donn que la retenue Page 54 sur 96
entrante ne sert pas, nous pourrons utiliser cette entre comme un bit de commande supplmentaire, de manire obtenir 2 k+1 fonctions logiques diffrentes.
s1
s0
y
Grce ce dispositif plac sur l'entre B d'un additionneur n bits (Fig 3.6), nous pouvons forcer l'additionneur additionner au contenu de la premire entre A, soit la valeur 0, soit la valeur B, soit la valeur B, soit, enfin, la valeur 111... 1. Ainsi, associs la retenue entrante, les deux bits de commande s 1 et s 0 nous permettrons d'obtenir huit fonctions arithmtiques diffrentes sur les entres A et B.
B
s1
s0
Co u t
Cin
Examinons, maintenant, ce que devient la retenue sortante pour chaque opration ralise. F=A (avec s 0=s 1=0) Pour cette opration, nous obtenons, quelque soit la configuration des entres, une retenue sortante nulle. F=A+1 Une retenue sortante 1 correspond un rsultat nul (A=2 n-1). F=A+B ou F=A+B+1 La retenue sortante 1 correspond un dbordement, si l'addition se fait entre des nombres non signs. F=A-B-1 La retenue sortante est 1 si et seulement A est strictement suprieur B. F=A-B La retenue sortante est 1 si et seulement A est suprieur ou gal B. F=A-1 La retenue sortante est toujours gale 1, sauf lorsque A=0. F=A (avec s 0=s 1=1) La retenue sortante est toujours gale 1. Ceci est rsum par la table . s1 0 0 0 0 1 1 1 1 s0 0 0 1 1 0 0 1 1 c in 0 1 0 1 0 1 0 1 c out 0 1 --> A = 2 n -1 1 --> overflow 1 --> overflow 1 --> A > B 1 --> A B 1 --> A # 0 1
Page 56 sur 96
Ai B i
MUX
s1 s0
Fi
En rptant ce schma sur chaque bit des oprandes A et B, nous obtenons le circuit permettant de calculer nos 4 fonctions logiques.
A
n
B
n
s1 s0
c in
Lo g iq u e
n
Ar it h m t iq u e
n
MUX
n
s2
Page 57 sur 96
Cette unit arithmtique pourra excuter l'une parmi les 8 oprations de la table . s2 0 0 0 0 1 1 1 1 s1 0 0 1 1 0 0 1 1 s0 0 1 0 1 0 1 0 1 F A + c in A + B + c in A - B + c in A - 1 + c in AB AB AB A
Table 3.4 : Oprations de l'unit arithmtique et logique simple Ce type d'approche n'est toutefois pas intressante car on peut obtenir les mmes rsultats avec moins de circuits, en modifiant la partie interne de l'additionneur de la manire suivante. Si, chaque tage de l'additionneur, c'est dire sur chaque bit de l'additionneur, nous supprimons la retenue entrante (par exemple, en effectuant un OU logique avec la commande s 2 ), nous obtenons un circuit correspondant au OU exclusif ( Fig 3.7).
Ai
Bi
Co u t
s2
Cin
Fi
Table 3.5 : Contrle sur la retenue entrante En ajoutant la commande de la figure 3.6, nous obtenons le schma de la figure 3.7.
Page 58 sur 96
Bi
s1
s0
Co u t
s2
Cin
Fi
Table 3.6 : Contrle d'entre Ce dernier schma ne nous permet pas d'obtenir un circuit quivalent celui de la figure 3.7. Pour obtenir l'quivalence nous devons obtenir l'opration A B la place de l'opration A (s 2s 1s 0=100), et l'opration A B la place de l'opration A equiv B (s 2s 1s 0=110). Pour cela, il suffit de slectionner comme entre A, le rsultat de A B lorsque s 2s 1s 0=100, et de slectionner A B lorsque s 2s 1s 0=110. En effet, dans ce dernier cas, nous obtiendrons comme sortie : (A B) equiv B = ((A B) B) ((A B) B) = ((A B) (B B)) (A B) B) =AB La figure 3.8 reprsente un tage de l'additionneur fournissant les 8 fonctions arithmtiques et logiques souhaites.
Page 59 sur 96
s2
s1
s0
Ai
Bi
Co u t Cin
Fi
Fig 3.8 : Etage additionneur modifi Le circuit 74F382 est une unit arithmtique et logique permettant de raliser trois fonctions arithmtiques et trois fonctions logiques sur des donnes de 4 bits. La table donne le codage du mot de commande de trois bits s 2s 1s 0 utilis par cette ALU. s2 0 0 0 0 1 1 1 1 s1 0 0 1 1 0 0 1 1 s0 0 1 0 1 0 1 0 1 F Clear B-A A-B A+B AB AB AB Preset
Page 60 sur 96
Z S C
pour dtecter un rsultat nul (zro). pour connaitre le signe du rsultat, dans le cas de nombres signs. pour connaitre la retenue sortante (carry).
Le registre condition est charg la fin d'une opration arithmtique ou logique. La figure 3.9 montre comment nous pouvons initialiser ce registre partir des donnes issues de l'unit arithmtique et logique, pour une machine manipulant des donnes sur 8 bits. Nous avons dj vu que l'indicateur overflow pouvait s'obtenir par une simple comparaison entre la retenue entrante sur l'tage de fort poids de l'additionneur, et la retenue sortante de l'additionneur, videmment seulement dans le cas de nombres signs. Le bit de signe est le bit de fort poids du rsultat. Enfin, le signal zro s'obtient en faisant le OU logique de tous les bits du rsultat, puis en inversant la sortie du OU.
A
n -1 0 n -1
B
0
... V Z S C
C C
...
Cir c u it Ar it h m t iq u e
n n -1
n -1 0
Fig 3.9 : Chargement du registre condition Grce aux diffrentes informations qu'il mmorise, le registre condition nous permettra de dtecter la valeur d'un simple bit dans une oprande, aprs avoir isol le bit choisi, grce un simple ET logique entre le nombre et une valeur appele masque. Par exemple, la dtection de la valeur du bit A 3 se fera par l'opration A 0000008 16; la valeur du bit sera indique par l'indicateur Z du registre condition. Ce registre condition nous permettra, galement, d'effectuer des comparaison entre deux nombres. Les indicateurs examiner dpendront du type de la comparaison : entre nombres non signs ou entre nombres signs. Dans les deux cas, l'opration effectue pour le positionnement des indicateurs, est la soustraction. On ne s'intressera qu'au registre condition.
...
...
Page 61 sur 96
A > B, il suffira de regarder, en plus de la retenue sortante, si le rsultat est nul ou non. Les autres comparaisons peuvent ensuite se dduire de celles-ci. La table rsume les diffrents tests effectuer. Relation A>B AB A<B AB A=B A#B Opration sur registre condition CZ C C CZ Z Z
3.3.6 le dcaleur
Comme son nom l'indique, la fonction du dcaleur est d'effectuer un ou plusieurs dcalage. Le type de dcalage est donn par un mot de commande. La figure 3.10 montre un dcaleur travaillant sur des mots de n bits, et pouvant effectuer 2 k oprations, indiques par le mot de commande CMD.
Page 62 sur 96
Cir c u it D c a le u r
Cin
CM D
Co u t
n
Fig 3.10 : Dcaleur Les principaux types de dcalages sont les dcalages logique, arithmtique ou circulaire, vers la gauche ou la droite, avec ou sans le bit de retenue (bit C du registre condition).Le dcalage arithmtique est un dcalage avec conservation de la retenue. Le bit de signe ne change pas lors du dcalage. Le dcalage circulaire gauche (resp. droit) est un dcalage simple vers la gauche (resp. droite) avec injection du bit de fort poids (resp. faible poids) dans le bit de faible poids (resp. fort poids). Le dcalage avec le bit de retenue consiste faire un dcalage circulaire en considrant le bit C comme tant le bit de plus fort poids. La table montre le rsultat obtenu pour quelques dcalages diffrents pouvant tre effectus sur le couple (C, N) o C est l'indicateur retenue du registre condition (valeur c), et N le nombre l'entre du dcaleur 8 bits (N=n 7n 6n 5n 4n 3n 2n 1n 0). dcalage simple droit simple gauche arithmtique droit arithmtique gauche circulaire droit circulaire gauche circulaire droit avec C circulaire gauche avec C C c c c c c c n0 n7 sortie du dcaleur 0n 7n 6n 5n 4n 3n 2n 1 n 6n 5n 4n 3n 2n 1n 00 n 7n 7n 6n 5n 4n 3n 2n 1 n 7n 5n 4n 3n 2n 1n 00 n 0n 7n 6n 5n 4n 3n 2n 1 n 6n 5n 4n 3n 2n 1n 0n 7 cn 7n 6n 5n 4n 3n 2n 1 n 6n 5n 4n 3n 2n 1n 0c
Table 3.10 : Diffrents types de dcalage La figure 3.11 montre le i e tage d'un dcaleur trs simple. Il se rduit un simple multiplexeur 3 voies vers 1, permettant un dcalage droite, un dcalage gauche ou pas de dcalage du tout.
Page 63 sur 96
X i+ 1 X i
X i-1
cm d
2
Fig 3.11 : Dcaleur simple (tage i) La figure 3.12 montre comment combiner n exemplaires de ces dcaleurs pour construire un dcaleur n bits permettant le dcalage circulaire droite ou a gauche, avec bit de retenue.
c in cm d
2 2 1 0
... cou t
Fig 3.12 : Dcaleur simple complet
La figure 3.13 montre un dcaleur multiple (barrel shifter) sur 8 bits, permettant, en un seul cycle, d'effectuer de 0 7 dcalages circulaires sur des donnes de 8 bits. Ce type de circuit est particulirement intressant pour des processeurs destins effectuer beaucoup de manipulations binaires (extraction de champs de bits, insertion de champs de bits).
X7 X6 X5 X4 X3 X2 X1 X0
N2
N1
N0 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
Page 64 sur 96
Re g is t r e s R1 a R7
7n
S le c t io n Bu s A
n
S le c t io n Bu s B
n
A D
A
Re g is t r e Co n d it io n
B
3
U .A.L. V Z S C F
n
F Cin
Cir c u it D c a le u r
S o r t ie
Fig 3.14 : Le processeur complet Chaque entre de l'unit arithmtique et logique peut recevoir une donne partir de l'un des septs registres, ou encore partie d'une entre externe. Trois bits de commandes A=a 2a 1a 0 (resp. B=b 2b 1b 0) permettent d'indiquer le registre slectionn en lecture sur le port A (resp. B). La configuration A=000 2 (Resp. B=000 2) est utilise pour indiquer que l'entre externe est slectionne sur l'entre A (Resp. B) de l'unit arithmtique et logique. L'unit arithmtique et logique est commande par un mot de 3 bits F=f 2f 1f 0, permettant ainsi 4 oprations arithmtiques (A+C in, A+B+C in, A+B+C in, A-1+C in) et 4 oprations logiques (A B, A B, A B, A).
Page 65 sur 96
Le registre condition est globalement initialis uniquement lors des oprations arithmtiques. Le bit Z peut tre aussi initialis lors d'oprations logiques. Enfin le bit C peut aussi tre initialis lors d'oprations de dcalage (dcalage circulaire seulement). Il n'y a pas d'opration pour initialiser explicitement le bit de retenue. Ceci peut toutefois se faire soit par l'opration A+C in pour la remise zro du bit C ( condition que la retenue soit nulle), soit par l'opration A-1+C in ( condition que la retenue soit gale 1). La donne issue de la sortie de l'unit arithmtique et logique passe par un dcaleur. Les oprations permises par ce dcaleur sont au nombre de 6 : pas de dcalage, sortie mise zro, dcalage gauche avec insertion de 0 droite, dcalage droit avec insertion de 0 gauche, dcalage circulaire gauche avec C, dcalage circulaire droit avec C. Il reste donc deux codes non utiliss. On les notera par nop, pour Non OPration. Les cinq commandes A, B, D, F et H, sont rsumes dans la table 3.15. Le bit de retenue entrante peut tre considr comme un bit de commande supplmentaire.
Fig 3.15 : Commandes du processeur Voici quelques exemples de codage de mots de commande (une valeur quelconque est indique par x): R1 = R2 - R3 A=010 Comparaison R 2 et R 3 A=010 R 1 = Donn externe A=000 Sortie externe = R 7 B=xxx D=001 F=000 C in=0 H=000 B=011 D=000 F=010 C in=1 H=000 B=011 D=001 F=010 C in=1 H=000
Page 66 sur 96
B=xxx
D=000
F=000
C in=0
H=000
B=xxx
D=000
F=011
C in=1
H=000
Dcalage circulaire droit de R 2 avec C A=010 RAZ R 6 A=xxx B=xxx D=110 F=xxx C in=x H=011 B=010 D=010 F=100 C in=x H=101
Comme on peut le constater, certaines oprations peuvent se faire de plusieurs manire. Par exemple, la remise zro d'un registre peut se faire galement en utilisant le : R i=R i R i.
Page 67 sur 96
Page 68 sur 96
Chapitre 4
La Mmoire
4.1 Caractristiques fondamentales
Nous appellerons Mmoire, tout dispositif lectronique capable de conserver et restituer une information. D'une manire gnrale, l'information est mmorise dans un format binaire, c'est dire que l'information la plus lmentaire est le bit. On parle souvent d'octet (byte en anglais), qui correspond une information de 8 bits (ce qui correspond souvent au codage d'un caractre alphanumrique). Le mot sera l'ensemble de bits pouvant tre lus ou crits simultanment. Actuellement, une taille courante est 32 bits pour les calculateurs de petite et moyenne taille. Pour les grosses machines, la taille d'un mot pourra tre de 64 bits.
4.1.3 Capacit
La capacit d'une mmoire reprsente le nombre d'informations qu'elle peut contenir. On l'exprime le plus souvent par une puissance de 2 (1024, 2048, ...). Pour simplifier, on utilise les units suivantes : Kilo 1K = 2 10 = 1 024 Mga Giga Tra Peta 1M = 2 20 = 1 048 576 1G = 2 30 = 1 073 741 824 1T = 2 40 = 1 099 511 627 776 1P = 2 50 = 1 125 899 906 842 620
Les capacits les plus importantes actuellement sont de 256 Mgabits dans une seul circuit, ce qui permet, entre autre, la mmorisation du dictionnaire Petit Robert de 2600 pages (environ 180 Mgabits).
Page 70 sur 96
La table prsente les diffrents niveaux mmoire que l'on trouve dans les machines actuelles. Les temps d'accs correspondent aux temps d'accs typiques des machines en 1995. Registres Capacit typique Temps d'accs (ns) Dbit (Mo/s) < 1 Ko 2-5 4 000-32 000 Cache Mmoire < 4 Mo 3-10 800-5 000 Mmoire principale < 4 Go 80-400 400-2 000 Disques > 1 Go 5 000 000 4-32
Table 4.1 : Hirarchie mmoire On peut noter qu'un dbit de 4000 Mo/s correspond la transmission d'un mot de 32bits par nanoseconde! Remarque: La capacit des disques durs peut arriver actuellement 1 To, tandis que la prochaine gnration de DVD permettra d'atteindre une capacit de 1 Po (DVD multicouches couches, avec rayonnement fluorescent sur chaque couche, source StorexTechnology).
Exemple de fonctionnement: Voici une srie d'oprations effectues sur une mmoire RAM, avec l'indication, pour les oprations de lecture, de la donne lue: Page 71 sur 96
Opration Ecriture(0, abc) Ecriture(1, def) Ecriture(2, ghi) Lecture(1) Ecriture(1, jkl) Lecture(2) Lecture(1) Lecture(2)
Donne lue
S le c t io n Le c t u r e
S le c t io n Le c t u r e E c r it u r e
ROM 4 0 9 6 x8
Ad r e s s e
12
RAM 1 0 2 4 x8
D
8
Ad r e s s e
10
La figure 4.0 prsente l'interface de circuits typique de mmoire ROM et RAM. Nous supposerons que nous avons notre disposition des circuits de mmoire ROM de 4096 mots de 8 bits, et des circuits de mmoire RAM de 1024 mots de 8 bits. Chaque type de circuit possde en entre un signal de slection, un signal de lecture, une entre Adresse, et pour le circuit mmoire RAM, un signal d'criture. Les sorties D utilisent une technologie haute impdance; la sortie est active si le circuit est slectionn dans un mode lecture. On dsire construire une mmoire pour une machine disposant d'un espace adressable de 2 16 mots. La machine travaille sur des mots de 32 bits. Pour obtenir un mot, nous devrons utiliser, en parallle, 4 circuits de mots de 8 bits. Bien que disposant de 16 bits d'adresse, on ne veut construire qu'une mmoire comprenant 4096 mots en mmoire RAM, et autant en mmoire ROM. La premire tape consiste dfinir une carte d'adresses mmoires, c'est dire dfinir dans l'espace mmoire, la position de chaque zone mmoire. Nous choisissons d'avoir la mmoire RAM dans les adresses les plus basses de l'espace adressable, et la mmoire ROM dans les adresses les plus leves de l'espace adressable. Nous obtenons alors le tableau .
Page 72 sur 96
circuits RAM 0-i RAM 1-i RAM 2-i RAM 3-i libre ROM 4-i
sous-espace adressable 0000 16-03FF 16 0400 16-07FF 16 0800 16-0BFF 16 0C00 16-0FFF 16 1000 16-EFFF 16 F000 16-FFFF 16
bus adresse 0000 00xx xxxx xxxx 0000 01xx xxxx xxxx 0000 10xx xxxx xxxx 0000 11xx xxxx xxxx 1111 xxxx xxxx xxxx
Table 4.2 : Exemple de carte d'adresses Nous obtenons alors l'organisation de mmoire prsente dans la figure 4.1.
Le c t u r e E c r it u r e Bu s Ad r e s s e M e m o ir e
1 1 -1 0 2 15 14 13 12 9 -0 10 16
CS 0 1 2 3
S le c t io n Le c t u r e E c r it u r e
0 -3
S le c t io n Le c t u r e E c r it u r e
0 -2
S le c t io n Le c t u r e E c r it u r e
0 -1
S le c t io n Le c t u r e E c r it u r e
0 -0
RAM 1 0 2 4 x8
Ad r e s s e
10
RAM 1 0 2 4 x8
D
8
RAM 1 0 2 4 x8
D
8
RAM 1 0 2 4 x8
D
8
Ad r e s s e
10
Ad r e s s e
10
Ad r e s s e
10
S le c t io n Le c t u r e E c r it u r e
1 -3
S le c t io n Le c t u r e E c r it u r e
1 -2
S le c t io n Le c t u r e E c r it u r e
1 -1
S le c t io n Le c t u r e E c r it u r e
1 -0
RAM 1 0 2 4 x8
Ad r e s s e
10
RAM 1 0 2 4 x8
D
8
RAM 1 0 2 4 x8
D
8
RAM 1 0 2 4 x8
D
8
Ad r e s s e
10
Ad r e s s e
10
Ad r e s s e
10
S le c t io n Le c t u r e E c r it u r e
2 -3
S le c t io n Le c t u r e E c r it u r e
2 -2
S le c t io n Le c t u r e E c r it u r e
2 -1
S le c t io n Le c t u r e E c r it u r e
2 -0
RAM 1 0 2 4 x8
Ad r e s s e
10
RAM 1 0 2 4 x8
D
8
RAM 1 0 2 4 x8
D
8
RAM 1 0 2 4 x8
D
8
Ad r e s s e
10
Ad r e s s e
10
Ad r e s s e
10
S le c t io n Le c t u r e E c r it u r e
3 -3
S le c t io n Le c t u r e E c r it u r e
3 -2
S le c t io n Le c t u r e E c r it u r e
3 -1
S le c t io n Le c t u r e E c r it u r e
3 -0
RAM 1 0 2 4 x8
Ad r e s s e
10
RAM 1 0 2 4 x8
D
8
RAM 1 0 2 4 x8
D
8
RAM 1 0 2 4 x8
D
8
Ad r e s s e
10
Ad r e s s e
10
Ad r e s s e
10
S le c t io n Le c t u r e
4 -3
S le c t io n Le c t u r e
4 -2
S le c t io n Le c t u r e
4 -1
S le c t io n Le c t u r e
4 -0
ROM 4 0 9 6 x8
9 -0 9 -0
ROM 4 0 9 6 x8
9 -0
ROM 4 0 9 6 x8
9 -0
ROM 4 0 9 6 x8
D
8
Ad r e s s e
1 1 -1 0 1 2 2
Ad r e s s e
1 1 -1 0 1 2 2
Ad r e s s e
1 1 -1 0 1 2 2
Ad r e s s e
1 1 -1 0 1 2 2
8 3 1 -2 4 32
8 2 3 -1 6
8 1 5 -8
8 7 -0
Bu s Do n n e e
Page 73 sur 96
Fig 4.1 : Organisation d'une mmoire Dans la figure 4.1, nous avons une mmoire adressable au mot, c'est dire que deux valeurs conscutives d'adresse dsignent deux mots conscutifs. Il est possible, avec cette mme structure de mmoire d'avoir un adressage l'octet, c'est dire que deux valeurs conscutives d'adresse dsignent deux octets conscutifs et non pas deux mots. Ainsi, le premier mot aura l'adresse 0, le second aura l'adresse 4 (dans la figure, le mot une largeur de 32 bits), le troisime aura l'adresse 8, etc. Il se pose alors le problme de l'adresse de l'octet de faible poids dans le mot. On peut lui donner, par rapport au mot, l'adresse la plus faible, c'est la convention petit bout (Little Endian), ou bien l'adresse la plus leve, c'est la convention gros bout (Big Endian). Le tableau ci-dessous rsume ces deux conventions, pour une mmoire organise en mots de 32 bits, avec adressage l'octet. Petit Bout 03 02 01 00 07 06 05 04 11 10 09 08 15 14 13 12 ... Gros Bout 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 ...
La famille x86 utilise l'ordre petit Bout. La famille 68000 utilise l'ordre gros bout. En fait, cela n'a aucune importance tant que l'on ne mlange pas les diffrents type de donnes. Par contre, si l'on souhaite voir, par exemple, un mot comme un tableau d'octets, la convention utilise aura son importance. De mme lorsqu'on change des informations entre machines ayant des conventions d'adressage diffrentes. Un consquence de l'adresse l'octet est l'alignement des donnes de tailles suprieures l'octet. Une donne de taille n octets et d'adresse A sera aligne si on a A mod s = 0. Par exemple, dans le cas de mot, les mots d'adresses 0, 2, 4, 6, ... sont aligns tandis que les mots d'adresse 1, 3, 5, 7, ... ne le sont pas.
Page 74 sur 96
Si l'on souhaite raliser, par exemple une mmoire de 16 Mga mots, partir de circuits de 4 Mga bits, nous devrons assembler ensemble 4 circuits diffrencis uniquement par le signal CAS. Nous devrons donc tre capable de gnrer 4 signaux CAS diffrents, suivant l'addresse slectionne.
Ad r
11
4 M x1
Ra s Ca s We D
Fig 4.2 : Circuit mmoire dynamique (4M fois 1 bit) Un autre problme des mmoires dynamiques rside dans la ncessit d'effectuer priodiquement un cycle de rafraichissement. Il faut donc grer un compteur permettant de connatre, tout moment, le numro de ligne devant subir un cycle de rafraichissement. La ralisation d'une mmoire de 16 mga mots partir de circuits de 4 mga bits conduira au schma de la figure 4.3 (le schma reprsente en fait une mmoire de 16 mga mots de 1 bit. Pour obtenir une mmoire avec des mots de n bits, il suffit de remplacer chaque circuit de 4 Mga bits par n circuits de 4 Mga bits, assembls en parallle).
24
2 3 -2 2
2
2 1 -1 1
11
1 0 -0
11
D
1 11 2 11
D Ad r Ad r
D Ad r
Ad r
4 M x1
Ra s Ca s We
4 M x1
Ra s Ca s We
4 M x1
Ra s Ca s We
4 M x1
Ra s Ca s We
Ct r
Le c t u r e E c r it u r e
Co m m a n d e
Co n t r le u r
Fig 4.3 : Contrleur de mmoire dynamique (16M mots) Dans le schma de la figure 4.3, la partie compteur, la partie multiplexage de l'adresse ainsi que la partie gnration des signaux RAS et CAS forme le contrleur de la mmoire. Ce contrleur est en gnral disponible dans un seul circuit intgr, offrant en plus d'autres fonctionnalits (contrle d'accs au bus de donne, ...).
Page 75 sur 96
Page 76 sur 96
Chapitre 5
Les instructions
Nous examinons dans ce chapitre, l'architecture du jeu d'instructions qui est la partie de la machine visible par le programmeur. L'architecture est en quelque sorte l'interface entre le matriel et le logiciel.
COP
S CO
A B
Page 77 sur 96
15
12 11
COP
15 12 11
S CO
8 7
d pla ce me nt
0
COP
S CO
d pla ce me nt
Toutes les instructions possdent en commun le code opration (COP) qui permet de dterminer, entre autre, le format de ses paramtres. Dans notre exemple de machine, un premier paramtre donnant l'extension du code opration (SCO) se retrouve dans toutes les instructions, mais cela n'est pas une gnralit. Le premier format permet de faire rfrence deux oprandes A et B qui sont en fait des numros de registre de la machine. Nous avons donc un exemple de machine disposant d'instructions 2 adresses. Chaque adresse permet de rfrencer l'un parmi les 16 registres de la machine (les instructions utilisant l'unit arithmtique et logique de notre machine, comme l'instruction ADD, sont codes de cette manire). Le deuxime format utilise, la place de 2 adresses de registre, une adresse d'instructions sur 8 bits. Etant donn que l'adressage de la mmoire ncessite plus de 8 bits, cela ne peut tre qu'une adresse relative par rapport une autre (en gnral celle contenue dans le compteur de programme de la machine), on l'appelle alors une dplacement (les instructions de branchement de notre machine, comme l'instruction JNN, sont codes de cette manire). Quelques fois, nous avons besoin de manipuler dans l'instruction une valeur code sur un mot entier. Une solution souvnet utilise consiste prendre le mot suivant l'instruction. On obtient alors le troisime format qui necessite deux mots au lieu d'un seul (les instructions de notre machine utilisant une donne immdiate, comme l'instruction LDI, sont codes de cette manire). Nous pouvons organiser l'ensemble des instructions de cette machine dans 4 groupes : le groupe 0 contient les instructions qui utilisent l'unit arithmtique et logique de la machine :
Page 78 sur 96
le groupe 1 rassemble les instructions de transfert d'information (entre registres, mmoire et registre, registre et priphrique) :
Page 79 sur 96
Page 80 sur 96
le groupe 3 rassemble le reste des instructions. On y trouve des instructions de squencement (comme les appel et retour de sous-programme ou la gestion des interruptions), et des instructions mettant en oeuvre directement les indicateurs de l'unit arithmtique et logique (remise zro de la retenue) :
Page 81 sur 96
Page 82 sur 96
direct de registre) avec le contenu du mot de la mmoire dont l'adresse se trouve dans le registre R5 (adressage indirect de registre).
Page 83 sur 96
Page 84 sur 96
Chapitre 6
Unit de commande
Dans les chapitres prcdents, nous avons appris comment raliser les diffrents lments constituant l'ordinateur, et comment les relis entre eux pour former le chemin de donnes. La figure ci-dessous montre un exemple d'organisation
Cin S1 @2
0 1 2
S3
Din
1 4
S6 Dout Din
Out 2 ALU
Re gis tre s
@1
Wr W5
Out 1
4
S4
M moire
@
c z n v
W4
1
W1
S5 0 +1
0 1 2
S2
Wr
W2
PC
W3
S CO COP
Pour effectuer une opration particulire, il faut d'une part ouvrir certaines liaisons, et d'autre part, chantillonner les signaux dans l'un des dispositifs de mmorisation (registre ou mmoire).
+
Page 85 sur 96
Cin S1 @2
0 1 2
S3
Din
S6 Dout Din
Out 2
ALU
Re gis tre s
@1
Wr W5
Out 1
4
S4
M moire
@
c z n v
W4
1
W1
S5 0 +1
0 1 2
S2
Wr
W2
PC
W3
7-0
Par exemple, pour charger le registre instruction avec l'instruction adresse par le compteur de programme PC, il faut positionner S4 = 1 (on slectionne la sortie de l'additionneur comme entre adresse de la mmoire) S5 = 0 (on slectionne la valeur 0 comme premire entre de l'additionneur) Ensuite, il faut actionner W1 (la commande de chargement du registre instruction). Le signal de chargement devant intervenir lorsque les diffrentes entres sont stabilises:
H o r lo g e Do u t W1
Page 86 sur 96
S3 : Slection retenue entrante S4 : Slection adresse mmoire S5 : Slection additionneur compteur ordinal S6 : Opration unit arithmtique ou logique Cin : retenue entrante
N
0 1 2
W2
S CO
4 5 6 ... 15
S 51 S 50
0 1 2
4 5 ... 7
Cette manire de raliser un squenceur cabl tait l'approche suivie pour la fabrication des premiers ordinateurs. Cette mthode prsente quelques dsavantages. D'abord, la complexit est proportionnelle celle du jeu d'instructions. Ici, nous avons choisi des instructions trs simples. Si nous voulons rajouter des insrtructions plus complexes, calcul de la racine carre par exemple, la cration du squenceur deviendrait trs difficile. Ensuite, nous concevons aisment que la modification d'une seule instruction remet en cause TOUT le squenceur et conduit une nouvelle tude des quations logiques. Il devient donc trs difficile de mettre au point une machine, et quasiment IMPOSSIBLE modifier.
prochaine micro-instruction peut tre influenc par un signal, par exemple, ici l'indicateur N de l'unit arithmtique et logique :
0 1 COP
D code ur
2 3 4 5
S CO
Re gis tre
Le registre mmorise le numro de la ligne de la matrice qui sera slectionne. Le circuit dcodeur permet alors d'activer ( le fil horizontal correspondant ce numro. Si une liaison, par une diode, existe entre le fil horizontal slectionn et un fil vertical, ce dernier se trouvera actif, c'est dire fournira la valeur logique 1, sinon il restera la valeur logique 0. Chaque micro-instruction donne une partie du numro de la microinstruction suivante, le reste du numro pouvant provenir du registre instruction, par exemple ici le code opration (COP) et le paramtre SCO. L'intrt de cette approche vient du fait qu'il est trs facile de modifier le fonctionnement de la machine, car il suffit de changer simplement la mmoire de contrle, sans toucher au reste de la machine. La technique de microprogrammation introduite par M. Wilkes a ensuite suivie l'volution de la technologie. Elle a conduit au concept d'mulation qui consiste excuter sur une machine, un programme crit dans un autre langage machine (VAX 11-80, B1700, QM-1).
Page 90 sur 96
{
Comma nde s
M moire de contrle
Fonctionne lle
Un registre de microinstruction mmorise chaque cycle d'horloge la microinstruction excuter. La microinstruction comprend deux parties, l'une correspondant aux commandes envoyes sur le chemin de donnes ou unit fonctionnelle (les signaux Si, Wi, Cin, ..), l'autre permettant de calculer l'adresse de la microinstruction suivante.
possibilits pour le contrle de la machine. De plus, le dcodage de chaque champ entraine un dlai supplmentaire, et donc temps de cycle de microinstruction plus long que dans le cas de la microprogrammation horizontale. Regardons plus attentivement comment calculer l'adresse de la microinstruction suivante. Ce calcul dpend de l'tat du contrleur, c'est dire en fait de la microinstruction courante, mais aussi de certaines informations founies par le chemin de donne. L'une de ces informations est videmment le code opration de l'instruction en cours d'excution (ainsi que, dans notre machine, de l'extension du code opration : SCO). En effet, dcoder l'instruction reviendra ici excuter une squence de microinstructions associes au code opration. Une solution possible consiste calculer une adresse de micro-instruction partir du code opration, et ici de l'extension du code opration. Ce calcul peut se faire simplement par concatnation de champs, par exemple '10'+COP+SCO (o + signifie concatener : si COP='01' et SCO='0110' on obtiendra l'adresse '10010110'). Quelquefois, l'adresse de la microinstruction suivante pourra dpendra d'un indicateur de l'unit arithmtique et logique. C'est le cas lorsqu'on veut excuter une instruction conditionnelle, par exemple JNN adr qui signifie branchement une adresse si l'indicateur Ngatif n'est pas positionn. Suivant la valeur de l'indicateur N, il faudra effectuer certaines oprations ou d'autres, ce qui peut se traduire par excuter une squence de microinstructions ou une autre. Dans ce cas, une solution consiste calculer une adresse de microinstruction partir de la valeur de l'indicateur N, par exemple, en utilisant une adresse de microinstruction fournie par la microinstruction elle-mme, mais en utilisant, comme bit de faible poids, l'indicateur lui-mme. Enfin, l'adresse de la microinstruction suivante pourra tre fournie directement et compltement par la microinstruction courante elle-mme. La figure ci-dessous donne un exemple de calcul d'adresse de microinstruction. Trois champs de la microinstruction commandent ce calcul : SelSeq : 0 permet de calculer l'adresse partir d'une adresse fournie par le champ Adr et ventuellement des indicateurs de l'unit arithmtique et logique, 1 permet de calculer l'adresse partir du code opration et de son extension, prsents dans le registre instruction Adr : les forts poids d'une adresse de microinstruction SelTest : la slection du bit de faible poids de l'adresse fournie par la microinstruction 0 : la valeur 0 1 : la valeur 1 2 : l'indicateur C ...
Par exemple la microinstruction ayant SelSeq='0' Adr='0010110' SelTest='000', permettra de slectionner comme adresse suivante '00101100' la microinstruction ayant SelSeq='0' Adr='0010110' SelTest='001', permettra de slectionner comme adresse suivante '00101101' la microinstruction ayant SelSeq='0' Adr='0010110' SelTest='010', permettra de slectionner comme adresse suivante '00101100' si l'indicateur C n'est pas positionn, '00101101' sinon la microinstruction ayant SelSeq='1' (les champs Adr et SetTest ne sont pas utiliss), permettra de slectionner comme adresse suivante '10101101' si le code oprations est '101' et l'extension SCO est '101' Page 92 sur 96
Page 93 sur 96
Cin S1 @2
0 1 2
S3
Din
S6 Dout Din
Out 2
ALU
Re gis tre s
@1
Wr W5
Out 1
4
S4
M moire
@
c z n v
W4
1
W1
S5 0 +1
0 1 2
S2
Wr
W2
PC
W3
7-0
Regardons le squencement de ces oprations. La premire microinstruction se chargera d'tablir ce chemin pour charger l'instruction dans le registre instruction. La deuxime permettra d'augmenter le compteur de programme d'une unit, mais aussi de calculer l'adresse de la troisime microinstruction excuter, partir du code opration et de l'extension du code opration. Nous aurons donc les microinstructions :
adresse :SelSeq adr SelTest W1 W2 W3 W4 W5 cIn S1 S2 S3 S4 S5 S6 00000000: 0 0000000 001 1 0 0 0 0 0 00 00 0 1 00 0000 00000001: 1 0000000 000 0 1 0 0 0 0 00 10 0 1 01 0000
Page 94 sur 96
Cin S1 @2
0 1 2
S3
Din
S6 Dout Din
Out 2
ALU
Re gis tre s
@1
Wr W5
Out 1
4
S4
M moire
@
c z n v
W4
1
W1
S5 0 +1
0 1 2
S2
Wr
W2
PC
W3
7-0
La premire microinstruction correspondant ce code opration se situera l'adresse "84 16=10000100 2 puisque le code opration est 0 et l'extension est 4. En fait, une seule microinstruction sera ncessaire pour cette opration. Donc la microinstruction qui sera ensuite excute sera la premire microinstruction de la phase de fetch (adresse 0) :
adresse :SelSeq adr SelTest W1 W2 W3 W4 W5 cIn S1 S2 S3 S4 S5 S6 10000100: 0 0000000 000 0 0 0 1 1 0 01 00 0 0 00 0001
Page 95 sur 96
Cin S1 @2
0 1 2
S3
Din
S6 Dout Din
Out 2
ALU
Re gis tre s
@1
Wr W5
Out 1
4
S4
M moire
@
c z n v
W4
1
W1
S5 0 +1
0 1 2
S2
Wr
W2
PC
W3
7-0
La premire microinstruction correspondant ce code opration se situera l'adresse A6 16=10100110 2 puisque le code opration est 2 et l'extension est 6. Pour cette instruction, nous aurons besoin de plusieurs cycles de microinstruction. Or, nous ne pouvons pas mettre la deuxime microinstruction l'adresse suivante A7 16 puisque cette adresse est rserve pour un autre couple (COP, SCO). Donc on va utiliser une adresse libre dans la mmoire de contrle, par exemple l'adresse 4. Comment pouvons nous procder? Simplement en calculant l'adresse de la deuxime microinstruction excuter, partir de l'indicateur N. Si N vaut 0, nous obtiendrons l'adresse 4, et si N vaut 1, nous obtiendrons l'adresse 5. La microinstruction d'adresse 4 permettra de modifier le compteur de programme, tandis que la microinstruction d'adresse 5 le laissera inchang, de manire excuter l'instruction squentiellement suivante. Nous aurons donc :
adresse :SelSeq adr SelTest W1 W2 W3 W4 W5 cIn S1 S2 S3 S4 S5 S6 10100110 : 0 0000010 100 0 0 0 0 0 0 00 00 0 0 00 0000 00000100 : 0 00000101 : 0 0000000 000 0000000 000 0 0 1 0 0 0 0 0 0 0 0 0 00 10 0 00 00 0 0 0 10 0000 00 0000
Cette instruction ncessitera donc, en plus de la phase de fetch, 2 cyles : @A6 puis @4 si N est gal 0, @A6 puis @5 si N est gal 1.
Page 96 sur 96