You are on page 1of 303

Architecture des Ordinateurs

2me anne Ingnieurs en Informatique


Nejib Ben Hadj-Alouane

CHAPITRE I

Introduction

Architecture des Ordinateurs

Historique
17 sicle, calcul arithmtique simple: addition, soustraction PASCAL (1623-1662) effectue mcaniquement des additions et des soustractions LEIBNIZ (1646-1716) envisage quune machine puisse raisonner CHARLES BABBAGE (1792-1871) a construit en 1833 une machine calculer: la machine diffrences.
Programmable avec un langage assembleur trs simple ADA AUGUSTA LOVELACE, collaboratrice de BABBAGE et fille de LORD BYRON, crit le premier programme informatique.
Architecture des Ordinateurs 3

Historique
1945 : ENIAC (Electronic Numerical Integrator And Calculator)
18 000 tubes 30 tonnes multiplie 2 nombres de 10 chiffres en 3 millisecondes donnes sur cartes perfores, mais programmes cbls en mmoire et donc, pour passer dun programme un autre, il faut dbrancher et rebrancher des centaines de cbles (ce nest pas vraiment le premier ordinateur au sens actuel).
Architecture des Ordinateurs 4

Historique
1945 : JOHN VON NEUMANN, associ lENIAC, propose un modle dordinateur qui fait abstraction du programme et se lance dans la construction du EDVAC (Electronic Discrete Variable Automatic Computer) La machine de VON NEUMANN est ne:
Consiste en cinq composants de larchitecture moderne, appele architecture de VON NEUMANN.
Architecture des Ordinateurs 5

Historique
Premire gnration (1945-1955) : tubes vide
Tubes vide: pannes frquentes, difficiles dceler, ordinateurs demandant beaucoup de place.

Deuxime gnration (1955-1965)


Transistors: organisation de la machine autour dun bus ; stockage sur bande magntique ; crans ; etc.

Troisime gnration (1965-1980)


Circuits intgrs (puces) et des processeurs miniaturisation (ordinateurs plus petits, plus rapides et moins chers)
Architecture des Ordinateurs 6

Historique
Gammes de machines avec mme langage dassemblage, do rutilisation des programmes. Multiprogrammation: plusieurs programmes en mmoire. Lorsquun programme entre en phase dentres-sorties, lUC passe lexcution dun autre programme.

Quatrime gnration ( partir de 1980)


Ordinateurs personnels et VLSI (Very Large Scale Intgration) : augmentation du nombre de transistors ; rseaux

Parallles, intelligents...
Architecture des Ordinateurs 7

Classification des ordinateurs


Superordinateurs (5 20M$)
Grande pice, applications scientifiques et militaires titanesques (lments finis, mto...) CRAY 2, NEC SX-2, Hitachi, IBM...

Serveurs d'entreprise, mainframe (1 5 M$)


Grosses bases de donnes avec de nombreux usagers (banques, rservations de lignes ariennes...) IBM ES/9000, CDC, AT&T NCR, Pyramid, Sequent, Unisys, DEC, HP, SUN.
Architecture des Ordinateurs 8

Classification des ordinateurs


Serveurs dpartementaux (50K$ 1 M$)
Grande pice, applications scientifiques et militaires titanesques (lments finis, mto...) CRAY 2, NEC SX-2, Hitachi, IBM...

Serveurs d'entreprise, mainframe (1 5 M$)


Grosses bases de donnes avec de nombreux usagers (banques, rservations de lignes ariennes...) IBM ES/9000, CDC, AT&T NCR, Pyramid, Sequent, Unisys, DEC, HP, SUN.
Architecture des Ordinateurs 9

Classification des ordinateurs


Serveurs dpartementaux (50K$ 1 M$)
Serveurs de fichiers, de bases de donnes, de calcul pour un groupe d'environ 100 personnes ou moins. DEC, HP, SUN, IBM, SGI, Data General...

Poste de travail (workstation), (4K$ 50K$)


CAO, dveloppement de logiciel, graphisme, multimdia, SUN, HP, IBM, DEC, SGI, NeXT...

Micro-ordinateur (100 4 K$)


Bureautique, simple (traitement de texte, administration, jeux...) IBM, APPLE, HP, Dell,

Architecture des Ordinateurs

10

Objectifs du cours
Les notions suivantes sont traites:
Conception et architecture de lensemble des instructions (ISA) Familiarisation avec les oprations du niveau transfert registres Organisation du matriel en tant que chemin de donnes et unit de contrle Assemblage des composants pour construction des diffrents types de chemins de donnes du processeur Diffrents types de conception et dunit de contrle Organisation et conception du systme mmoire
Architecture des Ordinateurs 11

Notions darchitecture
Architecture des Ordinateurs ? Architecture de lensemble dinstructions de la machine + Organisation de la machine Architecture de lensemble dinstructions
Organisation dlments mmoires (registres, caches,). Reprsentation des types de donnes et structure de donnes. Ensemble dinstructions et leurs formats. Modes dadressage et types daccs aux lments data et instructions. Autres conditions exceptionnelles de la machine (Interruptions, erreurs,).
Architecture des Ordinateurs 12

Langages
Echange (int v[],int k,int k) { Programme en langage de haut niveau int temp ; (en C) temp = v[k] ; v[k] = v[k]; v[k] = temp; Compilateur C } Change: multi $2, S5, 4; add $2, $4, $2; . Assembleur 00000000101000010000000000011000 00000000100011100011000000100001.
Architecture des Ordinateurs

Programme en langage assembleur (pour MIPS)

Programme en langage machine binaire (pour MIPS)


13

Ensembles dinstructions
Exemples densembles dinstructions
Digital alpha HP PA-RISC SUN SPARC SGI MIPS INTEL (IA-32, )

Les caractristiques dun ensemble dinstructions seront introduites par la suite travers ltude dun ensemble rel dinstructions: MIPS.
Architecture des Ordinateurs 14

Notions darchitecture

Ordinateur personnel

Ordinateur Processeur Contrle Chemin de donnes Mmoire (programmes en excution) Entres

Clavier, Souries

Disque dur
Sorties

Ecran, Imprimante
Architecture des Ordinateurs 15

Evolutions technologiques
1985 : Invention du processeur sur une seule puce et de lordinateur sur une seule plaque (PC, Stations de travail, ) Processeur : (Chaque 1.5 anne depuis 85) 2X en vitesse Mmoire : (Chaque 2 ans depuis 96) Capacit : 2X (DRAM) (64X, dernire dcennie) Disque dur : (Chaque anne) Capacit : 2X (250X, dernire dcennie)
Architecture des Ordinateurs 16

Fonction darchitecte
Application (Netscape) Systme dexploitation Compilateur Assembleur (Windows 2K) Processeur Mmoire Systme dE/S Chemin de donnes & Contrle Digital Design Circuit Design
transistors

Software Hardware

Architecture de lensemble dinstructions

Coordination entre plusieurs niveaux dabstraction


Architecture des Ordinateurs 17

Fonction darchitecte Prvoir l'volution


Au moment de l'tude de march, le concepteur doit prvoir ltat de la comptition au moment o le nouvel ordinateur arrivera sur le march.

Architecture des Ordinateurs

18

Rfrences
Principales
David Patterson et John Hennessy. Organisation et conception des ordinateurs, Dunod, 1994. David Patterson and John Hennessy. Computer Organisation and Design, 2nd edition, Morgan Kaufman Publishers, Inc., 1997.

Autres
J. L. Hennessy and D. A. Patterson. Architecture des ordinateurs: une approche quantitative. 3me dition, Vuibert Informatique, 2003. Dominic Sweetman. See MIPS Run, 2nd edition, Morgan Kaufman Publishers, Inc. , 2003.
Architecture des Ordinateurs 19

Plan du cours
Chapitre
CHAPITRE I Introduction CHAPITRE II Rappels systmes logiques

Contenu
Introduction larchitecture des ordinateurs, volution, composants dun ordinateur, Rappel de notions de base des systmes logiques, Banc de registres, Multiplexeurs,

Rfrence livre
Appendix B.

Dure
1 sance.

Chapitre 1.

1 sance.

CHAPITRE III Modes dadressage, formats dinstructions, les composants du MIPS ISA MIPS ISA, le jeu dinstructions MIPS lite.

Chapitre 3. Appendix A.

2 sances.

Architecture des Ordinateurs

20

Plan du cours
Chapitre
CHAPITRE IV Conception des units arithmtiques

Contenu
Construction dUAL. Approche de conception Top Down et Bottom Up Algorithmes est chemins de donnes pour multiplication et division des entiers

Rfrence livre
Chapitre 4.

Dure
1 sance.

2 sances.

Architecture des Ordinateurs

21

Plan du cours
Chapitre
CHAPITRE V Conception de microprocesseur mono-cycle (MIPS lite) CHAPITRE VI Conception de microprocesseur multi-cycles (MIPS lite)

Contenu
Chemin de donnes. Unit de contrle.

Rfrence livre
Chapitre 5.

Dure
1 sance. 1 sance.

Chemin de donnes.

Chapitre 5.

1 sance.

Unit de contrle: implmentation cble.

1 sance.

1 sance.

Architecture des Ordinateurs

22

Plan du cours
Chapitre
CHAPITRE VII Conception de microprocesseur en pipeline (MIPS lite)

Contenu
Notions dexcution en pipeline. Alas de pipeline et mthodes rsolutions. Notion de chemin de donnes en pipeline. Technologies et types de mmoires. Intgration des caches

Rfrence livre
Chapitre 5

Dure
1 sance. 1 sance. 1 sance.

CHAPITRE VIII Systmes de mmoire

Chapitre 7.

1 sance.

1 sance.

Architecture des Ordinateurs

23

CHAPITRE II:

Rappel systmes logiques

Architecture des Ordinateurs

24

Logique combinatoire
Variables dentres:
Variables logiques indpendantes.

Variables de sorties:
Variables contenant ltat de la fonction aprs l valuation des oprateurs logiques sur les variables dentres.

Oprateurs logiques:
ET : z = u1.u2=u1u2, z est vraie si u1 est vraie et u2 est vraie. OU : z = u1+u2, z est vraie lorsque u1 est vraie ou u2 est vraie, ou les deux. NON : z = u, z est vraie si u est fausse.
Architecture des Ordinateurs 25

Logique combinatoire
Les portes logiques associes ces oprateurs sont reprsentes comme suit : (ET)AND (OU)OR (NON)NOT

Portes universelles : Porte NAND (NON-ET) et porte NOR (NON-OU)

x y

xy (c) NON-ET

x y

x+y (d) NON-OU

Portes Xor et XNor


Architecture des Ordinateurs 26

Logique combinatoire
Exemple : Fonction trois entres u1,u2 , et u3 et deux sorties x1 et x2 est reprsente par la table de vrit suivante. 23 entres u1 0 0 0 0 1 1 1 1 u2 0 0 1 1 0 0 1 1 u3 0 1 0 1 0 1 0 1 x1 x2 0 1 1 1 1 1 1 1 0 0 0 1 0 1 1 0 x1 = u1 + u2 + u3

x2 = u1u2u3+ u1u2u3 + u1u2u3

Architecture des Ordinateurs

27

Logique combinatoire
Lois de Morgan : (Transformation dquations logiques) u+v=u v uv =u+v Sorties dune fonction combinatoire: 1. Somme de produits x1 = u1u2u3 + u1u2u3 +u1u2u3 +u1u2u3 + u1u2u3 +u1u2u3 +u1u2u3 2. Produit de Sommes x1 = u1+ u2+u3 Formes canoniques utiles pour implmentation avec deux niveaux de portes
Architecture des Ordinateurs 28

Multiplexeur
Slectionner une parmi 2n entres et la transmettre la sortie. La slection est faite laide de n lignes dadresse. La notion usuelle de MUX est : MUX 2n 1. Par exemple, un MUX 8 1 aura trois lignes dadresse.

u1

u1 MUX y u2

0 1

u2

u3 2 u4 3

MUX

S y = (u1.S)+(u2.S)
Architecture des Ordinateurs

S1

S2

29

Dcodeur
Traduit lentre sur n bits en un signal correspondant sa valeur binaire S0 S1 S2 3 Dcodeur 3 pour 8 S3 Dcodeur S4 S5 S6 S7
E2 0 0 0 0 1 1 1 1 E1 0 0 1 1 0 0 1 1 E0 0 1 0 1 0 1 0 1 S7 0 0 0 0 0 0 0 1 S6 0 0 0 0 0 0 1 0 S5 0 0 0 0 0 1 0 0 S4 0 0 0 0 1 0 0 0 S3 0 0 0 1 0 0 0 0 S2 0 0 1 0 0 0 0 0 S1 0 1 0 0 0 0 0 0 S0 1 0 0 0 0 0 0 0
30

Architecture des Ordinateurs

Rseau logique programmable (RLP)


Un Rseau Compos de portes AND suivi dun rseau compos de portes OR u1 u2 u3

x1

x1 = ? x2 = ?
Architecture des Ordinateurs

x2

31

Rseau Logique Programmable (RLP)


Reprsentation Simplifie u1 u2

u3

x1 x2
Architecture des Ordinateurs 32

Mmoire morte (ROM)


Ralisation de fonctions logiques. Ensemble demplacements qui peuvent tre lus. Matrice de cellules capable de stocker de linformation unitaire (bit) Ensemble de lignes dadresse et un ensemble de sorties ROM codifie directement partir de la table de vrit un ensemble de fonctions logiques n fonctions m entres (ROM m lignes dadresse, 2m entres, entre (n bits))
Architecture des Ordinateurs 33

Horloges
Synchronisation. Logique squentielle pour spcifier quel moment un lment qui contient un tat doit tre mis jour. Les instants de stabilits des valeurs dun circuit.

Priode ou cycle Front montant Front descendant

Architecture des Ordinateurs

34

Horloges
Synchronisation par niveau (haut ou bas) Synchronisation par front (montant ou descendent)

Front actif (montant ou descendent) changement dtat Systme horloge (systme synchrone) lment dtat 1 Logique combinatoire lment dtat 2

Cycle dhorloge

Limite infrieure sur la priode dhorloge

Architecture des Ordinateurs

35

lments mmoires
Bistables et bascules Registres Mmoires

Bascule RS (asynchrone)
Set / Reset R Q S=1 Q=1 R=1 Q=0 S = 0, R = 0 valeur prcdente de Q S = 1, R = 1 tat illgal
36

Q S
Architecture des Ordinateurs

lments mmoires
Bascule bistable (synchrone)
Diffrence entre bistable et bascule (moment o lhorloge provoque le changement dtat actif) Bascule synchrone (tat modifi chaque fois que les entres changent et que lhorloge est 1) Bistable synchrone (tat nest modifi que sur un front dimpulsion de lhorloge)

Architecture des Ordinateurs

37

Bascule D (synchrone / niveau)


C Q
Horloge C = 1 nouvelle valeur de D remplace lancienne valeur

Q D

Stocker un signal

D C Q
Architecture des Ordinateurs 38

Bistable D (synchrone / front)


D
D Q D Q Q

Q Q

Bascule C D

Bascule C D

D C Q
Architecture des Ordinateurs 39

Banc de registres
Construction du chemin de donnes (BANC DE REGISTRES)
Registre lecture numro 1 Registre lecture numro 2 Registre criture Donne lue 2 Donne lue 1

Dcodeur pour chaque port de lecture ou criture

Ensemble de registres construits avec des bistables D

Donne crire

crire (Contrle de lcriture)

Architecture des Ordinateurs

40

Banc de registres
Registre lecture numro 1
C D C 0 D

R0 R1 . Rn-1
MUX

Donne lue 1

Registre lecture numro 2

Dcodeur

Numro Registre criture

n pour 1

C D

Rn

MUX

Donne lue 2

crire
Architecture des Ordinateurs 41

CHAPITRE III:

MIPS ISA

Architecture des Ordinateurs

42

Organisation dun ordinateur

contrle Mmoire Chemin de donnes Processeur

Entres

Sorties

Architecture des Ordinateurs

43

Architecture densemble dinstructions


ISA: Instruction Set Architecture Quest ce quon doit spcifier ?
Format et codification des instructions Emplacement des arguments rsultats
Mmoire ou autre Combien darguments explicites Quels arguments pouvant tre en mmoire

Type et taille des donnes Oprations Instructions de contrle


Sauts, conditions, branchements
Architecture des Ordinateurs 44

Les tapes du cycle instruction


Lire linstruction (Fetch)

Dcoder linstruction (Decode)

Lire les arguments (Fetch)

Excution (execute)

crire les rsultats (Store)

Instruction suivante
Architecture des Ordinateurs 45

Types dISA
4 types dISA : excution de C=A+B Machine pile (calculette HP) Push A Push B Add Pop C Load R1, A Add R1, B Store C, R1 Accumulateur, 1 seul registre (IBM 701) Load A Add B Store C Chargement-rangement (MIPS, SPARC) Load R2, B Add R3, R1, R2 Store C, R3

