3DMost! -3DNow!

AMD 3DMost!
3dnow-logo.svg
Tervező cég Fejlett mikroeszközök
Bemutatott 1998
típus utasításkészlet architektúra

3DMost! az Advanced Micro Devices (AMD) által kifejlesztett x86 utasításkészlet kiterjesztése . Hozzáteszi egy utasítás több adat (SIMD) utasítások az alap x86 utasításkészlet, amely lehetővé teszi, hogy teljes vektorműveletek a lebegőpontos vektor-műveleteket Vector nyilvántartások , ami javítja a teljesítményét számos grafikai igényű alkalmazásokat. Az első mikroprocesszor, amely megvalósította a 3DNow-t, az 1998-ban bemutatott AMD K6-2 volt. Amikor az alkalmazás megfelelő volt, ez körülbelül 2–4-szeresére növelte a sebességet.

Az utasításkészlet azonban soha nem szerzett nagy népszerűséget, és az AMD 2010 augusztusában bejelentette, hogy a 3DNow támogatása megszűnik a jövőbeni AMD processzorokban, két utasítás (az PREFETCHés PREFETCHWutasítások) kivételével. A két utasítás Bay-Trail Intel processzorokban is elérhető.

Történelem

A 3DNow -t abban az időben fejlesztették ki, amikor a 3D -s grafika a PC multimédia és játékok főáramává vált. A 3D grafika valós idejű megjelenítése nagymértékben függött a fogadó CPU lebegőpontos egységétől (FPU), hogy lebegőpontos számításokat végezzen . Ez a feladat az, hogy az AMD K6 processzora könnyen felülmúlta versenytársát, az Intel Pentium II-t.

Az MMX utasításkészlet továbbfejlesztéseként a 3DNow utasításkészlet kibővítette az MMX SIMD regisztereket, hogy támogassa a közös aritmetikai műveleteket (összeadás/kivonás/szorzás) egyetlen pontosságú (32 bites) lebegőpontos adatokon. Az AMD 3DNow használatára írt szoftver a lassabb x87 FPU helyett akár 4x gyorsabban is végrehajtható, az utasítás-keveréstől függően.

Verziók

3DNow

A 3DNow technológia első megvalósítása 21 új utasítást tartalmaz, amelyek támogatják a SIMD lebegőpontos műveleteket. A 3DNow adatformátum tömörített, egyetlen pontosságú , lebegőpontos. A 3DNow utasításkészlet a SIMD egész szám műveletekhez, az adatok előzetes lekéréséhez és a gyorsabb MMX-lebegőpontos váltáshoz szükséges műveleteket is tartalmaz. Később az Intel hasonló (de nem kompatibilis) utasításokat adott hozzá az SSE (Streaming SIMD Extensions) néven ismert Pentium III -hoz .

A 3DNow lebegőpontos utasításai a következők:

  • PI2FD -32 bites egész szám lebegőpontos átalakításra
  • PF2ID -Lebegőpontos és 32 bites egész számok konvertálása
  • PFCMPGE -Csomagolt lebegőpontos összehasonlítás, nagyobb vagy egyenlő
  • PFCMPGT -Csomagolt lebegőpontos összehasonlítás, nagyobb
  • PFCMPEQ -Csomagolt lebegőpontos összehasonlítás, egyenlő
  • PFACC -Csomagolt lebegőpontos halmozódás
  • PFADD -Csomagolt lebegőpontos kiegészítés
  • PFSUB -Csomagolt lebegőpontos kivonás
  • PFSUBR -Csomagolt lebegőpontos fordított kivonás
  • PFMIN -Csomagolt lebegőpontos minimum
  • PFMAX -Csomagolt lebegőpontos maximum
  • PFMUL -Csomagolt lebegőpontos szorzás
  • PFRCP -Csomagolt lebegőpontos kölcsönös közelítés
  • PFRSQRT -Csomagolt lebegőpontos kölcsönös négyzetgyök közelítés
  • PFRCPIT1 -Csomagolt lebegőpontos kölcsönös, első iterációs lépés
  • PFRSQIT1 -Csomagolt lebegőpontos kölcsönös négyzetgyök, az első iterációs lépés
  • PFRCPIT2 -Csomagolt lebegőpontos kölcsönös/kölcsönös négyzetgyök, második iterációs lépés

