2
3DNow! Technology
Chapter 1
3DNow! Technology Manual
21928G/0—March 2000
AMD Athlon processor implements five new 3DNow!
technology instructions that add streaming and digital signal
processing (DSP) technologies. For more information, see the
AMD Extensions to the 3DNow! and MMX Instruction Sets
Manual,
order# 22466.
Key Functionality
The 3DNow! technology instructions are intended to open a
major processing bottleneck in a 3D graphics application—
floating-point operations. Today's 3D applications are facing
limitations due to the fact that only one floating-point
execution unit exists in the most advanced x86 processors. The
front end of a typical 3D graphics software pipeline performs
object physics, geometry transformations, clipping, and
lighting calculations. These computations are very
floating-point intensive and often limit the features and
functionality of a 3D application. The source of performance for
the 3DNow! instructions originates from the single instruction
multiple data (SIMD) implementation. With SIMD, each
instruction not only operates on two single-precision,
floating-point operands, but the microarchitecture within the
processor can execute up to two 3DNow! instructions per clock
through two register execution pipelines, which allows for a
total of four floating-point operations per clock. In addition,
because the 3DNow! instructions use the same floating-point
registers as the MMX technology instructions, task switching
between MMX and 3DNow! operations is eliminated.
The 3DNow! technology instruction set contains 21 instructions
that support SIMD floating-point operations and includes SIMD
integer operations, data prefetching, and faster
MMX-to-floating-point switching. To improve MPEG decoding,
the 3DNow! instructions include a specific SIMD integer
instruction created to facilitate pixel-motion compensation.
Because media-based software typically operates on large data
sets, the processor often needs to wait for this data to be
transferred from main memory. The extra time involved with
retrieving this data can be avoided by using the new 3DNow!
instruction called PREFETCH. This instruction can ensure that
data is in the level 1 cache when it is needed. To improve the
time it takes to switch between MMX and x87 code, the 3DNow!