Information Technology Reference
In-Depth Information
Allerdings ist es erforderlich, einen zusätzlichen Operanden in arithmetischen Vektorbefehlen vor-
zusehen, um anzugeben, wie wenigstens einer der beiden Quellvektoren umzuordnen ist, bevor die
eigentliche Operation ausgeführt wird. Problematisch ist, dass für die Codierung der Elementanord-
nung z.B. beim Pentium 4 maximal 64 Bit erforderlich sind, nämlich dann, wenn mit 128-Bit-Vek-
toren in denen 16 Elemente zu je acht Bit enthalten sind, gearbeitet wird (je vier Bit für jedes der 16
Elemente).
Besser ist, nicht beliebige Anordnungen von Elementen, sondern nur eine Auswahl der wichtigsten
Anordnungen zu unterstützen. Dies ist z.B. in der als Coprozessor definierten SIMD-Einheit des
Nemesis C der TU Berlin möglich, der über Befehle verfügt, mit denen sich die Elemente des ersten
Operandenvektors optional um N rotieren und ggf. in der Reihenfolge vertauschen lassen. Für 128-
Bit-Vektoren mit 16 Elementen zu je acht Bit ist dies in fünf Bit codierbar [114, 198]. Ein entspre-
chendes Assemblerprogramm zur Additionen der Zahlen a bis h ist in Bild 3.2 dargestellt.
1:
vaddw
v0, v0, v1
// Vektoraddition v0 = [a, b, c, d] + [e, f, g, h]
2:
vaddw
v2, v1 rot 2, v1
// Vektoraddition v2 = [-, -, a + e, b + f] + [-, -, c + g, d + h]
3:
vaddw
v3, v2 rot 1, v2
// Vektoraddition v3 = [-, -, -, a + e + c + g] + [-, -, -, b + f + d + h]
4:
vmvw
r0, v3 rot 0
// Ergebniszuweisung r0 = a+...+h
Bild 3.2. Assemblerprogramme zur Berechnung der Summe der Zahlen a bis h für eine als Copro-
zessor realisierte SIMD-Einheit des Nemesis C [114, 198]
3.1.2 Feldrechner
Mit den zuvor beschriebenen Multimedia-Einheiten ist es bei geringem Aufwand
möglich, den Durchsatz der Operationen zu verbessern, indem die Menge der in
einem Vektor enthaltenen Elemente vergrößert wird. Natürlich steigt hierdurch der
Speicherbedarf und es sinkt die Zugriffsgeschwindigkeit, was vor allem deshalb von
Nachteil ist, weil Vektoren, die eine große Anzahl an Elementen besitzen, nur selten
benötigt werden. Zwar ist es prinzipiell möglich, mehrere Objekte in einem Vektor
zu kombinieren (z.B. zwei dreielementige Vektoren in einem sechselementigen Vek-
tor), jedoch ist deren Verarbeitung i.Allg. komplizierter, als würden sie separat
gespeichert. So kann es z.B. notwendig sein, vor einer Berechnung die beteiligten
Vektoren zu zerlegen und die erzeugten Ergebnisse anschließend wieder zu Vekto-
ren zusammenzusetzen. Die Verarbeitung einer großen Anzahl gleichförmiger oder
auch unterschiedlicher Objekte sollte deshalb besser auf andere Weise erfolgen,
nämlich von einer aus Recheneinheiten , den sog. PEs ( processing elements ) beste-
henden Matrix (array), die durch einen einzelnen Operationsstrom gesteuert wird.
Die Objekte werden hierbei jeweils lokal in den den einzelnen Recheneinheiten
zugeordneten Speichern gehalten. Die Summe der Recheneinheiten und lokalen
Speicher formt die sog. Rechenmatrix (computing array), die vergleichbare Eigen-
schaften wie eine Multimedia-Einheit besitzt: Während die Rechenmatrix eine ein-
zelne Operation auf N Daten in N unterschiedlichen Recheneinheiten ausführt, wirkt
in einer Multimedia-Einheit eine Operation auf N Elemente eines einzelnen Vektors.
Allerdings lassen sich die Recheneinheiten eines Feldrechners, anders als bei den
Multimedia-Einheiten, individuell an den bearbeiteten Operationsstrom koppeln
bzw. ablösen. Zunächst sind dabei sämtliche Recheneinheiten der Matrix aktiv. Die
Auswahl der für eine Berechnung zu verwendenden Einheiten geschieht, indem Ver-
gleichsoperationen auf lokalen, ggf. auch globalen Daten ausgeführt und die Ergeb-
 
Search WWH ::




Custom Search