AltiVec

AltiVec ™, VMX and Velocity Engine, which is the name for the Motorola or for the developed by IBM for the PowerPC family SIMD unit.

Using AltiVec can apply at the same time the same operation on multiple data words. The vector unit supports (to be calculated rather than individual figures, taken together regarded as a vector) up to sixteen elements per vector. So use a software the full power of AltiVec, they can theoretically to do arithmetic tasks to one sixteenth of the time usually needed.

Technology

A AltiVec vector registers is always 128 bits wide. Depending on the data type can 4 elements are kept and used for the calculation in such a vector register 16, 8, or. In addition to the integer data types 'byte', 'short' and 'long' is also the floating point data type 'float ' (equivalent to IEEE 754 single) usable. Double precision floating-point values ​​( 'double' ) are not supported by AltiVec.

Thus we have the following configuration of an AltiVec vector register:

(Source: AltiVec Execution Unit and Instruction Set Overview)

The problem of AltiVec, however:

  • Many developers are not aware of the possibilities and do not know much more about it than that it " can make faster," their program, because the marketing program mentioned only accelerations in the graphics, multimedia and networking sectors. But only to the fact that programs of these areas make extensive use of floating-point operations, especially this leads.
  • The arithmetic unit operates so quickly that it is difficult always to supply computing supplies. The wideband architecture of the G5 processors in this case provides no relevant advantage over previous G4 systems. G5 processors have two complete floating-point units, which operate independently of the AltiVec unit and can actually consume the entire bandwidth of the processor. Furthermore, the AltiVec unit of the last G4 from Motorola works more efficiently than the G5, which comes from IBM, and its Altivec unit was " subsequently " attached to the existing processor.

Compiler support

The GNU Compiler Collection GCC supports AltiVec via so-called "Built-In Functions" as well as special vector types which simple operations such as , - are, *, /, etc. ' vectorized ' automatically

53064
de