Was ist ein Vektor-Prozessor

Campari

Grand Admiral Special
Mitglied seit
17.10.2000
Beiträge
17.203
Renomée
156
Im Earth-Simulator sitzen ja genug davon, aber was ist das eigentlich?
 
Ich denke mal das sind Cpus, die besonders schnell mit Vektoren rechnen können (bzw. praktisch nur mit Vektoren rechnen können).

Manche der Vektorrechnungen brauchen ja ganz schön viel Rechenleistung, zb. wenn man einen Vektor (oder einen Punkt, den man ja auch mit einem Vektor darstellen kann) um eine Achse, die durch einen 2. Vektor definiert wird drehen möchte. *wasrauskram* ich bin dabei was kleines mit Mathematica machen zu müssen :-)P), wo auch viel mit Vektoren hantiert wird. So sieht bei mir zb. die Implementierung der Vektorrechnung aus:

vec.GIF
 
gehört zwar nicht zum thema, aber ich muss es los werden....
da bin ich doch tatsächlich auf jemanden gestoßen der mit mathematica arbeitet. und das freiwillig. das verdamm.. prog müssen wir auch in der schule in mathe benutzen. (kurz und bündig ich hasse es) *buck*
 
Original geschrieben von intel_hasser
*wasrauskram* ich bin dabei was kleines mit Mathematica machen zu müssen :-)P), wo auch viel mit Vektoren hantiert wird. So sieht bei mir zb. die Implementierung der Vektorrechnung aus:

Freiwillig?!? Du machst witze! Ich hätte das Prog schon längst von meiner Platte verbannt, wenn ich es nicht bräuchte. Und die Geschichte, die ich in Mathematica mache, würde ich viel viel viel viel viel lieber in C oder gar Basic machen!

Kurz und bündig: ICH HASSE MATHEMATICA!!! ;)
 
Original geschrieben von CyRoniX
gehört zwar nicht zum thema, aber ich muss es los werden....
da bin ich doch tatsächlich auf jemanden gestoßen der mit mathematica arbeitet. und das freiwillig. das verdamm.. prog müssen wir auch in der schule in mathe benutzen. (kurz und bündig ich hasse es) *buck*

Mit Mathematica kann man schon jede Menge schöner Dinge machen, die man wohl lieber nicht auf einem Blatt lösen sollte (z.B. Integrale numerisch lösen). Wenns nicht ganz so kompliziert ist, finde ich aber Mathcad besser.

Alexander
 
Original geschrieben von Friedrich II
Im Earth-Simulator sitzen ja genug davon, aber was ist das eigentlich?

es gibt prinzipiell 2 Möglichkeiten mit Zahlen zu rechnen.
Die eine wird von normalen Rechnern benutzt und arbeitet mit normalen skalaren Zahlen.

Also 5343 + 43444.7726 * 83474.3333, sowas in der Art.

D.h aber auch, dass nur immer an einer Zahl gearbeitet werden kann.

Also X + Y, oder X * Y etc. Wenn ich 4 Zahlen mit 4 anderen Zahlen addieren will, muss ich die 4x Arbeit erledigen.

Die andere Möglichkeit rechnet mit Vektoren.

ein Vektor sieht dabei z.B so aus:
( x )
( y )

ich kann nun mit einem schritt X und Y bearbeiten.
z.B.
( x ) + ( z )
( y ) + ( z )
dadurch erreiche ich die theoretisch doppelte Leistung.

CPUs wie der K8 oder P4 können Vektoren durch SSE(2) mit 4 Zahlen oder 2 Zahlen bearbeiten, bei 32Bit respektive 64bit Genauigkeit, also Datengröße der Zahlen.

Vektorrechner sind von Anfang an darauf ausgelegt nur mit vektoren zu arbeiten. Das macht die Programmierung zwar nicht leichter, die erreichbare leistung ist allerdings sehr viel größer. VektorCPUs müssen deswegen auch nicht mit 2GHz aufwärts laufen.

so ich hoffe das war irgendwie richtig *g*
 
Dann sind solche Vectorrechner also ganz spezielle CPU's gleichsam Nackte Instruktionsbeiwagen ohne die Haupt- CPU?

Von den Dingern habe ich auch schon gehört, da soll NEC und Hitachi ziemlich firm drin sein.

Guter Beitrag auch wenn ich davon 0 Peilung habe.
 
Original geschrieben von Bokill
Dann sind solche Vectorrechner also ganz spezielle CPU's gleichsam Nackte Instruktionsbeiwagen ohne die Haupt- CPU?

Von den Dingern habe ich auch schon gehört, da soll NEC und Hitachi ziemlich firm drin sein.

