Vous êtes sur la page 1sur 61

Universit Ferhat Abbas - Stif

2012/2013

Architecture des ordinateurs


Support de cours
N. Messai

Plan du cours
Introduction gnrale : terminologie et objectifs Chapitre 1 : Machine de Von Newmann et reprsentation des donnes Chapitre 2 :Circuits logiques Chapitre 3 : Structure et fonctionnement dun processeur Chapitre 4 : les mmoires Chapitre 5 : Structure externe du processeur MIPS R3000 Chapitre 6 : Structure interne du processeur MIPS R3000 et optimisation Chapitre 7 : Entres sorties et interruptions

Bibliographie
1 2 3 4 5 6 7

Architecture de l'ordinateur Architecture de l'ordinateur Architecture de l'ordinateur Architecture des machines et des systmes informatiques Architecture des ordinateurs Architecture et technologie des ordinateurs Architecture des ordinateurs Fonctionnement et technologie
Organisation et conception des ordinateurs Interface matriel/logiciel Organisation et architecture de lordinateur

Emmanuel Nicholas. P Andrew

LAZARD Carter TANENBAUM

Pearson Education EdiScience Schaums Pearson Education Dunod

Alain Cazes Jolle Delacroix Philippe Darche Paolo Mc Belaid


John Hennessy David Patterson William Stallings

Zanella

Dunod

Pages bleues
Dunod Pearson Education Dunod

8 9

10 Architecture de l'ordinateur

Robert Strandh Irne Durand

Introduction
Terminologie Structure des ordinateurs : tude des composants matriels UCT (UAL + UC) Mmoire Unit E/S Organisation des ordinateurs : Etude des composants matriels et leurs interconnexions Architecture des ordinateurs : Etude des composants matriels + interconnexion + logiciels + compilateurs + systmes dexploitation + conception des circuits + SGBD + Interet de larchitecture des ordinateurs Ltude de larchitecture des ordinateurs nous permet elle de : Faire du traitement de texte ou les bases de donnes Crer ou grer un site Internet Dvelopper des logiciels en Java ou en C++ Pas du tout ; cependant elle peut satisfaire la curiosit intellectuelle sur la structure et le fonctionnement de cette machine et aide normment pour : Dvelopper des systmes de traitement haute performance crire des systmes dexploitation Dvelopper des compilateurs Objectif du module ADO Permettre ltudiant de comprendre lorganisation et le fonctionnement dun ordinateur indpendamment des aspects ralisation et technologie. Le module se dcompose en trois grandes parties : La premire partie porte sur l'architecture externe d'un processeur 32 bits, et insiste sur la dfinition de l'interface matriel / logiciel et la programmation en assembleur. On illustre les concepts sur l'exemple du processeur industriel MIPS R3000. La seconde partie consiste en un rappel des fondements thoriques des systmes matriels numriques synchrones. La troisime partie prsente l'architecture interne du processeur MIPS R3000, dans une ralisation micro-programme.

Chapitre1 Machine de Von Newmann et reprsentation des donnes


1- Configuration de base Les instructions excuter et les donnes manipules sont stockes en mmoire centrale ; on distingue deux possibilits de stockage qui impliquent deux structures. 1-1 Structure de Harvard Cette structure se distingue de l'architecture de Von Neumann par le fait que les instructions et les donnes sont spares dans deux mmoires indpendantes. L'accs chacune des deux mmoires se fait via un chemin distinct. Mmoire Contenant
Uniquement Bus adresse des instructions Bus donnes instruction Bus adresse instruction Bus donne Bus adresse

Unit centrale

Mmoire Contenant
Uniquement des donnes

1-2 Larchitecture ou structure de Von Neumann: John Von Neumann a propos une structure universelle de machine ou on utilise une et une seule et unique mmoire pour stocker la fois instructions et donnes
Unit

Bus de donnes Bus dadresses

centrale

Mmoire contenant Instructions+donnes

Le schma dcrit par Von Neumann reste encore valable pour les ordinateurs actuels ; en effet selon lui tout ordinateur doit possder les units fonctionnelles suivantes : un organe de calcul : susceptible d'excuter les oprations arithmtiques et logiques, l'unit arithmtique et logique (UAL ou ALU) ; Cest au sein de ce bloc fonctionnel que sont ralises les oprations arithmtiques telles quadditions, multiplications, et les traitements logiques de comparaisons sur les donnes traiter. une mmoire centrale, servant la fois contenir les programmes dcrivant la faon d'arriver aux rsultats et les donnes traiter des organes d'entre-sortie, ou priphriques, servant d'organes de communication avec l'environnement et avec l'homme; Les priphriques sont trs nombreux et trs varis. On distingue trois types de priphriques : Priphrique dentre tels que : clavier, souris. Priphrique de sortie tels que : cran, imprimante. Priphrique dentre sortie tels que : lecteurs disque. une unit de commande (control unit) permettant d'assurer un fonctionnement cohrent des lments prcdents Cest lintrieur de cette unit de commande que va tre place
3

linstruction raliser et cest elle qui, en fonction de cette instruction, va rpartir les ordres aux divers organes de la machine. Lunit dchange Cette unit dchange a pour rle de grer les transferts des informations entre lunit centrale et lenvironnement du systme informatique. Cet environnement correspond en fait aux priphriques tels que disques durs, imprimantes, cran, Le schma suivant illustre ces blocs fonctionnels qui seront dtaills dans les chapitres suivants. Unit Centrale Unit de Commande Mmoire Centrale Instructions

Unit de calcul

Donnes

Unit dchanges

Priphriques

2- Reprsentation des donnes en mmoire Les ordinateurs traitent deux types dinformations : Les instructions : qui reprsentent les oprations effectues par lordinateur Les donnes dont on distingue deux types : les donnes numriques: ce sont les oprandes sur lesquelles portent les oprations ou les rsultats les donnes non numriques: symboles ou caractres constituant un texte (alphanumriques et spciaux) le codage de ce type est ralise par une table de correspondance les codes les plus connus sont :le code BCD , ASCII,EBCDIC , UNICODE. Dans ce qui suit on sintresse la reprsentation des donnes numriques. 2-1 Entiers naturels( non signs) Les entiers naturels (positifs ou nuls) sont cods sur un nombre doctets fix (un octet est un groupe de 8 bits). On rencontre habituellement des codages sur 1,2 ou 4 octets. Par exemple sur 1 octet, on pourra coder les nombres de 0 255 On reprsente le nombre en base 2 et on range les bits dans les cellules binaires correspondant leur poids binaire, de la droite vers la gauche. Si ncessaire, on complte gauche par des zros (bits de poids fort). exemple : sur 8 bits on reprsente 6 par : 00000110 Lintervalle des nombres reprsentables sur n bits : [0, 2n-1]
4

linconvnient est quon ne peut pas reprsenter tous les nombres et il y a un risque de dbordement lors des oprations. Exercice :trouvez lintervalle de reprsentation pour 1 octet, 2 octets, 4 octets. 2.2 Entiers signs 2.2.1 Signe et valeur absolue Elle consiste coder la valeur absolue du nombre sur n 1 bits et on sacrifie le bit le plus gauche pour coder le signe du nombre . Par convention 0 reprsente un nombre positif et 1 un nombre ngatif Exemple : 6 = 0110 -6 = 1110 avantages : Trs facile comprendre Symtrie : autant de ngatifs que de positifs inconvnients : Deux faons de coder 0 ; Bit de signe doit tre trait de faon particulire => oprations arithmtiques non aises Lintervalle des nombres reprsentables sur n bits en SVA gal: [-(2n-1-1), + (2n-1-1)] EXEMPLE : en utilisant SVA sur 4 bits lintervalle est : de -7 +7

2-2-2 Complment 1 (logique) Les nombres positifs sont cods comme prcdemment, les ngatifs sont obtenus en remplaant tous les bits 1 par 0 et vice-versa. Exemple : 6 = 0110 ; -6 = 1001 Avantage Symtrie : autant de ngatifs que de positifs Une soustraction se rduit l'addition de son complment Inconvnient 2 reprsentations du 0 : 0000000 et 11111111 Bit de retenue gnr reporter lors de l'addition (additionn au rsultat) Lintervalle des entiers reprsents sur n bits est le mme quen SVA [-(2n-1-1) , + (2n-1-1)] 2-2-3 Complment 2 (arithmtique) En complment 2 les nombres positifs ont exactement la mme reprsentation en binaire non signe et en complment 1. Les nombres ngatifs par contre, sont obtenus en calculant dabord le complment 1, puis ajouter un 1. Remarque Lintervalle des nombre reprsentables sur n bits est : [-(2n-1), + (2n-1-1)] Exemple : sur 4 bits lintervalle est : [-8, +7] Avantages Une seule reprsentation du zro Une soustraction se rduit l'addition de son complment Pas de report du bit de retenue pour l'addition (la retenue gnre en addition est ignore) Reprsentation utilise par la majorit des processeurs Inconvnient Dissymtrie : plus de ngatifs que de positifs (qui peut tre un avantage : Un nombre ngatif supplmentaire)
5

Exemple : soustraction de nombres sur 4 bits


dcimal +7 -6 ___ +1 , signe+val.abs 0111 + 1110 _____ ?101 comp. 1 0111 +1001 ______ 10000 + 1 ______ 0001 (b) comp. 2 0111 +1010 ______ 10001

(a)

______ 0001 (c)

(a) est la plus facile lire, mais le bit de signe doit tre trait part ; (b) on effectue l'addition du complment, y compris le bit de signe avec report de la retenue (on additionne la retenue); (c) on effectue une addition, y compris le bit de signe, mais sans report de la retenue (on lignore). Notion de carry Lors dune opration arithmtique .parfois un bit supplmentaire de poids fort est gnr Il nest pas perdu et est mmoris comme tant le bit de carry. Cette mmorisation seffectue dans un registre du processeur appel registre dtat (PSW) (sera tudi dans le chapitre 3). Notion doverflow Lors dune opration arithmtique sur des nombres de mme signe, le rsultat peut se rvler tre trop grand ou trop petit pour tre reprsentable par la machine, le rsultat obtenu est alors erron au regard de son interprtation ; on parle alors doverflow ou de dpassement de capacit ; ce bit est mmoris dans le registre dtat (PSW) Remarque Laddition de deux nombres de signes diffrents ne produit jamais de dbordement (la valeur absolue du rsultat est toujours infrieure au maximum des valeurs absolues des deux oprandes). Laddition de deux nombres de mme signe produit un dbordement si le signe du rsultat est diffrent du signe des deux oprandes. 2-3 Reprsentation des nombres fractionnaires la conversion dun nombre fractionnaire dcimal en binaire nest pas toujours effectue avec prcision Un nombre fractionnaire est compos de deux parties : partie entire et partie fractionnaire pour exprimer le nombre N en dcimal, il faut traiter sparment la partie entire et la partie dcimale. EXEMPLE : (1001,01)2 = 9 + 0.25 = 9.25 Le passage de la base 10(dcimal) au binaire consiste : Convertir la partie entire par divisions successives par 2 Convertir la partie dcimale par des multiplications successives par 2
6

2.3.1 Reprsentation des nombres fractionnaires en virgule fixe Cette reprsentation pose un problme au niveau de la machine. La premire solution tait de ne pas reprsenter matriellement la virgule et de traiter le nombre fractionnaire comme un nombre entier. La virgule est virtuelle, elle est gre par le programmeur, cest lui qui dfinit sa position, chose qui nest pas facile, do son inconvnient. Un autre inconvnient est la limitation de reprsenter des nombres plus grands. 2.3.2 Reprsentation des nombres fractionnaires en virgule flottante En virgule flottante, on reprsente le nombre sous la forme d'un produit de 2 facteurs N = M x BE M = mantisse E = exposant B=base (2, 8, 10, 16 ,...) La reprsentation classique consiste coder l'exposant en reprsentation biaise sur k bits et la mantisse en valeur absolue signe sur (n k- 1) bits.tn de lon>nombres flottants La mantisse M est exprime dans la base B. La prcision est le nombre de chiffres de la mantisse, lexposant est un nombre entier sign. En machine, b = 2. Un nombre dcimal a une infinit de reprsentations mantisse exposant : Par exemple, en notation dcimale 3, 14 = 3, 14 100 = 0, 314 101 = 314 102 . .Au dbut la reprsentation en virgule flottante ntait pas normalise o chaque ordinateur utilisait son propre format ; Pour viter des reprsentation diffrentes du mme nombre , la mantisse est normalise. Dans la convention la plus courante, un nombre binaire normalis diffrent de zro a la forme: 1.bbb...bx2e Comme, sous cette forme, le bit le plus signifiant est toujours gal 1, il n'est pas ncessaire de le coder: il est implicite (on parle de bit cach) Problme: comment reprsenter les exposants ngatifs? En gnral, l'exposant est reprsent de faon biaise: une constante, le biais, doit tre soustrait de la valeur dans le champ pour obtenir la vraie valeur de l'exposant: champ exposant (dcal) = exposant (rel) + biais Typiquement, la valeur du biais est 2 k-1 -1, o k est le nombre de bits du champ de l'exposant Toutefois, les deux valeurs extrmes du champ exposant sont rserves pour des cas particuliers: Plusieurs normes ont t dfinies, parmi elles la norme IEEE 754 (Institute of Electrical and Electronics Engineers) Objectif : harmoniser les reprsentations en virgule flottante et dfinir le comportement en cas d'exception Cette norme dfinit trois formats de reprsentations des nombres flottants : Simple prcision sur 32 bits Double prcision sur 64 bits Prcision tendue sur 80 bits Reprsentation en simple prcision Le Le nombre est exprim comme suit : 1 bit de signe 8 bits pour lexposant dcal = exposant rel +127 Le biais = 28-1 1 =127. . Une mantisse normalise en base 2 avec un bit cach Le 1 prcdant la virgule nest pas cod en machine. Pour crire un nombre sous la forme IEEE754 il faut : 1. Convertir le nombre en binaire 2. Ecrire le nombre sous la forme normalise N= (+/- )1,Mx2Ereel 3. Calculer lexposant dcal= Exposant rel+ 127
7

