3DNow!
From Wikipedia, the free encyclopedia
|
3DNow! is the name of a multimedia extension created by AMD for its processors, starting with the K6-2 in 1998. It is an addition of SIMD instructions to the traditional x86 instruction set, designed to improve a CPU's ability to perform the vector processing requirements of many graphic-intensive applications.
History3DNow! was originally developed as an enhancement to the MMX instruction set. The original idea behind its creation was to extend it from only operating on integer math to also accelerating floating point calculations. The stratigic and marketing need to provide for 3D calculations in the floating point domain was especially needed by AMD. The K6 processor at the time was not well equipped for intensive floating point mathematics in comparison to the Intel Pentium II. The 3DNow! instruction set was created during the late 1990s when 3D graphics was exploding in popularity because of 3D gaming, and 3D games heavily use floating point arithmetic. Whereas earlier in the '90s AMD could easily get by with limited floating point performance, because the vast majority of software was integer-calculation-based, with which the K6 was extremely proficient, 3D gaming and advanced multimedia applications were quickly changing the landscape. OverviewThe 3DNow! technology contains 21 new instructions that support SIMD floating-point operations and includes SIMD integer operations, data prefetch, and faster MMX-to-floating-point switching. Later, Intel would add similar (but incompatible) instructions to the Pentium III, known as SSE. AMD upgraded the instruction set over time. The first enhancement was called quite simply Enhanced 3DNow! (sometimes Extended 3DNow! or 3DNow!+), introduced with the first-generation Athlons which added 24 new instructions mostly dealing with instruction prefetching and implementing a partial SSE1 instruction set. The K6-2+/III+ series added only the 5 new DSP instructions, but not the 19 new MMX instructions. The second enhancement was called 3DNow! Professional, which was introduced with the Athlon XP processors; this version basically integrated the full SSE1 technology from Intel and combined it with Enhanced 3DNow!. AMD added two new 3DNow! instructions pfrsqrtv (reciprocal square root approximation for a pair of 32-bit floats) and pfrcpv (reciprocal approximation for a pair of 32-bit floats) in its Geode GX and Geode LX which are currently absent in all the other processors. Advantages and disadvantagesOne advantage of 3DNow! is that it is possible to add or multiply the two numbers that are stored in the same register. 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 instruction set. A disadvantage with 3DNow! compared to SSE is that it only stores two numbers in a register, as opposed to four in SSE. However, 3DNow! instructions can generally be executed with a lower latency and quicker throughput than SSE instructions. 3DNow! also shares the same physical registers as MMX, while SSE has its own independent registers. Because these MMX and 3DNow! registers are also used 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! & MMX register states can be saved and restored by the traditional x87 FNSAVE and FRSTR instructions. Using the pre-existing x87 instructions meant that no operating system modifications had to be made to support 3DNow!. By contrast, to save and restore the state of SSE registers required the use of the newly added FXSAVE and FXRSTR instructions; the FX* instructions are an upgrade to the older x87 save and restore instructions because these could save not only SSE register states but also those x87 register states (hence which meant that it could save MMX and 3DNow! registers too). On AMD Athlon XP and K8-based cores (i.e. Athlon 64), assembly programmers have noted that it is possible to actually use both 3DNow! and SSE at the same time. Although both share the same functional unit, this can allow more performance by avoiding some register pressure, but it is difficult to accomplish. [1] Processors supporting 3DNow!
External links
cs:3DNow! de:3DNow! es:3DNow! eo:3DNow! fr:3DNow! id:3DNow! it:3DNow! he:3DNow! nl:3D NOW! ja:3DNow! pl:3DNow! pt:3DNow! ru:3DNow! vi:3DNow! |


