Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base Chapitre IV Conception d’un processeur de base I Introduction : Les éléments vus dans les chapitres I , II, et III seront utilisés dans ce chapitre, afin de concevoir un processeur de base, possédant une structure simple, mais complète. Un processeur classique est principalement réalisé à partir de circuits logiques ; le chapitre I nous a permis de revoir, et recenser les circuits combinatoires, et séquentiels de base essentiels pour la réalisation de tout circuit logique. Dans un processeur, ou unité centrale de traitement, les informations stockées dans les registres sont traitées, et subissent des opérations arithmétiques, logiques, de transfert, ou de décalage ; le langage de transfert inter registres a été défini, et il a été montré comment les circuits réalisant ces différentes opérations, sont décrits par le langage symbolique LTR. Le chapitre III a montré différentes organisations classiques de processeurs à usage général concernant les structures de bus, les modes d’adressage, l’organisation des registres, les répertoires d’instructions… Dans ce chapitre des choix , des hypothèses préliminaires seront faits concernant l’organisation, le répertoire d’instructions et la puissance du processeur à concevoir. Le langage de transfert inter registres, décrira les circuits des opérations qui seront exécutées à chaque impulsion d’horloge , pour chaque instruction. Les différents modules constituant le processeur de base seront construits pour être ensuite assemblés pour former le processeur de Choix d’une organisation base. Chapitre 111 Choix du type de processeur et Hypothèses Initiation au langage de transfert inter Chapitre 11 registre LTR Description de ses micro opérations en LTR Chapitre 1 Rappel des principaux circuits Construction du circuit Option contrôle Etapes de conception et de réalisation du Processeur de base 1 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base II Les hypothèses Le processeur de base étant un processeur didactique, il ne sera pas nécessaire de le doter de puissance, vu que cela compliquerait ses circuits (on peut noter cependant, qu’un processeur puissant tel que le Pentium, ou le Power PC, est constitué d’unités relativement simples fonctionnant en parallèle ; le principe adopté pour la conception du processeur de base reste donc valable et sera accompagné d’outils de CAO de plus en plus disponibles et modernes). Les hypothèses suivantes seront donc émises 1. L’organisation des registres : on choisira la plus simple, soit l’organisation à Accumulateur. 2. La mémoire centrale : sera de 4Kx16 3. Organisation de bus : Le registre MAR sera utilisé pour gérer le bus d’adresse de la mémoire Le registre MDR sera utilisé pour gérer le bus de données de la mémoire Le bus d’Entrée/Sorties : sera géré en entrée par le registre d’entrées INPR et en sortie par le registre de sortie OUTR et sera de 8 bits. 4. Les modes d’adressage : on en choisit 2 : le mode Direct et le mode indirect (Remarque : un troisième mode, immédiat, sera introduit plus tard, car, bien que nécessaire, il ne respecte pas certaines des hypothèses émises dans ce paragraphe). 5. Une instruction occupe un seul mot, ou case mémoire. 6. Un répertoire d’instructions : réduit mais complet, permettra d’exécuter n’importe quelle tâche, moyennant le programme adéquat ; il sera défini plus loin dans ce chapitre, et sera composé d’instructions: arithmétiques logiques de transfert de décalage d’entrées / Sorties Option contrôle 2 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base II Conséquences des Hypothèses 1. La taille des registres Le processeur de base est constitué des éléments suivants : Le processeur possède une organisation à accumulateur : donc l’UAL recevra à sa première entrée, l’accumulateur, et à sa seconde entrée le MDR (chargé de la donnée lue de la mémoire. La RAM est de 4Kx16 : elle possède donc 4x1024 mots de 16 bits, soit 12 lignes d’adresse, et 16 lignes de données. Ainsi tous les registres d’adresse (PC, MAR) seront à 12 bits, et tous les registres de données, seront à 16 bits. Une instruction est dans un seul mot de la mémoire qui est de 16 bits : le registre d’instructions RI est sur 16 bits. Le bus d’E/S est de 8 bits : les registres INPR et OUTR sont donc sur 8 bits 1 16 1 AC 1 16 MDR 12 PC 1 12 MAR 1 8 INPR 1 8 OUTR 1 Périphériques 16 RI Unité De contrôle Unité centrale Principaux éléments du processeur de base Option contrôle 3 Mémoire centrale Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base 2. Le format des instructions Le processeur ayant une organisation à AC, possède alors, une seule zone d’adresse comme le montre la figure ci-dessous :. 1 M OP 12 ADR M : est sur un seul bit puisqu’on a 2 modes d’adressage ; on l’appellera I pour le processeur de base. La mémoire étant de 4Kx16, les adresses sont de 12 bits, et donc la zone d’adresse occupera 12 bits. Le code OP occupera les bits restants, soit 3 bits Problème : On peut à première vue définir uniquement 23 = 8 instructions, ce qui ne permettra pas la création d’un répertoire d’instructions complet Solution : On utilise le fait qu’on puisse classer les instructions selon trois types : Type 1 : Instructions à référence mémoire ou IRM : ces instructions ont besoin d’un opérande en mémoire, et doivent donc indiquer son adresse, et le mode d’adressage à utiliser. Les 16 bits de l’instruction sont utilisés. Exemple : ADD M(x) ; AC<- (AC)+ M(x) où x est l’adresse de l’opérande Type 2 : Instructions à référence registre ou IRR : ces instruction n’ont besoin que des informations stockées dans les registres de l’unité centrale. Elles n’ont pas besoin de spécifier d’adresse ni de mode d’adressage. Les bits de la zone d’adresse, et du mode d’adressage peuvent avoir une autre fonction. Exemple : CLA ; AC <- 0 Type 3 : les instructions d’entrée/sortie ou IES : Ces instructions n’ont pas besoin de spécifier d’adresse ni de mode d’adressage, puisqu’elles permettent de s’adresser en entrée ou en sortie aux périphériques. Exemple : IN portA ; AC <- donnée provenant d’un périphérique par le port A On remarque donc que l’adresse et le bit de mode ne sont pas demandés par toutes les instructions. Cette propriété sera utilisée ci-dessous pour codifier les instructions. Option contrôle 4 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base IV Distinction et codification des IRM, IRR, et IES 1. Distinction des IRM, IRR, IES C’est le code OP qui doit permettre à l’unité de contrôle de reconnaître une instruction de façon unique. On utilise une des 8 combinaisons du code OP, 111 par exemple, pour différencier les IRM des autres instructions : Si OP = 111 alors l’instruction n’est pas une IRM . Si OP ≠ 111 : l’instruction est une IRM, et les 16 bits de l’instruction sont utilisés, I pour le mode d’adressage, OP 3 bits pour définir une instruction IRM, et les 12 bits restants spécifient l’adresse à utiliser. Si OP = 111 : l’instruction n’est pas une IRM ; elle est soit de type IRR soit IES ; puisque le bit de mode I est libre on l’utilise pour différencier les 2 types Si I = 0 c’est une IRR : et les 12 bits de la zone d’adresse sont utilisés pour déterminer laquelle. On voit qu’il est possible de définir 212 instructions différentes, on se contentera d’en définir 12. Si I= 1 c’est une IES : et les 12 bits de la zone d’adresse sont utilisés pour déterminer laquelle. On voit qu’il est possible de définir 212 instructions différentes , on se contentera d’en définir 4. O N OP=111 IRM O I=1 N I IRR IE/S 1 111 OP≠111 OP IES 0 111 OP IRR Distinction entre les IRM, IRR, et IES Option contrôle 5 ADR Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base 2. Définition et codification des instructions On peut définir, d’après ce qui a été entrepris ci-dessus : 7 instructions IRM à exécuter en mode direct ou indirect :OP = 000 à 110 12 IRR : OP= 111, I=0, ADR= 2n ; n = 0 à 11 (un seul des bits 5 à 16 de l’instruction est égal à 1 à la fois). 4 IES ; OP= 111, I=1, ADR= 2n ; n = 0 à 3 (un seul des bits 5 à 8 de l’instruction est égal à 1 à la fois). IRM IRR IES AND :opération et CLA : MAZ A INP : entrée ADD : addition CLE : MAZ E OUT : sortie LDA : lecture mémoire CMA: complément A SFI : saut si FGI=0 STA : écriture mémoire CME : complément E SFO : saut si FGO=0 BIN :branchement incond INC : incrément BSA : appel CIR : dec circ drte ISZ : incr et saut si 0 CIL :dec circ gche SNA : saut si AC < 0 SZA: saut si AC = 0 SPA: saut si AC > 0 SZE: saut si AC = 0 HLT : arrêt Les 23 instructions du processeur de base Les 23 instructions ainsi définies représentent un répertoire complet (incluant les opérations arithmétiques, logiques, de décalage, de transfert, et d’entrée/sortie), mais minimal, permettant de réaliser tout traitement possible, directement ou moyennant un programme. On pourra par exemple exécuter toute fonction logique puisqu’on a AND et NOT (CMA), Ou bien la multiplication, puisque l’on a l’addition et le décalage... Le tableau suivant montre les codes affectés à chaque instruction comme spécifié dans la section précédente. Option contrôle 6 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base Répertoire d’instructions du processeur de base 1. Les instructions à référence Mémoire IRM : Code Hexadécimal I=0 0 1 2 3 4 5 6 I=1 8 9 A B C D E Adresse AD AD AD AD AD AD AD Instruction Description AND AD ADD AD LDA AD STA AD BIN AD BSA AD ISZ AD AC (AC) AND M(AD) AC (AC) + M(AD) AC M(AD) M(AD) (AC) PC AD; branchement inconditionnel Branchement et stock adresse de retour Incrémentation de M(AD), et saut si 0 2. Les instructions à référence Registre IRR : 3. Code Hexadécimal Instruction 7800 7400 7200 7100 7080 7040 7020 7010 7008 7004 7002 7001 CLA CLE CMA CME CIR CIL INC SPA SNA SZA SZE HLT Description AC 0 E0 AC AC’ E E’ Rotation de AC avec E à droite Rotation de AC avec E à gauche AC (AC) + 1 Saut si (AC) > 0 Saut si (AC) < 0 Saut si (AC) = 0 Saut si E = 0 S 0 ; arrêt de l’ordinateur Les instructions d’entrée/sortie : Code Hexadécimal Instruction F800 F400 F200 F100 F080 INP OUT SFI SFO LDI DATA Option contrôle 7 Description AC (9-16) INPR , FGI 0 OUTR AC (9-16), FGO 0 Saut si FGI = 1 Saut si FGO = 1 AC DATA (mode immédiat) Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base V Signaux de synchronisation et cycles du processeur de base : 1. Détermination des cycles du processeur de base : La fonction d’un processeur consiste à exécuter les programmes stockés dans la mémoire centrale. Etant donné un programme rangé en mémoire centrale, chacune de ses instructions est lue dans le registre d’instruction RI, puis décodée par l’unité de contrôle qui génère les fonctions de contrôle Fi, en réponse aux ordres donnés par l’instruction, et les envoie activer différentes tâches dans l’unité de traitement. Un premier cycle sera nécessaire pour la lecture de l’instruction : le cycle de lecture Un second cycle sera nécessaire s’il existe un besoin de lire l’adresse de l’opérande, si seule l’adresse de l’adresse de l’opérande est donnée (en mode indirect): le cycle indirect Un troisième cycle devra être exécuté quelque soit l’instruction : le cycle d’exécution Ce cycle est le même pour toutes les instructions RI <- instruction L’unité de contrôle décode (RI) L’unité de contrôle envoie les ordres (les Fi)à l’unité de traitement Cycle de lecture L’instruction est lue de la mémoire Cycle indirect (si l’adresse de l’opérande doit être lue de la mémoire) Ce cycle est propre à chaque instruction + Cycle d’exécution Exécution d’une instruction IRM, IRR, ou IES 2. Détermination du nombre d’impulsion d’horloge par cycle : Initialement l’adresse de l’instruction à exécuter est dans le PC L’instruction doit être lue de la mémoire et stockée dans le RI Elle sera ensuite décodée et exécutée D’autre part une des hypothèses émises pour la conception du processeur de base stipule que : Toute adresse (de donnée ou d’instruction) doit passer par le MAR, puisqu’il est le seul registre qui gère le bus d’adresse de la mémoire. Toute information (donnée ou instruction), provenant de, ou allant vers la mémoire doit passer par MDR, puisque c’est le seul registre connecté au bus de données de la mémoire. Option contrôle 8 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base La lecture de l’instruction dans RI doit donc respecter les étapes suivantes : MAR<-(PC) ; pour activer l’adresse de l’instruction. MDR<- M(MAR) ; l’instruction est d’abord lue dans le MDR, puisqu’il est le seul registre connecté au bus de données de la mémoire RI<- (MDR) ; l’instruction est ensuite transférée vers RI pour être décodée par l’unité de contrôle. MAR<-(PC) MDR<-(MAR) RI<-( MDR) Au moins trois impulsions d’horloge sont donc nécessaires pour le déroulement du cycle de lecture. Une quatrième impulsion servira à déterminer si un cycle indirect est nécessaire pour lire l’adresse de l’opérande (cas d’une IRM en mode indirect), ou si l’on passe directement au cycle d’exécution. Afin de simplifier le circuit des signaux de synchronisation, la durée de tous les cycles : lecture, indirect et tous les cycles d’exécution sera fixée à quatre impulsions d’horloge . Si un nombre inférieur est nécessaire à l’exécution d’un cycle, des impulsions ‘vides’ seront exécutées. VI Organigramme de contrôle des cycles Lors de l’exécution de tout programme stocké en mémoire centrale, les instructions sont lues puis décodées et exécutées une à une. Pour chaque instruction, le cycle de lecture vient toujours en premier, suivi : du cycle d’exécution si l’instruction est de type IRR, IES, ou IRM en mode direct ou du cycle indirect si l’instruction est de type IRM en mode indirect. Un cycle indirect est toujours suivi par le cycle d’exécution. Un cycle d’exécution est toujours suivi par le cycle de lecture de l’instruction suivante. Une IRM en mode indirect est reconnue par OP 111 et le bit de mode I=1. Si OP 111 et I = 0 c’est une IRM en mode direct et si OP= 111 l’instruction est une IRM ou une IES. Le code OP et le bit de mode I permettent de déterminer par quel cycle, Indirect ou d’exécution, le cycle de lecture doit être suivi. A partir de ce fonctionnement, des variables seront définies, pour décrire et contrôler le séquencement des cycles. Option contrôle 9 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base Il existe trois cycles : l’état de deux bascules F et R suffira à indiquer dans quel cycle le processeur de base se trouve de la manière suivante : FR Cycle variable 00 Lecture C0 01 Indirect C1 10 exécution C2 11 Interruption* C3 FQ C0 C1 C2 C3 DCD 2x4 RQ Puisque chaque cycle dure plusieurs impulsions d’horloge, il doit être mémorisé, d’où l’utilisation des bascules F et R. Les variables Ci seront utilisée par l’unité de contrôle pour la génération des fonctiond de contrôle. *: Un quatrième cycle, d’interruption peut être défini, et sera décrit plus tard , afin de permettre la génération d’interruptions du processeur, par des périphériques ou des programmes. Le bit I représente le bit D1 de l’instruction Le code OP représente les bits D2D3 et D4 de l’instruction. Des variables q0 à q7 activées une seule à la fois sont générées à partir du code OP à l’aide d’un décodeur 3x8 afin d’indiquer le type d’instruction, ou l’instruction IRM à exécuter. I OP ADR q0 q1 DCD 3x8 q7 Les variables ainsi définies : F, R, q7, et I et déterminent complètement, et de façon unique le cycle dans lequel se trouve le processeur de base à chaque instant. Option contrôle 10 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base si q7 =1 alors si I=0 l’instruction est de type IRR, et si I = 1 elle est de type IES. Et si q7 =0 alors l’instruction est de type IRM, et I indique si elle est en mode direct ou pas. Tout cela nous permet de déduire l’organigramme de contrôle des cycles suivant : F 0 R0 (exécution) 10 FR 00 (lecture) 01 (indirect) Lecture de l’adresse de l’opérande Lecture de l’instruction 0 q7 1 1 I 0 0 1 IRM IES F 0 I q7 1 0 IRR F 1 R0 R 1 F 1 F 1 En conclusion : Le cycle de lecture a besoin de 4 impulsions d’horloge et il est caractérisé par C0=1. Son rôle est de lire l’instruction et la stocker dans RI, et de déterminer la nature du cycle suivant. Le cycle indirect est caractérisé par C1=1 ; il dure 4 impulsion d’horloge même s’il ne les utilise pas toutes. Son rôle est de lire l’adresse de l’opérande pour une IRM en mode indirect. Le cycle d’exécution est caractérisé par C1=1 ; il dure également 4 impulsions d’horloge, il y en a un pour chaque instruction. La durée des cycle : a été fixée à 4 impulsions d’horloge pour simplifier le circuit. Option contrôle 11 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base VII Description des cycles du processeur de base : Le processeur de base ainsi conçu , possède : Un cycle de lecture Un cycle indirect 23 cycles d’exécution un 24ème cycle d’exécution : celui de l’instruction ‘LDI X’, qui est une instruction de chargement de l’accumulateur en mode immédiat. Le mode immédiat n’a pas été défini précédemment parce qu’il ne respecte pas les hypothèses 4 et 5 émises pour la conception du processeur de base. Lors de la détermination des cycles du processeur de base, il sera nécessaire de se rappeler les conséquences de l’hypothèse 3 :Toutes les adresses doivent passer par le MAR, et toutes les données à écrire ou à lire de la mémoire doivent passer par le MDR. 1. Le cycle de lecture : c0 = 1 Sa fonction est la lecture de l’instruction vers laquelle pointe le PC dans le registre d’instruction RI, et le passage au cycle indirect ou d’exécution selon que l’instruction est une IRM en mode indirect ou pas. c0t0 : c0t1 : c0t2 : (q7I) c0t3 : (q7+Ï) c0t3 : MAR(PC) MDRM(MAR), PC(PC)+1 RI (MDR) R 1 F 1 Cycle de lecture (PC)=X 1 MAR X instruction MAR(PC) 2 MDR MDRM(MAR), PC(PC)+1 3 RI mémoire RI (MDR) O I=1 q7=0 N N O R 1 Option contrôle 12 F 1 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base 2. Le cycle indirect : c1 = 1 Sa fonction est la lecture de l’adresse de l’opérande dans le cas où l’instruction lue dans le RI, est de type IRM en mode indirect. Il suit immédiatement le cycle de lecture et est suivi du cycle d’exécution. c1t0 : c1t1 : c1t2 : c1t3 : MAR RI [ADR] MDRM(MAR) Rien F 1, R 0 I OP ADR= Y RI(=MDR au début du cycle) ADR représente l’adresse de l’adresse de l’opérande (Y), et X, le contenu de Y représente l’adresse de l’opérande. Cycle indirect MAR Y X MAR RI [ADR] 2 l’opérande MDR I OP X opérande l’opérande mémoire Y MDRM(MAR) 1 F 1, R 0 Vers le cycle d’exécution 3. Les cycles d’exécution : c2 = 1 Il en existe 24 , le cycle de l’instruction LDI inclus 3. 1 L’instruction AND : q0 = 1 Le 1er opérande de l’instruction se trouve dans AC, et le second se trouve en mémoire. L’adresse du deuxième opérande se trouve dans MDR, et dans RI, si l’instruction IRM est exécutée en mode direct ; elle se trouve dans MDR, si l’instruction IRM est exécutée en mode indirect (puisqu’on arrive au cycle d’exécution à partir du cycle indirect décrit ci dessus). q0c2t0 : q0c2t1 : q0c2t2 : c2t3 : MAR MDR [ADR] MDRM(MAR) AC(AC) (MDR) F 0 MAR X opérande X 2 l’opérande 3 AC X MDR AND Option contrôle 13 mémoire 1 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base Cycle d’exécution AND MAR MDR [ADR] MDRM(MAR) AC(AC) (MDR) F 0 Vers le cycle de lecture 3. 2 L’instruction ADD : q1 = 1 q1c2t0 : q1c2t1 : q1c2t2 : c2t3 : MAR MDR [ADR] MDRM(MAR) AC(AC) (MDR) F 0 Cycle d’exécution ADD MAR X opérande X 2 l’opérande MAR (MDR) [ADR] 3 AC MDRM(MAR) X MDR mémoire 1 AC(AC) + (MDR) F 0 ADD Vers le cycle de lecture 3. 3 L’instruction LDA : q2 = 1 :lecture d’un mot de la mémoire dans AC q2c2t0 : q2c2t1 : q2c2t2 : c2t3 : MAR MDR [ADR] MDRM(MAR) AC (MDR) F 0 Cycle d’exécution LDA MAR X opérande X 2 l’opérande MAR (MDR) [ADR] 3 AC MDRM(MAR) X MDR mémoire (AC) (MDR) 1 F 0 A<-B Vers le cycle de lecture Option contrôle 14 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base 3. 4 L’instruction STA : q3 = 1 : stockage du contenu de AC en mémoire q3c2t0 : q3c2t1 : q3c2t2 : c23 t3 : MAR MDR [ADR] MDR (AC) M(MAR) (MDR) F 0 Cycle d’exécution STA MAR X opérande X l’opérande 2 MAR (MDR) [ADR] 3 AC MDR (AC) X mémoire MDR M(MAR) (MDR) 1 F 0 Vers le cycle de lecture 3. 5 L’instruction BIN : q4 = 1 : branchement inconditionnel vers l’adresse X q4c2t0 : q4c2t1 : q4c2t2 : c2t3 : (PC) MDR [ADR] rien rien F 0 Cycle d’exécution BIN PC X instruction X l’opérande AC F 0 X MDR (PC) MDR [ADR] mémoire 1 Vers le cycle de lecture 3. 6 L’instruction BSA : q5 = 1 : branchement avec stockage d’adresse de retour L’instruction ‘BSA m’ effectue les opérations suivantes la valeur X+1 est stockée dans l’adresse m (BSA est stockée dans l’adresse X) un branchement est effectué vers l’adresse m+1 Elle effectue un appel vers le sous programme rangé à partir de l’adresse m+1, et doit donc stocker l’adresse de retour (X+1) (ici, dans m). q5c2t0 : q5c2t1 : q5c2t2 : c2t3 : MAR MDR[ADR] , MDR[ADR] (PC), PC MDR[ADR] M(MAR) (MDR) PC(PC)+1 F 0 Option contrôle 15 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base Durant la première impulsion d’horloge, m qui se trouve dans la partie adresse de l’instruction (et donc de MDR), est transféré vers : le PC :pour que le PC puisse être incrémenté, et que le branchement vers l’adresse m+1 soit réalisé. Et le MAR : pour que l’adresse de retour puisse être stockée dans la case mémoire m. [En effet, de manière générale, lors de l’appel d’un sous programme, par une instruction qui se trouve dans l’adresse X, le retour du sous programme (après son exécution) est effectué vers l’adresse X+1 (voir figure ci-dessous).] Le PC qui pointait au début de l’impulsion d’horloge vers l’instruction suivante à exécuter (située à l’adresse X+1) est transféré vers MDR Au début de la 1ère impulsion : A la fin de la 1ère impulsion : MDR contient m MDR contient X+1, PC contient X+1, PC contient m, MAR quelconque et MAR contient m ème Durant la 2 impulsion, le contenu de MDR (X+1) est stocké dans m, Enfin, pendant la 3ème impulsion, le PC est incrémenté et pointe vers l’instruction située à l’adress m+1 (le début du sous programme). L’adresse de retour , X+1, doit être sauvegardée X X+1 I1 I2 . : Appel Sousprog (adr Y) Instr exec après sousprog . : suite du prog principal Programme principal FIN Y Début du sous programme . . Retour Sous Programme Pour l’instruction d’appel BSA, Y=m+1 , et l’adresse de stockage de l’adresse de retour est m 1 INC PC 3 MAR BSA Xm X X+1 l’opérande 1 AC X+1 m m+1 Début souprog m MDR 2 Cycle d’exécution BSA MAR MDR[ADR] , MDR[ADR] (PC), PC MDR[ADR] M(MAR) (MDR) 1 mémoire PC (PC)+1 F 0 Vers le cycle de lecture Option contrôle 16 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base 3. 7 L’instruction ISZ : q6 = 1 : Incrément et saut si Zéro l’instruction ‘ISZ AD’ incrémente le contenu de la case mémoire d’adresse AD, puis teste son nouveau contenu ; S’il est égal à zéro alors le PC est incrémenté. Dans ce cas, si l’instruction ISZ est rangée à l’adresse X, l’instruction qui la suit en X+1 ne sera pas exécutée ; c’est l’instruction en X+2 qui le sera. Si le nouveau contenu de AD n’est pas nul alors l’instruction en X+1 est exécutée normalement. Cycle d’exécution INC si n+1=0 PC 4 ISZ MAR ISZXAD X si n+10 X+1 Instr l’opérande Instr si n+1=0 X+2 1 2 INC AC 3 MAR MDR[ADR] n AD AD (MDR) M(MAR) (n+1) MDR MDR (MDR)+1 4 mémoire q6c2t0 : q6c2t1 : q6c2t2 : q6c2t3 : MAR MDR [ADR] MDRM(MAR) MDR(MDR)+1 M(MAR) (MDR), si (MDR)=0 alors PC(PC)+1, F 0 M(MAR) (MDR), F 0 O PC (PC)+1 (AD)=0 N Vers le cycle de lecture L’instruction ISZ est utilisée pour implémenter deux fonctions différentes en programmation : Le compteur : AD contient un nombre d’itérations maximal, qui sera decrémenté jusqu’à la valeur 0 (boucles). Le pointeur : AD est une adresse qui contient l’adresse de l’opérande à utiliser (adressage indirect). 3. 8 L’instruction CLA : q7 = 1, I=0, et D5=1 q7ĪD5c2t0 Cycle d’exécution CLA AC 0 AC 0 Vers le cycle de lecture 3. 9 L’instruction CLE : q7 = 1, I=0, et D6=1 q7ĪD6c2t0 Cycle d’exécution CLE E 0 E est la bascule de retenue de AC E 0 Vers le cycle de lecture Option contrôle 17 Chapitre IV TEC586 Microcalculateurs 3. 9 L’instruction CMA : q7 = 1, I=0, et D7=1 q7ĪD7c2t0 Conception d’un processeur de base Cycle d’exécution CMA AC (AC) AC (AC) Vers le cycle de lecture 3. 11 L’instruction CME : q7 = 1, I=0, et D8=1 q7ĪD8c2t0 E E Cycle d’exécution CME E E Vers le cycle de lecture 3. 12 L’instruction CIR : q7 = 1, I=0, et D9=1 q7ĪD9c2t0 CIR EAC Cycle d’exécution CIR CIR EAC E AC Vers le cycle de lecture Le contenu de AC subit un décalage circulaire à droite, à travers la bascule E 3. 13 L’instruction CIL : q7 = 1, I=0, et D10=1 q7ĪD10c2t0 CIL EAC Cycle d’exécution CIL CIL EAC E AC Vers le cycle de lecture Le contenu de AC subit un décalage circulaire à gauche, à travers la bascule E 3. 14 L’instruction INC : q7 = 1, I=0, et D11=1 q7ĪD11c2t0 EAC (AC)+1 Cycle d’exécution INC EAC (AC)+1 Option contrôle 18 Vers le cycle de lecture Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base 3. 15 L’instruction SPA : q7 = 1, I=0, et D12=1 Cycle d’exécution q7ĪD13c2t0 Si AC(1) = 0 alors PC(PC)+1 SPA INC si AC(1)=0 PC 4 O X X+1 X+2 AC(1) AC(1)>0 SPA Instr si AC0 Instr si AC>0 PC (PC)+1 N Vers le cycle de lecture AC MDR mémoire Si (AC) est positif (AC(1) est le bit de signe dans ce cas), alors le contenu de PC est incrémenté, et l’instruction qui suit SPA est sautée. 3. 16 L’instruction SNA : q7 = 1, I=0, et D13=1 q7ĪD13c2t0 Si AC(1) = 1 alors PC(PC)+1 INC si AC(1)=1 Cycle d’exécution PC 4 X X+1 X+2 AC(1) SNA SNA Instr si AC0 Instr si AC<0 O PC (PC)+1 AC AC(1)<0 N MDR Vers le cycle de lecture mémoire 3. 17 L’instruction SZA : q7 = 1, I=0, et D14=1 q7ĪD14c2t0 Si (AC) = 0 alors PC(PC)+1 INC si AC=0 PC 4 Cycle d’exécution X X+1 X+2 AC(1) SZA SZA Instr si AC0 Instr si AC=0 O AC PC (PC)+1 MDR (AC)=0 N Vers le cycle de lecture mémoire Option contrôle 19 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base 3. 18 L’instruction SZE : q7 = 1, I=0, et D15=1 q7ĪD15c2t0 SI E = 0 alors PC(PC)+1 INC si E=0 Cycle d’exécution PC 4 X X+1 X+2 E SZE SZE Instr si E0 Instr si E=0 O E=0 PC (PC)+1 AC MDR N Vers le cycle de lecture mémoire 3. 19 L’instruction HLT : q7 = 1, I=0, et D16=1 q7ĪD16c2t0 Cycle d’exécution HLT S 0 S est une bascule mise à 1 par un bouton poussoir ou un interrupteur. Elle peut être mise à 0 par un bouton ou par programmation pour arrêter l’exécution du programme. 3. 20 L’instruction INP : q7 = 1, I=1, et D5=1 q7I D5c2t0 Vers le cycle de lecture Cycle d’exécution INP AC(9-16)(INPR) ,FGI 0 La donnée de 8 bits reçue par le registre d’entrée INPR, est transférée vers les bits 9 à 16 de AC . Le bit d’état FGI est mis à 0 pour indiquer que la donnée a été lue. AC(9-16) S 0 AC(9-16) INPR, FGI 0 Vers le cycle de lecture INPR 3. 21 L’instruction OUT : q7 = 1, I=1, et D6=1 q7I D6c2t0 OUTRAC(9-16) ,FGO 0 La donnée de 8 bits rangée dansles bits 9 à 16 de AC , est transférée vers le registre de sortie OUTR. Le bit d’état FGO est mis à 0 pour indiquer que la donnée a été lue. AC(9-16) Option contrôle OUTR Cycle d’exécution OUT OUTR AC(9-16), FGO 0 Vers le cycle de lecture 20 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base 3. 22 L’instruction SFI : q7 = 1, I=1, et D7=1 q7I D7c2t0 Cycle d’exécution Si FGI = 1 alors PC(PC)+1 SFI INC si FGI=0 PC 4 O X X+1 X+2 FGI FGI=1 SFI Instr si FGI1 Instr si FGI=1 PC (PC)+1 N Vers le cycle de lecture AC MDR mémoire 3. 23 L’instruction SFO : q7 = 1, I=1, et D8=1 q7I D8c2t0 Si FGO = 1 alors PC(PC)+1 INC si FGO=0 Cycle d’exécution PC 4 X X+1 X+2 FGO SFO SFO Instr si FGO1 Instr si FGO=1 O AC PC (PC)+1 MDR FGO=1 N Vers le cycle de lecture mémoire Option contrôle 21 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base 3. 24 L’instruction LDI : q7 = 1, I=1, et D9=1 Elle s’écrit : ‘LDI donnée’ C’est une instruction de chargement de AC en mode immédiat. La donnée étant sur 16 bits, et étant contenue dans l’instruction elle même, il est nécessaire de prévoir un autre mot pour le code OP. Cette instruction sera donc sur deux mots, et ne respecte pas l’hypothèse selon laquelle toute instruction du processeur de base est contenue dans un seul mot mémoire. Elle est cependant indispensable à l’autonomie du processeur de base si ce dernier venait à être construit. q7I D9c2t0 q7I D9c2t1 q7I D9c2t2 MAR(PC) MDRM(MAR), PC(PC)+1 AC (MDR) Instruction LDI Cycle d’exécution LDI PC 1 MAR MAR (PC) OP LDI X donnée MDRM(MAR) l’opérande 2 (AC) (MDR) 3 AC MDR Vers le cycle de lecture mémoire A<-B Tous les cycles du processeurs de base Lecture Indirect 7 cycles d’exécution IRM 12 cycles d’exécution IRR 4 cycles d’exécution IES le cycle d’exécution de LDI sont décrits en langage de transfert inter registres LTR dans la figure ci dessous. Le mot de contrôle constitué des Fi (i=1 à F49) est ainsi défini . Ceci permettra la construction de l’unité de contrôle et du circuit de contrôle de chaque module (registres, bascules, UAL, …) constituant le processeur de base. Option contrôle 22 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base Fonctions de contrôle, et cycles du processeur de base en LTR Cycle LECTURE INDIRECT I AND I 000ADR ADD I 001ADR LDA I 010ADR STA I 011ADR BIN BSA I 100ADR I 101ADR R M ISZ I R R I E S CLA CLE CMA CME CIR CIL INC SPA SNA SZA SZE HLT INP OUT SFI SFO LDI Option contrôle Fonction de contrôle F1 c0t0 F2 c0t1 F3 c0t2 F4 (q7I) c0t3 F5 (q7+ Ī) c0t3 F6 c1t0 F7 c1t1 F9 c1t2 F9 c1t3 F10 q0c2t0 F11 q0c2t1 F12 q0c2t2 F13 c2t3 F14 q1c2t0 F15 q1c2t1 F16 q1c2t2 F17 q2c2t0 F18 q2c2t1 F19 q2c2t2 F20 q3c2t0 F21 q3c2t1 F22 q3c2t2 F23 q4c2t0 F24 q5c2t0 F25 F26 I 110ADR F27 F28 F29 F30 7800H F31 7400H F32 7200H F33 7100H F34 7080H F35 7040H F36 7020H F37 7010H F38 7008H F39 7004H F40 7002H F41 7001H F42 F800H F43 F400H F44 F200H F45 F100H F46 F080H F47 F48 q5c2t1 q5c2t2 q6c2t0 q6c2t1 q6c2t2 q6c2t3 q7 Ī D5c2t0 q7ĪD6c2t0 q7ĪD7c2t0 q7ĪD8c2t0 q7ĪD9c2t0 q7ĪD10c2t0 q7ĪD11c2t0 q7ĪD12c2t0 q7ĪD13c2t0 q7ĪD14c2t0 q7ĪD15c2t0 q7ĪD16c2t0 q7ID5c2t0 q7ID6c2t0 q7ID7c2t0 q7ID8c2t0 q7ID9c2t0 q7ID9c2t1 23 Micro-opération MAR(PC) MDRM(MAR), PC(PC)+1 RI (MDR) R 1 F 1 MAR RI [ADR] MDRM(MAR) Rien F 1, R 0 MAR MDR [ADR] MDRM(MAR) AC(AC) (MDR) F 0 MAR MDR [ADR] MDRM(MAR) AC(AC) + (MDR) MAR MDR [ADR] MDRM(MAR) AC (MDR) MAR MDR [ADR] MDR(AC) M(MAR) (MDR) PC MDR[ADR] MAR MDR[ADR],MDR[ADR](PC), PC MDR[ADR] M(MAR) (MDR) PC(PC)+1 MAR MDR [ADR] MDRM(MAR) MDR(MDR)+1 M(MAR) (MDR), si (MDR)=0 alors PC(PC)+1 AC 0 E 0 AC (AC) E E CIR EAC CIL EAC EAC (AC)+1 Si AC(1) = 0 alors PC(PC)+1 Si AC(1) = 1 alors PC(PC)+1 Si (AC) = 0 alors PC(PC)+1 SI E = 0 alors PC(PC)+1 S 0 AC(9-16)(INPR) ,FGI 0 OUTRAC(9-16) ,FGO 0 Si FGI = 1 alors PC(PC)+1 Si FGO = 1 alors PC(PC)+1 MAR(PC) MDRM(MAR), PC(PC)+1 Chapitre IV TEC586 Microcalculateurs F49 q7ID9c2t2 Option contrôle 24 Conception d’un processeur de base AC (MDR) Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base VI L’unité de contrôle : Les fonctions de contrôle résumées dans le tableau précédent montrent qu’elles sont exprimées en fonction : des ti : signaux de synchronisation des ci : variables logiques indiquant le cycle dans lequel le processeur de base se trouve les Di : les bits 5 à 16 de l’instruction ; ils peuvent provenir de RI, ou de MDRet représentent une partie du code OP pour les IES et les IRR. Les qi : qui représentent le décodage du code OP sur 3 bits (D2 à D4) en un code sur 8 bits Le bit I : Le bit D1 indique le mode d’adressage pour les IRM, sinon il départage les IRR, et les IES, comme indiqué dans les paragraphes précédents. Des portes logiques simples permettent de déduire les Fi en fonction de ces différents signaux. I OP Di DCD c0 t0 F1 F2 qi Unité de contrôle F ci DCD R ti F49 S H Schéma bloc de l’unité de contrôle VII Circuits de contrôle des éléments du processeur de base : Le mot de contrôle généré par l’unité de contrôle à partir des ordres fournis par l’instruction à exécuter, servent à activer les différentes micro opérations pour chaque cycle, telles que décrites dans le tableau récapitulatif du processeur de base en LTR. Comme vu dans le chapitre 3, les micro opérations peuvent être de type de transfert, arithmétiques, logiques, d’entrée sortie, ou de décalage. L’étape suivante consiste à établir pour chaque élément du processeur de base, la liste des sources, destinations et fonctions à contrôler. Le circuit de contrôle de chaque élément pourra ensuite être construit. Le tableau ci dessous résume les informations relatives à chacun des éléments du processeur de base. Certains circuits de contrôle seront détaillés. D’autres seront faits en travaux dirigés ou en épreuves d’examens. Option contrôle 25 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base Les circuits nécessaires à la construction du processeur de base sont résumés dans le tableaux ci dessous. Les registres d’adresse PC, et MAR sont à 12 bits, les registres de données AC, et MDR, et le registre d’instruction sont à 16 bits, les registres d’entrée /sortie sont à 8 bits. Les fonctions à contrôler permettent le choix des registres et bascules à acquérir pour le PB. Elément sources destinations Fonctions à contrôler PC MDR MAR, MDR[ADR] MAR PC, RI[ADR], MDR[ADR] RAM(ADR), LMAR, S0,S1, sélection de source MDR RAM(données), PC, AC RAM(données), UAL, PC, RI LMDR, S2,S3, sélection de source, INCMDR RI MDR MAR LRI AC UAL, INPR UAL, MDR, OUTR LAC , S4 , sélection de source UAL AC, MDR AC S5 , S6 , S7 , sélection dune opération parmi 8 INPR OUTR Lpc, INCpc AC(9-16) AC(9-16) LOUTR F SET, RESET R SET, RESET Retenue de sortie de l’UAL Retenue en entrée de l’UAL E Voir TD FGI SET, RESET FGO SET, RESET S RESET RAM MDR(données), MAR(adr) MDR Lecture, écriture 1. Circuit de contrôle du PC : Le PC: possède une seule source → pas de lignes de sélection de source est soit chargé soit incrémenté → il possède 2 entrée à contrôler : le chargement ‘L’ et l’incrémentation ‘ INC’. Lpc= F1+F24 INCpc= F2+F26+F30.MDR+F38.AC(1)+F39.AC(1)+F40.AC+F41.E+F45.FGI+F46.FGO+F48 F1 Lpc + MAR PC F24 Vers MDR INCpc Option contrôle Vers MAR 26 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base 2. Circuit de contrôle de MAR MAR possède 3sources : RI[5-16], PC, et MDR[5-16] → il a 2 lignes de sélection S0,S1 Sa destination est le bus d’adresse de la mémoire S0S1 Source de MAR 00 MDR 01 PC 10 RI 11 __ S0 = F6 S1 = F1 LMAR= F1+F6+F10+F14+F17+F20+F24+F27+F47 RI MDR PC ADR S0 S1 LMAR ADR MUX MAR Vers le Bus d’adresse de la mémoire 3. Circuit de contrôle de RI RI possède une seule source : MDR Et une seule destination MAR MDR LRI RI ADR Vers MAR LRI=F3 4. Circuit de contrôle de AC et de l’UAL Le registre accumulateur et l’unité arithmétique et logique sont traités ensemble parce que toute les opérations exécutées par l’UAL ont pour source et destination AC. Le tableau ci après résume les opérations exécutées par l’UAL . Elles sont au nombre de huit nécessitant ainsi trois lignes de sélection. Option contrôle 27 Chapitre IV TEC586 Microcalculateurs S2S3S4 00 0 00 1 01 0 01 1 10 0 10 1 11 0 11 1 Opération AND ADD NOT DEC d DEC g Transfert A B INC MAZ Conception d’un processeur de base INPR S5 MUX MUX LAC On en déduit les fonctions logiques de : MDR AC B A S2 S3 S4 Re Retenue de Rs sortie vers E S2 = F36+F19+F37+F31+F49 S3 = F37+F31+F35+F33 S4 = F31+F19+F35+F16+F49 AC possède 2 sources : l’UAL et INPR → il a besoin d’une ligne de sélection de source AC possède 3 destinations, l’UAL, le MDR, et OUTR L’entrée de chargement de AC est activée à chaque fois que l’UAL exécute une opération, et si l’instruction INP demande le chargement de INPR dans AC S5 0 1 Source de AC UAL INPR LAC=F43+F31+F33+F35+F36+F16+F19+F37+F49 S5 = F43 Remarques : le registre INPR étant à 8 bits son transfert se fait vers les bits 9 à 16 de AC, et les bits 1 à 8 de AC sont chargés dans eux mêmes afin qu’il n’y ait aucune perte d’information. les opérations CIR et CIL sont réalisées par l’UAL que nous choisissons dotée d’un translateur combinatoire ( On aurait pu choisir comme registre accumulateur AC, un registre possédant des entrées de décalage. Il en est de même pour les opérations d’incrémentation INC, et mise à zéro MAZ. Les circuits de contrôle des autres éléments du processeur de base, la RAM, MDR, les bascules R, F , E, FGI, FGO, S, pourront être réalisés à titre d’exercices (TD ou EMD). Option contrôle 28 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base VIII Programmation assembleur du processeur de base Comme tout processeur, le processeur de base a été conçu pour être programmé. Nous verrons dans cette partie comment ses instructions le permettent. A. Introduction à la programmation assembleur : 1.1 Définitions: Un programme : est un ensemble d’instructions. Une instruction : est un mot clé (indiquant l’opération) suivi de paramètres Une pseudo instruction : est une directive donnée par le programme utilisateur, au programme, appelé aussi Assembleur, chargé de traduire le programme utilisateur écrit en ASCII, en langage machine (codes op des instructions exécutables par le processeur). Elle ne possède pas de code OP, et n’est pas exécutable par le processeur. Etiquette : suite de caractères alphanumériques précédant l’instruction, dont elle est séparée par ‘:’. L’Assembleur lui affecte l’adresse de cette instruction à chaque fois qu’elle est utilisée dans le programme. Commentaire : suite de caractères précédés de ‘ ;’, mis soit à la suite d’une instruction, soit en début de ligne. L’Assembleur ne tient pas compte du commentaire. Les commentaires sont destinés à clarifier le programme utilisateur. 1.2 Le langage assembleur : a. Chaque microprocesseur possède son propre langage assembleur. Celui ci utilise les registres et les modes d’adressage du processeur. Chacune de ses instruction est équivalente à un seul code OP et les paramètres qui lui sont associés (opérandes, adresses, …) quand elle est traduite en langage machine. La programmation en langage assembleur suppose donc la connaissance de son microprocesseur. Traduit le programme écrit en ASCII, en langage machine Programme assembleur Assembleur Instruction ASM OP M ADR Monprog.asm Programme en langage machine OP M ADR Monprog.exe Option contrôle Instruction en langage machine 29 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base b. Un langage de haut niveau, et surtout les langages de 3ème et 4ème génération : Ont les mêmes instructions quelque soit le microprocesseur utilisé par le système. ne requièrent pas du programmeur, la connaissance de l’architecture interne du microprocesseur. Ils sont donc plus faciles à utiliser. Possèdent des instructions, qui sont traduites, chacune, lorsqu’elles sont compilées en un programme assembleur plus ou moins long. Leurs programmes compilés en langage machine sont beaucoup plus longs que ceux de programmes originaux écrits en langage assembleur. Ils occuperont donc beaucoup plus d’espace en mémoire, et nécessiteront un temps d’exécution nettement plus long. Programme C, ou PAS.. Compilateur Instruction Programme en langage assembleur ou langage machine Monprog.pas Programme en langage machine OP M ADR Monprog.exe 1.3 les différents types d’exécution des instructions: a. Les instructions séquentielles : Elles sont exécutées l’une à la suite de l’autre dans l’ordre où elles sont écrites dans le programme. I1 I2 I3 b. Les instructions alternatives : Un test est effectué et un branchement est exécuté vers une instruction selon le résultat du test. Option contrôle 30 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base I1 V F Test Bloc 1 d’instructions Bloc 2 d’instructions Selon que le test effectué, est vrai ou faux, les instructions du bloc 1 ou celles du bloc 2 sont respectivement exécutées. c. Les instructions itératives : Une ou plusieurs instructions sont exécutées un certain nombre de fois, jusqu’à ce qu’un compte soit épuisé, ou une condition vérifiée . On dit alors que l’on a une boucle ou un certain nombre d’itérations. A la fin (ou au début ) de chaque itération, un test est effectué pour voir si la condition d’exécution de la boucle est vérifiée ou pas. Ce test peut être un nombre maximal (ou minimal) atteint par un compteur, ou la vérification d’une condition bien spécifique. I=1 I1 I2 Bloc d’instructions I3 I= I +1 F V I=Imax F Condition V suite Suite Une condition est testée pour arrêter les itérations. le test et l’incrémentation du compteur sont programmés I= 1 à Imax Bloc d’instructions Option contrôle Une instruction spécialisée réalise le test et l’incrémentation du compteur 31 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base B. Programmation du processeur de base : 2.1 Appels et retours de sous programmes : Un sous programme est un ensemble d’instructions pouvant être exécuté plusieurs fois dans un programme principal. Le sous programme est appelé à partir du programme par une instruction d’appel A la fin de son exécution, et grâce à l’instruction de retour, le sous programme retourne au programme principal, à l’instruction qui suit immédiatement l’instruction d’appel. Le sous programme peut être appelé de différents endroits du programmes principal. Chaque processeur possède des instructions d’appel et de retour de sous programmes qui lui sont propres. En ce qui concerne le processeur de base : L’instruction d’appel est ‘ BSA m’ : Elle branche au sous programme stocké à partir de l’adresse m+1, et range l’adresse de l’instruction qui la suit immédiatement (celle qui doit être exécutée au retour du sous programme), dans la case mémoire d’adresse m. L’instruction de retour est ‘ BINI m’ : elle effectue en mode indirect, un branchement vers l’adresse m qui contient l’adresse de retour. Ainsi le sous programme est rangé à l’adresse m+1, et se termine par l’instruction BINI m. X X+1 Début du SP → BSA m m m+1 SousProgramme … Fin du SP → Option contrôle 32 Programme principal BINI m Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base 2.2 Les itérations et boucles : Quand un ensemble d’instructions doit être exécuté plusieurs fois consécutives, une boucle doit être implémentée. L’exécution de la boucle est répétée jusqu’à ce qu’une condition soit vérifiée, ou un compte atteint. Le processeur de base possède plusieurs instructions de test : SPA, SNA, SZA, SZE, SFI, SFO, FGI , FGO et ISZ. Elles incrémentent toutes le PC si la condition testée est vérifiée. ISZ est particulière, car avant d’effectuer le test, elle incrémente le contenu de la case mémoire spécifiée par l’adresse. Elle le compare ensuite avec 0 ; si le test est positif (contenu de la case mémoire = 0), le PC est incrémenté. Ceci suggère l’idée d’utiliser ISZ pour implémenter une boucle et gérer son compteur comme suit : Une case mémoire dont on choisit l’adresse CPT, est utilisée comme compteur. Son contenu est initialisé par programmation, ou par des pseudo instructions, à ‘-MAX’ (en complément à 2 ; MAX étant le nombre maximal d’itérations) LDI STA Début : I1 I2 … (CPT) = -MAX Bloc d’instructions ISZ BIN Suite (CPT) = (CPT)+1 F (CPT)=0 V suite Option contrôle 33 -MAX CPT CPT Début Du prog Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base 2.3 Les pointeurs , adressage de cases mémoire successives: Il est souvent nécessaire, d’adresser des cases mémoire successives (un bloc mémoire, pour un même traitement : des opérations de transfert, lecture ou stockage, ou des opérations entre les données en mémoire et celles se trouvant dans les registres). La spécification individuelle directe, dans une boucle, des différentes adresses étant impossible (elles sont souvent plusieurs milliers, ou millions), on a recours à des pointeurs ; Un pointeur est un registre ou une case mémoire PTR , contenant l’adresse de la case mémoire i à utiliser ; pour accéder à la case mémoire i+1 il suffit d’incrémenter le contenu du pointeur PTR. On remarque que PTR est l’adresse de l’adresse à utiliser. Ceci suggère l’utilisation du mode d’adressage indirect comme suit : Une case mémoire dont on choisit l’adresse PTR, est utilisée comme pointeur. Son contenu est initialisé par programmation, ou par des pseudo instructions, à l’adresse de la 1ère case mémoire du bloc à traiter. Le contenu de chaque adresse du bloc est utilisé en lecture ou en écriture en mode indirect, dans une boucle gérée par un compteur LDI STA LDI STA Début : I1 I2 -MAX CPT AD1 PTR ; initialiser ;le compteur ;initialiser le pointeur vers le ;début du bloc adresse AD1 LDAI PTR … ;lire en mode indirect PTR ISZ ISZ BIN Suite ;pointer vers l’adresse suivante du bloc ;si le compte n’est pas fini ;itération suivante PTR CPT Début Du prog Remarques : Si dans une même boucle on doit accéder à plusieurs blocs (un bloc source, et un bloc destination, ou un bloc source et 2 blocs destination, comme dans l’ex. 14, …)on utilise un pointeur pour chaque bloc Ceci est un exemple de programmation ; Différents processeurs offrent différents moyens pour résoudre les problèmes de boucles, d’appel et retour de sous-programme, de pointeurs..; il suffit de combiner de façon judicieuse les instructions et les modes d’adressage disponibles (mode indexé, par base, immédiat, …) pour le processeur utilisé. Option contrôle 34 Chapitre IV TEC586 Microcalculateurs Conception d’un processeur de base C. Quelques pseudo instructions courantes : DB DW END Define byte : réservation d’octets (8 bits) X ; le contenu de l’adresse X est réservé et est initialisé à 0B hexadécimal DB 0BH Define word : réservation de mots (16 bits) X ;le contenu de X est réservé et est initialisé à A042 hexadécimal DW A042H Fin de programme ORG Donne l’adresse ORG EQU Affecte du début du programme ; le programme sera rangé à l’adresse 100 hexadécimal 100H une valeur à une variable MAX EQU 0F00H ; à chaque fois que MAX est utilisée elle est remplacée en langage machine par 0F00 hexadécimal. Dans la portion de programmes ci-dessous, on montre comment les pseudos instructions peuvent être utilisées : -MAX CPT EQU EQU ORG LDI STA Début : I1 I2 FF0H 200H 100H -MAX CPT ;Affecte la valeur FF0 hexadécimale à -MAX ;Affecte la valeur 200 hexadécimale à CPT ;Indique que l’adresse de la 1ère instruction ;du programme est 100 hexadécimale Cette instruction occupe les adresses 100 et 101 ;Occupe l’adresse 102 ;début prendra donc la valeur 103 … ISZ BIN Suite CPT Début Du prog ;incrémente et teste le contenu de la case 200 ;Branche vers l’adresse 103 VIII Conclusion : Le chapitre IV a décrit la conception d’un processeur de base avec une unité de contrôle câblée. Dans le chapitre V nous verrons le processeur de base avec une unité de contrôle micro programmée. Les fonctions de contrôle sont extraites à partir d’une mémoire dite de contrôle, et non d’un circuit. Option contrôle 35