DE4430195B4 - Verfahren zur Auswertung von Booleschen Ausdrücken - Google Patents

Verfahren zur Auswertung von Booleschen Ausdrücken Download PDF

Info

Publication number
DE4430195B4
DE4430195B4 DE4430195A DE4430195A DE4430195B4 DE 4430195 B4 DE4430195 B4 DE 4430195B4 DE 4430195 A DE4430195 A DE 4430195A DE 4430195 A DE4430195 A DE 4430195A DE 4430195 B4 DE4430195 B4 DE 4430195B4
Authority
DE
Germany
Prior art keywords
value
boolean
reduction
operations
activation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE4430195A
Other languages
English (en)
Other versions
DE4430195A1 (de
Inventor
Michael Los Altos Schlansker
B. Ramakrishna Los Altos Rau
Vinod Cupertino Kathail
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.)
Samsung Electronics Co Ltd
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE4430195A1 publication Critical patent/DE4430195A1/de
Application granted granted Critical
Publication of DE4430195B4 publication Critical patent/DE4430195B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled

Abstract

Verfahren zur Auswertung von Booleschen Ausdrücken bestehend aus einer Mehrzahl von Termen, die durch logische Operatoren verknüpft sind, in einem Computersystem (20), in dem Operationen entsprechend Befehlen eines Befehlssatzes durch eine oder mehrere Funktionseinheiten (36-39) ausgeführt werden,
wobei die Operationen eine oder mehrere Reduktionsoperationen in einer Form einschließen, die einen Wert aus einem Satz von einem oder mehreren Eingangswerten zum Speichern in einem bestimmten Register (54) bestimmt, wobei für jeden Typ der logischen Operatoren für jeden Term während eines Zyklus folgende Schritte durchlaufen werden:
Durchführen einer Ergebnisfunktion (Faus) in der Funktionseinheit (36-39) bezüglich eines oder mehrerer Eingangswerte der Operation, um einen Ergebniswert zu erzeugen;
Durchführen einer Aktivierungsfunktion (Fen) in der Funktionseinheit bezüglich eines oder mehrerer Eingangswerte, um einen Booleschen Aktivierungswert zu erzeugen, wobei der Boolesche Aktivierungswert für zumindest eine Kombination der Eingangswerte falsch ist; und
Schreiben des Ergebniswertes an einen bestimmten Registerort (58), wenn der...