Exemple On dsire coder 2,510 en flottant IEEE 754 Convertir 2,5 en binaire 10,1 ; Normaliser 1,01 21 (exposant rel= 1, mantisse= 01) ; Calculer : lexposant dcal= exposant rel + 127 = 12810 =100000002 Calculer le bit de signe, ici S = 0 (nombre positif). La reprsentation de 2,510 en machine est donc : 0 | 100 0000 0 | 010 0000 0000 0000 0000 0000 que lon peut exprimer en hexadcimal par 40 20 00 0016. Cas particuliers (valeurs spciales)
ZERO : MANTISSE =0 EXPOSANT = 0 INFINI: MANTISSE =0 EXPOSANT = 1 PARTOUT NAN (NOT A NUMBER) : MANTISSE 0 EXPOSANT = 1 PARTOUT

NAN est le rsultat d'une opration arithmtique invalide. Par exemple le calcul de la racine carre de nombres ngatifs, le rsultat de l'opration est invalide est gal NAN Les oprations arithmtiques en IEEE 754 Il est toujours possible de revenir des oprations arithmtiques sur les nombres entiers : multiplication : additionner les exposants, multiplier les mantisses et re-normaliser le rsultat division : soustraire les exposants, diviser les mantisses et re-normaliser le rsultat addition : de-normaliser la plus petite valeur d'exposant, additionner les mantisses, re-normaliser le rsultat soustraction : de-normaliser la plus petite valeur d'exposant, soustraire les mantisses re-normaliser le rsultat Il peut tre ncessaire d'arrondir la mantisse (i.e., perte de prcision). Un dpassement de capacit peut se produire si l'exposant devient trop grand.

Oprations spciales :
Operation N Infini Infini Infini N 0 Infini + Infini 0 0 Infini Infini Infini Infini Infini 0 Resultat 0 Infini Infini Infini NaN NaN NaN NaN

4- Encodage de linformation Lencodage de linformation consiste utiliser des codes pour reprsenter linformation afin de rsoudre trois types de problmes. Assurer lintgrit de linformation ( dtection et correction derreurs) Minimiser la taille de linformation ( compression) Garantir la scurit de linformation (encryptage, chiffrement) Codes redondants Une information peut subir des modifications involontaires lors de sa transmission ou lors de son stockage en mmoire, lintgrit des donnes est assure par lutilisation des codes dtecteurs et correcteurs derreurs dont le principe est : Aux m bits de donnes on ajoute k bits de contrle ce sont les n= m+k bits qui vont tre transmis ou stocks en mmoire on distingue deux types : Codes auto vrificateurs Une mthode simple et efficace pour dtecter un bit en erreur dans un caractre ou un mot est le contrle de parit. Il sagit dajouter aux n bits dun mot ou dun caractre, un bit supplmentaire appel bit de parit. Dans le cas du contrle impair de parit, on ajoute un bit de telle sorte que le nombre total de bits gaux 1 soit impair. Dans le cas du contrle pair de parit, on ajoute un bit de telle sorte que le nombre total de bits gaux 1 soit pair. Codes auto correcteurs Ils permettent la dtection et la correction dune ou plusieurs erreurs parmi ces codes on peut citer le code de double parit et le code de Hamming qui permet la dtection et la correction de 1 bit (dans sa version simple). Principe du code Hamming aux m bits dinformations on ajoute k bits de contrle de parit avec le respect de la rgle 2k > k + m ; on numrote les bits de gauche droite partir de 1; les bits de contrle sont placs sur les puissances de 2 . Calcul simplifi du code de Hamming Dans le code de Hamming pour la dtection et la correction dune seule erreur ; on peut simplifier le calcul des bits de contrle de la manire suivante : a-Transmission dun message Soit transmettre le message suivant avec un parit paire : 10101011001 qui se compose de 11 bits donc m=11 calculons les bits de contrle pour trouver le message transmis 1- Choix de k tel que 2k > k + m ; on choisit le plus petit k qui vrifie la relation dou k=4 alors le message transmettre contient n= 11+4= 15 bits 2- Construisons un tableau comme suit :

Numro 15 Type Valeur

14

13

12 m8 0

11 m7 1

10 m6 0

9 m5 1

8 k4 ?

7 m4 1

6 m3 0

5 m2 0

4 k3 ?

3 m1 1

2 k2 ?

1 k1 ?

m11 m10 m9 1 0 1

3- On cherche les positions des bits 1 ; dans notre cas: 15 , 13, 11, 9, 7 ,3 ; on transforme ces valeurs en leurs quivalents binaires et on fait une addition modulo 2 ; on met 1 si on a un nombre impair de 1 et on met 0 pour un nombre pair de 1 ( dans le cas dune parit impaire cest linverse).
15 13 11 9 7 3 1111 1101 1011 1001 0111 0011 ______ 0100

en prenant en considration les valeurs de ki le message cod transmis sera : 101010101001100

k4 k3 k2 k1

b-rceptiondunmessage on a reu le message suivant : 101000101001100, la parit utilise est impaire, on veut trouver la position dune ventuelle erreur, on construit un tableau de la mme faon quen a) on trouve des bits 1 dans les positions:15 13 9 7 4 3 ; on transforme ces positions en leurs quivalents binaires
Numro 15 Type Valeur 14 13 12 m8 0 11 m7 0 10 m6 0 9 m5 1 8 k4 0 7 m4 1 6 m3 0 5 m2 0 4 k3 1 3 m1 1 2 k2 0 1 k1 0

m11 m10 m9 1 0 1

15 13 9 7 4 3

1111 1101 1001 0111 0100 0011 _____ 0 1 0 0 = 410

lerreur est en position 4 aprs correction le message sera : 101000101000100 La donne initiale aprs avoir limin les bits redondants (c'est--dire les Ki ) on trouve : 10100011001

10

Chapitre 2: Les circuits logiques


Le transistor, un interrupteur command par un tension, est le composant de base des circuits lectroniques au cur de lordinateur .A laide des transistors, on construit des circuits logiques lmentaires, des portes logiques, effectuant des oprations simples. Ces circuits sont analyss grce lalgbre de Boole, outil mathmatique puissant qui permet de dvelopper des circuits plus complexes. Ces mmes portes logiques sont utilises pour raliser des circuits squentiels, faisant intervenir une composante temporelle et introduisant ainsi la notion de mmorisation de valeurs dans les systmes. 1- Dfinition Un circuit logique est un circuit lectronique ralisant une ou plusieurs fonctions logiques, il est compos d'un ensemble de portes logiques interconnects entre elles; on distingue deux types de circuits logiques : Circuits combinatoires : l'tat de ses sorties ne dpend que de l'tat de ses entres.
Circuits squentiels : l'tat de ses sorties dpend de l'tat de ses entres actuelles et aussi de l'tat logique prcdent de sa sortie (notion d'tat et de mmoire)

2- Rappel des notions prliminaires Il est ncessaire de rappeler certaines notions tudies dans le module pr requis telles que les portes logiques et les notions de base de lalgbre de Boole qui nous seront utiles par la suite ; par ailleurs on considre les mthodes de simplification des fonctions logiques (algbrique et Karnaugh) des notions acquises. 2-1 Les portes logiques
Une porte logique est un circuit combinatoire de base ralisant une opration logique de base Exemple : OU, ET, NON, correspondant aux oprateurs de l'algbre de Boole ; elle possde Une table de vrit et/ou une expression logique dfinissant son rsultat en fonction de son/ses entre(s)et un symbole graphique. La porte OU (inclusif)

A Y B

A 0 0 1 1

B 0 1 0 1

Y=A+B 0 1 1 1

La porte ET

A Y B

A 0 0 1 1

B 0 1 0 1

Y=AB 0 0 0 1

Inverseur : porte NON A Y= A 1 0

0 1

Porte OU exclusif

A Y B

A 0 0 1 1

B 0 1 0 1

Y = AB 0 1 1 0

A B = ( A B) + ( B A )

Portes NON ET(NAND)

A Y B
Porte NON OU (NOR)

A 0 0 1 1

B 0 1 0 1

Y = AB 1 1 1 0

A Y B

A 0 0 1 1

B 0 1 0 1

Y=A+B 1 0 0 0

Remarque les portes NAND et NOR sont trs utilises dans la ralisation des circuits logiques. Grce aux lois de De Morgan il est possible de raliser des systmes logiques avec uniquement des portes NAND ou NOR. Exercice : Raliser les portes OU ,OR, AND uniquement laide des portes NAND et/ou NOR 2

A A B

Y=A Y=A+B

A Y=A.B B

2-2 Principaux thormes et axiomes de lalgbre de Boole Il existe une relation directe entre les expressions logiques utilisant l'algbre de Boole et les circuits lectroniques, simplifier les expressions logiques dcrivant la tche implmenter permet de rduire le cot du circuit associ. ;nous rcapitulons dans le table suivante les axiomes et les principaux thormes qui sont utiliss comme des rgles de manipulation et de simplification des expressions logiques. OU (A + B) + C = A + (B + C) = A + B + C A+B=B+A A+A=A A+0=A A+1=1 (A B) C = A (B C) = A B C AB=BA AA=A A1=A A0=0 A (B + C) = (A B) + (A C) A + (B C) = (A + B) (A + C) Associativit Commutativit Idempotence Elment neutre Associativit Commutativit Idempotence Elment neutre

ET

Distributivit NON

A=A A + A =1 AA = 0 A + (A B) = A A (A + B) = A ( A + B) ( A + B) = A
A + ( A B) = A + B

De Morgan OU exclusif

A B C ... = A + B + C + ... A + B + C + ... = A B C ... A B = ( A + B) ( A B)


A B = ( A B) + ( B A )

A B = (A B) + (A B)
A B = ( A + B) ( A + B)

3-Circuits combinatoires Un circuit combinatoire est dfini par une ou plusieurs fonctions logiques ; les sorties Sj sont fonctions uniquement de la valeur des entres Ei: Sj= f(Ei), il est reprsent par un logigramme (portes logiques interconnectes) ; lalgbre de Boole et les fonctions logiques sont donc le support thorique des circuits combinatoires.
3. 1 synthse dun circuit combinatoire

