Multimedia Extensions

Post on 08-Jan-2016

32 views 0 download

description

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

Transcript of Multimedia Extensions

1

Multimedia Extensions

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

2

Περιεχόμενα

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

2. MMX

3. SSE/SSE2

4. 3DNow!

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

6. Άλλες τεχνολογίες 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 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

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 – Εντολές Μετατροπής

π.χ. PACKSSDW mmreg1, 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

aMM0, bMM1

MOVQ MM2, MM0 ‘κάνουμε ένα αντίγραφο του MM0 PSUBUSB MM0, MM1 ‘υπολογίζουμε το a-bPSUBUSB MM1, MM2 ‘υπολογίζουμε το b-aPOR MM0, MM1 ‘εφαρμόζουμε μεταξύ τους OR

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

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

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.