3DNow!

3DNow!

Típusutasításkészlet-architektúra
FejlesztőAdvanced Micro Devices
Forgalomban1998–2010 augusztusa

A 3DNow! az x86 utasításkészlet egy elavult kiterjesztése, amit az Advanced Micro Devices (AMD) fejlesztett. Egy utasítás, több adat (SIMD) típusú utasításokat ad az alapvető x86 utasításkészlethez, lehetővé téve az utasításkészlet szintjén a lebegőpontos vektorműveletekvektoros végrehajtását, vektorregiszterek használatával, tehát hardveres gyorsítást nyújt a grafikában gyakran használt vektoros és skalár műveletekhez. Ez a fejlesztés sok grafikaigényes alkalmazás teljesítményét javította. Az első mikroprocesszor, ami megvalósította a 3DNow! kiterjesztést, az 1998-ban bemutatott AMD K6-2 volt. Megfelelő alkalmazások esetén ez a fejlesztés körülbelül 2–4-szeresére növelte a sebességet.

Az utasításkészlet azonban nem vált túl népszerűvé, és az AMD 2010 augusztusában bejelentette, hogy megszünteti a 3DNow! támogatását, és nem építi be azt a jövőbeli AMD processzorokba, két utasítás: a PREFETCH és PREFETCHW kivételével. Ez a két utasítás az Intel Bay Trail processzoraiban is elérhető.

Története

A 3DNow!-t abban az időszakban fejlesztették ki, mikor a 3D-s grafika széles körben elterjedt a PC-s multimédiában és a játékokban. A 3D-s grafika valós idejű megjelenítése nagymértékben függött a gazda CPU lebegőpontos egységétől (FPU) a lebegőpontos számítások végrehajtásában, és ezen a téren az AMD K6 processzorát könnyedén felülmúlta versenytársa, az Intel Pentium II.

Az MMX utasításkészlet továbbfejlesztéseként, a 3DNow! utasításkészlet kiterjesztette az MMX SIMD-regisztereket a szokásos aritmetikai műveletek támogatásával (összeadás, kivonás, szorzás) egyszeres pontosságú (32 bites) lebegőpontos adatokon. Az AMD 3DNow! utasításait alkalmazó szoftver akár négyszer gyorsabban is futhat, mint a lassabb x87 FPU műveletekkel fordított program, az utasítások összetételétől függően.

Változatai

3DNow!

A 3DNow! technológia első megvalósítása 21 új utasítást tartalmaz, melyek támogatják SIMD lebegőpontos műveleteket. A 3DNow! adatformátuma csomagolt (tömörített, pakolt) egyszeres pontosságú lebegőpontos. A 3DNow! utasításkészlet SIMD fixpontos műveleteket, adat-előbetöltést, gyorsabb MMX és lebegőpontos mód közötti váltás műveleteket is tartalmaz. Később az Intel hasonló (de inkompatibilis) utasításokat adott hozzá a Pentium III-hoz, ez a kiterjesztés SSE (Streaming SIMD Extensions) néven ismert.

A 3DNow! lebegőpontos utasításai

  • PI2FD – csomagolt 32 bites egész szám konvertálása lebegőpontosra
  • PF2ID – csomagolt lebegőpontos konvertálása 32 bites egészre
  • 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 akkumulálás
  • PFADD – csomagolt lebegőpontos összeadá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 reciprok közelítés/approximáció
  • PFRSQRT – csomagolt lebegőpontos reciprok négyzetgyök közelítés/approximáció
  • PFRCPIT1 – csomagolt lebegőpontos reciprok, első iterációs lépés
  • PFRSQIT1 – csomagolt lebegőpontos reciprok négyzetgyök, első iterációs lépés
  • PFRCPIT2 – csomagolt lebegőpontos reciprok/reciprok négyzetgyök, második iterációs lépés

A 3DNow! fixpontos utasításai

  • PAVGUSB – csomagolt 8 bites előjel nélküli egész átlagolás
  • PMULHRW – csomagolt 16 bites egész/fixpontos szorzás kerekítéssel

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

  • FEMMS – gyorsabb váltás (be- és kilépés) az MMX és lebegőpontos állapotok között
  • PREFETCH/PREFETCHW – legalább egy 32 bájtos sor előbetöltése az L1 adatgyorsítótárba (ez az egyetlen nem elavult utasítás)

3DNow! kiterjesztések

Szinte semmi bizonyíték nincs arra, hogy a 3DNow! második verziója valaha is hivatalosan saját márkanevet kapott volna. Ez némi zavart okozott az új utasításkészletre hivatkozó dokumentációkban. A leggyakrabban használt kifejezések az „Extended 3DNow!”, „Enhanced 3DNow!” és a „3DNow!+”. Az „Enhanced 3DNow!” kifejezés néhány helyen megtalálható az AMD weboldalán, de a nagy kezdőbetűs „Enhanced” nem biztos, hogy márkanevet jelöl, lehet egyszerűen nyelvtani oka van, vagy olyan processzorok kiemelésére szolgál, melyek rendelkezhetnek (vagy nem) ezekkel a kiterjesztésekkel (a hivatkozások közül a legérdekesebb egy K6-III-P benchmark oldala, amely éppen nem rendelkezik ezekkel a kiterjesztésekkel).