A 3DNow egész számra vonatkozó utasítások a következők:

  • PAVGUSB -Csomagolt 8 bites előjel nélküli egész átlagolás
  • PMULHRW -Csomagolt 16 bites egész szám szorozva kerekítéssel

A 3DNow teljesítménynövelő utasításai a következők:

  • FEMMS -Gyorsabb belépés/kilépés az MMX vagy lebegőpontos állapotba
  • PREFETCH/PREFETCHW -Előzetesen töltsön le legalább 32 bájtos sort az L1 adatgyorsítótárba (ez a nem elavult utasítás)

3DNow kiterjesztések

Kevés vagy semmilyen bizonyíték nincs arra, hogy a 3DNow második verziója hivatalosan valaha is saját kereskedelmi nevet kapott. Ez némi zavart okozott az új utasításkészletre vonatkozó dokumentációban. A leggyakoribb kifejezések az Extended 3DNow , az Enhanced 3DNow és a 3DNow+ . Az "Enhanced 3DNow" kifejezés megtalálható néhány helyen az AMD webhelyén, de az "Enhanced" nagybetűs írásmódja pusztán nyelvtani, vagy azokra a processzorokra helyezik a hangsúlyt, amelyek rendelkeznek ezekkel a bővítményekkel, de lehet, hogy nem hivatkozik a K6-III-P referenciaoldalára, amely nem rendelkezik ilyen kiterjesztésekkel).

A 3DNow utasításkészletnek ezt a kiterjesztését az első generációs Athlon processzorokkal vezették be . Az Athlon 5 új 3DNow utasítást és 19 új MMX utasítást adott hozzá. Később a K6-2+ és a K6-III+ (mindkettő a mobilpiacot célozta meg) tartalmazta az 5 új 3DNow utasítást, kihagyva a 19 új MMX utasítást. Az új 3DNow utasításokat hozzáadtuk a DSP fokozásához . Az új MMX utasításokat hozzáadták a streaming média fokozásához .

A 19 új MMX utasítás az Intel SSE1 utasításkészletének részhalmaza. Az AMD műszaki kézikönyveiben az AMD elkülöníti ezeket az utasításokat a 3DNow kiterjesztéseken kívül. Az AMD vevői termékirodalmában azonban ez a szegregáció kevésbé egyértelmű, ahol mind a 24 új utasítás előnyei a továbbfejlesztett 3DNow technológiának köszönhetők. Ez arra késztette a programozókat, hogy saját nevet találjanak ki a 19 új MMX utasításhoz. A leggyakoribb az Integer SSE ( ISSE ). Az SSEMMX és az MMX2 megtalálható a nyilvános szektor videószűrő dokumentációjában is. Az ISSE utalhat az Internet SSE -re is, amely az SSE korai neve.

A 3DNow kiterjesztés DSP utasításai a következők:

  • PF2IW -Csomagolt lebegőpontos és egész szám közötti szókonverzió előjel kiterjesztéssel
  • PI2FW -Csomagolt egész szó lebegőpontos konvertálás
  • PFNACC -Csomagolt lebegőpontos negatív halmozódik fel
  • PFPNACC -Csomagolt lebegőpontos vegyes pozitív-negatív halmozódás
  • PSWAPD - Csomagolt csere kettős szó

Az MMX kiterjesztési utasítások (Integer SSE) a következők:

  • MASKMOVQ - Streamelés (cache bypass) tárolása byte maszk használatával
  • MOVNTQ - Streaming (cache bypass) tároló
  • PAVGB - Aláíratlan bájt átlagos csomagolása
  • PAVGW - Aláíratlan szó becsomagolt átlaga
  • PMAXSW - Csomagolt maximális aláírt szó
  • PMAXUB - Csomagolt maximum aláíratlan bájt
  • PMINSW - Csomagolt minimális aláírt szó
  • PMINUB - Csomagolt minimum aláíratlan bájt
  • PMULHUW - Csomagolt szorozzuk magas aláírás nélküli szót
  • PSADBW - Az abszolút bájtkülönbségek csomagolt összege
  • PSHUFW - Csomagolt szó
  • PEXTRW - Kivonat szó egész regiszterbe
  • PINSRW - Szó beszúrása az egész regiszterből
  • PMOVMSKB - Mozgassa a bájtos maszkot az egész regiszterbe
  • PREFETCHNTA - Előzetes lekérés az NTA hivatkozással
  • PREFETCHT0 - Előzetes lekérés a T0 referencia használatával
  • PREFETCHT1 - Előzetes lekérés a T1 referencia használatával
  • PREFETCHT2 - Előzetes lekérés a T2 referencia használatával
  • SFENCE - Tárolja a kerítést

