Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

1 Multimedia Extensions Τριβυζάς Μάριος Χαραλάμπους Παναγιώτης

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "1 Multimedia Extensions Τριβυζάς Μάριος Χαραλάμπους Παναγιώτης"— Μεταγράφημα παρουσίασης:

1 1 Multimedia Extensions Τριβυζάς Μάριος Χαραλάμπους Παναγιώτης

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

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

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

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

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

8 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 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 10 MMX – Intel Pentium 4

11 11 MMX – AMD Athlon

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

31 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 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  o z2 θεωρείται σταθερός και τον αποθηκεύουμε με τη μορφή: [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 33 MMX – Παραδείγματα Εκτέλεση κάτω από συνθήκη If True then Ra := Rb  Ra = (Rb AND Rx) OR (Rc ANDNOT Rx) else Ra := Rc Ο Rx περιέχει άσους αν η συνθήκη είναι αληθής και μηδενικά αν η συνθήκη είναι ψευδής. Πιο γρήγορη εκτέλεση διότι:  Οι εντολές branch εισάγουν καθυστέρηση (λανθασμένη πρόβλεψη)  Πρέπει να κάνουμε μετατροπή από packed σε scalar τύπο δεδομένων

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

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

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

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

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

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

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

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

42 42 SSE – FP Εντολές Μετακίνηση δεδομένων  MOV4x32bits, 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 43 SSE – Εντολές διαχείρισης μνήμης Streaming stores στη μνήμη Prefetch δεδομένων από τη μνήμη Διαχείριση δεδομένων στην cache

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

45 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 46 Επιτάχυνση με MMX

47 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 48 Συγκριτικά

49 49 Βιβλιογραφία WEB:     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 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.


Κατέβασμα ppt "1 Multimedia Extensions Τριβυζάς Μάριος Χαραλάμπους Παναγιώτης"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google