La synthse dun circuit combinatoire est la ralisation du circuit partir de l nonc dcrivant les fonctions ou le rle du circuit en suivant les tapes suivantes : Comprendre le fonctionnement du systme. Dfinir les variables dentre et les variables de sortie. Etablir la table de vrit. Ecrire les quations algbriques des sorties ( partir de la table de vrit) Effectuer des simplifications (algbrique ou Karnaugh). Faire le logigramme avec un minimum de portes logiques. Exercice : Soit la fonction f(a,b,c)={1 si le nombre de 1 dans la combinaison de (a,b,c) est un nombre impair 0 sinon Faire la synthse du circuit ralisant cette fonction. 3-2 Analyse dun circuit combinatoire Lanalyse dun circuit combinatoire consiste tudier le logigramme pour dterminer le rle du circuit, pour cela on doit : 1. Donner pour chaque sortie son expression en fonction des entres 2. Simplifier la fonction de sortie 3. Construit la table de vrit correspondante 4. Dduire le rle du circuit Exercice Soit le circuit logique suivant Compos uniquement de portes logiques avec 3 entres et 1 sortie ;analysez ce circuit.

3-3 Circuits combinatoires particuliers Il est bien sr impossible dillustrer tous les circuits classiques que lon retrouve systmatiquement dans les machines ; Cest pourquoi nous nous contenterons de prsenter dans ce paragraphe le dcodeur et ladditionneur quant au multiplexeur, transcodeur, comparateur ; ils seront tudis en sance de TD 3-3-1 Demi-additionneur et additionneur complet
Un additionneur est un circuit combinatoire fondamental en toute unit de traitement, son rle est dadditionner des bits. Laddition de deux nombres binaires consiste additionner les bits de mme rang en commenant par les bits des poids faibles vers ceux des poids forts.

Le circuit qui additionne deux nombres de 1 bit chacun sans tenir compte dune retenue anticipe est appel demi-additionneur Les entres (les deux bits additionner X,Y ) Une sortie (somme S) Une retenue R

X 0 0 1 1

Y 0 1 0 1

S 0 1 1 0

R 0 0 0 1

Table de vrit et logigramme dun demiadditionneur 1 bit

Si on veut considrer une ventuelle retenue anticipe on construit un additionneur complet 1 bit Il prend en entre deux bits A et B ainsi que la retenue prcdente C 0 , il calcule la somme S de ces trois valeurs binaires ainsi que la retenue C1 . On peut remarquer sur la table de vrit que S est le ou exclusif des trois entres A, B et C 0 i.e. S = A B C0 et que la retenue C 1 vaut 1 ds que deux des trois entres valent 1 cest--dire/ C1 = AB +AC0+ BC0.(utiliser Karnaugh) .Si on veut utiliser des portes XOR on utilise la simplification algbrique et on trouve : C1= C0 (A B) + AB A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C0 0 1 0 1 0 1 0 1 C1 0 0 0 1 0 1 1 1 S 0 1 1 0 1 0 0 1

On peut construire le logigramme partir de ces formules ou en assemblant deux semiadditionneurs en cascade. Le premier semi-additionneur calcule dabord la somme de A et B puis le second calcule la somme du premier rsultat et de C 0 . La retenue C1 vaut 1 sil y a au moins une retenue une des deux sommes effectues.

En mettant en cascade k additionneurs complets 1 bits, on construit un additionneur k bits appel additionneur par propagation de retenue car la retenue se propage dadditionneur en additionneur. Exemple :Additionneur 4 bits

3-3-2 Le dcodeur

Un dcodeur k bits possde k entres et 2 k sorties. La sortie dont le numro est donn par les entres est active (valeur 1) alors que toutes les autres sorties sont inactives (valeur 0). Une des principales applications du dcodeur est le dcodage dune adresse mmoire ou dun Code dune instruction. Le dcodeur 2 bits a deux entres A0 et A1 et quatre sorties S 0 , S 1 , S 2 et S 3 . La table de vrit des quatre sorties en fonction des deux entres est la suivante : S0 = A1 A0 S1 = A1 A0 S2 = A1 A0 S3 = A1 A0 A1 0 0 1 1 A0 0 1 0 1 S0 1 0 0 0 S1 0 1 0 0 S2 0 0 1 0 S3 0 0 0 1

4- les circuits squentiels Un circuit squentiel est un circuit logique pour lequel ltat des sorties dpend de ltat des entres, mais aussi des sorties antrieures. Ce type de circuit tient donc compte dans le temps des tapes passes, quil est capable de mmoriser. Tous ces circuits, que lon qualifie de bascules, comprennent donc un tat de mmorisation qui permet de mmoriser la valeur de 1 bit. la forme gnrale d'un circuit squentiel est la suivante :

4.1 Tableau dtat et quations dtat Un tableau dtat (aussi appel tableau de transitions dtat) est similaire une table de vrit. Il comporte quatre sections : les tats prsents, les entres, les tats prochains (futurs) et les sorties. Les quations dtat dun circuit squentiel dterminent la valeur des variables dtat prochain Et les sorties du circuit en fonction de leurs valeurs dtats prsents ainsi que des entres du systme. Les quations dtat sont aussi appeles quations de transition. 4.2 Bascules lmentaires De mme que les portes logiques constituent les briques de base des circuits combinatoires, les circuits squentiels sont construits partir de cellules lmentaires servant mmoriser un bit, connues sous la dnomination de bascules, car elles possdent deux tats stables.
7

4.2.1 Bascule RS La bascule RS possde 2 entres : R et S et 1 sortie Q qui correspond l'tat stock la valeur de Q t+1 dpend de R,S et de la valeur de Q t R = reset : remise 0 de Q S = set : mise 1 de Q S=1 et R=0 : Q mis 1 S=0 et R=1 : Q mis 0 S=0 et R=0 : Q garde sa valeur, maintien S=1 et R=1 : Q indtermin R 0 0 1 1 S 0 1 0 1 Qt+1 Qt 1 0 ?

4.2.2 Bascule JK La bascule JK est une variante de la bascule RS On trouve les mmes valeurs que pou RS Sauf pour le cas J=K=1 ; on a Qt+1 =

J 0 0 1 1

K 0 1 0 1

Qt+1 Qt 1 0

4.2.3 Bascule D

Cette bascule enregistre sur sa sortie Q la donne prsente sur son entre D,

D 0 1

Qt+1 0 1

4.2.4 Bascule T obtenue en appliquant les mmes valeurs aux deux entres d'une bascule JK T 0 1 Qt+1 Qt

4.3 Analyse dun circuit squentiel La procdure pour analyser un circuit squentiel partir dun diagramme donn ncessite Les tapes suivantes : 1. Identifier les variables dtat; 2. crire les quations dtat et les quations de sortie; 3. Dresser le tableau dtats; 4. Dduire le rle du circuit. 4.4 Synthse dun circuit squentiel Pour raliser la synthse dun circuit squentiel ; on suit les tapes suivantes: 1. . Dterminer le nombre de bascules; 2. . Construire la table dtats en identifiant les tats par des symboles 3. partir du tableau dtat complet, obtenir les quations boolennes dentre des bascules ainsi que les quations boolennes des sorties du systme, en simplifiant si possible; 4. .Construire le circuit en ralisant les circuits combinatoires associs aux entres des bascules et aux sorties et vrifier.

4.5 Circuits squentiels classiques Les circuits squentiels les plus courants sont les registres et les compteurs. Les circuits squentiels sont aussi utiliss pour raliser des fonctions logiques qui ncessiteraient un circuit combinatoire trop complexe, comme la multiplication. 4.5.1 Les registres Un registre de stockage est un lment de mmorisation permettant de stocker une information dune longueur de n bits. Une bascule ne permettant de mmoriser quun seul bit, un registre de n bits sera donc compos dun ensemble de n bascules; les bascules employes sont soit des bascules D, soit des bascules JK ; la figure suivante montre un registre 5 bits. La commande RAZ permet de mettre zro toutes les cellules du registre en mme temps ; Le mot charger est prsent sur les entres E1 E5 qui sont charges en parallle, sur un signal dhorloge dlivr sur la ligne CLK. La lecture du mot seffectue sur les sorties S1 S5, galement en parallle.

Registre 5 bits 4.5.2 Les compteurs Un compteur est une association de n bascules permettant de dcrire, au rythme dune horloge, une squence dtermine qui peut avoir au maximum 2n combinaisons diffrentes. Les combinaisons apparaissent toujours dans le mme ordre. Une combinaison de sortie dun compteur est appele tat. Le nombre dtats diffrents pour un compteur est appel le modulo de ce compteur. Un compteur modulo N dmarrant 0 et comptant dans lordre binaire naturel compte de 0 N-1 ; la figure suivante dcrit un compteur modulo 8 conu base de bistables T.

CHAPITRE 3 LUNITE DE TRAITEMENT ( CPU) Introduction : Lunit centrale de traitement (UCT) appele aussi processeur central (Central Processing Unit = CPU) est llment moteur de lordinateur qui interprte et excute les instructions du programme. Il est intimement associ la mmoire centrale ou sont stockes ces instructions avec leurs donnes traiter elle est compose de deux units fonctionnelles. Lunit arithmtique et logique (UAL) qui effectue les oprations arithmtiques et logiques. Lunit de contrle et de commande (UCC) qui commande lexcution de toutes les oprations tous les niveaux (UAL, MC, E/S) ainsi que le contrle de leur droulement. Comment fonctionne lensemble UCC et UAL ? On suppose un programme en cours dexcution, les instructions et les donnes sont stockes en mmoire centrale des adresses bien dfinies, comment se droule lexcution dune instruction ?

Exemple :

Lunit de contrle et commande cherche en mmoire centrale linstruction en lui envoyant une adresse et une commande. Linstruction est transfre vers lUCC pour dcodage, qui va dterminer lopration excuter. Des signaux sont envoys lUAL pour dclencher lopration. Les donnes ncessaires sont achemines de la mmoire centrale MC vers lunit arithmtique et logique (UAL). Une fois lexcution termine, les rsultats sont envoys la mmoire centrale.

On considre le programme PASCAL suivant : Begin Read(a) ; Read(b) ; S :=a+b ; Write(S) End.
1

Une fois le programme lanc, lunit de traitement commande dintroduire les donnes en mmoire qui seront introduites par clavier et occupent des emplacements en mmoire centrale. lexcution de linstruction S :=a+b engendre les oprations suivantes : Transfert de linstruction vers lUCC ou elle est dcode. Transfert des deux oprandes vers lUAL . Excution de lopration daddition. Transfert du rsultat vers la mmoire
Linstruction Write(S) engendre :

Une commande de lecture du contenu de la variable S en mmoire centrale Une commande dentre/sortie adresse au priphrique concern (cran)

Transfert du contenu de la variable S pour son affichage sur cran. Begin et End annoncent le dbut et la fin du programme. 1-Lunit arithmtique et logique UAL Elle effectue des oprations arithmtiques et logiques, elle est dote de circuits logiques capables de raliser les fonctions logiques ET, OU, NON, etc, et des oprations arithmtiques addition, soustraction, division, dcalage, test dinfriorit, suprioritetc.

Ralisation dune UAL 1 bit Pour concevoir une UAL 1 bit qui traite 4 oprations a ET b, a OU b, NON b, a+b On doit disposer dun circuit capable de slectionner lopration excuter, ce circuit doit avoir deux entres F0 et F1, partir desquelles, on peut effectuer 4 choix (00, 01, 10, 11) ce circuit ne peut tre quun dcodeur deux bits. Pour raliser lopration arithmtique A+B, on utilise un circuit appel additionneur, il doit prendre en considration une ventuelle retenue.

F0

F1

Dcodeur
2

Cette UAL est capable de calculer le ET, le OU de 2 bits, le NON du second bit, et la somme des 2 bits avec une retenue dentre. Le choix parmi ces quatre oprations se fait via les deux lignes de commandes F0 et F1. Suivant la valeur de ces 2 bits, le dcodeur active une des quatre lignes de sortie, slectionnant soit une des trois fonctions logiques (a et b,a ou b, non b) soit la retenue et la sortie de ladditionneur. Ainsi en reliant chacune des trois premires sorties du dcodeur la porte logique approprie par une porte AND on active une des 3 oprations logiques et en reliant la quatrime sortie ladditionneur par une porte AND on active ladditionneur et notre schma complet de lUAL 1 bit sera le suivant : retenue

Remarque : pour raliser une UAL n bits on a qu relier n circuits dUAL 1 bits. Une UAL peut tre caractrise par sa taille et ses possibilits Sa taille, ou largeur, correspond a la taille maximale des nombres que lUAL peut traiter Les possibilits de lUAL correspondent simplement aux diffrentes commandes quelle reconnat. Le constructeur dun processeur a toujours la possibilit dtendre les capacits de lUAL (en autorisant des oprations plus complexes) ou daugmenter sa taille (pour permettre la manipulation de nombres plus grands). Mais cela implique dutiliser plus de portes logiques et donc doccuper plus de place sur la puce, au dtriment des autres circuits.

2-Lunit de commande et de contrle UCC : LUCC accomplit deux fonctions : commander et contrler en utilisant des circuits pour dcoder les instructions du programme et les transformer en signaux de commande vers toutes ces untes. 2-1- structure dune UCC Les principaux lments dune UCC qui lui permettent daccomplir ces taches sont. a-Le compteur ordinal (CO) Le registre CO (Program Counter = PC) contient toujours ladresse en mmoire de la prochaine instruction excuter. Le CO est automatiquement incrment aprs excution de chaque instruction, ainsi le programme est excut en squence moins quil contienne une instruction modifiant la squence (par exemple, une instruction de saut ou un branchement). Dans ce cas, la nouvelle adresse remplacera le contenu du CO. b- Le registre instruction (RI) Lorsque le processeur va chercher une instruction en cours dexcution en mmoire, il la place dans le RI. La taille du RI correspond la taille du mot mmoire . Le programmeur na pas accs au RI. Les bits correspondants la zone code opration , sont envoys au dcodeur pour quil dtermine lopration excuter. c- Le dcodeur : Cest un circuit combinatoire qui dtermine quelle opration doit tre effectue (tudi en chapitre 2). d-Le squenceur : Le squenceur est un automate qui gnre les signaux de commande ncessaires pour actionner et contrler les units qui participent lexcution dune instruction donne il peut tre ralis de 2 faons. Cbl : circuit squentiel complexe qui fait correspondre chaque instruction excutable un sous-circuit capable de commander son droulement. Le sous-circuit appropri est activ par un signal provenant du dcodeur Microprogramm : suite de micro-instructions stockes dans une mmoire rapide. .Ce microprogramme gnre une suite de signaux de commandes quivalents celle produites par un squenceur cbl. e- Lhorloge : Le rle de lhorloge dans lUCC est de gnrer des signaux priodiques qui dfinissent le cycle machine qui correspond la dure lmentaire rgissant le fonctionnement de la machine, il synchronise toutes les actions du processeur. 2-2 Fonctionnement dune UCC : Essayons de suivre les tapes dexcution dune instruction machine cette instruction comporte 2 champs. Code opration (obligatoire). un ou plusieurs champs adresse. Instruction = code opration + adresse oprande

Linstruction passe par 2 cycles. - Cycle de recherche : cherche linstruction et dcode. - Cycle dexcution : excution par lUAL de linstruction.
4

On rsume le cycle de recherche par : 1. Transfert de ladresse de la nouvelle instruction excuter du CO vers le registre adresse mmoire RA (en MC) 2. Une commande est gnr par lUCC pour lire linstruction et lenvoye r vers le registre RM. 3. Linstruction est transfre dans RI (code op + adresse op). 4. Pendant que ladresse de loprande est envoye vers RA le code opration est transmis au dcodeur qui dtermine le type de lopration et le transmet au squenceur. 5. Le CO est incrment pour le suivant le cycle de recherche sil ne sagit pas dune instruction de branchement. Le cycle dexcution comprend les tapes suivantes : 1- Le squencer lance des signaux de commande vers le mmoire pour lire loprande ladresse dj stocke dans le RA et le transfrer dans RM. 2- Transfert du contenu de RM vers lUAL, et plus prcisment vers laccumulateur ou tout autre registre affect lopration spcifie.
3- Lopration est effectue sous contrle du squenceur.

4- Lopration est effectue sous cont

Cycle dexcution dune instruction

Cycle de recherche dune instruction

On rcapitule le fonctionnement dun processeur accumulateur dans le schma suivant

Schma gnral du fonctionnement dun CPU 3 - Structure dune instruction machine : La suite dinstruction crites dans un langage volu est traduite en langage machine pour quelles puissent tre traites par la machine, linstruction machine comporte Un champ code opration (obligatoire) Un ou plusieurs champs dadresse. Le format dune instruction diffre dune machine une autre on emploie souvent lexpression Machine n (=0, 1, 2, 3, 4) adresses pour indiquer ce format. a- Machine 4 adresses Ce format a t utilis dans les premiers ordinateurs Cod-op A1 Code-opration @1er oprande A2 A3 @ 2eme oprande @ rsultat A4 @ instr suivante

b- Machine 3 adresses Le champ instruction suivante a t supprim ; cest le compteur ordinal qui sauvegarde cette adresse. c- Machine 2 adresses Le champ adresse du rsultat a t supprim et sera plac la place de celle du 2eme oprande. d- Machine 1 adresse Dans ce cas le format de linstruction ne contient quune seule adresse cest ladresse de premier oprande, le deuxime oprande se trouve dans laccumulateur. e- Machine 0 adresse ( pile) Ce type de machine utilise une pile, elle est gre en utilisant deux instructions a une adresse. PUSH X : permet de placer X au sommet de la pile (empiler) POP X : permet de stocker en mmoire ladresse y, la valeur qui se trouve au sommet de la pile (dpiler) Remarque : pour exemples et schmas voir TD.
4. Jeu dinstruction et modles de programmation

Le terme jeu dinstruction (Instuction Set) reprsente lensemble des instructions quun processeur est capable dexcuter.
4-1 Architecture du jeu dinstructions

Selon que le nombre dinstructions dans le jeu est grand ou rduit, on distingue deux familles de microprocesseurs : les CPU architecture CISC (Complex Instruction Set Computer) qui signifie processeurs jeu dinstructions complexe. les CPU architecture RISC (Reduced Instruction Set Computer ). qui signifie processeurs nombre dinstructions rduirts. Ces deux architectures reprsentent deux visions diffrentes ayant chacune avantages et inconvnients ; dans le tableau suivant on dresse les caractristiques de chacune. RISC instructions simples ne prenant qu'un seul cycle Compilateur complexe Dcodeur simple CISC instructions complexes prenant plusieurs cycles Compilateur simple Dcodeur complexe

seules les instructions chargement rangement ont toutes les instructions sont susceptibles accs la mmoire d'accder la mmoire instructions au format fixe beaucoup de registres peu de modes d'adressage
7

instructions au format variable peu de registres beaucoup de modes d'adressage

Les instructions que lon retrouve dans chaque microprocesseur peuvent tre classes en 4 Catgorie : 1- Transfert de donnes pour charger ou sauver en mmoire, effectuer des transferts de registre registre, etc 2- Oprations arithmtiques : addition, soustraction, division, multiplication 3- Oprations logiques : ET, OU, NON, NAND, comparaison, test, etc 4- Contrle de squence : branchement, test, appel de procdure etc 4-2 Modles de programmation Sur la plupart des machines, on retrouve deux modles de programmations a- Les architectures registres gnraux : les instructions lisent leurs oprandes dans des registres et y crivent leurs rsultats. Cet ensemble de registres est appel fichier de registre gnraux. b- Les architectures pile : les instructions lisent leurs oprandes et crivent leurs rsultats dans une pile. Remarque : voir TD pour exemples. 5-Modes dadressage Un mode d'adressage dfinit la manire dont le microprocesseur va accder loprande. Les diffrents modes d'adressage dpendent des microprocesseurs mais on retrouve en gnral : Adressage immdiat La valeur de l'oprande est contenue dans le champ adresse Adressage-registre. Le champ adresse contient le numro du registre oprande. Adressage direct Le champ adresse de l'instruction contient l'adresse effective de l'oprande. MOV R2, 100 Aprs cette instruction le registre R2 contiendra le mot qui se situe l'adresse 100 en mmoire. Adressage indirect Le champ adresse contient l'adresse d'un pointeur : mot en mmoire qui contient l'adresse effective de l'oprande. MOVE r3, (r2) Aprs cette instruction r3 contiendra la valeur du mot dont l'adresse est contenue dans r2

Adressage index Ce mode d'adressage est trs utile lorsqu'on travaille, par exemple, sur des tableaux. Adressage relatif L'adresse effective est obtenue en additionnant le contenu du compteur ordinal au contenu du champ adresse de l'instruction. Ce type d'adressage est utilis par exemple dans des instructions de branchement. 6-Les registres du processeur En plus des registres cits avec lUCC et la mmoire centrale on peut citer : Registre Accumulateur (ACC) : Laccumulateur est un registre trs important de lUAL. Dans la plupart des oprations arithmtiques et logiques, lACC contient un des oprandes avant lexcution et le rsultat aprs. Il peut aussi servir de registre tampon dans les oprations dE/S. Il est accessible par programmation. Registre dtat (RE, PSW = Program Status World) Appel aussi registre des indicateurs, le registre dtat contient diffrents bits appels drapeaux (flags) indiquant ltat dune condition particulire dans la CPU. Le bit indicateur ZF indique si le rsultat de lopration effectue est gal zro ; le bit indicateur CF indique gnration de retenue dans lACC, le bit indicateur OF indique un dbordement etc. Ces bits peuvent tre tests par programme et ai nsi dterminer la squence dinstructions suivre. Registres gnraux ou banaliss Ils permettent de limiter les accs la mmoire, ce qui acclre l'excution d'un programme. Ils peuvent conserver des informations utilises frquemment, des rsultats intermdiaires, etc. Ils sont accessibles au programmeur

7-Les bus Un bus est un ensemble de fils qui assure la transmission du mme type dinformation. On retrouve trois types de bus vhiculant des informations en parallle dans un systme de traitement programm de linformation :

- un bus de donnes : bidirectionnel qui assure le transfert des informations entre le microprocesseur et son environnement, et inversement. Son nombre de lignes est gal la capacit de traitement du microprocesseur (vhicule les donnes). - un bus d'adresses: unidirectionnel qui permet la slection des informations traiter dans un espace mmoire ou espace adressable (vhicule les adresses) . - un bus de commande: constitu par quelques conducteurs qui assurent la synchronisation des flux d'informations sur les bus des donnes et des adresses (vhicule les commandes).

10

CHAPITRE 4 : LES MEMOIRES 1-Dfinition Une mmoire est un systme capable daccomplir trois fonctions : 1- Enregistrement de linformation par lcriture. 2- Conservation par le mcanisme de stockage. 3- Restitution de linformation par la lecture. 2 caractristiques des mmoires a) Capacit dun mmoire Cest la quantit dinformation que la mmoire peut stocker elle est exprime en bits et en octets ou en mots de 2n bits
Taille 1k 1M 1G 1T Prfixe Kilo Mga Giga Tra Capacit 210 = 1024 220 = 1048576 230 = 1073741824 240 = 1099511627776

