DE69919081T2 - Datenprozessor mit Verzweigungssteuerung und -verfahren - Google Patents

Datenprozessor mit Verzweigungssteuerung und -verfahren Download PDF

Info

Publication number
DE69919081T2
DE69919081T2 DE69919081T DE69919081T DE69919081T2 DE 69919081 T2 DE69919081 T2 DE 69919081T2 DE 69919081 T DE69919081 T DE 69919081T DE 69919081 T DE69919081 T DE 69919081T DE 69919081 T2 DE69919081 T2 DE 69919081T2
Authority
DE
Germany
Prior art keywords
counter
address
command
instruction
branch instruction
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 - Fee Related
Application number
DE69919081T
Other languages
English (en)
Other versions
DE69919081D1 (de
Inventor
Lea Hwang Austin Lee
William C Dripping Springs Moyer
Jeffrey W. Austin Scott
John H. Austin Arends
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.)
NXP USA Inc
Original Assignee
Motorola 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 Motorola Inc filed Critical Motorola Inc
Application granted granted Critical
Publication of DE69919081D1 publication Critical patent/DE69919081D1/de
Publication of DE69919081T2 publication Critical patent/DE69919081T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/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/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
    • 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
    • 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

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)
  • Executing Machine-Instructions (AREA)

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich im Allgemeinen auf Datenverarbeitung und im Besonderen auf ein Datenverarbeitungssystem, das eine optimierte Verzweigungssteuerung hat, und ein zugehöriges Verfahren.
  • Hintergrund der Erfindung
  • Konstruktionstechniken mit geringerer Leistung haben in der Mikroprozessor- und Mikroprozessorsteuerungskonstruktion wegen der breitgestreuten Verwendung von tragbaren und handgestützten Anwendungen Bedeutung erlangt. Solche Anwendungen erfordern eine lange Batterie-Lebensdauer und niedrige Systemkosten. Eine tragbare Anwendung arbeitet typischerweise alternativ zwischen zwei Betriebsmodi: (i) Burstmodus, wo aktive Berechnungen durchgeführt werden; und (ii) Abschaltmodus (oder Schlafmodus), wo das System schläft, wobei es darauf wartet, dass ein neues berechenbares Ereignis eintritt. Wenn ein Teilsystem (einschließlich Mikroprozessor) nur einen kleinen Anteil der Gesamtsystemleistung verbraucht, dann sollten niedrige Kosten und Hochleistung die Konstruktionsziele für das Teilsystem sein.
  • Verzweigungen sind seit langem als ein Hauptfaktor bei dem vermindern der Leistung einer Pipelinemaschine anerkannt. Dies liegt daran, dass Verzweigungen den kontinuierlichen Fluss des Befehlsstroms unterbrechen. Außerdem können Verzweigungen oft nur tief in der Ausführungspipeline aufgelöst werden. Techniken wie z. B. Verzweigungsvorhersage und spekulative Ausführung werden breit eingesetzt, um den nachteiligen Effekt von Verzweigungen zu verringern. Diese Techniken verlangen leider oft nach hardwareintensiven Implementierungen. Andere alternative preiswerte Ansätze werden benötigt, um die Leistung auf Verzweigungen zu verbessern.
  • Das Dokument JELEMENSKY J ET AL: "THE MC68332 MICROCONTROLLER", IEEE MICRO INC. NEW YORK, Seiten 31–50, XP000049918, ISSN: 0272–1732 offenbart die Kennzeichen der MC688332-Mikroprozessorsteuerung. Seite 38, beginnend bei dem letzten Absatz, beschreibt den Schleifenmodus dieser Mikroprozessorsteuerung. Der DBcc-Befehl bearbeitet drei Operanden: einen Schleifenzähler, eine Verzweigungsbedingung und eine Verzweigungsverschiebung.
  • Verfahren nach dem Stand der Technik, die verwendet werden, um Verzweigungspfade zu optimieren, die von Mikroprozessoren benutzt werden, sind verwendet worden. Ein Verfahren nach dem Stand der Technik des Optimierens der Ausführung von Verzweigungsbefehlen ist als Softwareschleifen abwickeln ("software loop unrolling") bekannt. Softwareschleifenabwickeln tritt in der Kompilierzeit auf, wenn bekannt ist, dass eine besondere Schleife viele Male ausgeführt werden wird. Softwareschleifenabwickeln kopiert den Code in der Schleife und verringert die Zahl der Iterationen durch die Schleife durch einen Faktor der gleich der Anzahl von Malen ist, die der Code kopiert worden ist. Wenn z. B. in der Kompilierzeit bekannt ist, dass eine besondere Softwareschleife 100 mal ausgeführt werden wird, ist es möglich, zwei Kopien des enthaltenen Codes in der abgewickelten Schleife anzuordnen, und die spezifische Verzweigung nur 50 mal auszuführen. Obwohl ein solches Verfahren potentiell Zyklen pro Iteration spart, erzeugt es jedoch eine größere statische Programmgröße.
  • Ein anderes bekanntes Verfahren nach dem Stand der Technik zum Optimieren von Verzweigungen ist die Verwendung eines speziellen Schleifenbefehls gewesen. Spezielle Schleifenbefehle nach dem Stand der Technik waren so konstruiert, dass eine Verzweigung und ein Dekrement (oder Inkrement) des Schleifenzählers in einem einzelnen Befehl auftreten. Als ein Ergebnis wird ein Taktzyklus pro Iteration eingespart. Jeder spezielle Schleifenbefehl benötigt jedoch einen eindeutigen Operationscode. Daher wird er, obwohl die Verwendung spezieller Verzweigungsbefehle einen Taktzyklus pro Iteration einsparen kann, auf Kosten eines größeren Befehlssatzes erreicht.
  • Noch ein anderes Verfahren nach dem Stand der Technik beinhaltet einen Schleifenmodus zusammen mit speziellen Schleifenbefehlen. Der Schleifenmodus ist ein Befehl, der anzeigt, dass der vorherige Befehl eine bestimmte Anzahl von Malen wiederholt werden soll. Solch eine Implementie rung vermeidet, dass der Befehl, der zahlreiche Male in Folge ausgeführt werden muss, abgerufen werden muss. Dieses Verfahren benötigt jedoch die Existenz der speziellen Schleifenbefehle und begrenzt den Schleifenkörper auf einen einzelnen Befehl.
  • Daher ist ein vielseitigeres Verfahren des Verzweigens wünschenswert, das die Zahl der Taktzyklen, die benötigt werden, um Programmschleifen auszuführen, minimiert.
  • Kurze Beschreibung der Zeichnungen
  • 1 stellt das Befehlsformat für kurze Rückwärtsverzweigungs (SBB = "Short Backwards Branch")-Befehle dar.
  • 2 stellt das Befehlsformat für kurze Vorwärtsverzeigungs (SFB = "Short Forwards Branch")-Befehle dar.
  • 3 stellt eine Programmschleife dar, die einen SBB am Ende der Schleife enthält.
  • 4 stellt, in Form eines Blockdiagramms, ein Datenverarbeitungssystem gemäß der vorliegenden Erfindung dar.
  • 5 stellt, in Form eines Blockdiagramms, die CPU 12 von 4 dar.
  • 6 stellt, partiell in Form eines Blockdiagramms und partiell in Form eines Logikdiagramms, die Adressenerzeugungseinheit 30 von 5 ausführlicher dar.
  • 7 stellt, partiell in Form eines Blockdiagramms und partiell in Form eines Logikdiagramms, die Verzweigungssteuerung 34 von 5 ausführlicher dar.
  • 8 stellt ein partielles Statusdiagramm zum Beschreiben des Betriebs einer Statusmaschine der Verzweigungssteuerung 34 dar.
  • 9 stellt ein Timingdiagramm verschiedener Signale des Datenverarbeitungssystems von 4 gemäß der vorliegenden Ausführungsform dar.
  • 10 stellt eine Programmschleife dar, die einen SBB und einen SFB umfasst.
  • 11 stellt, partiell in Form eines Blockdiagramms und partiell in Form eines Logikdiagramms, die Verzweigungssteuerung 34 von 5 für eine alternative Ausführungsform dar.
  • 12 stellt ein Timingdiagramm verschiedener Signale des Datenverarbeitungssystems von 4, die eine alternative Ausführungsform verwendet, gemäß der vorliegenden Ausführungsform dar.
  • Beschreibung einer bevorzugten Ausführungsform
  • 1 stellt das Befehlsformat für kurze Rückwärtsverzweigungsbefehle, als SBB bezeichnet, dar. 2 stellt das Befehlsformat für kurze Vorwärtsverzweigungsbefehle, als SFB bezeichnet, dar. Der SBB und der SFB sind bedingte relative PC-Verzweigungsbefehle oder solche ohne Bedingung. Verschiedene Verzweigungsbefehle (mit verschiedenen Operationscodes) können gemeinsam als SBB-Befehle oder SFB-Befehle definiert werden.
  • Diese Befehle können in zwei Felder aufgeteilt werden: (i) Operationscode, der die Art der Verzweigung spezifiziert; und (ii) Verzweigungsverschiebung – die Verschiebung, die zu dem Programmzähler (PC) hinzugefügt wird, um die Verzweigungszieladresse zu bilden. Für SBB-Befehle hat die Verzweigungsverschiebung führende Einsen, die anzeigen, dass sie eine negative Verzweigungsverschiebung hat, und ein Rückwärtsverzweigungsziel erzeugt, wenn sie zu dem PC hinzugefügt wird. In ähnlicher Weise hat die Verzweigungsverschiebung für SFB-Befehle führende Nullen, die anzeigen, dass sie eine positive Verzweigungsverschiebung hat.
  • Das Verzweigungsverschiebungsfeld kann in zwei Felder weiter aufgeteilt werden: (i) ein oberes Verschiebungsfeld, das als UD bezeichnet wird; und (ii) ein unteres Verschiebungsfeld, das als LD bezeichnet wird. Das obere Verschiebungsfeld sind alle Einsen für den SBB und alle Nullen für den SFB. In einer Ausführungsform sind die Breiten der LD-Felder des SBB und des SFB dieselben, nämlich w Bits breit. Definitionsgemäß hat ein SBB einen begrenzten Rückwärtsverzweigungsabstand, der durch 2w gegeben ist, wo w die Breite des LD-Feldes ist. In ähnlicher Weise hat ein SFB einen begrenzten Vorwärtsverzweigungsabstand, der durch 2w gegeben ist.
  • 3 stellt eine Programmschleife dar, die am Ende der Schleife einen SBB-Befehl enthält. Der SBB-Befehl ist bei der Adresse ASBB angeordnet. Der Befehl, der dem SBB folgt, wird als der Fehlschlagsbefehl (IFT) bezeichnet, der bei der Adresse AFT angeordnet ist. In ähnlicher Weise ist der Befehl, der auf den IFT folgt IFT + 1, der bei der Adresse AFT + 1 angeordnet ist.
  • 4 stellt eine Datenverarbeitung 10 gemäß einer Ausführungsform der vorliegenden Erfindung in Form eines Blockdiagramms dar. In einer Ausführungsform umfasst die Datenverarbeitung 10 eine zentrale Verarbeitungseinheit (CPU) 12, den Speicher 14, das Busschnittstellenmodul 16 und andere Module 18, die bidirektional miteinander durch den Bus 20 gekoppelt sind. Das Busschnittstellenmodul 16 kann durch den externen Bus 26 mit der Datenverarbeitung 10 extern gekoppelt sein. Die anderen Module 18 sind optional durch einen oder mehrere integrierte Schaltkreisanschlüsse 28 mit der Datenverarbeitung 10 extern gekoppelt. Der Speicher 14 ist optional durch einen oder mehrere integrierte Schaltkreisanschlüsse 24 mit der Datenverarbeitung 10 extern gekoppelt. Die zentrale Verarbeitungseinheit 12 ist optional durch einen oder mehrere integrierte Schaltkreisanschlüsse 22 mit der Datenverarbeitung 10 extern gekoppelt.
  • Es wird weiter auf 4 Bezug genommen, darin können alternative Ausführungsformen der vorliegenden Erfindung eine beliebige Art von Struktur für die Datenverarbeitung 10 verwenden. Zusätzlich kann die Datenverarbeitung 10 eine breite Vielfalt von Funktionen durchführen. Die Datenverarbeitung 10 kann z. B. eine RISC ("Reduced Instruction Set Computer" = Computer mit reduziertem Befehlsvorrat)-Architektur verwenden, eine Harvard-Architektur verwenden, ein Vektorprozessor sein, ein SIMD ("Single Instruction Multiple Data" = Einzelbefehl für Mehrfachdaten)-Prozessor sein, Fließkomma-Arithmetik durchführen, digitale Signal verarbeitungsberechnungen durchführen, etc.
  • 5 stellt die CPU 12 gemäß der vorliegenden Erfindung in Form eines Blockdiagramms dar. Die CPU 12 umfasst die Adressenerzeugungseinheit 30, die Steuereinheit 32, das Befehlsregister (IR) 36, den Multiplexer 38, das Fehlschlagsbefehlregister (IRFT) 40, den Befehlsdecodierer 42, die Ausführungseinheit 44, den Dateneingangspuffer 46, und den Datenausgangspuffer 48. Die Steuereinheit 32 umfasst die Verzweigungssteuerung 34.
  • Der Speicher 14 ist mit einem Adressenbus zum Empfangen einer mit "ADRESSE" bezeichneten Adresse und mit einem Datenbus zum Empfangen und Bereitstellen von mit "DATEN" bezeichneten Daten gekoppelt. Der Speicher 14 kann eine beliebige Art eines konventionellen Speichers sein, der flüchtige Speicher, wie z. B. statische Direktzugriffsspeicher (SRAMs) und dynamische Direktzugriffsspeicher (DRAMSs) oder nicht-flüchtige Speicher, wie z. B. elektrisch programmierbare Nur-Lese-Speicher (EPROM) und Flash-Speicher, umfasst. Zusätzlich kann der Speicher 14 auf derselben integrierten Schaltung wie die CPU 12 oder extern zu der CPU 12 angeordnet sein. Die Adressenerzeugungseinheit 30 hat eine erste Mehrzahl von Eingangsanschlüssen zum Empfangen einer als "OPERANDEN ADRESSE" bezeichneten Operandenadresse von der Ausführungseinheit 44, eine zweite Mehrzahl von Eingangsanschlüssen zum Empfangen eines Verzweigungsverschiebungsfeldes aus dem Befehlsregister 36 und eine Mehrzahl von Ausgangsanschlüssen zum Bereitstellen der Adressensignale "ADRESSE" an den Speicher 14. Die Adressenerzeugungseinheit und der Speicher 14 werden durch die Steuereinheit 32 über als "STEUERUNG" bezeichnete Steuersignale gesteuert.
  • Der Multiplexer 38 hat eine erste Mehrzahl von Eingangsanschlüssen zum Empfangen von Befehlen aus dem Dateneingangspuffer 46, eine zweite Mehrzahl von Eingangsanschlüssen, die mit dem Ausgangsanschluss des Fehlschlagsbefehlsregisters (IRFT) 40 gekoppelt sind, und eine Mehrzahl von Ausgangsanschlüssen zum Bereitstellen entweder des Befehls aus dem Dateneingangspuffer 46 oder des in dem Register 40 gespeicherten Fehlschlagsbefehls. Die Verzweigungssteuerung 34 stellt die Steuersignale zum Steuern des Betriebs des Befehlsregisters 36, des Multiplexers 38 und des Fehlschlagsregisters 40 zur Verfügung.
  • Der Dateneingangspuffer 46 empfängt Daten aus dem Speicher 14 und stellt gepufferte Daten an die Ausführungseinheit 44 und/oder Befehle an die erste Mehrzahl von Eingangsanschlüssen des Multiplexers 38 zur Verfügung. Der Datenausgangspuffer 48 empfängt Ausgangsdaten aus der Ausführungseinheit 44 und stellt Daten zur Verfügung, die in den Speicher 14 geschrieben werden sollen. Der Dateneingangspuffer 46 und der Datenaungangspuffer 48 werden durch die Steuersignale gesteuert, die durch die Steuereinheit 32 zur Verfügung gestellt werden.
  • Der Befehlsdecodierer 42 ist mit dem Befehlsregister 36 zum Empfangen eines Befehls gekoppelt. Der Befehlsdecodierer 42 ist mit der Ausführungseinheit 44 gekoppelt. Die Ausführungseinheit 44 ist mit dem Dateneingangspuffer 46 zum Empfangen von Daten aus dem Speicher 14 gekoppelt. In ähnlicher Weise ist die Ausführungseinheit 44 mit dem Datenausgangspuffer 48 zum Bereitstellen von Daten an den Speicher 14 gekoppelt. Die Ausführungseinheit 44 führt selektiv die Befehle aus, die durch den Befehlsdecodierer 42 decodiert werden, und stellt die Ergebnisse dem Datenausgangspuffer 48 oder der Adressenerzeugungseinheit 30 zur Verfügung. Die Ausführungseinheit 44 kann z. B. eine arithmetische Logikeinheit (ALU) umfassen.
  • Die Steuereinheit 32 ist mit dem Befehlsregister 36 zum Empfangen von Befehlen gekoppelt und stellt in Reaktion darauf als "STEUERUNG" bezeichnete Steuersignale zum Steuern des Betriebs der Adressenerzeugungseinheit 30 und des Speichers 14 zur Verfügung. Die Steuereinheit 32 ist mit dem Befehlsdecodierer 42 und der Ausführungseinheit 44 gekoppelt. Die Ausführungseinheit 44 stellt der Steuereinheit 32 Codebedingungsinformationen zur Verfügung.
  • Das Datenverarbeitungssystem 10 verarbeitet Befehle in einer Vierstufenpipeline. Die vier Stufen umfassen eine Abrufstufe, eine Decodierstufe, eine Ausführungsstufe und eine Rückschreibstufe. Während der Befehlsabrufstufe wird ein Befehl aus einem Speicher, wie z. B. aus dem Speicher 14, abgerufen. Der Befehl wird dann in dem Befehlsdecodierer 42 decodiert. Der decodierte Befehl wird der Ausführungseinheit 44 zur Verfügung gestellt und steuert den Betrieb der Ausführungseinheit 44. Die Ausführungseinheit 44 schreibt dann die Ergebnisse der Befehlsausführung über den Datenausgangspuffer 48 an den Speicher 14 zurück.
  • 6 stellt, partiell in Form eines Blockdiagramms und partiell in Form eines Logikdiagramms, die Adressenerzeugungseinheit 30 von 5 ausführlicher dar. Die Adressenerzeugungseinheit 30 umfasst den Adressenmultiplexer 50, das Register 52, den Programmzähler 54, das Zieladressenregister 58, den Addierer 56, das SBB-Register 60, den Multiplexer 62, den Multiplexer 64, den Addierer 66 und den Multiplexer 68. Der Adressenmultiplexer 50 hat eine erste Mehrzahl von Eingangsanschlüssen zum Empfangen einer als "OPERANDEN ADRESSE" bezeichneten Adresse, eine zweite Mehrzahl von Eingangsanschlüssen, die mit den Ausgangsanschlüssen des Addierers 66 gekoppelt sind, eine dritte Mehrzahl von Eingangsanschlüssen, die mit den Ausgangsanschlüssen des Multiplexers 68 gekoppelt sind, und eine Mehrzahl von Ausgangsanschlüssen, die mit den Eingangsanschlüssen der Register 52 gekoppelt sind. Die Register 52 haben eine Mehrzahl von Ausgangsanschlüssen zum Bereitstellen von als "ADRESSE" bezeichneten Adressensignalen an die Eingangsanschlüsse des Programmzählers 54 und an die Eingangsanschlüsse des Registers 58. Der Programmzähler 54 hat eine Mehrzahl von Ausgangsanschlüssen, die mit einer ersten Mehrzahl von Eingangsanschlüssen des Addierers 56 und mit einer ersten Mehrzahl von Eingangsanschlüssen des Multiplexers 62 gekoppelt sind. Der Addierer 56 addiert den Ausgang des Programmzählers 54 zu "2" und stellt das Ergebnis auf den Ausgangsanschlüssen einer zweiten Mehrzahl von Eingangsanschlüssen des Multiplexers 68 und den Eingangsanschlüssen des Registers 60 zur Verfügung. Die "2" wird zu dem Programmzähler 54 addiert, weil die Befehlsbreite gleich zwei Bytes ist. Es ist zu beachten, dass, obwohl in der dargestellten Ausführungsform eine "2" zu dem Programmzählerwert addiert wird, andere Ausführungsformen, die unterschiedliche Befehlsbreiten haben, eine andere Zahl verwenden würden. Die Ausgangsanschlüsse des als "ASBB" bezeichneten Registers 60 sind mit der zweiten Mehrzahl von Eingangsanschlüssen des Multiplexers 62 gekoppelt. Der Multiplexer 64 hat eine erste Mehrzahl von Eingangsanschlüssen zum Empfangen einer Eingabe "4" und eine zweite Mehrzahl von Eingangsanschlüssen, die mit dem Befehlsregister 36 zum Empfangen eines Verzweigungsverschiebungsfeldes eines Befehls gekoppelt sind. Eine "4" wird zu dem ASBB addiert, so dass die AFT + 1 dem Speicher 14 zu Verfügung gestellt werden kann. Die AFT + 1 ist die Adresse für den IFT + 1, der zwei Befehle nach dem SBB angeordnet ist. In anderen Ausführungsformen kann die AFT + 1 durch Verwenden anderer Verfahren erzeugt werden. Der Multiplexer 64 hat eine Mehrzahl von Ausgangsanschlüssen, die mit einer zweiten Mehrzahl von Eingangsanschlüssen des Addierers 66 gekoppelt sind. Die Ausgangsanschlüsse des als "VERZWEIGUNGSADRESSE" bezeichneten Addierers 66 sind mit den Eingangsanschlüssen des Adressenmultiplexers 50 gekoppelt.
  • 7 stellt, partiell in Form eines Blockdiagramms und partiell in Form eines Logikdiagramms, die Verzweigungssteuerung 34 von 5 ausführlicher dar. Die Verzweigungssteuerung 34 umfasst eine Statusmaschine (in dieser Abbildung nicht gezeigt), das LD-Register 70, den Multiplexer 72, das Zähl_register 74, den Addierer 76 und den Komparator 78. Das LD-Register 70 hat eine Mehrzahl von Eingangsanschlüssen zum Empfangen der unteren Verschiebungsbits des Verzweigungsverschiebungsfeldes eines Befehls aus dem Befehlsregister 36 und eine Mehrzahl von Ausgangsanschlüssen, die mit einer ersten Mehrzahl von Eingangsanschlüssen des Multiplexers 72 gekoppelt sind. Der Multiplexer 72 hat außerdem eine zweite Mehrzahl von Eingangsanschlüssen zum Empfangen der unteren Verschiebungsbits aus dem Befehlsregister 36 und eine dritte Mehrzahl von Eingangsanschlüssen, die mit dem Ausgang des Addierers 76 gekoppelt sind. Eine Mehrzahl von Ausgangsanschlüssen des als "ZÄHLUNG" bezeichneten Multiplexers 72 ist mit den Eingangsanschlüssen des Zähl_registers 74 gekoppelt. Die Ausgangsanschlüsse des Zähl_registers 74 sind mit einer ersten Mehrzahl von Eingangsanschlüssen des Addierers 76 gekoppelt. Der Addierer 76 hat eine zweite Mehrzahl von Eingangsanschlüssen zum Empfangen von "1". Die Register 70, 74 und der Multiplexer 72 werden aus der Steuereinheit 32 gesteuert. Der Komparator 78 hat eine erste Mehrzahl von Eingangsanschlüssen, die mit dem Ausgang des Multiplexers 72 und einer zweiten Mehrzahl von Eingangsanschlüssen zum Empfangen von "–1" gekoppelt sind, und einen Ausgang zum Bereitstellen eines durch "VORHERSAGE_GENOMMEN" bezeichneten Schleifenende-Signals an die Steuereinheit 32. In anderen Ausführungsformen können andere Mittel verwendet werden, um das VORHERSAGE_GENOMMEN-Signal zu erzeugen, wie z. B. ein Adressenvergleich.
  • 8 stellt ein vereinfachtes Statusprogramm zum Beschreiben des Betriebs einer Statusmaschine der Verzweigungssteuerung 34 von 5 dar. Die Statusmaschine der Verzweigungssteuerung 34 hat zwei Betriebszustände. Der erste Zustand, der RUHE-Zustand 40, zeigt an, dass eine kurze Rückwärtsverzweigung (SBB) nicht detektiert worden ist. Nach der Detektion eines SBB und für den Fall, dass der SBB genommen wird, verlässt die Statusmaschine der Verzweigungssteuerung 34 den RUHE-Zustand 40 und tritt in den AKTIV-Zustand 42 ein. In einer Ausführungsform, kehrt die Statusmaschine, wenn sie in einem AKTIV-Zustand ist und für den Fall, dass ein anderer SBB detektiert und genommen wird, in den RUHE-Zustand zurück. In einer anderen Ausführungsform verbleibt die Statusmaschine, wenn sie in einem AKTIV-Zustand ist und für den Fall, dass ein anderer SBB detektiert und genommen wird, in dem AKTIV-Zustand. In diesem Falle, werden das LD-Register 70 und die ZÄHLUNG von 7 mit dem LD-Feld des neu angetroffenen SBB neu geladen. Die Statusmaschine kehrt in den RUHE-Zustand zurück, wenn eine der folgenden Bedingungen erfüllt ist: (1) der detektierte SBB-Befehl, der den Übergang aus einem RUHE-Zustand in einen AKTIV-Zustand auslöste wird nicht genommen; oder (2) eine Veränderung des Flusses ist aufgetreten und sie wird nicht durch den auslösenden SBB verursacht. Die Bedingung (1) entspricht dem Fall, wo die Schleife durch den SBB am Ende der Schleife sequentiell existiert. Die Bedingung (2) entspricht dem Fall, wo es eine Veränderung im Fluss in dem Schleifenkörper mit einem Ziel gibt, das in dem Schleifenkörper sein kann oder nicht.
  • 9 stellt ein Timingdiagramm von verschiedenen Signalen des Datenverarbeitungssystems von 4 gemäß der vorliegenden Erfindung dar. Es wird nun auf 1 bis 9 Bezug genommen, hierin wird jetzt der Betrieb des Datenverarbeitungssystems 10 diskutiert.
  • Das Datenverarbeitungssystem 10 führt im Allgemeinen Befehle aus, die sequentiell aus dem Speicher 14 abgerufen werden, bis eine Änderung des Flussbefehls, wie z. B. ein Verzweigungsbefehl angetroffen wird. 9 stellt die Erzeugung der Adressen A0 bis A2 in aufeinanderfolgenden Taktzyklen dar. Außerdem werden Daten, die jeder erzeugten Adresse entsprechen, in jedem nachfolgenden Taktzyklus abgerufen. Zum Beispiel wird der Befehl 10, der der Adresse A0 entspricht, in dem Zyklus 2 aus dem Speicher abgerufen, der Befehl 11 in dem Zyklus 3, nach der Erzeugung der Adresse A1, abgerufen, und so weiter. In dem Taktzyklus 4 wird eine Adresse, die dem SBB-Befehl entspricht, namentlich ASBB, an den Speicher 14 ausgegeben. Der SBB-Befehl wird in dem Taktzyklus 6 detektiert. In Reaktion darauf, dass der SBB-Befehl detektiert wird, wird die Zieladresse, die Adresse A0, in das Register 58 geladen. Zur selben Zeit wird ein Fehlschlagsbefehl IFT in das IRFT-Register 40 geladen. Der IFT-Befehl ist der Befehl, der in der statischen Programmordnung unmittelbar einem SBB-Befehl folgt.
  • Ein halber Taktzyklus nachdem jede Adresse dem Speicher 14 zum Abrufen von Befehlen zur Verfügung gestellt worden ist, wird die Adresse in dem Programmzähler 54, wie in 9 dargestellt, verriegelt. Es ist zu beachten, dass die Taktzyklen 3 bis 7 eine erste Iteration definieren. Die SBB-Detektion tritt in der Decodierstufe auf. Wenn vorgesehen ist, dass der SBB einen Zyklus später genommen werden soll, geht die Statusmaschine der Steuereinheit 32 aus einem RUHE-Zustand in einen AKTIV-Zustand über. Außerdem wird, wenn der SBB detektiert wird, das untere Verschiebungsfeld LD, aus dem Befehlsregister 36 in das LD-Register 70 geladen (7). Für jeden nachfolgenden Befehl, der ausgeführt wird, wird der ZÄHL- oder Schleifenwert von 4 durch 1 inkrementiert. Ein Schleifenende-Signal VORHERSAGE_GENOMMEN (7) wird der Steuereinheit 32 aus dem Komparator 78 zur Verfügung gestellt. VORHERSAGE_GENOMMEN wird behauptet, wenn die ZÄHLUNG von 7 –1 erreicht.
  • Die zweite Iteration der Schleife fährt fort, bis die ZÄHLUNG in dem Taktzyklus 9 einen Wert von –1 erreicht. In dem Taktzyklus 9 wird eine Vorhersage gemacht, wann das VORHERSAGE_GENOMMEN-Signal an die Steuereinheit 32 behauptet wird, was darin resultiert, dass die Zieladresse A0 aus dem Zieladressen-Register 58 auf dem Adressenbus zu dem Speicher 14 geladen wird.
  • Außerdem enthält der Programmzähler 54, in dem Taktzyklus 9, die Adresse A2. Diese Adresse wird durch Verwenden des Addierers 56 durch 2 inkrementiert, was ein Ergebnis von ASBB erzeugt. Diese resultierende Adresse wird dann in das SBB-Adressenregister 60 geladen. Der Programmfluss fährt durch die dritte Iteration fort, bis zu dem Zyklus 12, wo eine andere Vorhersage gemacht wird. Die Adresse A0 wird wieder aus dem Zieladressenregister 58 genommen und dem Speicher 14 zur Verfügung gestellt. Am Ende des Taktzyklus 14, wie in diesem Beispiel gezeigt, wird bestimmt, dass die Verzweigung falsch vorhergesagt ist. Eine Verzweigung wird durch den Wert des Bedingungscodes und der Art der Verzweigung bestimmt, falsch vorhergesagt zu sein. Der Befehl I0 ist bereits verriegelt und decodiert worden, wenn in dem Zyklus 14 eine falsche Vorhersage identifiziert wird. Die Adresse, die vorher in das Adressenregister 60 geladen wurde, wird durch 4 inkrementiert, wodurch ein Ergebnis von AFT + 1 erzeugt wird. Diese resultierende Adresse wird dann auf dem Adressenbus zu dem Speicher 14 geladen. Dies bewirkt, dass der Befehlsabruf aus der AFT + 1 initiiert, wodurch verhindert wird, dass eine Ausführungsblase auftritt. Die Wiederherstellung beginnt in dem Taktzyklus, der der falschen Vorhersage folgt, und an diesem Punkt ist der Befehl I0 in der Ausführungsstufe. Die Ausführung von I0 wird beendet. Nach der Beendigung des Befehls I0 wird, in Reaktion auf die falsche Vorhersage, der Befehl IFT aus dem IRFT 40 in das Befehlsregister 36 geladen. Die Befehlsausführung wird dann mit dem IFT fortgesetzt. Die falsche Vorhersage bewirkt außerdem, dass die Statusmaschine von 8 aus dem AKTIV- zu dem RUHE-Zustand übergeht.
  • Durch gleichzeitiges Bereitstellen des IFT an das Befehlsregister 36 und Ausgeben der Adresse AFT + 1 in dem selben Zyklus wie der Wiederherstellungszyklus, d. h. Zyklus 15, wird ein Falschvorhersagungs-Null-Strafzyklus erreicht. Es ist außerdem zu beachten, dass die erste Iteration der in 9 gezeigten Schleife fünf Zyklen durchläuft. Die zweite Iteration mit richtiger Vorhersage durchläuft nur drei Zyklen, das sind zwei weniger als die, die sie normalerweise ohne Faltverzweigungen durchläuft. Die dritte Iteration mit falscher Vorhersage durchläuft vier Zyklen (wobei der Wiederherstellungszyklus nicht umfasst wird, weil der IFT in diesem Zyklus decodiert wird).
  • In der oben beschriebenen Ausführungsform verlässt die Statusmaschine den AKTIV-Zustand, wenn sie in einem AKTIV-Zustand ist und für den Fall, dass es eine Veränderung des Flusses gibt, die nicht durch den SBB verursacht wird, die den Übergang aus dem RUHE- zu dem AKTIV-Zustand auslöste, und sich das Ziel der Veränderung des Flusses in dem Schleifenkörper befindet. Dies tritt trotz der Tatsache ein, dass das Ziel der Veränderung des Flusses noch in dem Schleifenkörper sein kann. Um solche Einschränkungen zu überwinden, stellt die nachfolgende Ausführungsform ein verbessertes Verzweigungsfaltverfahren zur Verfügung.
  • 10 stellt eine Programmschleife dar, die einen SBB am Ende der Schleife umfasst. Sie umfasst außerdem einen SFB in dem Schleifenkörper, der bei A1 angeordnet ist. Das Ziel des SFB ist A4, und der Vorwärtsverzweigungsabstand ist +3. 10 wird in Verbindung mit 12 verwendet, um einen verbesserten Verzweigungsfaltbetrieb zu beschreiben.
  • 11 stellt, partiell in Form eines Blockdiagramms und partiell in Form eines Logikdiagramms, die Verzweigungssteuerung 34 von 5 ausführlicher dar. Die Verzweigungssteuerung 34 umfasst eine Statusmaschine (in dieser Abbildung nicht gezeigt), das LD-Register 94, den Multiplexer 90, das Zähl_register 82, den Addierer 80, den Komparator 98, den Nicht-Negativ-Detektor 100, das korrigierte_Zählungsregister 92 und den Addierer 96. Das Register 94 hat eine Mehrzahl von Eingangsanschlüssen zum Empfangen der unteren Verschiebungsbits des Verzweigungsverschiebungsfeldes eines Befehls aus dem Befehlsregister 36 und eine Mehrzahl von Ausgangsanschlüssen, die mit einer ersten Mehrzahl von Eingangsanschlüssen des Multiplexers 90 gekoppelt sind. Der Multiplexer 90 hat außerdem eine zweite Mehrzahl von Eingangssignalen zum Empfangen der unteren Verschiebungsbits aus dem Befehlsregister 36, eine dritte Mehrzahl von Eingangsanschlüssen, die mit dem Ausgang des Addierers 80 gekoppelt sind, und eine vierte Mehrzahl von Eingangsanschlüssen, die mit dem Ausgang des korrigierten_Zählungsregisters 92 gekoppelt sind. Eine Mehrzahl von als "ZÄHLUNG" bezeichneten Ausgangsanschlüssen des Multiplexers 90 ist mit den Eingangsanschlüssen des Zähl_registers 82 gekoppelt.
  • Die Ausgangsanschlüsse des Zähl_registers 82 sind mit einer ersten Mehrzahl von Eingangsanschlüssen des Addierers 80 gekoppelt. Der Addierer 80 hat eine zweite Mehrzahl von Eingangsanschlüssen zum Empfangen von "1". Die LD-Register 94, das Zähl_register 82, das korrigierte_Zähl_register 92 und der Multiplexer 90 werden aus der Steuereinheit 32 gesteuert. Der Komparator 98 hat eine erste Mehrzahl von als "ZÄHLUNG" bezeichneten Eingangsanschlüssen, die mit dem Ausgang des Multiplexers 90 gekoppelt sind, und eine zweite Mehrzahl von Eingangsanschlüssen zum Empfangen von "–1" und einen Ausgang zum Bereitstellen eines durch "VORHERSAGE_GENOMMEN" bezeichneten Schleifenende-Signals an die Steuereinheit 32. Der Nicht-Negativ-Detektor 100 hat eine Mehrzahl von Eingangsanschlüssen, die mit dem Ausgang des Multiplexers 90 gekoppelt sind, und einen Ausgang zum Bereitstellen eines durch "ANNULLIEREN" bezeichneten Signals an die Steuereinheit 32. Das korrigierte_Zähl_register 92 hat eine Mehrzahl von Eingangsanschlüssen, die mit dem Ausgang des Addierers 96 gekoppelt sind. Das Zähl_register 82 hat eine Mehrzahl von durch "LATCH-CNT" bezeichneten Ausgangsanschlüssen, die mit der zweiten Mehrzahl von Eingangsanschlüssen des Addierers 96 gekoppelt sind. In anderen Ausführungsformen können andere Mittel verwendet wer den, um das "VORHERSAGE_GENOMMEN"-Signal zu erzeugen, wie z. B. ein Adressenvergleich.
  • 12 stellt ein Timingdiagramm von verschiedenen Signalen des Datenverarbeitungssystems von 4 gemäß dem verbesserten Betrieb dar. Es wird nun auf 10 bis 12 Bezug genommen, darin wird der Betrieb des Datenverarbeitungssystems 10 nun für das verbesserte Schema diskutiert.
  • Während der Ausführung der ersten Iteration wird ein bei der Adresse ASBB angeordneter SBB detektiert (in dem Zyklus 2). Sein unteres Verschiebungsfeld wird in die ZÄHLUNG von 11 geladen. Der SBB ist dafür vorgesehen, in dem folgenden Zyklus genommen zu werden. In dem selben Zyklus (Zyklus 3) tritt die Statusmaschine in den AKTIV-Zustand ein. Die Ausführung fährt von I0 aus fort. In dem Zyklus 5 wird ein SFB detektiert. Während dieses Zyklus ist die ZÄHLUNG –4 und der LATCH_CNT –5. Das untere Verschiebungsfeld des SFB, welches +3 ist, wird zu dem LATCH_CNT addiert. Gegen Ende der zweiten Iteration wird eine Vorhersage für den SBB gemacht (in dem Zyklus 7). Die ZÄHLUNG wird mit –6 aus dem LD-Register 94 neu geladen. Da richtig vorhergesagt wird, dass der SBB genommen werden soll, fährt die Ausführung von I0 aus fort. In dem Zyklus 10 wird derselbe SFB erneut detektiert. In diesem Beispiel ist vorgesehen, dass der SFB in dem Zyklus 11 nicht genommen wird. Als ein Ergebnis wählt der Multiplexer 90 immer noch aus, um seinen Eingang aus dem Ausgang des Addierers 80 anstatt aus dem Ausgang des korrigierten_Zähl_registers 92 zu versorgen. Somit fährt die ZÄHLUNG fort, für jeden ausgeführten Befehl durch 1 zu inkrementieren. In dem Zyklus 13, wo die ZÄHLUNG –1 erreicht, wird eine andere Vorhersage für den SBB gemacht. Die Ausführung fährt fort wie zuvor beschrieben.
  • Im Allgemeinen erlaubt die vorliegende Erfindung ein Verzweigungsfalten ohne Abrufen des Verzweigungsbefehls. Für ein Einzelausgabe-Vierstufenpipeline-Datenverarbeitungssystem ist die Zahl der eingesparten Zyklen Null, wenn die Zahl der Iterationen zwei oder weniger ist. Für drei Iterationen ist die Zahl der eingesparten Zyklen zwei, für vier Iterationen ist die Zahl der eingesparten Zyklen vier und für fünf Iterationen ist die Zahl der eingesparten Zyklen sechs. Die Zahl der eingesparten Zyklen kann als 2m – 4 ausgedrückt werden, wo m gleich die Zahl der Iterationen ist. Außerdem gibt es, wenn die Vorhersage "falsch vorhergesagt" ist, keinen Strafzyklus wie im Falle der Verzweigungsvorhersagetechnik nach dem Stand der Technik.
  • Die Zahl der eingesparten Zyklen wird mit einer minimalen zusätzlichen Hardware erreicht. Außerdem wird Energie gespart und die Leistung verbessert, weil der Verzweigungsbefehl und der Fehlschlagsbefehl nach der ersten Iteration nicht abgerufen, decodiert und ausgeführt werden.
  • Obwohl die Erfindung in dem Kontext spezifischer Ausführungsformen beschrieben worden ist, ist dem Fachmann auf dem Gebiet klar, dass die vorliegende Erfindung auf verschiedenen Wegen modifiziert werden kann, und ihm werden viele andere Ausführungsformen als die oben im Besonderen beschriebene, in den Sinn kommen. Zum Beispiel kann der Zähl- oder Schleifenwert, der in dem Zähl_register gespeichert wird, tatsächlich ein Adressenwert sein, der inkrementiert und mit einem zweiten Adressenwert verglichen wird. Entsprechend sollen die angehängten Ansprüche alle Modifikationen der Erfindung abdecken, die in den wahren Bereich der Erfindung fallen.

