Cours Introduction aux microprocesseurs

publicité
Cours
Introduction aux microprocesseurs
Par : E. AGOURIANE
Dans nos ordinateurs, l’un des composants
fondamentaux est le microprocesseur. Depuis
son invention en 1971 par INTEL, ce
composant n’a cessé de se perfectionner pour
être utilisé aujourd’hui dans des domaines
dépassant les prévisions de départ.
Sont rôles principale est résumé tout
simplement dans l’exécution d’instructions.
I. Structure d’un microordinateur :
Le μp est l’unité principale qui prend les discisions à faire suivant le programme stocké dans
la mémoire ROM. La RAM est utilisée pour exécuter le programme.
Le bus d'adresses : De A0 à A15 on dispose de lignes unidirectionnelles qui permettent au
µP de sélectionner une position de mémoire, ou un registre d'un coupleur d'interface. Dans
cet exemple on dispose de 16 lignes donc de 65536 positions. Précisons que dans un µP
récent on trouvera 32 voire 64 lignes d'adresses ce qui augmente très sensiblement les
possibilités
Le bus de données : De D0 à D7 on a des lignes bidirectionnelles sur lesquelles se font les
échanges de données entre le µP et ses périphériques.
Le bus de commandes : Ce bus transmet un certain
nombre de signaux hétérogènes qui assurent un
fonctionnement cohérent du µP et des divers circuits qui lui
sont liés.
II. Structure d’un microprocesseur
Le CPU (Central Processing Unit) est au coeur du système
informatique, quasiment toutes les informations binaires
sont traitées par le processeur. Ce-dernier peut selon son
architecture, faire des calculs sur des mots binaires de un
octet (Intel 8088, Commodore, Apple II), deux octets (Intel
8086, i286), quatre octets (i386, AMD 386), huit octets
(Intel Pentium, AMD Athlon, PowerPC) et plus pour les
gros systèmes informatiques.
L'UAL ou Unité Arithmétique et Logique (ALU : Arithmetic and Logical Unit) permet de faire
des calculs mathématiques tels que l'addition ou la multiplication, et des opérations
booléennes telles que le ET, OU et NON.
Les registres sont des mémoires directement intégrées dans le processeur. Un registre
permet de stocker une collection d'octets telle que le résultat de la dernière opération de
l'UAL ou la donnée du prochain calcul.






