Fonctionnement des microprocesseurs : Exemple d’Architecture du microprocesseur : 6809 1. Principe de fonctionnement : 1.1. Machine de Von Neumann 1.1.1. Principe Von Neumann propose en 1945 un principe d’architecture, modèle de base pour un ordinateur qui utilise une structure de stockage unique pour conserver à la fois les instructions et les données requises ou générées par le calcul. 1.1.2. Architecture L'architecture de Von Neumann est une circuiterie implémentant un ordinateur universel contenant les composants suivants : • Une unité arithmétique et logique qui procède à des opérations de calcul et des opérations logiques. • Une unité de contrôle qui pilote l'exécution des programmes. • Une mémoire dans laquelle sont stockés les programmes et les données. • Une unité d'entrée qui permet l'acquisition de données en provenance du monde extérieur. • Une unité de sortie qui permet l'envoi de résultats à destination du monde extérieur. 1.2. Architectures CISC et RISC Un microprocesseur à jeu d'instruction étendu, ou complex instruction set computer (CISC) en anglais, désigne un microprocesseur possédant un jeu d'instructions comprenant de très nombreuses instructions mixées à des modes d'adressages complexes (plusieurs cycles d'horloge). Le microprocesseur à jeu d'instruction réduit (RISC)ou reduced instruction-set computer en anglais est une architecture matérielle de microprocesseurs. On l'a opposé à la fin des années 1980 et au début des années 1990 à l'architecture CISC (complex instruction-set computer). La sortie d'architectures hybrides comme le Pentium (CISC émulé par du RISC) a mis fin, par disparition de repères. 2. Structure interne d’un microprocesseur Architecture simplifiée d'un processeur central ➢ L'unité de contrôle (en anglais : Control Unit - CU) est la partie la 1|Page Fonctionnement des microprocesseurs : Exemple d’Architecture du microprocesseur : 6809 plus complexe du processeur. Elle se décompose en plusieurs parties dont elle doit assurer la coordination : ▪ ▪ ▪ ▪ ▪ ▪ Le processeur exécute une à une les instructions stockées dans la mémoire centrale. Pour cela, les instructions doivent être chargées dans le processeur. Elles le sont dans le registre d'instruction. Ce dernier contient donc l'instruction courante à exécuter. L'instruction à exécuter, chargée dans le registre d'instruction, est interprétée par le décodeur. Le séquenceur est alors capable d'ordonnancer les diverses opérations élémentaires du processeur, nécessaires pour exécuter l'instruction, grâce à un microprogramme. Le compteur ordinal est un registre particulier qui contient à tout instant, l'adresse de l'instruction suivante à exécuter. L'horloge est un dispositif qui détermine le rythme dans lequel sont exécutées les instructions. Elle fournit un signal régulier au processeur. Le registre d'état est, comme le compteur ordinal, un registre particulier. Il représente à tout moment l'état du processeur. En effet, divers évènements peuvent créer des situations « exceptionnelles ». Par exemple, l'addition de deux valeurs peut dépasser les capacités de représentation du processeur. Dans ce cas, un bit du registre d'état signale que le processeur est dans l'état « overflow ». fonctionnalité que l'ordinateur est capable d'exécuter des structures de contrôle contenant des conditions ▪ L'accumulateur est le registre de calcul par excellence. C'est par lui en effet que transitent toutes les données devant faire l'objet d'une opération ainsi que tous les résultats produits par calcul arithmétique. ▪ Comme ces opérations mettent généralement en jeu plusieurs termes et/ou états intermédiaires, l'accumulateur est secondé par un nombre variable de registres généraux destinés à la réalisation matérielle des calculs. ▪ ALU : Comme son nom l'indique, l'unité arithmétique et logique (en anglais : Arithmetic and Logic Unit - ALU) se charge de réaliser les opérations arithmétiques et logiques. Pour communiquer avec son environnement, le processeur dispose d'un ensemble de « bus » : ▪ ▪ ▪ Le bus d'adresses permet au processeur de désigner l'adresse d'un octet en mémoire. Selon le cas, il peut s'agir de l'adresse d'un ou de plusieurs octets à charger dans le processeur ou à stocker en mémoire. Le bus de données permet de désigner la valeur à charger dans le processeur ou à stocker en mémoire. Enfin, le bus de commande permet au processeur de désigner l'opération à effectuer, chargement dans le processeur ou stockage en mémoire. ➢ L'unité de calcul, comme son nom l'indique, effectue tous les calculs au sein du processeur. À côté des opérations arithmétiques, elle peut aussi procéder à des opérations logiques. C'est grâce à cette Exemple d’Architecture du microprocesseur : 6809 2|Page Fonctionnement des microprocesseurs : Exemple d’Architecture du microprocesseur : 6809 Le microprocesseur 6809 est un processeur 8 bits dont l'organisation interne est orientée 16 bits. Il est fabriqué en technologie MOS (Metal Oxyde Semiconductor)canal N et se présente sous la forme d'un boîtier DIL (Dual In Line) 40 broches. Il est monotension(5V). Il existe deux versions différenciées par l'horloge. le 6809 est rythmé par une horloge interne (f=1 MHZ, 1.5 MHZ et 2MHZ). Le 6809E est rythmé par une horloge externe. Ce dernier est adapté aux applications multiprocesseur. Il présente la particularité de pouvoir être synchronisé par une horloge extérieure. Compatibilité complète entre les 2 versions. communication avec le bus des données interne du microprocesseur. Chaque broche peut "piloter" 1 charge TTL (Transistor-Transistor Logic) et 8 entrées de circuits appartenant à la famille 680 0. Bus en logique 3 états. Le bus des adresses 16 bits (A0 à A15 ) Ces broches unidirectionnelles transfèrent l'adresse 16 bits fournie par le microprocesseur au bus d'adresse du système. Mêmes caractéristiques électriques que pour le bus des données. Bus en logique 3 états. les adresses sont validées sur le front montant de Q. Le bus de contrôle La broche Read/Write. Cette broche indique le sens de transfert des données sur le bus des données. Ligne à logique 3 états. R/W = 1 lecture en cours (D0 - D7 sont des entrées) R/W = 0 écriture en cours (D0 - D7 sont des sorties) Cette ligne est validée sur le front montant de Q. Les lignes d'état du bus : BA (Bus available) et BS (Bus state) Information qui permet de connaître l'état du microprocesseur à tout moment. Le bus des données 8 bits (Do à D7) Ces huit broches sont bidirectionnelles. Elles permettent la 3|Page Fonctionnement des microprocesseurs : Exemple d’Architecture du microprocesseur : 6809 1er cas : Le microprocesseur est en fonctionnement normal, il gère les bus d'adresses et de données. 2ème cas : le microprocesseur est en phase de reconnaissance d'interruption pendant deux cycles. Cet état correspond à la recherche des vecteurs d'interruption : Reset, NMI, IRQ, SW1,2 et 3. 3ème cas : Ce signal apparaît lorsque le microprocesseur rencontre l'instruction de synchronisation externe (niveau bas sur SYNC). Il attend alors cette synchronisation sur une des lignes d'interruption. Les bus sont en haute impédance pendant ce temps. Dernier cas : Correspond à l'arrêt du microprocesseur (niveau bas sur HALT). Le microprocesseur laisse la gestion des bus des données et des adresses à un circuit annexe (contrôleur de DMA). Les bus sont en haute impédance. La ligne BA au niveau haut indique que les bus sont en haute impédance. RESET du microprocesseur Un niveau bas sur la broche d'initialisation RESET entraîne une réinitialisation complète du circuit Conséquences : l'instruction en cours est arrêté le registre de pagination (DP) est mis à zéro les interruptions IRQ et FIRQ sont masquées l'interrruption non masquable NMI est désarmée Pour être active cette ligne doit être maintenue à un niveau bas durant un temps suffisamment long (plusieurs cycles d'horloge). Le P.C. est initialisé avec le contenu des vecteurs d'initialisation qui se trouvent aux adresses $FFFE et $FFFF. Ce contenu représente l'adresse du début du programme qui sera exécuté par le microprocesseur. Un niveau bas sur la broche HALT provoque l'arrêt du microprocesseur (mais à la fin de l'exécution de l'instruction en cours). Il n'y a pas perte des données. (BA = BS = 1) Dans ce cas : les demandes d'interruption IRQ et FIRQ sont inhibées les demandes d'accès direct (DMA) à la mémoire sont autorisée. les demandes d'interruptions RESET et NMI sont prises en compte mais leur traitement est différé 4|Page Fonctionnement des microprocesseurs : Exemple d’Architecture du microprocesseur : 6809 Architecture interne du 6809 : ➢ 2 registres pointeurs de pile U et S. U (User) est utilisé uniquement par le programmeur. S (System) par le système pour les opérations de sauvegarde en cas d'interruption ou de saut à un sous-programme (Adresse de retour). La pile est un emplacement ou le microprocesseur sauvegarde le contenu de ses registres internes pendant un certain temps. Elles opèrent en mode dernier entré-premier sorti (LIFO : Last In - First Out). Le pointeur de pile pointe vers la dernière entée effective de la pile. ➢ Un compteur programme PC ( Program Counter), sur 16 bits, pointe l'adresse mémoire à laquelle le 6809 doit exécuter une instruction. ➢ Un registre "codes conditions" CC, affichant en permanence l'état de ces bits. Le contenu du registre d'état est essentiellement conditionné par l'ALU. • Le bits C (Carry - BO) est positionné lors d'une opération arithmétique uniquement. Il est à 1 dans le cas d'une addition dont le résultat est supérieur à 255 ($FF) ou lorsque le résultat d'une soustraction (SUB, NEG, CMP, SBC) est positif. Dans le cas de l'instruction MUL (A multiplié par B, résultat sur 16 bits dans D), CARRY est égal au bit B7 de D. • Le bit V (oVerflow - B1) est le résultat d'un OU EXCLUSIF entre les retenues arithmétiques de B6 et de B7. Les opérations logiques de chargements, de stockages et de transferts positionnent V à 0. Seules les opérations comme ADD, ADC, SUB, SBC, NEG et CMP positionnent V à la valeur appropriée. • Le bit Z (Zéro - B2) est l'indicateur d'un résultat nul. Toutes les instructions positionnent ce bit. • Le bit N (NEGATIVE - B3) indique un résultat négatif. Pour toutes les instructions, N prend la valeur du bit de poids fort de l'opérande ou de l'accumulateur en mouvement. Il Le 6809 possède plusieurs registres utilisés pour la manipulation et le traitement des données. Ils sont: ➢ ➢ 2 accumulateurs de 8 bits A et B transformables en 1 accumulateur de 16 bits, D. Ils sont utilisés pour les instructions arithmétiques, logiques et de chargement de données 8 bits (ou 16 bits) en mémoire. Ils sont pour cela entièrement identiques. L'accumulateur D est en fait la concaténation de A et B, le registre A représentant les poids forts (bits 8 à 15) et B les poids faibles (bits 0 à 7). 2 registres d'index X et Y, sur 16 bits. Ils permettent d'adresser tout l'espace mémoire avec en plus la capacité d'être prédécrémenté ou post-incrémenté pour faciliter le traitement de variables en tables. 5|Page Fonctionnement des microprocesseurs : Exemple d’Architecture du microprocesseur : 6809 est très utile lors de travaux signés sur des entiers compris entre +127 et -128. ➢ • Le bit I (Interrupt -B4) autorise lorsque il est à 0 le traitement des interruptions IRQ et les dévalident quand il est à 1. Ce bit est uniquement manipulé par l'utilisateur mais est positionné à 1 par un RESET . • Le bit H (Half-carry - B5) est un bit de demi-retenue entre le quartet faible et le quartet fort de A ou B. • Le bit F (Fast interrupt - B6) conditionne le traitement de la ligne FIRQ. Il est à 0 après un RESET et dans ce cas FIRQ est dévalidée. Si l'utilisateur le force à 1, FIRQ est traitée. • Le bit E (B7) est l'indicateur de sauvegarde partielle lié à la ligne d'interruption FIRQ. Lorsqu'il est à 0 après un RESET seulement, une partie des registres internes sont sauvegardés pendant le traitement de l'interruption. Lorsqu'il est à 1, tous les registres sont sauvegardés dans la pile système. Un registre de "page mémoire" DP (Direct Page), sur 8 bits, est utilisé pour adresser des pages en mémoire. Une page est un bloc de 256 mots. Aussi les emplacements mémoire 0 à 255 forment la page 0 de la mémoire. Le 6809 possède un bus d'adresse de 16 bits, cela donne 256 pages. Le registre DP spécifie le numéro de page, c'est à dire les 8 bits de poids fort d'une adresse. Les 8 autres bits sont indiqués par l'instruction à exécuter. Le registre DP permet une exécution plus rapide des programmes. Il est automatiquement remis à 00 par un RESET. Modes d’adressages du 6809 : Le microprocesseur 6809 possède 59 instructions de base. Combinées avec le jeu des modes d’adressage (9 au total), elles fournissent 1464 codes opératoires différents. Les modes d'adressage sont : - l’adressage inhérent ou implicite - l’adressage immédiat - l’adressage étendu - l’adressage étendu indirect - l’adressage direct - l’adressage par registre - l’adressage indexé direct - l’adressage indexé indirect - l’adressage relatif ➢ L'adressage inhérent L’adressage inhérent est utilisé par les instructions qui agissent .seulement sur les registres internes du microprocesseur. Le code opératoire contient toute l'information nécessaire à l'exécution de l'instruction. Ex: ABX, ASLA, RORA, etc. ➢ L'adressage immédiat Le code opératoire est directement suivi par un opérande de 1 ou 2 octets. Ex: CMPA #$2B06 --> Comparaison de A avec la valeur hexa 2B06; ADDB #%1001100 --> Addition de la valeur binaire 1001100 à B. ➢ L'adressage direct Il permet en collaboration avec le registre DP de charger un accumulateur avec le contenu de n'importe quelle adresse mémoire. Ex: Avec DP = 00 LDA < $00 charge A avec le contenu de l'adresse $0000; CMPX < $35 compare X avec le contenu des adresses $0035 et $0036. 6|Page Fonctionnement des microprocesseurs : Exemple d’Architecture du microprocesseur : 6809 ➢ L'adressage étendu Il permet d'atteindre toute la mémoire mais avec un opérande à 2 octets. Ex: LDA $5100 --> charge A avec le contenu de l'adresse $5100. ➢ L'adressage étendu indirect C'est le contenu de l'adresse citée comme opérande qui va indiquer l'adresse mémoire. Ex: On a à l'adresse $0100 de la mémoire la valeur $35 et l'adresse $0101 contient la valeur $B7. LDA [$1000] ---> CHARGE A avec le contenu de l'adresse $35B7. ➢ L'adressage relatif court Il permet d'atteindre toute la mémoire par un déplacement de +127 ou -128 octets. Ex: A l'adresse $00FE on a l'instruction BRA $0110 Branchement à l'adresse $0110. ($0110(de BRA $0110) - $0100 (de PC) = $0010 cette valeur est ajoutée au compteur programme lors de l'exécution) ➢ L'adressage relatif long Même principe que l'adressage relatif court mais permet d'atteindre toute la mémoire par un déplacement de +32767 à 32768. Ex: LBEQ $2000 --> Branche le déroulement à l'adresse $2000 si le bit Z de CC est positionné. ➢ L'adressage indexé On utilise un registre d'index de 16 bits qui spécifie une base à laquelle on ajoute un déplacement signé de 5, 8 ou 16 bits. ➢ L'adressage indexé indirect Le registre d'index contient l'adresse effective de l'octet à manipuler. Jeux d’instruction du 6809 : BX ADCA, ADCB ADDA, ADDB ADDD ANDA, ANDB ANDCC ASL, ASLA, ASLB ASR, ASRA, ASRB BCC, LBCC BCS, LBCS BEQ, LBEQ BGE, LBGE BGT, LBGT BHI, LBHI BHS, LBHS BITA, BITB BLE, LBLE BLO, LBLO BLS, LBLS BLT, LBLT BMI, LBMI BNE, LBNE BPL, LBPL BRA, LBRA BRN, LBRN BSR, LBSR BVC, LBVC BVS, LBVS CLR, CLRA, CLRB CMPA, CMPB CMPD CMPS, CMPU CMPX, CMPY COM, COMA, COMB CWAI ajoute l"accumulateur B à X (non signé) addition mémoire-accumulateur avec retenue addition mémoire-accumulateur sans retenue addition mémoire avec accumulateur D (16 bits) ET logique mémoire-accumulateur ET logique du CCR avec la mémoire décalage à gauche décalage à droit branchement si pas de retenue (bit C) branchement si retenu (bit C) branchement su égal à zéro (bit Z) branchement si supérieur ou égale à zéro branchement si supérieur à zéro branchement si plus grand que branchement si plus grand ou égale à test d'un bit mémoire-accumulateur branchement si inférieur ou égale à zéro branchement si plus petit que branchement si plus petit ou égale à branchement si inférieur à zéro branchement su négatif (bit N) branchement su différent de zéro (bit Z) branchement si positif (bit N) branchement inconditionnel branchement n'ayaint jamais lieu ?????? branchement à un sous-programme branchement si pas de dépassement (bit V) branchement si dépassement (bit V) mise à zéro mémoire ou accumulateur comparaison mémoire-accumulateur comparaison mémoire-accumulateur D (16 bits) comparaison pointeur de pile-mémoire comparaison index-mémoire complémentation mémoire ou accumulateur ET logique di CCR et attente d'interruption 7|Page Fonctionnement des microprocesseurs : Exemple d’Architecture du microprocesseur : 6809 DAA DEC, DECA, DECB EORA, EORB EXG D,R EXG R1,R2 INC, INCA, INCB JMP JSR LDA, LDB LDS, LDU LDX, LDU LEAS, LEAU LEAX, LEAY LSL, LSLA, LSLB LSR, LSRA, LSRB MUL NEG, NEGA, NEGB NOP ORA, ORB ORCC PSHS PSHU PULS PULU ROL, ROLA, ROLB ROR, RORA, RORB RTI RTS SBCA, SBCB SEX STA, STB STD STS, STU STX, STY ajustement décimale de A décrémentation de 1 mémoire ou accumulateur OU exclusif mémoire-accumulateur echange de D et de R échange de R1 et R2 (R1, R2 = A, B, CC, DP) incrémentartion de 1 mémoire ou accumulateur saut inconditionnel saut à un sous-programme chargement d'un accumulateur à partie de la mémoire chargement de la pile à partie de la mémoire chargement de l'ildex à partie de la mémoire chargement de l'adresse effective dans le pointeur de pile chargement de l'adresse effective dans l'index décalage logique à gauche mémoire ou accumulateur décalage logique à droite mémoire ou accumulateur multiplication non signée (AxB=D) négation mémoire ou accumulateur pas d'opération réalisée OU logique mémoire-accumulateur OU logique du CCR avec la mémoire SUBA, SUBB SUBD SW11, SW12, SW13 SYNC TFR D,R TFR R,D TFR R1,R2 TST, TSTA, TSTB soustraction accumulateur mémoire sans retenue soustraction D-mémoire (16 bits) interruption par logiciel synchronisation avec une interruption transfert de D dans R transfert de R dans D transfert de R1 dans R2 test d'une mémoire ou accumulateur rotation à gauche mémoire ou accumulateur rotation à droite mémoire ou accumulateur retour d'interruption retour de sous-programme soustraction accumulateur-mémoire avec retenue extension du signe B au travers de l'accumilateur A stockage accumulateur en mémoire stockage de D en mémoire (16 bits) stockage de pointeru de pile en mémoire stockage de l'index en mémoire 8|Page