Introduction
aux microprocesseurs
Structure de base d’un calculateur
D’un point de vue matériel, un système informatique
minimal est constitué d’un processeur, des mémoires et d’un ensemble des
circuits d’interfaces.
Le microprocesseur (MPU : Micro-Processing Unit) élément de base, est un circuit
intégré à très grande échelle d’intégration (VLSI : Very Large-Scale Integration) capable
d'exécuter des instructions (opérations élémentaires) chargées dans la mémoire
de programme. Ainsi, il remplit donc les fonctions d’une unité centrale de
traitement (CPU : Central Processing Unit) en
un seul boîtier.
Toutes les informations que le microprocesseur
utilise, sont stockées dans des mémoires; le
fonctionnement du microprocesseur est entièrement conditionné par le contenu de
celles-ci. Ces mémoires contiennent deux types d'informations : le programme et les données, nécessaires pour la réalisation d'une
tâche précise.
·
Le programme (ensemble des ordres élémentaires à
exécuter) est placé de façon définitive dans des mémoires qui ne pourront
qu'être lues par le microprocesseur. Ce sont des mémoires non volatiles, de
type ROM (Read Only
Memory), PROM, EPROM, Flash …
·
Les données ou OPERANDES proviennent le plus souvent,
d'un calcul effectué par le microprocesseur ou d'un périphérique d'entrée,
(clavier, disque, ...). Elles sont stockées dans des mémoires qui peuvent être
lues et écrites, appelées RAM (Random Acces Memory).
Dans un système à microprocesseur (Figure 1), l'interface d’entrée-sortie (E/S) permet d’assurer la liaison entre
l'unité centrale de traitement et l'environnement extérieur (périphériques). Le
microprocesseur échange les informations avec les composants qui lui sont associés
(mémoire et périphériques E/S) au moyen d’un ensemble des lignes de connexions
appelé bus.
Figure 1 : Schéma
bloc d’un système à microprocesseur
Un bus est un ensemble de fils qui assurent la
transmission du même type d’information. On distingue trois types de bus :
-
Le bus de
données :
bidirectionnel, assure le transfert des informations entre le microprocesseur
et son environnement. Le nombre de lignes du bus de données définit la capacité
de traitement du microprocesseur ; selon le microprocesseur la largeur du
bus peut être de 8 bits, 16 bits, 32 bits, 64 bits …
-
Le bus
d’adresses : unidirectionnel, permet la sélection de la case contenant l’information à
traiter dans un espace adressable. L’espace adressable peut avoir 2n
emplacements, avec n est le nombre de lignes du bus d'adresses.
-
Le bus de
contrôle :
constitué de quelques lignes, assure la synchronisation du flux d'informations
entre le microprocesseur et les circuits aux qu’il s’adresse.
Le microprocesseur est constitué des unités
fonctionnelles suivantes :
-
Une unité Arithmétique et Logique (UAL ou ALU en
anglais),
-
Des registres,
Cet organe, interne au microprocesseur, permet la
réalisation des opérations arithmétiques (Addition, Soustraction…) et logiques
(AND, OR, XOR…). Outre les opérations arithmétiques et logiques, l'ALU réalise
aussi les opérations de décalage et de rotation. Le registre d’état lié
étroitement à l’ALU, met à la disposition du programmeur (à travers ces
indicateurs « Flags ») des renseignements supplémentaires sur le
résultat de quelques opérations (résultat nul, négatif, dépassement…). Citons quelques
indicateurs que nous retrouvons dans la plupart des microprocesseurs :
-
Le bit de retenue (C : carry), mis à 1 si le résultat d’une opération
dépasse la taille du registre de destination.
-
Le bit de retenue intermédiaire (AC : Auxiliary-Carry), retenue sur
le quatrième bit (utilisé pour le calcul en BCD).
-
Le bit de signe (S
ou N), mis à 1 si le résultat d’une opération arithmétique est
négatif.
-
Le bit zéro (Z) : mis à 1 si le résultat d’une
opération est nul.
-
Le bit de débordement (OV : overflow), mis à 1 si une opération
arithmétique a écrasé le bit de signe.
Pour
monter l’utilité de ces indicateurs, prenons l’exemple d’une instruction
conditionnelle : Si (A = B) alors Traitement
1 Sinon Traitement 2 La
comparaison entre A et B est traitée par le microprocesseur de la manière
suivante : - Soustraire B de A - Si l’indicateur Z = 1
(c-à-d A – B = 0) il exécute le Traitement
1 et saute le traitement 2. - Sinon (Z = 0) il saute le
traitement 1 et exécution du Traitement
2. Toutes les
instructions du saut conditionnel, se basent sur le test sur ces indicateurs. |
Il existe deux types de registres : les registres à
usage général, et les registres d'adresses (ou pointeurs).
Les registres à usage général (Registres de travail)
Ce sont des mémoires rapides à l'intérieur du
microprocesseur ; ils permettent à l'UAL de manipuler des données à
vitesse élevée.
L'adresse d'un registre est associée à son nom (Exemple :
A,
BX, WREG…).
Les registres d’adresses (pointeurs)
Ces registres sont utilisés pour l’adressage de la
mémoire. Parmi ces registres, nous pouvons citer :
-
Le compteur de programme PC : le microprocesseur utilise ce registre pour repérer l’exécution
du programme. Celui-ci contient toujours l’adresse de la prochaine instruction
à exécuter.
-
Le pointeur de pile (Stack Pointer SP) : pointe toujours le sommet de
la pile. La pile est une partie de la mémoire de données de type LIFO (Last In First Out) utilisée pour
sauvegarder l’adresse de retour d’un sous-programme et/ou des variables locales.
-
Les registres pointeurs de données ou d'index :
utilisés pour l’adressage indirect de la mémoire de données.
Elle permet de séquencer le déroulement des
instructions. Elle effectue la recherche en mémoire des instructions, le
décodage et l’exécution de l’instruction recherchée. Elle est composée
essentiellement d’un :
·
Registre d’instruction (RI) :
recoit le code de l’instruction à exécuter.
·
Décodeur d’instruction :
permet de déterminer le type de l’instruction à exécuter.
·
Bloc logique de contrôle (ou séquenceur) : Il organise toutes les étapes
d’exécution des instructions au rythme d’une horloge et élabore tous les
signaux de synchronisation internes et externes du microprocesseur.
Fonctionnement du microprocesseur
Le programme est une suite d’instructions stockées
dans la mémoire de programme. Pour exécuter ces instructions de manière
séquentielle, le microprocesseur utilise un registre appelé compteur de
programme. Ce registre contient l’adresse de l’instruction à exécuter.
Les microprocesseurs sont capables d'effectuer un
certain nombre d'opérations élémentaires. Cet ensemble d’opérations
élémentaires est appelé jeu
d’instructions. Une instruction au niveau machine doit fournir à l'unité
centrale toutes les informations nécessaires pour déclencher une telle
opération élémentaire. Elle comporte en général plusieurs champs ; le
premier champ contient le code de l’opération (Code-Op ou Op-Code
en anglais) ; les autres champs peuvent comporter des données ou
l'identificateur des opérandes. Sur certaines machines toutes les instructions
ont la même longueur, sur d'autres cette longueur est variable.
Format d’une instruction :
|
Exemple :
Additionner le contenu du registre A avec le
contenu de la case mémoire dont l’adresse est mentionnée dans le champ 3
|
Cycle d’exécution
d’une instruction
Lors de son exécution, une instruction est
décomposée en mini-opérations élémentaires. Celles-ci sont généralement au
nombre de trois : Recherche de l'instruction, Décodage
et Exécution.
Recherche de l’instruction (Fetch)
Le contenu du compteur de programme est placé sur
le bus d’adresses (c'est l'unité de contrôle qui établit la connexion). L'unité
de contrôle (UC) émet un ordre de lecture de la case mémoire dont le contenu
sera ensuite acheminé à travers le bus de données au registre instruction (RI).
Remarque : Dès la mise sous tension ou après un RESET,
le compteur de programme est initialisé par une valeur (adresse) fixée par le
constructeur du microprocesseur, appelée Vecteur RESET.
Décodage (Decode)
Le registre d'instruction (RI) contient le code opératoire. L'unité de
contrôle décode le contenu de RI pour savoir la nature de l'opération à
effectuer (addition, rotation, ...) et incrémente le compteur de programme (PC)
pour qu’il se pointe sur l'instruction suivante.
Exécution (Execute)
Le cycle d’exécution varie en fonction de
l’architecture et le type de l’instruction. Mais d’une manière générale c’est
l’ALU qui exécute l'instruction en cours et positionne les indicateurs du
registre d'état.
La Figure 2 illustre la séquence de
déroulement de ces étapes. Chaque instruction est équivalente à une suite de
mini-opérations exécutées dans un ordre précis. C’est ainsi qu’un
microprocesseur procède à l’exécution de chaque instruction.
Figure 2 : Etapes
d'exécution d'une instruction
Ces micro-opérations (fetch,
decode, execute) sont
cadencées au rythme d’horloge qui pilote le séquenceur. La durée de traitement
d’une instruction s’appelle cycle d’instruction ou cycle machine.
Figure 3 : Cycle
d'exécution d'une instruction
Le nombre de périodes d’horloge nécessaires à
l’exécution d’une instruction dépend de l’architecture du processeur et du mode
d’adressage. Le microcontrôleur PIC que nous allons étudier, exécute toutes les
instructions (hormis les instructions de saut) sur quatre périodes d’horloge.
Les différentes
unités sont organisées suivant deux architectures :
-
L’architecture
Von Neumann (du nom
d’un des savants qui a contribué à la mise au point des premiers ordinateurs).
La mémoire de programme, la mémoire de données et les périphériques
d’entrées/sorties partagent le même bus d’adresses et de données.
-
L’architecture
Harvard, sépare
systématiquement la mémoire de programme de la mémoire de données : l'adressage
de ces mémoires est indépendant. Ce type d’architecture favorise l’accès
simultané aux mémoires de programme et de données.
Figure 4 :
Architecture Von Neumann
Figure 5 :
Architecture Harvard
Au niveau du jeu
d’instructions, les microprocesseurs se réparties en deux grandes catégories
appelées CISC et RISC :
·
Architecture
CISC (Complex Instruction Set Computer) : une instruction peut
effectuer plusieurs opérations élémentaires (faire par exemple une opération
arithmétique avec chargement du résultat dans la mémoire). La longueur de
l’instruction et le temps d’exécution varient d’une instruction à l’autre.
·
Architecture
RISC (Reduced Instruction Set Computer) : les processeurs RISC
possèdent un jeu d’instruction réduit où chaque instruction effectue une
opération élémentaire. Seules les instructions Load
et Store accèdent à la mémoire. La plupart des instructions ont
la même taille et s’exécutent sur un seul cycle machine.
Au début de la commercialisation des
microprocesseurs, un système minimum était obligatoirement constitué de
plusieurs circuits intégrés.
Les microcontrôleurs sont apparus suite au progrès
considérable de l’intégration des composants. Un microcontrôleur regroupe dans
un même boîtier les éléments essentiels d’un système à microprocesseur, à
savoir, la CPU, les mémoires RAM et ROM et quelques interfaces
d’entrées-sorties (PORTS, Timers, ADC ...). Il s’agit
d’un dispositif de contrôle, dont sa conception met l’accent sur la réduction du
coût de développement des applications embarquées.
Les processeurs de traitement de signal (DSP)
Les DSP (Digital Signal Processor) sont des
processeurs optimisés pour l’exécution des applications de traitement numérique
de signal (filtrage numérique, convolution, transformée de Fourrier rapide…).
Les DSP sont employés dans les modems, les téléphones mobiles, les appareils
multimédia …).