Guter Beitrag auch wenn ich davon 0 Peilung habe.
ich auch nicht,

mir hat vor ein paar Minuten jemand was zum Thema SSE2 und MMX um die Ohren gehauen, dass mit Hören und Sehern vergan´gen ist, das muss ich erstmal verdauen.
Da sieht man mal wieder, dass wir hier nur rumspekulieren und raten :)
 
es gab mal vor zeiten einen sehr gute c't artikel zu dem thema, leider hab ich das meiste auch schon wieder vergessen

man kann vektorprozessoren auf jeden fall nicht mit normalen cpus vergleichen, sie sind nur für statische programme geeignet, dynamische berechnungen mit nutzereingaben (wie z.b. spiele) sind vollkommen ungeeignet dafür, man muß sich das so vorstellen, daß man eine riesige datenmenge eingibt und der rechner diese sehr schnell
 
Meines Wissens sind das SIMD (Single Instruktion Multiple Data ?) Prozessoren.

Also Prozessoren, die Intruktionen gleichzeitig auf viele Daten anwenden können.


Eine 'normale' CPU kann mit einer Opertation immer nur ein Datum verändern.
 
*sicherrinner*

Ja, da gabs damals einen Artikel über den "PACT" - ein relativ kleiner Vektorprozessor... mit "nur" 20 parallelen Verarbeitungseinheiten :]

Da wird ein "Programm" in die Cpu geladen, was die arbeitsweise bestimmt. Und dann wird gerechnet - die funktion besteht darin, dass einfach viele (wirklich sehr sehr viele) Rohdaten verarbeitet werden, ohne dass dabei die Resultate voneinander abhängig sind. Und so kann der kleine PACT mit seiner wenigkeit von 20 parallelen Ausführungseinheiten Rohdaten wirklich Sauschnell umrechnen... vor einer Weile wurde doch mal die Erde von Satelliten abgetastet - die Umrechnung der gewonnenen Datan auf eine 3D-Landkarte wäre wohl was für den PACT.

PS Der Prozzi läuft dabei glaub ich nur auf 66mhz oder so... trotzdem rammt der eine Flotte von 10 AthlonXPs ungespitzt in den Boden :o
 
Zuletzt bearbeitet:
Sch... Internetverbindung...
Das wollt ich schoin vor 2 Stunden loswerden:

Ein Vektorprozessor ist nix anderes als ein (S)MIMD-Prozessor.
Sprich: AMD und Intel haben mit ihren MMX-, SSE(2)- und 3DNow!-Befehlen quasi Teile eines Vektorprozessors in ihre Prozzis eingebaut.

Die Shader in DX8 und 9 GraKas sind auch sowas wie Vektorrechner...
Sie wenden gleiche Instruktionen auf Abermilliarden Pixel an...

SIMD -> Single Instruction Multiple Data:
Ein Befehl wird auf mehrere Daten angewendet. (AMD & Intel Prozzis)

MIMD -> Multiple Instruction Multiple Data:
Mehrere Befehle werden auf mehrere Daten angewendet. (Pixel-Shader auf Grakas)
 
Noch net lange registriert un schon en haufen zeugs gelernt das nen ich en gutes Forum
 
Vektor-Rechnung kann ich sogar im Kopf...
Aber das dauert noch länger *lol*
 
Ehm freunde ich nehm euch nur ungern die illusion ...
A Vektor rechner is auf gebiet der Bild und Tontechnik die errungenschaft der letzten jahre..
Jeder vone uch kennt sicher kompressionsdatein wie mpeg4 mpeg jpeg mp3 etc...
Wie geht ein normaler rechner zum beispiel bei einem bild vor ?
Er nimm pixel für pixel, prüft und stellt auf den bildschirm!
jedes pixel = 1 takt
Ein vektor rechner nimmt jetzt ned ein pixel sondern eine ganze zeile !
jede zeile = 1 takt
Selbes bei ton, mit vektor rechnern is es möglich ton fast in echtzeit wieder zu geben!
 
@Gast015:
Ist doch mein Reden:
S(M)IMD-Technik...
Ein Befehl arbeitet gleichzeitig auf mehreren Daten...
 
Also mal halt jetzt. Jetzt gehts in die falsche Richtung.

Ein Vektor Prozessor muss auch nicht SIMD sein (Single Instruktion Multiple Data -> Ein Befehl auf mehrere Daten... also wenn ich zb. zu 10 Registern den Wert 5 addiere ;)).

So, aber das hat weder direkt was mit Tonverarbeitung, noch sonst irgendwelchen angewandten Dingen zu tun.

