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 ��� ���