Académique Documents
Professionnel Documents
Culture Documents
Support de cours
Karim BAICHE
Année 2018
Sommaire
Introduction ..................................................................................................................................... 1
Chapitre 1 : Généralité et historique sur l’Informatique ................................................................. 2
1.1-Introduction ........................................................................................................................... 2
1.2- Un peu d'histoire .................................................................................................................. 4
1.2.1- Introduction ................................................................................................................... 4
1.2.2- Le calcul mécanique ...................................................................................................... 5
1.2.3- Le Calcul Electromécanique .......................................................................................... 6
Chapitre 2 : Architecture de base .................................................................................................. 12
2.1- Modèle de Von Neumann .................................................................................................. 12
2.2- L’unité centrale .................................................................................................................. 13
2.3- La mémoire principale ....................................................................................................... 13
2.4- Les interfaces d’entrées/sorties .......................................................................................... 13
2.5- Les bus................................................................................................................................ 14
Chapitre 3 : Le Processeur (Central Processing Unit, CPU) ......................................................... 15
3.1- Introduction ........................................................................................................................ 15
3.2- Architecture de base d’un microprocesseur ....................................................................... 15
3.2.1- L’Unité de Commande ................................................................................................ 16
3.2.2- L’unité de traitement ................................................................................................... 16
3.2.3-Cycle d’exécution d’une instruction ............................................................................. 17
3.2.4- Jeu d’instructions ......................................................................................................... 19
3.3-Processeurs spéciaux ........................................................................................................... 28
Chapitre 4 : Le Micro-Processeur Intel 8086 ................................................................................ 29
4.1- Introduction ........................................................................................................................ 29
4.2- Architecture Interne du μP 8086 ........................................................................................ 29
4.2.1- Description du μP 8086 ............................................................................................... 29
4.2.2- Registres du µP 8086 ................................................................................................... 29
4.3- Représentation et codage des instructions .......................................................................... 31
4.4- Instructions du 8086 ........................................................................................................... 32
4.4.1-Définition : .................................................................................................................... 32
4.4.2-Modèle de description d’une instruction ...................................................................... 32
4.4.3-Les instructions de transfert .......................................................................................... 34
4.4.4-Incrémentation, décrémentation ................................................................................... 35
4.4.5-Opposé d’un nombre .................................................................................................... 36
4.4.6-Les instructions arithmétiques ...................................................................................... 36
4.4.7-Les instructions booléennes et logiques ....................................................................... 41
4.4.8-Les tests en assembleur................................................................................................. 43
4.4.9-La pile ........................................................................................................................... 47
4.4.10-Les Instructions d'Entrées-Sorties : ............................................................................ 48
4.4.11-Les Instructions de Décalage et Rotation ................................................................... 49
Chapitre 5 : Les mémoires ............................................................................................................ 53
5.1- Introduction ........................................................................................................................ 53
5.2- Organisation d’une mémoire .............................................................................................. 53
5.3- Caractéristiques d’une mémoire. ........................................................................................ 54
5.3.1- La capacité ................................................................................................................... 54
5.3.2- Le format des données ................................................................................................. 55
5.3.3- Le temps d’accès ......................................................................................................... 55
5.3.4- Le temps de cycle ........................................................................................................ 55
5.3.5- Le débit ........................................................................................................................ 55
5.3.6- Volatilité ...................................................................................................................... 55
5.3.7- Modes d’accès ............................................................................................................. 55
5.4- Différents types de mémoire .............................................................................................. 56
5.4.1- Les mémoires vives (RAM) ........................................................................................ 56
5.4.2- Critères de choix entre SRAM et DRAM .................................................................... 58
5.4.3- Les mémoires mortes ................................................................................................... 59
Chapitre 6 : Les Interfaces d’Entrée/Sortie ................................................................................... 66
6.1- Introduction ........................................................................................................................ 66
6.2- L’Interface d’Entrée/Sortie ................................................................................................ 66
6.3- Techniques d’échange de données ..................................................................................... 67
6.3.1- Scrutation ..................................................................................................................... 67
6.3.2- Interruption .................................................................................................................. 67
6.3.4- Echange direct avec la mémoire (DMA) ..................................................................... 69
6.4- Types de liaisons ................................................................................................................ 71
6.4.1- Liaison parallèle .......................................................................................................... 71
6.4.2- Liaison série ................................................................................................................. 71
6.5- Architecture d’un PC .......................................................................................................... 73
6.5.1- le chipset ...................................................................................................................... 74
6.5.2- le BIOS (Basic Input Ouput Service) .......................................................................... 74
6.5.3- l’horloge....................................................................................................................... 74
6.5.4- les ports de connexion ................................................................................................. 74
6.5.5- Le socket ...................................................................................................................... 75
Biblipgraphie ................................................................................................................................. 76
Introduction
Il a pour objectif de donner une idée globale, pour ces étudiants, sur les machines
informatiques, du point de vue architectural ainsi que leur principe de fonctionnement.
Il est très clair que de nos jours, les systèmes informatiques ou systèmes intelligents nous
envahissent. Ils sont partout dans notre quotidien, téléphone, téléviseur, machine à laver et même
la maison elle-même (smart home). Pour cela, il est nécessaire pour toute personne travaillant dans
ce domaine ou utilisant les systèmes à microprocesseurs d’avoir une idée claire sur l’architecture
et le fonctionnement de ses systèmes.
1
Chapitre 1 : Généralité et historique sur l’Informatique
1.1-Introduction
Unité
Centrale
Chaque bloc fonctionnel peut lui-même être décrit par un ensemble d'unités
fonctionnelles. On parle alors de :
• Architecture du processeur,
• Architecture de la mémoire, etc.
• Architecture d'un réseau rassemblant plusieurs ordinateurs.
2
Chapitre 1 : Généralité et historique sur l’Informatique
On voit ainsi apparaître la notion de niveaux de représentation. A chaque niveau un objet considéré
est décrit comme un ensemble de blocs interconnectés. Au niveau suivant chacun de ces blocs est
à son tour décrit comme un ensemble de blocs interconnectés et ainsi de suite.
Nous pouvons, par exemple, descendre au niveau des portes logiques et même au niveau des
transistors qui composent ces portes.
Quelle que soit sa dimension (mini, micro, super, hyper, etc.) on retrouve toujours dans un
ordinateur les mêmes blocs fonctionnels :
• Machines à laver,
3
Chapitre 1 : Généralité et historique sur l’Informatique
• Distributeurs de boissons,
• Voitures
• Ou cartes bancaires.
• Etc…
Si, par rapport à un ordinateur classique, les tâches à réaliser ne sont pas aussi polyvalentes et si
les contraintes sont différentes, on y retrouve cependant les mêmes briques.
1.2.1- Introduction
Pour résumer l'histoire de l'informatique ou des ordinateurs, il est souvent nécessaire de
schématiser. Pour chaque invention, nous ne retenons en général qu'un nom. Mais souvent cette
invention concrétise une démarche collective qui s'est étalée sur plus ou moins de temps. Très
souvent aussi des prédécesseurs ont été oubliés. De tout temps l'homme a eu besoin de moyens de
calcul. Citons à titre d'exemple le mot même, dont l'étymologie calculi signifie cailloux en latin
(utilisé sur les abaques des Romains).
Une innovation très importante fut l'emploi de la notation positionnelle, qui confère des
valeurs différentes aux symboles numériques selon leur position dans le nombre écrit. Cette
notation positionnelle n'est possible qu'avec un symbole pour le zéro. Grâce au symbole 0, il devint
4
Chapitre 1 : Généralité et historique sur l’Informatique
possible de différencier 11, 101 et 1 001 sans recourir à des symboles supplémentaires
(MDCCCLXXIIIRomain).
Cette notation a été introduite en Europe par l'intermédiaire des Arabes, l'Islam s'étendant
alors des frontières de la Chine à l'Espagne.
Le système dit arabe avait été développé en Inde environ 300 ans av. J-C. Cette introduction
s'est faite grâce notamment à la traduction, vers 820, des ouvrages du mathématicien de Bagdad
Al-Khuwarizmi, dont le titre d'un des livres (al-jabr) est à l'origine du mot algèbre. Les premiers
documents attestant de l'utilisation du système arabe en Europe datent de 976, mais il faut attendre
le XIVème siècle pour qu'il remplace totalement la numérotation romaine. Non seulement
l'écriture des nombres devint plus compacte, mais les calculs écrits ont été largement simplifiés.
Figure 3: La Népérienne
5
Chapitre 1 : Généralité et historique sur l’Informatique
Figure 4: La Pascaline
6
Chapitre 1 : Généralité et historique sur l’Informatique
l'absence d'un trou se faisait au moyen d'aiguilles qui traversaient les trous et fermaient
chacune un circuit électrique en trempant dans un godet de mercure.
Hollerith fonda en 1896, la Tabulating Machine Company pour produire ses cartes et
machines mécanographiques.
En 1938, Konrad Zuse créa avec des moyens modestes un ordinateur binaire
programmable mécanique, le Z1.
En 1939, il perfectionna sa machine en remplaçant une partie des pièces mécaniques par
des relais électromécaniques (Z2).
En 1941 le Z3 et le Z4, virent le jour et furent utilisés pour des calculs aéronautiques.
En 1941 IBM et Harward, ont développé conjointement l’un des derniers calculateurs
électromécaniques le Mark 1 ou ASCC (Automatic Sequence Controlled Calculator). Il
s'agissait d'une énorme machine de 5 tonnes, couvrant 25 m2 et consommant 25 kW. Il
comptait 3000 relais et 760000 pièces mécaniques. Le programme était lu sur une bande
de papier, les données à partir d'une seconde bande de papier ou d'un lecteur de cartes.
7
Chapitre 1 : Généralité et historique sur l’Informatique
2. L'ère de l'électronique
A. 1re génération (1940-1960), utilisation des tubes à vide
• 1940: invention du circuit imprimé (plaquette comportant des pistes pour relier les
composants)
• Début 1945 : ENIAC (Electronic Numerical Integrator And Calculator), 1er calculateur
électronique programmable mais nécessitant de rebrancher des centaines de câbles pour
chaque calcul car sa mémoire interne était trop petite ;
Figure 6: ENIAC
• Il était composé de 19000 tubes, 1500 relais, consommait 170 kW, pesait 30 tonnes et
couvrait une surface de 72 m2. Il était environ 500 fois plus rapide que le Mark 1 (environ
330 multiplications par seconde)
• Cependant sa programmation s'effectuait à l'aide de fiches à brancher dans un tableau de
connexions.
• Le travail de programmation pouvait prendre plusieurs jours.
8
Chapitre 1 : Généralité et historique sur l’Informatique
• A la fin de cette même année, John von Neumann, consultant sur l'ENIAC, proposa de
coder le programme sous forme numérique et de l'enregistrer en mémoire, avec un gain en
souplesse et rapidité. Il jetait ainsi les bases de l'architecture de l'ordinateur moderne.
• En 1948, William Shockley, John Bardeen et Walter Brattain inventèrent le transistor
bipolaire.
• Celui-ci remplaça rapidement les lampes apportant fiabilité et rapidité aux ordinateurs de
seconde génération.
• La taille et la consommation diminuèrent sensiblement.
9
Chapitre 1 : Généralité et historique sur l’Informatique
• 1972, le 8008 (8 bits, 200 KHz, 3500 transistors). Le premier micro-ordinateur, le Micral
N, fut construit en 1973 par une entreprise française R2E.
• 1ers systèmes d'exploitation multi-utilisateurs :
o Multics (1969),
o Unix (1972),
o 1971: Arpanet (ancêtre d'internet),
• 1974 : François Moreno invente la carte à puce
• 1965 : Gordon Moore remarque que « le nombre de transistors intégrables sur une puce de
circuit intégré double tous les 18 (à 24) mois ». Loi de Moore ("loi/observation
expérimentale", elle s'est toujours vérifiée) : la puissance des nouveaux microprocesseurs
et la capacité des nouvelles mémoires doublent tous les 18 mois au plus (entre 12 et
18 mois)
• Ordinateurs personnels ;
• Périphériques (souris, CD-ROM, ...) ;
• Internet
• 1980 : une branche de IBM adopte le MS-DOS (développé, abandonné, et vendu à
MicroSoft par une autre branche de IBM). Microsoft monopolise le marché des logiciels
sur la machine la plus vendue (PC).
• 1991 : Linus Torvalds créé Linux en réécrivant/allégeant le noyau d'Unix.
E. 5éme génération (1990-…), Parallélisme & Internet & Intégration de plus en plus grande
10
Chapitre 1 : Généralité et historique sur l’Informatique
11
Chapitre 2 : Architecture de base
Pour traiter une information, un microprocesseur seul ne suffit pas, il faut l’insérer au sein
d’un système avec un minimum de traitement programmé de l’information.
John Von Neumann est à l'origine d'un modèle de machine universelle de traitement
programmé de l’information (1946).
Unité
Centrale
Selon cette façon de voir, deux architectures ont été développées. Celle de Von Neumann
qui consiste à mettre les programmes (codes) ainsi que les données sur la même mémoire (un seul
bus d’adresse) mais séparer en segments (CS : Code segment, DS : Data segment) et l’autre de
Hardvard qui sépare entre la mémoire programme et la mémoire de données (deux bus d’adresse).
CPU CPU
Données Donnée
Interfaces Interfaces
d’E/S d’E/S
Architecture de Harvard
Architecture de Von Neumann
12
Chapitre 2 : Architecture de base
Elle est composée par du microprocesseur qui est chargé d’interpréter et d’exécuter les
instructions d’un programme, de lire ou de sauvegarder les résultats dans la mémoire et 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 :
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 un
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, flash disques, CDROM, etc… sont des périphériques de stockage
et sont considérés comme des mémoires secondaires.
13
Chapitre 2 : Architecture de base
Un bus est un ensemble de fils qui assure la transmission du même type d’information. On
retrouve trois types de bus véhiculant des informations en parallèle dans un système de traitement
programmé de l’information :
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).
Unité
Centrale
14
Chapitre 3 : Le Processeur (Central Processing Unit, CPU)
3.1- Introduction
Il est chargé de :
Organiser les tâches précisées par le programme
Assurer leur exécution.
C’est le cerveau du système !!!
Ces trois éléments sont reliés entre eux par des bus internes permettant les échanges
d’informations.
Unité de Unité de
Traitement Commande
Registre 1
Registre 1
:: :
Bus de données
15
Chapitre 3 : Le Processeur
Compteur de programme (PC): un registre dont le contenu est initialisé avec l'adresse
de la première instruction du programme. Il contient toujours l’adresse de l’instruction
à exécuter.
Registre d'instruction (RI) : range l’instructions à exécuter
Décodeur d'instruction : il décode l’instruction à exécuter et génère les codes appropriés.
Bloc logique de commande (ou séquenceur) :
Elle regroupe les circuits qui assurent les traitements nécessaires à l'exécution des
instructions.
L’Unité Arithmétique et Logique (UAL) : qui est un circuit complexe qui assure les
fonctions logiques (ET, OU, Comparaison, Décalage, etc…) ou arithmétique (Addition,
soustraction).
Les Accumulateurs : qui sont des registres de travail qui servent à stocker un opérande au
début d'une opération arithmétique (logique) et le résultat à la fin de l'opération.
16
Chapitre 3 : Le Processeur
CPU
Mémoire
Figure 14: Schéma fonctionnel du Microprocesseur
17
Chapitre 3 : Le Processeur
1) Le registre RI contient maintenant le premier mot de l'instruction qui peut être codée sur
plusieurs mots.
2) Ce premier mot contient :
Le code opératoire qui définit la nature de l'opération à effectuer (addition, rotation, ...)
Et le nombre de mots de l'instruction.
3) L'unité de commande transforme l'instruction en une suite de commandes élémentaires
nécessaires au traitement de l'instruction.
4) Si l'instruction nécessite une donnée en provenance de la mémoire, l'unité de commande
récupère sa valeur sur le bus de données.
5) L’opérande est stocké dans un registre.
18
Chapitre 3 : Le Processeur
3.2.4.1-Type d’instructions
Les instructions que l’on retrouve dans chaque microprocesseur peuvent être classées en 4
groupes :
3.2.4.2-Le Codage
Les instructions et leurs opérandes (paramètres) sont stockés en mémoire principale. La taille
totale d’une instruction (nombre de bits nécessaires pour la représenter) dépend du type
d’instruction et aussi du type d’opérande.
Chaque instruction est toujours codée sur un nombre entier d’octets afin de faciliter son
décodage. Une instruction est composée de deux champs :
19
Chapitre 3 : Le Processeur
3.2.4.3-Mode d’adressage
Remarque : Selon le mode d’adressage de la donnée, une instruction sera codée par une ou
plusieurs octets.
3.2.4.4-Temps d’exécution
20
Chapitre 3 : Le Processeur
3.2.4.5-Langages de programmation
1- Le langage machine :
C’est un langage compris par le microprocesseur. Il est difficile à maîtriser puisque chaque
instruction est codée par une séquence propre de bits.
2- Le langage assembleur :
C’est un langage « proche » du langage machine. Il est composé par des instructions en
général assez rudimentaires que l’on appelle des mnémoniques. Ce sont essentiellement des
opérations de :
Transfert de données entre les registres et l'extérieur du microprocesseur (mémoire
ou périphérique),
Ou des opérations arithmétiques ou logiques
21
Chapitre 3 : Le Processeur
CPI (Cycle Par Instruction) qui représente le nombre moyen de cycles d’horloge
nécessaire pour l’exécution d’une instruction pour un microprocesseur donné.
MIPS (Millions d'Instructions Par Seconde) qui représente la puissance de traitement
du microprocesseur.
𝑯𝑭
𝑀𝐼𝑃𝑆 = 𝑪𝑷𝑰 (FH en MHz)
Exemple : Si votre microprocesseur est cadencé à 2,8 GHz et son CPI = 3,1, alors :
𝟐, 𝟖 ∗ 𝟏𝟎𝟑
𝑀𝐼𝑃𝑆 = ≅ 𝟗𝟎𝟎
𝟑, 𝟏
1- Architecture CISC
Ainsi, plutôt que de coder une opération complexe par plusieurs instructions plus petites, qui
demanderaient autant d’accès mémoire très lent, il semblait préférable d’ajouter au jeu
d’instructions du microprocesseur une instruction complexe qui se chargerait de réaliser cette
opération.
22
Chapitre 3 : Le Processeur
Pour une tâche donnée, une machine CISC exécute ainsi un petit nombre d’instructions
mais chacune nécessite un plus grand nombre de cycles d’horloge.
Le code machine de ces instructions varie d’une instruction à l’autre et nécessite donc
un décodeur complexe (microcode).
2- Architecture RISC
Des études statistiques ont montré que les programmes générés par les compilateurs se
contentaient le plus souvent d'affectations, d'additions et de multiplications par des constantes.
Ainsi, 80% des traitements des langages de haut niveau faisaient appel à seulement 20% des
instructions du microprocesseur. D’où l’idée de réduire le jeu d’instructions à celles le plus
couramment utilisées et d’en améliorer la vitesse de traitement.
23
Chapitre 3 : Le Processeur
Pour cette raison, le travail vise à diminuer le CPI. Pour le faire, il existe plusieurs façons
qui touchent principalement à l’architecture interne du CPU. Parmi ces techniques, on cite :
L’exécution d’une instruction est décomposée en une succession d’étapes et chaque étape
correspond à l’utilisation d’une des fonctions du microprocesseur.
Gain de performance
La machine débute l’exécution d’une instruction à chaque cycle. Le pipeline est pleinement
occupé à partir du quatrième cycle. Le gain obtenu dépend donc du nombre d’étages du pipeline.
24
Chapitre 3 : Le Processeur
𝒏∗𝒌
Le gain obtenu est donc de : 𝑮 = 𝒌 𝒏 𝟏
Lorsque le nombre n d’instructions à exécuter est grand par rapport à k, on peut admettre qu’on
divise le temps d’exécution par k.
Aléa structurel qui correspond au cas où deux instructions ont besoin d’utiliser la
même ressource du processeur (conflit de dépendance).
Aléa de données qui intervient lorsqu’une instruction produit un résultat et que
l’instruction suivante utilise ce résultat avant qu’il n’ait pu être écrit dans un registre.
Aléa de contrôle qui se produit chaque fois qu’une instruction de branchement est
exécutée (le mécanisme de prédiction de branchement donne une de fiabilité de 90 à
95%).
25
Chapitre 3 : Le Processeur
3.2.4.8.2-Mémoire cache
Il existe une latence d’accès entre La mémoire et le processeur, car celle-ci n'est plus en
mesure de délivrer des informations aussi rapidement que le processeur est capable de les traiter.
Une des solutions utilisées pour masquer cette latence est de disposer une mémoire très rapide
entre le microprocesseur et la mémoire. Elle est appelée cache mémoire.
Sa fonction est de stocker les informations les plus récentes ou les plus souvent utilisées par le
microprocesseur.
Maintenant, elle est intégrée dans le microprocesseur et se décline même sur plusieurs niveaux
(L1, L2, …).
Succès de cache : On parle de succès de cache, si la donnée ou l’instruction requise est présente
dans le cache et elle est alors envoyée directement au microprocesseur. Dans le cas contraire, on
parle de défaut de cache.
Défaut de cache : la donnée ou l’instruction n’est pas dans le cache, et le contrôleur de cache
envoie alors une requête à la mémoire principale. Une fois l’information récupérée, il la renvoie
au microprocesseur tout en la stockant dans le cache.
26
Chapitre 3 : Le Processeur
Une autre façon de gagner en performance est d’exécuter plusieurs instructions en même
temps. L'approche superscalaire (mise en œuvre dans les premiers Pentium, 1993) consiste à
doter le microprocesseur de plusieurs unités de traitement travaillant en parallèle. Les
instructions sont alors réparties entre les différentes unités d'exécution. Il faut donc pouvoir
soutenir un flot important d’instructions et pour cela disposer d’un cache performant.
Le principe est d’exécuter les instructions de façon pipelinée dans chacune des unités de
traitement travaillant en parallèle.
27
Chapitre 3 : Le Processeur
3.3-Processeurs spéciaux
A- Le microcontrôleur
Système minimum sur une seule puce. Il contient un CPU, de la RAM, de la ROM et des
ports d’Entrée/Sorties :
Comporte aussi des fonctions spécifiques comme des compteurs programmables pour
effectuer des mesures de durées, des CAN voir des CNA pour s’insérer au sein de chaînes
d’acquisition, des interfaces pour réseaux, etc...
Adapté pour répondre au mieux aux besoin des applications embarquées (appareil
électroménagers, chaîne d’acquisition, lecteur carte à puce, etc..).
Par contre généralement moins puissant en termes de rapidité, de taille de données traitables
ou de taille de mémoire adressable qu’un microprocesseur.
Le processeur DSP (Digital Signal Processor) est optimisé pour effectuer du traitement
numérique du signal (calcul de FFT, convolution, filtrage numérique, etc..).
28
Chapitre 4 : Le Micro-Processeur Intel 8086
4.1- Introduction
Apparu en 1978
Boîtier DIP (Dual In-line Package) 40 broches.
16 bits de données
20 bits d’adresse
Les adresses et les données sont multiplexés,
AD0/AD15. Le captage de l’adresse se fait par
le signal ALE (Address Latch Enable).
4 Registres généraux : AX, BX, CX et DX. Chaque registre général est composé de
deux registres de 2 octets (8 bits) (e.g. AX = AH*256 + AL, AH est le registre de
poids fort et AL est le registre de poids faible)
2 Registres d’index : SI (Source Index) et DI (Destination Index).
4 Registres de segment : CS (Code Segment), DS (Data Segment), ES (Extra
segment) et SS (Stack Segment)
29
Chapitre 4 : Le Micro-Processeur Intel 8086
Address Latch
30
Chapitre 4 : Le Micro-Processeur Intel 8086
L’instruction est une opération de base qui peut être décodée et exécutée par le
microprocesseur, où chaque instruction a un format donné.
Le format général d’une instruction est :
Mnémonique Opérande 1, [Opérande 2]
Mnémonique : est le nom de l’opération
Opérande 1 : est en général un registre ou une case mémoire
Opérande 2 : est soit un registre, soit une case mémoire ou une valeur
Exemple :
0100 MOV AX,[DE88]
------ SUB AX,BX
------ INC AX
------ JMP 0240
Chaque instruction est placée en mémoire sous forme codée. Cette représentation est
appelée code machine.
Le codage de l’instruction est effectué en décomposant l’instruction en sous-groupes de bits
appelés champs, spécifiant les caractéristiques de l’instruction.
Les différents champs sont :
Code opération : code indiquant l’opération (ADD, MOV, SUB, etc…)
Type de donnée : 1 pour octet et 0 pour mot (2 octets)
Registre : indique le numéro d’un des registres utilisés
Mode d’adressage : indique le mode d’adressage
Chaque instruction est codée en binaire et est décodée par le μP lors de son exécution. Ci-dessous,
les différents codes de l’instruction MOV, donnée par la commande u de debug :
13B0:0100 B8FF00 MOV AX,00FF
13B0:0103 A1FF00 MOV AX,[00FF]
13B0:0106 89D8 MOV AX,BX
13B0:0108 8B07 MOV AX,[BX]
31
Chapitre 4 : Le Micro-Processeur Intel 8086
4.4.1-Définition :
C’est l’ensemble des instructions qui peuvent être exécutées par le μP. Il existe plusieurs
groupes d’instructions
Les instructions de transfert de données
Les instructions arithmétiques et logiques
Les instructions de décalage et rotation
L’instruction de comparaison
Les instructions de saut et de branchement
Les instructions relatives au registre d’état
32
Chapitre 4 : Le Micro-Processeur Intel 8086
registre un registre 8 ou 16 bits parmi AL, AH, AX, BL, BH, BX, CL, CH, CX,
DL, DH, DX, SI ou DI.
variable une adresse mémoire d’une donnée dans le segment data.
registre/variable un registre ou une adresse mémoire d’une donnée dans le segment
data.
constante une valeur
étiquette une adresse mémoire d’une instruction dans le segment code.
La plupart des instructions modifient les indicateurs du registre FLAGS. Un tableau
indique l’effet de l’instruction couramment décrite sur ces indicateurs. Il a la forme suivante ;
O D I T S Z A P C
Carry Flag (CF) - Retenue : cet indicateur et mis à 1 lorsqu’il y a une retenue du
résultat à 8 ou 16 bits. Il intervient dans les opérations d'additions (retenue) et de
soustractions (borrow) sur des entiers naturels. Il est positionné en particulier par les
instructions ADD, SUB et CMP
Parity Flag (PF) – Parité : si le résultat de l'opération contient un nombre pair de 1 cet
indicateur est mis à 1, sinon zéro.
Auxiliary Flag (AF) – Demie retenue : Ce bit est égal à 1 si on a une retenue du
quarter de poids faible dans le quarter de poids plus fort.
Zero Flag (ZF) –Zéro : Cet indicateur est mis à 1 quand le résultat d'une opération est
égal à zéro. Lorsque l'on vient d'effectuer une soustraction (ou une
comparaison), ZF=1 indique que les deux opérandes étaient égaux. Sinon, ZF est
positionné à 0.
Sign Flag (SF) –Signe : SF est positionné à 1 si le bit de poids fort du résultat d'une
addition ou soustraction est 1 ; sinon SF=0. SF est utile lorsque l'on manipule des entiers
signés, car le bit de poids fort donne alors le signe du résultat. Exemples (sur 8 bits) :
Trap Flag (TF) - Piège : pour que le microprocesseur exécute le programme pas à pas en
mode debugging.
Interrupt enable Flag (IF) - Masque d'interruption : pour masquer les interruptions
venant de l'extérieur ce bit est mis à 0, dan le cas contraire le microprocesseur reconnaît
l'interruption de l'extérieur.
Direction Flag (DF) – Direction : Auto Incrémentation/Décrémentation : utilisée pendant
les instructions de chaîne de caractères pour auto incrémenter ou auto décrémenter le SI et
le DI.
33
Chapitre 4 : Le Micro-Processeur Intel 8086
Une case vide indique que l’indicateur n’est pas modifié par l’instruction.
4.4.3-Les instructions de transfert
MOV transfert d’une valeur
Ces instructions réalisent des transferts de données entre deux adresses mémoire, deux
registres, ou entre un registre et la mémoire. Ceci correspond donc à l’affectation des langages de
haut niveau A:=B.
MOV registre/variable, registre
MOV registre, registre/variable
MOV registre, registre de segment
MOV registre de segment, registre
MOV registre/variable, constante
O D I T S Z A P C
34
Chapitre 4 : Le Micro-Processeur Intel 8086
Par exemple, supposons que nous voulions transférer le contenu du registre DS dans le
registre ES. Nous pouvons l’écrire sous la forme suivante :
mov ax, ds
mov es, ax
4.4.4-Incrémentation, décrémentation
Nous voyons ici deux types d’instructions très fréquemment utilisées et qui sont en fait des
cas particuliers des instructions d’addition et de soustraction, l’incrémentation et la
décrémentation. Incrémenter signifie, « ajouter 1 », alors que décrémenter signifie « retirer 1 ».
Notons cependant que l’on utilise souvent les termes incrémenter et décrémenter même si les
quantités ajoutées ou retirées sont différentes de 1, en général lorsque la variable modifiée est un
compteur.
DEC Décrémentation
DEC registre/variable
O D I T S Z A P C
* * * * *
35
Chapitre 4 : Le Micro-Processeur Intel 8086
INC Incrémentation
INC registre/variable
O D I T S Z A P C
* * * * *
INC ajoute 1 au contenu de l’opérande, sans modifier l’indicateur de retenue. Soient les
instructions assembleur suivantes ;
mov al, 5fh
inc al
AL contient ensuite la valeur 60h. Le bit Z est mis à 0 (le résultat de l’incrémentation n’est pas
nul), l’indicateur de retenue auxiliaire bit A est mis à 1 (passage de retenue entre les bits 3 et 4
lors de l’incrémentation), les bits bit O et bit S mis à 0 (pas de débordement de capacité, le signe
du résultat est positif).
NEG transforme la valeur d’un registre ou d’un opérande mémoire en son complément à
deux. Ainsi, après exécution des instructions ;
mov ax, 75h
neg ax
36
Chapitre 4 : Le Micro-Processeur Intel 8086
alors le registre AX contient la valeur 1bh, le bit C est positionné à la valeur 1, la retenue
auxiliaire A est mise à 0.
Si nous considérons les deux instructions suivantes ;
mov ax, 09h
add ax, 3ah
alors le registre AX contient la valeur 43h, le bit C est mis à 0, la retenue auxiliaire A est mise
à 1.
37
Chapitre 4 : Le Micro-Processeur Intel 8086
le registre AX contient ensuite la valeur 21h. Les bits Z, S et C du registre FLAGS sont mis à 0
car le résultat n’est pas nul, son signe est positif et aucune retenue n’est générée.
Si nous considérons les deux instructions suivantes ;
mov ax, 26h
sub ax, 59h
le registre AX contient ensuite la valeur cdh. Le bit Z est mis à zéro. Les bits C, A et S sont mis
à 1.
IMUL
MUL Les multiplications en assembleur
IMUL registre/variable
O D I T S Z A P C
* ? ? ? ? *
Les deux instructions IMUL et MUL effectuent des multiplications. L’instruction IMUL
effectue la multiplication d’opérandes signés. L’instruction MUL effectue la multiplication
d’opérandes non signés.
Les indicateurs de retenue (C) et de débordement (O) sont mis à un si le résultat ne peut pas être
stockée dans l’opérande destination.
Une addition ou une soustraction de données codées sur n bits donne un résultat sur au
plus n + 1 bits. Le bit supplémentaire est la retenue et est stocké dans le bit C de flags. Par contre,
une multiplication de deux données de n bits donne un résultat sur 2n bits.
Dans leur première forme qui prend une donnée 8 bits en opérande (donc le résultat est sur
16 bits), les instructions mul et imul effectuent le produit de la valeur contenue dans le registre
al avec la valeur de l’opérande fourni. Le résultat est placé dans le registre ax.
Dans leur deuxième forme qui prend une donnée 16 bits en opérande (donc le résultat est sur
32 bits), les instructions mul et imul effectuent le produit de la valeur contenue dans le registre
38
Chapitre 4 : Le Micro-Processeur Intel 8086
ax avec la valeur de l’opérande fourni. Le résultat est placé dans la paire de registres dx et
ax. dx contient le poids fort du résultat, ax le poids faible.
Exemple de multiplication sur 8 bits : soient les instructions suivantes :
mov al, 4h
mov ah, 25h
imul ah
A l’issue de l’exécution de ces 3 instructions, ax contient la valeur dfc5h et dx la valeur 108h, soit
la valeur hexadécimale 108dfc5h, le produit de 543h par 3257h. Les deux données étant positives,
le résultat est le même que l’on utilise l’instruction imul ou l’instruction mul.
Considérons maintenant la séquence d’instructions :
mov bx, -543h
mov ax, 3257h
imul bx
A l’issue de leur exécution, ax contient la valeur 203bh et dx contient la valeur fef7h, soit la valeur
hexadécimale fef7203bh, en décimal -17358789. Si l’on remplace imul par mul, le résultat n’a
pas de sens (314e203bh, en décimal 827203643, valeur positive !).
IDIV
Les deux instructions DIV et IDIV réalisent les opérations de division et de calcul de reste.
DIV l’effectue sur des données non signées, IDIV sur des données signées.
39
Chapitre 4 : Le Micro-Processeur Intel 8086
Dans tous les cas, le dividende est implicite. Le diviseur est fourni en opérande. Le résultat
se compose du quotient et du reste de la division. Le reste est toujours inférieur au diviseur. On
a le choix entre :
La division d’une donnée 16 bits stockée dans AX par une donnée 8 bits qui fournit un
quotient dans AL et un reste dans AH sur 8 bits.
La division d’une donnée 32 bits stockée dans la paire de registres DX (poids fort) et AX
(poids faible) par une donnée 16 bits qui fournit un quotient dans AX et un reste dans DX sur
16 bits.
Après leur exécution, le registre AX contient la valeur 0510h, quotient de 10h dans AL et 05h le
reste de la division dans AH.
Pour les deux instructions, si le diviseur de la division est nul, un message Division par
zéro sera affiché automatiquement.
Dans le cas d’une division signée IDIV, le reste a le même signe que le dividende et sa
valeur absolue est toujours inférieure au diviseur.
Pour bien comprendre le fonctionnement de ces deux instructions, prenons l’exemple suivant :
mov ax, 3257h
mov bx, 543h
div bx
on aura ensuite ax qui contient la valeur fff7h (soir 65527 en décimal) et dx la valeur 2fch (soit
764 en décimal). Si l’on remplace idiv par div, le résultat n’a pas de sens.
40
Chapitre 4 : Le Micro-Processeur Intel 8086
AND réalise un et-logique bit à bit entre l’opérande source et l’opérande destination. Le résultat
est rangé dans l’opérande destination. Considérons les deux lignes suivantes :
mov al, 56h
and al, 2ch
OR ou-logique
OR registre/variable, registre
OR regisre, registre/variable
OR registre/variable, constante
O D I T S Z A P C
0 * * ? * 0
OR réalise un ou-logique bit `a bit entre l’opérande source et l’opérande destination. Le résultat
est rangé dans l’opérande destination. Considérons les deux lignes suivantes :
mov al, 56h
or al, 2ch
41
Chapitre 4 : Le Micro-Processeur Intel 8086
XOR ou-exclusive
XOR registre/variable, registre
XOR regisre, registre/variable
XOR registre/variable, constante
O D I T S Z A P C
0 * * ? * 0
XOR réalise un ou-exclusif bit `a bit entre l’opérande source et l’opérande destination. Le
résultat est rangé dans l’opérande destination. Considérons les deux lignes suivantes :
mov al, 36h
and al, 5ch
NOT transforme la valeur d’un registre ou d’un opérande m´mémoire en son complément logique
bit à bit. Considérons les deux lignes suivantes :
mov al, 36h
not al
42
Chapitre 4 : Le Micro-Processeur Intel 8086
Principe général
Les bits du registre FLAGS sont positionnés par les instructions que nous avons déjà vues
(instructions arithmétiques, logiques, ...). Ils sont également positionnés par des instructions
spécialement conçues pour réaliser des tests et qui n’ont d’autres effets que de positionner les bits
de FLAGS en fonction de certaines conditions sur leurs opérandes. Ces instructions sont CMP et
TEST.
Une fois les indicateurs positionnés, une instruction dite de saut conditionnel teste un bit ou
une combinaison de bits de FLAGS et, en fonction du résultat :
Effectue une rupture de séquence (un saut) vers un endroit précis dans le code ou`
l’exécution se poursuit normalement.
Continue en séquence si le test ne donne pas un résultat positif.
CMP comparaison
CMP registre/variable, registre
CMP registre, registre/variable
CMP registre/variable, constante
O D I T S Z A P C
* * * * * *
43
Chapitre 4 : Le Micro-Processeur Intel 8086
C’est l’instruction la plus utilisée pour positionner les indicateurs avant d’effectuer une
instruction de saut conditionnel.
CMP permet de comparer deux valeurs. Pour cela CMP soustrait le second opérande du
premier, sans cependant modifier l’opérande destination, mais en positionnant les indicateurs en
fonction du résultat. Ainsi, si le résultat de la soustraction est nul, donc l’indicateur Z a été
positionné à 1, cela signifie que les deux valeurs comparées sont égales. En utilisant des
raisonnements du même genre, on peut savoir si les deux valeurs sont différentes, ordonnées
strictement ou non.
Le registre AL n’est pas modifié par l’exécution de l’instruction CMP et contient toujours la
valeur affectée auparavant 23h. L’indicateur de retenue C est positionné à 1, ce qui indique que
le deuxième opérande de l’instruction CMP est supérieur à la valeur du premier opérande.
L’indicateur de zéro Z valant 0, cela indique que les deux données sont différentes (sinon, la
soustraction d’un nombre à lui-même donne 0, donc le bit Z est positionné à 1). Le bit de signe S
est également mis à 1 car 23h – 34h est un nombre négatif.
44
Chapitre 4 : Le Micro-Processeur Intel 8086
Notons que les tests d’ordre (inférieur, supérieur, ...) se comprennent de la manière suivante.
Supposons que nous comparions deux données par une instruction CMP et que nous exécutions
ensuite une instruction JG, c’est-à-dire « saut si plus grand ». Il y aura alors saut si la valeur du
deuxième opérande de l’instruction CMP est supérieur à la valeur du premier opérande.
Remarque : L’étiquette référencée dans l’instruction de saut conditionnel ne doit pas se trouver
trop loin de l’instruction de saut. Sinon, une erreur d’assemblage est déclenchée et le message :
Relative jump out of range by xxx bytes
L’instruction « loop » fait la même fonction de l’instruction « for i :=N downto 0 do » en langage
algorithmique. Elle exécute l’ensemble des instructions entre « loop » et l’étiquette (l’adresse) vers
laquelle l’instruction « loop » fait référence. La valeur N sera stockée dans le registre CX et il est
décrémenté après chaque exécution jusqu’à « 0 ». Elle décrémente le contenu de CX de 1.
Si CX est différent de zéro alors IP = IP + déplacement
Si CX = 0 l'instruction suivante est exécutée.
Exemple :
MOV AX, 05
MOV CX, 05
Début: INC AX
SI CX < >
LOOP Début 0
SI CX =0
MOV BX, AX
L'exécution de l'instruction MOV BX, AX sera faite après l'exécution de la boucle 5 fois.
45
Chapitre 4 : Le Micro-Processeur Intel 8086
JMP étiquette
O D I T S Z A P C
46
Chapitre 4 : Le Micro-Processeur Intel 8086
L'adresse est sur 16 bits, la procédure est donc dans le même segment d'instructions. CALL est
une nouvelle instruction de branchement inconditionnel. La fin d'une procédure est marquée par
l'instruction RET.
RET :
RET ne prend pas d'argument ; le processeur passe à l'instruction placée immédiatement
après le CALL.
RET est aussi une instruction de branchement : le registre IP est modifié pour revenir à la
valeur qu'il avait avant l'appel par CALL. Comment le processeur retrouve-t-il cette valeur ? Le
problème est compliqué par le fait que l'on peut avoir un nombre quelconque d'appels imbriqués,
comme sur la figure suivante :
L'adresse de retour, utilisée par RET, est en fait sauvegardée sur la pile par l'instruction CALL.
Lorsque le processeur exécute l'instruction RET, il dépile l'adresse sur la pile (comme POP), et la
range dans IP.
L'instruction CALL effectue donc les opérations :
Empiler la valeur de IP. A ce moment, IP pointe sur l'instruction qui suit le CALL.
Placer dans IP l'adresse de la première instruction de la procédure (donnée en
argument).
Et l'instruction RET :
Dépiler une valeur et la ranger dans IP.
4.4.9-La pile
La pile est une zone de mémoire permettant de stocker et retrouver rapidement des valeurs
pour :
47
Chapitre 4 : Le Micro-Processeur Intel 8086
Une pile fonctionne à la manière d'une pile d'objets réels, en mode LIFO (Last In First Out) :
Il est possible d'ajouter une valeur au sommet de la pile (empiler),
Il est possible de retirer la valeur située au sommet de la pile (dépiler).
Instruction PUSH :
Elle permet d'empiler les registres du CPU sur le haut de la pile.
PUSH Source
Instruction POP :
Elle permet de dépiler les registres du CPU sur le haut de la pile
POP Destination
Exemple :
Elle permet de récupérer des données d'un port (donc de la périphérie) ou restituer des
données à un port, dans les deux cas s'il s'agit d'envoyer ou de recevoir un octet on utilise
l'accumulateur AL, s'il s'agit d'envoyer ou de recevoir un mot on utilise l'accumulateur AX.
48
Chapitre 4 : Le Micro-Processeur Intel 8086
Syntaxe :
IN ACCUMULATEUR, DX
OUT DX, ACCUMULATEUR
Les rotations sont des opérations logiques binaires fréquemment utilisées. Elles
considèrent un opérande (octet ou mot) comme un tore dont elles décalent les bits. Lors du
décalage, un bit déborde d’un côté, à gauche ou à droite, selon le sens de la rotation. Selon le cas,
quelques détails diffèrent ;
RCL le bit de poids fort est mis dans l’indicateur de retenue C, la valeur de cet indicateur étant
préalablement mise dans le bit de poids faible (cf. figure e)
ROL le bit de poids fort est mis dans l’indicateur de retenue C et dans le bit de poids faible de
l’opérande. L’ancienne valeur de l’indicateur de retenue n’est pas utilisée (cf. figure d).
Les opérandes des instructions RCL, RCR, ROL et ROR. Etant les mêmes, nous n’en présentons
qu’une, l’instruction RCL
49
Chapitre 4 : Le Micro-Processeur Intel 8086
RCL registre/variable, 1
RCL Registre/variable, CL
O D I T S Z A P C
* *
RCL effectue une rotation à gauche de l’opérande destination indiqué, 1 ou CL fois, en prenant en
compte le contenu de l’indicateur de retenue. Le bit de poids fort de l’opérande destination est mis
dans la retenue. Le contenu de la retenue est mis dans le bit de poids faible de l’opérande
destination.
RCR effectue une rotation à droite de l’opérande destination indiqué, 1 ou CL fois, en
prenant en compte le contenu de l’indicateur de retenue. Le bit de poids faible de l’opérande
destination est mis dans la retenue. Le contenu de la retenue est mis dans le bit de poids fort de
l’opérande destination.
ROL effectue une rotation à gauche de l’opérande destination indiqué, 1 ou CL fois, sans
prendre en compte le contenu de l’indicateur de retenue. Le bit de poids fort est mis dans
l’indicateur de retenue lors de la rotation ainsi que dans le bit de poids faible de l’opérande.
ROR effectue une rotation à droite de l’opérande destination indiqué, 1 ou CL fois, sans
prendre en compte le contenu de l’indicateur de retenue. Le bit de poids faible est mis dans
l’indicateur de retenue lors de la rotation ainsi que dans le bit de poids fort de l’opérande.
Où « xxx » est une instruction de rotation. Selon le choix de cette instruction, nous obtenons les
résultats suivants ;
xxx rcl rcr rol ror
al b0h 85h b0h 85h
C 0 1 0 1
50
Chapitre 4 : Le Micro-Processeur Intel 8086
Les opérandes des instructions SAL, SAR, SHL et SHR étant les mêmes, nous ne
présentons qu’une seule instruction, SAL.
SAL registre/variable, 1
SAL registre/variable, CL
O D I T S Z A P C
* * * ? * *
SAL et SHL sont des synonymes et peuvent être utilisées l’une pour l’autre
indifféremment. SAL effectue un décalage vers la gauche, sauvegardant le bit de poids fort dans
l’indicateur de retenue et mettant un 0 dans le bit de poids faible (cf. figure c).
SHR effectue un décalage vers la droite. Le bit de poids faible est mis dans la retenue. Un
0 est mis dans le bit de poids fort de la donnée (cf. figure b).
SAR effectue un décalage vers la droite, sauvegardant le bit de poids faible dans
l’indicateur de retenue.
Par ailleurs (et c’est l`a toute la différence avec l’instruction précédente), le bit de poids
fort est conserve (cf. figure a). Le bit de poids fort de la donnée initiale est donc dupliqué.
Considérons les trois lignes suivantes :
mov al, 16h
mov cl, 3
sal al, cl
Le registre AL contient ensuite la valeur b0h. En effet, 16h s’écrit 00010110 en binaire. Si on
décale cette valeur de trois positions vers la gauche, on obtient 10110000, soit b0h Le bit C est
mis à 0. Considérons les trois lignes suivantes :
mov al, 36h
mov cl, 3
sar al, cl
Le registre AL contient ensuite la valeur 05h. Le bit C est mis `a 1. La différence entre les
instructions SAR et SAL n’apparait que si le bit de poids fort de la donnée vaut 1. Le tableau
suivant donne, pour deux valeurs de la donnée (mise dans le registre AL), l’effet des différents
décalages.
al f0 70
sar al, 1 f8 38
shr al, 1 78 38
51
Chapitre 4 : Le Micro-Processeur Intel 8086
Il faut noter que pour un nombre, un décalage d’une position vers la gauche correspond à
une multiplication de ce nombre par 2 et qu’un décalage d’une position vers la droite correspond
à une division entière par 2. En généralisant, un décalage de l positions vers la gauche correspond
à une multiplication par 2l et un décalage de l positions vers la droite correspond à une division
par 2l. Il faut bien noter, et c’est ce qui justifie l’existence des deux instructions sar et shr et leur
subtile différence, que sar effectue une division sur un nombre en représentation signée tandis
que shr effectue une division sur un nombre en représentation non signée.
Bien entendu, les opérations de décalage étant connues comme des opérations logiques
binaires et non des opérations arithmétiques, on prendra garde à l’interprétation des indicateurs
de débordement ou de retenue que l’on fera à l’issue d’une instruction de décalage.
52
Chapitre 5 : Les mémoires
5.1- Introduction
Une mémoire est un circuit permettant d’enregistrer, de conserver et de restituer des
informations (instructions et variables). C’est cette capacité de mémorisation qui explique la
polyvalence des systèmes numériques et leur adaptabilité à de nombreuses situations.
Les informations peuvent être écrites ou lues.
Une mémoire peut être représentée comme une armoire de rangement constituée de
différents tiroirs. Chaque tiroir représente alors une case mémoire qui 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.
n: nombre
de fils
d’adresse
(ici 3 fils)
m: nombre
de fils de
données
8 fils)
Figure 39: Représentation typique d’une mémoire
Avec une adresse de ‘n’ bits il est possible de référencer au plus 2n cases mémoire = espace
adressable. Chaque case est remplie par un mot de données (sa longueur ‘m’ est toujours une
puissance de 2, 8,16, 32 64). Le nombre ‘n’de fils d’adresses d’un boîtier mémoire définit donc le
nombre de cases mémoire que comprend le boîtier. Le nombre ‘m’ de fils de données définit la
taille des données que l’on peut sauvegarder dans chaque case mémoire.
53
Chapitre 6 : Les Interfaces d’Entrée/Sortie
Remarque :
Les entrées et sorties de données sont très souvent regroupées sur des bornes bidirectionnelles.
C’est le nombre total de bits que contient la mémoire. Elle s’exprime aussi souvent en
octet, donc c’est le nombre de cases. La capacité (taille) de la mémoire est le nombre
d’emplacements, exprimé en général en kilo-octets ou en méga-octets, voire davantage (Téra
octets).
Remarque : - Le kilo informatique vaut 1024 et non 1000 (210 = 1024 ≈ 1000).
54
Chapitre 6 : Les Interfaces d’Entrée/Sortie
5.3.6- 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.
55
Chapitre 6 : Les Interfaces d’Entrée/Sortie
information ne dépend pas de l'adresse. On dira que l'accès à une telle mémoire est aléatoire ou
direct.
56
Chapitre 6 : Les Interfaces d’Entrée/Sortie
pour ne pas ralentir le microprocesseur. Elles sont, en général, volatiles. Il existe deux grandes
familles de mémoires RAM :
Figure 43: Bascule RS et sa table de vérité Figure 44: Bascule D et sa table de vérité
Chaque bascule contient entre 2 à 6 transistors.
57
Chapitre 6 : Les Interfaces d’Entrée/Sortie
58
Chapitre 6 : Les Interfaces d’Entrée/Sortie
Non volatiles.
Ne peuvent être que lue.
L’inscription en mémoire des données restent possible mais est appelée programmation.
Suivant le type de ROM, la méthode de programmation changera.
ROM
PROM
EPROM
EEPROM
FLASH EPROM.
5.4.3.1- La ROM
Elle est programmée par le fabricant et son contenu ne peut plus être ni modifié, ni effacé par
l'utilisateur.
Cette mémoire est composée d'une matrice dont la programmation s’effectue en reliant les
lignes aux colonnes par des diodes. L'adresse permet de sélectionner une ligne de la matrice et les
données sont alors reçues sur les colonnes. Le nombre de colonnes fixant la taille des mots
mémoire.
59
Chapitre 6 : Les Interfaces d’Entrée/Sortie
Avantages :
Densité élevée
Non volatile
Mémoire rapide
Inconvénients :
Écriture impossible
Modification impossible (toute erreur est fatale).
Délai de fabrication
Obligation de grandes quantités en raison du coût élevé qu'entraîne la production du
masque et le processus de fabrication.
5.4.3.2- La 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.
Les PROM à fusible sont livrées avec toutes les lignes connectées aux colonnes (0 en chaque
point mémoire). Le processus de programmation consiste donc à programmer les emplacements
des ‘’1’’ en générant des impulsions de courants par l’intermédiaire du programmateur ; les
fusibles situés aux points mémoires sélectionnés se retrouvant donc détruits.
60
Chapitre 6 : Les Interfaces d’Entrée/Sortie
Les PROM à jonctions, le principe est identique, sauf que les lignes et les colonnes sont
déconnectées (1 en chaque point mémoire). Le processus de programmation consiste donc à
programmer les emplacements des ‘’0’’ en générant des impulsions de courants par l’intermédiaire
du programmateur ; les jonctions situées aux points mémoires sélectionnés se retrouvant court-
circuitées par effet d’avalanche.
Avantages :
idem ROM
Claquage en quelques minutes
Coût relativement faible
Inconvénients :
Modification impossible (toute erreur est fatale).
61
Chapitre 6 : Les Interfaces d’Entrée/Sortie
5.4.3.4- La EEPROM
L’EEPROM (Electically EPROM) est une mémoire programmable et effaçable
électriquement. Elle répond ainsi à l’inconvénient principal de l’EPROM et peut être programmée
in situ.
Avantages
Comportement d'une RAM non Volatile.
Programmation et effacement mot par mot possible.
Inconvénients
Très lente pour une utilisation en RAM.
Coût de réalisation.
62
Chapitre 6 : Les Interfaces d’Entrée/Sortie
Intel, le célèbre fabricant de processeurs a misé sur cette technologie, car la mémoire flash NOR
a:
la possibilité d’interagir directement avec le processeur ;
de ce fait, la mémoire NOR est principalement utilisée pour le stockage des programmes
exécutés directement (« XIP » ou eXecute In Place) :
o Rarement modifiés
o BIOS d’ordinateurs
o Firmware (OS), micrologiciels des téléphones et appareils photo, etc.
Avantages
Comportement d'une RAM non Volatile.
Programmation et effacement mot par mot possible.
Temps d’accès faible
Inconvénients
Lenteur de l’écriture/lecture par paquet.
Coût.
63
Chapitre 6 : Les Interfaces d’Entrée/Sortie
Une mémoire idéale serait une mémoire de grande capacité et possédant un temps d’accès
très faible afin de pouvoir travailler rapidement sur ces informations. Mais il se trouve que les
mémoires de grande capacité sont souvent très lentes et que les mémoires rapides sont très
chères.
Plus on s’éloigne du microprocesseur et plus la capacité et le temps d’accès des mémoires vont
augmenter.
64
Chapitre 6 : Les Interfaces d’Entrée/Sortie
Les registres sont les éléments de mémoire les plus rapides. Ils sont situés au niveau du
processeur. (SRAM)
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. (SRAM)
La mémoire principale est l’organe principal de rangement des informations. Elle
contient les programmes (instructions et données). (DRAM)
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. (SRAM)
La mémoire de masse est une mémoire périphérique de grande capacité utilisée pour le
stockage permanent des informations (disque dur, CD, DVD, FLASH).
65
Chapitre 6 : Les Interfaces d’Entrée/Sortie
6.1- Introduction
La fonction d’un système à microprocesseurs, est le traitement de l’information. Il est donc
évident qu’il doit acquérir l’information fournie par son environnement et restituer les résultats de
ses traitements.
Le processeur,
Les périphériques
Les bus permettant à tous de communiquer.
La composante Logiciel :
Elle se résume dans le système d’exploitation, qui permet d’offrir à l’utilisateur une vision
abstraite et simplifie du fonctionnement du système matériel et de gérer l’ensemble de ses
ressources.
Chaque système est donc équipé d’une ou plusieurs interfaces d’entrées/sorties permettant
d’assurer la communication entre le microprocesseur et le monde extérieur.
Les techniques d’entrées/sorties sont très importantes pour les performances du système. Rien ne
sert d’avoir un microprocesseur calculant très rapidement s’il doit souvent perdre son temps pour
lire des données ou écrire ses résultats.
Durant une opération d’entrée/sortie, l’information est échangée entre la mémoire principale et un
périphérique relié au système. Cet échange nécessite une interface (ou contrôleur) pour gérer la
connexion. Plusieurs techniques sont employées pour effectuer ces échanges.
Chaque périphérique sera relié au système par l’intermédiaire d’une interface (ou contrôleur)
dont le rôle est de :
66
Chapitre 6 : Les Interfaces d’Entrée/Sortie
On accède aux données de l’interface par le biais d’un espace d’adresses d’entrées/sorties.
6.3.1- Scrutation
Le microprocesseur interroge l’interface pour savoir si des transferts sont prêts. Sinon, il
attend. L’inconvénient majeur est que le microprocesseur se retrouve souvent en phase d’attente.
Il est complètement occupé par l’interface d’entrée/sortie. L’initiative de l’échange de données
dépend du programme exécuté par le microprocesseur. Ce type d’échange est très lent.
6.3.2- Interruption
67
Chapitre 6 : Les Interfaces d’Entrée/Sortie
Remarques
68
Chapitre 6 : Les Interfaces d’Entrée/Sortie
69
Chapitre 6 : Les Interfaces d’Entrée/Sortie
le contrôle du bus,
effectue la lecture ou l'écriture mémoire à l'adresse contenue dans son registre et libère le
bus.
Il incrémente ensuite cette adresse et décrémente son compteur.
informe le processeur de la fin du transfert par une ligne d'interruption, lorsque le compteur
atteint zéro.
Avantage du DMA:
le processeur est libre d'effectuer un traitement quelconque, pendant toute la durée du
transfert.
Contrainte du DMA:
limitation de ses propres accès mémoire pendant toute la durée de l'opération, puisqu'il
doit parfois retarder certains de ses accès.
Remarque : pour permettre au dispositif d'accès direct à la mémoire d'effectuer les siens : il y a
apparition de vols de cycle.
70
Chapitre 6 : Les Interfaces d’Entrée/Sortie
Avantage :
transferts rapides
Contrainte :
limitée à de faibles distances de transmission, à cause :
o nombre important de lignes nécessaires
o coût
o encombrement
o problèmes d’interférence électromagnétique entre chaque ligne (fiabilité).
Exemple de bus parallèle du PC : Le bus IDE, PCI, AGP (ces deux derniers sont remplacés par
le PCI Express).
Avantage :
71
Chapitre 6 : Les Interfaces d’Entrée/Sortie
Contrainte :
o Les caractères envoyés sont encadrés par un signal start et un signal stop.
Afin que les éléments communicants puissent se comprendre, il est nécessaire d’établir un
protocole de transmission. Ce protocole devra être le même pour chaque élément. Les paramètres
qui rentrent en jeu dans ce type de liaison sont :
72
Chapitre 6 : Les Interfaces d’Entrée/Sortie
une parité paire, le nombre total de bits à 1 transmis (bit de parité inclus)
doit être paire.
une parité impaire, qui est l’inverse pour une parité impaire.
La liaison série asynchrone est initié par un bit Start et termine un bit Stop :
bit de start : la ligne au repos est à l’état 1 (permet de tester une coupure de la ligne).
Le passage à l’état bas de la ligne va indiquer qu’un transfert va commencer. Cela
permet de synchroniser l’horloge de réception.
bit de stop : après la transmission, la ligne est positionnée à un niveau 1 pendant un
certain nombre de bit afin de spécifier la fin du transfert. En principe, on transmet un,
un et demi ou 2 bits de stop.
73
Chapitre 6 : Les Interfaces d’Entrée/Sortie
6.5.1- le chipset
Elle est constituée par un jeu de plusieurs composants chargé de gérer la communication entre
le microprocesseur et les périphériques. C’est le lien entre les différents bus de la carte mère.
6.5.2- le BIOS (Basic Input Ouput Service)
Le BIOS est programme responsable de la gestion du matériel : clavier, écran, disques durs,
liaisons séries et parallèles, etc. Il est sauvegardé dans une mémoire morte (EEPROM) et agit
comme une interface entre le système d’exploitation et le matériel.
6.5.3- l’horloge
Elle permet de cadencer le traitement des instructions par le microprocesseur ou la
transmission des informations sur les différents bus.
6.5.4- les ports de connexion
Ils permettent de connecter des périphériques sur les différents bus de la carte mère. Il
existe des ports « internes » pour connecter des cartes d’extension (PCI, ISA, AGP) ou des
périphériques de stockage (SCSI, IDE, Serial ATA) et des ports « externes » pour connecter
d’autres périphériques (série, parallèle, USB, firewire, etc.)
74
Chapitre 6 : Les Interfaces d’Entrée/Sortie
6.5.5- Le socket
C’est le nom du connecteur destiner au microprocesseur. Il détermine let type de
microprocesseur que l’on peut connecter.
On voit apparaître différents bus chargés de transporter les informations entre
le microprocesseur et la mémoire ou les périphériques :
Bus processeur : on l’appelle aussi bus système ou FSB (Front Side Bus). Il relie le
microprocesseur au pont nord puis à la mémoire. C’est un bus 64 bits.
Bus IDE (Integrate Drive Electronique)
Bus PCI (Peripheral Component Interconnect)
Bus AGP (Accelered Graphic Port)
Bus ISA (Industry Standard Architecture)
Bus SCSI (Small Computer System Interface)
Bus USB (Universal Serial Bus)
Bus firewire: c’est un bus SCSI série
Serial Ata (SATA), remplaçant du bus IDE
PCI Express, remplaçant des bus PCI et AGP
le Bluetooth
le WIFI (WIreless FIdelity Network)
…
75
Biblipgraphie
1. J. C. Buisson, « Concevoir son microprocesseur, structure des systèmes logiques », Ellipses,
2006.
2. A. Tanenbaum, « Architecture de l'ordinateur », Dunod.
3. P. Zanella, Y. Ligier, E. Lazard, « Architecture et technologie des ordinateurs », Dunod.
4. H. Lilen, « Cours fondamental des microprocesseurs », Dunod, 1993.
5. Emmanuel Viennet, « Architecture des ordinateurs », GTR 1999-2000, IUT de Villetaneuse
Département GTR viennet@lipn.univ-paris13.fr
6. T. Dumartin, « Architecture des ordinateurs », notes de cours, Informatique Industrielle
Année 2004 – 2005
7. Datasheet Intel 8086.
8. Philippe Preux, « Assembleur i8086 », IUT Informatique du Littoral, Année 95-96.
76