AltiVec

from Wikipedia, the free encyclopedia

AltiVec is a SIMD unit developed by IBM and Motorola for the PowerPC processor family. AltiVec is also a trademark of Motorola, which is why Apple uses the name Velocity Engine and IBM uses the name VMX (Vector Media Extensions) for this SIMD unit.

With the help of AltiVec the same operation can be applied to several data words at the same time. The vector unit supports up to sixteen elements per vector (instead of calculating individual numbers, they are viewed together as a vector ). So if a software uses the full capabilities of AltiVec, it can theoretically complete arithmetic tasks in up to a sixteenth of the time otherwise required.

Originally built into the PowerPC processors, the SIMD unit was also built into later (from POWER6) IBM Power processors and finally expanded with POWER7 as VSX (Vector Scalar Extensions) to 64 registers with a width of 128 bits. The further development continues after the end of the PowerPC processors (with the change from Apple to Intel processors) again at IBM in the IBM POWER platform:

specification Surname realized in processor
Power ISA v.2.03 Altivec / VMX POWER6
Power ISA v.2.06 VSX POWER7
Power ISA v.2.07 VSX-2 POWER8
Power ISA v.3.0 VSX-3 POWER9

technology

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

This results in the following configuration of an AltiVec vector register:

Data type Width of the data type Items held acceleration
byte 8 bits 16 16 ×
short 16 bits 8th 8 ×
long 32 bits 4th 4 ×
float (corresponds to IEEE 754 single) 32 bits 4th 4 ×

However, AltiVec's problem is:

  • Many developers are not aware of the possibilities and hardly know more about it than that it can “make their program faster”, because the marketing program only mentioned accelerations in the graphics, multimedia and network areas. However, this only leads to programs in these areas making extensive use of floating point operations in particular.
  • The arithmetic unit works so fast that it is difficult to always supply it with new arithmetic supplies. The broadband architecture of the G5 processors does not offer any relevant advantage over previous G4 systems. G5 processors already have two full floating point units that work 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 that of the G5, which comes from IBM, and whose Altivec unit was "retrofitted" 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 with which simple operations such as +, -, *, / etc. are automatically 'vectorized'.

Individual evidence

  1. https://www.ibm.com/systems/power/openpower/posting.xhtml
  2. AltiVec Execution Unit and Instruction Set Overview , NXP Semiconductors (English)
  3. GCC 3.3.6 manuals. PowerPC AltiVec built-in functions. In: GCC online documentation. The GCC team, p. 5.45.3 , accessed on November 23, 2010 (a listing of the GCC AltiVec extensions).
  4. Using vector instructions through built-in functions. Retrieved October 13, 2012 .