Professional Documents
Culture Documents
et programmation
des ordinateurs
PUBLIC CONCERNE : premire anne DUT Informatique
Jacques LONCHAMP
DATE : 2012/2013
UNIVERSITE DE LORRAINE
IUT Nancy-Charlemagne
2ter boulevard Charlemagne
CS 55227
54052 NANCY Cedex
-----------------------
Tl : 03.54.50.38.00
Fax : 03.54.50.38.01
http://iut-charlemagne.univ-nancy2.fr
Dnitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
lments historiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Organisation du
ours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Le matriel
3.1
3.2
3.3
3.4
3.5
3.6
4 Le langage ma
hine
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
Dnitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Prsentation de la ma
hine simule pour l'apprentissage du langage d'assemblage
Instru
tions de base du langage de la ma
hine simule . . . . . . . . . . . . . . .
Le s
hma
onditionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Le s
hma itratif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Par
ours d'un ensemble de donnes
ons
utives l'adressage indire
t . . . . . .
Les entres/sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Les manipulations de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Les sous-programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Examen du
ode gnr par un
ompilateur . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
1
3
4
5
6
7
7
10
12
15
15
15
16
18
22
22
24
24
26
29
33
34
35
36
38
39
40
41
42
43
44
45
52
52
53
54
56
58
58
59
60
62
64
72
i
73
76
77
ii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
79
79
79
79
79
80
80
80
80
80
81
iii
iv
1 Introdu
tion
1.1
Dnitions
Il n'est pas fa
ile aujourd'hui de d
rire
e qu'est un ordinateur en raison de la grande diversit des
ma
hines existantes (super
al
ulateurs, serveurs, postes de travail xes ou portables, assistants personnels et tablettes ta
tiles, pu
es embarques dans tous les objets de la vie
ourante) et de la rapidit
des volutions te
hnologiques. Il existe
ependant un
ertains nombre de prin
ipes d'organisation et
de fon
tionnement que
e
ours
her
he prsenter de manire synthtique et dont la
onnaissan
e
est importante pour tous les informati
iens.
Un ordinateur est une ma
hine le
tronique programmable
apable d'ee
tuer des traitements automatiques de donnes et d'interagir ave
son environement. Plus pr
isment, un ordinateur ralise
quatre fon
tions de base :
transfert des informations depuis et vers son environnement,
mmorisation des informations (donnes, rsultats et programmes),
traitement des donnes (
al
uls arithmtiques et logiques),
ommande et
ontrle des fon
tions pr
dentes partir des ordres de l'utilisateur, sp
is au
sein des programmes.
Cette vue fon
tionnelle de l'ordinateur est rsume par la gure suivante :
Environnement
programmes,
donnes
rsultats
Transfert des
informations
priphriques
Commande et Contrle
mmoires
1.2
Mmorisation
des informations
Traitement des
donnes
unit de commande
unit arithmtique et
logique
lments historiques
Calcul
1650
Pascal
Leibnitz
Mcanique
Jacquart
Thorie
1850
Boole
Babbage
Turing, Shannon
Von Neumann
ElectroMcanique
1950
Industrie informatique
Electronique
La rvolution suivante est
elle des
ir
uits intgrs et des mi
ropro
esseurs sur une pu
e (1971).
Le premier PC (personal
omputer ), le Mi
ral de la so
it Franaise R2E, apparat en 1973.
Enn, les proto
oles TCP et IP, la base d'Internet, sont dnis en 1982.
2
1.3
Organisation du ours
La premire partie de
e
ours s'intresse la fon
tion de mmorisation des donnes et plus parti
ulirement la manire dont sont reprsentes les informations dans l'ordinateur (
odi
ation et
numrisation).
La deuxime partie du
ours d
rit
omment sont ralises les fon
tions lmentaires de traitement
et de mmorisation, en termes de
ir
uits logiques, puis l'organisation en
omposants matriels de
l'ordinateur (mmoires, unit de
ontrle, unit arithmtique et logique, units d'
hange, bus, priphriques, . . .).
La troisime partie traite de la programmation en langage ma
hine ,
'est dire dans le langage
dire
tement
omprhensible par l'unit de
ommande et retant les
ir
uits mis en uvre dans l'unit
arithmtique et logique. Cette tude se fait ave
une ma
hine simule.
0
0
1
1
2
10
3
11
4
100
5
101
6
110
7
111
8
1000
9 ...
1001 . . .
b
Dans les systmes de numration
lassiques, appels systmes de numration pondrs,
haque
hire
a un poids qui dpend de sa position dans le nombre.
Plus pr
isment, un nombre N est reprsent par une suite de
hires cn , cn1 , cn2 , ..., c1 , c0 dont la
valeur est
omprise entre 0 et b 1. Le
hire ci de rang i a un poids gal bi :
N = cn bn + cn1 bn1 + ... + c1 b1 + c0 b0
Exemples :
En base 10 : 5908 = 5 103 + 9 102 + 0 101 + 8 100
En base 2 : 11001 = 1 24 + 1 23 + 0 22 + 0 21 + 1 20 = 16 + 8 + 0 + 0 + 1 = 25
En base 8 : 1045 = 1 83 + 0 82 + 4 81 + 5 80 = 512 + 0 + 32 + 5 = 549
Dans le
ontexte du binaire, il est don
important de bien matriser la table des puissan
es de 2.
Cette table est donne l'annexe A.
b) Intrt du binaire
C'est une forme de reprsentation fa
ile transmettre (ex : prsen
e/absen
e de
ourant le
trique
dans un l) et fa
ile mmoriser par tout dispositif 2 tats stables dont on peut
ommander le
hangement d'tat (ex : surfa
e aimante ou non aimante).
Pour
es raisons, nous verrons dans la suite que toutes les informations (nombres, textes, images,
sons. . .) sont
odes en binaire dans les ordinateurs,
'est dire
odes par des suites de 0 et de 1.
0
0
1
1
1
0(1)
0
1
1
1001
+ 101
----1110
0
0
0
1
0
1
On remarque qu'une multipli
ation se ramne une suite de re
opiages du multipli
ande, de d
alages
et d'additions. La soustra
tion peut se ramener l'addition d'un nombre ngatif dont nous verrons
dans la suite quelle est sa reprsentation. La division peut se ramener des soustra
tions itres tant
que le rsultat est suprieur ou gal au diviseur.
On peut utiliser la mthode des restes su
essifs qui
onsiste
al
uler les restes des divisions
entires su
essives du nombre (puis du quotient) par la base autant de fois que possible,
'est--dire
tant que le quotient n'est pas nul. Le rsultat est
onstitu des restes lus du dernier au premier.
Montrons le ave
un nombre N qui s'
rit sur 4 bits (N = a3 23 + a2 22 + a1 21 + a0 ).
N peut s'
rire aussi : ((a3 2 + a2 ) 2 + a1 ) 2 + a0 .
Don
, la division de N par 2 donne : (a3 2 + a2 ) 2 + a1 ave
un reste = a0 .
La division du quotient (a3 2 + a2 ) 2 + a1 par 2 donne a3 2 + a2 ave
un reste = a1 .
La division du quotient a3 2 + a2 par 2 donne a3 ave
un reste = a2 .
La division du quotient a3 (0 ou 1) par 2 donne 0 ave
un reste = a3 .
Exemple :
41 divis par 2 donne 20 reste 1 ;
'est le
hire des units, droite du nombre ;
20 divis par 2 donne 10 reste 0 ;
10 divis par 2 donne 5 reste 0 ;
5 divis par 2 donne 2 reste 1 ;
2 divis par 2 donne 1 reste 0 ;
1 divis par 2 donne 0 reste 1 ;
'est le
hire de la plus forte puissan
e de 2, gau
he du nombre ;
D'o le nombre binaire : 101001
Exer
i
es
1. Additionnez 101101 et 11001.
2. Multipliez 101 et 110.
Le bit le plus gau
he d'un nombre binaire est dit bit de poids fort (ou MSB pour Most Signi
ant
Bit ). Le bit le plus droite d'un nombre binaire est dit bit de poids faible (ou LSB pour Less
Signi
ant Bit ).
Exer
i
es
5. Quel est le plus grand entier binaire qui tient sur un o
tet ? sur un mot de 16 bits ? sur un mot de
3. d
aler MCAT de 1 bit vers la droite et MCANDE de 1 bit vers la gau
he, les bits qui sortent
du mot tant perdus,
4. si MCAT vaut 0, arrter, sinon re
ommen
er en 2.
On pourra par exemple
al
uler 11 9 en utilisant le tableau suivant ave
des mots de 4 bits :
MCAT
1001
...
2.3
MCANDE
00001011
...
RES
00000000
...
Ce sont les entiers positifs et le zro. On les appelle aussi entiers non signs .
a) En binaire pur
Il s'agit du mode de reprsentation habituel des entiers naturels. Il existe un danger de dbordement,
d la taille limite des mots utiliss.
Exemple : sur 8 bits, il y a dbordement partir de 255.
La plupart des pro
esseurs (
eux d'Intel en parti
ulier) se
ontentent d'indiquer le dbordement
dans un bit d'un registre sp
ial qui peut tre test par le programme. Quelques rares pro
esseurs
d
len
hent une ex
eption qui entrane l'arrt du programme. C'est don
au programmeur de faire
attention aux dbordements possibles !
Selon les pro
esseurs, les o
tets des entiers sont rangs en mmoire de manire
lassique
'est dire
par poids d
roissants (pro
esseurs big-endian ou gros-boutistes ,
omme les pro
esseurs Motorola
ou Spar
) ou de manire plus surprenante par poids
roissants (pro
esseurs little-endian ou petitsboutistes ,
omme les pro
esseurs Intel).
Chaque
hire d
imal est
od en binaire sur 4 bits, en
onservant la stru
ture du nombre d
imal.
Exemple : 1428 donne 0001 0100 0010 1000, soit 1 en binaire sur 4 bits, suivi de 4 en binaire sur 4
bits, suivi de 2 en binaire sur 4 bits et de 8 en binaire sur 4 bits.
Ce type de reprsentation
onsomme beau
oup de pla
e mmoire. Son utilisation est aujourd'hui
peu frquente.
2.4
Un nombre en binaire est long et di
ile lire par un humain. On prfre souvent le reprsenter en
o
tal ou en hexad
imal,
e qui fa
ilite la
ommuni
ation entre humains.
Attention ! il s'agit d'une reprsentation externe pour l'homme et non d'une reprsentation interne en
ma
hine.
Exer
i
es
7. Convertissez 10100011101 en hexad
imal, en d
imal.
8. Que vaut FFF en binaire, en d
imal ?
9. Convertissez 1100110 en o
tal, en d
imal.
2.5
Ce sont les entiers positifs, ngatifs et le zro. On les appelle aussi entiers signs . Il existe trois
mthodes possibles de reprsentation des entiers relatifs : ave
bit de signe, en
omplment 2 et par
ex
dent.
Le bit de gau
he est rserv pour le signe : 0 pour le signe + (an que les positifs soient identiques
aux entiers naturels) et 1 pour le signe .
Ave
ette reprsentation :
il existe deux zros dirents (+0 et 0),
l'addition d'un positif et d'un ngatif ne peut pas se faire par une simple addition des bits :
un nombre positif additionn un nombre ngatif donnerait toujours un nombre ngatif ! Pour
dterminer le signe du rsultat il faut savoir quelle est la plus grande valeur absolue. Les
ir
uits
de
al
ul sont don
omplexes.
Pour
es raisons,
ette forme de reprsentation n'est plus utilise.
du
er
le et leurs reprsentations en binaire sont l'extrieur du
er
le. Les nombres dont le bit de
poids fort est 0 sont utiliss pour reprsenter les positifs selon la numration binaire. Les nombres
dont le bit de poids fort est 1 sont utiliss pour reprsenter les ngatifs en
hoisissant un
ertain
ordre qui permet de vrier les proprits
i-dessus.
000
0
-1
111
110
101
001
1
2
-2
-3
010
011
-4
100
On vrie que l'addition de u et de u donne 2n
'est dire 0 quand on ignore le bit de retenue qui
sort gau
he (on peut aussi dire que u + u = 0 modulo 2n ). La valeur mdiane (100) est attribue
-4 plutt qu' 4 an que tous les ngatifs
ommen
ent par 1 et tous les positifs
ommen
ent par 0.
On retrouve ainsi un bit de signe !
Plus gnralement, on peut dire que le
omplment 2 sur n bits d'un nombre binaire A, not
c2(A), est tel que A + c2(A) = 2n
'est dire un 1 suivi de n zros.
Don
: c2(A) = 2n A = (2n 1) A + 1.
2n 1 est une suite de n
hires 1. (2n 1) A revient soustraire
haque bit de A un 1. Si
e bit
vaut 0 le rsultat est 1. Si
e bit vaut 1 le rsultat est 0. Autrement dit on
hange les 0 en 1 et les 1
en 0 dans le nombre A. C'est
e qu'on appelle le
omplment 1 . Reste nalement ajouter 1
e
omplment 1 pour obtenir le
omplment 2 (
f. exemple
i-dessous).
on rempla
e les
0 par des 1, les 1 par des 0 et on ajoute 1. On ne tient jamais
ompte du bit de retenue
qui dborde gau
he des n bits (ou
arry bit ) .
1111 0101
0000 1010
+
1
--------0000 1011
(-11)
(modifi
ation des bits)
(ajout de 1)
(on retrouve 11).
0000 0000
1111 1111 (modifi
ation des bits)
+
1 (ajout de 1)
-----------(1)0000 0000 (on ne tient pas
ompte du dbordement gau
he don
-0 = +0)
le premier bit est aussi un bit de signe : les nombres stri
tement ngatifs
ommen
ent toujours
par 1 (en eet en enlevant 2n un nombre
ompris entre 1 et 2n1 on obtient un nombre entre
2n 1 et 2n1 ;
es nombres
ommen
ent tous par 1 en binaire sur n bits) ;
on peut additionner un nombre positif et un nombre ngatif sans se pro
uper du
signe ; le rsultat est toujours
orre
t. Considrons par exemple l'addition binaire de x et
y ave
y < 0. On sait que y est reprsent par
2(y)= 2n - y. Don
x + y = x + 2n - y = x - y
+ 2n . Comme le 2n est perdu par dbordement gau
he le rsultat de l'addition est bien gal
x - y.
Exemple : 7 + (-6)
0000 0111 (7)
+ 1111 1010 (-6)
-----------(1)0000 0001 (dbordement gau
he perdu et rsultat = 1)
l'apparition d'un bit qui sort gau
he n'est pas n
essairement une erreur en
omplment 2 ;
les
al
uls in
orre
ts
orrespondent un report de l'avant dernier bit dans le dernier bit sans
report du dernier bit en dehors du mot ou bien un report en dehors du mot sans report de
l'avant dernier sur le dernier bit (
f. exer
i
e 13).
Exemples : deux exemples de
al
uls in
orre
ts
0 1
1 0
1
0100 0000 (64)
1000 0001 (-127)
+ 0100 0001 (65)
+ 1000 0001 (-127)
---------------------(0)1000 0001 (-127 !)
(1)0000 0010 (2 !)
Le
omplment 2 est utilis dans tous les ordinateurs pour reprsenter les entiers relatifs. Il existe
ependant un
as parti
ulier o une autre reprsentation est employe. Nous la prsentons au paragraphe suivant.
Pour reprsenter l'intervalle [i, +j , on ajoute i toutes les valeurs de l'intervalle : 0 reprsente don
la plus petite valeur ngative (i) et i + j reprsente la valeur j . On parle d'ex
dent i et
el
orrespond un d
alage de i pour tous les nombres.
Sur n bits, on peut par exemple ajouter 2n1 qui est en gros la valeur
entrale de toutes les valeurs possibles.
Exemple : sur 8 bits, 281 = 27 = 128.
En ex
dent 128 :
128 est
od par 0,
127 est
od par 1,
126 est
od par 2,
...
1 est
od par 127,
0 est
od par 128,
1 est
od par 129,
...
126 est
od par 254,
127 est
od par 255.
9
Exer
i
es
10. Cal
ulez 30 + 20, 20 tant
od en
omplment 2 sur 8 bits.
11. Donnez en base 10 les nombres dont le
odage en
omplment 2 sur 16 bits sont les suivants :
0110 1100 0001 1011 et 1011 0110 1011 0011.
12.
Comparez les trois systmes de reprsentation des relatifs sur 4 bits en dressant un tableau de
toutes les valeurs possibles ave
les trois systmes.
les six oprations
i-dessous,
ara
tristiques de tous les
as possibles d'additions dans
Z, en
omplment 2 sur 8 bits.
Positif + positif sans dbordement : 6 + 8.
Positif + positif ave
dbordement : 127 + 1.
Positif + ngatif, rsultat positif : 4 + (2).
Positif + ngatif, rsultat ngatif : 2 + (4).
Ngatif + ngatif sans dbordement : (2) + (4).
Ngatif + ngatif ave
dbordement : (127) + (2).
On note C le bit de
arry (
'est--dire le bit qui sort ) et V le bit d'overow (
'est dire le bit qui
se reporte de l'avant dernier sur le dernier bit). Au vu des six rsultats obtenus, quelle
ondition sur
C et V permet de dte
ter qu'une addition est
orre
te ?
C V
Comment faut-il pro der en supposant que l'on dispose d'un moyen pour multiplier les entiers naturels ? Vous onsidrerez les trois as possibles : deux positifs, un positif et un ngatif, deux ngatifs.
2.6
Un nombre rel peut s'
rire ave
une mantisse m et un exposant e : nb = m 10e .
Exemples : 123000 = 1, 23 105 ; 0, 0071 = 7, 1 103 .
L'
riture d'un nombre rel en notation s
ientique n'est pas unique.
Exemples : 123 103 reprsente galement 123000 ; 0, 71 102 reprsente galement 0,0071.
On peut xer une rgle qui impose l'uni
it de la reprsentation, ou normalisation . Une rgle de
normalisation possible peut stipuler que la mantisse doit
ommen
er par 0, nccc. . .o n est un
hire
non nul et c un
hire quel
onque.
Exemples : ave
ette rgle, les valeurs normalises de 123000 et 0,0071 sont 0, 123 106 et 0, 71 102 .
Elle
omporte un nombre ni de valeurs, alors qu'il y a une innit de rels. On travaille don
ave
des valeurs appro
hes. Leur densit varie selon la proximit du 0 : plus on s'loigne de 0 et plus la
10
Z3
Z4
-0,999 10
-0,1 10
Z5
0,1 10
Z2
0,999 10
La multipli
ation des rels en notation s
ientique ne pose pas de problme : il faut additionner les
exposants et multiplier les mantisses, puis normaliser. Par
ontre, l'addition exige une dnormalisation
pour avoir les mmes exposants avant addition, puis une re-normalisation aprs addition.
Il sut de gnraliser la notation positionnelle aux puissan
es ngatives. Aprs la virgule les valeurs
des
hires binaires
orrespondent aux puissan
e ngatives de 2 :
21 = 1/2 = 0, 5
22 = 1/4 = 0, 25
23 = 1/8 = 0, 125 . . .
Exemple : 101,101 donne 1 22 + 0 21 + 1 20 + 1 21 + 0 22 + 1 23 = 4 + 1 + 0, 5 + 0, 125 = 5, 625.
Pour trouver la reprsentation binaire d'une partie fra
tionnaire on fait une suite de multipli
ations
par 2 en retirant
haque fois le
hire avant la virgule jusqu' obtenir 0. Cette suite de
hires retirs
onstitue la partie fra
tionnaire en binaire.
Exemple :
0, 375 2 = 0, 750 ; on retire 0 ; on obtient 0,750
0, 750 2 = 1, 5 ; on retire 1 ; on obtient 0,5
0, 5 2 = 1 ; on retire 1 ; on obtient 0 ; don
0,375 donne 0,011 en binaire.
La norme IEEE 754 (Institute of Ele
tri
al and Ele
troni
s Engineers ) est une norme quasi universelle
pour la reprsentation des rels.
Pour les mots de 32 bits ( rel en simple pr
ision ) :
le signe est reprsent dans le premier bit (0 pour +, 1 pour ),
l'exposant est reprsent sur 8 bits en ex
dent 127,
la mantisse est normalise sous la forme 1, bbb. Le 1, n'est pas reprsent (on parle de bit
a
h ou hidden bit ). La suite de la mantisse est reprsente sur 23 bits.
1,
signe
exposant
mantisse
Exer
i
es
15. Donnez la reprsentation hexad
imale de -12,625 en ottant IEEE 754 sur 32 bits.
16. Quelle est la valeur d
imale du rel ottant IEEE 754 : 42E4 8000 ?
17. Quelle est la valeur d
imale du rel ottant IEEE 754 : 3E94 0000 ?
18. Reprsentez 7/8 en format IEEE 754 sur 32 bits. Donnez le rsultat en hexad
imal.
19. On appelle pr
ision la diren
e entre 1 et le plus petit nombre qui le suit. Que vaut-elle en
simple pr
ision ? Exprime
omme une puissan
e de 10 ? Cela
orrespond
ombien de
hires signi
atifs aprs la virgule ?
20. Addition de deux rels.
Pour faire une addition, il faut ramener les deux oprandes au mme exposant en dnormalisant
elui
qui a l'exposant le plus petit. Ce faisant, on doit d
aler sa mantisse vers la droite ave
le risque de
perdre des
hires. Le rsultat peut don
tre enta
h d'erreur. Cette erreur est d'autant plus grande
que la diren
e entre les exposants est plus grande.
On suppose que la mantisse est reprsente sur 6
hires binaires.
On veut additionner 1.001100 24 et 1.011011 22 .
Quelle est l'erreur
ommise ?
Remarque : une applet pour raliser des
onversions du d
imal vers l'IEEE 754 et r
iproquement
est disponible sur www.loria.fr/~jlon
ham rubrique Enseignement.
La virgule ottante
onvient parfaitement aux appli
ations de
al
ul s
ientique dans lesquelles la
pla
e de la virgule peut varier normment. Au
ontraire, dans les appli
ations de gestion la virgule
est souvent pla
e une position donne. En
omptabilit, par exemple, les nombres ont 2
hires
aprs la virgule pour les montants en euros et
entimes d'euros. On peut utiliser dans
es
as une
reprsentation en virgule xe .
Dans une reprsentation en virgule xe, la virgule n'est pas reprsente dans le nombre. Sa position
est soit xe un
ertain empla
ement, soit dnie par le programmeur au moment de l'utilisation de
la valeur (
f. la
lause V,
omme virgule, dans les rels en COBOL dnis par des d
larations telles
que SOMME PIC S9999V99).
2.7
a) Le ode ASCII
Dans
ette norme (Ameri
an Standard Code for Information Inter
hange )
haque
ara
tre est
od
sur sept bits. On peut don
reprsenter 128
ara
tres dirents
e qui sut pour la langue anglaise
12
dpourvue d'a
ents. Les
odes sont en gnral sto
ks et transmis sur un o
tet. Pour un
ara
tre
sto
k en mmoire le 8ebit est en gnral 0. Lors des transmissions,
e 8ebit peut tre utilis pour
faire un
ontrle de parit (
f. exer
i
es r
apitulatifs).
On peut souligner plusieurs points importants propos du
ode ASCII :
Les
odes
ompris entre 0 et 31 ne reprsentent pas des
ara
tres a
hables. Ces
odes, souvent
nomms
ara
tres de
ontrle sont utiliss pour indiquer des a
tions aux terminaux informatiques. Par exemple, dans un
hier texte, la n d'une ligne est reprsente par un
ara
tre
de
ontrle (ou une paire de
ara
tres de
ontrle). Plusieurs
onventions
oexistent : sous les
systmes Unix ou type Unix (Linux, AIX, Ma
OS X, et
.), la n de ligne est indique par un
saut de ligne (LF) ; sous Ma
OS jusqu' la version 9, la n de ligne est indique par un retour
hariot (CR) ; sous les systmes Mi
rosoft Windows, la n de ligne est indique par un retour
hariot suivi d'un saut de ligne (CR+LF, 2 o
tets). Ainsi, quand on ouvre un
hier ASCII
r
par un systme sous un autre systme, il faut souvent modier les ns de ligne an de pouvoir
l'a
her de manire
orre
te. Les diteurs de texte volus (Wordpad mais pas Notepad sous
Windows) peuvent dte
ter le type de n de ligne et agir en
onsquen
e.
Le
ode 32
orrespond l'espa
e.
Les lettres se suivent dans l'ordre alphabtique (
odes 65 90 pour les majus
ules, 97 122
pour les minus
ules),
e qui simplie les
omparaisons.
Les
hires sont rangs dans l'ordre
roissant (
odes 48 57), et les 4 bits de poids faibles
dnissent la valeur en binaire du
hire.
La table du
ode ASCII est donne l'annexe B1.
Dans
ette norme de l'ISO (International Standard Organisation ), le
ode ASCII pr
dent est tendu
en ajoutant de nombreux
ara
tres, en parti
ulier a
entus, qui sont utiliss par les langues europennes
ourantes : allemand, anglais, espagnol, franais (sauf
ara
tres , et ), italien, nerlandais, norvgien, portugais, sudois, et
. L'afrikaans et le swahili sont galement
ouverts. Cette
norme est don
utilise en Europe de l'Ouest, en Amrique, en Australie et dans une grande partie
de l'Afrique. Elle
ontient 256
ara
tres
orrespondants tous les
odes possibles sur 8 bits. Les 128
premiers
ara
tres sont
eux du
ode ASCII sur 7 bits.
ISO-8859-1 est le
odage standard utilis par le systme X Window sur la plupart des ma
hines UNIX.
La limitation prin
ipale du
odage sur un o
tet est la n
essit d'utiliser plusieurs tables de
ode
(les normes ISO-8859-x ave
x variant de 1 10) pour
ouvrir plusieurs alphabets. Or
ertains do
uments sont typs l'aide de mta-donnes. Dans
e
as, une table de
ara
tres et une seule est
asso
ie
haque do
ument. Par exemple pour un do
ument HTML la balise
Windows-1252, disponible sur les systmes Windows, dire de l'ISO-8859-1 par l'utilisation de
ara
tres imprimables (
omme le symbole de l'euro, et ), plutt que des
ara
tres de
ontrle, dans
les
odes 128 159.
La table du
ode ISO-8859-1 est donne l'annexe B2.
) Uni ode
Uni
ode est une norme dveloppe par le Consortium Uni
ode qui vise donner tout
ara
tre de
toute langue un nom et un identiant numrique quelle que soit la plate-forme informatique ou le logi
iel. Uni
ode, dont la premire publi
ation remonte 1991, a t dvelopp dans le but de rempla
er
l'utilisation des pages de
ode. La version a
tuelle 5.1 dnit plus de 120000
ara
tres.
Uni
ode est dni suivant un modle en
ou
hes. Les autres normes ne faisaient typiquement pas
de distin
tion entre le jeu de
ara
tres et la reprsentation physique. Les prin
ipales
ou
hes sont
prsentes i
i en partant de la plus loigne de la ma
hine :
Rpertoire des
ara
tres abstraits (Abstra
t Chara
ter Repertoire )
La
ou
he la plus leve est la dnition du jeu de
ara
tres. Uni
ode leur donne des noms. Par
exemple, le
ara
tre est nomm Lettre majus
ule latine
dille .
Jeu de
ara
tres
ods (Coded Chara
ter Set )
I
i, on ajoute la table pr
dente un index numrique. Il ne s'agit pas d'une reprsentation
en mmoire, juste d'un nombre. Ce nombre, appel point de
ode , est not U+xxxx o xxxx
est en hexad
imal et
omporte 4, 5 ou 6
hires. Ainsi, le
ara
tre nomm Lettre majus
ule
latine
dille a
omme point de
ode U+00C7.
Formalisme de
odage des
ara
tres (Chara
ter En
oding Form )
On arrive la reprsentation physique (en mmoire, sur disque . . .) :
ette
ou
he sp
ie quelles
units de sto
kage (
ode units ), o
tets ou bien mots de 16 ou de 32 bits, vont reprsenter un
point de
ode. On ne peut don
pas parler de la taille d'un
ara
tre Uni
ode
ar elle dpend
du
odage
hoisi.
Uni
ode a
epte plusieurs types de transformations universelles (Universal Transformation Format ou UTF) pour reprsenter un point de
ode valide : UTF-8, UTF-16, UTF-32. Le nombre
aprs UTF reprsente le nombre minimal de bits ave
lesquels un point de
ode valide est reprsent.
L'UTF-8 est le plus
ommun pour les appli
ations Unix et Internet. Son
odage de taille
variable lui permet d'tre en moyenne moins
oteux en o
upation mmoire (un o
tet pour
les points de
ode assigns aux
ara
tres ASCII, 2 4 o
tets pour les autres points de
ode).
L'UTF-16 est un bon
ompromis lorsque la pla
e mmoire n'est pas trop restreinte,
ar la
grande majorit des
ara
tres des langues modernes peuvent tre reprsents sur 16 bits.
C'est notamment le
odage qu'utilise la plate-forme Java en interne, ainsi que Windows pour
ses APIs
ompatibles Uni
ode (ave
le type WCHAR). Les autres
ara
tres sont reprsents
par deux seizets .
L'UTF-32 est utilis lorsque la pla
e mmoire n'est pas un problme. L'avantage de
ette
transformation est que tous les
odes ont la mme taille (32 bits).
Exer
i
es
21. D
odez la squen
e de
ara
tres ASCII sur 8 bits suivante :
01001001 00100000 01001100 01001111 01010110
01000101 00100000 01011001 01001111 01010101
22.
Comment transformer le
ode ASCII sur 8 bits d'une minus
ule en le
ode de la mme lettre
en majus
ule ?
14
d) Autres odes
Les
odes tudis dans
e paragraphe sont susants pour la programmation. Mais il en existe de nombreux autres. Lorsque des donnes sont transmises sur des rseaux informatiques, des informations
redondantes sont envoyes an de dte
ter voire mme de
orriger des altrations de bits pendant la
transmission, toujours possibles en raison des perturbations le
triques. Ces
odes parti
uliers seront
vus dans le
ours rseau et un exemple simple est donn dans les exer
i
es r
apitulatifs la n de
ette partie sur la
odi
ation.
2.8
Dans les langages de programmation volus, dirents types de donnes sont dnis. A
haque type
est asso
i une
ertaine reprsentation mmoire. Par exemple, Java ore huit types de base (ou types
primitifs) dont les
ara
tristiques sont rsumes dans le tableau suivant :
Format
double
byte
short
int
long
oat
har
boolean
Valeurs
-128 127
32768 32767
2147483648 2147483647
9, 22 1018
3, 4 1038 3, 4 1038
(pr
ision 7
hires)
1, 7 10308 1, 7 10308
(pr
ision 15
hires)
65536
ara
tres
vrai, faux
Remarque : le sto kage ee tif en mmoire dpend de la ma hine virtuelle Java.
2.9
Il existe aussi des
odes pour reprsenter numriquement les sons, les images, la vido dans le
adre
des appli
ations multimdia. Cet aspe
t est survol dans
e paragraphe.
Comme toutes les informations en mmoire,
es objets doivent tre
ods par des bits ; on dit plutt
qu'ils sont numriss . Il existe de trs nombreuses reprsentations pour
es objets. On se limitera
i
i quelque exemples simples.
Pour numriser un son quel
onque, l'ordinateur peut mesurer la valeur prise par
ette
ourbe des
intervalles de temps rguliers.
15
0,8
0,6
0,3
0,9
0,0
En qualit CD audio, l'ordinateur prend 44100 mesures par se
onde. On dit qu'il
hantillonne
44100Hertz (ou 44,1kHz).
Dans un
hier wav (format Mi
rosoft),
haque mesure est
ode en binaire sur 16 bits (65535 valeurs
possibles) en mono et sur 2 16 bits en stro. Une minute de son en qualit CD audio stro o
upera
don
(44100 60 16 2) / (8 1024 1024) 10Mo.
Tous les sons (paroles, bruits, musiques) sont des vibrations
omplexes que l'on peut
hantillonner
ainsi. Mais
ela gnre un grand nombre de donnes par se
onde.
Une autre appro
he,
onsiste d
omposer la vibration
omplexe en une somme de vibrations rgulires (sinusodes).
U1/V
U1/V
3
2
1.5
1
0
1
-1
-2
0.5
-3
-4
50
100
150
200
250
t/ms
300
350
400
450
100
200
300
400
f/Hz
La vibration complexe
blan
et
haque bit 1
ode un pixel noir. Les gris peuvent tre obtenus visuellement par des mlanges de pixels blan
s et de pixels noirs. Une image mono
hrome en rsolution 1024 768 n
essite
don
786432 bits, soit 96Ko. On peut amliorer la qualit en asso
iant
haque pixel un niveau de
gris,
od sur huit bits. La mme image prendra alors 770Ko.
2.9.3 La vido
La premire ide qui vient l'esprit, aprs s'tre intress la
ompression des images, est d'en appliquer les prin
ipes la vido. Le Motion JPEG (not MJPEG ou M-JPEG)
onsiste appliquer
su
essivement l'algorithme de
ompression JPEG aux direntes images d'une squen
e vido. Etant
donn que le M-JPEG
ode sparment
haque image de la squen
e il permet d'a
der alatoirement
n'importe quelle partie d'une vido
e qui est intressant par exemple pour les studios de montage
numrique.
Dans beau
oup de squen
es vido, de nombreuses zones dans les images sont xes ou bien
hangent
trs peu,
omme par exemple les arrire-plan. C'est
e que l'on nomme la redondan
e temporelle .
L'ide est de ne d
rire que les
hangements d'une image l'autre sous forme d'un ensemble de ma
ro
blo
s
ods en JPEG. C'est
e que font les standards MPEG vido. Il en existe plusieurs :
MPEG-1 permet le sto
kage d'une heure de vido dans une qualit pro
he des
assettes VHS
sur un support CD de 600Mo,
MPEG-2 est utilis par les DVD vidos (4,7Go pour 2h30 de vido de haute qualit),
MPEG-4 permet le
odage et la diusion de donnes multimdia sous forme d'objets numriques
pour le Web et les priphriques mobiles (par tl
hargement ou par streaming,
'est dire
transmission et a
hage au fur et mesure).
Le
ode
DivX utilise la norme MPEG-4 et permet un DVD de tenir sur un simple CD au prix d'une
lgre dgradation de la qualit. Il fa
ilite bien entendu le transfert (parfois illi
ite . . .) des vidos sur
Internet,
omme le MP3 permet le transfert des
hiers audio.
18
Pour symboliser un
hire quel
onque (0 9), on utilise sept segments lumineux numrots de 0 6
et disposs selon le s
hma suivant :
1
0
2
3
La visualisation de
haque
hire
orrespond l'a
tivation d'une partie des segments. Le systme
adopt est rsum par la gure suivante :
Une entreprise gre des informations pour
ha
un de ses
lients. A
haque
lient est asso
i une zone
mmoire de longueur xe, organise de la manire suivante :
nom du
lient : la zone est prvue pour un nom de 15
ara
tres au maximum,
nombre de
ommandes ee
tues par le
lient : un entier,
la somme que le
lient doit ou que l'entreprise doit au
lient (somme < 0) : un rel,
un
ommentaire gnral sur le
lient : la zone est prvue pour un
ommentaire de 20
ara
tres
au maximum.
L'ordinateur utilis par l'entreprise
ode les informations de la manire suivante.
Une
hane de n
ara
tres est
ode sur n + 1 o
tets o le premier o
tet reprsente la taille
ee
tive de la
hane. Les
ara
tres sont
ods en ASCII sur 8 bits.
Les entiers sont
ods sur 16 bits, les nombres ngatifs tant
ods en
omplments deux.
L'o
tet
ontenant les bits de poids les plus faibles est pla
avant l'o
tet
ontenant les bits de
poids les plus forts.
Exemple : la valeur 1 est
ode en hexad
imal sur deux o
tets par 01 00.
Les rels sont
ods en virgule ottante sur 48 bits de la manire suivante.
Le nombre rel N est normalis en N = m 2e o 0, 1 m < 1.
L'exposant e est
od en ex
dent 128.
Pour la mantisse m, on remarque que dans la forme normalise 0, p0 p1 p2 ...p39 2e le bit p0
vaut toujours 1. En
onsquen
e seuls les bits de p1 p39 sont reprsents.
Le premier bit s
ode le signe.
octet 1 octet 2
s p1 p2 ...
octet 3
octet 4
octet 5 octet 6
p39 exposant
s : bit de signe
Exemple : ave
e systme de
odi
ation la reprsentation en ma
hine du nombre 256,0 est
00 00 00 00 00 89.
19
Adresses ------0000 07 42 6F 6C
0016 19 00 33 90
0032 43 4F 4E 54
0048 76 61 6C 6E
0064 94 00 00 00
0080 54 45 4E 54
0096 31 1D FF FF
0112 39 1D 3A 1D
-----------20 46 69 63 68
4D 41 49 53 20
69 73 05 44 75
63 68 36 00 9E
4C 49 45 4E 54
1D 2F 1D 30 1D
1D 37 1D 38 1D
1D 3F 1D 40 1D
Dans un
hier
omptable, le des
riptif de
haque
ompte
omporte trois zones
ons
utives
odes
de la manire suivante :
le numro du
ompte (binaire sur un o
tet),
le libell du
ompte (20
ara
tres ASCII sur un o
tet
ha
un),
le solde du
ompte (rel sur 32 bits en IEEE 754).
Donnez en hexad
imal la
odi
ation du
ompte
ontenant :
204PRODUITS_FINANCIERS_520,50 (le soulign
orrespondant un
ara
tre espa
e).
a) On ajoute au
ode ASCII sur sept bits un premier bit de parit. Le bit de parit vaut 1 quand le
nombre de bits 1 du
ode sur sept bits est impair et vaut 0 quand le nombre de bits 1 du
ode sur
sept bits est pair.
Exemple : 11001111 (le premier bit gau
he est le bit de parit).
Donnez dans
e
ode le
ara
tre F.
b) On ajoute un o
tet de parit
haque blo
de quatre
ara
tres : le premier bit est le bit de parit des
quatre bits de parit, le deuxime bit est le bit de parit des quatre premiers bits des
odes ASCII, et
.
Bit de parit
Caractre 1
Caractre 2
Caractre 3
Caractre 4
Octet de parit
La norme IEEE 754 pour les rels longs sur 64 bits est similaire la norme pour les rels
ourts sur
32 bits ave
les
ara
tristiques suivantes :
bit de signe (1 pour ngatif, 0 pour positif),
exposant sur 11 bits en ex
dent 1023,
mantisse sur 52 bits normalise en 1.bbbb (o b est un
hire binaire quel
onque) le 1. n'tant
pas reprsent (bit
a
h).
20
Soient les deux nombres
ods suivant la norme IEEE 754 et reprsents en hexad
imal : 3EE00000
et 3D800000.
Cal
ulez en la somme et donnez le rsultat sous forme IEEE 754 et sous forme d
imale.
Classez les nombres suivants (exprims en
omplment 2) dans l'ordre
roissant. Justiez votre
rponse sans
al
uler les nombres.
A
B
C
D
E
:
:
:
:
:
11111111
01111111
01110001
10000001
11110001
30. Suites
21
3 Le matriel
Dans
e
hapitre, nous tudions le matriel selon une appro
he en dirents niveaux ou
ou
hes. Nous
nous limitons aux
on
epts de base, utiles pour la
ulture gnrale de tout informati
ien professionnel.
Les dirents niveaux que nous allons d
rire sont les suivants :
les
omposants le
troniques qui sont la base de tout,
les portes logiques ET, OU, NON, . . .qui sont des assemblages de
omposants le
troniques
ralisant les fon
tions logiques lmentaires,
les
ir
uits logiques (additionneur,
omparateur, bas
ule, et
.) qui sont des assemblages de portes
logiques,
les
onstituants des ma
hines (mmoire, unit arithmtique et logique, et
.) qui sont des assemblages de
ir
uits logiques,
les ma
hines (PC, serveur, super-
al
ulateur . . .) qui sont des assemblages de
onstituants.
3.1
a) Le transistor
Son fon
tionnement peut tre rsum de la manire suivante. Du
ourant arrive par le
olle
teur. Si
au
un
ourant n'arrive par la base, le transistor est bloqu et ne laisse pas passer le
ourant. Le
ourant entr par le
olle
teur sort obligatoirement par la sortie. Soit en simpliant le dessin :
1
s
1
e
0
1 = prsence de courant
0 = absence de courant
Au
ontraire, si du
ourant arrive par la base, le transistor est satur ou passant . Il laisse passer
le
ourant. Celui-
i va toujours vers la terre, via l'metteur, et ne passe plus par la sortie.
1
s
0
e
1
1
22
s
1
0
e
Faux
Vrai
s
Vrai
Faux
Remarque : en dsignant par Vrai la prsen
e de
ourant et par Faux son absen
e, on re
onnat
aisment la fon
tion logique NON ou ngation.
Une autre reprsentation de
ette fon
tion est l'quation logique : s = e, qui se lit s vaut 1 (not s)
si et seulement si e vaut 0 (not e) .
Enn la reprsentation graphique dans la norme internationale d'une porte NON est la suivante :
s
b) Combinaison de 2 transistors
e1
e2
Pour que le
ourant aille vers la terre (s) il faut que les 2 transistors soient saturs (e1=1 et
e2=1) ; sinon, un des transistors est bloqu et le
ourant sort obligatoirement par le haut.
La table de vrit est don
la suivante :
e1 e2 s
e1
e2
s
0
0 0
Faux Faux Faux
1 0
0
Faux Vrai Faux
1
Vrai Faux Faux
0 0
1 1
Vrai
1
Vrai Vrai
On re
onnat la fon
tion logique ET. L'quation logique s'
rit : s = e1.e2, qui se lit s vaut 1
si et seulement si e1 ET e2 valent 1 .
La reprsentation graphique du ET ( 2 ou n entres) est la suivante.
e1
e2
e1
e2
s
23
Le
ourant n'atteint pas s seulement si les deux transistors sont bloqus (e1 et e2 = 0) ; sinon,
un des transistors est satur et le
ourant va vers la terre (s).
La table de vrit est don
la suivante :
e1
e2
s
e1 e2 s
0
0 0
Faux Faux Faux
0
Faux Vrai
1 1
Vrai
0 1
1
Vrai Faux Vrai
1 1
Vrai
1
Vrai Vrai
+ e1.e2, qui se
On re
onnat la fon
tion logique OU. L'quation logique est : s = e1.e2
+ e1.e2
lit s vaut 1 si et seulement si [e1 vaut 0 ET e2 vaut 1 OU [e1 vaut 1 ET e2 vaut 0 OU [e1
vaut 1 ET e2 vaut 1 .
La reprsentation graphique du OU ( 2 ou n entres) est la suivante.
e1
s
e2
3.2
Ave
le NON, le ET et le OU on peut
onstruire toutes les fon
tions logiques. Le NON-OU (ngation
du OU), le NON-ET (ngation du ET), et le OU ex
lusif (XOR qui vaut 1 si l'une des deux entres
mais pas les deux valent 1)
onstituent d'autres portes logiques souvent utilises.
e1
0
0
1
1
e2
0
1
0
1
NON ET
1
1
1
0
e1
Faux
Faux
Vrai
Vrai
e2
Faux
Vrai
Faux
Vrai
NON ET
Vrai
Vrai
Vrai
Faux
e1
e2
s = e1.e2
e1
0
0
1
1
e2
0
1
0
1
NON OU
1
0
0
0
e1
Faux
Faux
Vrai
Vrai
e2
Faux
Vrai
Faux
Vrai
NON OU
Vrai
Faux
Faux
Faux
e1
s
e2
s = e1.e2 + e1.e2 = e1 + e2
e1
0
0
1
1
3.3
e2
0
1
0
1
XOR
0
1
1
0
e1
Faux
Faux
Vrai
Vrai
e2
Faux
Vrai
Faux
Vrai
XOR
Faux
Vrai
Vrai
Faux
e1
s
e2
24
2. les
ir
uits squentiels , o les sorties l'instant t dpendent des entres et des sorties
l'instant t-1 : S1 (t), ... , Sn (t) =f(E1 , ...,Em , S1 (t 1), ..., Sn (t 1)) ; il y a don
possibilit
de
onserver de l'information du temps t 1 au temps t et don
de
onstruire des mmoires
(
ir
uits qui se souviennent des valeurs pr
dentes).
Il ne faut pas
onfondre
ir
uits logiques et
ir
uits physiques. Les
ir
uits physiques sont des botiers
(pu
es) qui renferment un nombre plus ou moins important de portes logiques inter
onne
tes. Les
mi
ropro
esseurs sont des pro
esseurs intgrs dans une pu
e et
onstruits ave
des
ir
uits trs forte
intgration (VLSI pour very large s
ale integration ).
La loi de Moore, non
e en 1965 et approximativement vrie depuis, prdisait que le nombre de
transistors intgrs dans les pu
es allait doubler
haque anne.
Au
ontraire, le CMOS 4011 reprsent
i-dessous est un
ir
uit trs faible intgration qui
ontient
quatre portes NON-ET et 14 bro
hes (la bro
he 14 est l'alimentation et la bro
he 7 est la terre). Un
tel
ir
uit permet de raliser des petits montages en
onne
tant les bro
hes.
25
14
On peut noter au passage qu'ave
uniquement des portes NON-ET (ou uniquement des portes NONOU) on peut
onstruire des
ir
uits quivalents aux portes ET, OU et NON et don
n'importe quelle
fon
tion logique. On le montrera dans un des exer
i
es.
b
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
d
0
0
0
1
0
1
1
1
b b
abc
abc
d
abc
abc
26
Il est
lair que plus l'quation logique est simple, plus le
ir
uit est simple. Il est don
intressant
d'appliquer les rgles de l'algbre de Boole pour simplier l'quation logique. Vous tudierez
ette
thorie plus en dtail en
ours d'algbre. Elle est dnie par les axiomes et thormes suivants :
0 = 1
a+0 = a
a+1 = 1
a+a = a
a+a
=1
(a + b) + c = a + (b + c)
a+b = b+a
a.(b + c) = a.b + a.c
=a
a
a+b = a
.b
1=0
a.1 = a
a.0 = 0
a.a = a
a.
a=0
(a.b).c = a.(b.c)
a.b = b.a
a + b.c = (a + b).(a + c)
a.b = a
+ b
onstantes
lments neutres
lments absorbants
lments idempotents
lments
omplmentaires
asso
iativit
ommutativit
distributivit
double ngation
thormes de De Morgan
=1
Montrons que a + a
0 1
1
1
1 0
a b
b+
a.(b+
)
0 0 0
0
0
1
0
0 0 1
0 1 0
1
0
Montrons que a.(b+
) = a.b + a.
1
0
0 1 1
0
0
1 0 0
1 0 1
1
1
1
1
1 1 0
1 1 1
1
1
a.b
0
0
0
0
0
0
1
1
a.
0
0
0
0
0
1
0
1
a.b+a.
0
0
0
0
0
1
1
1
La simpli
ation du
ir
uit
onstruit au dbut du paragraphe est donne
i-dessous. L'quation logique
.b.c+ a.b.c+ a.b.
c + a.b.c = (
a.b+ a.b).c+ a.b.(
c + c) = (a b).c+ a.b.
est fa
torise puis simplie : d = a
Soit le
ir
uit :
noter qu'il existe des mthodes systmatiques de simpli
ation,
omme la mthode des tableaux de
Karnaugh. Elle est explique l'annexe C.
Les exer
i
es suivants permettent de
onstruire des
ir
uits de
al
ul de plus en plus
omplexes jusqu'
obtenir une unit arithmtique et logique simplie.
Exer
i
es
1. Donnez
2.
a + b) = a
.b + a.b. Donnez un deuxime
ir
uit possible pour le OU exMontrez que (a + b).(
lusif.
27
b
0
1
0
1
s
0
1
1
0
r
0
0
0
1
a
b
s
r
1/2+
Il ralise l'addition de deux bits a et b ave
la somme dans s et la retenue dans r . Penser utiliser le
OU ex
lusif.
5.
s (somme)
rs (retenue en sortie)
Remarque : l'applet JARCHI (disponible sur le site www.loria.fr/~jlon
ham, onglet enseignement)
donne une simulation pas pas d'un demi-additionneur et d'un additionneur
omplet.
Construisez un d
odeur qui transforme l'information porte par n entres (le
ode binaire) en
un
hoix d'un l de sortie parmi les 2n sorties possibles.
Exemple pour n = 2 :
e1
0
0
1
1
e2
0
1
0
1
s1
1
0
0
0
s2
0
1
0
0
s3
0
0
1
0
e1
s4
0
0
0
1
dec
e2
a
b
a0
...
a3
b0
...
b3
28
s1
s2
s3
s4
9. Construisez une unit arithmtique et logique lmentaire. A partir d'un
ode opration sur deux
bits (quatre oprations possibles) et trois bits de donnes, elle ralise soit un OU, soit un ET, soit un
NON, soit une addition de deux bits.
1
0
0
1
1
2
0
1
0
1
rsultat
a ET b dans s, 0 dans rs
a OU b dans s, 0 dans rs
NON a dans s, 0 dans rs
somme de a, b et re dans s, retenue dans rs
donnes
code
a
b
re
c1
c2
UAL
s
rs
On utilisera un d
odeur et un additionneur
omplet. Le prin
ipe est le suivant : partir des ls de
donnes, faites tous les
al
uls demands ; gr
e une porte sur
haque l de sortie du d
odeur,
sle
tionnez un des rsultats et amenez
e rsultat dans les ls s et rs.
Remarques :
l'applet JARCHI donne une simulation pas pas de
e
ir
uit,
le lien entre matriel et logi
iel
ommen
e un peu apparatre. Comme nous le verrons plus
tard,
haque instru
tion du langage ma
hine
omprend un
ode opration. Gr
e au d
odeur
et aux portes de sle
tion d'un des
ir
uits de
al
ul,
e
ode opration d
len
he l'apparition
du rsultat de l'opration voulue sur les ls de sortie de l'UAL.
Q
R
Il y a huit
as regarder, fon
tion des deux entres et de l'tat initial de Q. Les gures
i-aprs
illustrent
es huits
as.
Si Q = 0 et si R = S = 0 (pas d'entres), Q reste 0. La bas
ule garde indniment en mmoire le
bit 0 (tat stable 0).
Si Q = 1 et si R = S = 0 (pas d'entres), Q reste 1. La bas
ule garde indniment en mmoire le
bit 1 (tat stable 1).
Si Q = 1 et si R = 1, Q passe 0 (reset ). La valeur de la mmoire est modie.
Si Q = 0 et R = 1, la mmoire reste 0.
Si Q = 0 et si S = 1, Q passe 1 (set ). La valeur de la mmoire est modie.
Si Q = 1 et S = 1, la mmoire reste 1.
.
S = 1 en mme temps que R = 1 doit tre interdit. On arrive en eet un tat in
ohrent o Q = Q
En jouant ave
les entres R et S , on peut donner la mmoire la valeur que l'on veut.
29
JARCHI permet de visualiser les volutions pas pas des 8
as possibles (selon les valeurs de Q,
S et R).
S
S
1
0
Q
S
1
0->1
1
R
Q
0
1->0
0
0->1
0
R
1->0
R 0
1
1
1->0
0->1
0
1
R 0
1
0
1->0
1->0
0
0
R
Q
1->0
Q
1->0
R
1
Q
1
R
1->0
Q
l'instant
Si on veut utiliser une table de vrit pour d
rire la bas
ule RS il faut distinguer Q et Q
n (avant l'arrive des bits sur R et S ) et l'instant n+1 (aprs l'arrive des bits sur R et S ).
30
R
0
0
0
0
1
1
1
1
S
0
0
1
1
0
0
1
1
Qn
0
1
0
1
0
1
0
1
Qn
1
0
1
0
1
0
1
0
Qn+1
0
1
1
1
0
0
0
0
Qn+1
1
0
0
0
1
1
0
0
Commentaire
mmorisation de 0
mmorisation de 1
mise 1
dj 1
dj 0
mise 0
interdit
interdit
S
0
1
0
1
Commentaire
mmorisation
mise 1
mise 0
interdit
Qn+1
Qn
1
0
Si on veut d
rire en
ore plus pr
isment les
ir
uits squentiels il faut tenir
ompte des dures de
bas
ulement des portes et de propagation des bits entre les portes. Le
hronogramme
i-aprs est une
manire de reprsenter les volutions temporelles d'un
ir
uit.
temps
S
R
Q 1
0
Q
Les exer
i
es suivants permettent de
onstruire des
ir
uits de mmoire de plus en plus
omplexes
jusqu' obtenir une mmoire
entrale simplie.
Exer
i
es
10.
A partir de la bas
ule RS, ajouter une entre CS (
hip sele
t ) qui inhibe les entres R et S .
Si CS = 0, R et S n'ont pas d'eet. Si CS = 1, R et S ont leur eet normal. Gr
e CS , la bas
ule
ne peut
hanger de valeur que si la bas
ule est sle
tionne (CS = 1).
Q
S
CS
Bascule
RS
31
Remarque : si le l CS est reli une horloge (on parle alors de l CK, abrviation de
lo
k ), la
bas
ule n'est a
tive qu'au moment des tops d'horloge. Une telle bas
ule "syn
hrone" n'volue don
plus au moment o les entres
hangent mais des moments bien pr
is et rgulirement espa
s. On
parle de bas
ule syn
hrone .
11. Reprendre la bas ule pr dente et onstruire une bas ule ave une seule entre D, telle que :
D = 0 S = 0 et R = 1,
D = 1 S = 1 et R = 0.
Ce
i limine les
as interdits (S et R = 1 en mme temps).
D
?
CS
On a don
une mmoire de 1 bit qui garde sur Q la valeur de D (D
omme data ou donne ) et
qui ne peut
hanger de valeur que quand la mmoire est sle
tionne (CS 1). On parle de bas
ule
D (
omme donne) ou de bas
ule lat
h . Sa table de vrit est trs simple :
D
0
1
Qn+1
0
1
Commentaire
mmorisation de 0
mmorisation de 1
Remarque : l'applet JARCHI donne la simulation pas pas de la bas ule RS et de la bas ule D.
Entres
E1,E2,E3
Sorties
S1,S2,S3
Reg
CS
LEC
13.
Construire une mmoire de 4 mots de 3 bits, ave
quatre registres de 3 bits et un d
odeur
pour l'adresse. L'adresse
ontient le numro du mot lire/
rire (de 0 3).
Entres
(E1,E2,E3)
Mem
Sorties
(S1,S2,S3)
Adresses
(A1,A2)
CS
LEC
On pourra s'aider des quations logiques suivantes (o fi est un l de sortie du d
odeur d'adresse) :
32
CSi = fi .CS (seul un registre est sle
tionn :
elui dont on donne l'adresse),
LECi = LEC (tous les registres sont soit lus soit
rits).
Remarques :
l'applet JARCHI donne une simulation de
ette mmoire.
le lien entre matriel et logi
iel se pr
ise un peu plus ;
omme nous le verrons plus tard, en
plus du
ode opration,
haque instru
tion en langage ma
hine
ontient une (des) adresse(s)
d'oprande(s). Gr
e au d
odeur,
haque adresse permet de r
uprer une valeur qui peut tre
envoye en entre de l'UAL pour subir l'opration d
rite par le
ode opration.
14. Reprendre la bas ule RS ave l CS de l'exer i e 10. On onsidre e l CS omme une entre et
entre
Qt
0
1
0
1
Qt+1
Q
S
entre
R
Q
R
On envoie de brves impulsions 1 su
essives sur le l d'entre. On suppose que par
onstru
tion la
bas
ule
hange de valeur la n de l'impulsion (sur son front des
endant de 1 0). Initialement, les
trois bas
ules sont 0. Dessiner le
hronogramme montrant les valeurs sur le l d'entre et sur les ls
de sortie A, B et C . Quelle fon
tion ralise
e
ir
uit ?
3.4
C'est en 1946 que John von Neumann a pos les prin
ipes de
e qu'est un ordinateur,
'est--dire une
ma
hine de traitement de l'information programme enregistr. Les instru
tions du programme sont
ranges dans les
ellules su
essives d'une mmoire et sont ex
utes dans l'ordre de leur rangement
(sauf instru
tion de bran
hement ou saut ou rupture de squen
e qui aiguille vers une autre
partie du programme). Comme le programme est introduit en mmoire et non g dans les
ir
uits
de la ma
hine on peut en
hanger volont : on parle de ma
hine universelle de traitement de
l'information.
33
Mmoire
auxiliaire
Sortie
d&i
Unit
dchange
d&i
Unit
dchange
Unit
dchange
Mmoire centrale
d&i
Instr 1
Donne
Instr N
Donne
programme
donnes
signaux de commande
Unit de
commande
instructions
Unit arithmtique
et logique
donnes
Bus
Chaque type de pro
esseur est
apable d'ex
uter un
ertain ensemble d'instru
tions, son jeu d'instru
tions . Cet ensemble d'instru
tions
onstitue le langage dire
tement
omprhensible par le pro
esseur ou langage ma
hine .
Les donnes sont transformes par l'unit arithmtique et logique qui ee
tue les oprations arithmtiques (+, , , / . . .) et logiques (=, <, >, ET, OU . . .).
Ces prin
ipes trs simples n'ont pu tre
on
rtiss que dans les annes 1950 ave
l'avnement de
l'le
tronique moderne.
34
C'est un ensemble de
ellules mmoires ( mots ) qui peuvent
ontenir
ha
une une donne ou une
instru
tion en binaire. Chaque
ellule est repre par un numro, ou adresse. On peut lire ou
rire
une information une adresse donne. Le temps d'a
s est le mme quel que soit le mot
on
ern.
L'adresse doit tre pla
e dans le registre d'adresse (RA). Un dispositif sle
tionne la bonne
ellule
(
f. le d
odeur et le l
hip sele
t vu pr
demment). En
as d'
riture, l'information
rire doit
tre pla
e dans le registre mot (RM). En
as de le
ture, l'information lue est pla
e dans le registre
mot.
La mmoire
entrale perd tout son
ontenu lorque l'alimentation le
trique est
oupe (
ontrairement
aux mmoires externes
omme les disques). La mmoire
entrale peut tre sujette des erreurs soit
permanentes (usure, dfaut de fabri
ation) soit intermittentes (problme d'alimentation le
trique,
parti
ules alpha). On sto
ke souvent
haque mot de M bits ave
K bits supplmentaires permettant
de dte
ter et de
orriger d'ventuelles erreurs. Ces K bits de
ontrle sont
al
uls avant
riture en
mmoire, sto
ks en mmoire et re
al
uls en le
ture pour
omparaison et ventuellement
orre
tion
de la donne.
adresse
1000
1001
Valeur binaire
(donne ou
instruction)
val
4369
mot
Slection
dadresse
Registre
dadresse (RA)
4369
val
Registre
Mot (RM)
999
Comme la mmoire
entrale est de taille limite elle est souvent gre
omme une mmoire virtuelle plus grande que la mmoire physique. Cette mmoire virtuelle est d
oupe en pages ranges soit en mmoire physique soit en mmoire auxiliaire (disque). C'est le systme d'exploitation qui
transfre, selon les besoins du moment, les pages utiles vers la mmoire physique et les pages inutiles
vers la mmoire auxilaire.
b) Te hnologies
Du point de vue te
hnologique on distingue 2 types de mmoires
entrales (ou mmoires vives ou
RAM pour Random A
ess Memory ) dont les donnes sont perdues en absen
e d'alimentation le
trique :
1. les RAM statiques (SRAM) qui utilisent le prin
ipe des bas
ules ; elles sont trs rapides, de prix
lev et don
prin
ipalement utilises dans les mmoires
a
hes (
f.
i-aprs),
2. les RAM dynamiques (DRAM de divers types SDRAM, RDRAM, DR-SDRAM, DDR-SDRAM,
DDR2-SDRAM . . .) qui n
essitent un rafra
hissement priodique des informations ; elles sont
moins rapides, moins
oteuses et plus fortement intgres. Elles sont utilises pour les mmoires
entrales.
Il existe aussi des mmoires mortes le
ture seule (ROM pour Read Only Memory ). Elles gardent
leurs valeurs mme en absen
e d'alimentation le
trique. On distingue les :
ROM vritables :
harges en informations la fabri
ation,
35
PROM (Programmable ROM) :
harges par l'utilisateur du
ir
uit (
riture une seule fois),
EPROM (Erasable PROM) : eaables en les plaant dans une ma
hine sp
iale (sous rayons
ultraviolets par exemple) et modiables plusieurs fois,
EEPROM (Ele
tri
ally EPROM) : eaables le
triquement (plusieurs
entaines de mi
ro se
ondes par o
tet).
) Mmoire a he
Le pro
esseur est beau
oup plus rapide que la mmoire
entrale. Pour tenir
ompte de
ette diren
e
de vitesse on inter
ale une mmoire
a
he plus rapide que la mmoire
entrale entre le pro
esseur et la
mmoire
entrale. La mmoire
a
he est ralise ave
des te
hnologies
oteuses et reste don
de faible
apa
it. Son prin
ipe est le suivant : si l'information utile,
'est--dire un mot mmoire parti
ulier,
est dans le
a
he on y a
de rapidement ; sinon, on a
de la mmoire
entrale et on range dans
le
a
he un blo
de K mots autour du mot dsir,
ar il y a une bonne probabilit que
e mot ou
un mot pro
he soit de nouveau utile peu de temps aprs. C'est le prin
ipe de lo
alit spatiale et
temporelle , li au fait que les instru
tions se suivent en mmoire et que les donnes sont souvent
sto
kes
ons
utivement. Un algorithme de rempla
ement d
ide quel blo
prsent dans le
a
he est
rempla
par le nouveau blo
: le plus an
ien (rst in rst out ou FIFO), le plus an
iennement utilis
(last re
ently used ou LRU), le moins frquemment utilis (least frequently used ou LFU), un pris au
hasard, et
.
requte
requte
cache
processeur
bloc
mot
mmoire
centrale
Les ordinateurs a
tuels possdent souvent plusieurs niveaux de
a
he. Sur les PC, le
a
he L1 (level
1 ), le plus rapide, est interne au mi
ro-pro
esseur. Il
omporte un mini
a
he d'instru
tions et un mini
a
he de donnes. Le
a
he L2, un peu moins rapide, est souvent in
lus dans le mme botier que le
pro
esseur. Il est parfois
omplt par un
a
he L3, situ sur la
arte mre.
L'idal, pour un ordinateur, serait de disposer d'un seul type de mmoire, trs rapide et de trs grande
apa
it. Cela est malheureusement irralisable a
tuellement du fait du
ot engendr, les mmoires
les plus rapides tant aussi les plus
hres. Par ailleurs, bien que la
apa
it totale de donnes mmoriser soit importante, il n'est pas n
essaire de disposer d'un temps d'a
s rapide pour toutes les
donnes. Seules les donnes les plus utilises n
essitent un temps d'a
s trs
ourt. On utilise don
une hirar
hie de mmoires qui va de la mmoire d'a
s trs rapide en petite quantit (le registre)
la mmoire de trs grande
apa
it orant un temps d'a
s plus important (disque ou SSD). Le
tableau
i-dessous prsente les niveaux mmoire que l'on trouve dans les ma
hines a
tuelles :
Capa
its typiques
Temps d'a
s (ns)
Cot relatif
Registre
<Ko
15
50
Mmoire
a
he
Mo
3 10
10
Mmoire
entrale
Go
10 400
1
Disque
>100Go
5000000
0,001
a) Les registres
2. le registre instru
tion (RI) : il reoit l'instru
tion ex
uter ; l'instru
tion
ontient toujours un
ode opration (ou
ode instru
tion) et de 0 n adresses d'oprandes.
La prise en
ompte du
ode opration
onsiste envoyer une srie de signaux de
ommande
aden
s
par l'horloge qui
ommandent la ralisation de l'opration par les autres
ir
uits.
On peut don
avoir un mme langage ma
hine (mmes
odes oprations) traduit en signaux de
ommande dirents qui retent des ar
hite
tures matrielles direntes.
Plus l'horloge bat vite (frquen
e d'horloge exprime en GigaHertz) et plus l'instru
tion est ralise
vite sur les
ir
uits de la ma
hine.
instruction
Horloge
Code
instruction
Adresses
oprandes
top
Squenceur
Adresse de la prochaine
instruction excuter
Compteur ordinal (CO)
Le prin
ipe d'ex
ution d'un programme est don
la rptition du mme
y
le d'oprations, appel
y
le
her
herd
oderex
uter :
rpter
n
her
her l'instru
tion dont l'adresse est dans CO et la mettre dans RI ;
in
rmenter de 1 CO ;
d
oder le
ontenu de RI ;
s'il y en a,
her
her le (les) oprande(s) dont on a l'adresse (les adresses) ;
ex
uter l'opration
orrespondant au
ode opration ; si
'est un bran
hement CO est re-modi
Le squen
eur, qui gnre les signaux de
ommande partir du
ode opration, peut tre
bl (
'est
dire ralis par un
ir
uit) ou mi
roprogramm. Dans
e dernier
as, le squen
ement est d
rit par une
suite de mi
ro-instru
tions. Ce mi
roprogramme, lo
alis en ROM, est ex
ut par une mi
ro-ma
hine
dote d'un mi
ro-
ompteur de programme et d'une mmoire.
C'est souvent le
as des pro
esseurs ayant un jeu d'instru
tions
omplexes et de tailles variables ou
pro
esseurs CISC (Complex Instru
tion Set Computer ),
omme les pro
esseurs Intel. Au
ontraire,
les pro
esseurs RISC (Redu
ed Instru
tion Set Computer ),
omme les pro
esseurs PowerPC, ALPHA,
SPARC ou MIPS, ont un petit nombre d'instru
tions de taille xe et utilisent en gnral un squen
eur
bl pour plus d'e
a
it.
L'ar
hite
ture CISC, la plus an
ienne, se justife par la lenteur de la mmoire vis vis du pro
esseur. Il apparat don
intressant de dnir des oprations
omplexes, ralises au sein du pro
esseur,
plutt que des suites d'oprations simples, impliquant de nombreux a
s mmoire. Mais des tudes
statistiques ont montr au dbut des annes 70 que 80% des programmes gnrs par les
ompilateurs
faisaient appel seulement 20% des instru
tions ma
hine. D'o l'ide de l'ar
hite
ture RISC de rduire le jeu d'instru
tions
es 20% d'instru
tions les plus utilises, en
her
hant les optimiser au
maximum ave
des squen
eurs
bls. La tendan
e a
tuelle
onsiste mitiger les ar
hite
tures RISC
ave
des
ara
tristiques issues des ar
hite
tures CISC ou inversement.
37
CISC
jeu d'instru
tions large
instru
tions de tailles direntes
instru
tions de dures direntes
squen
eur mi
roprogramm
RISC
jeu d'instru
tions rduit
instru
tions de mmes tailles
instru
tions de mmes dures
squen
eur
bl
Circuits de calcul
de lUAL
Code opration
Registre
dtat (RE)
Oprande1
(mmoire centrale)
Oprande2
(mmoire centrale)
1
Accumulateur (ACC)
Circuits de calcul
de lUAL
Registre
dtat (RE)
Rsultat
(mmoire centrale)
Code opration
Oprande2
(mmoire centrale)
Cette organisation ave
a
umulateur a t utilise par les premiers mi
ropro
esseurs 8 bits (Intel 8080
et Motorola 6800). Dans les mi
ropro
esseurs 16 bits (Intel 8086 et Motorola 68000) l'a
umulateur
38
a t rempla
par un petit nombre de registres gnraux. Pour reprer un registre parmi les quatre
(R1, R2, R3, R4) 2 bits susent dans les instru
tions :
1. transfert de l'oprande dans un des 4 registres gnraux (Ri),
2. opration ave
Ri et l'oprande 2, rsultat dans Ri,
3. transfert de Ri en mmoire.
Les mi
ropro
esseurs les plus r
ents (Pentium, PowerPC, ALPHA, SPARC, MIPS . . .) utilisent uniquement des registres et plus au
une adresse dans les instru
tions :
1. transfert de l'oprande 1 dans un registre Ri,
2. transfert de l'oprande 2 dans un registre Rj,
3. opration ave
Ri et Rj, rsultat dans Rk,
4. rangement de Rk en mmoire.
Il peut alors y avoir un grand nombre de registres adresss par quelques bits seulement.
noter enn qu'il peut exister d'autres units de
al
ul que l'UAL dans un pro
esseur. C'est le
as des units de
al
ul pour les rels ottants (FPU) et des units de
al
ul multimdia (MMU) pour
les
al
uls ve
toriels.
39
ACC
C1
Squenceur
UAL
B1
C1
C1
RM
Code
Unit de cde
RI
adresse
B2
A4
CO
B3
A2
A3
A1
+1
oprande
RA
instruction
Mmoire centrale
JARCHI permet de simuler l'ex
ution d'un programme sur une ar
hite
ture ave
un a
umulateur.
La ma
hine est minimum et
omporte N mots de 4
ara
tres, d'adresses 0 N. Le programme doit
ommen
er l'adresse 0 (initialisation du CO 0).
Chaque instru
tion
omporte un
ode sur 2
ara
tres et ventuellement une adresse sur 2
ara
tres.
Codes
10
20
30
40
50
51
52
53
99
Instru
tions
hargement dans ACC du mot indiqu
(ex : 1025 pour le
hargement dans ACC du mot 25)
rangement de ACC dans le mot mmoire indiqu
addition de ACC et du mot mmoire indiqu
omparaison de ACC et du mot mmoire indiqu ; le drapeau reoit 0,1,2
selon que ACC est =, >, < au mot mmoire
saut in
onditionnel l'adresse indique (ex : 5012)
si drapeau = 0, saut l'adresse indique
si drapeau = 1, saut l'adresse indique
si drapeau = 2, saut l'adresse indique
arrt du programme
On tudiera au hapitre suivant une ma hine simule ave un langage ma hine plus raliste.
Exer
i
es
16.
rire un programme qui additionne trois donnes et range le rsultat dans un 4emot de la
mmoire. Simuler le ave
JARCHI.
ontre, il faut interdire deux
omposants d'mettre simultanment un signal
ar
eux-
i pourraient
interfrer. Une mthode d'arbitrage vitant
ette situation doit tre mise en pla
e. Cet arbitrage est
ralis soit par un
omposant sp
ialis (le
ontrleur de bus), dans le
as d'un arbitrage
entralis,
soit par la
oopration des
omposants
onne
ts au bus, dans le
as d'un arbitrage d
entralis.
Il y a de nombreux types de bus organiss selon direntes ar
hite
tures de bus. On trouve en gnral
le bus lo
al entre le pro
esseur et le
a
he, trs rapide, le bus systme entre la mmoire
entrale et le
a
he, assez rapide, et des bus d'entres/sorties ou bus d'extension entre le bus systme et les priphriques, plus lents.
Parmi les bus d'entres/sorties
ourants sur les PC on peut
iter les bus AGP et PCI-EXPRESS pour
les
artes graphiques, les bus PCI pour les
artes rseaux et son, les bus ATA, SATA, SCSI pour les
disques, les bus USB et Firewire pour les priphriques externes.
secteur
rotation
axe
piste
cylindre
axe
Dplacement des
ttes
Le temps d'a
s pour lire ou
rire un se
teur du disque dur dpend de la vitesse de rotation du
disque, de la vitesse de dpla
ement des ttes et de la dimension du disque.
Chaque transfert (le
ture ou
riture d'un se
teur) demande les oprations suivantes :
41
si les ttes ne sont pas sur le bon
ylindre, dpla
ement des ttes ; on dnit le temps de positionnement moyen (par
ours en moyenne de la moiti du rayon),
attente de l'arrive du dbut du se
teur vis sous la tte de le
ture ; en moyenne, il faut que le
disque tourne d'un demi-tour ;
e temps est appel demi dlai rotationnel,
transfert des donnes, qui dure le temps n
essaire pour faire dler le se
teur entier sous la tte
de le
ture.
Le dbit d'information maximal est dtermin par la vitesse de rotation du disque et la densit d'enregistrement longitudinale. Il est parfois limit par le dbit du bus d'entres/sorties reliant le disque
l'ordinateur. Les fabriquants de disques durs indiquent en gnral le temps d'a
s moyen et le taux
de transfert maximum (dbit).
Le rangement des
hiers sur le disque dpend du systme de gestion des
hiers du systme d'exploitation.
Avant utilisation un disque dur doit tre format.
1. Formatage de bas niveau : les pistes du disque sont divises en un nombre donn de se
teurs.
2. Partitionnement : il permet de diviser le disque dur en plusieurs zones appeles partitions pouvant
tre gres par dirents systme d'exploitation. Il est possible d'installer des partitions pour
plusieurs systmes,
omme Windows (systmes de
hiers FAT32 ou NTFS) et Linux (systmes
de
hiers ext2 et ext3).
3. Formatage de haut niveau (ou formatage logique) : pendant
ette phase, le systme d'exploitation
rit sur le disque les stru
tures n
essaires pour grer les
hiers et les donnes (se
teur amor
e,
tables d'allo
ation, rpertoires ra
ines par partition . . .).
42
3. L'
hange dire
t ave
la mmoire :
e mode permet le transfert de blo
s de donnes entre la
mmoire et un priphrique sans passer par le mi
ropro
esseur. Pour
ela, un
ir
uit appel
ontrleur de DMA (Dire
t Memory A
ess ) prend en
harge entirement le transfert des blo
s
de donnes. Le mi
ropro
esseur doit tout de mme :
initialiser l'
hange en donnant au DMA l'identi
ation du priphrique
on
ern,
donner le sens du transfert (entre ou sortie),
fournir l'adresse du premier et du dernier mot
on
erns par le transfert.
Le
ontrleur de DMA est dot d'un registre d'adresse, d'un registre de donne, d'un
ompteur
et d'un dispositif de
ommande (
'est un vrai petit pro
esseur sp
ialis). Pour
haque mot
hang, le DMA demande au mi
ropro
esseur le
ontrle du bus, ee
tue la le
ture ou l'
riture
mmoire l'adresse
ontenue dans son registre et libre le bus. Il in
rmente ensuite
ette adresse
et d
rmente son
ompteur. Lorsque le
ompteur atteint zro, le dispositif informe le pro
esseur
de la n du transfert par une interruption.
Le prin
ipal avantage est que, pendant toute la dure du transfert d'un blo
de donnes, le
pro
esseur est libre d'ee
tuer un autre traitement. La seule
ontrainte est une limitation de
ses propres a
s mmoire pendant toute la dure de l'opration, puisqu'il doit parfois retarder
ertains de ses a
s pour permettre au dispositif d'a
s dire
t la mmoire d'ee
tuer les siens
(arbitrage pour l'a
s au bus).
La gure suivante donne une ar
hite
ture de ma
hine possible ave
les dirents types de bus et le
ontrleur DMA.
Processeur
Mmoire centrale
Bus local
Cache
Bus systme
Contrleur DMA
Bus E/S
UE
UE
UE
Bus externes
Ecran
Disque
rseau
plusieurs programmes est mise en uvre par le systme d'exploitation (unix, windows . . .).
Le systme d'exploitation est un programme
harg de fa
iliter l'utilisation de l'ordinateur et d'en
optimiser le fon
tionnement. Il gre en parti
ulier les ressour
es (mmoire virtuelle, pro
esseur(s),
units d'
hange) pour les partager entre plusieurs programmes en
ours d'ex
ution (pro
essus).
L'tude des systmes d'exploitation sort du
adre du
ours d'ar
hite
ture des ordinateurs et fera
l'objet de
ours sp
iques ultrieurement.
Applications
Systme dexploitation
Langage machine
Matriel
3.5
Les ar hite tures avan es : ar hite tures pipelines, supers alaires et multi ore
Comme nous l'avons vu, le traitement d'une instru
tion
omprend plusieurs phases. Au lieu de les
ex
uter squentiellement on peut
her
her les ee
tuer en parallle pour plusieurs instru
tions
su
essives. Supposons que les phases
orrespondent aux trois tapes
her
her (CH), d
oder (DE),
ex
uter (EX). Dans une ma
hine pipeline on aura don
:
Instru
tions/tages
instri
instri+1
instri+2
1
CH
Instru
tions/tages
instri
instri+1
instri+2
1
CH
2
DE
CH
3
EX
DE
CH
EX
DE
EX
2
DE
3
EX
CH
DE
EX
CH
DE
EX
au lieu de :
Le gain de rapidit est d l'augmentation du ux des instru
tions traites et non pas la rapidit de
traitement de
haque instru
tion. Il faut noter que
haque tage du pipeline a
omme dure
elle de
la phase la plus longue (
ar les trois s'ex
utent en parallle). L'e
a
it du pipeline dpend aussi de
la manire dont le programme est
rit. Par exemple, si une instru
tion de
al
ul a besoin du rsultat
de l'instru
tion de
al
ul juste avant, le pipeline est en dfaut. Les
al
uls doivent tre optimiss par
le programmeur ou le
ompilateur. De plus, en
as de bran
hement
onditionnel, on peut
ommen
er
le traitement des instru
tions qui suivent de manire inutile. Dans
ertains pro
esseurs on tente de
prdire si le bran
hement va avoir lieu ou non en fon
tion d'une table des ex
utions passes des
bran
hements ( anti
ipation de bran
hement ).
Les pro
esseurs supers
alaires possdent plusieurs pipelines qui fon
tionnent en parallle. Un supers
alaire de degr n possde n pipelines parallles. On a don
du paralllisme entre instru
tions en
plus du re
ouvrement des phases l'intrieur des instru
tions.
Ce paralllisme est
omplexe grer
ause des syn
hronisations n
essaires. En outre, il n'est pas
toujours possible d'utiliser plein tous les pipelines.
Exemple d'ex
ution sur un supers
alaire de degr 4 :
44
Instru
tions/tages
instri
instri+1
instri+2
instri+3
instri+4
instri+5
instri+6
instri+7
instri+8
instri+9
instri+10
instri+11
1
CH
CH
CH
CH
2
DE
DE
DE
DE
CH
CH
CH
CH
3
EX
EX
EX
EX
DE
DE
DE
DE
CH
CH
CH
CH
EX
EX
EX
EX
DE
DE
DE
DE
EX
EX
EX
EX
Par exemple, le Pentium 4 est un mi
ropro
esseur de type supers
alaire ave
:
un jeu d'instru
tions trs large ave
des formats d'instru
tion variables,
haque instru
tion est traduite en une ou plusieurs mi
ro-oprations de taille xe,
le pro
esseur ex
ute les mi
ro-oprations ave
une organisation plusieurs pipelines de 20 tages
(soit 20 tapes par mi
ro-opration !).
Les appro
hes multi-
ore (multi
oeurs)
onsistent mettre plusieurs pro
esseurs sur la mme pu
e.
A
tuellement on trouve des pro
esseurs dual-
ore ou quadi-
ore mais l'avenir le nombre de pro
esseurs
intgrs pourra augmenter. Cela permet d'ex
uter des appli
ations en parallle ou des threads en
parallle issus d'une appli
ation multi threads.
NB : les threads sont des pro
essus lgers grs au sein d'une appli
ation et qui partagent les mmes
ressour
es ; au
ontraire, les pro
essus lourds sont grs par le systme d'exploitation et possdent des
ressour
es qu'ils ne partagent pas ave
les autres.
3.6
a) Dnition thorique
La vitesse de l'horloge
aden
e les instru
tions. A partir de l, on peut
al
uler le temps CPU pour
un programme P
omme le produit entre le nombre de
y
les n
essaires pour le programme P par le
temps de
y
le d'horloge T CH . Pour dterminer le nombre de
y
les n
essaires pour le programme
P, on peut multiplier le nombre d'instru
tions ex
utes par le pro
esseur N I par le nombre moyen
de
y
les par instru
tion pour l'ar
hite
ture
onsidre CP I :
temps CPU = N I CP I T CH
Pour rduire le temps CPU on peut soit augmenter la frquen
e de l'horloge (mais il existe une limite
matrielle l'amlioration de la te
hnologie), soit rduire le CP I (
hoix du jeu d'instru
tions ou a
s
mmoire plus rapides), soit rduire le nombre d'instru
tions N I (
ompilateur optimisant).
On peut
al
uler les MIPS (Millions d'Instru
tions Par Se
onde) par :
MIPS = F H/CP I , o F H est la frquen
e d'horloge en MHz (millions de
y
les par se
onde).
Sur le mme modle existent galement les MegaFlops (millions d'instru
tions ottantes sur des
rels par se
onde).
Les MIPS et les MegaFlops
al
uls ne permettent pas rellement de
omparer les ma
hines entre elles
ar ils dpendent de la quantit de travail ee
tue par les instru
tions qui peut varier beau
oup
entre les ar
hite
tures CISC (instru
tions
omplexes) ou RISC (instru
tions simples).
De plus, les performan
es globales d'une ma
hine dpendent non seulement de l'organisation du pro
esseur mais aussi de tous les
omposants qui y sont relis :
hemins de donnes (bus), interfa
es,
45
b) Mesure pratique
L'ide est de mesurer le temps d'ex
ution de programmes rels. Mais
e temps d'ex
ution peut se
dnir de plusieurs manires, ave
des rsultats trs dirents selon le
hoix qui est fait. On peut
distinguer par exemple :
le temps total pour terminer la t
he (en in
luant les a
s disques et mmoire, les oprations
d'entres-sorties),
le temps CPU (pro
esseur) utilis pour la t
he,
le temps CPU utilis par le systme d'exploitation pour
ette la t
he, et
.
La
ommande time sous Unix permet d'avoir des informations sur
es dures sous la forme :
0.5 %CPU
Le temps CPU pour la t
he est de 29.09 s. Le temps CPU pour le systme est de 13.14 s. Le temps
total est 7718 s (2 h 8 mn 38 s), d'o un temps d'o
upation du pro
esseur de (29.09 + 13.40)/7718 soit
0.5% seulement pour
ette t
he.
En pratique, l'appro
he la plus raliste pour mesurer les performan
es
onsiste raliser des tests
(ben
hmarks ). Ils
omparent les ma
hines par types d'appli
ations (
al
uls numriques, jeux, bureautique, et
.) en utilisant des programmes et des donnes
ommunes. Les rsultats de
ertains tests sont
publis et permettent des
omparaisons peu prs ables entre ma
hines. C'est le
as par exemple
des test du SPEC (Standard Performan
e Evaluation Corporation http://www.spe
.org) utiliss par
beau
oup de
onstru
teurs.
46
On appelle dmultiplexeur un
ir
uit qui transmet le bit du l d'entre (E) sur un des ls de sortie
(S0, S1, S2, S3) en fon
tion de l'adresse fournie sur les ls d'adresse (A0, A1).
Exemple : dmultiplexeur 2 bits dont la table de vrit est la suivante.
E
0
0
0
0
1
1
1
1
A0
0
0
1
1
0
0
1
1
A1
0
1
0
1
0
1
0
1
S0
0
0
0
0
1
0
0
0
S1
0
0
0
0
0
1
0
0
S2
0
0
0
0
0
0
1
0
S3
0
0
0
0
0
0
0
1
S0
S1
S2
S3
E
A0 A1
S
ET
ET
D
OU
omplments 2
b) On veut
onstruire le
ir
uit logique qui
al
ule le
omplment 2 de 3 bits. On
onsidre le tableau
de la question a)
omme sa table de vrit en appelant e1, e2 et e3 les entres et s1, s2 et s3 les sorties.
Donnez les quations logiques de s1, s2 et s3.
) Construisez par la mthode systmatique vue en
ours
e
ir
uit logique (ave
des portes ET, OU,
NON).
.b).
d) Fa
torisez les quations logiques pour faire apparatre des OU ex
lusifs (a.b + a
Dessinez le
ir
uit simpli (ave
des portes ET, OU, NON, OU EXCLUSIF).
a) Soit le
ir
uit trois entres qui donne en sortie le bit majoritaire sur les trois entres. Donnez
l'quation logique non simplie et dessinez le
ir
uit
orrespondant ave
des portes ET, OU, NON
(les portes ET et OU pouvant
omporter plus de deux entres).
Le
ir
uit est dni par la table de vrit
i-dessous :
47
e1
0
0
0
0
1
1
1
1
e2
0
0
1
1
0
0
1
1
e3
0
1
0
1
0
1
0
1
s (majorit de 0 ou de 1)
0
0
0
1
0
1
1
1
e1
e2
e3
b) Proposez un
ir
uit ralisant la mme fon
tion et utilisant moins de portes logiques. Vous pouvez
utiliser le ET, le OU, le OU ex
lusif, et le NON.
Selon la valeur de d (0 ou 1), le
ir
uit suivant ralise deux fon
tions direntes. On parle parfois de
ir
uit programmable. A l'aide des tables de vrit ou des fon
tions logiques, dmontrez quelles sont
es deux fon
tions.
a
d
ET
f
OU
OU
ET
NON
23. A heur
On
onsidre un d
odeur d'a
hage permettant d'a
her les
hires de 0 3 sur un ensemble de
diodes le
trolumines
entes. Chaque diode
orrespond un segment. Sept segments (sept diodes) a,
b,
, d, e, f, g permettent d'a
her un
hire.
Les
hires sont a
hs en allumant
ertains segments :
a, b,
, d, e, f pour 0,
b,
pour 1,
a, b, g, e, d pour 2,
a, b, g,
, d pour 3.
Le d
odeur d'a
hage reoit en entre le
hire en binaire (poids faible dans e0). Il met en sortie
des 1 dans les ls des segments allumer.
a
b
f
e
e1
e0
Dcodeur
daffichage
a
b
c
d
e
f
g
e0
e1
e2
e3
B7454
1) Simpliez l'quation g.
2) Construisez le s
hma de g en utilisant le
ir
uit B7454.
Le
ode de Gray est un
odage binaire des entiers naturels tel que l'on passe d'un entier au suivant en
ne modiant qu'un bit.
Exemple :
ode de Gray sur 3 bits
entier
0
1
2
3
4
5
6
7
ode
000
001
011
010
110
111
101
100
Soit la table de vrit suivante ave
gau
he les entiers binaires et droite les
odes de Gray
orrespondants :
b1
0
0
0
0
1
1
1
1
b2
0
0
1
1
0
0
1
1
b3
0
1
0
1
0
1
0
1
g1
0
0
0
0
1
1
1
1
g2
0
0
1
1
1
1
0
0
g3
0
1
1
0
0
1
1
0
On veut raliser un in
rmenteur 4 bits. Ce
ir
uit, plus simple qu'un additionneur, ajoute 1 au
nombre binaire en entre (en
as de dbordement le bit qui sort est oubli).
49
e4
e3
e2
e1
Inc 4
s4
s3
s2
s1
e3
..
e2
..
e1
..
s4
..
s3
..
s2
..
s1
..
a) On dispose d'un d
odeur pour des
odes sur 3 bits. Utilisez-le pour
onstruire la valeur 1 si et
seulement si l'entre sur 3 bits reprsente un entier 5 et la valeur 0 dans le
as
ontraire.
b) Obtenez le mme rsultat ave
un
ir
uit
onstruit dire
tement ave
des portes ET, OU et NON.
Donnez la table de vrit de
e
ir
uit (St+1 en fon
tion de E0, E1 et St ). De quel
ir
uit vu en
ours
e
ir
uit se rappro
he-t-il le plus ? Quels autres noms peut on donner aux entres E0 et E1 ?
E0
S
E1
a) Donnez l'expression logique des valeurs la sortie de
haque porte (numrotes de 1 17 sur le
dessin du
ir
uit).
b) Simpliez R quand
vaut 0 et quand
vaut 1.
) Si a, b et
sont des donnes et F0 et F1 un
ode, dites quelles oprations sont ee
tues par
e
ir
uit. Pour F0=1 et F1=1 vous pouvez
onstruire la table de vrit donnant S et R en fon
tion de
a, b et
.
50
51
4 Le langage ma
hine
4.1
Dnitions
Le langage ma
hine est
onstitu des instru
tions binaires dire
tement interprtables par l'unit de
ommande d'un type de pro
esseur donn. Il est don
propre
haque type de pro
esseur, puisque
dire
tement li aux
ir
uits qui le
omposent. Chaque instru
tion
omporte en gnral un
ode opration binaire et des adresses binaires de registres et/ou de mots mmoire.
On appelle langage d'assemblage une version
ode en
lair du langage ma
hine, o les
odes
oprations sont rempla
s par des mnmoniques et o les adresses peuvent tre rempla
es par des
identi
ateurs.
Exemple :
Langage
langage ma
hine
langage d'assemblage
Code opration
00110011
ADD
Registre
0111
AL,
Le programme de tradu
tion qui
onvertit le langage d'assemblage en langage ma
hine s'appelle un
assembleur. Le langage d'assemblage n'est plus utilis que dans des
ir
onstan
es parti
ulires (pour
une e
a
it maximum par
ontrle dire
t de la ma
hine) ou sur des pro
esseurs trs lmentaires
pour lesquels il n'existe pas de tradu
teurs de langages volus en langage ma
hine. Nanmoins une
onnaissan
e minimale des langages de bas niveau permet de mieux
omprendre
ertaines
ara
tristiques des langages volus. C'est pourquoi nous le prsentons dans
e
ours.
La majorit des langages volus (
omme C, C++, COBOL) sont traduits en langage d'assemblage
par un
ompilateur. Chaque instru
tion du langage volu donne une suite plus ou moins
omplexe
(et plus ou moins optimise) d'instru
tions en langage d'assemblage.
Programme en langage
volu
traduction par un compilateur
Programme en langage
dassemblage
traduction par un assembleur
Programme en langage
machine
excution par le matriel
Processeur
Ci dessous trois exemples de tradu tion d'une itration par un ompilateur sur des pro esseurs dirents (Intel pour PC, Motorola pour Ma , SPARC).
On note que la stru
ture reste en gros
onstante mais que
ertains dtails dirent (manire d'initialiser 0, nombre d'oprandes pour les additions, forme et sens de la
omparaison et bran
hement vers
le dbut de l'itration . . .). noter pour le SPARC la notion de bran
hement retard : l'instru
tion
qui suit le bran
hement est toujours ex
ute avant que le bran
hement soit ralis !
Certains langages volus ne sont pas
ompils mais interprts (
omme Basi
, PHP, javas
ript, . . .).
L'interprteur est un programme qui traduit en langage ma
hine
haque instru
tion du programme en
langage volu et l'ex
ute immdiatement. Une mme instru
tion peut don
tre traduite plusieurs
fois,
e qui rend l'ex
ution moins rapide.
Enn,
ertains langages r
ents (
omme Java, C#) sont
ompils dans un langage intermdiaire indpendant de la ma
hine (appel byte
ode ), avant d'tre interprts par un programme propre
haque
type de pro
esseur (appel ma
hine virtuelle ).
Nous prsentons la programmation de bas niveau en langage d'assemblage sur une ma
hine simule. Son langage s'inspire du langage des mi
ropro
esseurs Intel en le simpliant notablement.
4.2
La ma
hine simule sms32v50 est distribue sous li
en
e GNU GPL (www.softwareforedu
ation.
om).
La mmoire
entrale
omporte 256 mots de un o
tet. Les adresses vont de 0 255 et sont notes [00
[FF en hexad
imal. Les
ro
hets distinguent les adresses des
onstantes hexad
imales.
Ex : 1F est la
onstante 31 alors que [1F repre le mot d'adresse 31.
Les mots d'adresse C0 FF sont utiliss pour a
her automatiquement des
odes ASCII dans une
fentre de rsultat (les mots sont initialiss ave
des valeurs ASCII 20 en hexad
imal
'est dire des
espa
es). On se limitera don
aux adresses [00 [BF.
La ma
hine ne
omporte pas un a
umulateur unique, mais 4 registres de un o
tet utilisables indiremment et nots AL, BL, CL, et DL. Leurs
ontenus sont a
hs en binaire, en hexad
imal et en
d
imal par le simulateur.
On visualise galement le
ompteur ordinal (Instru
tion Pointer ou IP), le pointeur de pile (Sta
k
Pointer ou SP) et le mot d'tat (Status Register ou SR) ave
un ensemble de drapeaux ou ags : sign
(S) et zero (Z) pour les
omparaisons, overow (O) pour les dbordements.
Le
ompteur ordinal est initialis 0. Les mots peuvent
ontenir des entiers entre 128 et +127 ou
des
odes ASCII.
L'interfa
e
omporte aussi des priphriques que l'on peut piloter : des feux rouges, un as
enseur,
un moteur . . .).
4.3
Langage ma
hine
D0 00 1B (3 mots)
D1 01 C2
D2 15 02
Expli
ation
AL = 1B range la
onstante hexad
imale 1B dans AL
BL = [C2
opie le mot d'adresse C2 dans BL
[15 = CL
opie CL dans le mot d'adresse 15
Les transferts de mmoire mmoire sont interdits
ar il faudrait deux adresses mmoire pour une seule
instru
tion (
f. paragraphe pr
dent sur l'UAL.). Les transferts entre registres sont aussi interdits
sur
ette ma
hine simule
ontrairement beau
oup de ma
hines relles. Il faut passer par un mot
mmoire intermdiaire ou par la pile.
La pile est une zone de mmoire o l'on empile et dpile des valeurs. tout instant le registre SP
pointe sur le sommet de la pile. Les instru
tions PUSH et POP permettent d'empiler et de dpiler en
sommet de pile.
sommet de pile
Assembleur
PUSH BL
POP CL
Langage ma
hine
E0 01
E1 02
Expli
ation
ajoute le
ontenu de BL en sommet de pile
retire le sommet de pile et le range dans CL
PUSH AL
POP BL
La pile a bien d'autres utilits : sauvegarder temporairement la valeur d'un registre pour utiliser
e
registre pour autre
hose, dans la gestion des sous-programmes (
f. paragraphe 4.9), et
.
b) Instru tions de al ul
Langage ma
hine
A0 00 01 (3 mots)
A1 01 02
A2 02 03
A3 03 00
A6 00 01
A4 03 (2 mots)
A5 00
Expli
ation
AL = AL + BL
BL = BL CL
CL = CL DL
DL = DL/AL
AL = AL mod BL
DL = DL + 1
AL = AL 1
Dans les
inq instru
tions deux oprandes, l'oprande de droite peut aussi tre une
onstante hexad
imale (
odes ma
hine Bn au lieu de An).
54
sour e
Compare la sour
e et la destination et met jour des bits parti
uliers appels drapeaux (ou ags en
anglais). Plus pr
isment, soustrait la sour
e la destination et met 1 dans le drapeau Z (zero ) si le
rsultat est nul et 1 dans le drapeau S (signe ) si le rsultat est ngatif.
Assembleur
CMP AL, BL
Langage ma
hine
DA 00 01 (3 mots)
CMP BL,13
DB 01 13
DC 02 20
Expli
ation
met Z 1 si AL = BL
met S 1 si AL < BL
met Z 1 si BL = 13
met S 1 si BL < 13
met Z 1 si CL = [20
met S 1 si CL < [20
tiquette_de_destination
L'tiquette vers laquelle se fait le saut o
upe une ligne du programme assembleur mais ne prend pas
de pla
e en mmoire. Elle reprsente une
ertaine adresse. Elle ne doit pas
omporter de
ara
tres
a
entus.
Assembleur
JMP HERE
Langage ma
hine
C0 12
Expli
ation
augmente IP de 12 (l'tiquette HERE est 12 mots aprs
l'instru
tion
ourante)
JMP fin
Langage ma
hine
C1 09
JNZ PLACE
JS R
C2 04
C3 E1
JNS START
C4 04
Expli
ation
augmente IP de 9 si Z est 1 (l'tiquette
A est 9 mots aprs l'instru
tion
ourante)
augmente IP de 4 si Z est 0
diminue IP de 31 si S est 1 (l'tiquette R
est 31 mots avant l'instru
tion
ourante)
augmente IP de 4 si S est 0
55
En jouant sur l'ordre des registres on peut raliser toutes les
omparaisons (>, <, , , =, 6=)
omme
nous le dtaillerons au paragraphe 4.4.
Langage ma
hine
00
00
onstante hexad
imale
Expli
ation
n du programme (une seule sur la dernire ligne)
arrt de l'ex
ution (ventuellement plusieurs)
dnit une donne (DeneByte )
Nous prenons l'habitude de pla
er les donnes en dbut de mmoire ave
un JMP qui les saute pour
aller au dbut du programme (
ar le
ompteur ordinal est initialis 0). En eet, si on pla
e les donnes
aprs le programme on ne peut
onnatre leurs adresses qu'aprs avoir
rit tout le programme
e qui
n'est gure pratique. Notez les
ommentaires
ommenant par un ; qui suivent
ertaines instru
tions.
JMP
DB
DB
DB
MOV
MOV
ADD
MOV
END
debut
5
2
0
AL, [2
BL, [3
AL, BL
[4, AL
;
;
;
;
;
; rsultat dans AL
; les mots d'adresse 2 et 3 ont ts additionns
; et le rsultat rang dans le mot 4
Exer
i
es
1.
rivez un programme qui multiplie une donne range dans le mot d'adresse 2 par 5 puis range le
rsultat dans le mot d'adresse 50.
Ave
le programme pr
dent testez un dbordement (overow ). Vous pouvez prendre 20 (en hexad
imal) multipli par 5.
2. Que
ontient AL la n de la suite d'instru
tions suivante ?
MOV AL,
PUSH AL
MOV AL,
PUSH AL
POP BL
SUB BL,
POP AL
ADD AL,
4.4
10
20
5
BL
Le s hma onditionnel
C'est le s hma :
SI
ondition ALORS
instru
tions_du_
as_vrai
SINON
instru
tions_du_
as_faux
FSI
56
o
ondition s'
rit : op1 oprateur op2, ave
op1 et op2
omme oprandes et >, <, >=, <=, =,
! =
omme oprateur.
En assembleur, il n'y a pas d'instru
tion
onditionnelle SI ALORS SINON . Il faut la traduire
ave
des bran
hements
onditionnels et in
onditionnels. Le s
hma de tradu
tion standard est le suivant :
vrai:
fin:
Le hoix du bran hement et de l'ordre des regsitres est d rit dans le tableau suivant :
Condition
op1 = op2
op1 != op2
op1 < op2
op1 >= op2
op1 > op2
op1 <= op2
Tradu
tion
CMP AL, BL
CMP AL, BL
CMP AL, BL
CMP AL, BL
CMP BL, AL
CMP BL, AL
suivi
suivi
suivi
suivi
suivi
suivi
de
de
de
de
de
de
JZ...
JNZ...
JS...
JNS...
JS...
JNS...
Expli
ation
op1-op2 = 0 <=> op1 = op2
op1-op2 != 0 <=> op1 != op2
op1-op2 < 0 <=> op1 < op2
op1-op2 >= 0 <=> op1 >= op2
op2-op1 < 0 <=> op1-op2 > 0 <=> op1 > op2
op2-op1 >= 0 <=> op1-op2 <= 0 <=> op1 <= op2
Les
ompilateurs utilisent
e s
hma pour traduire les
onditionnelles en langage d'assemblage.
Dans le
as d'un s
hma sans partie sinon :
SI
ondition ALORS
instru
tions_du_
as_vrai
FSI
le s
hma pr
dent est inutilement
ompliqu
ar instru
tions_du_
as_faux est vide. Il est
onseill
de prendre la ngation de la
ondition et de sauter l'tiquette n si
ette ngation est vraie (autrement
dit si la
ondition est fausse alors je ne fais rien ). Le s
hma de tradu
tion est le suivant :
fin:
o le
hoix de J ? ? et l'ordre des oprandes est donne par le tableau pr
dent pour la ngation de
la
ondition.
Exer
i
es
3.
rivez un programme qui met dans le mot 4 la plus grande des valeurs des mots 2 et 3.
4.
rivez un programme qui
al
ule la valeur absolue d'une donne et la range dans le mme mot.
57
4.5
Le s hma itratif
C'est le s hma :
re:
fin:
MOV registre1, 1
MOV registre2, limite
; registre ompteur
Exer
i
es
5.
rivez un programme qui fait la somme des n premiers entiers ; n est dans le mot d'adresse 2
et le rsultat est rang dans le mot d'adresse 3.
somme <- 0
pour i de 1 n faire
somme <- somme + i
fpour
4.6
Pour par
ourir et traiter un ensemble de donnes
ons
utives en mmoire (un tableau de donnes),
il faut pouvoir dsigner su
essivement tous les lments de
et ensemble dans une itration. Pour
e
faire, on met l'adresse de la premire donne dans un registre (ex : AL) et on utilise la notation [AL
qui signie le
ontenu du mot dont l'adresse est dans AL . Il sut d'in
rmenter AL de 1 en 1
dans l'itration pour a
der su
essivement toutes les donnes de l'ensemble. On parle d'adressage
indire
t . C'est un des modes d'adressage
lassique en langage d'assemblage :
- Adressage immdiat
- Adressage dire
t
: 10
: [10
(
onstante 10)
(mot mmoire d'adresse 10)
58
- Adressage indire
t
- Adressage bas
- Adressage index
: [AL
(le registre AL
ontient l'adresse voulue)
: [AL+4 (
ontenu de AL + 4 est l'adresse voulue)
Attention! n'existe pas dans la ma
hine simule
: [AL+BL (
ontenu de AL +
ontenu de BL)
Attention! n'existe pas dans la ma
hine simule
Attention : dans la ma
hine simule, l'adressage indire
t n'est autoris que dans les instru
tions MOV,
e qui est trs restri
tif par rapports aux pro
esseurs rels !
Langage ma
hine
D3 03 00
D4 03 00
Assembleur
MOV DL, [AL
MOV [CL, AL
Expli
ation
DL = [AL Copie le mot [AL dans DL
[CL = AL Copie AL dans le mot [CL
Exer
i
es
7.
rivez un programme qui fait la somme de 10 mots rangs dans les mots 3 12 ; le rsultat
est rang l'adresse 2.
somme <- 0
pour i de 3 12 faire
somme <- somme + mot[i
fpour
8.
rivez un programme qui
her
he le maximum des mots 2 11 de la mmoire et le range l'adresse
12.
9.
rivez un programme de tri d
roissant des mots 2 11 de la mmoire selon l'algorithme suivant
( tri par permutations ) :
pour i de 2 10 faire
pour j de i+1 11 faire
si mot[i < mot[j alors
hanger mot[i et mot[j
fsi
fpour
fpour
4.7
Les entres/sorties
Les entres/sorties s'ee
tuent via des ports. Les ports sont des adresses sp
iales asso
ies aux priphriques d'entre/sortie et repres par des numros. Un o
tet peut tre lu ou
rit dans
es ports
gr
e aux instru
tions IN et OUT.
OUT
registre
port sortie
priphrique
de sortie
port entre
priphrique
dentre
IN
59
Assembleur
IN 00
OUT 01
Langage ma
hine
F0 00
F1 01
Expli
ation
entre depuis le port 00 vers AL
sortie depuis AL vers le port 01
Dans le simulateur le port de sortie 01 est
onne
t deux feux tri
olores ; selon la valeur de l'o
tet
transmis
es deux feux s'allument d'une
ertaine manire :
bits 7
6
5
4
3
2
1
0
rouge orange vert
rouge orange vert non utiliss
feu de gau
he
feu de droite
Le port d'entre 00 est
onne
t au
lavier. Le registre AL reoit le
ode ASCII de la tou
he du
lavier
qui a t enfon
e.
Cette forme d'entre/sortie sans
ondition
orrespond aux priphriques qui sont toujours disponibles,
omme les interrupteurs, les voyants lumineux . . .
Dans le
as de priphriques plus
omplexes il faut re
ourir aux entres/sorties ave
ondition : en eet,
il faut
onnatre l'tat du priphrique avant d'envoyer ou de lire des informations (ex : rseau, disque,
. . .). Comme nous l'avons vu dans la partie sur le matriel, il existe deux appro
hes prin
ipales. Dans la
premire, le pro
esseur teste rptitivement l'tat jusqu'
e que le priphrique soit prt. Cette bou
le
de s
rutation o
upe inutilement le pro
esseur. La deuxime appro
he utilise la notion d'interruption.
Une demande d'entre/sortie est mise. Ds que le priphrique est prt il envoie une interruption qui
est prise en
ompte immdiatement par le pro
esseur en interrompant le traitement en
ours. En eet,
pendant l'attente, le pro
esseur peut tre ae
t par le systme d'exploitation un autre programme.
Exer
i
es
10.
rivez un programme qui fait alterner indniment les deux feux :
feu gau
he : rouge
puis feu gau
he : rouge
puis feu gau
he : vert
puis feu gau
he : orange
et on re
ommen
e...
feu
feu
feu
feu
droite
droite
droite
droite
:
:
:
:
vert
orange
rouge
rouge
11.
rivez un programme qui pilote le feu de gau
he partir de la saisie au
lavier des lettres r pour
rouge, v pour vert, o pour orange. L'autre feu reste teint. Pour toute autre saisie le feu reste teint.
4.8
Ces oprations d
alent vers la gau
he ou vers la droite les bits d'un registre. Elles sont utilises pour
d
oder bit bit des donnes, ou simplement pour diviser ou multiplier rapidement par une puissan
e
de 2. En eet, d
aler AL de n bits vers la gau
he revient le multiplier par 2n (sous rserve qu'il
reprsente un nombre naturel et qu'il n'y ait pas de dpassement de
apa
it). De mme, un d
alage
vers la droite revient diviser par 2n .
Assembleur
SHL CL
Langage ma
hine
9C 02
SHR DL
9D 03
ROL AL
9A 00
ROR BL
9B 01
Expli
ation
D
alage gau
he : le bit de poids fort est perdu,
le bit de poids faible devient 0 (SHift Left ).
D
alage droite : le bit de poids faible est perdu,
le bit de poids fort devient 0 (SHift Right ).
Rotation gau
he : le bit de poids fort devient le
bit de poids faible (ROtate Left ).
Rotation droite : le bit de poids faible devient le
bit de poids fort (ROtate Right ).
60
SHL :
ROL :
Les instru
tions logiques ee
tuent des oprations logiques bit bit. On dispose de trois oprateurs
logiques : ET, OU et OU ex
lusif. Il n'y a jamais propagation de retenue lors de
es oprations (
haque
bit du rsultat est
al
ul indpendamment des autres).
0 0 1 1
OU 0 1 0 1
0 1 1 1
ET
0 0 1 1
0 1 0 1
0 0 0 1
OU EX
0 0 1 1
0 1 0 1
0 1 1 0
OR
AL, BL
; AL = AL OU BL
OR est souvent utilis pour for
er
ertains bits 1 gr
e un masque ayant des 1
es positions.
Exemple :
AND
AL, BL
; AL = AL ET BL
AND est souvent utilis pour for
er
ertains bits 0 gr
e un masque ayant des 0
es positions.
Exemple :
XOR AL, BL
; AL = AL OU EXCLUSIF BL
XOR est souvent utilis pour inverser
ertains bits gr
e un masque ayant des 1
es positions.
Exemple :
short i = 13;
i = i << 2;
// i a la valeur
// i prend la valeur
61
0000000000001101
0000000000110100
Exer
i
es
12. Comment mettre le registre AL 0 ave
un XOR ?
13. Comment tester si AL est pair sans
al
uler le reste de la division par 2 ?
14. Le mot mmoire 2
ontient un entier sur sept bits. Le bit de poids faible est nul. On veut mettre
un 1 dans le bit de poids faible si le nombre de bits 1 parmi les sept premiers est impair et laisser
le 0 sinon (bit de parit).
4.9
Les sous-programmes
Un sous-programme est une suite d'instru
tions ee
tuant un
ertain traitement et qui sont regroupes
par
ommodit : d
oupage d'un gros programme en mor
eaux , dnition d'un mor
eau qui est
utilis plusieurs fois.
Un sous-programme est repr par l'adresse de sa premire instru
tion. L'ex
ution du sous programme
est d
len
he par un programme appelant. Un sous-programme peut lui mme en appeler un autre
et ainsi de suite.
L'appel du sous-programme est ee
tu par l'instru
tion CALL :
CALL adresse
L'ex
ution se poursuit l'adresse indique dans le CALL. La n du sous-programme est marque par
l'instru
tion :
RET
Le pro
esseur revient l'instru
tion pla
e immdiatement aprs le CALL.
sous programme :
appelant :
(adresse)
RET
CALL adresse
L'adresse de retour, utilise par RET, est sauvegarde sur la pile par l'instru
tion CALL. Lorsque le
pro
esseur ex
ute l'instru
tion RET, il dpile l'adresse de la pile et la range dans le
ompteur ordinal.
Ce m
anisme fon
tionne mme dans le
as des appels imbriqus (un CALL dans un sous-programme
vers un autre sous-programme) et dans le
as des appels r
ursifs (un sous-programme qui s'appelle
lui mme un
ertain nombre de fois).
Assembleur
CALL 30
RET
Langage ma
hine
CA 30
CB
Expli
ation
sauvegarde CO sur la pile et saute 30.
prend CO sur la pile et saute
ette adresse.
Le plus souvent, le sous-programme ee
tue un traitement sur des donnes (paramtres) qui sont
fournis par le programme appelant et produit un rsultat qui est retourn
e programme.
Plusieurs stratgies peuvent tre employes pour passer les paramtres :
Les valeurs des paramtres et du rsultat sont
ontenues dans des registres bien dnis. C'est une
mthode simple qui ne
onvient que si le nombre de paramtres est faible,
ar il y a peu de registres.
Exemple : le sous-programme l'adresse hexad
imale 30
al
ule le maximum de deux entiers naturels.
On
onvient que les entiers sont passs par les registres AL et BL, et que le rsultat est pla
dans le
registre AL. L'appel s'
rit :
62
ORG 30
; dire
tive qui indique que le
ode qui suit est situ
; l'adresse 30. Cette dire
tive ne prend pas de pla
e
; en mmoire
CMP AL, BL
JNS saut
; si AL >= BL (AL-BL >= 0)
PUSH BL
; sinon
hange de AL et BL
POP AL ; en utilisant la pile de telle sorte que le max soit dans AL
saut :
RET
Les valeurs des paramtres sont empiles. Il peut y en avoir un nombre quel
onque. Le sous-programme
r
upre les valeurs dans la pile.
Exemple : le sous-programme l'adresse 40 utilise la pile pour passer les paramtres et reoit le rsultat
dans la pile. L'appel s'
rit :
PUSH
PUSH
CALL
POP
AX
BX
40
AX
ORG 40
POP CL
;
'est l'adresse de retour empile par le CALL
POP BL
; deuxime paramtre
POP AL
; premier paramtre
CMP BL, AL
JNS saut
; si AL >= BL
PUSH BL ; sinon
hange de AL et BL
POP AL
; en utilisant la pile de telle sorte que le max soit dans AL
saut :
PUSH AL
; rsultat dans la pile
PUSH CL
; adresse de retour dans la pile
RET
; dpile l'adresse de retour
adresse de retour
rsultat
Le programme apparat plus
omplexe. Mais il faut noter que dans les langages d'assemblage rels on
peut a
der aux valeurs de la pile sans dpiler,
e qui simplie le dbut et la n du sous-programme.
Ce point sera illustr au paragraphe suivant.
63
noter que les sous-programmes sauvegardent galement dans la pile le
ontexte du programme appelant (ses registres, ses drapeaux, et
.) avant de
ommen
er leur ex
ution et restituent
e
ontexte
avant de retourner. De la sorte, le programme appelant n'est pas perturb par les traitements ralises
dans le sous-programme. Un registre retrouve au retour du sous-programme la valeur qu'il avait avant
l'appel mme s'il a t utilis par le sous-programme pour ses
al
uls propres.
Enn, la pile sert galement a
ueillir les variables lo
ales aux sous-programmes
ar leur dure
de vie est la mme que
elle du sous-programme.
Dans le langage C, la mmoire est gre ave
d'un
t la pile (ave
pour
haque appel de sousprogramme ses variables lo
ales, ses paramtres, son adresse de retour et le
ontexte sauvegard) et
de l'autre
t le
ode et le tas qui
ontient les donnes statiques dont la pla
e est rserve la
ompilation et les donnes dynamiques dont la pla
e est alloue l'ex
ution. C'est le programmeur qui
doit grer expli
itement les donnes dynamiques (allo
ation par mallo
et libration par free ).
Pile
Donnes dynamiques
Donnes statiques
Instructions
En Java, un programme peut
omporter plusieurs threads qui s'ex
utent en parallle, ave
ha
un
son
ompteur ordinal et ses registres. La mmoire est organise ave
une pile par thread et un tas
ommun tous les threads. Dans la pile sont rangs les paramtres des appels de mthodes, les valeurs
retournes, leurs
ontextes et leurs variables lo
ales (valeurs pour les types de base et rfren
es pour
les objets). Dans le tas sont rangs tous les objets
rs dynamiquement par new. Le ramasse-miettes
(garbage
olle
tor ) libre priodiquement l'espa
e o
up dans le tas par les objets qui ne sont plus
rfren
s. le programmeur n'a pas s'en sou
ier.
4.10
Nous examinons pour terminer quelques exemples de tradu
tion de programmes C en assembleur Intel
16 bits. Il s'agit d'une ar
hite
ture an
ienne mais dont la ma
hine simule utilise pr
demment s'est
inspire. Le
ompilateur utilis est le
ompilateur C/C++ libre Open Wat
om qui fon
tionne sous
Windows (www.openwat
om.org) et peut
ompiler vers toutes les ar
hite
tures Intel 16 bits et 32 bits.
Le premier exemple illustre le sto
kage des variables dans la pile et la tradu
tion d'une
onditionnelle.
Le
ode C est le suivant :
int main(void) {
int x = 11;
int res;
har
= 'A';
if (x < 0)
res = -1;
else
res = 1;
}
La tradu
tion assembleur produite par le
ompilateur pour une ar
hite
ture mots de 16 bits est la
suivante (le
ode C est rappel en dbut de ligne) :
mov
sub
bp,sp
sp,0x0006
int x = 11;
L$1:
mov
int res;
har
= 'A';
if (x < 0)
res = -1;
else
res = 1;
mov
mp
jge
(
ompare x et 0)
(si >= saute en L$2)
mov
jmp
L$3
(saute la fin)
L$2:
mov
L$3:
La tradu
tion utilise deux registres de un mot (16 bits) : SP (Sta
k Pointer ) qui pointe vers le sommet
de la pile et BP (Base Pointer ) qui permet de faire de l'adressage bas,
'est--dire qui ajoute ou
retire une
ertaine valeur entire au
ontenu du registre.
La premire instru
tion
opie SP dans BP.
La se
onde instru
tion soustrait 6 en hexa (6 en d
imal) SP. Cela revient rserver trois mots dans
la pile
omme le montre la gure suivante, an de sto
ker les variables du programme.
SP
BP-6
3 mots
rservs
BP-4
BP-2
SP, BP
adresses
croissantes
BP
L'instru
tion suivante range b en hexad
imal (soit 11 en d
imal) dans un mot (word ptr ) l'adresse
ontenu de BP moins 6 en hexad
imal (not -0x6[bp), qui
orrespond l'empla
ement de la variable
x.
L'instru
tion suivante range 41 en hexad
imal (soit le
ode ASCII de A) dans un o
tet (byte ptr )
l'adresse BP-2, qui
orrespond l'empla
ement de la variable c.
Le mot l'adresse BP-4 est rserv par le
ompilateur la variable res.
x
SP
res
41
BP
adresses
croissantes
tat suivant
de la pile
La tradu
tion de la
onditionnelle reprend le s
hma vu en
ours. Les tiquettes sont notes L$2 et
L$3. La
omparaison (CMP)
ompare x (en BP-6) et 0. Si x est suprieur ou gal 0 (jge ou jump
65
if greater or equal ) le programme range 1 dans res (en BP-4) et sort de la
onditionnelle. Sinon le
programme range ffff (soit 1 en
omplment 2) dans res.
Le deuxime exemple illustre un appel de sous-programme. Le
ode C est le suivant :
main
int a = 11;
mov
sub
bp,sp
sp,0x0008
L$3:
mov
mov
int b = 22;
int res;
res = ma_fon
tion(a,b);
mov
mov
all
mov
mov
add
mov
mov
L$2:
mov
pop
pop
pop
pop
pop
ret
sp,bp
bp
di
si
x
bx
Le
ompilateur a
hoisi de passer les deux arguments dans les registres ax et dx et de r
uprer le
rsultat dans ax. Les
inq autres registres (
x, dx, si, di, bp) sont sauvegards (push) sur la pile en
dbut de sous-programme.
En dbut du programme prin
ipal (main), quatre mots sont rservs sur la pile pour a, b, res et
l'adresse de retour. Les arguments sont rangs dans ax et dx avant l'appel du sous-programme (
all)
et le rsultat est rang de ax dans res au retour.
En dbut de sous-programme, aprs sauvegarde des registres, trois mots sont rservs sur la pile pour
les deux arguments et le rsultat. Puis la somme est ee
tue : le premier argument est mis dans ax
(alors qu'il y est dj !) ; le se
ond argument est ajout ax ; la somme est remise dans la pile.
En n de sous-programme le rsultat est retourn dans ax (il y est pla
alors qu'il y est dj !) et
les registres sont restaurs depuis la pile (pop) an d'viter les eets de bord indsirables (le sousprogramme doit laisser les registres dans l'tat o il les a trouvs).
Le
ode est gnr par le
ompilateur en appliquant des s
hmas de tradu
tion prdnis. Il n'est
don
pas optimal. On trouve,
omme nous l'avons not, plusieurs transferts inutiles. Les
ompilateurs
peuvent supprimer
es instru
tions inutiles en ralisant une analyse du
ode gnr dans une se
onde
passe.
Les volutions de la pile sont rsumes dans la gure suivante :
67
BP-8
BP-6
ad. retour
b
BP-4
16
SP
BP-2
SP, BP
BP
adresses
croissantes tat initial de la pile au
dbut du main
BP-6
BP-4
16
SP
16
21
bp
di
BP-2
bp
di
si
cx
b
16
bx
ad. retour
ad. retour
b
16
res
a
b
b
16
res
fin du calcul
(rsultat dans la pile
et ax)
ad. retour
b
16
si
cx
cx
bx
a
b
sauvegarde des
registres
BP
bp
di
si
BP, SP
bx
ad. retour
4 mots
rservs
b
res
SP
b
16
a
b
21
res
res
BP
BP
Exer
i
e
15.
rivez un sous-programme
68
a)
rivez un programme qui enlve 1 tous les nombres
ontenus dans les mots d'adresses 2 11.
b)
rivez un programme qui enlve 1 seulement aux mots mmoire qui
ontiennent un nombre impair.
Utilisez l'instru
tion MOD qui donne le reste de la division entire pour tester la parit. Exemple :
avant
mot 2: 12
mot 3: 13
mot 4: 19
mot 5: 4
aprs
mot 2: 12
mot 3: 12
mot 4: 18
mot 5: 4
re:
CMP op2, op1
JNS fin
instru
tions
JMP re
fin:
...
; op2-op1 >= 0
e <- 1
n <- 5
x <- 2
tant que
e <- e
n <- n
fin tant
n > 0 rpter
* x
- 1
que
u11 = 4 / 2 = 2
u12 = 2 / 2 = 1
rivez un programme qui
ompte le nombre d'lments
al
uler pour atteindre 1 (12 dans l'exemple).
La donne initiale (a) est dans le mot d'adresse 2 et le rsultat est rang dans le mot d'adresse 3.
L'algorithme est le suivant :
nb <- 1
u <- a
tant que u != 1 rpter
si u est pair alors
u <- u / 2
sinon
u <- (3 * u + 1) / 2
finsi
nb <- nb + 1
fin tant que
On a 24
hires binaires dans les mots d'adresses 2, 3 et 4.
rivez le programme qui
al
ule les
hires
o
taux
orrespondant aux 6 premiers
hires binaires de
es 3 mots dans les mots 5 10.
Exemple :
Mots
2
Valeurs (hexa) 34
Binaire
00110100
3
17
00010111
donnes
4
84
10000100
5
1
6
5
7
0
8
5
9
4
10
1
k = 5
pour i de 2 4 rpter
d
aler mot[i de 5 bits droite
(on pourrait
rire un sous-programme de d
alage droite de n bits)
ranger rsultat dans mot[k
k++
for
er les 3ers bits de mot[i 0
d
aler le rsultat de 2 bits droite
ranger le rsultat dans mot[k
k++
fin pour
a)
rivez un programme de re
her
he d'une valeur dans un tableau de 10 entiers par la mthode
nave
orrespondant l'algorithme
i-dessous.
La variable trouv est range dans le mot 2. Elle vaut 1 si le mot est trouv et 0 sinon. La valeur
her
he est range dans le mot 3. Le tableau de 10 entiers est rang dans les mots 4 13 (en d
imal).
trouv <- 0
pour i de 4 13 faire
si (mot[i = val-
her
he) alors
trouv <- 1 ; terminer (arrt ou sortie de la bou
le)
fsi
finpour
70
trouv <- 0
bas <- 4
haut <- 13
tantque bas <= haut faire
milieu <- (haut+bas)/2
si (mot[milieu = val-
her
he) alors
trouv <- 1
terminer
sinon
si (mot[milieu < val-
her
he) alors
bas <- milieu + 1
sinon haut <- milieu - 1
fsi
fsi
fintantque
E
rivez un programme qui lit des
ara
tres au
lavier jusqu' la frappe de la tou
he entre. Les
lettres minus
ules sont transformes en majus
ules. Les autres
ara
tres ne sont pas modis. Tous
les
ara
tres modis ou non sont rangs dans la zone de mmoire d'adresses C0 FF (
ette zone est
automatiquement a
he dans une fentre par la ma
hine simule).
Rappel :
l'instru
tion IN 00 attend l'appui d'une tou
he et range dans le registre AL le
ode ASCII du
ara
tre saisi,
la table des
odes ASCII est donne en annexe ; la tou
he entre
orrespond au
ode ASCII
d
imal 13.
On
onsidre les trois ma
hines suivantes, dans lesquelles les mots mmoire sont reprs par des
identi
ateurs (ex : A, B, X, . . .).
1. M0 est une ma
hine pile : elle peut ranger un mot mmoire au sommet de la pile (PUSH X),
ranger le sommet de la pile en mmoire et le retirer de la pile (POP X). L'opration ADD enlve
2 mots de la pile, fait l'addition et met le rsultat au sommet de la pile.
2. M1 est une ma
hine ave
un a
umulateur : elle peut transfrer un mot mmoire dans l'a
umulateur (LOAD X) et sauvegarder l'a
umulateur dans un mot mmoire (STORE X). Elle
peut additionner un mot mmoire ave
le
ontenu de l'a
umulateur et ranger le rsultat dans
l'a
umulateur (ADD X).
3. M2 est une ma
hine ave
8 registres (Ri pour i de 1 8) : elle peut transfrer un mot mmoire
vers un registre par LOAD Ri, X et transfrer un registre vers un mot mmoire par STORE X,
Ri. Les oprations arithmtiques se font uniquement ave
des registres : ADD Ri, Rj, Rk o Ri
est la destination.
a) Soient 3 mots mmoire A, B, C.
rivez pour les trois ma
hines, le
ode qui ralise A = B + C.
b) De mme,
rivez pour les trois ma
hines, le
ode
orrespondant la suite d'instru
tions :
A = B + C
B = A + C
Comparez
es
odes en nombre d'instru
tions et en nombre d'a
s mmoire,
'est--dire de le
tures
ou
ritures en mmoire. Essayez de minimiser
e nombre d'a
s mmoire en
rivant les
odes. Les
a
s aux registres et la pile ne sont pas des a
s mmoire.
71
2n
1
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288
1048576
2n
1
0,5
0,25
0,125
0,0625
0,03125
0,015625
0,0078125
0,00390625
0,001953125
0,0009765625
0,00048828125
0,000244140625
0,0001220703125
0,00006103515625
0,000030517578125
0,0000152587890625
0,00000762939453125
0,000003814697265625
0,0000019073486328125
0,00000095367431640625
72
Base 16
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
20
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
30
Cara
tre
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
SP
!
"
#
$
%
&
'
(
)
*
+
,
.
/
0
Signi
ation
Null (
ara
tre nul)
Start of Header (dbut d'entte)
Start of Text (dbut de texte)
End of Text (n du texte)
End of Transmission (n de transmission)
Enquiry (demande)
A
knowledge (a
us de r
eption)
Bell (
ara
tre d'appel)
Ba
kspa
e (espa
ement arrire)
Horizontal Tab (tabulation horizontale)
Line Feed (saut de ligne)
Verti
al Tab (tabulation verti
ale)
Form Feed (saut de page)
Carriage Return (retour
hariot)
Shift Out (n d'extension)
Shift In (dmarrage d'extension)
Data Link Es
ape
happement de liaison de donnes)
Devi
e Control 1 (
ontrle de priphrique 1)
Devi
e Control 2
Devi
e Control 3
Devi
e Control 4
Negative A
knowledge (a
us de r
eption ngatif)
Syn
hronous Idle (ina
tivit)
End of Transmission Blo
k (n du blo
de transmission)
Can
el (annulation)
End of Medium (n de support)
Substitute (substitution)
Es
ape (
happement)
File Separator (sparateur de
hier)
Group Separator (sparateur de groupe)
Re
ord Separator (sparateur d'enregistrement)
Unit Separator (sparateur d'unit)
Spa
e (espa
e)
Point d'ex
lamation
Guillemet droit
Croisillon ou Dise
Dollar (symbole)
Pour
ent
Esperluette ou et
ommer
ial
Apostrophe droite
Parenthse ouvrante
Parenthse fermante
Astrisque
Plus
Virgule
Moins
Point
Barre oblique (slash )
Chire 0
73
Base 10
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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
96
97
98
99
100
Base 16
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
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
60
61
62
63
64
Cara
tre
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
[
\
_
`
a
b
d
Signi ation
Deux-points
Point-virgule
Infrieur
gal
Suprieur
Point d'interrogation
A
ommer
ial (arrobase)
Lettre A majus
ule
74
Base 10
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
Base 16
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
Cara
tre
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
DEL
Signi ation
A
olade ouvrante
Barre verti
ale
A
olade fermante
Tilde
Delete (ea
ement)
75
-> 0
1
2
3
4
0 NUL SOH STX ETX EOT
1 DLE DC1 DC2 DC3 DC4
2 SP
!
"
#
$
3 0
1
2
3
4
4 @
A
B
C
D
5 P
Q
R
S
T
6 `
a
b
c
d
7 p
q
r
s
t
8 PAD HOP BPH NBH IND
9 DCS PU1 PU2 STS CCH
A NBSP
E
F
A B C
LF VT FF
SUB ESC FS
*
+
,
:
;
<
J
K L
Z [
\
j
k
l
z
{
|
VTS PLD PLU
SCI CSI ST
D E F
CR SO SI
GS RS US
.
/
=
> ?
M N O
]
^ _
m n o
}
~ DEL
RI SS2 SS3
OSC PM APC
76
00
01
11
10
00
x
y
xy
z
00
01
11
10
01
11
10
Tableau 3 variables
Tableau 2 variables
Tableau 4 variables
Il faut
omprendre
haque ligne et
haque
olonne
omme une stru
ture
y
lique
ontinue :
haque
ase a toujours quatre voisins qu'il faut ventuellement
her
her l'autre extrmit de la ligne ou de
la
olonne. De manire image, on peut dire que l'on enroule la table en rappro
hant le bas et le haut
du tableau ou bien son bord droit et son bord gau
he.
Les gures suivantes illustrent
ette ide, les
roix y matrialisent les voisins des
ases
olores qui
orrespondent respe
tivement aux termes x y z t, x y z t, x y z t :
xy
zt
00
01
11
10
xy
zt
00
01
11
10
xy
zt
00
00
00
01
01
01
11
11
11
10
10
10
00
01
11
10
Le passage de la table de vrit au tableau de Karnaugh
onsiste remplir
haque
ase ave
la valeur
orrespondante de la fon
tion.
La mthode de simpli
ation de Karnaugh
onsiste rassembler les
ases adja
entes
ontenant des
1 par groupes de 2, 4 ou 8 termes. Dans un groupement de deux termes on limine la variable qui
hange de valeur et on
onserve le produit des variables qui ne
hangent pas. Dans un groupement de
quatre on limine les deux variables qui
hangent de valeurs. Dans un groupement de huit on limine
trois variables, et
.
On
her
he avoir le minimum de groupements,
haque groupement rassemblant le maximum de
termes. Une mme
ase peut intervenir dans plusieurs groupements
ar A + A = A. Pour les
ases
isoles on ne peut liminer au
une variable. L'expression logique nale est la runion des groupements.
77
y
0
0
1
1
0
0
1
1
t
0
1
0
1
0
1
0
1
F
0
0
0
1
0
1
1
1
On obtient le tableau :
t
xy 00
01
11
10
xy
0
1
1
xt
yt
y
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
z
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
01
11
t
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
F
1
0
1
0
0
1
0
0
1
1
1
1
0
1
0
0
On obtient le tableau :
zt
00
xy 00
10
1
xy
1
01
11
10
yzt
yt
9.2
Langage ma
hine
D0 00 1B
D1 01 C2
D2 15 02
D3 03 00
D4 03 00
Expli
ation
AL = 1B range 1B (hexa) dans AL
BL = [C2
opie le mot d'adresse C2 dans BL
[15 = CL
opie CL dans le mot d'adresse 15
DL = [AL
opie le mot [AL dans DL
[CL = AL
opie AL dans le mot [CL
9.3
Assembleur
ADD AL, BL
SUB BL, CL
MUL CL, DL
DIV DL, AL
MOD AL, BL
INC DL
DEC AL
AND AL, BL
OR CL, BL
XOR AL,BL
NOT BL
ROL AL
Langage ma
hine
A0 00 01
A1 01 02
A2 02 03
A3 03 00
A6 00 01
A4 03
A5 00
AA 00 01
AB 02 01
AC 00 01
AD 01
9A 00
ROR BL
9B 01
SHL CL
9C 02
SHR DL
9D 03
Expli
ation
AL = AL + BL
BL = BL CL
CL = CL DL
DL = DL / AL (division entire)
AL = AL mod BL (reste de la division entire)
DL = DL + 1
AL = AL 1
AL = AL et BL
CL = CL ou BL
AL = AL ou ex
lusif BL
BL = non BL
Rotation gau
he : le bit de poids fort
devient le bit de poids faible
Rotation droite : le bit de poids faible
devient le bit de poids fort.
D
alage gau
he : le bit de poids fort
est perdu, le bit de poids faible devient 0.
D
alage droite : le bit de poids faible
est perdu, le bit de poids fort devient 0.
9.4
Langage ma
hine
B0 00 12
B1 01 15
B2 02 03
B3 03 02
B6 00 10
BA 00 0F
BB 02 F0
BC 00 AA
Expli
ation
AL = AL + 12
BL = BL 15
CL = CL 3
DL = DL / 2 (division entire)
AL = AL mod 10 (reste de la division entire)
AL = AL et 0F
CL = CL ou F0
AL = AL ou ex
lusif AA
9.5
Assembleur
CMP AL, BL
Langage ma
hine
DA 00 01
CMP BL,13
DB 01 13
DC 02 20
Expli
ation
met le ag Z 1 si AL = BL
met le ag S 1 si AL < BL
met le ag Z 1 si BL = 13
met le ag S 1 si BL < 13
met le ag Z 1 si CL = [20
met le ag S 1 si CL < [20
9.6
Appel de sous-programmes
9.7
Langage ma
hine
CA 30
CB
Expli
ation
sauvegarde IP au sommet de la pile et saute 30.
prend IP au sommet de la pile et saute
ette adresse
Manipulation de la pile
9.8
Langage ma
hine
E0 01
E1 02
Expli
ation
BL est sauvegard au sommet de la pile
CL est restaur depuis le sommet de la pile
9.9
Langage ma
hine
F0 00
F1 01
Expli
ation
entre depuis le port 00 vers le registre AL
sortie depuis le registre AL vers le port 01
Langage ma
hine
00
00
onstante hexa
suite de
odes
FF
Expli
ation
n du programme (une seule sur la dernire ligne)
arrt de l'ex
ution (ventuellement plusieurs)
dnit une donne (DeneByte )
les
odes ASCII de HELLO en mmoire
instru
tion vide
80
a s dire t la mmoire
est dans un
ou des
jeu d'instru
tions ensemble des instru
tions d'un pro
esseur
kilo 2 puissan
e 10 (1024 ou un millier)
langage d'assemblage langage ma
hine sous forme symbolique (ave
mnmoniques, identi
ateurs,
tiquettes, et
.)
langage volu
langage de plus haut niveau que le langage d'assemblage et qui doit tre traduit vers
lui (ex : java, C, COBOL, ...)
langage ma
hine langage dire
tement ex
utable par le pro
esseur (forme binaire)
mantisse partie d
imale et fra
tionnaire d'un rel ottant
mga 2 puissan
e 20 (un million)
mgaop million d'instru
tions ottantes par se
onde
mmoire auxiliaire mmoire externe persistante
mmoire
a
he mmoire plus rapide que la mmoire
entrale o sont sto
kes les informations
plus utilises pour a
lrer le traitement
les
mmoire entrale
mmoire vive (non persistante) de l'ordinateur o sont sto ks programmes, donnes et rsultats
ramasse-miettes
olle
tor )
programme qui r upre la mmoire des objets qui ne sont plus utiliss ( f. garbage
registre instru
tion registre de l'unit de
ommande qui a
ueille l'instru
tion d
oder
ROM
f. mmoire morte (Read Only Memory )
squen
eur de
ommandes
omposant de l'unit de
ontrle
aden
par l'horloge qui gnre les
mi
ro
ommandes
SSD mmoire auxiliaire base de mmoire ash qui peut rempla
er le disque dur (Solid State Drive )
supers
alaire ordinateur ave
plusieurs units de traitement sp
ialises fon
tionnant en parallle
(oprations entires, oprations ottantes . . .)
83