jan nekvapil jan.nekvapil@tiscali -...

23
Jan Nekvapil [email protected] ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická

Upload: truongnguyet

Post on 28-Feb-2019

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

Jan Nekvapil

[email protected]

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Fakulta elektrotechnická

Page 2: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

Motivace

MMX, EMMX, MMX+

3DNow!, 3DNow!+

SSE

SSE2

SSE3

SSSE3

SSE4.2

Závěr

2

Page 3: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

Efektivní práce s vektory a maticemi

◦ Vektorová grafika (Hry), DSP, vědecké aplikace

SIMD

◦ Single Instruction Multiple Data

Datový typ „Packed“

◦ Vektor proměnných jednoho typu v jediném registru

3

Page 4: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

MMX = MultiMedia eXtension, (Matrix Math eXtension, atd…)

Představeno Intelem v roce 1997

8 registrů

◦ Označení MMx (MM0 - MM7)

◦ Velikost 64bit

◦ Datové typy

1 x 64bit quad word

2 x 32bit signed/unsigned integer

4 x 16bit signed/unsigned short

8 x 8bit byte

◦ Mapované na datové registry FPU

Používá stavový registr FPU

Pracuje pouze s celočíselnými typy

4

Page 5: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

57 nových instrukcí◦ Rozlišení od instrukcí x86 prefixem „p“ a postfixem „q“, „d“, „w“

nebo „b“ podle typu operandu

◦ Aritmetické instrukce Znaménková/neznaménková aritmetika, saturovaná aritmetika

◦ Logické instrukce XOR, OR, AND, NAND

◦ Posuny, rotace Doprava/doleva, Logické/aritmetické

◦ Porovnání =, >

◦ Data packing Přesuny a konverze dat

◦ Přesun dat Mezi registry, mezi pamětí a registry

◦ Správa stavového registru Instrukce EMMS - vyčistí stavy FPU registrů

5

Page 6: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

EMMX = Extended MMX

Rozšíření MMX od Cyrixu, rok 1997

12 nových instrukcí

◦ Instrukce s implicitním cílovým registrem

◦ Přesun dat

Podmíněné přesuny dat

◦ Aritmetické operace

Průměr

Násobení se zaokrouhlením

6

Page 7: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

Rozšíření MMX od AMD, rok 1999

18 nových instrukcí

◦ Správa cache

Vynucení/obejití zápisu do L1 a L2 cache mikroprocesoru

◦ Přesun dat

Podmíněné přesuny dat, PSHUFW

Řízené vložení/vyjmutí dat

◦ Aritmetické operace

Minimum, maximum, průměr, suma absolutních diferencí

7

Page 8: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

Výhody

◦ Zrychlení programu

Nevýhody

◦ Pouze celočíselná aritmetika => omezené použití

◦ Chybí horizontální aritmetické instrukce

◦ Chybí významné aritmetické instrukce (min, max, …)

◦ Chybí podpora práce s cache (originální MMX)

◦ Nepodporuje konstanty

◦ Sdílí datové registry a stavový registr s FPU

◦ Pouze 8 datových registrů

◦ Zastaralé

Hardwarová podpora

◦ Téměř vše od Pentium MMX dále (Intel, AMD, Cyrix)

8

Page 9: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

Rozšíření sady MMX od AMD

Představeno v roce 1998

Používá registry MMX

Nový datový typ

◦ 2 x 32bit float

Obsahuje horizontální i vertikální aritmetické instrukce

9

Page 10: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

21 nových instrukcí

◦ Prefixem „p“ se většina instrukcí liší od FPU instrukcí

◦ Aritmetické instrukce v plovoucí řádové čárce

PFADD, PFACC, PFSUB, PFSUBR, PFMUL, PFMIN, PFMAX

PFRCP, PFRSQRT – základní přesnost (14 – 15 bitů)

PFRCPIT1, PFRCPIT2, PFRSQRTIT1 – rozšířená přesnost (další kroky Newton-Raphstonovy iterace)

◦ Porovnání

=, >=, > pro typ 2 x 32bit float

◦ Správa cache

◦ Celočíselná aritmetika

Násobení se zaokrouhlením, zaokrouhlený průměr

◦ Konverze dat

Převod mezi 32bit integer a 32bit float

◦ Správa stavového registru

Instrukce FEMMS, rychlá varianta EMMS

10

Page 11: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

Známé také jako:

◦ 3DNow!2

◦ 3DNow! Professional

◦ 3DNow!ext

Rozšíření 3DNow! od AMD z roku 1999

5 nových instrukcí

◦ Konverze dat

Převod mezi 16bit integer a 32bit float

Uložení s výměnou floatů

◦ Horizontální aritmetické instrukce

PFNACC, PFPNACC

11

Page 12: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

Výhody

◦ Zrychlení hlavně v oblasti vektorové grafiky

Nevýhody

◦ Sdílí datové registry a stavový registr s FPU

◦ Nízká přesnost (nevhodné pro vědecké aplikace)

◦ Nepodporuje konstanty

◦ Pouze 8 datových registrů

◦ Zastaralé

Hardwarová podpora

◦ K6-2 a novější (3DNow!)

◦ K6-2+ a novější (3DNow!+)

12

Page 13: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

SSE = Streaming SIMD Extension

Představeno Intelem v roce 1999

8 nových registrů XMMx (XMM0 – XMM7)

◦ Velikost 128bit

◦ Datové typy

1 x 128bit

4 x 32bit float

