DE4430195A1 - Computersystem und Verfahren zur Auswertung von Vorhersagen und Booleschen Ausdrücken - Google Patents

Computersystem und Verfahren zur Auswertung von Vorhersagen und Booleschen Ausdrücken

Info

Publication number
DE4430195A1
DE4430195A1 DE4430195A DE4430195A DE4430195A1 DE 4430195 A1 DE4430195 A1 DE 4430195A1 DE 4430195 A DE4430195 A DE 4430195A DE 4430195 A DE4430195 A DE 4430195A DE 4430195 A1 DE4430195 A1 DE 4430195A1
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.)
Granted
Application number
DE4430195A
Other languages
English (en)
Other versions
DE4430195B4 (de
Inventor
Michael Schlansker
B Ramakrishna Rau
Vinod 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

Landscapes

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

Description

Diese Erfindung bezieht sich im allgemeinen auf die Auswer­ tung von Ausdrücken und auf die Steuerung der Programmaus­ führung in einem Computersystem, und insbesondere bezieht sie sich auf einen Architekturmechanismus und ein Verfahren zur schnellen Auswertung von Booleschen Reduktionen und auf die vorhersagbare Ausführung in einem Computersystem.
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 Booleschen 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-Funk­ tion (dargestellt durch ∧). Im allgemeinen kann jeder Boole­ sche Ausdruck in der Form der Summe von Produkten ausge­ drückt werden, die aus einer Anzahl von UND-Reduktionen, denen eine ODER-Reduktion folgt, besteht.
Typischerweise ergeben sich Boolesche Werte, die in Program­ men 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-Re­ duktionsausdrü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 Pro­ grammausführung außerordentlich wichtig. Dies ist besonders im Zusammenhang mit Computersystemarchitekturen wichtig, die einen Befehlsebenenparallelismus verwenden, wie z. B. Archi­ tekturen mit sehr großen Befehlsworten (VLIW = Very Large Instruction Word) oder sogenannten Supermaßstabarchi­ tekturen. 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 Programmtransforma­ tionen 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 Trans­ formationen schließen die Kombination von mehreren Zweigen, die aus einer ausgebreiteten Schleife in einen einzelnen Zweig existieren, und die Höhenreduktion der Steuerungsab­ hängigkeit in einer ausgebreiteten "While"-Schleife ein.
Bei Computern, denen die Fähigkeit fehlt, Operationen paral­ lel 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 ent­ hä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 Befehlsebenenparalle­ lismus 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 aus­ zugeben, und dann die Reduktion unter Verwendung eines bi­ nären Baums von UND-Operationen durchzuführen. Es sei z. B. der oben gegebene Ausdruck (2) angenommen. Unter der Annah­ me, daß der Prozessor in dem Computersystem zumindest vier Funktionseinheiten aufweist, kann der Ausdruck ausgewertet werden, wie es in der folgenden Tabelle gezeigt ist:
Beispiel der Höhenreduktionstechnik
Zyklus
Befehl
0
r₁=a<b; r₂=¬(c<d); r₃=a<c; r₄=b<d;
α r₅=r₁ ∧ r₂; r₆=r₃ ∧ r₄;
r=r₅ ∧ r₆
der Wert r ist zur Verwendung verfügbar
Bei dem Beispiel aus Tabelle 1 wird der Ausdruck (2) mittels einer einfachen Höhenreduktionstechnik in nur 3α-Zyklen aus­ gewertet. Mit dieser Höhenreduktionstechnik kann ein Reduk­ tionsausdruck, der n Vergleichsoperationen enthält, im all­ gemeinen in (1+(log₂n))α Zyklen ausgewertet werden, voraus­ gesetzt, das Computersystem kann n Operationen parallel aus­ führen. Sogar wenn Quellen verfügbar sind, die einen zusätz­ lichen Parallelismus bereitstellen, benötigt diese Technik jedoch immer noch zumindest (1+(log₂n))α Zyklen.
Es ist die Aufgabe der vorliegenden Erfindung, einen Mecha­ nismus und eine Technik zur Auswertung eines Reduktionsaus­ drucks in effektiv nur α Zyklen zu schaffen, vorausgesetzt, das Computersystem weist eine ausreichende Parallelität auf.
Diese Aufgabe wird durch ein Verfahren und ein Computersy­ stem zur Auswertung Boolescher Ausdrücke gemäß dem Patentan­ spruch 1 und 17 gelöst.
Das Verhalten dieses Verfahrens und dieser Technik ist le­ diglich 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 Erfin­ dung Operationen gleichzeitig oder in irgendeiner erwünsch­ ten Reihenfolge ausgeführt werden. Folglich ist ein Kompiler z. B. frei, die Ausführung von Vergleichsoperationen mit an­ deren Operationen im Programm zu überlappen, was für Compu­ tersysteme 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 Operatio­ nen, einen Wert gleichzeitig in dieses Register zu schrei­ ben, vorausgesetzt, alle durch diese Operationen geschrie­ benen 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 unter­ schiedliche 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 Gleichkommaregister oder ein Re­ gister 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 Compu­ tersystem einen Satz von Reduktionsoperationen. Die Ausfüh­ rung jeder Reduktionsoperation ist im allgemeinen durch zwei Funktionen der Eingangswerte der Operation definiert, eine Ergebnisfunktion und eine Aktivierungsfunktion. Die Ergeb­ nisfunktion 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 wer­ den oder nicht. Dementsprechend kann das Ergebnis raus durch eine Reduktionsoperation wie folgt ausgedrückt werden:
raus = Faus (rein1, rrein2, . . . , rein n) (3)
wenn Fen (rein1, rrein2, . . . , rein n).
Wobei Faus die Ergebnisfunktion ist, und Fen die Aktivie­ rungsfunktion ist. Die Ergebnis- und Aktivierungsfunktion kann zumindest die folgenden Booleschen Funktionen ein­ schließen: Vergleiche von ganzzahligen oder Gleitkomma-Ein­ gangswerten, 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 ausgewer­ tet werden. Weiterhin kann jeder allgemeine Boolesche Aus­ druck, der in der Form einer Summe von Produkten ausgedrückt ist, in effektiv 2α Zyklen ausgewertet werden. Der obige Re­ duktionsausdruck (2) kann z. B. durch gleichzeitiges Ausfüh­ ren von vier Operationen ausgewertet werden, die abhängig von dem Ergebnis eines Vergleichs einen Booleschen Nullwert konditional in ein Register schreiben, das auf Eins vorein­ gestellt ist, wie es in der folgenden Tabelle dargestellt ist.
Beispiel des Auswertungsausdrucks (2) gemäß der Erfindung
Zyklus
Befehl
r=1; (überlappt mit vorhergehenden Operationen)
o r=UND -< (a, b);
r=UNDc -< (c, d);
r=UND -< (a, c); und
r=UND -< (b, d).
α Der Wert r ist für die Verwendung verfügbar.
In der obigen Tabelle ist das Register r auf Eins voreinge­ stellt. Die Operationen bestimmtes-UND schreiben bedingt einen Booleschen Nullwert in das Register r, wenn das Ergeb­ nis einer bestimmten Vergleichsoperation (< oder <) Null ist. Die Operation bestimmtes-UNDc schreibt einen Booleschen Nullwert in das Register r, wenn das Komplement des Ergeb­ nisses der bestimmten Vergleichsoperation Null ist. Obwohl mehr als eine der Operationen gleichzeitig in das Register schreiben kann, sind alle Werte, die geschrieben werden kön­ nen, 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 Voreinstellungsope­ ration effektiv keine zusätzliche Ausführungszeit.) Wenn das Ergebnis irgendeiner der durch die UND-Operationen durchge­ führten Vergleiche oder das Komplement des durch die UNDc- Operation durchgeführten Vergleichs Null ist, wird das Re­ gister 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 einge­ stellt.
Zusätzlich kann jeder allgemeine Boolesche Ausdruck, der in der Form der Summe von Produkten ausgedrückt ist, in 2α Zyk­ len ausgewertet werden. (Dies setzt wiederum voraus, daß die Voreinstellungsoperationen sich mit vorhergehenden Operatio­ nen überlappen, so daß diese keine zusätzlichen Zyklen be­ nö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 vorhersag­ bare Ausführung besonders nützlich. Eine vorhersagbare Aus­ fü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 vor­ hersagbare 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 zumin­ dest das Schreiben des Ergebnisses der Additionsfunktion findet nur statt, wenn die vorhersagbare Eingabe den bestim­ mten 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:
Fig. 1 ein verallgemeinertes Blockdiagramm eines Computer­ systems gemäß einem bevorzugten Ausführungsbeispiel der Erfindung;
Fig. 2 ein verallgemeinertes Blockdiagramm einer zentralen Verarbeitungseinheit in dem Computersystem aus Fig. 1 mit mehreren Funktionseinheiten für die Befehls­ ebenenparallelität; und
Fig. 3 ein verallgemeinertes Blockdiagramm eines Registers in der zentralen Verarbeitungseinheit aus Fig. 2.
Anhand von Fig. 1 wird ein Computersystem 20 gemäß einem be­ vorzugten Ausführungsbeispiel der Erfindung 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 Speicher­ chips mit wahlfreiem Zugriff ausgeführt, kann aber mit Nur- Lese-Speicherchips oder anderen elektronischen Speicherge­ rä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 Fig. 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 Funk­ tionaleinheiten 36-39, die Operationen gleichzeitig ent­ sprechend den Befehlen eines Programms zur Ausführung der erwünschten Aufgabe oder Berechnung ausführen. Die Befehle, die in dem Speicher 24 (Fig. 1) gespeichert sind, werden in die Befehlseinheit 34 eingelesen. Eine Busschnittstellen­ schaltung 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 Be­ fehlseinheit 34 dekodiert die Befehle und erzeugt Steue­ rungssignale, die einen Satz von Funktionseinheiten 36-39 anweisen, Operationen in Übereinstimmung mit den Befehlen auszuführen.
Die Befehlseinheit 34 ist aufgebaut, um auf einen vorbe­ stimmten 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 Lo­ gikoperationsbefehle, Arithmetikoperationsbefehle und Gleit­ kommaoperationsbefehle. Der Befehlssatz umfaßt ebenfalls Da­ tenübertragungsbefehle zum Übertragen von Daten zwischen einem Speicher und einem Satz von Registern 46 und Zwischen­ registern. In Übereinstimmung mit der Erfindung sind einige der Operationen, die die Befehlseinheit 34 an die Funktions­ einheiten zur Durchführung weiterleitet, Operationen für eine vorhersagbare Programmausführung und für die Auswertung von Booleschen Reduktionen, die im folgenden genauer be­ schrieben 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 all­ gemeinen 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 eben­ falls eines oder mehrere Ergebnisse der Operation in ein Re­ gister, 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 be­ reitzustellen.
In Fig. 3 speichert zumindest eines der Register 46 (Fig. 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 Gleit­ kommawerten.)
Im allgemeinen umfaßt der Speicher 58 einen oder mehrere Zwischenspeicher, Flip-Flops oder äquivalente statische oder dynamische Speicherschaltungen. Der Speicher 58 kann aus­ gefü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 Boole­ sche Eins dar) dargestellt sein. Die Mehrbit-Speicherausfüh­ rung 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 Funk­ tionseinheiten 36-39 in das Register 54 geschrieben werden. Die Anschlüsse 60-63 sind im allgemeinen mit den Funk­ tionseinheiten 36-39 in einer Eins-zu-Eins-Beziehung sowohl mit einem Datenbus 66-69 als auch mit einer Schreib­ aktivierungsleitung 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 Schreibaktivierungs­ leitung 70-73 aus. Als Reaktion auf das Schreibaktivie­ rungssignal 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 Schreibaktivierungs­ signal vom Anschluß 61 ausgibt, wird der Wert auf dem Daten­ bus 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 ge­ schrieben. (In dem Fall der Ausführung zur Speicherung von Vorhersagevektoren können für jeden der Vorhersagewerte in dem Vektor getrennte Aktivierungsleitungen und Signale ver­ wendet 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 Schreibvor­ gä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 iden­ tisch mit dem geschrieben Wert.
Der zu speichernde Wert wird, wenn mehrere Werte gleichzei­ tig geschrieben werden, durch eine Auswahlschaltung 76 abge­ leitet, die zwischen den Anschlüssen 60-63 und dem Spei­ cher 58 in dem Register 54 geschaltet ist. Die Auswahlschal­ tung 76 kann den gespeicherten Wert auf verschiedene Arten ableiten. Die Auswahlschaltung kann z. B. eine UND- oder ODER-Funktion bzgl. der mehrfach geschriebenen Werte durch­ fü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 Er­ gebnis undefiniert. Folglich ist der durch die Auswahlschal­ tung 76 gespeicherte Wert für den Fall von unterschiedlichen gleichzeitig geschriebenen Werten nicht wichtig.
In Fig. 2 sind die Funktionseinheiten 36-39 durch die Steu­ erung der Befehlseinheit 34 wirksam, um bestimmte Opera­ tionen auszuführen, die dem Befehl eines Programms ent­ sprechen. 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 vor­ hersagbare Programmausführung und die Auswertung von Boole­ schen Reduktionsausdrücken nützlich sind. Die Reduktions­ operationen haben jeweils die folgende Form:
raus = Operation (rein1, rrein2, . . . , rein n) (4).
Mit anderen Worten agiert jede Reduktionsoperation auf einen oder mehrere Eingaben (rein1, rrein2, . . . , 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, rrein2, . . . , rein n) (5)
wenn Fen (rein1, rrein2, . . . , rein n).
Die Ergebnisfunktion (Faus) bestimmt den neuen Wert eines Ergebnisses, das in einem bestimmten Register gespeichert ist, wenn ein Ergebnis gespeichert ist. Die Aktivierungs­ funktion (Fen) berechnet einen Booleschen Wert, der be­ stimmt, 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 Er­ gebnisfunktion mit Booleschem Wert und eine Aktivierungs­ funktion mit Booleschem Wert typisch. Jede Reduktionsope­ ration 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. Bei­ spiele 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 ähn­ liches) bezüglich ganzzahliger Eingangswerte, Vergleichs­ funktionen 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 Re­ gister, 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 be­ stimmte 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 Fig. 3 dargestellt ist und oben beschrieben wur­ de, zur Handhabung mehrerer gleichzeitiger Schreibvorgänge.
Die Aktivierungsfunktionen bestimmen, ob der Ergebniswert, der durch die Ergebnisfunktion erzeugt wird, in das Ziel­ register 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 Zielregis­ ter ein.
Die folgende Tabelle 3 stellt eine Wahrheitstabelle für vier Klassen von Reduktionsoperationen bei dem bevorzugten Aus­ führungsbeispiel der Erfindung dar.
Tabelle 3
Wahrheitstabelle für UND- oder ODER-Reduktionsoperationen
In Tabelle 3 stellt die linkeste Spalte die Zustände eines "Zustands"-Wertes dar, der als ein Ergebnis einer Ver­ gleichsfunktion 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 Fig. 3 dargestellt ist, führen die Funktionseinheiten 36-39 die oben beschriebenen UND- und ODER-Reduktionsopera­ tionen durch Anordnen des Wertes, der in der Wertespalte der folgenden Tabelle 4 gezeigt ist, auf ihrem jeweiligen Daten­ bus 66-69 durch, und steuern ihre jeweiligen Schreibakti­ vierungsleitungen an, wie es in der Schreibaktivierungs­ signalspalte gezeigt ist.
Tabelle 4
Ausführung von UND- und ODER-Reduktionsoperationen
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 Ergebnisfunk­ tionen 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 Ergeb­ nis von Null, während diejenigen der ODER- und ODERc-Opera­ tionsklassen immer ein Ergebnis von Eins erzeugen. Die "Schreibaktivierungssignal"-Spalte zeigt, daß die Aktivie­ rungsfunktionen für diese Operationsklassen die Vergleichs­ funktion 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 Vergleichsfunk­ tion, 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 Reduk­ tionsoperationen dar, die bei dem bevorzugten Ausführungs­ beispiel der Erfindung bereitgestellt werden, insbesondere die UND-, UNDc-, ODER- und ODERc-Reduktionsoperationsklas­ sen. 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-Re­ duktionsoperationen 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 Bedin­ gung, ob eine Boolesche Null in das Zielregister geschrieben wird. Es wird darauf hingewiesen, daß die Reduktionsoperati­ onen (6) und (8) dieselben Reduktionsoperationen sind, aber unterschiedliche Eingangswerte bestimmen.
Um den UND-Reduktionsausdruck (2) mit den Reduktionsoperati­ onen (6-9) auszuwerten, wird das Register (r) zuerst auf einen Booleschen Eins-Wert voreingestellt. Dann werden je­ weils die Reduktionsoperationen (6-9) ausgeführt. Bevor­ zugterweise, aber nicht notwendigerweise, werden die Reduk­ tionsoperationen 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 Vergleichsoperations­ abschnitt von UNDc eine Eins erzeugt (das Komplement des Vergleichs ist eine Null), dann wird eine Null in das Ziel­ register geschrieben. Dementsprechend wird, nachdem alle Re­ duktionsoperationen (6) bis (9) ausgeführt sind, das Zielre­ gister eine Eins enthalten, wenn alle Terme des UND-Redukti­ onsausdrucks (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 aus­ gewertet, wenn die Reduktionsoperationen (6-9) parallel ausgeführt werden.
Bei einem alternativen Ausführungsbeispiel der Erfindung be­ stimmen die Reduktionsoperationen den Wert, der in das Ziel­ register geschrieben wird, auf der Grundlage einer vorher­ sagbaren Eingabe mit Booleschem Wert, und auf der Grundlage des Bedingungswertes, der durch eine Vergleichsfunktion er­ zeugt wird. Bei diesem alternativen Ausführungsbeispiel be­ stimmt die Befehlseinheit 34 einen Vorhersagewert (oder ein Register, das den Vorhersagewert enthält) für jede Redukti­ onsoperation, zusätzlich zu dem Eingangswert oder Werten und dem Zielregister der Operation. Die folgende Tabelle 5 stel­ lt einige exemplarische Klassen von Reduktionsoperationen bei diesem alternativen Ausführungsbeispiel dar:
Tabelle 5
Wahrheitstabelle der Reduktionsoperationen mit vorhersagbarer Eingabe
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 Zielregis­ ter. Die konditionale Klasse schreibt die Bedingung abhängig von der vorhersagbaren Eingabe in das Zielregister. Ab­ schließend werden die ODER- und UND-Klasse, wie in Fig. 3 gezeigt ist, abhängig von der vorhersagbaren Eingabe durch­ geführt. Wie bei den Reduktionsoperationen, die in Tabelle 3 gezeigt sind, ist die Ausführung jeder dieser Reduktions­ operationen durch eine Ergebnisfunktion, die einen Ergebnis­ wert erzeugt, und eine Aktivierungsfunktion, die bestimmt, ob der Ergebniswert in ein bestimmtes Zielregister geschrie­ ben wird, definiert.
Mit den Reduktionsoperationen der Arten, die in Tabelle 5 gezeigt sind, kann das Verhalten eines Satzes von Reduk­ tionsoperationen, 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 Kon­ ditional-Klasse zur Voreinstellung eines Zielregisters und zwei oder mehr UND-Klassenoperationen einschließt, kann z. B. eingestellt sein, um einen UND-Reduktionsausdruck (z. B. Aus­ druck (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 aus­ geführt ist, ist für die vorhersagbare Ausführung von Ope­ rationen in einem Programm besonders nützlich. Bei dem be­ vorzugten Ausführungsbeispiel der Erfindung können die Ope­ rationen ein Register bestimmen, in dem ein Boolescher Vor­ hersagewert gespeichert ist. Die Ausführung der Operation wird dann auf den Vorhersagewert konditioniert. Bei dem be­ vorzugten 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 fol­ gende Form:
raus,1, raus,2, . . . , raus,m = op(rein,1, rein,2, . . . ,rein,n) (10).
Wobei die mehreren Ergebniswerte (raus,1, raus,2, . . . , raus,m) durch Ausführen der Operation auf den Satz von Ein­ gangswerten (rein,1, rein,2, . . . , rein,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 Ergeb­ nisse 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 Verglei­ chen auszuwerten. Bei diesem weiteren Ausführungsbeispiel können beide Reduktionsausdrücke gleichzeitig mit nur vier Funktionseinheiten ausgewertet werden. Die vier Funktions­ einheiten 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 Opera­ tionen von der wahren und falschen Seite eines Bedingungs­ zweigs verwendet werden.
Nachdem die Prinzipien der vorliegenden Erfindung anhand eines bevorzugten Ausführungsbeispiels beschrieben und dar­ gestellt 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 Be­ fehlsebene ist, ist die Erfindung ebenfalls auf Multi-Pro­ zessor-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 Boole­ schem Wert, die einem Reduktionsausdruck zugeordnet ist, ge­ trennt von den Reduktionsoperationen, die den Ausdruck aus­ werten, durchgeführt werden. Genauer gesagt können die Ver­ gleichsfunktionen mit Booleschem Wert in einem ersten Satz von Operationen durchgeführt werden, um einen Satz von Be­ dingungen für einen erwünschten Reduktionsausdruck zu bil­ den. 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 hinge­ wiesen, daß dies immer noch den Vorteil gegenüber den be­ kannten Höhenreduktionstechniken aufweist, nachdem die Re­ duktionsfunktionen gleichzeitig durchgeführt werden können und nicht als binärer Baum von zwei Eingangs-UND-Operatio­ nen.
Wiederum als weiteres Beispiel können die Reduktionsopera­ tionen 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 (20)

1. Verfahren zur Auswertung von Booleschen Ausdrücken und zur Vorhersage in einem Computersystem (20), mit fol­ genden Verfahrensschritten:
Bereitstellen eines Computersystems (20), in dem Opera­ tionen entsprechend Befehlen eines Befehlssatzes durch eine oder mehrere Funktionseinheiten (36-39), die po­ tentiell nach dem Pipeline-Verfahren arbeiten, ausge­ führt werden;
Ausführen von Operationen in den Funktionseinheiten (36-39), wobei die Operationen eine oder mehrere Reduk­ tionsoperationen in einer Form einschließen, die einen Wert bestimmt, der in einem bestimmten Register (54) aus einem Satz von einem oder mehreren Eingangswerten gespeichert wird, wobei die Ausführung einer Redukti­ onsoperation in einer Funktionseinheit (36-39) folgende Schritte umfaßt:
Durchführen einer Ergebnisfunktion in der Funk­ tionseinheit (36-39) bezüglich eines oder mehrerer Eingangswerte der Operation, um einen Ergebniswert zu erzeugen;
Durchführen einer Aktivierungsfunktion in der Funk­ tionseinheit bezüglich eines oder mehrerer Ein­ gangswerte der Operation, um einen Booleschen Aktivierungswert zu erzeugen; und
Schreiben des Ergebniswertes an einen bestimmten Registerort, wenn der Boolesche Aktivierungswert wahr ist.
2. Verfahren nach Anspruch 1, das ferner folgende Verfah­ rensschritte aufweist:
Ausführen eines Satzes von Reduktionsoperationen, um einen Booleschen Ausdruck auszuwerten, wobei die Aus­ fü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 Reduk­ tionsoperationen, 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 bestimm­ ten Registerort (58) gespeicherte Wert der Wert des Booleschen Ausdrucks ist.
3. Verfahren nach Anspruch 2, das ferner folgenden Verfah­ rensschritt aufweist:
Nachfolgendes Ausführen einer Operation, die auf den Wert, der in dem bestimmten Register (58) gespeichert ist, konditioniert ist.
4. Verfahren nach Anspruch 1, bei dem die Ausführung von zumindest einer der Reduktionsoperationen in einer Fun­ ktionseinheit (36-39) den folgenden Verfahrensschritt umfaßt:
Durchführen einer Aktivierungsfunktion in der Funk­ tionseinheit (36-39) mit zwei oder mehr Eingangswerten, um einen Booleschen Aktivierungswert zu erzeugen, wobei der Boolesche Aktivierungswert, der durch die Durchfüh­ rung der Aktivierungsfunktion erzeugt wird, für zumin­ dest eine Kombination der Eingangswerte falsch ist.
5. Verfahren nach Anspruch 4, das ferner folgenden Ver­ fahrensschritt aufweist:
Ausführen eines Satzes von Reduktionsoperationen, um einen Booleschen Ausdruck auszuwerten, wobei die Aus­ fü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 Reduk­ tionsoperationen, 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.
6. Verfahren nach Anspruch 5, das ferner folgenden Ver­ fahrensschritt aufweist:
Aufeinanderfolgendes Ausführen einer Operation, die auf den Wert, der in dem bestimmten Register (58) gespei­ chert ist, konditioniert ist.
7. Verfahren nach Anspruch 1, bei dem die Ausführung von zumindest einer der Reduktionsoperationen in der Funk­ tionseinheit (36-39) den folgenden Verfahrensschritt umfaßt:
Durchführen einer Ergebnisfunktion und einer Aktivie­ rungsfunktion in der Funktionseinheit (36-39), die zu­ mindest eine Eingangsvariable gemeinsam haben, wobei der Boolesche Aktivierungswert, der durch die Durch­ führung der Aktivierungsfunktion erzeugt wird, für zu­ mindest eine Kombination von Eingangswerten falsch ist.
8. Verfahren nach Anspruch 7, das ferner folgenden Verfah­ rensschritt aufweist:
Ausführen eines Satzes von Reduktionsoperationen, um einen Booleschen Ausdruck auszuwerten, wobei die Aus­ fü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 Reduk­ tionsoperationen, von denen jede einen zweiten Booleschen Wert an den bestimmten Registerort (58) schreibt, wenn der Boolesche Aktivierungswert, der durch die Aktivierungsfunktion der Operation er­ zeugt wird, wahr ist, wobei der an dem bestimmten Registerort (58) gespeicherte Wert der Wert des Booleschen Ausdrucks ist.
9. Verfahren nach Anspruch 8, das ferner folgenden Verfah­ rensschritt aufweist:
Nachfolgendes Ausführen einer Operation, die auf den Wert, der in dem bestimmten Register (58) gespeichert ist, konditioniert ist.
10. Verfahren nach Anspruch 1, das ferner folgende Verfah­ renschritte 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 Funk­ tionseinheit (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 Funk­ tionseinheit (36-39) mit einem oder mehreren Ein­ gangswerten der Operation, um einen Ergebniswert zu erzeugen;
Durchführen einer Aktivierungsfunktion in der Funk­ tionseinheit (36-39) mit einem oder mehreren Ein­ gangswerten der Operation, um einen Booleschen Aktivierungswert zu erzeugen; und
Schreiben des Ergebniswertes an einen bestimmten Registerort (58), wenn der Boolesche Aktivierungs­ wert wahr ist.
11. Verfahren nach Anspruch 10, das ferner folgenden Ver­ fahrensschritt aufweist:
Ausführen eines Satzes von Reduktionsoperationen, um einen Booleschen Ausdruck auszuwerten, wobei zumindest eine Reduktionsoperation in dem Satz eine Reduktions­ operation 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 an einen bestimmten Registerort (58) zu schreiben; und
Ausführen eines Satzes von zwei oder mehr Reduk­ tionsoperationen, 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.
12. Verfahren nach Anspruch 11, das ferner folgenden Ver­ fahrensschritt aufweist:
Nachfolgendes Ausführen einer Operation, die auf den Wert, der in dem bestimmten Register (58) gespeichert ist, konditioniert ist.
13. Verfahren nach Anspruch 10, bei dem das Ausführen von 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 Funktions­ einheit (36-39) mit zwei oder mehr Eingangswerten, um einen Booleschen Aktivierungswert zu erzeugen, wobei der Boolesche Aktivierungswert, der durch die Durch­ führung der Aktivierungsfunktion erzeugt wird, für zumindest eine Kombination der Eingangswerte falsch ist.
14. Verfahren nach Anspruch 13, das ferner folgenden Ver­ fahrensschritt aufweist:
Ausführen eines Satzes von Reduktionsoperationen, um einen Booleschen Ausdruck auszuwerten, wobei zumindest eine Reduktionsoperation in dem Satz eine Reduktions­ operation 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 Reduk­ tionsoperationen, von denen jede einen zweiten Booleschen Wert an den bestimmten Registerort (58) schreibt, wenn der Boolesche Aktivierungswert, der durch die Aktivierungsfunktion der Operation er­ zeugt 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) ge­ speichert ist, konditioniert ist.
15. Verfahren nach Anspruch 10, 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 Ver­ fahrensschritt aufweist:
Durchführen einer Ergebnisfunktion und einer Aktivie­ rungsfunktion in der Funktionseinheit (36-39), die zu­ mindest 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.
16. Verfahren nach Anspruch 15, das ferner folgenden Ver­ fahrensschritt aufweist:
Ausführen eines Satzes von Reduktionsoperationen, um einen Booleschen Ausdruck auszuwerten, wobei zumindest eine Reduktionsoperation in dem Satz eine Reduktions­ operation 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 Reduk­ tionsoperationen, von denen jede einen zweiten Booleschen Wert in den bestimmten Registerort (58) schreibt, wenn der Boolesche Aktivierungswert, der durch die Aktivierungsfunktion der Operation er­ zeugt 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) ge­ speichert ist, konditioniert ist.
17. Ein Computersystem mit:
einer Mehrzahl von Registern (46) zum Speichern von Werten;
einer oder mehrerer Funktionseinheiten (36-39), die mit dem Register (46) verbunden sind, wobei jede Funktions­ einheit (36-39) eine Mehrzahl von Operationen ausführt, die den Befehlen eines Befehlssatzes für das Computer­ system (20) entsprechen, wobei die Operationen Redukti­ onsoperationen zum Bestimmen eines Wertes aus einem oder mehreren Eingangswerten, die an einem bestimmten Speicherort (58) in den Registern (46) gespeichert sind, umfassen, und
wobei die Funktionseinheiten (36-39) eine Reduktions­ operation durch Durchführen einer Ergebnisfunktion be­ züglich eines oder mehrerer Eingangswerte der Operation ausführen, um einen Ergebniswert zu erzeugen, durch Durchführen einer Aktivierungsfunktion bezüglich eines oder mehrerer Eingangswerte der Operation, um einen Booleschen Aktivierungswert zu erzeugen, und durch Schreiben des Ergebniswertes an einen bestimmten Re­ gisterort (58), wenn der Boolesche Aktivierungswert wahr ist, ausführen.
18. Computersystem nach Anspruch 17, bei dem die Mehrzahl der Register (46) folgende Merkmale umfaßt:
ein Register (54) zum Aufnehmen mehrerer gleichzeitig geschriebener Werte, wobei das Register (54) wirksam ist, um einen Wert zu speichern, der auf einem oder mehreren von mehreren Booleschen Werten beruht, die gleichzeitig in das Register geschrieben wurden, wenn jeder der Booleschen Werte, die in das Register ge­ schrieben werden, identisch sind.
19. Computersystem nach Anspruch 18, das ferner folgende Merkmale aufweist:
eine Einrichtung (66) zum Ableiten der Werte, die in dem Register (54) gespeichert werden, wenn mehrere identische Werte in das Register durch die Funktions­ einheiten (36-39) gleichzeitig geschrieben werden,
wobei die Register zum Annehmen mehrerer gleichzeitig geschriebener Werte eine Mehrzahl von Eingangsan­ schlüssen (60-63) haben, wobei die Eingangsanschlüsse (60-63) mit den Funktionseinheiten (36-39) in einer Eins-zu-Eins-Beziehung zum Empfangen eines Wertes und eines Schreibaktivierungssignals von jeder Funktions­ einheit verbunden sind, wobei die von einer Funktions­ einheit empfangenen Werte in das Register (54) ge­ schrieben werden, wenn das Schreibaktivierungssignal der Funktionseinheit ausgegeben wird;
wobei die Funktionseinheiten (36-39), wenn sie eine Reduktionsoperation durchführen, die einen Registerort (58) in dem Register (54) bestimmt, den Ergebniswert, der durch das Durchführen der Ergebnisfunktion der Operation erzeugt wird, an das Register (54) senden, und das Schreibaktivierungssignal ausgeben, wenn der Boolesche Aktivierungswert, der durch die Durchführung der Aktivierungsfunktion erzeugt wird, wahr ist.
20. Computersystem nach Anspruch 18, bei dem die Funktions­ einheiten (36-39) wirksam sind, um eine Reduktions­ operation zum Bestimmen mehrerer Werte, aus einem oder mehreren Eingangswerten, die in dem Register (54) gespeichert sind, durch Durchführen einer Ergebnisfunk­ tion, für jeden einer Mehrzahl von Werten, die durch die Operation bestimmt sind, bezüglich einer oder meh­ rerer der Eingangswerte der Operation, um einen Ergeb­ niswert zu erzeugen, durch Durchführen einer Aktivie­ rungsfunktion bezüglich einer oder mehrerer der Ein­ gangswerte der Operation, um einen Booleschen Akti­ vierungswert zu erzeugen, und durch Schreiben des Er­ gebniswertes an einen bestimmten Registerort (54), wenn der Boolesche Aktivierungswert wahr ist, auszuführen.
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 true DE4430195A1 (de) 1995-06-14
DE4430195B4 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
DE69433124T2 (de) * 1993-11-05 2004-05-27 Intergraph Corp., Huntsville Befehlsspeicher mit assoziativem 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
US8542247B1 (en) 2009-07-17 2013-09-24 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US8564616B1 (en) 2009-07-17 2013-10-22 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
US8384736B1 (en) 2009-10-14 2013-02-26 Nvidia Corporation Generating clip state for a batch of vertices
US8976195B1 (en) 2009-10-14 2015-03-10 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
US10698688B2 (en) 2015-06-24 2020-06-30 International Business Machines Corporation Efficient quantization of compare results
US10620952B2 (en) 2015-06-24 2020-04-14 International Business Machines Corporation Conversion of boolean conditions
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
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
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
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
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
JP3573506B2 (ja) 2004-10-06
GB2284690B (en) 1998-07-01
GB9424221D0 (en) 1995-01-18
US6023751A (en) 2000-02-08
GB2284690A (en) 1995-06-14
JPH07244589A (ja) 1995-09-19
DE4430195B4 (de) 2004-09-23

Similar Documents

Publication Publication Date Title
DE2714805C2 (de)
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE3210816C2 (de)
DE60018078T2 (de) Einstellung von bedingungswerten in einem rechner
DE2755273C2 (de)
DE2722099C2 (de)
DE4430195A1 (de) Computersystem und Verfahren zur Auswertung von Vorhersagen und Booleschen Ausdrücken
DE4342250A1 (de) Rechnerarchitektur und Verfahren zum Betreiben eines Parallelrechners
DE69435047T2 (de) Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung
DE60224774T2 (de) Datenverarbeitungssystem mit Lese-, Änderungs- und Schreibeinheit
DE3306084A1 (de) Rechnerarchitektur zur gleitkomma -addition
DE2524046C2 (de) Elektronische Datenverarbeitungsanlage
DE102011081585B4 (de) Prozessorarchitektur mit erhöhter Effizienz
DE102015112202A1 (de) Kombinieren von Pfaden
DE19534752A1 (de) Verfahren und System zum Liefern einer Unterstützung für eine spekulative Ausführung
DE1250659B (de) Mikroprogrammgesteuerte Datenverarbeitungsanlage
DE60006021T2 (de) VLIW-Prozessor und Programmkomprimierungsgerät and -verfahren
DE102014003434A1 (de) Vorhersage indirekter Verzweigungen
DE2357003A1 (de) Programmierbarer prozessor
DE3638572A1 (de) Vektorprozessor
DE102019112353A1 (de) Lade/speicher-befehl
EP0825540B1 (de) Prozessor mit Pipelining-Aufbau
DE3307194C2 (de)
DE102020131154A1 (de) Gefährdungsabschwächung für leichte Prozessorkerne
DE112020005055T5 (de) Prozessoreinheit für multiplizier- und akkumulieroperationen

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