b) Temps daccs Cest le temps qui scoule entre le lancement dune opration (lecture, criture) et son accomplissement. c) Mode dopration Lordinateur prsente deux types de mmoires en ce qui concerne le mode dopration : Les mmoires lecture seule, on peut uniquement lire les informations et on ne peut pas en crire, on les appelle les mmoires mortes (ROM) (Read Only Memory) Les mmoires lecture et criture : on peut aussi bien lire et crire des informations, ce sont les mmoires vives (RAM) (Random Access Memory) mmoire accs alatoire d) Volatilit Une mmoire est volatile si elle perd son contenu lorsquon coupe le courant, la mmoire centrale est une mmoire volatile par contre les mmoires auxiliaires ne le sont pas, on dit quelles sont permanentes. e) Technologie de supports Il existe trois technologies pour les supports des mmoires : Les mmoires lectroniques base de circuits appels semi-conducteurs, exemple : la mmoire centrale Les mmoires magntiques : qui utilisent un enregistrement magntique exemple : bandes et disques magntiques Les mmoires optiques : qui utilisent un systme a base de laser pour lenregistrement de linformation exemple : CD rom 3- Hirarchies des mmoires : Cest une reprsentation par niveaux des mmoires selon les critres de temps daccs, capacit et cout par bit ; Lidal est de disposer dune mmoire trs rapide et illimite, c est impossible.;dune part du fait du cout engendr dautre part technologiquement impossible (le temps daccs augmente avec la capacit). Plus les donnes sont utilises, plus on doit y accder rapidement do lutilit dune hirarchie du plus rapide au moins rapide du moins couteux au plus couteux du plus petit au plus grand
1

Cot registre cache Mmoire centrale Mmoire d'appui Mmoire permanente: disque dur Capacit Disque optique bande magntique

Hirarchie des mmoires

Les registres : le registre est une mmoire locale trs rapide qui permet de stocker des rsultats temporaires ou des informations de commande. Parmi ceux-ci on distingue les registres arithmtiques qui servent aux oprations arithmtiques. D'autres registres ont des fonctions particulires Ils reprsentent les plus petites mmoires dans lordinateur cest le mmoire interne de lunit de traitement (CPU) La mmoire cache : (antmmoire) Cest une mmoire intermdiaire entre le CPU et la MC elle sert a sau vegarder les rsultats intermdiaires pour viter les accs a la mmoire centrale cest une mmoire statique base de RAM statique ( SRAM). La mmoire centrale (mmoire principale) : Cest la mmoire de travail de lordinateur et constitue avec le processeur des lments de base cest une mmoire dynamique a base de RAM dynamique DRAM Les mmoires auxiliaires : Ce sont des mmoires de stockage, on distingue deux types selon la technologie du support - magntiques : disque dur, bande magntique - optiques : disque optique ( CD ROM) registre Capacit Accs Cout Petit=mot mmoire Le plus court Le plus cher Mmoire cache Faible Trs rapide Tres lev Mmoire centrale Relativement grande Rapide Mmoire auxiliaire Trs grande Long / MC

Moins chre que La moins chre cache de toutes

3-1 la mmoire centrale 3 -1-1 introductions : Le processeur et la mmoire centrale sont troitement lis et aucun deux ne peut jouer pleinement son rle sans lautre, en effet les donnes et les instructions du programme circulent entre le processeur et la mmoire centrale. MC I1 I2 Bus In D1 D2

CPU Processeur

Dn

3-1-2 organisation de la mmoire centrale Une mmoire centrale est forme de trois lments : 1- Les circuits de mmorisation (stockage) : Ce sont des cellules mmoires capables demmagasiner linformation, ces cellules sont groups en mots de n bits les mots mmoires sont arrangs leur tour pour former des blocs mmoires un bloc contient 2k mots de n bits 2- la logique dadressage : Cest lensemble des circuits qui permettent dadresser un mot en mmoire elle est compose dun registre appel registre mmoire RA qui permet denregistrer ladresse du mot mmoire et dun dcodeur dadresse qui permet de dterminer ladresse effective du mot en mmoire centrale. 3- La logique dentre/sortie : Cest une ensemble de circuits qui permettent la lecture ou l criture dun mot mmoire compos dun registre appel registre information mmoire RM qui sert contenir linformation lue ou crite et dune interface dentre / sortie

Cycle de lecture

tablissement de ladresse de linformation lire dans le registre RA Activer le signal de lecture slection du boitier ncessaire Aprs un certain temps, linformation apparait sur la sortie dans le RM

Cycle dcriture Etablir ladresse ou se fera lcriture dans le RA Slectionner le boitier appropri. fournir la donne sur lentre dans le RM Activer le signal dcriture

Ordonnancement des octets en mmoire Pour un mot mmoire de 32 bits, il existe 2 faons de ranger les octets qui le composent : Loctet de poids fort est stock en premier : big-endian (gros boutiste) I Octet 3 i+1 Octet 2 i+2 Octet 1 i+3 Octet 0

Loctet de poids fort est stocke en dernier : little-endian (petit boutiste) I Octet 0 i+1 Octet 1 i+2 Octet2 i+3 Octet 3

3-1-3 notion dadresse mmoire La mmoire est compose de cellules possdant chacune un numro quon appelle adresse numrots de 0 n-1 prenons par exemple trois organisations possibles dune mmoire de 96 bits

Les adresses sont exprimes en binaire et par convention commencent par 0; Si la taille de ladresse est n bits on peut adresser 2n cellules mmoires. La mmoire de la figure (a) ncessite au moins 4 bits pour exprimer les adresses des 12 cellules (de 0 11) par contre une adresse de 3 bits est suffisante pour les configurations des figures (b) et (c) . On conclue que le nombre de bits dadresse dtermine la taille de la mmoire centrale (le nombre maximal de cellules adressables) et il est indpendant de la taille de la cellule. Par exemple : une mmoire de 212 cellules de 8 bits chacune et une mmoire de 212 cellules de 64 bits chacune ncessite toutes les deux des adresses 12 bits. taille de la MC=2n units adressables (UA). la taille de ladresse =n=log22n.

Si n=nombre de bits dadresse Si la taille de la MC=2n UA

Exemple : Soit une mmoire centrale de 2 G mots de 16 bits quelle est la taille du registre dadresse Sachant que lunit adressable = 1 octet ? Tout dabord on exprime la taille de la MC en units adressables. Taille de MC = 2G mots de 16 bits = 2*230 *2 octets= 232 octets= 232 units adressables Alors la taille du registre dadresse = 32 bits

4-Typologie des mmoires Il existe deux types de mmoires dans lordinateur : 4-1 La mmoire vive : RAM RAM (Random Access Memory, mmoire accs alatoire). Il sagit de la mmoire la plus classique de lordinateur (aussi appele mmoire vive ). Elle constitue la grande majorit de la mmoire principale. Elle est compose de cellules mmoire standard volatiles. Elle sert mmoriser toutes les instructions et les donnes ncessaires au bon fonctionnement des programmes ; il existe deux grandes familles de mmoires vives : 4-1-1 les RAM Statiques : SRAM Chaque bit d'une SRAM est form par une bascule constitue par 4 6 transistors. L'information stocke peut tre maintenue sans dgradation pendant une centaine d'heures. L'intrt de ce type de mmoire est sa vitesse (quelques ns) mais son cout est prohibitif. , En effet on utilisera la SRAM lorsque le facteur vitesse est critique et notamment pour des mmoires de petite taille comme la mmoire cache. 4-1-2 les RAM Dynamiques : DRAM Chaque bit d'une DRAM est constitu par un transistor et un condensateur : L'inconvnient des DRAM est que le condensateur possde une tendance naturelle se dcharger. Pour que l'information reste cohrente, on va devoir raliser un rafrachissement de la mmoire toutes les quelques millisecondes. Ce rafrachissement consiste lire et rcrire la donne. Etant donn les caractristiques des SRAM et DRAM, on peut en dduire les proprits suivantes : la SRAM est rapide mais chre la DRAM est lente mais bon march 4-2 Les mmoires mortes ou ROM ROM (Read Only Memory) sont des mmoires non volatiles qui sont voues tre accdes en lecture en fonctionnement normal. Elles contiennent du code et des donnes qui ne sont pas amens changer souvent. Les ROM contiennent gnralement les routines d'accs de base aux priphriques. Elles permettent un stockage permanent mme en labsence dalimentation lectrique ; linformation est stocke au moment de la conception du circuit dune manire dfinitive On distingue diffrents types de mmoires ROM : PROM Programmable ROM Permet une criture unique mais faite par lutilisateur au moyen dune machine spciale; ces mmoires comprennent un ensemble de fusibles qui sont dtruits lors de la programmation de la mmoire. EPROM Erasable PROM. PROM effaable Elles peuvent tre effaces une fois crites au moyen dun faisceau ultraviolet qui force tous les bits une mme valeur. Elles ont la mme organisation que les SRAM. EEPROM Electrically EPROM Elles sont effaables lectriquement sans intervention dun rayonnement ultraviolet. Elles ne sont pas volatiles, facilement rutilisables.

