Architecture Mono-cycle pour ISA MIPS PDF
Document Details
Uploaded by Deleted User
Tags
Related
- Chapitre 2 Architecture des systèmes embarqués SoC MPSoC PDF
- Architecture Avancée des Processeurs - Cours 2022/2023 PDF
- Module M11 : Architecture des systèmes à processeurs (PDF)
- Cours Architecture des Systèmes - Principes Généraux 2024-2025 PDF
- Architecture d'un Ordinateur PDF
- Introduction à l'Architecture des Systèmes d'Information (SI) - PDF
Summary
Ce document présente la conception d'un chemin de données monocycle pour l'architecture ISA MIPS, en détaillant les étapes de recherche, de décodage et d'exécution d'instructions. Il explique la méthodologie de conception, ainsi que la mise en œuvre de plusieurs instructions, incluant les instructions arithmétiques et logiques.
Full Transcript
CHAPITRE III. Architecture Mono-cycle pour ISA MIPS 3.1. Objectifs L’objectif de ce chapitre est de : Concevoir un chemin de données monocycle Définir les signaux de contrôle Concevoir une unité de contrôle monocycle suivant une logique câblée 3.2. Méthodologie de co...
CHAPITRE III. Architecture Mono-cycle pour ISA MIPS 3.1. Objectifs L’objectif de ce chapitre est de : Concevoir un chemin de données monocycle Définir les signaux de contrôle Concevoir une unité de contrôle monocycle suivant une logique câblée 3.2. Méthodologie de conception Le processeur monocycle est caractérisé par : Un seul cycle d’horloge par instruction (CPI = 1) incluant les étapes de recherche d’une instruction, de décodage et d’exécution. Un temps d’exécution très long par rapport aux autres types de processeurs comme multi-cycle et pipeline. Pour créer un chemin de données qui nous permet d’exécuter l’ensemble des instructions MIPS. Nous devons respecter les étapes suivantes : Le chemin de données inclut la mémoire programme. Chaque instruction est donnée en fonction des registres. Le chemin de données doit permettre le transfert des informations entre les registres. Le choix d’un ensemble de composants nécessaires (UAL, MUX, Banc de Registre, Mémoire des données…) pour le chemin de données. L’assemblage des différents composants pour la satisfaction des besoins. La détermination des points de contrôles nécessaires pour effectuer le transfert des données. L’assemblage de la logique de contrôle. (séquenceur) De cette manière, nous concevons un chemin de données pour assurer l’exécution des instructions MIPS telles que: Chargement et rangement : LW et SW Arithmétiques et logiques : ADD, addu, sub, subu, and, or, xor, nor, slt et sltu Arithmétiques et logiques immédiats: ADDi, andi, ori, xori, nori, slti et sltiu Branchement : Beq, Bne et J 16 Le schéma d’exécution d’une instruction est donné par la figure 26. Ça commence avec une recherche de format d’instruction (FETCH) et la mise à jour de registre d’adresse d’instruction (PC). Par la suite une phase de décodage au niveau de séquenceur (DECOD) pour la lecture des contenus des registres (des opérandes). Enfin il s’agit de l’exécution de l’instruction courante (EXECUTE) tout au long un seul cycle d’horloge. Figure 26. Schéma d’exécution d’instruction pour un processeur monocycle. 3.3. Conception de chemin de données d’un processeur monocycle 3.3.1 Implémentation matérielle de la Phase de recherche d’instruction (FETCH) Au moment du front d’horloge, cette phase passe par deux étapes : Etape 1 : lire le format d’instruction logée dans la mémoire de programme correspondant à une valeur d’adresse courante de PC (Counter Program). Pour cela, nous avons besoin d’une mémoire de programme de type ROM. Etape 2 : faire la mise à jour de la valeur d’adresse de l’instruction suivante une fois l’instruction courante vient d’être achevée. La mise à jour se fait par une incrémentation de 4 octets de la valeur d’adresse (PC←PC+4). Pour cela nous avons besoin d’un registre à chargement et d’un additionneur. La conception matérielle pour cette phase Fetch est donnée par la figure 27. Figure 27. Conception matérielle pour la recherche d’instruction (Fetch). 17 3.3.2 Implémentation matérielle de la Phase de décodage d’instruction (DECOD) Cette étape consiste à envoyer le code opératoire à l’unité de contrôle (de bit 26 au bit 31) afin d’envoyer les signaux de contrôle au chemin de données. Ce qui permet de lire, ainsi, les numéros des registres sources et destination (rs, rt et rd) (dans le cas des instructions des formats R et I). On reçoit à la sortie les contenus des registres sources R[rs] et R[rt] (Figure 28). Figure 28. Conception matérielle pour la phase de décodage (DECOD). 3.3.3 Implémentation matérielle de la phase d’exécution d’instruction (EXECUTE) Dans cette étape, nous s’intéressons essentiellement à l’exécution des instructions de type R et de type I. 3.3.3.1 Exécutions d’instructions de type R Prenant l’exemple de l’instruction : add rd,rs,rt, Le niveau RTL est donné par : R[rd] R[rs]+R[rt] Ainsi, les deux éléments utilisés pour réaliser l’exécution des instructions type R comme add sont: le banc de registres et L'UAL (Figure 29) : Le banc de registres a trois ports de lecture à l’entrée (les numéros des registres opérandes rs, rt et rd) et un port d'écriture WD. Il fournit toujours en sortie le contenu des registres sources (R[rs] et R[rt]) correspondant aux entrées des registres de lecture (rs et rt). Alors que les écritures doivent être explicitement contrôlées par le signal de contrôle d'écriture RegWr dans le registre de destination rd. 18 L'opération d’addition se fait par l'UAL. Cette opération est contrôlée par le signal d'opération de l'UAL (ALUctr). Figure 29. Conception matérielle pour l’exécution d’une instruction de type R. Dans ce cas, les signaux de contrôle sont donnés par RegWr pour valider l’écriture dans le banc de registres et ALUctr pour effectuer l’opération demandée. 3.3.3.2 Exécutions d’une instructions de type I Dans cette partie, nous traitons 4 exemples : 1 er exemple : pour l’instruction ORi rt, rs, imm16, le niveau RTL est donné par : R[rt] R[rs] OR ZeroExt[imm16] Ainsi, nous avons besoin de plusieurs éléments pour exécuter l’instruction ORI: le banc de registres, L'UAL, registre d’extension par zéro et des multiplexeurs (Figure 30) : Le banc de registres fournit en sortie à l’UAL le contenu de registres rs. La valeur immédiate doit avoir une taille de 32 bits pour cela un registre d’extension par zéro sera ajouté. Un multiplexeur sera ajouté pour la 2éme opérande de UAL pour sélectionner entre l’opérande de type registre (rt) et celle de type I (ZeroExt[imm16]]). La fonction OU se fait par l'UAL entre le contenu de registre rs et la valeur immédiate qui a subi une extension par zéro sur 32 bits. Cette opération est contrôlée par le signal d'opération de l'UAL. Le résultat sera logé dans le registre de destination donné par la valeur de rt, pour cela nous ajoutons un multiplexeur 2 vers 1 pour sélectionner entre la destination de type R (numéro de rd) et celle de type I (numéro de rt) 19 Figure 30. Conception matérielle pour l’exécution de l’instruction ORI. 2 éme exemple : pour l’instruction Lw rt, imm16(rs), le niveau RTL est donné par : R[rt] Mem[R[rs] + SignExt[imm16]] Ainsi, nous avons besoin de plusieurs éléments pour réaliser cette l’instruction : le banc de registres, L'UAL, mémoire de données, registre d’extension par bit de signe et des multiplieurs (Figure 31) : Le banc de registres fournit à UAL en sortie le contenu de registres rs qui sera utilisé pour le calcul de l’adresse mémoire. La valeur immédiate doit avoir une taille de 32 bits pour cela un registre d’extension par bit de signe sera ajouté et il va remplacer le précédent registre d’extension en ajoutant une variable de commande ExtOp. Un multiplexeur déjà existant à la 2éme opérande de l’UAL pour sélectionner entre l’opérande de type registre (R[rt]) et celle de type I (ZeroExt[imm16]]). La fonction add se fait par l'UAL entre le contenu de rs et la valeur immédiate qui a subi une extension par bit de signe sur 32 bits. Ce résultat sera exploité en tant que adresse pour la mémoire des données. Une fois l’adresse mémoire est calculée, le chargement se fait depuis la mémoire vers le banc de registre. le résultat sera logé dans un registre de destination donné par la valeur de rt, pour cela nous ajoutons un multiplexeur 2 vers 1 pour sélectionner entre la sortie de l’UAL et la donnée lue depuis la mémoire des données. 20 Figure 31. Conception matérielle pour l’exécution de l’instruction LW. 3 éme exemple : pour l’instruction Sw rt, imm16 (rs), le niveau RTL est donné par : Mem[ R[rs] + SignExt[imm16]] R[rt] Par rapport à l’implémentation de la figure 31, nous ajoutons un lien entre le banc de registres et la mémoire des données puisque il s’agit d’une phase d’écriture dans la mémoire une fois l’adresse a été calculée par l’UAL (Figure 32). Figure 32. Conception matérielle pour l’exécution de l’instruction SW. 21 4éme exemple : pour l’instruction beq rs, rt, imm16, le niveau RTL est donné par : Equal R[rs] == R[rt] if (Equal= 1) then PC PC + 4 + ( SignExt(imm16) x 4 ) else PC PC + 4 Le terme SignExt(imm16) x 4 représente le nombre total des cases à sauter lors de l’égalité pour atteindre le label, pour cela ,nous avons besoin de plusieurs éléments : deux additionneurs, registre d’extension et de décalage par zéro et multiplexeur… (Figure 33). Figure 33. Conception matérielle pour l’exécution de l’instruction beq. 3.3.4 Assemblage de chemin de données monocycle En tenant compte de tout ce qu’il a été présenté précédemment, nous obtenons le chemin de données d’un processeur monocycle donné par la figure 34. Ce chemin de données est contrôlé par des signaux générés par une unité de contrôle. La conception de l’unité de contrôle monocycle est l’objet de la partie suivante. 22 Figure 34. Implémentation matérielle d’un chemin de données monocycle avec unité de contrôle. 3.4. Conception de l’unité de contrôle monocycle Le schéma synoptique de l’unité de contrôle du processeur monocycle est donné par la figure 35. Les signaux de contrôle (RegDest, RegWr, ALUsrc, AluCtr…) seront déterminés à partir des états binaires du code opératoire I[31…26] et la fonctions de l’instruction I[5..0]. Figure 35. Schéma général de l’unité de contrôle monocycle. Puisque les opérations arithmétiques et logiques se différentient suivant le type de l’instruction (Type R ou type I), nous partageons l’unité de contrôle de la figure 35 en deux blocs : 23 Unité Principale : qui génère les signaux de contrôle de tous les blocs de chemins de données à l’exception de l’UAL. ALU contrôle : qui génère les signaux de contrôle de l’UAL (ALUctr) suivant les états de la fonction (func) et l’opération à effectuer(ALUop). Cette partition est donnée par la figure 36 : Figure 36. Schéma détaillé de l’unité de contrôle monocycle. 3.4.1 Conception de l’unité principale de contrôle A partir de la conception de chemin de données du processeur monocycle et les niveaux RTL présentés pour quelques instructions de base MIPS, nous dressons la table de vérité de l’unité principale de contrôle (Table 3). Table 3. Table de vérité de l’unité principale de contrôle. Cela nous permet de déterminer le circuit logique câblé donné par le RLP de la figure 37. 24 Figure 37. RLP de l’unité principale de contrôle. 3.4.2 Conception de l’unité de contrôle de l’UAL Il est noté que l’UAL de notre processeur monocycle inclut un multiplexeur permettant de sélectionner les opérations suivant la variable ALUctr comme le montre la figure 38. Sa table de vérité est donnée par la table 4. Figure 38. Multiplexeur de l’UAL monocycle. Table 4. Table de vérité de Multiplexeur de l’UAL monocycle. 25 De plus, ces opérations dépendent des états de fonctions (code binaire) dans leurs formats d’instruction essentiellement les 4 premiers bits de func comme le montre la table5. Table 5. Opération effectuée suivant la fonction. La table de fonctionnement de l’unité de contrôle de l’UAL est donnée par la table 6. Table 6. Table de vérité de l’unité de contrôle de l’UAL. Les trois premières lignes de cette table de vérité correspondent aux opérations arithmétiques et logiques pour les instructions de type I et les autres lignes pour les instructions de type R. 26