close

Explizite Datengraphausführung

Zur Navigation springen Zur Suche springen

Explicit Data Graph Execution oder EDGE ist ein Befehlssatz , der anstelle des für RISC- und CISC -Architekturen typischen traditionellen Befehls-/Registeransatzes einen neuen Weg einschlägt. EDGE-basierte Prozessoren unterteilen Programme in Basisblöcke, diese Blöcke sind Gruppen von Anweisungen, die mit gemeinsamen Operanden arbeiten und die keine Sprungbedingungen oder andere Bedingungen enthalten, die den Befehlsfluss stoppen. Diese Blöcke werden innerhalb von Einheiten verteilt, die sie selbstständig verarbeiten, die Ergebnisse werden an die Blöcke weitergegeben, die sie zur weiteren Verarbeitung benötigen. Die Verteilung der Blöcke erfolgt dynamisch, und diese Ausführungsphilosophie ermöglicht die Entwicklung von Programmen, die nicht ständig auf die Register zugreifen müssen, um Daten zwischen den Blöcken auszutauschen, wodurch ein Engpass beseitigt wird, der bei klassischen Mikroprozessoren vorhanden ist. Diese Art von Prozessor, der das Programm in unabhängige Blöcke unterteilt, demonstriert eine größere Fähigkeit, parallelen Code auszuführen.

Der EDGE-Befehlssatz definiert eine Reihe von Befehlen zur Verwaltung der einzelnen Blöcke, der Befehlssatz verwaltet die Codierung der Daten innerhalb des Blocks, um Abhängigkeiten von den Daten (durch prädikative Ausführung ) zu reduzieren, und ermöglicht es Ihnen, Abhängigkeiten zwischen Blöcken anzugeben. Die Daten werden verwendet, um den Steuerfluss der Befehle zu definieren, die Daten definieren einen Graphen der Abhängigkeiten, die der Prozessor während der Ausführung erfüllen muss. Die mit EDGE definierten einzelnen Anweisungen sind im Durchschnitt teurer als die von einem RISC- oder CISC-Prozessor definierten , aber die höheren Kosten werden durch die Verwendung von mittelgroßen Blöcken (die EDGE-Implementierung verwendet Blöcke von 1024 Anweisungen) und durch die Möglichkeit der Verwendung gemildert viele parallele Recheneinheiten.

KANTE.png
Das Bild zeigt ein C-Code- Fragment (grünes Kästchen), den entsprechenden Assembler -Code (blaues Kästchen) und den von den EDGE-Anweisungen generierten Abhängigkeitsgraphen (weißes Kästchen). Beachten Sie, dass der bedingte Sprung (IF) in prädikative Aussagen umgewandelt wird (hervorgehoben durch die gestrichelten Segmente).

Der EDGE-Befehlssatz verwendet Blöcke als Basis, und jeder Block wird in eine einzelne Ausführungseinheit abgebildet. Die einzelnen Blöcke enthalten keine Flusssteuerungsanweisungen, sie greifen nur zwischen den Blöcken ein, die Blöcke können jedoch prädikative Anweisungen enthalten, um die gängigsten Flussanweisungen (z. B. IFs) in die Blöcke einzufügen. Der Graph, der die Programmausführung definiert, wird mit Nebenläufigkeitsbeziehungen zwischen Blöcken definiert, diese Beziehungen spezifizieren den Datenfluss von einem Block zu einem anderen oder von einem Block zu einem gemeinsamen Speicherbereich. Jeder Block kann ein einzelnes sequentielles Programm oder ein SIMD -Programm sein . Der Compiler sammelt die Anweisungen, die dieselben Daten verwenden, in Blöcken und platziert die Anweisungen, die Ergebnisse von anderen Blöcken benötigen, daneben, um die Datenlaufzeit zwischen den Blöcken zu minimieren.

Verwandte Artikel

Externe Links