Vous êtes sur la page 1sur 25

Architecture des ordinateurs

Filières G.E-G.I.M S1

1 NUMERATION
I) Principe :

1) Définitions :

La numération représente un nombre par la juxtaposition de symboles appelés chiffres, pris parmi un
ensemble. Par exemple, dans le système décimal (Base 10), cet ensemble contient 10 symboles différents :
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Le nombre de symboles définit la base de numération ; et la position respective des chiffres détermine
leurs poids.
2014 = 2 × 1000 + 0 × 100 + 1 × 10 + 4 × 1
2014 = 2 × 103 + 0 × 102 + 1 × 101 + 4 × 100
1 1
3.14 = 3 × 1 + 1 × +4×
10 100
3.14 = 3 × 101 + 1 × 10−1 + 4 × 10−2

2) Généralisation :

Soit une base b, associée à b symboles : {S0, S1, ... Sb-1}. Un nombre N s'écrit alors avec la règle suivante :
𝑁 = (𝑎𝑛∙ 𝑎𝑛−1 ⋯ 𝑎0 , 𝑎−1 ⋯ 𝑎−𝑚 )𝑏 avec 𝑎𝑖 ∈ {𝑆0 , S1 , . . . Sb−1 }
Ce nombre s'écrit sous forme polynomiale :
𝑁 = 𝑎𝑛∙ 𝑏 𝑛 + 𝑎𝑛−1∙ 𝑏𝑛−1 + ⋯ + 𝑎0∙ 𝑏0 + 𝑎−1∙ 𝑏−1 + ⋯ + 𝑎−𝑚∙ 𝑏 −𝑚
𝑛

𝑁 = ∑ 𝑎𝑖 × 𝑏 𝑖
𝑖=−𝑚

Où :
ai est le chiffre (digit) de rang i, son poids est bi.
an est le chiffre le plus significatif (M.S.B.).
a-m est le chiffre le moins significatif (L.S.B.).
an ... a0 représente la partie entière.
a-1 ... a-m représente la partie fractionnaire.

II) Systèmes de numération binaires et hexadécimal

La base 2 est la base la plus utilisée en électronique. On dispose de 2 symboles {0, 1} appelés bits.
(101)2 = 1 × 22 + 0 × 21 + 1 × 20 = (5)10
(1010,1)2 = 1 ⋅ 23 + 0 ⋅ 22 + 1 ⋅ 21 + 0 ⋅ 20 + 1 ⋅ 2−1 = (10,5)10
La base 16 (hexadécimal) est la base la plus utilisée en logique programmée. On dispose de 16 symboles :
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}.
(𝐴𝐵8)16 = 𝐴 ⋅ 162 + 𝐵 ⋅ 161 + 8 ⋅ 160 = 10 ⋅ 162 + 11 ⋅ 161 + 8 ⋅ 160 = (2744)10
(𝐵48𝐸, 𝐶)16 = 𝐵 × 163 + 4 ⋅ 162 + 8 ⋅ 161 + 𝐸 ⋅ 160 + 𝐶 ⋅ 16−1
= 11 ⋅ 4096 + 4 ⋅ 256 + 8 ⋅ 16 + 14 ⋅ 1 + 12 ⋅ 0.0625 = (46222 ⋅ 75)10
III) Conversions de bases
1) Passage de la base b à la base 10 :
C'est l'exploitation directe de la forme polynomiale :
𝑁 = 𝑎𝑛∙ 𝑏 𝑛 + 𝑎𝑛−1∙ 𝑏𝑛−1 + ⋯ + 𝑎0∙ 𝑏0 + 𝑎−1∙ 𝑏−1 + ⋯ + 𝑎−𝑚∙ 𝑏 −𝑚
2) Passage de la base 10 à la base b :
• Conversion par divisions successives :
On divise le nombre décimal par b jusqu'à 0, et on ne prend que les restes en remontant.
23 2

1 11 2 (23)10 = (10111)2

1 5 2

1 2 2

0 1 2

1 0
(625)10 = (1161)8 (4592)10 = (11𝐹0)16
;
Pour les nombres à virgule, on fait la partie entière avec la méthode précédente et la partie fractionnaire que
l'on multiplie par b, et on ne garde que la partie entière et l'on recommence avec la partie décimale. Et on lit
le nombre binaire dans l'ordre.
(23,375)10 = (? )2
0,375 × 2 = 0,75 → 0
0,75 × 2 = 1,50 → 1 } ⇒ 0,37510 = 0,0112 ⇒ (23,375)10 = (10111,011)2
0,50 × 2 = 1,00 → 1

3) Passage de la base b à la base bk :


Il suffit de regrouper les bits du nombre par paquets de k bits.

a) Passage de la base 2 à la base 8 = 23


N= (0101111101 01,011010 )2
N= (010
⏟ 111
⏟ 110
⏟⏟ 1 01 , 011
⏟ 010
⏟)2 ⇒ N = (2765,32)8
2 7 6 5 3 2

b) Passage de la base 2 à la base 16 = 24


N= (0101111101 01,011010 )2
N= (0101
⏟ 1111
⏟⏟ 01 01 , 0110
⏟ 1000
⏟ )2 ⇒ N = (5F5,68)16
5 𝐹 5 6 8

c) Passage de la base bk vers la base 2 :


Le même principe, mais utilisé en sens inverse, permet les conversions dans l'autre sens.
𝑁8 = 2456 𝑁16 = FA830
2 4 5 6 𝐹 𝐴 8 3 0
⏞ 100
𝑁2 = (010 ⏞ 101
⏞ 110
⏞) ⏞
𝑁2 = (1111 ⏞ 1000
1010 ⏞ 0011
⏞ 0000
⏞)
𝑁2 = (010100101110) 𝑁2 = (11111010100000110000)

2
EST_GE/GIM S1
IV) Operations arithmétiques en binaire :
1) L'addition :
Quand on additionne deux nombres binaires, on obtient une retenue quand la somme d'une colonne est
supérieure ou égale à 210.
• Table d'addition
a b a+b
0 0 0
0 1 1
1 0 1
1 1 0 avec une retenue de 1
• Exemples

2) La soustraction :
On effectue la soustraction de la même manière qu'en décimal, si le chiffre à soustraire est plus grand, on
augmente le chiffre que l'on soustrait de 10, que l'on retranchera dans la colonne suivante.