Description

  • Die vorliegende Erfindung bezieht sich auf ein Verfahren zur Auswertung von Booleschen Ausdrücken bestehend aus einer Mehrzahl von Termen, die durch logische Operationen verknüpft sind.
  • Programme schließen typischerweise viele Boolesche Ausdrücke ein. Werte, die durch diese Ausdrücke erzeugt werden, haben eine Anzahl von Anwendungen, einschließlich als Datenwerte, als Verzweigungsbedingungen und bei einigen Computern als Vorhersagen für bedingte Operationsausführungen.
  • Eine herkömmliche Anwendung für Boolesche Ausdrücke ist es, eine Boolesche Reduktion durchzuführen. D.h. eine Mehrzahl von Werten auf einen einzelnen Wert unter Verwendung von Boolleschen Funktionen, z.B. UND und ODER, zu reduzieren. Ein Beispiel eines solchen Ausdruckes zum Durchführen einer Booleschen Reduktion lautet wie folgt: r = u ^ ¬v ^ w ^ x (1)
  • Der obige Ausdruck reduziert den Booleschen Wert u, das Komplement von v (dargestellt durch ¬v), w und x auf einen einzelnen Booleschen Wert r unter Verwendung der UND-Funktion (dargestellt durch ^). Im allgemeinen kann jeder Boolesche Ausdruck in der Form der Summe von Produkten ausgedrückt werden, die aus einer Anzahl von UND-Reduktionen, denen eine ODER-Reduktion folgt, besteht.
  • Typischerweise ergeben sich Boolesche Werte, die in Programmen verwendet werden, aus Vergleichen oder relationalen Operationen, wie z.B. kleiner als (<) und größer als (>). Folglich ist der folgende Boolesche Ausdruck für UND-Reduktionsausdrücke, die in Computerprogrammen angetroffen werden, typisch. r = (a < b) ^ ¬(c > d) ^ (a < c) ^ (b > d) (2)
  • Die Geschwindigkeit, mit der die Reduktionsausdrücke dieser Art ausgewertet werden können, ist für eine effiziente Programmausführung außerordentlich wichtig. Dies ist besonders im Zusammenhang mit Computersystemarchitekturen wichtig, die einen Befehlsebenenparallelismus verwenden, wie z.B. Architekturen mit sehr groben Befehlsworten (VLIW = Very Large Instruction Word) oder sogenannten Supermaßstabarchitekturen. Boolesche Ausdrücke werden typischerweise bei der Berechnung von Verzweigungsbedingungen verwendet. Folglich ist die Auswertung von Booleschen Ausdrücken häufig ein wichtiger Weg eines Programms. Einige Programmtransformationen zur Ausführung eines Parallelismus (d.h. Operationen, die gleichzeitig ausgeführt werden können) verwenden ebenfalls Boolesche Reduktionen. Die Effektivität solcher Transformationen hängt davon ab, wie schnell diese Ausdrücke ausgewertet werden können. Einige Beispiele solcher Transformationen schließen die Kombination von mehreren Zweigen, die aus einer ausgebreiteten Schleife in einen einzelnen Zweig existieren, und die Höhenreduktion der Steuerungsabhängigkeit in einer ausgebreiteten "While"-Schleife ein.
  • Bei Computern, denen die Fähigkeit fehlt, Operationen parallel auszuführen, werden Boolesche Ausdrücke im allgemeinen auf eine serielle Art ausgewertet. D.h. jede Operation in dem Reduktionsausdruck wird zu einem Zeitpunkt ausgeführt.
  • Im allgemeinen dauert eine rein sequentielle Auswertung eines Reduktionsausdrucks, der n Vergleichsoperationen enthält, (2n – 1)α Maschinenzyklen, wobei α die Anzahl der Zyklen pro Vergleich oder UND-Operation in dem Computersystem ist. Der Reduktionsausdruck (2), der oben dargestellt ist, würde z.B. 7α Zyklen dauern.
  • Im Zusammenhang mit Architekturen mit Befehlsebenenparallelismus werden oft Übersetzungszeit-Höhenreduktionstechniken verwendet, um die Auswertung von Booleschen Ausdrücken zu beschleunigen. Eine einfache Technik zum Beschleunigen von Auswertungen ist es, die Vergleichsoperationen parallel auszugeben, und dann die Reduktion unter Verwendung eines binären Baums von UND-Operationen durchzuführen. Es sei z.B. der oben gegebene Ausdruck (2) angenommen. Unter der Annahme, daß der Prozessor in dem Computersystem zumindest vier Funktionseinheiten aufweist, kann der Ausdruck ausgewertet werden, wie es in der folgenden Tabelle gezeigt ist:
    Figure 00030001
  • Bei dem Beispiel aus Tabelle 1 wird der Ausdruck (2) mittels einer einfachen Höhenreduktionstechnik in nur 3α-Zyklen ausgewertet. Mit dieser Höhenreduktionstechnik kann ein Reduktionsausdruck, der n Vergleichsoperationen enthält, im allgemeinen in (1 + (log2n))α Zyklen ausgewertet werden, vorausgesetzt, das Computersystem kann n Operationen parallel aus führen. Sogar wenn Quellen verführbar sind,die einen zusätzlichen Parallelismus bereitstellen, benötigt diese Technik jedoch immer noch zumindest (1 + (log2n))α Zyklen.
  • Aus der Veröffentlichung MILLS J. W.: A pipelined architecture for logic programming with a complex but single-cycleinstruction set. In: Engineering Applications of Artificial Intelligence, Band 3, Nr. 1, 1990, S. 30 – 42 ist eine Architektur bekannt, welche logische Programme ausführt, für deren Ausführung weniger Befehlszyklen erforderlich sind als bei bekannten Ausführungen. Es wird speziell auf die Ausführung von Bedingungsbefehlen und auf ein Speicher-Untersystem bezog genommen. Durch die Ausführung bedingter Befehle kann die Anzahl von kurzen Verzweigungen dadurch reduziert werden, dass kurze Sequenzen eines Verzweigungs-Codes in sequentielle Befehle umgewandelt werden. Diese Schrift befaßt sich somit nicht mit einem Verfahren zur Auswertung von Booleschen Ausdrücken, bei dem eine Reduzierungs-Operation dadurch durchgeführt wird, daß eine Ergebnis-Funktion und eine Aktivierungs-Funktion durchgeführt werden.
  • Ausgehend von diesem Stand der Technik liegt der vorliegenden Erfindung die Aufgabe zugrunde, ein Verfahren zur Auswertung von Booleschen Ausdrücken zu schaffen, bei dem Operationen entsprechend Befehlen eines Befehlssatzes durch eine oder mehrere Funktionseinheiten ausgeführt werden, bei dem die Auswertung in einer reduzierten Anzahl von Zyklen erfolgt.
  • Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 gelöst. Das Vehalten dieses Verfahrens und dieser Technik ist lediglich durch die Anzahl von Funktionseinheiten (Quellen) begrenzt, die Operationen parallel ausführen können, und nicht durch irgendwelche Abhängigkeiten zwischen einzelnen Operationen in dem Ausdruck. Ferner können gemäß der Erfindung Operationen gleichzeitig oder in irgendeiner erwünschten Reihenfolge ausgeführt werden. Folglich ist ein Compiler z.B. frei, die Ausführung von Vergleichsoperationen mit anderen Operationen im Programm zu überlappen, was für Computersysteme mit begrenzten Quellen wichtig ist.
  • Die Erfindung hat zwei Aspekte.
  • Gemäß einem ersten Aspekt der Erfindung ermöglichen ein oder mehrere Register in einem Computersystem mehreren Operationen, einen Wert gleichzeitig in dieses Register zu schreiben, vorausgesetzt, alle durch diese Operationen geschriebenen Werte sind identisch. In diesem Fall ist das Ergebnis, das in dem Register gespeichert ist, gut definiert und gleicht jedem der Werte, die in das Register geschrieben sind. Wenn mehrere Operationen jedoch gleichzeitig unterschiedliche Werte in ein Register schreiben, ist der sich ergebende gespeicherte Wert undefiniert. Die geschriebenen Werte können Boolesche, Integer-, Gleitkomma-, oder andere Werte sein. Das Register kann ein 1-Bit-Register oder ein Bit-Ort in einem Bedingungs- oder Statusregister sein. Das Register kann ebenfalls ein Gletkommaregister oder ein Register für allgemeine Zwecke sein. Nicht alle Register in dem Computersystem müssen diese Fähigkeit des gleichzeitigen mehrfachen Schreibens aufweisen.
  • Gemäß einem zweiten Aspekt der Erfindung schafft ein Computersystem einen Satz von Reduktionsoperationen. Die Ausführung jeder Reduktionsoperation ist im allgemeinen durch zwei Funktionen der Eingangswerte der Operation definiert, eine Ergebnisfunktion und eine Aktivierungsfunktion. Die Ergebnisfunktion bestimmt, welcher Wert oder Werte, wenn welche vorhanden sind, durch die Operation gespeichert werden. Die Aktivierungsfunktion bestimmt, ob diese Werte geschrieben werden oder in einem Zielort oder Register gespeichert werden oder nicht. Dementsprechend kann das Ergebnis raus durch eine Reduktionsoperation wie folgt ausgedrückt werden: raus = Faus (rein1, rein2, ..., rein n) (3)wenn Fen (rein1, rein2, ..., rein n)
  • Wobei Faus die Ergebnisfunktion ist, und Fen die Aktivierungsfunktion ist. Die Ergebnis- und Aktivierungsfunktion kann zumindest die folgenden Booleschen Funktionen einschließen: Vergleiche von ganzzahligen oder Gleitkomma-Eingangswerten, und Funktionen von Booleschen Eingangswerten, wie z.B. UND, ODER, Invertierung und Identitätsfunktion. Das bestimmte Zielregister ist bevorzugterweise von der Art, das mehrere gleichzeitige Schreibvorgänge handhabt. Bei einem Computersystem gemäß dieser zwei Aspekte der Erfindung kann jeder Reduktionsausdruck effektiv in nur α Zyklen ausgewertet werden. Weiterhin kann jeder allgemeine Boolesche Ausdruck, der in der Form einer Summe von Produkten ausgedrückt ist, in effektiv 2α Zyklen ausgewertet werden. Der obige Reduktionsausdruck (2) kann z.B. durch gleichzeitiges Ausführen von vier Operationen ausgewertet werden, die abhängig von dem Ergebnis eines Vergleichs einen Booleschen Nullwert konditional in ein Register schreiben, das auf Eins voreingestellt ist, wie es in der folgenden Tabelle dargestellt ist. Tabelle 2: Beispiel des Auswertungsausdrucks (2) gemäß der Erfindung
    Figure 00070001
  • In der obigen Tabelle ist das Register r auf Eins voreingestellt. Die Operationen bestimmtes-UND schreiben bedingt einen Booleschen Nullwert in das Register r, wenn das Ergebnis einer bestimmten Vergleichsoperation (< oder >) Null ist. Die Operation bestimmtes-UNDc schreibt einen Booleschen Nullwert in das Register r, wenn das Komplement des Ergebnisses der bestimmten; Vergleichsoperation Null ist. Obwohl mehr als eine der Operationen gleichzeitig in das Register schreiben kann, sind alle Werte, die geschrieben werden können, Null.
  • Die vier gleichzeitig ausgeführten Operationen werten den Reduktionsausdruck (2) effektiv in α Zyklen aus. (Dies setzt voraus, daß die Operation zur Voreinstellung des Registers mit vorhergehenden Operationen überlappt sein kann, wie z.B. während Zyklen, wenn eine der Funktionseinheiten ansonsten leerlaufen würde. Folglich benötigt die Voreinstellungsoperation effektiv keine zusätzliche Ausführungszeit.) Wenn das Ergebnis irgendeiner der durch die UND-Operationen durchgeführten Vergleiche oder das Komplement des durch die UNDc-Operation durchgeführten Vergleichs Null ist, wird das Register auf Null eingestellt. Wenn das Register r dem ersten Aspekt der Erfindung entspricht, werden mehrere Operationen, die das Register gleichzeitig auf Null einstellen, zu einem Register führen, das auf einen definierten Wert von Null eingestellt ist. Das Register bleibt ansonsten auf 1 eingestellt.
  • Zusätzlich kann jeder allgemeine Boolesche Ausdruck, der in der Form der Summe von Produkten ausgedrückt ist, in 2α Zyklen ausgewertet werden. (Dies setzt wiederum voraus, daß die Voreinstellungsoperationen sich mit vorhergehenden Operationen überlappen, so daß diese keine zusätzlichen Zyklen benötigen.) Bei den ersten α Zyklen wird jeder UND-Ausdruck des Ausdrucks als eine getrennte UND-Reduktion durchgeführt. Bei den nächsten α Zyklen wird eine ODER-Reduktion bezüglich der Ergebnisse der UND-Reduktionen durchgeführt, um den Wert des Ausdrucks zu erhalten.
  • Die Werte der Booleschen Ausdrücke sind für eine vorhersagbare Ausführung besonders nützlich. Eine vorhersagbare Ausführung von Befehlen bezieht sich auf eine Ausführung, die für einen Wert einer Eingabe, normalerweise ein Boolescher Wert, konditioniert ist. Auf einer Maschine, die eine vorhersagbare Ausführung unterstützt, kann ein Befehl, der zwei Eingangswerte addiert, z.B. diesbezüglich konditioniert sein, ob eine dritte, vorhersagbare Eingabe einen bestimmten Wert hat. Die Addition von zwei Eingangswerten oder zumindest das Schreiben des Ergebnisses der Additionsfunktion findet nur statt, wenn die vorhersagbare Eingabe den bestimmten Wert hat. Folglich können gemäß einem weiteren Merkmal und einem weiteren Vorteil der Erfindung Befehle bezüglich Reduktionsausdrücken, die gemäß der Erfindung ausgewertet werden, vorhergesagt werden.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 ein verallgemeinertes Blockdiagramm eines Computersystems
  • 2 ein verallgemeinertes Blockdiagramm einer zentralen Verarbeitungseinheit in dem Computersystem aus 1 mit mehreren Funktionseinheiten für die Befehlsebenenparallelität; und
  • 3 ein verallgemeinertes Blockdiagramm eines Registers in der zentralen Verarbeitungseinheit aus 2.
  • Anhand von 1 wird ein Computersystem 20 beschrieben, das im allgemeinen eine zentrale Verarbeitungseinheit (CPU) 22 umfaßt, die über einen Mehrsignalsystembus 30 mit einem Speicher 24 und peripheren Geräten 26 verbunden ist. Der Speicher 24 wird bevorzugterweise durch dynamische Speicherchips mit wahlfreiem Zugriff ausgeführt, kann aber mit Nur-Lese-Speicherchips oder anderen elektronischen Speichergeräten ausgeführt sein. Der Speicher 24 speichert Daten und Befehle für ein oder mehrere Programme, die ein erwünschtes Ziel oder eine erwünschte Berechnung auf dem Computersystem 20 ausführen.
  • Die CPU 22 in dem Computersystem 20 schafft bevorzugterweise eine Befehlsebenenparallelität, wie in 2 gezeigt ist. (Bei alternativen Ausführungsbeispielen der Erfindung kann das Computersystem eine CPU von der Art aufweisen, die das Befehls-Pipeline-Verfahren verwendet.) Genauer gesagt umfaßt der Prozessor 22 eine Befehlseinheit 34 und mehrere Funktionaleinheiten 36 39, die Operationen gleichzeitig entsprechend den Befehlen eines Programms zur Ausführung der erwünschten Aufgabe oder Berechnung ausführen. Die Befehle, die in dem Speicher 24 (1) gespeichert sind, werden in die Befehlseinheit 34 eingelesen. Eine Busschnittstellenschaltung 42 erzeugt auf dem Systembus 30 die Signale, die notwendig sind, um Daten und Befehle aus dem Speicher zu lesen und Daten in den Speicher 24 zu schreiben. Die Befehlseinheit 34 dekodiert die Befehle und erzeugt Steuerungssignale, die einen Satz von Funktionseinheiten 36-39 anweisen, Operationen in Übereinstimmung mit den Befehlen auszuführen.
  • Die Befehlseinheit 34 ist aufgebaut, um auf einen vorbestimmten Satz von Befehlen (den "Befehlssatz") zu reagieren, und die Steuerungssignale zu bilden, die notwendig sind, um die entsprechenden Operationen mit den Funktionseinheiten 36-39 auszuführen. Der Befehlssatz umfaßt im allgemeinen Logikoperationsbefehle, Arithmetikoperationsbefehle und Gleitkommaoperationsbefehle. Der Befehlssatz umfaßt ebenfalls Datenübertragungsbefehle zum Übertragen von Daten zwischen einem Speicher und einem Satz von Registern 46 und Zwischenregistern. In Übereinstimmung mit der Erfindung sind einige der Operationen, die die Befehlseinheit 34 an die Funktionseinheiten zur Durchführung weiterleitet, Operationen für eine vorhersagbare Programmausführung und für die Auswertung von Booleschen Reduktionen, die im folgenden genauer beschrieben werden.
  • Die Funktionseinheiten 36-39 führen Operationen durch, um die Befehle auszuführen, wie es durch die Befehlseinheit 34 angewiesen ist. Die Funktionseinheiten 36-39 lesen im allgemeinen einen oder zwei Operanden, die für eine Operation verwendet werden aus Registern ein, die aus den Registern 46 ausgewählt sind. Die Funktionseinheit 36-39 schreibt ebenfalls eines oder mehrere Ergebnisse der Operation in ein Register, das aus den Registern 46 ausgewählt ist.
  • Die Befehlseinheit 34 und die Funktionseinheiten 36-39 sind bei dem bevorzugten Ausführungsbeispiel Logikschaltungen, die mit herkömmlichen Logikgattern ausgeführt sind, unter Verwendung von herkömmlichen Logikschaltungsentwurfs techniken, um die im folgenden beschriebenen Operationen bereitzustellen.
  • In 3 speichert zumindest eines der Register 46 (2) Boolesche Operanden, und ist fähig, mehrere gleichzeitige Schreibvorgänge handzuhaben. Ein solches Register 54 umfaßt bevorzugterweise ein Speichergerät oder eine Schaltung ("Speicher") 58 und eine Anzahl von Anschlüssen 60-63. (Andere der Register 46 können für andere Aufgaben bestimmt sein, wie z.B. das Speichern von ganzzahligen oder Gleitkommawerten.)
  • Im allgemeinen umfaßt der Speicher 58 einen oder mehrere Zwischenspeicher, Flip-Flops oder äquivalente statische oder dynamische Speicherschaltungen. Der Speicher 58 kann ausgeführt sein, um lediglich ein einzelnes Bit zu speichern, er kann aber ebenfalls ausgeführt sein, um Mehrbit-Werte, wie z.B. ganzzahlige oder Gleitkommawerte, zu speichern. Im Fall eines Mehrbit-Speichers kann der Boolesche Operand durch Zuordnen von willkürlichen Operationen zu jedem der Booleschen Zustände (z.B. alle Nullen stellen eine Boolesche Null dar, und jede andere Bit-Kombination stellt eine Boolesche Eins dar) dargestellt sein. Die Mehrbit-Speicherausführung kann verwendet werden, um einen Booleschen Operanden und ganzzahlige oder Gleitkomma-Mehrbit-Werte, die für die Programmausführung erforderlich sein können, zu speichern. Der Speicher 58 kann ebenfalls ausgeführt sein, um einen Mehrbit-Vorhersagevektor zu speichern, der eine Mehrzahl von Booleschen Einzelbit-Vorhersagewerten umfaßt, die einzeln oder gemeinsam geschrieben werden können.
  • Die Anschlüsse 60-63 empfangen Werte, die von den Funktionseinheiten 36-39 in das Register 54 geschrieben werden. Die Anschlüsse 60-63 sind im allgemeinen mit den Funktionseinheiten 36-39 in einer Eins-zu-Eins-Beziehung sowohl mit einem Datenbus 66-69 als auch mit einer Schreibaktivierungsleitung 70-73 verbunden. Um einen Wert in das Register 54 zu schreiben, wie z.B. das Ergebnis einer Operation, legen die Funktionseinheiten 36-39 den zu schreibenden Wert an ihren Datenbus 66-69 an, und geben ein Schreibaktivierungssignal an ihre Schreibaktivierungsleitung 70-73 aus. Als Reaktion auf das Schreibaktivierungssignal schalten die Anschlüsse 60-63 den Wert auf ihrem jeweiligen Datenbus 66-69 in den Speicher 58 durch. Wenn die Funktionseinheit 37 z.B. das Schreibaktivierungssignal vom Anschluß 61 ausgibt, wird der Wert auf dem Datenbus 67 für diesen Anschluß in den Speicher 58 geschrieben. Wenn das Schreibaktivierungssignal für den Anschluß 61 nicht ausgegeben ist, wird der Wert nicht in den Speicher 58 geschrieben. (In dem Fall der Ausführung zur Speicherung von Vorhersagevektoren können für jeden der Vorhersagewerte in dem Vektor getrennte Aktivierungsleitungen und Signale verwendet werden.)
  • Wenn mehr als eine der Funktionseinheiten 36-39 ihre Schreibaktivierungssignale während gleichzeitig ausgeführter Operationen ausgibt, werden mehrere Werte gleichzeitig in das Register 54 geschrieben. Bei bekannten herkömmlichen Registern sind solche mehrfachen gleichzeitigen Schreibvorgänge nicht möglich und können verursachen, daß der in dem Speicher 58 gespeicherte Wert undefiniert ist. Das Register 54 ist jedoch wirksam, um einen definierten Wert in dem Speicher 58 zu speichern, wenn alle Werte, die gleichzeitig in das Register 54 geschrieben werden, identisch sind. Der gespeicherte Wert ist in diesem Fall bevorzugterweise identisch mit dem geschrieben Wert.
  • Der zu speichernde Wert wird, wenn mehrere Werte gleichzeitig geschrieben werden, durch eine Auswahlschaltung 76 abgeleitet, die zwischen den Anschlüssen 60-63 und dem Speicher 58 in dem Register 54 geschaltet ist. Die Auswahlschaltung 76 kann den gespeicherten Wert auf verschiedene Arten ableiten. Die Auswahlschaltung kann z.B. eine UND- oder ODER-Funktion bzgl. der mehrfach geschriebenen Werte durchführen, oder kann einen dieser willkürlich auswählen, um den gespeicherten Wert abzuleiten. Wenn die mehreren gleich zeitig geschriebenen Werte sich unterscheiden, ist das Ergebnis undefiniert. Folglich ist der durch die Auswahlschaltung 76 gespeicherte Wert für den Fall von unterschiedlichen gleichzeitig geschriebenen Werten nicht wichtig.
  • In 2 sind die Funktionseinheiten 36-39 durch die Steuerung der Befehlseinheit 34 wirksam, um bestimmte Operationen auszuführen, die dem Befehl eines Programms entsprechen. Die Operationen, die die Funktionseinheiten 36-39 unter der Steuerung der Befehlseinheit ausführen, schließen einen Satz von Reduktionsoperationen ein, die für eine vorhersagbare Programmausführung und die Auswertung von Booleschen Reduktionsausdrücken nützlich sind. Die Reduktionsoperationen haben jeweils die folgende Form: raus = Operation (rein1, rein2, ..., rein n) (4)
  • Mit anderen Worten agiert jede Reduktionsoperation auf einen oder mehrere Eingaben (rein1, rein2, ..., rein n), um einen neuen Wert eines Ergebnisses (raus) zu bestimmen, der in einem bestimmten Register gespeichert wird. Genauer gesagt ist die Ausführung jeder Operation durch zwei Funktionen, eine Ergebnisfunktion (Faus) und eine Aktivierungsfunktion (Fen), definiert, wobei das Ergebnis (raus) wie folgt lautet: raus = Faus (rein1, rein2, ..., rein n) (5)wenn Fen (rein1, rein2, ..., rein n)
  • Die Ergebnisfunktion (Faus) bestimmt den neuen Wert eines Ergebnisses, das in einem bestimmten Register gespeichert ist, wenn ein Ergebnis gespeichert ist. Die Aktivierungsfunktion (Fen) berechnet einen Booleschen Wert, der bestimmt, ob das Ergebnis in dem bestimmten Ausgabespeicher gespeichert ist oder nicht.
  • Bei einem Ausführungsbeispiel hat die Ergebnisfunktion einen Booleschen Wert. Für jede Reduktionsoperation ist eine Ergebnisfunktion mit Booleschem Wert und eine Aktivierungsfunktion mit Booleschem Wert typisch. Jede Reduktionsoperation wird in einer Funktionseinheit durch (1) Durchführen der bestimmten Ergebnisfunktion der Operation auf einen Satz von Eingaben, um einen sich ergebenden Booleschen Wert zu erzeugen, und durch (2) Durchführen der Aktivierungsfunktion der Operation, die bestimmt, ob der Boolesche Wert in ein bestimmtes Zielregister geschrieben wird, durchgeführt. Beispiele für die Arten von Funktionen mit Booleschem Wert, die für eine Ergebnis- oder Aktivierungsfunktion typisch sein können, schließen im allgemeinen Vergleichsfunktionen (z.B. größer als, kleiner als, gleich, deren Komplemente und ähnliches) bezüglich ganzzahliger Eingangswerte, Vergleichsfunktionen bezüglich Gleitkommaeingangswerte, und Funktionen von Booleschen Eingangswerten (z.B. UND, ODER, EXKLUSIV- ODER, Identität, deren Komplemente und ähnliches) ein.
  • Für jede Reduktionsoperation, die die Befehlseinheit 34 an eine der Funktionseinheiten 36-39 zur Ausführung richtet, bestimmt die Befehlseinheit 34 die Eingangswerte (oder Register, aus denen die Eingangswerte entnommen werden) für die bestimmte Ergebnisfunktion mit Booleschem Wert der Operation, und ein Zielregister, um jeglichen Wert, der durch die Operation geschrieben wird, zu speichern. Der bestimmte Eingangswert muß für die bestimmte Ergebnisfunktion der Operation geeignet sein. Das bestimmte Zielregister muß fähig sein, einen Booleschen Wert zu speichern, und ist bei dem bevorzugten Ausführungsbeispiel von dem Typ (Register 54), das in 3 dargestellt ist und oben beschrieben wurde, zur Handhabung mehrerer gleichzeitiger Schreibvorgänge.
  • Die Aktivierungsfunktionen bestimmen, ob der Ergebniswert, der durch die Ergebnisfunktion erzeugt wird, in das Zielregister geschrieben wird. Dementsprechend benötigt jede Reduktionsoperation drei Aktionen, die von den verbundenen Ergebnissen der Ergebnis- und Aktivierungsfunktion abhängen. Die Aktionen schließen das Schreiben eines Booleschen Eins- Wertes in das Zielregister, das Schreiben eines Null-Wertes in das Zielregister und das Nichtschreiben in das Zielregister ein.
  • Die folgende Tabelle 3 stellt eine Wahrheitstabelle für vier Klassen von Reduktionsoperationen bei dem bevorzugten Ausführungsbeispiel der Erfindung dar. Tabelle 3. Wahrheitstabelle für UND- oder ODER-Reduktionsoperationen
    Figure 00150001
  • In Tabelle 3 stellt die linkeste Spalte die Zustände eines "Zustands"-Wertes dar, der als ein Ergebnis einer Vergleichsfunktion mit Booleschem Wert erzeugt wird. Die anderen Spalten stellen die Aktionen dar, die durch vier Klassen von Reduktionsoperationen, ODER, UND, ODERc und UNDc für jeden Zustand der Bedingung durchgeführt werden, wobei "1" das Schreiben einer Booleschen Eins in das Zielregister darstellt, "0" stellt das Schreiben einer Booleschen Null in das Zielregister dar, und "--" stellt dar, daß der Wert in dem Zielregister unverändert bleibt.
  • Wie in 3 dargestellt ist, führen die Funktionseinheiten 36-39 die oben beschriebenen UND- und ODER-Reduktionsoperationen durch Anordnen des Wertes, der in der Wertespalte der folgenden Tabelle 4 gezeigt ist, auf ihrem jeweiligen Datenbus 66-69 durch, und steuern ihre jeweiligen Schreibaktivierungsleitungen an, wie es in der Schreibaktivierungssignalspalte gezeigt ist. Tabelle 4. Ausführung von UND- und ODER-Reduktionsoperationen
    Figure 00160001
  • Die obige Tabelle 4 zeigt die Werte, die durch die Ergebnis- und Aktivierungs-Funktion für jede der vier Klassen von Operationen aus Tabelle 3 erzeugt werden. Die Ergebnisfunktionen für diese Operationen sind Konstante. Wie es in der "Wert"-Spalte gezeigt ist, erzeugen die Ergebnisfunktionen für die UND- und die UNDc-Operationsklassen immer ein Ergebnis von Null, während diejenigen der ODER- und ODERc-Operationsklassen immer ein Ergebnis von Eins erzeugen. Die "Schreibaktivierungssignal"-Spalte zeigt, daß die Aktivierungsfunktionen für diese Operationsklassen die Vergleichsfunktion sind, die den Bedingungswert oder dessen Komplement erzeugt. Genauer gesagt ist die Aktivierungsfunktion für die ODER- und UNDc-Reduktionsoperationsklassen eine bestimmte Vergleichsfunktion mit Booleschem Wert (die Vergleichsfunktion, die die Bedingung erzeugt). Die Aktivierungsfunktion für die ODERc- und UND-Reduktionsoperationsklassen ist das Komplement der bestimmten Vergleichsfunktion mit Booleschem Wert.
  • Die vorhergehende Tabelle 3 stellt vier Klassen von Reduktionsoperationen dar, die bei dem bevorzugten Ausführungsbeispiel der Erfindung bereitgestellt werden, insbesondere die UND-, UNDc-, ODER- und ODERc-Reduktionsoperationsklassen. Die Reduktionsoperationen in der UND- und UNDc-Klasse sind zur Auswertung von UND-Reduktionsausdrücken nützlich. Die Reduktionsoperationen in der ODER- und ODERc-Klasse sind zur Auswertung von ODER-Reduktionsausdrücken nützlich. Der UND-Reduktionsausdruck (2), der wie folgt lautet: r = (a < b) ^ (c > d) ^ (a < c) ^ (b > d) (2)kann z.B. durch die folgenden vier UND- und UNDc-Klassen-Reduktionsoperationen ausgewertet werden: r = UND ≤ (a, b); (6) r = UNDc ≥ (c, d); (7) r = UND ≤ (a, b); und (8) r = UND ≥ (b, d) . (9)
  • Die obigen Reduktionsoperationen (6 – 9) bestehen jeweils aus einer Operations-spezifischen Vergleichsfunktion (< oder >) bezüglich zwei bestimmten Eingangswerten (in Klammern), und aus einer Operations-spezifischen Reduktionsoperation (UND oder UNDc), die auf ein bestimmtes Register (r) zeigen. Jede Vergleichsfunktion einer Reduktionsoperation erzeugt eine Bedingung mit Booleschem Wert. Wie in den Tabellen 3 und 4 oben gezeigt ist, bestimmt jede Aktivierungsfunktion der Reduktionsoperation dann auf der Grundlage der Bedingung, ob eine Boolesche Null in das Zielregister geschrieben wird. Es wird darauf hingewiesen, daß die Reduktionsoperationen (6) und (8) dieselben Reduktionsoperationen sind, aber unterschiedliche Eingangswerte bestimmen.
  • Um den UND-Reduktionsausdruck (2) mit den Reduktionsoperationen (6 – 9) auszuwerten, wird das Register (r) zuerst auf einen Booleschen Eins-Wert voreingestellt. Dann werden jeweils die Reduktionsoperationen (6 – 9) ausgeführt. Bevorzugterweise, aber nicht notwendigerweise, werden die Reduktionsoperationen durch die Funktionseinheiten 36-39 parallel ausgeführt. Wenn die Vergleichsfunktion irgendeiner UND-Re duktionsoperation eine Null erzeugt, dann wird eine Null in das Zielregister geschrieben. Wenn der Vergleichsoperationsabschnitt von UNDc eine Eins erzeugt (das Komplement des Vergleichs ist eine Null), dann wird eine Null in das Zielregister geschrieben. Dementsprechend wird, nachdem alle Reduktionsoperationen (6) bis (9) ausgeführt sind, das Zielregister eine Eins enthalten, wenn alle Terme des UND-Reduktionsausdrucks (2) wahr waren, und wird ansonsten eine Null enthalten (wodurch der Ausdruck (2) effektiv ausgewertet wird). Wie in Tabelle 2 oben gezeigt ist, wird der Ausdruck (2) effektiv in nur α Zyklen auf dem Computersystem 20 ausgewertet, wenn die Reduktionsoperationen (6 – 9) parallel ausgeführt werden.
  • Bei einem alternativen Ausführungsbeispiel der Erfindung bestimmen die Reduktionsoperationen den Wert, der in das Zielregister geschrieben wird, auf der Grundlage einer vorhersagbaren Eingabe mit Booleschem Wert, und auf der Grundlage des Bedingungswertes, der durch eine Vergleichsfunktion erzeugt wird. Bei diesem alternativen Ausführungsbeispiel bestimmt die Befehlseinheit 34 einen Vorhersagewert (oder ein Register, das den Vorhersagewert enthält) für jede Reduktionsoperation, zusätzlich zu dem Eingangswert oder Werten und dem Zielregister der Operation. Die folgende Tabelle 5 stellt einige exemplarische Klassen von Reduktionsoperationen bei diesem alternativen Ausführungsbeispiel dar: Tabelle 5 Wahrheitstabelle der Reduktionsoperationen mit vorhersagbarer Eingabe
    Figure 00190001
  • Tabelle 4 stellt acht Klassen von Reduktionsoperationen dar, einschließlich der unkonditionalen (U), der konditionalen (C), der ODER- und der UND-Klasse und deren Komplemente (Uc, Cc, ODERc, UNDc). Die unkonditionalen Klassen (U, Uc) schreiben die Boolesche UND-Funktion der Vorhersageeingabe und die Bedingung (oder deren Komplement) in das Zielregister. Die konditionale Klasse schreibt die Bedingung abhängig von der vorhersagbaren Eingabe in das Zielregister. Abschließend werden die ODER- und UND-Klasse, wie in 3 gezeigt ist, abhängig von der vorhersagbaren Eingabe durchgeführt. Wie bei den Reduktionsoperationen, die in Tabelle 3 gezeigt sind, ist die Ausführung jeder dieser Reduktionsoperationen durch eine Ergebnisfunktion, die einen Ergebniswert erzeugt, und eine Aktivierungsfunktion, die bestimmt, ob der Ergebniswert in ein bestimmtes Zielregister geschrieben wird, definiert.
  • Mit den Reduktionsoperationen der Arten, die in Tabelle 5 gezeigt sind, kann das Verhalten eines Satzes von Reduktionsoperationen, die einen Reduktionsausdruck auswerten, auf den Wert einer vorhersagbaren Eingabe konditioniert werden, die in einem bestimmten Register enthalten ist. Ein Satz von Reduktionsoperationen, die eine Operation der Konditional-Klasse zur Voreinstellung eines Zielregisters und zwei oder mehr UND-Klassenoperationen einschließt, kann z.B. eingestellt sein, um einen UND-Reduktionsausdruck (z.B. Ausdruck (2)) auszuwerten, wenn eine bestimmte vorhersagbare Eingabe Eins ist, und nichts zu tun, wenn die vorhersagbare Eingabe Null ist.
  • Der Boolesche Wert, der aus der Ausführung eines Satzes von Reduktionsoperationen resultiert, der in dem Zielregister der Operation gespeichert ist, nachdem die Operation ausgeführt ist, ist für die vorhersagbare Ausführung von Operationen in einem Programm besonders nützlich. Bei dem bevorzugten Ausführungsbeispiel der Erfindung können die Operationen ein Register bestimmen, in dem ein Boolescher Vorhersagewert gespeichert ist. Die Ausführung der Operation wird dann auf den Vorhersagewert konditioniert. Bei dem bevorzugten Ausführungsbeispiel werden die Operationen nur ausgeführt, wenn ihr bestimmter Vorhersagewert Eins ist.
  • Bei einem weiteren alternativen Ausführungsbeispiel ist ein Satz von Reduktionsoperationen vorgesehen, die jeweils mehrere Ergebnisse bei einer gleichen Operation aus einem gegebenen Satz von Eingangswerten erzeugen. Als solche haben die Reduktionsoperationen mit mehreren Ergebnissen die folgende Form: raus,1, raus,2, ..., raus,m = op(raus,1, raus,2, ..., raus,n) (10)
  • Wobei die mehreren Ergebniswerte (raus,1, raus,2, ..., raus,m) durch Ausführen der Operation auf den Satz von Eingangswerten (raus,1, raus,2, ..., raus,n) erzeugt werden. Die Ausführungen dieser Reduktionsoperationen ist durch zwei Funktionen (Faus,i, Fen,i) für jeden der mehreren Ergebnis-Werte präzise definiert. Genauer gesagt nimmt das Ergebnis (raus,i) für jedes i den folgenden Wert an: raus,i = Faus,i (rein,1, rein,2, ..., rein,n) (11)wenn Fen,i (rein,1, rein,2, ..., rein,n)
  • Die Reduktionsoperationen von der Art, die mehrere Ergebnisse erzeugen, sind in Situationen besonders sinnvoll, in denen mehr als ein Reduktionsausdruck denselben Satz von Bedingungen, die ausgewertet werden sollen, verwendet. In solchen Situationen kann es z.B. notwendig sein, einen UND-Reduktionsausdruck eines Satzes von vier Vergleichen und einen ODER-Reduktionsausdruck desselben Satzes von Vergleichen auszuwerten. Bei diesem weiteren Ausführungsbeispiel können beide Reduktionsausdrücke gleichzeitig mit nur vier Funktionseinheiten ausgewertet werden. Die vier Funktionseinheiten führen vier der Reduktionsoperationen durch, von denen jede eine UND- und eine ODER-Reduktionsfunktion zum Schreiben in zwei getrennte Zielregister hat. Diese Technik ist besonders zur Berechnung von zwei Ergebnisvorhersagen nützlich, die für die vorhersagbare Ausführung von Operationen von der wahren und falschen Seite eines Bedingungszweigs verwendet werden.
  • Nachdem die Prinzipien der vorliegenden Erfindung anhand eines bevorzugten Ausführungsbeispiels beschrieben und dargestellt wurden, ist es offensichtlich, daß die Erfindung bezüglich ihrer Anordnung verändert werden kann, ohne sich von diesen Prinzipien zu entfernen. Obwohl das dargestellte Ausführungsbeispiel ein Computersystem mit paralleler Befehlsebene ist, ist die Erfindung ebenfalls auf Multi-Prozessor-Computersysteme anwendbar (die getrennte Prozessoren zur Ausführung von Operationen haben, und nicht getrennte Funktionseinheiten innerhalb eines Prozessors). Bei einer solchen Ausführung eines Multi-Prozessor-Computersystems werden die Reduktionsausdrücke durch Ausführen eines Satzes von Reduktionsoperationen jeweils auf einem getrennten Prozessor zwischen benachbarten Synchronisationspunkten ausgewertet. Die Reduktionsoperationen bilden den Wert des Ausdrucks in einem Speicherregister, das mehrfache gleich zeitige Schreibvorgänge handhabt.
  • Als weiteres Beispiel kann die Vergleichsfunktion mit Booleschem Wert, die einem Reduktionsausdruck zugeordnet ist, getrennt von den Reduktionsoperationen, die den Ausdruck auswerten, durchgeführt werden. Genauer gesagt können die Vergleichsfunktionen mit Booleschem Wert in einem ersten Satz von Operationen durchgeführt werden, um einen Satz von Bedingungen für einen erwünschten Reduktionsausdruck zu bilden. Dann wird ein zweiter Satz von Reduktionsoperationen durchgeführt, um die Bedingungen auf einen abschließenden Wert für den Ausdruck zu reduzieren. Es wird darauf hingewiesen, daß dies immer noch den Vorteil gegenüber den bekannten Höhenreduktionstechniken aufweist, nachdem die Reduktionsfunktionen gleichzeitig durchgeführt werden können und nicht als binärer Baum von zwei Eingangs-UND-Operationen.
  • Wiederum als weiteres Beispiel können die Reduktionsoperationen gemäß der Erfindung auf Vektoren wirksam sein, von denen jeder eine Mehrzahl von Booleschen Werten umfaßt. Solche Vektoren können als Eingangswerte, Vorhersagewerte und/oder Ergebnisse von Funktionen einer Reduktionsoperation dienen.

