Altstimmen Vec

AltiVec ist ein Schwimmpunkt und ganze Zahl SIMD Befehlssatz, der entworfen und durch den Apfel, IBM und Freescale Halbleiter, früher den Halbleiter-Produktsektor von Motorola, (die ZIEL-Verbindung) gehörig ist, und auf Versionen von PowerPC einschließlich des G4 von Motorola, des G5 von IBM und POWER6 Verarbeiter und des PWRficient von P.A. Semi PA6T durchgeführt ist. AltiVec ist eine Handelsmarke besessen allein von Freescale, so wird das System auch Geschwindigkeitsmotor durch den Apfel und VMX durch IBM und P.A. Semi genannt, obwohl IBM kürzlich begonnen hat, AltiVec ebenso zu verwenden.

Während sich AltiVec auf einen Befehlssatz bezieht, sind die Durchführungen in Zentraleinheiten, die von IBM und Motorola erzeugt sind, in Bezug auf das Logikdesign getrennt. Bis heute hat kein Kern von IBM ein Logikdesign von AltiVec eingeschlossen, das von Motorola oder umgekehrt lizenziert ist.

AltiVec ist ein Standardteil der neuen Macht ISA v.2.03 Spezifizierung. Es war nie formell ein Teil der Architektur von PowerPC bis zu dieser Spezifizierung, obwohl es Instruktionsformate von PowerPC und Syntax verwendet hat und den opcode für solchen ausdrücklich zugeteilten Raum besetzt

hat

Zwecke.

Eigenschaften und Vergleich zu x86-64, der SIMD Erweiterungen Verströmt

Sowohl AltiVec als auch SSE zeigen 128-Bit-Vektor-Register, die sechzehn 8 Bit unterzeichnete oder nicht unterzeichnete Rotforellen, acht 16 Bit unterzeichnete oder nicht unterzeichnete Shorts, vier 32 Bit ints oder vier 32 Bit vertreten können, die Punkt-Variablen schwimmen lassen. Beide stellen Steueranweisungen des geheimen Lagers zur Verfügung, die beabsichtigt sind, um Verschmutzung des geheimen Lagers zu minimieren, wenn sie an Strömen von Daten arbeiten.

Sie stellen auch wichtige Unterschiede aus. Verschieden von SSE2 unterstützt AltiVec einen speziellen RGB "Pixel"-Datentyp, aber es funktioniert auf doppelten 64-Bit-Präzisionshin- und Herbewegungen nicht, und es gibt keine Weise, Daten direkt zwischen Skalar und Vektor-Registern zu bewegen. In Übereinstimmung mit dem Modell "der Last/Ladens" des RISC Designs von PowerPC können die Vektor-Register, wie die Skalarregister, nur davon geladen und zum Gedächtnis versorgt werden. Jedoch stellt AltiVec einen viel mehr ganzen Satz von "horizontalen" Operationen zur Verfügung, die über alle Elemente eines Vektoren arbeiten; die zulässigen Kombinationen des Datentyps und der Operationen sind viel mehr abgeschlossen. Zweiunddreißig 128-Bit-Vektor-Register, werden im Vergleich zu acht für SSE und SSE2 (erweitert zu 16 in x86-64) zur Verfügung gestellt, und die meisten Instruktionen von AltiVec nehmen drei schreiben sich ein operands im Vergleich zu nur zwei schreiben sich ein/einschreiben oder Register/Gedächtnis operands auf IA-32.

AltiVec ist auch in seiner Unterstützung für einen flexiblen Vektoren einzigartig permutieren Instruktion, in der jedes Byte eines resultierenden Vektor-Werts von jedem Byte von jedem von zwei anderen Vektoren genommen werden kann, die durch noch einen anderen Vektoren parametrisiert sind. Das berücksichtigt hoch entwickelte Manipulationen in einer einzelnen Instruktion.

Neue Versionen von GNU Compiler Collection (GCC), Bearbeiter von IBM VisualAge und anderen Bearbeitern stellen intrinsics zur Verfügung, um auf Instruktionen von AltiVec direkt von C und C ++ Programme zuzugreifen. Bezüglich der Version 4 schließt der GCC auch auto-vectorization Fähigkeiten ein, die versuchen, beschleunigte Dualzahlen von Altivec ohne das Bedürfnis nach dem Programmierer intelligent zu schaffen, intrinsics direkt zu verwenden. Das "Vektor"-Typ-Schlüsselwort wird eingeführt, um die Behauptung von heimischen Vektor-Typen z.B zu erlauben, "" erklärt, dass eine 128-Bit-Vektor-Variable "foo" genannt hat, der sechzehn nicht unterzeichnete 8-Bit-Rotforellen enthält. Die volle Ergänzung von arithmetischen und binären Maschinenbedienern wird auf Vektor-Typen definiert, so dass die normale C Ausdruck-Sprache verwendet werden kann, um Vektor-Variablen zu manipulieren. Dort werden auch innere Funktionen solcher als "" überladen, die den passenden Op-Code ausstrahlen, der auf dem Typ der Elemente innerhalb des Vektoren gestützt ist, und sehr starke Datentypprüfung beachtet wird. Im Gegensatz erklären die von Intel definierten Datentypen für IA-32 SIMD Register nur die Größe des Vektor-Registers (128 oder 64 Bit) und im Fall von einem 128-Bit-Register, ob es ganze Zahlen enthält oder Punkt-Werte schwimmen lassend. Der Programmierer muss das passende innere für die Datentypen im Gebrauch, z.B, "auswählen", um zwei Vektoren hinzuzufügen, die acht ganze 16-Bit-Zahlen enthalten.

