Vous êtes sur la page 1sur 79

Calculateurs et Interfaçage

Support de cours

Karim BAICHE

MCB, Structure Génie Biomédical et Télécommunication

Département Ingénierie des Systèmes Electriques

Faculté des Sciences de l’Ingénieur


Université M’hamed BOUGARA-Boumerdes

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

Ce cours de « Calculateurs et Interfaçages » ou « Architecture des Ordinateurs » vise les


étudiants du domaine ST (Sciences et Technologies), les filières du génie électrique
(Télécommunication, Electronique, …) ainsi que les étudiants de MI (Mathématique et
Informatique).

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.

Le document est réparti en 6 chapitres. Chapitre 1 présente quelques notions de


l’informatique ainsi que l’évolution historique de ces systèmes. Chapitre 2, donne une idée sur
l’architecture de base des machines informatiques. Le chapitre 3 et 4, sont complémentaires, le
premier présente l’architecture et le fonctionnement du processeur d’une façon générale quant au
4e il présente en détail le processeur Intel 8086. Le 5e chapitre présente les différents types de
mémoires et leurs principes de fonctionnement. Et pour clôturer, le 6e chapitre détaille les différents
modes de communication avec les périphériques externes.

1
Chapitre 1 : Généralité et historique sur l’Informatique
1.1-Introduction

Initialement un ordinateur était un calculateur numérique. C'est aujourd'hui une machine


de traitement de l'information. Il est capable d'acquérir et de stocker des informations, d'effectuer
des traitements et de restituer des informations.

L'informatique, contraction d'information et automatique, est devenue

« LA SCIENCE DU TRAITEMENT DE L'INFORMATION »

Un ordinateur peut être découpé en blocs fonctionnels. Le traitement de l'information est


fait au niveau d'un processeur. Les actions que celui-ci doit effectuer sont définies par des
instructions. Pour être accessible au processeur les données à traiter et les instructions doivent être
stockées dans une mémoire. Le processeur et la mémoire sont reliés par un bus. Par ailleurs il faut
que l'utilisateur puisse fournir à l'ordinateur des données et les instructions à suivre, tout comme
il doit avoir connaissance des résultats. Il faut donc des dispositifs d'entrée et de sortie.

Unité
Centrale

Figure 1:Eléments constitutifs d’un ordinateur

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.

Cette décomposition hiérarchique en niveaux dépend des besoins de la conception ou des


outils utilisés : elle n'est ni figée, ni unique.

Nous pouvons, par exemple, descendre au niveau des portes logiques et même au niveau des
transistors qui composent ces portes.

L'architecture d'un ordinateur constitue la représentation de ses unités fonctionnelles


et de leurs interconnexions.

Le choix d'une architecture est toujours le résultat d'un compromis :


• Entre performances et coûts ;
• Entre efficacité et facilité de construction ;
• Entre performances d'ensemble et facilité de programmation ;
• etc …
Chaque solution adoptée pour une machine donnée, à un instant donné et pour un marché
donné, pourra très vite être remise en cause par un nouveau progrès technologique. De même, des
architectures proposées à un moment donné, puis abandonnées pour des raisons techniques ou
économiques, peuvent un jour être à nouveau employées.

Quelle que soit sa dimension (mini, micro, super, hyper, etc.) on retrouve toujours dans un
ordinateur les mêmes blocs fonctionnels :

• Une ou plusieurs unités de traitement ;


• De la mémoire ;
• Un ou plusieurs disques durs, constituant une mémoire permanente ;
• Des dispositifs de communication avec l’opérateur : un écran, un clavier, très souvent une
souris ;
• Des dispositifs de communication avec l’extérieur comme une imprimante ;
• Des dispositifs permettant l’archivage : bande magnétique, disque optique ;
• etc.
Reliés par des bus, des liaisons ou des réseaux.

L'informatique se trouve également être embarquée dans un grand nombre de dispositifs de


la vie courante, aussi variés que

• 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.

Il est important de réaliser que :

• Matériel et logiciel sont indissociables, en particulier au niveau de la conception de tout


système informatique.
• Pour ce qui concerne le matériel nous détaillons certains blocs fonctionnels.
• Pour ce qui concerne le logiciel nous nous limiterons à quelques considérations simples
sur le langage machine.

1.2- Un peu d'histoire

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).

Figure 2: Abaques des Romains


Pour pouvoir calculer on a eu besoin de numérotation. A titre d’exemple, on cite la
numération romaine : MDCCCLXXIIIRomain=187310. Ou encore la numérotation décimale liée à la
technologie de la première calculatrice de poche : la main (digiti). Donc, le Calcul digital signifiait
alors compter sur ses doigts.

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.

1.2.2- Le calcul mécanique


 XVIIème siècle : apparition des premiers systèmes mécaniques de calcul, basés sur les
roues dentées.
 1614, date à laquelle John Napier (ou Neper), mathématicien écossais, inventa les
premiers logarithmes. Il ramenait ainsi les opérations de multiplication et de division à de
simples additions ou soustractions.

Figure 3: La Népérienne

 En 1622 : William Oughtred a amélioré le travail de Neper en donnant plus de précision.


 En 1623, Wilhelm Schickard inventa pour Kepler une "horloge calculante" destinée à
calculer les éphémérides
 En 1642, à 19 ans, Blaise Pascal construisit, pour aider son père commissaire pour l'impôt,
une "machine arithmétique" capable de traiter des additions et des soustractions à six
chiffres.
 La Pascaline est considérée comme le premier additionneur à retenue automatique.

5
Chapitre 1 : Généralité et historique sur l’Informatique

Figure 4: La Pascaline

 En 1673, Gottfried Leibniz améliora la Pascaline, par l’automatisation des additions et


des soustractions répétitives nécessaires aux multiplications et divisions.
 Leibniz inventa également le système binaire et montra la simplicité de l'arithmétique
binaire.
 En 1728, le mécanicien français Falcon construit le premier métier à tisser dont il
commande le fonctionnement avec une planchette en bois percée de trous.
 C'est la première machine commandée par un programme.
 1820-1830, un mathématicien anglais, Charles Babbage, rapprocha les machines à
calculer et les systèmes de commande dans le but d'effectuer des calculs complexes
nécessitant l'exécution en séquence de plusieurs opérations arithmétiques.
 Cette machine a en particulier défini le principe de l'enchaînement d'itérations successives
