DE102005050382B4 - Prozessor zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls - Google Patents

Prozessor zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls Download PDF

Info

Publication number
DE102005050382B4
DE102005050382B4 DE102005050382A DE102005050382A DE102005050382B4 DE 102005050382 B4 DE102005050382 B4 DE 102005050382B4 DE 102005050382 A DE102005050382 A DE 102005050382A DE 102005050382 A DE102005050382 A DE 102005050382A DE 102005050382 B4 DE102005050382 B4 DE 102005050382B4
Authority
DE
Germany
Prior art keywords
condition
register
tested
processor
subcondition
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
DE102005050382A
Other languages
English (en)
Other versions
DE102005050382A1 (de
Inventor
Xiaoning Nie
Jinan Lin
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102005050382A priority Critical patent/DE102005050382B4/de
Priority to US11/584,810 priority patent/US20070101109A1/en
Publication of DE102005050382A1 publication Critical patent/DE102005050382A1/de
Application granted granted Critical
Publication of DE102005050382B4 publication Critical patent/DE102005050382B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Prozessor (1) zur bedingten Ausführung von Programmbefehlen mit einer Prüfvorrichtung (2) zur Prüfung einer komplexen Bedingung (c), die als eine logische Verknüpfung einer Mehrzahl von Einzelbedingungen (F; c1, c2, c3) ausgebildet ist, wobei eine geprüfte Bedingung (c) angibt, ob eine oder mehrere Operationen eines von dem Prozessor (1) geladenen und durch eine Befehlsdekodiereinheit (6) des Prozessors (1) dekodierten Programmbefehls ausgeführt werden sollen, wobei die Prüfvorrichtung (2) aufweist: – eine Steuervorrichtung (3), welche die komplexe Bedingung (c) oder eine erste Teilbedingung (C) der komplexen Bedingung (c) in einem vorbestimmten i-ten Taktzyklus des Prozessors (1) in Abhängigkeit von einer in einem vorhergehenden (i – 1)-ten Taktzyklus geprüften, ersten Teilbedingung (C) und einer in einer vor dem (i – 1)-ten Taktzyklus liegenden dritten (i – 2)-ten Taktzyklus geprüften, zweiten Teilbedingung (S) und einer Einzelbedingung (F; c1, c2, c3) prüft; – ein erstes Register (4), das eingangsseitig mit der Steuervorrichtung (3) zur...

Description

  • Die Erfindung betrifft einen Prozessor zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls.
  • Das technische Gebiet der Erfindung betrifft die bedingte Ausführung von Programmbefehlen durch einen Prozessor, insbesondere durch einen Prozessor mit einer Pipeline-Architektur.
  • Eine bedingte Ausführung des entsprechenden Programmbefehls durch den Prozessor ist abhängig von einer vorbestimmten Bedingung, beispielsweise einem Zustand des Prozessors. Ein bekanntes Beispiel dafür sind bedingte Sprünge, sogenannte „branches”, bei welchen die Steuerung des Befehlsflusses in Abhängigkeit eines vorbestimmten Status des Prozesses geändert wird. Allerdings existieren auch neben den Sprungbefehlen Programmbefehle oder Instruktionen, die in Abhängigkeit einer vorgegebenen Bedingung auszuführen sind, beispielsweise wenn die Ausführung des entsprechenden Programmbefehls von einem vorbestimmten Prozessorzustand abhängig ist.
  • Solche bedingt auszuführende Instruktionen werden für gewöhnlich bezeichnete Instruktionen („predicated instructions”) genannt. Solche bezeichneten Instruktionen haben eine herausragende Bedeutung für solche Prozessoren, die eine parallele Architektur aufweisen. Beispiele für solche parallele Prozessorarchitekturen sind die Very-Long-Instruction-Word(VLIW)-Architektur oder die Single-Instruction-Multiple-Data(SIMD)-Architektur. Beide Architekturen besitzen eine Mehrzahl funktionaler Einheiten, die simultan oder zeitgleich arbeiten. Sowohl die VLIW-Architektur als auch die SIMD-Architektur nutzen Instruktions- und Datenunabhängigkeiten aus, um ihre Leistungsfähigkeit zu erhöhen. Dieses Ausnutzen wird behindert oder verhindert, falls einige bedingte Steuerfunktionen oder Bedingungen bei einer Mehrzahl der unabhängigen Operationen oder Daten benutzt werden. Aus dem Artikel „A Quantitative Approach” der Autoren J. L. Hennessy and D. A. Patterson, erschienen in Elservier Science, 2003, wird ein Verfahren vorgeschlagen, bei dem dieses Problem durch parallelisierte oder vektorisierte, bedingte Bezeichnungen umgangen werden kann. Bei diesem Verfahren wird jede elementare Operation oder Instruktion und jedes elementare Datum mit einer eigenen bedingten Bezeichnung versehen, welche über die Ausführung entscheidet.
  • Ein Problem bei der bedingten Ausführung von Programmbefehlen besteht allerdings bei komplexen, aus einer logischen Verknüpfung einer Vielzahl von Einzelbedingungen bestehenden Bedingungen. Mit steigender Anforderungen an Prozessoren, beispielsweise bei der Bildverarbeitung, steigt auch die Komplexität der Bedingungen für die bedingte Ausführung einzelner Programmbefehle für die Verarbeitung der Bildinformationen. Unten stehender Quellcode 1 zeigt eine komplexe Bedingung, die aus den Einzelbedingungen a–f ausgebildet ist:
  • Quellcode 1:
    • If((a>b)&&(c==d)||(e!=f)...)
  • Ein weiteres Beispiel einer komplexen Bedingung zeigt die unten stehende verschachtelte Bedingung (Quellcode 2), die aus If-Then-Schleifen und If-Then-Else-Schleifen besteht:
  • Quellcode 2:
    Figure 00030001
  • Prinzipiell kann jede komplexe Bedingung als eine Abfolge einer Vielzahl von Einzelbedingungen dargestellt werden. Beispielsweise können beide oben stehende Quellcodes mittels einer Abfolge von Sprüngen oder Sprungbefehlen einfacher Einzelbedingungen realisiert werden. Allerdings generiert dies einen deutlichen Mehraufwand, da eine deutlich größere Zahl von Einzelbedingungen zur Darstellung der komplexen Bedingungen geprüft werden müssen. Dadurch vermindert sich die Leistungsfähigkeit des eingesetzten Prozessors erheblich. Ferner steigt der Speicherplatzbedarf aufgrund der gesteigerten Zahl an Einzelbefehlen und der gesteigerten Zahl an Sprungbefehlen sowie deren Latenzzeiten, sogenannte „delay penalties”, deutlich an.
  • Insgesamt sind drei verschiedene Ansätze bekannt, eine bedingte Ausführung von Programmbefehlen zu implementieren: der Composite-Instruction-Ansatz, der Condition-Register-Ansatz und der Condition-Code-Ansatz.
  • Der Composite-Instruction-Ansatz, welcher der Anmelderin intern bekannt ist, kombiniert ein Testen der Bedingung und die bedingte Ausführung innerhalb eines einzigen Programmbefehls oder einer einzigen Instruktion. Allerdings führt die Integration des Testens der Bedingung in einer einzigen Instruktion zu einer Vergrößerung des Wortes des Programmbefehls und damit zu einer Erhöhung des benötigten Speicherplatzbedarfes. Ferner hat der verwendete Prozessor ein Programmbefehlswort mit einer größeren Breite zu verarbeiten. Dies vermindert weiter die Leistungsfähigkeit des Prozessors.
  • Der Condition-Register-Ansatz benützt eigens vorgesehene Instruktionen, die den Zustand des Prozessors prüfen und eine Bedingungs-Bezeichnung für einen oder mehrere Programmbefehle generieren. Ein solcher Condition-Register-Ansatz ist beispielsweise aus dem Datenblatt „MIPS32 4KcTM Prozessor Core Datasheet”, das zum Anmeldetag der vorliegenden Patentanmeldung auf der Internetseite www.mips.com veröffentlicht ist, und aus der Druckschrift US 20040064683 A1 bekannt. Ein Nachteil des Condition-Register-Ansatzes besteht darin, dass zusätzlich Instruktionen für die Generierung der Bezeichnungen, der sogenannten „Predicates”, für die bedingte Ausführung verwendet werden. Die zusätzlichen Instruktionen bedingen zusätzliche Programmbefehle in der Pipeline des Prozessors, einen erhöhten Speicherplatzbedarf für diese und für die Bezeichnungen sowie einen erhöhten Bedarf an Taktzyklen für deren Ausführung.
  • Der Condition-Code-Ansatz benutzt bereits vorhandene Hardware des Prozessors, wie beispielsweise das Statusregister, um eine Bedingung des Prozessorzustandes, die für die bedingte Ausführung des jeweiligen Programmbefehls benutzt wird, zu indizieren. Ein besonderer Vorteil des Condition-Code-Ansatzes besteht darin, dass das Setzen oder Prüfen der Bedingung nicht die Pipeline des Prozessors belastet und somit keine zusätzlichen Programmbefehle oder Taktzyklen eingesetzt werden müssen. Außerdem müssen die Programmbefehle des eingesetzten Prozessors nicht um ein oder mehrere zusätzliche Bits wie in den oben genannten Ansätzen für die bedingte Ausführung des Programmbefehls ergänzt werden. Ein Beispiel für den Condition-Code-Ansatz ist in der Druckschrift US 6,760,831 A beschrieben. Die Druckschrift US 6,760,831 A beschreibt eine bedingte Ausführung in einem VLIW-Prozessor, bei dem die aktuelle Bedingung in Abhängigkeit der aktuellen Flags des Prozessors, zwischengespeicherter Flags des Prozessor und einer einzigen und bereits geprüften, gespeicherten Bedingung geprüft und gesetzt wird.
  • Unabhängig von den Flags des Prozessors wird die aktuelle Bedingung abhängig von einer einzigen, vorher geprüften und gespeicherten Bedingung geprüft und gesetzt. Damit sind allerdings komplexe Bedingungen, die aus einer Mehrzahl von Einzelbedingungen ausgebildet und insbesondere geschachtelt sind, nicht überprüfbar.
  • Die Druckschrift DE 692 30 057 T2 offenbart eine Mikroprozessorarchitektur mit mehreren Registersätzen unterschiedlicher Typen, bei der für jede Einzelbedingung und jede Teilbedingung einer komplexen Bedingung ein eigenes Boolesches Register ausgestaltet ist.
  • Die Druckschrift WO 2004/109499 A2 offenbart die Verwendung einer explizit bezeichneten Anweisung für ein Datenverarbeitungssystem.
  • Die Druckschrift WO 00/41072 A1 offenbart ein Verfahren zum Ausführen einer Folge von Instruktionen oder Programmbefehlen, bei welchem eine Vielzahl von LSBs eines ersten Operanden mit einer Vielzahl von LSBs eines zweiten Operanden verglichen wird, so dass in Abhängigkeit von dem Vergleich eine bestimmte Instruktion ausgeführt werden kann.
  • Die Aufgabe der vorliegenden Erfindung besteht daher darin, einen stromsparenden Prozessor mit möglichst geringer Chipfläche bei der Integration zu schaffen, der in der Lage ist, komplexe Bedingungen auf einfache Weise zu prüfen.
  • Erfindungsgemäß wir diese gestellte Aufgabe durch einen Prozessor mit den Merkmalen des Patentanspruchs 1 gelöst.
  • Erfindungsgemäß ist demnach ein Prozessor zur bedingten Ausführung von Programmbefehlen mit einer Prüfvorrichtung zur Prüfung einer komplexen Bedingung, die als eine logische Verknüpfung einer Mehrzahl von Einzelbedingungen ausgebildet ist, wobei eine geprüfte Bedingung angibt, ob eine oder mehrere Operationen eines von dem Prozessor geladenen und durch eine Befehlsdekodiereinheit des Prozessors dekodierten Programmbefehls ausgeführt werden sollen, wobei die Prüfvorrichtung aufweist:
    • – eine Steuervorrichtung, welche die komplexe Bedingung oder eine erste Teilbedingung der komplexen Bedingung in einem vorbestimmten i-ten Taktzyklus des Prozessors in Abhängigkeit von einer in einem vorhergehenden (i – 1)-ten Taktzyklus geprüften, ersten Teilbedingung und einer in einer vor dem (i – 1)-ten Taktzyklus liegenden dritten (i – 2)-ten Taktzyklus geprüften, zweiten Teilbedingung und einer Einzelbedingung prüft;
    • – ein erstes Register, das eingangsseitig mit der Steuervorrichtung zur Speicherung der durch die Steuervorrichtung geprüften Bedingung oder geprüften Teilbedingung und ausgangsseitig mit der Steuervorrichtung zur Bereitstellung der gespeicherten, geprüften Teilbedingung als geprüfte, erste Teilbedingung gekoppelt ist; und
    • – eine Registerbank, welche eingangsseitig mit dem ersten Register zum Empfangen der gespeicherten, geprüften ersten Teilbedingung gekoppelt ist, und als Kette von zweiten Registern eine vorbestimmte Mehrzahl von empfangenen, geprüften ersten Teilbedingungen als geprüfte, zweite Teilbedingungen in Abhängigkeit der jeweiligen Taktzyklen ihrer Prüfung geordnet speichert und welche mit der Steuervorrichtung zur Bereitstellung der geprüften, zweiten Teilbedingungen gekoppelt ist,
    wobei die Befehlsdekodiereinheit, welche mit der Steuervorrichtung und der Registerbank gekoppelt ist, den von dem Prozessor geladenen Programmbefehl dekodiert und in Abhängigkeit des dekodierten Programmbefehls einen ersten Steuerbefehl zur Steuerung der Steuervorrichtung und einen zweiten Steuerbefehl zur Steuerung der Registerbank bereitstellt, wobei der zweite Steuerbefehl als ein Push-Befehl, mittels welchem jeweils das n-te Register der Registerbank mit einem Wert des in der Kette vorstehenden, (n – 1)-ten Registers der Registerbank und das erste Register der Registerbank mit der ersten Teilbedingung aktualisiert wird, oder als ein Pop-Befehl, mittels welchem jeweils das n-te Register der Registerbank mit einem Wert des in der Kette nachstehenden, (n + 1)-ten Registers der Registerbank aktualisiert wird, ausgebildet ist.
  • Erfindungsgemäß ist es somit möglich, eine komplexe Bedingung, die eine Mehrzahl von Einzelbedingung aufweist, zu prüfen. Erfindungsgemäß ist es nicht notwendig, das Format des Programmbefehls des Prozessors um ein oder mehrere Bits für die bedingte Ausführung zu erweitern. Somit wird Speicherplatz eingespart und die Leistungsfähigkeit des Prozessors wird durch die bedingte Ausführung von Programmbefehlen, die sich aus einer Prüfung einer komplexen Bedingung ergibt, nicht eingeschränkt.
  • Vorteilhafte Ausgestaltung und Weiterbildungen der Erfindung ergeben sich aus den Unteransprüchen sowie der Beschreibung unter Bezugnahme auf die Zeichnungen.
  • Gemäß einer bevorzugten Ausgestaltung ist die erste Teilbedingung als eine einzige Einzelbedingung oder als eine logische Verknüpfung mehrerer Einzelbedingungen ausgebildet. Dadurch dass bereits eine Teilbedingung als eine Mehrzahl der Einzelbedingungen ausgebildet sein kann, kann die zu prüfende Bedingung auch als eine geschachtelte Bedingung ausgebildet sein. Eine geschachtelte Bedingung kann eine Vielzahl von Schleifen, insbesondere If-Then-Schleifen und If-Then-Else-Schleifen aufweisen.
  • Gemäß einer weiteren bevorzugten Ausgestaltung ist die Registerbank als eine Kette einer Mehrzahl von zweiten Registern ausgebildet, wobei ein erstes der zweiten Register mit der Steuervorrichtung und dem ersten Register gekoppelt ist und die zweite Teilbedingung speichert. Somit ist eine Vielzahl von bereits geprüften Teilbedingungen der Bedingung speicherbar und bereitstellbar. Das erste der zweiten Register speichert stets die als zweite Teilbedingung gekennzeichnete Teilbedingung. Dadurch dass das erste der zweiten Register mit der Steuervorrichtung gekoppelt ist, liegt die zweite Teilbedingung stets an der Steuervorrichtung bereit. Somit muss also die jeweilige zweite Teilbedingung nicht erst geladen werden. Somit wird potentiellen Warte- oder Latenzzeiten vorgebeugt.
  • Gemäß einer weiteren bevorzugten Ausgestaltung ist die Kette der zweiten Register der Registerbank dazu ausgelegt, die vorbestimmte Mehrzahl der geprüften Teilbedingung in Abhängigkeit der jeweiligen Taktzyklen ihrer Prüfung geordnet zu speichern. Damit ist vorteilhafterweise eine geordnete Abspeicherung der bereits geprüften Teilbedingungen der Bedingung bereitgestellt. Erst eine geordnete Abspeicherung der bereits geprüften Teilbedingungen ermöglicht eine weitere, transparente Verwendung dieser für eine logische Verknüpfung und somit zur Prüfung und Bestimmung der Bedingung oder einer weiteren Teilbedingung der Bedingung.
  • Gemäß einer weiteren bevorzugten Ausgestaltung weist die Steuervorrichtung eine erste Logikschaltung und/oder eine zweite Logikschaltung auf. Vorzugsweise empfängt die erste Logikschaltung zumindest ein Statusflag des Prozessors, das zumindest einen Status des Prozessors angibt und beispielsweise als Zero-Flag ausgebildet ist, und bestimmt abhängig davon die aktuelle Einzelbedingung. Die aktuelle Einzelbedingung wird mittels eines oder mehrerer Statusflags des Prozessors generiert. Vorzugsweise werden die jeweiligen Statusflags von einem Statusregister des Prozessors gespeichert und bereitgestellt. Die zweite Logikschaltung prüft in Abhängigkeit der Einzelbedingung, der ersten Teilbedingung und der zweiten Teilbedingung die Bedingung oder die erste Teilbedingung der Bedingung und stellt das Ergebnis als geprüfte Bedingung oder erste geprüfte Teilbedingung bereit. Ein weiterer Vorteil der Erfindung besteht darin, dass die Bedingung oder eine Teilbedingung in Abhängigkeit von bis zu drei. Parametern bestimmt wird, wobei zwei dieser drei Parameter bereits geprüfte Teile der Bedingung darstellen, sodass die Bedingung und auch die jeweilige Teilbedingung als geschachtelte oder komplexe Bedingung ausgebildet sein können. Mit steigender Komplexität der zu prüfenden. Bedingung oder Teilbedingung steigt auch die Leistungsfähigkeit des erfindungsgemäßen Prozessors.
  • Gemäß einer weiteren bevorzugten Ausgestaltung stellt die Befehlsdekodiereinheit der Steuervorrichtung mittels des ersten Steuerbefehls eine oder mehrere folgende Vorschriften zur Prüfung der Bedingung oder der ersten Teilbedingung bereit:
    • – eine erste Vorschrift, mittels welcher das erste Register mit einer Negation der ersten Teilbedingung aktualisiert wird;
    • – eine zweite Vorschrift, mittels welcher das erste Register mit der Einzelbedingung aktualisiert wird;
    • – eine dritte Vorschrift, mittels welcher das erste Register mit einer logischen und UND-Verknüpfung der ersten Teilbedingung und der Einzelbedingung aktualisiert wird;
    • – eine vierte Vorschrift, mittels welcher das erste Register mit der zweiten Teilbedingung aktualisiert wird;
    • – eine fünfte Vorschrift, mittels welcher das erste Register mit einer logischen ODER-Verknüpfung der ersten Teilbedingung und der zweiten Teilbedingung aktualisiert wird; und
    • – eine sechste Vorschrift, mittels welcher das erste Register mit einer logischen und UND-Verknüpfung der ersten Teilbedingung und der zweiten Teilbedingung aktualisiert wird.
  • Vorteilhafterweise ist mittels dieses kleinen und damit speichereffizienten Befehlssatzes von Vorschriften eine Vielzahl von Operationen zur Prüfung der Bedingung oder einer Teilbedingung durchführbar.
  • Die Erfindung wird nachfolgend anhand der in den schematischen Figuren der Zeichnung angegebenen Ausführungsbeispielen näher erläutert. Es zeigen:
  • 1 ein schematisches Blockschaltbild eines bevorzugten Ausführungsbeispiels des erfindungsgemäßen Prozessors;
  • 2 ein schematisches Blockschaltbild eines bevorzugten Ausführungsbeispiels der Steuervorrichtung gemäß der vorliegenden Erfindung;
  • 3 eine Tabelle zur Darstellung der erfindungsgemäßen Prüfung eines Ausführungsbeispiels einer komplexen Bedingung; und
  • 4a und 4b jeweils eine Tabelle zur Darstellung der erfindungsgemäßen Prüfung eines Ausführungsbeispiels einer komplexen, geschachtelten Bedingung.
  • In allen Figuren sind gleiche bzw. funktionsgleiche Elemente und Signale – sofern nichts anderes angegeben ist – mit denselben Bezugszeichen versehen worden.
  • In 1 ist ein schematisches Blockschaltbild eines bevorzugten Ausführungsbeispiels des erfindungsgemäßen Prozessors 1 zur bedingten Ausführung von Programmbefehlen dargestellt. Der Prozessor 1 weist eine Prüfvorrichtung 2 zur Prüfung einer Bedingung c auf, die als eine logische Verknüpfung einer Mehrzahl von Einzelbedingungen F; c1, c2, c3 ausgebildet ist. Durch die logische Verknüpfung der Mehrzahl von Einzelbedingungen F; c1, c2, c3 ist die Bedingung c vorzugsweise als eine komplexe oder geschachtelte Bedingung ausgebildet. Die Prüfvorrichtung 2 prüft die jeweilige Bedingung c. Ein Programmbefehl weist vorzugsweise eine Mehrzahl an Operationen auf, die insbesondere mittels einer Mehrzahl von Befehlsausführungseinheiten (sogenannte „Execution Units”) des Prozessors 1 ausführbar sind. Abhängig von dem Ergebnis der Prüfung werden der entsprechende Programmbefehl oder einzelne Operationen des Programmbefehls ausgeführt oder der Programmbefehl wird als NOP-Befehl gekennzeichnet und damit nicht ausgeführt. Die geprüfte Bedingung c gibt also an, ob eine oder mehrere Operationen eines von dem Prozessor 1 geladenen und dekodierten Programmbefehls ausgeführt werden sollen. Der Prozessor 1 weist vorzugsweise eine Pipeline-Architektur auf. Im Wesentlichen weist die Pipeline des Prozessors vorzugsweise eine Befehlsdecodier-/Operandenholeinheit zur Decodierung eines Programmbefehls und zum Holen innerhalb des Programmbefehls adressierter Operanden, eine Befehlsausführungseinheit zum Ausführen des decodierten Programmbefehls oder eines Teils seiner Operationen und eine Zurückschreibeeinheit zum Zurückschreiben von Operationsergebnissen der ausgeführten Programmbefehle auf.
  • Die erfindungsgemäße Prüfvorrichtung 2 weist eine Steuervorrichtung 3, ein erstes Register 4 und eine Registerbank 5 auf.
  • Die Steuervorrichtung 3 prüft die Bedingung c oder eine Teilbedingung c der Bedingung c in einer vorbestimmten i-ten Zeiteinheit in Abhängigkeit von einer in der vorhergehenden (i – 1)-ten Zeiteinheit geprüften, ersten Teilbedingung c und einer in einer vor der (i – 1)-ten Zeiteinheit liegenden Zeiteinheit geprüften, zweiten Teilbedingung S und einer Einzelbedingung F; c1, c2, c3.
  • Unten stehende Gleichung 1 zeigt ein erstes Ausführungsbeispiel für eine zu prüfende Bedingung c. Ergibt das Ergebnis der Prüfung für c beispielsweise einen Wert Eins, wird der entsprechende Programmbefehl ausgeführt. Ergibt die Prüfung für die Bedingung c allerdings einen Wert Null, wird der entsprechende Programmbefehl nicht ausgeführt.
  • Gleichung 1:
    • c = (c1&c2)|(c3&c4&c5)|...,
  • Die Bedingung c besteht aus den Einzelbedingungen c1 bis c5. Die UND-Verknüpfung der Einzelbedingungen c1 und c2 ist eine Teilbedingung C der Bedingung c. Die UND-Verknüpfung der Einzelbedingungen c3 bis c5 ist eine weitere Teilbedingung C. Wird beispielsweise in einer (i –2)-ten Zeiteinheit die Teilbedingung C = c1&c2 geprüft und in der (i – 1)-ten Zeiteinheit die Teilbedingung C = c3&c4&c5 geprüft, so stehen zur i-ten Zeiteinheit beide Teilbedingungen für eine logische ODER-Verknüpfung und somit für die Bestimmung des Endergebnisses für die Bedingung c zur Verfügung.
  • Vorzugsweise ist die Teilbedingung C als eine logische Verknüpfung einer oder mehrerer der Mehrzahl der Einzelbedingungen ausgebildet.
  • Vorzugsweise ist die Zeiteinheit als ein Taktzyklus des Prozesses 1 oder als ein vorbestimmter Teil des Taktzyklus ausgebildet. Somit kann beispielsweise die Abfolge der I Zeiteinheiten, mit i ∈ [0, ..., I – 1] als eine chronologische Abfolge der Taktzyklen des Prozesses 1 ausgestaltet sein.
  • Das erste Register 4 ist eingangsseitig mit der Steuervorrichtung 3 zur Speicherung der geprüften Bedingung c oder der geprüften Teilbedingung C und ausgangsseitig mit der Steuervorrichtung 3 zur Bereitstellung der gespeicherten, geprüften Teilbedingung C als geprüfte, erste Teilbedingung C gekoppelt. In dem ersten Register 4 sind eine oder mehrere Bits speicherbar, mit welchen die geprüfte Bedingung c oder die geprüfte Teilbedingung C darstellbar ist.
  • Die Registerbank 5 ist eingangsseitig mit dem ersten Register 4 zum Empfangen der gespeicherten, geprüften Teilbedingung C gekoppelt. Die Registerbank 5 weist zumindest ein zweites Register 5152 zur Abspeicherung der empfangenen, geprüften Teilbedingung C als geprüfte, zweite Teilbedingung S auf (N = 3). Ohne Einschränkung der Allgemeinheit weist die Registerbank 5 drei zweite Register 51, 52, 53 auf. Das erste der zweiten Register 51 speichert die jeweilige zweite Teilbedingung S. Die übrigen zweiten Register 52, 53 speichern weitere, bereits geprüfte Teilbedingung. Ferner ist die Registerbank 5 mit der Steuervorrichtung 3 zur Bereitstellung der geprüften, zweiten Teilbedingung S gekoppelt.
  • Vorzugsweise ist die Registerbank 5 als eine Kette einer Mehrzahl N, mit n ∈ [1, ..., N] von zweiten Registern 5153 ausgebildet. Wie ausgeführt, ist in diesem Ausführungsbeispiel gemäß 1 N gleich 3 (N = 3). Das erste, mit n = 1, der zweiten Register 51 ist mit der Steuervorrichtung 3 und dem ersten Register 4 gekoppelt und speichert die zweite Teilbedingung S.
  • Weiterhin ist die Kette der zweiten Register 5153 vorzugsweise dazu ausgelegt, eine vorbestimmte Mehrzahl der geprüften Teilbedingungen C in Abhängigkeit der jeweiligen Zeiteinheiten ihrer Prüfung geordnet zu speichern.
  • Des Weiteren weist der erfindungsgemäße Prozessor 1 eine Befehlsdekodiereinheit 6 auf, welche mit der Steuervorrichtung 3 und/oder der Registerbank 5 gekoppelt ist, einen von dem Prozessor 1 geladenem Programmbefehl dekodiert und in Abhängigkeit des dekodierten Programmbefehls einen ersten Steuerbefehl S1 zur Steuerung der Steuervorrichtung 3 und/oder einen zweiten Steuerbefehl S2 zur Steuerung der Registerbank 5 bereitstellt.
  • Vorzugsweise stellt die Befehlsdekodiereinheit 6 der Steuervorrichtung 3 mittels des ersten Steuerbefehls S1 eine oder mehrere Vorschriften V1–V6 zur Prüfung der Bedingung c oder der Teilbedingung C bereit. Die untenstehende Tabelle 1 zeigt die Vorschriften V1–V6 und deren jeweilige funktionale Beschreibung dargestellt in der Notation der bekannten Programmiersprache C. Tabelle 1:
    Vorschrift funktionale Beschreibung
    V1 C = –C
    V2 C = F
    V3 C& = F
    V4 C = S
    V5 C| = S
    V6 C& = S
  • Mittels der ersten Vorschrift V1 wird das erste Register 4 mit einer Negation der ersten Teilbedingung C aktualisiert.
  • Mittels der zweiten Vorschrift V2 wird das erste Register 4 mit der Einzelbedingung F aktualisiert.
  • Mittels der dritten Vorschrift V3 wird das erste Register 4 mit einer logischen UND-Verknüpfung der ersten Teilbedingung C und der Einzelbedingung F aktualisiert.
  • Mittels der vierten Vorschrift V4 wird das erste Register 4 mit der zweiten Teilbedingung S aktualisiert.
  • Mittels der fünften Vorschrift V5 wird das erste Register 4 mit einer logischen ODER-Verknüpfung der ersten Teilbedingung C und der zweiten Teilbedingung S aktualisiert.
  • Mittels der sechsten Vorschrift V6 wird das erste Register 4 mit einer logischen UND-Verknüpfung der ersten Teilbedingung C und der zweiten Teilbedingung s aktualisiert.
  • Der aktuelle gespeicherte Wert in dem ersten Register 4 entspricht der aktuell geprüften Bedingung c oder der aktuell geprüften Teilbedingung C.
  • Vorzugsweise ist der zweite Steuerbefehl 52 als ein Push-Befehl push oder als ein Pop-Befehl pop ausgebildet. Mittels des Push-Befehls push wird jeweils des n-te zweite Register 52, 53 mit einem Wert des in der Kette vorstehenden, (n – 1)-ten Registers 51, 52 und das erste zweite Register 51 mit der ersten Teilbedingung C aktualisiert. Mittels des Pop-Befehls pop wird jeweils das n-te zweite Register 51, 52 mit einem Wert des in der Kette nachstehenden, (n + 1)-ten zweiten Registers 52, 53 aktualisiert. Beispielsweise wird also der Wert, der in dem zweiten Register 52 gespeichert ist, mittels des Push-Befehls push in das dritte zweite Register 53 geschoben und mittels des Pop-Befehls pop in das erste zweite Register 51 geschoben.
  • 2 zeigt ein schematisches Blockschaltbild eines bevorzugten Ausführungsbeispiels der Steuervorrichtung 3 der Prüfvorrichtung 2 gemäß der vorliegenden Erfindung. 2 zeigt insbesondere eine detailliertere Darstellung der Steuervorrichtung 3 gemäß 1.
  • Vorzugsweise weist die Steuervorrichtung 3 eine erste Logikschaltung 31 und/oder eine zweite Logikschaltung 32 auf.
  • Die erste Logikschaltung 31 empfängt zumindest ein Statusflag f1 des Prozessors 1 und bestimmt abhängig davon die Einzelbedingung F. Beispielsweise sind die jeweiligen Statusflags f in einem Statusregister 7 des Prozessors 1 gespeichert und werden von diesem bereitgestellt. Alternativ können die jeweiligen Statusflags f auch direkt von einer Einheit der Pipeline des Prozessors 1, beispielsweise der Befehlsausführungseinheit, oder von einem Pipeline-Register bereitgestellt werden. Vorzugsweise wird die erste Logikschaltung 31 mittels eines dritten Steuerbefehls S3 von der Befehlsdekodiereinheit 6 gesteuert.
  • Die zweite Logikschaltung 32 wird – wie oben dargestellt – mittels des ersten Steuerbefehls S1 von der Befehlsdekodiereinheit 6 gesteuert und prüft in Abhängigkeit der aktuellen Einzelbedingung F, die von der ersten Logikschaltung 31 bereitgestellt ist, der ersten Teilbedingung C, die von dem ersten Register 4 bereitgestellt ist, und der zweiten Bedingung S, die von der Registerbank 5 bereitgestellt ist, die aktuelle Bedingung c oder eine weitere Teilbedingung C der Bedingung c und stellt die geprüfte Bedingung c oder die geprüfte Teilbedingung C ausgangsseitig bereit.
  • Nachfolgend wird ein Verfahren zum Prüfen der Bedingung c für eine bedingte Ausführung eines von dem Prozessor 1 geladenen und dekodierten Programmbefehls erläutert, wobei die Bedingung c als eine logische Verknüpfung einer Mehrzahl von Einzelbedingungen F; c1, c2, c3 ausgebildet ist.
  • Das Verfahren weist folgende Verfahrensschritte auf:
  • Verfahrensschritt a:
  • Prüfen einer Teilbedingung C der Bedingung c und Bereitstellen der geprüften Teilbedingung C.
  • Verfahrensschritt b:
  • Speichern der bereitgestellten, geprüften Teilbedingung C als eine zweite Teilbedingung S.
  • Verfahrensschritt c:
  • Prüfen einer weiteren Teilbedingung C der Bedingung c und Bereitstellen der geprüften weiteren Teilbedingung C.
  • Verfahrensschritt d:
  • Speichern der bereitgestellten, geprüften weiteren Teilbedingung C als eine erste Teilbedingung C.
  • Verfahrensschritt e:
  • Bereitstellen einer Einzelbedingung F; c1, c2, c3.
  • Verfahrensschritt f:
  • Prüfen der Bedingung c oder einer weiteren Teilbedingung C in Abhängigkeit der gespeicherten, ersten Teilbedingung C, der gespeicherten, zweiten Teilbedingung S und der bereitgestellten Einzelbedingung F.
  • In 3 ist eine Tabelle zur Darstellung der erfindungsgemäßen Prüfung des ersten Ausführungsbeispiels einer komplexen, geschachtelten Bedingung c dargestellt. Im Folgenden wird also gezeigt, wie die in Gleichung 1 dargestellte Bedingung c erfindungsgemäß mit Bezug auf 3 geprüft wird.
  • Gleichung 1:
    • c = (c1&c2)|(c3&c4&c5)|...,
  • Schritt 1:
  • Die mittels des dritten Steuerbefehls S3 gesteuerte, erste Logikschaltung 31 prüft die Einzelbedingung c1 der Bedingung c in Abhängigkeit zumindest eines Statusflags f und stellt das Ergebnis ausgangsseitig als Code F oder Einzelbedingung F bereit (F = c1).
  • Der als zweite Vorschrift V2 ausgebildete, erste Steuerbefehl S1 steuert die zweite Logikschaltung 32 derart, dass die Teilbedingung C auf die Einzelbedingung F gesetzt wird und das erste Register 4 eben mit dieser Einzelbedingung F aktualisiert wird. Da für die Prüfung der Bedingung c gemäß Gleichung 1 nur ein zweites Register 51 der Registerbank 5 nötig ist, ist nach 3 auch nur der Inhalt des zweiten Registers 51 dargestellt. Das zweite Register S1 speichert anfänglich einen Default-Wert, beispielsweise 1.
  • Schritt 2:
  • Die erste Logikschaltung 31 prüft die Einzelbedingung c2 und setzt ausgangsseitig die Einzelbedingung F auf das Ergebnis der Prüfung von c2. Der als dritte Vorschrift V3 ausgebildete, erste Steuerbefehl S1 steuert die zweite Logikschaltung 32 derart, dass die aktuelle Teilbedingung C auf das Ergebnis einer logischen UND-Verknüpfung der bereits geprüften, ersten Teilbedingung C und der Einzelbedingung F gesetzt wird und das erste Register 4 mit dem Wert des Ergebnisses aktualisiert wird. Damit speichert also das erste Register 4 die Teilbedingung C = c1&c2. Das zweite Register 31 speichert weiterhin den Default-Wert 1.
  • Schritt 3:
  • Die Einzelbedingung F wird – wie oben dargestellt – auf die Einzelbedingung c3 der Bedingung c gesetzt. Der als zweite Vorschrift ausgebildete, erste Steuerbefehl S1 steuert die zweite Logikschaltung 32 derart, dass die aktuelle Teilbedingung C auf die Einzelbedingung F gesetzt wird (C = F) und das erste Register 4 mit der Einzelbedingung F aktualisiert wird. Der zweite Steuerbefehl S2 ist als ein Push-Befehl push ausgebildet, der bewirkt, dass der in Schritt 2 gespeicherte Inhalt des ersten Registers 4 (c1&c2) in das zweite Register 51 geschoben wird. Somit speichert das erste Register 4 den Wert der Einzelbedingung c3 und das zweite Register 51 den Wert der UND-Verknüpfung von c1 und c2.
  • Schritt 4:
  • Die Einzelbedingung F wird auf die Einzelbedingung c4 mittels der ersten Logikschaltung 31 gesetzt. Der als dritte Vorschrift V3 ausgebildete, erste Steuerbefehl S1 steuert die zweite Logikschaltung 32 derart, dass die aktuelle Teilbedingung C auf den Wert einer logischen UND-Verknüpfung der geprüften, ersten Teilbedingung C, die in dem ersten Register 4 gespeichert ist, und der Einzelbedingung F (F = c4) gesetzt wird und damit das erste Register 4 das Ergebnis der logischen UND-Verknüpfung c3&c4 speichert. Das zweite Register 51 speichert weiterhin den Wert der logischen UND-Verknüpfung c1&c2.
  • Schritt 5:
  • Die Einzelbedingung F wird mittels der ersten Logikschaltung 31 auf die Einzelbedingung c5 der Bedingung c gesetzt. Der als dritte Vorschrift V3 ausgebildete, erste Steuerbefehl S1 steuert die zweite Logikschaltung 32 derart, dass die aktuelle Teilbedingung C auf den Wert einer logischen UND-Verknüpfung der Einzelbedingung F (F = c5) und dem Inhalt des ersten Registers 4 (c3&c4&c5) gesetzt wird und somit das erste Register 4 mit dem Wert der logischen UND-Verknüpfung c3&c4&c5 aktualisiert wird. Das zweite Register 51 speichert weiterhin den Wert der logischen UND-Verknüpfung c1&c2.
  • Schritt 6:
  • Der als fünfte Vorschrift V5 ausgebildete, erste Steuerbefehl S1 steuert die zweite Logikschaltung 32 derart, dass das erste Register 4 mit dem Ergebnis einer logischen ODER-Verknüpfung der geprüften, ersten Teilbedingung C, die in dem ersten Register 4 gespeichert ist, und der zweiten Teilbedingung S, die in dem zweiten Register 51 gespeichert ist, aktualisiert wird. Dazu ist der zweite Steuerbefehl S2 als ein Pop-Befehl pop zur Bereitstellung des Speicherinhalts des zweiten Registers 51 ausgebildet. Somit speichert also das erste Register 4 das Ergebnis der ODER-Verknüpfung (c1&c2)|(c3&c4&c5) und das zweite Register 51 speichert den Default-Wert 1.
  • Schritt 7:
  • Die Einzelbedingung F wird mittels der ersten Logikschaltung 31 auf die Einzelbedingung c6 der Bedingung c gesetzt. Der als zweite Vorschrift V2 ausgebildete erste Steuerbefehl S1 steuert die zweite Logikschaltung 32 derart, dass das erste Register 4 mit der Einzelbedingung F aktualisiert wird (C = F). Der als Push-Befehl push ausgebildete zweite Steuerbefehl 52 bewirkt, dass der in Schritt 5 gespeicherte Inhalt des ersten Registers 4 (c1&c2)|(c3&c4&c5) in das zweite Register 51 geschoben wird. Somit speichert das erste Register 4 den Wert der Einzelbedingung c6 und das zweite Register 51 speichert den Wert der ODER-Verknüpfung (c1&c2)|(c3&c4&c5).
  • Somit ist detailliert gezeigt, wie die Bedingung c erfindungsgemäß geprüft wird.
  • Berücksichtigt man, dass der Wert der zweiten Teilbedingung S stets an der Steuervorrichtung 3 anliegt, so ergibt sich der erfindungsgemäße Vorteil, dass die Vorschriften V1–V6 des ersten Steuerbefehls S1 zur Steuerung der Steuervorrichtung 3 und damit die Operationen der Steuervorrichtung 3 und der zweite Steuerbefehl S2 und damit die Operationen der Registerbank 5 orthogonal zueinander sind und demnach unabhängig voneinander ausführbar sind. Die Operationen bzw. Befehle auf die Registerbank, Push-Befehl push und Pop-Befehl pop, sind nicht zeitkritisch. Allerdings beansprucht beispielsweise Schritt 2 einen höheren Bedarf an Ausführungszeit in der Pipelinestufe, beispielsweise in der Befehlsdekodiereinheit, da vorerst mittels der ersten Logikschaltung 31 die Einzelbedingung F bestimmt wird und anschließend mittels der zweiten Logikschaltung 32 eine UND-Verknüpfung mittels der bestimmten Einzelbedingung F durchgeführt wird. Allerdings ist eine logische UND-Verknüpfung in Hardware sehr schnell, sodass diese nur einen vernachlässigbar kleinen Einfluss auf eine Verringerung der Geschwindigkeit hat. Somit kann jeder der oben aufgeführten Schritte 1 bis 7 zur Prüfung der Bedingung c innerhalb eines Taktzyklus durchgeführt werden, unter der Annahme, dass die Bestimmung der jeweiligen Einzelbedingung durch die Logikschaltung 31 innerhalb eines Taktzyklus durchführbar ist.
  • Die 4a und 4b zeigen jeweils eine Tabelle zur Darstellung eines Ausführungsbeispiels einer komplexen, geschachtelten Bedingung. Im Folgenden soll gezeigt werden, wie die geschachtelte Bedingung gemäß Quellcode 2 erfindungsgemäß geprüft wird.
  • Quellcode 2:
    Figure 00210001
  • Eine geschachtelte Bedingung weist allgemein eine Vielzahl von Ebenen bestehend aus If-Schleifen und optional If-Else-Schleifen auf. Die gemäß Quellcode 2 dargestellte Bedingung weist zwei Ebenen von If- und Else-Schleifen auf. Unter der Annahme, dass der erste Code des oben stehenden C-Programms (Quellcode 2) als Start der äußeren Schleife eine (Default)-Bedingung aufweist, die auf Eins (wahr) gesetzt ist, kann der Quellcode 2 als eine Schachtel oder Nest von drei Ebenen dargestellt werden. Jede If- und Else-Schleife befindet sich demnach auf der inneren Ebene. Somit ist allgemein bei der erfindungsgemäßen Prüfung von geschachtelten Bedingungen vorerst eine einzige If-Else-Schleife der inneren Ebene, beispielsweise die innere If-Else-Schleife des folgenden Quellcodes (Quellcode 4) zu prüfen:
  • Quellcode 4:
    Figure 00220001
  • Das besagte Schleifenpaar befindet sich innerhalb einer weiteren Schleife mit der Bedingung c0, die im Folgenden als öffentliche Bedingung der äußeren Schleife bezeichnet wird. Sie besitzt eine eigene Bedingung c, die im Folgenden als private Bedingungen bezeichnet wird. Das Prüfen der Bedingung bzw. das Setzen der Bedingung für das innere Schleifenpaar impliziert die folgenden Operationen:
    • – Setzen der Bedingung c0&c für „code section 1” in der If-Schleife;
    • – Setzen der Bedingung c0&(–c) für „code section 2” in der Else-Schleife; und
    • – Zurückspringen zur öffentlichen Bedingungen c0 nach Beendigung der Else-Schleife
  • Die Schritte der Überprüfung für die Bedingung des Quellcodes 4 sind wie in 4a dargestellt durchzuführen. Nach dem die Prüfung und das Setzen der privaten Bedingung c vorrangig ist, ergibt sich, dass diese beginnend mit Schritt 1 durchzuführen ist (siehe 4a).
  • Außerdem ist erfindungsgemäß berücksichtigt, dass auch die private Bedingung c eine komplexe Bedingung sein kann, die aus einer Mehrzahl von Einzelbedingungen, beispielsweise den Bedingungen c1–c4 der unten stehenden Gleichung 2 ausgebildet sein kann.
  • Gleichung 4:
    • c = (c1&c2)|(c3&c4)
  • Ist beispielsweise die private Bedingung c als eine solche komplexe Bedingung – wie in Gleichung 4 dargestellt – ausgebildet, so sind die Schritte 1a–1f, wie in 4b dargestellt, in Analogie zu den Schritten gemäß 3 durchzuführen.
  • Obwohl die vorliegende Erfindung vorstehend anhand der bevorzugten Ausführungsbeispiele beschrieben wurde, ist darauf nicht beschränkt, sondern auf vielfältige Art und Weise modifizierbar. Beispielsweise ist es denkbar, den Befehlssatz der Vorschriften V1–V6 in Abhängigkeit der jeweiligen Applikationen des Prozessors anzupassen und/oder zu erweitern. Außerdem ist die vorliegende Erfindung, insbesondere die erfindungsgemäße Prüfvorrichtung für einen Prozessor, auch für einen Prozessor anwendbar, der eine Vielzahl von Pipelines oder eine Vielzahl von Befehlsausführungseinheiten zur parallelen Ausführung von Programmbefehlen oder Operationen aufweist. In einem solchen Fall sind nur das erste Register 4 und die zweiten Register 51 bis 53 der Registerbank 5 derart zu erweitern, dass sie nicht nur jeweils ein Bit, sondern einen Vektor an Bits speichern. Außerdem ist die erfindungsgemäße Steuervorrichtung der Prüfvorrichtung in Abhängigkeit der Anzahl der Pipelines des Prozessors zu replizieren, sodass die erfindungsgemäßen Steuerbefehle und Operationen auf die entsprechenden Bit-Vektoren angewendet werden können, sodass in einer bestimmten Zeiteinheit dieselbe Operation oder derselbe Befehl alle Bits des Bit-Vektors einheitlich betrifft. Das Ergebnis, welches das erste Register 4 als Vektor speichert, wird dann als Maske für die bedingte Ausführung des jeweiligen Programmbefehls in der jeweiligen Pipeline verwendet. Eine solche Parallelisierung kann sowohl auf eine VLIW- als auch auf eine SIMD-Architektur angewendet werden.

Claims (7)

  1. Prozessor (1) zur bedingten Ausführung von Programmbefehlen mit einer Prüfvorrichtung (2) zur Prüfung einer komplexen Bedingung (c), die als eine logische Verknüpfung einer Mehrzahl von Einzelbedingungen (F; c1, c2, c3) ausgebildet ist, wobei eine geprüfte Bedingung (c) angibt, ob eine oder mehrere Operationen eines von dem Prozessor (1) geladenen und durch eine Befehlsdekodiereinheit (6) des Prozessors (1) dekodierten Programmbefehls ausgeführt werden sollen, wobei die Prüfvorrichtung (2) aufweist: – eine Steuervorrichtung (3), welche die komplexe Bedingung (c) oder eine erste Teilbedingung (C) der komplexen Bedingung (c) in einem vorbestimmten i-ten Taktzyklus des Prozessors (1) in Abhängigkeit von einer in einem vorhergehenden (i – 1)-ten Taktzyklus geprüften, ersten Teilbedingung (C) und einer in einer vor dem (i – 1)-ten Taktzyklus liegenden dritten (i – 2)-ten Taktzyklus geprüften, zweiten Teilbedingung (S) und einer Einzelbedingung (F; c1, c2, c3) prüft; – ein erstes Register (4), das eingangsseitig mit der Steuervorrichtung (3) zur Speicherung der durch die Steuervorrichtung (3) geprüften Bedingung (c) oder geprüften Teilbedingung (C) und ausgangsseitig mit der Steuervorrichtung (3) zur Bereitstellung der gespeicherten, geprüften Teilbedingung (C) als geprüfte, erste Teilbedingung (C) gekoppelt ist; und – eine Registerbank (5), welche eingangsseitig mit dem ersten Register (4) zum Empfangen der gespeicherten, geprüften ersten Teilbedingung (C) gekoppelt ist, und als Kette von zweiten Registern (5153) eine vorbestimmte Mehrzahl von empfangenen, geprüften ersten Teilbedingungen (C) als geprüfte, zweite Teilbedingungen (S) in Abhängigkeit der jeweiligen Taktzyklen ihrer Prüfung geordnet speichert und welche mit der Steuervorrichtung (3) zur Bereitstellung der geprüften, zweiten Teilbedingungen (S) gekoppelt ist, wobei die Befehlsdekodiereinheit (6), welche mit der Steuervorrichtung (3) und der Registerbank (5) gekoppelt ist, den von dem Prozessor (1) geladenen Programmbefehl dekodiert und in Abhängigkeit des dekodierten Programmbefehls einen ersten Steuerbefehl (S1) zur Steuerung der Steuervorrichtung (3) und einen zweiten Steuerbefehl (S2) zur Steuerung der Registerbank (5) bereitstellt, wobei der zweite Steuerbefehl (S2) als ein Push-Befehl (push), mittels welchem jeweils das n-te Register (52, 53) der Registerbank (5) mit einem Wert des in der Kette vorstehenden, (n – 1)-ten Registers (51, 52) der Registerbank (5) und das erste Register (51) der Registerbank (5) mit der ersten Teilbedingung (C) aktualisiert wird, oder als ein Pop-Befehl (pop), mittels welchem jeweils das n-te Register (51, 52) der Registerbank (5) mit einem Wert des in der Kette nachstehenden, (n + 1)-ten Registers (52, 53) der Registerbank (5) aktualisiert wird, ausgebildet ist.
  2. Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass die erste Teilbedingung (C) als eine Einzelbedingung (F; c1, c2, c3) oder als eine logische Verknüpfung mehrerer Einzelbedingungen (F; c1, c2, c3) ausgebildet ist.
  3. Prozessor nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Registerbank (5) als eine Kette einer Mehrzahl N, mit n ∈ [1, ..., N], von zweiten Registern (5153) ausgebildet ist, wobei ein erstes, mit n = 1, der zweiten Register (51) mit der Steuervorrichtung (3) und dem ersten Register (4) gekoppelt ist und die zweite Teilbedingung (S) speichert.
  4. Prozessor nach Anspruch 3, dadurch gekennzeichnet, dass die Kette der zweiten Register (5153) der Registerbank (5) dazu ausgelegt ist, die vorbestimmte Mehrzahl N der geprüften Teilbedingungen (C) in Abhängigkeit der jeweiligen Taktzyklen ihrer Prüfung geordnet zu speichern.
  5. Prozessor nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass die Steuervorrichtung (3) aufweist: – eine erste Logikschaltung (31), welche zumindest ein Statusflag (f) des Prozessors (1) empfängt und abhängig davon die Einzelbedingung (F) bestimmt; und/oder – eine zweite Logikschaltung (32), welche in Abhängigkeit der Einzelbedingung (F), der ersten Teilbedingung (C) und der zweiten Teilbedingung (S) die Bedingung (c) oder die erste Teilbedingung (C) prüft und die geprüfte Bedingung (c) oder die geprüfte erste Teilbedingung (C) bereitstellt.
  6. Prozessor nach Anspruch 4 oder 5, dadurch gekennzeichnet, dass die Befehlsdekodiereinheit (6) der Steuervorrichtung (3) mittels des ersten Steuerbefehls (S1) eine oder mehrere folgende Vorschriften (V1–V6) zur Prüfung der Bedingung (c) oder der ersten Teilbedingung (C) bereitstellt: – eine erste Vorschrift (V1), mittels welcher das erste Register (4) mit einer Negation der ersten Teilbedingung (C) aktualisiert wird; – eine zweite Vorschrift (V2), mittels welcher das erste Register (4) mit der Einzelbedingung (F) aktualisiert wird; – eine dritte Vorschrift (V3), mittels welcher das erste Register (4) mit einer logischen UND-Verknüpfung der ersten Teilbedingung (C) und der Einzelbedingung (F) aktualisiert wird; – eine vierte Vorschrift (V4), mittels welcher das erste Register (4) mit der zweiten Teilbedingung (S) aktualisiert wird. – eine fünfte Vorschrift (V5), mittels welcher das erste Register (4) mit einer logischen ODER-Verknüpfung der ersten Teilbedingung (C) und der zweiten Teilbedingung (S) aktualisiert wird; und – eine sechste Vorschrift (V6), mittels welcher das erste Register (4) mit einer logischen UND-Verknüpfung der ersten Teilbedingung (C) und der zweiten Teilbedingung (S) aktualisiert wird.
  7. Prozessor nach einen der vorangegangenen Ansprüche 1 bis 6, wobei die komplexe Bedingung (c) eine komplexe, geschachtelte Bedingung ist.
DE102005050382A 2005-10-20 2005-10-20 Prozessor zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls Expired - Fee Related DE102005050382B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102005050382A DE102005050382B4 (de) 2005-10-20 2005-10-20 Prozessor zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls
US11/584,810 US20070101109A1 (en) 2005-10-20 2006-10-20 Processor and method for checking a condition for conditional execution of a program command

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102005050382A DE102005050382B4 (de) 2005-10-20 2005-10-20 Prozessor zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls

Publications (2)

Publication Number Publication Date
DE102005050382A1 DE102005050382A1 (de) 2007-05-03
DE102005050382B4 true DE102005050382B4 (de) 2012-08-09

Family

ID=37912565

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102005050382A Expired - Fee Related DE102005050382B4 (de) 2005-10-20 2005-10-20 Prozessor zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls

Country Status (2)

Country Link
US (1) US20070101109A1 (de)
DE (1) DE102005050382B4 (de)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69230057T2 (de) * 1991-07-08 2000-03-09 Seiko Epson Corp Risc mikroprozessorarchitektur mit mehrere registersätze von unterschiedlichen typen
WO2000041072A1 (en) * 1998-12-31 2000-07-13 Intel Corporation A method and apparatus for improved predicate prediction
WO2004109499A2 (en) * 2003-06-05 2004-12-16 Arm Limited Predication instruction within a data processing system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US556035A (en) * 1896-03-10 Car-coupling
US4001789A (en) * 1975-05-23 1977-01-04 Itt Industries, Inc. Microprocessor boolean processor
US4212076A (en) * 1976-09-24 1980-07-08 Giddings & Lewis, Inc. Digital computer structure providing arithmetic and boolean logic operations, the latter controlling the former
US4504925A (en) * 1982-01-18 1985-03-12 M/A-Com Linkabit, Inc. Self-shifting LIFO stack
US4899307A (en) * 1987-04-10 1990-02-06 Tandem Computers Incorporated Stack with unary encoded stack pointer
US5371862A (en) * 1991-02-27 1994-12-06 Kabushiki Kaisha Toshiba Program execution control system
US6366999B1 (en) * 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
US7017032B2 (en) * 2001-06-11 2006-03-21 Broadcom Corporation Setting execution conditions
US7155598B2 (en) * 2002-04-02 2006-12-26 Ip-First, Llc Apparatus and method for conditional instruction execution
US7299343B2 (en) * 2002-09-27 2007-11-20 Verisilicon Holdings (Cayman Islands) Co. Ltd. System and method for cooperative execution of multiple branching instructions in a processor
US7600102B2 (en) * 2004-06-14 2009-10-06 Broadcom Corporation Condition bits for controlling branch processing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69230057T2 (de) * 1991-07-08 2000-03-09 Seiko Epson Corp Risc mikroprozessorarchitektur mit mehrere registersätze von unterschiedlichen typen
WO2000041072A1 (en) * 1998-12-31 2000-07-13 Intel Corporation A method and apparatus for improved predicate prediction
WO2004109499A2 (en) * 2003-06-05 2004-12-16 Arm Limited Predication instruction within a data processing system

Also Published As

Publication number Publication date
US20070101109A1 (en) 2007-05-03
DE102005050382A1 (de) 2007-05-03

Similar Documents

Publication Publication Date Title
DE102014011332B4 (de) Priorisieren von anweisungen basierend auf typ
DE69933088T2 (de) Vliw-verarbeiter verarbeitet befehle von verschiedenen breiten
DE112011104555B4 (de) Vektorkonfliktinstruktionen
DE602004008711T2 (de) Anordnung, Verfahren und Rechnerdatensignal zur selektiven Annullierung der Vorhersage eines Rücksprungstapelspeichers als Antwort auf die Erkennung einer nicht-standard Rücksprungsbefehlsreihe
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE19527031C2 (de) Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE69919081T2 (de) Datenprozessor mit Verzweigungssteuerung und -verfahren
DE4211245B4 (de) Prozessorsystem in Parallelverarbeitungsbauart und Verfahren zu dessen Steuerung
DE1931966C3 (de) Datenverarbeitungsanlage mit Assoziativspeichern
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE4342250A1 (de) Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners
DE102014003563A1 (de) Fusionierbare befehle und logik zum versehen mit or-test- und and-test-funktionalität unter benutzen von mehrfachtestquellen
DE69633474T2 (de) Adressierungsverfahren zur nicht-sequentiellen Ausführung von Ladebefehlen hinsichtlich Speicherungsbefehlen
EP0825540B1 (de) Prozessor mit Pipelining-Aufbau
DE602004011889T2 (de) Anordnung und Verfahren zur Durchführung einer frühen Korrektur von falschen Vorhersagen beim bedingten Verzweigungsbefehl
DE60115609T2 (de) Datenverarbeitungsarchitektur mit bereichsprüfung für matrix
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken
DE112017000968T5 (de) System und Verfahren zur kontextabhängigen Vektorisierung von Befehlen zur Laufzeit
DE4434529A1 (de) Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu
DE112006000514T5 (de) CPU-Architektur mit einzelnem Zyklus und geringer Leistungsaufnahme
DE102005001679B4 (de) Mikroprozessor-Einrichtung, und Verfahren zur Branch-Prediktion für conditional Branch-Befehle in einer Mikroprozessor-Einrichtung
DE10103070B4 (de) Verfahren und Prüfschaltung zum Ermitteln eines Gültigkeitsstatus für einen zeitlich zurückliegenden Loadbefehl
DE102019112301A1 (de) Befehls-Cache in einem Multithread-Prozessor

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final

Effective date: 20121110

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee