You are on page 1of 146

IFT-17583 Structure interne des ordinateurs

Supplment

Pierre Marchand Automne 2000

ii

iii

Table des matires


1. Supplment au volume ................................................................................1
Chapitre 3.......................................................................................................................3 Chapitre 5.....................................................................................................................21 Chapitre 7.....................................................................................................................47 Chapitre 8.....................................................................................................................75 Chapitre 9.....................................................................................................................79 Chapitre 10...................................................................................................................83 Chapitre 11...................................................................................................................89 Chapitre 12...................................................................................................................95

2. Appendices .......................................................................................................111 3. Solution des exercices ..............................................................................121 4. Initiation l'assembleur ..........................................................................141


1. Introduction ........................................................................................................143 2.. Architecture du Pentium ................................................................................145
2.1 Historique.......................................................................................................145 2.2 Registres d'entiers ..........................................................................................147 2.3 Registres de virgule flottante .........................................................................150 2.4 Registres MMX..............................................................................................151 2.5 Registre SIMD ...............................................................................................151 2.6 Le registre EFLAGS ......................................................................................152 2.7 Autres registres ..............................................................................................153

3. Outils de programmation ................................................................................154


3.1 Masm32..........................................................................................................154 3.2 Dboguage .....................................................................................................156

iv

4. Types de donnes .............................................................................................162


4.1 Entiers ............................................................................................................162 4.2 Virgule flottante .............................................................................................163 4.3 MMX..............................................................................................................163 4.4 SIMD..............................................................................................................164 4.5 Rangement des donnes en mmoire.............................................................164 4.6 Temps d'excution des instructions ...............................................................165

5. Structures de contrle ......................................................................................167


5.1 Principales structures de contrle ..................................................................167 5.2 Branchements.................................................................................................169

6. Modes d'adressage ............................................................................................174 7. Instructions de base du Pentium ...................................................................178


7.1 Directives de base ..........................................................................................179 7.2 Un premier exemple.......................................................................................182 7.3 Un deuxime exemple....................................................................................183 7.4 Un autre exemple ...........................................................................................184 7.5 Entres/sorties en mode console ....................................................................185 7.6 Chanes de caractres.....................................................................................187 7.7 Comparaison de chanes ................................................................................192 7.8 Recherche d'une chane dans une autre..........................................................193 7.9 Transpose d'une matrice...............................................................................195

8. Instructions arithmtiques ..............................................................................197


8.1 Addition .........................................................................................................197 8.2 Soustraction....................................................................................................198 8.3 Multiplication.................................................................................................199 8.4 Division..........................................................................................................202 8.5 Dcalages et rotations ....................................................................................203 8.6 Exemple : racine carre par la mthode de Newton ......................................208

9. Conversions........................................................................................................210
9.1 Conversion dcimal binaire.........................................................................210 9.2 Conversion binaire dcimal.........................................................................211 9.3 Conversion binaire chane hexadcimale....................................................213

10. La Pile ...............................................................................................................217

10.1 Empilement et dpilement ...........................................................................217 10.2 Sous-programmes ........................................................................................218 10.3 Blocs de pile.................................................................................................222 10.4 Rcursivit ...................................................................................................225 10.5 Tables de sauts .............................................................................................226

11. Interruptions ....................................................................................................228


11.1 Interruptions logicielles ...............................................................................228 11.2 Interruptions matrielles ..............................................................................231

12. Directives d'assemblage et macros ............................................................239


12.1 Directives d'assemblage...............................................................................239 12.2 Directives d'assemblage conditionnel..........................................................242 12.3 Macros..........................................................................................................244 12.4 Directives pour structures de contrle et programmation structure ...........246

5. Instructions de base du Pentium .......................................................251 6. Mots rservs ..................................................................................................310

1. Supplment au volume

Chapitre 3

Chapitre 3 Reprsentation interne des informations


3.2 Donnes non numriques
Pour reprsenter les caractres des principales langues de notre plante ainsi que les chiffres, les signes de ponctuation et certains caractres de contrle, la communaut informatique est en train dadopter un code de 16 bits appel Unicode, qui contient 65 536 caractres diffrents. Les 256 premiers caractres dUnicode sont le jeu de caractres appel Latin-1, et les premiers 128 caractres de ce dernier ensemble sont quivalents au code ASCII encore utilis dans la plupart des micro-ordinateurs. Unicode est en train de se rpandre de plus en plus. Il est la base du systme d'exploitation Windows NT (donc Windows 2000) de Microsoft et est pleinement support par le langage Java. Pour reprsenter tous les caractres non accentus de l'alphabet latin, majuscules et minuscules, plus les chiffres 0 9, les signes de ponctuation et divers caractres de contrle (Retour, Tab, etc.), un code de 128 caractres, donc 7 bits, s'avre suffisant. On utilise cependant un octet pour stocker ces caractres en mmoire, car l'accs un octet est une opration naturelle pour la plupart des micro-ordinateurs. Il est important ici de bien faire la distinction entre les caractres numriques, cods 0 9, et les nombres 0 9, qui ont une reprsentation diffrente comme nous verrons plus loin. Le tableau suivant prsente ce code ASCII. Sur 8 bits, il reste encore 128 possibilits quon peut utiliser pour les caractres accentus (, , , etc), et les symboles spciaux (, , , etc.). Ils sont standardiss dans le code ISO Latin-1 (ISO-8859-1). Les 32 premiers caractres du code ASCII sont non-imprimables, ce sont des caractres de contrle. Remarquez les plus courants : le retour de chariot (carriage return) CR, le dplacement arrire ou effacement (backspace) BS, la tabulation (horizontal tab) HT, le changement de ligne (linefeed) LF. On trouvera en appendice comment gnrer ces codes de contrle et les autres partir du clavier dun micro-ordinateur. On trouvera galement en appendice le code EBCDIC mentionn dans le livre et encore utilis dans les grands ordinateurs.

Chapitre 3