• Table d'addition
a b a-b
0 0 0
0 1 1 avec une retenue de 1
1 0 1
1 1 0

• Exemples

V) Codage des nombres (dans les systèmes programmes) :


1) Représentation des nombres entiers :
Le codage s'effectue en binaire naturel. Il faut définir le format pour avoir la plage de valeurs avec laquelle
on veut travailler :

sur 8 bits: sur 16 bits:


𝑁 = (𝑎7 𝑎6 𝑎5 𝑎4 𝑎3 𝑎2 𝑎1 𝑎0 )2 𝑁 = (𝑎15 𝑎14 𝑎13 𝑎12 𝑎11 𝑎10 𝑎9 𝑎8 𝑎7 𝑎6 𝑎5 𝑎4 𝑎3 𝑎2 𝑎1 𝑎0 )2
𝑁= ∑7𝑖=0 𝑎𝑖 ⋅ 2𝑖 avec 𝑎𝑖 ∈ {0,1} 𝑁 = ∑15 𝑖
𝑖=0 𝑎𝑖 ⋅ 2 avec 𝑎𝑖 ∈ {0,1}

0 ≤ 𝑁10 ≤ 255 0 ≤ 𝑁10 ≤ 65535

2) Représentation des nombres signés :


Le codage binaire s'effectue en complément à 2, et le M.S.B. représente le signe : (0 <=> + ; 1 <=> - )
La représentation en complément à 2 est la représentation la plus courante car c'est celle que les
microprocesseurs utilisent.
a) Complément à 1 (complément restreint) :

3
EST_GE/GIM S1
(
Le complément restreint : CR ( N ) = 2 F − 1 )
10
− N10 avec ( 2F − 1) est le plus grand nombre que l'on puisse
représenter avec le format de F bits.
Il s'obtient donc en inversant chaque bit de N2 sans oublier le bit de poids fort (signe).
N10 = 1410 alors en base 2 N2 = (00001110)2
̅̅̅̅ ̅̅̅̅
−𝑁2 = 𝑁2 = 11110001 et N2 = (00001110)2 = N2
Exemple :
Si F=8 et b=2 C=256. Alors 𝑁max = (127)10 = (7F)𝐻
· Si 𝐵10 =75, alors -75=C𝑅 (𝐵)=255-75=180 et 𝐴10 =100alors dans ce cas A-B=(100-75)=100+180, c'est égal à
255+25=25 résultat positif.
·(-75)10 = (01001011)2 ; (-75)10 = (10110100)2 = 𝑁2 .
Remarque :
- Il y a deux représentations du zéro +0 : (00)𝐻 et -0 : (FF)𝐻 .
b) Complément à 2 (complément vrai) :
On le définit comme étant la valeur :𝐶𝑣 (𝑁) = (2𝐹 )10 − 𝑁10 = 𝐶𝑅 (𝑁) + 1
Pour obtenir le complément à 2, il suffit d'ajouter 1 au complément à 1.
N10 = 1410 alors en base 2 : N2 = (00001110)2
̅̅̅2̅ = 11110001 ; N
N ̅̅̅2̅ + 1 = 11110010

On peut donc utiliser cette méthode pour obtenir des nombres signés. Le M.S.B. est toujours représentatif du
signe.
Si on travaille sur n+1 bits, alors on pourra représenter un nombre N tel que : −2𝑛 ≤ 𝑁 ≤ 2𝑛 − 1

Exemple : n=3 alors −8 ≤ N ≤ 7

0 0000 -1 1111
1 0001 -2 1110
2 0010 -3 1101
3 0011 -4 1100
4 0100 -5 1011
5 0101 -6 1010
6 0110 -7 1001
7 0111 -8 1000
Exemples : N10 = 75 → N2 = (01001011)
N10 = -75 → (10110101)2
100 01100100 01100100
-75 -01001011 +10110101
25 00011001 1 00011001 lecture directe du résultat

50 00110010 00110010
-75 -01001011 +10110101
-25 11100111 11100111 le résultat est en complément à deux : 256-231=25

Remarque :
1) Pour effectuer une soustraction, il suffit de faire une addition avec le complément à deux. Le résultat
se lit directement en complément à deux :
- si le signe est + la lecture est directe,
- si le signe est (-), on convertit le résultat en recherchant le complément à deux de celui-ci.
2) Il existe une autre méthode pour obtenir le complément vrai. On examine le nombre binaire en
commençant par le bit de poids faible. On conserve les zéros s'il y en a jusque et y compris le premier 1
rencontré. On complémente ensuite les autres bits.

4
EST_GE/GIM S1
3) Représentation des nombres fractionnaires.
Norme ANSI IEEE standard 754 pour la représentation des réels
1) Simple précision.

Type float du langage C (compilateur 16 bits sur IBM PC).


valeur : (−1) 𝑠𝑖𝑔𝑛 ∙ 1, 𝑀22 . 𝑀0 ⋅ 2(𝐸−127)

31 22 0

S E M

signe Exposant biaisé (8 bits) Mantisse (23 bits)

La norme IEEE754 permet de représenter certaines valeurs spéciales lorsque E vaut 0 ou 255.

S E E E E E E E E M M M M M M M M M M M M M M M M M M M M M M M
0 1 8 9 31

La valeur V représentée par le mot peut être déterminée comme suit :

Si E = 255 et M est non nul, alors V = NaN ("Pas un nombre")


Si E =255 et M est nul et S est 1, alors V =-l'infini
Si E =255 et M est nul et S est 0, alors V =infini
Si 0 <E <255 puis V = (-1)S . 2(E-127) * (1.M) où "1.M" est destiné à représenter le nombre binaire créé en
préfixant M avec un leader implicite 1 et un point binaire.
si E =0 et M est non nulle, alors V = (-1)S * 2(-126) * (0.M) Ce sont des "valeurs" non normalisées.
Si E =0 et M est nul et que s'est 1, alors V =-0
Si E =0 et M est nul et que s'est 0, alors V =0
Exemples:
0 10000000 00000000000000000000000 = +1 * 2 (128-127) * 1.0 = 2
0 10000001 10100000000000000000000 = +1 * 2 (129-127) * 1.101 = 6.5
1 10000001 10100000000000000000000 = -1 * 2(129-127) * 1.101 = -6.5
2) Double précision.
type double du langage C.
valeur : (−1)𝑠𝑖𝑔𝑛 ⋅ 1, 𝑀51 . . . . . . . . . 𝑀0 ⋅ 2(𝐸−1023)

