3DNow!

**3DNow!** Advanced Micro Devices (AMD) tomonidan ishlab chiqilgan x86 koʻrsatmalar toʻplamining eskirgan kengaytmasi. U asosiy x86 koʻrsatmalar toʻplamiga bitta buyruqli bir nechta maʼlumotlar (SIMD) koʻrsatmalarini qoʻshib, Vektor registrlari yordamida suzuvchi nuqtali vektor operatsiyalarini vektorli qayta ishlashni amalga oshirish imkonini beradi, bu koʻplab grafik talab qilinadigan ilovalarning ishlashini yaxshilaydi. 3DNow-ni amalga oshiradigan birinchi mikroprotsessor 1998–yilda taqdim etilgan AMD K6–2 edi. Ilova mos boʻlganda, bu tezlikni taxminan 2–4 baravar oshirdi.

Biroq, koʻrsatmalar toʻplami hech qachon mashhur boʻlmagan va AMD 2010–yil avgustida ikkita koʻrsatmalardan tashqari (`PREFETCH` va `PREFETCHW` koʻrsatmalari) 3DNow-ni qoʻllab-quvvatlash kelajakdagi AMD  protsessorlarida toʻxtatilishini eʼlon qildi. Yuqorida aytib oʻtilgan ikkita koʻrsatmalar Bay-Trail Intel protsessorlarida ham mavjud.

## Tarix
3DNow 3D grafika kompyuter multimedia va oʻyinlarida asosiy oqimga aylangan bir paytda ishlab chiqilgan. 3D grafikalarning real vaqtda namoyishi suzuvchi nuqtali hisob-kitoblarni amalga oshirish uchun asosiy protsessorning suzuvchi nuqta blokiga (FPU) bogʻliq edi, bu vazifada AMD ning K6 protsessorini raqobatchisi Intel Pentium II dan osonlik bilan ortda qoldirdi.

MMX koʻrsatmalar toʻplamini yaxshilash sifatida 3DNow koʻrsatmalar toʻplami bitta aniqlikdagi (32 bitli) suzuvchi nuqtali maʼlumotlarda umumiy arifmetik operatsiyalarni (qoʻshish/ayirish/koʻpaytirish) qoʻllab-quvvatlash uchun MMX SIMD registrlarini kengaytirdi. Sekinroq x87 FPU oʻrniga AMD-ning 3DNow-dan foydalanish uchun yozilgan dasturiy taʼminot koʻrsatmalar aralashmasiga qarab 4 baravar tezroq ishlashi mumkin.

## Versiyalar

### 3DNow
3DNow texnologiyasining birinchi ilovasi SIMD suzuvchi nuqta operatsiyalarini qoʻllab-quvvatlaydigan 21 ta yangi koʻrsatmalarni oʻz ichiga oladi. 3DNow koʻrsatmalar toʻplami, shuningdek, SIMD butun son operatsiyalari, maʼlumotlarni oldindan olish va MMX-dan suzuvchi nuqtaga tezroq almashtirish operatsiyalarini oʻz ichiga oladi. Keyinchalik Intel SSE (Streaming SIMD Extensions) deb nomlanuvchi Pentium III ga oʻxshash (lekin mos kelmaydigan) koʻrsatmalar qoʻshadi.

3DNow suzuvchi-nuqta koʻrsatmalari quyidagilar:

* `PI2FD`  – 32 bitli butun sonni suzuvchi-nuqtaga aylantirish
* `PF2ID` – Suzuvchi-nuqtadan 32 bitli butun songa oʻzgartirish
* `PFCMPGE` – toʻplangan suzuvchi nuqtali taqqoslash, katta yoki teng
* `PFCMPGT` – toʻplangan suzuvchi-nuqtali taqqoslash, kattaroq
* `PFCMPEQ` – Toʻplangan suzuvchi-nuqtali taqqoslash, teng
* `PFACC` – oʻralgan suzuvchi-nuqta toʻplanadi
* `PFADD` – Paketli suzuvchi -nuqta qoʻshilishi
* `PFSUB` – toʻplangan suzuvchi nuqtali ayirish
* `PFSUBR` – oʻrnatilgan suzuvchi nuqtali teskari ayirish
* `PFMIN` – Paketli suzuvchi nuqta minimal
* `PFMAX` – Paketlangan suzuvchi nuqta maksimal
* `PFMUL` – Paketli suzuvchi nuqtali koʻpaytirish
* `PFRCP` – Paketli suzuvchi nuqta oʻzaro yaqinlashuvi
* `PFRSQRT` – Toʻplangan suzuvchi nuqta oʻzaro kvadrat ildizga yaqinlik
* `PFRCPIT1` – Paketli suzuvchi nuqta oʻzaro, birinchi iteratsiya bosqichi
* `PFRSQIT1` – Oʼrnatilgan suzuvchi nuqta oʻzaro kvadrat ildiz, birinchi iteratsiya bosqichi
* `PFRCPIT2` – oʻrnatilgan suzuvchi nuqta oʻzaro/oʻzaro kvadrat ildiz, ikkinchi iteratsiya bosqichi

3DNow integer koʻrsatmalari quyidagilar:

* `PAVGUSB` – Paketlangan 8 bitli belgisiz butun son oʻrtacha
* `PMULHRW` – Qadoqlangan 16 bitli butun sonni yaxlitlash bilan koʻpaytirish

3DNow unumdorligini oshirish boʻyicha koʻrsatmalar quyidagilar:

* `FEMMS` – MMX yoki suzuvchi-nuqta holatiga tezroq kirish/chiqish
* `PREFETCH/PREFETCHW` – L1 maʼlumotlar keshiga kamida 32 baytlik qatorni oldindan yuklash (bu eskirmagan koʻrsatma)

### 3DNow kengaytmalari
3DNow-ning ikkinchi versiyasiga rasman oʻz savdo nomi berilganligi haqida hech qanday dalil yoʻq. Bu ushbu yangi koʻrsatmalar toʻplamiga tegishli hujjatlarda baʼzi chalkashliklarga olib keldi. Eng keng tarqalgan atamalar *Kengaytirilgan 3DNow*, *Enhanced 3DNow* va *3DNow+ dir*. "Enhanced 3DNow" iborasini AMD veb-saytining bir nechta joylarida topish mumkin, ammo "Enhanced" bosh harfi sof grammatik yoki ushbu kengaytmalarga ega boʻlishi yoki boʻlmasligi mumkin boʻlgan protsessorlarga urgʻu berish uchun ishlatilgan koʻrinadi (eng diqqatga sazovorlari bu kengaytmalarga ega boʻlmagan K6–III-P uchun benchmark sahifasiga havola qiladi).

3DNow koʻrsatmalar toʻplamiga ushbu kengaytma birinchi avlod Athlon protsessorlari bilan kiritilgan. Athlon 5 ta yangi 3DNow koʻrsatmalari va 19 ta yangi MMX koʻrsatmalarini qoʻshdi. Keyinchalik, K6–2+ va K6–III+ (ikkalasi ham mobil bozorga moʻljallangan) 19 ta yangi MMX koʻrsatmalarini qoldirib, 5 ta yangi 3DNow koʻrsatmalarini oʻz ichiga oldi. DSP ni kuchaytirish uchun yangi 3DNow koʻrsatmalari qoʻshildi. Oqimli mediani kuchaytirish uchun yangi MMX koʻrsatmalari qoʻshildi.

19 ta yangi MMX koʻrsatmalari Intelning SSE1 koʻrsatmalar toʻplamining kichik toʻplamidir. AMD texnik qoʻllanmalarida AMD ushbu koʻrsatmalarni 3DNow kengaytmalaridan tashqari ajratadi. Biroq, AMD mijozlari mahsuloti adabiyotida bu ajralish barcha 24 ta yangi koʻrsatmalarning afzalliklari takomillashtirilgan 3DNow texnologiyasiga berilganligi unchalik aniq emas. Bu dasturchilarni 19 ta yangi MMX koʻrsatmalari uchun oʻz nomlarini ishlab chiqishga olib keldi. Eng keng tarqalgani *Integer SSE* (*ISSE*) boʻlib koʻrinadi. *SSEMMX* va *MMX2* ham jamoat mulki sektoridagi video filtri hujjatlarida mavjud. ISSE shuningdek, SSE ning dastlabki nomi boʻlgan Internet SSE ga ham murojaat qilishi mumkin.

3DNow kengaytmasi DSP koʻrsatmalari quyidagilar:

* `PF2IW` – Belgilangan kengaytmali suzuvchi-nuqtadan butun songa soʻz konvertatsiyasi
* `PI2FW` – Toʻplangan butun sonli soʻzni suzuvchi-nuqtaga aylantirish
* `PFNACC` – Qadoqlangan suzuvchi-nuqta salbiy toʻplanadi
* `PFPNACC` – Qadoqlangan suzuvchi-nuqta aralash ijobiy-salbiy toʻplanadi
* `PSWAPD` – Ikki soʻzli almashish

MMX kengaytmasi koʻrsatmalari (Integer SSE) quyidagilar:

*  `MASKMOVQ` – Bayt maskasi yordamida oqim (keshni aylanib oʻtish) saqlash
* `MOVNTQ` - Streaming (keshni chetlab oʻtish) doʻkoni
* `PAVGB` - imzolanmagan baytning oʻrtacha toʻplami
* `PAVGW` - Imzosiz soʻzning oʻrtacha toʻplami
* `PMAXSW` - Toʻplangan maksimal imzolangan soʻz
* `PMAXUB` - toʻplangan maksimal imzosiz bayt
* `PMINSW` - Paketlangan minimal imzolangan soʻz
* `PMINUB` - toʻplangan minimal imzosiz bayt
* `PMULHUW` - Paketli koʻpaytiruvchi yuqori belgisiz soʻz
* `PSADBW` - mutlaq bayt farqlarining yigʻindisi
* `PSHUFW` - toʻplangan aralash soʻz
* `PEXTRW` - butun son registriga soʻzni chiqarib oling
* `PINSRW` - Butun sonlar registridan soʻz kiritish
* `PMOVMSKB` - Bayt niqobini butun son registriga oʻtkazish
* `PREFETCHNTA` - NTA maʼlumotnomasi yordamida oldindan yuklash
* `PREFETCHT0` - T0 maʼlumotnomasi yordamida oldindan yuklash
* `PREFETCHT1` - T1 maʼlumotnomasi yordamida oldindan yuklash
* `PREFETCHT2` - T2 maʼlumotnomasi yordamida oldindan yuklash
* `SFENCE` - doʻkon panjarasi

### 3DNow Professional
*3DNow Professional* - bu 3DNow texnologiyasini toʻliq SSE koʻrsatmalar toʻplami (masalan, SSE1, SSE2 yoki SSE3) bilan birlashtirgan protsessorlarni koʻrsatish uchun ishlatiladigan savdo nomi. Athlon XP 3DNow Professional savdo nomiga ega boʻlgan birinchi protsessor boʻldi va toʻliq SSE1 koʻrsatmalar toʻplamini qoʻllab-quvvatlovchi Athlon oilasidagi birinchi mahsulot boʻldi (jami: 21 ta original 3DNow yoʻriqnomasi; beshta 3DNow kengaytmasi DSP yoʻriqnomasi; 19 MMX kengaytirish koʻrsatmalari va toʻliq SSE1 muvofiqligi uchun 52 qoʻshimcha SSE koʻrsatmalari).

### 3DNow va Geode GX/LX
Geode GX va Geode LX ikkita yangi 3DNow koʻrsatmalarini qoʻshdilar, ular hozirda barcha boshqa protsessorlarda mavjud emas.

3DNow Geode GX/LX uchun xos "professional" koʻrsatmalar quyidagilardir:

* `PFRSQRTV` – 32–bitli float juftligi uchun oʻzaro kvadrat ildizga yaqinlik
* `PFRCPV` – 32–bitli float juftligi uchun oʻzaro yaqinlashish