Claims (15)

  1. Verfahren zur Auswertung von Booleschen Ausdrücken bestehend aus einer Mehrzahl von Termen, die durch logische Operatoren verknüpft sind, in einem Computersystem (20), in dem Operationen entsprechend Befehlen eines Befehlssatzes durch eine oder mehrere Funktionseinheiten (36-39) ausgeführt werden, wobei die Operationen eine oder mehrere Reduktionsoperationen in einer Form einschließen, die einen Wert aus einem Satz von einem oder mehreren Eingangswerten zum Speichern in einem bestimmten Register (54) bestimmt, wobei für jeden Typ der logischen Operatoren für jeden Term während eines Zyklus folgende Schritte durchlaufen werden: Durchführen einer Ergebnisfunktion (Faus) in der Funktionseinheit (36-39) bezüglich eines oder mehrerer Eingangswerte der Operation, um einen Ergebniswert zu erzeugen; Durchführen einer Aktivierungsfunktion (Fen) in der Funktionseinheit bezüglich eines oder mehrerer Eingangswerte, um einen Booleschen Aktivierungswert zu erzeugen, wobei der Boolesche Aktivierungswert für zumindest eine Kombination der Eingangswerte falsch ist; und Schreiben des Ergebniswertes an einen bestimmten Registerort (58), wenn der zugehörige Boolesche Aktivierungswert wahr ist.
  2. Verfahren nach Anspruch 1, das ferner folgende Verfahrensschritte aufweist: Ausführen eines Satzes von Reduktionsoperationen, um einen Booleschen Ausdruck auszuwerten, wobei die Ausführung des Satzes von Reduktionsoperationen folgende Schritte aufweist: Ausführen einer ersten Reduktionsoperation, um einen ersten Booleschen Wert an einen bestimmten Registerort (58) zu schreiben; und Ausführen eines Satzes von zwei oder mehr Reduktionsoperationen, von denen jede einen zweiten Booleschen Wert an einen bestimmten Registerort (58) schreibt, wenn der Boolesche Aktivierungswert, der durch die Aktivierungsfunktion der Operation erzeugt wird, wahr ist, wodurch der an dem bestimmten Registerort (58) gespeicherte Wert der Wert des Booleschen Ausdrucks ist.
  3. Verfahren nach Anspruch 2, das ferner folgenden Verfahrensschritt aufweist: Nachfolgendes Ausführen einer Operation, die auf den Wert, der in dem bestimmten Register (58) gespeichert ist, konditioniert ist.
  4. Verfahren nach einem der Ansprüche 1 – 3, das ferner folgenden Verfahrensschritt aufweist: Ausführen eines Satzes von Reduktionsoperationen, um einen Booleschen Ausdruck auszuwerten, wobei die Ausführung des Satzes von Reduktionsoperationen folgende Verfahrensschritte umfaßt: Ausführen einer ersten Reduktionsoperation, um einen ersten Booleschen Wert an einen bestimmten Registerort (58) zu schreiben; und Ausführen eines Satzes von zwei oder mehr Reduktionsoperationen, von denen jede einen zweiten Booleschen Wert an einen bestimmten Registerort (58) schreibt, wenn der Boolesche Aktivierungswert der durch die Aktivierungsfunktion der Operation erzeugt wird, wahr ist, wobei der an dem bestimmten Registerort (58) gespeicherte Wert der Wert des Booleschen Ausdrucks ist.
  5. Verfahren nach Anspruch 4, das ferner folgenden Verfahrensschritt aufweist: Aufeinanderfolgendes Ausführen einer Operation, die auf den Wert, der in dem bestimmten Register (58) gespeichert ist, konditioniert ist.
  6. Verfahren nach Anspruch 1, bei dem die Ausführung von zumindest einer der Reduktionsoperationen in der Funktionseinheit (36-39) den folgenden Verfahrensschritt umfaßt: Durchführen einer Ergebnisfunktion und einer Aktivierungsfunktion in der Funktionseinheit (36-39), die zumindest eine Eingangsvariable gemeinsam haben, wobei der Boolesche Aktivierungswert, der durch die Durchführung der Aktivierungsfunktion erzeugt wird, für zumindest eine Kombination von Eingangswerten falsch ist.
  7. Verfahren nach Anspruch 6, das ferner folgenden Verfahrensschritt aufweist: Ausführen eines Satzes von Reduktionsoperationen, um einen Booleschen Ausdruck auszuwerten, wobei die Ausführung des Satzes von Reduktionsoperationen folgende Schritte umfaßt: Ausführen einer ersten Reduktionsoperation, um einen ersten Booleschen Wert an einen bestimmten Registerort (58) zu schreiben; und Ausführen eines Satzes von zwei oder mehr Reduktionsoperationen, von denen jede einen zweiten Booleschen Wert an den bestimmten Registerort (58) schreibt, wenn der Boolesche Aktivierungswert, der durch die Aktivierungsfunktion der Operation erzeugt wird, wahr ist, wobei der an dem bestimmten Registerort (58) gespeicherte Wert der Wert des Booleschen Ausdrucks ist.
  8. Verfahren nach Anspruch 7, das ferner folgenden Verfahrensschritt aufweist: Nachfolgendes Ausführen einer Operation, die auf den Wert, der in dem bestimmten Register (58) gespeichert ist, konditioniert ist.
  9. Verfahren nach Anspruch 1, das ferner folgende Verfahrenschritte aufweist: Ausführen mehrerer Ausgangsreduktionsoperationen in den Funktionseinheiten (36-39), wobei jede der mehreren Ausgangsreduktionsoperationen eine Form hat, die eine Mehrzahl von Werten in einem oder mehreren bestimmten Registern (58) aus einem Satz von einem oder mehreren Eingangswerten bestimmt, wobei das Ausführen jeder der mehreren Ausgangsreduktionsoperationen in einer Funktionseinheit (36-39) für jeden der Mehrzahl von Werten, die durch die Operation bestimmt werden, folgende Schritte umfaßt: Durchführen einer Ergebnisfunktion in der Funktionseinheit (36-39) mit einem oder mehreren Eingangswerten der Operation, um einen Ergebniswert zu erzeugen; Durchführen einer Aktivierungsfunktion in der Funktionseinheit (36-39) mit einem oder mehreren Eingangswerten der Operation, um einen Booleschen Aktivierungswert zu erzeugen; und Schreiben des Ergebniswertes an einen bestimmten Registerort (58), wenn der Boolesche Aktivierungswert wahr ist.
  10. Verfahren nach Anspruch 9, das ferner folgenden Verfahrensschritt aufweist: Ausführen eines Satzes von Reduktionsoperationen, um einen Booleschen Ausdruck auszuwerten, wobei zumindest eine Reduktionsoperation in dem Satz eine Reduktionsoperation mit meh reren Ausgaben ist und die Ausführung des Satzes von Reduktionsoperationen folgende Schritte umfaßt: Ausführen einer ersten Reduktionsoperation, um einen ersten Booleschen Wert an einen bestimmten Registerort (58) zu schreiben; und Ausführen eines Satzes von zwei oder mehr Reduktionsoperationen, von denen jede einen zweiten Booleschen Wert an einen bestimmten Registerort (58) schreibt, wenn der Boolesche Aktivierungswert, der durch die Aktivierungsfunktion der Operation erzeugt wird, wahr ist, wobei der an dem bestimmten Registerort (58) gespeicherte Wert der Wert des Booleschen Ausdrucks ist.
  11. Verfahren nach Anspruch 10, das ferner folgenden Verfahrensschritt aufweist: Nachfolgendes Ausführen einer Operation, die auf den Wert, der in dem bestimmten Register (58) gespeichert ist, konditioniert ist.
  12. Verfahren nach Anspruch 9, bei dem das Ausführen vor zumindest einer der mehreren Reduktionsoperationen in einer Funktionseinheit (36-39) für zumindest einen der Werte, der durch die Operation bestimmt wird, folgende Schritte aufweist: Ausführen einer Aktivierungsfunktion in der Funktionseinheit (36-39) mit zwei oder mehr Eingangswerten, um einen Booleschen Aktivierungswert zu erzeugen, wobei der Boolesche Aktivierungswert, der durch die Durchführung der Aktivierungsfunktion erzeugt wird, für zumindest eine Kombination der Eingangswerte falsch ist.
  13. Verfahren nach Anspruch 12, das ferner folgenden Verfahrensschritt aufweist: Ausführen eines Satzes von Reduktionsoperationen, um einen Booleschen Ausdruck auszuwerten, wobei zumindest eine Reduktionsoperation in dem Satz eine Reduktionsoperation mit mehreren Ausgaben ist, und die Ausführung des Satzes von Reduktionsoperationen folgende Schritte aufweist: Ausführen einer ersten Reduktionsoperation, um einen ersten Booleschen Wert an einen bestimmten Registerort (58) zu schreiben; und Ausführen eines Satzes von zwei oder mehr Reduktionsoperationen, von denen jede einen zweiten Booleschen Wert an den bestimmten Registerort (58) schreibt, wenn der Boolesche Aktivierungswert, der durch die Aktivierungsfunktion der Operation erzeugt wird, wahr ist, wobei der an dem bestimmten Registerort (58) gespeicherte Wert der Wert des Booleschen Ausdrucks ist; und nachfolgendes Ausführen einer Operation, die auf den Wert, der in dem bestimmten Register (58) gespeichert ist, konditioniert ist.
  14. Verfahren nach Anspruch 9, bei dem das Ausführen von zumindest einer der Reduktionsoperationen mit mehreren Ausgaben in einer Funktionseinheit zumindest für einen der durch die Operation erzeugten Werte folgenden Verfahrensschritt aufweist: Durchführen einer Ergebnisfunktion und einer Aktivierungsfunktion in der Funktionseinheit (36-39), die zumindest einen Eingangswert gemeinsam haben, wobei der Boolesche Aktivierungswert, der durch die Durchführung der Aktivierungsfunktion erzeugt wird, für zumindest eine Kombination der Eingangswerte falsch ist.
  15. Verfahren nach Anspruch 14, das ferner folgenden Verfahrensschritt aufweist: Ausführen eines Satzes von Reduktionsoperationen, um einen Booleschen Ausdruck auszuwerten, wobei zumindest eine Reduktionsoperation in dem Satz eine Reduktionsoperation mit mehreren Ausgaben ist, und die Ausführung des Satzes von Reduktionsoperationen folgende Schritte umfaßt: Ausführen einer ersten Reduktionsoperation, um einen ersten Booleschen Wert in einen bestimmten, Registerort (58) zu schreiben; und Ausführen eines Satzes von zwei oder mehr Reduktionsoperationen, von denen jede einen zweiten Booleschen Wert in den bestimmten Registerort (58) schreibt, wenn der Boolesche Aktivierungswert, der durch die Aktivierungsfunktion der Operation erzeugt wird, wahr ist, wodurch der Wert, der in einem bestimmten Registerort gespeichert ist, der Wert des Booleschen Ausdrucks ist; und nachfolgendes Ausführen einer Operation, die auf den Wert, der in dem bestimmten Register (58) gespeichert ist, konditioniert ist.
