Architecture de machines Le microprocesseur Cours
UAL Mémoire Données & Programmes Unité de commande L’unité d’exécution
Fabrication
Fabrication(2)
Fabrication(3)
Présentation
Evolution de l’intégration: Processeurs x86
Microprocesseur = Unité Contrôle + UAL n 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 n L’Unité Arithmétique et Logique –Réalisation des opérations Calculs entiers Calculs sur les nombres réels Comparaisons
Le langage machine n Ensemble d ’instructions élémentaires traitées par le microprocesseur –Environ un millier d’instructions BranchementsCalculs sur les entiers ComparaisonsCommunication mémoire Calculs sur les réelsOpérations «multimédia» (MMX…) –Processeur Z80 utilisé en TP: 256 Instructions n Codage dans la mémoire –« code instruction » n Assembleur : –Représentation « lisible » du langage machine –Mnémonique: représentation des instructions
De l’assembleur au code machine OUTBUFEQU80H LDA,'A'-1 NCB:INCA OUT(OUTBUF),A CP'Z' JPNZ,NCB HALT
Les registres n Mémoires contenues dans le microprocesseur n Codés sur n bits –Capacité de traitement du processeur –64 bits dans les microprocesseurs modernes –4/8 bits dans les processeurs anciens n 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 n Registre d ’instruction : RI –Code de l ’instruction courante n Registre de position dans le programme : CO –Compteur Ordinal : adresse de la prochaine instruction à éxecuter n Registre de pile : SP –Permet de créer une « pile » dans la mémoire n Registres d ’état –Etats du microprocesseur Débordements de capacité Comparaisons Mode d ’exécution n Accumulateur –Registre de travail principal
Exemple d’instructions n Chargement depuis la mémoire –LD Registre, Adresse : Place dans un registre le contenu de l’adresse Chargement d’une valeur –LD Registre, Valeur : Place dans un registre la valeur fournie n Sauvegarde en mémoire –LD Registre, Adresse : Place dans la mémoire le contenu du registre n Addition –ADD Registre1, Registre2 : Ajoute Registre2 à Registre 1 –ADD Registre, Valeur : Ajoute la valeur au registre n Multiplication (n’existe pas) –Mult Registre1, Registre2 : Multiplie Registre1 par Registre 1 Mult Registre, Valeur : Multiplie le registre par la valeur n Comparaison –CP Registre1, Registre2 : Compare le registre 1 au registre 2 et place les bits d’état n Sauts inconditionnel –JP, JR Adresse (ou libellé) : Effectue un saut inconditionnel vers l’adresse spécifiée (ou le libellé pour simplifier)
L’horloge n Cadence les traitements dans l ’ordinateur Cycle du microprocesseur Traitements effectués en un top d ’horloge Détermine la vitesse du microprocesseur n Ne suffit pas pour connaître la performance réelle d ’une machine
Liaisons avec la mémoire n 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 n Adressage direct –Spécification de l ’adresse LD (0120H),A : Charge dans A la valeur contenue en 0120H n Adressage indirect –L ’adresse à considérer est stockée (indirection) LD BC, 0120H LD (BC),A n 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 n 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 n 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 n Exécution de plusieurs instructions en même temps –Partage de l ’UAL –1 instruction prend « 1 cycle » n Pb : –Vidage du pipeline –Instructions de branchement
Exécution parallèle/prédictives n Mise à disposition de plusieurs UAL –Problème de remplissage du pipeline n Exécution prédictive
Exemple: le pentium
Exemple: l ’Athlon
Exemple : le Pentium 4
Pipeline Réel n PIV : 20 Niveaux n PIII: 10 Niveaux n Athlon: 11 Niveaux
L’Hyper Threading n Simule deux processeurs sur un seul –2 files d’exécution –Mêmes UAL n Nécessite des applications compatibles –Augmente la disponibilité du système
Optimisation de l’utilisation des ressources
RISC/CISC/VLIW n CISC n RISC n VLIW
Exemple de compilation : Factorielle En algorithmique Fact = 1 Pour i allant de 2 a N Fact = 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 N Load B, 1 Load C, 2 BoucleCmp A,C Jmp Fin Mult B,C Add C,1 Jmp Boucle FinRTN