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).
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.
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.
packed 8-bit unsigned integer averaging
packed single-fp addition
packed single-fp substraction
packed single-fp reverse substraction
packed single-fp accumulate
packed single-fp comparison, greater or equal
packed single-fp comparison, greater
packed single-fp comparison, equal
packed single-fp minimum
packed single-fp maximum
packed int16 integer to packed single-fp conversion
packed int32 integer to packed single-fp conversion
packed single-fp to packed int16 integer conversion
packed single-fp to packed int32 integer conversion
single-fp reciprocal approximation
single-fp reciprocal square root approximation
packed single-fp multiplication
packed single-fp reciprocal first iteration step
packed single-fp reciprocal square root first iteration step
packed single-fp reciprocal / reciprocal square root second iteration step
packed int16 integer multiply with rounding
packed int16 integer swap
faster entry / exit of the mmx or fp state
prefetch 32-byte line into l1 data cache
instruksi enhanced 3dnow!
packed single-fp to int16 integer conversion with sign extend
packed single-fp negative accumulate
packed single-fp mixed positive-negative accumulate
packed int16 integer to single-fp conversion
packed swap doubleword
streaming store using byte mask (cache bypass)
streaming store (cache bypass)
packed average of unsigned int8
packed average of unsigned int16
extract word into integer register
insert word from integer register
packed maximum of signed int16
packed maximum of unsigned int16
packed minimum of signed int16
packed minimum of unsigned int16
move byte mask to integer register
packed multiply high unsigned int16
move data closer to the processor using the nta reference
move data closer to the processor using the t0 reference
move data closer to the processor using the t1 reference
move data closer to the processor using the t2 reference
packed sum of absolute byte difference
packed shuffle word