0% ont trouvé ce document utile (0 vote)
482 vues13 pages

Conception Architecture Mono-cycle MIPS

Le document décrit la conception d'un chemin de données monocycle pour un processeur MIPS. Il présente la méthodologie de conception et détaille l'implémentation matérielle des phases de recherche d'instruction, décodage et exécution. Différents éléments du chemin de données sont conçus pour exécuter diverses instructions MIPS.

Transféré par

Dhafer Mezghani
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
482 vues13 pages

Conception Architecture Mono-cycle MIPS

Le document décrit la conception d'un chemin de données monocycle pour un processeur MIPS. Il présente la méthodologie de conception et détaille l'implémentation matérielle des phases de recherche d'instruction, décodage et exécution. Différents éléments du chemin de données sont conçus pour exécuter diverses instructions MIPS.

Transféré par

Dhafer Mezghani
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

CHAPITRE III.

Conception de l’architecture
Mono-cycle pour ISA MIPS

30
3.1. Objectifs

L’objectif de ce chapitre est :


• Concevoir un chemin de données monocycle
• Définir les signaux de contrôle
• Concevoir une unité de contrôle monocycle suivant une logique cablée

3.2. Méthodologie de conception

Le processeur monocycle est caractérisé par :


• Un seul cycle d’horloge par instruction incluant les étapes de recherche
d’instruction, de décodage et d’exécution donc CPI = 1
• Un temps d’exécution très long par rapport aux autres types de processeurs
comme multi-cycle et pipline
De plus, l’architecture de jeu d’instructions, présentée dans le chapitre II, définit
plusieurs aspects de mise en œuvre lors de la conception de son chemin de données.
Pour cela nous devons respecter les étapes suivantes :
• A partir de l’instruction et de sa description, nous définissons le transfert des
registres, de plus le chemin de données doit contenir une mémoire de
programme
• Nous identifions les matériels nécessaires pour le datapath (UAL, Banc de
registres, Multiplexeurs…)
• Nous assemblons les éléments pour satisfaire le besoin
• Nous déterminons les signaux de contrôle nécessaires pour effectuer le transfert
au niveau des registres
• Nous assemblons la logique de contrôle (séquenceur)
Dans ce qui se suit, nous concevons un chemin de données pour l’exécution de quelques
instructions MIPS suivantes :
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

31
Le schéma d’exécution est donné par la figure 39, ca commence avec une recherche de
format d’instruction (FETCH) et la mise à jour de registre d’adresse de l’instruction
courante, par la suite une phase décodage au niveau de séquenceur (DECOD) et la
lecture des contenus des registres au niveau de chemin de données, enfin il s’agit de
l’exécution de l’instruction courante (EXECUTE) tout au long un seul cycle d’horloge

Figure 39. Schéma d’exécution d’instruction pour un processeur monocycle

3.3. Conception de chemin de données du processeur monocycle

3.3.1 Implémentation matérielle de la Phase de recherche d’instruction (FETCH)

Au moment du front de l’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 PC afin de préparer l’instruction
suivante une fois l’instruction courante vient d’être achévée.la mise à jour se fait par une
incrémentation de 4 octets de la valeur d’adresse. Pour cela nous avons besoin d’un
registre à chargement et un additionneur.
La conception matérielle pour cette phase Fetch est donnée par la figure 40.

32
Figure 40. Conception matérielle pour la recherche d’instruction

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 ainsi que les numéros
de registres sources et destination pour le cas des formats R et I afin de lire les contenus
des registres sources. Cette lecture est désignée en niveau RTL par R[rs] et R[rt] (Figure
41).

Figure 41. Conception matérielle pour la phase de décodage

3.3.3 Implémentation matérielle de la phase d’exécution d’instruction


(EXECUTE)

Dans cette partie, nous s’intéressons essentiellement à l’exécution des instructions de


type R et de type I.

33
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 pour réaliser les instructions de type R comme add sont : le
banc de registres et L'UAL (Figure 42) :
Le banc de registres contient tous les registres et fournit deux ports de
lecture et un port d'écriture. Il fournit toujours en sortie le contenu des
registres correspondant aux entrées des registres de lecture, alors que les
écritures doivent être explicitement contrôlées par le signal de contrôle
d'écriture.
L'opération d’addition se fat par l'UAL. Cette opération est contrôlée par le
signal d'opération de l'UAL, large de 3 bits dans notre cas.

Figure 42. Conception matérielle pour exécution de type R

Dans ce cas, les signaux de contrôle sont donnés par RegWr pour valider écriture dans le
banc de registres et ALUctr pour effectuer opération demandé

3.3.3.2 Exécutions d’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]]

34
Ainsi, nous avons besoin de plusieurs éléments pour réaliser l’instruction ORI comme
add sont : le banc de registres, L'UAL, registre d’extension par zéro et des multiplexeurs
(Figure 43) :
Le banc de registres fournit à UAL en sortie le contenu de registres rs.
La fonction OU se fait par l'UAL entre le contenu de rs et la valeur
immédiate qui a subit une extension par zéro sur 32 bits.. Cette opération
est contrôlée par le signal d'opération de l'UAL
La valeur immédiate doit avoir une taille dez 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 (R(R[rt]) et celle de type I
(ZeroExt[imm16]]).
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 prendre en
considération entre la destination de type R (numéro de rd) et celle de
type I (numéro de rt)

Figure 43. Conception matérielle pour exécution de 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 l’instruction ORI comme
add sont : le banc de registres, L'UAL, mémoire de données, registre d’extension par bit
de signe et des multiplieurs (Figure 44) :

35
Le banc de registres fournit à UAL en sortie le contenu de registres rs qui
sera utilisé pour le calcul de l’adresse
La fonction add se fait par l'UAL entre le contenu de rs et la valeur
immédiate qui a subit une extension par bit sur 32 bits.. ce résultat sera
exploité en tant que adresse pour la mémoire
Une fois adresse est calculé, le chargement se fait depuis la mémoire vers
le bac de registre
La valeur immédiate doit avoir une taille de 32 bits pour cela un registre
d’extension par bit de signe sera ajouté et qui 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 UAL pour
sélectionner entre l’opérande de type (R (R[rt]) et celle de type I
(ZeroExt[imm16]]).
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 prendre en
considération entre la sortie de l’UAL et la donnée lue depuis la mémoire.

Figure 44. 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 44, nous ajoutons un lien entre le banc de
registres et la mémoire de données puisque il s’agit d’une phase d’écriture dans la
mémoire une fois l’adresse a été calculée par UAL (Figure 45)

36
Figure 45. Conception matérielle pour l’exécution de l’instruction SW

4 éme exemple : pour l’instruction beq rs, rt, imm16, le niveau RTL est donné par : Equal
<- R[rs] == R[rt] et 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 de 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
46).

Figure 46. Conception matérielle pour l’exécution de l’instruction beq

37
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 47. 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 partie suivante.

Figure 47. 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é contrôle du processeur monocycle est donné par la


figure 48 les signaux de contrôle (RegDest, Wr…) seront déterminés à partir des états
binaires du code opératoire I[31…26] et les fonctions des instructions I[5..0]

38
Figure 48. 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


d’instruction (Type R ou type I), nous partageons l’unité de la figure 48 en deux blocs :
• Unité Principale : qui génère les signaux de contrôle de tous les blocs de chemins
de données à l’exception d’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 opération à effectuer(ALUop).
Cette partition est donnée par la figure 49

Figure 49. 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 conception de chemin de données du processeur monocycle et les nveaux


RTL présentés pour quelques instructions de base MIPS, nous dressons la table de vérité
de l’unité principale de contrôle donnée par la table suivante.

39
Table 4. 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 ….

Figure 50. RLP de l’unité principale de contrôle

3.4.2 Conception de l’unité de contrôle de l’UAL

40
Il est noté que l’UAL
UAL de notre processeur monocycle inclut un multiplexeur permettant
de sélectionner les opérations suivant la variable ALUctr comme le montre la figure 51,
sa table de vérité est donnée par la table 5.

Figure 51. Multiplexeur de l’UAL monocycle

Table 5. Table de vérité de Multiplexeur

De plus, ces opérations dépondent des états de fonctions dans leurs formats
d’instructions essentiellement les 4 premiers bits de func<5..0> comme le montre la
table 6.

Table 6. Opération effectuée suivant la fonction


41
Ainsi la table de fonctionnement de l’unité
l’unité de contrôle de l’UAL est donnée par la table 7.

Table 7. 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
les autres pour les
instructions de type R.
Application : Déterminer les équations logiques ainsi que le circuit logique
correspondant !!!

42

Vous aimerez peut-être aussi