Registre-Mmoire (IBM 360, DEC VAX) Load R1, A

Architecture des Ordinateurs

46

ISA et registres
1975 1985 toutes les machines utilisent les registres
Les registres sont plus rapides que la mmoire Registre plus facile utiliser pour compilateur (A*B)-(C*D)-(E*F) Registres peuvent contenir des variables
Rduction trafic mmoire Densit du code samliore

Nouvelles ISA utilisent les registres Pipeline => Registres chargement-rangement


Architecture des Ordinateurs 47

MIPS ISA
230 octets mmoire Registres: 31 * 32 bits, R0=0 Registres flottants: 32 * 32 bits, utiliss en paires HI, LO, CP (compteur ordinal) R0 R1 R31 CP LO HI
Architecture des Ordinateurs 48

Types dISA
Depuis 1980, toutes les machines utilisent adresses au niveau de loctet (8 bits)
Puisqu'on peut lire un mot de 32 bits comme 4 octets en un seul coup, comment ces octets sont-ils rangs dans le mot ? Big-endian: ladresse de loctet le plus significatif est ladresse du mot
Numro doctet

Motorola, MIPS, SPARC

Little-endian: ladresse de loctet le moins significatif est ladresse du mot


Numro doctet

Intel 8086, VAX, Alpha

Un mot peut tre plac nimporte o en mmoire? La plupart des instructions de chargement-rangement oprent sur des donnes alignes (son adresse mmoire est multiple de sa taille en octets).
Architecture des Ordinateurs 49

Format des instructions


Taille variable, multiple dun certain nombre de bits Taille fixe (exemple, 32 pour instruction MIPS) Taille hybride Types doprations na pas chang Transfert data : (load, store, move, input, output, push, pop) Arithmtique : entier (binaire, dcimal), Float (add, substract, multiply, divide) Shift left|right, rotate left|right logique not, and or set clear Subroutine linkage call return Interruption trap return Graphique word ops
Architecture des Ordinateurs 50

Instructions 8086
cond branch compare store add and sub Mov reg-reg call return 20% 16% 12% 8% 6% 5% 4% 1% 1% 96% Remarque: les instructions simples dominent le code
Architecture des Ordinateurs 51

Instructions MIPS
Instructions arithmtiques f = ( g + h ) - (i + j ); Oprations quivalentes en MIPS add t0,g,h add t1,i,j sub f,t0,t1 # variable temporaire t0 contient g+h # variable temporaire t1 contient i+j # f reoit t0-t1 , ou (g+h) - (i+j)

Les 32 registres de MIPS seront nots $0.$31 add $8,$17,$18 # registre $8 contient g+h add $9,$19,$20 # registre $9 contient i+j sub $16,$8,$9 #f reoit $8-$9 (c--d (g+h)-(i+j)) Remarque : les registres $8,$9 correspondent aux variables temporaires t0 et t1 de l'exemple prcdent
Architecture des Ordinateurs 52

Instructions MIPS
On ne peut stocker qu'une petite quantit de donnes dans les registres. La mmoire d'un ordinateur contient des millions de donnes lmentaires, et les structures de donnes, telles que les tableaux, sont donc stockes en mmoire Les oprations arithmtiques ont lieu dans les registres. Pour cela MIPS dispose d'oprations qui transfrent les donnes entre la mmoire et les registres appeles instructions de transfert de donnes. Pour accder une donne en mmoire, l'instruction doit fournir son adresse .

On a deux types d'instructions de transfert de donnes : Chargement lw : instruction qui dplace un mot de la mmoire vers un registre (LOAD) Rangement sw : instruction qui transfert les donnes d'un registre vers la mmoire (STORE).
Architecture des Ordinateurs 53

Instructions MIPS (chargement)


T : un tableau de X lments et le compilateur associe les variables g, h et i aux registres $17,$18 et $19 . Supposons aussi que le tableau dbute l'adresse Tstart. Expression en langage C : g = h + T[i]; Assembleur MIPS : lw $8,Tstart($19) # le registre temporaire $8 reoit T[i] add $17,$18,$8 # g = h+T[i] Processeur Adresse 0 4 8 12
Architecture des Ordinateurs

Mmoire 104 10 1010 1


54

Instructions MIPS(rangement)

Les adresse des mots sont dcals de 4 dans la mmoire : ($19 devra contenir 4*i). Expression en langage C : T[i] = h + T[i]; Assembleur MIPS : lw $8,Tsart($19) # le registre temporaire $8 reoit T[i] # le registre $8 reoit h+T[i] # on recopie h+T[i] dans T[i]

add $8,$18,$8 sw $8,Tstart($19)

Architecture des Ordinateurs

55

Arithmtiques transfert de donnes


Arithmtiques :
add $1, $2, $3 sub $1, $2, $3 addi $1, $2, 100 # $1 = $2 + $3 # $1 = $2 - $3 # $1= $2+100

Transfert de donnes :
lw $1, 100($2) sw $1, 100($2) lui $1, 100 # $1 = Mmoire[$2 + 100] # Mmoire [$2 +100]=$1 # $1= 100*216

Architecture des Ordinateurs

56

Format dinstruction (type R)


Instruction daddition : add $8, $17, $18 # $8 = $17 + $18

Combinaison en nombre dcimaux :


0 17 18 8 0 32

add 32 sub 34

champ Reprsentation en nombre binaire


000000 10001 6 bits 5 bits 10010 5 bits 01000 5 bits 00000 5 bits 100000 6 bits

Instruction type R
31 op 26 rs 21 rt 16 rd 11 decval 6 funct 0
57 Architecture des Ordinateurs

Format dinstruction (type I)


Instruction de chargement : lw $8, 100($18) # registre temporaire $8 reoit la valeur # existante dans mmoire [$18+100]

Combinaison en nombre dcimaux :


35 19 8 100

lw 35 sw 43 Instruction type I
op 6 bits rs 5 bits rt 5 bits immediate 16 bits

Architecture des Ordinateurs

58

MIPS compare et branch (dcisions)


Branchement conditionnel : beq reg1,reg2, E1 Aller la squence tiquet par E1 si la valeur contenue dans le reg1 est gale la valeur contenue dans reg2. bne reg1,reg2, E1 Aller la squence tiquet par E1 si la valeur contenue dans le reg1 est non gale la valeur contenue dans reg2. Comparaison : slt $1,$2, $3 slti $1,$2, 100
Architecture des Ordinateurs

# si $2<$3 alors $1=1 sinon $1=0 # si $2<100 alors $1=1 sinon $1=0
59

MIPS compare et branch (dcisions)


Exemple en C: if (i==j) goto E1; f = g+h E1: f = f = f-i; F,g,h,i,j correspondent aux cinq registres $17 $21 Assembleur MIPS : beq $20,$21,E1 add $17,$18,$19 E1: sub $17,$17,$20
Architecture des Ordinateurs

# aller en E1 si i==j # f = g+h #f = f-i


60

MIPS compare et branch (dcisions)


Exemple en C: if (i==j) f = g+h; else f=g-h;

Assembleur MIPS : bne $20,$21,Else add $17,$18,$19 j Exit Else : sub $17,$18,$19 Exit : Nouvelle instruction :
Architecture des Ordinateurs

# aller Else si ij # f = g+h # aller exit #f = g-h

j Exit
61

Format dinstruction (type J)


Instruction type J
op 6 bits adresse 26 bits

Exemple :

J 2000
2 6 bits 1000 26 bits

Diffrents formats dinstructions MIPS


31 R-type I-type J-type op op op 26 rs rs 21 rt rt 16 rd 11 decval immediate Address destination 6 funct 0 add, sub ori, lw, sw, beq j, jal
62

Architecture des Ordinateurs

Exemple
Code en C : switch (k) { case 0: f=i+j; break; case 1: f=g+h; break; case 2: f=g-h; break; case 3: f=i-j; break; } Assembleur MIPS : mult $9,$10,$21 lw $8, Tablesaut($9) jr $8 E0 : E1 : E2 : E3 : Exit: 4 mots en mmoire partir de table saut contiennent E0,E1,E2,E3 f,g,h,i,j,k $16..$21
Architecture des Ordinateurs

$10 4

63

Traitement des procdures


Procdure A Procdure B Procdure C diteur de liens 0 : procdure A 64 : procdure B 112 procdure C

Les rfrences croises entre les modules Saut de procdure. Retour linstruction qui suit lappel. Passage des paramtres Imbrication des procdures
Architecture des Ordinateurs 64

MIPS: traitement des procdures


Instruction jal (saut avec lien) jal AdresseProcedure Un lien est cre vers le site appelant la procdure. Ce lien est rang dans $31 Adresse de retour Le saut de retour est effectu par linstruction : jr $31

$31

CP: compteur de programme (registre dadresse dinstruction)

Cas plus compliqu lorsque une procdure appelle une autre procdure Vider le registre $31 dans la mmoire
Architecture des Ordinateurs 65

MIPS: traitement des procdures


Procdure appelle une autre et Structure PILE (LIFO) Pointeur vers son sommet indiquant lendroit de lemplacement des registres vider.

$29
Considrons lexemple suivant : A: Jal B jr $31 B: Jal C jr $31 C:
Architecture des Ordinateurs

jr $31
66

Exemple appels de procdures


1. Aprs l'appel de B par A
Mmoire

3. Aprs l'appel de C par B Mmoire

$31
Adresse retour de B

$31
Adresse retour de C Adresse retour de B

$29

$29

2. Juste avant que B appelle C

4. Aprs l'appel de C par B


Mmoire

Mmoire

$31
Adresse retour de B Adresse retour de B

$31
Adresse retour de B Adresse retour de B

$29

$29

Architecture des Ordinateurs

67

Modes dadressage de MIPS


1. Adressage par registre
31 op 26 rs 21 rt 16 rd 11 decval 6 funct 0

registre Oprande est un registre 2. Adressage index


op rs rt adresse

Add $4,$2,$3

registre + lw $1,100($2) Oprande se trouve lemplacement mmoire


Architecture des Ordinateurs 68

Mmoire

Modes dadressage de MIPS


3. Adressage immdiat
op 6 bits rs 5 bits rt 5 bits immdiat 16 bits

addi $1,100 Oprande constante 4. Adressage relatif CP


op rs rt adresse

CP bne $1,$2,100 +
Mmoire

Rq. des mots sparant l instruction de branchement de l instruction cible


Architecture des Ordinateurs 69

MIPS instructions arithmtiques


Instruction add sous add immediate add non sign sous non sign add imm. non sig mul Mul non sign div div non sign Move from Hi Move from Lo Exemple signification add $1,$2,$3 $1 = $2 + $3 sub $1,$2,$3 $1 = $2 $3 addi $1,$2,100 $1 = $2 + 100 addu $1,$2,$3 $1 = $2 + $3 subu $1,$2,$3 $1 = $2 $3 addiu $1,$2,100 $1 = $2 + 100 mult $2,$3 Hi, Lo = $2 x $3 multu$2,$3 Hi, Lo = $2 x $3 div $2,$3 Lo = $2 $3, Hi = $2 mod $3 divu $2,$3 Lo = $2 $3, Hi = $2 mod $3 mfhi $1 $1 = Hi mflo $1 $1 = Lo Commentaire 3 oprandes; exception possible 3 oprandes; exception possible + constante; exception possible 3 oprandes; pas dexception 3 oprandes; pas dexception + constante; pas dexception 64-bit produit sign 64-bit produit non sign Lo = quotient, Hi = reste reste et quotient non sign utils pour avoir une copie de Hi utilis pour avoir une copie de Lo

Architecture des Ordinateurs

70

MIPS instructions logiques


Instruction and or xor nor and immediat or immediat xor immediat shift left logical shift right logical shift right arithm. shift left logical shift right logical shift right arithm. Exemple and $1,$2,$3 or $1,$2,$3 xor $1,$2,$3 nor $1,$2,$3 andi $1,$2,10 ori $1,$2,10 xori $1, $2,10 sll $1,$2,10 srl $1,$2,10 sra $1,$2,10 sllv $1,$2,$3 srlv $1,$2, $3 srav $1,$2, $3 Signification $1 = $2 & $3 $1 = $2 | $3 $1 = $2 ^ $3 $1 = ~($2 |$3) $1 = $2 & 10 $1 = $2 | 10 $1 = ~$2 &~10 $1 = $2 << 10 $1 = $2 >> 10 $1 = $2 >> 10 $1 = $2 << $3 $1 = $2 >> $3 $1 = $2 >> $3 Commentaire 3 reg. oprandes; Logical AND 3 reg. oprandes; Logical OR 3 reg. oprandes; Logical XOR 3 reg. oprandes; Logical NOR Logical AND reg, constante Logical OR reg, constante Logical XOR reg, constante Shift left par constante Shift right par constante Shift right (extention du signe) Shift left par variable Shift right par variable Shift right arith. par variable

Architecture des Ordinateurs

71

MIPS instructions de transfert de donnes


Instruction sw $3, 500($4) sh $3, 502($2) sb $2, 41($3) lw $1, 30($2) lh $1, 40($3) lhu $1, 40($3) lb $1, 40($3) lbu $1, 40($3) lui $1, 40 Comment enreg. Dun mot en mmoire enreg. Dun demi-mot enreg. Dun bit chargement dun mot chargement dun demi mot chargement dun demi-mot non sign chargement dun bit chargement dun bit non sign Load Upper Immediate (16 bits shifted left par 16)
LUI R5
Architecture des Ordinateurs

R5 0000 0000
72

MIPS instructions de comparaison et branchement


Instruction branch on equal branch on not eq. set on less than set less than imm. set less than uns. set l. t. imm. uns. jump jump register jump and link Exemple Signification beq $1,$2,100 Si ($1 == $2) go to CP+4+100 Egale test; CP relative branch bne $1,$2,100 Si ($1!= $2) go to PC+4+100 Non gale test; CP relative slt $1,$2,$3 Si ($2 < $3) $1=1; else $1=0 Compare < 2s comp. slti $1,$2,100 if ($2 < 100) $1=1; else $1=0 Compare < constante; 2s comp. sltu $1,$2,$3 if ($2 < $3) $1=1; else $1=0 Compare<; natural nombres sltiu $1,$2,100 if ($2 < 100) $1=1; else $1=0 Compare < constante; natural nombres j 10000 go to 10000 saut une adresse jr $31 go to $31 retour de procdure jal 10000 $31 = PC + 4; go to 10000 appel de procdure
73

Architecture des Ordinateurs

CHAPITRE IV:

Conception des units arithmtiques

Architecture des Ordinateurs

74

Notions de base Approche top-down et bottom-up Conception UAL

Architecture des Ordinateurs

75

Arithmtique des ordinateurs


Comment les nombres ngatifs sont-ils reprsents ? Quel est le plus grand nombre qui puisse tre reprsent par un mot machine ? Que se passe-t-il si une opration gnre un nombre plus grand que ce qui est possible de reprsenter ? Qu'en est-il des fractions et des nombres rels ?

Comment le matriel fait-il rellement pour additionner, soustraire, multiplier ou diviser des nombres le plus rapidement possible ? Le but de ce chapitre est de dvoiler ce mystre, en particulier, la reprsentation des nombres, les algorithmes arithmtiques
Architecture des Ordinateurs 76

Reprsentation des nombres


1011 en base 2, reprsente : ( 1 * 23) + ( 1 * 22) + ( 0 * 21) + ( 1 * 20)dix = ( 1 *8 ) + ( 1*4 ) + ( 0 * 2 ) + ( 1*1 ) dix = 8 + 4 + 0 + 1 dix = 11 dix Puisqu'un mot MIPS possde 32 bits, le nombre 1101deux sera reprsent comme suit: (32 bits de large ) Le bit du poids faible est le bit le plus droite. Le bit du poids fort est le bit le plus gauche.

0000 0000 0000 0000 0000 0000 0000 1101

Architecture des Ordinateurs

77

Reprsentation des nombres


Reprsentation distinguant le positif du ngatif :
Utilisation de 1 bit de signe : 0 va avoir une reprsentation positive et ngative Un nombre ayant deux reprsentations est plus grave qu'un dsquilibre entre les nombres positifs et les nombres ngatifs. Complment 2 (adopter pour les ordinateurs 32 bits)

0000 0000 0000 0000 0000 0000 0000 0000deux = 0 dix 0000 0000 0000 0000 0000 0000 0000 0001deux = 1dix 0000 0000 0000 0000 0000 0000 0000 0010deux = 2dix
..................................................................................

0111 1111 1111 1111 1111 1111 1111 1110deux = 2.147.483.646dix 0111 1111 1111 1111 1111 1111 1111 1111deux = 2.147.483.647dix
Architecture des Ordinateurs 78

Reprsentation des nombres


