DataFlow -Architektur

DataFlow -Architektur ist ein Rechnerarchitektur das kontrastiert direkt die traditionellen Von Neumann Architektur oder Steuerfluss die Architektur. DataFlow -Architekturen haben keine Programm zähler, im Konzept: Die Ausführbarkeit und Ausführung von Anweisungen wird ausschließlich auf der Grundlage der Verfügbarkeit von Eingabemitteln für die Anweisungen ermittelt.[1] so dass die Reihenfolge der Anweisungsausführung unvorhersehbar ist, d. H. Das Verhalten ist Nichtdeterministisch.

Obwohl keine kommerziell erfolgreiche Computerhardware für allgemeine Purpose eine DataFlow-Architektur verwendet hat, wurde sie erfolgreich in spezialisierten Hardware wie in implementiert, z. B. in digitale Signalverarbeitung, Netzwerkrouting, Grafikverarbeitung, Telemetrieund in jüngerer Zeit in Data Warehousing und künstliche Intelligenz.[2][3] Es ist auch in vielen Software -Architekturen heute auch sehr relevant, einschließlich Datenbank Motorkonstruktionen und Parallele Computing Frameworks.

Synchrone DataFlow-Architekturen stimmen an die Workload-Anpassung an, die von Echtzeit-Datenpfadanwendungen wie der Weiterleitung von Drahtgeschwindigkeitspaketen präsentiert wird. Datenflow -Architekturen, die deterministisch sind, ermöglichen Programmierern die Verwaltung komplexer Aufgaben wie dem Ausgleich von Prozessorlast, Synchronisation und Zugriff auf gemeinsame Ressourcen.[4]

In der Zwischenzeit gibt es einen Zusammenstoß der Terminologie, seit dem Begriff Datenfluss wird für eine Teilbereich paralleler Programmierung verwendet: für Datenflow -Programmierung.

Geschichte

Hardwarearchitekturen für DataFlow waren ein wichtiges Thema in Rechnerarchitektur Forschung in den 1970er und frühen 1980er Jahren. Jack Dennis von MIT Pionierarbeit im Bereich der statischen Datenflow -Architekturen, während die Manchester DataFlow -Maschine[5] und MIT -Tagge -Token -Architektur waren Hauptprojekte im dynamischen Datenfluss.

Die Forschung hat jedoch nie die Probleme im Zusammenhang mit:

  • Effizientes Übertragungsdaten -Token in einem massiv parallelen System.
  • Effizientes Versenden von Befehls -Token in einem massiv parallelen System.
  • Gebäude Inhaltsadressible Speicher (CAM) groß genug, um alle Abhängigkeiten eines realen Programms zu halten.

Anweisungen und ihre Datenabhängigkeiten erwiesen sich als zu feinkörnig, um in einem großen Netzwerk effektiv verteilt zu werden. Das heißt, die Zeit für die Anweisungen und markierten Ergebnisse, die durch ein großes Verbindungsnetzwerk reisen, war länger als die Zeit, um viele Berechnungen durchzuführen.

Dennoch, Ausführende Ausführung (OOE) ist seit den 1990er Jahren zum dominanten Computerparadigma geworden. Es ist eine Form des eingeschränkten Datenflusss. Dieses Paradigma führte die Idee von einem vor Ausführungsfenster. Das Ausführungsfenster Folgt der sequentiellen Reihenfolge der von Neumann -Architektur. Im Fenster dürfen Anweisungen jedoch in der Datenabhängigkeitsreihenfolge ausgefüllt werden. Dies wird in CPUs erreicht, die die Datenabhängigkeiten des Codes im Ausführungsfenster dynamisch markieren. Die logische Komplexität, die Datenabhängigkeiten dynamisch zu verfolgen, beschränkt Ooe CPUs auf eine kleine Anzahl von Ausführungseinheiten (2-6) und begrenzt die Ausführungsfenstergrößen auf den Bereich von 32 bis 200 Anweisungen, viel kleiner als für vollständige Datenflussmaschinen vorgesehen.

DataFlow -Architekturthemen

Statische und dynamische Datenflussmaschinen