63 51 0

S E M

signe Exposant biaisé ( Mantisse (52 bits)


11 bits)

5
EST_GE/GIM S1
VI) Codage :
1) Notion de codage

Un dispositif logique ou numérique est destiné à manipuler des informations diverses qui doivent être
traduites par un ensemble de 0 et 1, obtenu suivant une loi de correspondance préétablie : c’est l’opération de
codage de l’information.

Codage (loi de correspondance)


Information {Configuration binaire}

Exemples de codes :
* Code ASCII : chaque touche du clavier est codée sur 8 bits, donc on peut coder 256 caractères.
Exemple : Touche ‘A’ ==> code ASCII « 01000001 » ??
* Code DCB (Décimal Codée en Binaire) : utilisé uniquement pour les chiffres décimaux. Ce code est obtenu
en remplaçant individuellement chacun des chiffres du nombre à représenter par son équivalent binaire pur.
Exemple : 2458(10) = 0010 0100 0101 1000(DCB)
- Avantages : Représentation plus simple et très utile pour les systèmes d’affichage à 7 segments.
- Inconvénient : nécessite plus de bits.

2) Les codes numériques :


Les codes binaires :
a) Code binaire naturel ou base 2
Voir (II°).
b) Code binaire réfléchi ou GRAY
Ce code est utilisé lors d'un comptage réalisé par des capteurs. Car lors du passage d'un nombre au suivant,
il n'y a qu'un seul chiffre qui change à la fois. Ce qui évite les erreurs de comptage.

Décimal Gray « Binaire réfléchi »


0 0 0 0 0
1 0 0 0 1
2 0 0 1 1
3 0 0 1 0
4 0 1 1 0
5 0 1 1 1
6 0 1 0 1
7 0 1 0 0
8 1 1 0 0
9 1 1 0 1
10 1 1 1 1
11 1 1 1 0
12 1 0 1 0
13 1 0 1 1
14 1 0 0 1
15 1 0 0 0

Pour passer d'un nombre binaire à son équivalent en GRAY, on peut utiliser la formule suivante :
𝑁2 ⊕ (2 ⋅ 𝑁2 )
𝑛𝐺𝑅𝐴𝑌 =
2
Exemple :
(432)10 = (110110000)2 = (101101000)𝐺𝑅𝐴𝑌

6
EST_GE/GIM S1
c) Code BCD

Il s'agit de coder en binaire chacun des chiffres décimaux. Son utilisation est fréquente lorsque l'on compte
des événements et que l'on visualise le comptage. Le compteur est constitué de décades de 4 bits, et le
contenu de chaque compteur est directement affiché en clair

Décimal BCD
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
10 00010000
11 00010001
12 00010010
13 00010011
14 00010100
15 00010101

3) Codage ASCII
Un fichier contient une représentation de données. Par exemple un fichier peut contenir une représentation
d'un texte (mais aussi d'une image, d'un son ...). Bien souvent on dit plus simplement que le fichier contient
le texte.
Le contenu du fichier n'est lui-même qu'une suite de 0 et de 1, des bits. On choisit donc de coder chacune des
lettres, plus généralement chacun des caractères, par une représentation binaire.
Historiquement, le codage ASCII a été défini et utilisé pour écrire des textes en anglais.
La table ASCII fournit la correspondance entre 128 caractères et leur représentation binaire. Les caractères
sont numérotés de 0 à 127. A priori, 7 bits suffisent à coder ces caractères, en effet 128 = 27. En pratique, les
ordinateurs travaillent presque tous sur des multiples de 8 bits, ce que l'on nomme octet. Chacun des 128
caractères ASCII est donc codé par un octet dont le 8ème bit est à 0.
Un caractère peut être une lettre, un chiffre, une ponctuation, tout autre symbole accessible via les touches de
votre clavier, etc.

7
EST_GE/GIM S1
Table des caractères ASCII

La représentation binaire du caractère 'a' est '0110_0001' (7e ligne, 2e colonne).


Le caractère de représentation binaire '0111_1010' est 'z' ('0111' 8e ligne, '1010' 11e colonne)
On remarque que certains caractères de la table ASCII sont des caractères dits de contrôle, ils ne sont pas
imprimables ou ne peuvent pas être affichés.)

Note : les 33 caractères de contrôle (deux premières lignes et caractère DEL) correspondent aux significations
suivantes :

NUL Null (nul) DC1-DC4 Device Control (contrôle de périphérique)


