47
Architecture ´ El´ ementaire IUP-GMI (FC) N.E. Oussous GO evrier 2003 Copyright c 2003 [email protected] Date de la derni` ere r´ evision : evrier

Architecture El´ ementair´ e IUP-GMI(FC)oussous/iupfc/AEv/tr02.pdf · – Si l’on ignore le bit du signe, et si le nombre de ... multiplicateur dans l’algorithme de ... Comme

  • Upload
    voxuyen

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Ar chitectureElementaire

IUP-GMI (FC)

N.E. Oussous

GO

Fevrier2003

Copyright c�

[email protected] derniererevision: � Fevrier �������

Tabledesmatieres 2

Multiplication et division desnombresbinair es

Tabledesmatieres

1. La multiplication2. Multiplication signee3. La division4. Division signee

Page 2 of 47 Sommaire � � Quit ��� ���

1: La multiplication 3

1. La multiplicationD’abordunexemple: Onmultiplie, enbasedix, lesnombres������� ���� et���� ���� .

��� ����� �� ���� ��������� �� ��� ���� ���� �� ����������

Le premieroperandes’appellele multiplicandeet le secondle multiplica-teur. Le resultatestle produit.

Page 3 of 47 Sommaire � � Quit ��� ���

1: La multiplication 4

– Si l’on ignorele bit du signe,et si le nombredechiffresdu multipli-candeest � et le nombredechiffresdu multiplicateurest � , alorsleproduitaura� � � chiffres.

– Commepourl’addition, ondoit gererlescasdedebordement.– Dansl’exemple,onachoisileschiffres et � danslesdeuxnombres.

Lorsqu’onmultiplie le multiplicandeparunchiffre dumultiplicateur,le resultatestsoit le multiplicandesoit .

– Enbinaire,onn’a quecesdeuxchoix.– On suppose,pour le moment,quel’on nemultiplie quelesnombres

positifs.

Onvapresenterdifferentsalgorithmesdemultiplication.

Page 4 of 47 Sommaire � � Quit ��� ���

1: La multiplication 5

Premier algorithme : C’estl’algorithmequel’on pratiquea la main.

– On supposeque le multiplicateurest place dansun registre ��� bitset que l’on utilise un registre ��� bits pour le produit, celui-ci etantinitialise a .

– Puisquele multiplicandeseradecale vers la gauchede un chiffre achaqueetape,on le placeradansla partie droite d’un registre ��� bitscomplete a gauchepar deszeros.

– Le bit de poidsfaible du multiplicateur(Multiplicateur ) determines’il fautajouterou nonle multiplicandeauregistreProduit.

Page 5 of 47 Sommaire � � Quit ��� ���

1: La multiplication 6

Algorithme1:begin

for !#" � � to ��� step � doif Multiplicateur � � then

Ajouter Multiplicandeauproduit;Placerle resultatdansle registreProduit;

fi $Decalerle registreMultiplicandeagauchede1 bit;Decalerle registreMultiplicateur adroitede1 bit;

odend$

Page 6 of 47 Sommaire � � Quit ��� ���

1: La multiplication 7

Premiere versiondu materiel pour la multiplication

Multiplicande

UAL 64 bits

ProduitControle

��� bits

��� bits

Ecrire

Decalera gauche

��� bits

MultiplicateurDecalera droite

Page 7 of 47 Sommaire � � Quit ��� ���

1: La multiplication 8

Exercice1. ▼Question1.1. Enutilisant desnombres% bits, multiplier &('*)�+ par ,-'.)/+ ,soit 0-021.0 '4365-+87 0-091-1 '4365-+ .

Page 8 of 47 Sommaire � � Quit ��� ���

1: La multiplication 9

Problemesavecle premieralgo:

– La moitie desbitsdu multiplicandeesttoujoursa ,– uneUAL ��� bits completeestlongueet peueconomiquepuisquela

moitie desbits del’additionneurajoutait a la sommeintermediaire.

Ideed’un deuxiemealgo:

– Les decalagesa gauchedu multiplicandefont que les bits de poidsfaibleduproduitnesontjamaismodifiesunefois crees.

– Onfixele multiplicandeparrapportauproduitetonn’additionneque��� bits.– Ondecalea droite le produit.

Page 9 of 47 Sommaire � � Quit ��� ���

1: La multiplication 10

Au depart,

– Lesregistres��� bits Multiplicandeet Multiplicateursontinitialisesaleursvaleurs.

– Le registre��� bitsProduitestinitialise a .

Ensuite,

– On nefait qu’unesommesur ��� bits, doncseulela moitie gaucheduregistreProduitestmodifieependantl’addition.

Page 10 of 47 Sommaire � � Quit ��� ���

1: La multiplication 11

Algorithme2:begin

for !#" � � to ��� step � doif Multiplicateur � � then

Ajouter Multiplicandea la moitie gauchedu produit;Placerle resultatdansla moitie gaucheduregistreProduit;

fi $Decalerle registreProduit a droitede1 bit;Decalerle registreMultiplicateur adroitede1 bit;

odend$

Page 11 of 47 Sommaire � � Quit ��� ���

1: La multiplication 12

Deuxiemeversiondu materiel pour la multiplication

��� bits

MultiplicateurDecalera droite

Multiplicande

EcrireProduit

Decalera droite

��� bits

UAL 32 bits

��� bits

Controle

Page 12 of 47 Sommaire � � Quit ��� ���

1: La multiplication 13

Exercice2. ▼Question2.1. Onreprendl’exempleprecedentavecle nouvelalgorithme:

Page 13 of 47 Sommaire � � Quit ��� ���

1: La multiplication 14

– Dansl’algo precedent,le nombrededecalagesfait surle registrePro-duit estegala la taille du registreMultiplicateur.

– Dansle dernieralgorithme,onplacele multiplicateurdansles ��� bitsde poidsfaible du registreProduit. C’est doncle bit de poidsfaibleduregistreProduitqui doit etreteste.Au depart,

– Le registre��� bitsMultiplicandeestinitialise a savaleur.– Le multiplicateurestaffectea lapartiedroiteduregistreProduit.

La partiegaucheestinitialiseea .

Page 14 of 47 Sommaire � � Quit ��� ���

1: La multiplication 15

Algorithme3:begin

for !#" � � to ��� step � doif Produit � � then

AjouterMultiplicandea la moitie gaucheduproduit;Placerle resultatdansla moitie gaucheduregistreProduit;

fi $Decalerle registreProduit a droitede1 bit;

odend$

Page 15 of 47 Sommaire � � Quit ��� ���

1: La multiplication 16

Troisiemeversiondu materiel pour la multiplication

Multiplicande

EcrireProduit

Decalera droite

��� bits

UAL ��� bits

��� bits

Controle

Exercice3. ▼

Question3.1. Onreprendle memeexempleavecle nouvelalgorithme.

Page 16 of 47 Sommaire � � Quit ��� ���

2: Multiplication signee 17

2. Multiplication signeeLesalgorithmesprecedentstraitentdesnombrespositifs.Pourutilisercesalgospourdesnombressignes,il faut

– convertir le multiplicateuret le multiplicandeennombrespositifs,– sesouvenirdessignesoriginaux.– L’algo doit etreexecute ��� fois, enexcluantle bit designedu calcul.– Enfin,onprendral’opposeduproduitsi lessignesoriginauxdifferent.

Page 17 of 47 Sommaire � � Quit ��� ���

2: Multiplication signee 18

L’algorithmedeBooth– C’est uneapprocheplus elegantede la multiplication desnombres

signes.– Si l’on est capabled’additionneret de soustraire,alors il existe de

multiplesmoyenspourcalculerun produit.– Booth a decouvert son algorithmeen cherchantune rapidite maxi-

male,persuadequ’un decalageetaitplusrapidequ’uneaddition.– La cle de l’algo residedansle fait qu’il classifiele groupedebits en

undebut, milieuou unefin d’uneseriede � .

Page 18 of 47 Sommaire � � Quit ��� ���

2: Multiplication signee 19

on observedeuxbits a la fois :

Bit courant Bit a droite Explication Exemple� Debut d’uneseriede � ��������� 10��:� � Milieu d’uneseriede � ������� 11�� : � Fin d’uneseriede � �� 01��������: Milieu d’uneseriede 00���������� :

Page 19 of 47 Sommaire � � Quit ��� ���

2: Multiplication signee 20

1 AlgoBooth:2 begin3 for !;" � � to ��� step � do4 if <>= � � then ? Milieu d’unechaınede A@5 pasd’operationarithmetique;6 elsif <>= � �� then ? Fin d’unechaınede ��@7 ajouterMultiplicandea la moitie gaucheduproduit;8 elsif <>= � �� then ? Debut d’unechaınede �B@9 soustrairele Multiplicandedela moitie gauchedu produit;

10 elsif <>= � ��� then ? Milieu d’unechaınede ��@11 pasd’operationarithmetique;12 fi $13 Decalerle registreProduit a droitede1 bit;14 od15 end$

< estle bit courantet = estle bit a droitede < . Au depart, = vaut .

Page 20 of 47 Sommaire � � Quit ��� ���

2: Multiplication signee 21

– A noterquel’operationa effectuerestidentifieeen fonctiondesva-leursdesdeuxbits.

– Il estnecessairequele decalagea droitedu produitconserve le signeduresultatintermediaire.

– Il fautdoncetendrelesignelorsqueleproduitestdecaleversladroite.– Dansl’exemplesuivant,on vamultiplier � ���� par � ���� , soit ���� �C.D(�

par ����� �C4D-� .

Page 21 of 47 Sommaire � � Quit ��� ���

2: Multiplication signee 22

Iteration Multi- Algo. 3 Booth! plicande Produit Produit

0 0010 00000110 00000110 01 0010 00000110 000001100

0010 00000011 00000011 02 0010 00100011 111000110

0010 00010001 11110001 13 0010 00110001 111100011

0010 00011000 11111000 14 0010 00011000 000110001

0010 00001100 000011000L’ etape2 dela deuxiemeiterationtransforme������E������ �C.D(� en������������E� �C.D(� aulieu de �����������E� �C.D(� .Cedecalageestappeleundecalagea droite arithmetique.

Page 22 of 47 Sommaire � � Quit ��� ���

2: Multiplication signee 23

Exercice4. ▼Question 4.1. Appliquer l’algorithme de Booth pour calculer le produit & '.)/+F7G , '*)/+IH G#J '.)/+ , soit 0K02140 'L3M5-+N7 1K14091 '4365-+IH 1-1K1-1O1.021.0 '4365-+ .

Page 23 of 47 Sommaire � � Quit ��� ���

2: Multiplication signee 24

Pourlesmultiplicationsreelles,MIPS fournit– unepairederegistres ��� bitspourle produit ��� bits, appeles

– Hi (pourHigh, haut)et– lo (pour low, bas)

– deuxinstructionsdemultiplication

– mult pourla multiplicationsigneeet– multupourla multiplicationnonsignee.

Cesdeuxinstructionsignorentlesdebordements,et c’estdoncle lo-giciel qui doit determinersi le produit est trop grandpour tenir sur��� bits.

– une instructionmflo (pour move from lo) pour recuperer le produit��� bitsnormal.

Page 24 of 47 Sommaire � � Quit ��� ���

2: Multiplication signee 25

Pourquoil’algorithmedeBoothfonctionnepourlesentierssignesencomplementa deux?

Soient P le multiplicateuret Q le multiplicande.Ens’interessantauxbits dumultiplicateurdansl’algorithmedeBooth, on obtient:

R � R �TSVU Operation

nerien faire � ajouter Q� soustraire Q� � nerien faire

A la placedecetableau,on peututiliser l’expressionW.P �TSVUYX P �LZ .

W.P[�TSVU X PB� Z � nerien faire� � ajouter QX � soustraire QPage 25 of 47 Sommaire � � Quit ��� ���

2: Multiplication signee 26

Puisquechaquedecalagea gauchedu multiplicandepeut etre considerecommeune multiplication par une puissancede � , l’algo. de Booth peuts’ecrirecommela sommesuivante:

W*P SVUEX P( Z � Q � � � W*P( X P U\Z � Q � � U�\�K�� W*P :^]IX P(_^ Z � Q � � _L � W*P _^ X P _ U Z � Q � � _ U

Onremarqueque

X P � � � � � P � � � �a`bU � W X P � � �cP �4Z � � � � P � � � �En factorisantQ , on obtient:

Q � W4W*P _ U � X � _ U Z � W*P _L � � _L Z � �K�\� � W*PdU � � U Z � W*P � � ZLZe� Q � P

Page 26 of 47 Sommaire � � Quit ��� ���

3: La division 27

3. La divisionCommepourla multiplication,oncommenceparunexemplededivisiondedeuxnombresenbasedix formesuniquementde etde � .

Dividende ��� �� �f ���� Diviseur- ���� ��� � Quotient���� ��� �f

- ���g�fReste

La taille du dividendeestlimit eeparla sommedestaillesdu diviseuret duquotient.

Page 27 of 47 Sommaire � � Quit ��� ���

3: La division 28

– Le plus difficile dansl’algorithmede division estle choix du chiffreduquotient.

– Dansl’exemple,les chiffres utilisessont et � et doncle choix estlimit e a l’un decesdeuxchiffres.

– En binaire,on n’a quecesdeuxchiffreset c’est cequi rend“ facile”l’algorithmededivision.

– On supposeraquele dividendeet le diviseursonttousdeuxpositifs(doncle quotientet le resteserontpositifs).

On va donnerdifferentesversionsde l’algo. de division commeon l’avaitfait pourcelui dela multiplication.

Page 28 of 47 Sommaire � � Quit ��� ���

3: La division 29

Premier algorithme :

On imite l’algorithmequel’on fait a la main.

Au depart,on meth dansle registreQuotienth le diviseurdansla moitie gauchedu registre��� bitsDiviseurh le dividendedansle registreReste

Le Diviseurestdecale a droitede � bit a chaqueetape.

Page 29 of 47 Sommaire � � Quit ��� ���

3: La division 30

1 Algorithme1:2 begin3 for !;" � � to ��� step � do4 Reste " � ResteX Diviseur$5 if Reste ij then6 Decalerle registreQuotientagauche;7 Quotient " � ��$8 else9 Reste " � Reste

�Diviseur$

10 Decalerle registreQuotientagauche;11 Quotient " � �$12 fi $13 Decalerle registreDiviseura droitede1 bit;14 od15 end$

Pourtestersi Resteestpositif ou non,on testejustele bit designe.

Page 30 of 47 Sommaire � � Quit ��� ���

3: La division 31

– Si le Resteestpositif, le diviseurtenaitdansle dividende, on generealorsun � dansle quotient(ligne 7).

– Si le Resteestnegatif,le diviseurnetenaitpasdansle dividende, ongenerealorsun dansle quotientet on restituela valeurde Reste(lignes9–11).

– Dansla ligne 13, on alignecorrectementle diviseurpar rapportaudividendepourl’ etapesuivante.

