AltiVec

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 13. Oktober 2012 um 20:28 Uhr durch 79.202.236.7 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Zur Navigation springen Zur Suche springen

AltiVec™, VMX und auch Velocity Engine, ist die Bezeichnung für die von Motorola bzw. für die von IBM für die PowerPC-Familie entwickelte SIMD-Einheit.

Mit Hilfe von AltiVec lässt sich dieselbe Operation auf mehrere Datenwörter gleichzeitig anwenden. Dabei unterstützt die Vektoreinheit (anstatt einzelne Zahlen zu berechnen, werden sie zusammengenommen als Vektor betrachtet) bis zu sechzehn Elemente pro Vektor. Nutzt also eine Software die volle Leistungsfähigkeit von AltiVec, kann sie arithmetische Aufgaben theoretisch in bis zu einem Sechzehntel der sonst notwendigen Zeit erledigen.

Technik

Ein AltiVec Vektorregister ist stets 128 bit breit. Je nach verwendetem Datentyp können in einem solchen Vektorregister 16, 8, oder 4 Elemente gehalten und für die Berechnung verwendet werden. Neben den Ganzzahldatentypen 'byte', 'short' und 'long' ist auch der Fließkommadatentyp 'float' (entspr. IEEE 754 single) verwendbar. Doppelt genaue Fließkommawerte ('double') werden von AltiVec nicht unterstützt.

Demnach ergibt sich die folgende Konfiguration eines AltiVec Vektorregisters:

Datentyp Breite des Datentyps Gehaltenene Elemente Beschleunigung
byte 8 bits 16 16 x
short 16 bits 8 8 x
long 32 bits 4 4 x
float (entspr. IEEE 754 single) 32 bits 4 4 x

(Quelle: AltiVec Execution Unit and Instruction Set Overview)

Das Problem von AltiVec ist jedoch:

  • Viele Entwickler sind sich der Möglichkeiten nicht bewusst und wissen kaum mehr darüber, als dass es ihr Programm „schneller machen kann“, denn das Marketing-Programm erwähnte lediglich Beschleunigungen in den Grafik-, Multimedia- und Netzwerk-Bereichen. Dies führt jedoch nur dazu, dass Programme dieser Bereiche extensiven Gebrauch von vor allem Gleitkomma-Operationen machen.
  • Die Recheneinheit arbeitet so schnell, dass es schwierig ist, sie stets mit Rechennachschub zu versorgen. Die breitbandige Architektur der G5-Prozessoren bietet hierbei keinen relevanten Vorteil gegenüber vorigen G4-Systemen. G5 Prozessoren haben bereits zwei vollständige Gleitkommaeinheiten, die unabhängig von der AltiVec-Einheit arbeiten und eigentlich die gesamte Bandbreite des Prozessors verbrauchen können. Weiterhin arbeitet die AltiVec-Einheit des letzten G4 von Motorola effizienter als die des G5, der von IBM stammt, und dessen Altivec-Einheit „nachträglich“ an den vorhandenen Prozessor angesetzt wurde.

Compilerunterstützung

Die GNU Compiler Collection GCC unterstützt AltiVec über sogenannte “Built-In Functions” [1] als auch über spezielle Vektortypen [2]

Siehe auch

Einzelnachweise

  1. GCC 3.3.6 manuals. PowerPC AltiVec Built-in Functions. In: GCC online documentation. The GCC team, S. 5.45.3, abgerufen am 23. November 2010 (englisch, eine Auflistung der GCC AltiVec-Erweiterungen).
  2. Vorlage:Url=http://gcc.gnu.org/onlinedocs/gcc-3.3.6/gcc/Vector-Extensions.html