PatentDe  


Dokumentenidentifikation DE102005050382A1 03.05.2007
Titel Prozessor und Verfahren zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls
Anmelder Infineon Technologies AG, 81669 München, DE
Erfinder Nie, Xiaoning, 85579 Neubiberg, DE;
Lin, Jinan, 85521 Ottobrunn, DE
Vertreter PAe Reinhard, Skuhra, Weise & Partner GbR, 80801 München
DE-Anmeldedatum 20.10.2005
DE-Aktenzeichen 102005050382
Offenlegungstag 03.05.2007
Veröffentlichungstag im Patentblatt 03.05.2007
IPC-Hauptklasse G06F 11/36(2006.01)A, F, I, 20051020, B, H, DE
Zusammenfassung Der erfindungsgemäße Prozessor zur bedingten Ausführung von Programmbefehlen weist eine Prüfvorrichtung zur Prüfung einer Bedingung auf, 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 dekorierten Programmbefehls ausgeführt werden soll, wobei die Prüfvorrichtung aufweist:
- eine Steuervorrichtung, die die Bedingung oder eine Teilbedingung der Bedingung in einer ersten Zeiteinheit in Abhängigkeit von einer in einer vorhergehenden zweiten Zeiteinheit geprüften, ersten Teilbedbingung und einer in einer vor der zweiten Zeiteinheit liegenden dritten Zeiteinheit geprüften, zweiten Teilbedingung und einer Einzelbedingung prüft;
- eine erstes Register, das eingangsseitig mit der Steuervorrichtung zur Speicherung der geprüften Bedingung oder Teilbedingung und ausgangsseitig mit der Steuervorrichtung zur Bereitstellung der gespeicherten, geprüften Teilbedingung als geprüfte, erste Teilbedingung gekoppelt ist; und
- eine Registerbank, die eingangsseitig mit dem ersten Register zum Empfang der gespeicherten, geprüften Teilbedingung gekoppelt ist, zumindest ein zweites Register zur Abspeicherung der empfangenen, geprüften Teilbedingung als geprüfte, zweite Teilbedingung aufweist und mit der Steuervorrichtung zur Bereitstellung der geprüften, zweiten Teilbedingung gekoppelt ist.

Beschreibung[de]

Die Erfindung betrifft einen Prozessor und ein Verfahren 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:

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 Processor 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 Aufgabe der vorliegenden Erfindung besteht daher darin, eine komplexe, aus einer Mehrzahl von Einzelbedingungen bestehende Bedingung für eine bedingte Ausführung eines Programmbefehls auf eine einfache und insbesondere kostengünstige Weise zu prüfen.

Erfindungsgemäß wir diese gestellte Aufgabe durch einen Prozessor mit den Merkmalen des Patentanspruchs 1 sowie durch ein Verfahren mit den Merkmalen des Patentanspruchs 11 gelöst.

Erfindungsgemäß ist demnach ein Prozessor zur bedingten Ausführung von Programmbefehlen mit einer Prüfvorrichtung zur Prüfung einer Bedingung, die als eine logische Verknüpfung einer Mehrzahl von Einzelbedingungen ausgebildet ist, wobei eine geprüfte Bedingung angibt, ob eine oder mehrere Operationen, insbesondere parallel ausführbare Operationen, eines von dem Prozessor (1) geladenen und dekodierten Programmbefehls ausgeführt werden sollen, vorgesehen, wobei die Prüfvorrichtung aufweist:

  • a) eine Steuervorrichtung, die die Bedingung oder eine Teilbedingung der Bedingung einer vorbestimmten ersten Zeiteinheit in Abhängigkeit von einer in der vorhergehenden zweiten Zeiteinheit geprüften, ersten Teilbedingung und einer in einer vor der zweiten Zeiteinheit liegenden dritten Zeiteinheit geprüften, zweiten Teilbedingung und einer Einzelbedingung prüft;
  • b) ein erstes Register, das eingangsseitig mit der Steuervorrichtung zur Speicherung der geprüften Bedingung oder Teilbedingung und ausgangsseitig mit der Steuervorrichtung zur Bereitstellung der gespeicherten, geprüften Teilbedingung als geprüfte, erste Teilbedingung gekoppelt ist; und
  • c) eine Registerbank, die eingangsseitig mit dem ersten Register zum Empfang der gespeicherten, geprüften Teilbedingung gekoppelt ist, zumindest ein zweites Register zur Abspeicherung der empfangenen, geprüften Teilbedingung als geprüfte, zweite Teilbedingung aufweist und mit der Steuervorrichtung zur Bereitstellung der geprüften, zweiten Teilbedingung gekoppelt ist.