Nový 32bit stavový registr MXCSR

◦ Využívá se jen spodních 16 bitů

70 nových instrukcí

◦ Nové operace v plovoucí řádové čárce (pouze s XMMx registry)

◦ Rozšíření MMX (celočíselné operace)

Použití SSE musí podporovat operační systém

◦ Práce v Extended modu

◦ Podpora instrukcí FXSAVE a FXRSTOR

13

Page 14: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

Postfix „ss“ - Scalar Single Floating Point

Postfix „ps“ - Packed Single Floating Point

Aritmetické v plovoucí řádové čárce

◦ +, -, *, /, min, max

◦ sqrt, 1/sqrt, rcp – plná přesnost

Aritmetické celočíselné

◦ min, max, průměr

Porovnání

◦ =, !=, >, <, >=, <=

Správa cache

Logické

Formátování dat, konverze, přenosy dat

14

Page 15: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

Výhody

◦ Zrychlení hlavně v oblasti vektorové grafiky

◦ Může pracovat paralelně s FPU (kromě Pentium III)

Nevýhody

◦ Efektivně načítá/ukládá jen data na adresách zarovnaných na 16 bytů

◦ Nepodporuje celočíselné typy, nepodporuje konstanty

◦ Pouze 8 registrů

◦ Chybí horizontální aritmetické instrukce

◦ (špatná implementace na Intel Pentium III)

Hardwarová podpora

◦ Pentium III

◦ Athlon XP

15

Page 16: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

Rozšíření sady SSE

Intel, rok 2001

144 nových instrukcí

Nové datové typy

◦ 2 x 64bit double

◦ 2 x 64bit signed/unsigned long long

◦ 4 x 32bit signed/unsigned int

◦ 8 x 16bit signed/unsigned

◦ 16 x 8bit byte

Je standardně implementována na všech AMD a Intel x86-64 procesorech

◦ Rozšíření počtu XMMx registrů na 16

16

Page 17: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

Implementuje MMX instrukce pro celočíselné SSE2 packedtypy

Implementuje SSE float instrukce pro SSE2 typ packed double

◦ Postfix „sd“ - Scalar Double Floating Point

◦ Postfix „pd“ - Packed Double Floating Point

Formátování dat, konverze, přenosy dat

Instrukce pro práci s cache

◦ CLFLUSH nemusí být podporována

17

Page 18: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

Výhody

◦ Podporuje všechny standardně používané datové typy

Nevýhody

◦ Chybí horizontální aritmetické instrukce

◦ Další viz. SSE

Hardwarová podpora

◦ AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

◦ Intel architektura NetBurst (Pentium 4, Xeon, Celeron, atd.)

◦ Intel Pentium M, Celeron M

◦ Intel architektura Core (Core Duo, Core Solo, atd.)

◦ Intel architektura Core 2 (Core 2 Duo, Core 2 Quad, atd.)

◦ Transmeta Efficeon

◦ Via C7

18

Page 19: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

Rozšíření SSE, SSE2

Intel, rok 2004

13 nových instrukcí

◦ Horizontální aritmetické instrukce pro typ packed float a packeddouble

◦ Instrukce pro komplexní aritmetiku

◦ FISTTP

Rychlý převod 32bit float na 32bit int

◦ LDDQU

Efektivní načtení dat z adresy nezarovnané na 16bytů

Komprese videa

Zrychlení na NetBurst architektuře

◦ MONITOR, NWAIT

Podpora Hyper-Threading

Neimplementováno na AMD procesorech

19

Page 20: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

SSSE3 = Supplemental Streaming SIMD Extension 3

Rozšíření MMX a SSE2

2 x 16 nových instrukcí

◦ Horizontální aritmetické instrukce pro celočíselné packed typy

Hardwarová podpora

◦ Intel Xeon 5100

◦ Intel Core Duo 2

20

Page 21: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

Intel, ( rok 2008, Intel Core 2 Duo ? )

54 instrukcí

◦ Podmíněné přesuny a vkládání

◦ Rozšíření znaménka

◦ Převod 32bit float na 32bit integer se zaokrouhlením

Podle standardu jazyka C, Java nebo Fortran

◦ Porovnávání textových řetězců

◦ Výpočet CRC32

◦ Zjištění počtu „1“ bitů v registru

◦ Pokročilá TEST instrukce

◦ Výpočet sumy absolutních diferencí dvou 8 x byte vektorů

HDTV kódování

◦ Pokročilé čtení z paměti a periferií

◦ Skalární součin

21

Page 22: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

V současné době jsou perspektivní pouze instrukční sady SSE.

Výhody

◦ Zrychlení programu 2-16x nebo i více

Nevýhody

◦ Neefektivní načítáním dat z adresy nezarovnané na 16bytů

◦ Neefektivní načítání a zpracování jiného počtu prvků než je násobek prvků v daném packed typu

◦ Nedokonalá podpora ze strany kompilátorů

◦ Nepodporované staršími mikroprocesory

22

Page 23: Jan Nekvapil jan.nekvapil@tiscali - noel.feld.cvut.cznoel.feld.cvut.cz/vyu/scs/prezentace2007/MMX_3DNow_SSE/Specialni... · AMD architektura K8 (Athlon 64, Sempron, Turion 64, atd.)

Dotazy?

[email protected]

Použitá literatura

◦ softpixel.com

◦ www.wikipedia.org

◦ www.cpuid.com

◦ www.hayestechnologies.com

23