Entwürfe, die herkömmliche Speicheradressen als Datenabhängigkeits -Tags verwenden, werden als statische Datenflow -Maschinen bezeichnet. Diese Maschinen erlaubten nicht zu, dass mehrere Instanzen derselben Routinen gleichzeitig ausgeführt werden, da die einfachen Tags nicht zwischen ihnen unterscheiden konnten.

Entwürfe, die verwendet werden Inhaltsadressible Speicher (CAM) werden als dynamische Datenflow -Maschinen bezeichnet. Sie verwenden Tags im Gedächtnis, um die Parallelität zu erleichtern.

Compiler

Normalerweise in der Kontrollflussarchitektur, Compiler Programm analysieren Quellcode Für Datenabhängigkeiten zwischen Anweisungen, um die Anweisungssequenzen in den Binärausgabedateien besser zu organisieren. Die Anweisungen werden nacheinander organisiert, aber die Abhängigkeitsinformationen selbst werden in den Binärdateien nicht aufgezeichnet. Für eine Datenflow -Maschine zusammengestellte Binärdateien enthalten diese Abhängigkeitsinformationen.

Ein DataFlow -Compiler erfasst diese Abhängigkeiten, indem eindeutige Tags für jede Abhängigkeit erstellt werden, anstatt Variablennamen zu verwenden. Indem Sie jeder Abhängigkeit ein eindeutiges Tag geben, können die nicht abhängigen Codesegmente in der Binary ausgeführt werden außer Betrieb und parallel. Der Compiler erkennt die Schleifen, Break -Anweisungen und verschiedene Programmiersteuerungssyntax für den Datenfluss.

Programme

Die Programme werden in die Nocken eines dynamischen Datenflow -Computers geladen. Wenn alle markierten Operanden einer Anweisung verfügbar sind (dh Ausgabe von früheren Anweisungen und/oder Benutzereingaben), wird die Anweisung als Ausführung von einem markiert markiert Ausführungseinheit.

Dies ist bekannt als als Aktivierung oder Brennen die Anleitung. Sobald eine Anweisung von einer Ausführungseinheit abgeschlossen ist, werden die Ausgabedaten (mit ihrem Tag) an die NAC gesendet. Alle Anweisungen, die von diesem bestimmten Datum abhängig sind (identifiziert durch seinen Tag -Wert), werden dann als Ausführung bereitgestellt. Auf diese Weise werden nachfolgende Anweisungen in der richtigen Reihenfolge ausgeführt, um zu vermeiden Rennbedingungen. Diese Reihenfolge kann von der vom menschlichen Programmierer vorgesehenen sequentiellen Reihenfolge, der programmierten Reihenfolge, abweichen.

Anweisungen

Eine Anweisung zusammen mit den erforderlichen Datenoperanden wird als Paket an eine Ausführungseinheit übertragen, die auch als als bezeichnet wird Unterrichts -Token. In ähnlicher Weise werden Ausgangsdaten als a auf die Nocken übertragen Daten Token. Die Paketisierung von Anweisungen und Ergebnissen ermöglicht eine parallele Ausführung von Bereitschaftsanweisungen in großem Maßstab.

DataFlow -Netzwerke liefern die Befehls -Token an die Ausführungseinheiten und geben die Daten Token an die CAM zurück. Im Gegensatz zum konventionellen Von Neumann ArchitekturDaten -Token werden nicht dauerhaft im Speicher gespeichert, sondern sind vorübergehende Nachrichten, die nur beim Tragen zum Anweisungsspeicher vorhanden sind.

Siehe auch

Verweise

  1. ^ Veen, Arthur H. (Dezember 1986). "DataFlow Machine Architecture". ACM Computing -Umfragen. 18 (4): 365–396. doi:10.1145/27633.28055. Abgerufen 5. März 2019.
  2. ^ "Deep Vision". Tiefe Vision. 2021. Abgerufen 2021-04-19.
  3. ^ "Hagel". Hagel. Abgerufen 2021-04-19.
  4. ^ "HX300 -Familie von NPUs und programmierbarem Ethernet -Wechsel zum Faserzugriffsmarkt". En-Genius (Pressemitteilung).18. Juni 2008. archiviert von das Original Am 2011-07-22.
  5. ^ Manchester DataFlow Research -Projekt, Forschungsberichte: Abstracts, September 1997