pour la réalisation d'une opération, baptisé algorithme en l'honneur du mathématicien
arabe Al-Khuwarizmi.
 En 1854 George Boole propose sa formulation mathématique des propositions logiques
qui appliquée au système binaire est à la base du fonctionnement des ordinateurs.

1.2.3- Le Calcul Electromécanique


 En 1890, Hermann Hollerith construisit un calculateur de statistiques qui fut utilisé pour
le recensement américain. Il s'agissait d'une machine électromécanique plus performante
que les machines mécaniques. Il développa à cette occasion la carte perforée et inventa le
système de codage des informations qui porte son nom. La détection de la présence ou de

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 1924, celle-ci devint l'International Business Machines Corporation : IBM.

 En 1904 : John Fleming invente la diode (le premier tube à vide)

Figure 5: Tube à vide

 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 1939, John Atanasoff et Clifford Berry réalisèrent un additionneur binaire à 16 bits.


Ils furent les premiers à utiliser des tubes à vide.

 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

 En 1945, un insecte (bug) coince un relais, provoquant un dysfonctionnement de cette


machine analytique, d’où le terme informatique « Bug » qui signifie un
disfonctionnement dans un programme.

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)

• En 1941, également, John Atanasoff et Clifford Berry construisirent le premier ordinateur


binaire à lampes : l'ABC (Atanasoff-Berry Computer). Il comportait une mémoire de 60
mots de 50 bits et une unité arithmétique et logique. Bien que le programme ne fut pas
stocké en mémoire, l'ABC est souvent considéré comme le premier vrai ordinateur.

• 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.

Figure 7: Transistor à semiconducteur

B. 2me génération (1960-1970), utilisation des transistors

• Le premier ordinateur utilisant des transistors fut le TRADIC en 1955.


• A la même époque, IBM commercialisa le premier disque dur (5 disques de 61 cm de
diamètre pour 5 Mo).
• Les mémoires à tore de ferrite étaient également disponibles.
• Le PDP-8 de DEC fut le premier mini-ordinateur à être diffusé en grande série (50000
exemplaires).
• 1ers SGBDs [DBMSs] (système de gestion de bases de données) ;
• 1ers circuits intégrés ;
• 1ers langages de programmation (1960 : Lisp, Cobol, Fortran, 1964 : Basic)

C. 3éme génération (1970-1980), utilisation des circuits intégrés

• Correspond à l'utilisation des circuits intégrés.


• 1971, l'Intel 4004, le premier microprocesseur 4 bits, le premier circuit intégré incorporant
unité de calcul, mémoire et gestion des entrées-sorties. Il comportait 2300 transistors.

Figure 8: Microprocesseur Intel 4004

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)

D. 4éme génération (1980-1990), utilisation de l’intégration à grande échelle

• Puce intégrant des centaines de milliers de transistors

Figure 9: Circuit intégré à grande échelle

• 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

• Parallélisme (dans le microprocesseur, plusieurs microprocesseurs, ...)


• Mémoires à semiconducteurs
• Début de la fusion de l'informatique, des télécommunications et du multimédia, WWW :
World Wide Web

10
Chapitre 1 : Généralité et historique sur l’Informatique

• Intégration de plus en plus grande


• Intégration à très grande échelle : i7 de Intel (plus de 2 milliards de transistors avec une
lithographie de 14 nm).
• Réseau sans fil (Wifi, 4G, etc…)

11
Chapitre 2 : Architecture de base

2.1- Modèle de Von Neumann

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).

Cette architecture sert de base à la plupart des systèmes à microprocesseur actuel.

Unité
Centrale

Figure 10 : Architecture de Von Neumann

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).

Mémoire Mémoire Mémoire


Données + Données Program
me
Adresse Données

CPU CPU

Données Donnée

Interfaces Interfaces
d’E/S d’E/S
Architecture de Harvard
Architecture de Von Neumann

Figure 11: Architecture de Von Neumann VS Architecture de Harvard

12
Chapitre 2 : Architecture de base

2.2- L’unité centrale

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 :

 Sa fréquence d’horloge : en MHz ou GHz


 Le nombre d’instructions par secondes qu’il est capable d’exécuter en MIPS (Million
d‘Instructions Par Seconde)
 La taille des données qu’il est capable de traiter en bits

2.3- 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 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.

2.4- Les interfaces d’entrées/sorties

Elles permettent d’assurer la communication entre le microprocesseur et les périphériques :


 Capteur,
 Clavier,
 Moniteur ou afficheur,
 Imprimante,
 Modem,

13
Chapitre 2 : Architecture de base

2.5- Les bus

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 :

Bus de données : bidirectionnel qui assure le transfert des informations entre le


microprocesseur et son environnement, et inversement. Son nombre de lignes est égal à la
capacité de traitement du microprocesseur (8, 16, 32 ou 64 bits).
Bus d’adresses : unidirectionnel qui permet la sélection des informations à traiter
dans un espace mémoire (ou espace adressable) qui peut avoir 2n emplacements, avec n =
nombre de conducteurs du bus d'adresses.
Bus de commande : constitué par quelques conducteurs qui assurent la synchronisation des
flux d'informations sur les bus des données et des adresses.

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

Figure 12: les différents bus système

14
Chapitre 3 : Le Processeur (Central Processing Unit, CPU)

3.1- Introduction

Un microprocesseur est un circuit intégré complexe (quelques millimètres carrés) caractérisé


par :
 Une très grande intégration (quelques milliards)
 Doté des facultés d'interprétation et d'exécution des instructions d'un programme.

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 !!!

3.2- Architecture de base d’un microprocesseur

Un microprocesseur est construit autour de deux éléments principaux :


 Une unité de commande
 Une unité de traitement

associés à des registres chargées de stocker les différentes informations à traiter.

Ces trois éléments sont reliés entre eux par des bus internes permettant les échanges
d’informations.

Bus d’adresse interne

Unité de Unité de
Traitement Commande

Registre 1
Registre 1
:: :

Bus de données

Figure 13: Architecture du CPU

15
Chapitre 3 : Le Processeur

3.2.1- L’Unité de Commande

Elle permet de séquencer le déroulement des instructions. Elle effectue :


 La recherche en mémoire de l'instruction.
 Le décodage de celle-ci
 Assurer son exécution
 Préparation de l'instruction suivante.

