Was ist Stream-Verarbeitung?
Stream Processing ist ein Konzept für Computerprogrammierung und Computertechnik, mit dem Anwendungen und Hardwaresysteme entworfen werden können. Wenn die Stream-Verarbeitung verwendet wird, werden Daten in Streams organisiert, die dann Knoten oder Prozessoren zugeführt werden, die die Daten im Stream bearbeiten. Anschließend werden die Daten auf dem Pfad fortgesetzt, damit andere Knoten sie bearbeiten können. Am Ende des Streams werden die Daten im Speicher abgelegt oder zur Verwendung an eine Endbenutzeranwendung übergeben. Ein System oder eine Anwendung, die die Stream-Verarbeitung verwendet, funktioniert am effektivsten, wenn die Stream-Informationen konsistent von einer oder mehreren Quellen generiert werden. Dies macht sie effektiv für die digitale Signalverarbeitung (DSP), Bildverarbeitung und Grafik oder den Netzwerkverkehr mit hoher Bandbreite. Die am weitesten verbreitete praktische Anwendung der Stream-Verarbeitung ist die Herstellung von Computergrafikkarten, bei denen Stream-Prozessoren in die Grafikhardware integriert sind, um bei der Ausführung mehrerer Operationen an eingehenden Grafikdaten wie Vertex-Arrays zu helfen.
Die Basis für die Stream-Verarbeitung ist das Konzept von Daten als Stream. Anstatt Informationen aus unterschiedlichen Quellen zu ziehen oder Nachrichten von einem Interrupt-Mechanismus abzufangen, wird ein Datenstrom gebildet, wenn Informationen durch einen Prozess in einer einzigen Zeile, die als Strom bezeichnet wird, zusammengefasst werden. Die Datenelemente können variieren, aber der Datenstrom besteht im Allgemeinen aus Blöcken der gleichen Elementtypen, die nacheinander verarbeitet werden können.
Die Prozessoren oder Knoten, die bei der Stream-Verarbeitung verwendet werden, akzeptieren einen Stream und führen eine bestimmte Operation für die Daten aus, wonach die Daten zur weiteren Verarbeitung an einen anderen Knoten übergeben werden können. Für maximale Effizienz sollen die Knoten kleine Funktionen sein, die direkt auf der Zentraleinheit (CPU) geladen und ausgeführt werden, wobei Register und direkter Speicherzugriff (DMA) für die Geschwindigkeit verwendet werden. Wenn die Informationen im Stream für sich allein stehen können und nicht vom Ergebnis der Operationen eines einzelnen Knotens abhängen, können mehrere Operationen gleichzeitig am Stream ausgeführt werden, und der Programmcompiler erhält Hinweise, die sehr effektive Optimierungen ermöglichen.
Die Stream-Verarbeitung ist im Allgemeinen eine gute Lösung für Situationen, in denen Daten von einer Anwendung oder einem Gerät, z. B. einer Kamera, einem externen Sensor oder einer Netzwerkverbindung, ständig generiert und in den Stream übertragen werden. Viele Grafikkarten verwenden Stream-Prozessoren, um Daten, die über eine Grafik-Pipeline eingehen, schnell in ein gerendertes, gerastertes Bild umzuwandeln. Bestimmte Grafikkarten verfügen über mehrere Prozessoren oder Knoten, die in die Hardware der Karte integriert sind, sodass die Stream-Verarbeitung schnell und manchmal gleichzeitig erfolgen kann. Dies ist häufig wünschenswert, wenn Shader für dreidimensionale (3D-) Grafiken verwendet werden.