DE4430195A 1993-12-13 1994-08-25 Verfahren zur Auswertung von Booleschen Ausdrücken Expired - Lifetime DE4430195B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16658293A 1993-12-13 1993-12-13
US166582 1993-12-13

Publications (2)

Publication Number Publication Date
DE4430195A1 DE4430195A1 (de) 1995-06-14
DE4430195B4 true DE4430195B4 (de) 2004-09-23

Family

ID=22603916

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4430195A Expired - Lifetime DE4430195B4 (de) 1993-12-13 1994-08-25 Verfahren zur Auswertung von Booleschen Ausdrücken

Country Status (4)

Country Link
US (1) US6023751A (de)
JP (1) JP3573506B2 (de)
DE (1) DE4430195B4 (de)
GB (1) GB2284690B (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0652509B1 (de) * 1993-11-05 2000-05-10 Intergraph Corporation Befehlscachespeicher mit Kreuzschienenschalter
US5999738A (en) * 1996-11-27 1999-12-07 Hewlett-Packard Company Flexible scheduling of non-speculative instructions
GB2402510A (en) * 2003-06-05 2004-12-08 Advanced Risc Mach Ltd Predication instruction within a data processing system
US7143270B1 (en) * 2004-01-30 2006-11-28 Hewlett-Packard Development Company, L.P. System and method for adding an instruction to an instruction set architecture
US8200947B1 (en) * 2008-03-24 2012-06-12 Nvidia Corporation Systems and methods for voting among parallel threads
US8564616B1 (en) 2009-07-17 2013-10-22 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US8542247B1 (en) 2009-07-17 2013-09-24 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US8447954B2 (en) * 2009-09-04 2013-05-21 International Business Machines Corporation Parallel pipelined vector reduction in a data processing system
US8976195B1 (en) 2009-10-14 2015-03-10 Nvidia Corporation Generating clip state for a batch of vertices
US8384736B1 (en) 2009-10-14 2013-02-26 Nvidia Corporation Generating clip state for a batch of vertices
US9141386B2 (en) * 2010-09-24 2015-09-22 Intel Corporation Vector logical reduction operation implemented using swizzling on a semiconductor chip
US10705841B2 (en) 2015-06-24 2020-07-07 International Business Machines Corporation Instruction to perform a logical operation on conditions and to quantize the Boolean result of that operation
US10620952B2 (en) 2015-06-24 2020-04-14 International Business Machines Corporation Conversion of boolean conditions
US10698688B2 (en) 2015-06-24 2020-06-30 International Business Machines Corporation Efficient quantization of compare results
EP3499362B1 (de) * 2017-12-13 2022-11-30 ARM Limited Vektor add-with-carry-anweisung

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4941085A (en) * 1986-08-27 1990-07-10 Ken Sakamura Data processing system having apparatus for increasing the execution speed of bit field instructions

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US4251861A (en) * 1978-10-27 1981-02-17 Mago Gyula A Cellular network of processors
US4831521A (en) * 1983-11-10 1989-05-16 General Signal Corporation Vital processor implemented with non-vital hardware
US4774421A (en) * 1984-05-03 1988-09-27 Altera Corporation Programmable logic array device using EPROM technology
US4615003A (en) * 1984-06-05 1986-09-30 Burroughs Corporation Condition concentrator and control store for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes
US4644464A (en) * 1984-06-05 1987-02-17 Burroughs Corporation Graph manager for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes
US4742252A (en) * 1985-03-29 1988-05-03 Advanced Micro Devices, Inc. Multiple array customizable logic device
US4722071A (en) * 1985-04-19 1988-01-26 Pertron Controls, Corporation Compiler for evaluating Boolean expressions
US4747046A (en) * 1985-06-28 1988-05-24 Hewlett-Packard Company Mechanism for comparing two registers and storing the result in a general purpose register without requiring a branch
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US5051947A (en) * 1985-12-10 1991-09-24 Trw Inc. High-speed single-pass textual search processor for locating exact and inexact matches of a search pattern in a textual stream
US5349670A (en) * 1986-07-23 1994-09-20 Advanced Micro Devices, Inc. Integrated circuit programmable sequencing element apparatus
US4831573A (en) * 1987-03-06 1989-05-16 Altera Corporation Programmable integrated circuit micro-sequencer device
US5239663A (en) * 1987-06-15 1993-08-24 Centre National De La Recherche Scientifique Self-adapting and multifunctional process and structure for the automated evaluation of logical or arithmetic expressions, particularly for extended database consultation
US5046035A (en) * 1987-08-26 1991-09-03 Ict International Cmos Tech., Inc. High-performance user programmable logic device (PLD)
US4918641A (en) * 1987-08-26 1990-04-17 Ict International Cmos Technology, Inc. High-performance programmable logic device
US5168179A (en) * 1988-11-04 1992-12-01 Silicon Systems, Inc. Balanced modulator for auto zero networks
US5121502A (en) * 1989-12-20 1992-06-09 Hewlett-Packard Company System for selectively communicating instructions from memory locations simultaneously or from the same memory locations sequentially to plurality of processing
IT1244938B (it) * 1991-03-06 1994-09-13 Ezio Lefons Sistema di interrogazione dei dati nelle basi e banche di dati.
CA2103257A1 (en) * 1991-05-17 1992-11-26 Karl M. Fant Null convention speed independent logic
US5287017A (en) * 1992-05-15 1994-02-15 Micron Technology, Inc. Programmable logic device macrocell with two OR array inputs
US5300830A (en) * 1992-05-15 1994-04-05 Micron Semiconductor, Inc. Programmable logic device macrocell with an exclusive feedback and exclusive external input lines for registered and combinatorial modes using a dedicated product term for control
US5309046A (en) * 1992-09-30 1994-05-03 Intel Corporation Apparatus and method for product term allocation in programmable logic
US5450608A (en) * 1993-04-15 1995-09-12 Intel Corporation Programmable logic having selectable output states for initialization and resets asynchronously using control bit associated with each product term

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4941085A (en) * 1986-08-27 1990-07-10 Ken Sakamura Data processing system having apparatus for increasing the execution speed of bit field instructions

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MILLS, J.W.: A pipelined architecture for logic programming with a complex but single-cycle instruction set. In: Engineering Applications of Artificial Intelligence, Vol. 3, No. 1, 1990, S. 30-42 *
US-Z.: IEEE Transaction on Computers, Vol. 39, März 1990, S. 349-359 *

Also Published As

Publication number Publication date
DE4430195A1 (de) 1995-06-14
GB2284690A (en) 1995-06-14
JPH07244589A (ja) 1995-09-19
GB2284690B (en) 1998-07-01
JP3573506B2 (ja) 2004-10-06
US6023751A (en) 2000-02-08
GB9424221D0 (en) 1995-01-18

Similar Documents

Publication Publication Date Title
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE60018078T2 (de) Einstellung von bedingungswerten in einem rechner
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken
DE2714805C2 (de)
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE69821957T2 (de) Datenprozessor mit paralleler decodierung und ausführung von daten- und adressbefehlen
DE69435047T2 (de) Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung
DE2234867C2 (de) Anordnung in einer Datenverarbeitungsanlage zum Steuern der Verarbeitung zweier voneinander unabhängiger Befehlsfolgen
DE102011081585B4 (de) Prozessorarchitektur mit erhöhter Effizienz
DE3424962C2 (de)
DE2542751C2 (de) Datenverarbeitungsanlage
DE4342250A1 (de) Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners
DE2524046C2 (de) Elektronische Datenverarbeitungsanlage
DE69835425T2 (de) Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur
DE3306084A1 (de) Rechnerarchitektur zur gleitkomma -addition
DE19735348A1 (de) Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern
DE112013006309T5 (de) Funktionseinheit mit Baumstruktur zur Unterstützung eines Vektorsortieralgorithmus und anderer Algorithmen
DE19983098B4 (de) Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren
DE4403917C2 (de) Vorrichtung zum Berechnen einer Bit-Besetzungszählung
DE3638572A1 (de) Vektorprozessor
DE112011103211T5 (de) Auf einem Halbleiterchip implementierte vektorlogische Reduktionsoperation
EP0825540B1 (de) Prozessor mit Pipelining-Aufbau
DE2548720C2 (de) Mikroprogramm-Steuerwerk
DE3307194C2 (de)
DE102020131154A1 (de) Gefährdungsabschwächung für leichte Prozessorkerne

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

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

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

R081 Change of applicant/patentee

Owner name: SAMSUNG ELECTRONICS CO., LTD., SUWON-SI, KR

Free format text: FORMER OWNER: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., HOUSTON, TEX., US

Effective date: 20110426

R071 Expiry of right
R071 Expiry of right