Pour quelle puisse assurer sa tâche, elle est composée de :

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) :

 Organise l'exécution des instructions au rythme d’une horloge.


 Élabore tous les signaux de synchronisation internes ou externes (bus de
commande) du microprocesseur en fonction des divers signaux de commande
provenant du décodeur d’instruction ou du registre d’état par exemple.
 Il s'agit d'un automate réalisé soit de façon :
 Câblée,
 Micro-programmée, on parle alors de micro- microprocesseur.

3.2.2- L’unité de traitement

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

3.2.3-Cycle d’exécution d’une instruction

Le microprocesseur ne comprend qu’un certain nombre d’instructions qui sont codées en


binaire. Le traitement d’une instruction peut être décomposé en trois phases.

Phase 1 : Recherche de l'instruction à traiter

1) Le PC (compteur Programme): contient l'adresse de l'instruction suivante du programme.


Cette valeur est placée sur le bus d'adresses par l'unité de commande qui émet un ordre de
lecture.
2) Au bout d'un certain temps (temps d'accès à la mémoire), le contenu de la case mémoire
sélectionnée est disponible sur le bus des données.
3) L'instruction est stockée dans le registre instruction RI du processeur.

Figure 15: Phase 1, Recherche de l'instruction à traiter

17
Chapitre 3 : Le Processeur

Phase 2 : Décodage de l’instruction et recherche de l'opérande

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.

Figure 16: Phase 2, Décodage de l’instruction et recherche de l'opérande

Phase 3 : Exécution de l'instruction


1) Le micro-programme réalisant l'instruction est exécuté.
2) Les drapeaux sont positionnés (registre d'état).
3) L'unité de commande positionne le PC pour l'instruction suivante.

18
Chapitre 3 : Le Processeur

Figure 17: Phase 3, Exécution de l'instruction

3.2.4- Jeu d’instructions

La première étape de la conception d’un microprocesseur est la définition de son jeu


d’instructions. Le jeu d’instructions décrit l’ensemble des opérations élémentaires que le
microprocesseur pourra exécuter. Il va donc en partie déterminer l’architecture du microprocesseur
à réaliser et notamment celle du séquenceur.

3.2.4.1-Type d’instructions
Les instructions que l’on retrouve dans chaque microprocesseur peuvent être classées en 4
groupes :

 Transfert de données pour charger ou sauvegarder en mémoire, effectuer des transferts


de registre à registre, etc…
 Opérations arithmétiques : addition, soustraction, division, multiplication, etc…
 Opérations logiques : ET, OU, NON, NAND, comparaison, test, etc…
 Contrôle de séquence : branchement, test, etc…

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

 Le code instruction, qui indique au processeur quelle instruction réaliser


 Le champ opérande qui contient la donnée, ou la référence à une donnée en mémoire (son
adresse).

Code Opération Code Opérande


1110 0101 1010 0010
E5 A2

Le nombre d'instructions du jeu d'instructions est directement lié au format du code


instruction. Ainsi un octet permet de distinguer au maximum 256 instructions différentes.

3.2.4.3-Mode d’adressage

Un mode d'adressage définit la manière dont le microprocesseur va accéder à l’opérande. Les


différents modes d'adressage dépendent des microprocesseurs mais on retrouve en général :

 L’adressage registre où l’on traite la donnée contenue dans un registre (Ajout de


Reg1+REG2)
 L’adressage immédiat où l’on définit immédiatement la valeur de la donnée
(Incrémentation de Reg)
 L’adressage direct (indirect, indexé, …) où l’on traite une donnée en mémoire :
 Direct: Code opérande contient l’adresse de l’opérande
 Indirect: Code opérande contient l’adresse de l’adresse de l’opérande
 Indexé: Code opérande contient un indexe qui doit être ajouté au registre d’indexe
pour avoir l’adresse de l’opérande
 …

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

Chaque instruction nécessite un certain nombre de cycles d’horloges pour s’effectuer. Le


nombre de cycles dépend de la complexité de l’instruction et aussi du mode d’adressage. Il est
plus long d’accéder à la mémoire principale qu’à un registre du processeur.

La durée d’un cycle dépend de la fréquence d’horloge du séquenceur.

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.

Afin de faciliter la tâche du programmeur, on a créé différents langages plus ou moins


évolués.

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

Chaque instruction représente un code machine différent. Chaque microprocesseur peut


posséder un assembleur différent.

3- Le langage haut niveau :

Il est plus adaptés à l'homme, et aux applications qu'il cherchait à développer :

 Faisant abstraction de toute architecture de machine


 Ces langages permettent l'expression d'algorithmes sous une forme plus facile à
apprendre, et à dominer (C, Pascal, Java, etc…).
 Chaque instruction en langage de haut niveau correspondra à une succession
d’instructions en langage assembleur (langage machine).

Figure 18: Différents niveaux de langages de programmation

21
Chapitre 3 : Le Processeur

3.2.4.6-Performances d’un microprocesseur

Nous pouvons caractériser la puissance d’un microprocesseur par le nombre d’instructions


qu’il est capable de traiter par seconde. Pour cela, on définit :

 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 :

𝟐, 𝟖 ∗ 𝟏𝟎𝟑
𝑀𝐼𝑃𝑆 = ≅ 𝟗𝟎𝟎
𝟑, 𝟏

Donc, la performance de ce microprocesseur est de 900 millions d’instructions par seconde.

Pour augmenter les performances d’un microprocesseur, on peut donc :


 Soit augmenter la fréquence d'horloge (limitation matérielle),
 Soit diminuer le CPI (choix d'un jeu d'instruction adapté).

3.2.4.7-Notion d’architecture RISC et CISC


Actuellement l’architecture des microprocesseurs se composent de deux grandes familles :
 CISC (Complex Instruction Set Computer)
 RISC (Reduced Instruction Set Computer)

Ils existent d’autres.

1- Architecture CISC

On pensait qu’il était plus intéressant de soumettre au microprocesseur des instructions


complexes.

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.

 Architecture avec un grand nombre d’instructions


 Le microprocesseur doit exécuter des tâches complexes par instruction unique.

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.

Architecture RISC vs CISC

Le choix dépendra des applications visées. En effet, si on diminue le nombre d'instructions


pour réaliser un traitement, on crée des instructions complexes (CISC) qui nécessitent plus de
cycles pour être décodées. Et si on diminue le nombre de cycles par instruction, on crée des
instructions simples (RISC) mais on augmente alors le nombre d'instructions nécessaires pour
réaliser le même traitement.

Architecture RISC Architecture CISC


