Multimedia Extensions

50
1 Multimedia Extensions Τριβυζάς Μάριος grad0551@di. uoa . gr Χαραλάμπους Παναγιώτης grad0568@di. uoa . gr

description

Multimedia Extensions. Τριβυζάς Μάριος [email protected] Χαραλάμπους Παναγιώτης [email protected]. Περιεχόμενα. Εισαγωγή/Αναγκαιότητα MMX SSE/SSE2 3DNow! Συγκρίσεις Άλλες τεχνολογίες ME. Εισαγωγή. Εφαρμογές Πολυμέσων : Graphics Video Image Processing - PowerPoint PPT Presentation

Transcript of Multimedia Extensions

Page 1: Multimedia Extensions

1

Multimedia Extensions

Τριβυζάς Μάριος [email protected]Χαραλάμπους Παναγιώτης [email protected]

Page 2: Multimedia Extensions

2

Περιεχόμενα

1. Εισαγωγή/Αναγκαιότητα

2. MMX

3. SSE/SSE2

4. 3DNow!

5. Συγκρίσεις

6. Άλλες τεχνολογίες ME

Page 3: Multimedia Extensions

3

Εισαγωγή

Εφαρμογές Πολυμέσων : Graphics Video Image Processing Audio processing Speech Recognition Games Music Synthesis Video Conferencing

Οι «απλές» αρχιτεκτονικές ISA δεν χρησιμοποιούν αποδοτικά τον επεξεργαστή στις εφαρμογές αυτές.

Page 4: Multimedia Extensions

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]

Page 5: Multimedia Extensions

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)

Page 6: Multimedia Extensions

6

Εισαγωγή

Ανάγκη για επεκτάσεις των ISA’ s ειδικά για εφαρμογές Πολυμέσων.

Οι επεκτάσεις θα πρέπει : Να είναι γενικές, να υλοποιούν δηλ. βασικά χαρακτηριστικά

αλγορίθμων των πιο πάνω εφαρμογών και όχι ολόκληρους αλγόριθμους

Να είναι πλήρως συμβατές με τα υπάρχοντα Λειτουργικά Συστήματα (backward compatibility)

Να διατηρούν την τεχνολογία απλή, για εύκολη επεκτασιμότητα στο μέλλον

Page 7: Multimedia Extensions

7

MMX

Πρόγονος : i860 (Περιελάμβανε SIMD εντολές) Πρώτη ουσιαστική προσθήκη στο IS μετά την αρχιτεκτονική Intel386 Χαρακτηριστικά :

Τεχνολογία Απλή (scaling, μικρό Die) Γενική SIMD (Single Instruction Multiple Data).

Εισάγει 57 νέες εντολές Χρησιμοποιεί 8x64 bit registers Εισάγει 4 νέους τύπους δεδομένων

Θεωρητικά : 8x παραλληλία. Πρακτικά : 1.5 – 4x παραλληλία

Page 8: Multimedia Extensions

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 αριθμός

Page 9: Multimedia Extensions

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 εντολών.

Page 10: Multimedia Extensions

10

MMX – Intel Pentium 4

Page 11: Multimedia Extensions

11

MMX – AMD Athlon

Page 12: Multimedia Extensions

12

MMX – Instruction Set

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

Page 13: Multimedia Extensions

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

Page 14: Multimedia Extensions

14

MMX – Αριθμητικές Εντολές

Αριθμητική : Wrap-around

Overflow : κάνε wrap στο 0 Underflow : κάνε wrap στο ΜΑΧΙΝΤ

Saturation Overflow : μείνε στο MAXINT Underflow : μείνε στο MININT π.χ. Color wraparound Δεν υπάρχει state για τον έλεγχο αν έγινε saturate (backward

compatibility) Ο έλεγχος μπορεί να γίνει με έλεγχο της τιμής που παίρνουμε

και της ΜΙΝΙΝΤ και ΜΑΧΙΝΤ τιμής Πιθανόν έχουμε saturation

Page 15: Multimedia Extensions

15

MMX – Αριθμητικές Εντολές

Πρόσθεση PADDB, PADDW, PADDD PADDSB, PADDSW PADDUSB, PADDUSW

Page 16: Multimedia Extensions

16

MMX – Αριθμητικές Εντολές

Αφαίρεση PSUBB, PSUBW, PSUBD PSUBSB, PSUBSW PSUBUSB, PSUBUSW

Page 17: Multimedia Extensions

17

MMX – Αριθμητικές Εντολές

