500 likes | 589 Views
Multimedia Extensions. Τριβυζάς Μάριος grad0551@di.uoa.gr Χαραλάμπους Παναγιώτης grad0568@di.uoa.gr. Περιεχόμενα. Εισαγωγή/Αναγκαιότητα MMX SSE/SSE2 3DNow! Συγκρίσεις Άλλες τεχνολογίες ME. Εισαγωγή. Εφαρμογές Πολυμέσων : Graphics Video Image Processing
E N D
Multimedia Extensions Τριβυζάς Μάριος grad0551@di.uoa.gr Χαραλάμπους Παναγιώτης grad0568@di.uoa.gr
Περιεχόμενα • Εισαγωγή/Αναγκαιότητα • MMX • SSE/SSE2 • 3DNow! • Συγκρίσεις • Άλλες τεχνολογίες ME
Εισαγωγή • Εφαρμογές Πολυμέσων : • Graphics • Video • Image Processing • Audio processing • Speech Recognition • Games • Music Synthesis • Video Conferencing • Οι «απλές» αρχιτεκτονικές ISA δεν χρησιμοποιούν αποδοτικά τον επεξεργαστή στις εφαρμογές αυτές.
Εισαγωγή • Οι εφαρμογές Πολυμέσων έχουν σε χαμηλό επίπεδο έχουν πολλά κοινά χαρακτηριστικά: • «Σταθεροί» υπολογισμοί σε πολλά δεδομένα • Χρήση μικρών ακέραιων αριθμών (π.χ. 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]
Εισαγωγή • Υπολογιστικά Μοντέλα (κατά M. Flynn) : • SISD (Single Instruction Single Data) • SIMD (Single Instruction Multiple Data) Μul. Exts. • MISD (Multiple Instruction Single Data) • MIMD (Multiple Instruction Multiple Data)
Εισαγωγή • Ανάγκη για επεκτάσεις των ISA’ s ειδικά για εφαρμογές Πολυμέσων. • Οι επεκτάσεις θα πρέπει : • Να είναι γενικές, να υλοποιούν δηλ. βασικά χαρακτηριστικά αλγορίθμων των πιο πάνω εφαρμογών και όχι ολόκληρους αλγόριθμους • Να είναι πλήρως συμβατές με τα υπάρχοντα Λειτουργικά Συστήματα (backward compatibility) • Να διατηρούν την τεχνολογία απλή, για εύκολη επεκτασιμότητα στο μέλλον
MMX • Πρόγονος : i860 (Περιελάμβανε SIMD εντολές) • Πρώτη ουσιαστική προσθήκη στο IS μετά την αρχιτεκτονική Intel386 • Χαρακτηριστικά : • Τεχνολογία • Απλή (scaling, μικρό Die) • Γενική • SIMD (Single Instruction Multiple Data). • Εισάγει 57 νέες εντολές • Χρησιμοποιεί 8x64 bit registers • Εισάγει 4 νέους τύπους δεδομένων • Θεωρητικά : 8x παραλληλία. • Πρακτικά : 1.5 – 4x παραλληλία
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 αριθμός
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 εντολών.
MMX – Instruction Set • Εντολές : • Αριθμητικές • Συγκρίσεων • Λογικές • Ολίσθησης • Μεταφοράς Δεδομένων • Διαχείρισης Κατάστασης
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
MMX – Αριθμητικές Εντολές • Αριθμητική : • Wrap-around • Overflow : κάνε wrap στο 0 • Underflow: κάνε wrap στο ΜΑΧΙΝΤ • Saturation • Overflow : μείνε στο MAXINT • Underflow: μείνε στο MININT • π.χ. Color wraparound • Δεν υπάρχει state για τον έλεγχο αν έγινε saturate (backward compatibility) • Ο έλεγχος μπορεί να γίνει με έλεγχο της τιμής που παίρνουμε και της ΜΙΝΙΝΤ και ΜΑΧΙΝΤ τιμής Πιθανόν έχουμε saturation
MMX – Αριθμητικές Εντολές • Πρόσθεση • PADDB, PADDW, PADDD • PADDSB, PADDSW • PADDUSB, PADDUSW
MMX – Αριθμητικές Εντολές • Αφαίρεση • PSUBB, PSUBW, PSUBD • PSUBSB, PSUBSW • PSUBUSB, PSUBUSW
MMX – Αριθμητικές Εντολές • Πολλαπλασιασμός • PMULHW (Packed Multiply High) • PMULLW (Packed Multiply Low)
MMX – Αριθμητικές Εντολές • Πολλαπλασιασμός και Πρόσθεση • PMADDWD (Packed Multiply and Add) • Πολλαπλασιασμός αντίστοιχων λέξεων. • Άθροισμα 2 higher ordered words στο high doubleword • Άθροισμα 2 lower ordered words στο lower doubleword
MMX – Εντολές Συγκρίσεων • Ισότητα • PCMPEQB, PCMPEQW, PCMPEQD • Αν τα αντίστοιχα δεδομέναείναι ίσα τότε τα αντίστοιχα δεδομένα στον καταχωρητή προορισμού τίθενται όλα σε 1, αλλιώς όλα σε 0.
MMX – Εντολές Συγκρίσεων • Μεγαλύτερο ίσο • PCMPGTB, PCMPGTW, PCMPGTD • Αν η ανισότητα ισχύει τότε τα αντίστοιχα δεδομένα στον καταχωρητή προορισμού τίθενται όλα σε 1, αλλιώς όλα σε 0.
MMX – Εντολές Μετατροπής • Pack Εντολές • PACKSSWB, PACKSSDW (Pack With Signed Saturation) • PACKUSWB (Pack With Unsigned Saturation) • Pack και Saturate τα δεδομένα σε μικρότερου τύπου.
MMX – Εντολές Μετατροπής • π.χ. PACKSSDWmmreg1, mmreg2/mem64
MMX – Εντολές Μετατροπής • Unpack Εντολές (High) • PUNPCKHBW, PUNPCKHWD, PUNPCKHDQ (Unpack High Packed Data) • Unpack και Interleave τα high order δεδομένα των registers . • π.χ. Zero extension του destination operand.
MMX – Εντολές Μετατροπής • Unpack Εντολές (Low) • PUNPCKLBW, PUNPCKLWD, PUNPCKLDQ (Unpack Low Packed Data) • Unpack και Interleave τα low order δεδομένα των registers .
MMX – Λογικές Εντολές • Bitwise Logical • AND(PAND) • AND NOT(PANDN) • OR (POR) • Exclusive OR (PXOR)
ΜΜΧ – Εντολές Ολίσθησης • Packed Shift Right/Left Logical: • PSRLW • PSRLD • PSRLQ
ΜΜΧ – Εντολές Ολίσθησης • Packed Shift Right Arithmetic: • PSRAW • PSRAD
MMX– Μεταφορά Δεδομένων • Μεταφορά 32bits από source to destination: • MOVD
MMX– Μεταφορά Δεδομένων • Μεταφορά 64bits από source to destination: • MOVQ
ΜΜΧ – Διαχείριση Κατάστασης • Ηεντολή EMMS • Χρησιμοποιείται για να«καθαρίσουμε» την κατάσταση λειτουργίας MMX • Εκτελείται κάθε φορά που είμαστε σε κατάσταση λειτουργίας MMX και θέλουμε να αλλάξουμε κατάσταση για να εκτελέσουμε floating point εντολές. • Αν δεν εκτελεστεί προκύπτουν προβλήματα κατά την εκτέλεση fp εντολών όπως stack overflow κτλ.
MMX –Παραδείγματα • Εύρεση απόλυτης διαφοράς διανυσμάτων a, b, c: διανύσματα if (a > b) then c = a – b c = (a – b) OR (b – a) else c = b – a aMM0, bMM1 MOVQ MM2, MM0 ‘κάνουμε ένα αντίγραφο του MM0 PSUBUSB MM0, MM1‘υπολογίζουμε το a-b PSUBUSB MM1, MM2 ‘υπολογίζουμε το b-a POR MM0, MM1‘εφαρμόζουμε μεταξύ τους OR O MM0 περιέχει το αποτέλεσμα που επιθυμούμε για το c.
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
MMX – Παραδείγματα • Εκτέλεση κάτω από συνθήκη If True then Ra := Rb Ra = (Rb AND Rx) OR (Rc ANDNOT Rx) else Ra := Rc Ο Rx περιέχει άσους αν η συνθήκη είναι αληθής και μηδενικά αν η συνθήκη είναι ψευδής. Πιο γρήγορη εκτέλεση διότι: • Οι εντολές branch εισάγουν καθυστέρηση (λανθασμένη πρόβλεψη) • Πρέπει να κάνουμε μετατροπή από packed σε scalar τύπο δεδομένων
MMX – Παραδείγματα • Επικάλυψη εικόνων (Chroma Keying σε Image Overlay) PCMPΕQ PANDN PAND POR
MMX – Παραδείγματα • Εσωτερικό γινόμενο διανυσμάτων • 2 MOVQ • 2 PMADDWD Πολύ πιο γρήγορα απ’ ‘οτι χωρίς MMX • 2 PADD
Νέες Ανάγκες – SSE • Εφαρμογές • 3D εφαρμογές που χρειάζονται: • Γεωμετρικούς μετασχηματισμούς • Εξομοίωση φυσικών μοντέλων • Φωτισμό • Streaming εφαρμογές • Audio processing • Speech recognition • Wavetable synthesis • Video MPEG processing • Όλα τα παραπάνω απαιτούν FP υπολογισμούς • Το ΜΜΧ δεν μπορεί να ανταπεξέλθει στις νέες ανάγκες SSE
Streaming SIMD Extensions – SSE • Θέματα υλοποίησης • Απαίτηση για υπολογισμούς σε τουλάχιστον 4x32bit δεδομένα fp παράλληλα • 2 επιλογές υλοποίησης • Διπλασιασμός του clock rate σε 64bit hardware • Χρήση hardware 128bit ή παραπάνω (πχ. 256bits) • Ο πρώτος τρόπος οδηγεί σε αυξημένη πολυπλοκότητα • Επομένως χρησιμοποιήθηκε η δεύτερη επιλογή με προσθήκη 128bit hardware • Hardware >128bit έχει πολύ χαμηλή απόδοση/κόστος
SSE – Χαρακτηριστικά • Προσφέρει σημαντική επιτάχυνση streaming και multimedia εφαρμογών που απαιτούν FP υπολογισμούς • Δεν είναι συμβατό προς τα πίσω • Οι προγραμματιστές αναλαμβάνουν να ελέγξουν αν υποστηρίζεται SSE από τον επεξεργαστή, ώστε να εκτελεστεί ο αντίστοιχος κώδικας.
SSE – Intel • 12 integer εντολές που επεκτείνουν την ΜΜΧ τεχνολογία • 8 νέοι floating point καταχωρητές των 128bit (XMM0-7) (δε χρειαζόμαστε reset state εντολή) • 1 καταχωρητής ελέγχου κατάστασης MXCSR • 50 νέες εντολές για packed fp υπολογισμούς • 8 νέες εντολές “ελέγχου” της cache μνήμης, streaming εντολές και prefetch
SSE – Integer Εντολές • Μέσος όρος • PAVGB • PAVGW • Υπολογισμός μέγιστου, ελάχιστου • PMAXSW (PMINSW) • PMAXUB (PMINUB) • Πολλαπλασιασμός και αποκοπή των low-order bytes • PMULHUW • Άθροισμα απόλυτων διαφορών • PSADBW
SSE – FP Εντολές • Packed • Scalar
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
SSE – Εντολές διαχείρισης μνήμης • Streaming stores στη μνήμη • Prefetch δεδομένων από τη μνήμη • Διαχείριση δεδομένων στην cache
SSE2 – Επιστημονικοί υπολογισμοί • Νέες εφαρμογές απαιτούν μεγαλύτερη ακρίβεια σε fp υπολογισμούς • MPEG-layer3 • MPEG-2 (DVD video) • JPEG • Επέκταση του SSE SSE2 ώστε να γίνονται πράξεις σε 2x64bits fp παράλληλα
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 κτλ.)
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
Βιβλιογραφία • 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)
Βιβλιογραφία • 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.