4-3 Usage de ROM et RAM La RAM est la mmoire de travail de lordinateur : on y stocke les instructions et les donnes, chaque cellule mmoire pouvant tre modifie des milliards de fois par seconde sans aucun inconvnient. Les botiers ROM et PROM ne peuvent servir qu mmoriser de faon permanente des informations figes Voici quelques exemples dutilisation de ces mmoires mortes au sein de lordinateur : Un squenceur microprogramm traite chaque instruction en excutant des microinstructions qui effectuent chacune un travail lmentaire dans le processeur. Chaque instruction correspond donc un microprogramme mmoris dans une mmoire du Processeur ralise lors de sa fabrication. Ces microprogrammes ne doivent videmment pas disparatre et nont pas tre changs ; cest un cas typique dutilisation de ROM. Lorsque lordinateur sallume, le processeur cherche excuter des instructions. Malheureusement, la RAM tant volatile, elle ne contient aucune information viable lors de lallumage. L encore, une partie de la mmoire principale est sous forme de mmoire morte contenant un programme de dmarrage dont lunique tche est, par exemple, de charger depuis un disque dur le reste du systme dexploitation. Certaines entres/sorties sont suffisamment complexes pour ncessiter la prsence dun processeur auxiliaire qui leur est uniquement ddi. Comme tout processeur, celui-ci excute des instructions. Il ne sagit pas, dans ce cas, dun programme utilisateur, mais dinstructions ralisant les entres/sorties. Le fabricant les programme et les stocke sur une mmoire morte pour quelles ne disparaissent pas.

CHAPITRE 5 Processeur MIPS R3000: architecture externe


1- Introduction : MIPS (Microprocessor without Interlocked Pipeline Stages) est une architecture de microprocesseur de type RISC dveloppe par la compagnie MIPS Computer Systems Inc. Les processeurs fabriqus selon cette architecture ont surtout t utiliss dans les systmes SGI. On les retrouve aussi dans plusieurs systmes embarqus, comme les ordinateurs de poche, les routeurs Cisco et les consoles de jeux vido (Nintendo 64 et Sony PlayStation, PlayStation 2 et PSP). Vers la fin des annes 1990, on estimait que les processeurs drivs de l'architecture MIPS occupaient le tiers des processeurs RISC produits. Les premires implmentations de l'architecture MIPS taient de 32 bits (autant au niveau des registres que des chemins de donnes), mais par la suite, on a dvelopp des implmentations de 64 bits. Le MIPS R4000 sorti en 1991 serait le premier processeur 64 bits. Il a t support par Microsoft de Windows NT 3.1 jusqu' Windows NT 4.0 Dans ce qui suit on sintresse au processeur MIPS R3000 qui est un processeur 32 bits industriel conu dans les annes 80. Son jeu d'instructions est de type RISC. L'architecture externe est l'interface entre le processeur et le programmeur, elle est compose de : registres visibles, jeu dinstructions, mode dadressage, systme d'interruptions / exceptions 2- Registres visibles du logiciel : Tous les registres visibles du logiciel, c'est dire ceux dont la valeur peut tre lue ou modifie par les instructions, sont des registres 32 bits. afin de mettre en oeuvre les mcanismes de protection ncessaires pour un systme d'exploitation multi-tches, le processeur possde deux modes de fonctionnement : utilisateur/superviseur. Ces deux modes de fonctionnement imposent d'avoir deux catgories de registres : a) Registres non protgs : Le processeur possde 35 registres manipuls par les instructions standard (c'est dire les instructions qui peuvent s'excuter aussi bien en mode utilisateur qu'en mode superviseur). Ri (0 <= i <= 31) 32 registres gnraux : Ces registres sont directement adresss par les instructions, et permettent de stocker des rsultats de calculs intermdiaires. Le registre R0 est un registre particulier la lecture fournit la valeur constante "0x00000000 lcriture ne modifie pas son contenu. Le registre R31 est utilis par les instructions d'appel de procdures (instructions BGEZAL, BLTZAL, JAL et JALR) pour sauvegarder l'adresse de retour. PC Registre compteur de programme (Program Counter) Ce registre contient l'adresse de l'instruction en cours d'excution. Sa valeur est modifie par toutes les instructions. HI et LO Registres pour la multiplication ou la division. Ces deux registres 32 bits sont utiliss pour stocker le rsultat d'une multiplication ou d'une division, qui est un mot de 64 bits.

b) Registres protgs : L'architecture MIPS dfinit 32 registres (numrots de 0 31), qui ne sont accessibles, en lecture comme en criture, que par les instructions privilgies (c'est dire les instructions qui ne peuvent tre excutes qu'en mode superviseur). MIPS R3000 en utilise 4 pour la gestion des interruptions et des exceptions. SR Registre d'tat (Status Register) : Il contient en particulier le bit qui dfinit le mode : superviseur ou utilisateur, ainsi que les bits de masquage des interruptions. (Ce registre possde le numro 12) CR Registre de cause (Cause Register). En cas d'interruption ou d'exception, son contenu dfinit la cause pour laquelle on fait appel au programme de traitement des interruptions et des exceptions. (Ce registre possde le numro 13) EPC Registre d'exception (Exception Program Counter) il possde le numro 14 ; Il contient l'adresse de retour (PC + 4) en cas d'interruption. Il contient l'adresse de l'instruction fautive en cas d'exception (PC) BAR Registre d'adresse illgale (Bad Address Register). En cas d'exception de type "adresse illgale", il contient la valeur de l'adresse mal forme. (Ce registre possde le numro 8) La description des 32 registres est donne dans le tableau suivant : Nom $zero $at $v0,$v1 $a0,: : :,$a3 $t0,: : :,$t7 $s0,: : :,$s7 $t8,$t9 $k0,$k1 gp sp fp ra Numero 0 1 2-3 4-7 8-15 16-23 24-25 26-27 28 29 30 31 Description Constante 0 Reserve a l'assembleur Evaluation d'une expression et rsultats d'une fonction Arguments de sous-programmes Valeurs temporaires (non prserves) Valeurs temporaires (prserves) Valeurs temporaires (non prserves Reserve pour les interruptions (systme d'exploitation) Pointeur global Pointeur de pile Pointeur de bloc Adresse de retour

3-accs mmoire MIPS et catgories dinstructions Lunit adressable est loctet La mmoire est vue comme un tableau d'octets qui contient les donnes et les instructions Les adresses sont codes sur 32 bits (CO =32) Les instructions sont codes sur 32 bits (RI=32) le processeur respecte la convention "little endian Les mots mmoires sont adresss par des multiples de 4 ; (le CO est incrment de 4 chaque cycle).

232-1 19 15 11 7 3

232-2 18 14 10 6 2

232-3 17 13 9 5 1

232-4 16 12 8 4 0

Le processeur possde 57 instructions qui se rpartissent en 4 classes : 33 instructions arithmtiques/logiques entre registres 12 instructions de branchement 7 instructions de lecture/criture mmoire 5 instructions systmes

4- lassembleur MIPS R3000 Le langage assembleur ou assembleur est le langage de programmation; cest une version lisible par un humain du langage machine, obtenu en remplaant les valeurs entires du langage machine par des mnmoniques (instruction du langage assembleur). Attention: ne pas confondre avec assembleur : programme qui transforme du langage assembleur en langage machine. Avant dexpliquer la syntaxe de certaines instructions on donne certaines rgles syntaxiques les commentaires : ils commencent par un # ou un ; et sachvent la fin de la ligne courante. Exemple : ############################################### ### # programme qui calcule la somme des n premiers nombres ################################################### .... ; sauve la valeur copie dans la mmoire les entiers : une valeur entire dcimale est note par exemple 3250, une valeur entire octale est note 04372 (prfixe par un zro), et une valeur entire hxadcimale est note 0xFA (prfixe par zro suivi de x). En hexadcimal, les lettres de A F peuvent tre crites en majuscule ou en minuscule. les chanes de caractres : elles sont simplement entre guillemets. Exemple : "la valeur de x est" les labels (tiquettes): ce sont des mnmoniques correspondant des adresses. Ces adresses peuvent tre soit des adresses de variables,soit des adresses de saut. Ce sont des chanes de caractres qui commencent par une lettre, majuscule ou minuscule, un $, un _, ou un .. Ensuite, un nombre quelconque de ces mmes caractres auquels on ajoute les chiffres. Pour la dclaration, le label doit tre suffix par<< : >>. Exemple : ETIQ1 Attention : sont illgaux les labels qui ont le mme nom quun mnmonique de lassembleur ou quun nom de registre. les immdiats : ce sont les oprandes contenus dans linstruction. Ce sont des constantes. Ce sont soit des entiers, soit des labels. Ces constantes doivent respecter une taille maximum qui est fonction de linstruction qui lutilise : 16 ou 26 bits. 4-1-les instructions arithmtiques Laddition Addition registre registre signe Syntaxe : add $rd, $rs, $rt rd <= rs + rt Les contenus des registres $rs et $rt sont ajouts pour former un rsultat sur 32 bits qui est plac dans le registre $rd Addition registre immdiat signe Syntaxe : addi $rd, $rs, imm rd <= rs + imm La valeur immdiate sur 16 bits subit une extension de signe et est ajoute au contenu du registre $rs pour former un rsultat sur 32 bits qui est plac dans le registre $rd. Exemple : A := B + C A s0 B $s1, C $s2. add $s0, $1, $s2

La soustraction Soustraction registre registre signe Syntaxe : sub $rd, $rs, $rt Le contenu du registre $rt est soustrait du contenu du registre $rs pour former un rsultat sur 32 bits qui est plac dans le registre $rd. rd <= rs - rt Exemple : A:=B+C+D E:=FA A$s0, B$s1, C$s2, D$s3, E$s4, F$s5 add $t0, $s1, $s2 add $s0, $t0, $s3 sub $s4, $s5, $s0 La multiplication Multiplication signe Syntaxe : mult $rs, $rt Le contenu du registre $rs est multipli par le contenu du registre $rt, le contenu des deux registres considrs comme des nombres en complment deux. Les 32 bits de poids fort du rsultat sont placs dans le registre hi et les 32 bits de poids faible dans le registre lo. Multiplication non-signe Syntaxe : multu $ri, $rj Meme comportement que mult sauf que les nombres sont non signs La division Division entire registre registre et reste sign Syntaxe : div $rs, $rt Le contenu du registre $rs est divis par le contenu du registre $rt, le contenu des deux registres tant considr comme des nombres en complment deux. Le rsultat de la division est plac dans le registre spcial $lo, et le reste dans $hi. Division entire et reste non-sign registre registre Syntaxe : Divu $rs, $rt Le contenu du registre $rs est divis par le contenu du registre $rt, le contenu des deux registres tant considr comme des nombres non signs. Le rsultat de la division est plac dans le registre spcial $lo, et le reste dans $hi. 4-2- Les instructions logiques Et logique Et bit--bit registre registre Syntaxe : and $rd, $rs, $rt Un et bit--bit est effectu entre les contenus des registres $rs et $rt. Le rsultat est plac dans le registre $rd. Et logique immdiat Et bit--bit registre immdiat Syntaxe : andi $rd, $rs, imm La valeur immdiate sur 16 bits subit une extension de zros. Un et bit-bit est effectu entre cette valeur tendue et le contenu du registre $rs pour former un rsultat plac dans le registre $rd. Ou logique Ou bit--bit registre registre Syntaxe : or $rd, $rs, $rt

Un ou bit--bit est effectu entre les contenus des registres $rs et $rt. Le rsultat est plac dans le registre $rd. Ou logique immdiat Ou bit--bit registre, immdiat Syntaxe ori $rd, $rs, imm La valeur immdiate sur 16 bits subit une extension de zros. Un ou bit- bite est effectu entre cette valeur tendue et le contenu du registre $rs pour former un rsultat plac dans le registre $rd. Dcalage logique gauche. Dcalage gauche immdiat Syntaxe : sll $rd, $rt, imm Le registre $rt est dcal gauche de la valeur immdiate code sur 5 bits,des zros tant introduits dans les bits de poids faibles. Le rsultat est plac dans le registre $rd. Dcalage gauche registre(variable) Syntaxe sllv $rd, $rs, $rt Le registre $rs est dcal gauche du nombre de bits spcifis dans les 5 bits de poids faible du registre $rt, des zros tant introduits dans les bits de poids faibles. Le rsultat est plac dans le registre $rd Dcalage droite logique immdiat Syntaxe : srl $rd, $rt, imm Le registre $rt est dcal droite de la valeur immdiate code sur 5 bits, des zros tant introduits dans les bits de poids fort. Le rsultat est plac dans le registre $rd. Dcalage droite logique registre Syntaxe srlv $rd, $rs, $rt Le registre $rs est dcal droite du nombre de bits spcifis dans les 5 bits de poids faible du registre $rt, des zros tant introduits dans les bits de poids fort ainsi librs. Le rsultat est plac dans le registre $rd. 4-3-Les instructions de transfert de donnes Copie du registre $hi dans un registre gnral Syntaxe mfhi $rd Le contenu du registre spcialis $hi qui est mis jour par lopration de multiplication ou de division est recopi dans le registre gnral $rd. Copie du registre $lo dans un registre gnral Syntaxe : mflo $rd
Le contenu du registre spcialis $lo qui est mis jour par lopration de multiplication ou de division est recopi dans le registre gnral $rd.

transfert registre/registre syntaxe move $rd, $rs Le mot contenu dans le registre $rs est copi dans le registre $rd. code quivalent addu $rd, $rs, $0 Les 32 bits de poids faible sont placs dans $rd. 4-4- Instructions de branchement Branchement conditionnel Branchement si registre gal registre Syntaxe beq $rs, $rt, label Les contenus des registres $rs et $rt sont compars. Sils sont gaux, le programme saute ladresse correspondant ltiquette, calcule par lassembleur.
5

Addr label Si rs = rt alors pc pc + 4 + addr Branchement si registre suprieur ou gal zro Syntaxe bgez $ri, label Si le contenu du registre $ri est suprieur ou gal zro le programme saute ladresse correspondant ltiquette, calcule par lassembleur. Addr label Si ri > =0 alors pc pc + 4 + addr Branchement si registre diffrent de registre Syntaxe bne $rs, $rt, label Les contenus des registres $rs et $rt sont compars. Sils sont diffrents, le programme saute ladresse correspondant ltiquette, calcule par lassembleur. Addr label Si rs= rt alors pc pc + 4 + addr Exemple : bne $t0, $t1, Label Si la valeur contenue dans le registre $t0 nest pas gale celle stocke dans le registre $t1 alors la prochaine instruction excuter est celle place aprs ltiquette Label. beq $t0, $t1, enue dans le registre $t0 est gale celle stoLabel Si la valeur contcke dans le registre $t1 alors la prochaine instruction excuter est celle place aprs ltiquette Label. Exemple : i$s0, j $s1, h $s2. L3 InSi i=j alors h =i+j ; bne $s0, $s1, Test add $s2, $s0, $s1 Test: () Archi tecture des ordinateurs Branchement inconditionnel Branchement inconditionnel immdiat Syntaxe j label Le programme saute inconditionnellement ladresse correspondant au label, calcul par lassembleur. Pc label Exemple Si i =j alors h :=i+j si on utilise beq on aura sinon h :=i-j la solution suivante : fsi i $s4, j $s5, h$s6. L3 Informatique i $s4, j $s5, h$s6. L3 bne $s4, $s5, sinon beq $s4, $s5, then add $s6, $s4, $s5 sub $s6, $s4, $s5 j fsi j fsi sinon: sub $s6, $s4, $s5 then : add $s6, $s4, $s5 fsi :-e P fsi :-e Architecture des ordinateurs 4-5-Instructions de comparaison Comparaison signe registre registre Syntaxe slt $rd, $rs, $rt Le contenu du registre $rs est compar au contenu du registre $rt, les deux valeurs tant considres comme des quantits signes. Si la valeur contenue dans $rs est infrieure celle contenue dans $rt, alors $rd prend la valeur un, sinon il prend la valeur zro.
6

Comparaison signe registre immdiat Syntaxe slti $rd, $rs, imm Le contenu du registre $rs est compar la valeur immdiate sur 16 bits qui subit une extension de signe. Les deux valeurs tant considres commedes quantits signes, si la valeur contenue dans $rs est infrieure celle de limmdiat tendu, alors $rd prend la valeur un, sinon il prend la valeur zro. 4-6-Instruction de chargement rangement dans la mmoire principale ( Lecture-Ecriture) Les deux instructions lw (load word = lecture) et sw (store word =criture) permettent les changes entre la mmoire centrale et les registres. Lecture dun mot de la mmoire Syntaxe lw $rd, imm($rs) rd mem[imm + rs] Ladresse de chargement est la somme de la valeur immdiate sur 16 bits,avec extension de signe, et du contenu du registre $rs. Le contenu de cette adresse est plac dans le registre $rd. criture dun mot en mmoire Syntaxe sw $rd, imm($rs) mem[imm + rs] rd Ladresse dcriture est la somme de la valeur immdiate sur 16 bits, avec extension de signe, et du contenu du registre $rs. Le contenu du registre $rd est crit ladresse ainsi calcule. Exemple : , lw $2, 10($3) copie dans le registre $2 la valeur situe dans la mmoire principale ladresse m obtenue en ajoutant 10 au nombre stock dans la registre $3. sw $2, 15($1) copie la valeur prsente dans le registre $2 dans dans la mmoire principale ladresse m obtenue en ajoutant 15 au nombre stock dans la registre $1. On peut charger unn octet en utilisant lb ,lbu ou un demi mot en utilisant lh et lhu (lecture); Comme on peut ranger un octet laide de sb ou un demi mot en utilisant sh (criture). 5- programmation en assembleur MIPS 5- 1 Traduction des structures de contrle en MIPS Les exemples suivants montrent comment traduire une structure de contrle (if, while, for) Ecrite dans un langage de haut niveau tel que C ou dans un code algorithmique en assembleur MIPS : if then else if ( $t 8 < 0) then { $sO = 0 - $t 8 $tl = $tl + 1 } Else { $s0 = $t8 $t2 = $t2 + 1} La boucle while while ($a 1 < $a2 ) do { $a 1= $a 1 + 1 $a2 = $a2 - 1 } while : bge $a1 , $a2 , suite addi $a1 , $a1 , 1 addi $a2 , $a2 , - 1 j while suite :
7

else :

Bgez $t8 , else sub $s0 , $zero, $t8 addi $t1, $t1 , 1 J suite mov $s0, $t8 addi $t2 , $t2 , 1

suite :

La boucle FOR
$a0 = 0 ;

f or $t0 = 10 ; $t0 > 0 ; $t0= $t0 - 1 ) do { $a0 = $a0 + $t0 } Add $a0 , $0, $0 Addi $t0 , $0, 10 loop : add $a0 , $a0 , $t0 addi $ t0 , $t0 , - 1 bgtz $ t0 , loop # $a0 = 0 # Initialiser le compteur de la boucle 10

# Dcrmenter le compteur # si ( $t0 > 0 ) aller loop

Exercice : donner la traduction du switch 5 -2 oprateurs logiques et masquage Les oprateurs logiques implments par MIPS sont : AND, NOR, OR et XOR ; ces instructions sont trs utilises pour manipuler, extraire ou insrer des bits spcifiques dans un mot de 32-bit grce aux oprations de masquage dans le but de faire des oprations de cryptage. Exemple : On veut mettre les 6 bits de poids faible du registre $t0 zro et les autres bits restent inchangs ; le rsultat sera mis dans $t2 ; On remarque que loprateur AND appliqu avec un zro donnera zro mais appliqu avec un reproduit le bit entr c'est--dire reste inchang (revoir la table de vrit) on choisit alors un masque ayant les 6 bits de poids faible 0 et le reste des bits 1 et on lapplique ainsi : $t0 = 10010011 00001111 01110010 11010110 operande
$t1 = 11111111 11111111 11111111 11000000 masque=0*FFFFFFC0 $t2 = 10010011 00001111 01110010 11000000 rsultat

Linstruction qui accomplit ce masquage sera : and $t2,$t0,$t1 ou andi $t2,$t0,0*FFFFFFC0 si par contre on veut mettre 1 les 6 bits de poids faible du registre $t0 et laisser les autres bits inchangs; le rsultat sera mis dans $t1 ;on utilise linstruction OR avec un masque= 0*0000003F or $t2 , $t0 , $t1 ou ori $t2 , $t0 , 0*0000003F $t0 =10010011 00001111 01110010 11010110 operand
$t1 =00000000 00000000 00000000 00111111mask $t2 =10010011 00001111 01110010 11111111

5-3 Intrt des dcalages Lassembleur MIPS supporte deux instructions de dcalage logique sll et slr et une instruction de dcalage arithmtique sra sll dcale le contenu dun registre de n positions vers la gauche et les bits vacants sont remplacs droite par des zros; srl dcale le contenu dun registre vers la droite et les bits vacants sont remplacs gauche par des zros, cependant sra dcale le contenu dun registre vers la droite et les bits vacants sont remplacs gauche par le bit du signe.

Exemple : soit le registre $s1 avec son contenu et les instructions de dcalage suivantes :

Remarque : le dcalage variable est similaire sauf que le nombre de dcalages se trouve dans un registre ;par exemple dans linstruction :sllv $s1 ,$s2,$s3 le nombre de dcalage se trouve dans le registre $s3 ; Les instructions de dcalage sont trs utilises dans : la manipulation de bits pour faire certains cryptages par exemple largement utilises pour effectuer des divisions et des multiplications. un dcalage gauche de n positions est lquivalent dune multiplication par 2 n un dcalage droite de n positions est lquivalent dune division par 2n

Pour les nombres non signs on utilise les dcalages logiques : sll pour la multiplication et slr pour la division entire. Exemple : binaire
00011100 00111000 01110000 11100000

dcimal
28 56 112 224

binaire 10101000 01010100 00101010 00010101

dcimal 168 84 42 21

Cependant pour les nombres signs on utilise les dcalages arithmtiques; remarquons dans lexemple suivant que la division est lquivalent dun sra
binaire 01011000 00101100 00010110 00001011 dcimal +88 +44 +22 +11

binaire
10101000 11010100 11101010 11110101

dcimal
88 44 22 11

Pourquoi les processeurs utilisent les dcalages pour effectuer des divisions et des multiplications ? La raison principale est que les dcalages sont plus efficaces excuter que les divisions et les multiplications sachant quune division peut tre effectue en un cycle horloge en utilisant linstruction SRA . 5-4 Traitement des tableaux On utilise la directive data pour dclarer un tableau et les instructions de chargement Rangement pour accder aux lments.
9

Exemple 1 Dclaration dun tableau de mots Tab . data Tab : .word 15,16,17,18,19,20 Linstruction lw $t1,Tab charge le premier lment du tableau(15) dans le registre $t1 Si $t0 contient ladresse du tableau, on peut charger le deuxime lment(i.e.,valeur 16) dans le registre $t1 par linstruction : lw $t1,4($t0) car le mot contient 4 octets et loctet est adressable, de mme on peut charger le premier lment par linstruction : lw $t1,($t 0) Exemple 2 : Supposons que $a0 pointe vers ladresse de dbut du tableau ; la suite dinstructions suivante inter change le deuxime et le troisime lment du tableau lw $t0,4($a0) #chargement du 2eme lment dans $t0 lw $t1,8($a0) #chargement du 3eme lment dans $t1 sw $t1,4($a0) #rangement de $t1(3eme lment) dans ladresse du 2eme lment sw $t0,8($a0) #rangement de $t0 (2eme lment) dans ladresse du 3eme lment $t0, $t1 sont des registres temporaires . 5-5 Appels systme et instructions dentre/sortie Pour excuter certaines fonctions systme, typiquement les entres/sorties (lire ou crire un nombre, ou un caractre), il faut utiliser des appels systme. Par convention, le numro de lappel systme est contenu dans le registre $2, et son unique argument dans le registre $4. Cinq appels systme sont actuellement supports dans lenvironnement de simulation : crire un entier : Il faut mettre lentier crire dans le registre $4 et excuter lappel systme numro 1 lire un entier : La valeur de retour dune fonction systme ou autre est positionne dans le registre $2. Ainsi, lire un entier consiste excuter lappel systme numro 5 et rcuprer le rsultat dans le registre$2. crire une chane de caractres : Une chane de caractres tant identifie par un pointeur, il faut passer ce pointeur lappel systme numro 4 pour lafficher. lire une chane de caractres : Pour lire une chane de caractres, il faut un pointeur et une longueur maximum. Il faut passer ce pointeur, dans $4, et cette longueur, dans $5, et excuter lappel systme numro 8. Le rsultat sera mis dans lespace point. Lappel systme numro 10 effectue lexit du programme au sens du langage C. 5-6 Sous-programmes MIPS ne fournit pas d'instructions permettant de dfinir des sous-programmes On doit utiliser des sauts/branchements qui modifient le CO : Jal saute une tiquette et garde un lien sur le lieu d'excution dans le registre $31 ; j saute sans sauvegarder l'adresse de retour ; jr saute une adresse stocke dans un registre. Lors de l'appel de sous-programmes : On utilise les registres 4 7 pour le passage de paramtres ; $t0-$t9 sont sauvs par l'appelant ; $s0-$s7 sont sauvs par l'appel.

10

les instructions de gestion de la pile nexistent pas en assembleur MIPS, mais elles peuvent tre simules en utilisant les instructions sw et lw en stockant ladresse du sommet de pile dans le registre $sp (le pointeur de pile) 6-Codage en langage machine et format des instructions Une instruction MIPS est code en binaire par un mot de 32 bits ;les 32 bits sont dcomposs en champs, chaque champ ayant une signification particulire, codant ainsi soit l'instruction, soit un oprande numrique, soit une adresse ; On dfinit 3 types de format d'instruction diffrents : Instruction de type R (registre) Le format R est utilis par les instructions ncessitant 2 registres sources (dsigns par RS et RT) et un registre rsultat dsign par Rd. codop 6 Rs 5 Rt 5 Rd 5 decval 5 Fonction 6

codop : code opration correspondant l'instruction Rs : premier registre oprateur source Rt : deuxime registre oprateur source Rd : registre opration destination (reoit le rsultat de l'opration) decval : valeur du dcalage fonction : variante de l'opration dcrite par codop exemple : codop add $1, $2,$3 sub $4, $2,$3 slt $4 ,$5,$6 0 0 0 rs 2 2 5 rt 3 3 6 rd decval fonction 1 4 4 0 0 0 32 34 42