3DNow Professional

A 3DNow Professional olyan kereskedelmi név, amely a 3DNow technológiát a teljes SSE utasításkészlettel (például SSE1, SSE2 vagy SSE3) kombináló processzorokat jelöli. Az Athlon XP volt az első processzor, amely a 3DNow Professional kereskedelmi nevet viselte, és az első olyan termék az Athlon családban, amely támogatta a teljes SSE1 utasításkészletet (összesen: 21 eredeti 3DNow utasítás; öt 3DNow kiterjesztési DSP utasítás; 19 MMX kiterjesztési utasítások; és 52 további SSE utasítás a teljes SSE1 kompatibilitás érdekében).

3DNow és a Geode GX/LX

A Geode GX és a Geode LX két új 3DNow utasítást adott hozzá, amelyek jelenleg hiányoznak az összes többi processzorból.

A 3DNow "professzionális" utasításai kizárólag a Geode GX/LX -hez tartoznak:

  • PFRSQRTV -Kölcsönös négyzetgyök közelítés pár 32 bites úszóhoz
  • PFRCPV -Kölcsönös közelítés pár 32 bites úszóhoz

Előnyök és hátrányok

A 3DNow egyik előnye, hogy az azonos regiszterben tárolt két szám összeadható vagy megszorozható . Az SSE használatával minden szám csak egy másik regiszter azonos pozíciójában lévő számmal kombinálható. Ez a képesség, amelyet az Intel terminológiájában horizontálisnak neveznek , jelentette az SSE3 utasításkészlet fő kiegészítését .

A 3DNow hátránya, hogy a 3DNow utasítások és az MMX utasítások ugyanazt a regiszterfájlt használják, míg az SSE 8 új független regisztert ad hozzá ( XMM0- XMM7).

Mivel az MMX/3DNow regisztereket a szabványos x87 FPU megosztja, a 3DNow utasítások és az x87 utasítások nem hajthatók végre egyszerre. Mivel azonban az x87 FPU alias, a 3DNow és az MMX regiszterállapotok menthetők és visszaállíthatók a hagyományos x87 F(N)SAVEés F(N)RSTORutasításokkal. Ez az elrendezés lehetővé tette, hogy az operációs rendszerek kifejezett módosítások nélkül támogassák a 3DNow -t, míg az SSE regiszterek kifejezett operációs rendszer támogatást igényeltek az új XMM regiszterek megfelelő mentéséhez és visszaállításához (a hozzáadott FXSAVEés az FXRSTORutasítások segítségével.)

Az FX* utasítások a régebbi x87 mentési és visszaállítási utasítások frissítései, mivel ezek nemcsak az SSE regiszterállapotokat, hanem az x87 regiszterállapotokat is elmenthetik (tehát ez azt jelentette, hogy az MMX és 3DNow regisztereket is mentheti).

Az AMD Athlon XP és K8-alapú magokon (pl. Athlon 64 ) az összeszerelő programozók megjegyezték, hogy lehetséges a 3DNow és az SSE utasítások kombinálása a regisztrációs nyomás csökkentése érdekében , de a gyakorlatban nehéz javítani a teljesítményen a megosztott parancsok végrehajtása miatt funkcionális egységek.

3DNow -t támogató processzorok

  • Minden K6-2 utáni AMD processzor K6, Athlon, Athlon 64 és Phenom architektúra családokon alapul. Nem támogatott a Bulldozer, a Bobcat és a Zen architektúra processzorokban és azok származékaiban.
  • A 3DNow-t támogató utolsó AMD APU processzor az A8-3870K.
  • National Semiconductor Geode , később AMD Geode.
  • VIA C3 (más néven Cyrix III) "Samuel", "Samuel 2" "Ezra" és "Eden ESP" magok.
  • IDT Winchip 2

Hivatkozások

További irodalom

Külső linkek