COURS D’ARCHITECTURE DES ORDINATEURS
Chapitre 3 : C.P.U et jeux d’instructions
C.P.U : Central, Processor, Unit.
Objectifs :
-Architecture d’un microprocesseur.
-Exemple simple de processeur 8bits.
-Carte Unité Centrale.
-Modèle de programmation d’un processeur.( =notice )
-Registres.
-Jeux d’instructions (=liste des instructions).
-Langage assembleur(=langage de programmation).
-I) Architecture d’un microprocesseur :
-Exemple : Zilog Z80 :
-Registres :
Les rectangles correspondent à des bouts de registres.
Les données sont en mémoire centrale.
Le registre d’instruction est le lieu où on donne au CPU le code de l’instruction à exécuter.
Il ne peut faire qu’une seule instruction à la fois , il ne peut donc pas faire de parallélisme .
Dans ce processeur il y a une dizaine de registre de données.
-UAL :
Les 2 figures en V sont des UAL . A un instant donné le processeur est capable de
faire 2 types d’opérations(sur les données et sur les adressages).
C’est au niveau de la programmation que l’on défini l’adresse de l’information .
-Le BUS :
Le BUS est les lignes de différentes couleurs. Un BUS de largeur 8bits travaille avec
des mots de 8 bits . Un BUS de largeur 8 bits à un adressage de 256 octets : trop peu pour être
efficace. Un BUS de 16 bits à un adressage de 64Ko.
-Registre A :
(Registre A’=copie ) . Le registre A est un registre spécialisé , c’est un Accumulateur.
Le résultat est forcément dans A, les registres B et C vont dans A.
Un programme est une suite contiguë d’adresses. Il faut savoir l’adresse de la 1ère
instruction. La suite des instructions se trouvent dans le registre P.C dans le CPU.
Le CPU passe par plusieurs étapes : la première étape est la recherche de l’instruction (ou
fetch). Le décodage de l’instruction peut éventuellement amener à lire d’autres données dans
la RAM. Le CPU doit ranger le résultat soit en registre soit en RAM.
Lorsqu’il a fini l’instruction, il passe à l’instruction suivante grâce au registre PC du CPU.
Il faut qu’à la fin de l’instruction en cours, le registre PC du CPU doit pointer sur l’instruction
suivante à exécuter.
Les registres A,B,C,D sont des registres dans lequel on peut travailler sur des données.
L’UAL de gauche est utilisé pour le travail des adresses sur 16 bits d’où des registres de 8 bits
assemblés deux à deux pour faire du 16 bits.
-Motorola 6800 :
La structure un peu différente du Z80 car il n’y a qu’un UAL.
-Intel 8086 :
Base des Intel Pentium. Processeur 16 bits avec un registre AX (qui signifie A
expansion) qui contient AH( pour A haut ) et AL(pour A bas). Cette structure 2*8 bits permet
la compatibilité ascendante avec le 8086 et le Z 80.
Il y a une unité importante : le registre d’instruction transformé en une pile qui permet
d’anticiper en emmenant les instructions au CPU ; c’est l’introduction de la mémoire cache .
On peut avoir en attente jusqu’à 6 instructions.
-Carte Unité Centrale (=Carte mère)
-Partie moteur :
Le CPU est le moteur de la carte , il est rythmé par une horloge ( dispositif qui génère le
signal périodique) qui utilise un quartz pour assurer la périodicité.
-bus d’adresses, de données, de commande.
-Mémoire : ROM et RAM :
La ROM est la mémoire morte, gravée une fois pour toute. Le programme de démarrage se
trouve dans la ROM. Elle sert à initialiser les entrées-sorties , à tester la RAM et à chercher le
système d’exploitation.
-Contrôleurs entrées-sorties :
3 composant de base : -UART ( Universal Asynchronous Receiver Transmitter )
-PIO (parallel input/output )
-PIC (programmable interrupt controller )
les contrôleurs sont reliés au CPU et aux périphériques.
Ils ont 2 fonctions principales :
-Interfaces entre CPU et périphériques :
Les périphériques travaillent autour de la milli-seconde tandis que le CPU travaille au
minimum autour de la micro-seconde . Donc il y a un problème, il faut donc qu’il y ait de la
mémoire dans ces contrôleurs , cette mémoire s’appelle les registres.
-Transcodage :
Le codage du périphérique n’est pas forcément le même que celui du CPU. Il faut
donc les transcoder ou décoder.
-PIO :
Le PIO est l’interface parallèle le plus simple, les données doivent aller le plus vite
possible d’où une transmission parallèle, donc il existe une limite : la distance entre les deux
éléments. (Ex : Ordi-Imprimante : câble de quelques mètres)
Le contraire de la transmission parallèle est la transmission série , il n’y a plus qu’un
seul fils mais la vitesse est fortement diminuée.
-PIC :
Le PIC signale un événement caractérisé par l’instant où il arrive ( par l’occurrence
dans le temps.).
Ex : Badge : 2 mouvements : le badge est détecté alors le lecteur le lit.
Le PIC donne au CPU le signal pour écrire ou pour lire, d’où le terme d’interrupteur.
-Driver :
Régénère les informations sur le BUS.
-II) Modèle de programmation d’un processeur :
-Introduction au langage de programmation :
-Modèle logique d’un processeur
-Quel sont ces registres ?
-Structure et organisation de la mémoire
-Jeu d’instructions.
Organisation de la mémoire :
Ex : L.D A,(47B8) donne l’instruction au CPU de mettre dans le registre A ce qu’il y a dans
le registre 47B8.
Quand on a des registres de 16 bits , le CPU choisit le PF : soit 47B8 soit 47B9.
Les CPU ne sont donc pas tout à fait compatible (Ex : Intel choisira 47B8 mais Motorola
choisira 47B9)
-Registres :
-Mémoires internes et temporaires :
*Manipulation des données
*Manipulation des adresses
Registre index ( dans le Z80 IX et IY)
Registre pile
-Registres spécialisés ( Z80 et 8086 )
-Registres généraux
-Programmation en langage assembleur
-Registres 68000 :
16 registres de 32 bits : 8 orientés donnée ( calcul de donnée) D0 à D7 et 8 orientés
adresses (calcul d’adresses) A0 à A7 mais A7 est le pointeur de pile.
-Pile : (file d’attente)
Différentes techniques de gestion d’une pile dont LIFO (Dernier arrivé, premier sorti)
et FIFO ( Premier arrivé, premier sorti)
Une pile n’est pas un accumulateur.
Une pile est une zone de mémoire avec un accès différent de l’accès à la mémoire. Il faut une
adresse de départ, les piles ont des tailles variables. On doit connaître l’adresse du somment
de la pile, cette adresse de sortie doit être stockée dans un registre : le Stack Pointer.
Notation polonaise inverse ( illustration d’à coté)
-Instructions :
-Composition :
2 parties : -début : code opératoire, type de l’opération à faire (Ex : L.D A,(47B8) L.D
est le type d’opération .)
-opérandes : (Dans l’exemple, A et 47B8) où effectuer l’opération, avec quels
registres ? 2 natures d’opérandes : donnée, adresse ou les deux.
-Exécution :
-Phase fetch : où se trouve les données ou les adresses à opérer.
-Décodage de l’information.
-Lecture en mémoire : (vers un registre interne) d’une donnée ( ou d’une
adresse qui permet de lire une donnée) c’est la phase de lecture des opérandes.
-Exécution de l’opération (ou éventuelle écriture en mémoire)
-Positionner P.C sur l’instruction suivante. Ex : à l’adresse 1000 il y a
l’instruction L.D ‘A’ , le CPU incrémente alors de 1 et passe à l’instruction pointer par le
P.C : l’adresse 1001 , le P.C pointe alors l’instruction suivante.
-Programme :
3 zones : - zone où se trouve les instructions ( en ROM ou en RAM)
- zone où se trouve les données (en RAM)
- zone de pile
Il faut indiquer à la machine où débute le programme et où il se termine.
-Jeu d’instructions Z80 :
Il y a différents types d’instructions : - chargement ( mémoire vers registre et l’inverse)
- UAL (addition , incrémentation)
- Branchement ( tant que , si alors sinon)
- Appel de procédure
- Entrées-sorties
- Inclassable, divers
-Jeu d’instructions 68000 :
Même niveau de performance que le Z80 , il y a moins d’instructions, dans le 68000 il n’y a
pas d’instructions d’entrées-sorties , elles sont simplifiées.
-Langage assembleur :
-Codage direct d’un CPU (en binaire) mais inconvénient : fastidieux, risque d’erreurs,
peu d’abstraction, jeu d’instruction unique par processeur.
-Langage assembleur :
Langage de premier niveau, meilleure abstraction, demande un programme de
traduction et il y a autant de langages que de processeurs.
-Exemple : du C vers ASM 68K
(Diapo)
static = force à chercher une adresse.
En C En Assembleur (ASM 68K)
Int a,b,c _a dcb.l
_b
_c
A=2 move.l #2,_a
.l long 32 bits pour les entiers
.w standard 16 bits pour les caractères
.b court 8 bits
# valeur en base dix généralement
_a nom de la variable
Adresse Contenu (en héxadécimale)
3c 0000 0000 1ère variable à l’adresse 3c, contenu à l’adresse 3c,3d,3e3f
40 0000 0000 2ème variable à l’adresse 40,41,42,43
04 23fc 0000 0002 0000 0000 003c
23fc correspond à move.l
0000 0002 correspond à 2
0000 003c correspond à _a
Partie centrale : code généré, assimilable par le CPU . C’est un langage machine.
A l’adresse 00 : le programme commence
04 : c’est là où commence l’instruction move #2,_a ( instruction à 10 octets)
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !