3DNow! is a deprecated extension to the
x86
x86 (also known as 80x86 or the 8086 family) is a family of complex instruction set computer (CISC) instruction set architectures initially developed by Intel, based on the 8086 microprocessor and its 8-bit-external-bus variant, the 8088. Th ...
instruction set
In computer science, an instruction set architecture (ISA) is an abstract model that generally defines how software controls the CPU in a computer or a family of computers. A device or program that executes instructions described by that ISA, s ...
developed by
Advanced Micro Devices
Advanced Micro Devices, Inc. (AMD) is an American multinational corporation and technology company headquartered in Santa Clara, California and maintains significant operations in Austin, Texas. AMD is a Information technology, hardware and F ...
(AMD). It adds
single instruction multiple data (SIMD) instructions to the base x86 instruction set, enabling it to perform
vector processing
In computing, a vector processor or array processor is a central processing unit (CPU) that implements an instruction set where its Instruction (computer science), instructions are designed to operate efficiently and effectively on large Array d ...
of
floating-point
In computing, floating-point arithmetic (FP) is arithmetic on subsets of real numbers formed by a ''significand'' (a Sign (mathematics), signed sequence of a fixed number of digits in some Radix, base) multiplied by an integer power of that ba ...
vector operations using
vector registers. This improvement enhances the performance of many graphics-intensive applications. The first microprocessor to implement 3DNow! was the
AMD K6-2, introduced in 1998. In appropriate applications, this enhancement raised the speed by about 2–4 times.
However, the instruction set never gained much popularity, and AMD announced in August 2010 that support for 3DNow! would be dropped in future AMD processors, except for two instructions,
PREFETCH
and
PREFETCHW
. These two instructions are also available in Bay-Trail Intel processors.
History
3DNow! was developed at a time when
3D graphics
3D computer graphics, sometimes called CGI, 3D-CGI or three-dimensional computer graphics, are graphics that use a three-dimensional representation of geometric data (often Cartesian) that is stored in the computer for the purposes of perfor ...
were becoming mainstream in PC multimedia and games. Realtime display of 3D graphics depended heavily on the host CPU's floating-point unit (FPU) to perform
floating-point
In computing, floating-point arithmetic (FP) is arithmetic on subsets of real numbers formed by a ''significand'' (a Sign (mathematics), signed sequence of a fixed number of digits in some Radix, base) multiplied by an integer power of that ba ...
calculations, a task in which AMD's
K6 processor was easily outperformed by its competitor, the Intel Pentium II.
As an enhancement to the
MMX instruction set, the 3DNow! instruction-set augmented the MMX SIMD registers to support common arithmetic operations (add/subtract/multiply) on single-precision (32-bit) floating-point data. Software written to use AMD's 3DNow! instead of the slower
x87 FPU could execute up to four times faster, depending on the instruction mix.
Versions
3DNow!
The first implementation of 3DNow! technology contains 21 new instructions that support
SIMD
Single instruction, multiple data (SIMD) is a type of parallel computer, parallel processing in Flynn's taxonomy. SIMD describes computers with multiple processing elements that perform the same operation on multiple data points simultaneousl ...
floating-point operations. The 3DNow! data format is packed,
single-precision, floating-point. The 3DNow! instruction set also includes operations for SIMD integer operations, data prefetch, and faster MMX-to-floating-point switching. Later,
Intel
Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California, and Delaware General Corporation Law, incorporated in Delaware. Intel designs, manufactures, and sells computer compo ...
would add similar (but incompatible) instructions to the
Pentium III
The Pentium III (marketed as Intel Pentium III Processor, informally PIII or P3) brand refers to Intel's 32-bit x86 desktop and mobile CPUs based on the sixth-generation P6 (microarchitecture), P6 microarchitecture introduced on February 28, 1999 ...
, known as
SSE (Streaming SIMD Extensions).
3DNow! floating-point instructions are the following:
*
PI2FD
Packed 32-bit integer to floating-point conversion
*
PF2ID
Packed floating-point to 32-bit integer conversion
*
PFCMPGE
Packed floating-point comparison, greater or equal
*
PFCMPGT
Packed floating-point comparison, greater
*
PFCMPEQ
Packed floating-point comparison, equal
*
PFACC
Packed floating-point accumulate
*
PFADD
Packed floating-point addition
*
PFSUB
Packed floating-point subtraction
*
PFSUBR
Packed floating-point reverse subtraction
*
PFMIN
Packed floating-point minimum
*
PFMAX
Packed floating-point maximum
*
PFMUL
Packed floating-point multiplication
*
PFRCP
Packed floating-point reciprocal approximation
*
PFRSQRT
Packed floating-point reciprocal square root approximation
*
PFRCPIT1
Packed floating-point reciprocal, first iteration step
*
PFRSQIT1
Packed floating-point reciprocal square root, first iteration step
*
PFRCPIT2
Packed floating-point reciprocal/reciprocal square root, second iteration step
3DNow! integer instructions are the following:
*
PAVGUSB
Packed 8-bit unsigned integer averaging
*
PMULHRW
Packed 16-bit integer multiply with rounding
3DNow! performance-enhancement instructions are the following:
*
FEMMS
Faster entry/exit of the MMX or floating-point state
*
PREFETCH/PREFETCHW
Prefetch at least a 32-byte line into L1 data cache (this is the only non-deprecated instruction)
3DNow! extensions
There is little or no evidence that the second version of 3DNow! was ever officially given its own trade name. This has led to some confusion in documentation that refers to this new instruction set. The most common terms are ''Extended 3DNow!'', ''Enhanced 3DNow!'' and ''3DNow!+''. The phrase "Enhanced 3DNow!" can be found in a few locations on the AMD website but the capitalization of "Enhanced" appears to be either purely grammatical or used for emphasis on processors that may or may not have these extensions (the most notable of which references a benchmark page for the K6-III-P that does not have these extensions).
This extension to the 3DNow! instruction set was introduced with the first-generation
Athlon
AMD Athlon is the brand name applied to a series of x86, x86-compatible microprocessors designed and manufactured by AMD, Advanced Micro Devices. The original Athlon (now called Athlon Classic) was the first seventh-generation x86 processor a ...
processors. The Athlon added five new 3DNow! instructions and 19 new MMX instructions. Later, the
K6-2+ and
K6-III+ (both targeted at the mobile market) included the five new 3DNow! instructions, leaving out the 19 new MMX instructions. The new 3DNow! instructions were added to boost
DSP. The new MMX instructions were added to boost
streaming media
Streaming media refers to multimedia delivered through a Computer network, network for playback using a Media player (disambiguation), media player. Media is transferred in a ''stream'' of Network packet, packets from a Server (computing), ...
.
The 19 new MMX instructions are a subset of Intel's SSE instruction set. In AMD technical manuals, AMD segregates these instructions apart from the 3DNow! extensions.
In AMD customer product literature, however, this segregation is less clear where the benefits of all 24 new instructions are credited to enhanced 3DNow! technology. This has led programmers to come up with their own name for the 19 new MMX instructions. The most common appears to be ''Integer SSE'' (''ISSE''). ''SSEMMX'' and ''MMX2'' are also found in video filter documentation from the public domain sector. ISSE could also refer to Internet SSE, an early name for SSE.
3DNow! extension DSP instructions are the following:
*
PF2IW
Packed floating-point to integer word conversion with sign extend
*
PI2FW
Packed integer word to floating-point conversion
*
PFNACC
Packed floating-point negative accumulate
*
PFPNACC
Packed floating-point mixed positive-negative accumulate
*
PSWAPD
Packed swap doubleword
MMX extension instructions (Integer SSE) are the following:
*
MASKMOVQ
Streaming (cache bypass) store using byte mask
*
MOVNTQ
Streaming (cache bypass) store
*
PAVGB
Packed average of unsigned byte
*
PAVGW
Packed average of unsigned word
*
PMAXSW
Packed maximum signed word
*
PMAXUB
Packed maximum unsigned byte
*
PMINSW
Packed minimum signed word
*
PMINUB
Packed minimum unsigned byte
*
PMULHUW
Packed multiply high unsigned word
*
PSADBW
Packed sum of absolute byte differences
*
PSHUFW
Packed shuffle word
*
PEXTRW
Extract word into integer register
*
PINSRW
Insert word from integer register
*
PMOVMSKB
Move byte mask to integer register
*
PREFETCHNTA
Prefetch using the NTA reference
*
PREFETCHT0
Prefetch using the T0 reference
*
PREFETCHT1
Prefetch using the T1 reference
*
PREFETCHT2
Prefetch using the T2 reference
*
SFENCE
Store fence
3DNow! Professional
''3DNow! Professional'' is a trade name used to indicate processors that combine 3DNow! technology with a complete SSE instructions set (such as SSE, SSE2 or SSE3). The
Athlon XP was the first processor to carry the 3DNow! Professional trade name, and was the first product in the Athlon family to support the complete SSE instruction set (for the total of: 21 original 3DNow! instructions; five 3DNow! extension DSP instructions; 19 MMX extension instructions; and 52 additional SSE instructions for complete SSE compatibility).
3DNow! and the Geode GX/LX
The
Geode GX and Geode LX added two new 3DNow! instructions which is absent in all other processors.
3DNow! "professional" instructions unique to the Geode GX/LX are the following:
*
PFRSQRTV
Reciprocal square root approximation for a pair of 32-bit floats
*
PFRCPV
Reciprocal approximation for a pair of 32-bit floats
Advantages and disadvantages
One advantage of 3DNow! is that it is possible to add or multiply the two numbers that are stored in the same
register
Register or registration may refer to:
Arts, entertainment, and media
Music
* Register (music), the relative "height" or range of a note, melody, part, instrument, etc.
* ''Register'', a 2017 album by Travis Miller
* Registration (organ), ...
. With SSE, each number can only be combined with a number in the same position in another register. This capability, known as ''horizontal'' in Intel terminology, was the major addition to the
SSE3
SSE3, Streaming SIMD Extensions 3, also known by its Intel code name Prescott New Instructions (PNI), is the third iteration of the SSE instruction set for the IA-32 (x86) architecture. Intel introduced SSE3 in early 2004 with the Prescott revis ...
instruction set.
A disadvantage with 3DNow! is that 3DNow! instructions and MMX instructions share the same register-file, whereas SSE adds 8 new independent registers (
XMM0
–
XMM7
).
Because MMX/3DNow! registers are shared by the standard
x87 FPU, 3DNow! instructions and x87 instructions cannot be executed simultaneously. However, because it is aliased to the x87 FPU, the 3DNow! and MMX register states can be saved and restored by the traditional x87
F(N)SAVE
and
F(N)RSTOR
instructions. This arrangement allowed
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
s to support 3DNow! with no explicit modifications, whereas SSE registers required explicit operating system support to properly save and restore the new XMM registers (via the added
FXSAVE
and
FXRSTOR
instructions.)
The FX* instructions from SSE provide a functional superset of the older x87 save and restore instructions. They can save not only SSE register states but also the x87 register states (hence are applicable also for MMX and 3DNow! operations where supported).
On AMD
Athlon XP and K8-based cores (i.e.
Athlon 64
The Athlon 64 is a ninth-generation, AMD64-architecture microprocessor produced by Advanced Micro Devices (AMD), released on September 23, 2003. It is the third processor to bear the name ''Athlon'', and the immediate successor to the Athlon XP. ...
), assembly programmers have noted that it is possible to combine 3DNow! and SSE instructions to reduce
register pressure, but in practice it is difficult to improve performance due to the instructions executing on shared functional units.
Processors supporting 3DNow!
* All
AMD
Advanced Micro Devices, Inc. (AMD) is an American multinational corporation and technology company headquartered in Santa Clara, California and maintains significant operations in Austin, Texas. AMD is a hardware and fabless company that de ...
processors after
K6-2 (based on K6), Athlon, Athlon 64 and Phenom architecture families.
** Not supported in Bulldozer, Bobcat and Zen architecture processors and their derivates.
** The last
AMD
Advanced Micro Devices, Inc. (AMD) is an American multinational corporation and technology company headquartered in Santa Clara, California and maintains significant operations in Austin, Texas. AMD is a hardware and fabless company that de ...
APU processor supporting 3DNow! is the A8-3870K, which is based on the
Llano architecture. It is also the only APU with 3DNow! instructions, as the Bobcat and up exclude support for it.
* National Semiconductor
Geode GX2, later
AMD Geode.
*
VIA C3 (also known as
Cyrix III) "Samuel", "Samuel 2", "Ezra", and "Eden ESP" cores.
*
IDT WinChip 2, 3
References
Further reading
* Case, Brian (1 June 1998). "3DNow Boosts Non-Intel 3D Performance". ''
Microprocessor Report
''Microprocessor Report'' is a newsletter covering the microprocessor industry. The publication is accessible only to paying subscribers. To avoid bias, it does not take advertisements.
The publication provides extensive analysis of new high-perf ...
''.
* Oberman, S.; Favor, G.; Weber, F. (March 1999)
"AMD 3DNow technology: architecture and implementations" ''
IEEE Micro''.
External links
3DNow Technology Partners archived from th
original(removed from AMD's website in early 2001)
AMD 3DNow Instruction Porting Guide (PDF) archived from th
original(removed from AMD's website in 2014)
3DNow Technology ManualAMD Extensions to the 3DNow and MMX Instruction Sets ManualAMD Geode LX Processors Data BookAMD 3DNow! SDK March 1999 archived
{{Multimedia extensions
AMD technologies
SIMD computing
X86 architecture