A 3DNow! utasításkészlet ezen kiterjesztése az első generációs Athlon processzorokban jelent meg. Az Athlon öt új 3DNow! utasítást és 19 új MMX utasítást vezetett be. Később, a K6-2+ és K6-III+ (mindkettő a mobil piacra irányult) tartalmazta az öt új 3DNow! utasítást, kihagyva a 19 új MMX utasítást. Az új 3DNow! utasításokat a digitális jelfeldolgozás (DSP) teljesítményének növelése céljából adták hozzá a készlethez. Az új MMX utasítások a streaming media teljesítményének növelését célozták.

A 19 új MMX utasítás az Intel SSE utasításkészletének egy részhalmaza. Az AMD a műszaki kézikönyveiben elkülöníti ezeket az utasításokat a 3DNow! kiterjesztésektől. Az AMD fogyasztói termékismertetőiben azonban ez az elkülönítés kevésbé egyértelmű, ahol a 24 új utasítás előnyeit a továbbfejlesztett 3DNow! technológia számlájára írják. Ez arra késztette a programozókat, hogy saját nevet találjanak ki a 19 új MMX utasításra. A leggyakoribb az „Integer SSE” („ISSE”). Az „SSEMMX” és „MMX2” megtalálhatók még a közkincs szektor videofilter-dokumentációiban. Az ISSE utalhat az Internet SSE-re is, amely az SSE korai elnevezése volt.

A 3DNow! kiterjesztés DSP utasításai

  • PF2IW – csomagolt lebegőpontos egész szóba konvertálás előjelkiterjesztéssel
  • PI2FW – csomagolt egész szóból lebegőpontosra konvertálás
  • PFNACC – csomagolt lebegőpontos negatív akkumuláció (összegzés)
  • PFPNACC – csomagolt lebegőpontos vegyes pozitív-negatív összegzés
  • PSWAPD – csomagolt duplaszó csere

Az MMX kiterjesztés utasításai (Integer SSE)

  • MASKMOVQ – streaming tárolás (gyorsítótár-elkerülés) bájtmaszk használatával
  • MOVNTQ – streaming tárolás (gyorsítótár-elkerülés)
  • PAVGB – csomagolt előjel nélküli bájtok átlaga
  • PAVGW – csomagolt előjel nélküli szavak átlaga
  • PMAXSW – csomagolt maximum előjeles szavakból
  • PMAXUB – csomagolt maximum előjel nélküli bájt
  • PMINSW – csomagolt minimum előjeles szavakból
  • PMINUB – csomagolt minimum előjel nélküli bájt
  • PMULHUW – csomagolt előjel nélküli szó magas helyiértékű szorzás
  • PSADBW – csomagolt abszolút bájtkülönbségek összege
  • PSHUFW – csomagolt szavak keverése
  • PEXTRW – szó kinyerése egész regiszterbe
  • PINSRW – szó beillesztése egész regiszterből
  • PMOVMSKB – mozgatás bájtmaszk szerint egész regiszterbe
  • PREFETCHNTA – előbetöltés NTA-referencia használatával
  • PREFETCHT0 – előbetöltés T0-referencia használatával
  • PREFETCHT1 – előbetöltés T1-referencia használatával
  • PREFETCHT2 – előbetöltés T2-referencia használatával
  • SFENCE – tárolási memóriakorlát (fence)

3DNow! Professional

A 3DNow! Professional egy márkanév, amely olyan processzorokat jelöl, melyek a 3DNow! technológiát egy teljes SSE utasításkészlettel kombinálják (például SSE, SSE2 vagy SSE3 változatokkal). Az Athlon XP volt az első processzor, mely a 3DNow! Professional márkanevet viselte, és az Athlon család első olyan terméke volt, mely támogatta a teljes SSE utasításkészletet (összesen: 21 eredeti 3DNow! utasítás; öt 3DNow! kiterjesztés DSP utasítás; 19 utasítás az MMX kiterjesztéshez; és 52 további SSE utasítás a teljes SSE-kompatibilitásnak megfelelően).

3DNow! és a Geode GX/LX

A Geode GX és Geode LX két új 3DNow! utasítást vezetett be, melyek hiányoznak az összes többi processzorból.

A Geode GX/LX processzorok egyedi 3DNow! „Professional” utasításai a következők:

  • PFRSQRTV – reciprok négyzetgyök approximáció két 32 bites lebegőpontos számra
  • PFRCPV – reciprok approximáció két 32 bites lebegőpontos számra

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

A 3DNow! egyik előnye, hogy lehetőséget ad ugyanabban a regiszterben tárolt két szám összeadására vagy szorzására. Az SSE esetében minden számot csak egy másik regiszterben lévő, azonos pozíción elhelyezkedő számmal lehet kombinálni. Ez a képesség, melyet „horizontálisnak” neveznek az Intel terminológiájában, volt a legnagyobb kiegészítés az SSE3 utasításkészletben.

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

