Abhängigkeitsanalyse



Alles Wissen, das die Menschen im Laufe der Jahrhunderte über Abhängigkeitsanalyse angesammelt haben, ist jetzt im Internet verfügbar, und wir haben es für Sie auf möglichst zugängliche Weise zusammengestellt und geordnet. Wir möchten, dass Sie schnell und effizient auf alles zugreifen können, was Sie über Abhängigkeitsanalyse wissen möchten, dass Ihre Erfahrung angenehm ist und dass Sie das Gefühl haben, wirklich die Informationen über Abhängigkeitsanalyse gefunden zu haben, nach denen Sie gesucht haben.

Um unsere Ziele zu erreichen, haben wir uns nicht nur bemüht, die aktuellsten, verständlichsten und wahrheitsgetreuesten Informationen über Abhängigkeitsanalyse zu erhalten, sondern wir haben auch dafür gesorgt, dass das Design, die Lesbarkeit, die Ladegeschwindigkeit und die Benutzerfreundlichkeit der Seite so angenehm wie möglich sind, damit Sie sich auf das Wesentliche konzentrieren können, nämlich alle verfügbaren Daten und Informationen über Abhängigkeitsanalyse zu kennen, ohne sich um irgendetwas anderes kümmern zu müssen, das haben wir bereits für Sie erledigt. Wir hoffen, dass wir unser Ziel erreicht haben und dass Sie die gewünschten Informationen über Abhängigkeitsanalyse gefunden haben. Wir heißen Sie also willkommen und ermutigen Sie, die Erfahrung der Nutzung von scientiade.com weiterhin zu genießen.

In Compiler Theorie , Abhängigkeitsanalyse produziert Ausführungs Ordnung Constraints zwischen Anweisungen / Instruktionen. Im Allgemeinen hängt eine Anweisung S2 von S1 ab, wenn S1 vor S2 ausgeführt werden muss . Grundsätzlich gibt es zwei Klassen von Abhängigkeiten: Steuerungsabhängigkeiten und Datenabhängigkeiten .

Die Abhängigkeitsanalyse bestimmt, ob es sicher ist, Anweisungen neu zu ordnen oder zu parallelisieren .

Abhängigkeiten steuern

Steuerungsabhängigkeit ist eine Situation, in der ein Programmbefehl ausgeführt wird, wenn der vorherige Befehl auf eine Weise ausgewertet wird, die seine Ausführung ermöglicht.

Eine Anweisung S2 ist Steuerung abhängig auf S1 (geschrieben ) , wenn und nur wenn S2' s Ausführung bedingt durch bewacht S1 . Das Folgende ist ein Beispiel für eine solche Kontrollabhängigkeit:

S1       if x > 2 goto L1
S2       y := 3   
S3   L1: z := y + 1

Hier läuft S2 nur, wenn das Prädikat in S1 falsch ist.

Siehe Datenabhängigkeiten für weitere Details.

Datenabhängigkeiten

Eine Datenabhängigkeit ergibt sich aus zwei Anweisungen, die auf dieselbe Ressource zugreifen oder diese ändern.

Flow (True) Abhängigkeit

Eine Anweisung S2 ist abhängig fließt auf S1 (geschrieben ) , wenn und nur wenn S1 eine Ressource modifiziert , dass S2 liest und S1 vorausgeht S2 in der Ausführung. Das Folgende ist ein Beispiel für eine Flussabhängigkeit (RAW: Lesen nach Schreiben):

S1       x := 10
S2       y := x + c

Antidependenz

Eine Anweisung S2 ist genau dann von S1 (geschrieben ) abhängig, wenn S2 eine Ressource ändert, die S1 liest und S1 bei der Ausführung S2 vorausgeht . Das Folgende ist ein Beispiel für eine Antidependenz (WAR: Write After Read):

S1       x := y + c
S2       y := 10

Hier setzt S2 den Wert von, y aber S1 liest einen vorherigen Wert von y .

Ausgangsabhängigkeit

Eine Anweisung S2 wird genau dann abhängig von S1 (geschrieben ) ausgegeben, wenn S1 und S2 dieselbe Ressource modifizieren und S1 bei der Ausführung vor S2 steht . Das folgende Beispiel zeigt eine Ausgabeabhängigkeit (WAW: Write After Write):

S1       x := 10
S2       x := 20

Hier setzen S2 und S1 beide die Variable x .

Eingangsabhängigkeit

Eine Anweisung S2 wird genau dann abhängig von S1 (geschrieben ) eingegeben, wenn S1 und S2 dieselbe Ressource lesen und S1 bei der Ausführung vor S2 steht . Das Folgende ist ein Beispiel für eine Eingabeabhängigkeit (RAR: Read-After-Read):

S1       y := x + 3
S2       z := x + 5

Hier greifen S2 und S1 beide auf die Variable zu x . Diese Abhängigkeit verbietet keine Neuordnung.

Schleifenabhängigkeiten

Das Problem der Berechnung von Abhängigkeiten innerhalb von Schleifen, das ein signifikantes und nicht triviales Problem darstellt, wird durch eine Schleifenabhängigkeitsanalyse angegangen , die den hier angegebenen Abhängigkeitsrahmen erweitert.

Siehe auch

Weiterführende Literatur

  • Cooper, Keith D.; Torczon, Linda. (2005). Engineering eines Compilers . Morgan Kaufmann. ISBN   1-55860-698-X .
  • Kennedy, Ken; Allen, Randy. (2001). Optimieren von Compilern für moderne Architekturen: Ein abhängigkeitsbasierter Ansatz . Morgan Kaufmann. ISBN   1-55860-286-0 .
  • Muchnick, Steven S. (1997). Erweitertes Compiler-Design und Implementierung . Morgan Kaufmann. ISBN   1-55860-320-4 .

Opiniones de nuestros usuarios

Dietmar Schulte

Dieser Beitrag über Abhängigkeitsanalyse war genau das, was ich finden wollte.

Erika Zimmermann

Endlich! Heutzutage scheint es so zu sein, dass sie nicht glücklich sind, wenn sie Ihnen keine Artikel mit zehntausend Wörtern schreiben. Meine Herren Content-Autoren, dies ist ein guter Artikel über Abhängigkeitsanalyse., Richtig

Ewald Kruse

Wenn man im Internet nach Informationen über etwas sucht, stößt man manchmal auf Artikel, die zu lang sind und sich mit Dingen befassen, die einen nicht interessieren. Dieser Artikel über Abhängigkeitsanalyse hat mir gut gefallen, weil er auf den Punkt kommt und genau das anspricht, was ich will, ohne sich in unnützen Informationen zu verlieren.