Des Weiteren ist erfindungsgemäß ein Verfahren zum Prüfen einer Bedingung für eine bedingte Ausführung einer oder mehrerer Operationen eines von einem Prozessor geladenen und dekodierten Programmbefehls, die als eine logische Verknüpfung einer Mehrzahl von Einzelbedingungen ausgebildet ist, mit den folgenden Schritten vorgesehen:

  • a) Prüfen einer Teilbedingung der Bedingung und Bereitstellen der geprüften Teilbedingung;
  • b) Speichern der bereitgestellten, geprüften Teilbedingung als eine zweite Teilbedingung;
  • c) Prüfen einer weiteren Teilbedingung der Bedingung und Bereitstellen der geprüften weiteren Teilbedingung;
  • d) Speichern der bereitgestellten, geprüften weiteren Teilbedingung als eine erste Teilbedingung;
  • e) Bereitstellen einer Einzelbedingung; und
  • f) Prüfen der Bedingung oder einer weiteren Teilbedingung der Bedingung in Abhängigkeit der gespeicherten, ersten Teilbedingung, der gespeicherten, zweiten Teilbedingung und der bereitgestellten Einzelbedingung.

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 der Erfindung prüft die Steuervorrichtung die Bedingung oder die Teilbedingung der Bedingung in einer vorbestimmten i-ten Zeiteinheit in Abhängigkeit von der in einer vorhergehenden (i-1)-ten Zeiteinheit geprüften, ersten Teilbedingung und der in einer vor der (i-1)-ten Zeiteinheit liegenden Zeiteinheit geprüften, zweiten Teilbedingung und der entsprechenden Einzelbedingung.

Gemäß einer weiteren bevorzugten Ausgestaltung ist die Teilbedingung als eine einzige Einzelbedingung oder als eine logische Verknüpfung mehrerer Einzelbedingungen ausgebildet. Dadurch das 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 dazu ausgelegt, eine vorbestimmte Mehrzahl der geprüften Teilbedingung in Abhängigkeit der jeweiligen Zeiteinheiten 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 bevorzugten Weiterbildung der Erfindung ist eine Befehlsdekodiereinheit vorgesehen, welche mit der Steuervorrichtung und/oder der Registerbank gekoppelt ist, einen von den Prozessor geladenen Programmbefehl dekodiert und in Abhängigkeit des dekodierten Programmbefehls einen ersten Steuerbefehl zur Steuerung der Steuervorrichtung und/oder einen zweiten Steuerbefehl zur Steuerung der Registerbank bereitstellt. Vorzugsweise ist die Befehlsdekodiereinheit mit der Steuervorrichtung und der Registerbank gekoppelt und stellt in Abhängigkeit des dekodierten Programmbefehls den ersten Steuerbefehl zur Steuerung der Steuervorrichtung und den zweiten Steuerbefehl zur Steuerung der Registerbank bereit. Vorteilhafterweise wird die Prüfung der Bedingung oder einer weiteren Teilbedingung in Abhängigkeit der aktuellen Einzelbedingung, der ersten Teilbedingung und/oder der zweiten Teilbedingung mittels des ersten Steuerbefehls gesteuert. Mittels des zweiten Steuerbefehls wird vorteilhafterweise die Registerbank derart gesteuert, um aus der Vielzahl der in der Registerbank gespeicherten Teilbedingungen diejenige als zweite Teilbedingung in dem ersten der zweiten Register bereitzustellen, welche für die nachfolgende Prüfung durch die Steuervorrichtung benötigt wird.

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 eine weitere Teilbedingung der Bedingung und stellt das Ergebnis als geprüfte Bedingung oder 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 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.

