2024. április 25., csütörtök

Gyorskeresés

MMX, SSE, SSSE3, mennyit ér a SIMD kiterjesztés?

Írta: | Kulcsszavak: SIMD . MMX . SSE . ffmpeg . mplazer . linux

[ ÚJ BEJEGYZÉS ]

A K6-III fórumban felvetődött, hogy mennyit érnek az MMX, SSE... kiterjesztések. Ezek lényege, hogy egy utasítással tudjuk ugyanazt a műveletet végrehajtani. (Single Instruction, Multiple Data) Azok az alkalmazások profitálhatnak belőlük, amelyeknél ugyanazt az utasítást hajtják végre nagy adatmennyiségen. Ezek jellemzően vektoriális, mátrix műveletek. Ilyen programok nagyon sok területen előfordulnak. Pár példa a teljesség igénye nélkül:

multimédia (videó és hang lejátszás, átkódolás, képfeldolgozás)
titkosítás (SSL, GPG...)
grafikai-3d (játék, ray tracing)
mesterséges intelligencia (játékok, üzleti szimuláció)

Ezekből gyorsan az elsőt tudtam tesztelni az ffmpeg-mplayer páros lefordításával. Mind a kettőt lefordítottam több configuration paraméterrel. A nevek elég egyértelműek, az MMX-hez nagyvonalúan hozzácsaptam a 3DNow utasításokat is. Egy 2.8GHz-es Phenom II volt a gépben - 4G rammal - aminek egy magját használtam fel.

Az MPlayerrel egy Samsung demót játszottam le, amit előtte 1080p mkv formátumúvá konvertáltam. A film jellemzői: 70.4 sec, 24fps, 10Mb/s mplaye, h264. A video lejátszáshoz szükséges időt mértem benchmark módban. Valós esetben a hang is nyomná a processzor lelkét. Command line: mplayer -benchmark -vo null -nosound test.mkv SIMD nélkül még egy mai modern CPU sem boldogul egy HD videóval.


MPlayer HD lejátszás [sec]

Az ffmpeggel egy 1080i (mpeg2 30fps, 65Mb/s) demót kódoltam át 720p noninterlaced mpeg4 8Mb/s formátumba. Itt is egy szállal terheltem a processzort. A 6:06 [perc:másodperc] hosszú videót alapesetben 22:34 alatt sikerult átrágni. Ezzel szemben 3DNow és MMX bevetésével az idő kevesebb, mint kétharmadára csökkent. Az SSE további pár százalékot jelentett, de a javulás nem annyira látványos, mint előző esetben.


ffmpeg 1080i to 720p kódolás [min:sec]

Azt hiszem ezek után nem lehet megkérdőjelezni a SIMD fontosságát. Az újabb kiterjesztések már nem hoznak akkora javulást, mint az MMX anno. Az egy jó kérdés, hogy a további pár százalékért megéri-e tovább terhelni az x86 világát. Vannak, akik szerint nem és a CPU gyártók is lassan változtatnak az irányon. Egyelőre, ha jól tudom, lassan jön az SSE5. Nem hiszem, hogy optimális kódot állítanak elő a compilerek több, mint ezer utasítás mellett. Véleményem szerint érdemes lenne kigyomlálni a nagyon elbonyolított utasításkészletet és kicsit visszamenni RISC irányba. Az egyszerűbb proci kissebb magot is jelent, amiből többet, olcsóbban, gyorsabbat lehet ugyanakkora méretben gyártani. Small is nice. Az SSE feladatait pedig át lehetne terhelni a GPU-ra. Több jel, mint a Fusion és a Larrabe is ebbe az irányba mutat. Majd meglátjuk, hogy mit hoz a jövő.

Hozzászólások