Instruction de type I (transfert) Le format I est utilis par les instructions de lecture/criture mmoire, par les instructions utilisant un oprande immdiat, ainsi que par les branchements courte distance (conditionnels). Codop 6 Rs 5 Rt 5 Immediat/adresse 16

rs : registre source rt : registre cible / condition de branchement immdiat/adresse : oprande immdiate ou dplacement dadresse Exemple : Op Lw $1, 100($2) bne $1, $2 ,100 35 5 rs 2 1 rt 1 2 16 bits 100 100 3
11

Instruction de type J (saut) Le format J nest utilis que pour les branchements longue distance (inconditionnels). codop 6 Immed 26

codop : code opration correspondant l'instruction adresse : adresse mmoire Exemple : J 1000 Dcodage dune instruction en assembleur MIPS Pour dcoder une instruction crite en langage machine en assembleur MIPS ; il suffit de vrifier les 6 bits de poids fort sils sont gaux zro alors il sagit dune instruction de type R et cest le champ fonction qui nous renseigne sur le code de linstruction sinon linstruction est du type I ou J Exemple 000000 10001 10010 01000 00000 100000 Cest lquivalent en dcimal de : 0 17 18 8 0 32 Codop=0 alors il sagit dune instruction de transfert(type R) Fonction=32 cest le code de linstruction ADD rs=17, rt=18, rd =8 Add $8,$17,$18 7- Adressage des oprandes en MIPS Rappelons que la faon de donner l'adresse d'un oprande est appele le mode d'adressage. Le processeur MIPS connat les modes d'adressage suivants: Adressage par registre Les oprandes sont les contenus des registres Exemple : add $s0,$s1,$s2 s0=s1+s2 Adressage immdiat Loprande est une valeur constante (16 bits) code dans linstruction Exemple : add $s0,$s1,123 s0=s1+123 Adressage avec dplacement (bas) Ladresse de loprande est la somme du contenu dun registre et dun dplacement (cod sur 16 bits) Exemple : add $s0,$s1,123($s2) s0=s1+ mem [s2+123] Si le dplacement est nul on parle alors dadressage indirect ; Exemple :add $s0,$s1 ,($s2) s0=s1+ mem[s2] Ce type dadressage est utilis aussi par les instructions lw et sw Exemple :lw $t1, 120($t0) Adressage relatif au PC Ce type dadressage concerne les branchements courts et longs Exemple1 : BEQ $s1,$s2, 1000 Ladresse du saut est calcule partir de la valeur du compteur ordinal Exemple2 : J 2000 Ladresse du saut est ladresse fournie en paramtre Parfois ce type dadressage(exemple2) est considr comme un cinquime type appel pseudo-direct

12