Also ein Vektor Prozessor berechnet nicht irgendwie die ganze Zeile in einem Bild.


Ein Vektor Prozessor ist einfach nur eine kleine (und sehr effektive) Recheneinheit. Damit werden Matrix Multiplikationen etc. (und Datenmäßig ist ein Vektor eine Matrix mit einer Spalte bzw. einer Zeile (wie mans eben nimmt)) zum kinderspiel. Vektorprozessoren haben in der Tat eine brachiale Rechenleistung. Und nur das. Wofür man das nun einsetzt ist eine andere Frage, im Multimedia Bereich kommen soweit ich weis sogar recht selten Vektor Prozzis zum Einsatz - hauptsächlich für wissenschaftliche Projekte wo sehr viele Daten anfallen, so zb. bei der vor einiger Zeit durchgeführten Radarvermessung der Erde.

Die GPU der Graka dürfte übrigens in einen ähnlichen Bereich fallen, auf jeden Fall hat die auch eine brachiale Rechenleistung und versteht sich mit Matrizen (irgendwann, irgendwo in einer C't gabs mal ein Beispiel wo man Zellwachstum mit dem Pixelshader simuliert hat - war viel schneller als es jede x86 CPU geschafft hätte). Aber das ist jetzt ein anderes Thema.
 
Jo, in irgeneiner uralten C'T war mal ein toller Artikel über CISC, RISC, Vektor usw. Prozessoren, da haben sie anhand von Diagrammen super erklärt wie die Dinger funzen... Wenn ich mal Zeit hab such ich mal in meinem Chaos und scann mal die Diagramme ein...
 
Im grossen und ganzen passen eure Vorstellungen.

Normale CPUs rechnen mit Skalaren (einfache n-Bit Wörter). Vektor-Einheiten rechnen im Gegensatz dazu mit VL n-Bit Wörtern. VL ist dabei die Vektrolänge -- üblich sind Einheiten die Vektorlängen von 8-256 Elementen unterstützen. D.h. Vektor-Einheiten arbeiten immer nach dem SIMD Prinzip.

Einsatzzweck:
Vorwiegend Techn.-Wissenschaftliche Berechnungen (Matrix-Operationen, Jacobi-Relaxation).

Bedingungen:
Daten-Parallelitaet

SIMD Vorteile:
Geringere Instruction-Bandbreite (d.h. mehr Memorybandbreite für Daten)
Einfache Synchronisierung (Innerhalb von Vektor-Instructions gibts keine Branches!)
Einfache (vorhersagbare) Addressierung (Cache-Optimierung, strided acccess)

Nachteile:
Latenz (Blockiert Ausführung von Anweisungen die von Elementen im gerade in Arbeit befindlichen Result-Vektor abhängen so lange bis der gesamte Vektor berechnet wurde)
Vector Load/Store ist auf lineare Element-Anordnung im Speicher angewiesen
Data-dependent Branches sind ein Problem (ähnlich Latenz)
Nur Effizient für grosse gleichmäßig strukturierte Datenmengen mit def. Abhängikeiten.

Anweisungstypen:
Vektor-Vektor Instruktionen (Rechnet mit zwei Vekoren, z.B. Kreuzprodukt)
Vektor-Skalar Instruktionen (Rechnet mit Skalar und Vektor, z.B. Skalarprodukt)
Vektor-Memory Instruktionen (z.B. VLoad/VStore)
Vector-Logic Instructionen (Single Element Anweisungen, z.B. Saturation)

Architektur Optionen:
Eignet sich gut für paralleles Piplineing
Anzahl der Recheneinheiten unabhängig von VL. Auswahl primär nach Memorydurchsatz

Grund warum die Vektorrechner so schnell sind ist übrigens in fast allen Fällen ein sehr schnelles Speicherinterface. Cache ist bei weitem nicht so relevant wie für Skalaren Code. Die ersten Vektorrechner hatten übrigens keine Vektorregister sondern nur eine Anbindung an den Hauptspeicher. Die Einführung von Vektorregistern war übrigens der entscheidende architektonische Vortschritt der Cray.


> A Vektor rechner is auf gebiet der Bild und Tontechnik die errungenschaft der letzten jahre..

Naja, 1995 hatte unser Bildverarbeitungs-Labor schon einen Array-Prozessor. Aber du hast recht! Audio und Video-Processing sind damit gut möglich (=> normalerweise VL=4). Wenn ich mich recht entsinne wurden nicht wenige Vectordesigns für Multimedia Anwendungen konzipiert -- ich glaube zumindest Samsung MSP und Chromatic Mpact?).