Gemäß einer weiteren bevorzugten Ausgestaltung ist der zweite Steuerbefehl als ein Push-Befehl, mittels welchem jeweils das n-te zweite Register mit einem Wert des in der Kette vorstehenden, (n-1)-ten Registers und das erste zweite Register mit der ersten Teilbedingung aktualisiert wird, oder als ein Pop-Befehl ausgebildet, mittels welchem jeweils das n-te zweite Register mit einem Wert des in der Kette nachstehenden, (n+1)-ten zweiten Registers aktualisiert wird. Vorteilhafterweise ist die Registerbank mittels der zwei Befehle, Push-Befehl und Pop-Befehl, derart steuerbar, dass die, für die nachfolgende Prüfung durch die Steuervorrichtung nötige, geprüfte Teilbedingung als zweite Teilbedingung in dem ersten der zweiten Register gespeichert wird und durch die Kopplung mit der Steuervorrichtung an dieser anliegt. Dadurch dass die jeweilige zweite Teilbedingung an der Steuervorrichtung anliegt, muss diese nicht erst geladen werden. Somit wird Zeit eingespart.

Gemäß einer weiteren bevorzugten Ausgestaltung ist die Zeiteinheit als ein Taktzyklus des Prozessors oder als ein vorbestimmter Teil des Taktzyklus ausgebildet.

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 ein schematisches Ablaufdiagramm eines bevorzugten Ausführungsbeispiels des erfindungsgemäßen Verfahrens;

4 eine Tabelle zur Darstellung der erfindungsgemäßen Prüfung eines Ausführungsbeispiels einer komplexen Bedingung; und

5a und 5b 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. c = (c1&c2) | (c3&c4&c5) | ...,Gleichung 1

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 51-52 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 51-53 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 51-53 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.

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 S2 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.

3 zeigt ein schematisches Ablaufdiagramm eines bevorzugten Ausführungsbeispiel des erfindungsgemäßen Verfahrens zum Prüfen der Bedingung c für eine bedingte Ausführung eines von dem Prozessor 1 geladenen und dekodierten Programmbefehls, wobei die Bedingung c als eine logische Verknüpfung einer Mehrzahl von Einzelbedingungen F; c1, c2, c3 ausgebildet ist.

Nachfolgend wird das erfindungsgemäße Verfahren anhand des Blockschaltbildes in 3 erläutert. Das erfindungsgemäße Verfahren weist folgende Verfahrensstände 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 4 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 4 geprüft wird. c = (c1&c2) | (c3&c4&c5) | ...,Gleichung 1

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 4 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 S2 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 5a und 5b zeigen jeweils eine Tabelle zur Darstellung eines Ausführungsbeispieles einer komplexen, geschachtelten Bedingung. Im Folgenden soll gezeigt werden, wie die geschachtelte Bedingung gemäß Quellcode 2 erfindungsgemäß geprüft wird.

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:

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 5a 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 5a).

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. c = (c1&c2) | (c3&c4)Gleichung 4

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 5b dargestellt, in Analogie zu den Schritten gemäß 4 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.

1
Prozessor
2
Prüfvorrichtung
3
Steuervorrichtung
31
erste Logikschaltung
32
zweite Logikschaltung
4
erstes Register
5
Registerbank
51-53
zweites Register
6
Befehlsdekodiereinheit
7
Statusregister
c
Bedingung
c1, c2, c3
Einzelbedingung
C
erste Teilbedingung
pop
Pop-Befehl
push
Push-Befehl
S
zweite Teilbedingung
S1
erster Steuerbefehl
S2
zweiter Steuerbefehl
S3
dritter Steuerbefehl
f
Statusflag
F
Einzelbedingung
V1
erste Vorschrift
V2
zweite Vorschrift
V3
dritte Vorschrift
V4
vierte Vorschrift
V5
fünfte Vorschrift
V6
sechste Vorschrift
a-f
Verfahrensschritte


Anspruch[de]
Prozessor (1) zur bedingten Ausführung von Programmbefehlen mit einer Prüfvorrichtung (2) zur Prüfung einer 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 dekodierten Programmbefehls ausgeführt werden sollen, wobei die Prüfvorrichtung (2) aufweist:

