Zweigaussage

Zweigaussage ist eine Strategie im Computerarchitektur-Design, für die Kosten zu lindern, die gewöhnlich mit bedingten Zweigen, besonders Zweige zu kurzen Abteilungen des Codes vereinigt sind. Es tut das durch das Erlauben jeder Instruktion bedingt entweder führt eine Operation durch oder tut nichts.

Übersicht

Die meisten Computerprogramme enthalten Code, der nur unter spezifischen Bedingungen abhängig von Faktoren durchgeführt wird, die im Voraus nicht bestimmt werden können, zum Beispiel hat Benutzer eingegeben. Als die Mehrheit von Verarbeitern führen einfach die folgende Instruktion in einer Folge durch, die traditionelle Lösung ist, Zweiginstruktionen einzufügen, die ein Programm bedingt dem Zweig zu einer verschiedenen Abteilung des Codes erlauben, so den nächsten Schritt in der Folge ändernd. Das war genügend, bis Entwerfer begonnen haben, Leistung zu verbessern, indem sie Instruktion pipelining, eine Methode durchgeführt haben, die durch Zweige verlangsamt wird. Für eine gründlichere Beschreibung der Probleme, die, und eine populäre Lösung entstanden sind, sieh Zweigpropheten.

Glücklicherweise hat eines der allgemeineren Muster des Codes, der sich normalerweise auf das Ausbreiten verlässt, eine elegantere Lösung. Denken Sie den folgenden Pseudocode:

wenn Bedingung

tun Sie diesen

sonst

tun Sie das

Auf einem System, das das bedingte Ausbreiten verwendet, könnte das übersetzen, um Instruktionen maschinell herzustellen, die ähnlich aussehen:

Zweig wenn Bedingung, 1 zu etikettieren

tun Sie das

Zweig, um 2 zu etikettieren

Etikett 1:

tun Sie diesen

Etikett 2:

...

Mit der Zweigaussage werden alle möglichen Zweigpfade durchgeführt, der richtige Pfad wird behalten und alles, was andere weggeworfen werden. Die Grundidee besteht darin, dass jede Instruktion mit einem Prädikat (das Wort hier verwendet ähnlich an seinen Gebrauch in der Prädikat-Logik) vereinigt wird, und dass die Instruktion nur durchgeführt wird, wenn das Prädikat wahr ist. Der Maschinencode für das obengenannte Beispiel mit der Zweigaussage könnte etwas wie das schauen:

(Bedingung) tut diesen

(nicht Bedingung) tun das

Bemerken Sie, dass außer dem Beseitigen von Zweigen weniger Code insgesamt erforderlich ist, vorausgesetzt dass die Architektur behauptete Instruktionen zur Verfügung stellt. Während das schnellere Ausführung im Allgemeinen nicht versichert, wird sie, wenn und Blöcke des Codes kurz genug sind.

Gewöhnlich, um zu behaupten, dass ein System Zweigaussage hat, müssen die meisten oder alle Instruktionen diese Fähigkeit haben, bedingt gestützt auf einem Prädikat durchzuführen.

Vorteile

Der Hauptzweck der Aussage ist, Sprünge über sehr kleine Abteilungen des Programm-Codes zu vermeiden, die Wirksamkeit der pipelined Ausführung vergrößernd und Probleme mit dem geheimen Lager vermeidend. Es hat auch mehrere feinere Vorteile:

  • Funktionen, die mit der einfachen Arithmetik und den bitwise Operationen traditionell geschätzt werden, können schneller sein, um zu rechnen, das Verwenden hat Instruktionen behauptet.
  • Behauptete Instruktionen mit verschiedenen Prädikaten können mit einander und mit dem vorbehaltlosen Code gemischt werden, bessere Instruktionsterminplanung und so noch bessere Leistung erlaubend.
  • Die Beseitigung von unnötigen Zweiginstruktionen kann die Ausführung von notwendigen Zweigen, wie diejenigen machen, die Schleifen, schneller durch das Nachlassen der Last auf Zweigvorhersagemechanismen zusammensetzen.

Nachteile

Der primäre Nachteil der Aussage ist im vergrößerten Verschlüsselungsraum. In typischen Durchführungen bestellt jede Instruktion einen bitfield für das Prädikat vor, das angibt, ob diese Instruktion eine Wirkung haben sollte. Wenn verfügbares Gedächtnis beschränkt wird, weil auf eingebetteten Geräten diese Raumkosten untersagend sein können. Jedoch sind einige Architekturen wie Daumen 2 im Stande, dieses Problem (sieh unten) zu vermeiden. Andere Nachteile sind der folgende:

  • Aussage kompliziert die Hardware durch das Hinzufügen von Niveaus der Logik zu kritischen Pfaden und erniedrigt potenziell Uhr-Geschwindigkeit.
  • Ein behaupteter Block schließt Zyklen für alle Operationen ein, so können kürzere Pfade länger nehmen und bestraft werden.

Aussage ist am wirksamsten, wenn Pfade erwogen werden, oder wenn der längste Pfad am häufigsten durchgeführt ist, aber Bestimmung solch eines Pfads ist während der Übersetzung sogar bei der Anwesenheit der Kopierfräsinformation sehr schwierig.

Beispiele

Behauptete Instruktionen waren in europäischen Computerdesigns der 1950er Jahre, einschließlich Mailüfterl (1955), Zuse Z22 (1955), das ZEBRA (1958), und Electrologica X1 (1958) populär. Das Design von IBM ACS-1 von 1967 hat ein "Hopser"-Bit in seinen Instruktionsformaten zugeteilt, und der CDC Flexible Verarbeiter 1976 hat drei bedingte Ausführungsbit in seinen Mikrobefehl-Formaten zugeteilt.

In der IA-64 Architektur von Intel wird fast jede Instruktion im IA-64 Befehlssatz behauptet. Die Prädikate selbst werden in speziellen Zweck-Registern versorgt; eines der Prädikat-Register ist immer wahr, so dass unbehauptete Instruktionen einfach Instruktionen sind, die mit dem wahren Wert behauptet sind. Der Gebrauch der Aussage ist in der IA-64 Durchführung der Software pipelining notwendig, weil es das Bedürfnis danach vermeidet, getrennten Code für den Pro-Klotz und die Schlussworte zu schreiben.

Auf der ARM-Architektur können fast alle Instruktionen bedingt durchgeführt werden. Dreizehn verschiedene Prädikate, sind jeder verfügbar, je nachdem die vier Fahnen, Überschwemmung, Null, und Negativ irgendwie Tragen. Der 16-Bit-Daumen-Befehlssatz des ARMS hat keine Zweigaussage, um Verschlüsselungsraum zu sparen, aber sein Nachfolger-Daumen 2 überwindet dieses Problem mit einer speziellen Instruktion, die keine Wirkung anders hat als, Prädikate für die folgenden vier Instruktionen zu liefern.

Für ein konkretes Beispiel des Codes, der Zweigaussage ausnutzt, sieh das ARM-Zusammenbau-Beispiel im binären GCD Algorithmus.

Siehe auch

Referenzen


Roger Delgado / Hemolymph
Impressum & Datenschutz