SOH Start of Header (debut d'en-tete) NAK Negative Acknowledge (accuse de réception
STX Start of Text (debut du texte) négatif)
ETX End of Text (fin du texte) SYN Synchronous Idle
EOT End of Transmission (fin de transmission) ETB End of Transmission Block (fin du bloc de
ENQ Enquiry (End of Line) (demande, fin de ligne) transmission)
ACK Acknowledge (accuse de reception) CAN Cancel (annulation)
BEL Bell (caractère d'appel) EM End of Medium (fin de support)
BS Backspace (espacement arriere) SUB Substitute (substitution)
HT Horizontal Tab (tabulation horizontale) ESC Escape (echappement)
LF Line Feed (saut de ligne) FS File Separator (separateur de fichier)
VT Vertical Tab (tabulation verticale) GS Group Separator (separateur de groupe)
FF Form Feed (saut de page) RS Record Separator (séparateur d'enregistrement)
CR Carriage Return (retour chariot) US Unit Separator (separateur d'unite)
SO Shift Out (fin d'extension) SP Space (espace)
SI Shift In (démarrage d'extension) DEL Delete (effacement)
DLE Data Link Escape

Application :
Donnez la représentation binaire ASCII du texte suivant :
Je code en binaire !
0100101001100101 0010000001100011 0110111101100100 0110010100100000 0110010101101110 0010000001100010
0110100101101110 0110000101101001 0111001001100101 0010000000100001

8
EST_GE/GIM S1
2 Systèmes à microprocesseur

I) Introduction

Avant l’avènement des microprocesseurs, on commandait les machines et les procédés industriels
par des séquenceurs ou avec des circuits logiques, ces derniers ont rendu de grands services mais ils
présentent l’inconvénient d’être spécifiques à une machine déterminée et pour une application
donnée : c’est la logique câblée.
Le microprocesseur pourrait s’adapter à de nombreux types de machines, son comportement est
déterminé par un programme qui indique au microprocesseur les taches que doit effectuer.
-microprocesseur : circuit intégré logique complexe commandé par un programme.
II) La logique programmée

1) Définition
Le programme qui définit le comportement du processeur est rangé dans la mémoire ; le
processeur ira chercher une instruction dans la mémoire, exécutera l’opération correspondante, puis
ira chercher en mémoire la prochaine instruction du programme l’exécutera, et ainsi de suite, une
telle logique est dite : logique programmée et elle correspond au logiciel (Software)

2) Intérêt de la logique programmée


▪ La souplesse
Lorsqu’un système est conçu ; pour le modifier, si le système a été conçu en logique câblée, il faut
probablement refaire la carte circuit imprimé supportant tous les circuits intégrés qui sont
probablement irrécupérables. Par contre, si le système a été conçu en logique programmée, il suffit
de modifier le programme.
▪ La logique câblée

Les premiers automatismes étaient réalisés à


partir de la logique câblée selon le synoptique
ci-contre :

Les systèmes à logique câblée sont conçus à l'aide de circuits intégrés logiques.
1. La logique combinatoire

9
EST_GE/GIM S1
les sorties sont définies uniquement à partir des
variables d'entrée

2. La logique séquentielle

les sorties dépendent toujours des entrées mais aussi


des états antérieurs

▪ La logique programmée

Le microprocesseur donne naissance au


principe de la logique programmée. Le
fonctionnement n'est plus défini par un
ensemble de circuits logiques, câblés entre eux,
mais par une suite ordonnée d'instructions
stockées en mémoire et gérées par cet élément.

▪ La consommation et encombrement réduit


Le nombre de boitiers de circuits intégrés est très faible → encombrement et une consommation bien
inférieure.
▪ Une durée plus courte pour l’étude du système :
La puissance de jeu d’instructions en logique programmée lui permettra un temps d’étude plus courte.

III) Système à microprocesseur


Lorsqu’un système logique est conçu à partir d’un microprocesseur, il est appelé système à
microprocesseur. La conception et la réalisation d’un tel système comprennent deux (2) parties bien
distinctes :
✓ L’étude du ‘’matériel’’
✓ L’étude du ‘’logiciel’’

3) Etude matérielle (Hardware)


a) Environnement minimal d’un système à microprocesseur
La figure ci-dessous représente la structure d’un circuit à microprocesseur pour l’injection essence
d’un moteur thermique

10
EST_GE/GIM S1
Entrées
Horloge
Bus d’adresses Touches de commande
Capteurs de température
(AB) et Capteur de cliquetis,
sonde lambda ….
Unité ROM RAM Ports
centrale (programme) (Données) d’E/S
Sorties
Moteurs, Électrovanne
E.G.R; injecteurs ; pompe,

Bus de controle Bus de donnees
(CB) (DB)
Un système minimum est l’ensemble de circuits, de composants nécessaires pour la
constitution d’un système programmable. Un système minimal doit obligatoirement comporter les
trois (3) éléments essentiels suivants :
a-1) Modèle d’architecture de Von Neumann
L’architecture de von Neumann est un modèle structurel d’ordinateur dans lequel une unité de
stockage (mémoire) unique sert à conserver à la fois les instructions et les données demandées ou
produites par le calcul. Les ordinateurs actuels sont tous basés sur des versions améliorées de cette
architecture.

L’architecture de von Neumann décompose l’ordinateur


en 4 parties distinctes :
▪ l’unité arithmétique et logique (UAL ou ALU en anglais)
ou unité de traitement : son rôle est d’effectuer les
opérations de base ;
▪ l’unité de contrôle ou de commande (control unit), chargée
du « séquençage » des opérations ;
▪ la mémoire qui contient à la fois les données et le programme qui
indiquera à l’unité de contrôle quels sont les calculs à faire sur ces
données ;
▪ les dispositifs d’entrée-sortie, qui permettent de communiquer avec le monde extérieur.
NB :
• Bus mémoire et données partagées : limite la vitesse
• Cache peut accélérer le système
a-2) Architecture Harvard
• Mémoire instructions et mémoire données
n’ont pas besoin d’être de même taille (bits)
• CPU peut lire une instruction et accéder la
mémoire en même temps
• Adresses mémoire et données différentes

11
EST_GE/GIM S1
a-3) L’unité centrale (appelé CPU : Central Processing Unit)
Elle est composée par le microprocesseur qui est chargé :
▪ De recevoir les informations provenant de la périphérie (touches de commande, différents
capteurs, …)
▪ d’interpréter et d’exécuter les instructions d’un programme
▪ de lire ou de sauvegarder les résultats dans la mémoire
▪ de communiquer avec les unités d’échange
Toutes les activités du microprocesseur sont cadencées par une horloge.
On caractérise le microprocesseur par :
– sa fréquence d’horloge : en MHz ou GHz
– le nombre d’instructions par secondes qu’il est capable d’exécuter : en MIPS
– la taille des données qu’il est capable de traiter : en bits
b) La mémoire principale
Elle contient les instructions du ou des programmes en cours d’exécution et les données associées
à ce programme. Physiquement, elle se décompose souvent en :
– une mémoire morte (ROM = Read Only Memory) chargée de stocker le programme. C’est une
mémoire à lecture seule.
– une mémoire vive (RAM = Random Access Memory) chargée de stocker les données
intermédiaires ou les résultats de calculs. On peut lire ou écrire des données dedans, ces données
sont perdues à la mise hors tension.
Remarque :
Les disques durs, disquettes, CDROM, etc… sont des périphériques de stockage et sont considérés
comme des mémoires secondaires.
b-1) Organisation d’une mémoire
Une mémoire est constituée de plusieurs cases mémoire. Chaque case peut contenir un seul
élément : des données. Le nombre de cases mémoires pouvant être très élevé, il est alors nécessaire
de pouvoir les identifier par un numéro. Ce numéro est appelé adresse. Chaque donnée devient
alors accessible grâce à son adresse
Adresse Case mémoire
7=111 1110 0001
6=110
5=101
4=100
3=011
2=010
1=001
0=000 0001 1111

Avec une adresse de n bits il est possible de référencer au plus 𝟐𝒏 cases mémoire. En plus du bus
d’adresses et du bus de données, un boîtier mémoire comprend une entrée de commande qui
permet de définir le type d’action que l’on effectue avec la mémoire (lecture/écriture) et une entrée
de sélection qui permet de sélectionner le boîtier de la mémoire.