• instructions simples ne prenant • instructions complexes prenant
qu’un seul cycle plusieurs cycles
• instructions au format fixe • instructions au format variable
• décodeur simple (câblé) • décodeur complexe (microcode)
• beaucoup de registres • peu de registres
• seules les instructions de • toutes les instructions sont
Chargement et Sauvegarde ont susceptibles d’accéder à la
accès à la mémoire mémoire
• Peu de modes d’adressage • beaucoup de modes d’adressage
• compilateur complexe • compilateur simple

Tab. : Figure 19: Architecture RISV vs CISC

3.2.4.8-Améliorations de l’architecture de base

L'ensemble des améliorations des microprocesseurs visent à diminuer le temps d'exécution


du programme. La première idée qui vient à l’esprit est d’augmenter tout simplement la fréquence
de l’horloge du microprocesseur. Mais, l’accélération des fréquences provoque un surcroît de
consommation ce qui entraîne une élévation de température.

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 :

3.2.4.8.1- Architecture pipeline

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.

Exemple de l’exécution en 4 phases d’une instruction :

Fig. : Figure 20: Phases d’exécution d’une instruction


Modèle classique :

Figure 21: Phases d’exécution d’une instruction, modèle classique


Modèle pipeliné :

Figure 22: Phases d’exécution d’une instruction, modèle pipeliné

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

Pour exécuter n instructions, en supposant que chaque instruction s’exécute en k cycles


d’horloge, il faut :

 n.k cycles d’horloge pour une exécution séquentielle.


 k cycles d’horloge pour exécuter la première instruction puis n-1 cycles pour les n-1
instructions suivantes si on utilise un pipeline de k étages

𝒏∗𝒌
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.

 L’Athlon d’AMD comprend un pipeline de 11 étages.


 Les Pentium 2, 3 et 4 d’Intel comprennent respectivement un pipeline de 12, 10 et 20
à 35 étages.

Problèmes (Aléas) du pipeline


La mise en place d’un pipeline pose plusieurs problèmes. En fait, plus le pipeline est long, plus
le nombre de cas où il n’est pas possible d’atteindre la performance maximale est élevé. Il existe
trois (3) principaux cas où la performance d’un processeur pipeliné peut être dégradé ; ces cas de
dégradations de performances sont appelés des aléas.

 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%).

Figure 23: Aléas du pipeline

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.

On compense ainsi la faible vitesse relative de la mémoire en permettant au microprocesseur


d’acquérir les données à sa vitesse propre (SRAM de taille réduite).

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.

Figure 24: Succès 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.

Figure 25: Défaut de cache

26
Chapitre 3 : Le Processeur

Le cache mémoire n’apporte un gain de performance que dans le premier cas. Sa


performance est donc entièrement liée à son taux de succès. Il est courant de rencontrer des
taux de succès moyen de l’ordre de 80 à 90%.

3.2.4.8.3- Architecture Superscalaire

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.

Figure 26: Architecture Scalaire

Figure 27: Architecture Superscalaire

3.2.4.8.4- Architecture Pipeline et Superscalaire

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

Figure 28: Architecture Superscalaire des instructions

Figure 29: Architecture Superscalaire pipelinée des instructions

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.

B- Le Processeur de signal DSP

Le processeur DSP (Digital Signal Processor) est optimisé pour effectuer du traitement
numérique du signal (calcul de FFT, convolution, filtrage numérique, etc..).

Les domaines d’application des D.S.P étaient à l’origine les télécommunications et le


secteur militaire. Aujourd’hui, les applications se sont diversifiées vers le multimédia (lecteur CD,
MP3, etc..) l’électronique grand public (télévision numérique, téléphone portable, etc…),
l’automatique, l’instrumentation, l’électronique automobile, etc…

28
Chapitre 4 : Le Micro-Processeur Intel 8086

4.1- Introduction

L’objectif de ce chapitre est de comprendre l’architecture et le jeu d’instruction du 8086.


Alors, les points suivants seront développés :
 Architecture interne du 8086
o Unité arithmétique et logique (UAL)
o Unité de commande
 Traitement et exécution des instructions
o Programme assembleur
o Représentation et codage des instructions
 Jeu d‘instructions du 8086

4.2- Architecture Interne du μP 8086

4.2.1- Description du μP 8086

 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).

Figure 30: Boitier du Intel 8086


4.2.2- Registres du µP 8086

 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

 3 registres de pointeur : IP (instruction Pointer), SP (Stack Pointer) et BP (Base


Pointer).
 1 Registre d’état : FR (Flag Register), les flags du registre sont : débordement,
retenue, retenue auxiliaire, signe, parité, zéro, interruption, exécution pas à pas.

Address Latch

Figure 31: Démultiplexage des signaux adresses/données

Figure 32: Architecture interne du 8086

Le microprocesseur 8086 de Intel comme tout autre processeur consiste à exécuter un


programme écris en langage machine. Le programme est une suite précise d’instructions données
par le fabricant.
Pour la facilité de lecture et travail, le fabricant livre le produit avec en plus du langage
machine le langage assembleur.

30
Chapitre 4 : Le Micro-Processeur Intel 8086

4.3- Représentation et codage des instructions

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

Exemples de codes opération du 8086

Figure 33: Exemples de codes opération du 8086

4.4- Instructions du 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

4.4.2-Modèle de description d’une instruction


Pour toutes les instructions possédant plusieurs modes d’adressage des opérandes, on
trouvera un tableau présentant ces modes de la forme suivante :

xxx operande1, operande2, ... commentaire



….

Dans la colonne de gauche (xxx), on trouve le mnémonique de l’instruction. Dans la


