DE4430195A1 - Computersystem und Verfahren zur Auswertung von Vorhersagen und Booleschen Ausdrücken - Google Patents
Computersystem und Verfahren zur Auswertung von Vorhersagen und Booleschen AusdrückenInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods 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₄; |
2α | r=r₅ ∧ r₆ |
3α | 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.
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.
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 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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)
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)
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)
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 |
-
1994
- 1994-08-25 DE DE4430195A patent/DE4430195B4/de not_active Expired - Lifetime
- 1994-11-30 GB GB9424221A patent/GB2284690B/en not_active Expired - Lifetime
- 1994-12-13 JP JP30873694A patent/JP3573506B2/ja not_active Expired - Lifetime
-
1995
- 1995-03-03 US US08/400,414 patent/US6023751A/en not_active Expired - Lifetime
Patent Citations (1)
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)
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 |