12
EST_GE/GIM S1
Adresses (n bits)

̅
Mémoire Données (m bits)
R/𝑊
̅̅̅̅
𝐶𝑆

Une opération de lecture ou d’écriture de la mémoire suit toujours le même cycle :


i. sélection de l’adresse
̅)
ii. choix de l’opération à effectuer ( R/W
iii. sélection de la mémoire ( ̅̅̅
CS = 0 )
iv. lecture ou écriture la donnée
b-2) Caractéristiques d’une mémoire
La capacité : c’est le nombre total de bits que contient la mémoire. Elle s’exprime souvent en octet.
Le format des données : c’est le nombre de bits que l’on peut mémoriser par case mémoire.
Le temps d’accès : c’est le temps qui s'écoule entre l'instant où a été lancée une opération de
lecture/écriture en mémoire et l'instant où la première information est disponible sur le bus de
données.
Le temps de cycle : il représente l'intervalle minimum qui doit séparer deux demandes successives
de lecture ou d'écriture.
Le débit : c’est le nombre maximum d'informations lues ou écrites par seconde.
Volatilité : elle caractérise la permanence des informations dans la mémoire. L'information
stockée est volatile si elle risque d'être altérée par un défaut d'alimentation électrique et non volatile
dans le cas contraire.
Exemple : Chronogramme d’un cycle de lecture

Remarque :
Les mémoires utilisées pour réaliser la mémoire principale d’un système à microprocesseur sont
des mémoires à semi-conducteur. Dans ce type de mémoire, on accède directement à n'importe
quelle information dont on connaît l'adresse et que le temps mis pour obtenir cette information ne
dépend pas de l'adresse. On dira que l'accès à une telle mémoire est aléatoire ou direct
b-3) Différents types de mémoire
❖ Les mémoires vives (RAM)

13
EST_GE/GIM S1
Une mémoire vive sert au stockage temporaire de données. Elle doit avoir un temps de cycle très
court pour ne pas ralentir le microprocesseur. Les mémoires vives sont en général volatiles : elles
perdent leurs informations en cas de coupure d'alimentation. Il existe deux grandes familles de
mémoires RAM (Random Acces Memory : mémoire à accès aléatoire) :

▪ Les RAM statiques : Le bit mémoire d'une RAM statique (SRAM) est composé d'une bascule.
Chaque bascule contient entre 4 et 6 transistors.

▪ Les RAM dynamiques : Dans les RAM dynamiques (DRAM),


l'information est mémorisée sous la forme d'une charge électrique
stockée dans un condensateur (capacité grille substrat d'un
transistor MOS). Cette technique permet une plus grande densité
d'intégration, car un point mémoire nécessite environ quatre fois
moins de transistors que dans une mémoire statique. Sa
consommation s’en retrouve donc aussi très réduite. Cependant
Les DRAM doivent donc être rafraîchies régulièrement pour
entretenir la mémorisation : il s'agit de lire l'information et de la recharger. Ce rafraîchissement
indispensable a plusieurs conséquences :
- la durée de ces actions augmente le temps d'accès aux informations
- il complique la gestion des mémoires dynamiques

En général les DRAM, qui offrent une plus grande densité d'information et un coût par bit plus
faible, sont utilisées pour la mémoire centrale, alors que les mémoires statiques, plus rapides, sont
utilisées lorsque le facteur vitesse est critique, notamment pour des mémoires de petite taille
comme les caches et les registres.

La SDRAM (Synchronous DRAM, 1997) : La mémoire SDRAM a pour particularité de se


synchroniser sur une horloge. Les mémoires FPM (Fast Page Mode, 1987 33 à 50 Mhz), EDO
(Extended Data Out, 1995, 33 à 66 Mhz) étaient des
mémoires asynchrones et elles induisaient des temps
d'attentes lors de la synchronisation. Elle permet de
supporter des fréquences plus élevées (100 Mhz).

La DDR-I ou DDR-SDRAM (Double Data Rate Synchronous DRAM, 2000) : La DDR-SDRAM


permet de recevoir ou d'envoyer des données lors du front montant et du front descendant de
l’horloge. (133 à 200 MHz)

14
EST_GE/GIM S1
❖ Les mémoires mortes (ROM)
Pour certaines applications, il est nécessaire de pouvoir conserver des informations de façon
permanente même lorsque l'alimentation électrique est interrompue. On utilise alors des mémoires
mortes (mémoires à lecture seule) (ROM : Read Only Memory). Ces mémoires sont non volatiles.
Ces mémoires, contrairement aux RAM, ne peuvent être que
lue. L’inscription en mémoire des données reste possible mais
est appelée programmation. Suivant le type de ROM, la
méthode de programmation changera. Il existe donc plusieurs
types de ROM :
▪ ROM : Elle est programmée par le fabricant et son
contenu ne peut plus être ni modifié, ni effacé par
l'utilisateur.
▪ PROM : C’est une ROM qui peut être programmée
une seule fois par l'utilisateur (Programmable ROM).
La programmation est réalisée à partir d’un
programmateur spécifique. Les liaisons à diodes de la
ROM sont remplacées par des fusibles pouvant être détruits ou des jonctions pouvant être
court-circuitées.
▪ EPROM ou UV-EPROM : ce sont des PROM Effaçables. Après une programmation, il est
possible de l'effacer puis de la reprogrammer complètement. Les UV EPROM s'efface aux
ultraviolets. Le boîtier est muni, sur sa face supérieure, d'une fenêtre en quartz transparente
aux U.V. Une exposition à un rayonnement U.V. pendant 15 à 30 minutes efface la totalité
de la mémoire. Pour éviter un effacement intempestif par des sources parasites telles que le
soleil, un cache opaque protège cette fenêtre.
EEPROM : (aussi appelées mémoires "Flash") sont des PROM Effaçables Electriquement. Ce type de
mémoire présente l'avantage par rapport au précédent de pouvoir être programmé et effacé in situ.
❖ Mémoire cache