– eine Steuervorrichtung (3), die die Bedingung (c) oder eine Teilbedingung (C) der Bedingung (c) in einer ersten Zeiteinheit in Abhängigkeit von einer in einer vorhergehenden zweiten Zeiteinheit geprüften, ersten Teilbedingung (C) und einer in einer vor der zweiten Zeiteinheit liegenden dritten Zeiteinheit 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 geprüften Bedingung (c) oder 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), die eingangsseitig mit dem ersten Register (4) zum Empfangen der gespeicherten, geprüften Teilbedingung (C) gekoppelt ist, zumindest ein zweites Register (51-53) zur Abspeicherung der empfangenen, geprüften Teilbedingung (C) als geprüfte, zweite Teilbedingung (S) aufweist und mit der Steuervorrichtung (3) zur Bereitstellung der geprüften, zweiten Teilbedingung (S) gekoppelt ist.
Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass die Steuervorrichtung (3) die Bedingung (c) oder die Teilbedingung (C) der Bedingung (c) in einer vorbestimmten i-ten Zeiteinheit in Abhängigkeit von der in einer vorhergehenden (i-1)-ten Zeiteinheit geprüften, ersten Teilbedingung (C) und der in einer vor der (i-1)-ten Zeiteinheit liegenden Zeiteinheit geprüften, zweiten Teilbedingung (S) und der entsprechenden Einzelbedingung (F; c1, c2, c3) prüft. Prozessor nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Teilbedingung (C) als eine Einzelbedingung (F; c1, c2, c3) oder als eine logische Verknüpfung mehrerer Einzelbedingungen (F; c1, c2, c3) ausgebildet ist. Prozessor nach einem oder mehreren der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Registerbank (5) als eine Kette einer Mehrzahl N, mit n ∊ [1, ..., N], von zweiten Registern (51-53) 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. Prozessor nach Anspruch 4, dadurch gekennzeichnet, dass die Kette der zweiten Register (51-53) dazu ausgelegt ist, eine vorbestimmte Mehrzahl der geprüften Teilbedingungen (C) in Abhängigkeit der jeweiligen Zeiteinheiten ihrer Prüfung geordnet zu speichern. Prozessor nach einem oder mehreren der vorstehenden Ansprüche, dadurch gekennzeichnet, dass eine Befehlsdekodiereinheit (6) vorgesehen ist, welche mit der Steuervorrichtung (3) und/oder der Registerbank (5) gekoppelt ist, einen von dem Prozessor (1) geladenen 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. Prozessor nach einem oder mehreren der vorstehenden Ansprüche,

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 Teilbedingung (C) prüft und die geprüfte Bedingung (c) oder Teilbedingung (C) bereitstellt.
Prozessor nach Anspruch 6 oder 7,

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 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.
Prozessor nach einem oder mehreren der Ansprüche 6 bis 8, dadurch gekennzeichnet, dass der zweite Steuerbefehl (S2) als ein Push-Befehl (push), mittels welchem jeweils das 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 wird, oder als ein Pop-Befehl (pop), mittels welchem jeweils das n-te zweite Register (51, 52) mit einem Wert des in der Kette nachstehenden, (n+1)-ten zweiten Registers (52, 53) aktualisiert wird, ausgebildet ist. Prozessor nach einem oder mehreren der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Zeiteinheit als ein Taktzyklus des Prozessors (1) oder als ein vorbestimmter Teil des Taktzyklus ausgebildet ist. Verfahren zum Prüfen einer Bedingung (c) für eine bedingte Ausführung einer oder mehrerer Operationen eines von einem Prozessor, insbesondere von einem Prozessor (1) nach einem oder mehreren der vorstehenden Ansprüche, geladenen und dekodierten Programmbefehls, die als eine logische Verknüpfung einer Mehrzahl von Einzelbedingungen (F; c1, c2, c3) ausgebildet ist, mit den Schritten:

– Prüfen einer Teilbedingung (C) der Bedingung (c) und Bereitstellen der geprüften Teilbedingung (C);

– Speichern der bereitgestellten, geprüften Teilbedingung (C) als eine zweite Teilbedingung (S);

– Prüfen einer weiteren Teilbedingung (C) der Bedingung (c) und Bereitstellen der geprüften weiteren Teilbedingung (C);

– Speichern der bereitgestellten, geprüften weiteren Teilbedingung (C) als eine erste Teilbedingung (C);

– Bereitstellen einer Einzelbedingung (F; c1, c2, c3); und

– 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).






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com