Entwicklungsgeschichte

AltiVec wurde zwischen 1996 und 1998 durch ein zusammenarbeitendes Projekt zwischen dem Apfel, IBM und Motorola entwickelt.

Apfel war der primäre Kunde für AltiVec, bis Apfel auf mit Intel hergestellte, mit Sitz in x86 Zentraleinheiten 2006 umgeschaltet hat. Sie haben es verwendet, um Multimediaanwendungen wie QuickTime, iTunes und Schlüsselteile von Mac OS X des Apfels einschließlich im Quarzgrafikschriftsetzer zu beschleunigen. Andere Gesellschaften wie Adobe haben AltiVec verwendet, um ihre bildbearbeitenden Programme wie Adobe Photoshop zu optimieren. Motorola war erst, um ermöglichte Verarbeiter von AltiVec zu liefern, die mit ihrer G4 Linie anfangen. AltiVec wurde auch in einigen eingebetteten Systemen für die Hochleistungsdigitalsignalverarbeitung verwendet.

IBM hat durchweg VMX aus ihren MACHT-Mikroprozessoren ausgeschlossen, die für Server-Anwendungen beabsichtigt waren, wo es nicht sehr nützlich war. Der POWER6 Mikroprozessor, eingeführt 2007, führt AltiVec durch. Die Durchführung ist derjenigen in 970 und Zelle ähnlich. Der letzte Tischmikroprozessor von IBM, PowerPC 970 (hat den "G5" durch den Apfel synchronisiert), hat auch AltiVec mit der Hardware durchgeführt, die diesem von PowerPC 7400 ähnlich ist.

AltiVec ist die Standardkategorie. VEC Teil der Macht ISA v.2.03 Spezifizierung.

Der Zellbreitbandmotor, der in (unter anderen Dingen) PlayStation 3 verwendet ist, unterstützt auch AltiVec in seinem PPU mit der SPU ISA, die wird erhöht, aber architektonisch ähnlich.

Freescale bringt eine erhöhte Version von AltiVec zu gestützten Verarbeitern von QorIQ von e6500.

VMX128

IBM hat VMX für den Gebrauch in Xenon (Xbox 360) erhöht und hat diese Erhöhung VMX128 genannt. Die Erhöhungen umfassen neue Routinen, die beim Spielen ins Visier genommen sind (3D-Grafik und Spielphysik beschleunigend), und insgesamt 128 Register. VMX128 ist mit VMX/Altivec nicht völlig vereinbar, als mehrere Operationen der ganzen Zahl entfernt wurden, um Raum für die größere Register-Datei und zusätzlichen anwendungsspezifischen Operationen zu machen.

VSX

Macht ISA v2.06 führt die neuen VSX mit dem Vektoren skalaren Instruktionen ein, die SIMD erweitern, der für die Macht ISA in einer Prozession geht, um bis zu 64 Register, mit der Unterstützung für den regelmäßigen Schwimmpunkt, den dezimalen Schwimmpunkt und die Vektor-Ausführung zu unterstützen. POWER7 ist der erste Macht-Architektur-Verarbeiter, um Macht ISA v2.06 durchzuführen.

Probleme

In C ++ ist die Standardweise, auf Unterstützung von AltiVec zuzugreifen, mit dem Gebrauch der Standardschablone-Bibliothek gegenseitig exklusiv

Durchführungen

Die folgenden Verarbeiter haben AltiVec, VMX oder VMX128 haben eingeschlossen

Motorola/Freescale

  • MPC7400
  • MPC7410
  • MPC7450
  • MPC7445/7455
  • MPC7447/7447A/7457
  • MPC7448
  • MPC8641/8641D
  • MPC8640/8640D
  • MPC8610
  • QorIQ T4240

IBM

  • PowerPC 970
  • PowerPC 970FX
  • PowerPC 970MP
  • Xenon
  • Zelle B.E.
  • PowerXCell 8i
  • POWER6/POWER6+
  • POWER7

P.A. Semi

  • PA6T

Außenverbindungen


SIMD / 78 V. CHR.
Impressum & Datenschutz