1 / 50

Multimedia Extensions

Multimedia Extensions. Τριβυζάς Μάριος grad0551@di.uoa.gr Χαραλάμπους Παναγιώτης grad0568@di.uoa.gr. Περιεχόμενα. Εισαγωγή/Αναγκαιότητα MMX SSE/SSE2 3DNow! Συγκρίσεις Άλλες τεχνολογίες ME. Εισαγωγή. Εφαρμογές Πολυμέσων : Graphics Video Image Processing

carney
Télécharger la présentation

Multimedia Extensions

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. Multimedia Extensions Τριβυζάς Μάριος grad0551@di.uoa.gr Χαραλάμπους Παναγιώτης grad0568@di.uoa.gr

  2. Περιεχόμενα • Εισαγωγή/Αναγκαιότητα • MMX • SSE/SSE2 • 3DNow! • Συγκρίσεις • Άλλες τεχνολογίες ME

  3. Εισαγωγή • Εφαρμογές Πολυμέσων : • Graphics • Video • Image Processing • Audio processing • Speech Recognition • Games • Music Synthesis • Video Conferencing • Οι «απλές» αρχιτεκτονικές ISA δεν χρησιμοποιούν αποδοτικά τον επεξεργαστή στις εφαρμογές αυτές.

  4. Εισαγωγή • Οι εφαρμογές Πολυμέσων έχουν σε χαμηλό επίπεδο έχουν πολλά κοινά χαρακτηριστικά: • «Σταθεροί» υπολογισμοί σε πολλά δεδομένα • Χρήση μικρών ακέραιων αριθμών (π.χ. 8 bit pixels,16 bit audio samples) • Συχνή χρήση πολλαπλασιασμού και συσσώρευσης (multiply and accumulation) • Μικροί βρόγχοι – πολλές επαναλήψεις ίδιων εντολών • Συχνά και επαναλαμβανόμενα Memory access patterns • Υπολογιστικά ακριβοί αλγόριθμοι • Διαδικασίες που μπορούν να γίνουν και παράλληλα π.χ. for (i=0;i<numOfPixels;++i) out[i] = input_a[i] * input_b[i]

  5. Εισαγωγή • Υπολογιστικά Μοντέλα (κατά M. Flynn) : • SISD (Single Instruction Single Data) • SIMD (Single Instruction Multiple Data) Μul. Exts. • MISD (Multiple Instruction Single Data) • MIMD (Multiple Instruction Multiple Data)

  6. Εισαγωγή • Ανάγκη για επεκτάσεις των ISA’ s ειδικά για εφαρμογές Πολυμέσων. • Οι επεκτάσεις θα πρέπει : • Να είναι γενικές, να υλοποιούν δηλ. βασικά χαρακτηριστικά αλγορίθμων των πιο πάνω εφαρμογών και όχι ολόκληρους αλγόριθμους • Να είναι πλήρως συμβατές με τα υπάρχοντα Λειτουργικά Συστήματα (backward compatibility) • Να διατηρούν την τεχνολογία απλή, για εύκολη επεκτασιμότητα στο μέλλον

  7. MMX • Πρόγονος : i860 (Περιελάμβανε SIMD εντολές) • Πρώτη ουσιαστική προσθήκη στο IS μετά την αρχιτεκτονική Intel386 • Χαρακτηριστικά : • Τεχνολογία • Απλή (scaling, μικρό Die) • Γενική • SIMD (Single Instruction Multiple Data). • Εισάγει 57 νέες εντολές • Χρησιμοποιεί 8x64 bit registers • Εισάγει 4 νέους τύπους δεδομένων • Θεωρητικά : 8x παραλληλία. • Πρακτικά : 1.5 – 4x παραλληλία

  8. MMX • Τύποι Δεδομένων : • Packed Byte : 8x1byte packed σε 64-bits • Packed Word : 4x16-bit words packed σε 64-bits • Packed Double Word : 2x32-bit double words packed σε 64-bits • Quadword : 64-bit αριθμός

  9. MMX • Registers : • Δεν δημιουργούνται νέοι registers (οι 8 MMX registers ταυτοποιούνται με τους 8 υπάρχοντες floating point registers). • Με αυτό τον τρόπο υπάρχει πλήρης συμβατότητα με υπάρχοντα Λειτουργικά Συστήματα • Σε κάθε εκτέλεση MMX εντολής : • όλα τα floating point tag bits  0 • Top of stack  0 • fp exponential part bits  1 • Δεν μπορεί να γίνει interleave MMX και floating point εντολών.

  10. MMX – Intel Pentium 4

  11. MMX – AMD Athlon

  12. MMX – Instruction Set • Εντολές : • Αριθμητικές • Συγκρίσεων • Λογικές • Ολίσθησης • Μεταφοράς Δεδομένων • Διαχείρισης Κατάστασης

  13. MMX – Instruction Set • Μορφή Εντολών : • Prefix : P για Packed • Infix : Λειτουργία Εντολήςπ.χ. ADD • Suffix : • U/S : Unsigned/Signed • US, SS : Unsigned/Signed Saturation • B,W,D,Q : Οι 4 νέοι τύποι των MMX εντολών. • π.χ. PADDSD : Packed Add With Saturation OnDouble Word • Σύνταξη : • INSTRUCTION mmreg1, mmreg2/mem64 • mmreg1 = mmreg1 INSTRUCTION mmreg2/mem64 • Εξαίρεση : • EMMS, MOVD/MOVQ, SHIFT εντολές • MOVD mmreg1, mreg32/mem32 ‘ mreg32 = integer • MOVD mreg32/mem32, mmreg1 • MOVQ mem64, mmreg1 • PSRLW mmreg1, imm8

  14. MMX – Αριθμητικές Εντολές • Αριθμητική : • Wrap-around • Overflow : κάνε wrap στο 0 • Underflow: κάνε wrap στο ΜΑΧΙΝΤ • Saturation • Overflow : μείνε στο MAXINT • Underflow: μείνε στο MININT • π.χ. Color wraparound • Δεν υπάρχει state για τον έλεγχο αν έγινε saturate (backward compatibility) • Ο έλεγχος μπορεί να γίνει με έλεγχο της τιμής που παίρνουμε και της ΜΙΝΙΝΤ και ΜΑΧΙΝΤ τιμής  Πιθανόν έχουμε saturation

  15. MMX – Αριθμητικές Εντολές • Πρόσθεση • PADDB, PADDW, PADDD • PADDSB, PADDSW • PADDUSB, PADDUSW

  16. MMX – Αριθμητικές Εντολές • Αφαίρεση • PSUBB, PSUBW, PSUBD • PSUBSB, PSUBSW • PSUBUSB, PSUBUSW

  17. MMX – Αριθμητικές Εντολές • Πολλαπλασιασμός • PMULHW (Packed Multiply High) • PMULLW (Packed Multiply Low)

  18. MMX – Αριθμητικές Εντολές • Πολλαπλασιασμός και Πρόσθεση • PMADDWD (Packed Multiply and Add) • Πολλαπλασιασμός αντίστοιχων λέξεων. • Άθροισμα 2 higher ordered words στο high doubleword • Άθροισμα 2 lower ordered words στο lower doubleword

  19. MMX – Εντολές Συγκρίσεων • Ισότητα • PCMPEQB, PCMPEQW, PCMPEQD • Αν τα αντίστοιχα δεδομέναείναι ίσα τότε τα αντίστοιχα δεδομένα στον καταχωρητή προορισμού τίθενται όλα σε 1, αλλιώς όλα σε 0.

  20. MMX – Εντολές Συγκρίσεων • Μεγαλύτερο ίσο • PCMPGTB, PCMPGTW, PCMPGTD • Αν η ανισότητα ισχύει τότε τα αντίστοιχα δεδομένα στον καταχωρητή προορισμού τίθενται όλα σε 1, αλλιώς όλα σε 0.

  21. MMX – Εντολές Μετατροπής • Pack Εντολές • PACKSSWB, PACKSSDW (Pack With Signed Saturation) • PACKUSWB (Pack With Unsigned Saturation) • Pack και Saturate τα δεδομένα σε μικρότερου τύπου.

  22. MMX – Εντολές Μετατροπής • π.χ. PACKSSDWmmreg1, mmreg2/mem64

  23. MMX – Εντολές Μετατροπής • Unpack Εντολές (High) • PUNPCKHBW, PUNPCKHWD, PUNPCKHDQ (Unpack High Packed Data) • Unpack και Interleave τα high order δεδομένα των registers . • π.χ. Zero extension του destination operand.

  24. MMX – Εντολές Μετατροπής • Unpack Εντολές (Low) • PUNPCKLBW, PUNPCKLWD, PUNPCKLDQ (Unpack Low Packed Data) • Unpack και Interleave τα low order δεδομένα των registers .

  25. MMX – Λογικές Εντολές • Bitwise Logical • AND(PAND) • AND NOT(PANDN) • OR (POR) • Exclusive OR (PXOR)

  26. ΜΜΧ – Εντολές Ολίσθησης • Packed Shift Right/Left Logical: • PSRLW • PSRLD • PSRLQ

  27. ΜΜΧ – Εντολές Ολίσθησης • Packed Shift Right Arithmetic: • PSRAW • PSRAD

  28. MMX– Μεταφορά Δεδομένων • Μεταφορά 32bits από source to destination: • MOVD

  29. MMX– Μεταφορά Δεδομένων • Μεταφορά 64bits από source to destination: • MOVQ

  30. ΜΜΧ – Διαχείριση Κατάστασης • Ηεντολή EMMS • Χρησιμοποιείται για να«καθαρίσουμε» την κατάσταση λειτουργίας MMX • Εκτελείται κάθε φορά που είμαστε σε κατάσταση λειτουργίας MMX και θέλουμε να αλλάξουμε κατάσταση για να εκτελέσουμε floating point εντολές. • Αν δεν εκτελεστεί προκύπτουν προβλήματα κατά την εκτέλεση fp εντολών όπως stack overflow κτλ.

  31. MMX –Παραδείγματα • Εύρεση απόλυτης διαφοράς διανυσμάτων a, b, c: διανύσματα if (a > b)  then c = a – b  c = (a – b) OR (b – a)   else c = b – a aMM0, bMM1 MOVQ MM2, MM0 ‘κάνουμε ένα αντίγραφο του MM0 PSUBUSB MM0, MM1‘υπολογίζουμε το a-b PSUBUSB MM1, MM2 ‘υπολογίζουμε το b-a POR MM0, MM1‘εφαρμόζουμε μεταξύ τους OR O MM0 περιέχει το αποτέλεσμα που επιθυμούμε για το c.

  32. MMX –Παραδείγματα • Πολλαπλασιασμός μιγαδικών z1 = Re1 + Im1*i, z2 = Re2 + Im2*i z1*z2 = (Re1*Re2 – Im1*Im2) + (Re1*Im2 + Re2*Im1)*i Re1, Re2, Im1, Im2 : 16bit • oz2 θεωρείται σταθερός και τον αποθηκεύουμε με τημορφή: [Re2 –Im2 Im2 Re2 ] στον ΜΜ1 • ο z1βρίσκεται στο Low DW του ΜΜ0 [ ... ... Re1 Im1] PUNPCKLDQ MM0, MM0 ‘μετατρέπουμε τον z1 στη μορφή [Re1 Im1 Re1 Im1] PMADDWD MM0, MM1 ‘εκτελούμε τον πολλ/σμό των μιγαδικών O MM0 περιέχει το z1*z2

  33. MMX – Παραδείγματα • Εκτέλεση κάτω από συνθήκη If True then Ra := Rb  Ra = (Rb AND Rx) OR (Rc ANDNOT Rx) else Ra := Rc Ο Rx περιέχει άσους αν η συνθήκη είναι αληθής και μηδενικά αν η συνθήκη είναι ψευδής. Πιο γρήγορη εκτέλεση διότι: • Οι εντολές branch εισάγουν καθυστέρηση (λανθασμένη πρόβλεψη) • Πρέπει να κάνουμε μετατροπή από packed σε scalar τύπο δεδομένων

  34. MMX – Παραδείγματα • Επικάλυψη εικόνων (Chroma Keying σε Image Overlay) PCMPΕQ PANDN PAND POR

  35. MMX – Παραδείγματα • Εσωτερικό γινόμενο διανυσμάτων • 2 MOVQ • 2 PMADDWD  Πολύ πιο γρήγορα απ’ ‘οτι χωρίς MMX • 2 PADD

  36. Νέες Ανάγκες – SSE • Εφαρμογές • 3D εφαρμογές που χρειάζονται: • Γεωμετρικούς μετασχηματισμούς • Εξομοίωση φυσικών μοντέλων • Φωτισμό • Streaming εφαρμογές • Audio processing • Speech recognition • Wavetable synthesis • Video MPEG processing • Όλα τα παραπάνω απαιτούν FP υπολογισμούς • Το ΜΜΧ δεν μπορεί να ανταπεξέλθει στις νέες ανάγκες  SSE

  37. Streaming SIMD Extensions – SSE • Θέματα υλοποίησης • Απαίτηση για υπολογισμούς σε τουλάχιστον 4x32bit δεδομένα fp παράλληλα • 2 επιλογές υλοποίησης • Διπλασιασμός του clock rate σε 64bit hardware • Χρήση hardware 128bit ή παραπάνω (πχ. 256bits) • Ο πρώτος τρόπος οδηγεί σε αυξημένη πολυπλοκότητα • Επομένως χρησιμοποιήθηκε η δεύτερη επιλογή με προσθήκη 128bit hardware • Hardware >128bit έχει πολύ χαμηλή απόδοση/κόστος

  38. SSE – Χαρακτηριστικά • Προσφέρει σημαντική επιτάχυνση streaming και multimedia εφαρμογών που απαιτούν FP υπολογισμούς • Δεν είναι συμβατό προς τα πίσω • Οι προγραμματιστές αναλαμβάνουν να ελέγξουν αν υποστηρίζεται SSE από τον επεξεργαστή, ώστε να εκτελεστεί ο αντίστοιχος κώδικας.

  39. SSE – Intel • 12 integer εντολές που επεκτείνουν την ΜΜΧ τεχνολογία • 8 νέοι floating point καταχωρητές των 128bit (XMM0-7) (δε χρειαζόμαστε reset state εντολή) • 1 καταχωρητής ελέγχου κατάστασης MXCSR • 50 νέες εντολές για packed fp υπολογισμούς • 8 νέες εντολές “ελέγχου” της cache μνήμης, streaming εντολές και prefetch

  40. SSE – Integer Εντολές • Μέσος όρος • PAVGB • PAVGW • Υπολογισμός μέγιστου, ελάχιστου • PMAXSW (PMINSW) • PMAXUB (PMINUB) • Πολλαπλασιασμός και αποκοπή των low-order bytes • PMULHUW  • Άθροισμα απόλυτων διαφορών • PSADBW

  41. SSE – FP Εντολές • Packed • Scalar

  42. SSE – FP Εντολές • Μετακίνηση δεδομένων • MOV 4x32bits, 64bits (Low ή High), 128bits • Αριθμητικές • ADDPS SUBPS ADDSS SUBSS • MULPS DIVPS  MULSS DIVSS • MAXPS MINPS MAXSS MINSS • SQRTPS SQRTSS • Λογικές • AND, ANDN, OR, XOR Packed και Scalar • Σύγκρισης • GEQUAL GREAT • LEQUAL LESS EQUAL • Διαχείρισης κατάστασης • LDMXCSR FXRSTOR • STMXCSR FXSAVE

  43. SSE – Εντολές διαχείρισης μνήμης • Streaming stores στη μνήμη • Prefetch δεδομένων από τη μνήμη • Διαχείριση δεδομένων στην cache

  44. SSE2 – Επιστημονικοί υπολογισμοί • Νέες εφαρμογές απαιτούν μεγαλύτερη ακρίβεια σε fp υπολογισμούς • MPEG-layer3 • MPEG-2 (DVD video) • JPEG • Επέκταση του SSE  SSE2 ώστε να γίνονται πράξεις σε 2x64bits fp παράλληλα

  45. AMD – 3dNow! • Οι επεξεργαστές της AMD ενσωμάτωσαν αρχικά MMX τεχνολογία • Ωστόσο οι AMD CPUs υστερούσαν σε σχέση με τον ανταγωνισμό (Intel) όσον αφορά fp υπολογισμούς • Γι’ αυτό  3dNow! • 12 νέες integer εντολές (επεκτάσεις του MMX) • 64bit registers (2x32bit float αριθμοί) • Floating point εντολές • 21 εντολές για 3D graphics • 7 εντολές μετακίνησης δεδομένων • 5 DSP εντολές (ADSL, MP3, Dolby Digital, MPEG-2 κτλ.)

  46. Επιτάχυνση με MMX

  47. ME – Άλλες τεχνολογίες • Sun UltraSPARC (VIS) • Αξιοποίηση του 64bit hardware των SPARC • Λειτουργικές μονάδες: • Floating point divide/square root • Floating point addition/subtraction/ absolute value/ negative/ multiplication • Graphics addition, multiply • PowerPC Altivec • 128 bit hardware • 32 νέοι registers 128bit • Πάνω από 160 εντολές • Υπολογισμοί παράλληλα σε : • 16x8, 8x16, 4x32 bit integer • 4x32, 2x64 bit floating point

  48. Συγκριτικά

  49. Βιβλιογραφία • WEB: • www.intel.com • www.amd.com • www.tomshardware.com • www.tommesani.com • Manuals: • AMD Athlon™ Processor - x86 Code Optimization Guide • IA – 32 Intel Architecture Software Developer’s Manual – Volumes 1-3 • AMD-K6 Processor Multimedia Extensions (MMX)

  50. Βιβλιογραφία • Papers: • AMD Athlon™ Processor Architecture – White Paper • The Internet Streaming SIMD Extensions - Shreekant (Ticky) Thakkar, Microprocessor Products Group, Intel Corp. Tom Huff, Microprocessor Products Group, Intel Corp. • MMX™ Technology Architecture - OverviewMillind Mittal, MAP Group, Santa Clara, Intel Corp.Alex Peleg, IDC Architecture Group, Israel, Intel Corp.Uri Weiser, IDC Architecture Group, Israel, Intel Corp.

More Related