[go: up one dir, main page]

DE69718278T2 - Methode und System zur Einzel-Zyklus-Ausführung aufeinanderfolgender Iterationen einer Befehlsschleife - Google Patents

Methode und System zur Einzel-Zyklus-Ausführung aufeinanderfolgender Iterationen einer Befehlsschleife

Info

Publication number
DE69718278T2
DE69718278T2 DE69718278T DE69718278T DE69718278T2 DE 69718278 T2 DE69718278 T2 DE 69718278T2 DE 69718278 T DE69718278 T DE 69718278T DE 69718278 T DE69718278 T DE 69718278T DE 69718278 T2 DE69718278 T2 DE 69718278T2
Authority
DE
Germany
Prior art keywords
instructions
instruction
execution unit
loop
short backward
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69718278T
Other languages
English (en)
Other versions
DE69718278D1 (de
Inventor
Timothy D. Anderson
Jonathan H. Shiell
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Application granted granted Critical
Publication of DE69718278D1 publication Critical patent/DE69718278D1/de
Publication of DE69718278T2 publication Critical patent/DE69718278T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

    HINTERGRUND DER ERFINDUNG
  • Die vorliegenden Ausführungsformen beziehen sich auf Mikroprozessoren, wobei sie besonders auf einen Mikroprozessor des Typs, der im Oberbegriff des Anspruchs 14 definiert ist, und auf ein Verfahren zum Betreiben eines derartigen Mikroprozessors gerichtet ist.
  • Eine Datenverarbeitungsvorrichtung des obenerwähnten Typs ist aus EP-A-0 354740 bekannt. In dieser Datenverarbeitungsvorrichtung zum Decodieren und Ausführen von Befehlen in einer parallelen Weise in einem Befehlsformat mit variabler Wortlänge werden mehrere Decodierer verwendet, in denen ein primärer Befehlsdecodierer einen Befehl decodiert und die Wahrscheinlichkeit der parallelen Decodierung des nächsten Befehls erfaßt wird, so daß der primäre Befehlsdecodierer und ein sekundärer Befehlsdecodierer einen Befehl mit variabler Wortlänge bzw. einen Befehl mit fester Wortlänge in einer parallelen Weise decodieren. Ein bedingter Verzweigungsbefehl mit einer festen Wortlänge und der nachfolgende Befehl mit einer variablen Wortlänge werden in paralleler Weise decodiert und ausgeführt, um die Geschwindigkeit zu vergrößern, mit der der bedingte Verzweigungsbefehl ausgeführt wird.
  • Die im folgenden beschriebenen Ausführungsformen umfassen das sich entwickelnde und immer ausdehnende Gebiet der Computer-Systeme und Mikroprozessoren. Vor kurzem sind signifikante Fortschritte bei der Konstruktion von Mikroprozessoren gemacht worden, um ihre Leistung zu verbessern, die durch die Anzahl der Befehle gemessen wird, die während einer gegebenen Zeitperiode ausgeführt werden. Ein derartiger Fortschritt bezieht sich auf Mikroprozessoren des "superskalaren" Typs, der den parallelen Abschluß von Befehlen mit einem einzelnen Befehlszeiger parallel ausführen kann. Typischerweise besitzen superskalare Mikroprozessoren mehrere Ausführungseinheiten, wie z. B. mehrere Einheiten für die ganzzahlige Arithmetik und Logik (ganzzahlige ALUs), mehrere Lade/Speicher-Einheiten (LSUs) und eine Gleitkommaeinheit (FPU), von denen jede einen Befehl ausführen kann. Als solche können mehrere Maschinenbefehle in einem superskalaren Mikroprozessor gleichzeitig ausgeführt werden, dies schafft deutliche Vorteile in der Gesamtleistung der Vorrichtung und ihrer Systemanwendung.
  • Eine weitere in modernen Mikroprozessoren häufig verwendete Technik, um die Leistung zu verbessern, umfaßt die "Pipelineverarbeitung" von Befehlen. Wie im Stand der Technik wohlbekannt ist, umfassen die Mikroprozessorbefehle im allgemeinen jeder mehrere sequentielle Befehle, wie z. B. das Holen von Befehlen, das Decodieren von Befehlen, das Lesen der Operanden aus den Registern oder dem Speicher, die Ausführung des Befehls und das Zurückschreiben der Ergebnisse des Befehls. Die Pipelineverarbeitung der Befehle in einem Mikroprozessor bezieht sich auf die Stufentrennung dieser Sequentialisierung der Befehle, so daß mehrere Befehle in der Folge gleichzeitig in verschiedenen Stufen der internen Folge verarbeitet werden. Falls z. B. ein Pipeline-Mikroprozessor einen Befehl n in einem gegebenen Taktzyklus des Mikroprozessors ausführt, kann ein vierstufiger Pipeline-Mikroprozessor gleichzeitig (d. h. im gleichen Maschinenzyklus) die Operanden für den Befehl n + 1 (d. h. den nächsten Befehl in der Folge) abrufen, den Befehl n + 2 decodieren und den Befehl n + 3 holen. Durch die Verwendung der Pipelineverarbeitung kann die Leistung des Mikroprozessors effektiv eine Folge von Befehlen für mehrere Zyklen mit einer Rate von einem pro Taktzyklus ausführen.
  • Durch die Verwendung sowohl der Pipelmetechniken als auch der superskalaren Techniken können moderne Mikroprozessoren Maschinenbefehle für mehrere Zyklen mit einer Rate ausführen, die größer als ein Befehl pro Maschinentaktzyklus ist, vorausgesetzt, daß die Befehle in einer bekannten Folge fortfahren. Wie jedoch im Stand der Technik wohlbekannt ist, fahren viele Computer-Programme nicht kontinuierlich in der sequentiellen Reihenfolge der Befehle fort, sondern enthalten statt dessen Verzweigungen (sowohl bedingte als auch unbedingte) zu Programmbefehlen, die vom nächsten folgenden Befehl in der aktuellen Befehlsfolge verschieden sind. Derartige Operationen fordern einen Computer aus vielen Gründen heraus, wie z. B. dem Holen und der Ausführung der Befehle, wobei sie oft vom Typ des Verzweigungsbefehls und dem Ort des Zielbefehls abhängig sind. In der Tat haben sich über viele Jahre in den Computer-Systemen Komplexitäten der Verzweigungen ergeben. In der nicht superskalaren Technik und vor der Verwendung von Caches enthielt z. B. der IBM 360, Modell 91, einen Schleifenpuffer, um einen cache-ähnlichen Betrieb im Zusammenhang der Verzweigungs- Schleifenbildung auszuführen. Insbesondere war ein Befehlspuffer innerhalb des Systems enthalten, der die geholten Befehle empfangen hat. Wenn erfaßt wurde, daß die Befehle innerhalb des Puffers eine Verzweigungsschleife repräsentieren, dann ist effektiv ein Cache erzeugt worden, aus dem dann jeder Befehl abgerufen und einzeln ausgeführt werden konnte, bis alle gewünschten Iterationen der Schleife abgeschlossen waren, ohne die Schleifenbefehle aus dem Hauptspeicher (der der Kernspeicher war) erneut holen zu müssen. Folglich war die ansonsten für das Holen dieser Befehle erforderliche Zusatzzeit beseitigt.
  • Im Zusammenhang der Verzweigungen in superskalaren Mikroprozessoren sind die vorliegenden Ausführungsformen auf einen Befehl gerichtet, der in diesem Dokument als ein kurzer Rückwärtsverzweigungsbefehl bezeichnet wird. Ein Rückwärtsverzweigungsbefehl ist ein Befehl, der, wenn die Verzweigung genommen wird, den Fluß zu einem Zielbefehl lenkt, der dem Verzweigungsbefehl vorangeht. Ein kurzer Rückwärtsverzweigungsbefehl arbeitet in dieser Weise, aber die Rückwärtsverzweigung zu dem Zielbefehl überspannt nur eine relativ kleine Anzahl von Befehlen. Die spezielle Anzahl der Befehle muß an diesem Punkt nicht definiert sein, aber diese Anwendung nimmt als ein Beispiel eine Anzahl in der Größenordnung von fünf an. Folglich kann ein Verzweigungsbefehl, der (wenn er genommen wird) zu einem Ziel verzweigt, das sich fünf oder weniger Befehle vor dem Verzweigungsbefehl befindet, als ein kurzer Rückwärtsverzweigungsbefehl bezeichnet werden.
  • Unter der Voraussetzung der obigen Einführung eines kurzen Rückwärtsverzweigungsbefehls haben die Erfinder der vorliegenden Erfindung einen beträchtlichen Nachteil erkannt, der auftreten kann, wenn die ausführbaren Befehle aus der durch den kurzen Rückwärtsverzweigungsbefehl definierten Schleife verarbeitet werden, d. h. die Befehle zwischen und einschließlich dem kurzen Rückwärtsverzweigungsbefehl und seinem Zielbefehl. Wenn unter der gegenwärtigen Technologie eine kurze Rückwärtsverzweigungsbefehlsschleife ausgeführt wird, wird spezifisch nur eine Anzahl der ausführbaren Befehle, die gleich oder kleiner als die Anzahl der ausführbaren Befehle innerhalb dieser Schleife ist, innerhalb eines einzelnen Taktzyklus ausgeführt. Mit anderen Worten, wenn die Anzahl der Ausführungseinheiten größer als die Anzahl der aus der kurzen Rückwärtsverzweigungsbefehlsschleife abgeleiteten ausführbaren Befehle ist, dann arbeiten bestimmte Ausführungseinheiten während des Zyklus nicht, wenn der kurze Rückwärtsverzweigungsbefehl ausgeführt wird. Als ein numerisches Beispiel wird angenommen, daß eine Ausführungsstufe acht Ausführungseinheiten enthält, und daß es fünf ausführbare Befehle gibt, die aus der kurzen Rückwärtsverzweigungsschleife abgeleitet worden sind. Unter der Voraussetzung dieser Annahmen arbeiten im Stand der Technik wenigstens drei der Ausführungseinheiten nicht, während die kurze Rückwärtsverzweigungsschleife ausgeführt wird. Im Ergebnis gibt es eine beträchtliche Nichtverwendung der Ausführungseinheiten. Außerdem können die Betriebsmittel an anderen Orten der Befehlspipeline außerdem ungenutzt bleiben, wenn eine kurze Rückwärtsverzweigungsbefehlsschleife verarbeitet wird. Wenn außerdem die Anzahl der Ausführungseinheiten oder anderer ungenutzter Betriebsmittel zunimmt oder wenn die Anzahl der ausführbaren Befehle aus der kurzen Rückwärtsverzweigungsschleife abnimmt, wird die Ineffizienz sogar noch größer.
  • Mit Blick auf das Obige ergibt sich ein Bedarf, die Nachteile der Systeme des Standes der Technik zu bearbeiten und einen Mikroprozessor zu schaffen, der so betreibbar ist, dass seine Betriebsmittel effizienter genutzt werden, wie z. B. durch das Ausführen von mehr als einer kurzen Rückwärtsverzweigungsschleife in einem einzelnen Befehlzyklus.
  • KURZE ZUSAMMENFASSUNG DER ERFINDUNG
  • Gemäß der vorliegenden Erfindung wird ein Verfahren zum Betreiben eines Mikroprozessors, das die Schritte des Anspruchs 1 umfaßt, geschaffen. Es wird ferner ein Mikroprozessor geschaffen, der die Merkmale des Anspruchs 14 umfaßt.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNG
  • Die vorliegende Erfindung wird nun beispielhaft unter Bezugnahme auf die beigefügte Zeichnung weiter beschrieben, worin:
  • - Fig. 1 eine bekannte Mikroprozessorpipeline veranschaulicht, die modifiziert werden kann, um kurze Rückwärtsverzweigungsbefehlsschleifen effizienter zu verarbeiten;
  • - Fig. 2 eine Beispielbefehlsfolge veranschaulicht, die eine kurze Rückwärtsverzweigungsbefehlsschleife enthält;
  • - Fig. 3 einen Zeitplan einer kurzen Rückwärtsverzweigungsbefehlsfolge veranschaulicht, die durch die Befehlspipeline nach Fig. 1 geht;
  • - Fig. 4 Modifikationen an der Mikroprozessorpipeline nach Fig. 1 veranschaulicht, so daß sie effizienter kurze Rückwärtsverzweigungsbefehlsschleifen gemäß den veranschaulichten Ausführungsformen der vorliegenden Erfindung verarbeiten kann;
  • - Fig. 5 einen Zeitplan einer kurzen Rückwärtsverzweigungsbefehlsfolge veranschaulicht, die durch die Befehlspipeline nach Fig. 4 geht, wobei die Folge eine Anzahl von Befehlen enthält, die kleiner als die Anzahl der Ausführungseinheiten ist;
  • - Fig. 6a eine schematische Darstellung einer Warteschlangenschaltung veranschaulicht, die die kurzen Rückwärtsverzweigungsbefehle von der Warteschlange 30 für die Zeitplanstufe 18 nach Fig. 4 bereitstellt;
  • - Fig. 6b die schematische Darstellung nach Fig. 6a veranschaulicht, nachdem die Schleifenbefehle der Zeitplanstufe 18 für die Zeitplanung während des Taktzyklus 8 nach Fig. 5 bereitgestellt worden sind;
  • - Fig. 6c die schematische Darstellung nach Fig. 6a veranschaulicht, nachdem die Schleifenbefehle der Zeitplanstufe 18 für die Zeitplanung während des Taktzyklus 9 nach Fig. 5 bereitgestellt worden sind; und
  • - Fig. 7 einen Zeitplan einer kurzen Rückwärtsverzweigungsbefehlsfolge veranschaulicht, die durch die Befehlspipeline nach Fig. 4 geht, wobei die Folge eine Anzahl von Befehlen enthält, die größer als die Anzahl der Ausführungseinheiten ist.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • Fig. 1 veranschaulicht ein Befehlsverarbeitungssystem, das im allgemeinen mit 10 bezeichnet ist, und das für Zwecke der Einführung des Systemtyps verwendet wird, in den die vorliegenden Ausführungsformen aufgenommen werden können. Das System 10 in seinem allgemeinen Sinn ist das gleiche, wie es in vielen bekannten Mikroprozessoren des Standes der Technik vorhanden ist, wobei es vorgesehen ist, um den Gesamtbetrieb der vorliegenden Ausführungsformen zu demonstrieren, wobei die ausführliche Erörterung der Aspekte der Erfindung auf später verschoben ist. Es wird außerdem angemerkt, daß sowohl die Mikroprozessorstruktur nach Fig. 1 als auch alternative bekannte Mikroprozessoren zahlreiche zusätzliche nicht gezeigte Aspekte enthalten. An diesem Punkt werden jedoch derartige andere bekannte Einzelheiten der Mikroprozessoren nicht beschrieben, um die Erörterung zu vereinfachen. Das System 10 enthält eine Pipeline 12, die in bestimmter Beziehung ähnlich zu dem Typ ist, der in der aktuellen Technik üblicherweise vorhanden ist, um Befehle in einem Computer mit komplexen Befehlsvorrat ("CISC") zu empfangen und zu verarbeiten. Es wird an diesem Punkt angemerkt, daß die Verwendung einer CISC-Pipeline beispielhaft erfolgt, wobei ferner angemerkt wird, daß verschiedene der Prinzipien der Erfindung, die in diesem Dokument dargelegt sind, außerdem von einem Fachmann auf einen Computer mit verringertem Befehlsvorrat ("RISC") angewendet werden können. Im Beispiel nach Fig. 1 ist die Pipeline 12 beispielhaft als sechs Stufen besitzend gezeigt, die von 14 bis 24 gerade numeriert sind. Jede der Stufen 14 bis 24 repräsentiert eine Stufe oder Stufen, die im Stand der Technik bekannt sind, wobei sie sich im Namen und/oder der Funktion in verschiedenen Architekturen unterscheiden können. Im allgemeinen und wie im Stand der Technik bekannt ist, enthält eine Mikroprozessorpipeline eine Anfangsstufe, eine Endstufe und eine Gruppe von Zwischenstufen, wobei ein Befehl vom Anfang zum Ende der Stufe weitergegeben wird, wobei eine oder mehrere Operationen in Reaktion auf den Befehl auftreten, der sich in jeder Stufe befindet. Wie im folgenden ausführlich im Zusammenhang mit den Fig. 4 bis 7 beschrieben ist, kann die Pipeline 12 jedoch modifiziert werden, so daß sie sich vom Stand der Technik wenigstens soweit im hohen Maße unterscheidet, wie kurze Rückwärtsverzweigungsbefehle verarbeitet werden. Bevor die ausführliche Erörterung der Operationen der Modifikationen am System 10 in Zusammenhang mit den kurzen Rückwärtsverzweigungsbefehlen erreicht wird, sind einige Verallgemeinerungen hilfreich, um den Umfang der Erfindung weiter zu erkennen. Folglich ist die folgende Erörterung lediglich beispielhaft und ohne Einschränkung der später erörterten Ausführungsformen der Erfindung.
  • Es wird im allgemeinen angemerkt, daß in der Pipeline 12 ein Befehl in einer Anfangsstufe der Pipeline abgerufen wird, die im vorliegenden Beispiel die Befehlsholstufe 14 ist. Das Holen der Befehle durch die Stufe 14 kann von verschiedenen Betriebsmitteln, wie z. B. den Caches und den verschiedenen Ebenen des Speichers, erfolgen, wobei es außerdem die Adressenmanipulation, wie z. B. die Umsetzung zwischen einer logischen Adresse und einer physikalischen Adresse, enthalten kann. Deshalb ist ferner gezeigt, daß die Befehlsholstufe 14 mit einem Befehls-Cache und einer Adressenberechnungsschaltung 26 verbunden ist. Außerdem enthält die Befehlsholstufe 14 einen Verzweigungszielpuffer ("BTB") 28, der im Stand der Technik bekannt ist, und der vorhersagt, ob ein Verzweigungsbefehl genommen wird, wie ebenfalls im Stand der Technik bekannt ist. Außerdem kann der BTB 28 modifiziert werden, wie später in Zusammenhang mit den kurzen Rückwärtsverzweigungsbefehlen erörtert ist. Es wird außerdem angemerkt, daß der BTB 28 innerhalb der Stufe 14 lediglich beispielhaft und infolge seiner funktionalen Beziehung zum Prozeß des Holens der Befehle gezeigt ist; er kann trotzdem anders als in Fig. 1 gezeigt ist eine separate physikalische Struktur sein.
  • Typischerweise wird ein Befehl, nachdem er durch die Befehlsholstufe 14 empfangen worden ist, in einer oder mehreren Decodierungsstufen decodiert. Während eine Pipeline deshalb irgendeine Anzahl von Decodierungsstufen enthalten kann, ist die Pipeline 12 vereinfacht, so daß sie nur eine einzelne Decodierungsstufe 16 beispielhaft zeigt. Ferner beziehen sich die verschiedenen Lehren im Stand der Technik auf diese Stufen in verschiedenen Weisen; diese Stufen sind z. B. oft in sogenannte Vordecodierungsstufen aufgespalten, denen die Decodierungsstufen folgen. In allen Fällen Dekomprimieren die eine oder die mehreren Decodierungsstufen den Befehl einer Architektur mit kompliziertem Befehlsvorrat in eine oder mehrere einfachere Operationen, die in diesem Dokument aus Gründen, die im folgenden deutlicher werden, als Ausführungseinheit-Befehle bezeichnet werden. Diese Ausführungseinheit-Befehle können typischerweise in einem Ausführungstakt ausgeführt werden. Es wird außerdem angemerkt, daß die Ausführungseinheit-Befehle abhängig von der Architektur und/oder dem Hersteller verschiedene Namen besitzen. Im Standard von Texas Instruments werden die Ausführungseinheit-Befehle z. B. als nicht teilbare Operationen ("AOps") bezeichnete. Diese AOps, wenn sie in ihrer Gesamtheit abgeschlossen sind, repräsentieren den Abschluß und die Absolvierung der Befehle des Befehlsvorrats, einschließlich ihres Operationscodes und der Operanden, falls anwendbar. Es wird angemerkt, daß die AOps etwa mit einigen RISC-Befehlen vergleichbar sind, wobei sie folglich die Codes sind, die mit verschiedenen Abschnitten des Mikroprozessors verbunden sind, um anschließend die Ausführung des decodiert Befehls einzuleiten. Folglich sind die AOps mit den Befehlen vergleichbar, die in anderen Architekturen als ROps-, uOps- oder RISC86-Befehle bezeichnet werden. Es wird außerdem angemerkt, daß in einigen RISC-Architekturen der Befehl des Befehlsvorrats und der Ausführungseinheit-Befehl der gleiche Befehl ist (wohingegen für das CISC-System der Befehl des Befehlsvorrats decodiert wird, um einen oder mehrere Ausführungseinheit-Befehle zu bilden, die sich von dem Befehl des Befehlsvorrats selbst unterscheiden). Es ist deshalb durch die Verwendung des Ausführungseinheit-Befehls beabsichtigt, ebenso diese RISC-Architektur abzudecken. In jedem Fall werden, sobald die Ausführungseinheit-Befehle gebildet worden sind (oder im Fall einiger RISC-Systeme lediglich als Befehle des Befehlsvorrats vorwärts gebracht worden sind), sie in einer Speicherstruktur gespeichert, die für die Zwecke der Fig. 1 als eine Warteschlange 30 innerhalb der Decodierungsstufe 16 gezeigt ist. Folglich speichert die Warteschlange 30 die Ausführungseinheit- Befehle für den Übergang zur nächsten folgenden Pipelinestufe, die im folgenden beschrieben ist.
  • Die Warteschlange 30 stellt die Ausführungseinheit-Befehle der Zeitplanstufe 18 bereit, die diese Befehle für die entsprechenden geeigneten Ausführungseinheiten des Mikroprozessors zeitlich plant. In einigen Konventionen wird diese Zeitplanstufe als die Ausgabeeinrichtung für jeden Ausführungseinheit-Befehl zu seiner geeigneten Ausführungseinheit bezeichnet. Die Pipeline 12 enthält z. B. eine Ausführungsstufe 22, die acht Ausführungseinheiten (die als EX1 bis EX8 bezeichnet sind) enthält. Derartige Ausführungseinheiten können verschiedene Typen besitzen, wie z. B. eine Arithmetikeinheit, eine Lade/Speicher-Einheit oder eine Gleitkommaeinheit. Außerdem kann ein einzelner Typ wiederholt vorliegen, so daß die Pipeline zwei oder mehrere von diesen Typen enthält, wie z. B. zwei Arithmetikeinheiten, zwei Lade/Speicher-Einheiten usw. In allen Fällen können im allgemeinen für die Pipeline 12, die acht Ausführungseinheiten enthält, bis zu acht Ausführungseinheit-Befehle durch die Stufe 18 für die Ausführung in einem einzelnen Taktzyklus durch jede entsprechende Ausführungseinheit zeitlich geplant werden. Außerdem kann ein Mikroprozessor mehr als acht Ausführungseinheiten enthalten, wobei folglich die Anzahl der Ausführungseinheit-Befehle, die in einem einzelnen Taktzyklus auszuführen sind, dementsprechend vergrößert sein kann.
  • Nachdem die Ausführungseinheit-Befehle ausgegeben worden sind, liest die Operandenlesestufe 20 irgendwelche Operanden, die notwendig sind, um irgendeinen oder mehrere der gegenwärtig zeitlich geplanten Ausführungseinheit- Befehle auszuführen. Typischerweise enthält dies aus den Registern gelesene Operanden. Als nächstes werden in der Stufe 22 und wie oben eingeführt ist, die Ausführungseinheit-Befehle ausgeführt, d. h., jede Ausführungseinheit EX1 bis EX8 führt die ihre entsprechende Funktionalität an ihrem zeitlich geplanten Ausführungseinheit-Befehl aus. Es wird angemerkt, daß eine oder mehrere der Ausführungseinheiten EX1 bis EX8 eine spezielle Verzweigungshandhabungs- Schaltungsanordnung enthält, um eine Verzweigung zu erfassen und auf sie zu antworten und andere auf die Verzweigung bezogenen Funktionen auszuführen, wie entweder in diesem Dokument dargelegt ist oder im Stand der Technik bekannt ist. In der Tat wird in dieser Hinsicht angemerkt, daß die Ausführungsstufe 22 außerdem drei auf die Verzweigung bezogene Signale für den BTB 30 bereitstellt, wenn sie einen Verzweigungsbefehl verarbeitet. Spezifischer und wie später ausführlich beschrieben ist, bestimmt nach der Ausführung eines Verzweigungsbefehls die Ausführungsstufe 22 die tatsächliche (im Gegensatz zur vorhergesagten) Zieladresse, die einen Verzweigungsbefehl entspricht; folglich wird diese Adresse dem BTB 12 übermittelt, wobei sie als das ACTUAL TARGET ADDRESS-Signal in Fig. 1 gezeigt ist. Außerdem bestimmt die Ausführungsstufe 22 ferner, ob die ACTUAL TARGET ADDRESS für einen gegebenen Verzweigungsbefehl mit einer vorhergesagten Zieladresse für den gleichen Verzweigungsbefehl übereinstimmt. Das Ergebnis dieser Bestimmung wird über das MISPREDICTED-Signal zum BTB 28 geleitet. Das MISPREDICTED-Signal enthält wenigstens zwei Bits, ein Bit, um anzuzeigen, ob die Vorhersage genau ist, und ein weiteres Bit, um anzuzeigen, ob das aktuelle MISPREDICTED-Signal gültig ist. Es wird außerdem angemerkt, daß einige Architekturen tatsächlich irgendeines oder beide dieser Steuersignale aus anderen Bereichen als der Ausführungseinheit oder sogar vor der Ausführungsstufe bereitstellen können. Einige Architekturen. können z. B. während der Decodierung eines Befehls bestimmen, daß der Befehl kein Verzweigungsbefehl ist, noch das er als genommen vorhergesagt wird. Natürlich ist die Vorhersage des Nehmens eines Nichtverzweigungsbefehls unrichtig, weil der Nichtverzweigungsbefehl per definitionem eine Verzweigung nicht "nimmt". Folglich führt dieser Fall sogar bevor der Verzweigungsbefehl die Ausführungsstufe erreicht zu einer falschen Vorhersage. Für einen Fachmann werden außerdem andere Beispiele feststellbar sein. Schließlich stellt die Ausführungsstufe 22 außer den ACTUAL TARGET ADDRESS- und MISPREDICTED-Signalen dem BTB 28 die Adresse eines Verzweigungsbefehls bereit, der ausgeführt wird, (die in Fig. 1 als BRANCH ADDRESS gezeigt ist). Wie im Stand der Technik bekannt ist können noch weitere Signale durch die Ausführungsstufe 22 dem BTB 28 bereitgestellt werden.
  • Die Stufe 24 absolviert den Befehl, dies bedeutet, daß der Befehl abgeschlossen ist und seine Wirkung, falls es irgendeine gibt, im Architekturzustand des Mikroprozessors erbringt, wobei die Pipeline 12 abgeschlossen ist. Außerdem kann das Ergebnis des Befehls, falls es irgendeines gibt, in irgendeinen Speicher, wie z. B. eine Registerdatei, geschrieben werden. Diese letzte Operation wird häufig als Rückschreiben bezeichnet, wobei es manchmal als eine Funktion betrachtet wird, die nicht Teil der letzten Pipelinestufe ist, sondern die zum gleichen Zeitpunkt auftritt, zu dem der Befehl absolviert ist.
  • Fig. 2 veranschaulicht für die Zwecke der größeren Einführung des im obigen Hintergrund erwähnten kurzen Rückwärtsverzweigungsbefehls einen Beispielstrom von Befehlen, der im allgemeinen mit 32 bezeichnet ist. Der Befehlstrom 32 enthält acht Befehle, die von oben nach unten über die Figur eine sequentielle Art aufweisen (d. h. diejenigen im oberen Teil der Figur sind in der Befehlsfolge früher als diejenigen im unteren Teil der Figur). Jeder Befehl ist durch einen Großbuchstaben oder eine Abkürzung bezeichnet, um die aktuelle Erörterung zu vereinfachen, Beginnend mit dem frühsten Befehl X folgt ihm in der Folge der Befehl Y. Der nächste ist der Zielbefehl für den kurzen Rückwärtsverzweigungsbefehl, wobei dieser Zielbefehl in Fig. 2 als der Befehl TR abgekürzt ist. Dem TR- Befehl folgen die drei Befehle A, B und C, denen der kurze Rückwärtsverzweigungsbefehl folgt, der als SBB abgekürzt ist. Schließlich folgt dem SBB-Befehl ein zusätzlicher Befehl, der in Fig. 2 beliebig als Befehl M angezeigt ist.
  • Die Verarbeitung des Befehlsstroms 32 wird zuerst im allgemeinen beschrieben, um die Verarbeitung einer kurzen Rückwärtsverzweigungsoperation mit einer Beschreibung zu demonstrieren, die den Stand der Technik und die im folgenden im Zusammenhang mit den Fig. 3 bzw. 5 dargelegten vorliegenden Ausführungsformen gegenüberstellt. Im allgemeinen Betrieb, wenn der SBB-Befehl aufgerufen wird, kehrt, vorausgesetzt, daß die Verzweigung genommen wird, der Programmfluß zurück, um sowohl den TR-Befehl als auch die Befehle A, B und C zu verarbeiten. Folglich wird eine Schleife definiert, wobei sie in Fig. 2 im allgemeinen mit 34 bezeichnet ist. Folglich endet die Schleife 34, wenn der SBB- Befehl abermals erreicht wird. Wird jedoch angenommen, daß die SBB- Verzweigung abermals genommen wird, wird der Prozeß wiederholt, so daß die Schleife 34 in dieser Weise für zahlreiche Iterationen verarbeitet werden kann. Typischerweise wird an irgendeinem Punkt der kurze Rückwärtszweig nicht länger genommen, wobei der nächste folgende Befehl, der dem SBB folgt (z. B. der Befehl M), verarbeitet wird. Unter der Voraussetzung des Obigen enthält deshalb der Befehlstrom 32 eine Verzweigungsschleife 34, die aus fünf Befehlen besteht. Jede derartige Schleife 34 enthält deshalb einen Verzweigungsbefehl, einen Zielbefehl und eine kleine Anzahl von Befehlen zwischen dem Verzweigungs- und dem Zielbefehl. Für die Zwecke dieses Dokuments wird diese kleine Anzahl von Befehlen für die Leichtigkeit der Erörterung als Zwischenbefehle bezeichnet. Während die Schleife 34 nach Fig. 2 beispielhaft fünf Befehle enthält, ist außerdem die Länge einer kurzen Rückwärtsverzweigungsschleife für die Zwecke des, Definierens anderer Beispiele unter Verwendung der vorliegenden Ausführungsformen weiter nach einem Verständnis der verschiedenen anderen im folgenden in den Fig. 3 bis 7 demonstrierten Aspekte definiert.
  • Fig. 3 veranschaulicht einen Zeitplan des Befehlsstroms 32 nach Fig. 2, wie er in der Weise des Standes der Technik durch eine Mikroprozessorstruktur, wie z. B. das in Fig. 1 gezeigte System 10, verarbeitet wird. Im allgemeinen repräsentiert die horizontale Achse von links nach rechts durch Fig. 3 die aufeinanderfolgenden Taktzyklen des Mikroprozessors, während die vertikale Achse von oben nach unten durch Fig. 3 den Durchgang eines Befehlsstroms durch die Mikroprozessorpipeline 12 repräsentiert. Folglich wird während des Taktzyklus 1 der Befehlstrom 32 durch die Befehlsholstufe 14 aus der Befehls-Cache-Schaltung 26 geholt. In Reaktion auf das Holen wird der SBB-Befehl als ein Verzweigungsbefehl identifiziert, deshalb wird der BTB 28 konsultiert, um das Ziel für die Verzweigung zu bestimmen. Für das vorliegende Beispiel wird angenommen, daß dies der erste Fall ist, in dem dieser spezielle SBB-Befehl geholt wird, wobei deshalb ferner angenommen wird, daß die Verzweigung entweder nicht vorhergesagt wird (d. h. es gibt an diesem Punkt keinen entsprechenden Hinweis im BTB 28) oder als nicht genommen vorhergesagt war, was oft für das erstmalige Holen der Fall ist. Schließlich wird angemerkt, daß der Befehlsstrom 32 in Fig. 3 so orientiert ist, um den frühsten Befehl (d. h. den Befehl X) an der Spitze der Folge und den letzten Befehl (d. h. den Befehl M) am Boden der Folge zu zeigen.
  • Während des Taktzyklus 2 veranschaulicht Fig. 3, daß der Befehlsstrom 32 in seiner gleichen Orientierung in die Warteschlange 30 geht. Aus Fig. 2 wird deshalb angemerkt, daß vorgeschlagen wird, daß jeder Befehl des Befehlsstroms 32 decodiert wird und zur Warteschlange 30 geht. Es wird angemerkt, daß diese Darstellung zwei Annahmen macht, um die vorliegende Erörterung zu vereinfachen. Zuerst wird angenommen, daß nur ein einzelner Taktzyklus beim Decodieren jedes Befehls aus dem Strom 32 aufgewendet wird. Es wird jedoch angemerkt, daß es möglich ist, daß mehrere Taktzyklen (und mehrere Decodierungsstufen) jeden Befehl tatsächlich decodieren können. Zweitens wird für jeden Befehl des Befehlsstroms 32 angenommen, daß aus der Decodierungsoperation ein einzelner entsprechender Ausführungseinheit-Befehl resultiert. Es wird jedoch angemerkt, daß einige Befehle in zwei oder mehr Ausführungseinheit-Befehle decodiert werden können. Um die aktuelle Erklärung zu vereinfachen und wie es oft der Fall ist, wird trotzdem angenommen, daß die Ausführungseinheit-Befehle in der Warteschlangenstufe und dahinter, die in Fig. 3 gezeigt sind, eins zu eins den Befehlen entsprechen, die in einer früheren Stufe geholt und dann decodiert worden sind.
  • Außer des Vorhandenseins des Befehlsstroms 32 in der Warteschlange 30 während des Taktzyklus 2 in Fig. 3 wird außerdem angemerkt, daß die Befehlsholstufe 14 während des gleichen Taktzyklus 2 außerdem die nächste Zeile von Befehlen, die den Befehlsstrom 32 folgt, holt. Um diesen Punkt zu veranschaulichen, werden sequentielle Großbuchstaben verwendet, um diese Befehle zu bezeichnen. Weil, folglich der letzte Befehl im Befehlsstrom 32 der Befehl M ist, sind dann die nächsten acht geholten Befehle, die dem Befehl M folgen, die Befehle N bis U, wie in der Holstufe während des Taktzyklus 2 gezeigt ist.
  • Während des Taktzyklus 3 wird jeder Ausführungseinheit-Befehl, der dem Befehlsstrom 32 entspricht, durch die Zeitplanstufe 18 verarbeitet, wobei er für die Ausführung zeitlich geplant wird. Unter der Voraussetzung einer optimierten Zeitplanung wird angemerkt, daß jeder der acht Ausführungseinheit-Befehle für eine der acht Ausführungseinheiten der Ausführungsstufe 22, die in Fig. 1 gezeigt ist, zeitlich geplant wird. Es wird außerdem angemerkt, daß während des Taktzyklus 3 der dem Befehlsstrom 32 folgende Befehlsstrom (d. h. die Befehle N bis U) außerdem decodiert und in die Warteschlange 30 gelegt wird. Es wird noch weiter angemerkt, daß ein noch weiterer Befehlsstrom, der den Befehlen N bis U folgt, durch die Befehlsholstufe 14 geholt wird; um die Fig. 3 zu vereinfachen, ist jedoch sowohl nur die Verarbeitung des Befehlsstroms 32 als auch des nächsten folgenden Stroms (d. h. die Befehle N bis U) gezeigt, um die Veranschaulichung und die augenblickliche Erörterung zu vereinfachen.
  • Während des Taktzyklus 4 geht jeder Ausführungseinheit-Befehl, der dem Befehlsstrom 32 entspricht, zur Operandenlesestufe 20. Folglich werden bis zu dem Umfang, in dem die Operanden für die Ausführung irgendeines oder mehrerer dieser Ausführungseinheit-Befehle erforderlich sind, derartige Operanden zu diesem Zeitpunkt gelesen (z. B. aus einem Register). Es wird abermals angemerkt, daß außerdem während des Taktzyklus 4 der dem Befehlsstrom 32 folgende Befehlsstrom (d. h. die Befehle N bis U) durch die Zeitplanstufe 18 abermals in einer optimalen Situation zeitlich geplant wird, so daß jeder Ausführungseinheit-Befehl einer der acht Ausführungseinheiten der Ausführungsstufe 22 zugeordnet wird.
  • Schließlich wird während des Taktzyklus 5 jeder Ausführungseinheit-Befehl, der den Befehlen aus dem Befehlsstrom 32 entspricht, ausgeführt. An diesem Punkt wird jedoch angenommen, daß durch die Ausführungseinheit des kurzen Rückwärtsverzweigungsbefehls SBB bestimmt wird, daß er genommen wird. Weil jedoch der SBB-Befehl entweder als nicht genommen vorhergesagt wurde (oder infolge eines Fehlens eines Eintrags im BTB 28 nicht vorhergesagt wurde), ist dann eine falsche Vorhersage (oder in dem Fall, indem kein BTB-Eintrag vorhanden ist, ihr Äquivalent) aufgetreten. Folglich wird in Fig. 1 das MISPREDICTED-Signal aktiviert, wobei die Pipeline 12 geräumt wird. Wenn die Verzweigung falsch vorhergesagt worden ist, dann wird außerdem der BTB 28 aktualisiert, so daß seine Anzeige, die dem SBB-Befehl entspricht, von nicht genommen zu genommen geändert wird. Wenn es noch keine entsprechende Anzeige der Verzweigung im BTB 28 gibt, dann wird ähnlich zu diesem Zeitpunkt eine hergestellt, wobei die Vorhersage auf genommen gesetzt wird. In jedem Fall wird die ACTUAL TARGET ADDRESS, die dem Verzweigungszielbefehl TR entspricht, zur Befehlsholstufe 14 übermittelt. Weil der SBB-Befehl genommen wird, holt folglich die Befehlsholstufe 14 als nächstes einen Befehlsvorrat, der den TR- Befehl erhält, wie im folgenden im Zusammenhang mit dem Taktzyklus 6 weiter beschrieben ist.
  • Der nächste folgende Taktzyklus, der in Fig. 3 gezeigt ist, wird als der Taktzyklus 6 identifiziert. Es sollte jedoch angemerkt werden, daß nach einer falschen Vorhersage einer Verzweigung und einer Räumung der Pipeline, wie oben erörtert ist, oft mehrere Taktzyklen verstreichen werden, bevor das nächste folgende Holen in die Pipeline erfolgt. Um die sequentielle Art der Handlung zu vereinfachen, veranschaulicht Fig. 3 trotzdem den nächsten Taktzyklus, der dem Taktzyklus 5 folgt, als den Taktzyklus 6, wobei es für einen Fachmann selbstverständlich ist, daß in Wirklichkeit das Holen und die folgenden Schritte danach erst in einem späteren Taktzyklus beginnen können. Im Taktzyklus 6 (oder dem nächsten Zyklus, in dem die Pipeline dann bereit ist, um fortzufahren) holt die Befehlsholstufe 14 aus der Befehls-Cache-Schaltung 26 den TR-Befehl und einige nachfolgende Befehle, die ihm folgen. Weil jedoch die Befehle aus einer Cache-Zeile geholt werden, werden alle Befehle in der gleichen Zeile, die dem TR-Befehl vorangehen (z. B. die Befehle X und Y) nicht verwendet. Weil der TR-Befehl innerhalb einer Cache-Zeile ausgerichtet ist, und weil diese Ausrichtung bei der Befehlsholstufe 14 erhalten wird, beginnen trotzdem die ersten zwei in der Befehlsholstufe 14 gezeigten Befehlsplätze während des Taktzyklus 6 mit zwei Sternchen, die anzeigen, daß an diesem Platz kein Befehl geholt worden ist, oder daß die Informationen an diesem Platz entweder ungültig oder ohne Relevanz sind. Es wird ferner angemerkt, daß, weil die geholte Befehlszeile außerdem den Verzweigungsbefehl SBB enthält, dann außerdem jeder andere Befehl, der dem SBB-Befehl in derselben Zeile folgt (z. B. der Befehl M), ebenfalls entweder nicht geholt wird oder die Informationen an diesem Platz entweder ungültig oder ohne Relevanz sind (wie abermals durch die Sternchen in Fig. 3 gezeigt ist). Zusammenfassend wird deshalb im Taktzyklus 6 nur die Schleife 34 des Befehlsstroms 32 geholt, ihre Ausrichtung innerhalb der Cache-Zeile, aus der sie geholt wird, wird jedoch erhalten.
  • Während des Taktzyklus 7 bewegt sich die geholte Schleife 34 vom Taktzyklus 6 durch die Decodierungsstufe 16 und zur Warteschlange 30. Außerdem wird die Schleife 34, wenn sie in die Warteschlange 30 gelegt wird, erneut ausgerichtet, so daß der Zielbefehl TR an die Spitze der Warteschlange 30 gesetzt wird. Folglich sind in dem Umfang, in dem die Schleife 34 weniger Befehle als die Anzahl der Befehle besitzt, die in der Warteschlange 30 gespeichert werden kann, die verbleibenden Plätze unbenutzt. Folglich besteht im aktuellen Beispiel die Schleife 34 aus fünf Befehlen, während die Warteschlange 30 acht Plätze besitzt. Weil die Schleife 34 erneut auf die Spitze der Warteschlange 30 ausgerichtet wird, sind dann die verbleibenden drei Plätze der Warteschlange 30 unbenutzt. Es wird angemerkt, daß außerdem während des Taktzyklus 7 die Befehlsholstufe 14 abermals die nächste Iterationen der Schleife 34 in der gleichen Weise holt, wie oben im Zusammenhang mit dem Taktzyklus 6 beschrieben ist.
  • Unter der Voraussetzung des Obigen bewegt sich die Schleife 34, wie sie vom Taktzyklus 6 geholt worden ist, während der Taktzyklen 8, 9 und 10 durch die Pipeline, wobei sie bis zu diesem Zeitpunkt die Ausführungsstufe 22 erreicht. Zum gleichen Zeitpunkt verarbeiten die vorhergehenden Stufen die nachfolgenden Iterationen der Schleife 34, so daß diese Iterationen außerdem hinter der Schleife 38, wie sie vom Taktzyklus 6 geholt worden ist, geholt, decodiert und in die Warteschlange gelegt, zeitlich geplant usw. werden. Es wird angemerkt, daß in der Ausführungsstufe 22 während des Taktzyklus 10 nur die Schleife 34 für die zeitliche Planung verfügbar gewesen ist, wobei deshalb die Ausführungsstufe 22 die erste Iteration der Schleife ausführt, d. h. nur die fünf Ausführungseinheit- Befehle, die ihr von der Zeitplanstufe 18 (nachdem die Operanden aus der Stufe 20 gelesen worden sind) zugeordnet worden sind. Mit anderen Worten, für jeden Taktzyklus werden nur die Ausführungseinheit-Befehle für eine einzelne Iteration der Schleife ausgeführt. Es wird folglich angemerkt, daß einige der Ausführungseinheiten in einer Weise unbenutzt sind, die zu der Nichtverwendung der Plätze innerhalb der Warteschlange 30 ähnlich ist. Mit anderen Worten, im aktuellen Beispiel enthält die Schleife 34 nur fünf Ausführungseinheit-Befehle, wobei dadurch nur fünf Ausführungseinheiten erforderlich sind, um eine Schleife der kurzen Rückwärtsverzweigung auszuführen. Im Ergebnis verbleiben die verbleibenden drei Ausführungseinheiten der Ausführungsstufe 22 während des Taktzyklus 10 ungenutzt. Es wird außerdem angemerkt, daß nach dem Taktzyklus 10 fit jede nachfolgende Ausführung der Iteration der Schleife 34 abermals eine Iteration der Schleife ausgeführt wird, wobei deshalb nur fünf Ausführungseinheiten arbeiten. Dieser Prozeß wird fortgesetzt, bis die Verzweigung nicht länger genommen wird. An diesem Punkt wird dann die Verzweigung falsch vorhergesagt, wobei die Pipeline abermals in Reaktion auf das MISPREDICTED-Signal geräumt wird, obwohl dies nicht gezeigt ist. Als nächstes wird die Zeile, die die kurze Rückwärtsverzweigung enthält, abermals geholt, aber dieses Mal enthält sie irgendwelche Befehle, die dem TR-Befehl folgen, so daß diese folgenden Befehle dann durch die Pipeline verarbeitet und ausgeführt werden können, wie im Stand der Technik bekannt ist.
  • Das Obige ist bereitgestellt, um zu veranschaulichen, daß die Erfinder der vorliegenden Erfindung die verschiedenen Ineffizienzen des Standes der Technik erkannt haben, wie z. B. die Ineffizienz sowohl der Nichtverwendung von Plätzen innerhalb der Warteschlange 30 als auch der Nichtverwendung von Ausführungseinheiten für einen kurzen Rückwärtsverzweigungsbefehl, wie z. B. den, der oben beispielhaft gezeigt ist. Es wird in der Tat ferner angemerkt, daß diese Nichtverwendung von Plätzen in der Warteschlange und von Ausführungseinheiten für jede nachfolgende Iteration der Schleife 34 auftritt. Folglich ist die Ineffizienz desto größer, je öfter die Schleife 34 ausgeführt wird. Außerdem zeigt das obige Beispiel eine Rückwärtsverzweigungsschleife aus fünf Befehlen, wobei eine Warteschlange acht Plätze und eine Ausführungsstufe acht Ausführungseinheiten besitzt. Während die Nichtverwendung drei Plätze in der Warteschlange 30 und drei Ausführungseinheiten in der Ausführungsstufe 22 beträgt, würde folglich die Nichtverwendung noch größer sein, falls sich weniger Befehle in der Schleife 34 befinden oder falls die Ausführungsstufe 22 mehr als acht Ausführungseinheiten enthält.
  • Unter der Voraussetzung des Verständnisses der obigen Aspekte durch die Erfinder der vorliegenden Erfindung erlauben die Ausführungsformen im folgenden verschiedene Vorteile gegenüber diesem Zugang des Standes der Technik. Diese Vorteile werden aus der ausführlichen Erörterung im folgenden besser erkannt, sie werden jedoch an diesem Punkt, vorausgesetzt das aktuelle Verständnis der Nachteile des Zugangs nach Fig. 3, kurz eingeführt. In der bevorzugten Ausführungsform wild z. B. jeder Platz der Warteschlange 30 nach einer ersten Iteration gefüllt, selbst wenn eine kurze Rückwärtsverzweigungsschleife verarbeitet wird. Als ein weiteres Beispiel wird jeder Ausführungseinheit der Ausführungsstufe 22 erlaubt, einen. Befehl während eines einzelnen Taktzyklus auszuführen, selbst wenn eine kurze Rückwärtsverzweigungsschleife verarbeitet wird, so daß vorzugsweise keine Ausführungseinheit während des Ausführungszyklus nicht verwendet wird, wie es in Fig. 3 der Fall ist. Im Zusammenhang mit diesem letzteren Ziel wird angemerkt, daß die Ausführungseinheiten nach denjenigen, die erforderlich sind, um eine Iteration der kurzen Rückwärtsverzweigungsschleife auszuführen, vorzugsweise während des gleichen Taktzyklus verwendet werden, um gleichzeitig eine weitere Iteration (entweder teilweise oder ganz) einer nachfolgenden Iteration der Schleife auszuführen. Diese Vorteile werden aus der Erörterung der Fig. 4 bis 7 im folgenden besser erkannt.
  • Fig. 4 veranschaulicht ein Befehlsverarbeitungssystem, das im allgemeinen mit 36 bezeichnet ist, und das das gleiche wie das System 10 nach Fig. 1 ist, mit Ausnahme, daß zusätzliche Merkmale vorgesehen sind, um die unmittelbar oberhalb eingeführten Ineffizienzen zu überwinden und um die im folgenden ausführlich beschriebenen Aspekte der Erfindung zu erreichen. In Fig. 4 wurden zu Fig. 1 ähnlichen Elementen gleiche Bezugszeichen zu Fig. 4 vorgetragen. Das System 36 enthält ferner eine Modifikation an der Befehlsholstufe 14, es ist nämlich eine SBB- und TR-Befehlseerfassungsschaltung 38 hinzugefügt, die Informationen zum BTB 28 übermittelt. Es wird außerdem angemerkt, daß die Schaltung 38 beispielhaft innerhalb der Stufe 14 gezeigt ist, wobei sie alternativ an anderen Plätzen in bezug auf die Pipeline 12 (z. B. in der Ausführungsstufe 22) angeordnet sein könnte. In jedem Fall wird der Zweck dieser Schaltung aus der folgenden Erörterung der Fig. 5 bis 7 erkannt.
  • Fig. 5 veranschaulicht einen Zeitplan des Befehlsstroms 32 nach Fig. 2, wie er in Übereinstimmung mit dem Mikroprozessor 36 nach Fig. 4 verarbeitet wird. Fig. 5 verwendet außerdem die gleichen Taktungskonventionen wie Fig. 3, um die vorliegenden Ausführungsformen dem Stand der Technik gegenüberzustellen, wobei folglich die horizontale Achse von links nach rechts durch Fig. 5 die aufeinanderfolgenden Taktzyklen des Mikroprozessors repräsentiert, während die vertikale Achse von oben nach unten durch Fig. 5 den Durchgang eines Befehlsstroms durch die Mikroprozessorpipeline repräsentiert.
  • Fig. 5 stellt im allgemeinen die gleiche Verarbeitungsoperation wie Fig. 3 dar, wie sie oben in bezug auf die Taktzyklen 1 bis 5 beschrieben ist. Folglich wird im Taktzyklus 1 der Befehlsstrom 32 durch die Befehlsholstufe 14 aus der Befehls- Cache-Schaltung 26 geholt, wie im Fall des Taktzyklus 1 nach Fig. 3. Überdies stellen sie außerdem in bezug auf die Taktzyklen 2 bis 5 nach Fig. 5 die gleichen Verarbeitungsoperationen wie die obenbeschriebene Fig. 3 dar. Folglich wird der Leser für die Einzelheiten, was diese Taktzyklen anbelangt, auf die obige Erörterung der Fig. 3 verwiesen. Unter der Voraussetzung der obigen Erörterung wird außerdem in Erinnerung gerufen, daß durch den Abschluß des Taktzyklus 5 in Fig. 5 der SBB-Befehl ausgeführt wird, wobei seine falsche Vorhersage eine Räumung der Pipeline in Reaktion auf das MISPREDICTED-Signal verursacht. Außerdem wird in Erinnerung gerufen, daß die ACTUAL TARGET ADDRESS zur Befehlsholstufe 14 übermittelt wird, so daß ihr nächster Holvorgang aus der Zeile erfolgen kann, die den TR-Befehl enthält.
  • Ungeachtet der Darstellung des Taktzyklus 5 in Fig. 5 unterscheidet sich die vorliegende Ausführungsform an diesem Punkt insofern beträchtlich vom Stand der Technik, als während des Taktzyklus 5 außerdem bestimmt wird, daß der SBB-Befehl eine kurze Rückwärtsverzweigung bildet, wobei deshalb bestimmt wird, daß sein Ziel das Ziel eines kurzen Rückwärtsverzweigungsbefehls ist. In der bevorzugten Ausführungsform kann diese Bestimmung in verschiedenen Arten ausgeführt werden. Um die aktuelle Erörterung zu vereinfachen, wird eine ausführliche Erörterung derartiger Techniken bis nach Fig. 7 aufgeschoben. An diesem Punkt wird jedoch angemerkt, daß in Reaktion auf die Bestimmung die SBB- und TR-Befehlserfassungsschaltung 38 bewirkt, daß ein Eintrag im BTB 28 vorgenommen wird, der den Verzweigungsbefehl als einen kurzen Rückwärtsverzweigungsbefehl bezeichnet, und der den TR-Befehl ferner als sein Ziel bezeichnet. Das Verfahren geht dann zum nächsten folgenden Taktzyklus weiter, wie im folgenden erörtert ist.
  • Wie im Fall nach Fig. 3 wird der nächste folgende Taktzyklus, der innerhalb Fig. 5 gezeigt ist, als der Taktzyklus 6 identifiziert. Wie jedoch oben erklärt ist, werden nach einer falschen Vorhersage einer Verzweigung und einer Pipelineräumung, wie oben erörtert ist, oft mehrere Taktzyklen verstreichen, bevor das nächste folgende Holen in die Pipeline auftritt. Um die sequentielle Art der Handlungen abermals zu vereinfachen, veranschaulicht Fig. 5 trotzdem den nächsten Taktzyklus, der dem Taktzyklus 5 folgt, als den Taktzyklus 6, wobei es für einen Fachmann selbstverständlich ist, daß der Holschritt und die danach nachfolgenden Schritte tatsächlich erst zu einem späteren Taktzyklus beginnen können. Im Taktzyklus 6 nach Fig. 5 (oder dem nächsten Zyklus, in dem die Pipeline dann bereit ist, weiterzugehen) wird die Schleife 34 durch die Befehlsholstufe 14 aus der Befehls-Cache-Schaltung 26 geholt, im allgemeinen wie im Fall des Taktzyklus 6 nach Fig. 3. Folglich wird die Schleife 34 in einer Zeile empfangen, die entsprechend ihrer Ausrichtung aus der Cache-Schaltung 26 ausgerichtet ist. Es werden jedoch zwei zusätzliche Aspekte der vorliegenden Ausführungsformen angemerkt, die im Gegensatz zum Stand der Technik stehen. Als ein erster Unterschied in der vorliegenden Operation wird angemerkt, daß in der bevorzugten Ausführungsform die SBB- und TR-Befehlserfassungsschaltung 38 erfaßt, daß die geholte Zeile sowohl einen SBB-Befehl als auch seinen TR-Befehl enthält. Spezifisch wird aus dem Obigen in Erinnerung gerufen, daß der BTB 28 geschrieben worden ist, damit er eine Bezeichnung sowohl des SBB als auch seines TR-Befehls enthält. Wenn diese Befehle durch die Befehlsholstufe 14 geholt werden, werden sie folglich als solche von einer Nachschlageoperation im BTB 28 erfaßt. Aus Gründen, die im folgenden deutlicher werden, bewirkt der BTB 28 außerdem, daß sowohl zum SBB-Befehl als auch zu seinem TR-Befehl ein Etikett hinzugefügt wird, so daß, wenn ein derartiger Befehl längs der Pipeline 14 weitergeht, er entweder als ein SBB-Befehl oder sein TR-Befehl unterscheidbar ist und entsprechend der im folgenden dargelegten Methodologie verarbeitet werden kann. Als ein zweiter Unterschied im vorliegenden Betrieb holt außer dem Holen der Schleife 34 die Befehlsholstufe 14 außerdem alle Befehle nach dem TR-Befehl, die sich in der gleichen Zeile befinden, aus der Cache-Schaltung 26. Im vorliegenden Beispiel wird deshalb, wenn die Schleife 34 geholt wird, auch der Befehl M geholt, der der Schleife 34 folgt.
  • Während des Taktzyklus 7 gehen sowohl die geholte Schleife 34 als auch der zusätzliche Befehl M vom Taktzyklus 6 durch die Decodierungsstufe 16 und zur Warteschlange 30. Wenn die Schleife 34 und der Befehl M in die Warteschlange 30 gelegt werden, werden sie erneut ausgerichtet, so daß der TR-Befehl an die Spitze der Warteschlange 30 gesetzt ist. An diesem Punkt sind deshalb in dem Ausmaß, in dem die Schleife 34 und irgendwelche Befehle, die ihr in der gleichen Cache-Zeile folgen, weniger Befehle als die Anzahl der Befehle besitzen, die in der Warteschlange 30 gespeichert werden kann, die verbleibenden Plätze ungenutzt (d. h. zwei Plätze im vorliegenden Beispiel). Es wird in bezug auf den Taktzyklus 7 nach Fig. 5 angemerkt, daß im Gegensatz zu Fig. 3 die Schleife nicht länger in der gleichen Weise erneut geholt wird, wie im Stand der Technik, sobald die Warteschlange 30 die vollständige kurze Rückwärtsverzweigungsschleife speichert, wie im folgenden in bezug auf die Fig. 6a-6c besser erkannt wird. Statt dessen wird die Warteschlange 30 effektiv in einem Zustand verriegelt, so daß die Schleife aus Gründen, die im folgenden deutlicher werden, darin verbleibt. Außerdem werden im Gegensatz zum Stand der Technik während des Taktzyklus 7 den nächsten acht geholten Befehle, die dem Befehl M folgen, geholt, wobei sie als die Befehle N bis U in der Holstufe während des Taktzyklus 7 gezeigt sind.
  • Der Betrieb der Zeitplanstufe 18 während des Taktzyklus 8 nach Fig. 5 veranschaulicht ein weiteres zum in Fig. 3 gezeigten Betrieb des Standes der Technik gegensätzliches Merkmal der vorliegenden Ausführungsform. Spezifisch gibt während des Taktzyklus 8 die Warteschlange 30 volle acht Ausführungseinheit- Befehle für die zeitliche Planung an die Zeitplanstufe 18 aus. Folglich kann bis zum Ende des Taktzyklus 8 die Zeitplanstufe 18 nicht nur jeden Ausführungseinheit-Befehl für die erste Iteration der Schleife 34 zeitlich planen, sondern sie kann ferner die Anfangsbefehle dieser Ausführungseinheit-Befehle zeitlich planen, die der nächsten (d. h. der zweiten) Iteration der Schleife 34 entsprechen. Dieser Gegensatz ist in Fig. 5 gezeigt, in dem sequentielle Zahlen zu den vor diesem Punkt verwendeten Buchstabenabkürzungen hinzugefügt werden. Spezifisch sind die ersten fünf durch die Zeitplanstufe 18 während des Taktzyklus 8 zeitlich geplanten Einträge als TR1, A1, B1, C1 und SBB1 gezeigt, wobei jeder der ersten Iteration der Schleife 34 entspricht, während die nächsten drei Einträge als TR2, A2 und B2 gezeigt sind, wobei jeder den ersten drei Ausführungseinheit-Befehlen in der zweiten Iteration der Schleife 34 entspricht. Es wird in Erinnerung gerufen, daß im Betrieb des Standes der Technik nach Fig. 3 während des Taktzyklus 8 die Warteschlange 30 nur bis zu eine volle Schleife 34 der Befehle für die Zeitplanschaltung 18 bereitstellt. Deshalb kann nur diese Schleife (z. B. fünf Befehle) zeitlich geplant werden, wobei nur diese Schleife danach in einem einzelnen Taktzyklus (z. B. während des Taktzyklus 10 in Fig. 3) ausgeführt wird. In dem Fall der zeitlichen Planung kurzer Rückwärtsverzweigungsschleifenbefehle in den vorliegenden Ausführungsformen und unter Verwendung der Schaltungsanordnung, wie z. B. derjenigen, die in Fig. 6a im folgenden gezeigt ist, macht jedoch die Warteschlange 30 die Schleife 34 der Zeitplanstufe 18 in einer kreisförmigen Weise verfügbar, um die Anzahl der zeitlich zu planenden Ausführungseinheit-Befehle über die bloße Anzahl der Ausführungseinheit-Befehle in einer einzelnen Iteration der Schleife zu vergrößern. Mit anderen Worten, wenn die Schleife weniger Ausführungseinheit-Befehle als die Anzahl, die zeitlich geplant werden kann, enthält, dann ist jeder Ausführungseinheit-Befehl der Schleife kreisförmig durch die Warteschlange 30 für die zeitliche Planung während desgleichen Taktzyklus bis zur maximalen Anzahl der zeitlich zu planenden Ausführungseinheit-Befehle verfügbar. Im vorliegenden Beispiel enthält deshalb die Schleife 34 fünf Ausführungseinheit-Befehle, während die Zeitplanstufe 18 bis zu acht Ausführungseinheit- Befehle für bis zu acht Ausführungseinheiten zeitlich planen kann. Wenn folglich die erste Iteration der Ausführungseinheit-Befehle (d. h. T1 bis SBB1) durch die Warteschlange 30 der Zeitplanstufe 18 für die zeitliche Planung für fünf entsprechende Ausführungseinheiten bereitgestellt wird, hinterläßt dies drei zusätzliche Ausführungseinheiten, für die die Zeitplanstufe 18 die Ausführungseinheit- Befehle zeitlich planen kann. Folglich stellt die Warteschlange 30 während des gleichen Taktzyklus, in dem die erste Iteration (d. h. T1 bis SBB1) durch die Warteschlange 30 bereitgestellt wird, außerdem die nächsten drei folgenden Befehle (d. h. T2 bis B2) für die Zeitplanstufe 18 für die zeitliche Planung für die entsprechenden Ausführungseinheiten bereit. Im Ergebnis sind bis zum Ende des Taktzyklus 8 in Fig. 5 eine Gesamtzahl von acht Ausführungseinheit-Befehlen zeitlich geplant. Es wird schließlich angemerkt, daß ein Mikroprozessor, der das bevorzugte Verfahren implementiert, notwendigerweise außerdem die Registerumbenennung und/oder irgendeinen anderen Typ der Ausführungstechnik außerhalb der Reihenfolge enthält, um die nachfolgende Ausführung des kurzen Rückwärtsverzweigungs-Ausführungseinheit-Befehls zum gleichen Zeitpunkt zu erlauben, während die richtigen Operanden und Ergebnisse erhalten werden.
  • Vor der Erörterung des Taktzyklus 9 wird außerdem die Operation während des Taktzyklus 8 in bezug auf die Decodierungsstufe 16 erwähnt. Diese Operation wird am besten durch das Vergleichen der Informationen in der Decodierungsstufe 16 nach dem Taktzyklus 8 mit denen nach dem Taktzyklus 7 erkannt. Spezifisch speichert nach dem Taktzyklus 8 jeder Platz der Warteschlange 30 einen decodierten Befehl. Im vorliegenden Beispiel werden die decodierten Befehle N und O nach dem decodierten Befehl M hinzugefügt. Es wird ferner angemerkt, daß diese Operation möglich ist, weil, bei Erinnerung an den Taktzyklus 7, die vorliegenden Ausführungsformen die nächste Zeile der Befehle geholt haben, die der Zeile folgt, die die kurze Rückwärtsverzweigungsschleife enthält. Im Ergebnis, und wie im folgenden besser erkannt wird, werden, sobald die kurze Rückwärtsverzweigungsschleife verlassen wird (d. h. nicht länger genommen wird), diese nächsten nachfolgenden Befehle bereits teilweise durch die Pipeline verarbeitet sind, wobei sie deshalb nicht wie im Stand der Technik geholt werden müssen, nach dem die Pipeline in ihrer Gesamtheit geräumt wird.
  • Während des Taktzyklus 9 finden Operationen in bezug auf die Operandenlesestufe 20 und separat in bezug auf die Zeitplanstufe 18 statt. Was die Operandenlesestufe 20 anbelangt, werden die Operanden für die Ausführungseinheit-Befehle gelesen, die während des Taktzyklus 8 zeitlich geplant worden sind (d. h. TR1 bis SBB1 und TR2 bis B2), und für die derartige Operanden notwendig sind. Was die Zeitplanstufe 18 anbelangt, wird nun angemerkt, daß sie den nächsten folgenden Schleifenbefehle zeitlich plant, die diejenigen während des Taktzyklus 8 zeitlich geplanten folgen, wobei, sobald eine Iteration der Schleife vollständig ist, noch zusätzliche Befehle aus der nächsten Iteration durch die Warteschlange 30 der Zeitplanstufe 18 für die zeitliche Planung verfügbar gemacht werden. Mit anderen Worten, es wird in Erinnerung gerufen, daß während des Zyklus 8 die Ausführungseinheit-Befehle TR1 bis BR1 und TR2 bis B2 zeitlich geplant worden sind. Folglich entsprechen diese Ausführungseinheit-Befehle sowohl einer ersten vollständigen Iteration der Schleife 34 als auch den ersten drei aus fünf Ausführungseinheit-Befehlen der zweiten Iteration der Schleife 34. Deshalb werden während des Taktzyklus 9 bei der Fortsetzung der Folge die verbleibenden Ausführungseinheit-Befehle von der zweiten Iteration der Schleife 34 zeitlich geplant (d. h. C2 und SBB2), wie auch fünf Ausführungseinheit-Befehle aus der dritten Iteration der Schleife 34 (d. h. TR3 bis SBB3) zeitlich geplant werden, und wie der erste Ausführungseinheit-Befehl aus der vierten Iteration der Schleife 34 (d. h. TR4) zeitlich geplant wird.
  • Während des Taktzyklus 10 führt jede Ausführungseinheit der Ausführungsstufe 22 einen entsprechenden Ausführungseinheit-Befehl aus. Aus Fig. 5 wird klar sein, daß dieser Betrieb die erste Iteration der Schleife 34 (d. h. T1 bis SBB1) ausführt. Die drei verbleibenden Ausführungseinheiten sind jedoch außerdem zeitlich geplant worden, um einen Teil der zweiten Iteration der Schleife 34 auszuführen. Folglich führen während des gleichen Taktzyklus 10 diese drei verbleibenden Ausführungseinheiten TR2 bis B2 aus. Deshalb wird an diesem Punkt ein Fachmann erkennen, daß die vorliegende Ausführungsform in einem einzelnen Ausführungszyklus mehr als eine Iteration der kurzen Rückwärtsverzweigungsschleife ausführt. Im vorliegenden Fall werden z. B. eine erste vollständige Iteration plus zusätzliche 3/5 (d. h. drei der fünf Schleifenbefehle) der nächsten Iteration der Schleife ausgeführt, so daß eine Gesamtzahl von 1,6 Iterationen (d. h. mehr als eine Iteration) in einem einzelnen Zyklus ausgeführt wird. Schließlich wird in bezug auf diese Ausführungseinheit-Befehle, jeder Ausführungseinheit-Befehl nach dem Taktzyklus 10 absolviert, wobei er seine Wirkung auf den Architekturzustand des Mikroprozessors ausübt, obwohl dies in Fig. 5 nicht gezeigt ist.
  • Unter der Voraussetzung des unmittelbar oberhalb in bezug auf den Taktzyklus 10 beschriebenen Betriebs ist es nun lehrreich, weiter zu definieren, was in dem Begriff der kurzen Rückwärtsverzweigungsbefehlsschleife enthalten ist, wie er in diesem Dokument verwendet wird. Es wird kurz aus dem Obigen in Erinnerung gerufen, daß festgestellt worden ist, daß eine derartige Schleife einen Verzweigungsbefehl enthält, der, wenn er genommen wird, die Steuerung zu einem Zielbefehl zurückgibt, der dem Verzweigungsbefehl um eine relativ kleine Anzahl von Ausführungseinheit-Befehlen vorangeht. Ist nun der Betrieb in Fig. 5 während des Taktzyklus 10 erkannt worden, wird angemerkt, daß die Anzahl der Ausführungseinheit-Befehle in einer kurzen Rückwärtsverzweigung kleiner als die Anzahl der Speicherzellen sein sollte, aus denen die Befehle zeitlich geplant werden können, d. h., der Anzahl der Speicherzellen in der Warteschlange 30. Mit anderen Worten und wie im folgenden in Fig. 7 mittels einer weiteren Ausführungsform demonstriert ist, teilen die vorliegenden Ausführungsformen gemeinsam die Fähigkeit, eine kreisförmige Ausgabe aus der Warteschlange 30 bereitzustellen, um zu versuchen, die Befehlsausführugseinheiten zu maximieren, die betreibbar sind, um in einem einzelnen Zyklus zu arbeiten. Folglich ist oben ein Beispiel einer Decodierungswarteschlange 30 mit acht Zellen und einer kurzen Rückwärtsverzweigungsschleife mit weniger als acht (z. B. fünf) Ausführungseinheit-Befehlen dargestellt. Unter der Voraussetzung der kreisförmigen Art der Ausgabe aus der Warteschlange 30, sobald sie eine kurze Rückwärtsverzweigung speichert, kann sie in Kombination mit der Zeitplanstufe 18 die Verwendung jeder der Ausführungseinheiten für einen gegebenen Taktzyklus bewirken. Es wird außerdem unter der Voraussetzung dieser Betrachtungen weiter angemerkt, daß die kurze Rückwärtsverzweigungsschleife bis zu sieben Ausführungseinheit-Befehle enthalten könnte. In einem derartigen Fall und unter Verwendung der vorliegenden Ausführungsformen könnte eine erste Iteration von jedem der sieben Ausführungseinheit-Befehle für die Ausführung im selben Taktzyklus wie der erste Ausführungseinheit-Befehl der zweiten Iteration der Schleife zeitlich geplant werden. Falls die Anzahl der Warteschlangenzellen auf eine ganze Zahl Q vergrößert wird, wird außerdem ein kurzer Rückwärtsverzweigungsschleifenbefehl für die Verwendung in einem derartigen Fall aus Q - 1 oder weniger Ausführungseinheit- Befehlen bestehen, wobei dies abermals die Gelegenheit schafft, mehr als eine Iteration für diese Q - 1 (oder weniger) Befehle in einem einzelnen Ausführungszyklus zeitlich zu planen.
  • Im Taktzyklus 10 nach Fig. 5 wird nun außerdem angemerkt, daß die durch die Zeitplanstufe 18 im Taktzyklus 9 zeitlich geplanten Befehle zur Operandenlesestufe 20 weitergehen. Außerdem wird ein Fachmann erkennen, daß im nächsten Taktzyklus (d. h. im Taktzyklus 11) diese Befehle ausgeführt werden und dadurch den Abschluß der Ausführung der zweiten Iteration der Schleife 34 (d. h. durch das Ausführen von C2 und SBB2), die vollständige Ausführung der dritten Iteration der Schleife 34 (d. h. durch das Ausführen von TR3 bis SBB3) und die teilweise Ausführung der vierten Iteration der Schleife 34 (d. h. durch das Ausführen von TR4) repräsentieren. Deshalb wird abermals mehr als eine Iteration der kurzen Rückwärtsverzweigungsschleife in einem einzelnen Zyklus ausgeführt.
  • Nachdem der Taktzyklus 10 beschriebenen worden ist, wird ferner angemerkt, daß der Prozeß sowohl durch den Taktzyklus 11 als auch durch irgendwelche zusätzliche Taktzyklen fortgesetzt wird, die erforderlich sind, um die gewünschte Anzahl der Iterationen der kurzen Rückwärtsverzweigung auszuführen. Während TR1 bis B2 während des Taktzyklus 10 ausgeführt worden sind, werden folglich die nächsten folgenden acht Ausführungsbefehle (d. h. C2 bis TR4) während des Taktzyklus 11 ausgeführt. Falls der Taktzyklus 12 gezeigt wäre, würde er folglich wenigstens A4 bis SSB4 ausführen, wobei er ferner bis CS ausführen würde, vorausgesetzt, daß die Verzweigung weiterhin genommen werden würde.
  • Es wird nun die Wirkung des Verlassens der kurzen Rückwärtsverzweigungsschleife unter der Voraussetzung der vorliegenden Ausführungsformen betrachtet. Spezifisch wurde durch das Obige angemerkt, daß, falls der Taktzyklus 12 gezeigt wäre, er wenigstens A4 bis SSB4 ausführen würde. Es wird jedoch ferner angenommen, daß SSB4, wenn er ausgeführt wird, als nicht zu nehmen festgestellt wird. Folglich wird eine falsche Vorhersage auftreten, wobei der nächste für die Ausführung gewünschte Befehl derjenige sein würde, der dem SSB-Befehl folgt, d. h. der Befehl M, wie im Taktzyklus 6 gezeigt ist, der unmittelbar nach dem SSB-Befehl zu folgen hat. Wenn im Stand der Technik eine falsche Vorhersage auftritt, wird die vollständige Pipeline geräumt, wobei der nächste Befehl, der der Verzweigung folgt (z. B. der Befehl M) dann geholt wird und längs der Pipeline zur Ausführung weitergeht. Es wird jedoch angemerkt, daß im Gegensatz in der vorliegenden Ausführungsform der nächste folgende Befehl bereits in die Pipeline geholt, decodiert und in der Warteschlange 30 gespeichert worden ist. Wird z. B. der Taktzyklus 11 (oder irgendeiner der Taktzyklen 7 bis 10) betrachtet, ist die Warteschlange 30 gezeigt, wie sie bereits sowohl den decodierten Befehl M als auch die Befehle N und O speichert. Folglich speichert in dem Fall einer falschen Vorhersage des SSB4, wie oben erklärt ist, die Pipeline der vorliegenden Ausführungsform bereits den nächsten Befehl und möglicherweise zusätzliche folgende Befehle in decodierter Form, wobei er (oder sie) für die zeitliche Planung im nächsten Taktzyklus weitergeleitet werden können, ohne diese Befehle nach dem Räumen der Pipeline erneut holen zu müssen. Falls folglich im Taktzyklus 11 eine falsche Vorhersage aufgetreten ist, könnten die Befehle M bis O nur drei Taktzyklen später bereit für die Ausführung sein, wohingegen im Stand der Technik zwei zusätzliche Taktzyklen notwendig sein würden, um erstens den Befehl M zu holen und zweitens den Befehl M zu decodieren. Folglich sind die vorliegenden Ausführungsformen gegenüber dem Stand der Technik ebenso basierend auf dem Verlassen einer kurzen Rückwärtsverzweigung weiter verbessert.
  • Fig. 6a veranschaulicht eine schematische Darstellung einer bevorzugten Ausführungsform der Warteschlange 30 ausführlicher, die die Schaltungsanordnung enthält, die die Ausführungseinheit-Befehle der Zeitplanstufe 18 in der obenbeschriebenen kreisförmigen Weise bereitstellt. Die Warteschlange 30 enthält acht Speicherzellen, wobei jede mit einem Bezugszeichen 42, kombiniert mit einem folgenden Buchstaben "a" bis "h", bezeichnet ist. Jede Zelle ist betreibbar, um einen von der Decodierungsstufe 16 empfangenen entsprechenden Ausführungseinheit-Befehl zu speichern und auszugeben (obwohl die Eingaben in die Zellen nicht gezeigt sind, um die Figur zu vereinfachen). Jede Zelle 42a bis 42h besitzt für den Zweck der im folgenden beschriebenen Adressenberechnung außerdem eine entsprechende Zellenadresse. Ferner bewegt sich in der bevorzugten Ausführungsform ein Ausführungseinheit-Befehl nicht zu einer anderen Zelle, sobald er in einer Zelle gespeichert ist; statt dessen werden Zeiger verwendet, um die Spitze der Warteschlange und den Boden der Warteschlange zu identifizieren, wobei dadurch ein Hinweis auf die Reihenfolge bereitgestellt wird, in der jeder Ausführungseinheit-Befehl empfangen worden ist. Folglich sind, um ein Beispiel zu geben, die Ausführungseinheit-Befehle vom Taktzyklus 6 nach Fig. 5 als in den Zellen 42c bis 42h gespeichert gezeigt. Weil der Ausführungseinheit-Befehl TR der erste in der Folge ist, zeigt der Zeiger der Spitze der Warteschlange auf ihn. Weil ähnlich der Ausführungseinheit-Befehl M der letzte in der Folge ist, zeigt der Zeiger auf den Hoden der Warteschlange auf ihn.
  • Der Ausgang jeder der Zellen 42a bis 42h ist mit einem Eingang von jedem von acht Multiplexierern verbunden, die mit 44a bis 44h bezeichnet sind. Die Multiplexierer 44a bis 44h stellen die entsprechenden Ausgangssignale für die Zeitplanstufe 18 bereit. Spezifischer wird jeder der Multiplexierer 44a bis 44 h durch eine Steuerschaltung 46 gesteuert, die in Reaktion auf das den SSB- und TR-Ausführungseinheit-Befehlen zugeordnete Etikett aktiviert wird, wie im Zusammenhang mit Fig. 4 eingeführt worden ist. Mit anderen Worten, es wird in Erinnerung gerufen, daß in Reaktion auf die Anzeige im BTB 28, daß ein Befehl ein SBB-Befehl ist, ein Etikett zu jedem Befehl hinzugefügt wird, um den nachfolgenden Pipelinestufen anzuzeigen, daß die Bits einen SBB-Befehl (oder seinen entsprechenden TR-Befehl) repräsentieren. An diesem Punkt kann die Steuerschaltung 46 in Reaktion auf das Etikett die folgende Funktionalität ausführen, um mehrere Iterationen der Schleife 34 zu verarbeiten. Spezifischer berechnet die Steuerschaltung 46, sobald sie das SBB-Etikett erfaßt, die Zellenadresse für jeden Multiplexierer, um basierend auf der folgenden Gleichung 1 seinen Ausführungseinheit-Befehl auszuwählen:
  • addr(n) = (((n + curr_br)modbrqsz + topofq)modqsz) (1)
  • wobei
  • addr(n) die Adresse eines Muldplexierer ist, wie in Fig. 6a angezeigt ist;
  • curr_br für die erste Iteration einer kurzen Rückwärtsverzweigungsschleife null ist, während es für jeden Zyklus danach (curr_br im vorhergehenden Zyklus + die Anzahl der im letzten Zyklus zeitlich geplanten Befehle) mod br_q_sz ist;
  • br_q_sz die Anzahl der Befehle in der kurzen Rückwärtsverzweigungsschleife ist;
  • top_of_q die Zellenadresse für den Zeiger auf die Spitze der Warteschlange ist; und
  • q_sz die Gesamtzahl der Zellen der Befehlswarteschlange (acht im aktuellen Beispiel) ist.
  • Fig. 6b veranschaulicht das System nach Fig. 6a wobei sie aber ferner die Ausgabe jedes Multiplexierers 44a bis 44 h darstellt, um den Betrieb der Steuerschaltung 46 zu demonstrieren, um die Ausführungseinheit-Befehle von der Schleife 34 in einer kontinuierlichen Weise bereitzustellen. Dem obigen Beispiel folgend sind dann, weil die in der Warteschlange 30 gezeigten Ausführungseinheit-Befehle die des Taktzyklus 6 in Fig. 5 sind, die durch jeden Multiplexierer ausgegebenen gezeigten Ausführungseinheit-Befehle diejenigen, die durch die Zeitplanstufe 18 im Taktzyklus 8 in Fig. 5 verarbeitet worden sind (d. h. der Reihe nach TR1 bis SBB1 und TR2 bis B2). Unter der Voraussetzung dieser Reihenfolge werden nun einige Beispiele der Berechnung nach Gleichung 1 demonstriert, um ihre Anwendung vollständiger zu erkennen.
  • Als ein erstes Beispiel der Anwendung der Gleichung 1 wird der durch die Warteschlange 30 zum ersten Platz der Zeitplanstufe (d. h. zur addr(0)) zu leitende Ausführungseinheit-Befehl betrachtet. Die Gleichung 1 wird dann als:
  • addr(0) = (((0 + 0)mod5) + 2)mod8) = ((0mod5) + 2)mod8 = 2mod8 = 2
  • berechnet. Deshalb wird der Ausführungseinheit-Befehl von der Zellenadresse 2 (d. h. der, die der Zelle 42c entspricht) zur addr(0) der Zeitplanstufe 18 geleitet, wobei dadurch der Ausführungseinheit-Befehl TR dem ersten Platz der Zeitplanstufe vorgelegt wird.
  • Als ein zweites Beispiel der Anwendung der Gleichung 1 wird der durch die Warteschlange 30 zum fünften Platz der Zeitplanstufe (d. h. zur addr(4)) zu leitende Ausführungseinheit-Befehl betrachtet. Die Gleichung 1 wird dann als:
  • addr(4) = (((4 + 0)mod5) + 2)mod8) = ((4mod5) + 2)mod8 = 6mod8 = 6
  • berechnet. Deshalb wird der Ausführungseinheit-Befehl von der Zellenadresse 6 (d. h. der, die der Zelle 42g entspricht) zur addr(4) der Zeitplanstufe 18 geleitet, wobei dadurch der Ausführungseinheit-Befehl SBB dem fünften Platz der Zeitplanstufe vorgelegt wird.
  • Als ein drittes Beispiel der Anwendung der Gleichung 1 wird der durch die Warteschlange 30 zum sechsten Platz der Zeitplanstufe (d. h. zur addr(5)) zu leitende Ausführungseinheit-Befehl betrachtet. Die Gleichung 1 wird dann als:
  • addr(5) = (((5 + 0)mod5) + 2)mod8) = ((5mod5) + 2)mod8 = 2mod8 = 2
  • berechnet. Deshalb wird der Ausführungseinheit-Befehl von der Zellenadresse 2 (d. h. der, die der Zelle 42c entspricht) zur addr(5) der Zeitplanstufe 18 geleitet, wobei dadurch der Ausführungseinheit-Befehl TR dem sechsten Platz der Zeitplanstufe vorgelegt wird.
  • Um noch zusätzliche Anwendungen der Gleichung 1 zu demonstrieren, verdoppelt Fig. 6c Fig. 6d, sie demonstriert aber die gewünschten Ausgangssignale von jedem der Multiplexierer 44a bis 44 h für den Taktzyklus 9 aus Fig. 5 (d. h. einen Taktzyklus nach der Demonstration nach Fig. 6b). Folglich sind die durch jeden Multiplexierer für den Taktzyklus 9 in Fig. 5 ausgegebenen gezeigten Ausführungseinheit-Befehle C2 und SBB2, gefolgt von TR3 bis SBB3 und schließlich gefolgt von TR4. Unter der Voraussetzung dieser Reihenfolge werden nun einige Beispiele der Berechnung der Gleichung 1 demonstriert, um ihre Anwendung vollständiger zu erkennen. Bevor mit den Beispielen der Gleichung 1 in bezug auf Fig. 6c fortgefahren wird, wird in Erinnerung gerufen, daß jede Anwendung der Gleichung 1 den Parameter curr_br mit sich bringt, wobei oben festgestellt worden ist, daß für jeden Zyklus nach der ersten Iteration der Schleife curr_br (curr_br im vorhergehenden Zyklus + die Anzahl der im letzten Zyklus zeitlich geplanten Befehle) mod br_q_sz ist. Im folgenden Beispiel ist deshalb curr_br:
  • curr_br = (0 + 8)mod5 = 3
  • In einem ersten Beispiel der Anwendung der Gleichung 1 wird der durch die Warteschlange 30 zum ersten Platz der Zeitplanstufe (d. h. zur addr(0)) zu leitende Ausführungseinheit-Befehl betrachtet. Die Gleichung 1 wird dann als:
  • addr(0) = (((0 + 3)mod5) + 2)mod8) = ((3mod5) + 2)mod8 = 5mod8 = 5
  • berechnet. Deshalb wird der Ausführungseinheit-Befehl von der Zellenadresse 5 (d. h. der, die der Zelle 42f entspricht) zur addr(0) der Zeitplanstufe 18 geleitet, wobei dadurch der Ausführungseinheit-Befehl C dem ersten Platz der Zeitplanstufe vorgelegt wird.
  • Als ein zweites Beispiel der Anwendung der Gleichung 1 wird der durch die Warteschlange 30 zum zweiten Platz der Zeitplanstufe (d. h. zur addr(1)) zu leitende Ausführungseinheit-Befehl betrachtet. Die Gleichung 1 wird dann als:
  • addr(1) = (((1 + 3)mod5) + 2)mod8) = ((4mod5) + 2)mod8 = 6mod8 = 6
  • berechnet. Deshalb wird der Ausführungseinheit-Befehl von der Zellenadresse 6 (d. h. der, die der Zelle 42g entspricht) zur addr(1) der Zeitplanstufe 18 geleitet, wobei dadurch der Ausführungseinheit-Befehl SBB dem zweiten Platz der Zeitplanstufe vorgelegt wird.
  • Als ein letztes Beispiel der Anwendung der Gleichung 1 wird der durch die Warteschlange 30 zum achten Platz der Zeitplanstufe (d. h. zur addr(7)) zu leitende Ausführungseinheit-Befehl betrachtet. Die Gleichung 1 wird dann als:
  • addr(7) = (((7 + 3)mod5) + 2)mod8) = ((10mod5) + 2)mod8 = 2mod8 = 2
  • berechnet. Deshalb wird der Ausführungseinheit-Befehl von der Zellenadresse 0 (d. h. der, die der Zelle 42c entspricht) zur addr(7) der Zeitplanstufe 18 geleitet, wobei dadurch der Ausführungseinheit-Befehl TR dem achten Platz der Zeitplanstufe vorgelegt wird.
  • Fig. 7 veranschaulicht einen Zeitplan eines alternativen Befehlsstroms, der zu dem Strom 32 nach Fig. 2 ähnlich ist, wie er in Übereinstimmung mit einer Modifikation des Mikroprozessors 36 nach Fig. 4 verarbeitet wird. Zuerst wird angemerkt, daß der Befehlsstrom nach Fig. 7 außerdem eine kurze Rückwärtsverzweigungsschleife enthält, um aber die obigen Prinzipien weiter zu demonstrieren, enthält die Schleife nun zehn Ausführungseinheit-Befehle, einschließlich des folgenden Formats vom anfänglichen zum letzten:
  • TRABCDEFGHSSB
  • Es wird außerdem angemerkt, daß unmittelbar oberhalb festgestellt worden ist, daß die durch Fig. 7 dargestellte Verarbeitung für eine Modifikation des Mikroprozessors 36 gilt. Spezifisch wird im vorliegenden Beispiel die Anzahl der Speicherzellen in der Warteschlange 30 (d. h. die Zellen, die einen entsprechenden Ausführungseinheit-Befehl speichern können) von acht auf zwölf vergrößert. Der Mikroprozessor enthält jedoch weiterhin acht Ausführungseinheiten.
  • Um die folgende Erörterung zu vereinfachen, verwendet Fig. 7 außerdem die gleichen Taktungskonventionen wie Fig. 5, wobei folglich die horizontale Achse von links nach rechts durch Fig. 7 die aufeinanderfolgenden Taktzyklen des Mikroprozessors repräsentiert, während die vertikale Achse von oben nach unten durch Fig. 7 den Durchgang eines Befehlsstroms durch die Mikroprozessorpipeline repräsentiert. Um die Erörterung weiter zu vereinfachen, wird angenommen, daß die Verzweigungsschleife nach Fig. 7 bereits aufgrund einer falschen Vorhersage erfaßt worden ist, wobei deshalb der Taktzyklus 10 beliebig als der erste Taktzyklus bezeichnet wird, in dem das Holen des Zielbefehls und der folgenden Befehle beginnt (d. h. analog zum Taktzyklus 6 nach Fig. 5). Mit anderen Worten, durch die Schlußfolgerung des (nicht gezeigten) Taktzyklus 9 wird der SBB- Befehl ausgeführt, wobei seine falsche Vorhersage eine Räumung der Pipeline in Reaktion auf das MISPREDICTED-Signal bewirkt. Es wird außerdem in Erinnerung gerufen, daß die ACTUAL TARGET ADDRESS zur Befehlsholstufe 14 übermittelt wird, so daß ihr nächster Holvorgang aus der Zeile erfolgen kann, die den TR-Befehl enthält. Schließlich wird in Erinnerung gerufen, daß SBB als eine kurze Rückwärtsverzweigung im BTB 28 bezeichnet wird, wobei sein Ziel ebenfalls als das Ziel einer kurzen Rückwärtsverzweigung bezeichnet wird.
  • Im Taktzyklus 10 nach Fig. 7 werden dann einige der ersten der zehn Befehle in der vorliegenden Schleife durch die Befehlsholstufe 14 geholt. Diese ersten Befehle werden in einer Zeile empfangen, die entsprechend ihrer Ausrichtung aus der Cache-Schaltung 26 ausgerichtet ist. Im aktuellen Beispiel wird angenommen, daß die Schleife so ausgerichtet ist, daß die ersten zwei aus der Cache-Zeile geholten Befehle kein Teil der Schleife sind, wobei sie deshalb als die Sternchen holten Befehle kein Teil der Schleife sind, wobei sie deshalb als die Sternchen im Taktzyklus 10 gezeigt sind. Weil außerdem die vollständige Schleife zehn Befehle lang ist, weil die Schleife um zwei Nichtschleifen-Befehle in der Cache-Zeile verschoben ist, und weil die Holstufe nur acht Befehle auf einmal holen kann, werden während des Taktzyklus 10 nur sechs der zehn Schleifenbefehle geholt. Die verbleibenden Befehle der Schleife werden deshalb während des Taktzyklus 11 geholt, wie im folgenden erörtert ist. Unter Fortsetzung des Taktzyklus 10 wird abermals der BTB 28 (oder irgendein anderer Speicher, wie z. B. ein ihm zugeordnetes Zielspeicherregister) konsultiert, wobei er anzeigt, daß der TR-Befehl das Ziel eines SBB-Befehls ist, wobei folglich ein Etikett, das dies anzeigt, zum TR-Befehl hinzugefügt oder dem TR-Befehl zugeordnet wird, um ihn als solchen zu bezeichnen, wie er durch die Pipeline 14 geht.
  • Während des Taktzyklus 11 und wie oben vorgeschlagen worden ist, werden die verbleibenden vier Befehle der vorliegenden Schleife durch die Holstufe 14 geholt. Außerdem und wie im Fall des Taktzyklus 6 nach Fig. 5 holt die Befehlsholstufe 14 zusätzlich zum Abschließen des Holens der Schleife außerdem irgendwelche Befehle von der Cache-Schaltung 26, die sich nach dem TR-Befehl und in der gleichen Zeile befinden. Im vorliegenden Beispiel werden deshalb, wenn die letzten Befehle der Schleife im Taktzyklus 11 geholt werden, die Befehle M, N, O und P, die der Schleife folgen, geholt. Weil nun außerdem der SBB- Befehl geholt wird, wird er, verursacht durch den entsprechenden Eintrag im BTB 28, außerdem als eine kurze Rückwärtsverzweigung etikettiert. Während des Taktzyklus 11 bewegen sich außerdem die ersten sechs Befehle der geholten Schleife durch die Decodierungsstufe 16 und zur Warteschlange 30. Wenn diese ersten Schleifenbefehle in die Warteschlange 30 gelegt werden, werden sie erneut ausgerichtet, 510 daß der TR-Befehl an die Spitze der Warteschlange 30 gesetzt ist. An diesem Punkt sind deshalb in dem Ausmaß, in dem die ersten Befehle der Schleife weniger Befehle als die Anzahl der Befehle besitzen, die in der Warteschlange 30 gespeichert werden kann, und in dem Ausmaß, in dem diese ersten Befehle innerhalb der Cache-Zeile, aus der sie gelesen worden sind, verschoben worden sind, die verbleibenden Plätze in der Warteschlange 30 ungenutzt (d. h. sechs Plätze im vorliegenden Beispiel).
  • Während des Taktzyklus 12 wird angemerkt, daß nun die Decodierungsstufe 16 die verbleibenden Befehle der vorliegenden kurzen Rückwärtsverzweigungsschleife weiter decodiert und diese decodierten Ausführungseinheit-Befehle in der Warteschlange 30 speichert. Folglich kann nach dem Taktzyklus 12 die Zeitplanstufe 18 die Ausführungseinheit-Befehl in einer kreisförmigen Weise in einer Art empfangen, die mit der vergleichbar ist, die oben im Zusammenhang mit den Fig. 5 bis 7 beschrieben ist, und wie im folgenden demonstriert ist.
  • Während des Taktzyklus 13 empfängt die Zeitplanstufe 18 die Ausführungseinheit-Befehle in einer kreisförmigen Weise von der Warteschlange 30. Deshalb gibt die Zeitplanstufe 18 die maximal mögliche Anzahl der Befehle für die Ausführung aus, d. h., die Anzahl der Befehle, die der Anzahl der verfügbaren Ausführungseinheiten entspricht. Im aktuellen Beispiel sind acht Ausführungseinheiten verfügbar; deshalb werden TR1 bis G1 für die Ausführung zeitlich geplant. Unter der Voraussetzung der Darstellung des Taktzyklus 13 wird deshalb angemerkt, daß eine Verzögerung von einem Takt vor der zeitlichen Planung der begonnen Schleife aufgetreten ist. Spezifisch wird angemerkt, daß während des Taktzyklus 12 keine zeitlichen Planung gezeigt ist, selbst wenn während des Taktzyklus 11 Ausführungseinheit-Befehle in der Warteschlange 30 gespeichert worden wären. Deshalb könnten in einer zu der in Fig. 7 gezeigten Ausführungsform alternativen Ausführungsform die während des Taktzyklus 11 in der Warteschlange 30 gespeicherten Ausführungseinheit-Befehle während des Taktzyklus 12 zeitlich geplant werden, anstatt zu warten, um volle acht Ausführungseinheit- Befehle während des Taktzyklus 13 zeitlich zu planen. In einem derartigen Fall würden jedoch nur sechs Ausführungseinheit-Befehle (d. h. TR bis E1) dann für die zeitliche Planung verfügbar sein und durch die Pipeline gehen, um als nur sechs Befehle im Taktzyklus 14 ausgeführt zu werden. Um die aktuelle Erklärung zu vereinfachen, wird statt dessen deshalb das Muster nach Fig. 7 im folgenden erörtert.
  • Während des Taktzyklus 14 empfängt die Zeitplanstufe 18 abermals den Ausführungseinheit-Befehl von den Befehlen der Warteschlange 30 in einer kreisförmigen Weise. Weil jedoch die ersten acht der zehn Befehle in der vorliegenden Schleife hier während des vorhergehenden Taktzyklus 13 durch die Stufe 18 empfangen und zeitlich geplant worden sind, empfängt der vorliegende Taktzyklus 14 sowohl die verbleibenden Ausführungseinheit-Befehle in der ersten Iteration der Schleife (d. h. H1 und SSB1) als auch die ersten sechs Ausführungseinheit- Befehle für die nächste Iteration der Schleife (d. h. TR2 bis E2), wobei sie in diesem Taktzyklus ebenfalls zeitlich geplant werden.
  • Unter der Voraussetzung des obigen wird ein Fachmann erkennen, daß nach dem Taktzyklus 12 acht Ausführungseinheit-Befehle in jedem Taktzyklus zeitlich geplant werden können, wobei dadurch erlaubt wird, daß jeder Ausführungseinheit ein Befehl zugeordnet wird, bis alle gewünschten Iterationen der vorliegenden Schleife abgeschlossen sind. Deshalb werden die Ausführungseinheiten abermals nicht ungenutzt gelassen, wie es im Stand der Technik der Fall sein würde. Unter der Voraussetzung des Beispiels einer Schleife aus zehn Befehlen, die in der in Fig. 7 gezeigten Weise cache-ausgerichtet sind, wird angemerkt, daß der Stand der Technik in der Tat abwechselnd eine erste Gruppe der Befehle, die einer ersten Cache-Zeile entspricht (einschließlich der Befehle TR bis zum Befehl E), gefolgt von einer zweiten Gruppe von Befehlen, die einer zweiten Cache-Zeile entspricht (die die Befehle F bis SSB enthält) holen würde, wobei er diesen jedesmal erlauben würde, durch die Pipeline zu gehen. Folglich wird zur Ausführungszeit jede Iteration der Schleife zwei Taktzyklen erfordern, einen Zyklus für jede Gruppe der geholten Befehle. Außerdem würden während des ersten dieser Taktzyklen zwei der Ausführungseinheiten nicht verwendet (weil nur sechs Befehle unter Verwendung von nur sechs der acht Ausführungseinheiten ausgeführt werden würden), während während des zweiten dieser Taktzyklen vier der Ausführungseinheiten nicht verwendet werden würden (weil nur vier Befehle unter Verwendung von nur vier der acht Ausführungseinheiten ausgeführt werden würden). Im Gegensatz verwendet die vorliegende Ausführungsform der Erfindung die verfügbaren Ausführungseinheiten vollständig, wenn eine kurze Rückwärtsverzweigungsschleife ausgeführt wird. Folglich repräsentiert die alternative Ausführungsform nach Fig. 7 abermals eine gegenüber dem Stand der Technik vergrößerte Leistung.
  • Unter der Voraussetzung des unmittelbar oberhalb beschriebenen Betriebs ist es abermals hilfreich, in der vorliegenden Ausführungsform zu überprüfen, was innerhalb des Begriffes der kurzen Rückwärtsverzweigungsbefehlsschleife enthalten ist, wie er in diesem Dokument verwendet wird. Aus dem Obigen wird in Erinnerung gerufen, daß dargelegt worden ist, daß die Anzahl der Ausführungseinheit-Befehle in einer kurzen Rückwärtsverzweigung kleiner als die Anzahl der Speicherzellen sein sollte, aus denen die Befehle zeitlich geplant werden können, d. h. die Anzahl der Speicherzellen in der Warteschlange 30. In dieser Hinsicht demonstriert die alternative Ausführungsform nach Fig. 7 zwölf Speicherzellen und eine Schleife aus zehn Befehlen. Abermals erlaubt die relative Basis die kreisförmige Ausgabe der Befehle an die Ausführungseinheiten, wobei dadurch erlaubt wird, daß bis zu alle Ausführungseinheiten einen Teil einer kurzen Rückwärtsverzweigungsschleife in einem einzelnen Zyklus ausführen. Nun werden außerdem andere gemeinsame Aspekte des Betriebs nach den Fig. 5 und 7 angemerkt. Spezifisch wird in beiden Fällen eine kurze Rückwärtsverzweigung erfaßt, speichert die Decodierungswarteschlange 30 die vollständige Schleife der kurzen Rückwärtsverzweigungshefehle über verschiedene Iterationen, ohne diese Iterationen erneut holen zu müssen, und werden zahlreiche Iterationen einer kurzen Rückwärtsverzweigungsschleife über zahlreiche Taktzyklen ausgeführt. Außerdem kann während dieser Taktzyklen jede der Ausführungseinheiten vorzugsweise einen entsprechenden Ausführungseinheit-Befehl ausführen, anstatt infolge des Fehlens verfügbarer Ausführungseinheit-Befehle für die zeitliche Planung für die Ausführung ungenutzt zu sein. Noch weiter repräsentieren in verschiedenen dieser Taktzyklen während eines gegebenen Taktzyklus bestimmte Ausführungseinheit- Befehle, die ausgeführt werden, eine Iteration der Schleife, während andere Ausführungseinheit-Befehle, die im gleichen Zyklus ausgeführt werden, entweder eine vorhergehende oder eine folgende Iteration der Schleife repräsentieren. In dieser letzten Hinsicht repräsentieren z. B. während des Taktzyklus 10 nach Fig. 5 TR1 bis SBB1 die erste Iteration der Schleife, während TR2 bis B2 die zweite Iteration der Schleife repräsentieren. Ähnlich repräsentieren in Fig. 7 während des Taktzyklus 16 H1 bis SSB1 die ersten Iteration der Schleife, während TR2 bis E2 die zweite Iteration der Schleife repräsentieren. Schließlich und wie im folgenden weiter erkannt wird, ist während der gesamten Menge der Taktzyklen, die verwendet werden, um alle Iterationen der kurzen Rückwärtsverzweigungsschleife auszuführen, die mittlere Anzahl der unbenutzten Ausführungseinheiten kleiner als die mittlere Anzahl der unbenutzten Ausführungseinheiten im Stand der Technik.
  • Wie unmittelbar oberhalb angemerkt ist, sind unter der Voraussetzung der beschriebenen bevorzugten Implementierung verschiedene Beobachtungen über die kurze Rückwärtsverzweigung gemacht worden. Nachdem diese Beobachtungen nun dargestellt worden sind, kann der Umfang der Erfindung weiter charakterisiert werden, indem der Betrieb der Demonstrationen nach den Fig. 5 und 7 der Veranschaulichung des Betriebs des Standes der Technik nach Fig. 3 gegenübergestellt wird, und indem einige der oben getroffenen Annahmen erneut inspiziert werden. Wie oben erwähnt ist, ist in den vorliegenden Ausführungsformen die mittlere Anzahl der unbenutzten Ausführungseinheiten kleiner als die mittlere Anzahl der unbenutzten Ausführungseinheiten im Stand der Technik. Dieser Aspekt wird nun mit einer konzentrierteren Analyse der obigen Beschreibungen untersucht. Um das folgende besser zu verstehen, wird nun eine Einführung dafür gegeben, was im folgenden als Ausführungseinheit-Zeitschlitze bezeichnet wird. Spezifisch ist ein Ausführungseinheit-Zeitschlitz die Verfügbarkeit einer Ausführungseinheit für einen einzelnen Taktzyklus, um einen Ausführungseinheit-Befehl auszuführen. In zahlreichen obigen Fällen wurde z. B. angenommen, daß ein Ausführungseinheit-Befehl während eines einzelnen Taktzyklus ausgeführt wird; in diesem Fall kann nun gesagt werden, daß ein derartiges Ereignis einen einzelnen Ausführungseinheit-Zeitschlitz verbraucht. Falls ähnlich der gleiche Ausführungseinheit-Befehl zwei Taktzyklen für die Ausführung benötigt, wird gesagt, daß ein derartiges Ereignis zwei Ausführungseinheit-Zeitschlitze verbraucht. Es wird jedoch noch weiter angemerkt, daß, selbst wenn die Ausführungseinheit einen Ausführungseinheit-Befehl während eines gegebenen Zyklus nicht ausführt, der Ausführungseinheit-Zeitschlitz trotzdem verstreicht. Mit anderen Worten, der Ausführungseinheit-Zeitschlitz repräsentiert die Verfügbarkeit, um während eines gegebenen Taktzyklus zu arbeiten, ungeachtet, ob die Implementierung tatsächlich diese Verfügbarkeit ausnutzt und während dieses Schlitzes arbeitet. Dieses Konzept der Ausführungs-Zeitschlitze erlaubt eine konzentrierte Analyse der vorliegenden Ausführungsformen gegenüber dem Stand der Technik, wie im folgenden weiter untersucht wird.
  • Im Stand der Technik kann die Anzahl der Ausführungseinheit-Zeitschlitze, die während der Ausführung einer Iteration einer kurzen Rückwärtsverzweigungsschleife, EUTSI, verstreichen, wie in der folgenden Gleichung 4 definiert werden:
  • EUTSI = NEU·CFI (4)
  • wobei
  • NEU gleich der Anzahl der Ausführungseinheiten im Mikroprozessor ist; und
  • CFI gleich der Anzahl der Taktzyklen ist, um eine Iteration der kurzen Rückwärtsverzweigungsschleife zu holen.
  • Die Gleichung 4 wird z. B. wie folgt auf Fig. 3 angewandt. Erstens stellt Fig. 3 einen Mikroprozessor mit acht Ausführungseinheiten dar. Zweitens befindet sich die kurze Rückwärtsverzweigungsschleife innerhalb einer einzelnen Cache-Zeile, wobei sie deshalb in einem einzelnen Taktzyklus geholt werden kann. Deshalb liefert die Anwendung der Gleichung 4 auf den Betrieb des Standes der Technik nach Fig. 3:
  • EUTSI = NEU·CFI = 8·1 = 8
  • Folglich verstreichen acht Ausführungseinheit-Zeitschlitze für einen Taktzyklus, der eine Iteration der kurzen Rückwärtsverzweigungsschleife ausführt. Dies demonstriert mathematisch, daß, obwohl nur fünf Ausführungseinheit-Befehle für einen einzelnen Ausführungstaktzyklus in Fig. 3 ausgeführt werden (z. B. der Taktzyklus 10), eine Gesamtzahl von acht Ausführungseinheit-Zeitschlitzen verstreicht. Folglich vergehen drei dieser Zeitschlitze ungenutzt und sind deshalb verschwendet, weil drei der acht Ausführungseinheiten während dieses Taktzyklus ungenutzt sind.
  • Als ein weiteres Beispiel der Gleichung 4 ist, falls die kurze Rückwärtsverzweigungsschleife nach Fig. 7 durch den Stand der Technik verarbeitet würde (im Gegensatz zur Verarbeitung gemäß der Erfindung, wie in Fig. 7 gezeigt ist), das Ergebnis der Gleichung 4 wie folgt. Abermals stellt Fig. 7 einen Mikroprozessor mit acht Ausführungseinheiten dar. Die kurze Rückwärtsverzweigungsschleife befindet sich jedoch innerhalb von zwei Cache-Zeilen, wobei sie deshalb in zwei Taktzyklen geholt werden würde. Deshalb liefert die Anwendung der Gleichung 4 auf die Verarbeitung des Standes der Technik der kurzen Rückwärtsverzweigung:
  • EUTSI = NEU·CFI = 8·2 = 16
  • Folglich verstreichen sechzehn Ausführungseinheit-Zeitschlitze während der zwei Taktzyklen, um eine Iterationen der kurzen Rückwärtsverzweigung auszuführen. Dies demonstriert mathematisch, daß selbst wenn nur zehn Ausführungseinheit- Befehle während zwei Ausführungstaktzyklen ausgeführt werden, eine Gesamtzahl von sechzehn Ausführungseinheit-Zeitschlitzen verstreicht. Folglich vergehen sechs von diesen Zeitschlitzen ungenutzt, wobei sie deshalb durch das Ende der Ausführung von einer Iteration der Schleife verschwendet werden.
  • Im Gegensatz zum Stand der Technik zeigen die obenbeschriebenen bevorzugten Ausführungsformen eine Konfiguration und eine Methodologie, die die Fähigkeit bereitstellen, eine kurze Rückwärtsverzweigung in einer Weise auszuführen, die für eine einzelne Iteration der Schleife weniger Ausführungseinheit- Zeitschlitze als der Stand der Technik verwendet. Deshalb können die verbleibenden Ausführungseinheit-Zeitschlitze verwendet werden, um einen Teil oder alles einer weiteren Iteration der Schleife auszuführen. Wie im folgenden ausführlich beschrieben ist, kann gemäß den vorliegenden Ausführungsformen die Anzahl der Ausführungseinheit-Zeitschlitze, die für eine Iteration einer kurzen Rückwärtsverzweigungsschleife erforderlich ist, EUTSIINV, wie in der folgenden Gleichung 5 definiert werden:
  • wobei L die Anzahl der Befehle in der kurzen Rückwärtsverzweigungsschleife ist;
  • EUC die Anzahl der Ausführungseinheiten ist, die verbraucht werden, um einen Befehl auszuführen (d. h. die Anzahl der Ausführungseinheit-Befehle pro Befehl); während
  • CE die Anzahl der Takte für das Ausführen eines Ausführungseinheit-Befehls ist, wobei deshalb CEij die Anzahl der Takte für das Ausführen des j-ten Ausführungseinheit-Befehls ist, der dem i-ten Befehl in der Schleife entspricht.
  • Es wird angemerkt, daß die Parameter der Gleichung 5 ferner über einige oben in bezug auf die Fig. 5 und 7 gemachten Annahmen Rechenschaft ablegen. Die frühere Erörterung hat z. B. in bezug auf EUC angenommen, daß jeder Befehl (vor der Decodierung) einem einzelnen Ausführungseinheit-Befehl (nach der Decodierung) entspricht. Es ist deshalb der Fall gewesen, daß jeder Befehl nur eine Ausführungseinheit für die Ausführung verbrauchen würde. Einige Befehle können jedoch in zwei (oder mehr) Ausführungseinheit-Befehle decodiert werden, wobei sie deshalb eine entsprechende Anzahl von Ausführungseinheiten für die Ausführung verbrauchen werden. Als ein weiteres Beispiel ist in der Veranschaulichung nach den Fig. 5 und 7 impliziert, daß, sobald der Ausführungseinheit- Befehl die Ausführungsstufe erreicht, er notwendigerweise im nächsten Taktzyklus ausgeführt wird. In einigen Fällen jedoch, wie z. B. Pipelineblockierungen, -sperren oder anderen im Stand der Technik bekannten Ereignissen, kann tatsächlich eine Verzögerung auftreten, bevor der Ausführungseinheit-Befehl ausgeführt wird; noch weiter könnte der Wert von CE von dem speziellen Ausführungseinheit-Befehl abhängen. Deshalb kann der Parameter CE in der Gleichung 5 eine derartige Verzögerung unterbringen. Wenn z. B. für einen gegebenen Ausführungseinheit-Befehl eine Blockierung auftritt, so daß fit seine Ausführung zwei Takte erforderlich sind, dann legt die Gleichung 5 über ein derartiges Ereignis während der Iteration Rechenschaft ab. In jedem Fall wird für eine kurze Rückwärtsverzweigungsschleife für diese Fälle, in denen die oben erörterten Schaltungen und Verfahren des Betriebs veranlassen, daß Gleichung 5 eine Gesamtzahl von Zeitschlitzen verwirklicht, die kleiner als die nach Gleichung 4 ist, ein Nutzen gemäß den vorliegenden Ausführungsformen verwirklicht. Um dies weiter zu demonstrieren, wird angemerkt, daß Gleichung 5 für Fig. 5 wie folgt gilt:
  • EUTSIINV = CE1,1 + CE2,1 + CE3,1 + CE4,1 + CE5,1 =
  • 1 + 1 + 1 + 1 + 1 = 5
  • Mit anderen Worten, für jeden Befehl CE&sub1; bis CE&sub5; gibt es nur einen Ausführungseinheit-Befehl, wobei für jeden dieser Ausführungseinheit-Befehle in Fig. 5 angenommen worden ist, daß nur ein Taktzyklus verwendet wird, um den Ausführungseinheit-Befehl auszuführen. Folglich demonstriert unter der Voraussetzung des Obigen die Gleichung 5, wenn sie auf Fig. 5 angewendet wird, daß die mittlere Anzahl der während einer Iteration der kurzen Rückwärtsverzweigungsschleife nach Fig. 5 erforderlichen Ausführungseinheit-Zeitschlitze nur 5 beträgt. Es wird jedoch in Erinnerung gerufen, daß für die Verarbeitung der gleichen Schleife die Verwendung des Standes der Technik wie in Fig. 3 zu einer Anzahl von 8 derartigen Zeitschlitzen führt. Deshalb sind die vorliegenden Ausführungsformen beträchtlich effizienter. Als eine weitere Demonstration wird angemerkt, daß die Gleichung 5 für Fig. 7 wie folgt gilt:
  • EUTSINV = CE1,1 + CE2,1 + CE3,1 + CE4,1 + CE5,1 + CE6,1 + CE7,1 + CE8,1 + CE9,1 + CE10,1 =
  • 1 + 1 + 1 + 1 + 1 + 1 + 1+ 1 + 1 + 1 = 10
  • Unter der Voraussetzung des Obigen demonstriert die Gleichung 5, wie sie auf Fig. 7 angewendet wird, daß die mittlere Anzahl der während einer Iteration der kurzen Rückwärtsverzweigungsschleife nach Fig. 7 erforderlichen Ausführungseinheit-Zeitschlitze lediglich 10 beträgt, wohingegen sich dann aus der Gleichung 4 eine Verwendung von 16 Zeitschlitzen ergibt, wenn die gleiche Schleife unter der Verwendung des Standes der Technik verarbeitet würde. Deshalb sind für eine einzelne Iteration abermals weniger Ausführungseinheit-Zeitschlitze erforderlich.
  • Um die Wirkung der Gleichung 5 noch weiter zuerkennen, wird schließlich eine kurze Rückwärtsverzweigungsschleife mit zwei Befehlen (d. h. nur eine Verzweigung und ihr Ziel) angenommen, wobei der erste Befehl in drei Ausführungseinheit-Befehle decodiert wird, während der zweite Befehl in zwei Ausführungseinheit-Befehle decodiert wird. Es wird in diesem Beispiel ferner angenommen, daß die Anzahl der Takte, um jeden entsprechenden Ausführungseinheit-Befehl auszuführen, so ist, wie in der folgenden Tabelle 1 gezeigt ist: Tabelle 1
  • Die Anwendung der Gleichung 5 auf die Tabelle 1 liefert deshalb:
  • EUTSINV = (CE1,1 + CE1,2 + CE1,3) + (CE2,1 + CE2,2) =
  • (1 + 1 + 2) + (2 + 3) = 9
  • Unter der Voraussetzung des Obigen demonstriert die Gleichung 5, wenn sie auf die Schleife nach Tabelle 1 angewendet wird, daß die Vorrichtung und die Methodologie der Erfindung, die oben geschaffen worden sind, eine mittlere Anzahl von neun Ausführungseinheit-Zeitschlitzen liefern können, die während einer Iteration der kurzen Rückwärtsverzweigungsschleife verstreichen.
  • Schließlich demonstriert der Gegensatz der Gleichungen 4 und 5 den Betrieb für eine einzelne Iteration einer Schleife. Für mehrere Iterationen derselben Schleife können jedoch die Mittelwerte abermals berechnet werden, um die durch die vorliegenden Ausführungsformen geschaffenen relativen Verbesserungen zu demonstrieren. Die Gleichung 4 und die Veranschaulichung nach Fig. 3 legen z. B. nahe, daß selbst im besten Fall von einem Ausführungseinheit-Befehl pro Befehl im Mittel drei Zeitschlitze für alle Iterationen der Schleife unbenutzt sind. Unter manchen Umständen, wie z. B. einer Blockierung oder dergleichen, kann es selbstverständlich für eine einzelne Iteration der Fall sein, daß mehr als fünf Ausfuhrungseinheiten verwendet werden, wobei deshalb weniger als drei Ausführungseinheiten unbenutzt sind. Ein Fachmann wird jedoch erkennen, daß im Mittel wenigstens drei Ausführungseinheiten unbenutzt sind. Im Gegensatz demonstriert Fig. 5 eine Alternative, wodurch weniger Ausführungs-Zeitschlitze für eine einzelne Iteration der Schleife verwendet werden können. Es wird abermals der Fall eines Mittelwerts über alle Iterationen der Schleife betrachtet, wobei angemerkt wird, daß in der Tat in bestimmten Taktzyklen die Parameter anzeigen können, daß für diese Iteration ein zusätzlicher Zeitschlitz verwendet wird, um die Iteration auszuführen. Wird jedoch ein Mittelwert von allen Iterationen der Schleife genommen, verursacht die Verarbeitung gemäß den vorliegenden Ausführungsformen, daß eine kleinerer Anzahl von Zeitschlitzen beim Abschluß aller Iterationen der Schleife verstreicht.
  • Nachdem die bevorzugte Pipelineoperation bei der Verarbeitung einer kurzen Rückwärtsverzweigungsschleife demonstriert worden ist, wird in Erinnerung gerufen, daß früher dargelegt worden ist, daß bei der Ausführung einer derartigen Operation der SBB-Befehl zu dem Zeitpunkt, zu dem er zuerst durch die Pipeline geht und als falsch vorhergesagt (oder nicht vorhergesagt, dies bedeutet, daß es keinen Eintrag im BTB 28 gibt) festgestellt wird, als eine kurze Rückwärtsverzweigung bestimmt wird. In der bevorzugten Ausführungsform kann diese Bestimmung in verschiedenen Arten und unter Verwendung der SBB- und TR- Erfassungsschalung 38 entweder allein oder in Kombination mit der in der Ausführungsstufe 22 enthaltenen Funktionalität ausgeführt werden. In jedem Fall werden im folgenden verschiedenen Beispiele der Bestimmung dargestellt.
  • Die SBB-Erfassung ist in dem Fall ziemlich problemlos, in dem die vorliegenden Ausführungsformen in einem RISC-Mikroprozessor implementiert sind, und in dem jeder RISC-Befehl einem einzelnen Ausführungseinheit-Befehl entspricht. Als erstes wird in Erinnerung gerufen, daß der Verzweigungsbefehl als erstes ausgeführt wird, wenn er entweder falsch vorhergesagt wird oder es keinen Eintrag im BTB 28 gibt, wie im Taktzyklus 5 nach Fig. 5. An diesem Punkt antwortet die Verzweigungsbehandlungsschaltungsanordnung der geeigneten Ausführungseinheit mit den oben dargelegten Signalen (d. h. ACTUAL TARGET ADDRESS, INSTRUCTION ADDRES'S, MISPREDICTED). Folglich wird angemerkt, daß die Ausführungseinheit für sich selbst sowohl die Adresse des Verzweigungsbefehls als auch die des Zielbefehls verfügbar hat. Deshalb können zwei Bestimmungen ausgeführt werden, um zu bestimmen, ob der aktuelle Verzweigungsbefehl ein SBB-Befehl ist. Erstens kann die Ausführungseinheit bestimmen, daß die Zieladresse kleiner als die Verzweigungsbefehlsadresse ist; wobei, falls dieser Fall ist, die Verzweigung eine Rückwärtsverzweigung ist. Zweitens kann die Ausführungseinheit die Zieladresse von der Verzweigungsbefehlsadresse subtrahieren. Das Ergebnis kann dann mit der Anzahl der Speicherzellen in der Warteschlange 30 (z. B. acht für das Beispiel nach Fig. 5 und zwölf für das Beispiel nach Fig. 7) verglichen werden. Wenn das Ergebnis kleiner als die Anzahl der Speicherzellen in der Warteschlange 30 ist, dann ist die Verzweigung eine kurze Rückwärtsverzweigung; ansonsten ist sie, während die Verzweigung eine Rückwärtsverzweigung ist, nicht so kurz wie der Begriff in den vorliegenden Ausführungsformen definiert ist.
  • Die SBB-Erfassung ist in dem Fall komplizierter, in dem die vorliegenden Ausführungsformen in einem CISC-Mikroprozessor (oder einem RISC mit einer komplexen Decodierung) implementiert sind, es sind aber im folgenden zwei Techniken ausführlich beschrieben, während ein Fachmann ebenfalls zusätzliche Alternativen schaffen kann.
  • In einer ersten Technik für die SBB-Erfassung in einem CISC-Mikroprozessor kann eine Simulation oder eine andere vergleichbare Analyse ausgeführt werden, um sowohl die mittlere Anzahl der Bytes, B, pro Befehl der Befehlsvorrat- Architektur ("ISA"-Befehl) als auch die mittlere Anzahl der Ausführungseinheit- Befehle, I, pro ISA-Befehl zu bestimmen. Unter der Voraussetzung dieser Parameter ist die mittlere Anzahl der ISA-Befehle, die in der Warteschlange 30 gespeichert werden kann, QI, durch die folgende Gleichung 6 gegeben:
  • QI = (die Anzahl der Zellen in der Warteschlange 30) + I (6)
  • Das Ergebnis der Gleichung 1 wird dann verwendet, um die mittlere Anzahl der in der Warteschlange 30 gespeicherten Bytes, QB, entsprechend der folgenden Gleichung 7 zu bestimmen:
  • QB = QI·B (7)
  • Unter der Voraussetzung des Wertes von QB nach Gleichung 7 (d. h. der mittleren Anzahl der Bytes, die in der Warteschlange 30 gespeichert werden kann), wird abermals eine Adressensubtraktion wie im Fall des oben dargelegten RISC- Beispiels verwendet. Mit anderen Worten, die Zieladresse wird von der Verzweigungsadresse subtrahiert, um eine Differenz D zu erzeugen. Weil die Adressen durch Bytes dargestellt werden, stellt deshalb D die Gesamtzahl der innerhalb der Schleife enthaltenen Bytes dar. Falls folglich D kleiner als QB ist, ist es statistisch wahrscheinlich, daß die Rückwärtsverzweigung eine kurze Rückwärtsverzweigung ist. Es wird außerdem angemerkt, daß die obige Bestimmung nur näherungsweise statistisch ist, weil die obigen Parameter auf Mittelwerten basieren. Um folglich ferner einige Abweichungen über den Mittelwert hinaus einzubeziehen, kann in einer alternativen Ausführungsform der Wert von QB um irgendeinen Faktor, wie z. B. einen Faktor in der Größenordnung von 1,1, vergrößert werden, um zu verursachen, daß mehr Schleifen als kurze Rückwärtsverzweigungen betrachtet werden, anstatt einen eindeutigen Vergleich von QB mit D auszuführen. Ungeachtet, ob QB vergrößert ist, aktualisiert die SBB- und TR- Erfassungsschaltung 38 den BTB 28, um anzuzeigen, daß der aktuelle Verzweigungsbefehl ein SBB-Befehl ist, sobald eine Verzweigung als eine kurze Rückwärtsverzweigung erfaßt worden ist wobei sowohl der SBB als auch sein entsprechender TR-Befehl danach etikettiert werden können, wie oben beschrieben ist.
  • Unter der Voraussetzung des Obigen wird abermals angemerkt, daß die Berechnungen und die SBB-Schlußfolgerungen aus den Gleichungen 6 und 7 auf Mittelwerten basieren. Folglich kann es Fälle geben, in denen eine Verzweigungsschleife, die als eine kurze Rückwärtsverzweigung identifiziert ist, tatsächlich größer als eine derartige Schleife ist (d. h. die Ausführungseinheit-Befehle, die der Schleife entsprechen, sind zu zahlreich, um in die Zellen der Warteschlange 30 zu passen). Folglich enthält die bevorzugte Ausführungsform ferner zusätzliche Schritte und zusätzliche Hardware, um die auf den obigen Gleichungen basierte Bestimmung zu verifizieren, wobei derartige Schritte im folgenden beschrieben sind.
  • Nachdem der BTB 28 aktualisiert worden ist wie unmittelbar oberhalb beschrieben ist, wird in Erinnerung gerufen, daß die Pipeline dann sowohl den TR- Befehl als auch die ihm folgenden Befehle holt. An diesem Punkt wird der TR- Befehl als das Ziel einer kurzen Rückwärtsverzweigungsschleife etikettiert, zurückzuführen auf den Eintrag im BTB 28, der ihn als solchen identifiziert. In Fig. 5 wird dann als nächstes in Erinnerung gerufen, daß TR decodiert und in der Warteschlange 30 gespeichert wird. Sobald ein TR-Befehl (der notwendigerweise als das Ziel eines SBB-Befehls etikettiert ist) in der Warteschlange 30 gespeichert ist, enthält die vorliegende Ausführungsform ferner eine geeignete Schaltungsanordnung, die seine Ankunft erfaßt und bis zu zwei zusätzliche Bestimmungen ausführt. Erstens wird bestimmt, ob sich der entsprechende SBB ebenfalls in der Warteschlange 30 befindet. Falls das so ist, dann ist, weil sich sowohl der TR- als auch der SBB-Ausführungseinheit-Befehl innerhalb der Warteschlange 30 befinden, die Schleife per definitionem eine kurze Rückwärtsverzweigungsschleife. Im Ergebnis ist der frühere Eintrag im BTB 28, der auf den obigen Gleichungen basiert, genau, wobei das Verfahren fortgesetzt wird, wie in Fig. 5 (oder Fig. 7) veranschaulicht ist. Wenn sich andererseits der entsprechende SBB nicht ebenfalls innerhalb der Warteschlange 30 befindet, dann wird eine Bestimmung ausgeführt, ob die Warteschlange 30 voll ist (d. h. ob jeder Warteschlangenplatz gültige Informationen speichert). Im Taktzyklus 11 nach Fig. 7 gibt es z. B. einen Fall, in dem der IR-Befehl in der Warteschlange 30 gespeichert worden ist, die Warteschlange 30 aber noch nicht voll ist. In einem derartigen Fall ist erlaubt, daß im nächsten Taktzyklus die aktuellen Ausführungsbefehle längs der Pipeline 14 fortgesetzt werden, wobei aber Kopien von ihnen außerdem innerhalb der Warteschlange 30 beibehalten werden. Für jeden Zyklus danach wird diese Analyse fortgesetzt, d. h., es wird bestimmt, ob sich sowohl der SBB- als auch der TR- Ausführungseinheit-Befehl innerhalb der Warteschlange 30 befinden, und, falls nicht, ob die Warteschlange 30 voll ist. An irgendeinem Punkt wird sich deshalb die Warteschlange 30 mit Ausführungseinheit-Befehlen füllen. In Fig. 7 tritt dies z. B. im Taktzyklus 12 auf. Wenn sich an diesem Punkt abermals sowohl der SBB- als auch der TR-Ausführungseinheit-Befehl innerhalb der Warteschlange 30 befinden, dann ist die obige Bestimmung, daß die Schleife eine kurze Rückwärtsverzweigungsschleife ist, genau, wobei die Verarbeitung dieser Schleife in der obenbeschriebenen Weise fortgesetzt werden kann. Wenn andererseits zu dem Zeitpunkt, zu dem die Warteschlange 30 voll ist, bestimmt wird, daß sich der SBB-Ausführungseinheit-Befehl nicht in der Warteschlange 30 befindet, dann ist die aktuelle Schleife, obwohl sie als eine kurze Rückwärtsverzweigungsschleife identifiziert worden ist, per definitionem in der Tat keine derartige Schleife. In Reaktion werden zwei Handlungen unternommen. Erstens wird der Eintrag im BTB 28, der anzeigt, daß der Verzweigungsbefehl ein SBB-Befehl ist, so korrigiert, daß er keine kurze Rückwärtsverzweigung anzeigt. Zweitens werden diese Ausführungseinheit-Befehle, die innerhalb der Warteschlange 30 gehalten werden, für die diese Bestimmung anstehend ist, und für die bereits Kopien zu nachfolgenden Pipelinestufen geleitet worden sind, ungültig gemacht, so daß die nächsten nachfolgenden Befehle, die nicht zu nachfolgenden Pipelinestufen weitergeleitet worden sind, dann in der geeigneten Reihenfolge längs der Pipeline weitergehen können.
  • In einer zweiten Technik für die SBB-Erfassung in einem CICS- Mikroprozessor werden sowohl die oben dargelegten Mittelwerte als auch die Gleichungen und Vergleiche nicht verwendet. Statt dessen wird jeder geholte Rückwärtsverzweigungsbefehl anfangs im BTB 28 als ein SBB-Befehl bezeichnet. Als nächstes wird der Fluß fortgesetzt, wie im unmittelbar vorhergehenden Abschnitt beschrieben ist, d. h., die Ankunft des Ausführungseinheit-Befehls, der dem Ziel der Verzweigung entspricht, in der Warteschlange 30 wird erfaßt. Danach wird bestimmt, ob der SBB entweder vor dem oder nicht später als im gleichen Taktzyklus, in dem die Warteschlange 30 gefüllt wird, innerhalb der Warteschlange 30 gespeichert wird. Wenn abermals sowohl der Ziel- als auch der Verzweigungs-Ausführungseinheit-Befehl schließlich zum gleichen Zeitpunkt in der Warteschlange 30 gespeichert sind, wird dann bestätigt, daß die Anzeige im BTB 28 genau ist; ansonsten ist die Anzeige ungenau, wobei sie korrigiert wird, wie oben erwähnt ist. Deshalb wird das Verfahren fortgesetzt, wie oben demonstriert ist, d. h., es wird in einer Weise der Erfindung fortgefahren, falls die Schleife eine kurze Rückwärtsverzweigung ist, oder es wird wie im Stand der Technik fortgefahren, falls die Schleife eine längere Rückwärtsverzweigung repräsentiert.
  • Aus dem Obigen kann ein Fachmann zahlreiche Vorteile der vorliegenden Ausführungsformen erkennen. Ein Mikroprozessor gemäß den verschiedenen Ausführungsformen kann z. B. mehr als eine Iteration einer kurzen Rückwärtsverzweigungsschleife in einem einzelnen Ausführungszyklus oder Befehle, die Teilen von verschiedenen Iterationen einer kurzen Rückwärtsverzweigungsschleife entsprechen, in einem einzelnen Zyklus ausführen. Im Ergebnis werden im Vergleich zum Stand der Technik während jedes Ausführungszyklus mehr Ausführungseinheiten verwendet, wenn eine kurze Rückwärtsverzweigung ausgeführt wird. Als ein weiterer Vorteil kann die oben dargelegte Funktionalität unter Verwendung verschiedener Konfigurationen durch einen Fachmann implementiert werden. Als ein weiterer Vorteil können die vorliegenden Ausführungsformen durch einen Fachmann modifiziert werden, während sie trotzdem die obenbeschriebene Funktionalität erreichen. Oben ist z. B. ein Mikroprozessor mit acht Ausführungseinheiten dargestellt; wie jedoch oben erwähnt ist, kann diese Anzahl vergrößert oder verkleinert werden. Als ein weiteres Beispiel demonstriert die oben für die Länge einer kurzen Rückwärtsverzweigungsschleife eingeführte Definition, daß die Anzahl der Ausführungseinheit-Befehle in einer derartigen Schleife ebenfalls variieren kann. In der Tat können für einen Mikroprozessor mit einer großen Anzahl von Ausführungseinheiten und/oder für eine kurze Rückwärtsverzweigungsschleife mit einer kleinen Anzahl von Ausführungseinheit- Befehlen zwei oder mehr Iterationen dieser Schleife in einem einzelnen Taktzyklus ausgeführt werden. Noch weitere Vorteile des vorliegenden Systems sind oben dargelegt worden, die außerdem verschiedene alternative Ausführungsformen demonstrieren, die innerhalb des Umfangs der Erfindung enthalten sind. Noch weitere Beispiele werden für einen Fachmann feststellbar sein. Deshalb dienen diese Vorteile und Beispiele weiter dazu, zu demonstrieren, daß während die vorliegenden Ausführungsformen ausführlich beschrieben worden sind, verschiedene Ersetzungen, Modifikationen oder Änderungen an den oben dargelegten Beschreibungen vorgenommen werden könnten, wobei das gesamte Obige die Flexibilität des Umfangs der Erfindung demonstriert.

Claims (23)

1. Verfahren zum Betreiben eines Mikroprozessors (36), das umfaßt:
Holen eines Befehlsvorrats, wobei der Befehlsvorrat einen Verzweigungsbefehl (SBB) und einen Zielbefehl (TR), die eine kurze Rückwärtsverzweigungsschleife (34) von Befehlen bilden, enthält, wobei die kurze Rückwärtsverzweigungsschleife (34) von Befehlen eine entsprechende kurze Rückwärtsverzweigungsschleife von Ausführungseinheit-Befehlen besitzt,
Bestimmen, daß der kurze Rückwärtsverzweigungsbefehl ein kurzer Rückwärtsverzweigungsbefehl ist, nach dem Schritt des Holens der Befehle,
Ausführen mehrerer Iterationen der kurzen Rückwärtsverzweigungsschleife von Ausführungseinheit-Befehlen über mehrere Taktzyklen ohne erneutes Holen der Befehle nach dem Holschritt; und
wobei der Ausführungsschritt in bestimmten der mehreren Taktzyklen umfaßt:
Ausführen einer ersten Menge (TR1, A1, B1, C1, SBB1) der Ausführungseinheit-Befehle entsprechend einer ersten Iteration der mehreren Iterationen; und
Ausführen einer zweiten Menge (TR2, A2, B2) der Ausführungseinheit- Befehle entsprechend einer zweiten Iteration der mehreren Iterationen, wobei die zweite Iteration der ersten Iteration unmittelbar folgt.
2. Verfahren nach Anspruch 1, das ferner umfaßt:
Speichern der kurzen Rückwärtsverzweigungsschleife von Ausführungseinheit-Befehlen; wobei der Speicherschritt das Speichern der kurzen Rückwärtsverzweigungsschleife von Ausführungseinheit-Befehlen in einer Warteschlange (30) mit einer ganzen Zahl Q von Speicherzellen (42a bis 42h) vor dem Ausführungsschritt umfaßt;
wobei die Ausführungseinheit-Befehle eine ganze Zahl L von Ausführungseinheit-Befehlen besitzen; und
wobei die ganze Zahl L kleiner als die ganze Zahl Q ist.
3. Verfahren nach Anspruch 1 oder Anspruch 2, bei dem der Schritt des Holens der Befehle das Holen von Befehlen einer Architektur mit komplexem Befehlsvorrat umfaßt.
4. Verfahren nach Anspruch 3, bei dem der Schritt des Holens der Befehle das Holen von Befehlen einer Befehlsvorrat-Architektur, die sich von den Ausführungseinheit-Befehlen unterscheiden, umfaßt.
5. Verfahren nach Anspruch 1, bei dem der Schritt des Holens der Befehle das Holen von Befehlen einer Architektur mit reduziertem Befehlsvorrat umfaßt.
6. Verfahren nach Anspruch 5, bei dem der Schritt des Holens der Befehle das Holen von Befehlen einer Befehlsvorrat-Architektur, die gleich den Ausführungseinheit-Befehlen sind, umfaßt.
7. Verfahren nach einem vorhergehenden Anspruch, das ferner den folgenden Schritt umfaßt:
Decodieren der kurzen Rückwärtsverzweigungsschleife (34) von Befehlen, um die Ausführungseinheit-Befehle zu bilden.
8. Verfahren nach einem vorhergehenden Anspruch, bei dem der Schritt des Holens der Befehle ferner umfaßt:
Holen der kurzen Rückwärtsverzweigungsschleife von Befehlen (TR, A, B, C und SBB) in einem ersten Taktzyklus;
Holen zusätzlicher sequentiell orientierter Befehle nach dem Verzweigungsbefehl (SBB) in dem ersten Taktzyklus; und
Holen einer zweiten Gruppe von Befehlen (N, O, P, Q, R, S. T und U), die unmittelbar nach den zusätzlichen Befehlen sequentiell orientiert sind, in einem zweiten Taktzyklus unmittelbar nach dem ersten Taktzyklus.
9. Verfahren nach Anspruch 8, bei dem der Schritt des Ausführens der mehreren Iterationen das Ausführen einer letzten Iteration der kurzen Rückwärtsverzweigungsschleife in einem dritten Taktzyklus; und
in einem Taktzyklus nach dem dritten Taktzyklus den Schritt des Ausführens wenigstens eines Ausführungseinheit-Befehls, der wenigstens einem Befehl der zweiten Gruppe von Befehlen entspricht, ohne daß der wenigstens eine Befehl erneut geholt werden muß, umfaßt.
10. Verfahren nach den Ansprüchen 1 bis 9, bei dem der Schritt des Holens der Befehle das Holen der kurzen Rückwärtsverzweigungsschleife umfaßt, die eine ganze Zahl L der Ausführungseinheit-Befehle besitzt;
wobei der Mikroprozessor eine ganze Zahl E von Ausführungseinheiten (22) für die Ausführung des Ausführungsschrittes enthält, wobei die ganze Zahl L kleiner als die ganze Zahl E ist.
11. Verfahren nach den Ansprüchen 1 bis 9, bei dem der Schritt des Holens der Befehle das Holen der kurzen Rückwärtsverzweigungsschleife, die eine ganze Zahl L der Ausführungseinheit-Befehle besitzt, umfaßt;
wobei der Mikroprozessor (36) eine ganze Zahl E von Ausführungseinheiten (22) für die Ausführung des Ausführungsschrittes umfaßt, wobei die ganze Zahl L größer als die ganze Zahl E ist.
12. Verfahren nach einem vorhergehenden Anspruch, das ferner umfaßt:
Speichern der Ausführungseinheit-Befehle; wobei der Speicherschritt vor dem Ausführungsschritt das Speichern der Ausführungseinheit-Befehle in einer Warteschlange (30) mit einer ganzen Zahl Q von Speicherzellen (42a bis 42h);
und vor dem Ausführungsschritt das Ausführen des Schrittes des Übermittelns der kurzen Rückwärtsverzweigungsschleife von Ausführungseinheit-Befehlen von der Warteschlange (30) zu einer Zeitplanschaltung (18) in zirkulärer Weise umfaßt.
13. Verfahren nach Anspruch 12, das ferner den folgenden Schritt umfaßt:
zeitliches Planen der Ausführungseinheit-Befehle fit die Ausführung vor dem Ausführungsschritt.
14. Mikroprozessor des Typs, der eine Befehlshol-Schaltungsanordnung (14) zum Holen eines Befehlsvorrats, wobei der Befehlsvorrat einen Verzweigungsbefehl (SBB) und einen Zielbefehl (TR), die eine kurze Rückwärtsverzweigungsschleife (34) von Befehlen bilden, umfaßt, wobei die kurze Rückwärtsverzweigungsschleife (34) von Befehlen eine entsprechende kurze Rückwärtsverzweigungsschleife von Ausführungseinheit-Befehlen besitzt; und
eine Schaltungsanordnung (22), die mehrere Iterationen der kurzen Rückwärtsverzweigungsschleife von Ausführungseinheit-Befehlen über mehrere Taktzyklen ausführt, ohne die kurze Rückwärtsverzweigungsschleife erneut zu holen, nachdem die kurze Rückwärtsverzweigungsschleife von Ausführungseinheit- Befehlen gespeichert worden ist, umfaßt; dadurch gekennzeichnet, daß der Mikroprozessor ferner umfaßt:
eine Befehlserfassungs-Schaltungsanordnung (38), die bestimmt, daß der kurze Rückwärtsverzweigungsbefehl ein kurzer Rückwärtsverzweigungsbefehl ist, nachdem die kurze Rückwärtsverzweigungsschleife von Befehlen geholt worden ist; und daß
die Schaltungsanordnung (22) für die Ausführung in bestimmten der mehreren Taktzyklen umfaßt:
eine Schaltungsanordnung für die Ausführung eines ersten Vorrats (TR1, A1, B1, C1, SBBI) von Ausführungseinheit-Befehlen entsprechend einer ersten Iteration der mehreren Iterationen; und
eine Schaltungsanordnung für die Ausführung eines zweiten Vorrats (TR2, A2, B2) der Ausführungseinheit-Befehle entsprechend einer zweiten Iteration der mehreren Iterationen, wobei die zweite Iteration der ersten Iteration unmittelbar folgt.
15. Mikroprozessor nach Anspruch 14:
der ferner eine Schaltungsanordnung (30) zum Speichern der kurzen Rückwärtsverzweigungsschleife von Ausführungseinheit-Befehle umfaßt;
wobei die Speicher-Schaltungsanordnung (30) eine Warteschlange mit einer ganzen Zahl Q von Speicherzellen (42a bis 42h) umfaßt;
wobei die kurze Rückwärtsverzweigungsschleife eine ganze Zahl L von Ausführungseinheit-Befehlen besitzt; und
wobei die ganze Zahl L kleiner als die ganze Zahl Q ist.
16. Mikroprozessor nach Anspruch 14 oder Anspruch 15, bei dem die Schaltungsanordnung (14) zum Holen der kurzen Rückwärtsverzweigungsschleife von Befehlen eine Schaltungsanordnung zum Holen von Befehlen einer Architektur mit komplexem Befehlsvorrat umfaßt.
17. Mikroprozessor nach Anspruch 16, bei dem die Ausführungseinheit- Befehle sich von den Befehlen mit der Befehlsvorrat-Architektur unterscheiden.
18. Mikroprozessor nach Anspruch 14, bei dem die Schaltungsanordnung (14) zum Holen der kurzen Rückwärtsverzweigungsschleife von Befehlen eine Schaltungsanordnung zum Holen von Befehlen mit einer Architektur mit reduziertem Befehlsvorrat umfaßt.
19. Mikroprozessor nach Anspruch 18, bei dem die Befehlseinheit-Befehle gleich den Befehlen der Architekturbefehle sind.
20. Mikroprozessor nach einem der Ansprüche 14 bis 19, der ferner eine Schaltungsanordnung (16) zum Decodieren der kurzen Rückwärtsverzweigungsschleife von Befehlen umfaßt, um die kurze Rückwärtsverzweigungsschleife von Befehlseinheit-Befehlen zu bilden.
21. Mikroprozessor nach einem der Ansprüche 14 bis 20:
bei dem die Schaltungsanordnung (14) zum Holen einer kurzen Rückwärtsverzweigungsschleife von Befehlen so beschaffen ist, daß sie die kurze Rückwärtsverzweigungsschleife von Befehlen (TR, A, B, C, SBB) in einem ersten Taktzyklus holt und ferner in dem ersten Taktzyklus weitere Befehle, die nach dem Verzweigungsbefehl sequentiell orientiert sind, holt; und
bei dem die Schaltungsanordnung (14) zum Holen ferner so beschaffen ist, daß sie in einem zweiten Taktzyklus unmittelbar nach dem ersten Taktzyklus eine zweite Gruppe von Befehlen (N, O, P, Q, R, S, T und U), die unmittelbar nach den zusätzlichen Befehlen sequentiell orientiert sind, holt.
22. Mikroprozessor nach Anspruch 21:
bei dem die Schaltungsanordnung (22) zum Ausführen der mehreren Iterationen so beschaffen ist, daß sie in einem dritten Taktzyklus eine letzte Iteration der kurzen Rückwärtsverzweigungsschleife ausführt; und
die Ausführungs-Schaltungsanordnung (22) ferner so beschaffen ist, daß sie in einem Taktzyklus nach dem dritten Taktzyklus wenigstens einen Ausführungseinheit-Befehl, der wenigstens einem Befehl der zweiten Gruppe von Befehlen entspricht, ausführt, ohne daß die Schaltungsanordnung (14) zum Holen den wenigstens einen Befehl erneut holen muß.
23. Mikroprozessor nach einem der Ansprüche 14 bis 22, der ferner umfaßt:
eine Schaltungsanordnung (30) zum Speichern der kurzen Rückwärtsverzweigungsschleife von Ausführungseinheit-Befehlen;
wobei die Speicher-Schaltungsanordnung (30) eine Warteschlange mit einer ganzen Zahl Q von Speicherzellen (42a bis 42h);
und ferner eine Schaltungsanordnung (44a bis 44 h und 46) umfaßt, die die kurze Rückwärtsverzweigungsschleife von Ausführungseinheit-Befehlen von der Warteschlange zu einer Zeitplanschaltung (18) in zirkulärer Weise vermittelt, bevor die mehreren Iterationen der kurzen Rückwärtsverzweigungsschleife von Ausführungseinheit-Befehlen durch die Ausführungsschaltungsanordnung (22) ausgeführt werden.
DE69718278T 1996-10-31 1997-10-31 Methode und System zur Einzel-Zyklus-Ausführung aufeinanderfolgender Iterationen einer Befehlsschleife Expired - Lifetime DE69718278T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US2923096P 1996-10-31 1996-10-31

Publications (2)

Publication Number Publication Date
DE69718278D1 DE69718278D1 (de) 2003-02-13
DE69718278T2 true DE69718278T2 (de) 2003-08-21

Family

ID=21847948

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69718278T Expired - Lifetime DE69718278T2 (de) 1996-10-31 1997-10-31 Methode und System zur Einzel-Zyklus-Ausführung aufeinanderfolgender Iterationen einer Befehlsschleife

Country Status (4)

Country Link
US (1) US5951679A (de)
EP (1) EP0840208B1 (de)
JP (1) JPH10177482A (de)
DE (1) DE69718278T2 (de)

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998036351A1 (fr) * 1997-02-17 1998-08-20 Hitachi, Ltd. Processeur de donnees
US6385720B1 (en) * 1997-07-14 2002-05-07 Matsushita Electric Industrial Co., Ltd. Branch prediction method and processor using origin information, relative position information and history information
EP0992916A1 (de) 1998-10-06 2000-04-12 Texas Instruments Inc. Digitaler Signalprozessor
WO2000055724A1 (de) * 1999-03-17 2000-09-21 Infineon Technologies Ag Cachen kurzer programmschleifen innerhalb eines instruktions-fifos
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
WO2001018646A1 (en) * 1999-09-01 2001-03-15 Intel Corporation Branch instruction for multithreaded processor
US7191309B1 (en) 1999-09-01 2007-03-13 Intel Corporation Double shift instruction for micro engine used in multithreaded parallel processor architecture
US6598155B1 (en) * 2000-01-31 2003-07-22 Intel Corporation Method and apparatus for loop buffering digital signal processing instructions
JP2001195302A (ja) * 1999-11-30 2001-07-19 Texas Instr Inc <Ti> 命令ループ・バッファ
US6963965B1 (en) 1999-11-30 2005-11-08 Texas Instruments Incorporated Instruction-programmable processor with instruction loop cache
US6732203B2 (en) 2000-01-31 2004-05-04 Intel Corporation Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus
US7165257B2 (en) * 2000-02-08 2007-01-16 Mips Technologies, Inc. Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts
US7042887B2 (en) 2000-02-08 2006-05-09 Mips Technologies, Inc. Method and apparatus for non-speculative pre-fetch operation in data packet processing
US7058064B2 (en) 2000-02-08 2006-06-06 Mips Technologies, Inc. Queueing system for processors in packet routing operations
US7082552B2 (en) * 2000-02-08 2006-07-25 Mips Tech Inc Functional validation of a packet management unit
US7065096B2 (en) * 2000-06-23 2006-06-20 Mips Technologies, Inc. Method for allocating memory space for limited packet head and/or tail growth
US20010052053A1 (en) * 2000-02-08 2001-12-13 Mario Nemirovsky Stream processing unit for a multi-streaming processor
US7032226B1 (en) * 2000-06-30 2006-04-18 Mips Technologies, Inc. Methods and apparatus for managing a buffer of events in the background
US7502876B1 (en) 2000-06-23 2009-03-10 Mips Technologies, Inc. Background memory manager that determines if data structures fits in memory with memory state transactions map
US7139901B2 (en) 2000-02-08 2006-11-21 Mips Technologies, Inc. Extended instruction set for packet processing applications
US7155516B2 (en) * 2000-02-08 2006-12-26 Mips Technologies, Inc. Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory
US7649901B2 (en) 2000-02-08 2010-01-19 Mips Technologies, Inc. Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing
US6567895B2 (en) * 2000-05-31 2003-05-20 Texas Instruments Incorporated Loop cache memory and cache controller for pipelined microprocessors
US6829702B1 (en) * 2000-07-26 2004-12-07 International Business Machines Corporation Branch target cache and method for efficiently obtaining target path instructions for tight program loops
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7020871B2 (en) 2000-12-21 2006-03-28 Intel Corporation Breakpoint method for parallel hardware threads in multithreaded processor
US6552625B2 (en) 2001-06-01 2003-04-22 Microchip Technology Inc. Processor with pulse width modulation generator with fault input prioritization
US7020788B2 (en) 2001-06-01 2006-03-28 Microchip Technology Incorporated Reduced power option
US6975679B2 (en) 2001-06-01 2005-12-13 Microchip Technology Incorporated Configuration fuses for setting PWM options
US7467178B2 (en) 2001-06-01 2008-12-16 Microchip Technology Incorporated Dual mode arithmetic saturation processing
US6952711B2 (en) 2001-06-01 2005-10-04 Microchip Technology Incorporated Maximally negative signed fractional number multiplication
US20020184566A1 (en) 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US6604169B2 (en) 2001-06-01 2003-08-05 Microchip Technology Incorporated Modulo addressing based on absolute offset
US7003543B2 (en) 2001-06-01 2006-02-21 Microchip Technology Incorporated Sticky z bit
US6976158B2 (en) 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US6937084B2 (en) 2001-06-01 2005-08-30 Microchip Technology Incorporated Processor with dual-deadtime pulse width modulation generator
US6985986B2 (en) 2001-06-01 2006-01-10 Microchip Technology Incorporated Variable cycle interrupt disabling
US6934728B2 (en) 2001-06-01 2005-08-23 Microchip Technology Incorporated Euclidean distance instructions
US7007172B2 (en) 2001-06-01 2006-02-28 Microchip Technology Incorporated Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection
US6601160B2 (en) 2001-06-01 2003-07-29 Microchip Technology Incorporated Dynamically reconfigurable data space
US6728856B2 (en) 2001-06-01 2004-04-27 Microchip Technology Incorporated Modified Harvard architecture processor having program memory space mapped to data memory space
US7225281B2 (en) 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
US7487505B2 (en) 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US7216204B2 (en) 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US6868476B2 (en) 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US6552567B1 (en) 2001-09-28 2003-04-22 Microchip Technology Incorporated Functional pathway configuration at a system/IC interface
US20040021483A1 (en) * 2001-09-28 2004-02-05 Brian Boles Functional pathway configuration at a system/IC interface
US7610451B2 (en) 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
US7437724B2 (en) 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
US7337275B2 (en) 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management
US7249248B2 (en) * 2002-11-25 2007-07-24 Intel Corporation Method, apparatus, and system for variable increment multi-index looping operations
US6941438B2 (en) 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
JP4610218B2 (ja) * 2004-03-30 2011-01-12 ルネサスエレクトロニクス株式会社 情報処理装置
US7475231B2 (en) * 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
US20080229074A1 (en) * 2006-06-19 2008-09-18 International Business Machines Corporation Design Structure for Localized Control Caching Resulting in Power Efficient Control Logic
US20070294519A1 (en) * 2006-06-19 2007-12-20 Miller Laura F Localized Control Caching Resulting In Power Efficient Control Logic
US20090217017A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Method, system and computer program product for minimizing branch prediction latency
US9110683B2 (en) * 2008-08-15 2015-08-18 Apple Inc. Predicting branches for vector partitioning loops when processing vector instructions
US9753733B2 (en) 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
US11294681B2 (en) * 2019-05-31 2022-04-05 Texas Instruments Incorporated Processing device with a microbranch target buffer for branch prediction using loop iteration count
US20230195517A1 (en) * 2021-12-22 2023-06-22 Advanced Micro Devices, Inc. Multi-Cycle Scheduler with Speculative Picking of Micro-Operations
US20240028339A1 (en) * 2022-07-25 2024-01-25 Apple Inc. Using a Next Fetch Predictor Circuit with Short Branches and Return Fetch Groups

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0743647B2 (ja) * 1982-03-18 1995-05-15 横河電機株式会社 データ処理装置における命令ループ捕捉機構
US4626988A (en) * 1983-03-07 1986-12-02 International Business Machines Corporation Instruction fetch look-aside buffer with loop mode control
JP2690921B2 (ja) * 1987-12-25 1997-12-17 株式会社日立製作所 情報処理装置
US4876642A (en) * 1988-01-19 1989-10-24 Gibson Glenn A Rules and apparatus for a loop capturing code buffer that prefetches instructions
DE68926701T2 (de) * 1988-08-09 1997-02-20 Matsushita Electric Ind Co Ltd Datenverarbeitungsgerät zur parallelen Dekodierung und parallelen Ausführung von Befehlen mit variabler Wortlänge
DE69129872T2 (de) * 1990-03-27 1999-03-04 Philips Electronics N.V., Eindhoven Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher
US5421020A (en) * 1993-01-08 1995-05-30 International Business Machines Corporation Counter register implementation for speculative execution of branch on count instructions
DE69427265T2 (de) * 1993-10-29 2002-05-02 Advanced Micro Devices, Inc. Superskalarbefehlsdekoder
US5943494A (en) * 1995-06-07 1999-08-24 International Business Machines Corporation Method and system for processing multiple branch instructions that write to count and link registers

Also Published As

Publication number Publication date
JPH10177482A (ja) 1998-06-30
EP0840208A3 (de) 1999-04-21
US5951679A (en) 1999-09-14
EP0840208A2 (de) 1998-05-06
EP0840208B1 (de) 2003-01-08
DE69718278D1 (de) 2003-02-13

Similar Documents

Publication Publication Date Title
DE69718278T2 (de) Methode und System zur Einzel-Zyklus-Ausführung aufeinanderfolgender Iterationen einer Befehlsschleife
DE69033398T2 (de) Rechnerarchitektur mit Mehrfachbefehlsausgabe
DE69033443T2 (de) Mechanismus zur Verzweigungsrücksetzung in einem Prozessor mit gepaarten Befehlen
DE69422780T2 (de) Superskalare Rechnerarchitektur mit Softwarescheduling
DE69904083T2 (de) Anordnung und verfahren zum etikettieren und ungültig-erklären von spekulativ ausgeführten befehlen
DE60306937T2 (de) Synchronisierung von pipelines in einem datenverarbeitungsgerät
DE60038693T2 (de) Verfahren und vorrichtung zur ausschaltung eines taktsignals in einem vielfadenprozessor
DE69933088T2 (de) Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten
DE102014011332B4 (de) Priorisieren von anweisungen basierend auf typ
DE69802209T2 (de) An bytebereiche innerhalb eines befehlscaches gebundene verzweigungsselektoren zur schnellen identifizierung von verzweigungsprädiktoren
DE69919081T2 (de) Datenprozessor mit Verzweigungssteuerung und -verfahren
DE69612991T2 (de) System zur bearbeitung von selbstmodifizierendem kode
DE69126166T2 (de) Programmierbare Steuerungsvorrichtung
DE69932066T2 (de) Mechanismus zur &#34;store-to-load forwarding&#34;
DE69033065T2 (de) Mehrfachbefehlsdecoder
DE69032465T2 (de) Prozessorarchitektur mit entkoppelter Befehlsbereitstellung
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE102014000382A1 (de) Vorhersage indirekter Abzweigungen
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69702350T2 (de) Verzweigungsvorhersageschema für cachespeicherzeile, das von sätzen eines set-assoziativen cachespeichers gemeinsam verwendet wird
DE4217012A1 (de) Mit einer vielzahl von befehlsstroemen und statischer verschachtelung arbeitender mikroprozessor
DE102015112202A1 (de) Kombinieren von Pfaden
DE60131214T2 (de) Verfahren und Anordnung zur Freilassung von Funktionseinheiten in einem multithreaded VLIW-Prozessor
DE69908175T2 (de) Verbesserte befehlsdekodierung durch paralleldekodierungsalgorithmus

Legal Events

Date Code Title Description
8364 No opposition during term of opposition