PC PROCESSORS
VectorC supports a number of PC processors. It can optimize code to take advantage of the features of these processors. Here is a list of those processors and some comments:-
Intel
Pentium |
The mimimum microprocessor supported by VectorC. Has no conditional move,
MMX, 3D Now! or SSE support. |
Pentium MMX |
Pentium processor with MMX instructions |
Pentium Pro |
Has conditional move and immediate floating-point compare instructions.
Can execute all Pentium instructions. No MMX support. Executes out-of-order,
so scheduling is differenct than for Pentium. |
Pentium II |
Pentium Pro with MMX instructions. Runs Pentium Pro and Pentium instructions. |
Celeron |
Pentium II with different cache. Executes exactly the same instructions as
Pentium II |
Pentium III |
Pentium II with Streaming SIMD Extensions support (SSE) |
Pentium 4 |
Also called Willamette. New processor from Intel. Not available at the time
of writing, but preliminary support is available from VectorC |
AMD
K5 |
Executes same instructions as Intel Pentium. Use Pentium optimization settings
to compile for this processor |
K6 |
Has no conditional move instructions. Early K6 processors have no MMX support.
Use Pentium optimization settings to compile for this processor. |
K6 with MMX |
Most K6 processors have MMX support. VectorC's K6 optimization option
assumes MMX support. No conditional move or 3D Now! |
K6-2 |
K6 with MMX and 3D Now! No conditional move instructions. Runs all K6
code. |
K6-3 |
K6-2 with enhanced cache. Use K6-2 optimization setting to compile for
this processor. No instructions are different |
Athlon |
Fast new processor with large degree of parallelism and out-of-order execution.
Supports MMX, 3DNow! and conditional moves. Also has a few newer MMX and
3DNow! instructions. |
Processor Compatibility
MMX - details
MMX instructions are for dealing with integers in parallel. 8 new 64-bit
registers are added. Unfortunately, MMX cannot be used at the same time as floating-point
unit, so if you want to use MMX, make sure your code is in a different function
or outer loop within a function to floating-point code (unless you are using 3D
Now! or SSE). Useful for 2D graphics. Enables you to blend images.
Try to write routines that have 8-byte alignment.
3D Now! - details
Enhancement of MMX designed by AMD. Supported by K6-2 processors and beyond.
Uses MMX registers and gives basic single-precision floating-point operations.
Also adds prefetch instructions. You cannot mix this with normal floating-point
instructions, so if you want an area of code to use 3D Now!, then do not use any
of the operations that 3D Now! does not support.
Supported operations: add, multiply, subtract, 12-bit division, division, 12-bit
reciprocal square root; all only on single-precision floating-point types.
Streaming SIMD Extensions (SSE) - details
Intel designed extensions used in Pentium III processor. Adds 8 new 128-bit registers
that can do single-precision floating-point operations. Unlike MMX, these instructions
can be used near normal floating-point code. Extremely alignment sensitive
- try to make sure that your floating-point vectors are 16-byte aligned.
Also, works best if your vectors are stored as 'structure-of-arrays' instead of
'array-of-structures'. However, this may not be suitable for your program,
so either is supported by VectorC. Also adds prefetch instructions
Supported operations: add, multiply, subtract, 12-bit division, division, 12-bit
reciprocal square root, square root; all only on single-precision floating-point
types.
Streaming SIMD Extensions 2 (SSE2)
Intel designed extensions used in Pentium 4 processor. These use the 8 128-bit
SSE registers. New instructions are added to support double-precision floating-point
values and vectors consisting of 2 double-precision components. Also allows the
old MMX instructions to use the new registers, getting rid of the restrictions
on MMX and allowing twice as much data to be processed in a single instruction.
|