## Afzalliklari va kamchiliklari
3DNow ning afzalliklaridan biri shundaki, bitta registrda saqlangan ikkita raqamni qoʻshish yoki koʻpaytirish mumkin. SSE bilan har bir raqam faqat boshqa registrdagi bir xil pozitsiyadagi raqam bilan birlashtirilishi mumkin. Intel terminologiyasida *gorizontal* deb nomlanuvchi ushbu qobiliyat SSE3 koʻrsatmalar toʻplamiga asosiy qoʻshimcha boʻldi.

3DNow-ning kamchiliklari shundaki, 3DNow koʻrsatmalari va MMX koʻrsatmalari bir xil registr faylini baham koʻradi, SSE esa 8 ta yangi mustaqil registrlarni (`XMM0` &ndash; `XMM7`) qoʻshadi.

MMX/3DNow registrlari standart x87 FPU tomonidan taqsimlanganligi sababli, 3DNow koʻrsatmalari va x87 koʻrsatmalarini bir vaqtning oʻzida bajarib boʻlmaydi. Biroq, u x87 FPU-ga taqlid qilganligi sababli, 3DNow va MMX registr holatlari anʼanaviy x87 `F(N)SAVE` va `F(N)RSTOR` koʻrsatmalari orqali saqlanishi va tiklanishi mumkin. Ushbu tartibga solish operatsion tizimlarga 3DNow-ni aniq oʻzgartirishlarsiz qoʻllab-quvvatlashga imkon berdi, SSE registrlari esa yangi XMM registrlarini toʻgʻri saqlash va tiklash uchun (qoʻshilgan `FXSAVE` va `FXRSTOR` koʻrsatmalari orqali) aniq operatsion tizimni qoʻllab-quvvatlashni talab qildi.

FX* koʻrsatmalari eski x87 saqlash va tiklash koʻrsatmalariga yangilanishdir, chunki ular nafaqat SSE registr holatini, balki x87 registr holatini ham saqlashi mumkin (shuning uchun u MMX va 3DNow registrlarini ham saqlashi mumkin edi).

AMD Athlon XP va K8–ga asoslangan yadrolarda (yaʼni Athlon 64), yigʻish dasturchilari registr bosimini kamaytirish uchun 3DNow va SSE koʻrsatmalarini birlashtirish mumkinligini taʼkidladilar, ammo amalda umumiy funktsional birliklarda bajariladigan koʻrsatmalar tufayli ishlashni yaxshilash qiyin.

## 3DNow-ni qoʻllab-quvvatlaydigan protsessorlar

* K6–2 dan keyingi barcha AMD protsessorlari K6, Athlon, Athlon 64 va Phenom arxitektura oilalariga asoslangan. Buldozer, Bobcat va Zen arxitektura protsessorlari va ularning hosilalarida qoʻllab-quvvatlanmaydi.
* 3DNow-ni qoʻllab-quvvatlaydigan soʻnggi AMD APU protsessori A8–3870K.
* Milliy yarimoʻtkazgich geode, keyinchalik AMD Geode.
* VIA C3 (shuningdek, Cyrix III nomi bilan tanilgan) "Samuel", "Samuel 2" "Ezra" va "Eden ESP" yadrolari.
* IDT Winchip 2

## Manbalar

## Qoʻshimcha oʻqish

* Case, Brayan (1998-yil 1-iyun). "3DNow Inteldan tashqari 3D ish faoliyatini oshiradi". *Mikroprotsessor hisoboti*.
* Oberman, S.; Favor, G.; Weber, F. (1999-yil mart). "AMD 3DNow texnologiyasi: arxitektura va amalga oshirish". *IEEE Micro*.

## Havolalar

* 3DNow Technology Partners, asl nusxadan arxivlangan (2001—yil boshida AMD veb-saytidan olib tashlangan)
* Asl nusxadan arxivlangan AMD 3DNow Instruction Porting Guide (PDF) (2014—yilda AMD veb-saytidan olib tashlangan)
* 3DNow texnologiyasi qoʻllanma
* 3DNow va MMX koʻrsatmalar toʻplamiga AMD kengaytmalari
* AMD Geode LX protsessorlari maʼlumotlar kitobi
* Yangi 3DNow Professional texnologiyasini tushuntirish (arxivlangan)