www.wikidata.de-de.nina.az
Vektorprozessoren auch Vektorrechner oder Array Prozessoren genannt fuhren eine Berechnung gleichzeitig auf vielen Daten in einem Vektor bzw Array aus Wenn viele gleichartige Daten auf gleiche Weise bearbeitet werden sollen beispielsweise bei Matrizenoperationen sind Vektorprozessoren reinen Allzweck Prozessoren z B x86 die alle Daten nacheinander bearbeiten weit uberlegen Dies ist zumindest dann der Fall wenn der Vektorrechner auch einen parallelen Zugriff auf den Hauptspeicher hat Prozessorplatine eines CRAY YMP Vektor ComputersDieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen beispielsweise Einzelnachweisen ausgestattet Angaben ohne ausreichenden Beleg konnten demnachst entfernt werden Bitte hilf Wikipedia indem du die Angaben recherchierst und gute Belege einfugst Inhaltsverzeichnis 1 Funktionsweise und Anwendungsfelder 2 Vektorprozessor bei der Arbeit 2 1 MIPS Architekturbeispiel 2 2 Beispiel einer x86 Architektur in Hochsprache eingebettet 3 Programmierung von Vektorprozessoren mit hoheren Programmiersprachen 4 Siehe auch 5 WeblinksFunktionsweise und Anwendungsfelder BearbeitenVektorprozessoren werden vor allem im High Performance Computing HPC genutzt Die Cray Supercomputer nutzten Vektorprozessoren Anbieter von Vektorrechnern waren NEC und die Convex Computer Corporation etwa mit der C38xx Serie die Galliumarsenid Technologie einsetzte oder Fujitsu Siemens Computers mit ihrer VPP Serie Gerade in HPC Anwendungen fallen oft viele gleichartige Daten an die auf ahnliche Weise verarbeitet werden sollen so zum Beispiel bei Simulationen in der Meteorologie und Geologie wo vielfach Vektorrechner verwendet werden Vektorrechner haben in den letzten Jahren grosse Konkurrenz durch massiv parallel aufgebaute Rechencluster bekommen die aus vielen Tausend Standardprozessoren aufgebaut sind Durch den Ruckgriff auf Standardkomponenten die uber den HPC Sektor hinaus verbreitet sind lassen sich Kosten sparen zumal solche Standardprozessoren durch die intensive technologische Entwicklung sehr leistungsfahig geworden sind Noch gunstiger geht es mit verteiltem Rechnen Wegen der Vorteile die sich durch die gleichzeitige Ausfuhrung einer Rechenoperation auf mehreren Daten ergeben Single Instruction Multiple Data SIMD haben auch Standardprozessoren seit den 1990er Jahren Erweiterungen der jeweiligen Architektur erfahren um diese Art von Berechnungen zu beschleunigen Siehe dazu Architektur des x86 Prozessors oder AltiVec fur PowerPC Prozessoren Neben der oben genannten Anwendungen fur Vektorprozessoren gehort auch die graphische Simulation zu einer Hauptanwendung Gerade aufwendige 3D Spiele verlangen enorm viele Berechnungen Matrizenoperationen auf 3D Koordinaten Antialiasing der Bildschirmausgabe auf grossen Datenmengen weshalb heutige Grafikprozessoren grosse Ahnlichkeiten zu reinen Vektorprozessoren aufweisen Vektorprozessor bei der Arbeit BearbeitenMIPS Architekturbeispiel Bearbeiten Anhand eines einfachen Beispiels soll der Unterschied zwischen Skalar und Vektorprozessor gezeigt werden Y a X Y displaystyle Y a cdot X Y nbsp X und Y sind zwei Vektoren gleicher Lange und a ist eine skalare Grosse Dieses Problem wird auf Skalarprozessoren durch eine Schleife gelost Die gleiche Schleife wird auch im LINPACK Benchmark verwendet um die Leistung der getesteten Rechner zu bestimmen In C Syntax sieht das folgendermassen aus for i 0 i lt 64 i Y i a X i Y i Hier wird angenommen dass die Vektoren aus 64 Elementen bestehen In MIPS Code sieht dieses Programmfragment folgendermassen aus L D F0 a Skalar a laden DADDIU R4 Rx 512 letzte Adresse 512 8 64 Loop L D F2 0 Rx X i laden MUL D F2 F2 F0 a X i L D F4 0 Ry Y i laden ADD D F4 F4 F2 a X i Y i S D 0 Ry F4 Y i speichern DADDIU Rx Rx 8 Index i von X inkrementieren DADDIU Ry Ry 8 Index i von Y inkrementieren DSUBU R20 R4 Rx Rand berechnen BNEZ R20 Loop wenn 0 dann fertig In VMIPS Code sieht das Ganze jedoch so aus L D F0 a Skalar a laden LV V1 Rx Vektor X laden MULVS D V2 V1 F0 Vektor Skalar Multiplikation LV V3 Ry Vektor Y laden ADDV D V4 V2 V3 Vektor Addition SV Ry V4 Resultat speichern Dieses Beispiel zeigt wie effizient der Vektorprozessor die Aufgabe lost Bei VMIPS genugen sechs Befehle wahrend bei MIPS 64 9 2 578 Befehle ausgefuhrt werden Hauptsachlich entfallt die Schleife Bei VMIPS muss also nur ein Bruchteil der Befehle aus dem Speicher geholt und dekodiert werden Bei der MIPS Architektur werden Multiplikationen und Additionen abwechselnd ausgefuhrt das heisst die Addition muss immer auf die langsamere Multiplikation warten Beim Vektorrechner hingegen werden zuerst alle unabhangigen Multiplikationen ausgefuhrt und darauf folgend alle abhangigen Additionen Dies ist ein weiterer bedeutender Unterschied Beispiel einer x86 Architektur in Hochsprache eingebettet Bearbeiten Ein aktuelles x86 Prozessorarchitekturbeispiel unter Verwendung der SSE Befehlserweiterung Das Beispiel zeigt das vektorisierte Multiplizieren von Gleitkommazahl Arrays einfacher Genauigkeit Der gezeigte Quellcode ist in der Hochsprache C geschrieben mit wesentlichen Inline Assembler Anteilen Intel Syntax welcher direkt mit dem GCC kompiliert werden kann SSE Funktion zum vektorisierten Multiplizieren von 2 Arrays mit Single precision Gleitkommazahlen Erster Parameter Zeiger auf Ziel Quellarray zweiter Parameter 2 Quellarray dritter Parameter Anzahl der Gleitkommazahlen in jedem Array 32 Bit Version void mul asm float out float in unsigned int leng unsigned int count rest rest leng 4 16 count leng 4 rest if count gt 0 vectorized part 4 floats per loop iteration asm volatile intel syntax noprefix n t loop n t movups xmm0 ebx ecx loads 4 floats in first register xmm0 n t movups xmm1 eax ecx loads 4 floats in second register xmm1 n t mulps xmm0 xmm1 multiplies both vector registers n t movups eax ecx xmm0 write back the result to memory n t sub ecx 16 increase address pointer by 4 floats n t jnz loop n t att syntax prefix n t a out b in c count d rest xmm0 xmm1 scalar part 1 float per loop iteration if rest 0 asm volatile intel syntax noprefix n t add eax ecx n t add ebx ecx n t rest n t movss xmm0 ebx edx load 1 float in first register xmm0 n t movss xmm1 eax edx load 1 float in second register xmm1 n t mulss xmm0 xmm1 multiplies both scalar registers n t movss eax edx xmm0 write back the result n t sub edx 4 n t jnz rest n t att syntax prefix n t a out b in c count d rest xmm0 xmm1 return Programmierung von Vektorprozessoren mit hoheren Programmiersprachen BearbeitenDas obige Beispiel ist direkt in der Maschinensprache codiert was heutzutage allerdings nicht mehr ublich aber durchaus moglich ist SIMD Intrinsics oder Inline Assembler Code Anteile Architekturen mit speziellen Maschinenanweisungen fur Vektoren benotigen zur Nutzung dieser aus hoheren Programmiersprachen entweder eine Unterstutzung durch parallelisierende Compiler also solche die eine ganze Schleife im Quellcode in eine SIMD Rechenanweisung umwandeln konnen eine Spracherweiterung fur die Generierung der Array Funktionen oder zumindest durch spezielle BibliotheksfunktionenZumindest in den letzten beiden Fallen muss der Softwareentwickler auf jeden Fall die Architektur kennen und die speziellen Funktionen dann auch verwenden um die Vektorverarbeitung zu nutzen Siehe auch BearbeitenFlynnsche Klassifikation Parallelrechner Datenverarbeitung in verteilten CPUs General Purpose Computation on Graphics Processing Unit TensorFlow Processing UnitWeblinks BearbeitenAnleitung zur Vektorprogrammierung Memento vom 6 November 2013 im Internet Archive PDF 1 03 MB Cray Research englisch HiCoVec Memento vom 10 Juli 2010 im Internet Archive Quelloffener konfigurierbarer Vektorprozessor der HS AugsburgProzessorarchitekturen nbsp nach Wortbreite 1 Bit Architektur Bit Slice Architektur 4 Bit Architektur 8 Bit Architektur 16 Bit Architektur 32 Bit Architektur 64 Bit Architekturnach Befehlssatzaufbau CISC EPIC NISC RISC VLIW Mikroarchitekturmit Optimierung fur Einsatzzweck Haupt Prozessor Grafikprozessor GPGPU Streamprozessor Soundprozessor Gleitkommaeinheit Netzwerkprozessor Physikbeschleuniger Vektorprozessor TensorFlow Processing Unit Abgerufen von https de wikipedia org w index php title Vektorprozessor amp oldid 208425839