Beschreibung
AltiVec ist eine zusätzliche Recheneinheit in den G4 und G5 Prozessoren, die darauf spezialisiert ist große Datenmengen mit gleichartigen Funktionen zu verarbeiten. Im Gegensatz zum "normalen" Prozessor, der jeweils einen Datenwert mit einer Instruktion bearbeitet, bearbeitet AltiVec mit einem Befehl eine Gruppe von Daten, beispielsweise bis zu 4 Fließkommazahlen.
Derartige Prozessoren bezeichnet man auch als "Vektorrechner", daher das "Vec" im Namen. AltiVec ist eingetragenes Warenzeichen von Freescale. Synonym dazu ist "Velocity Engine" als Apple und VMX (Vector/SIMD Multimedia Extenstion) als IBM Trademark.
Ähnliche Ansätze sind in der x86 Welt unter den Namen MMX, SSE und 3DNow bekannt, jedoch keiner davon so konsequent und leistungsfähig wie AltiVec.
Die AltiVec Einheit läuft parallel zum restlichen Prozessor und kann durch geschickte Programmierung bestimmte Aufgaben bis zu etwa einem Faktor 50 gegenüber der Ausführung auf dem "normalen" Prozessor beschleunigen. Wie viel von dieser Beschleunigung im gesamten Programm spürbar wird hängt jedoch stark davon ab wie hoch der Anteil der durch AltiVec beschleunigbaren Funktionen ist, realistisch sind Geschwindigkeitsgewinne zwischen einigen Prozent und einer Vervierfachung.
Besonders profitieren können Grafik-, Bild-, Video- und Audio-Verarbeitung von der AltiVec Einheit. AltiVec muß allerdings von der Software gezielt unterstützt werden. Photoshop z.B. tut dies, QuickTime ebenfalls. Andere Anwendungen, z.B. Textverarbeitung, können artbedingt von AltiVec nicht profitieren.
Probleme
Das Problem an AltiVec ist jedoch:
- viele Entwickler sind sich der Möglichkeiten nicht bewusst und wissen kaum mehr darüber, als das es ihr Programm „schneller machen kann“
- die Recheneinheit arbeitet so schnell, dass es schwierig ist, sie stets mit Rechennachschub zu versorgen. Die breitbandige Architektur des G5-Rechners ist hierbei ein großer Vorteil gegenüber vorigen G4-Systemen.
Technische Details
AltiVec verfügt über 32 Register mit jeweils 128 Bit Breite, die zusätzlich zu den Integer und FP Registern des Prozessors zur Verfügung stehen. Die Register können 8, 16 und 32 Bit Daten enthalten, also jeweils 16, 8 oder 4 Werte pro Register. Die Rechenoperationen in AltiVec sind relativ einfach, es gibt die Grundrechenarten für ganze Zahlen bei 8, 16 und 32 Bit und Fliesskomma bei 32 Bit, sowie eine Reihe von logischen Operationen. Dazu kommt eine sogenannte MAC Funktion, ein "Multiply Accumulate", das bei der Signalverarbeitung viel gebraucht wird, dabei wird erst eine Multiplikation und danach eine Addition ausgeführt. Da dies überlappend passieren kann ist es möglich nach dem ersten Rechenschritt in jedem Takt einen neuen MAC Befehl auf ein ganzes Register voller Daten auszuführen, effektiv also z.B. 8 Fließkommaoperationen pro Takt.
Verweise
- IBM erklärt Entwicklern den AltiVec-Einsatz.
- Kategorien
- Softwareentwicklung, Prozessoren