INF1600: Architecture des micro-ordinateurs Architecture du microprocesseur Intro à l assembleur et boucle d exécution Responsable du cours : Giovanni Beltrame giovanni.beltrame@polymtl.ca Local: M-4109 Chargée de cours: Luiza Gheorghe luiza.gheorghe@polymlt.ca 1
3 Révision le disque dure Temps de transfert d une information: Déplacement du bras sur la piste (tête): «seek time» Temps de rotation: «rotational latency» Le temps de lecture/ écriture Taux de transfert au disque: Vitesse de rotation * secteurs/piste * données/secteur Source: pcguide.com 2
Soit le disque dur avec les caractéristiques suivantes: Temps (latence) de rotation (une rotation complète) - 6 ms Déplacement du bras d une piste a une piste adjacente -1 ms 1000 secteurs/piste stockées en ordre linéaire (de 0 a 999) La tête est positionné au début du secteur 1 sur la piste 12. La mémoire tampon peut stocker les données d une piste entière. Le temps de lecture, écriture est le même. Calculez: Exercice - Le temps nécessaire pour transférer le secteur 1 de la piste 12 dans le secteur 1de la piste 13 - Le temps nécessaire pour transférer toutes les secteurs de la piste 12 sur la piste 13. Les secteurs ne doivent pas être écrits dans le même ordre que lues. 3
1) Architecture du microprocesseur Le temps de lecture et écriture 6/1000 = 0,006 ms/secteur Le délai de rotation 6 ms 0.006 ms = 5.994 ms Le temps de déplacement de la tête 1 ms (peut être ignoré car si plus petit que le délai de rotation le deux sont exécutés en même temps) Le temps d écriture 0,006 ms/secteur Donc le temps est 0.006 + 5.994 + 0.006 (+ 1) = 6.006 (7.006) ms 2) Réponse Le temps de lecture piste 6 ms Le temps de déplacement de la tête 1 ms (n est plus ignoré car la piste doit être toute lue) Le temps d écriture 6 ms Donc le temps est 6 + 1 + 6 = 13 ms 4
Programme du cours 8/01/2015 Introduction Organisation interne du microprocesseur TP4 Lien entre C++ et assembleur TP0 Introduction aux outils TP2 Architecture du microprocesseur Hierarchie de mémoire 15/01/2015 Micro-ordinateur et périphériques Programmation en assembleur TP5 Mémoires TP1 Périphériques et architecture TP3 Programmation en assembleur 22/01/2015 Architecture d'un microprocesseur C++ et assembleur Théorie Travaux Pratiques 5
Objectifs de la leçon 1 2 3 4 5 6 7 Dessiner un diagramme de l architecture de Von Neumann Décrire la procédure suivie par une architecture de Von Neumann pour exécuter un programme enregistré Faire un liste des composants d'un processeur Décrire comment un processeur accède à une mémoire Décrire un boucle d'exécution d'un processeur en langage RTN Expliquer l'utilisation des pipelines pour rendre l'exécution plus rapide Décrire le processus d'interruption pour un processeur 6
1 Agenda Les niveaux d'abstraction d'un ordinateur 1 2 L'assembleur 3 La mémoire 4 La boucle d exécution 5 6 L'accès aux périphériques 7 7
1 Le concept du programme en mémoire : Les programmes sont des instructions stockées en mémoire - Chiffres qui peuvent être modifiés, effacés... Les programmes doivent être compris par le processeur - 1 et 0 Traduction Ordres de l'usager: Open the pod bay doors, HAL! Langage machine 10001011010110101... 8
Programme en C Compilateur GNU C Assembleur X86 9
Assembleur Assembler GNU C Langage machine 10
1 Le niveau dispositif (L1) 1s et 0s sont traduits en signaux électriques L1 Dispositif L1 11
1 Le niveau microarchitecture (L2) Abstraction Décrit comment les instructions sont exécutées Memory Input/Output Bus Processor Microarchitecture L2 Dispositif L1 12
1 Le niveau microarchitecture (L2) Memory Input/Output Mémoire Entrées/Sorties Bus Processor L accumulateur est une petite mémoire proche du processeur Unité arithmetiquelogique (ALU) Accumulateur Unité de contrôle Processeur Microarchitecture L2 Dispositif L1 13
2 La micro-architecture de la machine de Von Neumann La séquence d opérations pour exécuter un programme 1) Récupérer les instructions de la mémoire 2) Décoder la représentation numérique des instructions 3) Charger les données de la mémoire ou des entrées vers l accumulateur 4) Exécuter l opération correspondante sur les données 5) Sauvegarder le résultat 6) Revenir à 1) et répéter Mémoire Entrées/Sorties Unité arithmetiquelogique (ALU) Accumulateur Unité de contrôle Processeur 14
2 MIPS Architecture Source : wikipedia.org 15
2 16
2 17
2 Instruction Set Architecture (L3) Interface entre matériel et logiciel Ce que c est visible pour programmeur Consiste en: instructions (opérations et la façon que les opérations sont codées) informations sur les unités composants (taille, adressage etc.) description de registres accessibles (l état du processeur) contrôle des entrées/sorties Donc ISA donne au programmeur en assembly une «image» de la machine qui inclut le matériel accessible et les instructions qui permettent la manipulation de données a l intérieur du matériel. 18
2 19
2 20
2 Harris and Harris Digital computer design 21
Agenda Les niveaux d'abstraction d'un ordinateur 1 2 L'assembleur 3 La mémoire 4 La boucle d'exécution 5 6 L'accès aux périphériques 7 22
3 Langage machine Le microprocesseur parle binaire Codage efficace des instructions Vitesse Taille Très difficile à lire Pas fait pour un humain Assez différent d un type de processeur à l autre Ex: 0000000111 011 001 additionne le registre 3 (ebx) avec le registre 1 (ecx) sur Intel x86 Représentation «lisible»: langage assembleur Mot à mot équivalent Une seule traduction possible de assembleur à langage machine 23
3 Langage assembleur Pourquoi utiliser le langage assembleur? Pourquoi pas toujours un langage de haut niveau? Le langage assembleur permet d'utiliser toutes les capacités matérielles de la plate-forme l'accès à des modes de programmation non-disponible en langage évolué d'utiliser les registres et les entrées/sorties spécifiques à la plateforme cible l'usage de certaines fonctionnalités du processeur lors du développement du noyau d'un système d'exploitation d'obtenir des programmes rapides et compacts d'optimiser les sections critiques d'un programme de faire un «pont» entre deux langages de programmation 24
3 Langage assembleur Inconvénients temps de développement plus long erreurs de programmation plus fréquentes et plus difficiles à déceler programmes plus difficiles à comprendre et à maintenir code non portable vers d'autres architectures difficile d'optimiser pour les différentes «variantes» d une architecture sur un même ordinateur, le code peut être incompatible entre les différents systèmes d'exploitation des changements dans le choix des structures de données et des algorithmes sont difficiles à «propager». 25
3 Avantages C (langage haut niveau): Programmes clairs, bien structurés Utilisation de fonctions prédéfinies Si le compilateur est bien écrit peut gérer correctement l allocation de mémoire Désavantages: Le code exécutable peut être plus long et moins efficace Il y a des bogues qui sont plus difficiles a trouver si on ne sais pas comment le compilateur «travaille» Gérer certains détails du matériel (comme les interruption) peut être difficile en C CPU s qui n ont pas compilateur disponible (et qui sont livrés avec assembleur ) En pratique on peut utiliser C pour la plus grande partie d un programme et insérer des parties en assembleur (comme procédures externes) pour les fonctions clef.. 26
3 Architecture du processeur Un processeur a normalement: Registres: petite mémoire ultrarapide Accès mémoire: permet une grande mémoire «externe» Entrées/sorties (peut être même que mémoire) Un programme en mémoire Opérations entre registres (parfois mémoire-registre) Instructions relativement simples Déplacement de donnée (mov, movs, lds ) Arithmétique (add, sub, mul, div, ) Logique (and, or, ) Décalages de bits (shr, shl, ) Sauts/branchements avec condition simple (jmp, call, ) Données et programme Mémoire unique: dit Von Neumann Mémoires séparées: dit Harvard Architecture physique (différente de architecture logique) 27
3 Architecture des instructions add r1 = r2 + r3 Operand destination/source Opcode code operation, addition ici Nombre d opérandes spécifiées: 1 à 3 selon le processeur 1: accumulateur ou pile (co-pro Intel x86) 1 adresse add A acc acc + mem[a] 2: une source sert aussi de destination (Intel x86, AVR, ) 2 adresses add A B EA(A) EA(A) + EA(B) 3: destination distincte des deux sources (MIPS, SPARC, ) 3 adresses add A B C EA(A) EA(B) + EA(C) Source : wikipedia.org 28
Architecture des instructions Taille d instruction fixe : MIPS 32 bits SPARC 32 bits AVR(±) 16 bits variable (Intel x86, MC68000, ) Exemple d instruction: SPARC(32bits): add %r1, 1234, %r2 r2 r1 + 1234 Op (9bits) reg_source1(5bits) constante(13bits) reg_dest(5bits) 32 bits x86: add $1234, %ebx ebx ebx + 1234 Op (13bits) reg_dest(3bits) constante(32bits) 29
1 Agenda Les niveaux d'abstraction d'un ordinateur 1 2 L'assembleur 3 La mémoire 4 La boucle d'exécution 5 6 L'accès aux périphériques 7 30
Mémoire Architecture du microprocesseur Grand «tableau» de cases ayant chacune une adresse Lors d une lecture: Présenter l adresse binaire à la puce Mettre actif le signal de lecture Un certain temps après, la puce répond avec la donnée Adresse Donnée 0 01100111 1 10011100 2 00000000 4 1023 11110000 Lors d une écriture: Présenter l adresse binaire à la puce Présenter la donnée binaire à la puce Donnée Enable Read/Write Mettre actif le signal d écriture Mémoire Adresse 31
Accès mémoires Vue par le programme: une adresse par octet Un octet = un caractère standard Sur la puce: une adresse par «mot» (par exemple 32bits) Réduit le nombre d accès Ordre placer les octets Grosboutiste/groboutien («big-endian»): gros bout (MSB) à petite adresse Petitboutiste/petitboutien («little-endian»): petit bout (LSB) à petite adresse Ex: placer deux entiers de 32bits dans une mémoire à mots de 32bits: 0x12345678 à l adresse 0, et 0x123 à l adresse 4 (vue par le programme) Adr. sur puce 0 Adr. vue par prog. 0 1 2 3 12 34 56 78 Adr. sur puce 0 Adr. vue par prog. 3 2 1 0 12 34 56 78 4 1 4 5 6 7 00 00 01 23 1 7 6 5 4 00 00 01 23 «big-endian» «little-endian» 32
4 Accès mémoires - alignement Problème d alignement Ex: placer l entier 0x12345678 à l adresse 1 (vue par le programme) Adr. sur puce 0 Adr. vue par prog. 0 1 2 3?? 12 34 56 Adr. sur puce 0 Adr. vue par prog. 3 2 1 0 34 56 78?? 1 4 5 6 7 78?????? 1 7 6 5 4?????? 12 «big-endian» «little-endian» Requiert physiquement deux accès à la puce mémoire Certains processeurs ne le supportent pas directement: MIPS - toujours aligné, ne peut pas commencer à n importe quelle adresse, little or big-endian x86 peut commencer à n importe quelle adresse, little-endian 33
Mémoire sur l AVR 4 Deux plages d'adresses logiques (Harvard) Une pour les données 0 à 0x1F les registres 0x20 à 0x5F les I/O 0x60 à 0x45F la SRAM interne Une pour les instructions 0 à 0x29 vecteurs d'interruptions contiennent un "jmp" (branchement) vers le bon code 0x2A le code 34
Agenda Les niveaux d'abstraction d'un ordinateur 1 2 L'assembleur 3 La mémoire 4 La boucle d exécution 5 6 L'accès aux périphériques 7 35
Exécution des instructions Boucle d exécution: Lire la prochaine instruction; pointer vers la suivante Chercher les données selon l instruction Exécution de l opération Écriture du résultat Ex. sur architecture à un bus: Mémoire Entrées/Sorties Mémoire Compteur d instructions Adresse mémoire Donnée mémoire A Instruction Banque de registres Circuit de contrôle 5 Unité arithmetiquelogique (ALU) Accumulateur Unité de contrôle Unité arith. (UAL) C Processeur 36
Description abstraite vs. concrète 5 RTN (Register Transfer Notation) (source: Heuring&Jordan; pas Atmel) A B Écrit B dans A A[B] Prend le mot B du tableau/mémoire A A B Prend le(s) bits B de A n..m Spécifie une plage d index (pour bits ou mots) A B Si A, alors exécuter et retourner B A#B Concaténation des bits de A et B (A étant de poids fort) (A:B dans Atmel) A@B Répétition A fois du bit B : Séparateur parallèle (: pendant le même cycle d horloge l ordre ne compte pas) ; Séparateur séquentiel (; cycles d horloge successifs l ordre est importante) := Définition Opérateurs arithmétiques et logiques standards 37
Exemple de description RTN Description abstraite précise en RTN: Mémoires PC 31..0 : IR 31..0 : (compteur de programme et l instruction) R[0..31] 31..0 : (32 registres de 32 bits) Mem[0..2 32-1] 7..0 : (une mémoire possible de 4GB=2 32 B) M[x] 31..0 := Mem[x]#Mem[x+1]#Mem[x+2]#Mem[x+3]: x paramètre quelconque # concaténation Boucle d exécution IR M[PC] : PC PC+4; (chercher l instruction) add R[IR 26..22 ] R[IR 21..17 ] + R[IR 16..12 ] (l exécuter) Mémoire PC A MA MD Unité arith. (UAL) C IR R[0..31] 5 Circuit de contrôle (op=12) ->R[ra] <-R[rb] + R[rc] (si condition alors addition ) 38
Exemple de description RTN 5 Description concrète add R[IR 26..22 ] R[IR 21..17 ] + R[IR 16..12 ] MA 31..0 : MD 31..0 : (adresse et donnée pour accès mémoire) Recherche d instruction MA PC : C PC+4 ; MD M[MA] : PC C ; IR MD ; %IR M[PC] : PC PC+4; Exécution d un instruction add A R[IR 21..17 ] ; C A + R[IR 16..12 ] ; R[IR 26..22 ] C ; % l exécution Mémoire PC A MA MD Unité arith. (UAL) C IR R[0..31] Circuit de contrôle 39
Architecture 1 bus -1 bus 32 bits occupé par un registre à la fois - MA le CPU copie l adresse mémoire dans MA - MD les données sont lues de ou écrites dans MD - Le premier opérande ALU toujours en A, le résultat en C - Le deuxième opérande vient toujours du bus - L informations du bus va toujours en IR et MA - Un décodeur interprète l info envoyée au IR - MA communique l adresse à la mémoire et non au CPU Abstraite: (IR M[PC] : PC PC+4 ; instruction_execution) Comment faire plus vite? instruction_execution:=( add (:=op=12) R[ra] R[rb] + R[rc] : Concrète: Recherche d instruction MA PC : C PC+4 ; MD M[MA] : PC C ; IR MD ; Exécution d un instruction add A R[IR 21..17 ] ; C A + R[IR 16..12 ] ; R[IR 26..22 ] C ; Source: Heuring&Jordan 40
5 Architectures à plusieurs bus 2 bus: 3 bus: Bus A Bus B Bus C Bus A et B R[0..31] IR PC Circuit de contrôle R[0..31] IR PC Circuit de contrôle MA MD Mémoire MA MD Mémoire A Unité arith. (UAL) Unité arith. (UAL) 41
6 Débit plus rapide Peut-on réduire le temps à un cycle? Peut-on avoir une instruction qui termine par cycle? Pipeline Idée de la chaîne de montage Chaque instruction pas moins longue (parfois plus longue) Instructions en même temps à différentes étapes de la chaîne Débit plus rapide lorsque tout va bien Aléa dans le pipeline l implémentation empêche une certaine combinaison d opérations le résultat d une opération dépend de celui, pas encore produit,d une instruction précédente Si un aléa est détecté, la solution la plus simple est d arrêter le pipeline (stall): les instructions qui précédent celle qui produit l aléa peuvent continuer, mais toutes les autres sont arrêtées jusqu à la disparition de l aléa 42
Agenda Les niveaux d'abstraction d'un ordinateur 1 2 L'assembleur 3 La mémoire 4 La boucle d'exécution 5 6 L'accès aux périphériques 7 43
7 Conversation avec périphérique Certains périphériques demandent de l attention Deux méthodes «d attente» Scrutation («polling»): aller voir souvent Interruption: aller voir lorsqu on «sonne» Étapes d un interruption Un circuit dédié reçoit les requêtes Le processeur arrête ce qu il fait pour les traiter Une routine est exécutée par le processeur Le processeur reprend où il était Attention Interruption n importe où Sections critiques: possible d empêcher les interruptions Comment arrêter et reprendre? 44
Boucle d exécution avec interruptions 7 Exécution directe du vecteur d interruption (comme sur AVR) (IE=interrupt enable ; ireq=interrupt request ; I_Num=interrupt number ; SP=stack pointer ; IPC=interrupt PC) boucle_execution := Rst (Rst 0: IE 0: PC 0; boucle_execution) : Rst (ireq IE) (IE 0 : sauver_pc : PC 21@0 # I_Num<7..0> # 3@0 ; boucle_execution): Rst (ireq IE) (IR M[PC] : PC PC+4; execute_instruction; boucle_execution) Pointeur vers routine (comme sur Intel x86) PC M[22@0 # I_Num<7..0> # 2@0] Sauver PC Pile: SP SP 4 ; M[SP] PC ; Reg.: IPC PC ; (+ instructions pour sauver IPC) Retour d interruption Pile: PC M[SP] ; SP SP + 4 ; IE 1; Reg.: PC IPC ; IE 1; (+ instructions pour restaurer IPC) 45
Agenda Les niveaux d'abstraction d'un ordinateur 1 2 L'assembleur 3 La mémoire 4 La boucle d'execution 5 6 L'accès aux périphériques 7 46
Sommaire 1 2 Dessiner un diagramme de l architecture de Von Neumann Décrire la procédure suivie par une architecture de Von Neumann pour exécuter un programme enregistré Mémoire Entrées/Sorties Unité arithmetiquelogique (ALU) Accumulateur Processeur Unité de contrôle Processeur 47
Sommaire 3 4 Faire un liste des composants d'un processeur Décrire comment un processeur accède à une mémoire Donnée Mémoire Enable Read/Write Adr. sur puce 0 Adr. vue par prog. 0 1 2 3 12 34 56 78 Adr. sur puce 0 Adr. vue par prog. 3 2 1 0 12 34 56 78 Adresse 1 4 5 6 7 00 00 01 23 1 7 6 5 4 00 00 01 23 «big-endian» «little-endian» 48
Sommaire 5 Décrire un boucle d'exécution d'un processeur en langage RTN IR M[PC] : PC PC+4; add R[IR 26..22 ] R[IR 21..17 ] + R[IR 16..12 ] 6 7 Expliquer l'utilisation des pipelines pour rendre l'exécution plus rapide Décrire le processus d'interruption pour un processeur - Un circuit dédié reçoit les requêtes - Le processeur arrête ce qu il fait pour les traiter - Une routine est exécutée par le processeur - Le processeur reprend où il était 49
Architecture 1 bus -1 bus 32 bits occupé par un registre à la fois - MA le CPU copie l adresse mémoire dans MA - MD les données sont lues de ou écrites dans MD - Le premier opérande ALU toujours en A, le résultat en C - Le deuxième opérande vient toujours du bus - L informations du bus va toujours en IR et MA - Un décodeur interprète l info envoyée au IR - MA communique l adresse a la mémoire et non au CPU Abstraite: (IR M[PC] : PC PC+4 ; instruction_execution) Comment faire plus vite? instruction_execution:=( add (:=op=12) R[ra] R[rb] + R[rc] : Concrète: Recherche d instruction MA PC : C PC+4 ; MD M[MA] : PC C ; IR MD ; Exécution d une instruction add A R[IR 21..17 ] ; C A + R[IR 16..12 ] ; R[IR 26..22 ] C ; Source: Heuring&Jordan 50
Source: Heuring&Jordan A données qui entrent dans les registres, B données qui sortent. C=B fonction d ALU permettant les transferts simples Recherche d instruction MA PC : C PC+4 ; MD M[MA] : PC C ; IR MD ; Exécution d une instruction add A R[IR 21..17 ] ; C A + R[IR 16..12 ] ; R[IR 26..22 ] C ; Recherche d instruction MA PC; MD M[MA] : PC PC+4 ; IR MD ; Exécution d une instruction add A R[IR 21 21..17 ] ; R[IR 26..22 ] A + R[IR 16..12 ] ; 51
52
53
Solution MA PC ; // écriture adresse PC dans mémoire d adresses MA MD M[MA] : PC PC+ 4; // écriture données de la mémoire principale dans MD, déplacement opérande instr. + 4 IR MD ; // écriture instruction lue dans le registre d instructions MA PC ; // écriture dans la mémoire d adresses l adresse de l opérande en mémoire MD M[MA] : A R[IR 16..12 ] ; // écriture des opérandes dans dans MD et dans l accumulateur R[0] MD - A; //soustraction PC PC+4; //pointer instruction suivante 54