3DNow!: Разлика между версии

Изтрито е съдържание Добавено е съдържание
м Унифициране на заглавия на раздел Вижте също
{{без източници|~~~~~}}; форматиране: 7x тире, 6x нов ред, интервал (ползвайки Advisor)
Ред 1:
{{без източници|09:58, 6 октомври 2017 (UTC)}}
 
'''3DNow!''' са специални [[SIMD]] инструкции, създадени от [[AMD]] за техните процесори. Тези инструкции разширяват [[MMX]] инструкциите, добавяйки възможност за обработка на числа с плаваща запетая. 3DNow! инструкциите са част от процесорната архитектура [[x86]].
 
== История ==
В края на 90-те години на 20-и век [[AMD]] има голям проблем - – техния процесор [[K6]], който е с отлична целочислена производителност, изостава значително от процесорите на [[Intel]] по отношение на скоростта на работа с числа с плаваща запетая. Проблемът не е нов за AMD, но в предишните години това е без голямо значение, тъй като 99% от програмите използват само целочислени инструкции. С навлизането на първите 3D компютърни игри и възпроизвеждането на звукозаписи и видео на персоналните компютри обаче, значението на блока за изчисления с плаваща запетая рязко нараства.
 
Всъщност анализите показват, че блока за изчисления с плаваща запетая на K6 е дори по-бърз от този на основния му конкурент [[Pentium II]], но не използва конвейер и в резултат успява да завърши по-малко инструкции на такт от конвейерния блок на Pentium II. Така или иначе, K6 е по-бавен и AMD вземат решение да добавят нови [[SIMD]] инструкции към процесорната архитектура [[x86]], които да позволяват паралелната обработка на 2 числа с плаваща запетая наведнъж. Резултатът от тази инициатива са 3DNow! инструкциите. Те са подобни на [[MMX]] (дори използват същите регистри), но боравещи и с числа с плаваща запетая.
 
Първият процесор, който поддържа 3DNow! e пуснатият на 28 май 1998 процесор [[K6-2]]. Скоро след това се появяват и няколко приложения, които демонстрират ефекта от 3DNow! инструкциите. За съжаление повечетоПовечето производители на софтуер не бързат да добавят поддръжка на 3DNow! към своите продукти, поради ниския пазарен дял на AMD.
 
Почти година по-късно Intel въведе подобен (но по-разширен и несъвместим с 3DNow!) набор от SIMD инструкции, наречени [[SSE]]. SSE инструкциите позволяват едновременната обработка на до 4 числа с плаваща запетая наведнъж.
 
В процесорите [[K6-2|K6-2+]], [[K6-III]] и първите [[Athlon]], AMD добави още 19 инструкции за предварително зареждане на данни и др. подобни. Разширеният по този начин набор от инструкции получи името '''Enhanced 3DNow!''' (наричани още '''Extended 3DNow!''' и '''3DNow+'''). С процесора [[Athlon XP]], AMD въведе третото поколение SIMD инструкции, наречени '''3DNow! Professional''', като единствената съществена разлика бе поддръжката на SSE инструкциите на Intel.
 
В крайна сметка 3DNow! инструкциите загубиха битката с SSE и в момента се поддържат само от процесорите на AMD и [[VIA]] и от години не са били добавяни нови инструкции към тях. Като се добави факта, че AMD процесорите вече поддържат и SSE, бъдещето на 3DNow! изглежда мрачно. В последните няколко поколения AMD процесори вече няма поддръжка на 3DNow инструкции, въпреки че флаговете за тяхното присъствие са вдигнати.
 
== Технология ==
 
3DNow! инструкциите добавят следните разширения към [[MMX]] инструкциите:
* 1 тип данни.
* 21 инструкции (плюс още инструкции в '''Enhanced 3DNow!''').
 
=== Типове данни ===
 
Единственият нови тип данни, който е въведен от 3DNow! инструкциите са 2 32-битови числа с плаваща запетая, които са пакетирани в един 64-битов MMX/3DNow! регистър. Форматът на двете 32-битови числа е идентичен с този на число с плаваща запетая с единична точност на [[x87]] инструкциите. Въпреки това, 3DNow! не е напълно съвместим със стандарта [[IEEE 754]], защото има само един метод за закръгляне на резултата, не може да представя ненормализирани числа и не поддържа софтуерни изключения при операции с числата.
 
Обхватът на числата в 3DNow! инструкциите е от 2<sup>-126</sup> (прибл. 1.17 * 10<sup>-38</sup>) до 2<sup>127</sup> * (2 - – 2<sup>-23</sup>) (прибл. 3.40 * 10<sup>38</sup>). При изчисленията с тези числа се прилага '''насищане''', подобно на това при [[MMX#MMX_.D0.B8.D0.BD.D1.81.D1.82.D1.80.D1.83.D0.BA.D1.86.D0.B8.D0.B8|MMX]] инструкциите. Ако след закръглянето резултата е по-голям от максимално представимото положително или отрицателно число, то той се привежда до съответното максимално представимо число. Ако след закръглянето резултата е по-малък от най-малкото представимо число, то той се привежда към нула.
 
=== Инструкции ===
 
Имената на повечето 3DNow! инструкции започват '''PF'''. 3DNow! инструкциите могат да се разделят на няколко групи. Инструкциите, които са налични само в '''Enhanced 3DNow!''' са отбелязани по съответния начин в текста. Някои от инструкциите липсват от последните версии на официалната документация на AMD, но се поддържат и в най-новите процесори на компанията за обратна съвместимост.
 
==== Инструкции за преобразуване ====
* PF2ID – преобразува 2 пакетирани числа с плаваща запетая в 2 пакетирани 32-битови цели числа.
 
* '''PF2ID''' -PI2FD – преобразува 2 пакетирани числа32-битови сцели плаваща запетаячисла в 2 пакетирани 32-битовичисла целис числаплаваща запетая.
* '''PI2FD''' -PF2IW – преобразува 2 пакетирани 32числа с плаваща запетая в 2 16-битови цели числа със знак, които се разширяват в 2две пакетирани 32-битови цели числа ссъс плаващазнак запетая(налична само в Enhanced 3DNow!).
* '''PF2IW'''PI2FW – -подобна преобразувана 2PF2ID, пакетиранино числарезултата сса плаваща2 запетая в 2пакетирани 16-битови цели числа, съса знак,в коитобитове сеот разширяват63 вдо две48 пакетирании 32-битовиот цели31 числадо 16 на резултата съсима знакнули (налична само в '''Enhanced 3DNow!''').
* '''PI2FW'''PSWAPD – - подобна на PF2ID, но резултата сапрехвърля 2 пакетирани 1632-битови цели числа, а в битовеMMX от 63 до 48регистър, икато отразменя 31младшите до32 16бита насъс резултатастаршите има32 нулибита (налична само в '''Enhanced 3DNow!''').
* '''PSWAPD''' - прехвърля 2 пакетирани 32-битови цели числа в MMX регистър, като разменя младшите 32 бита със старшите 32 бита (налична само в '''Enhanced 3DNow!''').
 
==== Аритметични инструкции ====
== Проблеми ==
== Приложения ==
== Процесори, които поддържат 3DNow! ==
== Вижте също ==
== Външни препратки ==
 
[[Категория:Компютърен хардуер]]