Le principe de la mémoire cache est simple : il consiste à stocker dans une mémoire rapide et de
faible capacité les données les plus souvent utilisées.
La mémoire cache s'appuie sur deux facteurs :
▪ localité : on a une forte probabilité d'accéder à la donnée à l'adresse P+1 si on a accédé à la
donnée à l'adresse P
▪ temporalité : on a une forte probabilité d'accéder à la donnée à l'adresse P au temps T+1 si on
a accédé à la donnée à l'adresse P au temps T

Niveaux de caches

Mémoire cache primaire et secondaire

15
EST_GE/GIM S1
On distingue en fonction de leur taille et de leur localité :
La mémoire cache de premier niveau (L1) dont la taille est de deux fois 8 Ko (Pentium) ou deux fois 16 Ko
(Pentium Pro). On distingue
- le cache de données L1D
- du cache d'instructions L1I
La mémoire cache de second niveau (L2) dont la taille varie de 256 à 512 Ko.
La mémoire cache de troisième niveau (L3) parfois qualifié de LLC (Last Level Cache) dont la taille varie de 6
à 24 Mo.


b-4) Critères de choix d’une mémoire
Les principaux critères à retenir sont :
▪ capacité
▪ vitesse
▪ consommation
▪ coût
b-5) Hiérarchie de mémoires
On utilise des mémoires de faible capacité mais très rapide pour stocker les informations dont le
microprocesseur se sert le plus et on utilise des mémoires de capacité importante mais beaucoup
plus lente pour stocker les informations dont le microprocesseur se sert le moins. Ainsi, plus on
s’éloigne du microprocesseur et plus la capacité et le temps d’accès des mémoires vont augmenter.

▪ Les registres sont les éléments de mémoire les plus rapides. Ils sont situés au niveau du
processeur et servent au stockage des opérandes et des résultats intermédiaires.
▪ La mémoire cache est une mémoire rapide de faible capacité destinée à accélérer l’accès à la
mémoire centrale en stockant les données les plus utilisées.
▪ La mémoire principale est l’organe principal de rangement des informations. Elle contient les
programmes (instructions et données).
▪ La mémoire d’appui sert de mémoire intermédiaire entre la mémoire centrale et les mémoires de
masse. Elle joue le même rôle que la mémoire cache.
▪ La mémoire de masse est une mémoire périphérique de grande capacité utilisée pour le stockage
permanent ou la sauvegarde des informations. Elle utilise pour cela des supports magnétiques
(disque dur, …) ou optiques (CDROM, DVDROM).

16
EST_GE/GIM S1
b-6) Extension de la mémoire

b-6-1) Augmentation de l'espace d'adressage


Afin d'obtenir une mémoire de 256 Ko, on peut utiliser 4 boîtiers de 64 Ko. Une adresse mémoire
est alors codée sur 18 bits. Les 16 bits de poids faible donnent l'adresse à l'intérieur d'un boîtier et
les 2 bits de poids fort donnent le numéro du boîtier à sélectionner.

Organisation d'une mémoire de 256 Ko à partir de blocs de 64 Ko

b-6-2) Augmentation de la longueur d'un mot


La méthode d'extension de la mémoire consiste à augmenter la longueur d'un mot mémoire. Pour
passer d'une mémoire de 64 K mots de 8 bits à une mémoire de 2 × 64 Ko soit 128 Ko de 16 bits, on
monte les deux mémoires de 64 Ko en parallèle.

Organisation d'une mémoire de 64 K mots de 16 bits

17
EST_GE/GIM S1
4) Les interfaces d’entrées/sorties
Les différents périphériques (touches de commande, capteurs, moteur, …) sont raccordés au
microprocesseur par des circuits d’interface nommés ports d’entrées et de sorties, nécessaire pour la
communication du microprocesseur avec l’extérieur.
Ces trois éléments sont interconnectés via des bus.
Le bus est un ensemble de lignes parallèles assurant le transfert d’information entre différents
circuits de système.
❖ Bus de données

Il permet de transporter :
- les instructions de la mémoire ROM vers le microprocesseur,
- les données de la mémoire RAM vers le microprocesseur (lecture) ou inversement (écriture).
- les informations lues sur les ports d'entrées,
- les commandes à écrire sur les ports de sorties.
Pour un microprocesseur 16 bits, le bus de données comporte 16 fils. Le nombre de valeurs
possibles sur le bus de données est 216 = 65536.
Lorsque les données vont du microprocesseur au composant cela est appelé une écriture (le
microprocesseur écrit une donnée dans une case mémoire ou dans un registre).

Ecriture

CPU Mémoire
Bus de données

Lorsque les données vont du composant au microprocesseur cela est appelé une lecture (le

Lecture

CPU Mémoire
Bus de données
microprocesseur lit une donnée dans une case mémoire ou dans un registre).
Le bus de contrôle
Il permet au microprocesseur de spécifier à son environnement ce qu'il a l'intention de faire : une
ligne (R/W̅ ) indique si le microprocesseur va lire (Read) ou écrire (Write) dans la mémoire ou un
périphérique. Suivant les microprocesseurs, d'autres lignes peuvent venir s'ajouter à savoir ̅𝐂𝐒 ̅̅̅
̅̅̅̅ (Chip Enable) : Permet de signaler que le composant est sélectionné et que les
(Chip Select) ou CE
ordres qu’il reçoit sur les autres fils lui sont destinés. Cette entrée est généralement active au niveau
bas.
❖ Le bus d'adresses

Il permet au microprocesseur de sélectionner :


- une adresse de la mémoire ROM à laquelle il veut accéder pour lire une instruction. (Chaque
instruction est codée en binaire et située à une adresse différente).
- une adresse de la mémoire RAM à laquelle il veut accéder pour lire ou écrire une donnée.

18
EST_GE/GIM S1
- un port d'entrée pour lire une information (ex : information provenant d'un capteur).
- un port de sortie pour envoyer une commande (ex : faire tourner un moteur).
L'espace mémoire disponible comporte 2n emplacements (où n est le nombre de bits du bus
d'adresses).
Pour un bus 16 bits. Les bits de ce bus sont repérés de A15 à A0.
Le nombre d’adresses possibles est 216 = 65536. Il est donc possible d’adresser 65536 cases
mémoires de n bits (taille du bus de données).
La première adresse s’écrit : (0000 0000 0000 0000)2 = (0000)16
La dernière adresse s’écrit : (1111 1111 1111 1111) 2= (FFFF)16
Ce bus n’est pas bidirectionnel. Il est en sortie pour le microprocesseur, c’est lui qui décide de
l’adresse, il est en entrée pour les autres composants.

