1 / 41

Opérations sur les données

Opérations sur les données. Laurent JEANPIERRE <jeanpl@iutc3.unicaen.fr> D’après le cours de Pascal FOUGERAY IUT de CAEN – Campus 3. Contenu du cours. Unité Arithmétique et Logique (UAL/ ALU ) Opérations arithmétiques Opérations binaires Unité Flottante ( FPU ) Opérations de transfert

hiroshi
Download Presentation

Opérations sur les données

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Opérations sur les données Laurent JEANPIERRE <jeanpl@iutc3.unicaen.fr> D’après le cours de Pascal FOUGERAY IUT de CAEN – Campus 3 Département Informatique

  2. Contenu du cours • Unité Arithmétique et Logique (UAL/ALU) • Opérations arithmétiques • Opérations binaires • Unité Flottante (FPU) • Opérations de transfert • Opérations arithmétiques • Opérations de comparaison • Opérations de trigonométrie Département Informatique

  3. L’UAL : Introduction • Unité Arithmétique et Logique (ALU) • Se charge des calculs • Utilise les registres • Généraux : EAX,EBX,ECX,EDX,ESI,EDI • Pointeurs : ESP, EBP • Existe en 2 exemplaires • Depuis le 80486 • Permet les calculs en parallèle Département Informatique

  4. Contenu du cours • Unité Arithmétique et Logique (UAL/ALU) • Opérations arithmétiques • Opérations binaires • Unité Flottante (FPU) • Opérations de transfert • Opérations arithmétiques • Opérations de comparaison • Opérations de trigonométrie Département Informatique

  5. UAL : Arithmétique • Additions : • add s,d : d  d + s • adc s,d : d  d + s + C (bit de retenue) • inc d : d  d + 1 • Soustractions : • sub s,d : d  d – s • sbb s,d : d  d – s – C (bit de retenue) • dec d : d  d – 1 • Negation : • neg d : d  -d Département Informatique

  6. UAL : Arithmétique (2) • Multiplications non signées : • mulb v : AX  AL * v • mulw v : EAX  AX * v • mull v : EDX:EAX  EAX * v • Multiplications signées : • imulb v : AX  AL * v • imulw v : EAX  AX * v • imull v : EDX:EAX  EAX * v Département Informatique

  7. UAL : Arithmétique (3) • Divisions non signées : • divb v : AL  AX / v, AH = Reste • divw v : AX  EAX / v, DX = Reste • divl v : EAX  EDX:EAX / v, EDX = Reste • Divisions signées : • idivb v : AL  AX / v, AH = Reste • idivw v : AX  EAX / v, DX = Reste • idivl v : EAX  EDX:EAX / v, EDX = Reste • Attention : Diviser par 0 déclenche l’interruption logicielle n° 0 (division /0) Département Informatique

  8. 0 C 7 6 5 4 3 2 1 0 0 7 6 5 4 3 2 1 0 C UAL : Arithmétique (4) • Décalages non signés : • shl v,1 : v  v * 2 • shl v,$n : v  v * 2n, n sur 8 bits • shl v, %CL : v  v * 2CL • shr v,1 : v  v / 2 • shr v,$n : v  v / 2n, n sur 8 bits • shr v, %CL : v  v / 2CL Département Informatique

  9. 0 C 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 C UAL : Arithmétique (5) • Décalages signés : • sal v,1 : v  v * 2 • sal v,$n : v  v * 2n, n sur 8 bits • sal v, %CL : v  v * 2CL • sar v,1 : v  v / 2 • sar v,$n : v  v / 2n, n sur 8 bits • sar v, %CL : v  v / 2CL Département Informatique

  10. Contenu du cours • Unité Arithmétique et Logique (UAL/ALU) • Opérations arithmétiques • Opérations binaires • Unité Flottante (FPU) • Opérations de transfert • Opérations arithmétiques • Opérations de comparaison • Opérations de trigonométrie Département Informatique

  11. C 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 C UAL : Opérations binaires • Rotations : • rol : • ror : Département Informatique

  12. C 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 C UAL : Opérations binaires (2) • Rotations à travers la retenue : • rcl : • rcr : Département Informatique

  13. UAL : Opérations binaires (3) • Opérations bit à bit • and s,d : d  d ET s • andb $0b00001000,%al # isole le bit 3 de AL • or s,d : d  d OU s • orw $0x0F00,%bx# positionne les bits 8-11 • xor s,d : d  d OU_EXCLUSIF s • xorb $0b1111, %al# inverse les bits 0-3 • not d : d  NON d • notl %ecx# inverse chaque bit de ECX Département Informatique

  14. Contenu du cours • Unité Arithmétique et Logique (UAL/ALU) • Opérations arithmétiques • Opérations binaires • Unité Flottante (FPU) • Opérations de transfert • Opérations arithmétiques • Opérations de comparaison • Opérations de trigonométrie Département Informatique

  15. L’unité flottante : introduction • Unité de calcul flottant (FPU) • Accélère les calculs en virgule flottante • Dispose de : • Ses propres instructions • Ses propres registres • Sa propre ligne d’interruption (matérielle) • Son propre séquenceur (exécution // processeur) • Existe en deux exemplaires • Depuis le Pentium Pro •  Calculs parallèles Département Informatique

  16. FPU : Registres • 8 registres de travail • st ou st(0), st(1)..st(7) • Sur 80 bits, avec 64 bits de mantisse • Organisés en pile : dernière valeur lue = st • Registre d’état (16 bits) • Registre de contrôle (16 bits) • Registres à usage interne • Tag Word (16 bits) • Instruction/Operand Pointer (2x 48 bits) Département Informatique

  17. FPU : Données recevables Lors des échanges avec le processeur : Département Informatique

  18. FPU : Réels spéciaux • Normalement 1 réel = • Signe : 1 bit • Exposant : 15 bits, biaisé (+32767) • Mantisse normalisée:64 bits (1,xxxx…xxxx) • Zero = 0/1 0…0 0…0 : +0 ou -0 • Infini = 0/1 1…1 10…0 : +∞ ou -∞ • NaN = 0/1 1…1 *…* • Mantisse ≠ 10…0 • Not a Number : une erreur s’est produiteexemple : division par 0 Département Informatique

  19. FPU : Instructions Environ 90 instructions ≠ : • Transfert de données • Lecture/écriture/échange • Opérations arithmétiques • +,-,*,/,exp,log,√, mod, abs • Opérations trigonométriques • sin,cos,tan,atan • Opérations de contrôle • init, nop, save/restore + registres spéciaux Département Informatique

  20. FPU : instructions (2) • Format des instructions : • Lettre « f » • Mnémonique FPU • Taille d’opération (sauf entre registres) • Tailles d’opérations : • S : flottant 32 bits / entier 16 bits • L : flottant 64 bits / entier 32 bits • T : flottant 80 bits • Q : entier 64 bits Département Informatique

  21. Contenu du cours • Unité Arithmétique et Logique (UAL/ALU) • Opérations arithmétiques • Opérations binaires • Unité Flottante (FPU) • Opérations de transfert • Opérations arithmétiques • Opérations de comparaison • Opérations de trigonométrie Département Informatique

  22. FPU : Opérations de transfert • Empiler une valeur : • fld : un réel • fild : un entier • fbld : un BCD • Dépiler une valeur • fstp : un réel • fistp : un entier • fbstp : un BCD Département Informatique

  23. FPU : Opérations de transfert (2) • Lire une valeur (sans dépiler) • fst : un réel • fist : un entier • Échanger deux registres • fxch : échange st(1) et st(0) • fxch st(i) : échange st(i) et st(0) Département Informatique

  24. FPU : Opérations de transfert (3) • Empiler une constante : • fldz : +0 • fld1 : +1 • fldpi : +π • fldl2t : +log2 10 • fldl2e : +log2 e • fldlg2 : +log10 2 • fldle2 : +ln 2 Département Informatique

  25. Contenu du cours • Unité Arithmétique et Logique (UAL/ALU) • Opérations arithmétiques • Opérations binaires • Unité Flottante (FPU) • Opérations de transfert • Opérations arithmétiques • Opérations de comparaison • Opérations de trigonométrie Département Informatique

  26. FPU : Arithmétique • fadd : addition • faddl v1 : st  st + v1 (double, 64 bits) • fadds v1,st(1) : st(1)  st(1) + v1 (float, 32b) • fadd st,st(2) : st  st + st(2) • faddp : addition + dépile ST(0) 3.14159 ST(0) 4.14159 faddp ST(1) 1.0 ST(1) 18.0 ST(2) 18.0 ST(2) ????? Département Informatique

  27. FPU : Arithmétique (2) • fiadd : addition avec un entier • faddl v1 : st  st + v1 (32 bits) • faddq v1,st(1) : st(1)  st(1) + v1 (64 bits) • fsub(p), fsubr(p) : soustraction • fsub v1 : st  st – v1 • fsub st,st(1) : st(1)  st(1) – st • fsubr st,st(1) : st(1)  st – st(1) • fsubp : remplace st,st(1) par st-st(1) • fsubrp : remplace st,st(1) par st(1)-st Département Informatique

  28. FPU : Arithmétique (3) • fisub, fisubr : soustraction avec un entier • fisubs v1 : st  st – v1 (16 bits) • fisubrl v1 : st(1)  v1 (32 bits) – st(1) • fmul, fmulp, fimul : multiplication • fmul st(1),st(2) : st(2)  st(2) * st(1) • fmult v1 : st  st * v1 (réel 80 bits) • fmulp : remplace st,st(1) par st*st(1) • fimulq v2,st(3) : st(3)  st(3) * v2 (entier 64b) Département Informatique

  29. FPU : Arithmétique (4) • fdiv, fdivp, fidiv : division • fdiv st(1),st(2) : st(2)  st(2) / st(1) • fdivl v1 : st  st / v1 (réel 64 bits) • fdivp : remplace st,st(1) par st/st(1) • fidivl v2,st(3) : st(3)  st(3) / v2 (entier 32b) • fdivr, fdivrp, fidivr : division inversée • fdivr st(1),st(2) : st(2)  st(1) / st(2) • fdivrl v1 : st  v1 (réel 64 bits) / st • fdivrp : remplace st,st(1) par st(1)/st(0) • fidivrs v2,st(3) : st(3)  v2(entier 16b) / st(3) Département Informatique

  30. FPU : Arithmétique (5) • fabs : valeur absolue • fabs : st  abs(st) • fchs : opposé • fchs : st  -st • fsqrt : racine carrée • fsqrt : st  √(st) • fprem1 : modulo • fprem1 : st  st % st1 (reste de la division) • frndint : partie entière • frndint : st  [st] Département Informatique

  31. Contenu du cours • Unité Arithmétique et Logique (UAL/ALU) • Opérations arithmétiques • Opérations binaires • Unité Flottante (FPU) • Opérations de transfert • Opérations arithmétiques • Opérations de comparaison • Note sur la précision des calculs Département Informatique

  32. FPU : Comparaisons • fcom : compare et modifie les flags FPU • fcom : compare st et st(1) • fcoml v1 : compare st et v1 (double) • fcom st(3) : compare st et st(3) • fcomp : fcom + dépile • fcomp : compare st et st(1) + dépile st • fcomlp v1 : compare st et v1 (double) + dépile st • fcomp st(3) : compare st et st(3) + dépile st • fcompp : fcom + dépile 2 fois • fcompp : compare st et st(1) + dépile st et st(1) Département Informatique

  33. FPU : Comparaisons (2) • fcomi : compare et modifie les flags CPU • fcomi : compare st et st(1) • fcomi st(3) : compare st et st(3) • fcomip : fcomi + dépile • fcomip : compare st et st(1) + dépile st • fcomip st(3) : compare st et st(3) + dépile st Département Informatique

  34. FPU : Comparaisons (3) • ficom : compare avec un entier et modifie les flags FPU • ficoml v1 : compare st et v1 (double) • ficoms v2 : compare st et v2 (float) • ficomp : ficom + dépile • ficompl v1 : compare st et v1 (double) + dépile st • ficomps v2 : compare st et v2 (float) + dépile st Département Informatique

  35. FPU : Comparaisons (4) • ftst : compare à 0 • ftst : compare st(0) à 0 • D’autres instructions existent… • Principalement sur la gestion des NaNs / ∞ • Ce n’est pas le but de ce cours… • Note finale : • Les flags FPU sont compatibles avec les flags CPU • fstsw %ax : range l’état du FPU dans AX • sahf : copie AH (flags FPU) dans EFLAGS Département Informatique

  36. Contenu du cours • Unité Arithmétique et Logique (UAL/ALU) • Opérations arithmétiques • Opérations binaires • Unité Flottante (FPU) • Opérations de transfert • Opérations arithmétiques • Opérations de comparaison • Opérations de trigonométrie Département Informatique

  37. FPU : Trigonométrie • fsin : remplace st par sin(st) • fcos : remplace st par cos(st) • fsincos : remplace st par sin(st) et empile cos(st) • fldl alpha • fsincos •  st(0)=cos(alpha) •  st(1)=sin(alpha) Département Informatique

  38. FPU : Trigonométrie (2) • fptan : remplace st par tan(st) et empile 1 • fldl alpha • fptan •  st=1.0 et st(1)=tan(alpha) • fpatan : calcule atan(st(1)/st) • fldl y • fldl x • fpatan •  st=angle (x,y) Département Informatique

  39. FPU : calculs avancés • fyl2x : remplace st,st(1) par st(1)*log2(st) • fldl abc • fldl xyz • fyl2x •  st(0) = abc * log2(xyz) • fyl2x1 : idem avec st(1)*log2(1+st) • f2xm1 : remplace st avec (2st - 1) Département Informatique

  40. FPU : calculs avancés (2) • fscale : multiplie par une puissance de 2 • fldl abc • fldl xyz • fscale •  st(0) = xyz * 2[abc] •  st(1) = abc Département Informatique

  41. Conclusion • Un processeur CISC sait faire beaucoup trop de choses… inutiles ou presque. • Rappel : • 20% des opérations • Utilisées dans 80% des cas • Il ne faut pas savoir toutes les instructions par cœur… • … mais savoir les retrouver quand on en a besoin ! Département Informatique

More Related