Claims (7)

  1. Verfahren zum Steuern eines Datenverarbeitungssystems, das folgendes umfasst: Abrufen eines Rückwärtsverzweigungsbefehls, der bei einer Verzweigungsadresse angeordnet ist, wobei der Rückwärtsverzweigungsbefehl einen Offset-Wert hat, wobei der Rückwärtsverzweigungsbefehl dem Durchführen einer Verzweigung zu einer Zieladresse rückwärts im Speicher dient, um eine Programmschleife zu definieren; Abrufen und Speichern eines nächsten Befehls nach dem Rückwärtsverzweigungsbefehl; Einstellen eines Zählerwertes basierend auf dem Rückwärtsverzweigungsbefehl; Abrufen eines Zielbefehls bei der Zieladresse, wobei die Zieladresse auf dem Offset-Wert basiert; Inkrementieren des Zählerwertes für jeden nachfolgend ausgeführten Befehl; Bestimmen, ob der Zählerwert eine vordefinierte Bedingung erfüllt und wenn der Zähler die vordefinierte Bedingung erfüllt: Abrufen eines nachfolgenden Befehls bei einer nachfolgenden Adresse, wobei die nachfolgende Adresse die Zieladresse ist; und Zurücksetzen des Zählers basierend auf dem Offset-Wert; und wenn der Zähler die vordefinierte Bedingung nicht erfüllt: Abrufen des nachfolgenden Befehls bei der nachfolgenden Adresse, wobei die nachfolgende Adresse eine nächste Befehlsadresse in einer Programmsequenz ist; Wiederholen des Schrittes des Abrufens des Zielbefehls und Bestimmen, ob der Zähler die vordefinierte Bedingung erfüllt, bis der Programmfluss aus der Programmschleife heraus geführt wird.
  2. Verfahren gemäß Anspruch 1, wobei: der Schritt des Einstellens eines Zählers umfasst, dass der Zähler ursprünglich auf dem Offset-Wert basiert und der Zählerwert einmal für jeden angetroffenen Befehl modifiziert wird; und der Schritt des Bestimmens umfasst, dass die vordefinierte Bedingung erfüllt wird, wenn ein vordefinierter Wert erfolgreich mit dem Zählerwert verglichen wird.
  3. Verfahren gemäß Anspruch 1, wobei: der Schritt des Einstellens eines Zählers das Speichern einer Adresse basierend auf dem Rückwärtsverzweigungsbefehl umfasst; und der Schritt des Bestimmens das Bestimmen der vordefinierten Bedingung umfasst, die zu erfüllen ist, wenn der Zähler gleich einer spezifizierten Adresse ist.
  4. Verfahren gemäß Anspruch 1, wobei der Rückwärtsverzweigungsbefehl bedingt ist.
  5. Verfahren gemäß Anspruch 1, wobei der Rückwärtsverzweigungsbefehl ohne Bedingung ist.
  6. Verfahren gemäß Anspruch 1, wobei der Schritt des Einstellens eines Zählers umfasst, dass der Zähler so eingestellt wird, dass er gleich dem Offset-Wert ist.
  7. Verfahren gemäß Anspruch 1, wobei der Schritt des Modifizierens des Zählers, um einen modifizierten Zähler zu erhalten, das Addieren einer Konstante zu dem Zähler umfasst.