colonne suivante (operande1, on trouve le mode d’adressage des opérandes. La colonne de droite
(operande2) absente dans certaines tables, donnent quelques informations complémentaires.
Les modes d’adressage sont indiqués de la manière suivante :
 AL, AH, ... un registre particulier

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

 Overflow Flag (OF) - Débordement : si on a un débordement arithmétique ce bit est mis


à 1.c a d le résultat d'une opération excède la capacité de l'opérande (registre ou case
mémoire), sinon il est à 0.
La première ligne indique le nom des bits intéressants de FLAGS. La deuxième ligne (vide
ici) indique l’effet de l’instruction sur un bit en particulier. On note :
 * : le bit est modifié en fonction du résultat de l’exécution de l’instruction
 ? : le bit a une valeur indéfinie après l’exécution de l’instruction
 1 : le bit est mis `a 1
 0 : le bit est mis `a 0

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

registre de segment indique l’un des registres CS, DS, es ou SS.


L’instruction MOV effectue le transfert d’une donnée vers un registre ou une adresse
mémoire. Transfert de la valeur d’un registre de segment vers un autre registre de segment. Aucun
mode d’adressage de la commande MOV ne permet de transférer la valeur d’un registre de
segment dans un autre registre de segment. Nous disposons uniquement de la possibilité de
transférer la valeur d’un registre de segment vers un registre de données et de la possibilité de
transférer la valeur d’un registre de données vers un registre de segment. Aussi, pour atteindre
notre but, nous devrons effectuer le transfert en deux étapes, en utilisant un registre de données
intermédiaire :
 Transférer la valeur du registre de segment source dans un registre de données sur 16 bits.
 Transférer la valeur de ce registre de données dans le registre de segment destination.

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

XCHG Echange de valeurs


XCHG registre/variable, registre
XCHG registre, registre/variable
O D I T S Z A P C

L’instruction XCHG échange le contenu de deux emplacements mémoire ou registres.


Supposons que le registre AX contienne la valeur 88 et le registre DX la valeur 99, l’exécution
de l’instruction :
xchg ax, dx

donne : AX contient la valeur 99 et DX la valeur 88.

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
* * * * *

DEC soustrait 1 au contenu de l’opérande, sans modifier l’indicateur de retenue. Soient


les instructions assembleur suivantes ;
mov al, 10h
dec al
AL contient ensuite la valeur 0fh. Les bits Z, O, P, A et S mis à 0.

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).

4.4.5-Opposé d’un nombre


NEG Négation par complément à 2
NEG registre/variable
O D I T S Z A P C
* * * * * *

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

le registre AX contient la valeur ff8bh (complément à 2 de 0075h).

4.4.6-Les instructions arithmétiques

Comme dans de nombreux processeurs, le 8086 possède des instructions +, −, × et ÷ qui


traitent des données entières codées sur un octet ou un mot. Pour faire des opérations sur des
données plus complexes (des nombres flottants par exemple), on devra les programmer.

36
Chapitre 4 : Le Micro-Processeur Intel 8086

ADD addition sans retenue


ADD registre/variable, registre
ADD registre, registre/variable
ADD registre/variable, constante
O D I T S Z A P C
* * * * * *

L’instruction ADD effectue l’addition du contenu du registre source au registre


destination, sans report de retenue, soit ;
destination ← source + destination

La retenue est positionnée en fonction du résultat de l’opération.


Par exemple, si les instructions suivantes sont exécutées ;
mov ax, a9h
add ax, 72h

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.

SUB soustraction sans retenue


SUB registre/variable, registre
SUB registre, registre/variable
SUB registre/variable, constante
O D I T S Z A P C
* * * * * *

L’instruction SUB effectue la soustraction du contenu du registre source au registre destination,


sans report de retenue, soit ;
destination ← destination – source

37
Chapitre 4 : Le Micro-Processeur Intel 8086

La retenue est positionnée en fonction du résultat de l’opération.


Par exemple, si les instructions suivantes sont exécutées ;
mov ax, 39h
sub ax, 18h

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, le registre AH contient la valeur 94h, produit de


4h par 25h. Pour bien comprendre la différence entre les instructions imul et mul, regardons les
exemples suivants :
mov bx, 543h
mov ax, 3257h
imul bx

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

DIV Les divisions en assembleur


IDIV registre/variable
O D I T S Z A P C
? ? ? ? ? ?

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.

Soient les quelques lignes d’assembleur suivantes :


mov ax, 65h
mov dx, 6h
div dl

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

A l’issue de l’exécution de cette séquence d’instructions, le registre ax contiendra la valeur 9h qui


est le quotient de 2372h par 435h, et le registre dx vaudra 2fch qui est le reste de la division. Si on
remplace div par idiv, le résultat est inchangé puisque le diviseur et le dividende sont tous deux
positifs.
Si l’on considère maintenant la séquence :
mov ax, 3257h
mov bx, -543h
idiv 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

4.4.7-Les instructions booléennes et logiques


Ces instructions disponibles sur tous les processeurs travaillent sur les données au niveau
des bits (et non sur des valeurs numériques comme les instructions vues jusqu’à présent).
AND et-logique
AND registre/variable, registre
AND regisre, registre/variable
AND registre/variable, constante
O D I T S Z A P C
0 * * ? * 0

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

Le registre AL contient ensuite la valeur 14h obtenue de la manière suivante ;


56h 0101 0110
∧ 2ch 0010 1100
14h 0001 0100

Les bits S et Z sont mis à zéro et le bit P à 1.

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

Le registre AL contient ensuite la valeur 5eh obtenue de la manière suivante ;


56h 0101 0110
∨ 5ch 0101 1100
5eh 0101 1110

Les bits S et Z sont mis à zéro et le bit P à 1.

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

Le registre AL contient ensuite la valeur 6ah obtenue de la manière suivante ;


36h 0011 0110
⊕ 0101 1100
6ah 0110 1010

