Architectures des ordinateurs Sommaire 1) organisation minimale d’un ordinateur 2) le processeur 3) la mémoire 4) le programme 5) les interfaces organisation minimale d’un ordinateur Initialisation Génération horloge Bus adresses Mémoire Bus données RAM ROM Microprocesseur Lignes de contrôle Décodage d’adresses Interfaces périphériques ENVIRONNEMENT 3 le système minimal - le circuit d’horloge et circuit d’initialisation (reset) - la mémoire principale - le processeur ou CPU - le décodeur d’adresses - le bus d’adresse et bus de données - le bus de contrôle - les périphériques circuit d’horloge et circuit de reset Exemple de circuits de reset et de génération d’horloge /reset sck U6 Reset BUTTON SW1 R2 10k D1 C4 10nF 1N914 +5V Y1 4Meg C1 22pF C2 22pF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 MISO AT90S8535 pb0-T0 pb1-T1 pb2-Ain0 pb3-Ain1 pb4-ss/ pb5-mos i pb6-miso pb7-sck res et/ vcc gnd xtal2 xtal1 pd0-rxd pd1-txd pd2-int0 pd3-int1 pd4-oc1b pd5-oc1a pd6-icp adc0-pa0 adc1-pa1 adc2-pa2 adc3-pa3 adc4-pa4 adc5-pa5 adc6-pa6 adc7-pa7 aref agnd avcc tosc2-pc7 tosc1-pc6 pc5 pc4 pc3 pc2 pc1 pc0 oc2-pd7 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 AT90S8535 Reset: activé tant que l’alimentation n’est pas stabilisée : réseaux RC ou circuits spécialisés Horloge (Quartz ou quartz + PLL): fixe le rythme d’exécution des instructions 5 la mémoire programme : (instructions sur 16 bits pour famille ATmega) => contient le programme exécutable (flash eeprom) 6 la mémoire données : données sur 8 bits pour ATmega (SRAM) ⇒ accessible en lecture/écriture ⇒ sauvegarde de variables, adresses de retour de sousprogrammes , d’interruptions, de contexte (registre d’état, …) ⇒ contrôlée en lecture/écriture par le bus de contrôle 7 La CPU: son rôle ⇒ Implémente le cycle Fetch-Decode-Execute: 1) Fetch: a) assigne une valeur d’adresse au bus d’adresses b) lit l’instruction associée à l’adresse pointée 2) Decode a) décode l’instruction b) lit les opérandes si nécessaire 3) Execute a) exécute l’instruction b) sauvegarde les opérandes si nécessaire 9 Architecture Harvard (2 bus séparés) / Von Neumann (1 bus) - architecture Von Neumann => instructions CISC - architecture Harvard => instructions RISC ⇒ La majorité des processeurs actuels sont à architecture de Harvard et disposent d’un pipeline RISC Avantages Temps d’exécution court, hardware plus simple, coût puce électronique réduit CISC Instructions puissantes, programme plus simple à écrire, moins de lignes de programme, compilateur simple à concevoir Inconvénients Programme plus complexe à Temps exécution long, hardware plus écrire, plus de lignes, compilateur compliqué et plus coûteux difficile à concevoir Architecture Harvard => pipelining 12 Architecture de la CPU (Atmel ATmega) (HARVARD-RISC et pipeline 2 étages) 13 Architecture famille Atmel Atmega (HARVARD-­‐RISC) 14 Organisation de la CPU: - bus d’adresse, bus de données et bus de contrôle - les registres de travail - l’unité arithmétique et logique (ALU) - l’unité de traitement - le pointeur de pile - le registre d’état - les interruptions et leur traitement Bus d’adresses ⇒ pointe la prochaine instruction à exécuter (à 0 au reset). ⇒ s’incrémente de 1 si aucun saut de programme demandé ⇒ unidirectionnel avec souvent possibilité de mise à l’état « haute impédance » ⇒ piloté par un compteur synchrone à chargement parallèle ⇒ capacité d’adressage direct: de 0 à 2n-1 (n: taille du bus) 16 Décodage d’adresses ⇒ assigne à un périphérique, une zone dans l’espace adressable par le processeur ⇒ génère un « chip select » (ex.: CS_DDRA=1 quand @=0x3A) 17 Bus de données ⇒ définit la taille du processeur: 8, 16, 32, 64 bits ⇒ sens des data contrôlé par Read/Write Von Neumann: bus de données bidirectionnel Harvard: bus de données bidirectionnel pour la mémoire données, unidirectionnel pour la mémoire programme 18 Les cycles de lecture/écriture 19 les registres de travail: bascules D (32 en général) 20 l’unité arithmétique et logique ♦ Unité arithmétique et logique (ALU) M S1 S0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 F A A•B logique A A+B A-1 A+B arithmétique A-B A+1 A B M 2 S F l’unité arithmétique et logique (ALU) effectue les opérations: - addition - soustraction - complémentation - comparaison - multiplication - … 22 l’unité de traitement ⇒ assure le décodage et l’exécution des instructions ROM Initialisation horloge Code de l’instruction à exécuter Compt eur prépos itionna ble (charg ement parallè le) micr opro gra mme * * * * * * * * Adresse microcode microcode * * * * * * * * Signaux de contrôle internes/externes 23 Le pointeur de pile (stack pointer) Pile: zone réservée de la mémoire RAM (en général, la partie haute) Pointeur de pile: registre matériel servant à l’adressage de la zone RAM Son rôle est d’adresser la pile pour : - la sauvegarde de l’adresse de retour du programme lors d’un appel à un sous-programme ou lors d’une interruption. - la restitution de l’adresse de retour du programme lors du retour d’ un sous-programme ou du retour d’une interruption. - la sauvegarde d’un contexte (registre d’état, registres de travail, …) Cas du ATmega16: - Registre de 16 bits dont seulement les 11 bits de poids faibles sont utilisés (puisque la zone RAM va de $60 à $45F). Il pointe la prochaine adresse libre dans la pile Le pointeur de pile doit toujours être initialisé avec l’adresse haute de la RAM dès le début du programme. Dans le cas du Atmega16 cette adresse est $45F. 24 pointeur de pile 25 pointeur de pile 26 Le registre d’état (SREG pour ATmega) ⇒ Registre de 8 bits (bascules D écrites ou lues séparément). ⇒ contient des « drapeaux » qui se positionnent ou non en fonction du résultat de l’instruction qui vient d’être exécutée (actifs à 1) Bit 7 I Bit 6 T Bit 5 H Bit 4 S Bit 3 V Bit 2 N Bit 1 Z Bit 0 C I : si à 1 => autorise les interruptions T : Bit de stockage pour la copie d'un bit H : Drapeau de signalisation de semi-retenue S : S = N ⊕ V ( Drapeau de signalisation de signe arithmétique ) V : Drapeau de signalisation de double complément de dépassement N : à 1 si l’instruction exécutée génère un résultat négatif Z : à 1 si l’instruction exécutée génère un résultat nul C : à 1 si l’instruction exécutée a provoqué une retenue Remarque : Lorsqu’une instruction est susceptible de modifier l’état d’un bit du registre SREG, celui-ci est remis à 0 avant l’exécution de l’instruction. 27 Interruptions et interruptions vectorisées Interruption: Plusieurs demandeurs peuvent activer la même ligne d’interruption: le processeur rentre alors dans une boucle d’identification du demandeur. - avantage: simplicité du matériel - inconvénient: délai pour servir l’interruption (identification par logiciel) Interruption vectorisée: Chaque demandeur dispose d’une adresse qui lui est propre: le service est immédiat sauf si une autre interruption est en cours de traitement. 0 à 21 sur Atmega 0 est le plus prioritaire, 21 est le moins prioritaire 28 Interruptions vectorisées (ATmega16) 29 Obtention du programme exécutable description algorithmique => langage de haut niveau => compilation => assembleur => assemblage => exécutable 1) Description algorithmique: (ex. a=a+1 puis b=a) définition du type des variables: Var a, b: caractère non signé a <- a+1 b <- a 2) Traduction en langage C unsigned char a, b; //def des types a++; b=a; Compilation: a et b affectés en priorité à des registres de travail sinon en SRAM ⇒ a et b affectés aux registres de travail R4 et R5 ⇒ a++ traduit en assembleur par « INC R4 » ⇒ b=a par « MOV R5,R4 » 32 33