> Ein Vektor Prozessor muss auch nicht SIMD sein (Single Instruktion Multiple Data -> Ein Befehl auf mehrere Daten... also wenn ich zb. zu 10 Registern den Wert 5 addiere ).

Doch! Ein Vektor Prozessor ist immer eine spezielle Form von SIMD. Es gibt auch sog. Stream-Prozessoren die auch SIMD sind aber eben nicht Vektor-Orientiert.

> Die Shader in DX8 und 9 GraKas sind auch sowas wie Vektorrechner...

Nein, nicht wirklich, aber sie erlauben auch Vektor-Operationen schnell auszuführen. Unterschied ist das du auf einem Vektor (in dem Fall Pixel) _mehere_ Operationen im Shader ausführst bevor das nächste Pixel bearbeitet wird. Das ganze ist viel näher an der Stream-Architektur (anstelle eines Shader-Programms werkelt dort allerdings Microcode).

Links:
http://www.wikipedia.org/wiki/Vector_processor ;-)
http://www.stanford.edu/class/ee382/vector/ppframe.htm
http://cva.stanford.edu/ee482s/notes.html
http://www.crhc.uiuc.edu/ece412/

P.S. An die Mathematica Freaks: Hab ihr schon mal nen Blick auf MapleV geworfen? Visualisiert zwar nicht so gut, aber der Algebraische Teil ist 1a. BTW. MapleV ist in der Schul/Studentenversion sau billig.
 
Du glaubst garnet wie oft du bei 3D Sachen mit Matrizen rechnen musst (vorwiegend 4x4). Und schau dir mal den Artikel in den News an zum Design der GeFX - die baut auch massiv auf SIMD auf.

Und eins fehlt bei den Vektorprozzis noch - so ein "kleiner" Prozz hat nicht nur eine schnell rechnende SIMD Einheit, sondern da sind öfters mal 20, 30 und mehr. Die werden über einen Code der in den Prozzi geladen wird konfiguriert - und dann wandern die Daten durch. Also richtig CPU-ähnlich ist ein Vektor Prozessor garnet, weil er nicht dynamisch sein Programm ändern kann.

Dieses SIMD aussehen kommt vielleicht von den vielen Einheiten die parallel arbeiten, aber man kann auch jede einzelne nutzen.
 
@intel_hasser

> Du glaubst garnet wie oft du bei 3D Sachen mit Matrizen rechnen musst (vorwiegend 4x4).

Oh doch, das weis ich sehr genau :-) Im Bereich 4x4 Matrix Multiplikation hab ich sogar schon mal für eine 3D Firma verschiedene VHDL-(Synthese)-Tools unter die Lupe genommen. Damals ging es vor allem daraum ob bestimmte Tools optimale Pipelining-Achitekturen automatisch erzeugen können, bzw. welcher VHDL Code besonders für automatische Optimizer geeignet ist. Resultat damals: Keines der Tools konne auch nur ein annähernd verünftiges Piplining automatisch generieren.

> Und schau dir mal den Artikel in den News an zum Design der GeFX - die baut auch massiv auf SIMD auf.

Nochmal jeder Vektorprozessor ist SIMD, aber nicht jeder SIMD Prozessor ist ein Vektorprozessor! D.h. Bananen sind auch immer Obst, aber nicht jedes Obst ist eine Banane.

> Und eins fehlt bei den Vektorprozzis noch - so ein "kleiner" Prozz hat nicht nur eine schnell rechnende SIMD Einheit, sondern da sind öfters mal 20, 30 und mehr.

Eine SIMD einheit besteht aus Kontroll-Logik und Recheneinheiten. Die Anzahl der eigentlichen Recheneinheiten ist aber nebensächlich, solange der Speicherdurchsatz ausgenutzt wird!
Es bringt nix 100 Arbeiter einen Schubkarren füllen zu lassen wenn nur 10 Leute davon überhaupt an das Ding ran kommen -- Anders gesagt die restlichen 90 Leute kannst du dir sparen.

> . Die werden über einen Code der in den Prozzi geladen wird konfiguriert - und dann wandern die Daten durch.

Ein Vektor-Prozessor wird nicht "konfiguriert", er arbeitet einfach einen Strom von (Vektor-)Instruktionen ab. Thats it!

Aktuelle Grafik-Prozessoren arbeiten nach dem MIMD Prinzip (=Multiple Instruction Multiple Data) und sind deshalb keine Vektor-Prozessoren.

Für DX7 Kompatible GFX-Chips stimmt deine Aussage, da konfiguriert man welche verschiedenen Fixed-Funktion-Einheiten (Fog, ROP, Blending, etc.) die Daten in welcher Reihenfolge zu durchwandern haben. Vorteil: Schnelle Hardware, Nachteil: Mangelde Flexibilitaet.