(#1) Metalfan


Metalfan
senior tag

Érdekes teszt érdekes eredményekkel. Csak MMX-re is kíváncsi vagyok, hogy 3DNow! nélkül hogy boldogulna a proci. Szerintem az MMX, SSE bőven elég lenne a prociknak, a többit meg optimalizálják ezekre a kódokra, vagy egyáltalán: optimalizáljanak. Amikor a sok fejlesztő lusta jól megírni a szoftvert, akkor nem a hardvert kéne az optimalizálatlan progikhoz igazítani, mert ettől nem fognak jobb belátásra térni a programozók. Inkább fordítva kellene tenni. Legfrissebb példám az 18 Wheels of Steel: Extreme Trucker nevű játék, amelyik egy belépőszintű videokártyán is gond nélkül kellene fusson (akár élsimítással is), de egy 8800 GTS-en is szaggat néha, a Fraps 2 és 85 között ugrál elég random módon. De van még jópár hasonló játék/program, ami elég szarul lett megírva.

(#2) DarthSun


DarthSun
nagyúr
LOGOUT blog

Tanulságos.Azt gondoltam volna, hogy valamennyire skálázódott az egyre újjabb utasításkészletek teljesítménynövelő hatása.

(#3) Metalfan válasza DarthSun (#2) üzenetére


Metalfan
senior tag

Valószínűleg más programoknál jobban előjön a hatása, nem gondolom, hogy mindegyiket a videókódolásra hegyezték ki.

(#4) #95904256


#95904256
törölt tag

Köszönjük a cikket! :R

Remélem sikerült meggyőzni vele pár kétkedőt, hogy van kihatása a teljesítményre a SIMD utasításkészleteknek. De szerintem jó lett volna külön is kipróbálni az MMX és a 3DNow! hatását. ( Az MMX integer, a 3DNow! lebegőpontos utasításokat takar. )

Valamint nem jön be az ezer utasítás link. :(

[ Szerkesztve ]

(#5) zoltanz


zoltanz
nagyúr

Köszönjük, érdekes írás. Szerintem fontos, hogy újabb ilyen kiterjesztések kerűljenek a procikba, ha nem is várható jelentős előny tőlük egyből.

Manapság egy előnye van ha nem vagy szegény, színvonalasabb ellenségeid lehetnek

(#6) frescho válasza Metalfan (#1) üzenetére


frescho
addikt

A tesztet ki akarom egesziteni, csak keresnem kell valamit, ami hajlando lefordulni minimum 4 modon: i386, mmx, sse, sse2

Metalfan: Nincs teljesen igazad. Az teny, hogy csak lapatoljak a kodot a programozok. Az optimalizacioval nem sokat torodnek, de a compilereknek pont ez lenne a dolga. A gcc-t en csak feluletesen ismerem, csak 1-2 tucat kapcsolojat hasznalom a nehany tucat/tucatbol. Ajanlom figyelmedbe a -O1, O2, O3, illetve --build=i386-linux-gnu kapcsolokat. P4-re optimalizalva peldaul a hosszu pipeline-hoz igazodva "kibontja" a folosleges ciklusokat. A kevesbb ugrasnak hala gyorsabb lesz a kod, ugyanakkor nagyobb is. Viszont a compiler sem mindenhato, azt is emberek irjak es az ujabb es ujabb kiterjesztesek nem teszik konnyuve a dolgukat.

Akosf: link javitva. Sajnos nem fordult le magaban csak MMX-el a libavcodec. :(

https://frescho.hu

(#7) frescho


frescho
addikt

ssh-val is kiprobaltam. Nincs ertelme boviteni a bejegzyest. i386 eseten 89.1MB/s a file atviteli sebesseg, MMX-el 95.8, sse2-vel 96.6. A ket veglet kozott kb 10% van. Mivel lenne erdemes meg tesztelni?

https://frescho.hu

(#8) #95904256 válasza frescho (#7) üzenetére


#95904256
törölt tag

Szerintem valamiféle fraktál generátorral lehetne jól lemérni, hogy melyik utasításkészlet mennyit is jelent. De sajnos nem ismerek ilyen programot. Meg az is igaz, hogy a kézzel optimalizált verziók lennének a legalkalmasabbak az összehasonlításra. Különben a fordító "képességei" erősen befolyásolnák az eredményt.

[ Szerkesztve ]

(#9) frescho válasza #95904256 (#8) üzenetére


frescho
addikt

Povray-t akartam, de nem fordul le rendesen par CPU beallitassal.

https://frescho.hu

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.