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 sunting

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 sunting

Instruksi 3DNow! sunting

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! sunting

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

Pranala luar sunting