Процесори

MMX, 3DNow!, SSE и ползата от тях

Written by Редактор

Производителите на процесори винаги са се опитвали да повишават производителността на своите продукти, независимо дали чрез постигането на по-висока работна честота, или чрез влагането на някои малки хитрини. Макар поотделно всеки начин да дава своето, понякога се стига до простото акцентиране върху различните възможности, само и само да се реализира съответният модел. В този ред на мисли, какво е SSE (а вече има и SSE5) и каква точно полза имам аз от него?



След като преди доста време Intel въведе ММХ инструкциите в своите процесори, производителите започнаха да се надпреварват не само в тяхното добавяне (все пак се стигна дори до Cyrix с ММХ), но и в последващата им разработка. Като конкуренция на ММХ AMD добави в своите тогавашни модели 3DNow!, на което пък Intel отговори със SSE. По-късно SSE получи допълнително развитие, а в момента AMD вече разработва SSE5, които ще се използват при новите процесорни ядра Bulldozer. Но какво ни дават тези разширения, имаме ли всъщност реална полза от тях, или това е поредният рекламен трик?


MMX, 3DNow! и AltiVec – гости от миналото


Първата по рода си разработка на разширен комплект инструкции, чиято цел е ускоряване на конкретни задачи, е именно ММХ. Той се появява през 1997 г., когато Intel представя серията процесори Intel Pentium MMX. На практика ММХ (MultiMedia eXtensions) е първата реализация на SIMD в х86 архитектурата, тъй като до това време подобно нещо не е съществувало. Накратко обяснено, SIMD (Single Instruction Multiple Data) представлява техника, целяща постигането на високо ниво на паралелно изпълнение на данните, подобно на процесорите от векторен тип. За разлика от векторните процесори, които могат да изпълняват едновременно по няколко инструкции, понеже притежават независими модули, способни на това, скаларните процесори от типа на класическите х86 могат да изпълняват само по една инструкция на такт.


Реализирането на SIMD при ММХ е чрез добавянето на 8 нови целочислени регистъра в процесора. На практика тези нови регистри буквално препращат данните към стека на математическия копроцесор, който впоследствие изпълнява инструкциите. За разлика от адресите в стека на модула за изчисления с плаваща запетая (FP модула), MMХ са фиксирани, което позволява произволното им използване. Ускорението, получено благодарение на ММХ, и по-конкретно на факта, че се прилага SIMD, позволява на х86 процесорите да извършват значително по-ефикасно операции от типа кодиране/декодиране на поточно видео и аудиофайлове.



3DNow! представлява доразвиване на идеята, залегнала в създаването на ММХ. С еволюцията на процесорите се стига до момент, в който те се използват и за триизмерни игри и симулации, в които активно присъстват интензивни изчисления с плаваща запетая. По това време процесорите на AMD имат по-слаб математически копроцесор в сравнение с моделите на Intel. За да се справи с тази разлика, AMD създава набора инструкции, носещ името 3DNow!. Най-елементарно казано, това представлява техника, подобна на ММХ, която обаче има един голям плюс – за разлика от ММХ, с 3DNow! можем да изпълняваме операции над числа с плаваща запетая. Това е от особена важност при изчисленията на 3D сцени, където те са особено интензивни, а оттук и името на новия набор инструкции – 3DNow!.


Макар MMX и 3DNow! да могат да се нарекат архаични, на практика те са базата, на която започва развитието на днешните SSE набори инструкции. Интересното е, че съществува още една разработка в тази насока, дело на Apple, IBM и Freescale Semiconductor (Motorola). Тя носи името AltiVec и представлява изключително напредничава за времето си техника, споделяща доста общи със SSE параметри. За сравнение обаче, SSE се появява през 1999 г., докато разработката на AltiVec започва още през 1996 г. Сега AltiVec може да се срещне единствено в процесорите Xenon, които се използват в конзолите Xbox 360, където присъства в преработен вид, целящ съвместимост.


Streaming SIMD Extensions (SSE)


С появата на процесорите Pentium 3 Intel представя и допълнение от 70 нови инструкции, наречени SSE. Те са следствие на доразвиването на ММХ, които за съжаление се оказват недостатъчно ефективни при работа с интензивни триизмерни изчисления. Един от основните недостатъци на ММХ е фактът, че се използват съществуващите регистри на математическия копроцесор. Това на практика означава, че процесорът не може да работи едновременно със SIMD и с изчисления с плаваща запетая, а прехвърлянето между режимите отнема ценно процесорно време.


Най-просто казано, SSE представлява добавянето на 8 128-битови регистъра, които имат възможност за работа както с целочислени, така и с дробни числа. В същото време остава възможността за работа с целочислени данни благодарение на все още съществуващите ММХ инструкции. Един от недостатъците на SSE се състои в това, че потребителят (респективно програмистът) не може да използва едновременно математическия копроцесор и SSE1 регистрите. Въпреки това остава възможността за редуване на обръщенията към тях, което, макар и да снижава производителността, не може да се сравни с тоталния спад при прехода ММХ–FPU.



SSE2, SSE3 и SSE4


Новият (SSE2) комплект инструкции бива добавен от Intel в процесорите Pentium 4 през 2001 г. Едно от подобренията е, че става възможно ММХ инструкциите да се изпълняват в собствените регистри на SSE. Това на практика позволява смесването на целочислени SIMD и скаларни изчисления с плаваща запетая, без да се наблюдава спадът в производителността, характерен за превключването между MMX и FPU блоковете. Допълнителна стъпка към повишаването на производителността е подобреният контрол над кеша, с което се повишава ефективността при обработката на поточни данни. AMD от своя страна доработва SSE2 и добавя още 8 регистъра, които са достъпни при работа в 64-битов режим. По-късно Intel също добавя поддръжката на тези 8 допълнителни регистъра в 64-битовите си процесори.


Що се отнася до SSE3, може би най-важното допълнение представлява възможността за хоризонтална работа в SSE регистрите. По-просто казано, при SSE3 може да се извършва опериране с множество данни, намиращи се в само в един регистър.


С анонсирането на новото поколение процесори с ядро Core, Intel представя и SSE4. Тъй като според Intel четвъртата ревизия на SSE не е толкова сериозна, за да бъде именувана като отделна версия, понякога тя се споменава и като Supplemental Streaming SIMD Extension 3 (SSSE3). Добавените в тази версия 16 инструкции позволяват на SIMD блоковете да работят не само с данните, типично използвани в мултимедийните приложения.


Последната ревизия е SSE5, която все още не е налична в нито един процесор на пазара. Въпреки това AMD разпространи спецификациите за SSE5 с надеждата в близко бъдеще да се появи съответният софтуер, който да използва новите възможности на процесорите.


Добрил Доков

About the author

Редактор

Leave a Comment