DE3855124T2 - Verfahren und Vorrichtung zur eindeutigen Schätzung von Bedingungen in einem Datenprozessor - Google Patents
Verfahren und Vorrichtung zur eindeutigen Schätzung von Bedingungen in einem DatenprozessorInfo
- Publication number
- DE3855124T2 DE3855124T2 DE3855124T DE3855124T DE3855124T2 DE 3855124 T2 DE3855124 T2 DE 3855124T2 DE 3855124 T DE3855124 T DE 3855124T DE 3855124 T DE3855124 T DE 3855124T DE 3855124 T2 DE3855124 T2 DE 3855124T2
- Authority
- DE
- Germany
- Prior art keywords
- operand
- equal
- condition codes
- logically
- true
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 6
- 238000011156 evaluation Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 230000035755 proliferation Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- 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/30094—Condition code generation, e.g. Carry, Zero flag
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Description
- Die vorliegende Erfindung bezieht sich allgemein auf digitale Datenprozessoren und insbesondere auf einen digitalen Datenprozessor, der zum expliziten Evaluieren von Bedingungen, die darin vorliegen, geeignet ist.
- Allgemein erzeugen digitale Datenprozessoren als Folge einer Ausführung der meisten Instruktionen einen oder mehrere "Bedingungs-Code", die den Zustand ausgewählter "Bedingungen" wiedergeben, die innerhalb der Hardware, die den Prozessor aufweist, zu dem Zeitpunkt, zu dem die Instruktion vervollständigt wird, bestehen. Zum Beispiel kann als Folge einer Ausführung einer arithmetischen oder logischen Instruktion auf einem oder mehreren "Daten-Operanden" der Prozessor solche Bedingungs-Code als Null (Zero - Z), falls der "Ergebnis-Operand" Null war, als Negativ (Negativ - N), falls der Ergebnis-Operand negativ war, als Überlauf (Overflow - 0), falls ein Überlauf in der arithmetischen und logischen Einheit (Arithmetic and Logic Unit - ALU) als Ergebnis der bestimmten Operation auftritt, oder als Ausführung (Carry-Out - C), falls die ALU ein Ausführungs-Signal als Ergebnis der Operation liefert, bewerten bzw. evaluieren. Oftmals wird als Ergebnis einer Ausführung einer Instruktion, die eine einfache Bewegung eines Daten-Operanden zu und von einem Speicher oder zwischen Arbeitsregistern erfordert, der Prozessor viele derselben Bedingungs-Code evaluieren. Typischerweise werden die evaluierten Bedingungs-Code automatisch in einem "Bedingungs-Code-Register" (Condition Code Register - CCR) oder dergleichen gespeichert, ob sie nun tatsächlich benötigt werden oder nicht. Gewöhnlich werden die Inhalte des CCR durch bedingungsmäßige Steuerübertragungsinstruktionen, wie beispielsweise "Verzweigungen" oder "Sprünge", später in dem Programm ausgeführt. Alternativ können die Inhalte von dem CCR in ein Arbeitsregister oder zu einem Speicher unter Verwendung einer der Daten-Bewegungsinstruktionen bewegt werden. Danach können die individuellen Code-Bits isoliert werden und so verwendet werden, wie dies erforderlich ist. Allerdings erfordert dies, da die Bedingungs-Code oftmals in einer sehr primitiven Form vorliegen werden, eine Synthese einer nützlicheren, logischen Voraussetzung bzw. eines Prädikats, wie beispielsweise größer als (Greater Than - GT) oder kleiner als oder gleich (Less Than or Equal - LE), gewöhnlich die Ausführung einer oder mehrerer zusätzlicher Instruktion(en).
- Da der Prozessor automatisch die verschiedenen Bedingungen nach der Ausführung im wesentlichen jeder Instruktion evaluiert, müssen die Bedingungs-Code durch die unmittelbar nächste Instruktion oder nicht alle zusammen verwendet werden. Gewöhnlich ist dies eine akzeptable Einschränkung, da die Bedingungs-Code, die aus den meisten Operationen resultieren, verwendet werden, und zwar zusammen, um die nachfolgende Bedingungs-Verzweigungs-Instruktion zu steuern. Andererseits wird diese Einschränkung in Prozessoren des "Pipeline-Typs" weniger akzeptierbar, da sich die Anzahl der Stufen im Pipeline-Betrieb erhöht. Wenn die Bedingungs-Code, die aus einer bestimmten Operation resultieren, durch mehr als gerade die nächste Instruktion verwendet werden, muß die nächste Instruktion die Bedingungs-Code von dem CCR heraus in ein Arbeitsregister oder in einen Speicher übertragen. Ansonsten muß die Original-Operation zu jedem Zeitpunkt wiederholt werden, zu dem die Bedingungs-Code benötigt werden. In jedem Fall müssen eine oder mehrere zusätzliche Instruktionen ausgeführt werden, um die kritischen Bedingungs-Code verfügbar zu machen, wenn sie benötigt werden.
- In einigen Daten-Prozessoren, die mehr als einen Typ einer Ausführungseinheit (Execution Unit - EU) besitzen, sind das Format und die Bedeutung der Bedingungs-Code für jede Einheit gewöhnlich einzigartig. Während es nicht ungewöhnlich ist, alle Bedingungs-Code in einem einzelnen CCR zu gruppieren, führt diese Praxis zu einem komplexen Ablauf, wenn die EU's unterschiedliche Ausführungs-Zeiten besitzen. Dies begrenzt auch die architekturmäßige Freiheit, um die "Mischung" der EU's zu ändern. Zusätzlich erfordert jeder unterschiedliche Typ einer EU gewöhnlich einen entsprechenden Satz zustandsmäßiger Verzweigungs-Instruktionen. Diese Proliferation von Instruktionen gestaltet eine Instruktions-Decodierung schwieriger und erfordert zusätzliche Hardware, um die Code aufzunehmen, um jeden Satz Bedingungs-Code zu interpretieren und um die Ausführung jeder Verzweigungs-Instruktionen zu steuern.
- In einigen anderen Daten-Prozessoren, die Vielfach-EU's besitzen, ist die Evaluierung der Bedingungs-Code nicht implizid, sondern tritt vielmehr nur in Abhängigkeit einer expliziten Anforderung auf. In einigen dieser Prozessoren wurde ein Satz von Vergleichs- und Verzweigungs-"Instruktionen" definiert, wobei die Verzweigung auf der Evaluierung eines bestimmten, logischen Prädikats bzw. einer Aussage konditioniert ist. In anderen Prozessoren wird ein Satz von Einstell-Bedingungs-"Instruktionen" definiert, wobei ein Ergebnis-Operand auf den logisch wahren Wert eines spezifizierten, logischen Prädikats eingestellt wird. Wiederum erfordert die sich ergebende Proliferation von Instruktionen eine zusätzliche Decodier- und Steuerlogik.
- Ein Beispiel einer Art eines Datenprozessors, der separate Instruktions-Klassen mit separaten Bedingungs-Coden besitzt, ist in dem IBM Technical Disclosure Bulletin Vol. 25, no. 1, Juni 1982, Seiten 136-137, offenbart, wobei jeder der Bedingungs-Code CCi in der entsprechenden Einheit aktualisiert wird. Eine neue Instruktion EVAL CCi, die die Bedingungs-Code-Klasse und die Bedingung, die dafür getestet werden soll, spezifiziert, liefert als Ergebnis eine Wahr/Falsch-Anzeige, woraufhin dann eine Verzweigung vorgenommen wird.
- Die WO 85/03148 (Motorola) erwähnt den (dann vorgeschlagenen) IEEE Standard für Gleitkommazahlen, der erfordert, daß die Gleitkommazahlen verglichen werden können und überträgt diese Beziehungen zwischen zwei Gleitkomma-Operanden, wie beispielsweise "LT", "EQ" ..., die erzeugt werden sollen. Für dieses Ziel wird vorgeschlagen, die Beziehungen zwischen zwei Gleitkomma-Operanden unter Verwendung des Datentyps des Ergebnis-Operanden - N für negativ, Z für Null, I für unendlich, NAN für keine Zahl - im Gegensatz zu einer Größenbeziehung zwischen zwei Operanden - zu erzeugen.
- Gemäß einem ersten Aspekt der vorliegenden Erfindung, wie er beansprucht ist, wird ein Verfahren zum Vergleich eines ersten Operanden mit einem zweiten Operanden geschaffen, das folgende Schritte aufweist:
- EXCLUSIV-OR-Verknüpfung dieses ersten Operanden und des zweiten Operanden;
- Subtrahieren des ersten Operanden von dem zweiten Operanden, um eine mit einem Vorzeichen versehene Differenz zu schaffen; und
- Erzeugen eines ersten Satzes von Zustands-Coden, die aufweisen:
- ZERO (Z), falls der erste und der zweite Operand logisch identisch sind;
- CARRY (C), falls der zweite Operand größer als der erste Operand ist; und SIGN (S), falls die Differenz positiv ist;
- wobei das Verfahren weiterhin folgende Schritte aufweist:
- Logisches Kombinieren des ersten Satzes Bedingungs-Code, um einen zweiten Satz Bedingungs-Code zu produzieren, wobei der zweite Satz Bedingungs-Code einen logisch wahren Wert der Kombination jeder einer Anzahl unterschiedlicher, logischer Prädikate darstellt, wobei der zweite Satz Bedingungs-Code aufweist:
- Equal (EQ), falls der erste Operand gleich dem zweiten Operand ist;
- Not Equal (NE), falls der erste Operand nicht gleich dem zweiten Operanden ist;
- Greater Than (GT), falls der erste Operand größer als der zweite Operand ist;
- Greater Than or Equal (GE), falls der erste Operand größer als der zweite Operand ist;
- Less Than or Equal (LE), falls der erste Operand geringer als oder gleich dem zweiten Operanden ist; und
- Bilden des zweiten Satzes Bedingungs-Code, und zwar als jeweilige Bits eines Daten- Operanden, zu jedem einer vorbestimmten Anzahl Datenregister.
- Gemäß einem zweiten Aspekt der vorliegenden Erfindung, wie er beansprucht ist, wird ein Daten-Prozessor geschaffen, der eine Ausführungs-Einheit besitzt, die zum Ausführen einer expliziten Evaluierungs-Instruktion geeignet ist, wobei die Ausführungs-Einheit aufweist:
- eine erste Einrichtung für eine EXKLUSIV-OR-Verknüpfung eines ersten Operanden und eines zweiten Operanden,
- eine zweite Einrichtung zum Subtrahieren des ersten Operanden von dem zweiten Operanden, um eine mit einem Vorzeichen versehene Differenz zu liefern, und
- eine dritte Einrichtung, die mit der ersten und der zweiten Einrichtung gekoppelt ist, und zwar zum Erzeugen eines ersten Satzes Bedingungs-Code, die aufweisen:
- ZERO (Z), falls der erste und der zweite Operand logisch identisch sind;
- CARRY (C), falls der zweite Operand größer als der erste Operand ist; und
- SIGN (S), falls die Differenz positiv ist,
- wobei die Ausführungs-Einheit weiterhin aufweist:
- eine vierte Einrichtung, die mit der dritten Einrichtung gekoppelt ist, und zwar für ein logisches Kombinieren des ersten Satzes Bedingungs-Code, um einen zweiten Satz Bedingungs-Code zu erzeugen, wobei der zweite Satz Bedingungs-Code einen logisch wahren Wert der Kombination jeder der Anzahl der unterschiedlichen, logischen Prädikate darstellt, wobei der zweite Satz Bedingungs-Code aufweist:
- Equal (EQ), falls der erste Operand gleich dem zweiten Operanden ist
- Not Equal (NE), falls der erste Operand nicht gleich dem zweiten Operanden ist
- Greater Than (GT), falls der erste Operand größer als der zweite Operand ist;
- Greather Than or Equal (GE), falls der erste Operand größer als der zweite Operand ist;
- Less Than or Equal (LE), falls der erste Operand geringer oder gleich dem zweiten Operanden ist; und
- eine fünfte Einrichtung zum Liefern des zweiten Satzes der Bedingungs-Code, und zwar als jeweilige Bits eines Daten-Operanden, zu jedem einer vorbestimmten Anzahl Daten-Register.
- Demgemäß schafft die vorliegende Erfindung, wie sie beansprucht ist, einen Daten-Prozessor, der simultan eine Vielzahl von Bedingungen nur in Abhängigkeit einer expliziten Instruktion evaluiert, um dies so vorzunehmen.
- Zusätzlich liefert die vorliegende Erfindung, wie sie beansprucht ist, einen Prozessor, in dem Bedingungen in Einheiten eines Satzes logischer Prädikate evaluiert werden.
- Die vorliegende Erfindung, wie sie beansprucht wird, liefert weiterhin einen Prozessor, der den wahren Wert jedes Satzes logischer Prädikate liefert, die evaluiert werden, und zwar unter Verwendung von Bedingungen, die innerhalb des Prozessors bestehen, und zwar als jeweilige Bits eines Ergebnis-Operanden.
- Figur 1 stellt in Blockdiagrammform einen Daten-Prozessor dar, in dem die vorliegende Erfindung vorteilhaft eingesetzt werden kann.
- Figur 2 stellt eine bevorzugte Ausführung innerhalb der Ausführungseinheiten der Figur 1 der EVALUATE-Instruktion der vorliegenden Erfindung dar.
- In Figur 1 ist ein Daten-Prozessor 10 dargestellt, der eine Steuereinheit (CU) 12, ein Paar Ausführungseinheiten (EU's) 14a-14b, einen Satz Register 16 und einen Speicher 18 umfaßt, die über einen Adress-Bus 20, einen Steuer-Bus 22 und einen Daten-Bus 24 kommunizieren. Allgemein sind Programme, sowohl Supervisor- als auch Benutzer-Programme, in dem Speicher 18 in der Form von Sequenzen aus Instruktionen gespeichert. Die CU 12 holt sequentiell die Instruktionen von dem Speicher 18 heran und schickt jede zu einer geeigneten der EU's 14a-14b zur Ausführung. In Abhängigkeit von der Instruktion führt die ausgewählte EU 14a-14b eine bestimmte arithmetische oder logische Operation unter einem oder mehreren Eingangs-Operand(en) durch, die durch ausgewählte "Quellen"-Register 16 geliefert werden, und kann einen Ergebnis-Operanden zum Speichern in einem ausgewählten "Bestimmungs"-Register 16 zurückführen. Solche Ergebnis-Operanden können in dem jeweiligen Register zurückbleiben und in darauffolgenden Operationen verwendet werden oder zu dem Speicher 18 für eine Speicherung für einen längeren Zeitraum geführt werden, falls dies erwünscht ist.
- Zusätzlich können bestimmte Charakteristika der Ergebnis-Operanden aus dem Zustand der bestimmten EU 14a-14b zu dem Zeitpunkt, zu dem die Operation abgeschlossen wurde, dahingehend bestimmt werden, ob sie darin und selbst signifikant sind. Zum Beispiel ist es oftmals dienlich zu wissen, daß der Ergebnis-Operand gleich Null (Z) war. Ähnlich ist das Vorzeichen (5) des Ergebnis-Operanden gewöhnlich von Interesse. In einigen Situationen ist es sehr nützlich zu wissen, ob eine Ausführung (C) als Ergebnis einer bestimmten arithmetischen Operation aufgetreten ist. Unter Verwendung solcher "Bedingungs-Code" können Entscheidungen, wie in Bezug auf einen Programmablauf, Fehlerbedingungen, und dergleichen, vorgenommen werden. Allerdings kann unter Verwendung dieser einfachen Bedingungs-Code, um nützlicher logische Vorhersagen zu evaluieren, der Entscheidungsprozeß vereinfacht werden.
- Gemäß der vorliegenden Erfindung ist eine Zustands-Evaluierung nicht "implizit", das bedeutet, keine der EU's 14a-14b evaluiert irgendeine Bedingung (Bedingungen) als Folge einer Durchführung einer normalen arithmetischen oder logischen Operation durch. Anstelle hiervon ist eine Bedingungs-Evaluierung "explizit", das bedeutet, eine EU 14a-14b wird Bedingungen nur in Abhängigkeit einer Ausführung einer "Bedingungs-Evaluierungs" (EVALUATE)-Instruktion, die für diese EU spezifisch ist, evaluieren bzw. bewerten.
- In der bevorzugten Form besteht die Evaluierung aus einer Bestimmung des wahren Werts eines Satzes logischer Prädikate. Diese Werte werden dann in jeweilige Bits eines Ergebnis-Operanden "gepackt" und zu einem spezifizierten Bestimmungs-Register 16 zurückgeführt. Bestimmungen können an dem wahren Wert jedes logischen Prädikats unter Verwendung von einfachen Instruktionen "Verzweigung" auf einem Bit-Wert vorgenommen werden. Alternativ kann ein Bit oder können mehrere Bits für eine weitere Verarbeitung oder Zuordnung extrahiert oder isoliert werden.
- Allgemein kann die EVALUATE-Instruktion irgendeine Anzahl von Formen annehmen. Zum Beispiel kann, wenn Vielfach-EU's 14a-14b vorhanden sind, eine generelle Form wie folgt sein:
- COMPARE:Sx,Sy,Dz; EU
- wobei:
- Sx,Sy = Hinweisadressen bzw. ein Pointer zu den Eingangs-Operanden, die evaluiert werden sollen, gewöhnlich in Registern;
- Dz = eine Hinweisadresse bzw. ein Pomter auf die Bestimmung des Ergebnis-Operanden, gewöhnlich ein Register; und
- EU = eine Hinweisadresse bzw. ein Pointer auf die Bestimmung der EU's 14a-14b, die ausgewählt ist, um die Evaluierung durchzuführen.
- Wenn nur eine einzelne EU verfügbar ist, könnte die Form reduziert werden auf:
- COMPARE: Sx, Sy, Dz
- wobei:
- Sx,Sy = Hinweisadressen auf die Eingangs-Operanden, die evaluiert werden sollen, gewöhnlich Register,
- Dz = eine Hinweisadresse auf die Bestimmung des Ergebnis-Operanden, gewöhnlich ein Register.
- Eine primitive EVALUATE-Instruktion kann die nachfolgende Form annehmen:
- EVALUATE: Sx,Dz
- wobei:
- Sx = Hinweisadressen auf die Eingangs-Operanden, die evaluiert werden sollen, gewöhnlich ein Register,
- Dz = eine Hinweisadresse auf die Bestimmung des Ergebnis-Operanden, gewöhnlich ein Register.
- Natürlich kann das primitive EVALUATE unter Verwendung der generischen Form ausgeführt werden, wenn einer der Eingangs-Operanden so gewählt wird, daß er Null (0) ist.
- Allgemein arbeitet jede EU 14a-14b auf Operanden nur eines einzelnen Typs, zum Beispiel ein Integer- oder Gleitkomma-Typ. Allerdings ist die generische Form gleichsam für eine EU 14a-14b geeignet, die zum Arbeiten auf gemischten Operanden-Typen geeignet ist.
- In der bevorzugten Form evaluiert eine EVALUATE-Instruktion eines Integer-Typs eine Anzahl unterschiedlicher, logischer Prädikate ab und führt den wahren Wert jeweils als entsprechendes Bit des Ergebnis-Operanden wie folgt zurück:
- wobei:
- EQ: wahr (1), falls und falls nur Sx == Sy
- NE: wahr (1), falls und falls nur Sx != Sy
- GT: wahr (1), falls und falls nur Sx > Sy
- LE: wahr (1), falls und falls nur Sx < = Sy
- LT: wahr (1), falls und falls nur Sx < Sy
- GE: wahr (1), falls und falls nur Sx > = Sy
- HI: wahr (1), falls und falls nur Sx U> Sy
- LS: wahr (1), falls und falls nur Sx U< = Sy
- LO: wahr (1), falls und falls nur Sx U< Sy
- HS: wahr (1), falls und falls nur Sx U> = Sy
- U impliziert einen vorzeichenlosen Vergleich.
- In Figur 2 ist eine bevorzugte Ausführungsform einer integeren bzw. ganzzahligen EU 14a gezeigt, die zum Ausführen irgendeiner Form einer EVALUATE-Instruktion geeignet ist. Allgemein werden der erste und der zweite Eingangs-Operand, OP1 und OP2, jeweils simultan zu sowohl einer arithmetischen Einheit (AU) 26 als auch einer logischen Einheit 28 eingegeben. In der AU 26 werden beide Eingangs-Operanden zu Null, wie es für dieselbe Breite erforderlich ist, beispielsweise 32-Bits. Der erweiterte Operand OP2 wird dann von dem erweiterten OP1 subtrahiert, um das Vorzeichen (5) der Differenz zu bestimmen und ob ein Ausführen (C) auftritt. Gleichzeitig sind in der LU 28 die Eingangs-Operanden Bit für Bit logisch miteinander durch EXCLUSIV-OR verknüpft. Der 32-Bit-Ausgang der LU 28 wird in ein ODER-Gatter 30 eingegeben und wird ein Null(Z)-Signal angeben, wenn die zwei Operanden logisch identisch sind. Eine Evaluierungs-(EVAL)Logik 32, die entweder in einer diskreten Logik oder in einer PLA ausgeführt ist, kombiniert logisch die C-, 5- und Z-Signale wie folgt:
- EQ == Z
- NE == Z*
- GT == S* & Z*
- LE == S + Z
- LT == S
- GE == S*
- HI == C* & Z*
- LS == C + Z
- LO == C
- HS == C*
- wobei:
- * => logische Umkehrung
- &=> logisches UND
- +=> logisches ODER
- In der bevorzugten Form evaluiert eine EVALUATE-Instruktion vom Gleitkomma-Typ eine Anzahl unterschiedlicher logischer Prädikate und führt den wahren Wert jeweils als jeweiliges Bit des Ergebnis-Operanden zurück, wie dies nachfolgend spezifiziert ist.
- Die gesamte Arithmetik wird gemäß dem IEEE P754 Standard durchgeführt.
- wobei:
- NC: wahr (1) falls und falls nur Sx und Sy nicht vergleichbar sind
- CP: wahr (1) falls und falls nur Sx und Sy vergleichbar sind
- EQ: wahr (1) falls und falls nur Sx == Sy
- NE: wahr (1) falls und falls nur Sx != Sy
- GT: wahr (1) falls und falls nur Sx > Sy
- LE: wahr (1) falls und falls nurSx < = Sy
- LT: wahr (1) falls und falls nur Sx < Sy
- GE: wahr (1) falls und falls nur Sx > = Sy
- HI: wahr (1) falls und falls nur Sy > =0, und ((Sx> Sy)OR(Sx< 0))
- LS: wahr (1) falls und falls nur Sy > =0, und ((Sx < = Sy) AND (Sx > =0))
- LO: wahr (1) falls und falls nur Sy > =0, und ((Sx < Sy) AND (Sx > 0))
- HS: wahr (1) falls und falls nur Sy > =0, und ((Sx > = Sy) OR (Sx < =0)).
- Obwohl die Bedingungen, die von Interesse sind, zu einem oder mehreren Eingangs- Operanden in Bezug gesetzt sind, ist die EVALUATE-Instruktion nicht auf solche Bedingungen beschränkt. Zum Beispiel können in einigen EU's 14a-14b andere Bedingungen, die nicht zu Operanden in Bezug gesetzt sind, wie beispielsweise eine Parität, von Interesse sein. Falls es erwünscht ist, können diese von einem Operand unabhängigen Bedingungen zu derselben Zeit evaluiert werden, zu der die von einem Operanden abhängigen Bedingungen evaluiert werden, und in diesen Bits, falls irgendwelche vorhanden sind, des Ergebnis-Operanden, der nicht zugeordnet ist, zu den von einem Operanden abhängigen Bedingungen vorgesehen werden.
Claims (2)
1. Verfahren zum Vergleich eines ersten Operanden mit einem zweiten Operanden,
das folgende Schritte aufweist:
EXCLUSIV-OR-Verknüpfung dieses ersten Operanden und des zweiten
Operanden;
Subtrahieren des ersten Operanden von dem zweiten Operanden, um eine mit
einem Vorzeichen versehene Differenz zu schaffen;
Erzeugen eines ersten Satzes von Zustands-Coden, die aufweisen:
ZERO (Z), falls der erste und der zweite Operand logisch identisch sind;
CARRY (C), falls der zweite Operand größer als der erste Operand ist; und
SIGN (S), falls die Differenz positiv ist;
wobei das Verfahren weiterhin folgende Schritte aufweist:
Logisches Kombinieren des ersten Satzes Bedingungs-Code, um einen zweiten
Satz Bedingungs-Code zu produzieren, wobei der zweite Satz Bedingungs-Code
einen logisch wahren Wert der Kombination jeder einer Anzahl unterschiedlicher,
logischer Prädikate darstellt, wobei der zweite Satz Bedingungs-Code aufweist:
Equal (EQ), falls der erste Operand gleich dem zweiten Operanden ist;
Not Equal (NE), falls der erste Operand nicht gleich dem zweiten Operanden ist;
Greater Than (GT), falls der erste Operand größer als der zweite Operand ist;
Greater Than or Equal (GE), falls der erste Operand größer als der zweite
Operand ist;
Less Than or Equal (LE), falls der erste Operand geringer als oder gleich dem
zweiten Operanden ist; und
Bilden des zweiten Satzes Bedingungs-Code, und zwar als jeweilige Bits eines
Daten-Operanden, zu jedem einer vorbestimmten Anzahl Datenregister.
2. Daten-Prozessor, der eine Ausführungs-Einheit besitzt, die zum Ausführen einer
expliziden Evaluierungs-Instruktion geeignet ist, wobei die Ausführungs-Einheit
aufweist:
eine erste Einrichtung für eine EXCLUSIV-OR-Verknüpfung eines ersten
Operanden und eines zweiten Operanden,
eine zweite Einrichtung zum Subtrahieren des ersten Operanden von dem zweiten
Operanden, um eine mit einem Vorzeichen versehene Differenz zu liefern, und
eine dritte Einrichtung, die mit der ersten und der zweiten Einrichtung gekoppelt
ist, und zwar zum Erzeugen eines ersten Satzes Bedingungs-Code, die aufweisen:
ZERO (Z), falls der erste und der zweite Operand logisch identisch sind;
CARRY (C), falls der zweite Operand größer als der erste Operand ist; und
SIGN (S), falls die Differenz positiv ist,
wobei die Ausführungs-Einheit weiterhin aufweist:
eine vierte Einrichtung, die mit der dritten Einrichtung gekoppelt ist, und zwar für
ein logisches Kombinieren des ersten Satzes Bedingungs-Code, um einen zweiten
Satz Bedingungs-Code zu erzeugen, wobei der zweite Satz Bedingungs-Code
einen logisch wahren Wert der Kombination jeder der Anzahl der
unterschiedlichen, logischen Prädikate darstellt, wobei der zweite Satz Bedingungs-Code
aufweist:
Equal (EQ), falls der erste Operand gleich dem zweiten Operanden ist;
Not Equal (NE), falls der erste Operand nicht gleich dem zweiten Operanden ist;
Greater Than (GT), falls der erste Operand größer als der zweite Operand ist;
Greather Than or Equal (GE), falls der erste Operand größer als der zweite
Operand ist;
Less Than or Equal (LE), falls der erste Operand geringer oder gleich dem zweiten
Operanden ist; und
eine fünfte Einrichtung zum Liefern des zweiten Satzes der Bedingungs-Code, und
zwar als jeweilige Bits eines Daten-Operanden, zu jedem einer vorbestimmten
Anzahl Daten-Register.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/112,597 US4914581A (en) | 1987-10-26 | 1987-10-26 | Method and apparatus for explicitly evaluating conditions in a data processor |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3855124D1 DE3855124D1 (de) | 1996-04-25 |
DE3855124T2 true DE3855124T2 (de) | 1996-10-02 |
Family
ID=22344793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3855124T Expired - Fee Related DE3855124T2 (de) | 1987-10-26 | 1988-09-22 | Verfahren und Vorrichtung zur eindeutigen Schätzung von Bedingungen in einem Datenprozessor |
Country Status (6)
Country | Link |
---|---|
US (1) | US4914581A (de) |
EP (1) | EP0313817B1 (de) |
JP (1) | JP2663287B2 (de) |
KR (1) | KR970004474B1 (de) |
DE (1) | DE3855124T2 (de) |
HK (1) | HK1000738A1 (de) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE68927218T2 (de) * | 1988-10-18 | 1997-02-06 | Hewlett Packard Co | Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor |
US6000028A (en) * | 1996-01-29 | 1999-12-07 | Digital Equipment Corporation | Means and apparatus for maintaining condition codes in an unevaluated state |
US6223278B1 (en) * | 1998-11-05 | 2001-04-24 | Intel Corporation | Method and apparatus for floating point (FP) status word handling in an out-of-order (000) Processor Pipeline |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5434730A (en) * | 1977-08-24 | 1979-03-14 | Mitsubishi Electric Corp | Arithmetic unit |
US4348722A (en) * | 1980-04-03 | 1982-09-07 | Motorola, Inc. | Bus error recognition for microprogrammed data processor |
US4509116A (en) * | 1982-04-21 | 1985-04-02 | Digital Equipment Corporation | Special instruction processing unit for data processing system |
JPS5979350A (ja) * | 1982-10-29 | 1984-05-08 | Toshiba Corp | 浮動小数点演算装置 |
JPS59125441A (ja) * | 1982-12-30 | 1984-07-19 | Fujitsu Ltd | デ−タ処理装置 |
JPS6043751A (ja) * | 1983-08-18 | 1985-03-08 | Hitachi Ltd | 情報処理装置 |
KR910006142B1 (ko) * | 1984-01-03 | 1991-08-16 | 모토로라 인코포레이티드 | 부동점 상태 코드 발생방법 및 장치 |
US4683546A (en) * | 1984-01-03 | 1987-07-28 | Motorola, Inc. | Floating point condition code generation |
US4779218A (en) * | 1985-09-04 | 1988-10-18 | Jauch Jeremy P | Complex arithmetic unit |
US4777613A (en) * | 1986-04-01 | 1988-10-11 | Motorola Inc. | Floating point numeric data processor |
-
1987
- 1987-10-26 US US07/112,597 patent/US4914581A/en not_active Expired - Lifetime
-
1988
- 1988-09-22 DE DE3855124T patent/DE3855124T2/de not_active Expired - Fee Related
- 1988-09-22 EP EP88115598A patent/EP0313817B1/de not_active Expired - Lifetime
- 1988-10-25 KR KR1019880013891A patent/KR970004474B1/ko not_active IP Right Cessation
- 1988-10-26 JP JP63270584A patent/JP2663287B2/ja not_active Expired - Lifetime
-
1997
- 1997-12-01 HK HK97102290A patent/HK1000738A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
JPH01163836A (ja) | 1989-06-28 |
EP0313817A2 (de) | 1989-05-03 |
DE3855124D1 (de) | 1996-04-25 |
KR970004474B1 (ko) | 1997-03-28 |
KR890007164A (ko) | 1989-06-19 |
JP2663287B2 (ja) | 1997-10-15 |
US4914581A (en) | 1990-04-03 |
HK1000738A1 (en) | 1998-04-24 |
EP0313817A3 (de) | 1991-02-06 |
EP0313817B1 (de) | 1996-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68927911T2 (de) | Datenverarbeitungssystem | |
DE2934971C2 (de) | Nach dem Fließbandprinzip arbeitender Zentralprozessor | |
DE19540102C2 (de) | Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik | |
DE69132129T2 (de) | In der Grundzahl 4 arbeitende Übertragvorgriffsbäume | |
DE3586374T2 (de) | Verfahren zur elimination globaler gemeinsamer unterexpressionen und zur kodeverschiebung in einem optimierenden kompilierer. | |
DE3486211T2 (de) | Kodebestimmung mit einem auf Halbaddierer basierten Operandenvergleicher. | |
DE69738188T2 (de) | Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor | |
DE69430053T2 (de) | Ganzzahldivisionsvorrichtung und -verfahren | |
DE3854701T2 (de) | Methode und Vorrichtung zum Verändern von Mikrobefehlen mit einer Makrobefehlspipeline. | |
DE3650473T2 (de) | Mikroprogrammsteuereinheit | |
DE68928058T2 (de) | Gerät und verfahren zur prädiktion von gleitkommanormalisierung | |
DE69130757T2 (de) | Ausführungsvorrichtung für bedingte Verzweigungsbefehle | |
DE2900324A1 (de) | Mikroprogrammierbare arithmetische fliesskommaeinheit | |
DE60216210T2 (de) | Binärer Grösse-Vergleicher | |
DE3852056T2 (de) | Koprozessor und Verfahren zu dessen Steuerung. | |
DE3701599C2 (de) | ||
DE10013068C2 (de) | Potenzierungsoperationsvorrichtung | |
DE3688806T2 (de) | Instruktionsprozessor. | |
DE3852576T2 (de) | Einrichtung und Verfahren für eine erweiterte Arithmetik-Logik-Einheit zur Beschleunigung der ausgewählten Operationen. | |
DE69629646T2 (de) | Verfahren zur durchführung einer "rotate through carry" operatiion | |
DE19746054B4 (de) | Verfahren und Vorrichtung zum Ausführen einer Operation mit doppelter Genauigkeit | |
DE3307194C2 (de) | ||
DE3855124T2 (de) | Verfahren und Vorrichtung zur eindeutigen Schätzung von Bedingungen in einem Datenprozessor | |
DE2702722C2 (de) | Einrichtung zur Verarbeitung nicht direkt ausführbarer Instruktionen | |
DE69616942T2 (de) | Bit-suche durch 8, 16 oder 32 bit-operanden mit einem 32 bit-datenpfad |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |