Vous êtes sur la page 1sur 17

MCIL 4 Conception des Architectures Partie 1

Conception d’un Processeur MIPS à cycle unique


• Notre système supportera l’exécution de:

– Instructions d’accès à la mémoire : lw & sw,


– instructions arithmétique-logique : add, sub, and, or, slt & nor,
– Instructions de contrôle de flot : beq & j,
– Prise en charge d’éxception : illegal instruction & overflow.
• Cette conception nous fournira les principes de base; plusieurs autres instructions peuvent être
facilement ajoutées telles que: addu, lb, lbu, lui, addi, adiu, sltu, slti, andi, ori, xor, xori, jal, jr, jalr,
bne, beqz, bgtz, bltz, nop, mfhi, mflo, mfepc, mfco, lwc1, swc1, etc.

Processeur à cycle unique (Single-cycle Processor) :


Nous commencerons par la conception d’un processeur qui exécute chaque instruction en un seul cycle
d’horloge. Du point de vue performance, ceci n’est pas efficace car:

– Un cycle d’horloge (i.e. taux d’horloge) doit être choisi tel que l’instruction la plus longue
sera exécuté en un seul cycle seulement,
– Ceci fait que les instructions plus courtes seront exécutées en un long cycle (qui n’est pas
nécessaire).
– De plus, les ressources ne seront utilisées qu’une fois par instruction; quelques ressources
seront dupliquées.
• C’est pourquoi la conception en cycle unique aura besoins de:

– Deux mémoires (instruction et donnée),


– Deux additionneurs supplémentaires
Les briques de construction (Building Blocks) :

5 R ead A L U c o n tr o l
re gist er 1 32 32 4
Re ad
Re gister 5 data 1
R ead
32 32 nu mbe rs re gist er 2 Z e ro
PC R egisters D ata ALU 32
ALU
5 W rite r e s u lt
re gist er 32 32
Re ad
32 data 2
W rite
Da ta
da ta

RegWrite
a . P ro g ra m c o u n te r
c. ALU
b . Re g ister File

MemRead=1
MemWrite =0
MemWrit e

32 32 32
32 I n s tr u c tio n
Ad d ress Re ad a ddres s
32 data
A dd S um 32 32
Write Data In s tru c tio n
32 data me mory
In s t ru c tio n
m em ory

MemR e a d
d. A d d e r f . I n s tru c tio n m e m o r y
e. Data memory un it

S. Meguellati 2019/2020 Page 1


MCIL 4 Conception des Architectures Partie 1

16 32 32 Shift 32
Sign Left 2
extend

h. Shift left 2
g. Sign-extension unit

1. Synoptique simplifiée
La figure ci-dessous représente un schéma simplifié représentant les blocs principaux du processeur

Une implémentation générique consiste en :

– Le compteur de programme (PC) fournira l’adresse de l’instruction,


– Extraire l’instruction à partir de la mémoire,
– Lire les registres,
– Utiliser l’instruction pour décider exactement que faire.
– PC est incrémenté par 4 par la plupart des instructions, et par 4 + 4×offset pour les instructions de
branchement (branch).
– Offset est une valeur immédiate
– Les instructions de saut (jump) change le PC différemment (pas montré).

S. Meguellati 2019/2020 Page 2


MCIL 4 Conception des Architectures Partie 1

2. Circuit pour l’incrémentation de PC et la recherche de l’instruction


(instruction fetch)

3. Chemin de données (datapath) pour les instructions de type-R

Exemple : add rd, rs,rt # mémoire(rd) <= mémoire(rs) + mémoire(rt)

S. Meguellati 2019/2020 Page 3


MCIL 4 Conception des Architectures Partie 1
Selon le contenu des champs op-code et funct, L’unité de contrôle génère les commandes appropriées
pour l’ALU et met RegWrite = 1.

4. Chemin de données pour les instructions de type-I (lw, sw)

Exemple : lw rt,offset(rs) # rt<=mémoire(rs+offset)

Sw rt,offset(rs) # mémoire(rs+offset)<= rt

 l’offset (ou immediate) est une valeur codée sur 16-bits. Il faut la transformer en 32-bit afin de
pouvoir réaliser l’addition avec rs qui est codé sur 32-bits.

Unité de contrôle met:


• ALU control = 0010 (add) pour le calcul d’addresse pour lw et sw
• MemRead=0, MemWrite=1 et RegWrite=0 pour sw
• MemRead=1, MemWrite=0 et RegWrite=1 pour lw

S. Meguellati 2019/2020 Page 4


MCIL 4 Conception des Architectures Partie 1

5. Chemin de données pour les instructions de type-R et de type-I (lw, sw)


La combinaison des deux circuits va donner :

S. Meguellati 2019/2020 Page 5


MCIL 4 Conception des Architectures Partie 1

6. Chemin de données pour les instructions de type-I (beq)

Exemple : beq rs,rt,target #if rs=rt then PC <=PC+4+4*offset else PC <= PC+4

 Target représente le point de branchement donné par PC+4+4*offset


 L’incrémentation de program counter PC +4 se fait même si l’égalité n’est pas vraie
 La multiplication par 4 ne se fait pas dans l’ALU, un simple décalage à gauche de 2 suffit !!!

7. Chemin de données pour les instructions de type-R et de type-I (lw, sw,beq)


Noter que :

Pour bien synchroniser le fonctionnement, les entrée de commande RegWrite pour le Register File) et
MemWrite (pour la mémoire de données) spnt appliquées à travers un porte AND dont la seconde entrée
est le signal horloge.