Πολλαπλασιασμός PMULHW (Packed Multiply High) PMULLW (Packed Multiply Low)

Page 18: Multimedia Extensions

18

MMX – Αριθμητικές Εντολές

Πολλαπλασιασμός και Πρόσθεση PMADDWD (Packed Multiply and Add)

Πολλαπλασιασμός αντίστοιχων λέξεων. Άθροισμα 2 higher ordered words στο high doubleword Άθροισμα 2 lower ordered words στο lower doubleword

Page 19: Multimedia Extensions

19

MMX – Εντολές Συγκρίσεων

Ισότητα PCMPEQB, PCMPEQW, PCMPEQD

Αν τα αντίστοιχα δεδομένα είναι ίσα τότε τα αντίστοιχα δεδομένα στον καταχωρητή προορισμού τίθενται όλα σε 1, αλλιώς όλα σε 0.

Page 20: Multimedia Extensions

20

MMX – Εντολές Συγκρίσεων

Μεγαλύτερο ίσο PCMPGTB, PCMPGTW, PCMPGTD

Αν η ανισότητα ισχύει τότε τα αντίστοιχα δεδομένα στον καταχωρητή προορισμού τίθενται όλα σε 1, αλλιώς όλα σε 0.

Page 21: Multimedia Extensions

21

MMX – Εντολές Μετατροπής

Pack Εντολές PACKSSWB, PACKSSDW (Pack With Signed Saturation) PACKUSWB (Pack With Unsigned Saturation)

Pack και Saturate τα δεδομένα σε μικρότερου τύπου.

Page 22: Multimedia Extensions

22

MMX – Εντολές Μετατροπής

π.χ. PACKSSDW mmreg1, mmreg2/mem64

Page 23: Multimedia Extensions

23

MMX – Εντολές Μετατροπής

Unpack Εντολές (High) PUNPCKHBW, PUNPCKHWD, PUNPCKHDQ (Unpack High Packed

Data) Unpack και Interleave τα high order δεδομένα των registers . π.χ. Zero extension του destination operand.

Page 24: Multimedia Extensions

24

MMX – Εντολές Μετατροπής

Unpack Εντολές (Low) PUNPCKLBW, PUNPCKLWD, PUNPCKLDQ (Unpack Low Packed

Data) Unpack και Interleave τα low order δεδομένα των registers .

Page 25: Multimedia Extensions

25

MMX – Λογικές Εντολές

Bitwise Logical AND (PAND) AND NOT (PANDN) OR (POR) Exclusive OR (PXOR)

Page 26: Multimedia Extensions

26

ΜΜΧ – Εντολές Ολίσθησης

Packed Shift Right/Left Logical: PSRLW PSRLD PSRLQ

Page 27: Multimedia Extensions

27

ΜΜΧ – Εντολές Ολίσθησης

Packed Shift Right Arithmetic: PSRAW PSRAD

Page 28: Multimedia Extensions

28

MMX – Μεταφορά Δεδομένων

Μεταφορά 32bits από source to destination: MOVD

Page 29: Multimedia Extensions

29

MMX – Μεταφορά Δεδομένων

Μεταφορά 64bits από source to destination: MOVQ

Page 30: Multimedia Extensions

30

ΜΜΧ – Διαχείριση Κατάστασης

Η εντολή EMMS Χρησιμοποιείται για να «καθαρίσουμε» την

κατάσταση λειτουργίας MMX Εκτελείται κάθε φορά που είμαστε σε κατάσταση

λειτουργίας MMX και θέλουμε να αλλάξουμε κατάσταση για να εκτελέσουμε floating point εντολές.

Αν δεν εκτελεστεί προκύπτουν προβλήματα κατά την εκτέλεση fp εντολών όπως stack overflow κτλ.

Page 31: Multimedia Extensions

31

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-bPSUBUSB MM1, MM2 ‘υπολογίζουμε το b-aPOR MM0, MM1 ‘εφαρμόζουμε μεταξύ τους OR

O MM0 περιέχει το αποτέλεσμα που επιθυμούμε για το c.

Page 32: Multimedia Extensions

32

MMX – Παραδείγματα

Πολλαπλασιασμός μιγαδικώνz1 = Re1 + Im1*i, z2 = Re2 + Im2*iz1*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

Page 33: Multimedia Extensions

33

MMX – Παραδείγματα

Εκτέλεση κάτω από συνθήκηIf True

then Ra := Rb Ra = (Rb AND Rx) OR (Rc ANDNOT Rx)  

else Ra := Rc