- instructions Arithmtiques/Logiques entre registres instruction Opration Add Rd, Rs, Rt Addition : detection doverflow Sub Rd, Rs, Rt Soustraction: detection doverflow Addu Rd, Rs, Rt Addition pas de dtection overflow Subu Rd, Rs, Rt Soustraction + pas de dtection doverflow Addi Rd, Rs, I Addition immediate (I :constante) Addiu Rd, Rs, I Add immediate + pas de dtection doverflow Or Rd, Rs, Rt And Rd, Rs, Rt XOR Rd, Rs, Rt Nor Rd, Rs, Rt Ori Rd, Rs, I Andi Rd, Rs, I Xori Rd, Rs, I Sllv Rd, Rt, Rs Srlv Rd, Rt, Rs Srav Rd, Rt, Rs Sll Rd, Rt, I Srl Rd, Rt, I Sra Rd, Rt, I Lui Rt, I Slt Rd, Rs, Rt Sltu Rd, Rs, Rt Slti Rd, Rs, I Sltiu Rd, Rs, I Mult Rs, Rt Multu Rs, Rt Div Rs, Rt Divu Rs, Rt Mfhi Rd Mflo Rd Mthi Rs Mtlo Rs Beq Rs, Rt, Label Bne Rs, Rt, Label Bgez Rs, Label Bgtz Rs, Label Blez Rs, Label Bltz Rs, La J label Bgt Rs,Rt ,label bge Rs,Rt,label blt Rs,Rt,label ble Rs,Rt,label jal label jr Rs Ou logique (bit bit) Et logique(bit bit) Ou exclusif (bit bit) Non ou (bit bit) Ou immediate insign And immediate insign Ou exclusif immediate insign : Shift left de la variable logique Shift right de la variable logique Shift right de la variable arith. Shift left logique Shift right logique Shift right arithmtique Rt I et 0000 if less than comparaison signe reg ,reg if less than comparaison non signe reg ,reg if less than comparaison signe reg ,imm if less than comparaison non signe reg ,imm Multiplication signe Multiplication non signe Division signe Division non signe Move from HI Move from LO Move to HI Move to LO Branch if equal anch if not equal Branch if greater or equal zero Branch if greater than zero Branch if less or equal than zero Branch if less than zero Jump Branch if greater than Branch if greater than or qual Branch if less than Branch if less than or equal saut avec lien saut par registre 13

commentaire Rd Rs + Rt Rd Rs Rt Rd Rs + Rt Rd Rs Rt Rd Rs + I Rd Rs + I Rd Rs ou Rt Rd Rs and Rt Rd Rs xor Rt Rd Rs non ou Rt Rd Rs ou I Rd Rs and I Rd Rs xor I Rd Rt << Rs(dcal de Rs positions) Rd Rt >> Rs dcal de Rs positions) Rd Rt >> Rs dcal de Rs positions) Rd Rt << I(dcal de I positions) Rd Rt >> I(dcal de I positions) Rd Rt >> I(dcal de I positions) Lecture dune constante Rd 1 si Rs<Rt sinon Rd 0 Rd 1 si Rs<Rt sinon Rd 0 Rd 1 si Rs< I sinon Rd 0 Rd 1 si Rs< I sinon Rd 0 Rs * Rt Rs * Rt Rs / Rt LO quotient Rs/Rt LO quotient

HI reste HI reste

Rd HI Rd LO HI Rs LO Rs Si Rs = Rt aller label Si Rs # Rt aller label Rs >= 0 aller label Rs > 0 Rs <=0 aller label Rs < 0 aller label Aller label sans condition Si Rs>Rt aller label Si Rs>=Rt aller label Si Rs<Rt aller label Si Rs<=Rt aller label saut incond. Avec $31 @retour saut incondi l'adresse stockedansRs

CHAPITRE 6 STRUCTURE INTERNE ET OPTIMISATION DU PROCESSEUR MIPS

I-Larchitecture interne 1- Introduction Larchitecture interne du processeur se dcompose en deux parties :. La partie oprative (chemin de donnes) qui contient les registres et les oprateurs, ainsi que les ports daccs la mmoire externe; elle ralise des transferts lmentaires de donnes entre un ou plusieurs registres sources et un registre destination La partie contrle (micro-squenceur) qui commande la partie oprative qui nest rien dautre quun squenceur ralis au moyen dun automate dtats finis. Le processeur MIPS version simplifie possde une interface avec les ports suivants : CLK est lentre dhorloge. NRESET est le signal dinitialisation, du processeur. ADDRESS est ladresse sur 32 bits de la case mmoire slectionne par le processeur. MEMRW est une commande sur deux bits dfinissant le type daccs la mmoire externe :. DATAOUT est le mot de 32 bits que MIPS souhaite crire en mmoire. DATAIN est le mot de 32 bits contenant la donne ou linstruction lue en mmoire. Pour raliser un systme minimal oprationnel, il faut connecter MIPS simplifi avec une mmoire externe.

Figure 1 : partie oprative et partie contrle Dune faon gnrale, linterface entre la partie oprative et la partie contrle est dfinie par deux nappes de fils : micro-instruction : lensemble des signaux de commande envoys par le squenceur au chemin de donnes.

indicateurs : les signaux envoys par le chemin de donnes au squenceur, pour lui permettre de prendre ses dcisions.

2- Partie oprative : chemin de donnes : Le chemin de donnes du processeur MIPS simplifi contient les registres indpendants PC, AD, DT et IR, et un banc de 32 registres gnraux Ri. PC: registre sur 32 bits contenant ladresse de la prochaine instruction aller chercher en mmoire AD : registre sur 32 bits utilis pour contenir des rsultats de calcul intermdiaires ou ladresse effective dune donne en mmoire. DT : registre sur 32 bits utilis pour contenir temporairement la donne 32 bits lue depuis la mmoire avant de la stocker dans un des registres du banc de registres. IR : registre sur 32 bits utilis pour contenir temporairement linstruction 32 bits lue depuis la mmoire en vue de son utilisation et dcodage futurs par le squenceur. RF[32] : banc de 32 registres de 32 bits, nomms R0 R31. Remarque : Les registres PC et les 32 registres Ri sont visibles du logiciel, et correspondent aux registres dfinis par larchitecture externe du processeur. Les trois registres IR, DT, et AD sont des registres temporaires correspondant une ralisation matrielle particulire. Ils ne sont pas visibles du logiciel. Le processeur possde une bote oprations , aussi appele unit arithmtique et logique (Arithmetic Logic Unit, ou ALU en anglais) capable deffectuer des oprations logiques, arithmtiques partir de ses deux entres X et Y. Le chemin de donnes contient aussi trois multiplexeurs: MUX_X permet de slectionner une donne sur 32 bits parmi plusieurs sources et de lappliquer sur lentre X de lALU. MUX_Y permet de slectionner une donne sur 32 bits parmi plusieurs sources et de lappliquer sur lentre Y de lALU. MUX_ADDR permet de slectionner une valeur parmi 2 : PC et AD. Seuls les registres PC et AD permettent dadresser la mmoire externe. Des pseudo-registres, contenant respectivement les valeurs 0 et 4 permettent de forcer des valeurs constantes sur les entres X et Y de lALU. 3- Partie contrle : micro-squenceur A chaque cycle, la partie contrle envoie vers la partie oprative des signaux de commande qui constituent une micro-instruction. Une micro-instruction possde 12 champs. Lensemble des valeurs possibles pour ces 12 champs dfinit le langage de microprogrammation. Ces valeurs peuvent tre codes sur 1 ou plusieurs bits. Dans le cas dun seul bit la valeur associe est soit 0 (ne pas faire laction), soit 1 (faire laction). Dans certains cas, et particulirement quand une commande peut prendre plus de deux valeurs, on utilise des mnmoniques pour reprsenter les diffrentes valeurs possibles. WRITE_PC : 1 bit. Ce signal est activ(mis 1) sil y a criture sur PC MUX_RF_W : 1 bit. Ce signal indique ladresse du registre dans le banc de registres RF dans lequel il faut ventuellement crire la fin du cycle courant. ;les valeurs possibles sont : 0 : si le numro du registre est indiqu par les bits 20 16 de linstruction courante stocke dans IR[20 :16](registre RT), 1: si le numro du registre est indiqu par les bits 15 11 de linstruction courante stocke dans IR[15 :11] (registre RD).
2

WRITE_RF : 1 bit. Ce signal est mis 1 sil y a criture sur le banc de registres RF. MUX_RF_R : 1 bit. Ce signal indique ladresse du registre que lon souhaite lire dans le banc de registres RF ;les valeurs possibles sont : 0 : si le numro du registre lire est indiqu par les bits 25 21 de linstruction courante stocke dans IR[25 :21] (registre RS) 1: si le numro du registre est indiqu par les bits 20 16 de linstruction courante stocke dans IR[20 :16] (registre RT). WRITE_AD : 1 bit, ce signal est mis 1 sil y a criture sur AD sinon 0 WRITE_DT : 1 bit, ce signal est mis 1 sil y a criture sur DT sinon 0 WRITE_IR : 1 bit, ce signal est mis 1 sil y a criture sur IR sinon 0 MUX_X : 3 bits. Ce signal indique la source de lentre X de lunit arithmtique et logique. Les valeurs possibles du signal sont : 000 : si lentre X de lUAL est la constante 0 . 001 : si lentre X de lUAL est la valeur courante du registre PC. 010 : si lentre X de lUAL est la valeur courante lue dans le banc de registres. 011 : si lentre X de lUAL est la valeur courante du registre AD. 100 : si lentre X de lUAL est la valeur courante du registre DT. MUX_Y : 3 bits. Ce signal indique la source de lentre Y de lunit arithmtique et logique. Les valeurs possibles du signal sont : 000 : si lentre Y de lUAL est la constante 0 100 : si lentre Y de lUAL est la constante 4 011 : si lentre Y de lUAL est la valeur courante du registre AD 010 : si lentre Y de lUAL est Im= IR[15 :0] MUX_ADDR : 1 bit. Ce signal indique ladresse servant adresser la mmoire. Les valeurs possibles sont : 1 : le registre AD sert adresser la mmoire, on cherche excuter une instruction lw ou sw), 0 : le registre PC sert adresser la mmoire, on cherche lire une nouvelle instruction. ALU_OP : 3 bits. Ce signal indique le type dopration effectue par lunit arithmtique et logique. Les valeurs possibles (pour notre MIPS simplifi) sont : 000 : si lALU effectue lopration sur 32 bits X+Y (ADD). 111 : si lALU effectue lopration sur 32 bits X-Y (SUB). 010 : si lALU effectue lopration sur 32 bits X | Y (OR). MEMRW : 2 bits. Ce signal dfinit le type daccs la mmoire externe. Les trois valeurs possibles sont 01 : accs en lecture ; 10 : accs en criture, 00 ( NOP) : ni lecture, ni criture. la structure du squenceur du processeur MIPS simplifi est prsent comme un automate tats finis ou le nom des tats du graphe suggre les instructions que MIPS simplifi est en mesure de traiter : ADD, SUB, ADDI, ORI, LW, SW, BEQ, BNE. Ltat principal de lautomate est ltat PCPLUS4(PC+4) qui agit comme un aiguillage pour lexcution dinstructions. Pour excuter une instruction MIPS simplifi, on va donc passer par une squence dtats spcifiques cette instruction. Chaque tat correspond lexcuti on dune micro-instruction. Le dcodage dune instruction se traduit par lexamen des bits 31 26 de IR (le code opration).), il faut aussi examiner les bits 5 0 de IR (le code fonction, ou func code).
3

Comme le jeu dinstructions du processeur MIPS simplifi se rduit 8 instructions, il existe 8 transitions sortantes de ltat PCPLUS4. Remarque : lautomate sera tudi en TD avec le tableau suivant qui rcapitule les valeurs possibles des diffrents signaux.

Signal Write_PC Mux_RF_W Write_RF Mux_RF_R Write_AD Write_DT

Valeurs possibles 1 :crite ; 0 :ne pas crire 1 :RD=IR[15 :11] 0 :RT=IR[20 :16] 1 :crire ; 0 : ne pas crire 1 :RT=IR[20 :16] ; 0 :RS=IR[25 :21] 1 :crite ; 0 :ne pas crire 1 :crite ; 0 :ne pas crire

Signal Write_IR Mux_X

Valeur possibles 1 :crite ; 0 :ne pas crire 0 : 000 ; PC :001 ; RF : 010 ; AD :011 ; DT :100 Mux_Y 0 :000 ; 4 :100 ; AD : 011, Im= IR[15 :0] : 010 Mux_ADDR 1 : PC ; 0 : AD ALU_OP MEMRW ADD : 000 ; SUB : 111 Read : 01 ; Write=10 ; NOP :00

Exemple : Donner la suite des micro-instructions envoyes par la partie contrle vers la partie Oprative pour excuter linstruction : add $6, $5, $0 Rappelons que lexcution de linstructions Add Rd, Rs, Rt passe par les tapes suivantes : 1. Lire l'instruction 2. Dcoder l'instruction 3. extraire les oprandes de Rs et Rt 4. Effectuer le calcul : Add 5. Mettre le rsultat dans Rd 6. Calcul de l'adresse de l'instruction suivante En utilisant les registres du chemin de donnes on aura: 1. La lecture de linstruction consiste mettre linstruction dans IR, le PC =ladresse(dans la mmoire centrale) de linstruction executer alors IR M(PC) 2. Le dcodage (en lisant dans IR cod_op et funct ) indique quil sagit dune addition 3. Lextraction des oprandes et le calcul consiste utiliser le registre AD(le temporaire de notre chemin de donnes), on aura alors: AD RT; AD RS+AD 4. Mettre le rsultat dans RD consiste : RD AD 5. PC PC+4 Chaque tape est quivalente une micro-instruction ; examinons les valeurs des differents signaux pour ltape 1(signal non activ: valeur indiffrente sera=0) : WRITE_PC=0, car on ncrit pas dans le registre PC MUX_RF_W =0 : la valeur est ici indiffrente WRITE_RF= :0, car on ncrit pas dans RF MUX_RF_R=0 : la valeur est ici indiffrente WRITE_AD=0, car on ncrit pas dans le registre AD WRITE_DT=0, car on ncrit pas dans le registre DT WRITE_IR=1, car on crit ce qui vient de la mmoire dans IR
4

