3DNow!
Set instruksi 3DNow! adalah sebuah set instruksi yang dikembangkan oleh AMD sebagai alternatif bagi set instruksi Intel SSE. Set instruksi ini dimasukkan ke dalam seri prosesor AMD K6 sebelum Intel merilis Pentium III yang dilengkapi dengan set instruksi SSE. Selanjutnya, saat AMD merilis keluarga Athlon serta Duron, AMD memperbarui set instruksi ini dengan mengubah namanya menjadi Enhanced 3DNow!, lalu menjadi 3DNow! Professional saat merilis Athlon XP (Palomino).
Informasi umum
Pada awalnya, AMD membeli lisensi set instruksi MMX dari Intel dan menanamkannya ke dalam semua prosesor K6 dan K7 buatannya. Karena beberapa sebab, AMD tidak mau membeli lisensi set instruksi SSE yang dikembangkan oleh Intel, dan akhirnya AMD pun mengembangkan sebuah set instruksinya sendiri yang dinamakan dengan 3DNow!. 3DNow! diperkenalkan pada bulan Mei 1998 pada prosesor K6-2, lalu diperbaiki pada saat merilis Athlon (Juni 1999) menjadi Enhanced 3DNow!. Set instruksi 3DNow!, Enhanced 3DNow! serta 3DNow! Professional merupakan set instruksi yang memperluas dukungan multimedia yang terdapat dalam chip-chip buatan AMD yang melebihi MMX. Hal ini mengizinkan kinerja yang lebih baik dalam memproses grafik tiga dimensi, multimedia, dan aplikasi yang bersifat intensif terhadap floating-point.
Teknologi 3DNow! terdiri atas 21 instruksi yang menggunakan teknik-teknik SIMD untuk beroperasi terhadap sebuah larik data. Enhanced 3DNow! yang ditanamkan dalam AMD Athlon menambahkan 24 instruksi lagi (19 instruksi di antaranya mirip dengan instruksi SSE dan 5 instruksi lainnya berfungsi sebagai pengolah DSP dan komunikasi), sehingga Enhanced 3DNow! memiliki total 45 instruksi.
Menurut AMD, 3DNow! menyediakan peningkatan kinerja terhadap MMX seperti yang dilakukan pada Intel SSE, tetapi instruksi-instruksi dalam 3DNow! lebih sederhana dan juga lebih sedikit. Meskipun kemampuannya mirip, ternyata 3DNow! dan SSE tidak kompatibel satu sama lainnya, sehingga perangkat lunak yang didesain secara spesifik untuk SSE tidak akan mendukung 3DNow! dan harus didesan ulang dan begitu pula sebaliknya.
3DNow! Professional bahkan menambahkan lebih banyak lagi instruksi, yakni 51 instruksi yang mirip dengan instruksi SSE, sehingga prosesor yang menggunakan 3DNow! Professional juga mendukung penuh instruksi SSE. 3DNow! tidak dikembangkan lagi pada saat prosesor AMD64 (AMD Opteron, AMD Athlon 64, AMD Athlon FX) dirilis ke pasaran, karena AMD kembali membeli lisensi SSE2 dari Intel.
Seperti halnya SSE, set instruksi 3DNow! juga mendukung operasi SIMD terhadap bilangan floating-point dengan presisi tunggal dan memungkinkan melakukan operasi hingga empat operasi tiap siklus detaknya. Instruksi floating-point 3DNow! dapat digabungkan dengan instruksi MMX tanpa mengorbankan performa. Selain itu, 3DNow! juga mendukung data prefetching.
Dukungan perangkat lunak terhadap 3DNow! juga lumayan banyak. Microsoft telah mendukung 3DNow! semenjak Windows 95 OSR 2.1, serta Windows NT 4.0. DirectX 6.0 juga didesain agar mendukung 3DNOw! secara penuh. Selain itu, karena prosesor AMD Athlon XP, dan prosesor AMD64 mendukung penuh SSE dan SSE2, dukungan terhadap prosesor AMD pun menjadi semakin banyak.
Instruksi
Instruksi 3DNow!
Instruksi | Jenis | Keterangan |
---|---|---|
PAVGUSB | Integer | Packed 8-bit Unsigned Integer Averaging |
PFADD | Aritmetika | Packed Single-FP Addition |
PFSUB | Aritmetika | Packed Single-FP Substraction |
PFSUBR | Aritmetika | Packed Single-FP Reverse Substraction |
PFACC | Aritmetika | Packed Single-FP Accumulate |
PFCMPGE | Perbandingan | Packed Single-FP Comparison, greater or equal |
PFCMPGT | Perbandingan | Packed Single-FP Comparison, greater |
PFCMPEQ | Perbandingan | Packed Single-FP Comparison, equal |
PFMIN | Aritmetika | Packed Single-FP Minimum |
PFMAX | Aritmetika | Packed Single-FP Maximum |
PI2FW | Konversi | Packed INT16 integer to Packed Single-FP conversion |
PI2FD | Konversi | Packed INT32 integer to Packed Single-FP conversion |
PF2IW | Konversi | Packed Single-FP to Packed INT16 integer conversion |
PF2ID | Konversi | Packed Single-FP to Packed INT32 integer conversion |
PFRCP | Aritmetika | Single-FP Reciprocal Approximation |
PFRSQRT | Aritmetika | Single-FP Reciprocal Square Root Approximation |
PFMUL | Aritmetika | Packed Single-FP Multiplication |
PFRCPIT1 | Aritmetika | Packed Single-FP Reciprocal First Iteration Step |
PFRSQIT1 | Aritmetika | Packed Single-FP Reciprocal Square Root First Iteration Step |
PFRCPIT2 | Aritmetika | Packed Single-FP Reciprocal / Reciprocal Square Root Second Iteration Step |
PMULHRW | Integer | Packed INT16 integer Multiply With Rounding |
PSWAPW | Integer | Packed INT16 integer Swap |
FEMMS | Keadaan (state) | Faster Entry / Exit of the MMX or FP state |
PREFETCH | Kemampuan cache | Prefetch 32-byte line into L1 data cache |
Instruksi Enhanced 3DNow!
Instruksi | Jenis | Keterangan |
---|---|---|
PF2IW | Konversi | Packed Single-FP to INT16 integer Conversion with Sign Extend |
PFNACC | Aritmetika | Packed Single-FP Negative Accumulate |
PFPNACC | Aritmetika | Packed Single-FP Mixed Positive-Negative Accumulate |
PI2FW | Konversi | Packed INT16 integer to Single-FP Conversion |
PSWAPD | Integer | Packed Swap Doubleword |
MASKMOVQ | Kemampuan cache | Streaming Store Using Byte Mask (Cache Bypass) |
MOVNTQ | Kemampuan cache | Streaming Store (Cache Bypass) |
PAVGB | Integer | Packed Average of Unsigned INT8 |
PAVGW | Integer | Packed Average of Unsigned INT16 |
PEXTRW | Integer | Extract Word into Integer Register |
PINSRW | Integer | Insert Word from Integer Register |
PMAXSW | Integer | Packed Maximum of Signed INT16 |
PMAXUB | Integer | Packed Maximum of Unsigned INT16 |
PMINSW | Integer | Packed Minimum of Signed INT16 |
PMINUB | Integer | Packed Minimum of Unsigned INT16 |
PMOVMSKB | Perpindahan | Move Byte Mask to Integer Register |
PMULHUW | Integer | Packed Multiply High Unsigned INT16 |
PREFETCHNTA | Kemampuan cache | Move Data Closer to the Processor Using the NTA Reference |
PREFETCHT0 | Kemampuan cache | Move Data Closer to the Processor Using the T0 Reference |
PREFETCHT1 | Kemampuan cache | Move Data Closer to the Processor Using the T1 Reference |
PREFETCHT2 | Kemampuan cache | Move Data Closer to the Processor Using the T2 Reference |
PSADBW | Integer | Packed Sum of Absolute Byte Difference |
PSHUFW | Pengocokan (shuffle) | Packed Shuffle Word |
SFENCE | Kemampuan cache | Store Fence |