# 3DNow!

### от Уикипедия, свободната енциклопедия

3DNow! са специални SIMD инструкции, създадени от AMD за техните процесори. Тези инстрикции разширяват MMX инструкциите, добавайки възможност за обработка на числа с пваваща запетая. 3DNow! инструкциите са част от процесорната архитектура x86.

## [редактиране] История

Първият процесор, който поддържа 3DNow!

В края на 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-III и първите Athlon, AMD добави още 19 инструкции за предварително зареждане на данни и др. подобни. Разширеният по този начин набор от инструкции получи името Enhanced 3DNow! (наричани още Extended 3DNow! и 3DNow+). С процесора Athlon XP, AMD въведе третото поколение SIMD инструкции, наречени 3DNow! Professional, като единствената съществена разлика бе поддръжката на SSE инструкциите на Intel.

В крайна сметка 3DNow! инструкциите загубиха битката с SSE и в момента се поддръжат само от процесорите на AMD и VIA и от години не са били добавяни нови инструкции към тях. Като се добави факта, че AMD процесорите вече поддръжат и SSE, бъдещето на 3DNow! изглежда мрачно.

## [редактиране] Технология

3DNow! инструкциите добавят следните разширения към MMX инструкциите:

- 1 тип данни.
- 21 инструкции (плюс още инструкции в Enhanced 3DNow!).

### [редактиране] Типове данни

Единственият нови тип данни, който е въведен от 3DNow! инструкциите са 2 32-битови числа с плаваща запетая, които са пакетирани в един 64-битов MMX/3DNow! регистър. Форматът на двете 32-битови числа е идентичен с този на число с плаваща запетая с единична точност на x87 инструкциите. Въпреки това, 3DNow! не е напълно съвместим със стандарта IEEE 754, защото има само един метод за загръгляне на резултата, не може да представя ненормализирани числа и не поддържа софтуерни изключения при операции с числата.

Обхватът на числата в 3DNow! инструкциите е от 2-126 (прибл. 1.17 * 10-38) до 2127 * (2 - 2-23) (прибл. 3.40 * 1038). При изчисленията с тези числа се прилага насищане, подобно на това при MMX инструкциите. Ако след закръглението резултата е по-голям от максимално представимото положително или отрицателно число, то той се привежда до съответното максимално представимо число. Ако след закръглението резултата е по-малък от най-малкото представимо число, то той се привежда към нула.

### [редактиране] Инструкции

Имената на повечето 3DNow! иструкции започват PF. 3DNow! инструкциите могат да се разделят на няколко групи. Инструкциите, които са налични само в Enhanced 3DNow! са отбелязани по съответния начин в текста. Някои от инструкциите липсват от последните версии на официалната документация на AMD, но се поддръжат и в най-новите процесори на компанията за обратна съвместимост.

#### [редактиране] Инструкции за преобразуване

- PF2ID - преобразува 2 пакетирани числа с плаваща запетая в 2 пакетирани 32-битови цели числа.
- PI2FD - преобразува 2 пакетирани 32-битови цели числа в 2 пакетирани числа с плаваща запетая.
- PF2IW - преобразува 2 пакетирани числа с плаваща запетая в 2 16-битови цели числа със знак, които се разширяват в две пакетирани 32-битови цели числа със знак (налична само в Enhanced 3DNow!).
- PI2FW - подобна на PF2ID, но резултата са 2 пакетирани 16-битови цели числа, а в битове от 63 до 48 и от 31 до 16 на резултата има нули (налична само в Enhanced 3DNow!).
- PSWAPD - прехвърля 2 пакетирани 32-битови цели числа в MMX регистър, като разменя младшите 32 бита със старшите 32 бита (налична само в Enhanced 3DNow!).

#### [редактиране] Аритметични инструкции

## [редактиране] Проблеми

## [редактиране] Приложения

## [редактиране] Процесори, които поддържат 3DNow!

## [редактиране] Виж също

## [редактиране] Външни връзки

Взето от „http://bg.wikipedia.org../../../3/d/n/3DNow%21_a807.html“.

Категории: Компютърен хардуер | Процесорна архитектура x86

##### Views

- Статия
- Беседа
- Текуща версия

##### Търсене

##### На други езици

- Česky
- Deutsch
- English
- Esperanto
- Español
- Français
- עברית
- Bahasa Indonesia
- Italiano
- 日本語
- Nederlands
- Polski
- Português
- Русский
- 中文