Mivel az MMX/3DNow! regisztereket a szabványos x87 FPU is használja, a 3DNow! utasítások és a x87 utasítások nem használhatók egyszerre. Ugyanakkor, mivel a MMX és a 3DNow! regiszterei az x87 FPU átnevezett regiszterei, így a 3DNow! és az MMX regiszterállapotok elmenthetők és visszaállíthatók a hagyományos x87 F(N)SAVE és F(N)RSTOR mentő és visszatöltő utasításokkal. Ez a megoldás lehetővé tette, hogy az operációs rendszerek explicit módosítások nélkül támogassák a 3DNow! technológiát, miközben az SSE regiszterekhez kifejezett operációsrendszer-támogatásra volt szükség az új XMM regiszterek megfelelő mentéséhez és visszaállításához (a hozzáadott FXSAVE és FXRSTOR utasítások segítségével.)

Az SSE FX* utasításai a régebbi x87 mentési és visszaállítási utasítások funkcionális kiterjesztését nyújtják. Képesek elmenteni nemcsak az SSE regiszterek állapotát, hanem az x87 regiszterek állapotát is (ezért támogatott esetben az MMX- és 3DNow!-műveletekre egyaránt alkalmazhatók).

Az AMD Athlon XP és a K8 alapú magok (azaz Athlon 64) esetén az assembly-programozók észrevették, hogy a 3DNow! és az SSE utasítások kombinálásával lehetséges a regiszter-terheltség (avagy regiszterigény) csökkentése; a gyakorlatban azonban nehéz javítani a teljesítményen, mivel az utasítások megosztott funkcionális egységeken futnak.

A 3DNow!-t támogató processzorok

Jegyzetek

  1. 1 2 Abu85 (2010. augusztus 23.). "Nyugdíjba vonul a 3DNow!". Processzor. Prohardver. Hozzáférés: 2026. május 10.{{cite web}}: CS1 karbantartás: numerikus név: szerzőfelsorolás (link)
  2. 1 2 Adrian Kingsley-Hughes (2010. augusztus 23.). "AMD says goodbye to 3DNow! instruction set". Computing / Processors. ZDNET.
  3. ↑ "Effectively Utilizing 3DNow in Linux". Linux Journal. 1999. december 1. 2011. június 7. dátummal az eredetiből archiválva. Hozzáférés: 2010. október 3.
  4. ↑ "3DNow Instructions are Being Deprecated | AMD Developer Central". Blogs.amd.com. 2010. augusztus 18. 2010. október 24. dátummal az eredeti címről archiválva. Hozzáférés: 2010. október 3. {{cite web}}: |archive-date= / |archive-url= timestamp mismatch; 2013. november 9. suggested (súgó)
  5. ↑ "IntelE38xx - MinnowBoard Wiki". 2017. február 11. dátummal az eredeti címről archiválva. Hozzáférés: 2017. február 13.
  6. ↑ Chris O'Hara (2023-09-01T20:02:08.571Z). "Bay Trail". Intel® Atom™ processor E3800 Product Family. Intel. {{cite web}}: Check date values in: |date= (súgó)
  7. 1 2 "AMD Extensions to the 3DNow and MMX Instruction Sets Manual" (PDF). Advanced Micro Devices, Inc. 2000. március. 2008. május 17. dátummal az eredetiből archiválva (PDF). Hozzáférés: 2008. június 7.
  8. ↑ "Mobile AMD-K6-III-P Processor-Based Notebook: Ziff-Davis CPUmark 99". 2008. július 24. dátummal az eredetiből archiválva. Hozzáférés: 2008. június 7.. Az oldalon hiba van a címben: Mobile AMD-K6-III+ and Mobile AMD-K6-2+ Processors with Enchanced(sic!) 3DNow! Technology
  9. ↑ "AMD Athlon Processor Product Brief". Advanced Micro Devices, Inc. 2008. február 25. dátummal az eredetiből archiválva. Hozzáférés: 2008. június 8.
  10. ↑ "ISSE". AviSynth. 2017. július 2. dátummal az eredetiből archiválva. Hozzáférés: 2017. július 19.
  11. ↑ "Explaining the new 3DNow! Professional Technology". Advanced Micro Devices, Inc. 2009. január 21. dátummal az eredeti címről archiválva. Hozzáférés: 2008. június 8.
  12. ↑ "AMD Athlon XP Architectural Features". Advanced Micro Devices, Inc. 2008. február 25. dátummal az eredetiből archiválva. Hozzáférés: 2008. június 8.
  13. ↑ Larry Lewis (2003. július 9.). "3DNow+ vs SSE on Athlon XP". Newsgroup: comp.sys.ibm.pc.hardware.chips. Usenet: ad82cd69.0307090931.25391323@posting.google.com. 2012. október 3. dátummal az eredeti címről archiválva. Hozzáférés: 2023. január 4. – via Google Groups.

Fordítás

Ez a szócikk részben vagy egészben a(z) 3DNow! című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

Források

További információk

Kapcsolódó szócikkek