MUX_X =000 : la valeur est ici indiffrente MUX_Y =000 (la valeur est ici indiffrente) MUX_ADDR=1 (PC sert adresser la mmoire) ALU_OP=000 ( la valeur est ici indiffrente) MEMRW = 01 , car on veut lire la mmoire La premire micro-instruction sera donc : 0000001000000100001 Cette micro-instruction est rpte dans toutes les instructions (lecture de linstruction). Ltape 5 PC PC+4 se rpte pour toutes les insttructions, les valeurs des signaux sont: WRITE_PC=1, MUX_RF_W=0 WRITE_RF=0, MUX_RF_R=0, WRITE_AD=0, WRITE_DT=0, WRITE_IR=0, MUX_X=001, MUX_Y=100, MUX_ADDR=0, ALU_OP=000, MEMRW=00 La micro-instruction est:1000000001100000000 De mme : AD RT : 0001100000000000000 AD RS+AD: 0000100010011000000 RD AD: 0110000000000000000 II-Amlioration des performances du processeur Deux paramtres peuvent tre utiliss pour mesurer la performance dun processeur: le temps de rponse ou temps dexcution dune certaine tche: temps coul entre le dbut et la fin dexcution de la tche quantit total de travail ralis dans un certain temps parmi les techniques utilises pour amliorer les performances dun processeur : la technique du pipeline et la mmoire cache. 1- Pipeline Cette technique permet le recouvrement des priodes d'excutions des instructions en exploitant le paralllisme d'un flux d'instructions squentielles; ce qui est invisible au programmeur. Le principe du pipeline est celui de la chaine de montage : fractionner la tache en sous-taches de dures gales, appeles tages ; excuter simultanment les diffrentes sous-taches de plusieurs taches. Toute instruction d'un processeur est excute en trois phases: fetch: lecture de l'instruction en mmoire, l'adresse donne par le PC. L'instruction est stocke dans le registre IR decode: identification de l'instruction execute: excution des oprations ncessaires l'instruction En gnral, l'excution de chaque phase de l'instruction demande au moins un cycle d'horloge. La phase execute peut demander plus d'un cycle, en fonction de la complexit de l'instruction: si une instruction de dplacement peut se faire en un seul cycle, une instruction de division a besoin de plusieurs dizaines de cycles.
5

Les vitesses d'horloge des processeurs actuels vont de plusieurs mgahertz (MHz) plusieurs gigahertz (GHz) pour les plus rcents. Il n'y a pas beaucoup de sens comparer les performances de deux processeurs en comparant seulement les vitesses d'horloge. En effet, pour des familles diffrentes de processeurs, la quantit de travail effectue en un cycle peut tre trs diffrente. Il est plus raliste de mesurer la performance en comparant les temps d'excution pour un mme programme. Une augmentation de performance sans augmentation de la vitesse d'horloge est obtenue grce au pipeline Dans un processeur sans pipeline, l'excution d'une instruction ne commence pas avant la fin d'excution de l'instruction prcdente ; cependant dans un processeur pipeline, la fin de chaque phase dmarre l'excution d'une nouvelle instruction ; le pipeline peut tre vu comme un premier pas vers le paralllisme. Toutefois, le vrai paralllisme est atteint seulement avec plus d'une unit de traitement Les processeurs superscalaires peuvent chercher plusieurs instructions la fois, excutes en parallle par plusieurs units de traitement Dans les systmes multiprocesseurs, plusieurs squences d'instructions sont excutes en parallle sur diffrents ensembles de donnes: c'est les architectures MIMD (multipleinstruction stream,multiple-data stream) appeles ainsi par opposition aux traditionnelles SISD (single-instruction stream, single-data stream) Un autre type de paralllisme est obtenu avec l'architecture SIMD (single-instruction stream, multiple-data stream), o plusieurs units de traitement excutent en parallle la mme squence d'instructions, mais chacune sur son propre ensemble de donnes Pour tirer un schma d'excution gnral pour le MIPS R3000, considrons les exemples suivants Exemple 1 : Add Rd, Rs, Rt Etapes : 1. Lire l'instruction 2. Dcoder l'instruction 3. extraire les oprandes 4. Effectuer le calcul : Add 5. Mettre le rsultat dans Rd 6. Calcul de l'adresse de l'instruction suivante Exemple 2 : Lw Rt, I (Rs) Etapes : 1. Lire l'instruction 2. Dcoder l'instruction 3. Extraire les oprandes Rt, Rs, I 4. Effectuer le calcul I(Rs) (calcul de l@ = Imm+(Rs) ) 5. Accs mmoire : lecture (contenu de la mmoire l@ calcule) 6. Rsultat dans Rt (chargement de la valeur lue dans le registre Rt) 7. Calcul de l'adresse de l'instruction suivante Exemple 3 : Sw Rt, I (Rs) Etapes : 1. Lire l'instruction 2. Dcoder l'instruction 3. Extraire les oprandes Rt, Rs, I 4. Effectuer le calcul I(Rs) (calcul d@)
6

5. Accs mmoire : criture (rangement de (Rt) dans la MC l@ calcule) 6. Calcul de l'adresse de l'instruction suivante Exemple : Jr Rs Etapes : 1. Lire l'instruction 2. Dcoder l'instruction 3. Extraire l'oprande (calcul de ladresse du branchement partir de Rs) 4. Adresse suivante (PC ladresse de branchement calcule) On en tire alors un schma d'excution gnral pour le MIPSR3000 : 1. Lire l'instruction 2. Dcoder l'instruction 3. Extraire les oprandes 4. Effecturer une opration 5. Accs mmoire 6. Ecriture du rsultat 7. Calcul de l'adresse suivante Pour MIPS, le processeur est divis en 5 tage : IFC : Intruction Fetch lecture DEC : Instruction Decode dcodage, extraction, calcul de l'adresse de l'instruction suivante EXE : Execute Effectuer l'opration MEM : Mmoire Accs mmoire WBK : Write Back Rsultat
i I D E M W

i+1 I i+2

W Vue de l'instruction

22 i+3 instructions

D Vue du pipeline

W temps

2- Mmoire cache Introduction La mmoire cache est toujours beaucoup plus rapide que la mmoire principale. Elle permet de rduire les temps d'accs aux instructions et aux donnes et donc d'amliorer les performances du systme En gnral, un accs la mmoire centrale prend entre 5 et 10 cycles dhorloge. Afin dtre rentable, le cache doit fournir une donne en un cycle dhorloge. Il est galement possible davoir plusieurs niveaux de cache, chacun avec un cot et une rapidit diffrents. Ici, nous allons nous restreindre deux niveaux : ceux du cache et de la mmoire centrale. 2-1 Principe de la mmoire cache et gnralits Lorsque le processeur tente de lire un mot en mmoire, on vrifie sil se trouve dans le cache. Si tel est le cas, le mot est livr au processeur. Dans le cas contraire, on lit un bloc de la mmoire principale, constitu dun nombre fixe de mots, que lon place dans le cache avant de livrer le mot au processeur. On dit qu'il y a hit ( russite) quand la donne se trouve dans le cache. Dans ce cas, inutile d'accder la mmoire principale. On dit qu'il y a miss ( chec) quand la donne ne se trouve pas dans le cache et qu'il est ncessaire d'accder la mmoire principale. Les mmoires caches contiennent gnralement un tableau dtiquettes et un tableau de donnes, le tableau dtiquettes contient les adresses des donnes contenues dans le cache, tandis que le tableau de donnes contient les donnes elles-mmes La mmoire principale contient jusqu 2n mots adressables, chacun possdant une adresse unique de n bits. Pour la correspondance avec la mmoire cache, cette mmoire se compose de blocs dune longueur fixe de K mots chacun. Autrement dit, il y a M = 2n/K blocs. Le cache se divise en C lignes de K mots. La figure suivante illustre la structure du systme cache/mmoire principale

2-2 Caches de donnes, caches dinstructions et caches unifis Contrairement la mmoire centrale (selon larchitecture de von newmann), dans le cas des caches, les donnes et les instructions sont souvent stockes dans des caches de donnes et des caches dinstructions spars. Cette organisation, appele cache Harvard ou architecture Harvard, est utilise parce quelle permet au processeur dextraire simultanment les instructions du cache dinstructions et les donnes du cache des donnes. Lorsquun cache contient la fois des instructions et des donnes, on parle de cache unifi. La sparation entre cache dinstructions et cache de donnes permet de tirer profit du fait que les programmes ne modifient pas leurs propres instructions. En outre, la sparation des caches dinstructions et de donnes vite les conflits entre les blocs dinstructions et les donnes qui pourraient tre renvoyes aux mmes emplacements mmoire dans le cas dun cache unifi.

Architecture de cache Harvard 2-3 lments de la conception du cache Pour tablir des comparaisons entre les caches, les concepteurs considrent leur capacit, leur longueur de ligne, leur associativit (le nombre demplacements quune adresse donne peut occuper), la politique de remplacement et le type du cache. 2-3 -1 Capacit La capacit dun cache dsigne simplement la quantit de donnes qui peut tre stocke dans le cache. Ainsi, un cache dune capacit de 32 Ko peut stocker 32 Ko de donnes. Un cache de ce type requerra plus de 32 Ko de mmoire pour tre implment, car lespace de stockage du tableau dtiquette nest pas compt dans la capacit. 2-3 -2 Longueur de ligne La longueur de ligne dun cache correspond la taille de bloc du cache. Autrement dit cest le nombre doctets qui peut tre copier la fois de la mmoire centrale vers la mmoire cache dans le cas ou linformation nest pas disponible dans le cache. Exemple : Dans un cache dont les lignes font 64 octets, combien de bits sont utiliss pour dterminer loctet dans la ligne de cache que pointe une adresse ? Solution : Le logarithme en base 2 de 64 est 6 (car 64 = 26), aussi les 6 bits de poids faible de ladresse dterminent loctet dune adresse lintrieur dune ligne de cache.

2-3-3 Mthodes daccs aux caches : fonction de correspondance Dhabitude le CPU utilise une adresse pour accder une information en MC, le principe est le mme pour une mmoire cache sauf que la correspondance entre adresse de linformation en MC et celle en mmoire cache doit tre calcule. On peut employer trois techniques de correspondance: directe, associative et associative par ensemble. 2-3-3-1-Caches associatifs Les caches associatifs (fully associative) permettent nimporte quelle adresse dtre stocke dans nimporte quelle ligne du cache. Lorsquune opration mmoire est transmise au cache, ladresse de la requte doit tre compare chaque entre dans le tableau dtiquettes pour dterminer si les donnes rfrences par lopration sont contenues dans le cache.Cest le plus gnral et le plus simple comprendre, mais aussi le plus coteux mettre en oeuvre. Une adresse arbitraire (par exemple sur 32 bits) est donc abstraitement divise en deux parties : la premire indiquant le numro de bloc et la seconde indiquant le numro doctet lintrieur du bloc. Exemple : Pour une taille de bloc de 16 octets et une adresse de 32 bits, la premire partie de ladresse contient donc 28 bits et la deuxime 4 bits. Car 16 octets= 24 donc 4 bit sont ncessaires pour numroter loctet Et le reste 28 2-3-3-2 Caches directs Dans un cache direct, chaque adresse mmoire ne peut tre stocke qu un seul emplacement du cache. Lorsquune opration mmoire est transmise un cache direct, un premier sous-groupe de bits dans ladresse est utilis pour slectionner la ligne du cache qui peut contenir ladresse et un second sous-groupe est utilis pour slectionner loctet dans la ligne de cache que pointe ladresse. Les n bits de poids faible dans ladresse sont utiliss pour dterminer la position de ladresse dans la ligne de cache, o n = log2 du nombre doctets dans la ligne. Les m bits suivants de poids suprieur (o m = log2 du nombre de lignes dans le cache) sont utiliss pour slectionner la ligne dans laquelle ladresse peut tre stocke.

Exemple : Dans un cache direct dune capacit de 16 Ko dont les lignes font 32 octets, combien de bits sont utiliss pour dterminer loctet quune opration mmoire rfrence dans une ligne de cache et combien de bits sont utiliss pour slectionner la ligne dans le cache qui pourrait contenir les donnes ? Solution : log2 32 = 5 5 bits sont requis pour dterminer loctet rfrenc dans la ligne de cache. Nombre de lignes=capacit du cache/longueur de la ligne=16 Ko/ 32 = 2 14 / 25 =29
10

Alors 9 bits sont requis pour slectionner la ligne log2 29 = 9 . 2 -3-3-3 Caches associatifs par ensemble Afin dviter le problme du cache direct sans toutefois tre pnalis par le cot lev du cache associatif, on peut imaginer des solutions mixtes. La mmoire est toujours divise en blocs et le cache en lignes.Les lignes du cache sont organises de manire squentielle comme pour le cache direct. La diffrence par rapport au cache direct est que chaque ligne peut contenir un nombre de blocs suprieur 1. En fait, chaque ligne du cache est un mini-cache associatif. Le nombre de blocs de chaque ligne est appel lassociativit du cache. Exemple : Combien densembles possdent un cache associatif par ensemble de 2 blocs dune capacit de 32 Ko dont les lignes font 64 octets ? Combien de bits dadresse sont utiliss pour slectionner un ensemble de ce cache ? Solution : nbre lignes=32 Ko / 64 octets = 512 lignes de donnes. 1 ensemble contient 2 lignes alors le cache contient 256 ensembles. log2 256 = 8 alors 8 bits sont utiliss pour slectionner lensemble vers lequel renvoie ladresse 2-4 Politiques de remplacement Lorsquune ligne doit tre vince dun cache pour faire place de nouvelles donnes, le choix de la ligne vincer dpend de la politique de remplacement. Dans les caches directs, aucun choix nest offert, car la ligne entrante peut tre place un seul endroit dans le cache, mais dans le cas des caches associatifs ou des caches associatifs par ensemble, plusieurs lignes sont potentiellement remplaables pour accueillir une nouvelle ligne. pour ces caches, le but de la politique de remplacement est avant tout de minimiser les cache-miss qui pourraient intervenir par la suite, en vinant de prfrence une ligne qui ne sera pas souvent rfrence par la suite. conclusion Le cache permet une petite mmoire rapide et chre en combinaison avec une grande mmoire relativement lente, mais peu chre, de simuler une grande mmoire rapide et bon march.

11