DE69919081T 1998-06-19 1999-06-04 Datenprozessor mit Verzweigungssteuerung und -verfahren Expired - Fee Related DE69919081T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US100669 1998-06-19
US09/100,669 US6401196B1 (en) 1998-06-19 1998-06-19 Data processor system having branch control and method thereof

Publications (2)

Publication Number Publication Date
DE69919081D1 DE69919081D1 (de) 2004-09-09
DE69919081T2 true DE69919081T2 (de) 2005-01-27

Family

ID=22280928

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69919081T Expired - Fee Related DE69919081T2 (de) 1998-06-19 1999-06-04 Datenprozessor mit Verzweigungssteuerung und -verfahren

Country Status (7)

Country Link
US (1) US6401196B1 (de)
EP (1) EP0965910B1 (de)
JP (1) JP2000029700A (de)
KR (1) KR100597328B1 (de)
CN (1) CN1189816C (de)
DE (1) DE69919081T2 (de)
TW (1) TW442753B (de)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3470948B2 (ja) * 1999-01-28 2003-11-25 インターナショナル・ビジネス・マシーンズ・コーポレーション 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ
DE50004566D1 (de) * 1999-03-17 2004-01-08 Infineon Technologies Ag Cachen kurzer programmschleifen innerhalb eines instruktions-fifos
US6539541B1 (en) * 1999-08-20 2003-03-25 Intel Corporation Method of constructing and unrolling speculatively counted loops
US6604163B1 (en) * 2000-05-16 2003-08-05 Koninklijke Philips Electronics N.V. Interconnection of digital signal processor with program memory and external devices using a shared bus interface
EP1369774A1 (de) * 2002-06-06 2003-12-10 CSEM Centre Suisse d'Electronique et de Microtechnique SA Recherche et Développement Vorrichtung zur Auswertung von Adressen für einen digitalen Signalprozessor
US20040003210A1 (en) * 2002-06-27 2004-01-01 International Business Machines Corporation Method, system, and computer program product to generate test instruction streams while guaranteeing loop termination
US7130963B2 (en) * 2003-07-16 2006-10-31 International Business Machines Corp. System and method for instruction memory storage and processing based on backwards branch control information
WO2005093562A1 (ja) * 2004-03-29 2005-10-06 Kyoto University データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体
US7269710B1 (en) 2004-07-23 2007-09-11 Zilog, Inc. Program memory space expansion for particular processor instructions
US7415599B1 (en) * 2005-11-01 2008-08-19 Zilog, Inc. Instruction operation and operand memory location determined based on preceding instruction operation and operand memory location
US7475231B2 (en) * 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
TW200723094A (en) * 2005-12-01 2007-06-16 Ind Tech Res Inst Dynamic branch prediction system and method
US20080040591A1 (en) * 2006-08-11 2008-02-14 Moyer William C Method for determining branch target buffer (btb) allocation for branch instructions
US20080040590A1 (en) * 2006-08-11 2008-02-14 Lea Hwang Lee Selective branch target buffer (btb) allocaiton
US8145888B2 (en) * 2006-09-06 2012-03-27 Silicon Hive B.V. Data processing circuit with a plurality of instruction modes, method of operating such a data circuit and scheduling method for such a data circuit
US20090182984A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Execute Relative Long Facility and Instructions Therefore
CN102369941B (zh) * 2010-08-20 2014-04-23 海利尔药业集团股份有限公司 一种含有联苯肼酯和溴虫腈的杀虫杀螨组合物
US9703559B2 (en) * 2011-11-09 2017-07-11 Nec Corporation Digital signal processor, program control method, and control program
US20120185714A1 (en) * 2011-12-15 2012-07-19 Jaewoong Chung Method, apparatus, and system for energy efficiency and energy conservation including code recirculation techniques
US9436473B2 (en) * 2013-10-08 2016-09-06 Arm Limited Scheduling program instructions with a runner-up execution position
CN107580700B (zh) * 2015-09-29 2020-10-09 华为技术有限公司 一种生成地址的方法及数据处理设备
US10846097B2 (en) * 2018-12-20 2020-11-24 Samsung Electronics Co., Ltd. Mispredict recovery apparatus and method for branch and fetch pipelines
CN112988233B (zh) * 2021-02-06 2024-03-26 江南大学 一种面向分支指令预测的偏差矫正器及方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3573854A (en) * 1968-12-04 1971-04-06 Texas Instruments Inc Look-ahead control for operation of program loops
US4566063A (en) * 1983-10-17 1986-01-21 Motorola, Inc. Data processor which can repeat the execution of instruction loops with minimal instruction fetches
US4755966A (en) * 1985-06-28 1988-07-05 Hewlett-Packard Company Bidirectional branch prediction and optimization
EP0374419A3 (de) * 1988-12-21 1991-04-10 International Business Machines Corporation Verfahren und Anordnung zur wirkungsvollen Errichtung von Schleifen in Hardware und Mikrokodierung
US5778423A (en) * 1990-06-29 1998-07-07 Digital Equipment Corporation Prefetch instruction for improving performance in reduced instruction set processor
US5920713A (en) * 1995-10-06 1999-07-06 Advanced Micro Devices, Inc. Instruction decoder including two-way emulation code branching
US5893142A (en) * 1996-11-14 1999-04-06 Motorola Inc. Data processing system having a cache and method therefor