0000 0000 0000 0000 0000 0000 0000 0000deux = 0 dix 0000 0000 0000 0000 0000 0000 0000 0001deux = 1dix 0000 0000 0000 0000 0000 0000 0000 0010deux = 2dix
..................................................................................

0111 1111 1111 1111 1111 1111 1111 1110deux = 2.147.483.646dix 0111 1111 1111 1111 1111 1111 1111 1111deux = 2.147.483.647dix 1000 0000 0000 0000 0000 0000 0000 0000deux = -2.147.483.648 dix 1000 0000 0000 0000 0000 0000 0000 0001deux = -2.147.483.647 dix
..................................................................................

1111 1111 1111 1111 1111 1111 1111 1110deux = -2 dix 1111 1111 1111 1111 1111 1111 1111 1111deux = -1 dix
Architecture des Ordinateurs 79

Reprsentation des nombres


Cette convention s'appelle complment deux : tous les nombres ngatifs ont un 1 comme bit de poids fort. Le matriel n'a donc besoin de tester que ce bit pour dterminer si un nombre est positif ou non . Ce bit particulier est appel souvent le bit de signe. Un nombre binaire de 32 bits sera alors reprsent comme suit : (x31 * -231)+ ( x30 * 2 30 ) + ................+ ( x1 * 2 1 ) + (x0 * 20) xi : signifie : le ime bit de x x + (-x) = 0 1 seul nombre ngatif -2.147.483.648 dix qui n a pas de nombre positif correspondant
Architecture des Ordinateurs 80

Reprsentation des nombres


Exemple: Prendre l'oppos de 2 dix et ajouter 1 2 dix = 0000 0000 0000 0000 0000 0000 0000 0010 deux Prendre l'oppos de ce nombre en inversant ses bits et en ajoutant 1 donne : 1111 1111 1111 1111 1111 1111 1111 1101 deux + 1 deux --------------------------------------------------------= 1111 1111 1111 1111 1111 1111 1111 1110 deux = -2 dix
Architecture des Ordinateurs 81

Reprsentation des nombres


Par consquent :

-x = x + 1 La manire de convertir un nombre binaire reprsent avec n bits en un nombre reprsent avec plus de n bits: extension signe. Rpliquer le bit du signe: 2 dix -2 dix (16)bits : 0000 0000 0000 0010 deux (32)bits : 0000 0000 0000 0000 0000 0000 0000 0010 deux (16) bits : 1111 1111 1111 1110 deux (32) bits : 1111 1111 1111 1111 1111 1111 1111 1110 deux
Architecture des Ordinateurs 82

Oprations logiques du MIPS


On peut faire des dcalages droite ou gauche de tous les bits d'un mots tout en remplissant les bits vids par des zros. Exemple : le registre $16 contient 0000 0000 0000 0000 0000 0000 0000 1101deux Une instruction de dcalage de 8 bits vers la gauche du contenue du registre $16 va donner comme rsultat: 0000 0000 0000 0000 0000 1101 0000 0000 deux Il existe deux instructions pour ce genre d'opration : sll (shift left logical ) Dcalage gauche . srl (shift right logical ) Dcalage droite . Soit l'instruction MIPS suivante sll $10 , $16 , 8 # reg $10 = reg $16 << 8 bits
Architecture des Ordinateurs 83

Oprations logiques du MIPS


Sll et srl sont deux oprations logiques dans le format de l'instruction en MIPS et du type R , ici la valeur de dcalage 8 est mise dans le champs decval , la version en langage machine sera alors : op 0 rs 0 rt 16 rd 10 decval 8 fonct 0

Architecture des Ordinateurs

84

Oprations logiques du MIPS


and $8,$9,$10 $9 contient : 0000 0000 0000 0000 0000 1101 0000 0000 deux $10 contient : 0000 0000 0000 0000 0011 1100 0000 0000 deux $8 contient 0000 0000 0000 0000 0000 1100 0000 0000 deux or $8,$9,$10 # reg $8 = reg $9 OU reg$10 $8 contient 0000 0000 0000 0000 0011 1101 0000 0000 deux andi $8,$9,100 ori $8,$9,100
Architecture des Ordinateurs

# reg $8 = reg $9 ET reg$10

# reg $8 = reg $9 ET 100 # reg $8 = reg $9 OU 100


85

Processus de conception
Conception
CPU

La conception est lassemblage Datapath Control des diffrents composants. Regs Shifter Dcomposition de haut en bas ALU dune fonction complexe (fonctionnement) fonctions Nand primitives. Gate

Commencer par les petits lments pour aboutir un ensemble plus complexe (du bas en haut) La conception est un processus de cration et non une simple mthode!!
Architecture des Ordinateurs 86

Conception de lUAL
Exigences : add, addu, sub, subu, addi, addiu and, or, andi, ori beq, bne, slt, slti, sltu, sltiu

addu, subu, addiu: (sans dtection de dbordement). add, sub, addi: (dtection de dbordement).

Architecture des Ordinateurs

87

Format des instructions arithmtiques de MIPS


31 Type-R : Type-I :
Type ADDI

25 Rs Rs
funct xx xx xx xx xx xx xx xx

20 Rt Rt
Type ADD

15 Rd Immed 16
op 00 funct 40 41 42 43 44 45 46 47

5 funct

op op
op 10

Type SLT

op 00

funct 52 53

ADDIU 11 SLTI SLTIU ANDI ORI XORI LUI 12 13 14 15 16 17

ADDU 00 SUB 00

SLTU 00

SUBU 00 AND OR XOR NOR 00 00 00 00

Architecture des Ordinateurs

88

Conception UAL: exigences


Spcification fonctionnelle
Entres: 2 x 32-bit oprandes A, B, 4-bit pour mode. Sorties: 32-bit rsultat S, 1-bit retenu, 1 bit dbordement Oprations: add, addu, sub, subu, and, or, xor, nor, slt, sltU

Diagramme de bloc :
32 A c ovf B 32

UAL
S 32

4 m

Oprations signes : dbordement pas de retenue !


Architecture des Ordinateurs 89

Dcomposition du diagramme de bloc


A 32 B 32

b31 ALU31 m co s31 cin

a31

b0 ALU0 m co cin s0

a0

4 M

Ovflw 32 S

Ralisation de lUAL de 32 bits en termes de 32 UAL 1 bit


Architecture des Ordinateurs 90

Conception de UAL 1 bit

Les oprations logiques :


S-select
A

and

Result

Mux

or
B

Architecture des Ordinateurs

91

Conception de UAL 1 bit


Cin
A B 1-bit Full Adder

Cout
0 + 0 1 (0) 1 0 0 (1) 1 1 0(1) 1 0 1 (0)

Cin A B S

Fonction combinatoire

Architecture des Ordinateurs

Cout

92

Assemblage (ajout de add)


S-select
CarryIn

and

or

Result

Mux

1-bit Full Adder

add

CarryOut

Architecture des Ordinateurs

93

Oprations additionnelles (sub)


A - B = A + ( B) = A + B + 1 Mettre Invert 1 et mettre CarryIn 1
invert
A

S-select
CarryIn

and

or

Result

Mux

B Mux
Architecture des Ordinateurs

1-bit Full Adder

add

CarryOut

94

Exercices
Quen est-il pour linstruction slt ? Quen est-il pour le branchement conditionnelle ?
32 c A ovf S 32 32 B 32 4 m

UAL

rsultat

zro

Architecture des Ordinateurs

95

Diagramme de bloc
Mode et dbordement
A 32 B 32

a31

b31

a0

b0

4 M Produire S-select, Invert, c-in,

ALU0 co cin s31

ALU0 co cin s0

Dbordement
Architecture des Ordinateurs

32

96

Dbordement
Dcimale 0 1 2 3 4 5 6 7 binaire 0000 0001 0010 0011 0100 0101 0110 0111 Dcimale 0 -1 -2 -3 -4 -5 -6 -7 -8 Complment de 2 0000 1111 1110 1101 1100 1011 1010 1001 1000

Exemples: 7 + 3 = 10 mais ... - 4 - 5 = - 9 mais ...


0 1 0 + 0 1 1 1 0 0 1 1 1 1 1 1 0 7 3 6 + 1 1 1 0 1 0 1 0 1 1 0 1 1 4 5 7
97

Architecture des Ordinateurs

Dtection de dbordement
Dbordement: le rsultat est assez grand ou assez petit pour tre reprsent. Exemple: - 8 4-bit nombre binaire 7 Lorsquon additionne deux nombres de signes diffrents Pas de dbordement Dbordement se prsente lorsquon additionne : 2 nombres positifs et leur somme est ngative. 2 nombres ngatifs et leur somme est positive. Prouver que si: Carry in UAL31 Carry out UAL31 on peut dtecter le dbordement!
0 1 0 + 0 1 1 1 0 0 1 1 1 1 1 1 0 7 3 6 + 1 0 1 1 0 1 0 1 0 1 1 0 1 1 4 5 7
98

Architecture des Ordinateurs

Logique de dtection de dbordement


Dbordement = CarryIn[N - 1] XOR CarryOut[N - 1]
CarryIn0 A0 B0 A1 B1 A2 B2 A3 B3 1-bit Result0 ALU CarryIn1 CarryOut0 1-bit Result1 ALU CarryIn2 CarryOut1 1-bit ALU CarryIn3 1-bit ALU Result3 Result2 Overflow X 0 0 1 1 Y 0 1 0 1 X XOR Y 0 1 1 0

CarryOut3
Architecture des Ordinateurs 99

Amlioration de la performance (mthode de la retenue anticipe)


C0 = Cin A0 B0 S C1 = G0 + C0 P0 A1 B1 A2 B2 G P S A 0 0 1 1 B 0 1 0 1 C-out 0 stop C-in propager C-in propager 1 gnrer

G P

G = A and B gnre une retenue P = A xor B propage une retenue C2 = G1 + G0 P1 + C0 P0 P1

G P

S C3 = G2 + G1 P2 + G0 P1 P2 + C0 P0 P1 P2

A3 B3

G P

G P C4 = . . .
100

Architecture des Ordinateurs

Amlioration de la performance (mthode de la retenue anticipe) C0 C


L A G0 P0 C1 = G0 + C0 P0

4-bit Adder C2 = G1 + G0 P1 + C0 P0 P1 4-bit Adder C3 = G2 + G1 P2 + G0 P1 P2 + C0 P0 P1 P2 4-bit Adder


Architecture des Ordinateurs

G P

C4 = . . .

101

Multiplication et division des entiers

Architecture des Ordinateurs

102

Autres exigences: multiplication et division


Instruction add subtract add immediate add unsigned subtract unsigned add imm. unsign. multiply multiply unsigned divide divide unsigned Move from Hi Move from Lo Example Meaning add $1,$2,$3 $1 = $2 + $3 sub $1,$2,$3 $1 = $2 $3 addi $1,$2,100 $1 = $2 + 100 addu $1,$2,$3 $1 = $2 + $3 subu $1,$2,$3 $1 = $2 $3 addiu $1,$2,100 $1 = $2 + 100 mult $2,$3 Hi, Lo = $2 x $3 multu$2,$3 Hi, Lo = $2 x $3 div $2,$3 Lo = $2 $3, Hi = $2 mod $3 divu $2,$3 Lo = $2 $3, Hi = $2 mod $3 mfhi $1 $1 = Hi mflo $1 $1 = Lo Comments 3 operandes; exception possible 3 operandes; exception possible + constante; exception possible 3 operandes; no exceptions 3 operandes; no exceptions + constante; no exceptions 64-bit signed product 64-bit unsigned product Lo = quotient, Hi = remainder Unsigned quotient & remainder Used to get copy of Hi Used to get copy of Lo

Architecture des Ordinateurs

103

Multiplication sans signe


Exemple de multiplication (non signe): Multiplicande 1000 Multiplicateur 1001 1000 0000 0000 1000 Produit 01001000 m bits x n bits = m+n bit produit (en ignorant le bit de signe) Multiplication binaire est simple: 0 => place 0 ( 0 x multiplicande) 1 => place une copie ( 1 x multiplicande) 4 versions de multiplications (matriel et algorithme):
Architecture des Ordinateurs 104

Multiplication sans signe


0 A3 A2 0 A1 0 A0 0 B0

A3

A2

A1

A0

B1

A3

A2

A1

A0

B2

A3

A2

A1

A0

B3

P7

P6

P5

P4

P3

P2

P1

P0

Stage i accumule A * 2 i if Bi == 1 Pour multiplier 32 bits pb. de hardware?


Architecture des Ordinateurs 105

Multiplication sans signe


0 0 0 A3 A2 A1 A0 P3 P2 P1 P0 A2 A1 A0 A1 A0 A0 B0 B1

A3 A3 A3 P7 P6 A2 P5 A2 A1 P4

B2 B3

chaque stage shift A left ( x 2). Utiliser le bit suivant de B pour dterminer si la somme sera ralise A chaque stage on accumule 2n bits produit partiel.
Architecture des Ordinateurs 106

Chemin de donnes multiplication (Version 1)


Registre Multiplicande (64-bit), UAL 64-bit, registre produit (64-bit), registre multiplicateur (32-bit).
Multiplicande 64 bits Dcalage gauche

Multiplicateur

Dcalage droite

64-bit UAL

32 bits Ecriture Contrle

Produit 64 bits

Multiplicateur = chemin de donnes + contrle


Architecture des Ordinateurs 107

Algorithme de multiplication (Version 1)


dbut =1
1. Tester Multiplicateur0

=0

1a. Additionner multiplicande au produit & placer le rsultat dans le registre Produit

2. Dcaler le registre Multiplicande de 1 bit gauche.


Produit 0000 0000 0000 0010 0000 0110 0000 0110 0000 0110 Multiplicateur 0011 1 0001 2 0000 3 0000 4 0000 Multiplicande 0000 0010 0000 0100 0000 1000 0001 0000 0010 0000

3. Dcaler le registre Multiplicateur de 1 bit droite.

Rptition 32?

Non

Oui
Architecture des Ordinateurs

Fin

108

Observations sur la (Version 1)


La moiti (1/2) des bits du multiplicande tait toujours 0 => 64-bit UAL (add) semble beaucoup (lente et peu conomique) 0s sont insrs gauche du multiplicande lors du dcalage => une fois cres, les bits de poids faible du produit ne peuvent jamais changer. Que se passe t-il si on dcale le produit droite?

Maintenir le multiplicande fixe et faire le dcalage du produit!

Architecture des Ordinateurs

109

Hardware multiplication (Version 2)


Registre Multiplicande (32-bit), UAL (32 -bit), registre Produit 64-bit, registre Multiplicateur 32-bit.

Multiplicande 32 bits Multiplier 32-bit UAL Dcalage droite Product 64 bits Ecriture Contrle 32 bits Dcalage droite

Architecture des Ordinateurs

110

Comment a marche?
0 A3 0 A2 A1 0 0 A0 B0

A3

A2

A1

A0 B1

A3

A2

A1

A0

B2

A3

A2

A1

A0

B3

P7
Architecture des Ordinateurs

P6

P5

P4

P3

P2

P1

P0
111

Algorithme de multiplication (Version 2)


dbut =1 1. Tester Multiplicateur0 =0

1a. Additionner multiplicande la moiti gauche du produit & place le rsultat dans la moiti gauche du registre produit Product Multiplier Multiplicand 0000 0000 0011 0010 1: 0010 0000 0011 0010 2: 0001 0000 0011 0010 1 3: 0001 0000 0001 0010 1: 0011 0000 0001 0010 2: 0001 1000 0001 0010 2 3: 0001 1000 0000 0010 1: 0001 1000 0000 0010 2: 0000 1100 0000 3 0010 3: 0000 1100 0000 0010 1: 0000 1100 0000 0010 2: 0000 0110 0000 0010 4 3: 0000 0110 0000 0010
Architecture des Ordinateurs

2. Dcaler le registre produit droite de 1 bit.

3. Shift le registre multiplicateur droite de 1 bit.

Rptition 32? Oui Fin

Non

0000 0110

0000

0010

112

Observations sur la (Version 2) et hardware de la (Version 3)


Seule la partie gauche du produit est modifie. (sur 32 bits) Combiner le registre produit et le registre multiplicateur (gagner de lespace) Registre multiplicande (32-bits), UAL 32-bits, Registre produit (64-bits) dont 32 registres multiplicateurs
Multiplicande

32 bits
32-bit UAL

Dcalage droite Produit


(Multiplicateur)

Contrle Ecriture
113

64 bits
Architecture des Ordinateurs

Algorithme de multiplication (Version 3)


dbut =1 1. Tester Produit0 =0

1a. Additionner multiplicande la moiti gauche du produit & Placer le rsultat dans la moiti gauche du registre produit

Multiplicande 0010 0010

0010 0010 0010

2 3 4

Produit 0000 0011 0010 0011 0001 0001 0011 0001 0001 1000 0000 1100 0000 0110

2. Dcaler le registre produit droite de 1 bit.

Rptition 32? Oui Fin

Non

Architecture des Ordinateurs

114

Observations sur la version 3 de la multiplication


2 tapes pour chaque calcul d'un bit (multiplicateur et produit combins) Hi/Lo sont les deux demies parties du registre produit gauche et droite MultU, multiplication non signe Comment raliser la multiplication dune manire plus vite? Comment on traite la multiplication signe? Multiplication positive jusquau 31 bits puis appliquer le bit de signe (appliquer la dfinition du complment 2) Algorithme de Booth est une manire lgante pour la multiplication des nombres signs en utilisant le mme matriel utilis en version 3; de plus on gagne dans certains cycles. Architecture des Ordinateurs 115

Exemple 2 x 6 = 0010 x 0110:


x + + + + 0110 0000 0010 0010 0000 00001100

Motivation pour lalgorithme de Booth


0010 dcalage addition addition dcalage (0 (1 (1 (0 multiplicateur) multiplicateur) multiplicateur) multiplicateur)

UAL addition ou soustraction peut avoir le mme rsultat mais de manire diffrente: 6 = 2 + 8 0110 = 00010 + 01000 = 11110 + 01000 Par exemple 0010 x 0110 0000 dcalage(0 multiplicateur) 0010 sub(le premier 1 du multiplicateur) 0000 dcalage (les 1 de milieu) + 0010 addition (juste aprs la liste des 1) 00001100
Architecture des Ordinateurs 116

Algorithme de booth
Bit courant Example 1 0 0001111000 1 1 0001111000 0 1 0001111000 0 0 0001111000 Bit droite Explication Op dbut d exe. des 1s sub milieu d exe. des 1s rien fin d exe. des 1s add milieu d exe. des 0s rien

temps dexcution est meilleur (dcalage est plus rapide que l addition) Remplacer la chane de 1s dans le multiplicateur par une soustraction lorsquon identifie le premier 1et une addition pour le bit juste aprs le dernier 1 de la chane.
Architecture des Ordinateurs 117

Exemple (2 x 7), algorithme de Booth


Opration Multiplicande Produit 0000 0111 0 suivant? 10 -> sub 0. Val. initiale 0010

1a. P = P - m dec. P (ext. signe) 1b. nop, dec. 2. 3. 01 -> add 4a. 0010 0010

1110

+ 1110 1110 0111 0 11 -> 1111 1001 1 1111 1100 1 0010 dec. fin
118

1111 0011 1

0010 11 -> nop, dec. 0010 + 0001 1100 1

4b. 0010 Architecture des Ordinateurs

0000 1110 0

Exemple (2 x -3), algorithme de Booth


Opration Multiplicande Produit 0000 1101 0 suivant? 10 -> sub 0. Val. initiale 0010

1a. P = P - m 0 1b. add 2a. 2b. sub 3a. 3b. 11 -> nop 4a 4b. 0010 Architecture des Ordinateurs 0010 0010 0010

1110

dec. P (ext. signe) 0010 1111 0110 1

+ 1110 1110 1101 01 -> + 0010 dec. P 10 -> + 1110 dec. 1111 0101 1

0001 0110 1 0000 1011 0 1110 1011 0

1111 0101 1 1111 1010 1

dec. Fin
119

Preuve de lalgorithme de Booth (reprsentation complment de 2)


Soit a: multiplicateur et b: multiplicande, ai: le ime bit de a. ai 0 0 1 1 ai-1 0 1 0 1 opration Ne rien faire Ajout de b Soustraire b Ne rien faire ai-1-ai 0 1 -1 0

Un dcalage gauche du multiplicande peut tre considr comme une multiplication par une puissance de 2

ab(selon Booth)=(a1a0)b+(a0a1)b21+...+(a29a30)b230+(a30a31)b231 =b(a31(231)+a30(230)+....+a0(20)).


Reprsentation en complment 2
Architecture des Ordinateurs 120

Observations sur lalgorithme de Booth


Problme pour des 1 isols (addition suivie dune soustraction) Rsolution du problme grce l la factorisation judicieuse de la reprsentation en complment 2

Exercice
Algorithme de Booth , rduire le nombre dop. viter les op. en prsence de 0 et 1. Modifier lalgorithme de Booth pour traiter 3 bits la fois et calculer le multiplicande 2 bits par 2 bits.

Architecture des Ordinateurs

121

Dcalage
Deux cas:
logique-- valeur ajoute est toujours 0
"0" msb lsb "0"

arithmtique-- extension du sign (shift droite)

8-bit dcalage droite


A7 1 1 A6 1 A5 1 A4 1

msb
A3 1 A2

lsb
A1 1

"0"
A0 1 S2 S1 S0

0 R7

0 R6

1 R5

1 R4

1 R3

1 R2

1 R1

1 R0

0
122

Architecture des Ordinateurs

Division
1001 Quotient Diviseur 1000 1001010 Dividende 1000 10 101 1010 1000 10 reste (ou modulo rsultat) Le grand nombre soustraire, cration d un bit chaque tape binaire => 1 * diviseur ou 0 * diviseur Dividende = Quotient x Diviseur + Reste 3 versions de divisions, comme pour la multiplication (plus simple ou moins coteux)
Architecture des Ordinateurs 123

Division version 1 du matriel


registre diviseur 64-bits, UAL 64 bits, registre reste 64 bits, registre quotient 32 bits.
Dcalage droite diviseur 64 bits Dcalage gauche Quotient UAL 64-bit 32 bits Ecriture 64 bits Contrle

Reste

Architecture des Ordinateurs

124

Algorithme de division (version 1)

dbut: Placer le dividende dans le reste

1. Soustraire le registre diviseur du register reste et


placer le rsultat dans le registrer reste .

Tester reste

<0

2a. Dcalage du registre quotient gauche en insrant un 1

2b. Restaurer la valeur en additionnant le registre diviseur au reste et en plaant la somme dans le registre reste. De plus, dcalage du registre quotient en insrant un 0.

3.dcalage de 1 bit vers la droite du registre diviseur .

Rptition n+1? Oui


Architecture des Ordinateurs

Non

Fin

125

Exemple de division (7 / 2)
Reste Quotient 0000 0111 0000 1110 0111 0000 0000 0111 0000 0000 0111 0000 1111 0111 0000 0000 0111 0000 0000 0111 0000 1111 1111 0000 0000 0111 0000 0000 0111 0000 0000 0001 0000 0000 0011 0001 0000 0011 0001 0000 0001 0001 0000 0001 0011 0000 0001 0011 Diviseur 0010 0000 0010 0000 0010 0000 0001 0000 0001 0000 0001 0000 0000 1000 0000 1000 0000 1000 0000 0100 0000 0100 0000 0100 0000 0010 0000 0010 0000 0010 0000 0001

1: 2: 3: 1: 2: 3: 1: 2: 3: 1: 2: 3: 1: 2: 3:

2 3

rponse Quotient = 3 Reste = 1

4 5

Architecture des Ordinateurs

126

Observations sur la version 1 de la division


1/2 des bits du diviseur sont toujours 0 => 1/2 des 64-bits de l'addition => 1/2 du diviseur au lieu de dcaler le diviseur droite, on dcale le reste gauche? La premire tape, ne peut pas produire un 1 dans le bit quotient (sinon a serais plus grand) => dcalage avant la soustraction, gagner une itration.
Architecture des Ordinateurs 127

Division version 2 du matriel


registre diviseur 32-bits, UAL 32 bit, registre reste 64 bits, registre quotient 32 bits.
Diviseur 32 bits
32-bit ALU

Dcalage gauche Quotient 32 bits

Dcalage gauche Reste 64 bits Ecrire Contrle

Architecture des Ordinateurs

128

Algorithme de division (version 2)

dbut: Placer le dividende dans le registre reste

3.dcalage de 1 bit vers la gauche du registre reste 1. Sub registre diviseur de la partie gauche du registre reste et placer le rsultat dans la partie gauche du registre reste 0 Test reste <0

2a. Dcalage du registre quotient gauche en insrant un 1

2b. Restaurer la valeur ancienne en additionnant le registre diviseur la partie gauche du reste et en plaant la somme dans la partie gauche du registre reste. De plus, dcalage du registre quotient en insrant un 0.

Rptition n? Oui
Architecture des Ordinateurs

Non

Fin

129

Exemple de division (7 / 2)
Reste 0000 0000 1111 0000 0001 1111 0001 0011 0001 0001 0011 0001 0001 0111 1110 1110 1110 1100 1100 1100 1000 1000 1000 0000 0000 0000 Quotient 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 0001 0000 0011 Diviseur 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010

1: 2: 3: 1: 2: 3: 1: 2: 3: 1: 2: 3:

1 rponse Quotient = 3 Reste = 1

Architecture des Ordinateurs

130

Division version 3 du matriel


registre diviseur 32-bits, UAL 32 bits, registre reste 64 bits, 0 registre quotient.
Diviseur 32 bits 32-bits UAL

HI
reste

LO (Quotient)
64 bits Contrle

Architecture des Ordinateurs

131

Algorithme de division (version 3)

Dbut: placer le dividende dans reste

1.dcalage du registre reste gauche de 1 bit. 2. Soustraire le diviseur de la moiti gauche du registre reste et placer le rsultat dans la moiti gauche du registre reste. 0 <0

Tester Reste

3a. Dcalage du registre reste gauche en insrant un 1 dans le nouveau bit

3b. Restaurer la valeur originale en additionnant le registre diviseur la moiti gauche du registre reste , et placer la somme dans la moiti gauche du registre reste. Dcaler le registre reste en insrant un 0.

Rptition n? Oui
Architecture des Ordinateurs

Non

Fin. Dcalage le reste droite de 1 bit.

132

Exemple de division (7 / 2)
Reste 0000 0111 0000 1110 1: 2: 1: 2: 1: 2: 1: 2: 3: 1111 1110 0001 1100 1111 0011 0001 0011 1100 1000 1000 0001 Diviseur 0010 0010 0010 0010 1 rponse Quotient = 3 Reste = 1

0010 2 0010 0010 0010 3 0010 0010 0010

0001 0001 0010 0011 0001 0011

Architecture des Ordinateurs

133

Observations sur la version 3 de la division


Mme matriel que la multiplication: UAL pour additionner ou soustraire, un registre 64 bits pour dcaler droite ou gauche. Les registres Hi et Lo de MIPS sont combins pour tre utiliss comme registre 64-bits la division et la multiplication. Division signe: faire la division positive, modifier le signe du quotient ou du reste si ncessaire. Note: le dividende et le reste doivent avoir le mme signe. Quotient si signe diviseur <> signe dividende Remarque: 7 2 = 3, reste = 1 7 -2 = 4, reste = -1
Architecture des Ordinateurs 134

Arithmtique de flottants

Architecture des Ordinateurs

135

Le flottant
Qu'est ce qu'on peut reprsenter avec N bits? Non-signe 0 2N - 1 Complment 2 - 2N-1 2N-1 - 1 Pour les grands nombres? Nombres assez grands ? 9,349,398,989,787,762,244,859,087,678 Nombres assez petits ? 0.0000000000000000000000045691 Rationnel 2/3

Architecture des Ordinateurs

136

Point dcimal

Le exposant flottant
IEEE: 1.M x 2 e - 127

23 6.02 x 10

Mantisse

(base)

Arithmtique (+, -, *, / ) Reprsentation, Norme et format Prcision Exceptions (ex., division par zero, overflow, underflow) Erreurs Proprits (ngation, inversion, if A B then A - Bdes Ordinateurs 0) Architecture 137

Le flottant
Reprsentation des nombres en virgule flottante selon la norme IEEE 754 1 8 23 Prcision simple : E signe S M Exposant: excs 127 Exposant actuel e = E - 127 0 < E < 255 S E-127 N = (-1) 2 (1. M)

Reprsentation simplifie (tri des flottants)

(-1)s(20+(m12-1 +(m22-2)+...m522-23) 2E-127


0 = 0 00000000 0 . . . 0 -126 -1.5 = 1 01111111 10 . . . 0 127

Les nombres qu'on peut reprsenter: 2 (1.0) to 2 (2 - 2 -23 )

Approximativement: -38 1.8 x 10 Architecture des Ordinateurs

to

3.40 x 10

38
138

Algorithme daddition (Flottant)

dbut:

1. Comparer les exposants des deux nombres. Dcaler la mantisse la plus petite droite jusqu ce que son exposant corresponde l exposant le plus grand.

2. Addition / soustraction des mantisses 3. Normalisation : dcaler droite; dcalage gauche Dbordement sous dbordement ?

Oui
Exception

Non
4. Arrondir la mantisse

Normaliser?

Non Oui
Architecture des Ordinateurs

Fin

139

Exemple daddition (Flottant)


0.5 - 0.4375 = ??????? 1.0 2-1 - 1.11 2-2 1. 2. 3. - 1.11 2-2 -0.111 2-1 1.0 - 0.111 0.001 Donc 0.001 2-1 1.0 2-4 Pas de dbordement ou sous dbordement de l exposant -126<=4<=127 4. Arrondit : OK

Architecture des Ordinateurs

140

Exemple daddition (Flottant)


1. 2. 3. 1.0 2127 + 1.0 2127 1.0 +1.0 10.0 Donc 10.0 2127 1.0 2128 Dbordement de l exposant

1. 2. 3.

1.1 2-126 - 1.0 2-126 1.1 - 1.0 0.1 Donc 0.1 2-126 1.0 2-127 Sous dbordement de l exposant

Architecture des Ordinateurs

141

Matriel pour laddition des flottants


UAL pour le calcul de l exposant le plus petit. UAL pour ajout des mantisses et dtermination du signe. Matriel pour normalisation (dcalage, incrmentation, dcrmentation) Matriel pour le traitement de larrondissement
Architecture des Ordinateurs 142

ISA MIPS
32 registres flottants; utiliss par paire pour un traitement double flottant. Add.s $f2,$f4,$f6 # $f2=$f4+$f6 sub.s, mult.s, add.d $f2,$f4, $f6 #($f3,$f5,$f7 sont utiliss pour double flottant) sub.d mult.d

Architecture des Ordinateurs

143

Multiplication
1. Addition exposant (R+127) R1+R2=E1+E2+2*127 donc R1+R2-127=E1+E2+127 2. Multiplication des mantisses (mantisse 0!) 3. Normalisation (sous deb. Ou deb. ) 4. Arrondi 5. Signe Exemple: 5.5 * 0.5 5.5 101.1 1.011 * 22 0.5 0.1 1.0 * 2-1 Rsultat : 1.011* 21 = 2.75
Architecture des Ordinateurs 144

CHAPITRE V: Conception de microprocesseur monocycle

Architecture des Ordinateurs

145

Chemin de donnes pour monocycle

Architecture des Ordinateurs

146

Unit de lecture de linstruction


Les oprations en RTL (RTL: langage transfert registres)
mem[PC]
Cas squentiel : PC <- PC + 4 Branch ou Jump: PC <- autre adresse

Clk

PC Calcul add. Suiv. Addresse Mmoire Instructions

Instruction 32
147

Architecture des Ordinateurs

Add & Sub


R[rd] <- R[rs] op R[rt] Exemple: addU rd, rs, rt
Ra, Rb : champs de l instruction (rs, rt, rd) ALUctr, RegWr: logique de contrle aprs dcodage

31 op 6 bits

26 rs 5 bits Rd Rs RegWr 5 5

21 rt 5 bits Rt 5

16 rd 5 bits

11 shamt 5 bits

6 funct 6 bits

ALUctr busA 32 busB 32 ALU Result 32

Rw Ra Rb busW 32 Clk 32x32-bit Registres

Architecture des Ordinateurs

148

Temps op. registre-registre


Clk PC Valeur Anc. Temps Propagation PC Nouv. Valeur Valeur Anc. Valeur Anc. Valeur Anc. Valeur Anc. Valeur Anc. Accs mmoire pour Instruction Nouv. Valeur Dlai Logique de Controle Nouv. Valeur Nouv. Valeur Accs Registres Nouv. Valeur Dlai ALU Nouv. Valeur

Rs, Rt, Rd, Op, Func ALUct r RegWr busA, B busW

Rd Rs Rt RegWr 5 5 5 busW 32 Clk


Architecture des Ordinateurs

ALUctr busA 32 busB 32 ALU

Ecriture ce fait ici

Rw Ra Rb 32x32-bit Registres

Result 32
149

Opration logique avec val. immdiate


R[rt] <- R[rs] op ZeroExt[imm16] ]
31 op 6 bits 31 0000000000000000 16 bits Rt Rs 5 5 busA 32 busB Mux 32 ZeroExt imm16 Result 32 ALU ALUctr 26 rs 5 bits 21 rt 5 bits 16 15 rd? 16 immdiate 16 bits 0 immdiate 16 bits 0

Rd RegDst Mux RegWr 5 busW 32 Clk

Rw Ra Rb 32x32-bit Registres

16

32 ALUSrc
150