5) Décodage d’adresses
La multiplication des périphériques autour du microprocesseur oblige la présence d’un décodeur
d’adresse chargé d’aiguiller les données présentes sur le bus de données.
En effet, le microprocesseur peut communiquer avec les différentes mémoires et les différents
boîtiers d’interface. Ceux-ci sont tous reliés sur le même bus de données et afin d’éviter des conflits,
un seul composant doit être sélectionné à la fois.
Lorsqu’on réalise un système microprogrammé, on attribue donc à chaque périphérique une zone
d’adresse et une fonction « décodage d’adresse » est donc nécessaire afin de fournir les signaux de
sélection de chacun des composants.

Remarque : lorsqu’un composant n’est pas sélectionné, ses sorties sont mises à l’état « haute
impédance » afin de ne pas perturber les données circulant sur le bus. (elle présente une impédance
de sortie très élevée = circuit ouvert ).
5-a) Décodage linéaire
Soit 𝑷, le nombre de bits d’adresse du microprocesseur, et 𝑪, le nombre de bits d’adresse du plus grand
composant connecté au microprocesseur. En décodage linéaire, on associe un bit de sélection par composant.
On peut donc connecter 𝑷 – 𝑪 composants au microprocesseur.

19
EST_GE/GIM S1
5-b) Décodage par zone.
En décodage par zone, on associe une combinaison de bits de sélection à un périphérique. On peut donc
connecter 𝟐𝑷−𝑪 périphériques au microprocesseur.
Si on dispose d’une mémoire morte (ROM) de 8 Mb, d’une mémoire vive (RAM) de 8 Mb et de deux
périphériques (P1, P2 et P3) adressables respectivement sur 8 Ko, 4 Ko et 2Ko. On désire les rendre
accessibles à un microprocesseur via les bus d’adresses (24 bits), de données (8 bits) et de commande.
Pour connecter les 5 composants en utilisant le moins de zones possible, il faut utiliser 3 bits de sélection afin
de découper l’espace mémoire en 8 zones. Ce seront les 3 bits de poids fort : 𝑨𝟐𝟑, 𝑨𝟐𝟐 et 𝑨𝟐𝟏.
A23 A22 A21 Composant associé Fonction de décodage
0 0 0 ROM. 𝑪𝑺𝑹𝑶𝑴 = 𝐴𝑆. 𝐴̅̅̅̅̅ ̅̅̅̅̅ ̅̅̅̅̅
23 . 𝐴22 . 𝐴21
0 0 1 RAM 𝑪𝑺𝑹𝑨𝑴 = 𝐴𝑆. 𝐴̅̅̅̅̅ ̅̅̅̅̅
23 . 𝐴22 . 𝐴21
0 1 0 P1 ̅̅̅̅̅
𝑪𝑺𝑷𝟏 = 𝐴𝑆. 𝐴 ̅̅̅̅̅
23 . 𝐴22 . 𝐴21
0 1 1 P2 ̅̅̅̅̅
𝑪𝑺𝑷𝟐 = 𝐴𝑆. 𝐴23 . 𝐴22 . 𝐴21
1 0 0 P3 𝑪𝑺𝑷𝟑 = 𝐴𝑆. 𝐴23 . ̅̅̅̅̅
𝐴22 . 𝐴 ̅̅̅̅̅
21

Avec AS (Address Strobe) que fournit le microprocesseur, indique si la valeur sur son bus d’adresse est
valide. La représentation de l’espace mémoires avec toutes les adresses remarquables est :
ROM basse : 0000 0000 0000 0000 0000 00002 = 00000016
ROM haute : 0000 1111 1111 1111 1111 11112 = 0FFFFF16
RAM basse : 0010 0000 0000 0000 0000 00002 = 20000016
RAM haute : 0010 1111 1111 1111 1111 11112 = 2FFFFF16
P1 basse : 0100 0000 0000 0000 0000 00002 = 40000016
P1 haute : 0100 0000 0001 1111 1111 11112 = 401FFF16
P2 basse : 0110 0000 0000 0000 0000 00002 = 60000016
P2 haute : 0110 0000 0000 1111 1111 11112 = 600FFF16
P3 basse : 1000 0000 0000 0000 0000 00002 = 80000016
P3 haute : 1000 0000 0000 0111 1111 11112 = 8007FF16
Le schéma de câblage :

20
EST_GE/GIM S1
3 La mémoire de masse
I) Le disque dur (hard drive)
Le disque dur est l'un des composants (ou périphérique) de l'ordinateur servant à conserver les
données de manière persistante. On qualifie également les média de stockage de grande capacité
de mémoire de masse. Le disque dur est relié à la carte-mère par l'intermédiaire d'un contrôleur de
disque dur faisant l'interface entre le processeur et le disque dur. On distingue généralement les
interfaces suivantes :

1) Organisation interne
Un disque dur est constitué d'un ou plusieurs plateaux d'une taille de 3"1/2 ou 2"1/2 entre
lesquels passent des têtes de lecture/écriture solidaires d'un bras qui autorise le déplacement des
têtes sur toute la surface du disque.
Les plateaux tournent à une vitesse de 4200, 5400, 7200, 10000, 12000 ou 15000 tr/min.
Plus la vitesse de rotation est importante, plus le disque est performant.

2) Principe de lecture / écriture

On utilise un matériau dur sur lequel on dispose une couche d'oxyde de fer. La tête de
lecture/écriture est composée par un aimant autour duquel est enroulée une bobine.

▪ Pour écrire :

21
EST_GE/GIM S1
On fait passer un courant électrique dans la bobine ce qui crée un champ magnétique. Les
lignes de champ magnétique traversent la couche d'oxyde et orientent celui-ci en créant de
petits aimants dont le sens est donné par le sens du courant dans la bobine.

▪ Pour lire :
On fait passer la tête de lecture/écriture sur le support magnétisé qui crée un courant induit
dans la bobine dont le sens indique s'il s'agit d'un 0 ou d'un 1.

3) Formatage
Il existe deux types de formatages :

▪ Le formatage de bas niveau dit formatage physique


▪ Le formatage de haut niveau dit formatage logique

a) Formatage de bas niveau


