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ő.