L'unité de contrôle UCT décode les instructions envoyées par la mémoire de
programme et élabore les signaux de commande indispensables au traitement de
cette instruction.
les registres de données AccA et AccB stockant temporairement les données
utilisées par l’UAL
les registres d'adresses qui sont des pointeurs stockant des adresses importantes, en
particulier le registre d'index qui va permettre l'adressage dit indexé
le registre d'état CCR qui comporte différents bits positionnés à 0 ou 1 et indiquant,
selon leur état, si le résultat d'une opération est nul, ou négatif, avec ou sans retenue,
etc...
le pointeur de pile SP est un registre qui pointe vers une zone particulière de la
mémoire appelée pile (par analogie avec une pile d'assiettes), décrémenté lors d'un
transfert de mot dans la pile (bas de la pile) et incrémenté quand un mot est lu
(quand on enlève une assiette). Son rôle est
important lors des interruptions.
le compteur ordinal PC ou compteur d'instruction,
encore appelé compteur de programme, qui suit
pas à pas l'exécution d'un programme. Au départ
on le charge avec l'adresse de la première
instruction. Pendant que le µp lit cette instruction
dans la mémoire, la décode et l'exécute, le
compteur est incrémenté de façon à contenir
l'adresse de la prochaine instruction.
III. Langage machine :
Le langage machine ou code machine est la suite de bits qui est interprétée par le
processeur lors de l’exécution d’un programme.
Le langage machine est le seul que peut traiter nativement un ordinateur.
Chaque famille de microprocesseur possède son propre langage machine (par exemple le
X86), incompatible avec les autres, même si de fortes similitudes existent.
Concrètement, il s'agit d'une suite de bits encodée en langage binaire, soit uniquement des
zéros et des uns que l'on nomme instructions.
Bien sûr, ce type de langage n'est pas compréhensible par un humain, ou tout du moins pas
directement...
C'est là qu'intervient le compilateur, chargé de traduire un langage de programmation
"humain" (Basic, Java, C++, etc.) en langage machine composé d'arides 0 et 1.
Il existe toutefois un langage intermédiaire, proche du langage binaire des ordinateurs,
l'assembleur.
Ce type de langage, dit de bas niveau à cause de sa proximité avec la machine, est très
complexe. En revanche, il permet à un programmeur expérimenté de tirer le maximum de
l'architecture d'un processeur.
Chaque instruction est formée de 2 parties :
 Opcode ou code de l’opération à exécuter;
 Opérandes qui est la donnée (ou son adresse) objet de l’opération.
Il n’est pas pratique d’utiliser le langage machine, on utilise plutôt le langage assembleur
où on écrira chaque instruction sous forme symbolique.
Exemple de code machine et assembleur :
Mnémonique
Code op
Binaire/Hexa
Description
LDA
01011011/5B
Charger l’accu par la donnée qui se trouve à l’adresse opérande
ADD
01101101/6D
Additionner la donnée qui se trouve à l’adresse opérande avec le contenu de l’acc
et le résultat dans l’acc
STA
10001010/8A
Stocker le contenu de l’acc dans la case mémoire adressée par l’opérande
HLT
00111111/3F
Arrêter l’excusion du programme
IV. Mémoires : ROM et RAM
La principale caractéristique d’une mémoire c’est sa capacité
de mémoriser, c'est-à-dire le nombre d’octet (mot de 8 bits) ou
de bits qu’elle peut stocker. Une mémoire de 2048 octets a
pour capacité 2048x8 bits. Dans la pratique on utilise les
unités :
1 octet est un mot de 8 bits
1Ko est équivalent à 1024 octets (210)
1Mo est équivalent à 220 octets
1Go est équivalent à 230octets
IV.1. Généralités:
 Entrées d’adresse: bits qui donnent l’emplacement mémoire
 6 bits offre 64 adresse 26
 Entrées /Sortie de données : bits réservés pour les données
 R/W: bit pour sélectionner mode lecture ou mode écriture
 CS : bit qui permet la validation de la mémoire
Exemple:
Une mémoire de 4Kx8 (4Ko) est une mémoire de 8bits de données et qui a une capacité de
4K donc 4096 adresses mémoires (212), il faut donc 12 bits d’adresse.
Il existe deux type de mémoires : ROM et RAM
IV.2. Les mémoires ROM (read only memory):
C’est des mémoires qui gardent en permanence les données sans les
perdre quand il n’y a pas d’alimentation : mémoires non volatiles. Elles
sont utilisées pour stocker des données qui sont rarement modifiées.
Leurs principales utilisation est le stockage des programme système, des
tables de correspondance (conversion de code), ...
Il existe plusieurs type de ROM :
• MROM: le contenu est initialise au moment de la fabrication et ne peut plus être
Modifie
• PROM (programmable ROM) ou OTP ROM (one-time programmable): le contenu peut être
modifie une fois par l'utilisateur, à l'aide d'un équipement spécialisé
• EPROM (erasable PROM): le contenu peut être efface et modifie plusieurs fois:
– UV EPROM: le contenu est efface par des rayons ultra-violets (plusieurs minutes)
– EEPROM (electrically EPROM) ou E2PROM: le contenu est effacé électriquement
(quelques millisecondes)
– Flash: le contenu est effacé électriquement et plus rapidement que sur les EEPROM
IV.3 Mémoires RAM :
Se sont des mémoires dans lesquelles on peut écrire ou lire des données en un temps très
court (ce n’est pas le cas des ROM). Cependant ces mémoires ne sont pas permanentes
donc volatiles une fois la tension d’alimentation coupée. Elles sont utilisées pour stocker
temporairement des programmes et des données au cours de l’exécution d’un programme.
Il distingue deux type RAM : SRAM et DRAM
SRAM :
Se sont des mémoires qui gardent leur contenu en utilisant des transistors.
Exemple : 6264 est RAM CMOS.
DRAM :
Se sont des mémoires qui stockent leurs contenus sous formes des charges dans des petits
condensateurs MOS. Une cellule de DRAM est donc très simple, ce qui permet la
construction de très grandes mémoires a bas prix. Cependant, le condensateur se décharge
avec le temps et l'information est perdue si la charge n'est pas rafraichie périodiquement
(rafraichissement 2 à 10 ms).
Leurs avantages sur les SRAM est leur grande capacité et la faible consommation, mais les
SRAM sont beaucoup plus rapides.
Afin d’économiser sur le nombre de broches les DRAM sont conçues avec deux signaux
RAS et CAS.
En effet pour réduire le nombre de lignes d'adresse, les DRAM utilisent un
multiplexage de l'adresse: les bits d'adresse de la ligne et de la colonne
sont envoyés en séquence. Tout d'abord, les bits d'adresse de la ligne sont
envoyés, et stockés internement grâce au signal RAS (row address
strobe).
Ensuite, les bits d'adresse de la colonne sont envoyés, identifies par le
signal CAS (column address strobe).
L’adresse est appliquée à la DRAM en deux phases au moyen des signaux RAS et CAS
actifs aux niveaux bas.
V. Assemblage des mémoires :
Pour augmenter la taille ou la capacité mémoire on assemble plusieurs boitiers mémoires.
V.1. Augmenter la capacité :
Supposant qu’on possède des boitiers mémoires de 16x4 bits, et qu’on veut réaliser une
mémoire de 64x4 bits.
On a besoin de 6 bits d’adresses (26=64), soient A5A4A3A2A1A0.
La partie adresse A3A2A1A0 sélectionne un mot de 4 bits parmi 16 du boitier, et les bits A5A4
vont sélectionner un boitier parmi les 4 boitiers. Les adresses possibles des boitiers sont :
Boitier 0 : adresses de 0 à 15 validé par /CS0.
Boitier 1 : adresses de 16 à 31
Boitier 2 : adresses de 32 à 47
Boitier 3 : adresses de 48 à 63.
D3
D2
D1
D0
CS0
R/W
A3
A2
A1
A0
CS
D3
D2
D1
D0
CS1
R/W
A3
A2
A1
A0
CS
D3
D2
D1
D0
CS2
R/W
A3
A2
A1
A0
CS
D3
D2
D1
D0
CS3
R/W
A3
A2
A1
A0
CS
Décod.
A5 A4
R/W A0 A1 A2A3
Pour le cas de deux boitiers :
V.2. Augmenter la longueur du mot :
D3D2D1D0
_________________________________________________________________________
FIN
Téléchargement