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 Datenprozessor

Info

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
Application number
DE3855124T
Other languages
English (en)
Other versions
DE3855124D1 (de
Inventor
Mitch Kirkpatrick Alsup
James A Klingshirn
Yoav Talgam
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Motorola Solutions Inc
Original Assignee
Motorola Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Motorola Inc filed Critical Motorola Inc
Application granted granted Critical
Publication of DE3855124D1 publication Critical patent/DE3855124D1/de
Publication of DE3855124T2 publication Critical patent/DE3855124T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition 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

    Sachgebiet der Erfindung
  • 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.
  • Stand der Technik
  • 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.
  • Zusammenfassung der Erfindung
  • 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.
  • Kurze Beschreibung der Zeichnungen
  • 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.
  • Beschreibung einer bevorzugten Ausführungsform der Erfindung
  • 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.
DE3855124T 1987-10-26 1988-09-22 Verfahren und Vorrichtung zur eindeutigen Schätzung von Bedingungen in einem Datenprozessor Expired - Fee Related DE3855124T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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 &#34;rotate through carry&#34; 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