architecture de machines le microprocesseur cours 2003-2004
TRANSCRIPT
Architecture de machinesLe microprocesseur
Cours 2003-2004
UALMémoire
Données
&
Programmes Unité decommande
L’unité d’exécution
Fabrication
Fabrication(2)
Fabrication(3)
Présentation
Evolution de l’intégration: Processeurs x86
Microprocesseur = Unité Contrôle + UAL
L’Unité de contrôle– Décodage des instructions– Chargement des informations depuis la mémoire
dans l ’UAL– Contrôle du flux du programme
L’Unité Arithmétique et Logique– Réalisation des opérations
• Calculs entiers• Calculs sur les nombres réels• Comparaisons
Le langage machine
Ensemble d ’instructions élémentaires traitées par le microprocesseur– Environ un millier d’instructions
Branchements Calculs sur les entiers
Comparaisons Communication mémoire
Calculs sur les réels Opérations «multimédia» (MMX…)
– Processeur Z80 utilisé en TP: 256 Instructions Codage dans la mémoire
– « code instruction » Assembleur :
– Représentation « lisible » du langage machine– Mnémonique: représentation des instructions
De l’assembleur au code machineOUTBUF EQU 80H
LD A,'A'-1
NCB: INC A
OUT (OUTBUF),A
CP 'Z'JP NZ,NCB
HALT
Les registres
Mémoires contenues dans le microprocesseur Codés sur n bits
– Capacité de traitement du processeur– 64 bits dans les microprocesseurs modernes– 4/8 bits dans les processeurs anciens
3 types de registres– Registres entiers : Traitement des nombres entiers– Registres de contrôle : état et déroulement du
programme– Registres calcul flottant
Principaux registres de contrôle Registre d ’instruction : RI
– Code de l ’instruction courante
Registre de position dans le programme : CO– Compteur Ordinal : adresse de la prochaine instruction à éxecuter
Registre de pile : SP– Permet de créer une « pile » dans la mémoire
Registres d ’état– Etats du microprocesseur
• Débordements de capacité• Comparaisons• Mode d ’exécution
Accumulateur– Registre de travail principal
Exemple d’instructions Chargement depuis la mémoire
– LD Registre, Adresse : Place dans un registre le contenu de l’adresseChargement d’une valeur
– LD Registre, Valeur : Place dans un registre la valeur fournie Sauvegarde en mémoire
– LD Registre, Adresse : Place dans la mémoire le contenu du registre Addition
– ADD Registre1, Registre2 : Ajoute Registre2 à Registre 1– ADD Registre, Valeur : Ajoute la valeur au registre
Multiplication (n’existe pas)
– Mult Registre1, Registre2 : Multiplie Registre1 par Registre 1Mult Registre, Valeur : Multiplie le registre par la valeur
Comparaison– CP Registre1, Registre2 : Compare le registre 1 au registre 2 et place les bits
d’état Sauts inconditionnel
– JP, JR Adresse (ou libellé) : Effectue un saut inconditionnel vers l’adresse spécifiée (ou le libellé pour simplifier)
L’horloge Cadence les traitements dans l ’ordinateur
Cycle du microprocesseur <=> Traitements effectués en un top d ’horloge
Détermine la vitesse du microprocesseur
Ne suffit pas pour connaître la performance réelle d ’une machine
Liaisons avec la mémoire
Registre d ’adresse et registre mot– Stockage de l ’adresse mémoire et de la donnée– Sélection de l ’opération
• Lecture
• Ecriture
– Transfert 1 transfert par cycle au maximum
– Dépend de la vitesse du bus mémoire– Processeurs actuels très dépendants de vitesses
d’échange
L’adressage Adressage direct
– Spécification de l ’adresse LD (0120H),A : Charge dans A la valeur contenue en 0120H
Adressage indirect– L ’adresse à considérer est stockée (indirection)
LD BC, 0120H
LD (BC),A
Adressage indexé– Utilisation d ’un registre d ’index (IX, IY sur Z80)
• Adresse = Base + index
LD (IX+3), 72 : Charge 72 à l’adresse IX+3
La pile– Empilage (push) et dépilage (pop)– En général pas de contrôle de ces opérations !
Exemple: le Z80
Structure complexe
2,5 unités d ’exécution– Arithmétique
• Calcul et comparaison des nombres entiers
– Calcul flottant : • coprocesseur mathématique => calcul sur les
nombres réels
– Unité multimédia• MMX/SSE/3DNow! : exécution particulière de
certaines opérations
Exécution en pipeline
Exécution de plusieurs instructions en même temps– Partage de l ’UAL– 1 instruction prend « 1
cycle »
Pb : – Vidage du pipeline– Instructions de branchement
Exécution parallèle/prédictives
Mise à disposition de plusieurs UAL– Problème de remplissage du pipeline
Exécution prédictive
Exemple: le pentium
Exemple: l ’Athlon
Exemple : le Pentium 4
Pipeline Réel
PIV : 20 Niveaux PIII: 10 Niveaux Athlon: 11 Niveaux
L’Hyper Threading
Simule deux processeurs sur un seul– 2 files d’exécution– Mêmes UAL
Nécessite des applications compatibles– Augmente la disponibilité du
système
Optimisation de l’utilisation des ressources
RISC/CISC/VLIW
CISC RISC VLIW
Exemple de compilation : Factorielle
En algorithmiqueFact = 1Pour i allant
de 2 a NFact = Fact * i Fin pour
En C
Int fact(int n){ int i = 2 ; int result = 1 ; while(i <= N)
{ result *= i ; i++ ; } fact = result ;} ;
En assembleur Load A, adresse de NLoad B, 1Load C, 2Boucle Cmp A,CJmp FinMult B,CAdd C,1Jmp BoucleFin RTN