Les entrées de commande pour la mémoire d’instructions (MemRead = 1 et MemWrite= 0) en mode


exécution d’un programme et (MemRead = 0 et MemWrite= 1) en mode configuration (ou chargement de
programme).

S. Meguellati 2019/2020 Page 6


MCIL 4 Conception des Architectures Partie 1

S. Meguellati 2019/2020 Page 7


MCIL 4 Conception des Architectures Partie 1

8. Chemin de données et unité de contrôle principale

S. Meguellati 2019/2020 Page 8


MCIL 4 Conception des Architectures Partie 1

9. Conception de l’unité de contrôle principale :


Nous allons maintenant rassembler les différentes lignes de commande et leurs valeurs respectives
pour chaque situation (des choix que NOUS avons fait, donc qu’on peut modifier…) dans une table
de vérité qui va nous permettre de concevoir le circuit électronique correspondant.
Nous avons déjà fait des choix pour les commandes des différents multiplexeurs, reste à définir des
combinaisons pour la sortie ALUop(1 :0) qui servira comme entrée à l’unité de contrôle locale à
l’ALU. On se propose donc :
• ALUOp[1-0] = 00  indique à l’unité de Control ALU que l’ ALU doit réaliser la fonction add , i.e.
mettre Ainvert = 0, Binvert=0 et Operation=10
• ALUOp[1-0] = 01  indique à l’unité de Control ALU que l’ ALU doit réaliser la fonction sub i.e.
mettre Ainvert = 0, Binvert=1 et Operation=10
• ALUOp[1-0] = 10  indique à l’unité de Control ALU de vérifier les bits Inst[5-0] et selon leur
valeur, donner à Ainvert, Binvert et Operation les valeurs permettant à ALU de réaliser la fonction,
i.e. add, sub, slt, and, or et nor

Table de vérité pour l’unité de contrôle principale

Par exemple :

Le schéma correspondant est :

S. Meguellati 2019/2020 Page 9


MCIL 4 Conception des Architectures Partie 1

I. Conception de L’unité Arithmétique et Logique – ALU

Notre ALU doit réaliser les fonctions suivantes :

 and logique
 or logique
 nor logique
 add arithmetique
 subtract arithmetique
 slt (set-less-then) arithmétique

Les lignes de contrôle de l’ALU définissent la fonction à réaliser sur A and B.

• Result résultat à 32-bit de la fonction réalisée sur A et B

• Zero indique que toutes les lignes result sont à zéro 0

• Overflow indique un débordement d’entiers signés pour les fonctions add et sub. pour des entiers
non signés, cette sortie ne donne aucune information utile

• Carry out indique un carry out et un débordement non signés

Concevons d’abord le circuit pour la fonction AND entre deux entrées 32-bits en suite ajoutons, en
parallèle la fonction OR. Les deux fonctions étant réalisées simultanément tout le temps, la sortie
voulue est choisie à l’aide d’un MUX avec le contrôle operation=0 => AND et operation =1 => OR.

 Les lignes result0…..result31 représentent le résultat de l’opération réalisée sur les bits
individuels de l’entrée a0,b0,…….a31,b31
 On peut remarquer qu’il est possible de concevoir une ALU 1-bit et ensuite on en génère 32
copies pour construire une ALU 32-bits

S. Meguellati 2019/2020 Page 10


MCIL 4 Conception des Architectures Partie 1

Conception de l’additionneur 32-bits


Là aussi, on commence par concevoir un additionneur complet 1-bit et on en génère 32 copies…

S. Meguellati 2019/2020 Page 11


MCIL 4 Conception des Architectures Partie 1

32-bit ALU avec 3 Fonctions


Operation = 00  and
= 01  or
= 10  add

S. Meguellati 2019/2020 Page 12


MCIL 4 Conception des Architectures Partie 1

Soustracteur 32-bits
A – B = A + (–B)

=A+B+1

Additionneur/Soustracteur 32-bits
Binvert = 0  addition

= 1  subtraction binvert

S. Meguellati 2019/2020 Page 13


MCIL 4 Conception des Architectures Partie 1

ALU 32-bits avec 4 Fonctions

Débordement Complément à 2
Un débordement en complément à 2 a lieu:

• Si somme de 2 nombre positifs donne un nombre négatif

• Si somme de 2 nombre négatifs donne un nombre positif

Seule l’ALU correspondant au bit MSB est affectée

S. Meguellati 2019/2020 Page 14


MCIL 4 Conception des Architectures Partie 1

ALU 32-bits à 4 Fonctions et débordement

La function Set Less Than (slt)


• slt est définie comme:

000 … 001 if A < B, i.e. if A – B < 0

A slt B =

000 … 000 if A ≥ B, i.e. if A – B ≥ 0

• Donc, chaque 1-bit ALU doit avoir une entrée “Less”, qui fournira le résultat pour la fonction slt .
Cette enrée est à 0 sauf pour l’ALU LSB.

• Pour le bit LSB, Less devrais avoir la valeur du signe de A-B

S. Meguellati 2019/2020 Page 15


MCIL 4 Conception des Architectures Partie 1

ALU 32-bit avec 5 Fonctions

ALU 32-bit avec 5 Fonctions & zero

S. Meguellati 2019/2020 Page 16


MCIL 4 Conception des Architectures Partie 1

ALU 32-bit avec 6 Fonctions

S. Meguellati 2019/2020 Page 17