Also Published As

Publication number Publication date
TW442753B (en) 2001-06-23
EP0965910A3 (de) 2000-05-24
US6401196B1 (en) 2002-06-04
CN1240279A (zh) 2000-01-05
EP0965910B1 (de) 2004-08-04
KR100597328B1 (ko) 2006-07-10
CN1189816C (zh) 2005-02-16
JP2000029700A (ja) 2000-01-28
DE69919081D1 (de) 2004-09-09
KR20000006302A (ko) 2000-01-25
EP0965910A2 (de) 1999-12-22

Similar Documents

Publication Publication Date Title
DE69919081T2 (de) Datenprozessor mit Verzweigungssteuerung und -verfahren
DE102018005181B4 (de) Prozessor für einen konfigurierbaren, räumlichen beschleuniger mit leistungs-, richtigkeits- und energiereduktionsmerkmalen
DE69933088T2 (de) Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten
DE102020120019A1 (de) Proaktive di/dt-spannungs-dachabfall-abschwächung
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE2542740C2 (de) Datenverarbeitungsanlage mit einer Mikroprogrammsteuerung
DE102020122528A1 (de) Softwareunterstütztes Leistungsmanagement
DE69916962T2 (de) Datenverarbeitungssystem mit bedingter Ausführung von erweiterten Verbundbefehlen
DE3486085T2 (de) Zentrale Verarbeitungseinheit für einen Digitalrechner.
DE102018126650A1 (de) Einrichtung, verfahren und systeme für datenspeicherkonsistenz in einem konfigurierbaren räumlichen beschleuniger
DE69925410T2 (de) Erweiterung des Befehlssatzes unter Verwendung von Präfixcode
DE102018005172A1 (de) Prozessoren, verfahren und systeme mit einem konfigurierbaren räumlichen beschleuniger
DE3685913T2 (de) Vektorenverarbeitung.
DE112013005188B4 (de) Prozessor und vefrahren zur vektorisierung von zusammengeführten, mehrfach geschachtelten schleifen
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE102015002383A1 (de) Verfahren und Vorrichtung zum Implementieren einer dynamischen Out-of-order-Prozessorpipeline
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE68927783T2 (de) Mikroprozessor mit äusserem steuerungsspeicher
DE102014011332A1 (de) Priorisieren von anweisungen basierend auf typ
DE112013005338T5 (de) Vorrichtung und Verfahren für Beschleunigeraufruf mit geringer Latenz
DE4207148A1 (de) Superscalar-prozessor
DE112011103211T5 (de) Auf einem Halbleiterchip implementierte vektorlogische Reduktionsoperation
DE102014003659A1 (de) Systeme, vorrichtungen und verfahren zum bestimmen eines folgenden niedrigstwertigen maskierungsbits eines schreibmaskenregisters
DE69824032T2 (de) Computer-prozessor und verfahren zum kontinuierlichen schreiben und lesen von daten
DE102018125971A1 (de) Systeme und verfahren zum berechnen von skalaprodukten von halbbytes in operanden aus zwei kacheln

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: FREESCALE SEMICONDUCTOR, INC., AUSTIN, TEX., US

8339 Ceased/non-payment of the annual fee