Architecture des Ordinateurs

Opration de chargement
R[rt] <- Mem[R[rs] + SignExt[imm16]]
31 op 6 bits Rd RegDst Mux RegWr 5 busW 32 Clk Rt Rs 5 5 busA 32 busB 32 Extender 32 ALUSrc
Architecture des Ordinateurs

Exemple: lw
immdiate

rt, rs, imm16


0

26 rs

21 rt 5 bits

16 5 bits rd? 16 bits

ALUctr W_Src ALU

Rw Ra Rb 32x32-bit Registres

32 MemWr WrEn Adr

Mux

Mux Data In 32 Clk

imm16

16

Mmoire Donnes

32

ExtOp

151

Opration de rangement
Mem[ R[rs] + SignExt[imm16]<- R[rt] ]
31 op 6 bits Rd RegDst Mux RegWr 5 busW 32 Clk Rs 5 5 busA 32 busB 32 Extender 32 Mux ALU Rt Rt 26 rs 5 bits 21 rt 5 bits 16 immdiate 16 bits

exemple: sw

rt, rs, imm16


0

ALUctr

MemWr

W_Src

Rw Ra Rb Registres 32x32-bits

32 Mux WrEn Adr

imm16

Data In 32 Clk ALUSrc

16

Mmoire Donnes

32

Architecture des Ordinateurs

ExtOp

152

Saut conditionnel (Branch)


31 op 6 bits 26 rs 5 bits 21 rt 5 bits 16 immdiate 16 bits 0

beq rs, rt, imm16


mem[PC] Chercher instruction de mmoire

Cond= <- R[rs] == R[rt] Calculer la condition du saut if (Cond=) else


PC <- PC + 4

Calculer adresse de la prochaine inst.

PC <- PC + 4 + ( SignExt(imm16) x 4 )

Architecture des Ordinateurs

153

Saut conditionnel (branch)


beq rs, rt, imm16 Chemin donnes gnre condition (Cond=)
31 op 6 bits 26 rs 5 bits 21 rt 5 bits Adresse Inst. nPC_sel Adder 32 00 busW Clk Mux Rs 5 5 busA 32 busB 32 ? Rt 16 immdiate 16 bits Cond= 0

RegWr 5

Rw Ra Rb Registres 32x32-bits

PC

Adder

PC Ext

imm16

Clk

Architecture des Ordinateurs

154

Assemblage: chem. donnes. monocycle


Mmoire Inst. Adr Instruction<31:0> <21:25> Rs nPC_sel RegDst 1 4 00 Adder Mux Adder Clk imm16 16 RegWr 5 busW 32 Clk 0 Rs 5 5 = 32 0 Mux ALU 32 WrEn Adr Mmoire Donnes
155

Rt

Rd Rt Rt

busA Rw Ra Rb Registres 32x32-bits busB 32 Extender

<16:20>

Rd

<11:15>

Imm16 Equal ALUctr MemWr MemtoReg

<0:15>

0 Mux

PC

1 32

32 Data In Clk

PC Ext

imm16

Architecture des Ordinateurs

ExtOp

ALUSrc

Vue simplifie du chemin critique


Banc de Registres et Mmoire Idalise:
Le CLK important SEULEMENT durant criture Durant lecture, comportement comme circuits combinatoires:
Adresse valide => Sortie valide aprs temps accs
Chemin critique (LOAD) = Temps Propagation PC + Temps accs Mmoire Instruction + Temps accs Banc Registres + Temps ALU pour 32-bit Addition + Temps accs Mmoire Donnes + Temps tablissement banc registres + Temps de Dsalignement 32 Adresse Donnes Mmoire Donnes Data Idalise In Clk
156

Mmoire Instruction Idalise Adresse Instruction Proch. Addr. 32 PC

Instruction Rd Rs 5 5 Rt 5 Imm 16 A Rw Ra Rb 32 Registres 32x32-bits Clk B

ALU 32

Architecture des Ordinateurs

Clk

Chemin de donnes et RTL -> contrle


Instruction<31:0> <21:25> <21:25> <16:20> <11:15> Mmoire Inst. Adr <0:15>

Op Fun

Rt

Rs

Rd

Imm16

Contrle

nPC_selRegWr RegDst ExtOp ALUSrc ALUctr MemWr MemtoReg

Cond=

Chemin Donnes

Architecture des Ordinateurs

157

MIPS chemin donnes

Architecture des Ordinateurs

158

Unit de contrle pour monocycle

Architecture des Ordinateurs

159

Signification des signaux de contrle


nPC_sel: 0 => PC < PC + 4; 1=>PC<PC+4+SignExt(Im16) || 00
Mmoire Inst. Adr

nPC_sel

4 00 Mux Adder PC Clk


160

Adder

imm16

PC Ext

Architecture des Ordinateurs

Signification des signaux de contrle


ExtOp: ALUsrc: ALUctr: zero, signe 0 => regB; 1 => immed

MemWr:

Ecrire mmoire donn.

MemtoReg:1 => Mem RegDst:


add, sub, or
RegDst Rd Rt 1 RegWr 5 busW 32 Clk imm16 16 0 Rs 5 5 = 32 0 Mux ALU 32 WrEn Adr Mmoire Donnes
161

0 => rt; 1 => rd ecrire registre dest


MemWr MemtoReg

Cond=

RegWr: ALUctr

Rt

busA Rw Ra Rb 32x32-bit Registres busB 32 Extender

0 Mux

1 32

32 Data In Clk

Architecture des Ordinateurs

ExtOp

ALUSrc

Signaux de contrle
inst ADD Register Transfer R[rd] < R[rs] + R[rt]; PC < PC + 4

ALUsrc = RegB, ALUctr = add, RegDst = rd, RegWr, nPC_sel = +4 SUB R[rd] < R[rs] R[rt]; PC < PC + 4

ALUsrc = RegB, ALUctr = sub, RegDst = rd, RegWr, nPC_sel = +4 ORi R[rt] < R[rs] + zero_ext(Imm16); PC < PC + 4

ALUsrc = Im, Extop = Z, ALUctr = or, RegDst = rt, RegWr, nPC_sel = +4 LOAD R[rt] < MEM[ R[rs] + sign_ext(Imm16)]; PC < PC + 4

ALUsrc = Im, Extop = Sn, ALUctr = add, MemtoReg, RegDst = rt, RegWr, nPC_sel = +4 STORE MEM[ R[rs] + sign_ext(Imm16)] < R[rs]; PC < PC + 4

ALUsrc = Im, Extop = Sn, ALUctr = add, MemWr, nPC_sel = +4 BEQ if ( R[rs] == R[rt] ) then PC < PC + sign_ext(Imm16)] || 00 else PC < PC + 4 nPC_sel = Cond=, ALUctr = sub
Architecture des Ordinateurs 162

Logique pour chaque signal de contrle


nPC_sel ALUsrc ALUctr <= if (OP == BEQ) then Cond= else 0 <= if (OP == 000000) then regB else immed

<= if (OP == 000000) then funct elseif (OP == ORi) then OR elseif (OP == BEQ) then sub else add <= if (OP == ORi) then zero else signe <= (OP == Store)

ExtOp MemWr

MemtoReg <= (OP == Load) RegWr: RegDst: <= if ((OP == Store) || (OP == BEQ)) then 0 else 1 <= if ((OP == Load) || (OP == ORi)) then 0 else 1
163

Architecture des Ordinateurs

Conception unit de contrle pour monocycle


Table des Signaux de Contrle :
Mips ISA func 10 0000 10 0010 add RegDst ALUSrc MemtoReg RegWr MemWr nPCsel Jump ExtOp ALUctr<2:0> 31 26 R-type I-type op op 1 0 0 1 0 0 0 x Add 21 rs rs rt rt sub 1 0 0 1 0 0 0 x Sub ori 0 1 0 1 0 0 0 0 Or 16 rd xxxxxxx lw 0 1 1 1 0 0 0 1 Add 11 sw x 1 x 0 1 0 0 1 Add 6 decval immediate Adresse destination funct beq x 0 x 0 0 1 0 x Sub jump x x x 0 0 0 1 x xxx 0 add, sub ori, lw, sw, beq jump 164 op 00 0000 00 0000 00 1101 10 0011 10 1011 00 0100 00 0010

op J-type des Ordinateurs Architecture

Dcodage Local
op RegDst ALUSrc MemtoReg RegWr MemWr Branch nPCsel ExtOp ALUop<N:0> 00 0000 R-type 1 0 0 1 0 0 0 x R-type 00 1101 10 0011 10 1011 00 0100 00 0010 ori 0 1 0 1 0 0 0 0 Or lw 0 1 1 1 0 0 0 1 Add sw x 1 x 0 1 0 0 1 Add beq x 0 x 0 0 1 0 x Sub jump x x x 0 0 0 1 x xxx

func op 6 Contrle Princip. 6 ALUop N


Architecture des Ordinateurs

ALU Contrle (Local)

ALUctr 3 ALU
165

Codification de ALUop
func op 6 Contrle Princip. 6 ALUop N ALU ALUctr Contrle 3 (Local)

ALUop demande 2 bits pour reprsentation (4 codes):


(1) R-type instructions (reste codifi par func) I-type instructions :
(2) Or, (3) Add, (4) Sub

Plus de bits pour le MIPS ISA complet (3 bits)


(1) R-type instructions I-type instructions :
(2) Or, (3) Add, (4) Subtract, et (5) And (Example: andi)

R-type ALUop (Symbolique) ALUop<2:0>


Architecture des Ordinateurs

ori Or 0 10

lw Add 0 00

sw Add 0 00

beq Sub 0 01

jump xxx xxx


166

R-type 1 00

Dcodage du champ func


func op 6 Contrle Princip. 6 ALUop N R-type ALUop (Symbol.) ALUop<2:0> 31 R-type op 26 rs R-type 1 00 21 rt ori Or 0 10 16 rd ALU ALUctr Contrle 3 (Local)

lw Add 0 00 11

sw Add 0 00 6 decval

beq Sub 0 01

jump xxx xxx 0

funct

D aprs conception de L ALU: funct<5:0> 10 0000 10 0010 10 0100 10 0101 10 1010 Op. Instruction addition soustraction ALU and or slt ALUctr ALUctr<2:0> 000 001 010 110 111 Operation ALU Add Sub And Or SLT
167

Architecture des Ordinateurs

Table de Vrit de ALUctr


funct<3:0> 0000 R-type ALUop (Symbolique) R-type ALUop<2:0> 1 00 ori Or 0 10 lw Add 0 00 sw Add 0 00 beq Sub 0 01 0010 0100 0101 1010 ALUop bit<2> bit<1> bit<0> 0 0 0 1 1 1 1 1 0 x 1 x x x x x 0 1 x x x x x x x x x 0 0 0 0 1 x x x 0 0 1 1 0 func bit<3> bit<2> bit<1> bit<0> x x x 0 1 0 0 1 x x x 0 0 0 1 0 Operation ALU Add Sub Or Add Sub And Or SLT Op. Instruction addition soustraction and or slt ALUctr bit<2> bit<1> bit<0> 0 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1
168

Architecture des Ordinateurs

Equation logique pour ALUctr<2>


ALUop bit<2> bit<1> bit<0> 0 1 1 x x x 1 x x x 0 1 x 0 0 func bit<3> bit<2> bit<1> bit<0> x 1 1 x 0 0 ALUctr<2> 1 1 1

func<3> pas important

ALUctr<2> = !ALUop<2> & ALUop<0> + ALUop<2> & !func<2> & func<1> & !func<0>

Architecture des Ordinateurs

169

Equation logique pour ALUctr<1>


ALUop bit<2> bit<1> bit<0> 0 0 1 1 1 0 x x x x 0 1 x x x x x 0 0 1 x x 0 0 0 func bit<3> bit<2> bit<1> bit<0> ALUctr<1> x x 0 1 1 x x 0 0 0 1 1 1 1 1

ALUctr<1> = !ALUop<2> & !ALUop<0> + ALUop<2> & !func<2> & !func<0>

Architecture des Ordinateurs

170

Equation logique pour ALUctr<0>


ALUop bit<2> bit<1> bit<0> 0 1 1 1 x x x x x x 0 1 x 1 0 func bit<3> bit<2> bit<1> bit<0> ALUctr<0> x 0 1 x 1 0 1 1 1

ALUctr<0> = !ALUop<2> & ALUop<0> + ALUop<2> & !func<3> & func<2> & !func<1> & func<0> + ALUop<2> & func<3> & !func<2> & func<1> & !func<0>

Architecture des Ordinateurs

171

Bloc de contrle de l ALU


func 6 ALUop 3 ALU ALUctr Contrle 3 (Local)

ALUctr<2> = !ALUop<2> & ALUop<0> + ALUop<2> & !func<2> & func<1> & !func<0> ALUctr<1> = !ALUop<2> & !ALUop<0> + ALUop<2> & !func<2> & !func<0> ALUctr<0> = !ALUop<2> & ALUop<0> + ALUop<2> & !func<3> & func<2> & !func<1> & func<0> + ALUop<2> & func<3> & !func<2> & func<1> & !func<0>
Architecture des Ordinateurs 172

Table de vrit pour le contrle principal


RegDst op 6 ALUSrc Contrle Principal func 6

:
ALUop 3 00 0000 R-type 1 0 0 1 0 0 0 x R-type 1 0 0

Contrle ALUctr 3 ALU (Local)

op RegDst ALUSrc MemtoReg RegWr MemWr nPCsel Jump ExtOp ALUop (Symbolic) ALUop <2> ALUop <1>
Architecture des Ordinateurs ALUop <0>

00 1101 10 0011 10 1011 00 0100 00 0010 ori 0 1 0 1 0 0 0 0 Or 0 1 0 lw 0 1 1 1 0 0 0 1 Add 0 0 0 sw x 1 x 0 1 0 0 1 Add 0 0 0 beq x 0 x 0 0 1 0 x Sub 0 0 1 jump x x x 0 0 0 1 x xxx x x x
173

Table de vrit pour RegWr


op RegWr 00 0000 R-type 1 00 1101 10 0011 10 1011 00 0100 00 0010 ori 1 lw 1 sw 0 beq 0 jump 0

RegWr = R-type + ori + lw = !op<5> & !op<4> & !op<3> & !op<2> & !op<1> & !op<0> + !op<5> & !op<4> & op<3> & op<2> & !op<1> & op<0> + op<5> & !op<4> & !op<3> & !op<2> & op<1> & op<0>
op<5>

(R-type) (ori) (lw)

..

op<5>

..

op<5>

..

op<5>

..

op<5>

..
<0>

op<5>

..
op<0>

<0>

<0>

<0>

<0>

R-type

ori

lw

sw

beq

jump RegWr

Architecture des Ordinateurs

174

Implmentation RLP
op<5>

..

op<5>

..

op<5>

..

op<5>

..

op<5>

..
<0>

op<5>

..
op<0>

<0>

<0>

<0>

<0>

R-type

ori

lw

sw

beq

jump

RegWr ALUSrc RegDst MemtoReg MemWr nPCsel Jump ExtOp ALUop<2> ALUop<1>

Architecture des Ordinateurs

ALUop<0>175

Assembler tout!
ALUop op 6 Instr<31:26> RegDst Contrle principal ALUSrc 3 func Instr<5:0> 6 ALU ALUctr Contrle 3 Instruction<31:0> <21:25> <16:20> <11:15> Instruction Fetch Unit <0:15>

:
Rt Rs 5 5 Rt

nPC_sel Clk

Rd RegDst

1 Mux 0 RegWr 5 ALUctr busA 32 busB 32 Extender 0 Mux ALU

Rt Zero

Rs

Rd

Imm16 MemtoReg 0 Mux

busW 32 Clk

Rw Ra Rb Registres 32x32-bits

MemWr

32 32 WrEn Adr

1 32

imm16 Instr<15:0>

Data In 32 Clk

16

Mmoire donnes

ALUSrc
Architecture des Ordinateurs

ExtOp

176

Temps Op. chargement (le pire des extrmes)


Clk PC Valeur Anc. Temps Propagation PC Nouv. Valeur Accs mmoire pour Instruction Valeur Anc. Valeur Anc. Valeur Anc. Valeur Anc. Valeur Anc. Valeur Anc. Valeur Anc. Dlai Ext & Mux Valeur Anc. Valeur Anc. Temps Accs mmoire busW Valeur Anc. Architecture des Ordinateurs 177 Nouv. Valeur Nouv. Valeur Dlai Logique de Contrle Nouv. Valeur Nouv. Valeur Nouv. Valeur Nouv. Valeur Nouv. Valeur Temps Accs Registres Nouv. Valeur Nouv. Valeur Dlai ALU Address Nouv. Valeur Ecriture registres

Rs, Rt, Rd, Op, Func ALUctr ExtOp ALUSrc MemtoReg RegWr busA busB

Inconvnients du processeur monocycle Cycle horloge Long:


Cycle doit tre suffisant pour Instruction de chargement :
Temps propagation PC + Temps Accs Mmoire + Temps Accs Banc registres + Dlai ALU (calcul adresse donnes) + Temps accs mmoire (chargement donnes) + Temps tablissement Banc registres (criture donnes) + Temps dsalignement

Longueur cycle horloge pour chargement DEPASSE DE LOIN les ncessits des autres instructions
Architecture des Ordinateurs 178

Conclusions
Chemin donnes monocycle => CPI=1, CCT => long 5 tapes pour conception de processeur
1. 2. 3. 4. Analyse jeux instructions => Exigences chemin donnes Slection des composants & tablissement mthodologie horloge Assemblage du chemin donnes pour ralisation des exigences Analyse de l implmentation de chaque instruction pour dterminer les valeurs ncessaires des contrles 5. Assemblage du logique de contrle Processeur
Entres Contrle

Contrle est le plus difficile


Chem. D.

Mmoire Sorties

MIPS facilite la logique de contrle


Instructions mme taille Source registres toujours mme place dans instruction Immdiate toujours mm place et taille Oprations toujours sur registres/immdiate
179

Architecture des Ordinateurs

CHAPITRE V: Conception de microprocesseur multi-cycles

Architecture des Ordinateurs

180

Chemin de donnes pour multi-cycles

Architecture des Ordinateurs

181

nPC_sel

PC Suiv. PC op Lecture Instruction fun

Architecture des Ordinateurs

Lecture Registres
ExtOp Cond=

Contrle Principal

Ext ALU Accs Mmoire Mem Donn. Ecrit Regs.


ALUctr ALUSrc

Contrle ALU

MemRd MemWr

RegDst RegWr MemWr

Vue simplifie du processeur monocycle

Rangement Rsultat
182

Rduction du temps de linstruction


Insertion de registres intermdiaires Mme travail fait dans plusieurs cycles courts, au lieu d'un seul cycle long
Registre Registre

Logique combinatoire

Logique combinatoire A

=>
Registre
Architecture des Ordinateurs

Registre

Logique combinatoire B

Registre

183

PC Suiv.
nPC_sel

Architecture des Ordinateurs

PC Lecture Instruction

Lecture Arguments

ExtOp

Accs Mmoire Mem. Donn.


184

Banc Reg.

Segmentation du chemin de donnes

Ajout de registres entre tapes intermdiaires

Rangement Rsultat

Exec

ALUSrc ALUctr MemRd MemWr

RegDst RegWr MemWr

PC Suiv.
nPC_sel

PC Lecture Instruction IR Banc A Reg. B

Chemin critique ?
ExtOp

Architecture des Ordinateurs

Ext ALU S Accs Mem. M Mem. Donn Banc Reg.


185

ALUSrc ALUctr

Cond=
MemRd MemWr

Chemin de donnes multi-cycles


MemToReg RegDst RegWr

Etapes de conception
Etape 1: ISA => Registres Transferts Logique Etape 2: Composants de Chemin Donnes Etape 3: RTs + Composants => Chemin donnes Etape 4: Chemin + RTs Logique => RTs Physique Etape 5: RTs Physique => Contrle
Architecture des Ordinateurs 186

Etape 4: type-R (add, sub, . . .)


Transferts logiques des registres
ADD R[rd] < R[rs] + R[rt]; PC < PC + 4

Transferts Physiques des registres


IR < MEM[pc] ADD A< R[rs]; B < R[rt] S < A + B R[rd] < S; PC < PC + 4

Mem. Inst.

PC Suiv.

Banc Reg.

Exec

PC

A B

IR

S Accs Memoire M Mem. Donn

Architecture des Ordinateurs

Banc Reg.
187

Etape 4: OR logique
Transferts logique des registres
ORI R[rt] < R[rs] OR ZeroExt(Im16); PC < PC + 4

Transferts Physiques des registres


IR < MEM[pc] ORI A< R[rs]; B < R[rt] S < A or ZeroExt(Im16) R[rt] < S; PC < PC + 4

Mem. Inst.

PC Suiv.

Banc Reg.

Exec

PC

A B

IR

S Accs Memoire M Mem. Donn

Architecture des Ordinateurs

Banc Reg.
188

Etape 4 : chargement
Transferts logiques des registres
LW R[rt] < MEM(R[rs] + SignExt(Im16); PC < PC + 4

Transferts Physiques des registres


IR < MEM[pc] LW A< R[rs]; B < R[rt] S < A + SignExt(Im16)

M < MEM[S] R[rd] < M;


PC < PC + 4

Mem. Inst.

PC Suiv.

Banc Reg.

Exec

PC

A B

IR

S Accs Memoire M Mem. Donn

Architecture des Ordinateurs

Banc Reg.
189

Etape 4 : rangement
Transferts logiques des registres
SW MEM(R[rs] + sx(Im16) < R[rt]; PC < PC + 4

Transferts Physiques des registres

IR < MEM[pc] SW A< R[rs]; B < R[rt] S < A + SignEx(Im16); MEM[S] < B PC < PC + 4

Mem. Inst.

PC Suiv.

Banc Reg.

Exec

PC

A B

IR

S Accs Memoire M Mem. Donn

Architecture des Ordinateurs

Banc Reg.
190

Etape 4 : saut conditionnel


Transferts logiques des registres
BEQ Si R[rs] == R[rt] Alors PC <= PC + SignExt(Im16) +4 Sinon PC <= PC + 4

Transferts Physiques des registres


IR < MEM[pc] BEQ|Cond= PC < PC + 4 IR < MEM[pc]. BEQ|Cond= PC < PC + SignExt(Im16)+4

Mem. Inst.

PC Suiv.

Banc Reg.

Exec

PC

A B

IR

S Accs Memoire M Mem. Donn

Architecture des Ordinateurs

Banc Reg.
191

Chemin de donnes multi-cycles du livre


Minimisation du matriel: 1 mmoire, 1 ALU/adder
PCWr IorD PC
32 32 32 0

PCWrCond Zero MemWr


32 Rs RAdr 32 Rt Rt 0 Rd 1 1 Mux 0 5 5 0

PCSrc IRWr RegDst RegWr ALUSelA


1

BrWr Dest.

Mux
0 32 0 1 2 3 32

32

Cond= ALU

Mux

Ra Rb busA 32

32 32

Architecture des Ordinateurs

Mux
1

Reg Inst.

Mmoire Idale
WrAdr 32 Din Dout

Banc Rw Regs.

Mux Ext

32

busW busB 32

<< 2

Contrle ALU

Imm 16

32

ALUOp ALUSelB
192

ExtOp

MemtoReg

Unit de contrle pour multi-cycles

Architecture des Ordinateurs

193

Modle du contrle
Un tat spcifiant les points de contrle pour les Transferts de Registres. Transfert prend place au moment o on quitte l tat (front descendant).
Conditions (op, Cond=)

Logique tat suivant Etat Courant

Etat X Transferts de registres Points de contrle Dpend des entres

Logique Sorties Points de contrle

Architecture des Ordinateurs

194

Etape 4 => spcification du contrle


IR <= MEM[PC] chercher instruction

Excution

A <= R[rs] B <= R[rt]

lecture/dcodage arguments BEQ & Cond= BEQ & !Cond=


PC <= PC + 4 PC <= PC + SX +4

R-type
S <= A fun B

ORi
S <= A or ZX

LW
S <= A + SX

SW

S <= A + SX

R[rd] <= S R[rt] <= S R[rt] <= M PC <= PC + 4 PC <= PC + 4 PC <= PC + 4


Architecture des Ordinateurs

195

Ecrire registres

M <= MEM[S]

MEM[S] <= B PC <= PC + 4

Accs Mem.

Contrleur traditionnel
Etat op Cond= Etat Suiv. Points Contrle

Table Vrit 11 Cond= 6 Etat Suiv. Points Contrle

4 op Chem. Architecture des Ordinateurs Donn.

Etat

196

Etape 5:chemin conn.+digramme tats=>contrle

Traduire RTS en points de contrle Affectation des Etats Construction Contrleur

Architecture des Ordinateurs

197

Traduction RTS en points de contrle


IR <= MEM[PC]

imem_rd, IRen
A <= R[rs] B <= R[rt]

Aen, Ben R-type


S <= A fun B

ORi

LW
S <= A + SX

SW

BEQ & !Equal

BEQ & Equal

ALUfun, Sen S <= A or ZX

S <= A + SX

PC <= PC + 4 PC <= PC + SX || 00

M <= MEM[S]
R[rd] <= S PC <= PC + 4

MEM[S] <= B PC <= PC + 4

RegDst, RegWr, PCen

R[rt] <= S R[rt] <= M PC <= PC + 4 PC <= PC + 4


198

Architecture des Ordinateurs

Affectation des tats


IR <= MEM[PC] 0000
A <= R[rs] B <= R[rt]

0001 R-type
S <= A fun B

ORi
S <= A or ZX

LW
S <= A + SX

SW 1011

BEQ & Equal BEQ & ~Equal


PC <= PC + 4 PC <= PC + SX || 00

S <= A + SX

0100

0110

1000
M <= MEM[S]

0011

0010

1001
R[rd] <= S R[rt] <= S R[rt] <= M PC <= PC + 4 PC <= PC + 4 PC <= PC + 4

MEM[S] <= B PC <= PC + 4

1100

0101

0111

1010
199

Architecture des Ordinateurs

Spcification dtaille du contrle


Etat Op Cond= Suiv. IR PC sel A B
0000 ?????? ? 0001 1 0001 BEQ 0 0011 0001 BEQ 1 0010 0001 R-type x 0100 0001 orI x 0110 0001 LW x 1000 0001 SW x 1011 0010 xxxxxx x 0000 0011 xxxxxx x 0000 0100 xxxxxx x 0101 0101 xxxxxx x 0000 0110 xxxxxx x 0111 0111 xxxxxx x 0000 1000 xxxxxx x 1001 1001 xxxxxx x 1010 1010 xxxxxx x 1 1 0 1011 xxxxxx x 1100 1100 xxxxxx x 0000 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0000 1 1 1 0 0 0 0 add 1 0 1
200

Exec Mem Ecrire Reg. Ext Sr ALU S R W M M-R Wr Dst

1 1 1 1 1 1

1 fun 1 0 0 or 1 0 add 1 1 0 0 1 0 1 1

R: ORi: LW:

SW:

Architecture des Ordinateurs

Evaluation de Performances
CPI Moyen?
Diagramme des tats donne CPI pour chaque instruction Frquence d utilisation de chaque instruction
Type Arith/Logic Chargement Rangement Saut Cond. CPIi 4 5 4 3 Frquence 40% 30% 10% 20% CPIi x freqIi 1.6 1.5 0.4 0.6

Moyenne CPI:4.1

Architecture des Ordinateurs

201

Unit de contrle pour multi-cycles: implmentation avec compteur sauts

Architecture des Ordinateurs

202

Conception du contrleur
Les diagrammes du contrle obtenu sont simples et structurs Utilisation de structure simple pour construction de microsquenceur Implmentation de la logique de contrle: programmation
microprogrammation

Contrle Contrle Chem. Donn. Squenceur microinstruction

micro-PC squenceur
Architecture des Ordinateurs 203

Compteur sauts
0000 i i+1 i

ROM op-code

Compteur

Zero Inc Charg.


204

Architecture des Ordinateurs

Machine avec compteur sauts


IR <= MEM[PC] 0000 inca
A <= R[rs] B <= R[rt]

Lecture instruction

0001 Charg. R-type


S <= A fun B

Inc LW
S <= A + SX

ORi
S <= A or ZX

SW 1011 Inc

BEQ & = BEQ & ~=


PC <= PC + 4 PC <= PC + SX || 00

S <= A + SX

0100 Inc

0110 Inc

1000 Inc
M <= MEM[S]

0011

0010

1001 inc
R[rd] <= S R[rt] <= S R[rt] <= M PC <= PC + 4 PC <= PC + 4 PC <= PC + 4

MEM[S] <= B PC <= PC + 4

Zero

Zero

1100 Zero Zero


205

0101 zero

Architecture des Ordinateurs

0111 zero

1010

Le micro-squenceur

Cod=

ZIC Micro-PC op-code ROM

Contrle chemin donnes

Architecture des Ordinateurs

206

Spcification microprogramme
PC Cond= ZIC IR PC en sel A B Exec Mem Ecrire Regs. Ext Sr ALU S R W M M-R Wr Dst
0000 0001 0001 BEQ 0010 0011 R-Type: 0100 0101 ORi: 0110 0111 LW: 1000 1001 1010 ? 0 1 x x x x x x x x 1 1011 1100 1 0 x x inc 1 charg inc zero 1 zero 1 inc zero 1 inc zero 1 inc inc x zero inc zero

1 0 0 0 0 0 1 1 1 0 0 0 add 1 0 1 add 1 1 0 0 0 or 1 0 1 0 1 fun 1 0 1 1

SW:

Architecture des Ordinateurs

207

ROM

R-type BEQ ori LW SW

000000 0100 000100 0011 001101 0110 100011 1000 101011 1011

Architecture des Ordinateurs

208

Contrle de la mmoire

PC
adresse

Mmoire Instruction
donnes

InstMem_rd IM_wait IR_en

IR

Architecture des Ordinateurs

209

Contrleur pour mmoire non-idale


IR <= MEM[PC] ~wait
A <= R[rs] B <= R[rt]

wait

R-type
S <= A fun B

ORi
S <= A or ZX

LW
S <= A + SX

SW

BEQ & = BEQ & ~=


PC <= PC + 4 PC <= PC + SX || 00

S <= A + SX

M <= MEM[S]

MEM[S] <= B

~wait

wait

~wait
PC <= PC + 4

wait

R[rd] <= S R[rt] <= S R[rt] <= M PC <= PC + 4 PC <= PC + 4 PC <= PC + 4


Architecture des Ordinateurs

210

Unit de contrle pour multi-cycles: implmentation avec microprogrammation

Architecture des Ordinateurs

211

Stratgies dimplmentation dunits de contrle


Reprsentation Initiale Machine tats finis Microprogramme

Contrle squencement

Fonction + ROMs distribution

Compteur microprog. tat suivant

Reprsentation logique

Equations logiques

Tables vrit

Implmentation technique

RLP
Contrle cbl

ROM
Contrle microprogramm
212

Architecture des Ordinateurs

Chemin de donnes
1 mmoire, 1 ALU
PCWr IorD PC
32 32 32 0

PCWrCond Zero MemWr


32 Rs 32 Rt Rt 0 Rd 1 1 Mux 0 5 5 0

PCSrc IRWr RegDst RegWr ALUSelA


1

TrWr Target

Mux
0 32 0 1 2 3 32

32

Cond= ALU Out ALU

Mux

Reg Instruction

RAdr

Ra Rb Rw busW busB 32 busA

32 32

Architecture des Ordinateurs

Mux
1

Mmoire Idale
WrAdr 32 Din Dout

Banc Reg 32

Mux Ext

32

<< 2

ALU Control

Imm 16

32

ALUOp ALUSelB
213

ExtOp

MemtoReg

Microprogrammation
Contrle: partie difficile de la conception
Chemin de donnes est presque standard et organis Mmoire est standard Contrle change toujours avec un aspect global (complexe)

Microprogrammation:
Une stratgie pour l'implmentation de l UC par la programmation

au niveau transfert registres. Micro architecture:

Structure logique et fonctionnalits du hardware tel que vue par le microprogrammeur


Architecture des Ordinateurs 214

Unit de contrle microprogramm


Logique de Contrle Sorties Chemin de donnes Multi-cycles

Entre

Add

Reg. Etat Slection Adresse Opcode

Types de Saut : Etat = zro Distribuer (Etat 1) Etat = inc.

Architecture des Ordinateurs

215

Interprtation macro instruction


Mmoire Principale ADD SUB AND Application + Donnes

. . . DATA

CPU

Mmoire de Contrle

Micro-squence pour AND e.g., Lire Instruction Lire Argument Calculer Enregistrer rsultat

Architecture des Ordinateurs

216

Variantes de microprogrammation
Horizontale

Un champ de contrle pour chaque point de contrle dans le chemin de donnes.


Verticale

Micro-instructions compactes : champ pour codifier chaque classe de micro-oprations. Dcoder en local pour gnrer les point de contrle.

Architecture des Ordinateurs

217

Horizontal: cas extrme


3 1 . . . 1 bit pour chaque registre enbMAR enbAC . . . N3 N2 N1 N0 Inc. PC ALU contrle

Remarques :
Plusieurs combinaisons inutiles et ne peuvent se passer en parallle. codifier pour diminuer l espace ROM Exemple: mem-reg and ALU-reg ne peuvent se passer en parallle; champ: source-criture-registres, 1 seul bit dcoder au lieu de 2 sparer Codification doit permettre le maximum de paralllisme possible par le chemin de donnes. Architecture des Ordinateurs
218

Conception des micro-instructions


1) Liste des points de contrle 2) Grouper les points : dfinir les champs 3) Placer les champs dans la squence logique (exemple, ALU opration & ALU arguments avant le squencement de micro-instructions) 4) Crer une lgende symbolique du format de microinstruction: dsignation de chaque champ, valeurs possibles, action sur les points de contrles 5) Minimiser la largeur de micro-instruction, codifier les oprations qui ne peuvent se passer en parallle.