Bei DX8/DX9 kann statt einer einzigen atomaren (Vektor)-Instruktion ein kleines Programm ("Shader") für jeden Vektor (Pixel Koordinaten, Farbwerte, etc.) ausgeführt werden. Idealerweise sollte so ein "Programm" komplett in einen internen I-Cache des GFX-Chips platz haben.

> Also richtig CPU-ähnlich ist ein Vektor Prozessor garnet, weil er nicht dynamisch sein Programm ändern kann.

Wie kommst du den darauf?? Klar hat jeder Vektor-Prozessor wie jeder Skalar-Prozessor auch Test&Branch - Instruktionen. Mit VL=1 kann ein VP sogar Skalar rechnen ;-)

> Dieses SIMD aussehen kommt vielleicht von den vielen Einheiten die parallel arbeiten, aber man kann auch jede einzelne nutzen.

???
Gfx-Chips haben kein SIMD aussehen. Entweder alle Einheiten werden von einer Instruction gesteuert (=Single Instruction) oder aber jede Einheit kann einzeln genutzt werden. In dem Fall braucht man aber mehrere Instructions (=Multiple Instruction) um alle Einheiten anzusprechen.
 
Ich hab jetzt keine Lust mich rumzustreiten, schau mal im Netz nach, ob du die Spezifikationen zum PACT findest... ein etwas kleinerer Vektor Prozessor ;)


Der besteht aus vielen kleinen (Rechen)Einheiten. Die Einheiten werden durch einen Code der in die CPU geladen wird konfiguriert, natürlich kann er auch A=1+2, B=A+1 rechnen. Aber dafür gehen dann gleich 2 Einheiten drauf.
Ein Vektor Prozzi ist dafür ausgelegt auf möglichst viele Daten die selbe(n) Operation(en) auszuführen. Bei 30 Recheneinheiten können bei 2 Operation pro Dateneinheit aber bleistiftsweise nur 15 Operationen gleichzeitig ausgeführt werden.

Und (wieder mal am Beispiel des PACTs, der mit ~600MHz läuft) das bedeutet dann, dass das was eine CPU in einer Zeit schafft, der PACT es 15mal in dieser Zeit schafft (bei gleicher Rechenleistung/Recheneinheit).

Und dabei ist der PACT eben noch ein etwas Leistungsschwacher Vertreter seiner Gattung. Man spart sich die enorme flexibilität einer CPU und bringt dafür so brachial viel wie möglich an Rechenleistung unter.
 
@intel_hasser
> ich hab jetzt keine Lust mich rumzustreiten, schau mal im Netz nach, ob du die Spezifikationen zum PACT findest...

Um Streit geht es mir in keinster Weise. Ich sag mal ich bin ein Computer-Architektur Freak, deshalb ist es mir wichtig das die Leute wissen von was sie reden. Ein 486 ist nun mal keine RISC-CPU und ein SPARC nun mal kein DSP.

Kannst du mir ein paar weitere Infos geben (Hersteller?) Oder meinst du den XPP von PACT??? Das ist jedenfals KEINE VEKTOR CPU sondern gehört zum Thema RLC (Reconfigureable Logic Computing).

BTW. PACT ist auche eine jährliche Konferenz des IEEE (Conference on _P_arallel _A_rchitectures and _C_ompilation _T_echniques -- dort wird aber über alle möglichen Architekturen gesprochen.

> Der besteht aus vielen kleinen (Rechen)Einheiten. Die Einheiten werden durch einen Code der in die CPU geladen wird konfiguriert, natürlich kann er auch A=1+2, B=A+1 rechnen. Aber dafür gehen dann gleich 2 Einheiten drauf.

Klingt ziemlich nach XPP. Bei Vektor CPUs sind die einzelnen Recheneinheiten nicht konfigurierbar. Ein Motorrad hat ja auch keine 4 Räder.

> Ein Vektor Prozzi ist dafür ausgelegt auf möglichst viele Daten die selbe(n) Operation(en) auszuführen. Bei 30 Recheneinheiten können bei 2 Operation pro Dateneinheit aber bleistiftsweise nur 15 Operationen gleichzeitig ausgeführt werden.

Wenn dein PACT sowas kann ist es keine Vektorcpu sondern halt eine MIMD-CPU ;-)

Mir geht es hier nur um eine klare Definition von Vektor-Architektur, nicht daraum das eine andere Architektur die gleichen Vorteile haben kann.
 
Zurück
Oben Unten