Befehlsausführung
Der Power5-Kern und die acht SPEs verfügen über einen 32 Bit breiten RISC-Befehlssatz, der PPE-Kern über 64 Bit breite allgemeine Register (GPR), 64 Bit breite Gleitkomma-Register(FPR) und 128 Bit breite VMX-Register.
Die SPEs haben generell 128 Bit breite Register für skalare Operationen mit 8 bis 128 Bit breiten
Datenworten oder für SIMD-Operationen (Single Instruction Multiple Data) mit Integer- oder Gleitkomma-Daten. Für die SPEs wurde eine neue Instruction-Set-Architecture (ISA) mit drei Operanden entworfen.
Auf jedes der 128-Bit-Register kann damit mit sieben Bit bei jeder Instruktion zugegriffen werden. Obwohl die SPE ISA neu ist, wurden die Operationen denen der Power-VMX-Einheit angeglichen. Volle IEEE-Gleitkomma-Arithmetik bieten die SPUs nicht, es wird lediglich ein ausgewählter Teilbereich unterstützt.
| Es gibt keine Abhängigkeiten |
|---|
| Daten (Operanden) sind verfügbar |
| Die adressierte Instruktion an der geraden Adresse ist eine Pipeline-0- (even) Instruktion (= die drei niederwertigsten Adressbits sind 000) |
| Die adressierte Instruktion an der ungeraden Adresse ist eine Pipeline-1- (odd) Instruktion (= die drei niederwertigsten Adressbits sind 100) |
| Die Instruktionen sind nach Pipeline sortiert: Pipeline 0, dann Pipeline 1 |
| Die Even-Pipeline enthält die Gleitkomma- und Integer-Einheiten und die Odd-Pipeline, die Local-Store-, Channel-, Permute- und Branch-Einheit. Die meisten Berechnungen werden daher über Pipeline 0 und die Datentransfers über Pipeline 1 ausgeführt. Die SPE verfügt über eine 16x16-Bit-Multipliziereinheit. Eine 32-Bit-Integer-Multiplikation benötigt daher fünf Instruktionen: drei 16-Bit-Multiplikationen und zwei Additionen. (b) |
| Damit die SPE ihre Arbeit aufnehmen kann, sind die Pipelines mit Instruktionen zu füllen. Es gibt drei Arten von Instruktionen, die aus dem lokalen Speicher geladen werden (Fetch): Flushinitiated, Inline-Prefetch und Hint Fetches. Die interne Logik liest 32 Instruktionen (128 Byte) auf einmal in den Buffer (ILB), und von dort werden jeweils zwei Instruktionen zur Ausgabe in Richtung Pipelines zu den funktionalen Einheiten befördert, sobald die Operanden zur Verfügung stehen. Bestimmte Instruktionen laden weitere Instruktionen in den ILB nach (Hint). |