Architecture des Ordinateurs

219

Liste des points de contrle


Dsignation Effet quand vrai Effet quand faut ALUSelA ALU arg. 1 = PC ALU arg. 1 = Reg[rs] RegDst Reg. dest. = rt Reg. dest. = rd TargetWrite Target reg. = ALU RegWrite None Ecrire reg. MemtoReg Donnes reg. = ALU Donnes reg. = mmoire IRWrite IR = Mmoire MemWr Ecrire mmoire IorD adresse mmoire = PC adresse mmoire = ALU Dsignation Valeur Effet ALUOp 00 ALU add 01 ALU sub 10 ALU funct 11 ALU OR ALUSelB 000 ALU arg. 2 = Reg[rt] 001 ALU arg. 2 = 4 010 ALU arg. 2 = sx IR[15-0] 011 ALU arg. 2 = sx, shift left 2 IR[15-0] 100 ALU arg. 2 = zx IR[15-0] PCSource 0 PC = ALU 1 PC = Target PCWrite PC = PCSource PCWriteCond IF Cond= then PC = PCSource
Architecture des Ordinateurs 220

Liste des points de contrle (suite)


Etat suivant -- adresse micro-instruction suivante
micro PC ou PC Design. Valeur Effet Squencement 00 adresse suiv. = 0 01 adresse suiv. = ROM de distribution. 10 adresse suiv. = adresse + 1

1 Add. Micro.PC Mux. 2 1 Slection Adresse Suiv.


Architecture des Ordinateurs

ROM Opcode 221

Format micro-instruction: codification


Champ
Contrle ALU SRC1 SRC2 Destination ALU Mmoire Registre mmoire EcrirePC Squencement Total

Largeur
2 1 2 1 2 2 2 2 14

Points de Contrle
ALUOp ALUSelA ALUSelB RegWrite, MemtoReg, RegDst, TargetWr. MemRead, MemWrite, IorD IRWrite, RegWr, MemtoReg, RegDest PCWrite, PCWriteCond, PCSource AddrCtl bits

Architecture des Ordinateurs

222

Lgende
Champ ALU Valeur Add Subt. Func Or PC rs 4 Sx Zx Dec rt Target rd Lire PC Lire ALU Ecrire IR Ecrire rt Lire rt ALU Target-cond. Fonction ALU add ALU sub ALU func ALU OR ALU 1 = PC ALU 1 = Reg[rs] ALU 2 = 4 ALU 2 = sx IR[15-0] ALU 2 = zx IR[15-0] ALU 2 = sx/sl IR[15-0] ALU 2 = Reg[rt] Target = ALUout Reg[rd] = ALUout Lire mmoire avec PC Lire mmoire avec ALU output Ecrire Reg[rt], ALU sortie adresse IR = Mem Reg[rt] = Mem Mem = Reg[rt] PC = ALU output IF Cond= then PC = Target instruction suivante premire microinstruction distribution avec ROM/Opcode.

SRC1 SRC2

Destination ALU Mmoire

Registre Mmoire

Ecrire PC

Squencement

Seq Zero Distribution Architecture des Ordinateurs

223

Le Microprogramme!
Etiquet. ALU Fetch Add Add LW Add SW Add SRC1 PC PC rs rs rs rs rs SRC2 ALU Dest. Mmoire Re. Mem EcrirePC Squence. 4 Lire PC IR ALU Seq Dec Target Distrib. Sx Seq Lire ALU Lire rt Fetch Sx Seq Ecrire ALU Lire rt Fetch rt Seq rd Fetch rt Target cond. Fetch jump address Fetch Zx Seq rd Fetch

Rtype Func. BEQ1 Sub JUMP1 ORI Or

Architecture des Ordinateurs

224

Evaluation de la microprogrammation
Facilit et structure de la conception Flexibilit
Adaptation aux changements dans l organisation, timing, et technologie Possible de faire des changements la fin du cycle de conception

Facile de rendre le jeu dinstructions plus puissant (il suffit dagrandir la mmoire de contrle) Gnralits
Implmentation de jeux dinstructions multiples sur une mme machine Jeux dinstruction sur mesure pour application

Implmentation coteuse Lenteur


Architecture des Ordinateurs 225

Exceptions
Programme Utilisateur Exception: Traitement Exception (systme)

Retour de l exception

Exception = traitement anormal


systme traite lexception
enregistrer ladresse de l instruction cause

retour lexcution du programme de lutilisateur sauvegarde du contexte (tat) du programme utilisateur


Architecture des Ordinateurs 226

Types d Exceptions
Interruptions Externes
Causes par des vnements externes Excutes entre instructions (terminer instruction courante) simple suspension et reprise du programme en cours

Interruptions Internes Causes par des vnements internes


conditions exceptionnelles (dbordement) erreurs (parit des donnes mmoire) fautes (page cache non-rsidente)

instruction peut tre ressaye; programme peut tre repris ou termin


Architecture des Ordinateurs 227

Conventions MIPS
Exception : tout changement inattendu du traitement normal; pas de diffrence entre interne et externe Terme interruption utilis seulement pour les vnements externes
Type vnement Requte dispositif E/S Invocation Noyau Dbordement Instruction indfinie Dysfonctionnement matriels Origine? Externe Interne Interne Interne Externe ou Interne MIPS Interruption Exception Exception Exception Exception or Interruption

Architecture des Ordinateurs

228

Transfert au traitement exception

Vecteur Interruptions

VI_base cause

Traitement Exception

PC <- MEM[ VI_base + cause || 00] 370, 68000, Vax, 80x86, . . .

Table Interruptions
PC < IT_base + cause || 0000 Sparc, . . . Traitement Exception TI_base cause

Approche MIPS: Adresse Fixe


PC < EXC_addr

Architecture des Ordinateurs

229

Changements conception?
EPCa 32-bits registre pour sauvegarde de l adresse de l instruction cause de l exception Cause registre utilis pour sauvegarde de raison de l exception. bits 2 5 pour codifier la raison: 0 (INT) => interruption 4 (ADDRL) => erreur adresse 10 (RI) => instruction indfinie 12 (OVF) => dbordement Signaux de contrle pour crire EPC , Cause Ecrire adresse fixe au PC, ajout au mux PC une entre pour 01000000 00000000 00000000 00000000 PC = PC - 4!
Architecture des Ordinateurs 230

Modifications du contrle
IR <= MEM[PC] PC <= PC + 4

A <= R[rs] B <= R[rt]

Autre (instruction indfinie) SW


S <= A + SX

EPC <= PC - 4 PC <= exp_addr cause <= 10 (RI)

R-type
S <= A fun B

ORi

LW

BEQ
S <= A - B

S <= A op ZX S <= A + SX

0010 Cond=
PC <= PC + SX || 00

~Cond=

dbordement
M <= MEM[S] MEM[S] <= B

0011

R[rd] <= S

R[rt] <= S

R[rt] <= M

EPC <= PC - 4 PC <= exp_addr Architecture des Ordinateurs cause <= 12 (Ovf)

231

CHAPITRE VI: Conception de microprocesseur multi-cycles

Architecture des Ordinateurs

232

Notions dexcution en pipeline

Architecture des Ordinateurs

233

Notions de Pipeline
Exemple: Opration de lavage du linge 4 personnes ; chacun doit : laver, scher, repasser, ranger lavage : 30 minutes schage : 40 minutes

Repassage : 30 minutes Rangement : 20 minutes


Architecture des Ordinateurs 234

Lavage du linge en squentiel


6 PM 7 O r d r e T c h e s 8 9 10 11 12 1 2 AM

A B C D

30 40 30 20 30 40 30 20 30 40 30 20 30 40 30 20 Time

8 heures pour terminer


Architecture des Ordinateurs 235

Lavage linge en pipeline


O r d r e T c h e s 6 PM 7 10 1 1 30 40 40 40 40 30 20 8 9 Temps

A B C D

4 heures !
Architecture des Ordinateurs 236

Remarques sur le traitement en pipeline


Traitement en pipeline n amliore pas le temps de chaque tche, mais le dbit des oprations Tches multiples en parallles avec ressources diffrentes Gain de temps = Nombre d tages Dbit de pipeline est limit par l tage le plus lent Longueur non-quilibre rduit le gain de temps Temps pour remplir et dcharger pipeline rduit le gain de temps
Architecture des Ordinateurs 237

5 Etages pour Chargement (LW)


Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 LW Ifetch Reg/Dec Exec Mem Wr

Ifetch: Lecture de l instruction Reg/Dec: Lecture des registres et dcodage instruction Exec: Calculer l adresse mmoire Mem: Lecture de mmoire donnes Wr: Ecriture dans les registres Chemin donnes : Insertion d autres registres intermdiaires (entre tages) pour permettre traitement pipeline
Architecture des Ordinateurs 238

Reprsentation dexcution en pipeline


Temps IFetch Dcd Exec Mem Exec WB Mem Exec WB Mem Exec WB Mem Exec WB Mem Exec WB Mem WB

IFetch Dcd

IFetch Dcd

IFetch Dcd

IFetch Dcd Droulement du programme

IFetch Dcd

Architecture des Ordinateurs

239

Comparaison: monocycle, multi-cycle, pipeline


Cycle 1 Clk Implmentation monocycle: LW SW Perte Cycle 2

Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10 Clk Implmentation multi-cycle: LW Ifetch Reg Exec Mem Wr SW Ifetch Reg Exec Mem R-type Ifetch

Implmentation pipeline: LW Ifetch SW Reg Ifetch Exec Reg Mem Exec Reg Wr Mem Exec Wr Mem Wr
240

R-type Ifetch
Architecture des Ordinateurs

Pourquoi le pipeline?
Excution de 100 instructions: Machine monocycle (10+7+10+10+7)

45 ns/cycle x 1 CPI x 100 inst = 4500 ns


Machine multi-cycle 10 ns/cycle x 4.4 CPI (mixte d instructions) x 100 inst = 4400 ns Machine en pipeline 10 ns/cycle x (1 CPI x 100 inst + 4 cycles dcharg.) = 1040 ns

Architecture des Ordinateurs

241

Alas de pipeline et mthodes de rsolution

Architecture des Ordinateurs

242

Ressources disponibles?
Temps (cycles)

ALU

Inst 0 Inst 1 Inst 2 Inst 3 Inst 4

Im

Reg

Dm ALU

Reg

Im

Reg

Dm ALU

Reg

Im

Reg

Dm ALU

Reg

Im

Reg

Dm ALU

Reg

Im

Reg

Dm

Reg

Architecture des Ordinateurs

243

Problmes avec les pipelines?


Types d alas ( hazards ) :
Alas de structure: utilisation dune mme ressource plusieurs fois en mme temps Alas de donnes: utilisation dune donne avant quelle ne soit prte
instruction dpend des rsultas d une instruction antrieure encore dans le pipeline

Alas de contrle: prendre une dcision avant dvaluer la condition


instruction de saut conditionnel

Alas rsolus par suspension (attente)


contrle du pipeline doit dtecter lala prendre laction ncessaire pour rsoudre lala
Architecture des Ordinateurs 244

Mmoire : alas de structure


Temps

ALU

Load Instr 1 Instr 2 Instr 3 Instr 4

Mem

Reg

Mem ALU

Reg

Mem

Reg

Mem ALU

Reg

Mem

Reg

Mem ALU

Reg

Mem

Reg

Mem ALU

Reg

Mem

Reg

Mem

Reg

Dtection facile. Solution limite la performance!


Architecture des Ordinateurs 245

Alas de contrle
Suspension: attendre jusqu ce que la dcision puisse tre prise
possible de prendre la dcision en cycle 2 par ajout de hardware
Temp (en cycles)
ALU Mem Reg Mem ALU Reg

Add Beq Load

Mem

Reg

Mem

Reg

ALU

Mem

Reg

Mem

Reg

Impact: 2 cycles / instruction de saut conditionnel => lenteur


Architecture des Ordinateurs 246

Alas de Contrle
Prdiction: suppose une des deux possibilits, et correction en cas d erreur
Temps (en cycles)
ALU

Add Beq Load

Mem

Reg

Mem ALU

Reg

Mem

Reg

Mem

Reg

ALU

Mem

Reg

Mem

Reg

Impact: 1 cycle/ instruction saut si prdiction est correcte, 2 cycles en cas d erreur (correcte - 50%)
Architecture des Ordinateurs 247

Alas de contrle
Redfinir saut conditionnel: avec effet aprs instruction suivante (saut avec effet retard)
Temps (en cycles)
ALU

Add Beq Misc Load

Mem

Reg

Mem ALU

Reg

Mem

Reg

Mem ALU

Reg

Mem

Reg Mem

Mem ALU

Reg Mem Reg

Reg

Impact: 0/cycle par instruction saut si on peut remplir la case instruction aprs saut
Architecture des Ordinateurs 248

Alas de donnes sur r1

add r1 ,r2,r3 sub r4, r1 ,r3 and r6, r1 ,r7 or r8, r1 ,r9 xor r10, r1 ,r11

Architecture des Ordinateurs

249

Alas de donne sur r1


Dpendances en arrire
Temps (en cycles) I F Im ID/R g Reg
Im

add r1,r2,r3 sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 xor r10,r1,r11


Architecture des Ordinateurs

E X

ME M Dm
ALU

ER
Reg

Reg

Im

ALU

Dm ALU

Reg

Reg

Dm ALU

Reg

Im

Reg

Dm ALU

Reg

Im

Reg

Dm

Reg

250

Solution Alas de Donnes:


Renvoyer rsultat d une tape vers une autre
Temps (en cycles) I F Im ID/R F Reg
Im

add r1,r2,r3 sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 xor r10,r1,r11


Architecture des Ordinateurs

E X

ME M Dm
ALU

W B Reg
Dm ALU Reg

Reg

Im

ALU

Reg

Dm ALU

Reg

Im

Reg

Dm ALU

Reg

Im

Reg

Dm

Reg

or OK ?

251

Alas de donnes: cas Load


Dpendances en arrire
Temps (en cycles) I F Im ID/R F Reg
Im

lw r1,0(r2) sub r4,r1,r3

E X

ME M Dm
ALU

W B Reg
Dm Reg

Reg

Renvoi impossible Suspension est la seule solution!


Architecture des Ordinateurs 252

ALU

Notions de chemin de donnes de pipeline

Architecture des Ordinateurs

253

Conception du processeur avec pipeline Revoir le chemin de donnes et le diagramme de contrle Association des ressources aux tats Rsolution de tous les conflits (alas) Assertion de contrle chaque tape
Architecture des Ordinateurs 254

Next PC PC

Architecture des Ordinateurs

Inst. Mem IR Valid Dcd Ctrl IRex Cond= Exec S Mem Access M Ex Ctrl IRmem Mem Ctrl Reg File B A

Processeur avec pipeline

Une instruction chaque cycle?

Data Mem

IRwb Banc Regs.


255

WB Ctrl

Processeur avec pipeline


ER

ER M EX

ER M

Contrle

EI/DI

DI/EX

EX/MEM

MEM/ER
256

Architecture des Ordinateurs

chemin & contrle


IR <- Mem[PC]; PC < PC+4;

A <- R[rs]; B< R[rt]

S < A + B;

S < A or ZX;

S < A + SX;

S < A + SX;

If Cond PC < PC+SX;

M < Mem[S]

Mem[S] <- B

R[rd] < S;

R[rt] < S;

R[rd] < M;

Architecture des Ordinateurs

257

Instruction de chargement
Cycle 1 Cycle 2 Clock 1er lw Ifetch Reg/Dec Exec Reg/Dec Mem Exec Reg/Dec Wr Mem Exec Wr Mem Wr Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7

2em lw Ifetch

3em lw Ifetch

Les 5 units indpendantes du chemin donnes pipeline:


Mmoire Instruction pour tape Ifetch Port lecture du Banc Registres (bus A et bus B) pour tape Reg/Dec ALU pour tape Exec Mmoire donnes pour tape Mem Banc Registres port criture (bus W) l tape Wr
Architecture des Ordinateurs 258

Instruction type-R
Cycle 1 Cycle 2 Cycle 3 Cycle 4

R-type Ifetch

Reg/Dec

Exec

Wr

Ifetch
Lecture de l instruction de mmoire instructions

Reg/Dec
Lecture registres et dcodage de l instruction

Exec
Opration ALU sur les deux registres

Wr
Ecriture rsultat dans un registre
Architecture des Ordinateurs 259