Le formatage de bas niveau a pour but d'organiser la surface du disque en éléments simples :
pistes (cylindres), secteurs qui permettront de localiser l'information.
Le formatage de bas niveau est effectué en usine lors de la fabrication du disque dur.
b) Formatage de haut niveau
Le formatage de haut niveau permet d'organiser les pistes (cylindres) et secteurs en
un système de fichier qui sera géré par un système d'exploitation (Windows, Linux, Unix,
OS2, ...).

Pour formater un disque il faut utiliser la commande format sous MSDOS/Windows :

format c:

Les différents systèmes de fichiers


Système d'exploitation Système de fichiers
DOS FAT 16
Windows 95 FAT 32
Windows NT, XP NTFS
Linux Ext2, Ext3
OS/2 HPFS
b-1) Cas de la FAT 16
Durant le formatage on crée la FAT (File Allocation Table) qui contient la liste des clusters du
disque ou de la partition. On répartit plusieurs secteurs en un cluster qui devient la plus petite
unité d'allocation.
Avec une FAT 16, utilisée avec MSDOS, les adresses des clusters sont codées sur 16 bits, soit 65536
clusters différents (en fait 65526 car 10 clusters sont réservés).

22
EST_GE/GIM S1
▪ Pour un disque de 512 Mo, la taille d'un cluster est de 229 / 216 = 8 ko.

La FAT 16 permet de gérer des disques d'une capacité n'excédant pas 2 Go.

b-2) Cas de la FAT 32


La FAT 32 code les adresses de clusters sur 28 bits (les 4 derniers bits étant réservés). Elle permet de
gérer des disques de 260 Mo à 2 To.
4) Partitionnement
Le partitionnement est effectué avant le formatage de haut niveau et permet de placer plusieurs
systèmes de fichiers différents (donc plusieurs systèmes d'exploitation) sur le même disque. Le
partitionnement peut également servir à séparer programmes et données.
Il y a 3 sortes de partitions :

▪ les partitions principales


▪ la partition étendue
▪ les lecteurs logiques

Un disque peut contenir au maximum 4 partitions principales dont une seule est dite active (c'est
elle qui permettra de démarrer la machine avec le système d'exploitation par défaut).
On peut également organiser le disque en 3 partitions principales et une partition étendue. Dans ce
cas la partition étendue peut être subdivisée en lecteurs logiques

Le secteur de démarrage (appelé Master Boot Record ou MBR en anglais) est le premier secteur
d'un disque dur (cylindre 0, tête 0 et secteur 1), il contient la table de partition principale et le code
qui, une fois chargé en mémoire, va permettre d'amorcer le système (booter).
Pour partitionner un disque on peut utiliser :
▪ la commande fdisk avant d'installer un système d'exploitation
▪ ou des utilitaires comme Partition Magik.
Le MBR contient toutes les informations relatives au disque dur (fabricant, numéro de série,
nombre d'octets par secteur, nombre de secteurs par cluster, nombre de secteurs, ...). Ce secteur est
donc le secteur le plus important du disque dur, il sert au setup du BIOS à reconnaître le disque
dur. Lorsqu'il est endommagé ou effacé par un virus votre disque dur est inutilisable.
5) Grandeurs caractéristiques et performances

a) Capacité
Connaissant :

▪ le nombre de cylindres (C) (= nombre de pistes)


▪ le nombre de têtes de lecture/écriture (H)

23
EST_GE/GIM S1
▪ le nombre de secteurs par piste (S)

On peut calculer la capacité d'un disque dur :

𝑪𝒂𝒑𝒂𝒄𝒊𝒕é = 𝑪 𝒙 𝑯 𝒙 𝑺 𝒙 𝟓𝟏𝟐 𝒐𝒄𝒕𝒆𝒕𝒔

Les capacités des disques durs actuels varient de 40 Go à quelque To.


Remarque : les constructeurs donnent généralement la taille des disques durs en divisant la
capacité par 1000 au lieu de 1024. Par exemple pour un disque de caractéristiques C=4092, H=16,
S=63, la taille devrait être de 2014 Mo, or on indique 2111 Mo.

b) Taux de transfert
Le taux de transfert indique le nombre de ko que l'on peut transférer en une seconde.
Quelques caractéristiques de disques dur
Mesures réalisées par hdtune
Vitesse de Tx de Transfert Temps d'accès
Disque Capacité
rotation (tr/min) maximum (Mo/s) (ms)
Hitachi HTS548060M 60 Go 5400 31 18,4
Hitachi Travelstar 40 4200 10 18,8
Maxtor Diamond Max Plus 160 7200 56 15,5

c) Temps de latence
Le temps de latence correspond à l'intervalle de temps entre le moment ou la tête de
lecture/écriture trouve les données étant placée sur la piste adéquat. Le temps de latence est donné
par la formule suivante :

𝑻𝒍𝒂𝒕𝒆𝒏𝒄𝒆 = (𝟔𝟎 / 𝒗𝒊𝒕𝒆𝒔𝒔𝒆 𝒅𝒆 𝒓𝒐𝒕𝒂𝒕𝒊𝒐𝒏) / 𝟐

Pour un disque tournant à 10000 tr/min le temps de latence est de 3 ms.

d) Temps d'accès
Temps nécessaire au passage sur la piste suivante

e) Temps moyen d'accès


Intervalle de temps entre la réception d'une requête et la mise à disposition des données.
6) Les Solid State Disks (SSD)

24
EST_GE/GIM S1
Le principe de fonctionnement des SSD repose sur l'utilisation de mémoire Flash qui a tendance à
s'user à force de lecture/écriture :

▪ la mémoire Flash NAND : l'accès est réalisé en série et ce type de mémoire se montre
intéressant pour la lecture/écriture de fichiers de grande taille
▪ SLC (Single-Level Cell) : stockage d'un bit par cellule, faible consommation, taux de
transfert élevé : 100.000 cycles avant usure
▪ MLC (Multi-Level Cell) : stockage de deux bits par cellule : 10.000 cycles avant usure
▪ la mémoire Flash NOR : adaptée à des accès aléatoires

On utilise généralement de la Flash NAND car sa densité de stockage est plus grande.
Comparatif disque dur magnétique (DDM)/ Solid State Disk (SSD)
Critère DDM SSD
Consommation importante / moyenne faible
nuisance sonore importante / moyenne nulle
lecture moyenne rapide
écriture moyenne lente
cycles très importants 100.000 / 10.000
Prix moyen très élevé

25
EST_GE/GIM S1

Vous aimerez peut-être aussi