– Le tout sefait en ��� etapes!

Page 31 of 47 Sommaire � � Quit ��� ���

3: La division 32

Premiere versiondu materiel pour la division

UAL 64 bits

Controle

64 bits

64bits

Ecrire

32 bits

Diviseur

Reste

Quotient

Decalera droite

Decalera gauche

Exercice 5. ▼ En utilisant desnombres� bits, diviser ���E������ �C.D(� par���� �C.D(� .Page 32 of 47 Sommaire � � Quit ��� ���

3: La division 33

Deuxiemealgorithme :

on remarquequedansle premieralgorithme,– auplusla moitiedu diviseurcontientdesinformationsutiles,

onpeutdoncprendreunregistreetuneUAL ��� bits– ondecalele diviseurversla droitepouraligner, onpeutavoir le meme

resultatendecalantle restevers la gauche.– La premiereetapedel’algo. nepeutproduireun � pourle bit dequo-

tient, sinonle quotientseraittrop grandpour le registredont il dis-pose.On peutsupprimerune iterationde l’algo. en inversantl’ordre desoperationsafindedecalerpuisdesoustraire.

Aveccesmodifications,on obtientl’algorithmesuivant:

Page 33 of 47 Sommaire � � Quit ��� ���

3: La division 34

Algorithme2:begin

for !#" � � to ��� step � doDecalerle registreRestea gauchede � bit;Restek " � Restek X Diviseur$if Reste ij then

Decalerle registreQuotienta gauche;Quotient " � ��$

elseRestek " � Restek � Diviseur$Decalerle registreQuotienta gauche;Quotient " � �$

fi $od

end$Il fautremarquerqueseulela moitie gauchedu resteestmodifiee.

Page 34 of 47 Sommaire � � Quit ��� ���

3: La division 35

Deuxiemeversiondu materiel pour la division

32 bits

Ecrire64 bits

UAL 32 bits

32bits

ControeDecalera gauche

Decalera gauche

Reste

Quotient

Diviseur

Exercice6. ▼ On utilise cenouvel algorithmepourdiviser ���E������ �C4D-�par ��� �C.D(� .

Page 35 of 47 Sommaire � � Quit ��� ���

3: La division 36

Troisiemealgorithme :

commepourla multiplication,on remarqueque– le registreQuotientpeutetreelimine endecalantlesbits du quotient

dansle registreReste.– Le decalagedu registreRestedecalea la fois

– le restedansla moitie gaucheet– le quotientdansla moitie droite.

– Lors de la derniere etape, on ne doit decaler, a droite, que le restedansla moitie gauchedu registre.

Page 36 of 47 Sommaire � � Quit ��� ���

3: La division 37

Algorithme3:begin

Decalerle registreResteagauchede � bit;for !#" � � to ��� step � do

Restek " � Restek X Diviseur$if Reste ij then

Decalerle registreRestea gauche;Reste " � ��$

elseRestek " � Restek � Diviseur$Decalerle registreRestea gauche;Reste " � �$

fi $odDecalerla moitie gauchedu registreResteadroitede � bit;

end$

Page 37 of 47 Sommaire � � Quit ��� ���

3: La division 38

Troisiemeversiondu materiel pour la division

Ecrire64 bits

UAL 32 bits

32bits

Controle

Diviseur

ResteDecaleragauche

Exercice7. ▼ On utilise cenouvel algorithmepourdiviser ���E������ �C4D-�par ��� �C.D(� .

Page 38 of 47 Sommaire � � Quit ��� ���

4: Division signee 39

4. Division signeeLesalgorithmesprecedentstraitentdesnombrespositifs.

Le plus simpleestde sesouvenir dessignesdu diviseuret du dividende,puisdeprendrel’ opposedu quotientsi lessignesdifferent.

Il fautaussideterminerle signedu reste.

Ci-aprestouteslescombinaisonspossibles:

� lnm � � " Quotient=� �Ao Reste=

� �X lnm � � " Quotient=X �Ao Reste=X �� lnm X � " Quotient=X �Ao Reste=

� �X lnm X � " Quotient=

� �Ao Reste=X �Donc,le signedu resteestle signedudividende.Page 39 of 47 Sommaire � � Quit ��� ���

4: Division signee 40

Interface Mat eriel Logiciel :On remarquequele mememateriel peutetreutilise a la fois pour la multi-plicationet pourla division. Il fautsimplementdisposer

– d’un registre ��� bitscapablededecalera droiteet a gauche,– d’uneUAL ��� bitscapabled’additionneret desoustraire.

Apresla divisionHi contientle resteet Lo contientle quotient.

MIPS utilise la memepairede registrespour la multiplication et pour ladivision.

Il offre deuxinstructionspourla division: div et divu.

Page 40 of 47 Sommaire � � Quit ��� ���

4: Division signee 41

SolutionsSolution 1. ▲ p

Multiplicateur Multiplicande Produit

0 0011 00000010 00000000

0011 00000010 000000101 0011 00000100 00000010

0001 00000100 00000010

0001 00000100 000001102 0001 00001000 00000110

0000 00001000 00000110

0000 00001000 000001103 0000 00010000 00000110

0000 00010000 00000110

0000 00010000 000001104 0000 00100000 00000110

0000 00100000 00000110

Page 41 of 47 Sommaire � � Quit ��� ���

4: Division signee 42

Solution 2. ▲ pMultiplicateur Multiplicande Produit

0 0011 0010 00000000

1 0011 0010 001000000011 0010 000100000001 0010 00010000

2 0001 0010 001100000001 0010 000110000000 0010 00011000

3 0000 0010 000110000000 0010 000011000000 0010 00001100

4 0000 0010 000011000000 0010 000001100000 0010 00000110

Page 42 of 47 Sommaire � � Quit ��� ���

4: Division signee 43

Solution 3. ▲ pMultiplicande Produit

0 0010 00000011

1 0010 001000110010 00010001

2 0010 001100010010 00011000

3 0010 000110000010 00001100

4 0010 000011000010 00000110

Page 43 of 47 Sommaire � � Quit ��� ���

4: Division signee 44

Solution 4. ▲ pMultiplicande Produit

0 0010 00001101 01 0010 111011010

0010 11110110 12 0010 000101101

0010 00001011 03 0010 111010110

0010 11110101 14 0010 111101011

0010 111110101

Page 44 of 47 Sommaire � � Quit ��� ���

4: Division signee 45

Solution 5. ▲ pQuotient Diviseur Reste

0 0000 00100000 000001110000 00100000 11100111

1 0000 00100000 000001110000 00010000 000001110000 00010000 11110111

2 0000 00010000 000001110000 00001000 000001110000 00001000 11111111

3 0000 00001000 000001110000 00000100 000001110000 00000100 00000011

4 0001 00000100 000000110001 00000010 000000110001 00000010 00000001

5 0011 00000010 000000010011 00000001 00000001

Page 45 of 47 Sommaire � � Quit ��� ���

4: Division signee 46

Solution 6. ▲ pQuotient Diviseur Reste

0 0000 0010 000001110000 0010 00001110

1 0000 0010 111011100000 0010 000011100000 0010 00011100

2 0000 0010 111111000000 0010 000111000000 0010 00111000

3 0000 0010 000110000000 0010 000110000001 0010 00110000

4 0001 0010 000100000011 0010 00010000

Page 46 of 47 Sommaire � � Quit ��� ���

4: Division signee 47

Solution 7. ▲ pDiviseur Reste

0 0010 000001110010 00001110

1 0010 111011100010 00011100

2 0010 111111000010 00111000

3 0010 000110000010 00110001

4 0010 000100010010 001000110010 00010011

Page 47 of 47 Sommaire � � Quit ��� ���