3DNow!

From MediaCoderWiki

(Redirected from 3DNow)
Jump to: navigation, search

3DNow! is the trade 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.


History

3DNow! 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 strategic 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 1990s 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.

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. 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. [7]

Processors supporting 3DNow!

  • All AMD processors after K6-2 (inclusive)
  • National Semiconductor Geode, later AMD Geode.
  • VIA C3 (also known as Cyrix III) "Samuel", "Ezra", and "Eden" cores.
  • IDT Winchip 2
Personal tools