Les bits S et Z sont mis à zéro et le bit P `a 1.

NOT Négation logique


NOT registre/variable
O D I T S Z A P C

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

Le registre AL contient ensuite la valeur c9h obtenue de la manière suivante :


¬ 36h 0011 0110

42
Chapitre 4 : Le Micro-Processeur Intel 8086

c9h 1100 1001

Les bits S et P sont mis à 1, le bit Z à 0.

4.4.8-Les tests en assembleur


En assembleur, il n’existe pas de tests comme dans les langages de haut niveau tel Pascal.
Cependant, il est bien entendu possible de réaliser des tests. On utilise pour cela les bits du registre
FLAGS comme condition de test et une instruction de branchement conditionnelle (saut si
certains bits du registre FLAGS valent 0 ou 1) pour déclencher la partie alors ou la partie sinon
du test.

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.

Nous présentons l’instruction CMP, les instructions de sauts conditionnels et


inconditionnels puis présentons sur des exemples le codage des tests.

Les instructions de comparaison

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.

A l’issue de l’exécution des deux instructions suivantes :


mov al, 23h
cmp al, 34h

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.

Jxx Les instructions de saut conditionnel

Toutes les instructions de saut conditionnel prennent le même type d’opérande :


JA étiquette saut si supérieur (C =0 et Z =0)
JAE étiquette saut si supérieur ou égal (C =0)
JB étiquette saut si inférieur (C =1)
JBE étiquette saut si inférieur ou égal (C =1 ou Z =1)
JC étiquette saut si retenue (C =1)
JCXZ étiquette saut si CX vaut 0
JE étiquette saut si égal (Z =1)
JG étiquette saut si supérieur (Z =0 ou S =0)
JGE étiquette saut si supérieur ou égal (S =0)
JL étiquette saut si inférieur (S =0)
JLE étiquette saut si inférieur ou égal (Z =1 ou S =0)
JNC étiquette saut si pas de retenue (C =0)
JNE étiquette saut si non égal (Z =0)
JNO étiquette saut si pas de d´débordement (O =0)
JNP étiquette saut si pas de parité (P =0)

44
Chapitre 4 : Le Micro-Processeur Intel 8086

JNS étiquette saut si pas de signe (S =0)


JO étiquette saut si d´débordement (O =1)
JP étiquette saut si parité (P =1)
JS étiquette saut si signe (S =1)

Figure 34: les instructions de saut conditionnel du 8086


Toutes ces instructions fonctionnent comme suit : quand la condition est vraie, un saut est
effectué à l’instruction située à l’étiquette spécifiée en opérande. Sinon, la séquence d’exécution
est suivie.

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 de bouclage « LOOP »


LOOP étiquette
O D I T S Z A P C

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 saut inconditionnel

JMP étiquette

O D I T S Z A P C

L’instruction JMP effectue un saut inconditionnel à l’étiquette spécifiée. Contrairement à un saut


conditionnel, le saut est toujours effectué, le registre FLAGS n’intervenant en rien dans cette
opération.

CALL, notion de procédure (fonction) :


La notion de procédure en assembleur correspond à celle de fonction en langage C, ou de
sous-programme dans d'autres langages.

Figure 35: Appel de procédure

La procédure est nommée calcul. Après l'instruction B, le processeur passe à l'instruction C


de la procédure, puis continue jusqu'à rencontrer RET et revient à l'instruction D.
Une procédure est une suite d'instructions effectuant une action précise, qui sont regroupées
par commodité et pour éviter d'avoir à les écrire à plusieurs reprises dans le programme.
Les procédures sont repérées par l'adresse de leur première instruction, à laquelle on associe
une étiquette en assembleur.
L'exécution d'une procédure est déclenchée par un programme appelant. Une procédure
peut elle-même appeler une autre procédure, et ainsi de suite.

Instructions CALL et RET


L'appel d'une procédure est effectué par l'instruction CALL.
CALL adresse_début_procédure

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 :

Figure 36: Appel de procédures imbriquées

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

 Placer des variables locales dans un sous-programme,


 Sauvegarder l'adresse de retour (fait par les instructions CALL, INT),
 Transmettre les arguments à un sous-programme.

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 :

Figure 37: Principe de fonctionnement de l’instruction PUSH et POP

4.4.10-Les Instructions d'Entrées-Sorties :


IN / OUT :

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

DX : contient l'adresse du port.


ACCUMULATEUR : contient la donnée (à recevoir ou à emmètre).

4.4.11-Les Instructions de Décalage et Rotation


Nous décrivons ici des opérations classiques les décalages et les rotations. On les rencontre
couramment car leur utilisation simplifie grandement certains traitements.

RCL ROL RCR


ROR Les rotations en assembleur
Les différentes instructions de rotation du 8086 sont résumés dans les figures suivantes :

Figure 38: Décalages et rotations en assembleur

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.

Considérons les deux lignes suivantes :


Mov al, 16h
Mov cl, 3
xxx al, cl

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

SAL SHL SAR


SHR Les Décalages en assembleur
Une opération de décalage consiste simplement à décaler tous les bits d’une donnée.
Contrairement aux rotations qui considèrent une donnée (un octet u un mot) comme un tore, un
décalage considère la donnée comme une file ; ainsi, le bit qui « déborde » de la retenue est perdu.

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.

 Ecrite = enregistrement des informations en mémoire,


 Lues = récupération des informations précédemment enregistrées.

5.2- Organisation d’une mémoire

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

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), 𝑅/𝑊 .
 Une entrée de sélection qui permet de mettre les entrées/sorties du boîtier en haute
impédance, 𝐶𝑆.

On peut donc schématiser un circuit mémoire par la figure suivante :

Figure 40: Eléments d’un circuit mémoire

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


1. Sélection de l’adresse
2. Choix de l’opération à effectuer (𝑅/𝑊 )
3. Sélection de la mémoire (𝐶𝑆 = 0)
4. Lecture ou écriture de la donnée

Remarque :
Les entrées et sorties de données sont très souvent regroupées sur des bornes bidirectionnelles.

5.3- Caractéristiques d’une mémoire.


5.3.1- La capacité

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).

Voici les multiples les plus utilisés :


 1 K (Kilo), 210 = 1024
 1 M (Méga), 220 = 1048 576
 1 G (Giga), 230 = 1 073 741 824

54
Chapitre 6 : Les Interfaces d’Entrée/Sortie

 1 T (Téra), 240 = 1 099 511 627 776


 1 P (Péta), 250 = 11 258 999 906 842 624
5.3.2- Le format des données
C’est le nombre de bits que l’on peut mémoriser par case mémoire (4, 8, 16, 32, 64…). On
dit aussi que c’est la largeur du mot mémorisable.

5.3.3- 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.
5.3.4- Le temps de cycle
Il représente l'intervalle minimum qui doit séparer deux demandes successives de lecture
ou d'écriture.
5.3.5- Le débit
C’est le nombre maximum d'informations lues ou écrites par seconde.

Figure 41: Chronogramme d’un cycle de lecture

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.

5.3.7- Modes d’accès


5.3.7.1- Accès aléatoire ou direct
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

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.

5.3.7.2- Accès séquentiel


Pour accéder à une information sur bande magnétique, il faut dérouler la bande en repérant
tous les enregistrements jusqu'à ce que l'on trouve celui que l'on désire. On dit alors que l'accès à
l'information est séquentiel. Le temps d'accès est variable selon la position de l'information
recherchée.

5.3.7.3- Accès semi-séquentiel


L'accès peut encore être semi-séquentiel : combinaison des accès direct et séquentiel.
Pour un disque magnétique (disque dur) par exemple l'accès à la piste est direct, puis l'accès au
secteur est séquentiel.

Figure 42: Composition et fonctionnement d’un disque dur magnétique

5.4- Différents types de mémoire


5.4.1- Les mémoires vives (RAM)
Les mémoires RAM (Random Acces Memory : mémoire à accès aléatoire) est une
mémoire vive sert au stockage temporaire de données. Elle doit avoir un temps de cycle très court

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 :

 Les RAM statiques (SRAM)


 Les RAM dynamiques (DRAM)

5.4.1.1- Les RAM statiques (SRAM)


Dans les RAM statiques (SRAM), Le bit (point) mémoire est composé d'une bascule.

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.

Figure 45: Equivalent du point mémoire SRAM en transistors

5.4.1.2- Les RAM Dynamiques (DRAM)


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). 1 à
2 transistors.

57
Chapitre 6 : Les Interfaces d’Entrée/Sortie

Figure 46: Equivalent du point mémoire DRAM en transistors

5.4.1.2.1- Avantages des RAM dynamiques


Les mémoires dynamiques ont les avantages suivants :
 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.
 Consommation très réduite.

5.4.1.2.2- Inconvénients des RAM dynamiques


 Décharge du condensateur à cause de courants de fuite.
 L’information est perdue si on ne la régénère pas périodiquement.
 Les RAM dynamiques doivent donc être rafraîchies régulièrement pour entretenir la
mémorisation
 Ce rafraîchissement indispensable a plusieurs conséquences :
o Il complique la gestion des mémoires dynamiques (rafraîchissement périodique).
o La durée de ces actions augmente le temps d'accès aux informations.
 La lecture de l’information est destructive. Elle se fait par décharge de la capacité du point
mémoire lorsque celle-ci est chargée. Donc toute lecture doit être suivie d’une réécriture.

5.4.2- Critères de choix entre SRAM et DRAM


Les mémoires dynamiques (DRAM), qui offrent
o une plus grande densité d'information
o un coût par bit plus faible,
sont utilisées pour la mémoire centrale.
Les mémoires statiques (SRAM),
o 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.

58
Chapitre 6 : Les Interfaces d’Entrée/Sortie

5.4.3- Les mémoires mortes


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 ou mémoires à lecture seule (ROM : Read Only Memory).

Ces mémoires sont :

 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.

Il existe donc plusieurs types de mémoires mortes :

 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.

Figure 47: Principe de fabrication d’une ROM

59
Chapitre 6 : Les Interfaces d’Entrée/Sortie

Pour sa programmation, l'utilisateur doit fournir au constructeur un masque indiquant les


emplacements des diodes dans la matrice.

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.

Figure 48: Principe de fabrication d’une PROM

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).

5.4.3.3- L’EPROM ou UV-EPROM


Pour faciliter la mise au point d'un programme ou tout simplement permettre une erreur de
programmation, il est intéressant de pouvoir reprogrammer une PROM.
La solution est dans l'EPROM (Erasable Programmable ROM) est une PROM qui peut
être effacée.
Dans une EPROM, le point mémoire est réalisé à partir d’un transistor FAMOS (Floating gate
Avalanche injection Metal Oxyde Silicium).
Ce transistor MOS a été introduit par Intel en 1971 et a la particularité de posséder une
grille flottante.
Pour effacer ce type de mémoire, on l’exposition une vingtaine de minutes à un
rayonnement ultra-violet (d’où le nom UV-EPROM) permet d’annuler la charge stockée dans la
grille flottante.
Avantages
 Reprogrammable
 Non volatile
Inconvénients :
 Impossible de sélectionner une seule cellule à effacer
 Impossible d’effacer la mémoire in-situ.
 L’écriture est beaucoup plus lente que sur une RAM. (Environ 1000x)

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.

5.4.3.5- Les mémoires flash


La mémoire flash est un type d'EEPROM qui permet la modification de plusieurs espaces
mémoires en une seule opération. La mémoire flash est donc plus rapide lorsque le système doit
écrire à plusieurs endroits en même temps. Elle est inventée par le Pr. Fujio Masuoka en 1980
(un employé de Toshiba).
Il existe deux technologies différentes qui se différencient par l’organisation de leurs réseaux
mémoires qui est en relation avec les portes logiques utilisées (NOR et NAND). Donc, on parle
de :
 Architecture NOR
 Architecture NAND

5.4.3.5.1- Flash NOR


Elle fut la première à être développée commercialement par Intel en 1988. L’architecture
NOR propose un assemblage des cellules élémentaires de mémorisation en parallèle avec les
lignes de sélection comme dans une EEPROM classique.

Figure 49: Architecture de Flash NOR

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.

5.4.3.5.2- Flash NAND


La flash NAND est développée par Toshiba en 1989. L’architecture NAND propose un
assemblage des cellules élémentaires de mémorisation en série avec les lignes de sélection.

Figure 50: Architecture de Flash NAND


Avantages:
 Comportement d'une RAM non Volatile.
 Forte densité d’intégration (coût réduit).
 Rapidité de l’écriture/lecture par paquet
 Consommation réduite.
Inconvénients :
 Ecriture/lecture par octet impossible.
 Interface E/S indirecte

63
Chapitre 6 : Les Interfaces d’Entrée/Sortie

5.4.3.5.3- Critères de choix entre Flash NOR et Flash NAND


La différence majeure entre NOR et NAND tient à leurs interfaces.
La NOR :
 dispose de bus d’adresses et de données dédiés.
 sûr à 100%.
La NAND :
 dotée d’une interface d’E/S indirecte.
 n’est pas sûr à 100%.

Les principaux critères à retenir sont :


 capacité
 vitesse
 consommation
 coût

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.

Afin d’obtenir le meilleur compromis coût-performance, on définit donc une hiérarchie


mémoire.

On utilise des mémoires :


 faible capacité mais très rapide pour stocker les informations dont le microprocesseur se
sert le plus.
 de capacité importante mais beaucoup plus lente pour stocker les informations dont le
microprocesseur se sert le moins.

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

Figure 51: Hiérarchie de mémoire

 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.

Un système complet a deux composantes, l’une matérielle, l’autre logiciel.

La composante Matérielle comprend :

 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.

6.2- L’Interface d’Entrée/Sortie

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 :

 Connecter le périphérique au bus de données


 Gérer les échanges entre le microprocesseur et le périphérique

Elle est constituée de :

66
Chapitre 6 : Les Interfaces d’Entrée/Sortie

 Un registre de commande dans lequel le processeur décrit le travail à effectuer (sens de


transfert, mode de transfert)
 Un ou plusieurs registres de données qui contiennent les mots à échanger entre le
périphérique et la mémoire
 Un registre d’état qui indique si l’unité d’échange est prête, si l’échange s’est bien déroulé,
etc…

On accède aux données de l’interface par le biais d’un espace d’adresses d’entrées/sorties.

6.3- Techniques d’échange de données

Avant d’envoyer ou de recevoir des informations, le microprocesseur doit connaître l’état


du périphérique. Si un périphérique est prêt à recevoir ou à transmettre une information !!!

Pour que la transmission se fasse correctement. Il existe 2 modes d’échange d’information :

 Le mode programmé par scrutation ou interruption où le microprocesseur sert


d’intermédiaire entre la mémoire et le périphérique
 Le mode en accès direct à la mémoire (DMA) où le microprocesseur ne se charge pas de
l’échange de données.

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

Une interruption est un signal, généralement asynchrone au programme en cours, pouvant


être émis par tout dispositif externe au microprocesseur. Le microprocesseur possède une ou
plusieurs entrées réservées à cet effet. Sous réserve de certaines conditions. Elle peut interrompre
le travail courant du microprocesseur pour forcer l’exécution d’un programme traitant la cause de
l’interruption.

Une interruption peut être initiée par :

 Interruption matérielle : Un des composants électroniques de l’unité centrale (e.g.


clavier, souris, interface, imprimante, disque dur, etc.).

67
Chapitre 6 : Les Interfaces d’Entrée/Sortie

 Interruption Logicielle : Le programme en cours d’exécution.


 Exception : Une erreur dans le programme en cours d’exécution
Remarque : Une interruption peut être initiée par le processeur lui-même en cas de problèmes
(division par zéro, mémoire défectueuse, etc.).

Dans un échange de données par interruption, le microprocesseur exécute donc son


programme principal jusqu’à ce qu’il reçoive un signal sur sa ligne de requête d’interruption. Il se
charge alors d’effectuer le transfert de données entre l’interface et la mémoire.

6.3.2.1- Principe de fonctionnement d’une interruption

Avant chaque exécution d’instructions, le microprocesseur examine s’il y a eu une requête


sur sa ligne d’interruption. Si c’est le cas, il interrompt toutes ces activités et sauvegarde l’état
présent (registres, PC, accumulateurs, registre d’état) dans un registre particulier appelé pile
(LIFO). Ensuite, il exécute le programme d’interruption puis restitue l’état sauvegardé avant de
reprendre le programme principal.

Remarques

 Certaine source d’interruption possède leur propre autorisation de fonctionnement sous la


forme d’un bit à positionner, on l’appelle le masque d’interruption.
 On peut donc interdire ou autoriser certaines sources d’interruptions, on les appelle les
interruptions masquables.
 Chaque source d’interruption possède un vecteur d’interruption où est sauvegardé l’adresse
de départ du programme à exécuter.
 Les interruptions sont classées par ordre de priorité. Dans le cas où plusieurs interruptions
se présentent en même temps, le microprocesseur traite d’abord celle avec la priorité la
plus élevée.

Figure 52: Principe de la priorité des interruptions

68
Chapitre 6 : Les Interfaces d’Entrée/Sortie

Le schéma suivant, Fig., résume l’organisation des vecteurs d’interruptions dans le


microprocesseur 8086.

Figure 53: Organisation de la table des vecteurs d’Interruption du 8086

Figure 54: Exemples de type d’Interruption du 8086

6.3.4- Echange direct avec la mémoire (DMA)


Ce mode permet le transfert de blocs de données entre la mémoire et un périphérique sans
passer par le microprocesseur. Pour cela, un circuit appelé contrôleur de DMA (Direct Memory
Access) prend en charge les différentes opérations. Le DMA se charge entièrement du transfert
d’un bloc de données.

Le microprocesseur doit tout de même :

 Initialiser l’échange en donnant au DMA l’identification du périphérique concerné.


 Donner le sens du transfert.

69
Chapitre 6 : Les Interfaces d’Entrée/Sortie

 Fournir l’adresse du premier et du dernier mot concernés par le transfert.


Un contrôleur de DMA est doté :
 d’un registre d’adresse,
 d’un registre de donnée,
 d’un compteur
 et d’un dispositif de commande (logique câblée).

Pour chaque mot échangée, le DMA demande au microprocesseur :

 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.

Figure 55: Vols de cycle du DMA

70
Chapitre 6 : Les Interfaces d’Entrée/Sortie

6.4- Types de liaisons

Les systèmes à microprocesseur utilisent deux types de liaison différentes pour se


connecter à des périphériques :
 liaison parallèle.
 liaison série.
On caractérise un type de liaison par sa vitesse de transmission ou débit (en bit/s).

6.4.1- Liaison parallèle


Tous les bits d’un mot sont transmis simultanément. La transmission est cadencée par une
horloge.

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).

Figure 56:Principe de la liaison parallèle


6.4.2- Liaison série
Dans ce type de liaison, les bits constitutifs d’un mot sont transmis les uns après les autres
sur un seul fil.

Avantage :

 distances de transmission beaucoup plus importantes

71
Chapitre 6 : Les Interfaces d’Entrée/Sortie

Contrainte :

 la vitesse de transmission est plus faible

Exemple de bus série du PC : Le bus SATA, USB, …

Figure 57: Principe de la liaison série

La transmission de données en série peut se concevoir de deux façons différentes :

 Mode synchrone : l’émetteur et le récepteur possède une horloge synchronisée qui


cadence la transmission.

o Le flot de données peut être ininterrompu.

 Mode asynchrone : la transmission s’effectue au rythme de la présence des données.

o Les caractères envoyés sont encadrés par un signal start et un signal stop.

6.4.2.1- Liaison série asynchrone

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 :

 La longueur des mots transmis : 7 bits ( code ASCII ) ou 8 bits


 La vitesse de transmission : varient de 110 bit/s à 128000 bit/s (détermine les fréquence
d’horloge de l’émetteur et récepteur).
 La parité : le mot transmis peut être suivis ou non d’un bit de parité.

o sert à détecter les erreurs éventuelles de transmission.

o Il existe deux types de parité :

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.

Figure 58: Vols de cycle du DMAols de cycle du DMA

6.5- Architecture d’un PC

L’architecture d’un PC, se résume dans l’architecture de sa carte mère, Fig.

73
Chapitre 6 : Les Interfaces d’Entrée/Sortie

Figure 59: Fig. Architecture d’une carte mère de PC

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

Vous aimerez peut-être aussi