Pour plus de dtails sur Unicode, visitez les sites http://www.unicode.org/ et en particulier : http://www.unicode.org/unicode/standard/standard.html Pour des dtails sur IEC, visitez le site : http://www.acl.lanl.gov/HTML_WG/html-wg-95q2.messages/0728.html
DEC 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 HEX 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F DEC 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 HEX 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F DEC 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 HEX 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F DEC 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 HEX ` 60 a 61 b 62 c 63 d 64 e 65 f 66 g 67 h 68 i 69 j 6A k 6B l 6C m 6D n 6E o 6F p 70 q 71 r 72 s 73 t 74 u 75 v 76 w 77 x 78 y 79 z 7A { 7B | 7C } 7D ~ 7E DEL 7F

NULL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US

SP ! # $ % & ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?

@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _

Code ASCII

Chapitre 3

3.3 Donnes numriques


Pour vous aider dans ce chapitre, vous pouvez utiliser une calculatrice possdant des capacits binaires et hexadcimales. La Facult des sciences et de gnie de lUniversit Laval approuve et recommande la calculatrice scientifique HP-20 S de Hewlett-Packard (environ 32 $). Cette dernire peut effectuer les calculs sur des entiers binaires et hexadcimaux positifs et ngatifs, et effectuer la conversion de ces quantits entre elles ainsi quavec le dcimal. D'autres calculatrices sont galement autorises. Veuillez consulter la page FAQ de notre site Web pour la liste des modles autoriss.

3.3.1 Entiers positifs ou nuls Reprsentation hexadcimale


Comme on a pu voir, le code binaire n'est pas trs compact et il nous est difficile de retenir une longue squence de uns et de zros. On utilise donc souvent les notations octale (B = 8) ou hexadcimale (B = 16) pour reprsenter des nombres binaires. Ceci est possible parce que 8 et 16 sont des puissances de 2. En octal, on regroupe les digits binaires trois par trois partir de la droite et on exprime la valeur de chaque groupe de trois en chiffres ordinaires de 0 7. Comme en micro-informatique le nombre de bits est un multiple de 4 (1 octet = 8 bits), on utilise couramment la notation hexadcimale, qu'on obtient en regroupant les bits en groupes de quatre partir de la droite et quon exprime en digits hexadcimaux (0 F, voir livre de Zanella et Ligier p. 34) : 10111110 19010 = 1011 1110 B E16

La notation est ainsi beaucoup plus compacte et on a tout de suite une bonne ide de l'ordre de grandeur du nombre. On utilise frquemment le prfixe $ ou le postfixe H ou h au lieu de lindice 16 pour reprsenter une quantit hexadcimale. Par exemple, $A = AH = Ah = 1010. Dans ce supplment, nous utilisons la notation C, dans laquelle 0x prcde les chiffres, par exemple, 0x0A.

Chapitre 3

Arithmtique binaire
Addition et soustraction la page 36 du livre, on trouve un exemple d'addition binaire. Voici deux autres exemples daddition sur des nombres de 8 bits :
1 111 1 1 1 1

190 +141
______

1011 1110 +1000 1101


_____________

173 +44
______

1010 1101 +0010 1100


_____________

331

1 0100 1011

217

1101 1001

Remarquez dans lexemple de gauche, quon a une retenue aprs laddition du dernier bit de gauche, ce qui fait que le rsultat doit tre reprsent sur 9 bits. On crit 0x14B* en notation hexadcimale La multiplication et la division binaires seffectuent comme en dcimal, sauf quil ny a que des zros et des uns. On trouve la p. 37 du livre la reprsentation des nombres ngatifs en complment 2. Le livre mentionne d'autres reprsentations des nombres ngatifs, mais les micro-ordinateurs courants utilisent tous le complment 2. Notez que le complment 2 doit s'effectuer sur un nombre de bits dtermin, par exemple, 8, 16 ou 32. Le complment 2 de 4 sera 11111100 sur 8 bits et 1111111111111100 sur 16 bits. Pour obtenir rapidement le complment 2 d'un nombre binaire, on inverse tous les bits et on ajoute 1 au rsultat. Pour obtenir le complment 2 du mme nombre exprim en hexadcimal, on soustrait ce nombre de 0xFFFF et on ajoute 1 au rsultat. Par exemple, le complment 2 de 0x0004 sera 0xFFFF 0x0004 +1 = 0xFFFB+1 = 0xFFFC. La soustraction binaire s'effectue par la plupart des processeurs en additionnant le complment 2 du nombre soustraire.

Notez que dans ce supplment, on utilise la notation C pour reprsenter un nombre hexadcimal, i.e. les chiffres sont prcds de 0x.

Chapitre 3

Multiplication Voici un exemple de multiplication binaire : 1011 1001


_________

multiplicande multiplicateur 1e produit partiel 2e " " e " 3 " 4e " "

11 9
___

1011 0000 0000 1011


__________

99

1100011

Produit = somme des produits partiels

Un algorithme pour la multiplication binaire par ordinateur de deux mots de n bits pourrait donc tre le suivant (on suppose que les bits dun registre sont numrots de 0 n-1 partir de la droite) : Placer le multiplicande dans un registre de 2n bits Mettre 0 dans le registre de 2n bits rserv au produit Pour i = 0 n-1 Si le bit i du multiplicateur est 1 alors additionner le multiplicande au produit Fin Si Dcaler le multiplicande de 1 bit vers la gauche (en ajoutant un 0 droite) Fin Pour

Chapitre 3

Division binaire On procde exactement comme pour la division en dcimal, sauf que les seules valeurs possibles pour chaque digit du quotient sont 0 ou 1. Voici un exemple : 111101010111000 11001 Diviseur 11001 Dividende 111101010111000 -11001 101 1011 10110 101101 -11001 10100 101000 -11001 1111 11111 -11001 110 1101 11011 -11001 10 100 1000 reste 10000 Quotient 1 0 0 1 1 1 0 1 0 0 0 Rsultat 10011101000

Pour effectuer cet algorithme par ordinateur, on procde comme suit : Mettre 0 dans le registre Reste Pour i = 1 n Dcaler registre Dividende gauche de 1 bit. Placer le bit sortant dans C. Dcaler le registre Reste vers la gauche en remplaant le bit de droite par C. Si Reste Diviseur, alors Reste = Reste - Diviseur C=1 Sinon C = 0 Fin Si Dcaler Quotient gauche de 1 bit en remplaant le bit de droite par C. Fin Pour

Chapitre 3

Pour conomiser un registre, on place parfois le quotient dans le mme registre que le dividende. Exemple : 111101010111000 / 11001. On place initialement le dividende dans le registre Q et le diviseur dans le registre D. Aprs 16 dcalages, le reste se trouve dans le registre R, et le quotient dans le registre Q. R R 0000000000000000 0000000000000000 0000000000000001 0000000000000011 0000000000000111 0000000000001111 0000000000011110 -11001 0000000000000101 0000000000001011 0000000000010110 0000000000101101 -11001 0000000000010100 0000000000101000 -11001 0000000000001111 0000000000011111 -11001 0000000000000110 0000000000001101 0000000000011011 -11001 0000000000000010 0000000000000100 0000000000001000 0000000000010000 reste C Q 0111101010111000 1111010101110000 1110101011100000 1101010110000000 1010101110000000 0101011100000000 1010111000000000 Q
1 si R diviseur sinon 0

dcalage no. 0 1 2 3 4 5 6

RD

0101110000000001 1 1011100000000010 0111000000000100

7 8 9

RD RD RD

1110000000001001 1 1100000000010011 1 1000000000100111 1 0000000001001110

10

11

12 13

RD

0000000010011101 1 0000000100111010 0000001001110100 0000010011101000 quotient

14 15 16 17

Chapitre 3

10

Changements de base
On suppose que les nombres sont reprsents par lexpression de la page 34 du livre : N = . . . n3B3 + n2B2 + n1B1 + n0B0, [1]

o B, appel la base, est un entier >1, et o chaque ni peut prendre les valeurs 0, 1, . . . , B-1 Remarquer que la reprsentation d'un nombre dans sa propre base est toujours 10. Observer aussi que le dcalage d'un nombre vers la gauche (en ajoutant un 0 droite) quivaut toujours la multiplication du nombre par sa base. Ainsi, 110 = 11 10, quelle que soit la base. De la mme faon, un dcalage vers la droite (enlever le dernier chiffre de droite) quivaut une division du nombre par sa base. Ainsi, 100 10 = 10, quelle que soit la base. Passage dune base a une base b en arithmtique de base a Pour convertir un nombre N dune base a une base b en utilisant larithmtique de base a, on divise N par b de faon rptitive en arithmtique de base a, jusqu' ce que le quotient soit nul. La reprsentation de N dans la base b est donne par la squence renverse des restes. Par exemple, la p. 35 du livre de Zanella et Ligier, on convertit le nombre 25 du dcimal au binaire en le divisant de faon rpte par 2 en arithmtique de base 10. Comme autre exemple, pour passer de la base 10 la base 4 (a = 10, b = 4) : (27)
10

27 / 4 = 6, reste 3 6 / 4 = 1, reste 2 1 / 4 = 0, reste 1 (27) = (123)

10

Passage de la base 10 la base 4 Passage dune base a une base b en arithmtique de base b Pour passer dune base a une base b en arithmtique de base b, on value la srie [1] avec B = a, en arithmtique de base b. Par exemple : (123)4 = (1 42) + (2 41) + (3 40) = (16 + 8 + 3)10 = (27)10.

Chapitre 3

11

On peut valuer l'quation [1] plus efficacement l'aide de la factorisation de Horner : N = (((((n3 B) + n2) B) + n1) B) + n0. [2]

En particulier, pour passer du dcimal au binaire, la mthode la plus courante consiste valuer la srie [1] avec B = 10 en arithmtique de base 2, partir de la reprsentation BCD du nombre dcimal. Un algorithme effectuant cette opration consiste poser dabord R = 0, puis, en partant du digit le plus significatif, remplacer R par la valeur du digit suivant plus dix R (valu en binaire), et ainsi de suite pour chacun des digits : (125)10 R 0 1 + 10 0 = 1 2 + 10 1 = 12 5 + 10 12 = 125 R (0000)2 0001 + 1010 0000 = (0001)2 0010 + 1010 0001 = (1100)2

0101 + 1010 1100 = (1111101) 2 Conversion dcimal-binaire

Remarquez que les multiplications par dix peuvent tre ralises en n'effectuant que des dcalages et des additions : en effet, 10 x = 8 x + 2 x; 2 x est obtenu par x + x ou encore par un dcalage gauche de x, et 8 x est obtenu par deux dcalages gauche de 2x. Avec cette mme mthode, pour passer du binaire au dcimal (en fait, du binaire au BCD), on procde lvaluation de la srie [1] avec B = 2 en arithmtique de base 10, en utilisant la factorisation de Horner [2]. On pose dabord R = 0, puis R = valeur du bit le plus significatif suivant de N + (2 la valeur du R prcdent), cette somme tant value en arithmtique BCD (voir section 3.3.4 du livre), jusqu' puisement des bits de N : (10110) 2 1+0+0 0+1+1 1+2+2 1+5+5 R 0 =1 =2 =5 = 11 = 2210

0 + 11 + 11

Conversion binaire-dcimal Chapitre 3

12

Les conversions binaire-dcimal et dcimal-binaire peuvent galement tre effectues trs aisment au moyen d'une table (voir Appendice 4).

Conversion avec lASCII


Pour convertir en binaire un nombre entr au clavier, donc compos de caractres numriques dcimaux cods en ASCII, on soustrait 4810 (3016) de chaque caractre. On obtient alors la reprsentation BCD du nombre. On utilise ensuite les nombres obtenus dans lalgorithme de conversion dcimal-binaire : 00110011 00110101 0x33 0x35 00000011 00000101 3 5 0011 0101
Code BCD compact Code ASCII

BCD non compact aprs soustraction de 0x30

Lors de la conversion binaire-dcimal, aprs la conversion binaire-dcimale, la reprsentation ASCII est obtenue en ajoutant 4810 (0x30) chaque digit de la reprsentation BCD. 0011 0101 3 5 00000011 00000101
Code BCD compact

BCD non compact Code ASCII aprs addition de 0x30

00110011 00110101 0x33 0x35

Notez en passant que certaines machines, pour viter les conversions BCD-binaire et binaireBCD, effectuent tous leurs calculs en arithmtique BCD. C'est le cas, en particulier, de certains calculateurs de poche.

Chapitre 3

13

3.3.3 Nombres fractionnaires


Un nombre rel en code pondr dans une base B peut tre exprim comme suit : N = . . . n2B2 + n1B1+ n0B0 + n-1B-1 + n-2B-2 + ... En binaire on aura donc : N = . . . n222 + n121 + n020 + n-12-1 + n-22-2 + ... , soit : N = . . . n2 4 + n1 2 + n0 + n-1 0,5 + n-2 0,25 + ... ,

o les ni sont videmment 0 ou 1. Pour la conversion dcimal-binaire d'un nombre avec une partie fractionnaire, par exemple 128,8965, on commence par convertir la partie entire, exactement comme dhabitude. Pour la partie fractionnaire, on procde comme suit : on multiplie par 2 la partie fractionnaire, on prend la partie entire du rsultat (qui ne peut tre que 0 ou 1) comme rsultat binaire, et on recommence jusqu' puisement des chiffres fractionnaires du nombre dcimal : 0 ,8965 2 1 ,7930 2 1 ,5860 2 1 ,1720 2 0 ,3440 2 0 ,6880 2 1 ,3760 2 0 ,7520 2 1 ,5040 2 1 ,0080 2 etc., d'o: 128,896510 = 10000000,1110010112

Conversion dcimal binaire dune partie fractionnaire Pour la conversion binaire-dcimal, on peut procder exactement comme dhabitude pour la

Chapitre 3

14

partie entire. Pour la partie fractionnaire, on dcale toute la fraction gauche du point dcimal. chaque dcalage, on incrmente n, une puissance de 2. la fin, il suffit de diviser l'entier qui en rsulte par 2n pour obtenir la fraction dcimale cherche. Exemple : 10000000,1110010112. La conversion de la partie entire donne 128. On traite ensuite la partie fractionnaire : 0,111001011 = 111001011 / 29. Comme 29 = 51210 et que 1110010112 = 45910, on obtient finalement comme partie fractionnaire : 459 512 = 0,896484375. Standard IEEE 754 Le standard IEEE 754 (Institute of Electronic and Electrical Engineers) de simple prcision est le suivant : le premier bit (s) est le signe du nombre; suivent ensuite 8 bits reprsentant e, l'exposant en code excdant 127. Dans ce code, 127 reprsente 0, tout nombre infrieur 127 est considr comme ngatif, et tout nombre entre 127 et 255 est positif. On peut ainsi exprimer des exposants allant de -126 (00000001) +127 (11111110). Les exposants -127 et +128 sont rservs aux reprsentations de 0 et de respectivement. Les 23 bits suivants reprsentent la partie fractionnaire f de la mantisse normalise. Il sagit dune mantisse normalise m de la forme m = 1,f telle que 1 m < 2. Comme le premier bit d'une telle mantisse normalise est toujours 1, on n'a pas besoin de l'crire, ce qui permet de gagner un bit et d'atteindre une prcision de 24 bits. Cette reprsentation ncessite donc un total de 32 bits, soit 4 octets. Ceci reprsente une prcision dcimale de l'ordre de 7 chiffres significatifs et peut exprimer des nombres allant denviron 10-38 10+38. La valeur du nombre est donc donne par lexpression : N = (-1)s 2(e - 127) 1,f o s est le signe de la mantisse, et e est lexposant tel quinscrit dans le format suivant :

Chapitre 3

15

0 signe s (+)

100 0011 1 e = exposant excdant 127 = 135 e - 127 = 8

101 1000 0000 0000 0000 0000 partie fractionnaire f de la mantisse normalise

Reprsentation de 432 en virgule flottante IEEE de simple prcision Le nombre 432 = (110110000)
2

= 1,10110000

28

s'crit donc en simple prcision :

43D80000IEEE. On utilise ici la notation hexadcimale comme abrviation de la reprsentation binaire du nombre IEEE. On met lindice IEEE pour bien indiquer quil ne sagit pas dun nombre hexadcimal. Exemples : +0 = 00000000IEEE, -0 = 80000000IEEE, +1 = 1,0 20 = 3F800000IEEE, +2 = 1,0 21 = 40000000IEEE, + = 1,0 2128 = 7F800000IEEE et - = FF800000IEEE. En double prcision, on utilise 8 octets, soit 64 bits, dont 11 servent l'exposant (en code excdant 1023) et 52 la partie fractionnaire de la mantisse. Il en rsulte une prcision quivalant 15 chiffres significatifs en dcimal et des exposants pouvant aller de 10-308 10+307. La valeur dun nombre N en double prcision est donc donne par lexpression :

N = (-1)s 2(e-1023) 1,f En prcision tendue, on utilise 10 octets, soit 80 bits, dont 15 servent lexposant (en code excdant 16 384) et 63 la partie fractionnaire de la mantisse. Il en rsulte une
prcision quivalant 19 chiffres significatifs en dcimal et des exposants pouvant aller de 10-4933 10+4931.

La valeur dun nombre N en prcision tendue est donc donne par lexpression : N = (-1)s 2(e-16383) 1,f

Chapitre 3

16

Multiplication et division La multiplication et la division en virgule flottante s'effectuent sans difficult : on multiplie les mantisses entre elles et on additionne les exposants. En effet : (a 2p) (b 2q) = a b 2p+q . On normalise ensuite la mantisse rsultante et on donne un signe ngatif au rsultat si les deux oprandes ne sont pas de mme signe. On procde de la mme faon pour la division puisque (a 2p) (b 2q) = (a b) 2p-q. Addition et soustraction L'addition et la soustraction sont plus dlicates. Avant d'effectuer l'opration, il faut aligner les deux nombres, c.--d. les ramener au mme exposant, celui du nombre le plus grand en valeur absolue. Ainsi, si A = a 2p et B = b 2q, alors pour effectuer A + B, si q est infrieur p, il faut dcaler b vers la droite tout en augmentant q jusqu' ce que les deux exposants soient gaux. On effectue ensuite l'addition des mantisses et on normalise la mantisse rsultante s'il y a lieu. Exemple : Soit A = 1,1101011 2 23 et B = 1,10010110 2 21. Puisque q < p, on effectue la correction B = 0,01100101102 23 avant d'effectuer l'addition : A + B = (1,11010110002 + 0,01100101102) 23. En simple prcision, si |p-q| > 25, il n'est pas ncessaire d'effectuer le calcul, car l'un des oprandes est tellement petit par rapport l'autre qu'on peut le ngliger.

Conversion Pour effectuer la conversion d'un nombre dcimal tel que 3,65625 103 la reprsentation en virgule flottante IEEE, on trouve d'abord la reprsentation de la mantisse 3,65625 en binaire, soit 1,1101012 21. Ceci donne, en format de virgule flottante IEEE : 406A0000IEEE. On multiplie ensuite cette valeur par la reprsentation de 103 en virgule flottante IEEE, qui est 447A0000IEEE. Le produit donne finalement 45648400IEEE. On peut calculer la valeur de 103 directement ou par multiplications successives de 10,0 en virgule flottante ou encore la prendre dans une table. Les calculs en virgule flottante prsentent des problmes d'arrondi dans de nombreux cas. Par exemple, le nombre 0,110 ne s'exprime pas de faon finie en virgule flottante binaire et donne

Chapitre 3

17

0,00011001100110011... 3DCCCCCDIEEE.

, ou, en virgule flottante IEEE de simple prcision :

3DCCCCCCIEEE. Pour viter que la conversion inverse ne donne 0,099999...., on arrondit

La conversion inverse s'effectue d'une faon similaire : on transforme l'exposant binaire en nombre dcimal l'aide d'une table; on convertit ensuite la mantisse binaire en dcimal par la mthode habituelle de conversion binaire-dcimal pour les entiers; on effectue enfin le produit de ces deux quantits. Dans l'exemple de la page prcdente 43D80000IEEE, l'exposant est 8, et 28 = 25610. La mantisse binaire est 1,10112, soit 1,687510. Le produit des deux, soit 256 1,6875 = 432 donne le rsultat dcimal.

NaN et nombres dnormaliss Dans la norme IEEE, les nombres avec exposant 0xFF (+128) et fraction f non nulle sont appels NaN (Not a Number). Ils peuvent tre utiliss comme messages derreur de la part du coprocesseur arithmtique, dpendant de la valeur de f. Les nombres avec exposant nul (-127) et fraction f non nulle reprsentent des nombres dits dnormaliss, dont la valeur est donne par 0,f 2-126, mais avec une prcision rduite. Exemple : 00100000IEEE = 0,0012 2-126 = 1,4693679 10-39. Le plus petit nombre dnormalis est donc : 00000001IEEE = 2-23 2-126 = 1,4012985 10-45.

Unit de calcul en virgule flottante Les calculs en virgule flottante sont assez complexes et ont tendance tre lents sils sont programms de faon conventionnelle avec des processeurs optimiss pour les calculs sur des entiers. Les micro-ordinateurs modernes utilisent donc une unit spcialise appele FPU (Floating-Point Unit) qui excute ces calculs trs rapidement.

Chapitre 3

18

Exercices du chapitre 3

3.1 Coder le message suivant en ASCII : COPY A : B : Il y a deux espaces dans cette ligne qui se termine par un retour de chariot. 3.2 Mettre le chiffre binaire suivant sous forme octale, puis sous forme hexadcimale : 1100101100111010 3.3 Peut-on mettre facilement le chiffre du problme prcdent sous forme dcimale sans effectuer aucun calcul ? 3.4 Dterminer la valeur en dcimal du chiffre du problme 3.2 en utilisant la formule suivante, o m est le nombre de bits : N = nm-1Bm-1 + nm-2Bm-2 + .... + n0B0 3.5 a. Convertir 1234 en base 10. b. Convertir 5710 en base 4. 3.6 En tenant compte du fait que les oprations de dcalage et d'addition binaires sont plus rapides en langage machine, expliquer comment on peut multiplier un entier quelconque par 2110. Multiplier le nombre hexadcimal B7F par 2110. 3.7 En sinspirant de la table daddition binaire donne la p. 109 du livre, laborer une table de soustraction.

3.8 a. Quelle est ltendue de reprsentation dun mot de 8 bits pour des entiers positifs? b. Quelle est ltendue de reprsentation dun mot de 8 bits pour des entiers signs? 3.9 Multiplier 101012 par 1102.

3.10 Diviser 1001012 par 11012. 3.11 a. Convertir 0.1011012 en dcimal. b. Convertir 0.48437510 en binaire

Chapitre 3

19

3.12 a. Convertir le nombre hexadcimal 5B7.A34F en format IEEE de simple prcision et fournir le rsultat sous forme de 8 digits hexadcimaux. b. Dterminer la valeur en dcimal du nombre IEEE suivant : 7A5F43B6. S'arranger pour avoir une mantisse dcimale comprise entre 1 et 10. c. Dterminer l'erreur maximale de troncature, en valeur relative, que l'on peut commettre en convertissant un nombre dans le format IEEE correspondant. 3.13 Soit les deux nombres IEEE de simple prcision en notation hexadcimale : A = 43D00000IEEE B = 3FF00000IEEE a. Trouver la notation binaire de A et B. b. Isoler les caractristiques (signe, exposant, mantisse) de A et B. Mettre ensuite A et B sous la forme : A = 1,xxx 2m et B = 1,yyy 2n c. Dcaler le chiffre le plus petit pour obtenir la mme puissance de 2. d. Additionner les mantisses en binaire. e. Reconvertir le rsultat dans sa forme IEEE standard puis donner le rsultat sous la forme hexadcimale. 3.14 Effectuer le produit des deux nombres en virgule flottante IEEE de simple prcision : 40A00000IEEE C0400000IEEE. 3.15 crire le nombre 1,0 en virgule flottante IEEE de double prcision. 3.16 Dans les ordinateurs IBM 370, les nombres en virgule flottante sont exprims de la faon suivante : 1 bit de signe de la mantisse, exposant de 7 bits + 64 en puissances de 16, fraction de 24 bits. Dans ce systme, la fraction est dite normalise s'il n'est pas possible de rduire l'exposant sans que la mantisse atteigne ou dpasse 1,0. Exemples :1510 = 11112 160 = 0,11112 161; exposant corrig = 64 + 1 = 65;
0

1000001 111100000000000000000000.

1,010 = 1,000 2 160 = 0.00012 161; exposant corrig = 64 + 1 = 65;


0

1000001 00010000000000000000000.

a. Exprimer le nombre 43210 dans ce systme. b. Quel inconvnient ce systme prsente-t-il en ce qui a trait la prcision relative des nombres exprims? c. Quel sont le plus petit et le plus grand nombres normaliss reprsentables dans ce systme?

Chapitre 3

20

Chapitre 3

Chapitre 5 Circuits logiques


5.1 Circuits combinatoires
Quand on a un problme de logique combinatoire rsoudre, on part de la table de vrit, qui est la donne du problme. Par exemple: abc x 000 0 001 0 010 1 011 1 100 0 101 0 110 1 111 1 On peut ensuite: 1. Soit crire le minterme de chacune des ranges pour laquelle le rsultat doit tre 1 et faire le OU de tous ces mintermes. On obtient alors: x = a.b.c + a.b.c + a.b.c + a.b.c qui signifie x = 1 si a = 0 et b = 1 et c = 0, ou si a = 0 et b = 1 et c = 1, ou si Il reste simplifier cette quation en utilisant les rgles de lalgbre boolenne. On obtient finalement x = b. b. Soit utiliser une table de Karnaugh. On part encore de la table de vrit et on transcrit les 1 dans les cases appropries. On encercle les 1 pour obtenir: c 0 1 ab 00 0 0 01 1 1 11 1 1 10 0 0 On voit immdiatement que la boucle ne peut dpendre ni de a ni de c puisquelle vaut 1 que a soit 0 ou 1 et que c soit 0 ou 1. Par contre, b est toujours 1. Donc cette boucle vaut b. Comme cest la seule, alors x = b.

22

Cette technique est une faon visuelle de dtecter et de simplifier les termes tels que a.b + a.b = a. Observez lquivalence entre les deux mthodes: la seconde range reprsente a.b.c + a.b.c = a.b, tandis que la troisime range reprsente a.b.c + a.b.c = a.b. Lensemble se simplifie ainsi: a.b + a.b = b.

Exemples de tables de Karnaugh

Tables de Karnaugh 2 variables

Chapitre 5

23

Tables de Karnaugh 3 variables

Chapitre 5

24

Tables de Karnaugh 4 variables

Masquage d'un registre Une application importante utilise par tous les processeurs est le masquage dun registre. Soit un registre contenant initialement le motif suivant : 1101 11002. Supposons qu'on dsire mettre 0 le 8e bit en conservant tous les autres bits intacts. On effectue alors un ET logique bit par bit de ce registre avec le masque 0x7F (0111 1111) : Registre 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 Masque Masquage dun registre Chapitre 5

25

La mise 1 des bits dun registre est ralise dune faon analogue : il suffit de faire le OU logique bit bit. Pour faire l'inverse du circuit prcdent, c'est--dire mettre 1 le 8e bit : Registre initial : Masque : Rsultat : 0101 1100 1000 0000 1101 1100

5.2.4 Synthse dun circuit combinatoire


Additionneurs Aux pages 82, 105 et 109 du livre, il est question dadditionneurs binaires. On peut utiliser de tels additionneurs de 1 bit pour effectuer laddition de mots de plusieurs bits. Voici le circuit pour un additionneur de 4 bits :
A3 B3 ABC C' S C3 S3 A2 B2 ABC C' S S2 A1 B1 ABC C' S S1 A0 B0 C-1 ABC C' S S0

Additionneur 4 bits Cette technique est appele addition avec retenue srie. Elle est malheureusement trop lente, car les Si ne sont tous valides que quand l'effet de la retenue C-1 s'est propag jusqu' C3. Pour des longs mots, le dlai devient excessif. On utilise alors des circuits de retenue anticipe (look-ahead carry), beaucoup plus rapides, mais aussi beaucoup plus complexes.

5.2.6 Multiplexeurs et dmultiplexeurs


la page 85 du livre, on mentionne quon peut raliser nimporte quelle fonction de deux variables avec un multiplexeur deux variables. Ceci peut tre gnralis un nombre quelconque de variables.

Chapitre 5

26

Soit la table de vrit suivante : a 0 0 0 0 1 1 1 1 On peut la raliser avec le circuit suivant :


c c 0 1
0 1 2 3

b 0 0 1 1 0 0 1 1

c 0 1 0 1 0 1 0 1

x 0 1 1 0 0 0 1 1

MUX

a b Ralisation dun circuit logique au moyen dun multiplexeur

En effet, si on considre les deux premires ranges de la table, a = 0 et b = 0 choisissent lentre 0 du multiplexeur. Pour ces deux ranges, la table de vrit montre que x = c. On applique donc c lentre 0. De la mme faon, pour les deux ranges suivantes, a = 0 et b = 1 choisissent lentre 1 du multiplexeur. Pour ces deux ranges, la table de vrit montre que x = c. On applique donc c lentre 1. Pour les deux ranges suivantes, a = 1 et b = 0 choisissent lentre 2 du multiplexeur. Pour ces deux ranges, la table de vrit montre que x est toujours 0. Il suffit donc dappliquer 0 lentre 2. Finalement, pour les deux ranges suivantes, a = 1 et b = 1, cest lentre 3 du multiplexeur qui est choisie. Pour ces deux ranges, x est toujours 1. On applique donc 1 lentre 3. De la mme faon, on peut raliser une fonction de 4 variables avec un multiplexeur 8 vers 1, etc. Chapitre 5

27

5.2.7 Dcodeurs, codeurs, transcodeurs


Un autre exemple de circuit MSI est un dcodeur, circuit qui prend une entre de n bits et l'utilise pour choisir l'une des lignes de sortie :
Y0 Y1 Y2 Y3

A B

Dcodeur 2-4 On remarque que les portes sont des NON-ET, de sorte que les sorties sont normalement 1, et qu'une seule peut tre 0 la fois. Le dcodeur illustr ici est dsign dcodeur 2-4 (2 vers 4). On trouve sur le march des dcodeurs 3-8, 4-16, double 2-4, et des dcodeurs 4-10 pour le dcodage de nombres BCD. Un tel circuit est utile dans l'activation des circuits de mmoire, par exemple. Supposons en effet une mmoire de 32 Ko (Kilo-octets) constitue de 4 puces contenant chacune 8 Ko. La puce 0 contient les donnes des adresses 0 8 191, la puce 1, celles des adresses 8 192 16 383, etc. Chaque puce de mmoire contenant 8 Ko ncessite 13 bits d'adresse (213 = 8 192). Toutefois, pour adresser un octet unique dans une mmoire de 32 Ko, il faut une adresse de 15 bits (215 = 32 768). On utilise donc les deux bits les plus significatifs de l'adresse pour dterminer laquelle des quatre puces de mmoire doit tre active, au moyen d'une entre de slection de puce CS (Chip Select). La barre dinversion indique que la puce est active quand cette entre est basse (0). Les 13 autres lignes d'adresses sont appliques aux quatre puces simultanment. Comme une seule des sorties du dcodeur peut tre 0 la fois, une seule des quatre puces de mmoire est active un instant donn :

Chapitre 5

28

Adresses A0 A12

8K 8 CS

8K 8 CS

8K 8 CS

8K 8 CS

Donnes D0 D7 A13 A14


0 1 2 3

Application dun dcodeur Dcaleurs Dans le circuit suivant, on applique un mot de 8 bits D0 D7 et la sortie est dcale de 1 bit vers la gauche ou nest pas dcale suivant la valeur d'une ligne de contrle C. Lorsquil y a dcalage gauche, le bit de droite est remplac par un 0 :
D7 D6 D5 D4 D3 D2 D1 D0 0

0 1 C C S7

0 1 C

0 1 C

0 1 C

0 1 C

0 1 C

0 1 C

0 1 C

S6

S5

S4

S3

S2

S1

S0

Dcaleur combinatoire Ce circuit est constitu de huit multiplexeurs 2 vers 1 comme suit :
x0 x1 C

S = C.x0 + C.x1

Chapitre 5

29

Lorsque C = 0, les donnes D0 D7 sont appliques aux sorties S0 S7 respectivement. Lorsque C = 1, S0 = 0, S1 = D0, S2 = D1, etc. Les processeurs modernes utilisent un dcaleur barillet (barrel shifter), capable de dcaler de n bits vers la gauche ou vers la droite. Pour raliser un tel dcaleur, on utilise des dcaleurs combinatoires comme le prcdent, capables de dcaler de 1, 2, 4, 8 bits vers la gauche quand C = 1 et qui ne dcalent pas quand C = 0. Le circuit suivant peut dcaler des mots de 16 bits de 0 15 bits vers la gauche.
15 0

Dcaleur de 1 bit

Dcaleur de 2 bit Dcaleur de 4 bit

Dcaleur de 8 bit

0101 Nombre de bits dcaler en binaire Dcaleur barillet Dans lexemple illustr dans la figure, on effectue un dcalage gauche de 5 bits.

Rotateurs Un rotateur est un circuit similaire celui dun dcaleur, mais qui applique lautre extrmit les bits qui dbordent.

Rotateur Ainsi, la rotation gauche de 1 bit du nombre 10000100 donne 00001001, etc.

Chapitre 5

30

Unit arithmtique et logique (UAL)


A F0 F1 UAL B

Sortie

Symbole dUAL La plupart des ordinateurs utilisent un seul circuit appel UAL (unit arithmtique et logique) capable d'effectuer au moins les oprations de base ET, OU, l'addition binaire de deux mots et la ngation d'un mot, suivant la valeur de deux variables de contrle F0 et F1 :
Unit logique A A.B A+B B B R R A B A B 0 1 2 3 R' R' Sortie

Sommateur

F0 F1

Dcodeur 2-4

UAL F1 F0 0 0 1 1 0 1 0 1 Fonction A ET B A OU B NON B A plus B

Il s'agit ici d'une UAL de 1 bit (bit-slice) et on peut en combiner autant qu'on veut en parallle. En principe, pour une machine ayant des mots de n bits, on pourrait utiliser n cir-

Chapitre 5

31

cuits identiques comme le prcdent, un pour chaque bit. Cette UAL est lmentaire mais demeure l'lment central d'un ordinateur.

Chapitre 5

32

5.3 Circuits squentiels


5.3.3 Bistables
Bistable RS Une faon de visualiser le bistable RS de la figure 5.25 du livre est le systme mcanique bistable suivant, quon peut raliser facilement laide dune rgle et dun trombone. Une extrmit est tiquete Q et on dfinit que Q = 1 si cette extrmit est en haut. Lautre extrmit est dsigne Q . Si on applique une force S vers le bas lextrmit de gauche (S = 1), la rgle bascule de faon ce que Q = 1 (transition mise un). Si on enlve la force S, alors S = 0 et R = 0, et la rgle reste indfiniment dans ltat Q = 1. Pour la faire basculer de lautre ct, on doit appliquer une force R vers le bas lextrmit de droite (R = 1). ce moment, on a Q = 0 et Q = 1. Si on enlve la force R, alors S = 0 et R = 0, et la rgle reste indfiniment dans ltat Q = 0. Si on applique les forces S et R simultanment (S = 1 et R = 1), le rsultat est indtermin, dans le sens que si on enlve S et R simultanment (S = 0 et R = 0), on ne peut dcider lavance de quel ct la rgle basculera. Cest exactement le cas du bistable RS. Par contre, si on enlve S ou R sparment, on passe ncessairement par une des situations S = 0 et R = 1 ou S = 1 et R = 0, et on sait de quel ct la rgle ira. Le comportement de ce systme mcanique obit la mme quation caractristique que le circuit lectronique : Q+ = S + R Q. La valeur ultrieure Q+ de Q sera 1 si S = 1, quelle que soit la valeur prsente de Q, ou sera gale la valeur prsente de Q tant que S = 0 et R = 0. Le premier cas est la transition de mise 1, lautre est ltat stable.

Chapitre 5

33

S=1

R=0
Q

S=0

R=0
Q

S=0
Q

R=1

S=0
Q

R=0

S=1

R=1

S=0

R=0

Bistable RS mcanique La version lectronique du RS est:


S Q2 S
n

R 0 0 1 1

Q1

n+1

Q2 0 1 0

n+1

0 Q1 1 0 1

n Q1

n Q1

1 0 0

Ce circuit a deux entres S (Set) et R (Reset ou Clear) et deux sorties, Q1 et Q2. On l'appelle bistable ou encore verrou (latch). Quand S = R = 0, il a deux tats stables, Q1 = 0 et Q2 = 1, et Q1 = 1 et Q2 = 0.

Chapitre 5

34

La prsence d'un 1 l'entre S cause un SET du circuit, c.--d. Q1 devient 1. La prsence d'un 1 l'entre R cause un RESET du circuit, c.--d. Q1 devient 0. La diffrence de temps entre n et n+1 est le dlai de propagation entre l'application d'une impulsion SET ou RESET au circuit et l'apparition de la sortie correspondante. Il est possible d'appliquer simultanment S = R = 1. On aura alors Q1 = Q2 = 0. Cependant, lorsque l'une des entres redeviendra 0, le circuit prendra l'tat correspondant l'autre entre. Si on ramne les deux entres 0 simultanment, on ne peut prvoir l'tat final du circuit, car il y a alors une course critique entre les deux portes. L'tat d'entre S = R = 1 n'est donc pas utilis. Comme dans tous les autres cas Q1 et Q2 sont toujours complmentaires, on les dsigne respectivement Q et . On reprsente ce circuit au moyen du schma suivant:
S Q R Q

Bistable D Le bistable D est simplement un bistable RS auquel on a ajout un inverseur pour viter que R = S = 1, ainsi quune entre dhorloge pour synchroniser son opration avec le reste du systme.
D Q G Q G D 0 0 1 1 0 1 0 1 Q+ Q Q 0 1 D Q G Q

Son quation caractristique est donc : Q + = DG + QG ou, si lhorloge est constitue dimpulsions courtes: Q+ = D. Ce circuit mmorise linformation qui est prsente sur lentre D au moment o lhorloge G est applique. Cest un lment de base avec lequel on peut construire des registres, des compteurs, ou des machines squentielles (automates). Le bistable D illustr ci haut est activ par un niveau 1 sur lentre dhorloge G. Dautres ralisations (edge-triggered ou master-slave) sont plutt actives lors dune transition de lhorloge. Certains circuits sont activs par une monte, dautres par une descente. On les symbolise comme suit: Chapitre 5

35

D Q > Q

D Q > Q

Dans ce cas, lquation caractristique devient Qn+1 = Dn ou encore Q+ = D, quelle que soit la dure des impulsions dhorloge. Le bistable T ci-dessous est une variante de la bascule D qui bascule chaque coup dhorloge, i.e.
D Q C > k Q Q

T
Q

Bistable T On peut ajouter une entre T telle que si T = 0, le circuit ne fait rien, et que si T = 1, le circuit bascule chaque coup dhorloge:

D Q

Q Q

T
Ck

=
> Q >

Applications des bistables Remarquez dans le compteur binaire de la p. 100 du livre (Figure 5.28), que les sorties Q1 Q4 reprsentent le nombre de coups dhorloge compts depuis le dernier passage par 0. On trouve de tels circuits dans les montres au quartz, par exemple, o la frquence dun cristal de quartz est divise par un compteur jusqu ce quon ait un coup par seconde. Cette frquence est ensuite divise par 60 pour donner les minutes, puis encore par 60 pour donner les heures, etc.

Chapitre 5

36

Q1
Q Q

Q2
Q

Q3
Q

Q4 T
Q

Ck
1

T
Q 2 3 4 5

T
Q 6 7 8

T
Q

9 10 11 12 13 14 15 16

Ck Q1 Q2 Q3 Q4
0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 1 1 1 0 0 0 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 0 0

Compteur binaire asynchrone modulo-16

5.3.4 Synthse dun circuit squentiel


On trouve la p. 101 du livre (Figure 5.29) la synthse dun compteur synchrone 2 bits avec une entre de contrle pour lempcher de compter ou ly autoriser. On peut considrer deux variantes : la ralisation sans entre X (qui compte toujours) et la ralisation avec des bistables D. Ralisation sans entre X Q1 0 0 1 1 Q0 0 1 0 1 Q1+ 0 1 1 0 Q0+ 1 0 1 0 T1 0 1 0 1 T0 1 1 1 1

Do : T0 = 1 et T1 = Q0, et le circuit suivant :

Q0 1 T0 T1

Q1

Compteur binaire 2 bits sans entre Chapitre 5

37

Ralisation du circuit avec entre laide de bistables D Q1 0 0 0 0 1 1 1 Q0 0 0 1 1 0 0 1 1 X 0 1 0 1 0 1 0 1 Q1+ 0 0 0 1 1 1 1 0 Q0+ 0 1 1 0 0 1 1 0 D1 0 0 0 1 1 1 1 0 D0 0 1 1 0 0 1 1 0

En faisant les tables de Karnaugh pour D1 et D0 en fonction de Q1, Q0 et X, on trouve: D0 = Q0 X + Q0 X = Q0 X et D1 = Q1Q0 + XQ 1 + XQ1Q0 = Q1 (Q0 + X ) + Q1 XQ0 = Q1 XQ0

D0 Q0

D1 Q1

Exemple de synthse de circuit squentiel : Systme de contrle de feux de circulation Exemple tir de Introduction to Digital Logic Design par John P. Hayes, Addison-Wesley, 1993, ISBN: 0-201-15461-7. On veut raliser un systme de feux de circulation qui laisse passer alternativement les voitures dans l'axe Nord-Sud (NS) puis dans l'axe Est-Ouest (EO), muni d'un bouton pour pitons, qui met les feux au rouge dans les deux directions et allume un feux pour pitons pendant un certain temps. Une premire ralisation pourrait tre la suivante :

Chapitre 5

38

x=0 NS vert EO rouge A x=0 x=1 x=0 Rouge dans les deux axes C x=1 B x=1 NS rouge EO vert

Quand on n'appuie pas sur le bouton (x = 0), les feux alternent rgulirement entre les axes NS et EO, i.e. le systme alterne entre les tats A et B. Si x devient 1 pendant qu'on est dans l'un ou l'autre de ces tats, on passera l'tat C dans lequel les feux sont rouges dans les deux axes et le feu pour pitons est allum. On reste dans cet tat tant que x = 1. Quand x redevient 0, on retourne l'tat A. Ce systme est dficient pour deux raisons. Un petit malin pourrait appuyer sans cesse sur le bouton et paralyser toute circulation automobile. D'autre part, comme le systme une fois dans l'tat C retourne toujours l'tat A, il se pourrait qu'on n'arrive presque jamais l'tat B s'il y avait beaucoup de pitons, et la circulation serait paralyse dans l'axe EO. Une meilleure ralisation serait la suivante : x=0 NS vert EO rouge x=1 x=0 ou 1 A x=0 B NS rouge EO vert x=1 D Rouge dans les deux axes aprs B

Rouge dans les deux axes aprs A

Si un piton appuie sur le bouton pendant que le systme est dans l'tat A, on passe l'tat C, puis on retourne l'tat B, assurant ainsi l'alternance des feux entre les axes NS et EO. De plus, le systme ne peut pas tre paralys comme le prcdent. On obtient donc la table d'tats suivante, o la sortie z1 = 1 reprsente un feu vert en direction EO et la sortie z2 = 1 feu vert en direction NS.

Chapitre 5

39

A tat B prsent C D

Entre prsente x Sortie prsente z1 z2 0 1 B C 01 A D 10 B B 00 00 A A

Comme le systme a quatre tat, il ncessitera deux bascules. On peut attribuer arbitrairement le codage suivant aux tats : Q1Q2 = 00 reprsente A Q1Q2 = 01 reprsente B Q1Q2 = 10 reprsente C Q1Q2 = 11 reprsente D Notre table d'tats devient donc : Entre prsente x Sortie prsente z1 z2 0 1 B C 01 A D 10 B B 00 00 A A tat futur On obtient ainsi la table de transition : tat Sorties Entre tat prsent suivant prsentes x Q1 Q2 Q1+ Q2 + z1 z2 0 00 01 01 0 01 00 10 0 10 01 00 0 11 00 00 1 00 10 01 1 01 11 10 1 10 01 00 1 11 00 00

00 tat 01 prsent 10 11

Chapitre 5

40

Si on ralise le circuit au moyen de bascules D, on pourra remplacer la colonne Q1+Q2+ par D1D2, puisque dans une bascule D, Q+ = D. On peut donc maintenant passer la ralisation du circuit en faisant les tables de Karnaugh pour D1, D2, z1 et z2 en fonction de x, Q1 et Q2. On a donc pour les deux bascules: Q1Q2 x 00 01 11 10 0 0 0 0 0 1 1 1 0 0
D1 D1 = x.Q1

Q1Q2 x 00 01 11 10 0 1 0 0 1 1 0 1 0 1 D2 D2 = x.Q2 + Q1.Q2 + x.Q1.Q2 Q1Q2 x 00 01 11 10 0 1 0 0 0 1 1 0 0 0 z1 z2 z2 = Q1.Q2

et pour les sorties :


Q1Q2 x 00 01 11 10 0 0 1 0 0 1 0 1 0 0 z1 = Q1.Q2

On obtient finalement le circuit : x D1 Q1 Q1 z1 z2

D2 Q2 Q2

Ck

Chapitre 5

41

Exemple de synthse dun circuit squentiel: distributrice caf Nous allons concevoir le circuit complet dune distributrice caf rudimentaire. Spcification: 1. la machine attend que le client ait introduit le montant correct dargent. 2. une fois que le client a dpos largent, la distributrice attend quil fasse son choix: caf fort, caf faible, caf avec crme, etc. 3. une fois le choix fait, la machine met une commande lunit qui verse le caf. 4. la machine retourne ltat 1. Il y a donc trois tats, quon numrote arbitrairement 00, 01, 10. Il y a deux entres, argent et choix. Il y a une seule sortie, la commande Verser caf. Comme il y a plus de deux tats, la machine ncessitera deux bistables. Les tats sont dfinis par les sorties Q1 et Q0 de ces deux bistables. On a alors quatre tats possibles. Ltat 11 nest pas ncessaire dans notre machine, et normalement on ny parvient jamais. Il se peut toutefois que la machine, au moment de la mise en marche, se trouve dans cet tat. On sarrange donc pour quil aille ltat 00, pour sassurer quon ne peut pas obtenir de caf sans avoir dpos dargent. Ceci donne le diagramme de transition suivant: argent 00 01

choix

11

10

Verser caf

Nous pouvons donc crire notre table de transition:

Chapitre 5

42

argent 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

choix 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

Q1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

Q0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Q1+ 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0

Q0+ 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0

Verser caf 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0

Nous pouvons maintenant raliser le circuit. Il reste dcider quelle sorte de bistable on utilise. Supposons quil sagit de bascules D. Puisque dans une telle bascule Q+ = D, la table de transition nous donne directement D1 et i0 dans les colonnes Q1+ et Q0+ respectivement. Nous pouvons maintenant tablir les tables de Karnaugh pour D1 et D0. Quant la sortie Verser caf, il est assez vident quelle est gale Q1 .Q0, on na donc pas besoin de tables de Karnaugh pour lobtenir.
Q1Q0 00 01 11 10 00 0 0 0 0 01 0 1 0 0 11 0 1 0 0 10 0 0 0 0 Q1Q0 00 01 11 10 00 0 1 0 0 01 0 0 0 0 11 1 0 0 0 10 1 1 0 0

argent choix

argent choix

Q1+ = choix.Q1.Q0

Q0+ = argent.Q1.Q0 + choix.Q1.Q0

Do le circuit :

Chapitre 5

43

Verser caf choix D1 Q1 Q1 argent Ck D0 Q0 Q0

On laisse comme exercice au lecteur la ralisation au moyen de bistables T ou RS.

Chapitre 5

44

Exercices du chapitre 5
5.1 crire la table de vrit dun ET et dun OU 3 entres. 5.2 Dmontrer que a. (a + b).(a + b) = a b. a + (a b) = a + b 5.3 a. l'aide de la table de vrit, vrifier la non-associativit du NON ET logique. b. En se servant des proprits mathmatiques des fonctions ET et OU, tablir de faon littrale l'associativit du OU disjonctif. 5.4 partir de la table de vrit suivante, crire Y1 et Y2 en fonction de A, B et G. Simplifier les fonctions logiques puis dessiner le circuit correspondant en employant les portes logiques lmentaires (penser aux thormes d'absorption). G 1 1 1 1 0 0 0 0 A 0 0 1 1 0 0 1 1 B 0 1 0 1 0 1 0 1 Y1 1 1 1 1 0 1 0 1 Y2 1 1 1 1 1 0 1 0

5.5 a. tablir la table de vrit d'un soustracteur binaire comportant 3 entres : Ai, Bi, la retenue dune opration antrieure Ci, et 2 sorties, Di et Ci+1 (voir celle de la table daddition la p. 99 du livre). b. tablir les 2 quations logiques donnant Di et Ci+1 en fonction de Ai, Bi, et Ci. Simplifier. c. Tracer les circuits permettant de raliser ces deux fonctions. 5.6 tablir la table de vrit d'un NON ET avec les deux entres connectes ensemble et montrer qu'il ralise un circuit inverseur. On considre ensuite le circuit logique suivant :

Chapitre 5

45

A B C D E

a. Donner F en fonction des variables A, B, C, D et E. b. Peut-on raliser la mme fonction en n'employant que des NON ET ? Dessiner le circuit correspondant. 5.7 Tracez le circuit dun multiplexeur deux entres. 5.8 Montrez quil est possible de raliser un OU-Disjonctif au moyen de seulement quatre portes NAND. 5.9 Raliser le circuit ayant la table de vrit suivante laide dun multiplexeur : a 0 0 0 0 1 1 1 1 b 0 0 1 1 0 0 1 1 c 0 1 0 1 0 1 0 1 x 1 1 0 1 1 0 0 1

5.10 En vous basant sur le dcaleur vu plus haut, tracez : a. un circuit qui dcale vers la droite quand C = 1, et qui ne dcale pas quand C = 0. b. un circuit qui dcale de deux bits vers la droite quand C = 1, et qui ne dcale pas quand C = 0. 5.11 la p. 99 du livre, on trouve le circuit dun bistable RS ralis avec des portes NONOU. Considrer la ralisation au moyen de portes NON-ET suivante :
S Q1

Q2

Chapitre 5

46

tablir sa table de transition ainsi que son quation caractristique comme la p. 88 du livre. 5.12 Raliser un compteur binaire synchrone modulo-3 (Q1Q0 = 00, 01, 10, 00) laide de bistables D.

Chapitre 5

Chapitre 7 Mmoires
7.2 Mmoire centrale
7.2.1 Mmoires semi-conducteurs
Tel que mentionn la p. 143 du livre de Zanella et Ligier, le groupe des mmoires vives (RAM) se divise en deux sous-groupes. Si la cellule lmentaire de mmoire est constitue de circuits de type bistable, la mmoire est dite statique (SRAM). Par contre, dans les mmoires dites dynamiques (DRAM), llment de mmoire est constitu d'une capacit (condensateur). Les mmoires dynamiques sont plus denses (donc dune plus grande capacit) et moins coteuses mais doivent tre rafrachies plusieurs centaines de fois par seconde, ce qui complique les circuits. Organisation des circuits mmoire La capacit d'un circuit intgr de mmoire s'exprime en bits, en kilobits (Kbits) ou en mgabits (Mbits). Cependant, pour un nombre de bits donn, il y a plusieurs faons d'organiser l'information l'intrieur du circuit. Par exemple, dans les mmoires statiques, un circuit intgr de 64 kilobits (64 Kbits) peut tre organis en 16 384 mots de 4 bits, ou en 8 192 mots de 8 bits (octets).

48

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13

16K

4
I/O0 I/O1 I/O2 I/O3

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12

8K

I/O0 I/O1 I/O2 I/O3 I/O4 I/O5 I/O6 I/O7

WE

CS

WE OE

CS

Mmoires statiques (SRAM) Dans le premier cas, on a besoin de 14 lignes d'adresse (214 = 16 384). Si on veut obtenir une mmoire avec une longueur de mot de 8 bits, c.--d. pouvoir accder un octet la fois, il faudra 2 circuits intgrs de 16 Kbits 4, ce qui donne une capacit totale de 16 Koctets. Dans le second cas, on n'a besoin que de 13 lignes d'adresse (213 = 8 192) et un seul circuit intgr nous donne une mmoire de 8 Koctets. Il en faut videmment 2 pour obtenir 16 Koctets. Seule l'interconnexion des puces diffre. Les adresses supplmentaires, car il en faut 14 ici aussi, seront plutt appliques un dcodeur 1-2 qui agira sur les pattes de slection de puce CS (Chip Select). Les autres entres de contrle sont la validation d'criture WE (Write Enable) et la validation de sortie OE (Output Enable). On remarque dans les deux cas que les broches de donnes sont bidirectionnelles, c.--d. lors d'une lecture, le contenu de l'adresse choisie apparat sur ces broches, tandis que lors d'une criture, on applique sur ces mmes broches les bits crire l'adresse choisie. Il va de soi que WE et OE ne peuvent tre actifs en mme temps. Autre exemple de mmoire statique :

Chapitre 7

49

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16

DO0 DO1

128 K x 8

DO2 DO3 DO4 DO5 DO6 DO7

WE OE CE Mmoire statique de 128 Ko. Mmoires dynamiques:


A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 WE CAS RAS

1M 1

D in D out

Mmoire dynamique (DRAM) Dans le cas particulier des mmoires dynamiques, l'organisation est en mots de 1 bit, de 4 bits ou de 8 bits. Ladresse de n bits est scinde en deux moitis. Lune adresse la colonne et

Chapitre 7

50

lautre adresse la range dans un plan de 2n/2 x 2 n/2 mots. Ces adresses range et colonne sont multiplexes, c.--d. les n adresses ne sont pas toutes appliques simultanment, ce qui permet l'utilisation de puces plus petites. Les deux parties, de n/2 bits chacune, sont appliques successivement. Les lignes RAS (Row Address Strobe) et CAS (Column Address Strobe) indiquent au circuit de mmoire de quelle partie de l'adresse il s'agit. On applique d'abord la moiti de poids fort de l'adresse sur les broches d'adresse, puis on abaisse RAS. On applique ensuite la partie de poids faible, puis on abaisse CAS. En lecture, aprs un temps appel temps d'accs, une donne valide apparat sur la broche (ou les broches si la mmoire est organise en mots de plus dun bit) Dout et y reste valide tant que CAS est bas.
tCAC

RAS CAS

Adresse R/W D0

Adresse Range

Adresse Colonne

Donnes valides Chronogramme d'une DRAM

On remarque l'conomie d'espace considrable par rapport la mmoire statique de capacit beaucoup moindre illustre plus haut. Il faut cependant retenir que les mmoires dynamiques sont passablement plus lentes que les mmoires statiques pour plusieurs raisons : . le temps d'accs d'une mmoire dynamique (entre CAS et donne valide) est gnralement plus long que celui d'une mmoire statique (de lordre de 100 ns pour une mmoire dynamique, et de 10 ns pour une mmoire statique), . le temps de cycle, c.--d. entre deux lectures ou deux critures, est beaucoup plus long que le temps d'accs lui-mme dans le cas d'une mmoire dynamique, . il y a perte d'efficacit (6-12%) cause par le cycle de rafrachissement des mmoires dynamiques.

Chapitre 7

51

7.2.2 Structure physique de la mmoire centrale


Les puces de mmoire dynamique sont souvent fournies sous forme de modules aisment enfichables appels SIMM (Single Inline Memory Module) comportant 8 puces (ou 9 pour les mmoires avec bit de parit) de 256 K 1, ou 1 M 1 ou 4 M 1 ou 16 M 1, constituant ainsi des modules de 256 Ko, 1 Mo, 4 Mo ou 16 Mo respectivement.

SIMM de 1 Mo grandeur nature

Schma du SIMM prcdent Lgende: 8 puces de 1 M 1, i.e. 1 048 576 adresses contenant chacune 1 bit dinformation. A0-A9 = 20 fils dadresse multiplexs sur 10 fils sous contrle de RAS et CAS. W = commande de lecture/criture. DQ1 DQ8 = entres/sorties allant au bus de donnes D0 D7 de lordinateur. Dans les machines contemporaines, qui lisent 64 bits en mmoire la fois, on utilise plutt des modules 172 broches appels DIMM (Dual Inline Memory Modules) pouvant contenir par exemple 128 Mo de mmoire dynamique EDO ou SDRAM.

Chapitre 7

52

DIMM de 128 Mo grandeur nature

Circuit d'un DIMM de 128 Mo avec des puces de 16 M x 4. La mmoire est de loin l'lment le plus lent d'un ordinateur. Comparez le temps de cycle de l'ordre de 50 ns d'une DRAM typique avec le temps de cycle de 1,25 ns d'un processeur avec Chapitre 7

53

une horloge de 800 MHz. Il est vident que si on ne prend pas de prcautions, le processeur passera une bonne partie de son temps attendre la RAM. Des progrs substantiels ont t raliss au cours des dernires annes. La mmoire centrale des micro-ordinateurs est compose de DRAM pour des raisons de cot. Une mmoire DRAM peut tre considre comme un tableau de cellules. Ces cellules sont composes de condensateurs et contiennent un ou plusieurs bits de donne, dpendant de la configuration de la puce. On adresse cette table au moyen de dcodeurs de ranges et de colonnes, qui reoivent leurs signaux des lignes RAS et CAS. Des transistors d'accs appels sense amplifiers sont connects chaque colonne et assurent les fonctionnalits de lecture et de rafrachissement de la puce. En effet, puisque les cellules sont des condensateurs qui sont dchargs lors d'une lecture, le sense amplifier doit restaurer les donnes avant la fin d'un cycle de lecture. Les condensateurs qui constituent les cellules de donnes ont tendance se dcharger en raison de fuites lectriques. Ils ont donc besoin d'un cycle de rafrachissement priodique sinon les donnes seront perdues. Un contrleur de rafrachissement dtermine le temps entre les cycles de rafrachissement, et un compteur de rafrachissement vrifie que tout le tableau (toutes les ranges) a bien t rafrachi. Ceci signifie que des cycles mmoire sont utiliss pour le rafrachissement, ce qui rduit la performance. Un accs mmoire typique se droule comme suit. D'abord, les bits d'adresse de range sont appliqus au bus d'adresses. Aprs un certain temps, le signal RAS est affirm, ce qui active les sense amplifiers et verrouille l'adresse de range dans le tampon d'adresse de range. Une fois le signal RAS stabilis, la range choisie est applique aux sense amplifiers. Ensuite, les bits d'adresse de colonne sont appliqus, puis verrouills dans le tampon d'adresse de colonne lors de l'affirmation de CAS. Le buffer de sortie est activ au mme moment. Quand CAS est stabilis, le sense amplifier slectionn envoie ses donnes au buffer de sortie. Dans une interface asynchrone, une priode minimum de temps est fixe pour garantir qu'une opration est complte. On alloue une priode de temps minimum pour chacune des oprations internes de la puce, de sorte que si un cycle d'horloge a lieu avant l'expiration de ce temps minimum, on doit attendre au prochain cycle avant de permette l'opration suivante. En implmentant des modes d'accs spciaux, on a pu liminer certaines des oprations internes pour certains types d'accs. La premier fut l'accs en mode page. Mode Page Chapitre 7

54

Avec cette mthode, le signal RAS est maintenu actif, de sorte qu'une page entire de donnes est maintenue l'entre des sense amplifiers. On peut changer les adresses de colonne en activant CAS de faon rpte. Ceci permet des lectures beaucoup plus rapides, puisqu'on limine le temps d'activation de l'adresse de range. Certaines applications profitent largement de cette approche, tandis que d'autres pas du tout. Mode page rapide Le mode page rapide amliore le mode page original en liminant le temps de mise en place de l'adresse de colonne lors d'un cycle de page. On ralise ceci en activant les tampons d'adresse de colonne sur le bord descendant de RAS (au lieu de CAS). Puisque RAS demeure actif (bas) pour toute la dure du cycle de page, ce qui agit comme un latch transparent quand CAS est haut et permet l'activation de l'adresse de se produire ds que l'adresse de colonne est valide, plutt que d'attendre la descente de CAS. Les temps d'accs typiques sont 6-3-3-3 (latence initiale de 6 priodes d'horloge, avec un accs page de 3 cycles). Le mode page rapide a t fort rpandu et est encore utilis dans plusieurs systmes. Il rduisait la consommation de puissance, principalement parce que les courants de sense et de restore ne sont pas ncessaires durant un accs en mode page. Il prsentait quelques inconvnients. Le principal, tait que les buffer de sortie sont dsactivs quand CAS est haut, ce qui a pour effet d'ajouter 5 ns au temps de cycle.

Chapitre 7

55 FPM RAS tPC t PC

CAS

Range

COL1

COL2

COL3

COL4

Adresse

DQ
DATA1 DATA2 DATA3

t CAC

t CPA

Chronogramme de la DRAM en mode Fast Page tCAC = temps d'accs colonne tPC = temps de prcharge tCPA = temps d'accs colonne colonne Mmoire EDO La dernire amlioration majeure apporte aux DRAM asynchrones a t la mmoire EDO (Extended DataOut). Elle consiste ne plus dsactiver les tampons de sortie sur la monte de CAS. Ceci limine le temps de prcharge au moment de verrouiller les donnes en sortie. Ceci permet de rduire le temps minimum o CAS est bas, et la monte peut donc se produire plus tt. Une nouvelle adresse de colonne peut ainsi tre applique avant la fin du cycle prcdent. EDO procure une amlioration de 40% du temps d'accs, et fonctionne bien jusqu' une frquence de bus de 83 MHz. Si les puces DRAM sont suffisamment rapides (55 ns ou mieux), on peut mme utiliser les mmoires EDO jusqu' 100 MHz de frquence de bus. Les temps d'accs typiques sont 5-2-2-2 avec une frquence de bus de 66 MHz.

Chapitre 7

56

La mmoire EDO est maintenant considre comme dpasse. La plupart des manufacturiers ont cess de la produire. La tendance est maintenant d'utiliser des DRAM synchrones. Si vous avez dj de la mmoire EDO, il n'y a pas de raison srieuse de changer pour une mmoire synchrone moins que votre vitesse de bus dpasse 83 MHz. Mme alors, il n'y a en fait pas de diffrence significative avant 100 MHz. EDO
RAS

tPC
CAS

tPC

Range Adresse COL1 COL2 COL3 COL4 COL5

DQ

tCAC

DATA1

DATA2

DATA3

DATA4

Chronogramme d'une mmoire EDO.

Une variante de EDO, Burst EDO ou BEDO, bien qu'une excellente ide, n'a pas t retenue par Intel, pour des raisons politiques et conomiques, de sorte que la technologie n'a jamais rellement perc. Le mode rafale est un progrs sur le mode page : aprs qu'une premire adresse est lue, les 3 adresses suivantes sont gnres l'interne, liminant ainsi le temps ncessaire fournir les 3 adresses de colonne. Les temps d'accs 66 MHz sont 4-1-1-1.

Chapitre 7

57

tCAC

BEDO
RAS tPC

CAS Range Adresse COL1 COL5

DQ
DATA1 DATA2 DATA3 DATA4 DATA5

Chronogramme d'une mmoire BEDO

Mmoire SDRAM Quand il devint apparent que les vitesses de bus se dirigeaient vers 100 MHz, les concepteurs de DRAM cherchrent un moyen de contourner les latences significatives toujours prsentes. L'implantation d'une interface synchrone a permis une telle rduction et procure galement d'autres avantages. Dans une interface asynchrone, le processeur doit attendre sans rien faire que la DRAM ait effectu ses oprations internes, ce qui prend de l'ordre de 60 ns. Avec une interface synchrone, la DRAM verrouille l'information provenant du processeur, sous le contrle de l'horloge systme. Ces verrous enregistrent les adresses, les donnes et les signaux de contrle, ce qui permet au processeur de vaquer aussitt d'autres tches. Aprs un certain nombre de cycles d'horloge, les donnes deviennent disponibles et le processeur peut les lire sur les lignes de sortie. Une variante, la mmoire ESDRAM, est une SDRAM dote d'un petit cache en SRAM, ce qui rduit les temps de latence et permet des oprations en mode rafale jusqu' 200 MHz. Ce cache conserve les donnes le plus frquemment utilises pour minimiser les accs la DRAM plus lente. On peut utiliser un bus trs large entre la SRAM et la DRAM, ce qui augmente la bande passante.

Chapitre 7

58

Intel mise sur le concept RDRAM dvelopp par Rambus, Inc. qui prtend pouvoir atteindre des vitesses de bus de 800 MHz. Mais c'est une technologie brevete et tous les fabricants devront payer des royauts Rambus. Plusieurs fabricants de mmoire appuient la technologie SLDRAM, qui est un standard industriel ouvert, ce qui devrait permettre des prix moins levs. Un de ses avantages, est qu'elle n'exige pas un conception nouvelle des puces de DRAM. On atteint prsentement 400 MHz et on prtend pouvoir atteindre 800 MHz sous peu. Les temps d'accs sont 5-1-1-1 83 MHz

VRAM Un sous-ensemble des mmoires dynamiques est constitu par les mmoires VRAM spcialises dans laffichage vido des ordinateurs. Ce que ces mmoires ont de particulier, cest quelles ont deux ports daccs : un port accs direct comme les DRAM ordinaires, et un port accs squentiel. Ainsi, pendant que lordinateur accde cette mmoire de faon normale, le circuit gestionnaire de laffichage peut en lire squentiellement le contenu pour rafrachir lcran. Les deux accs peuvent seffectuer simultanment.

A0-A17 RAS CAS R/W DQ1-DQ8 SC SE VRAM 256 K x 8 SDQ1-SDQ8

Schma de principe dune VRAM Du ct gauche, on trouve les accs alatoires normaux dune DRAM. Du ct droit, on trouve laccs squentiel, qui seffectue sous le contrle de SC (serial clock). Chaque coup de SC incrmente ladresse lue (ou crite). La frquence de SC peut atteindre 40 MHz, ce qui permet dafficher 40 Mo la seconde.

Chapitre 7

59

7.3 Mmoire cache


Pour augmenter la performance des ordinateurs un prix modeste, on utilise des mmoires caches. Ce sont des mmoires plus petites faites de puces rapides (SRAM) quon utilise en plus de la mmoire principale qui, elle, est faite de puces plus lentes (DRAM). De tels caches ont en gnral une taille de 1 Ko 1 Mo. Si une donne est dans le cache, elle sera ainsi obtenue plus rapidement que si on devait accder la mmoire principale. Si elle ny est pas, le temps daccs est celui de linterrogation du cache + celui dun accs la mmoire principale. La raison principale pour laquelle on utilise une mmoire cache est le prix lev de la mmoire statique (SRAM). En effet, la mmoire dynamique (DRAM) cote environ 20 $ par Mo, tandis que la mmoire statique (SRAM) cote environ 800 $ par Mo. Une mmoire centrale faite de SRAM serait donc trop dispendieuse. Mais en utilisant un cache de 256 Ko (200 $) 1 Mo (800 $), on peut obtenir une performance comparable celle dune SRAM, tout en ayant une mmoire centrale faite DRAM. Le cache est fait de mmoire SRAM de 10 15 ns, tandis que la mmoire centrale est faite de DRAM de 70 80 ns. La performance dun cache repose sur le principe de localit : 1. Localit temporelle : si un objet a t rfrenc, il sera rfrenc de nouveau bientt. 2. Localit spatiale : si un objet a t rfrenc, des objets proches seront galement rfrencs. Lunit dinformation qui peut tre prsente ou non dans le cache est appele un bloc. Les blocs ont gnralement entre 4 et 128 octets et sont tous de mme taille dans un cache donn. Le taux de succs est le rapport entre le nombre daccs mmoire pour lesquels le bloc est prsent dans le cache et le nombre total daccs. Le taux dchec est : Taux dchec = 1 - taux de succs. Le temps associ au succs est le temps daccs un bloc du cache, et comprend le temps ncessaire pour dterminer si le bloc est prsent ou non. Le temps de traitement de lchec est le temps de remplacement dun bloc du cache par le bloc correspondant de la mmoire principale. Pour raliser un cache, ladresse est divise en deux parties : celle de gauche sappelle le numro de bloc, celle de droite dtermine ladresse de loctet dans le bloc. Par exemple, dans le cas dun cache en blocs de 4 octets, on aurait la partition suivante (ladresse indique est 0x00400108) :

Chapitre 7

60

Adresse Numro de bloc dans le bloc 000000000100000000000001000010 00

Partition de ladresse On distingue trois sortes de mmoires caches : le cache correspondance directe, le cache totalement associatif et le cache associatif par ensemble de blocs.

Cache correspondance directe. Dans le cache correspondance directe, le champ Numro de bloc est divis en deux parties. Celle de droite est dtermine par le nombre de blocs dans le cache et sappelle index. La partie de gauche, forme des bits que restent, sappelle tiquette.
Numro de bloc tiquette Index Adresse dans le bloc

00000001000000000000 0100001000 00

Ici, on aurait un cache de 4 Ko, compos de 1024 blocs de 4 octets. Lindex dtermine la range du cache o est stocke linformation correspondant ladresse forme par ltiquette et lindex. Ainsi : No du bloc dans le cache = No du bloc mmoire modulo le nb de blocs dans le cache. Pour un index donn, le cache vrifie si ltiquette contenue dans la range correspondante est la mme que dans ladresse. Si oui et si le bit V = 1 alors il y a succs. Sinon, le bloc est charg partir de la mmoire principale, plac avec son tiquette la range correspondant lindex et le bit V de cette range est valid. Linconvnient dun tel cache est quil ne peut pas contenir deux blocs ayant le mme index mais une tiquette diffrente. Notez que les blocs correspondant une adresse donne sont toujours placs au mme endroit.

Chapitre 7

61

tiquette

Index

00000000010000001000 0001000010 00
00 01 10 11

tiquette
0000000000 0000000001 0000000010

Donnes

0001000010

00000000010000001000

1111111111

Cache correspondance directe Dans le cache correspondance directe, la taille des ranges en bits est : nb de bits dans ltiquette + bit V + nombre de bits par bloc. Ici, cest 20 + 1 + 32 = 53 bits.

Cache totalement associatif Dans un tel cache, ltiquette est constitue par le numro de bloc. Toutes les tiquettes du cache sont compares en parallle avec celle de ladresse. Cest donc le plus coteux de tous puisquil doit y avoir autant de comparateurs que de ranges dans le cache et que chaque comparateurs doit avoir autant de bits que ltiquette. Si la bonne tiquette sy trouve et que le bit V de la range correspondante est 1, il y a succs et le cache retourne la donne correspondante. Si elle ne sy trouve pas ou que V = 0, le bloc correspondant est charg partir de la mmoire principale. Tant quil reste une range o V = 0, il est plac la premire range ayant V = 0, avec son tiquette, et le bit V de cette range est port 1. Si tous les bits V sont 1, il remplace un bloc dj prsent lendroit dtermin par un algorithme de remplacement.

Chapitre 7

62

tiquette
000000000100000010000001000010 00
Comparateurs de 30 bits (1 par range)
00 01 10 11

tiquette

Donnes

Succs

Cache associatif Contrairement au cache correspondance directe, les blocs correspondant une adresse donne peuvent tre placs nimporte o. Lalgorithme de remplacement utilis quand il faut remplacer un bloc et que tous les blocs du cache sont valides (V = 1) peut tre : 1. Le hasard ; 2. Lalgorithme du plus ancien LRU (Least Recently Used), cest--dire quon remplace le bloc qui a t utilis le moins rcemment. Dans le cache totalement associatif, la taille des ranges est : nombre de bits dans ltiquette + bit V + nombre de bits par bloc (+ bits danciennet si on utilise lalgorithme LRU). Dans le cas dun cache de 1024 mots de 4 octets, ltiquette a 30 bits, donc ranges de 30 + 1 + 32 = 63 bits (+ bits danciennet). Un tel cache ncessiterait 1024 comparateurs de 30 bits ! Cache associatif par ensemble de blocs Dans le cache associatif par ensemble de blocs, qui est un compromis entre les deux types prcdents, lindex pointe vers un ensemble de blocs associatifs. Lors dune interrogation, les tiquettes des blocs correspondant un index donn sont compares en parallle. Dans un tel cache, il est possible davoir des blocs de mme index et dtiquette diffrente.

Chapitre 7

63

Supposons des ensembles de 4 blocs. On aura donc pour un cache de 4 Ko organis en ranges de 4 octets, 256 ensembles de 4 blocs de 4 octets . Le champs index a donc besoin de 8 bits. Le champ tiquette aura 22 bits pour une adresse de 32 bits.
tiquette
0000000001000000100000

Index
01000010 00

tiquette D o n n e s
00000000 00000001

tiquette D o n n e s

tiquette D o n n e s

tiquette D o n n e s

11111111

omparateur de 22 bits

omparateur de 22 bits

omparateur de 22 bits

omparateur de 22 bits succs

Cache associatif par ensemble de blocs Dans un cache associatif par ensemble de blocs, la taille des ranges est : Nombre de bits de ltiquette + bit V + nombre de bits par bloc Ici, cest : 22 + 1 + 32 (+ 2 bits danciennet) = 55 ou 57 bits. Un tel cache ncessite 4 comparateurs de 22 bits.

criture dans un cache. Il y a deux options principales pour les politiques dcriture dans un cache : lcriture simultane (write-through) et la rcriture (write-back). Dans le mode criture simultane, lcriture se fait la fois dans le cache et dans la mmoire principale. Donc toute criture prend autant de temps quun chec, de sorte que lefficacit du cache est rduite. La rcriture consiste ne mettre jour la mmoire principale que lorsquun bloc qui a t modifi par une criture est remplac dans le cache. Il faut donc garder un bit de plus par range (bit modifi) pour indiquer quels blocs ont t modifis par des critures. Lavantage Chapitre 7

64

de cette mthode est que lcriture est aussi rapide que la lecture tant quun bloc est dans le cache. Le dsavantage est quelle rend la copie des donnes dans la mmoire principale inconsistante tant que les donnes modifies ny ont pas t recopies.

Chapitre 7

65

7.5 Mmoires auxiliaires


7.5.1 Enregistrement magntique
Techniques de codage Diffrentes techniques de codage ou de magntisation sont utilises, dans le but d'assurer une plus grande intgrit et une plus grande densit de l'information. Quatre techniques sont couramment utilises, surtout sur les disques. Les trois utilisent la technique d'enregistrement NRZI, o un 1 est reprsent par un renversement du flux magntique. Dans le codage FM (modulation de frquence), il y a une impulsion d'horloge (renversement de flux) au dbut de chaque cellule de bit (concidant avec le pointill). Un 1 est reprsent par une impulsion (renversement de flux) au milieu de la cellule de bit. Il n'y a pas de renversement de flux dans le cas d'un 0. Vers 1977, on introduit les techniques dites de double densit. Dans le MFM (modulation de frquence modifie), on n'a une impulsion d'horloge que s'il y a deux 0 de suite ou plus. Ceci permet de rduire la dure de la cellule de bit sans augmenter le nombre de renversements de flux par unit de distance. Dans le M2FM (modulation de frquence doublement modifie ou modifie par Miller), on n'a une impulsion d'horloge pour un zro que si le bit prcdent tait zro et qu'il n'y avait pas d'impulsion d'horloge pour ce bit. Dans les trois techniques, le contrleur de disque doit tre assez bien synchronis pour faire la distinction entre une impulsion d'horloge et une donne.
1 FM MFM
2

M FM

Techniques de codage

Chapitre 7

66

FM et NRZI

MFM et NRZI

Codage sur le disque Certains manufacturiers (dont Apple) utilisent une autre technique de codage, le GCR, introduit vers l978. Un autre codage similaire est utilis depuis quelques annes, le codage RLL (run-length limited). On retrouve ce dernier sur la plupart des disques durs rcents. Dans le GCR et le RLL, il sagit de coder linformation de telle sorte quil ny ait jamais ni plus ni moins quun certain nombre de zros qui se suivent, quel que soit le motif de bits enregistrer, afin de ne pas perdre la synchronisation. Dans le codage RLL 2,7, par exemple, il y a toujours au moins deux zros et au plus sept zros entre chaque paire de uns. Dans le RLL 3,9, on trouve entre deux uns au moins trois et au maximum neuf zros. Le codage RLL est environ 50% plus dense que le MFM. On trouve la p. 160 du livre une table de codage GCR. Pour le RLL 2,7, on utilise la table : Suite de bits 000 10 010 0010 11 011 001 Exemple: 000100 0100 100100 00100100 1000 001000 00001000 Code

Chapitre 7

67

Donne Code

10 0100

11 1000

0010 00100100

NRZI Codage RLL 2,7 pour la donne 10110010

7.5.2 Disques magntiques


Tel que mentionn la p. 160 du livre, l'enregistrement sur un disque est effectu le long de pistes concentriques. Ces pistes sont divises en secteurs. Suivant le systme d'exploitation, ces secteurs peuvent tre regroups en blocs logiques de quelques secteurs lors de la lecture et de l'criture. On appelle ces blocs des units dallocation (u.a.).
Piste 00 Piste 01

Index

Secteur

Dcoupage dun disque Il existe deux techniques de partage du disque en secteurs : par le logiciel ou par le matriel. Le dcoupage par matriel (hard sector) utilise des trous physiques dans le disque luimme pour indiquer le dbut de chaque secteur. Le dcoupage par logiciel (soft sector) utilise un seul trou (ou mme aucun dans certains cas) pour dlimiter le dbut de la piste; les secteurs suivants sont dfinis par le systme dexploitation qui ajoute par logiciel des informations en tte du premier secteur qui permettent de reprer le dbut de chacun des Chapitre 7

68

autres secteurs. La sectorisation par matriel a l'avantage de permettre l'utilisateur de stocker un plus grand nombre de donnes, car la sectorisation par logiciel ncessite une grande quantit d'overhead, c.--d. d'informations destines au reprage des diffrents secteurs. Toutefois, la plupart des disques utiliss par les microsystmes sont des disques formats par logiciel. Chaque secteur est divis en deux champs : le champs d'identification (ID Field) et le champs de donnes (Data Field). Tous les champs (ID ou Data) sont spars par des intervalles (gaps). Chaque champ commence par une zone de synchronisation et un octet de marque d'adresse, et se termine par un CRC1 (Contrle de redondance cyclique) suivi d'un intervalle. Tous ces champs, sauf celui des donnes de l'usager sont inscrits sur le disque au moment du formatage. Le champ didentification permet de savoir exactement de quel secteur il sagit : no de piste, no de secteur, no de face. Un gap est un espace entre les champs. Il sert de zone tampon sparant deux champs qui peuvent tre crits sparment. La dimension du gap influence l'intgrit des enregistrements : si le gap est trop court, il y a danger que l'criture dans un champ de donnes dborde dans le champ d'identification suivant si le disque tourne trop vite. En revanche, des gaps trop longs diminuent la capacit du disque. Le champ de synchronisation permet au contrleur de disque d'ajuster la vitesse de rotation du disque avec prcision et de distinguer entre des transitions d'horloge et des transitions de donnes. Il indique galement au contrleur quelle sorte d'information va venir : champ d'identification, champ de donnes, etc. L'octet de marque d'adresse indique o commence un champ et confirme qu'un champ de synchronisation en est bien un et non pas une suite de donnes qui ressemblerait un champ de synchronisation. Pour cette raison, l'octet de marque d'adresse est un octet spcial (certaines cellules ne contiennent pas de top d'horloge). On utilise des octets de marquage diffrents pour indiquer respectivement le dbut de piste, le dbut d'un champ d'identification, le dbut d'un champ de donnes, le dbut de chaque champ de donnes annules, et le dbut d'une mauvaise piste.

Le CRC est une technique algorithmique pour vrifier que les donnes d'un champ sont correctes. Elle est dcrite au chapitre 4 du livre de Zanella et Ligier. Deux octets CRC sont calculs par matriel au moment de l'criture et sont crits la suite des donnes. la lecture, les octets CRC des donnes lues sont calculs (galement par matriel) et compars ceux du disque.

Chapitre 7

69

Le dbit maximum dun disque en octets par seconde est donne par le nombre doctets par seconde qui passent devant la tte de lecture ou dcriture. Ce nombre est donn par lexpression : nb doctets par seconde = nb doctets par piste nb de tours par seconde o : nb doctets par piste = nb doctets par secteur nb de secteurs par piste nb de tours par seconde = vitesse de rotation en tours/min. 60 Donc, plus lenregistrement sur un disque est dense et plus il tourne vite, plus son dbit sera grand. Le temps daccs dun disque est le temps pris par la tte de lecture ou dcriture pour passer dune piste lautre. Il est de lordre de 10 ms pour les disques durs et de lordre de 30 ms pour les disques souples. Le temps dattente dun disque est le temps moyen quon doit attendre avant quune information donne passe devant la tte de lecture ou dcriture. Ce temps est gal au temps ncessaire pour que le disque effectue une demie rotation : 1 2 nb de tours par seconde

Disques durs Ces disques tournant trs grande vitesse (plus de 3600 tours/minute), la tte de lecture ne touche pas au disque mais flotte sur un coussin d'air environ 0,25 m de la surface. La surface doit donc tre usine avec une trs grande prcision et le disque doit tre l'abri de toute poussire.

Chapitre 7

70

Coupe dun disque dur

Mouvement du disque

Schma d'une tte de lecture de disque dur Le botier est tanche et ces disques ne sont habituellement pas accessibles l'usager. Il existe toutefois des versions dans lesquelles une cartouche tanche amovible permet d'enlever le disque (200 Mo). Chapitre 7

71

Grce la grande vitesse de rotation des disques durs, la vitesse de transfert des donnes est trs leve et dpasse dans certains cas 10 Megabits/s. ces vitesses, on ne peut faire intervenir le processeur et on lit ou crit directement en mmoire par DMA (Direct Memory Access).

Disquettes magntiques Le disque souple (ou disquette) a longtemps t le dispositif de stockage externe le plus rpandu sur les micro-ordinateurs. La disquette standard de 8" (210 mm) de diamtre fut dveloppe par IBM pour son systme de saisie de donnes 3740. Elle fut utilise pendant un certain temps, pour tre remplace par la disquette de 51/4" (51/4). Aujourdhui, on utilise presquuniversellement celles de 31/2" (89 mm). Les disquettes de 31/4" (82 mm) n'ont pas russi prendre une part significative du march. La capacit d'une disquette de 31/2" est de 1,44 Mo. Toutefois, le disque souple est en voie d'tre remplac presque totalement par des mdia comme le lecteur Zip de Iomega. Ces disquettes ont le mme format qu'un disque souple mais une capacit de 100 Mo. On les appelle parfois floptiques parce qu'elles comportent des pistes de guidage optique. Le taux de transfert est de 1,2 Mo/s et le temps daccs est de 29 ms. Cest une performance presque comparable celle dun disque dur un cot trs bas (environ 250 $ pour lunit et 25 $ par disquette).

7.5.3 Cartouches et bandes magntiques


On utilise peu les drouleurs de bande magntique en micro-informatique. On a plutt recours aux disques souples et durs. Toutefois, pour effectuer les copies de scurit, il s'avre souvent intressant d'utiliser des cassettes de bande magntique. Dans les cassettes de format 3M (102 152 mm ou 4 6), une bande d'une largeur de 0,25 se droule 90 ips (inch per second). Le lecteur (streaming-tape drive ou streamer) a souvent le mme format que les lecteurs de disques souples ou durs de 51/4 demie-hauteur. Ces cassettes peuvent contenir jusqu 1020 pieds de bande, et avec une densit denregistrement de 20 000 bpi (bits per inch) et un format de 9 pistes, on peut atteindre une capacit de 525 Mo. Il faudrait des centaines de disques souples pour obtenir la mme capacit. Les lecteurs de cassettes de bande magntique de 8 mm., (parfois connus sous le nom dExabyte) et utilisant la technologie ttes rotatives des lecteurs de cassettes vido, sont galement trs rpandus. Il sagit dailleurs essentiellement des mmes cassettes que les Chapitre 7

72

camras vido 8 mm. Ces cassettes sont petites (64 96 mm ou 21/2 33/4), mais peuvent atteindre une capacit de 2,5 5,6 Go. sur une bande de 112 m. On trouve finalement des cassettes de 4 mm. semblables aux cassettes DAT (Digital Audio Tape) et pouvant contenir 2 4 Go. sur un ruban de 90 m. Ici aussi on fait appel une tte rotative.

Chapitre 7

73

Exercices
7.1 a. Dterminer la capacit d'adressage totale en octets d'un processeur 32 bits comportant 32 lignes d'adresses notes A0 A31. b. On dsire quiper l'espace d'adressage rel de ce processeur avec 4 mgaoctets de RAM dynamique (DRAM) disposs partir de l'adresse 00000000. Les puces mmoire sont du type 1 Mga 1. Dterminer le nombre de puces ncessaire. c. Quelle est l'adresse de fin de la zone DRAM en hexadcimal? d. Les DRAM ont leurs adresses de ligne et de colonne multiplexes. Dterminer le nombre de lignes d'adresses physiques de chaque puce. 7.2 Un ordinateur dont le CPU a une capacit dadressage de 32 bits est muni dun cache correspondance directe de 256 Ko organis en 64K ranges de 4 octets. a. Combien y a-t-il de bits dans lindex? b. Combien y a-t-il de bits dans ltiquette? c. quelle range se trouve ladresse 0x0A001000? d. Quelle est la valeur de ltiquette pour ladresse 0x0A001000? 7.3 Sur la notice d'un constructeur de disques durs, on lit les spcifications suivantes : vitesse de rotation : 3600 tours/min. nombre de plateaux : 5 nombre de faces actives : 9 nombre de cylindres : 1123 vitesse de transfert de l'interface : 1,86 Mo/s. a. Calculer le temps que met le disque pour effectuer un tour complet. b. Dduire la capacit linaire brute par piste, c.--d. le nombre d'octets non formats qu'on peut emmagasiner sur chaque piste. c. Dduire la capacit totale du disque non format. 7.4 Un constructeur de disques durs communique les donnes suivantes : nombre de disques : 2 nombre de surfaces : 4 nombre de ttes : 4 nombre de cylindres : 612 vitesse de rotation : 3 367 tours/min. nombre d'octets par piste : 8 192 a. Dterminer le dbit des donnes en octets par seconde. b. Calculer la capacit brute non formate du disque.

Chapitre 7

74

c. Lors du formatage, les cylindres de 0 7 sont rservs pour la gestion du disque et dans la zone de donnes, on value la perte due aux gaps et aux identifications diverses 24% de la capacit brute. Dterminer le nombre de secteurs de donnes de 512 octets qui restent, sachant que chaque piste doit contenir un nombre entier de secteurs.

Chapitre 7

Chapitre 8 Unit centrale de traitement


8.6 Structure des instructions niveau machine
Le livre mentionne la p. 183 quon prfre aujourdhui les instructions une adresse. Dans le cas dans les machines RISC, les instructions dentre-sortie sont les seules qui peuvent accder la mmoire, et elles sont une adresse. Les autres instruction sont trois adresses, ces adresses tant obligatoirement des registres gnraux. On trouvera donc des instructions telles que : add r0, r1, r2 Cette instruction additionne les registres r1 et r2 et place le rsultat dans le registre r0.

8.8 registres du CPU


Pour illustrer les registres du CPU de la section 8.8 du livre, nous examinons une architecture minimale de processeur de 8 bits. Les bus de donnes interne et externe sont de 8 bits. Le bus d'adresses est de 16 bits, ce qui permet une capacit d'adressage de 64 Ko. Les registres internes Acc1, Acc2 et R5 sont de 8 bits. Les autres registres sont des registres gnraux de 16 bits et servent surtout stocker des adresses. Certains d'entre eux peuvent aussi servir de registres d'indice. Un d'entre eux est le pointeur de pile SP. Ce microprocesseur comporte un UAL de 8 bits et un dcaleur, qui constituent l'unit d'excution. Il comporte de plus un registre d'instructions IR et un dcodeur d'instructions, qui avec les informations provenant des entres de contrle, fournit les renseignements ncessaires la ROM contenant le microprogramme. Cette dernire active dans la squence approprie les lignes de contrle internes ncessaires l'excution des instructions. Les accumulateurs Acc1 et Acc2 sont des registres de donnes de 8 bits dans lesquels on peut effectuer les oprations logiques et arithmtiques. Le registre R5 est un registre de base.

76

Un registre de 16 bits PC appel compteur ordinal ou compteur programme est utilis par le processeur pour pointer vers l'adresse mmoire devant tre lue et dcode par le CPU l'tape suivante. Il s'incrmente automatiquement chaque lecture d'un octet moins qu'une instruction de branchement ou de saut ne l'oblige prendre une autre valeur particulire. L'instruction suivante tre excute est place dans IR.

16

PC R1 R2 R3 R4 R5 Acc1 Acc2

BUS D'ADRESSES BUS DE DONNES

Tampon Tampon CCR Dcodeur Microprogramme Tampon IR L1

L0 F0 F n S0 S1

Verrou

Verrou

BUS DE CONTRLE

ALU

Dcaleur

Microprocesseur 8 bits minimal Un registre d'tat CCR (Condition Code Register) dfinit l'tat du processeur aprs chaque opration arithmtique ou logique et permet au CPU de prendre des dcisions. Ces dcisions se manifestent sous forme de branchements absolus ou relatifs aux diverses sections d'un

Chapitre 8

77

programme ou des programmes diffrents. Les bits d'tat (ou indicateurs) usuels sont donns ci-dessous. Un dernier indicateur, I, sert masquer les interruptions matrielles. C = Retenue (Carry) V = Dpassement de capacit (Overflow) Z = Zro N = Signe (Negative) H = Demi-retenue en provenance du bit 3 (Half carry) pour les opration BCD I = Masque d'interruption

8.9 Adressage des oprandes


La caractristique principale des machines RISC nest pas un jeu dinstructions rduit comme lindiquent leur nom. En effet, un processeur RISC comme le PowerPC MPC604 a plus dinstructions que certaine microprocesseurs CISC. Ce qui est rduit, cest le nombre de modes dadressage. Les instructions dentre-sortie LOAD et STORE sont les seules pouvoir accder la mmoire, et ne disposent que de quelques modes dadressage : - implicite - indirection registre (ladresse se trouve dans un registre) - immdiat, absolu (adressage direct) ou relatif (adressage relatif) - index (index = registre ou donne immdiate) Pour fins de comparaison, certains processeurs CISC ont plus de 20 modes d'adressage.

Chapitre 8

78

Exercice 8.1 Montrez comment on pourrait raliser une machine 0 adresse avec une machine 1 adresse ne possdant quun seul accumulateur. Refaire lexercice 5 de la p. 191 du livre en utilisant un processeur qui aurait deux modes dadressage comme suit: LOAD (SP)+ (dpilement) qui charge dans laccumulateur le contenu de ladresse contenue dans le pointeur de pile SP, et incrmente ensuite SP, et STORE -(SP) (empilement) qui dcrmente SP et stocke ensuite le contenu de laccumulateur ladresse contenue dans SP.

Chapitre 8

Chapitre 9 Superordinateurs et microprocesseurs


Processeurs RISC Les processeurs RISC les plus connus l'heure actuelle sont : 32 bits : Le PowePC MPC-750, aussi appel G3, de IBM/Motorola, avec une horloge de 466 MHz et le support pour un bus pouvant atteindre 266 MHz, qu'on trouve dans les Power Macintosh. 64 bits Le Alpha 21264 de Digital, le microprocesseur le plus rapide au monde avec ses 15,2 millions de transistors, sa frquence d'horloge de plus de 1 GHz et son bus 266 MHz. On trouve ce microprocesseur dans les stations de travail de haut niveau, dans les serveurs (UNIX ou NT) et dans les superordinateurs. Le MIPS R-12000, qu'on trouve dans les stations de travail Onyx et les serveurs Origin de Silicon Graphics (SGI) : horloge 270 MHz, bus 200 MHz. Le UltraSparc-IIi de Sun 480 MHz, qu'on trouve dans les stations de travail et les serveurs du mme nom. Le PA-8500 de Hewlett-Packard, qu'on trouve dans les stations de travail HPVISUALIZE. Horloge 440 MHz et bus 120 MHz. Bientt le IA-64 (Merced) d'Intel/Hewlett-Packard avec plus de 10 M transistors, qui apparatra d'abord dans les serveurs. SPECint951 21.8 @ 466 MHz 30 @ 1 GHz 16.3 @ 440 MHz SPECfp95 12.6 @ 466 MHz 50 @ 1 GHz 26.1 @ 440 MHz

G3 Alpha21264 PA-8500

SPECint95 est une rfrence standard de performance (version 1995) pour les oprations sur des entiers, bases sur des tests mis au point par le groupe SPEC (System Performance Evaluation Cooperative). SPECfp95 mesure la performance en virgule flottante.

80

UltraSparc-IIi R-12000

20.2 @ 480 MHz 15.8 @ 270 MHz

22.5 @ 480 MHz 25.2 @ 270 MHz

Performance comparative des diffrents microprocesseurs Processeurs CISC Le processeur CISC le plus rpandu l'heure actuelle est sans contredit le Pentium. Le membre le plus rcent de la famille est le Pentium III Xeon avec une frquence d'horloge pouvant atteindre 550 MHz et un bus 100 MHz. Ses performances sont 22.5 SPECint95 et 16 SPECfp95 @ 550 MHz. Le Merced d'Intel Il importe ici de mentionner le processeur IA-64 d'Intel, aussi connu sous le nom de Merced, qui remplacera probablement un jour la famille Pentium. C'est un processeur RISC de 64 bits, quoiqu'Intel prtend qu'il va plus loin que le RISC grce l'utilisation de la technologie EPIC (Explicitly Parallel Instruction Computing). Le IA-64 possde : Plus de 10 millions de transistors. Quatre types d'units d'excution : I-Unit pour les entiers, M-unit pour la mmoire, F-unit pour la virgule flottante, B-unit pour les branchements. 128 registres gnraux de 64 bits r0 r127 pour les entiers. Le registre r0 est en lecture seulement et contient la valeur zro. 128 registres de virgule flottante de 82 bits f0 f127. Les registres f0 et f1 sont en lecture seulement et contiennent les valeurs +0.0 et +1.0 respectivement. 64 registres de prdicat p0 p63 qui contrlent l'excution conditionnelle des instructions et les branchements conditionnels. Le registre p0 est en lecture seulement et contient la valeur vrai (1). 8 registres de branchements b0 b7, utiliss pour spcifier l'adresse cible des branchements indirects. L'espace pour 128 registres d'application ar0 ar127 qui supportent diverses fonctions, entre autres certains registres de l'architecture IA-32. Plusieurs de ces registres sont rservs pour usage futur. Un registre de pointeur d'instruction ip de 64 bits.

Chapitre 9

81

Le IA-64 supporte l'excution spculative, i.e. charge simultanment dans son pipeline les deux branches d'un branchement tant que la destination du branchement n'est pas connue. Ceci limine toutes fins pratiques les branchements et les dlais qu'ils provoquent en cas de mauvaise prdiction. Il supporte galement la prdication, mcanisme par lequel on indique au processeur quelles instructions peuvent tre excutes en parallle. Le IA-64 supporte galement les instructions de l'architecture IA-32 (Pentium et al). En mode 64 bits, comme dans les processeurs RISC, seules les instructions load (ld), store (st) et les instructions de smaphore (cmpxchg, xchg, fetchadd) peuvent accder la mmoire. Les instructions du IA-64 sont groupes en paquets (bundles) de 128 bits (voir l'approche VLIW la p. 209 du livre de Zanella et Ligier) contenant trois instructions de 41 bits. Les 5 derniers bits contiennent le champ template.
127 87 86 46 45 5 4 0

Instruction 2

Instruction 1

Instruction 0

template

Le champ template prcise deux proprits : des arrts (stops) dans le paquet courant et le mapping des instructions avec les types d'unit d'excution. Un arrt indique que une ou plus instructions avant l'arrt ont une dpendance de ressource avec une ou plus instructions aprs l'arrt. Au moment du codage, un double point-virgule (;;) aprs une instruction indique un arrt. C'est le programmeur ou le compilateur qui doit dceler ces dpendances. Chaque instruction a la syntaxe suivante : [qp] mnmonique [.comp] dest=srcs qp dsigne un registre de prdicat. La valeur du prdicat dtermine si les rsultats de l'instruction sont en matriel ou supprims. Quand la aleur d'un registre de prdicat est vraie (1), l'instruction s'excute, ses rsultats sont enregistrs et toute exception qui se produit est traite normalement. Quand la valeur est fausse (0), les rsultats ne sont pas enregistrs et aucune exception n'est dclence.

mnmonique dsigne un nom qui identifie de faon unique une instruction IA-64. comp dsigne un ou plusieurs completeurs d'instruction. Ces completeurs indiquent des variations optionnelles appliques un mnmonique de base. Ils suivent le mnmonique et sont spars par des points. Chapitre 9

82

dest srcs

spcifie le(s) oprande(s) destination, i.e. le(s) rsultat(s) de l'instruction. spcifie les oprandes source. La plupart des instruction IA-64 en ont au moins deux.

Exemples ld8 r1=[r5] add r3=r1, r4 br.cond.dptk L1 // lire 8 octets l'adresse contenue dans r5 et placer dans r1 // r3 = r1 + r4 // saut conditionnel vers L1 en utilisant la prdiction matrielle // dynamique supposant que le branchement sera pris // (dynamic taken) r7=r3,r87 // dcaler r3 du nombre de bits indiqu par r87 et placer // rsultat dans r7 [r89]=r16 // enregistrer r16 l'adresse contenue dans r89 r1=[r5] // lecture spculative de 8 octets ldfs f4=[r7],4 // lire un nombre de virgule flottante de simple prcision // l'adresse contenue dans r7 et stocker dans f4, puis // incrmeter r7 de 4.

shr st4 ld8.s

Chapitre 9

Chapitre 10 Entres/sorties
10.5.3 Le bus USB
Le bus USB (Universal Serial Bus) a t mis au point par 7 compagnies : Compaq, DEC, IBM, Intel, Microsoft, NEC et Northern Telecom. C'est un bus srie externe destin aux PC. Il supporte des taux de transfert de donnes atteignant 1.5 Mo/s (12 Mbits/s). Sur un mme port USB, on peut connecter jusqu' 127 priphriques : clavier, souris, imprimantes, scanners, appareils photo numriques, modems, joysticks, tlphones, microphones, haut-parleurs, lecteurs de disquettes, etc. Ces priphriques peuvent tre chans l'un l'autre ou relis des concentrateurs d'extensions (hubs) qui sont des botiers externes, intermdiaires entre le PC et les priphriques. Le bus USB supporte le Plug and Play et le Hot Plug and Play. Il est prvu pour remplacer les ports sries et parallles des micro-ordinateurs. Il permet d'ajouter des priphriques sans avoir ouvrir l'ordinateur pour y ajouter une carte, ajuster des commutateurs ou des cavaliers (jumpers) sur la carte, ou installer des fichiers de configuration. Il n'y a qu'un type cble, valable pour tous les priphriques. Les priphriques sont aliments partir du cble. Le systme supporte des priphriques temps rel (tlphone, son, etc.). Les priphriques peuvent tre installs pendant que l'ordinateur est en marche. Il n'est pas ncessaire de redmarrer l'ordinateur aprs l'installation d'un nouveau priphrique. Il n'y a pas de communication d'un priphrique l'autre. Le cble est form de 4 fils. Deux servent l'alimentation en puissance (+5 V), les deux autres servent aux donnes. Un 0 est une transition de tension, et un 1 est l'absence de transition, de sorte qu'une longue squence de zros gnre un flux d'impulsions rgulires (codage NRZI). Quand un nouveau priphrique est branch, le hub racine dtecte cet vnement et interrompt le systme d'exploitation. Ce dernier interroge alors le priphrique pour savoir ce que c'est et de quelle largeur de bande USB il a besoin. Si le systme d'exploitation dcide qu'il y a assez de largeur de bande pour le priphrique, il lui attribue

84

une adresse unique (1 127) et transmet cette adresse et d'autres informations aux registres de configuration du priphrique

Les deux extrmits dun cble USB..

Les cartes non initialises partent avec l'adresse 0, afin de pouvoir tre adresses. Plusieurs dispositifs USB contiennent leur propre hub de sorte qu'on peut leur ajouter d'autres priphriques USB. Le systme USB peut tre reprsent comme un ensemble de pipes de bits entre le hub racine et les priphriques d'entre/sortie. Chaque dispositif peut subdiviser son pipe en un maximum de 16 sous-pipes pour diffrents types de donnes (e.g. audio et vido). l'intrieur de chaque pipe ou de chaque sous-pipe, les donnes vont du hub racine au dispositif ou en sens inverse. chaque milliseconde prcisment, le hub racine transmet un frame pour maintenir tous les priphriques synchroniss dans le temps. S'il n'y a pas d'autre travail faire, ce frame consiste en un paquet SOF (Start of Frame). Il y a quatre sortes de frames. Les frames de contrle, les frames isochrones, les frames en vrac (bulk) et les frames d'interruption. Les frames de contrle servent configurer des priphriques, leur donner des commandes et les interroger sur leur statut. Les frames isochrones servent aux priphriques temps rel comme les microphones, les haut-parleurs, et les tlphones, qui ont besoin d'envoyer ou de recevoir des donnes des intervalles de temps prcis. Ils ont un dlai prvisible, mais ne permettent pas de retransmission en cas d'erreur. Les frames en vrac servent pour des transferts de masse en direction ou en provenance d'un priphrique sans exigence de temps rel, comme des imprimantes. Finalement, les frames d'interruption sont ncessaires parce que le USB ne support pas les interruptions. Par exemple, au lieu que le clavier cause une interruption chaque fois qu'on appuie sur une touche, le systme d'exploitation peut le scruter chaque 50 ms pour rcuprer les touches accumules depuis la fois prcdente. Chapitre 11

85

Un frame consiste en un paquet ou plus, avec possibilit de paquets dans chaque direction. Il existe quatre types de paquets : token donne, poigne de main, et spciaux. Les paquets token sont du hub racine vers un priphrique et servent au contrle du systme. Parmi ces paquets on a des tokens tels que SOF, IN, OUT, ACK, SETUP. Le paquet SOF est le premier de chaque frame et indique le dbut du frame. S'il n'y a rien faire, c'est le seul paquet du frame. Le paquet IN est une scrutation, demandant un priphrique de retourner certaines donnes. Des champs dans le paquet IN indiquent quel pipe de bits est en train d'tre scrut, de sorte que le dispositif sait quelles donnes retourner (s'il a des streams multiples). Le token OUT annonce que des donnes pour le priphriques suivent. Le token SETUP sert la configuration d'un dispositif. Le token DATA permet de transmettre jusqu' 64 octets d'information dans l'une ou l'autre direction. Le format d'un paquet de donnes est illustr cidessous. Il consiste en un champ de synchronisation e 8 bits, d'un champ de type de paquet de 8 bits PID, des donnes, et d'un CRC (Cyclic Redundancy Code) de 16 bits pour dtecter les erreurs. Trois types de paquets de poigne de main sont dfinis : ACK (Ackknowledge) pour indiquer que le paquet de donnes prcdent a t correctement reu, NAK (Negative acknowledge) pour indiquer qu'il y a eu erreur de CRC) et STALL (attendre, dispositif occup).
0 1 2 3

Frame 0

Frame 1
Paquets provenant du hub racine

Frame 2

Frame 3
Paquets provenant du hub racine

SOF

SOF IN DATA ACK


Paquet de donnes provenant du priphrique

SOF

SOF OUT DATA ACK


ACK du priphrique

SYN PID Donnes CRC

SYN PID Donnes CRC

Exemples de frames USB Les paquets eux-mmes sont transmis en srie avec un codage NRZI (le signal change seulement quand la donne est un 0) l'un de deux taux : 12 Mbits/s pour les transmissions pleine vitesse, ou 1.50 Mbits/s pour les priphriques trs lents comme les souris. Pour plus d'information, visitez le site http://www.usb.org.

Chapitre 11

86

Le bus Firewire
Le bus IEEE-1394, aussi connu sous le nom de FireWire, peut relier 63 priphriques, des vitesses pouvant atteindre 400 Mbits/s. Il supporte le transport de donnes asynchrone pour les priphriques utilisant des technologies plus anciennes comme les imprimantes et les modems, et le transport isochrone pour les priphriques numriques temps rel, qui garantit la livraison des donnes dans le temps prescrit. Par exemple, pour des donnes vido de bonne qualit, on a besoin de 30 trames la seconde contenant chacune 680 par 480 pixels, et si chaque pixel ncessite 24 bits, on a besoin d'une bande passante de 224 Mbits/s, ce qui dpasse largement la capacit du bus USB. Le cble contient 6 fils : deux pour l'alimentation en puissance du priphrique (8 40 VDC), et deux paires torsades pour la transmission et la rception des donnes.

Cble IEEE 1394


Paire de signal A Alimentation Blindage Paire de signal B

Les deux extrmits dun cble FireWire.

Le Firewire utilise des Packet frames de 125 microsecondes. Chacun est dcoup en tranches de temps isochrones pour les canaux en opration. La partie d'un frame qui n'est pas utilise par des canaux numriques peut tre utilise pour le transport asynchrone. Le priphrique demande un canal isochrone avec une bande passante spcifique. Lorsque sa demande est accorde, il transmet son identification de canal suivie des donnes du paquet. Chapitre 11

87

Le rcepteur vrifie le no. d'identification du canal et n'accepte que les donnes ayant le bon numro. Les applications sont responsables de dterminer combien de canaux sont ncessaires et la bande passante ncessaire. FireWire utilise le mode NRZ avec codage Data-Strobe. 400 Mbits/s. Le strobe S ne change que si la donne D ne change pas. la rception, on regnre l'horloge originale en tenant compte de tous les changements de D et de S.
D de DS-SE S de DS-SE Horloge drive

Encodage DS Ce codage rend les signaux DS autobaud, c'est--dire que le rcepteur peut rcuprer l'horloge, quelle que soit la vitesse de transmission. L'metteur peut changer de vitesse ou mme arrter, le rcepteur s'en rendra compte.

Exercices
10.1 Un terminal monochrome possde un tube capable d'afficher 600 x 800 pixels. a. valuer la taille mmoire en octets ncessaire pour stocker une image complte d'cran, sachant qu'un pixel quivaut un bit en mmoire. b. On dsire amliorer ce terminal en offrant l'usager la possibilit d'avoir 16 chelles de gris pour chaque pixel. Quelle serait alors la quantit de mmoire ncessaire? c. Si un tel terminal est en couleur et que chacune des 3 couleurs fondamentales possde galement 16 chelles d'intensit, valuer la quantit de mmoire ncessaire

Chapitre 11

88

pour stocker une image complte d'cran et valuer la palette de couleurs obtenue (nombre de couleurs possibles). On dsire faire de l'animation avec un terminal graphique couleur connect un ordinateur hte via une liaison dterminer. Les caractristiques du terminal sont : rsolution : 300 x 400 nombre d'images par seconde : 30 balayage : entrelac palette de couleurs : 8. On dsire obtenir au moins 5 images diffrentes par seconde pour avoir une vitesse d'animation acceptable. Les images compltes sont calcules par l'ordinateur hte et envoyes au terminal.

a. Dterminer la vitesse minimale de la liaison en bits par seconde pour rpondre ces exigences. b. On s'aperoit statistiquement que les modifications entre les images ne reprsentent qu'environ un cinquantime des pixels. On adopte alors une autre stratgie, qui consiste ne transmettre que les pixels qui sont modifis d'une image l'autre, en leur associant une adresse code sur 18 bits, les informations sur les 8 couleurs associes un pixel tant codes sur les 3 bits restants. La donne complte pour chaque pixel entre l'intrieur de 3 motifs de 7 bits (18 + 3 = 21 = 7 x 3). valuer nouveau la vitesse correspondante de la liaison entre le terminal et l'ordinateur hte. 10.3 Une imprimante au laser est capable de dbiter au maximum 10 pages la minute. Chaque page comporte 60 lignes de texte et chaque ligne comporte 80 caractres. Chaque caractre est cod sur 8 bits. Dterminer la vitesse minimale en bits par seconde de la liaison connectant l'ordinateur cette imprimante capable d'assurer un fonctionnement continu de l'imprimante.

Chapitre 11

89

Chapitre 11 Tlinformatique
11.3 Voies de transmission
11.3.2 Modes de transmission et synchronisation
Transmission parallle La transmission parallle est gnralement plus rapide que la transmission srie, puisqu'avec 8 fils on envoie un octet la fois au lieu d'un seul bit. De nombreux priphriques utilisent des interface parallles utilisant le mme connecteur DB-25 que l'interface srie RS-232-C (voir transmission srie plus loint) mais avec des brochages diffrents.
1 2 3 4 5 6 7 8 9 10 11 12 13

14 15 16 17 18 19 20 21 22 23 24 25

Connecteur DB-25 Il y a 8 fils pour les donnes de sortie (DO0 DO7) et 8 fils pour les donnes d'entre (DI0 DI7). On utilise habituellement un systme de poigne de main deux fils dans chaque direction. Le signal Donne prte porte les noms OSTB ou IRDY (Output Strobe/Input Ready) selon quon est lextrmit du transmetteur ou du rcepteur, et le signal Donne reue ceux de ORDY ou ISTB (Outpur Ready/Input Strobe). Le brochage est le suivant :

Chapitre 11

90

1 2 3 4 5 6 7 8 9 10 11-13

DO7 DO6 DO5 DO4 DO3 DO2 DO1 DO0 ORDY/ISTB OSTB/IRDY GND

14 15 16 17 18 19 20 21 22 23 24-25
22 DI0 DI7 23 10 DO0 DO7 9

DI7 DI6 DI5 DI4 DI3 DI2 DI1 DI0 IRDY/OSTB ISTB/ORDY GND

10 DO0 DO7 Donne reue 9 Donne prte 22 DI0 DI7 Donne reue 23

Donne prte

Connexion parallle bidirectionnelle Le transmetteur place une donne (octet) sur les lignes DO0 DO7 et active le signal Donne prte. Ceci indique au rcepteur quune donne est prsente sur ses entres DI0 DI7. Quand le rcepteur a lu la donne, il active le signal Donne reue, ce qui indique au transmetteur quil peut envoyer une autre donne.

Transmission srie Deux modes de communication srie sont utiliss pour transmettre des caractres. La communication asynchrone et la communication synchrone. Avec la transmission asynchrone, l'intervalle de temps entre deux caractres n'est pas fixe, bien que l'intervalle de temps entre deux bits conscutifs d'un caractre soit fixe. Par exemple, un usager qui tape sur un clavier ne tape pas une vitesse uniforme, de sorte que l'intervalle de temps entre deux caractres successifs n'est pas constant. Cette variation de vitesse pose un problme : comment le rcepteur peut-il reconnatre le premier bit d'un caractre? Par exemple, un caractre consistant uniquement de zros serait compltement invisible. Ou encore, un caractre compos d'un 1 suivi de 7 zros ne pourrait pas tre distingu d'un caractre consistant de 7 zros suivis d'un 1.

Chapitre 11

91

Pour permettre au rcepteur de reconnatre le dbut d'un caractre, un bit de dpart (start bit) est transmis immdiatement avant chaque caractre. Pour une plus grande fiabilit, 1, 1,5 ou 2 bits de fin de caractre ou bits d'arrt (stop bits) sont transmis immdiatement aprs chaque caractre. Normalement la ligne de transmission est maintenue l'tat bas (1 logique ou MARK) quand on ne transmet pas de donnes, de sorte que le bit de dpart est un niveau haut (0 logique ou SPACE). Les bits d'arrt sont donc des niveaux bas pour permettre de les distinguer du bit de dpart. Un temporisateur est activ dans le rcepteur au moment de l'arrive du bit de dpart, lui permettant d'chantillonner les bits du signal aux bons moments. Un bit de parit est souvent ajout en vue de dtecter les erreurs. Cette parit peut tre choisie paire ou impaire. En parit paire, par exemple, ce bit prendra la valeur ncessaire pour que lensemble (bits du message et bit de parit) contienne un nombre pair de 1. Si une erreur de transmission se produit, un bit changera de valeur de sorte que la parit changera. Le rcepteur dtectera donc une erreur de parit et en avertira lordinateur. Exemple : transmission du caractre M (ASCII 0x4D) sur 7 bits; remarquer que le bit le moins significatif (BMS) est transmis le premier :
Bit de dpart du caractre suivant s'il suit immdiatement le prcdent BMS 1 0 1 (Mark) -12V 0V 0 (Space) +12V Bit de dpart Parit paire 2 bits d'arrt 1 1 0 0 BPS 1

Transmission srie du caractre M retenir : - Au repos, la ligne donne est au niveau 1 (Mark = -12 V). - Le bit de dpart est gnralement unique. L'horloge du rcepteur synchronise sur l'horloge de l'metteur chaque bit de dpart. - L'chantillonnage des donnes la rception s'effectue au milieu d'un bit. - Les donnes arrivent de faon asynchrone, mais la dtection est synchrone l'intrieur d'un motif. On peut donc tolrer une certaine discordance entre l'horloge de l'metteur et celle du rcepteur. - C'est le bit le moins significatif qui est transmis le premier. Les vitesses de transfert les plus courantes pour la transmission asynchrone sont 110, 300, 600, 1200, 2400, 4800, 9600, 19 200, 28 800, 38 400 et 57 600 bits par seconde. Si deux bits d'arrt sont utiliss, un caractre ASCII de 7 bits + 1 bit de dpart + 1 bit de parit + 2 bits

Chapitre 11

92

d'arrt, ncessite 11 bits. Dans ce cas particulier, 110 bauds correspondent donc 10 caractres/s.

11.4 Transmission analogique et modulation


11.4.2 Modulation damplitude, de frquence et de phase
Contrairement ce qui est crit dans le livre de Zanella et Ligier la p. 276, sur les lignes tlphoniques on obtient actuellement des vitesses de transmission atteignant 28 800 bps. On peut toutefois atteindre des vitesses plus leves (jusqu 115 400 bps) en utilisant la compression de donnes. Pour viter des diffrences de phase trop petites lorsquon augmente le nombre de bits par signal en modulation de phase, une solution consiste utiliser la modulation Quadrature Amplitude Modulation (QAM), qui combine des variations de phase et damplitude. Dans le systme UIT (Union Internationale des Tlcommunications, anciennement connu sous le nom de CCITT : Comit Consultatif International pour le Tlphone et le Tlgraphe) on obtient 9600 bps avec une vitesse de signalisation de 2400 bauds au moyen de 12 valeurs de phase et de 3 valeurs d'amplitude reprsentes la figure suivante, o le rayon indique l'amplitude :

Chapitre 11

93

90 Phase
0111 0101 0010 0011

0110

0100

0000

0001

180
1001 1000 1100 1110

1011

1010

1101

1111

270 Modulation QAM

Le modem par ligne tlphonique a probablement atteint sa vitesse limite. l'avenir, on utilisera donc de plus en plus le modem cable, capable de performances 100 fois meilleures.

Chapitre 11

94

Exercices
11.1 On transmet le caractre 'k' par un port RS-232-C rgl sur 7 bits, parit impaire et 1 bit d'arrt. Dessinez la forme de la tension en fonction du temps. 11.2 a. Calculez la dure en microsecondes d'une cellule binaire d'une liaison srie transmettant 38 400 baud. b. Le format de transmission est du type : 1 bit de dpart, 8 bits de donne, 1 bit de parit, 1 bit d'arrt. Dterminer le nombre effectif d'octets transmis par seconde si on suppose que la ligne opre de faon continue.

Chapitre 11

Chapitre 12 Systmes dexploitation


12.5 Gestion de la mmoire centrale

12.5.5 Notion de mmoire virtuelle


Exemple Nous prsentons ici quelques valeurs numriques pour permettre une meilleure comprhension de la gestion de mmoire virtuelle. Supposons quon dsire avoir une mmoire virtuelle de 256 Mo dans un ordinateur dot de 32 Mo de mmoire centrale (RAM) et ayant un bus dadresses de 32 bits. Supposons que cette mmoire est dcoupe en pages de 4 Ko (la taille des pages est souvent choisie comme la taille de lunit dallocation du disque dur pour permettre une meilleure performance). Il faudra videmment que le disque dur dispose de 256 Mo despace libre. Ladresse virtuelle de 32 bits (mise par le processeur) sera donc dcoupe en deux champs : un champ de 12 bits correspondant ladresse (ou offset) lintrieur dune page de 4 Ko (212 = 4 K) et un champ de 20 bits correspondant au numro de page virtuelle.
31 20 No de page virtuelle 12 11 12 Offset l'intrieur de la page 0

Dcoupage d'une adresse de 32 bits Le processus de mapping (ralis par le Memory Management Unit ou MMU) consister fournir pour chaque numro de page virtuelle le numro de page physique correspondant afin de savoir dans quelle page de la mmoire centrale une page virtuelle donne a t place :

96

Adresse virtuelle ou logique Numro de page virtuelle 31 12 11 20

0 12

Organe de gestion de page 12 11 0000 <20 Numro de page physique Adresse physique Mapping d'une adresse logique en adresse physique Dans notre exemple, le numro de page virtuelle va de 0x00000 0x0FFFF (il y a 65536 pages de 4 Ko dans 256 Mo). Le numro de page physique va de 0x00000 0x01FFF (il y a 8192 pages de 4 Ko dans 32 Mo). La traduction de numro de page virtuelle en numro de page physique seffectue laide dune table. Le numro de page virtuelle est utilis comme index dans cette table, et le contenu de chaque range de la table est le numro de page physique correspondant. Un bit de validit V indique si la page en question est effectivement en mmoire physique. En effet, il y a beaucoup plus de pages virtuelles possibles que de pages physiques, elles ne peuvent donc pas se trouver toutes en mme temps dans la mmoire physique. 12 0

Chapitre 12

97

Table des pages


00000 00001 00002 00003 00004 00005 00006 00007 00008 V 00004 0 00007 0 00003 0 000FF 0 00008 1 00050 0 00009 0 00100 0 00002 1 00000 00001 00002 00003 00004 00005 00006 00007 00008

Mmoire centrale ou RAM (physique) de 32 Mo


4 Ko 00000 00001 00002 00003 00004 00005 00006 00007 00008

Disque dur 256 Mo


4 Ko

01FFF

8 K pages 4 Ko

0FFFF

0FFFF

64 K entres de 20 bits

64 K pages de 4 Ko

Dans lexemple ci-dessus, on voit que la page virtuelle no 4 a t place en page 8 de la mmoire physique, tandis que la page virtuelle no 8 a t place en page 2 de la mmoire physique. Donc le processeur, sil dsire accder la page 4, doit dabord effectuer une lecture la range 4 de la table des pages pour connatre le numro de la page physique dans laquelle linformation quil dsire se trouve. Il peut ensuite accder aux donnes en question en se rendant la page 8 de la mmoire physique.

Chapitre 12

98

Par contre, si le processeur avait besoin daccder la page virtuelle no 2, il saperevrait que son bit V est 0. Ceci veut dire que cette page nest pas en mmoire physique. Il faudrait alors aller lire la page 2 du disque, la placer dans une page de la mmoire physique, puis inscrire dans la range 2 de la table des pages quelle page physique on la insre, puis mettre 1 le bit V de la range 2. Comme pour les mmoires caches, il existe diffrents algorithmes pour dterminer lendroit de la mmoire physique o sera place une nouvelle page virtuelle. Il peut sagir dun remplacement alatoire, ou de lalgorithme LRU (Least Recently Used), qui choisit la page quon na pas utilise depuis le plus longtemps. Dans ce cas, il faut ajouter dans la table des pages des bits supplmentaires pour indiquer lge des pages. Est-ce dire que la mmoire virtuelle est deux fois plus lente que la mmoire physique, puisquil faut effectuer deux lectures pour accder linformation ? En principe oui, mais en pratique, le MMU contient une mmoire cache dans laquelle il garde en mmoire les derniers numros de page physique accds. Dans le cas particulier de la mmoire virtuelle, cette mmoire cache s'appelle TLB (Translation Lookahead Buffer). Trois cas peuvent se prsenter : Si le numro de page physique est dans le cache, il ny a aucune perte de temps. Sil y a chec de cache, on doit aller lire dans la table des pages et placer linformation dans le cache. Il y a alors perte dun cycle mmoire. Sil y a chec dans la table des pages, il y a perte de temps beaucoup plus considrable, puisquil faut alors aller lire une page de 4 Ko sur le disque, la placer en mmoire, puis mettre jour la table des pages et le cache du MMU. Notez finalement que les ranges de la table des pages peuvent contenir des informations supplmentaires, telles que ladresse de la page sur le disque en numro de cylindre et de secteur. De plus, un bit supplmentaire indique si la page physique a t modifie en cours dutilisation. Si cest le cas, il faudra la copier sur le disque avant de la remplacer.

Chapitre 12

99

12.7 Gestion des fichiers


titre d'exemple nous tudierons un systme de gestion de fichiers maintenant dpass mais encore utilis, celui des disques souples PC-DOS ou MS-DOS (Microsoft Corp.). le contenu des premires pistes dun disque de 31/2 quadruple densit (1,44 M) :
Piste 0 Secteur 1 B O O T 2 FAT1 3 FAT1 4 FAT1 5 FAT1 6 FAT1 7 FAT1 8 FAT1 9 FAT1 10 FAT1 11 FAT2 12 FAT2 13 FAT2 14 FAT2 15 FAT2 16 FAT2 17 FAT2 18 FAT2 1 FAT2 DIR DIR DIR DIR DIR DIR DIR DIR DIR DIR DIR DIR DIR DIR u.a. 2 u.a. 3 u.a. 4 2 u.a. 5 6 7 8 . . . .

D b u tdes d o n n e de s l'utilisateur

Organisation dune disquette MS-DOS Le premier secteur du disque est le secteur d'amorce ou de dmarrage (Boot block). Le rpertoire racine (DIRectory) est contenu sur 14 secteurs de 512 octets. Il contient un enregistrement de 32 octets pour chaque entre. Le rpertoire racine peut donc contenir 14 512 32 = 224 entres. Le disque peut toutefois contenir beaucoup plus que 224 fichiers si on fait appel des sous-rpertoires (qui sont eux-mmes des fichiers). La longueur maximale thorique d'un fichier est de 4 gigaoctets puisque le champ taille du fichier de lentre de rpertoire est de 4 octets ou 32 bits, mais elle est en pratique limite par la capacit physique du disque. L'unit d'allocation est un cluster ou grappe de 1 secteur.

Chapitre 12

100

Voici le contenu de chaque entre du rpertoire :


0 7 9 15

Statut 16

Nm o (en ASCII)

Extension Attribut 21 23 25 27

Rserv

31

Rserv

Heure

Date No. de la 1e u.a.

Taille du fichier

Entre de rpertoire MS-DOS L'octet status contient normalement le premier caractre dun nom de fichier. Lorsquune entre de rpertoire nest pas utilise, son octet status contient $00. Lorsquun fichier est effac, le DOS crit la valeur $E5 dans loctet status de son entre de rpertoire. L'octet attribut contient l'information sur les attributs de stockage du fichier : 1 = Lecture seulement 2 = Fichier cach 4 = Fichier systme 8 = Nom du volume 16 = Sous-rpertoire 32 = Archive Le disque contient aussi une table d'accs de fichier (File Access Table) qui contient une entre de 12 bits (1,5 octet) pour chaque u.a. allouable du disque. Cette table est contenue sur les secteurs FAT1 de la figure ci-dessus. Une copie de scurit est garde dans les secteurs FAT2 et permet de rcuprer les fichiers si jamais la FAT1 est endommage. Ladresse disque dune donne est son numro du.a.. La disquette considre contient 160 pistes (80 par ct) de 18 secteurs de 512 octets, donc un total de 2880 secteurs pour une capacit totale de 1,44 Mo (2880 0,5 Ko = 1440 Ko = 1,44 Mo). Le nombre du.a. allouables est en ralit de 2847, car les secteurs BOOT, FAT1, FAT2 et DIR ne sont pas allouables. Il faut donc, pour allouer ces u.a., 2847 entres de 12 bits dans chaque FAT. Comme 12 bits = 1,5 octets, il faut 2847 1,5 octets = 4270,5 octets = 8,32 secteurs de 512 octets. Sur les disques durs MS-DOS, les entres de FAT passent 16 bits avec FAT16 et 32 bits avec FAT32. En effet, avec 12 bits on ne peut en tout et partout reprsenter que 4096 numros. du.a., pour une capacit totale de 4096 512 = 2 Mo. On peut augmenter cette Chapitre 12

101

capacit en augmentant la taille des u.a., mais on ne peut ainsi gure dpasser 16 Mo avec des u.a. de 8 secteurs ou 4096 octets. Note : Dans les champs numriques du rpertoire, il faut prendre garde au fait qu'avec les processeurs Intel, un nombre en prcision multiple est crit avec l'octet le plus significatif l'adresse haute. Ainsi, le nombre $00001234 s'crira $34 12 00 00 en mmoire. Cette remarque s'applique galement aux champs date et heure :
L'heure est code sur 16 bits comme suit : bits 0-4 : secondes en incrments de 2 sec, 0 29 bits 5-A : minutes, 0 59 bits B-F : heure, 0 23. La date est code sur 16 bits comme suit : bits 0-4 : jour, 1 31 bits 5-8 : mois, 1 12 bits 9-F : anne - 1980, 0 119.

Voici le dbut de la table d'allocation de fichier (FAT12) :


0 1 FF FF No.de l'u.a. suivante du fichier ou: 000=libre FF8-FFF=dernire u.a. d'un fichier FF7=non lisible 2 3 U.a. No. 4 5 6 7 8 9

Type de disque

FAT Codes du champs type de disquette 3,5


Code F0 F8* F9 FA FB FC FE FF *Disque dur Cts 2 2 1 2 Pistes/ct 80 80 80 80 Secteurs/piste 18 9 8 9 Cts 2 1 2 1 1 2

5,25
Pistes/ct 80 80 80 40 40 40 Secteurs/piste 15 8 8 9 8 8

Chapitre 12

102

Lu.a. 2 correspond la premire u.a. allouable du disque, c.--d. le secteur 16 de la piste 1. En effet, tel que mentionn plus haut, les premiers secteurs du disque ne sont pas des u.a. allouables : secteur damorce, FAT et rpertoire. Ils sont donc inaccessibles l'usager. Le systme MS-DOS possde des inconvnients : dans le cas d'un disque dur, la FAT devient considrable. Pour une performance rapide, la FAT est normalement garde en mmoire. Pour un disque dur de 64 Mo avec 2 secteurs de 512 octets par u.a., la FAT aurait une taille de 128 Ko (64 K entres de 16 bits). Si, dautre part, la FAT n'est pas garde en mmoire, les oprations peuvent devenir trs lentes. Par exemple, pour se dplacer au 32 000e octet d'un fichier, on peut avoir besoin de 1 33 lectures dans la FAT du disque pour suivre la chane, selon la fragmentation du fichier. Nous voyons ci-dessous comment le systme Unix vite cette difficult. Exemple 2 : organisation d'un disque Unix Unix a t dvelopp par Bell Laboratories partir de 1970 par Ken Thompson et Dennis Ritchie. Ce systme a t mis successivement sur PDP-7, 9 et 11, puis sur VAX, et enfin sur des machines base de microprocesseur MC68000. Aujourdhui, il fonctionne principalement sur des stations de travail avec des microprocesseurs RISC. En l979, on en est rendu la version 7, la mieux connue. En 1982 apparat le SYSTEM III, puis en 1983 le SYSTEM V suivant la politique de distribution commerciale de AT&T. Depuis 1991, le phnomne Linux a fait son apparition. Il s'agit d'un UNIX de domaine public pour micro-ordinateur initialement crit par un tudiant en informatique finlandais, Linus Torvalds. Il a t port sur plusieurs plates-formes, notamment : Intel 80x86, PowerPC, Alpha, Amiga, etc. Sa conception est moderne et c'est elle que nous examinerons ici. Fichiers sous Unix Sous Unix, un fichier est une squence linaire de mots de 8 bits, d'une taille de 1 octet plusieurs dizaines de Go dpendant du systme de fichiers. L'usager visualise le fichier comme une squence linaire et peut atteindre n'importe quel octet du fichier soit de faon absolue, soit en spcifiant une position relative par rapport la position courante, ou encore par rapport la fin du fichier. partir d'une position quelconque, on peut lire un nombre quelconque d'octets. Unit d'allocation : bloc de 512 octets (taille fixe).

Chapitre 12

103

1024 octets pour le SYSTEM V et le systme 4.1 de Berkeley. 4096 octets pour la version 4.2, 1 Ko 4 Ko pour Linux. chaque fichier (y compris les rpertoires qui sont galement des fichiers et les priphriques, que Unix considre comme des fichiers spciaux) on associe un inode (indexnode) dans lequel on peut trouver les informations suivantes : - le propritaire (user ID, group ID) - les protections (code de 16 bits) - les dates (cration, dernire modification) - les liens vers d'autres inodes - le type de fichier (donnes, rpertoire, priphrique) - les adresses disques des blocs de donnes (13 15) - la longueur du fichier en octets. La taille d'un inode dans Linux est de 128 octets :
0 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 Type et permissions Utilisateur (UID) Heure et date d'accs Heure et date de modification Groupe (GID) Compteur de liens Attributs du fichier 1e bloc 3e bloc 5e bloc 7e bloc 9e bloc 11e bloc Bloc de 1e indirection Bloc de 3e indirection ACL du fichier Adresse de fragment Rserv
ACL = Access Control List, pas encore implment

Taille du fichier Heure et date de cration Heure et date d'effacement Nb. de blocs Rserv 2e bloc 4e bloc 6e bloc 8e bloc 10e bloc 12e bloc Bloc de 2e indirection Version du fichier ACL du rpertoire Rserv

Inode du systme de fichier Ext2 Dans le systme de fichiers Ext2 adopt par la plupart des systmes Linux, le disque est divis en groupes de blocs. Chaque groupe de blocs contient un superbloc, des descripteurs

Chapitre 12

104

de groupe, un bitmap de blocs, un bitmap d'inodes, une table d'inodes et des blocs de donnes. Les bitmaps occupent chacun 1 bloc ou u.a. Ceci limite donc la taille des groupes 8 192 blocs pour des blocs de 1 Ko. ou 32 768 blocs pour des blocs de 4 Ko. Les inodes sont rpartis galement parmi les groupes de blocs. Le nombre d'inodes par groupe ne peut non plus pas dpasser les nombres ci-dessus.
Bloc 0

Bloc Groupe de blocs 0 Groupe de blocs 1 damorce Structure d'un disque Linux avec Ext2

Groupe de blocs n

Chaque groupe de blocs contient une copie du superbloc, des inodes et des blocs de donnes : Superbloc Descripteurs Bitmap Bitmap Table Blocs de donnes de groupe de blocs d'inodes d'inodes Structure d'un groupe de blocs avec Ext2

Le superbloc contient le nombre d'inodes et le nombre de blocs dans le systme de fichiers. Il contient aussi de l'information sur le nombre d'inodes et de blocs par groupe de blocs. Le descripteur de groupe est une structure de 32 octets donnant le nombre de blocs dans le bitmap d'inodes, dans le bitmap de blocs et dans la table d'inodes, le nombre d'inodes libres, le nombre de blocs libres et le nombre de rpertoires. Cette dernire information est utile au systme qui tente rpartir les rpertoires parmi les diffrents groupes de blocs. Il allouera donc un nouveau rpertoire dans le groupe qui en a le moins. Cette organisation permet aux inodes d'tre voisines des blocs auxquels elles font rfrence, et aux inodes d'tre voisins de leur inode de rpertoire, ce qui permet un accs plus rapide. Dans chaque inode, on trouve 15 adresses disque en termes de no de blocs. Les 12 premires adresses d'un inode permettent d'atteindre un espace donnes de : 12 1024 octets = 12 288 octets. La 11e adresse disque pointe vers un autre bloc de 1024 octets qui contient 256 adresses disque (4 octets par adresse), soit : 256 1024 octets = 262144 octets.

Chapitre 12

105

La 12e adresse disque pointe vers 256 blocs indirects (indirection d'ordre 2) qui pointent leur tour chacun vers 256 adresses disques : 256 256 1024 octets = 67108 864 octets. La 13e adresse disque est une indirection d'ordre 3, ce qui permet aux fichiers Linux d'atteindre des tailles avoisinant 256 256 256 1024 octets = 17 179 869 184 octets. La taille maximale d'un tel fichier sera donc : 17 179 869 184 + 67 108 864 + 262 144 + 12 288 16 Go. Cette implantation privilgie, du point de vue accs, les fichiers de petite taille (12 Ko). l'ouverture, le premier descripteur du fichier (inode) est copi en mmoire. Lorsqu'on franchit le cap de 12 288 octets, le systme d'exploitation copie le premier bloc indirect, et ainsi de suite. Pour savoir o se trouve l'octet n d'un fichier, si n < 12 288, il se trouve dans le bloc direct n / 1024 l'offset n mod 1024. Si n >12 288 et n 262 144, il se trouve dans le bloc donn par la table de premire indirection (n - 12 288) / 1024 l'offset : (n - 12 288) mod 1024, etc. Ext2 tente de minimiser la fragmentation des fichiers lors de l'allocation des blocs. Il cherche des blocs libres autour d'un bloc cible. Si ce dernier est libre, il est allou. Sinon, on cherche un bloc libre dans les 32 entourant le bloc cible. Si on en trouve un, il est allou. Sinon, on cherche un bloc libre qui soit au moins dans le mme groupe de blocs que le bloc cible. Il y a plusieurs heuristiques pour la dfinition du bloc cible. L'un d'entre eux est de prendre le premier bloc libre dans le groupe de blocs o se trouve l'inode du fichier. Lorsqu'un bloc libre est trouv, on rserve les 8 blocs suivants, s'ils sont libres. Quand le fichier sera ferm, les blocs rservs restants seront librs.

Structure du rpertoire sous Unix Le rpertoire sous Unix est organis de faon hirarchique pour faciliter les oprations de maintenance :

Chapitre 12

106

SOPHIE

BIN

DEV

JACQUES

PAS SRC JEUX1 JEUX2 OBJ LDA

BAS

ASM PAS

SRC BAS APL

IMPOT

Rpertoires Unix On spcifie par exemple le fichier JEUX1 en crivant : /SOPHIE/PAS/SRC/JEUX1 Pour accder au fichier JEUX1, le systme d'exploitation cherche SOPHIE dans le rpertoire RACINE pour localiser l'inode correspondant SOPHIE. Il lit ensuite le fichier relatif SOPHIE qui est dans ce cas un fichier rpertoire. Ce fichier rpertoire aiguille la recherche vers un autre rpertoire, et ainsi de suite, jusqu' ce qu'on atteigne les donnes finales. chaque phase, il y a branchement vers la table des inodes jusqu' ce qu'on aboutisse au dernier inode.

Contenu d'un lment de rpertoire Les entres d'un rpertoire Linux sont de longueur variable parce que les noms de fichier peuvent aller de 1 caractre 255 caractres. Il s'agit en fait d'une liste chane, puisque le champ longueur de l'entre (rec_len), toujours arrondi vers le haut un multiple de 4, donne en fait la position de l'entre suivante.
Octets 4 2 2 1 255 Nom du fichier

No. d'inode

longueur longueur de l'entre du nom

Entre de rpertoire Linux Voici le contenu d'un rpertoire dont l'inode (puisqu'un rpertoire est galement un fichier) porterait le #3 et qui serait situ directement sous le rpertoire racine (Root Directory, inode= 2) :

Chapitre 12

107

0 3 12 1 .

12 2 12 2 ..

24 11 20 9

44 Fichier 1 2017

12

56 Toto

inode 3 2 11 2017

rec_len name_len 12 1 12 2 20 12 9 4

Entre Fichier 1 Toto

Pointeur vers lui-mme Pointeur vers son parent

Rpertoire Linux Chaque rpertoire ne peut avoir qu'un parent. Le rpertoire racine n'a pas de parent et son pointeur parent contient lui-mme, c.--d. le #2. Lorsqu'un fichier est effac, le numro d'inode de l'entre de rpertoire est mis 0 et l'entre est limine de la liste chane en augmentant le champ rec_len de l'entre prcdente pour qu'elle pointe l'entre suivante.

Chapitre 12

108

Exercices
12.1 Une mmoire virtuelle a une capacit de 2 46 octets organiss en pages de 512 octets. La mmoire physique qui supporte cette mmoire virtuelle a une capacit de 1 mgaoctets. a) Quelle est la taille de la mmoire associative qui sert de dictionnaire traducteur des pages en octets? b) Voici quelques entres dans ce dictionnaire aprs un certain temps : 00001018A045 02004050F267 0FFF034CC012 199939AA0448 FD7E400048D7 1836A091238F Si ladresse physique dun oprande est 89045 (en hexadcimal), quelle est ladresse virtuelle de ce mme oprande? 12.2 Considrons une mmoire virtuelle de 512 Mo, une mmoire physique de 32 Mo et des pages de 8 Ko : a. Quelle serait la taille de la table des pages ? b. Quel est le numro de page virtuelle correspondant l'adresse virtuelle 0x00300B2A? 12.3 Un disque dur est utilis avec MS-DOS 3.3. La table d'allocation de fichiers (FAT) contient une entre de 16 bits pour chaque u.a. et est de la forme suivante :
0 1 2 3

FFF0

FFFF

0003

0004

etc.

Chaque u.a. contient 1 secteur de 512 octets. a. Combien de clusters la FAT occupera-t-elle si on dsire avoir 20 Mo allouables ? b. Quel serait la capacit maximale allouable avec une FAT de ce type ?

Chapitre 12

109

12.4 Le rpertoire d'un disque souple MS-DOS 1.0 contient l'entre suivante : 54 50 33 20 20 20 20 20 54 58 54 01 00 00 00 00 00 00 00 00 00 00 C7 B4 78 13 05 00 AB 01 00 00 Donnez toutes les informations que vous pouvez en tirer propos du fichier correspondant. 12.5 Un disque souple double face, double densit comporte 9 secteurs par piste et chacun contient 512 octets. Le nombre de pistes par face s'lve 42. La convention de numrotation physique est la suivante (les majuscules dsignent les valeurs maximum des variables) : s :1 9 (S : 9) p : 0 41 (P : 41) f:01 (F : 1) B : 512 octets/secteur. a. Dterminez la capacit totale C du disque en fonction des valeurs maximum. Application numrique. b. n dsigne le secteur logique et varie entre 0 et N. Donnez la valeur de N. c. Exprimez les variables p, f et s en fonction de n. On peut employer les fonctions DIV ou MOD qui fournissent le quotient et le reste de la division entire. Application numrique pour n = 319. On rserve : - les secteurs s : 0 et 1 pour placer les identifications du disque et le programme de dmarrage du systme d'exploitation disque. - les secteurs s : 2, 3 et 4 pour placer la Table des allocations du disque. - les secteurs s : 5, 6 et 7 pour conserver une copie de la Table des allocations. - les secteurs s : 8 14 inclusivement pour ranger les entres de rpertoire. Chaque entre de rpertoire occupe 32 octets. Les secteurs partir de 15 jusqu' la fin du disque servent stocker les donnes de l'usager. d. Dterminez le nombre maximum de fichiers qu'on peut crer sous le rpertoire principal. e. Sachant qu'on se sert de 2 octets dans la Table des allocations pour reprer un secteur de donnes sur disque (les secteurs de gestion de n : 0 n : 14 ne sont pas rpertoris dans la Table des allocations et le mcanisme exact de reprage n'est pas prcis) la taille de la Table des allocations est-elle suffisante pour grer le disque en entier?

Chapitre 12

110

f. L'unit d'allocation est gale un secteur. Quelle est la perte moyenne d'espace sur le disque? 12.6 On dsire confectionner un systme d'exploitation possdant une organisation disque similaire celle de Unix. Les donnes du problme sont : Capacit formate du disque : 320 Mo Taille d'un secteur : 1024 octets Taille d'une unit d'allocation : 2048 octets Taille d'une entre de rpertoire : 32 octets Taille d'un nud-i : 128 octets Taille d'une adresse disque : 4 octets Nombre d'adresses disque accs direct sans indirection : 20 Nombre d'indirections : 2 (au lieu de 3 dans Unix) On rappelle que l'unit d'allocation dans la zone des donnes est de 2 048 octets et non le secteur physique, et que les adresses disque se rfrent aux UA et non aux secteurs. Chaque fichier possde une entre de rpertoire, un nud-i et un ensemble d'UA de donnes propres et de donnes rpertoire. a. Calculez la taille maximale d'un fichier sans indirection. b. Calculez la taille maximale d'un fichier avec l'indirection 1. c. Calculez la taille maximale d'un fichier avec l'indirection 2. d. Calculez la position du 8 millionime octet. Le rsultat doit tre donn sous la forme : Indirection : 0, 1 ou 2 Numro de la ramification au niveau 1 : Numro de la ramification au niveau 2 : Offset de l'octet cherch dans la dernire UA :

Chapitre 12

2. Appendices

112

Appendices

113

1. Le code ASCII
DEC 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 NULL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US HEX DEC 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 SP ! # $ % & ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? HEX DEC 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ HEX DEC 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 HEX ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ DEL 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F

Appendices

114

2. Interprtation des codes de contrle ASCII

No. 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F

Symb. NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US

Nom Null Start of heading Start of text End of text End of transmission Enquiry Acknowledge Bell Backspace Horizontal tab Line feed Vertical tab Form feed Carriage return Shift out Shift in Data link escape Device control 1 Device control 2 Device control 3 Device control 4 Negative Acknowledge Synchronous idle End of transmission block Cancel End of medium Substitute Escape File separator Group separator Record separator Unit separator

Clavier CTRL @ CTRL A CTRL B CTRL C CTRL D CTRL E CTRL F CTRL G CTRL H TAB ou CTRL I LINEFEED ou CTRL L VERTICAL TAB ou CTRL K FORMFEED ou CTRL L RETURN ou CTRL M CTRL N CTRL O CTRL P CTRL Q CTRL R CTRL S CTRL T CTRL U CTRL V CTRL W CTRL X CTRL Y CTRL Z ESCAPE ou CTRL [ CTRL \ CTRL ] HOME ou CTRL ^ CTRL _

Appendices

115

3. Le code EBCDIC

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F

NULL SOH STX ETX PF HT LC DEL

SMM VT FF CR SO SI DLE DC1 DC2 DC3 RES NL BS IDL CAN EM CC CU1 FLS GS RDS US

20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F

DS SOS FS BYP LF EOB PRE

SM CU2 ENQ ACK BEL

SYN PN RS UC EOT

CU3 DCA NAK SUB

40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F

SP

< ( + ] &

! $ * ) ;

60 61 62 63 64 64 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F

-/

, % _ > ?

: # @ ' = *

80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F

a b c d e f g h i {

j k l m n o p q r }

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF

s t u v w x y z

C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF

+ZERO A B C D E F G H I

ZERO J K L M N O P Q R

E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF

S T U V W X Y Z

0 1 2 3 4 5 6 7 8 9

Appendices

116

4. Conversions l'aide de tables Il est possible d'effectuer trs rapidement les conversions binaire-dcimal et dcimal-binaire l'aide des tables suivantes : 4.1 Nombres entiers 1 2 3 4 5 6 7 8 9 A B C D E F 10 20 30 40 50 60 70 80 90 A0 B0 C0 D0 E0 F0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 1 00 2 00 3 00 4 00 5 00 6 00 7 00 8 00 9 00 A 00 B 00 C 00 D 00 E 00 F 00 10 00 20 00 30 00 40 00 50 00 60 00 70 00 80 00 90 00 A0 00 B0 00 C0 00 D0 00 E0 00 F0 00 256 512 768 1 024 1 280 1 536 1 792 2 048 2 304 2 560 2 816 3 072 3 328 3 584 3 840 4 096 8 192 12 288 16 384 20 480 24 576 28 672 32 768 36 864 40 960 45 056 49 152 53 248 57 344 61 440 1 00 00 2 00 00 3 00 00 4 00 00 5 00 00 6 00 00 7 00 00 8 00 00 9 00 00 A 00 00 B 00 00 C 00 00 D 00 00 E 00 00 F 00 00 10 00 00 20 00 00 30 00 00 40 00 00 50 00 00 60 00 00 70 00 00 80 00 00 90 00 00 A0 00 00 B0 00 00 C0 00 00 D0 00 00 E0 00 00 F0 00 00 65 536 131 072 196 608 262 144 327 680 393 216 458 752 524 288 589 824 655 360 720 896 786 432 851 968 917 504 983 040 1 048 576 2 097 152 3 145 728 4 194 304 5 242 880 6 291 456 7 340 032 8 388 608 9 437 184 10 485 760 11 534 336 12 582 912 13 631 488 14 680 064 15 728 640 1 00 00 00 2 00 00 00 3 00 00 00 4 00 00 00 5 00 00 00 6 00 00 00 7 00 00 00 8 00 00 00 9 00 00 00 A 00 00 00 B 00 00 00 C 00 00 00 D 00 00 00 E 00 00 00 F 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 A0 00 00 00 B0 00 00 00 C0 00 00 00 D0 00 00 00 E0 00 00 00 F0 00 00 00 16 777 216 33 554 432 50 331 648 67 108 864 83 886 080 100 663 296 117 440 512 134 217 728 150 994 944 167 772 160 184 549 376 201 326 592 218 103 808 234 881 024 251 658 240 268 435 456 536 870 912 805 306 368 1 073 741 824 1 342 177 280 1 610 612 736 1 879 048 192 2 147 483 648 2 415 919 104 2 684 354 560 2 952 790 016 3 221 215 472 3 489 660 928 3 758 096 384 4 026 531 840

Appendices

117

4.1.1 Conversion binaire-dcimal Pour effectuer la conversion en dcimal (BCD) d'un nombre binaire (hexadcimal), il suffit de chercher la reprsentation hexadcimale de chaque digit dans la colonne de gauche de la table et d'additionner les valeurs dcimales correspondantes de la colonne de droite. Exemple : B87A = 0x B000 = 45 056 + 0x 800 = 2 048 + 0x 70 = 112 + 0x A = 10
_______ ________

0x B87A

47 226

Cette mthode est trs rapide, puisqu'elle ne ncessite que 3 additions BCD pour convertir 16 bits et 7 pour convertir 32 bits. 4.1.2 Conversion dcimal-binaire Pour la conversion dcimal-binaire, on cherche dans la colonne de droite de la table le plus grand nombre qui soit infrieur au nombre convertir. On soustrait ce nombre du nombre convertir et on ajoute le nombre hexadcimal correspondant de la colonne de gauche. On recommence avec le reste, jusqu' obtention d'un reste nul. Exemple : 1 000 : 1 000 - 768 = 232 232 - 224 = 8 8-8= 0 : + 0x 300 : + 0x E0 + 0x 8
_______

0x 3E8

Appendices

118

4.2 Conversion de nombres fractionnaires .F .E .D .C .B .A .9 .8 .7 .6 .5 .4 ,3 .2 .1 .0F .0E .0D .0C .0B .0A .09 .08 .07 .06 .05 .04 .03 .02 .01 .9375 .8750 .8125 .7500 .6875 .6250 .5625 .5000 .4375 .3750 .3125 .2500 .1875 .1250 .0625 .0585 .0546 .0625 .0468 7500 .0429 6875 .0390 6250 .0351 5625 .0312 5000 .0273 4375 .0234 3750 .0195 3125 .0156 2500 .0117 1875 .0078 1250 .0039 0625 .00F .00E ,00D .00C .00B .00A .009 .008 .007 .006 .005 .004 .003 .002 .001 .000F .000E .000D .000C .000B .000A .0009 .0008 .0007 .0006 .0005 .0004 .0003 .0002 .0001 .0036 6210 9375 .0034 1796 8750 .0031 7382 8125 .0029 2968 7500 .0026 8554 6875 .0024 4149 6250 .0021 9736 5625 .0019 5312 5000 .0017 0898 4375 .0014 6484 3750 .0012 2070 3125 .0009 7656 2500 .0007 3242 1875 .0004 8828 1250 .0002 4414 0625 .0002 2888 1836 .0002 1362 3047 .0001 9836 4258 .0001 8310 5469 .0001 6784 6680 .0001 5258 7891 .0001 3732 9102 .0001 2207 0312 5 .0001 0681 1523 4 .0000 9155 2734 4 .0000 7629 3945 3 .0000 6103 5156 2 .0000 4577 6367 2 .0000 3051 7578 1 .0000 1525 8789 1 .0000F .0000E .0000D .0000C .0000B .0000A .00009 .00008 .00007 .00006 .00005 .00004 .00003 .00002 .00001 .00000F .00000E .00000D .00000C .00000B .00000A .000009 .000008 .000007 .000006 .000005 .000004 .000003 .000002 .000001 .0000 1430 5114 7 .0000 1335 1440 4 .0000 1239 7766 1 .0000 1144 4091 8 .0000 1049 9417 5 .0000 0953 6743 16 .0000 0858 3068 85 .0000 0762 9394 53 .0000 0667 5720 21 .0000 0572 2045 90 .0000 0476 8371 58 .0000 0381 4697 27 .0000 0286 1022 95 .0000 0190 7348 63 .0000 0095 3674 316 .0000 0089 4069 672 .0000 0083 4465 027 .0000 0077 4860 382 .0000 0071 5255 737 .0000 0065 5651 093 .0000 0059 6046 448 .0000 0053 6441 803 .0000 0047 6897 158 .0000 0041 7232 513 .0000 0035 7627 869 .0000 0029 8023 224 .0000 0023 8418 579 .0000 0017 8813 934 .0000 0011 9209 290 .0000 0005 9604 6447

On utilise cette table comme celle des nombres entiers : Conversion binaire-dcimal : exemple : 0,6816 = 0,6 = + 0,08 =

0,3750 0,031250
_________

Appendices

119

0,40625010 Conversion dcimal-binaire : exemple : 0,40625 : 0,40625 - 0,3750 = 0,03125 0,03125 - 0,03125 = 0

0,6 + 0,08
______

0,6816

Appendices

120

5. Table de multiplication hexadcimale

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 2 3 4 0 0 0 0 1 2 3 4 2 4 6 8 3 6 9 C 4 8 C 10 5 A F 14 6 C 12 18 7 E 15 1C 8 10 18 20 9 12 1B 24 A 14 1E 28 B 16 21 2C C 18 24 30 D 1A 27 34 E 1C 2A 38 F 1E 2D 3C

5 0 5 A F 14 18 1E 23 28 2D 32 37 3C 41 46 4B

6 0 6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A

7 0 7 E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69

8 0 8 10 18 20 28 30 38 40 48 50 58 60 68 70 78

9 0 9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87

A 0 A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96

B 0 B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5

C 0 C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4

D 0 D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3

E 0 E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2

F 0 F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1

0 1 2 3 4 5 6 7 8 9 A B C D E F

Appendices

3. Solution des exercices

122

Solution des exercices

123

Chapitre 3 3.1 COPY A : B : 43 4F 50 59 20 41 3A 20 42 3A 0D 3.2 Convertir 1100101100111010 en octal et en hexadcimal octal : 1454728 hexadcimal : CB3A16 3.3 Non 3.4 N = 1 2 + 1 2 + 0 2 + 0 2 + 1 2 + 0 2 +1 2 + 1 2 + 0 2 + 0 2
5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6

+12 +12 +12 +02+12 +02 = 32 768 + 16 384+ 0 + 0 + 2 048+ 0 + 512 + 256 + 0 + 0 + 32 + 16 + 8 + 0 + 2 + 0 = 52 026 3.5 1234 = 1 42 + 2 41 + 3 40 = 27 5710 : 57/4 = 14 reste 1 14/4 = 3 reste 2 3/4 = 0 reste 3

5710 = 3214

3.6 n 21 = n 16 + n 4 + n B7F16 2110 = 1011 0111 11112 2110 = 1011 0111 1111 0000 + 10 1101 1111 1100 + 1011 0111 1111 = 1111 0001 0110 10112 = F16B16. 3.7 Ai - Bi - Ci-1 = Di avec emprunt Ci : Ai 0 0 0 0 1 1 1 1 Bi 0 0 1 1 0 0 1 1 Ci-1 D Ci 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 0 0 0 1

Solution des exercices

124

3.8 a. 0 255 b. -128 + 127 3.9


10101 110 00000 10101 10101 1111110

3.10 100101 1101 100101 1101 1 101 1011 0 quotient = 102, reste = 10112 3.11 a. 0,1011012 = 1 2-1 + 0 2-2 + 1 2-3 + 1 2-4 + 0 2-5 + 1 2-6 = 0.5 + 0,125 + 0,0625 + 0,015625 = 0,703125 ou encore = 1011012 2-6 = 45 0,015625 = 0,703125 b. 0,48437510 =
0, 484375 0, 96875 1, 9375 1, 875 1, 75 1, 5 1, 0 0,0 2 2 2 2 2 2 2

= 0,01111100000002 3.12 a. 5B7,A34F16 = 010110110111.10100011010011112 = 1,01101101111010001101001111 210 signe = 0, exposant + 127 = 137 = 10001001, mantisse normalise = 1.01101101111010001101001111 do : 0 10001001 01101101111010001101001111 = 44B6F469IEEE b. 7A5F43B6IEEE = 0 11110100 10111110100001110110110 signe = positif, exposant = 244 - 127 = 117 mantisse = 1,101111101000011101101102 = 1,BE876C16;

Solution des exercices

125

on effectue la conversion hexadcimal dcimal par la mthode de son choix et on trouve : 1,BE876C16 = 1,74425387510 Le nombre est donc 1,74425387510 2117 = 2,8981389 10+35. c. Lerreur se produit sur la mantisse; cette dernire est comprise entre 1,0 et 2,0. Lerreur de troncature provoque une erreur sur le dernier bit ; sa valeur est 2-23. Le pire cas se produira si la mantisse est voisine de 1, et lerreur relative sera alors de 2-23 1,0 1,19 10-7. 3.13 A = 43D00000IEEE et B = 3FF00000IEEE a. notation binaire de A : 0 10000111 10100000000000000000000 notation binaire de B : 0 01111111 11100000000000000000000 b. Pour A, signe = 0; exposant + 127 = 135, donc lexposant est 8; mantisse = 1,101000000000000000000002 et A = 1,1012 28. Pour B, signe = 0; exposant + 127 = 127, donc lexposant est 0; mantisse = 1,111000000000000000000002 et B = 1,1112 20. c. Le plus petit est B. On le dcale pour obtenir la mme puissance de 2 que A et on obtient : B = 0,00000001111 28. d. Addition des mantisses : 1,10100000000 0,00000001111 1,10100001111 e. Conversion en IEEE : signe = 0, exposant = 8, mantisse = 1,10100001111 Somme = 0 10000111 10100001111000000000000 = 43D0F000IEEE. 3.14 A = 40A00000IEEE et B = C0400000IEEE. A = 0 10000001 01000000000000000000000 signe = 0, exposant = +2, mantisse = 1,012 B = 1 10000000 10000000000000000000000 signe = 1, exposant = +1, mantisse = 1,12 Comme AB = a b 2p+q, on effectue le produit des mantisses : 1,012 -1,12 = -1,1112. Le produit sera donc -1,1112 23. Conversion en IEEE : signe = 1, exposant + 127 = 130 = 10000010, mantisse = 1,111, do : 1 10000010 11100000000000000000000 = C1700000IEEE .

Solution des exercices

126

3.15 1,0 = + 1,0 20. Donc s = 0, mantisse = 1,0 et exposant e = 1023. 1023 = 011111111112. Le nombre est donc : 0011 1111 1111 0000 0000 0000 0000 0000 0000 0000 0000 ou 3FF0000000000000IEEE 3.16 a. 43210 = 1101100002 = 0,000110110000 163; exposant corrig = 64 + 3 = 67; 0 1000011 0001 1011 0000 0000 0000 0000. b. Lerreur relative sur un nombre est la valeur du plus petit bit par rapport celle du nombre exprim. Dans le cas prsent, sur le nombre 15, lerreur relative est : 1 1111000000000000000000002 = 1 15 728 640, tandis que pour le nombre 1,0, elle est de 1 0001000000000000000000002 = 1 1 048 576. Dans la notation IEEE, comme la mantisse est normalise sous la forme 1,f, lerreur relative varie beaucoup moins, tout au plus par un facteur 2. c. Le plus petit nombre normalis reprsentable dans ce systme est : exposant = 0, ce qui reprsente 16 -64; la mantisse normalise minimale est : 0,0001 0000 0000 0000 0000 00002. Ce nombre est donc 0,00012 16-64 = 5,3976053 10-79. Le plus grand nombre normalis reprsentable dans ce systme est : exposant = 127, ce qui reprsente 1663; la mantisse normalise maximale est : 0,1111 1111 1111 1111 1111 11112. Ce nombre est donc 0,99999999 1663 = 7,2370051 1075.

Solution des exercices

127

Chapitre 5 5.1 ET et OU trois entres : A B C A.B.C 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 5.2 A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C A+B+C 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1

a. (a + b).(a + b) = aa + ab + ab + bb = a + a(b + b) = a b. a + (a b) = a + ab + ab = a + b (a + a) = a + b ? ceci revient dire A B C A.B A.B.C B.C 000 1 0 1 001 1 1 1 010 1 0 1 011 1 1 0 100 1 0 1 101 1 1 1 110 0 0 1 111 0 0 0
A.B.C

5.3 a. Est-ce que

0 0 0 0 1 1 1 0

Comme la 3e et la 5e colonne ne sont pas identiques, il ny a pas galit. b. (A B) C=(A B+AB) C=(A B + AB).C +( AB+AB).C
= AB C + ABC +( AB . AB).C= A B C + ABC +( A+B)(A+ B).C = AB C + ABC + A BC+ABC=A( B C +BC)+ A(BC + BC) =A.( B C)+ A.(B C)=A (BC)

Solution des exercices

128

5.4 G 1 1 1 1 0 0 0 0 A 0 0 1 1 0 0 1 1 B Y1 Y2 0 1 0 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 0

Le plus simple ici est dutiliser les maxterms puisquil ny a que deux 0 :

De la mme faon : . 5.5 a. Ai 0 0 0 0 1 1 1 1 b. Bi 0 0 1 1 0 0 1 1 Ci-1 0 1 0 1 0 1 0 1 Di Ci 0 1 1 0 1 0 0 1 0 1 1 1 0 0 0 1

Solution des exercices

129

c.
Ci-1 Ai Bi Di

Ci

5.6
A X 0 1 1 0
A B C D E

a. b. Par le thorme de deMorgan, on trouve


A B C D E

5.7 Multiplexeur deux entres


a S b bS aS r aS + bS

Solution des exercices

130

5.8 Ralisation dun OU-Disjonctif avec quatre portes NAND. Puisque A B = A.B + A.B , en utilisant les rsultats du problme 5.6, on obtient:
A = B B A

On peut remplacer les deux inverseurs par une porte NAND en utilisant les identits:

et 5.9 1 c c c
0 1 2 3

MUX

5.10 a. un circuit qui dcale vers la droite quand C = 1, et qui ne dcale pas quand C = 0.
0 D7
D6 D5 D4 D3 D2 D1 D0

B A S C S7

B A S

B A S

B A S

B A S

B A S

B A S

B A S

S6

S5

S4

S3

S2

S1

S0

b. un circuit qui dcale de deux bits vers la droite quand C = 1, et qui ne dcale pas quand C = 0.
0 D7 0 D6 D5 D4 D3 D2 D1 D0

B A S C S7

B A S

B A S

B A S

B A S

B A S

B A S

B A S

S6

S5

S4

S3

S2

S1

S0

Solution des exercices

131

5.11
S S 0 0 0 0 1 1 1 1 R 0 0 1 1 0 0 1 1 Q 0 1 0 1 0 1 0 1 Q+ ? indtermin ? indtermin 1 mise 1 1 mise 1 0 effacement 0 effacement 0 Q+ = Q 1 Q+ = Q

Q SR 00 01 11 10

Q+ Q+ ? 1 Q 0 ? 0 Q 1

5.12 On a la table de transitions suivante : Q1 0 0 1 1 Q0 0 1 0 1 Q1+ 0 1 0 x Q0+ 1 0 0 x D1 0 1 0 x D0 1 0 0 x

Do les tables de Karnaugh suivantes pour D1 et D0 : Q1 Q0 0 0 1 1 0 1 0 x D0 = Q1 Q0 et le circuit : Q1 Q0 0 0 0 1 0 1 1 x D1 = Q0

D0 Q0 Q0 C

D1 Q1 Q1

Solution des exercices

132

Chapitre 7 7.1 a. 232 = 4 294 967 296 combinaisons dadresses possibles. La capacit mmoire dpendra de lorganisation de la machine. Si la machine a 1 octet par adresse, comme cest le cas pour la plupart des microprocesseurs, on aura 4 giga-octets. Sinon, on aura 4 294 967 296 mots de 16 ou 32 bits, donc respectivement 8 ou 16 giga-octets. b. 4 8 1 mgaoctets = 32, dans le cas o il y a 1 octet par adresse. c. log2 4 194 304 = 22. Adresse maximale avec 22 bits = 3FFFFF16. d. Chaque puce de 1 mgabit ncessite 20 bits d'adresse d'o 20/2 = 10 broches d'adresse pour une mmoire dynamique. 7.2 L'adresse de 32 bits sera dcoupe comme suit : 14 tiquette 16 Index 2 No. dans le bloc

En effet, pour adresser 64 K ranges, on a besoin dun index de 16 bits. Pour adresser lun des quatre octets dans chaque range, on a besoin de 2 bits. Restent 14 bits pour ltiquette. a.Il y a donc 16 bits dans lindex. b. Il y a 14 bits dans ltiquette. c. Pour ladresse 0x 0A001000, on a, en binaire : 0000 1010 0000 0000 0001 0000 0000 0000 qui est dcoupe somme suit : 00 0010 1000 0000 | 0000 0100 0000 0000 | 00 Ladresse 0x 0A001000 sera donc dans la range 0x 0400 . d. La valeur de ltiquette pour cette adresse est 0x 0280. 7.3 a. Temps pour effectuer un tour complet : 60 s / min = 0,016666 s / tour = 16,67 ms / tour 3 600 tours / min b. Capacit linaire brute par piste : nombre doctets par piste = nombre doctets/tour =

Solution des exercices

133

nombre d'octets / s 1,86 mgaoctets / s = = 31 Kilo-octets / tour nombre de tours / s 60 tours / s c. Capacit totale du disque non format : 31 Ko/piste 1 123 pistes/face 9 faces = 313 317 Ko = 313 mgaoctets. 7.4 a. Dbit : puisquon parcourt 1 piste par tour, 3 367 tours / min 8 192 octets / tour = 459 707 octets / s 60 s / min b. Capacit brute non formate du disque : 4 faces 612 pistes/face 8 192 octets/piste = 20 mgaoctets. c. Nombre de secteurs de 512 octets : 8 192 octets/piste 76% 512 octets/secteur = 12 secteurs/piste 4 faces 604 pistes/face 12 secteurs/piste = 28 992 secteurs

Solution des exercices

134

Chapitre 8

8.1 LOAD STORE LOAD ADD STORE LOAD DIV STORE LOAD SUB STORE LOAD STORE LOAD STORE LOAD MPY SUB ADD STORE C -(SP) D (SP)+ -(SP) B (SP)+ -(SP) A (SP)+ -(SP) G -(SP) E -(SP) F (SP)+ (SP)+ (SP)+ R

Accumulateur C C D C+D C+D B B/(C+D) B/(C+D) A A-B/(C+D) A-B/(C+D) G G E E F E*F (E*F)-G A-B/(C+D) + (E*F)-G A-B/(C+D) + (E*F)-G

Pile vide C C vide C+D vide B/(C+D) vide A-B/(C+D) G, A-B/(C+D) E, G, A-B/(C+D) G, A-B/(C+D) A-B/(C+D) vide

Solution des exercices

135

Chapitre 10

10.1 a. 600 800 1 bit/pixel = 480 000 bits = 60 000 octets b. 4bits/pixel 480 000 pixels = 1 920 000 bits = 240 000 octets c. 3 1 920 000 = 5 760 000 bits = 720 000 octets. 10.2 a. 300 400 pixels/image 5 images/s 3 bits/pixel = 1 800 000 bits/s b. 120 000 50 pixels/image 5 images/s 21bits/pixel = 252 000 bits/s 10.3 10 pages/min, 60 lignes chacune, 80 car/ligne, 8 bits/car. + bits de dpart, darrt et de parit = 11 bits. Vitesse minimale = (10/60) 60 80 11 = 8 800 bits/s.

Solution des exercices

136

Chapitre 11

11.1 k = 6B16. On ajoute le bit de dpart, on inverse les 7 bits du caractre dans le temps, on ajoute la parit (ici ce sera un 0 puisque 0x 6B contient dj un nombre impair de 1) et le bit darrt. On aura donc :
1 0 1 1 0 1 0 1 1 0 1

Dpart

Arrt Parit

11.2 a. 1 38 400 bauds = 0,000026 s = 26 s. b. 11 bits par caractre (octet). Nombre doctets effectif = 38,400 11 = 3 491.

Solution des exercices

137

Chapitre 12

12.1 a) La mmoire associative doit contenir ladresse physique des 2048 pages de 512 octets (2 048 512 octets = 1 Mo) de la mmoire physique. Elle doit donc comporter 2 048 entres. Puisque 512 = 29, pour chaque entre on a besoin de 46 - 9 = 37 bits pour ltiquette. Et puisque 2 048 = 211, la donne correspondant chaque tiquette, le numro de page physique, ncessite 11 bits. Chaque entre a donc 37 + 11 = 48 bits. La capacit totale de la mmoire associative est donc de 2 048 48 8 = 12 288 octets. b) Pour ladresse physique 0x 89045,
1000 1001 0000 0100 0101 Numro de page physique Offset dans la page

lentre de la mmoire associative doit contenir le numro de page physique 448, donn par les 11 premiers bits de ladresse physique. Cest ce quon trouve dans la 4e range du tableau de la donne du problme. Les 9 derniers bits de ladresse physique aussi bien que de ladresse virtuelle sont loffset dans la page de 512 octets. Les 48 bits de la 4e entre de la mmoire virtuelle sont, daprs le tableau de la donne du problme, 199939AA0448, soit : 0001 1001 1001 1001 0011 1001 1010 1010 0000 0100 0100 1000 tiquette Numro de page physique Ladresse virtuelle est donc, en remplaant les 11 derniers bits par les 9 bits de loffset dans la page :
0001 1001 1001 1001 0011 1001 1010 1010 0000 0 0 0100 0101 tiquette Offset dans la page

soit 06664E6A8045.

Solution des exercices

138

12.2 En reprenant lexemple de mmoire virtuelle de la section 15.5, mais avec une mmoire virtuelle de 512 Mo, une mmoire physique de 32 Ko et des pages de 8 Ko : a. Quelle serait la taille de la table des pages ? La mmoire virtuelle comporte 512 Mo / 8 Ko = 64 K pages de 8 Ko. La table des pages devra donc contenir 64 K entres, i.e. une par page. b. Quel est le numro de page virtuelle correspondant l'adresse virtuelle 0x 00300B2A? Les 13 bits les moins significatifs de ladresse virtuelle servent identifier ladresse dans la page. Les 19 bits restants de ladresse virtuelle constituent le numro de page virtuelle. Pour ladresse 0x 00300B2A, on a : 0000 0000 0011 0000 000
Numro de page virtuelle

0 1011 0010 1010


Adresse dans la page

et le numro de page virtuelle est 000 0000 0001 1000 0000 soit 0x 00180. 12.3 a. Nombre de clusters dans la FAT : 20 1 024 1 024 octets = 40 Kilo-clusters On a besoin de 20 mgaoctets = 512 octets / cluster On a donc besoin de 40 1 024 entres de FAT de 16 bits, c.--d. de 2 octets chacune pour adresser ces 40 Kilo-clusters, soit : 40 1 024 2 octets, soit 80 1 024 octets 512 octets/cluster = 160 clusters. b. Capacit totale de la FAT : avec 16 bits, on a 65 536 adresses possibles, adressant chacune un cluster de 512 octets, donc une capacit de : 65 536 512 = 32 mgaoctets. 12.4 Le nom du fichier est TP3.TXT. Il a t sauvegard l'heure donne par 0x B4C7, soit : 1 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 = 22 h, 38 min et 14 sec. La date est 0x1378, soit : 0 0 0 1 0 0 1 1 0 1 1 1 1 0 0 0 = 9, 11, 24 = le 24 novembre 1989. Le fichier commence au cluster #5 dans la FAT et sa taille est 0x 01AB octets, soit 427 octets. 12.5 a. C = (F + 1).(P + 1) .S.B, par exemple, 2 42 9 512 = 387 072 octets. b. Nombre total des secteurs : (F + 1).(P + 1).S = 2 42 9 = 756, donc n = [0, 755].

Solution des exercices

139

c. p = (n DIV S) DIV (F + 1) f = (n DIV S) MOD (F + 1) s = (n MOD S) + 1 Exemple : si n = 319, alors p = 17, f = 1, s = 5 d. Nombre maximum de fichiers : on a 7 secteurs pour le rpertoire, donc 7 512 octets, et chaque entre occupe 32 octets. On a donc un maximum de 112 fichiers. e. La table des allocations est contenue dans 3 secteurs de 512 octets. Chaque entre est de 2 octets, on peut donc adresser 512 3 2 = 768 secteurs. Le disque contient 756 - 15 = 741 u.a. allouables, donc la table des allocations est assez grande. f. La perte moyenne despace sur le disque est dun demi secteur par fichier, soit 112 fichiers 512 octets 2 = 28 672 octets. 12.6 a. Taille maximum dun fichier sans indirection : 20 2 048 = 40 960 octets. b. Taille maximum dun fichier avec indirection 1 : 40 960 + 512 2 048 = 1 089 536 octets. c. Taille maximum dun fichier avec indirection 2 : 1 089 536 + 512 512 2 048 = 537 960 448 octets. d. Position du 8 millionime octet : 8 000 000 - 1 089 536 = 6 910 764 me octet dindirection 2. 6 910 764 (512 2 048) = 6, reste 619 308 au niveau 1 61 9308 2 048 = 302, reste 812 au niveau 2. Rponse : ramification 6, niveau 1, ramification 302 niveau 2, octet 812.

Solution des exercices

140

Solution des exercices

You might also like