Pipeline avec type-R et Load


Cycle 1 Cycle 2 Clock R-type Ifetch R-type Reg/Dec Ifetch Load Exec Reg/Dec Ifetch Wr Exec Reg/Dec Wr Exec Reg/Dec Mem Exec Reg/Dec Wr Wr Exec Wr Problme! Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9

R-type Ifetch

R-type Ifetch

Un conflit (alas de structure):


Deux instructions :criture dans le Banc registre en mme temps! Un seul port criture
Architecture des Ordinateurs 260

Observations importantes
Chaque unit ne peut tre utilise plus d une seule fois par instruction Chaque unit doit tre utilise dans la mme tape chaque instruction:
Chargement utilise port criture du banc registre dans la 5em tape
1 2 3 4 5 Load Ifetch Reg/Dec Exec Mem Wr

R-type utilise le port criture du banc registre dans la 4me tape


1 R-type Ifetch 2 Reg/Dec 3 Exec 4 Wr

2 manires pour rsoudre ce problme.


Architecture des Ordinateurs 261

Solution 1: suspension du pipeline


Cycle 1 Cycle 2 Clock Ifetch Load Reg/Dec Ifetch Exec Reg/Dec Wr Exec Reg/Dec Mem Exec Reg/Dec Bulle Wr Wr Exec Wr Exec Reg/Dec Wr Exec Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9

R-type Ifetch

R-type Ifetch

R-type Ifetch

Pipeline Reg/Dec Ifetch

Insertion de bulle pour limination de conflit:


Logique de contrle complique. Pas de dmarrage de nouvelle instruction.

Pas de dmarrage dinstruction en Cycle 6!


Architecture des Ordinateurs 262

Solution 2: ralentir type-R


criture dans le banc registre se fait au cycle 5 au lieu de 4 NOOP (pas dopration) pour tape Mem
1 R-type Ifetch 2 Reg/Dec 3 Exec 4 Mem 5 Wr

Cycle 1 Cycle 2 Clock R-type Ifetch R-type Reg/Dec Ifetch Load

Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9

Exec Reg/Dec Ifetch

Mem Exec Reg/Dec

Wr Mem Exec Reg/Dec Wr Mem Exec Reg/Dec Wr Mem Exec Wr Mem Wr


263

R-type Ifetch

R-type Ifetch
Architecture des Ordinateurs

Modifications chemin & contrle


IR <- Mem[PC]; PC < PC+4;

A <- R[rs]; B< R[rt]

S < A + B;

S < A or ZX;

S < A + SX;

S < A + SX;

if Cond PC < PC+SX;

M < S

M < S R[rt] < M;

M < Mem[S]

Mem[S] <- B

R[rd] < M;

R[rd] < M;

Architecture des Ordinateurs

264

Les 4 tapes du rangement


Cycle 1 Cycle 2 Cycle 3 Cycle 4

Store

Ifetch

Reg/Dec

Exec

Mem

Wr

Ifetch: Lecture instruction de mmoire instructions Reg/Dec: Lecture registres et dcodage instruction Exec: Calcul adresse mmoire Mem: Ecriture donnes dans mmoire donnes Architecture des Ordinateurs 265

Les 3 tapes du saut conditionnel (Beq)


Cycle 1 Cycle 2 Cycle 3 Cycle 4

Beq

Ifetch

Reg/Dec

Exec

Mem

Wr

Ifetch: Lecture instruction de mmoire instructions Reg/Dec: Lecture registres et dcodage instruction Exec:
Comparaison des deux registres Slection de l adresse de saut Chargement PC: Alas de Contrle possible!
Architecture des Ordinateurs 266

Diagramme de contrle
IR <- Mem[PC]; PC < PC+4;

A <- R[rs]; B< R[rt]

S < A + B;

S < A or ZX;

S < A + SX;

S < A + SX;

If Cond PC < PC+SX;

M < S

M < S R[rt] < S;

M < Mem[S]

Mem[S] <- B

R[rd] < S;

R[rd] < M;

Architecture des Ordinateurs

267

Chemin & contrle


IR fun Decode rt rs op v wb me ex im Exec A B D PC Suiv. PC Mem Donn. Acc Mem S M Banc Reg.
268

Mem Inst

v wb me Exec Ctrl Mem Ctrl

v wb WB Ctrl

rs rt Banc Reg.

Architecture des Ordinateurs

Essai dexcution
10lw r1, r2(35) 14addI r2, r2, 3 20subr3, r4, r5 24beqr6, r7, 100 28ori r8, r9, 17 32addr10, r11, r12 100 and r13, r14, 15

Architecture des Ordinateurs

269

Fetch 10
n Mem Inst Decode

n
Exec Ctrl

n
Mem Ctrl WB Ctrl

rs rt Banc Reg. Exec A B Mem Donn. Acc Mem D PC Suiv. S M Banc Reg.
10 14 20 24 10 30 34
Architecture des Ordinateurs

lw sub beq ori add

r1, r2(35) r3, r4, r5 r6, r7, 100 r8, r9, 17 r10, r11, r12 r13, r14,270 15

addI r2, r2, 3

100 and

Fetch 14, Decode 10


n
Mem Inst
lw r1,r2,3

n WB Ctrl

Decode

Exec Ctrl

Mem Ctrl

rs rt Banc Reg. Exec A B Mem Donn. Acc Mem D PC Suiv. S M Banc Reg.
10 14 20 24 14 30 34
Architecture des Ordinateurs

lw sub beq ori add

r1, r2(35) r3, r4, r5 r6, r7, 100 r8, r9, 17 r10, r11, r12
271 15 r13, r14,

addI r2, r2, 3

100 and

Fetch 20, Decode 14, Exec 10


n
addi r2, r2, 3

n WB Ctrl

Mem Inst

Decode

lw r1

Exec Ctrl

rt

35

Mem Ctrl

Banc Reg.

Exec

A B

S Acc Mem

Banc Reg.
10 14 20 24 30 34 lw sub beq ori add

Mem Donn.

r1, r2(35) r3, r4, r5 r6, r7, 100 r8, r9, 17 r10, r11, r12
272 r13, r14, 15

D PC Suiv.

addI r2, r2, 3

Architecture des Ordinateurs

20

100 and

Fetch 24, Decode 20, Exec 14, Mem 10


sub r3,r4, r5

n
addi r2, r2

Mem Inst

Decode

Lw r1

Exec Ctrl

Mem Ctrl

WB Ctrl

Banc Reg.

B Mem Donn. Acc Mem D PC Suiv.

Exec

r2+35

Banc Reg.
10 14 20 24 30 34 lw sub beq ori add

r1, r2(35) r3, r4, r5 r6, r7, 100 r8, r9, 17 r10, r11, r12 r13, r14, 273 15

addI r2, r2, 3

Architecture des Ordinateurs

24

100 and

CHAPITRE VIII: Systmes de mmoire

Architecture des Ordinateurs

274

Technologies et types de mmoires

Architecture des Ordinateurs

275

Tendances de technologie
Capacit DRAM: Disques: 4x in 3 annes 4x in 3 anne
DRAM Anne Taille 1000:1! 64 Kb 1980 1983 256 Kb 1986 1 Mb 1989 4 Mb 1992 16 Mb 1995 64 Mb
Architecture des Ordinateurs

Vitesse 2x in 10 annes 2x in 10 annes


Temps de Cycle 2:1! 250 ns 220 ns 190 ns 165 ns 145 ns 120 ns
276

Problme de mmoire?
Vitesse Processeur- Vitesse DRAM

1000 Performances 100 10

Proc 60%/an. (2X/1.5an) Divergence:


CPU

(augmentation 50% / an)

DRAM

1
1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000
Architecture des Ordinateurs

DRAM 9%/an. (2X/10 an)

Anne

277

Situation actuelle
Utilisation des caches pour faire le pont entre vitesse processeur et vitesse mmoire Diffrence entre performance Microprocesseur et performance DRAM
temps pour un dfaut de cache 1st Alpha (7000): 340 ns/5.0 ns 2nd Alpha (8400): 266 ns/3.3 ns 3rd Alpha (t.b.d.): 180 ns/1.7 ns en nombre d instructions = 68 clks x 2 or 136 instructions = 80 clks x 4 or 320 instructions =108 clks x 6 or 648 instructions

Architecture des Ordinateurs

278

Impact sur performances


Hypothse: processeur
Horloge = 200 MHz (5 ns / cycle) CPI = 1.1 50% arith/logic, 30% chargement/rangement, 20% contrle

Hypothse: 10% des accs mmoire avec dfaut de cache de 50 cycles CPI = CPI idal + retard moyen par instruction = 1.1(cyc) +( 0.30 (accs mmoire/ins) x 0.10 (dfauts/accs mmoire) x 50(cycles/dfaut) ) = 1.1 cycle + 1.5 cycle = 2. 6 58 % du temps processeur est perdu dans l accs mmoire
Architecture des Ordinateurs 279

But: illusion de mmoire grande, rapide, peu coteuse Grandes mmoires sont lentes, et les mmoires rapides sont petites Comment crer l illusion?
Hirarchie Paralllisme

Architecture des Ordinateurs

280

Vue de systme mmoire

Processeur Contrle Mmoire Mmoire Mmoire Mmoire Chem. Don. Mmoire

Vitesse: Plus rapide Taille: Plus petite Cot: Plus lev

Plus lente Plus grande Plus bas

Architecture des Ordinateurs

281

Hirarchie: pourquoi a fonctionne?


Le principe de Localit:
Pendant un petit intervalle de temps, le programme accde une petite portion de l espace adresse
Probabilit de rfrencement

Espace adresse

2n - 1

Architecture des Ordinateurs

282

Hirarchie: comment a fonctionne?


Localit Temporelle
=> Les lments rcemment rfrencs sont les plus proches du processeur

Localit Spatiale
=> Transferts en blocks pour les niveaux suprieurs

Au processeur

Niveau Suprieur
Blk X

Niveau Infrieur

Du processeur

Blk Y

Architecture des Ordinateurs

283

Hirarchie: terminologie
Succs: lment se trouve dans un block du niveau suprieur (exemple: Block X)
Taux de succs: la fraction des accs mmoire ayant lieu au niveau suprieur Temps de succs: Temps pour accder au niveau suprieur
temps accs RAM + temps dtermination succs ou dfaut

Dfaut: lment n existe pas dans le niveau suprieur (le ramener d un autre niveau: exemple Block Y)
Taux de dfaut = 1 - (Taux de succs) Pnalit de dfaut: Temps pour placer le block au niveau suprieur (remplacer un autre block) +
temps pour livrer lment au processeur

Temps de succs << Pnalit de dfaut


Au processeur Niveau Suprieur
Blk X

Niveau Infrieur

Du processeur
Architecture des Ordinateurs

Blk Y 284

Hirarchie : typique
Principe de localit permet de:
Prsenter l utilisateur une grande mmoire peu coteuse . Un temps d accs global proche du temps d accs de la technologie la plus coteuse.
Processeur Contrle Cache second niveau (SRAM) Mmoire Principale (DRAM) Mmoire Secondaire (Disque)

Registres

Cache sur puce

Cem. Don.

Vitesse (ns): 1s Taille (octet):100s


Architecture des Ordinateurs

10 K

100 M

10,000,000 (10s ms) G

285

Hirarchie : gestion
Registres <-> Mmoire
par compilateur (programmeur?)

cache <-> mmoire


par le hardware

mmoire <-> disques


par le hardware et systme d exploitation (mmoire virtuelle) par le programmeur (fichiers)

Architecture des Ordinateurs

286

Hirarchie : technologie
Access alatoire:
Mme temps d accs pour toutes les adresses DRAM: Dynamique
Forte densit, basse consommation d'nergie, peu coteuse, lente rafrachissement priodique

SRAM: Statique
basse densit, forte consommation dnergie, coteuse, rapide pas de rafrachissement

Autre type d accs:


Temps d accs varie d une adresse une autre Exemples: Disque, CDROM

Accs squentiel: temps daccs linaire en fonction de ladresse (e.g.,Bande)


Architecture des Ordinateurs 287

SRAM
Cellule (~ 6 transistors) Slection mot
0 1

~bit

bit

Ecriture:
1. Valeur ligne bit (bit=1, ~bit=0) 2. Activer slection mot

Lecture:
1. 2. 3. 4. Pr charger bit et ~bit to Vdd Activer slection mot Cellule dcharge bit ou ~bit Dtection de diffrence entre bit et ~bit
288

Architecture des Ordinateurs

Organisation du SRAM
Din 3 Din 2 Din 1 Din 0
Pr charge

WrEn

criture Lecture + Cellule SRAM

+
mot 0

A0 A1 A2 A3

Dcodeur Adresse

mot 1

:
mot 15

- Dtection +

Architecture des Dout 3 OrdinateursDout 2

Dout 1

Dout 0

289

Interface SRAM
A
N

WE_L OE_L

2 N mots x M bit SRAM


M

Write Enable (WE_L) actif quand niveau bas Combiner Din et Dout: Output enable (OE_L)
ncessaire

WE_L actif (Low), OE_L inactif (High)


D comme entre

WE_L inactif (High), OE_L actif (Low)


D comme sortie
Architecture des Ordinateurs 290

SRAM Timing
Temps criture Imp. Temps Lecture Donn. Sortie Adresse Lecture Donn. Sort Adresse Lecture

D A OE_L WE_L

Donn. Entre Adresse criture

Maintient Ecriture Etablissement Ecriture

Temps accs Lecture

Architecture des Ordinateurs

291

DRAM
Slection range

criture:
1. Valeur ligne bit 2. Slection ranger

Lecture:
1. 2. 3. 4. 5. Pr chargement bit Vdd Slection ranger Charge de ligne bit change Dtection changement de charge sur ligne bit criture valeur
bit

Rafrachissement
Architecture des Ordinateurs

1. Lecture de chaque cellule

292

Organisation carr du DRAM


Cellule

Adresse Range

Slection colonne & Circuit E/S

Adresse Colonne

data
Architecture des Ordinateurs 293

Intgration de cache et pagination

Architecture des Ordinateurs

294

1 KB Cache Correspondance Directe/ 32 octets par block


31 Etiquette 9 Index 4 Octet 0

V Bit

Etiquette du cache 0x50

Donnes du cache octet 31 octet 63

: :

octet 1 octet 0 0 octet 33 octet 32 1 2 3

:
octet 1023

: :
octet 992 31

Architecture des Ordinateurs

295

Taille du block
Augmentation de taille du block
augmentation de pnalit de dfaut augmentation de taux de dfaut

=>

Temps accs:
= temps succs x (1 - taux de dfaut) + pnalit dfaut x taux dfaut
Pnalit Dfaut

Taux Dfaut

Temps Accs

Architecture des Ordinateurs

Taille Block

Taille Block

296 Taille Block

Cache totalement associatif


Pas de possibilit de conflit
31 Etiquette 4 Octet 0

Etiquette X X X X X

V Bit

Donnes

: :

octet 31 octet 63

octet 1 octet 0 octet 33 octet 32

Architecture des Ordinateurs

297

Cache N x associatif
Index V Etiquette Donnes Cache Block 0 Donnes Cache Block 0 Etiquette V

Comp.

Sel1 1

Mux

0 Sel0

Comp.

OR Succs Cache Block

Architecture des Ordinateurs

298

Inconvnients du cache associatif


Cache associatif:
N comparateurs au lieu de 1 Les Mux augmentent le dlais Donnes disponibles aprs la dcision de dfaut ou succs

Cache correspondance directe


Donnes disponibles avant dcision de succs/dfaut: possibilit de continuer avec supposition de succs

Architecture des Ordinateurs

299

Ecriture?
WT Ecrire dans cache et dans mmoire niveau infrieur WB Ecrire uniquement dans cache. Le block de cache est crit en mmoire niveau infrieur quand on le remplace (modifier ou non?) WT toujours combin avec tampon d criture
Cache

Processeur

DRAM

Tampon Ecriture
Architecture des Ordinateurs 300

Organisation de mmoire virtuelle


0 1024 7168 frame 0 1 7 Mmoire Physique 1K 1K 1K Traduction 0 1024 page 0 1 1K 1K

31744

31

1K

Mmoire virtuelle Traduction Add. Num. Page Virtuelle Registre base index
Architecture des Ordinateurs

10 offset

Table des pages V


Droits Acs

A Ph

+
301

Adresse physique

Mmoire virtuelle et cache


Traduction avant accs cache = > accs cache plus lent Dfaut AV Processeur Traduction AP Cache Succs Mmoire

Donnes

Solution : TLB cache (traduction anticipe) Add Virt. Add. Phy. Modif. Ref. Valide Accs

Architecture des Ordinateurs

302

Traduction avec TLB


AP/ succs TLB dfaut Traduction donnes 1/2 t t 20 t Cache succs dfaut Mmoire

AV Processeur

Architecture des Ordinateurs

303

You might also like