
372c4bae4acca3e636eda31682bba310.ppt
- Количество слайдов: 50
Multimedia Extensions Τριβυζάς Μάριος grad 0551@di. uoa. gr Χαραλάμπους Παναγιώτης grad 0568@di. uoa. gr 1
Περιεχόμενα 1. 2. 3. 4. 5. 6. Εισαγωγή/Αναγκαιότητα MMX SSE/SSE 2 3 DNow! Συγκρίσεις Άλλες τεχνολογίες ME 2
Εισαγωγή n Εφαρμογές Πολυμέσων : ¨ ¨ ¨ ¨ n Graphics Video Image Processing Audio processing Speech Recognition Games Music Synthesis Video Conferencing Οι «απλές» αρχιτεκτονικές ISA δεν χρησιμοποιούν αποδοτικά τον επεξεργαστή στις εφαρμογές αυτές. 3
Εισαγωγή n Οι εφαρμογές Πολυμέσων έχουν σε χαμηλό επίπεδο έχουν πολλά κοινά χαρακτηριστικά: ¨ ¨ ¨ ¨ «Σταθεροί» υπολογισμοί σε πολλά δεδομένα Χρήση μικρών ακέραιων αριθμών (π. χ. 8 bit pixels, 16 bit audio samples) Συχνή χρήση πολλαπλασιασμού και συσσώρευσης (multiply and accumulation) Μικροί βρόγχοι – πολλές επαναλήψεις ίδιων εντολών Συχνά και επαναλαμβανόμενα Memory access patterns Υπολογιστικά ακριβοί αλγόριθμοι Διαδικασίες που μπορούν να γίνουν και παράλληλα π. χ. for (i=0; i<num. Of. Pixels; ++i) out[i] = input_a[i] * input_b[i] 4
Εισαγωγή n Υπολογιστικά Μοντέλα (κατά M. Flynn) : ¨ SISD (Single Instruction Single Data) ¨ SIMD (Single Instruction Multiple Data) Μul. Exts. ¨ MISD (Multiple Instruction Single Data) ¨ MIMD (Multiple Instruction Multiple Data) 5
Εισαγωγή n n Ανάγκη για επεκτάσεις των ISA’ s ειδικά για εφαρμογές Πολυμέσων. Οι επεκτάσεις θα πρέπει : Να είναι γενικές, να υλοποιούν δηλ. βασικά χαρακτηριστικά αλγορίθμων των πιο πάνω εφαρμογών και όχι ολόκληρους αλγόριθμους ¨ Να είναι πλήρως συμβατές με τα υπάρχοντα Λειτουργικά Συστήματα (backward compatibility) ¨ Να διατηρούν την τεχνολογία απλή, για εύκολη επεκτασιμότητα στο μέλλον ¨ 6
MMX n n n Πρόγονος : i 860 (Περιελάμβανε SIMD εντολές) Πρώτη ουσιαστική προσθήκη στο IS μετά την αρχιτεκτονική Intel 386 Χαρακτηριστικά : ¨ Τεχνολογία n n n ¨ ¨ ¨ Απλή (scaling, μικρό Die) Γενική SIMD (Single Instruction Multiple Data). Εισάγει 57 νέες εντολές Χρησιμοποιεί 8 x 64 bit registers Εισάγει 4 νέους τύπους δεδομένων n n Θεωρητικά : 8 x παραλληλία. Πρακτικά : 1. 5 – 4 x παραλληλία 7
MMX n Τύποι Δεδομένων : Packed Byte : 8 x 1 byte packed σε 64 -bits ¨ Packed Word : 4 x 16 -bit words packed σε 64 -bits ¨ Packed Double Word : 2 x 32 -bit double words packed σε 64 -bits ¨ Quadword : 64 -bit αριθμός ¨ 8
MMX n Registers : Δεν δημιουργούνται νέοι registers (οι 8 MMX registers ταυτοποιούνται με τους 8 υπάρχοντες floating point registers). ¨ Με αυτό τον τρόπο υπάρχει πλήρης συμβατότητα με υπάρχοντα Λειτουργικά Συστήματα ¨ Σε κάθε εκτέλεση MMX εντολής : ¨ n n n ¨ όλα τα floating point tag bits 0 Top of stack 0 fp exponential part bits 1 Δεν μπορεί να γίνει interleave MMX και floating point εντολών. 9
MMX – Intel Pentium 4 10
MMX – AMD Athlon 11
MMX – Instruction Set n Εντολές : ¨ Αριθμητικές ¨ Συγκρίσεων ¨ Λογικές ¨ Ολίσθησης ¨ Μεταφοράς Δεδομένων ¨ Διαχείρισης Κατάστασης 12
MMX – Instruction Set n Μορφή Εντολών : ¨ ¨ ¨ Prefix : P για Packed Infix : Λειτουργία Εντολής π. χ. ADD Suffix : n n n ¨ n U/S : Unsigned/Signed US, SS : Unsigned/Signed Saturation B, W, D, Q : Οι 4 νέοι τύποι των MMX εντολών. π. χ. PADDSD : Packed Add With Saturation On Double Word Σύνταξη : ¨ INSTRUCTION mmreg 1, mmreg 2/mem 64 n ¨ mmreg 1 = mmreg 1 INSTRUCTION mmreg 2/mem 64 Εξαίρεση : n EMMS, MOVD/MOVQ, SHIFT εντολές ¨ ¨ MOVD mmreg 1, mreg 32/mem 32 MOVD mreg 32/mem 32, mmreg 1 MOVQ mem 64, mmreg 1 PSRLW mmreg 1, imm 8 ‘ mreg 32 = integer 13
MMX – Αριθμητικές Εντολές n Αριθμητική : ¨ Wrap-around n Overflow : κάνε wrap στο 0 n Underflow : κάνε wrap στο ΜΑΧΙΝΤ ¨ Saturation n Overflow : μείνε στο MAXINT n Underflow : μείνε στο MININT n π. χ. Color wraparound n Δεν υπάρχει state για τον έλεγχο αν έγινε saturate (backward compatibility) ¨ Ο έλεγχος μπορεί να γίνει με έλεγχο της τιμής που παίρνουμε και της ΜΙΝΙΝΤ και ΜΑΧΙΝΤ τιμής Πιθανόν έχουμε saturation 14
MMX – Αριθμητικές Εντολές n Πρόσθεση PADDB, PADDW, PADDD ¨ PADDSB, PADDSW ¨ PADDUSB, PADDUSW ¨ 15
MMX – Αριθμητικές Εντολές n Αφαίρεση PSUBB, PSUBW, PSUBD ¨ PSUBSB, PSUBSW ¨ PSUBUSB, PSUBUSW ¨ 16
MMX – Αριθμητικές Εντολές n Πολλαπλασιασμός PMULHW (Packed Multiply High) ¨ PMULLW (Packed Multiply Low) ¨ 17
MMX – Αριθμητικές Εντολές n Πολλαπλασιασμός και Πρόσθεση ¨ PMADDWD (Packed Multiply and Add) n Πολλαπλασιασμός αντίστοιχων λέξεων. n Άθροισμα 2 higher ordered words στο high doubleword n Άθροισμα 2 lower ordered words στο lower doubleword 18
MMX – Εντολές Συγκρίσεων n Ισότητα ¨ PCMPEQB, PCMPEQW, PCMPEQD n Αν τα αντίστοιχα δεδομένα είναι ίσα τότε τα αντίστοιχα δεδομένα στον καταχωρητή προορισμού τίθενται όλα σε 1, αλλιώς όλα σε 0. 19
MMX – Εντολές Συγκρίσεων n Μεγαλύτερο ίσο ¨ PCMPGTB, PCMPGTW, PCMPGTD n Αν η ανισότητα ισχύει τότε τα αντίστοιχα δεδομένα στον καταχωρητή προορισμού τίθενται όλα σε 1, αλλιώς όλα σε 0. 20
MMX – Εντολές Μετατροπής n Pack Εντολές PACKSSWB, PACKSSDW (Pack With Signed Saturation) ¨ PACKUSWB (Pack With Unsigned Saturation) ¨ n Pack και Saturate τα δεδομένα σε μικρότερου τύπου. 21
MMX – Εντολές Μετατροπής n π. χ. PACKSSDW mmreg 1, mmreg 2/mem 64 22
MMX – Εντολές Μετατροπής n Unpack Εντολές (High) ¨ PUNPCKHBW, PUNPCKHWD, PUNPCKHDQ (Unpack High Packed Data) n n Unpack και Interleave τα high order δεδομένα των registers. π. χ. Zero extension του destination operand. 23
MMX – Εντολές Μετατροπής n Unpack Εντολές (Low) ¨ PUNPCKLBW, PUNPCKLWD, PUNPCKLDQ (Unpack Low Packed Data) n Unpack και Interleave τα low order δεδομένα των registers. 24
MMX – Λογικές Εντολές n Bitwise Logical AND (PAND) ¨ AND NOT (PANDN) ¨ OR (POR) ¨ Exclusive OR (PXOR) ¨ 25
ΜΜΧ – Εντολές Ολίσθησης n Packed Shift Right/Left Logical: PSRLW ¨ PSRLD ¨ PSRLQ ¨ 26
ΜΜΧ – Εντολές Ολίσθησης n Packed Shift Right Arithmetic: PSRAW ¨ PSRAD ¨ 27
MMX – Μεταφορά Δεδομένων n Μεταφορά 32 bits από source to destination: ¨ MOVD 28
MMX – Μεταφορά Δεδομένων n Μεταφορά 64 bits από source to destination: ¨ MOVQ 29
ΜΜΧ – Διαχείριση Κατάστασης n Η εντολή EMMS ¨ Χρησιμοποιείται για να «καθαρίσουμε» την κατάσταση λειτουργίας MMX ¨ Εκτελείται κάθε φορά που είμαστε σε κατάσταση λειτουργίας MMX και θέλουμε να αλλάξουμε κατάσταση για να εκτελέσουμε floating point εντολές. ¨ Αν δεν εκτελεστεί προκύπτουν προβλήματα κατά την εκτέλεση fp εντολών όπως stack overflow κτλ. 30
MMX – Παραδείγματα n Εύρεση απόλυτης διαφοράς διανυσμάτων a, b, c: διανύσματα if (a > b) then c = a – b c = (a – b) OR (b – a) else c = b – a a MM 0, b MM 1 MOVQ MM 2, MM 0 ‘κάνουμε ένα αντίγραφο του MM 0 PSUBUSB MM 0, MM 1 ‘υπολογίζουμε το a-b PSUBUSB MM 1, MM 2 ‘υπολογίζουμε το b-a POR MM 0, MM 1 ‘εφαρμόζουμε μεταξύ τους OR O MM 0 περιέχει το αποτέλεσμα που επιθυμούμε για το c. 31
MMX – Παραδείγματα n Πολλαπλασιασμός μιγαδικών z 1 = Re 1 + Im 1*i, z 2 = Re 2 + Im 2*i z 1*z 2 = (Re 1*Re 2 – Im 1*Im 2) + (Re 1*Im 2 + Re 2*Im 1)*i Re 1, Re 2, Im 1, Im 2 : 16 bit q o z 2 θεωρείται σταθερός και τον αποθηκεύουμε με τη μορφή: [Re 2 –Im 2 Re 2 ] στον ΜΜ 1 q ο z 1 βρίσκεται στο Low DW του ΜΜ 0 [. . . Re 1 Im 1] PUNPCKLDQ MM 0, MM 0 ‘μετατρέπουμε τον z 1 στη μορφή [Re 1 Im 1] PMADDWD MM 0, MM 1 ‘εκτελούμε τον πολλ/σμό των μιγαδικών O MM 0 περιέχει το z 1*z 2 32
MMX – Παραδείγματα n Εκτέλεση κάτω από συνθήκη If True then Ra : = Rb Ra = (Rb AND Rx) OR (Rc ANDNOT Rx) else Ra : = Rc Ο Rx περιέχει άσους αν η συνθήκη είναι αληθής και μηδενικά αν η συνθήκη είναι ψευδής. Πιο γρήγορη εκτέλεση διότι: q Οι εντολές branch εισάγουν καθυστέρηση (λανθασμένη πρόβλεψη) q Πρέπει να κάνουμε μετατροπή από packed σε scalar τύπο δεδομένων 33
MMX – Παραδείγματα n Επικάλυψη εικόνων (Chroma Keying σε Image Overlay) PCMPΕQ PANDN PAND POR 34
MMX – Παραδείγματα n q q q Εσωτερικό γινόμενο διανυσμάτων 2 MOVQ 2 PMADDWD Πολύ πιο γρήγορα απ’ ‘οτι χωρίς MMX 2 PADD 35
Νέες Ανάγκες – SSE n Εφαρμογές 3 D εφαρμογές που χρειάζονται: n Γεωμετρικούς μετασχηματισμούς n Εξομοίωση φυσικών μοντέλων n Φωτισμό ¨ Streaming εφαρμογές ¨ Audio processing ¨ n n Speech recognition Wavetable synthesis Video MPEG processing Όλα τα παραπάνω απαιτούν FP υπολογισμούς Το ΜΜΧ δεν μπορεί να ανταπεξέλθει στις νέες ανάγκες SSE 36
Streaming SIMD Extensions – SSE n Θέματα υλοποίησης ¨ Απαίτηση για υπολογισμούς σε τουλάχιστον 4 x 32 bit δεδομένα fp παράλληλα ¨ 2 επιλογές υλοποίησης n n Διπλασιασμός του clock rate σε 64 bit hardware Χρήση hardware 128 bit ή παραπάνω (πχ. 256 bits) ¨ Ο πρώτος τρόπος οδηγεί σε αυξημένη πολυπλοκότητα ¨ Επομένως χρησιμοποιήθηκε η δεύτερη επιλογή με προσθήκη 128 bit hardware ¨ Hardware >128 bit έχει πολύ χαμηλή απόδοση/κόστος 37
SSE – Χαρακτηριστικά n n Προσφέρει σημαντική επιτάχυνση streaming και multimedia εφαρμογών που απαιτούν FP υπολογισμούς Δεν είναι συμβατό προς τα πίσω ¨ Οι προγραμματιστές αναλαμβάνουν να ελέγξουν αν υποστηρίζεται SSE από τον επεξεργαστή, ώστε να εκτελεστεί ο αντίστοιχος κώδικας. 38
SSE – Intel n n n 12 integer εντολές που επεκτείνουν την ΜΜΧ τεχνολογία 8 νέοι floating point καταχωρητές των 128 bit (XMM 0 -7) (δε χρειαζόμαστε reset state εντολή) 1 καταχωρητής ελέγχου κατάστασης MXCSR 50 νέες εντολές για packed fp υπολογισμούς 8 νέες εντολές “ελέγχου” της cache μνήμης, streaming εντολές και prefetch 39
SSE – Integer Εντολές n Μέσος όρος PAVGB ¨ PAVGW ¨ n Υπολογισμός μέγιστου, ελάχιστου PMAXSW ¨ PMAXUB ¨ n Πολλαπλασιασμός και αποκοπή των low-order bytes ¨ n (PMINSW) (PMINUB) PMULHUW Άθροισμα απόλυτων διαφορών ¨ PSADBW 40
SSE – FP Εντολές n Packed n Scalar 41
SSE – FP Εντολές n Μετακίνηση δεδομένων ¨ n ADDSS SUBSS MULSS DIVSS MAXSS MINSS SQRTSS AND, ANDN, OR, XOR Packed και Scalar Σύγκρισης ¨ ¨ n ADDPS SUBPS MULPS DIVPS MAXPS MINPS SQRTPS Λογικές ¨ n 4 x 32 bits, 64 bits (Low ή High), 128 bits Αριθμητικές ¨ ¨ n MOV GEQUAL LEQUAL GREAT LESS EQUAL Διαχείρισης κατάστασης ¨ ¨ LDMXCSR STMXCSR FXRSTOR FXSAVE 42
SSE – Εντολές διαχείρισης μνήμης n n n Streaming stores στη μνήμη Prefetch δεδομένων από τη μνήμη Διαχείριση δεδομένων στην cache 43
SSE 2 – Επιστημονικοί υπολογισμοί n Νέες εφαρμογές απαιτούν μεγαλύτερη ακρίβεια σε fp υπολογισμούς MPEG-layer 3 ¨ MPEG-2 (DVD video) ¨ JPEG ¨ n Επέκταση του SSE 2 ώστε να γίνονται πράξεις σε 2 x 64 bits fp παράλληλα 44
AMD – 3 d. Now! n n n Οι επεξεργαστές της AMD ενσωμάτωσαν αρχικά MMX τεχνολογία Ωστόσο οι AMD CPUs υστερούσαν σε σχέση με τον ανταγωνισμό (Intel) όσον αφορά fp υπολογισμούς Γι’ αυτό 3 d. Now! ¨ ¨ ¨ 12 νέες integer εντολές (επεκτάσεις του MMX) 64 bit registers (2 x 32 bit float αριθμοί) Floating point εντολές 21 εντολές για 3 D graphics 7 εντολές μετακίνησης δεδομένων 5 DSP εντολές (ADSL, MP 3, Dolby Digital, MPEG-2 κτλ. ) 45
Επιτάχυνση με MMX 46
ME – Άλλες τεχνολογίες n Sun Ultra. SPARC (VIS) Αξιοποίηση του 64 bit hardware των SPARC ¨ Λειτουργικές μονάδες: ¨ n n Floating point divide/square root Floating point addition/subtraction/ absolute value/ negative/ multiplication Graphics addition, multiply Power. PC Altivec ¨ 128 bit hardware n n ¨ 32 νέοι registers 128 bit Πάνω από 160 εντολές Υπολογισμοί παράλληλα σε : n n 16 x 8, 8 x 16, 4 x 32 bit integer 4 x 32, 2 x 64 bit floating point 47
Συγκριτικά 48
Βιβλιογραφία n WEB: www. intel. com ¨ www. amd. com ¨ www. tomshardware. com ¨ www. tommesani. com ¨ n Manuals: AMD Athlon™ Processor - x 86 Code Optimization Guide ¨ IA – 32 Intel Architecture Software Developer’s Manual – Volumes 1 -3 ¨ AMD-K 6 Processor Multimedia Extensions (MMX) ¨ 49
Βιβλιογραφία n 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 - Overview. Millind Mittal, MAP Group, Santa Clara, Intel Corp. Alex Peleg, IDC Architecture Group, Israel, Intel Corp. Uri Weiser, IDC Architecture Group, Israel, Intel Corp. ¨ 50
372c4bae4acca3e636eda31682bba310.ppt