Ο Rx περιέχει άσους αν η συνθήκη είναι αληθής και μηδενικά αν η συνθήκη είναι ψευδής.

Πιο γρήγορη εκτέλεση διότι: Οι εντολές branch εισάγουν καθυστέρηση (λανθασμένη

πρόβλεψη) Πρέπει να κάνουμε μετατροπή από packed σε scalar τύπο

δεδομένων

Page 34: Multimedia Extensions

34

MMX – Παραδείγματα

Επικάλυψη εικόνων (Chroma Keying σε Image Overlay)

PCMPΕQ

PANDN

PAND

POR

Page 35: Multimedia Extensions

35

MMX – Παραδείγματα

Εσωτερικό γινόμενο διανυσμάτων

2 MOVQ 2 PMADDWD Πολύ πιο γρήγορα απ’ ‘οτι χωρίς MMX 2 PADD

Page 36: Multimedia Extensions

36

Νέες Ανάγκες – SSE

Εφαρμογές 3D εφαρμογές που χρειάζονται:

Γεωμετρικούς μετασχηματισμούς Εξομοίωση φυσικών μοντέλων Φωτισμό

Streaming εφαρμογές Audio processing

Speech recognition Wavetable synthesis

Video MPEG processing Όλα τα παραπάνω απαιτούν FP υπολογισμούς Το ΜΜΧ δεν μπορεί να ανταπεξέλθει στις νέες ανάγκες SSE

Page 37: Multimedia Extensions

37

Streaming SIMD Extensions – SSE

Θέματα υλοποίησης Απαίτηση για υπολογισμούς σε τουλάχιστον 4x32bit

δεδομένα fp παράλληλα 2 επιλογές υλοποίησης

Διπλασιασμός του clock rate σε 64bit hardware Χρήση hardware 128bit ή παραπάνω (πχ. 256bits)

Ο πρώτος τρόπος οδηγεί σε αυξημένη πολυπλοκότητα

Επομένως χρησιμοποιήθηκε η δεύτερη επιλογή με προσθήκη 128bit hardware

Hardware >128bit έχει πολύ χαμηλή απόδοση/κόστος

Page 38: Multimedia Extensions

38

SSE – Χαρακτηριστικά

Προσφέρει σημαντική επιτάχυνση streaming και multimedia εφαρμογών που απαιτούν FP υπολογισμούς

Δεν είναι συμβατό προς τα πίσω Οι προγραμματιστές αναλαμβάνουν να ελέγξουν αν

υποστηρίζεται SSE από τον επεξεργαστή, ώστε να εκτελεστεί ο αντίστοιχος κώδικας.

Page 39: Multimedia Extensions

39

SSE – Intel

12 integer εντολές που επεκτείνουν την ΜΜΧ τεχνολογία

8 νέοι floating point καταχωρητές των 128bit (XMM0-7) (δε χρειαζόμαστε reset state εντολή)

1 καταχωρητής ελέγχου κατάστασης MXCSR 50 νέες εντολές για packed fp υπολογισμούς 8 νέες εντολές “ελέγχου” της cache μνήμης,

streaming εντολές και prefetch

Page 40: Multimedia Extensions

40

SSE – Integer Εντολές

Μέσος όρος PAVGB PAVGW

Υπολογισμός μέγιστου, ελάχιστου PMAXSW (PMINSW) PMAXUB (PMINUB)

Πολλαπλασιασμός και αποκοπή των low-order bytes PMULHUW 

Άθροισμα απόλυτων διαφορών PSADBW

Page 41: Multimedia Extensions

41

SSE – FP Εντολές

Packed

Scalar

Page 42: Multimedia Extensions

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

Page 43: Multimedia Extensions

43

SSE – Εντολές διαχείρισης μνήμης

Streaming stores στη μνήμη Prefetch δεδομένων από τη μνήμη Διαχείριση δεδομένων στην cache

Page 44: Multimedia Extensions

44

SSE2 – Επιστημονικοί υπολογισμοί

Νέες εφαρμογές απαιτούν μεγαλύτερη ακρίβεια σε fp υπολογισμούς MPEG-layer3 MPEG-2 (DVD video) JPEG

Επέκταση του SSE SSE2 ώστε να γίνονται πράξεις σε 2x64bits fp παράλληλα

Page 45: Multimedia Extensions

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 κτλ.)

Page 46: Multimedia Extensions

46

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

Page 47: Multimedia Extensions

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

Page 48: Multimedia Extensions

48

Συγκριτικά

Page 49: Multimedia Extensions

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)

Page 50: Multimedia Extensions

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.