DE3486211T2 - Kodebestimmung mit einem auf Halbaddierer basierten Operandenvergleicher. - Google Patents

Kodebestimmung mit einem auf Halbaddierer basierten Operandenvergleicher.

Info

Publication number
DE3486211T2
DE3486211T2 DE84305733T DE3486211T DE3486211T2 DE 3486211 T2 DE3486211 T2 DE 3486211T2 DE 84305733 T DE84305733 T DE 84305733T DE 3486211 T DE3486211 T DE 3486211T DE 3486211 T2 DE3486211 T2 DE 3486211T2
Authority
DE
Germany
Prior art keywords
true
complement
instruction
operands
condition code
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
DE84305733T
Other languages
English (en)
Other versions
DE3486211D1 (de
Inventor
Gene Myron Amdahl
Hsiao-Peng Sherman Lee
Stephen John Rawlinson
Stephen Frederick Stuart
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.)
Fujitsu IT Holdings Inc
Original Assignee
Amdahl Corp
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 Amdahl Corp filed Critical Amdahl Corp
Publication of DE3486211D1 publication Critical patent/DE3486211D1/de
Application granted granted Critical
Publication of DE3486211T2 publication Critical patent/DE3486211T2/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3884Pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

  • Die vorliegende Erfindung betrifft das Gebiet der befehlsgesteuerten Digitalcomputer und insbesondere die Verarbeitung von Bedingungscode-Setzbefehlen und Verzweigung-bei-Bedingung-Befehlen, wie sie beispielsweise durch die OS/370 Architektur festgelegt sind.
  • Verzweigung-bei-Bedingung-Befehlen sind ein Wesentlicher Teil des Datenverarbeitungssystemes. Die Art, auf der diese Befehle verarbeitet werden, ist ein bedeutender Faktor bei den Kosten und der Leistung des Systems, weil solche Befehle in Programmen statistisch gemeinsame Befehle sind.
  • Gemäß diesen bestehenden Systeme verlangen sie, wenn Verzweigungsbefehle verarbeitet werden, die Abfrage eines Befehlscodes (CC), der durch einen Vorhergehenden Bedingungscode-Setzbefehl gesetzt worden ist, um zu bestimmen, welchem von zwei Befehlsströmen danach gefolgt wird. In einer Pipeline-Umgebung beginnt der Verzweigung-bei-Bedingung-Befehl die Ausführung vor dem Abschluß der Ausführung des Bedigungscodes-Setzbefehls. Der Bedingungscode-Setzbefehl sollte den Bedingungscode sobald wie möglich bestimmen, da, wenn er dies nicht tut, die Verarbeitung der Verzweigungsbefehle verzögert werden kann, bis der Bedingungscode gesetzt ist. Irgendeine Verzögerung bei der Befehlsverarbeitung beeinträchtigt natürlich nachteilig die Leistung des Datenverarbeitungssystemes.
  • US-Patent 3,881,173 beschreibt ein Verfahren und eine Vorrichtung zur Verwendung in einem Datenverarbeitungssystem, bei dem der Bedingungscode, auf den ein Verzweigungsbefehl wirkt, als eine Funktion des Bedingungscode-Setzbefehls und als ein in Beziehung stehender Vergleich der Operanden des Befehls gesetzt wird. Der Bedingungscode kann vor dem Abschluß der Ausführung des Bedingungscode-Setzbefehls berechnet werden. Die Kriterien zum Vergleichen der Operanden werden durch den gerade ausgeführten Befehl festgelegt.
  • In jenem Patent sind Einrichtungen in der Ausführungseinheit zum Decodieren des Operanden-Codes eines Befehls und zum Steuern eines Komparators in der Ausführungseinheit vorgesehen, um ein geeignetes Vergleichskriterium zum Vergleichen der Operanden auszuwählen. Die Operanden werden gemeinsam in den Komparator torgesteuert, und eine Bestimmung wird gemacht, um den Bedingungscode zu setzen. Der Bedingungscode wird innerhalb eines Zyklus des Datenverarbeitungssystemes gesetzt oder von zwei Zyklen bei Doppelwortverarbeitung, unabhängig davon, wieviele Ausführungszyklen für eine vollständige Ausführung des Befehls benötigt werden. Wenn ein Verzweigungsbefehl die Bedingungscodeverriegelung abfragt und feststellt, daß eine Verzweigung genommen werden soll, bewirkt unmittelbar der Verzweigungsbefehl, daß die den Befehl verarbeitende Pipeline von jeglichen Befehlen in dem nicht genommenen Befehlsstrom freigemacht wird und beginnt unmittelbar die Befehle in dem zu nehmenden Befehlsstrom zu verarbeiten.
  • Während sich der mit dem Verfahren des Patentes 3,881,173 durchgeführte Vergleich als sehr zufriedenstellend herausgestellt hat, besteht weiterhin die Notwendigkeit eines verbesserten Komparators, der eine hohe Geschwindigkeit bei niederen Kosten aufweist.
  • Die Konstruktion einer Halbaddierer (HA)-Einheit und die Einrichtungen zum Ausführen ihrer Funktion sind geoffenbart in: E.L. Johnson und M.A. Karim, Digital Design - A pragmatic approach, S. 132-133, PWS Engineering, Boston, USA.
  • Die vorliegende Erfindung schafft ein Datenverarbeitungssystem, wie es im Anspruch 1 dargelegt ist.
  • Der Operandenkomparator bildet Vergleichsergebnisse in der Form von Austrag-Vorhersagen (in Klammern angegeben) gleichzeitig für einen oder mehrere der folgenden Typen von Additionen:
  • 32-Bit Operanden, beide Operanden unkomplementiert (TT)
  • 31-Bit Operanden, beide Operanden unkomplementiert (TT)
  • 32-Bit Operanden, erster Operand zwei-komplementiert (TC)
  • 31-Bit Operanden, erster Operand zwei-komplementiert (TC)
  • 32-Bit Operanden, zweiter Operand zwei-komplementiert (CT)
  • 31-Bit Operanden, zweiter Operand zwei-komplementiert (CT)
  • 32-Bit Operanden, beide Operanden zwei-komplementiert (CC)
  • Die folgenden Voraussagen werden ebenfalls gemacht:
  • 32-Bit Operanden, beide Operanden Null (BOZ)
  • 32-Bit Operanden, "UND" ergibt Null (ARZ)
  • Die Verwendung dieses Komparators ermöglicht frühe Voraussagen des Bedingungscodes für algebraische und logische Additionen, Subtraktionen und Vergleiche mit Festpunkt. Der Bedigungscode für das Vergleichen von kurzem Gleitpunkt und von logischem UND, inklusives ODER und exklusives ODER werden ebenfalls früh vorausgesagt.
  • Das logische Vergleichen verwendet die Austräge TC und Ct. Die logische Addition verwendet die Austräge BOZ, TT und CC. Die logische Subtraktion verwendet die Austräge CT und TC. Der algebraische Vergleich (gleiche Vorzeichen) verwendet die Austräge TC und CT. Der algebraische Vergleich (unterschiedliche Vorzeichen) verwendet die Austräge TC und CT. Das logische, exklusive ODER verwendet die Austräge TC und CT. Die algebraische Addition (gleiche Vorzeichen) verwendet die Austräge TT und BOZ. Die algebraische Addition (unterschiedliche Vorzeichen) verwendet die Austräge TT und CC. Die algebraische Subtraktion (gleiche Vorzeichen) verwendet die Austräge TC und CT. Die algebraische Subtraktion (unterschiedliche Vorzeichen) verwendet den Austrag CT. Für eine detaillierte Beschreibung wird auf die AUFSTELLUNG 4 hingewiesen.
  • Die Austräge für 31-Bit Operanden werden von den 32-Bit Operanden durch Fallenlassen der Bits höchster Ordnung abgeleitet. Die 31-Bit Austragsvoraussagen werden für Vergleiche von kurzem Gleitpunkt und zum Bestimmen von Überlauf bei algebraische Additionen und Subtraktionen verwendet.
  • Der Komparator besitzt die Fähigkeit, einen Austrag vorauszusagen, wenn beide Operanden zwei-komplementiert sind und daher zwei Einträge haben. Die Verarbeitung von zwei Einträgen gleichzeitig mit zwei Operanden liefert einen Hochgeschwindigkeitsvergleich, der die Geschwindigkeit des Komparators verstärkt.
  • Gemäß der obigen Zusammenfassung erreicht die vorliegende Erfindung die Zielsetzung, eine verbesserte Vorrichtung zu schaffen, indem ein verbesserter Halbaddierer-Operanden-Komparator zum Setzen von Coden in einem Datenverarbeitungssystem verwendet wird.
  • Die vorliegende Erfindung kann auch für die interne Steuerung der Ausführungseinheit verwendet werden. Die internen Steuerungen schließen Prüfungen für die Operanden gleich, EP1 kleiner als OP2 und für den Quotientenüberlauf bei Festpunktdividieren ein.
  • Zusätzliche Zielsetzungen und Merkmale der vorliegenden Erfindung ergeben sich aus der folgenden Beschreibung, in der die bevorzugten Ausführungsformen der Erfindung im einzelnen in Verbindung mit den Zeichnungen dargelegt worden sind.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 zeigt eine schematische Darstellung eines Datenverarbeitungssystems, das einen Operanden-Komparator einschließt.
  • Fig. 2 zeigt ein schematisches Blockdiagramm des operanden Komparators, der bei dem System in Fig. 1 verwendet wird.
  • Fig. 3 zeigt ein weiteres, detailliertes Blockdiagramm des Operanden-Komparators der Fig. 2.
  • Fig. 4 zeigt ein logisches Diagramm einer Bitaufteilung, die Teil des Komparators der Fig. 3 bildet.
  • Fig. 5 bis 9 zeigt jeweils logische Diagramme, die logische Zwischenblöcke bilden, die Signale von den logischen Bit- Aufteilungsblöcken vom Typ gemäß der Fig. 4 kombinieren.
  • Fig. 10 ist ein logisches Diagramm der Ausgänge von den Zwischenblöcken der Fig. 5 bis 9 und bildet den Ausgang von drei Halbaddierern TT, TC, CT, die in Fig. 2 dargestellt sind.
  • Fig. 11, 12 und 13 stellen die Endaufaddierungslogik für den vierten Halbaddierer CC dar, der in Fig. 2 dargestellt ist.
  • Fig. 14 stellt die logischen Zwischen- und Endaufaddierungsblöcke zum Bestimmen dar, wenn das logische "UND" der Operanden nicht Null ist.
  • Beschreibung im einzelnen
  • In Fig. 1 enthält ein Datenverarbeitungssystem eine Speichereinheit 1, eine Ausführungseinheit 2 und eine Befehlseinheit 3. Die Speichereinheit 1 ist ein allgemeiner Speicher, der typischerweise einen Hauptspeicher, einen Pufferspeicher und durch die Architektur definierte innere Register enthält. Befehle werden von der Speichereinheit 1 durch die Befehlseinheit 3 geholt und werden der Reihe nach in einer Befehlspipeline 4 ausgeführt.
  • Die Ausführungseinheit 2 enthält das OWRL-Register 11, das den ersten Operanden OP1 hält, und das OWRH-Register 12, das den zweiten Operanden OP2 enthält. Der erste und der zweite Operand werden von der zusätzlichen Hardwareausführungseinheit 9 bei der Ausführung des Befehls verwendet. Einige Bedingungscode-Setzbefehle mögen viele E Ausführungs-Zyklen für die vollständige Ausführung benötigen. Es ist häufig erwünscht, gewisse Eigenschaften (beispielsweise, die Operanden sind gleich, ein Operand ist größer als der andere) über das Ergebnis der Ausführung vor dem Zeitpunkt zu kennen, zu dem die momentane Ausführung abgeschlossen ist, um den Bedingungscode frühzeitig zu setzen. Wenn ein Verzweigung-bei-Bedingung-Befehl diesem Befehl folgt, kann der Zweig früh bestimmt werden und keine Zeit wird mit der Ausführung des nicht ausgewählten Befehlstromes verbraucht.
  • In Fig. 1 vergleicht der Operanden-Komparator 34 den OP1 und OP2 zu einer frühen Zeit. Der Komparator 34 liefert die Vergleichsergebnisse an die Bedingungscode-Setzlogik 26, die das Bedingungscode-Register 27-1 setzt, und auch andere Register 27-2, . . . , 27-P für die innere Steuerung der Ausführungseinheit 2 setzt.
  • Die Ausgänge von den Halbaddierern 14 bis 17 und dem logischen Block 18 der Fig. 2 werden in der folgenden AUFSTELLUNG 1 aufgeführt:
  • AUFSTELLUNG 1
  • K32TT (Bit 0-31, beide Operanden nicht komplementiert)
  • K31TT (Bit 1-31, beide Operanden nicht komplementiert)
  • K32TC (Bit 0-31, OP1 komplementiert)
  • K31TC (Bit 1-31, OP1 komplementiert)
  • K32CT (Bit 0-31, OP2 komplementiert)
  • K31CT (Bit 1-31, OP2 komplementiert)
  • K32CC (Bit 0-31, beide Operanden komplementiert)
  • BOZ (beide Operanden Null)
  • AND RNZ ("UND" von OP1 und OP2 nicht Null)
  • Jeder der ersten sieben Ausgänge, die oben aufgelistet sind, ist logisch "wahr", wenn es einen Austrag von der angegebenen Addition gibt. (K32CC ist logisch "falsch", wenn es einen Austrag von zwei von dieser Addition gibt).
  • Eine ins einzelne gehende Ausführung des Komparators 34 enthält die Unterteilung der 32-Bit Operanden in 8 Unterteilungen von je vier Bit. Von jeder Unterteilung werden Informationen berechnet und dann zusammengefügt, um die in der AUFSTELLUNG 1 aufgelisteten Ausgänge zu bilden.
  • In Fig. 2 ist eine schematische Darstellung des Operanden Komparators 34 der Fig. 1 gezeigt. Der Operanden-Komparator 34 enthält vier Halbaddierer 14, 15, 16 und 17 und einen logischen Block 18. Jeder der Halbaddierer 14 bis 17 und der logische Block 18 erhält als Eingänge OP1 und OP2 von dem Register bzw. 12 der Fig. 1. Die Komplemente werden durch die Inverter 22, 23, 24 und 25 in Fig. 2 erzeugt.
  • Der Halbaddierer 14 erhält die wahren Werte von OP1 und OP2. Demgemäß weist der Addierer 14 die Markierungen T und T an seinen Eingängen auf.
  • Der Halbaddierer 15 erhält den wahren Eingang für OP2 und den komplementären Eingang für OP1 und daher sind seine Eingänge mit T bzw. C bezeichnet. Der Halbaddierer 16 erhält den komplementären Eingang für OP2 und den wahren Eingang für OP1 und seine Eingänge sind daher mit C bzw. T bezeichnet. Der Halbaddierer 17 erhält den komplementären Eingang für OP1 und OP2 und daher sind seine Eingänge mit CC bezeichnet.
  • Die Halbaddierer 14 bis 17 der Fig. 2 erzeugen Austräge, aber führen keine volle Addition durch. Insbesondere erzeugt der TT Halbaddierer 14 den Austrag für das 31. Bit, das mit K31TT bezeichnet ist, und erzeugt den Austrag für das 32. Bit, der mit K32TT bezeichnet ist. In ähnlicher Weise erzeugt der TC Halbaddierer 15 die Ausgänge K31TC und K32TC. Der CT Halbaddierer 16 erzeugt die Ausgänge K31CT und K32CT. Schließlich erzeugt der CC Halbaddierer 17 einen Ausgang K32CC. Der Ausgang K31CC (nicht gezeigt) wird von dem-Halbaddierer 17 nicht erzeugt, aber ein solcher Ausgang kann ohne weiteres erzeugt werden, wenn es erwünscht ist.
  • Die Ausgänge von den Halbaddierern 14 bis 17 und von dem logischen Block 18 werden als Eingänge zu der Bedingungscode-Setzlogik 26 der Fig. 1 bereitgestellt.
  • Die Befehlspipeline 4 enthält bei einer typischen Ausführungsform eine Mehrzahl von segmentierten Stufen. Beispielsweise erzeugt die G Stufe 4-1 die Speicheradressen der Operanden, die durch den Befehl bearbeitet werden sollen. Die B-Stufe 4-2 greift auf die Operanden von der Speichereinheit zu. Die L Stufe 4-3 führt Logik- und Prüf-Operationen an den Operanden durch. Die E Stufe 4-4 steuert die Ausführung des Befehls. Die W Stufe 4-5 speichert das Ergebnis der Ausführung in den Speicher.
  • Die Stufen in der Pipeline 4 sind repräsentativ dargestellt. Zusätzliche oder andere Stufen können verwendet werden. Im Hinblick auf zusätzliche Stufen, die häufig verwendet werden, wird auf US-Patent 3,881,173 Bezug genommen, das eine Befehlspipeline mit mehrfachen Stufen beschreibt.
  • Ein Beispiel, wie Befehle verabfolgt werden, ist in der folgenden AUFSTELLUNG 2 angegeben: AUFSTELLUNG 2 Befehl (Ziel)
  • In der AUFSTELLUNG 2 ist ein Befehlsstrom gezeigt, der die Befehle 11, 12, 13, 14, . . . , 19 einschließt. Ein erster Befehl 11 wird durch die 1 Einheit 3 geholt und wird durch die G Stufe 4-1 während des Zyklus CYC1 verarbeitet. Während des Zyklus CYC2 wird der Befehl 11 durch die B Stufe 4-2 verarbeitet. In ähnlicher Weise wird der Befehl 11 durch die L Stufe 4-3, die E Stufe 4-4 und die W Stufe 4-5 bei den Zyklen CYC3, CYC4 bzw. CYC5 verarbeitet.
  • Der zweite Befehl 12 in dem Befehlsstrom ist ein Bedingungscode- Setzbefehl, der durch die G Stufe 4-1 während CYC2 verarbeitet wird. Der Befehl 12 wird durch die Befehlspipeline so verarbeitet, daß in der B, L, E und W Stufe bei CYC3, CYC4, CYC5, bzw. CYC6 erscheint. Da der Befehl 12 ein Bedingungscode-Setzbefehl (CCS) ist, ist ein Beispiel, das das Verarbeiten darstellt, wie folgt. Während CYC2 bestimmt die G2 Stufe die Adressen OP1 und OP2. Während CYC3 greift die B2 Stufe auf OP1 und OP2 von der Speichereinheit 1 zu und taktet sie in das OWRL-Register 11 bzw. das OWRH-Register 12 an dem Ende des CYC 3.
  • Nachdem OP1 und OP2 in die Register 11 und 12 und an dem Ende von CYC3 getaktet worden sind, beginnt der Operanden-Komparator 34 der Fig. 1 den Vergleich von OP1 und OP2. Die L Stufe 4-3 steuert die Bedingungscode-Setzlogik 26, damit das CC-Register 27-1 am Ende von CYC4 gesetzt wird. Die Ausgänge des CC-Registers 27-1 und ein weiterer Ausführungseinheitsstatus werden zu der I Einheit 3 zur Verwendung beim Steuern der Verzweigungsentscheidung und der Unterbrechungen zurückgeschickt.
  • Es wird auf die AUFSTELLUNG 2 Bezug genommen, wobei zum Zwecke der Erläuterung angenommen wird, daß der Befehl E3 ein Verzweigungs-bei-Bedingung-Befehl ist. Der Bedingungscode, der bestimmt, ob zu verzweigen ist oder nicht, wird durch den Befehl I2 gesetzt, wie es vorhergehend erläutert wurde. Im Zyklus CYC3 wird der Befehl I3 durch G-Stufe 4-1 verarbeitet. Da das Bedingungscoderegister 27-1 am Ende von CYC4 durch I2 gesetzt wird, kann die Verzweigungsentscheidung nicht vor dem Zyklus CYC5 gemacht werden. Deshalb bewirkt die I Einheit 3 eine Verzögerung bei der Verarbeitung des Befehls I3, um CYC5 mit B3 aufzuschließen. Diese Verzögerung wird in der AUFSTELLUNG 2 durch eine Wiederholung der G Stufe G3 dargestellt, die während CYC4 auftritt. Wenn die Verzweigung vorgenommen worden ist, dann wird das G9 Segment des Zielbefehls I9 während des Zyklus CYC6 verarbeitet und das Segment B4 von E4 wird aufgehoben. Wenn die Verzweigung nicht genommen wird, dann wird das B4 Segment des nächstens Befehls I4 während CYC6 verarbeitet.
  • Wenn der Bedingungscode am Ende von CYC4 durch I2 nicht gesetzt werden kann, werden G4 (wenn die Verzweigung nicht genommen wird) oder G9 (wenn die Verzweigung genommen wird) um so viele zusätzliche Zyklen verzögert, die man braucht, den Bedingungscode durch I2 zu setzen. In dem Fall, daß der Bedingungscode von dem Ergebnis der I2 Ausführung gesetzt wird, wird er frühestens an dem Ende des Zyklus CYC5 gesetzt. Entweder G4 oder G9 werden um einen Zyklus verzögert.
  • In Fig. 3 ist eine detaillierte Ausführung des Komparators 34 für 32-Bit Operanden gezeigt. Die acht 4-Bit Aufteilungen sind durch acht logische Blöcke 36-0, 36-1, . . . , 36-7 dargestellt.
  • In Fig. 3 erhält jede der 4-Bit Aufteilungen vier der Bit von jedem der Eingangsoperanden OP1 und OP2. Beispielsweise erhält der Block 36-0 die vier Eingangsbits 0, 1, 2 und 3 für jeden Operanden. Der Block 36-1 erhält die vier Eingangsbits 4, 5, 6 und 7 und so weiter, bis der Block 36-7 die Eingänge 28, 29, 30 und 31 erhält.
  • Jeder der Blöcke 36-0 bis 36-7 enthält vier 1-Bit Aufteilungen. Beispielsweise enthält der Block 36-0 die 1-Bit Aufteilungen 37- 0, 37-1, 37-2 und 37-3.
  • In Fig. 3 liefert jeder der acht Blöcke 36-0 bis 36-7 Ausgänge an einen entsprechenden Zwischenblock 38-0, 38-1, . . . , 38-7 und an einen Zwischenblock 40. Jeder der Blöcke 38-0 bis 38-7 wiederum enthält fünf Unterblöcke. Beispielsweise enthält der Block 38-0 die Unterblöcke 39-0, 39-1, . . . , 39-4. Die Ausgänge von den Blöcken 38-0 bis 38-7 sind als Eingänge mit den Endaufaddierungsblöcken verbunden, die der TT Block 40-1, der TC Block 40- 2, der CT Block 40-3 und die CC Blöcke 42 und 43 sind.
  • In Fig. 3 stellt der Zwischenblock 40 Ausgänge an den Ausgangsblock 44 bereit, der bestimmt, wenn das "UND" von OP1 und OP2 nicht Null ist.
  • In Fig. 4 ist eine 1-Bit Abtrennung 37-0 des Blockes 36-0 der Fig. 3 als eine typische der 32 ein-Bit Abtrennungen gezeigt. Die Bit Abtrennung in Fig. 4 ist mit den Eingängen +OP2 BITm,n und +OP1 BITm,n bezeichnet. Der Buchstabe "m" besitzt die Werte 0, . . . , 3, und deshalb stellt die Bit-Abtrennung der Fig. 4 die vier Bit-Abtrennungen 37-0 bis 37-3 in dem Block 36-0 der Fig. 3 dar. Der Buchstabe "n" besitzt die Werte 0, 1 . . . , 7 und deshalb stellt die Bit-Abtrennung der Fig. 4 auch die Bit-Abtrennungen für jeden der acht Blöcke 36-0 bis 36-7 dar, wobei jeder wiederum m gleich 0, . . . , 3 besitzt. Demgemäß gibt es 32 Bit Abtrennungen vom Typ der Fig. 4 bei der Ausführungsform der Fig. 3.
  • In Fig. 4 stellt das Tor 51 den wahren und komplementären Ausgang für das Eingangsbit +OP2 BITm,n bereit. Ähnlich stellt das Tor 52 den wahren und komplementären Ausgang für das Eingangsbit +OP1 BITm,n bereit. Die Tore 53-1 bis 53-7 stellen verschiedene logische Kombinationen der OP1 und OP2 Eingangsbit bereit. Die logischen Kombinationen in Fig. 4 sind in der folgenden TABELLE 1 zusammengefaßt.
  • TABELLE 1 (Fig. 4)
  • m = 0, 1, 2, 3
  • n = 0, 1, . . . , 7
  • Eingang Ausgang (Kommentar)
  • + OP2 BITm,n +TTm,n; +("UND" Ergebnis nicht Null)
  • + OP1 BITm,n -TTm,n; -(beide Bit sind 1)
  • -CTm,n; -(OP2 Null, OP1 1)
  • -TCm,n; -(OP2 eins, OP1 0)
  • -CCm,n; -(beide Bit 0)
  • -BSm,n; -(gleiche Bit)
  • -BDm,n; -(unterschiedliche Bit)
  • In TABELLE 1 entsprechen die in der linken Spalte gezeigten Eingänge und die in der rechten Spalte gezeigten Ausgänge den Eingängen und den Ausgängen in Fig. 4. In TABELLE 1 erscheint der die Bedeutung der Ausgangsgröße erklärende Kommentar in Klammern. Es wird darauf hingewiesen, daß der Wert m in TABELLE 1 gleich 0, 1, 2 und 3 und der Wert n gleich 0, 1, . . . , 7 ist. Demgemäß gibt es 32 unterschiedliche Werte für jeden der Eingänge und jeden der Ausgänge in TABELLE 1.
  • In Fig. 4 und in TABELLE 1 werden einzelne, entsprechende Bit von OP1 und OP2 gegeneinander geprüft, um festzustellen, ob beide 1 (TT), beide 0 (CC), beide die gleichen (BS), beide unterschiedlich (BD) und wie unterschiedlich (TC oder CT) sind. In den Fig. 5-9 sind die Ausgänge von Fig. 4 in Vierergruppen zusammengestellt, um die Signale in der folgenden AUFSTELLUNG 3 zu bilden.
  • AUFSTELLUNG 3
  • PTn, PTPn Bei einer Addition, bei der keiner der Operanden komplementiert ist oder bei der beide Operanden 1-komplementiert sind, wird eine 1 ausgetragen, wenn und nur wenn es einen Eintrag gibt. PTn verwendet alle 4 Bit; PWPn verwendet die 3 Bit niederer Ordnung.
  • PCn, PCPn Bei einer Addition, bei der genau einer der Operanden 1-komplementiert ist, wird eine 1 ausgetragen, wenn und nur wenn es einen Eintrag gibt. PCn verwendet alle 4 Bit; PCPn verwendet die 3 Bit niederer Ordnung.
  • TCPn Bei einer Addition, bei der beide Operanden 1- komplementiert sind, wird eine 2 ausgetragen, wenn und nur wenn eine 2 eingetragen wird. TCPn verwendet alle 4 Bit; alle 4 Bit eines jeden Operanden müssen Null sein, damit TCPn wahr ist.
  • TOPn Bei einer Addition, bei der beide Operanden 1- komplementiert sind, wird eine 1 ausgetragen, wenn eine 2 eingetragen wird. (Bei dieser Ausführung ist TOPn auch wahr, wenn eine 1 ohne Eintrag einer 2 ausgetragen wird. TOPn ist auch wahr, wenn eine 2 als Ergebnis einer eingetragenen 2 ausgetragen wird.) TOPn verwendet alle 4 Bit.
  • KTT4,n; KTT3,n Bei einer Addition, bei der keiner der Operanden komplementiert wird, wird eine 1 unabhängig davon ausgetragen, ob es einen Eintrag gibt. KTT4,n verwendet alle 4 Bit; KTT3,n verwendet die 3 Bit niederer Ordnung.
  • KTC4,n; KTC3,n Bei einer Addition, bei der der erste Operand 1 komplementiert und der zweite Operand nicht komplementiert wird, wird eine 1 unabhängig davon ausgetragen, ob es einen Eintrag gibt. KTC4,n verwendet alle 4 Bit; KTC3,n verwendet die 3 Bit niederer Ordnung.
  • KCT4,n; KCT3,n Bei einer Addition, bei der der erste Operand nicht komplementiert wird und der zweite Operand 1-komplementiert wird, wird eine 1 unabhängig davon ausgetragen, ob es einen Eintrag gibt. KCT4,n verwendet alle 4- Bit; KCT3,n verwendet die 3 Bit niederer Ordnung.
  • KCC4,n Bei einer Addition, bei der beide Operanden 1- komplementiert sind, tritt ein Austrag (entweder 1 oder 2) unabhängig davon auf, ob es einen Eintrag gibt. KCC4,n verwendet alle 4 Bit.
  • Die Art, auf die die Signale der AUFSTELLUNG 3 gebildet werden, ist im einzelnen in den Fig. 5 bis 9 gezeigt. Zusätzlich fassen die TABELLE 2, TABELLE 3, . . . , TABELLE 6 die Eingänge zusammen, wie es in der linken Spalte gezeigt ist, und die Ausgänge, wie es in der rechten Spalte für die logischen Blöcke der jeweiligen Fig. 5 bis 9 gezeigt ist. In den Fig. 5 bis 9 und den TABELLEN 2 bis 6 ist der Wert "n" gleich 0, 1, . . . , 7. Diese Werte von "n" entsprechen den logischen Blöcken 38-n in Fig. 3, das heißt 38-0, 38-1, . . . , 38-7.
  • TABELLE 2 (Fig. 5)
  • Eingang Ausgang (Kommentar)
  • -BD0,n -PTn; (Übertrage wahr, 4 Bit)
  • -BD1,n -PTPn; (Übertrage wahr teilweise, 3 Bit)
  • -BD2,n -TOPn; (Zwei-zu-Eins Übertragung, 4 Bit)
  • -BD3,n -TCPn; (Zwei-Austrags-Übertragung, 4 Bit)
  • -CC3,n -PCn; (Übertrage Komplement, 4 Bit)
  • -CC2,n -PCPn; (Übertrage Komplement teilweise, 3 Bit)
  • -CC1,n
  • -CC0,n
  • -BS0,n
  • -BS1,n
  • -BS2,n
  • -BS3,n
  • n = 0, 1, . . . , 7
  • (Beachte: Übertragen schließt Erzeugen nicht ein)
  • TABELLE 3 (Fig. 6)
  • Eingang Ausgang
  • -TT0,n -KTT4,n (4 Bit)
  • -BD0,n -KTT3,n (3 Bit)
  • -TT1,n
  • -TT2,n
  • -BD1,n
  • -BD2,n
  • -TT3,n
  • n = 1, 2, . . . , 7
  • TABELLE 4 (Fig. 7)
  • Eingang Ausgang (Kommentar)
  • -TC0,n -KTC4,n (4 Bit)
  • -BS0,n -KTC3,n (3 Bit)
  • -TC1,n
  • -TC2,n
  • -BS1,n
  • -BS2,n
  • -TC3,n
  • n = 1, 2, . . . , 7
  • TABELLE 5 (Fig. 8)
  • Eingang Ausgang
  • -CT1,n -KCT3,n (3 Bit)
  • -CT2,n -KCT4,n (4 Bit)
  • -BS1,n
  • -BS2,n
  • -CT3,n
  • -BS0,n
  • -CT0,n
  • n = 0, 1, . . . , 7
  • TABELLE 6 (Fig. 9)
  • Eingang Ausgang
  • -CC0,n -KCC4,n (4 Bit)
  • -CC1,n
  • -BD0,n
  • -CC2,n
  • -BD1,n
  • -BD2,n
  • -CC3,n
  • n = 0, 1, . . . , 7
  • In Fig. 10 werden die Zwischengrößen von den logischen Blöcken 38-0 bis 38-7 der Fig. 3 und der TABELLE 2 bis TABELLE 6 (Fig. 5 bis 9) zusammengestellt, um die Ausgänge für drei der vier Halbaddierer bereitzustellen, nämlich der Halbaddierer 14, 15 und 16 der Fig. 2. In Fig. 10 stellt die Größe YY, die bei dem EINGANG und bei dem AUSGANG verwendet wird, eine der drei Variablen, nämlich TT, TC oder CT dar. Wenn die Variable YY TT darstellt, stellt Fig. 10 den logischen Block 40-1 in Fig. 3 dar, der den Ausgang von dem Halbaddierer 14 der Fig. 2 bildet. Wenn die Variable YY TC darstellt, stellt die Fig. 10 den logischen Block 40-2 der Fig. 3 dar, der den Ausgang von dem Halbaddierer 15 der Fig. 2 bildet. Wenn die Variable YY CT darstellt, stellt die Fig. 10 den logischen Block 40-3 der Fig. 3 dar, der den Ausgang von dem Halbaddierer 16 der Fig. 2 bildet. Der EINGANG und der AUSGANG der Fig. 10 für die Werte von YY gleich TT, TC und CT sind durch die TABELLE 7, TABELLE 8 bzw. TABELLE 9 dargestellt.
  • TABELLE 7 (Fig. 10)
  • Eingang Ausgang
  • -KTT4,0 +K32TT
  • -KTT4,1 +K31TT
  • -PT0
  • -KTT4,2
  • -PT1
  • -KTT4,3
  • -PT2
  • -KTT4,4
  • -PT3
  • -KTT4,5
  • -PT4
  • -KTT4,6
  • -PT5
  • -KTT4,7
  • -PT6
  • -KTT3,0
  • -PTP0
  • TABELLE 8 (Fig. 10)
  • Eingang Ausgang
  • -KTC4,0 +K32TC
  • -KTC4,1 +K31TC
  • -PC0
  • -KTC4,2
  • -PC1
  • -KTC4,3
  • -PC2
  • -KTC4,4
  • -PC3
  • -KTC4,5
  • -PC4
  • -KTC4,6
  • -PC5
  • -KTC4,7
  • -PC6
  • -KTC3,0
  • -PCP0
  • TABELLE 9 (Fig. 10)
  • Eingang Ausgang
  • -KCT4,0 +K32CT
  • -KCT4,1 +K31CT
  • -PC0
  • -KCT4,2
  • -PC1
  • -KCT4,3
  • -PC2
  • -KCT4,4
  • -PC3
  • -KCT4,5
  • -PC4
  • -KCT4,6
  • -PC5
  • -KCT4,7
  • -PC6
  • -KCT3,0
  • -PCP0
  • Die Fig. 11 bis 13 stellen dar, wie K32CC gebildet wird. Wegen der Notwendigkeit, zwei statt eins einzutragen, werden Zwei- Eintrag-Übertragungs-Strukturen benötigt. Eine Struktur handhabt die Übertragung von "zwei", während die andere die Übertragung von "eins" handhabt. Diese zwei Strukturen sind in den Fig. 11 und 12 gemischt, und die endgültige Größe wird in Fig. 13 berechnet. Der EINGANG und AUSGANG der Fig. 11, 12 und 13 ist in der folgenden TABELLE 10, TABELLE 11 bzw. TABELLE 12 gezeigt.
  • TABELLE 10 (Fig. 11)
  • Eingang Ausgang
  • -KCC4,0 -CCX0
  • -TOP0 -CCX1
  • -KCC4,1 -CCX2
  • -TOP1 -CCX3
  • -KCC4,2 +BOZ
  • -TOP2 (beide Operanden Null)
  • -KCC4,3
  • -TOP3
  • -TCP7
  • -TCP6
  • -TCP5
  • -TCP4
  • -TCP3
  • -TCP2
  • -TCP1
  • -TCP0
  • TABELLE 11 (Fig. 12)
  • Eingang Ausgang
  • -KCC4,0 -CCX4
  • -TOP4 -CCX5
  • -TCP5 -CCX6
  • -TCP6 -CCX7
  • -TCP7
  • -KCC4,5
  • -TOP5
  • -TOP6
  • -KCC4,6
  • -KCC4,7
  • -TOP7
  • -PT7
  • TABELLE 12 (Fig. 13)
  • Eingang Ausgang
  • +BOZ +K32CC
  • -CCX0
  • -CCX1
  • -CCX2
  • -CCX3
  • -CCX4
  • -CCX5
  • -CCX6
  • -PT5
  • -PT4
  • -PT3
  • -PT2
  • -PT1
  • -PT0
  • -PT6
  • -CCX7
  • In Fig. 14 stellt der logische Zwischenblock 40 die TTm,n Ausgänge von den Bit Unterteilungen der Fig. 4 der Form, deren Ende keine 0 Signale ergeben, +ARNZ0, +ARNZ1, . . . , +ARNZ7 von den Toren 57-1, 57-2, . . . , 57-7 zusammen. Diese Signale werden in der folgenden TABELLE 13 auf summiert.
  • TABELLE 13
  • ARNZn Ein nicht-Null-Ergebnis wird erhalten, wenn die zwei Operanden ein nicht-Null-Ergebnis erzeugen, wenn sie logisch über UND zusammen verbunden werden. ARNZn verwendet alle 4 Bit.
  • In Fig. 14 stellt der logische Block 44 mit den ODER-Toren 58-1, 58-2 und 58-3 alle Zwischenausgänge von dem logischen Block 40 zusammen. Der Ausgang von den Toren 58-1 bis 58-3 ist als Eingang mit dem Tor 59 verbunden, um den endgültigen Ausgang -UND RNZ zu liefern. Dieses Signal zeigt an, daß das logische UND von OP1 und OP2 nicht Null ist.
  • Die in der rechten Spalte der folgenden AUFSTELLUNG 4 aufgeführten, logischen Funktionen sind die logischen Kombinationen, die durch die Auswähllogik 26 der Fig. 1 gebildet werden. Die L Stufe 4-3 der Fig. 1 wählt eine der logischen Kombinationen der AUFSTELLUNG 4 aus, wenn eine Voraussage, die in der linken Spalte aufgeführt ist, erwünscht ist.
  • In der AUFSTELLUNG bedeutet das Symbol "*" das 1-Komplement der Größe, das Symbol ") (" die logische UND-Funktion und das Symbol "+" die logische ODER-Funktion.
  • AUFSTELLUNG 4 Logisches Vergleichen
  • Operanden sind gleich: (K32TC) (K32CT)
  • Erster Operand ist niedrig: *K32CT
  • Zweiter Operand ist niedrig: *K32TC
  • Operanden sind ungleich: *(K32TC) (K32CT)
  • Logische Addition
  • Ergebnis ist Null,
  • kein Übertrag: beide Operanden Null
  • Ergebnis ist nicht Null, kein Übertrag: *(K32TT + beide Operanden Null)
  • Ergebnis ist Null, Übertrag: (K32TT) (K32CC)
  • Ergebnis ist nicht Null, Übertrag: (K32TT) (*K32CC)
  • Logische Subtraktion
  • Ergebnis ist nicht Null, kein Übertrag: *K32CT
  • Ergebnis ist Null, Übertrag: (K32TC) (K32CT)
  • Ergebnis ist nicht Null, Übertrag: *K32TC
  • Algebraisches Vergleichen (gleiche Vorzeichen)
  • Operanden sind gleich: (K32TC) (K32CT)
  • Erster Operand ist niedrig: *K32CT
  • Zweiter Operand ist niedrig: *K32TC
  • Algebraisches Vergleichen (ungleiche Vorzeichen)
  • Erster Operand ist niedrig: *K32TC
  • Zweiter Operand ist niedrig: *K32CT
  • Logisches, exklusives ODER
  • Ergebnis ist Null: (K32TC) (K32CT)
  • Ergebnis ist nicht Null: *(K32TC) (K32CT)
  • Algebraische Addition (gleiche Vorzeichen)
  • Ergebnis ist Null, kein Überlauf: beide Operanden Null
  • Ergebnis ist negativ, kein Überlauf: (K32TT) (K31TT)
  • Ergebnis ist positiv, kein Überlauf: *(K32TT + K31TT + beide Operanden Null)
  • Überlauf: K32TT K31TT
  • Algebraische Addition (unterschiedliche Vorzeichen)
  • Ergebnis ist Null: (K32TT) (K32CC)
  • Ergebnis ist negativ: *K32TT
  • Ergebnis ist positiv: *K32CC
  • Algebraische Subtraktion (gleiche Vorzeichen)
  • Ergebnis ist Null: (K32TC)·(K32CC)
  • Ergebnis ist negativ: *K32CT
  • Ergebnis ist positiv: *K32TC
  • Algebraische Subtraktion (unterschiedliche Vorzeichen)
  • Kein Überlauf: *(K32TC) (K32CC)
  • Überlauf: K32CT K31CT
  • Normalisierter kurzer Gleitpunkt - Vergleich
  • Gleiche Operanden: (K32TC) (K32CT)
  • OP1 niedrig: (beide Zeichen negativ) (*K31TC) + (beide Zeichen positiv) (*K31CT) + (OP1 negativ) (OP2 positiv) (beide Zeichen negativ) (*K31CT) + (beide Zeichen positiv (*K31TC) + (OP1 positiv) (OP2 negativ)
  • Logisches UND
  • Ergebnis ist Null: *("UND" Ergebnis nicht-Null)
  • Ergebnis ist nicht-Null: ("UND" Ergebnis nicht-Null)
  • Logisches inklusives ODER
  • Ergebnis ist Null: beide Operanden Null
  • Ergebnis ist nicht-Null: *(beide Operanden Null)
  • Festpunktdivision
  • 32 Bit Divisor ist nicht größer als die 32 Bit K32TC
  • höherer Ordnung des Dividenden

Claims (17)

1. Ein Datenverarbeitungssystem mit Speichervorrichtung, Befehlsverarbeitungsvorrichtung und Befehlsausführungsvorrichtung, wobei das System Datenverarbeitungen unter der Steuerung von Befehlen durchführt, die Operationscode zum Angeben von auszuführenden Operationen und Operanden-Felder zum Erkennen von Operanden aufweisen, die bei der Ausführung der Operationscode zu verwenden sind, und wobei Befehle in Segmenten verarbeitet werden, wo jedes Segment eine Dauer gleich einem oder mehreren Taktzyklen aufweist, umfassend:
eine Takteinrichtung (CLK), die Taktsignale liefert, die die Taktzyklen zum Steuern des Datenverarbeitungssystemes festlegen,
eine Befehlsfolge-Verarbeitungseinrichtung (3, 4) zum Verarbeiten von Befehlen, die einen Verzweigungsbefehl, der einen von einer Mehrzahl von möglichen Befehlsströmen angibt, der gemäß einem Bedingungscode zu nehmen ist, der durch den genannten Verzweigungsbefehl angegeben ist, und einen Bedingungscode-Setzbefehl einschließt, der Operanden angibt, die beim Ausführen des Bedingungscode-Setzbefehls zu verwenden sind, wobei die genannte Befehlsfolge-Verarbeitungseinrichtung eine Mehrzahl von Stufen zum Speichern von Befehlsfeldern enthält, wobei die genannten Stufen zum Speichern von Befehlsfeldern eine Pipeline zum Verarbeiten von Befehlen bilden, um die Ausführung der durch die Befehle angegebenen Operationen zu steuern,
eine Einrichtung (4) zum sequentiellen Durchlaufen einer Mehrzahl der genannten Befehle,
eine Komparator-Einrichtung (34) zum Vergleichen der Operanden, die durch den genannten Bedingungscode- Setzbefehl angegeben sind, um ein Vergleichsergebnis zu bilden,
eine Einrichtung (26), die auf den Operationscode des genannten Bedingungscode-Setzbefehls von einer der genannten Mehrzahl von Stufen vor der Ausführung der Operation anspricht, die durch den Operationscode des genannten Code- Setzbefehls in der genannten Befehlsfolge-Verarbeitungseinrichtung angegeben ist, und auf das genannte Vergleichsergebnis in der genannten Komparator-Einrichtung anspricht, um den genannten Bedingungscode zu setzen, ohne die Notwendigkeit auf die Ausführung der durch den Operationscode des genannten Code-Setzbefehls festgelegten Operation zu warten, dadurch gekennzeichnet, daß
die genannte Einrichtung (4) zum sequentiellen Durchlaufen einer Mehrzahl der genannten Befehle das Durchlaufen unter der Steuerung der genannten Takteinrichtung von einer Mehrzahl der genannten Befehle, die den genannten Bedingungscode-Setzbefehl einschließen, durch die genannte Pipeline hindurch mit einer Zeitversetzung von einem Zyklus zwischen aufeinanderfolgenden Befehlen in der genannten Pipeline beim Antreffen eines bedingten Verzweigungsbefehls durchführt, und daß
die genannte Komparator-Einrichtung (34) eine Einrichtung (14, 15, 16, 17) enthält, die auf den genannten Bedingungscode-Setzbefehl zum Vergleichen der Operanden, die durch den Bedingungscode-Setzbefehl angegeben sind, unabhängig von der Ausführung des Bedingungscode-Setzens durch die Befehlsausführungsvorrichtung (2) antwortet, wodurch die Einrichtungen zum Vergleichen das Vergleichsergebnis vor der Ausführung des Bedingungscode-Setzbefehls bilden, wobei die genannte Komparator-Einrichtung einschließt:
einen wahr-wahr-Halbaddierer (14) zum Empfangen des wahren Wertes des genannten ersten und zweiten Operanden, um ein wahr-wahr-Austragssignal bereitzustellen,
einen wahr-Komplement-Halbaddierer (15), der den komplementierten Wert des genannten ersten Operanden und den wahren Wert des genannten zweiten Operanden erhält, um ein wahr-Komplement-Austragssignal bereitzustellen,
ein Komplement-wahr-Halbaddierer (16) zum Empfangen des wahren Wertes des genannten ersten Operanden und des Komplementierten Wertes des genannten zweiten Operanden, um ein Komplement-wahr-Austragssignal bereitzustellen,
ein Komplement-Komplement-Halbaddierer (17), der das Komplement des genannten ersten und zweiten Operanden empfängt, um ein Komplement-Komplement-Austragssignal bereitzustellen,
und die genannte Einrichtung (26) zum Setzen des genannten Bedingungscodes enthält
eine Auswähleinrichtung, die verbunden ist, das wahrwahr-Austragssignal, das genannte wahr-Komplement-Austragssignal, das genannte Komplement-wahr-Austragssignal und das genannte Komplement-Komplement-Austragssignal zu erhalten, wobei die genannte Auswähleinrichtung betreibbar ist, vorbestimmte der genannten Austragssignale auszuwählen, um ein Code-Setzsignal bereitzustellen,
eine Einrichtung (27-1) zum Speichern des genannten Code-Setzsignals als das genannte Vergleichsergebnis.
2. Ein Datenverarbeitungssystem gemäß Anspruch 1, das ferner dadurch gekennzeichnet ist, daß die genannte Befehlsfolge-Verarbeitungseinrichtung (3, 4) einen der genannten Mehrzahl von möglichen Befehlsströmen als eine Funktion des Setzens des genannten Bedingungscodes auswählt.
3. Ein Datenverarbeitungssystem gemäß Anspruch 1 oder 2, bei dem die genannte Befehlsfolge-Verarbeitungseinrichtung enthält,
eine Mehrzahl von Einzyklus-Stufen die eine Pipeline (4) zum Verarbeiten von Befehlen bilden, eine Einrichtung zum Einführen einer Mehrzahl von segmentierten Befehlen in die genannte Pipeline mit einer minimalen Zeitversetzung zwischen Befehlen, die gleich einem Zyklus sind, und wobei die genannte Pipeline mit einer minimalen Zeitversetzung zwischen Instruktionen, die gleich einem Zyklus sind, und wobei die genannten Stufen enthalten eine Stufe (A) zur Operanden Adressenerzeugung während eines Erzeugungssegmentes, eine Stufe (B) zum Zugreifen auf die Operanden von erzeugten Adressen aus während eines Zugriffssegmentes, eine Stufe (L) zum Vergleichen der genannten Operanden während eines Vergleichssegmentes, eine Stufe (E) zur Ausführung der durch den genannten Befehl angegebenen Operation während eines Ausführungssegmentes, eine Stufe (W) zum Speichern der Ausführungsergebnisse während eines Speichersegmentes,
und wobei die genannte Einrichtung (26) eine Einrichtung enthält, die betreibbar ist, den genannten Bedingungscode während des genannten Vergleichssegmentes zu setzen.
4. Ein Datenverarbeitungssystem gemäß einem beliebigen der Ansprüche 1 bis 3, bei dem die genannte Befehlsfolge-Verarbeitungseinrichtung ein erstes (11) und ein zweites (12) Register zum Speichern des genannten ersten und zweiten Operanden einschließt, die durch den genannten Bedingungscode-Setzbefehl angegeben sind.
5. Ein Datenverarbeitungssystem gemäß einem beliebigen der Ansprüche 1 bis 4, bei dem der genannte wahr-wahr-Halbaddierer eine Einrichtung enthält, um das genannte wahr-wahr- Austragssignal in Antwort auf alle Bit für den genannten ersten und zweiten Operanden mit Ausnahme eines Bit höchster Ordnung zu erzeugen.
6. Ein Datenverarbeitungssystem gemäß einem beliebigen der Ansprüche 1 bis 5, in dem der genannte wahr-Komplement- Halbaddierer eine Einrichtung enthält, um das genannte wahr-Komplement-Austragssignal in Antwort auf alle Bit von dem genannten ersten und zweiten Operanden mit Ausnahme eines Bit höchster Ordnung zu erzeugen.
7. Ein Datenverarbeitungssystem gemäß einem beliebigen der Ansprüche 1 bis 6, in dem der genannte Komplement-wahr- Halbaddierer eine Einrichtung enthält, um das genannte Komplement-wahr-Austragssignal in Antwort auf alle Bit des genannten ersten und zweiten Operanden mit Ausnahme der Bit höchster Ordnung zu erzeugen.
8. Ein Datenverarbeitungssystem gemäß einem beliebigen der Ansprüche 1 bis 7, in dem der genannte Komplement-Komplement-Halbaddierer eine Einrichtung enthält, um das genannte Komplement-Komplement-Austragssignal in Antwort auf alle Bit des genannten-ersten und zweiten Operanden mit Ausnahme des Bit höchster Ordnung zu erzeugen.
9. Ein Datenverarbeitungssystem gemäß einem beliebigen der vorhergehenden Ansprüche, in dem der genannte Bedingungscode-Setzbefehl einen logischen Vergleich festlegt und die genannte Auswähleinrichtung das genannte wahr-Komplement- Austrags- und das genannten Komplement-wahr-Austragssignal auswählt, um die Ergebnisse des genannten logischen Vergleiches vorauszusagen.
10. Ein Datenverarbeitungssystem gemäß einem beliebigen der Ansprüche 1 bis 8, in dem der genannte Bedingungscode-Setzbefehl eine logische Subtraktion festlegt und die genannte Auswähleinrichtung das genannte Komplement-wahr-Austrags- und das genannte wahr-Komplement-Austragssignal auswählt, um die Ergebnisse der genannten logischen Subtraktion vorauszusagen.
11. Ein Datenverarbeitungssystem gemäß irgendeinem beliebigen der Ansprüche 1 bis 8, in dem der genannte Bedingungscode- Setzbefehl einen algebraischen Vergleich festlegt und die genannte Auswähleinrichtung das genannte wahr-Komplement- Austrags- und das genannte Komplement-wahr-Austragssignal auswählt, um die Ergebnisse des genannten algebraischen Vergleiches vorauszusagen.
12. Ein Datenverarbeitungssystem gemäß einem beliebigen der Ansprüche 1 bis 8, in dem der genannte Bedingungscode-Setzbefehl ein logisches, exklusives ODER festlegt und die genannte Auswähleinrichtung das genannte wahr-Komplement- Austrags- und das genannte Komplement-wahr-Austragssignal auswählt, um die Ergebnisse des genannten logischen, exklusiven ODER vorauszusagen.
13. Ein Datenverarbeitungssystem gemäß einem beliebigen der Ansprüche 1 bis 8, in dem der genannte Bedingungscode-Setzbefehl eine algebraische Subtraktion festlegt und die genannte Auswähleinrichtung das genannte wahr-Komplement- Austrags- und das die genannten Komplement-wahr-Austragssignal auswählt, um die Ergebnisse der genannten algebraischen Subtraktion vorauszusagen, wenn die Vorzeichen der genannten Operanden die gleichen sind.
14. Ein Datenverarbeitungssystem gemäß einem beliebigen der Ansprüche 1 bis 8, in dem der genannte Bedingungscode-Setzbefehl eine algebraische Addition festlegt und die genannte Auswähleinrichtung das genannte wahr-wahr-Austrags- und das genannten Komplement-Komplement-Austragungssignal auswählt, um die Ergebnisse der genannten algebraischen Addition vorauszusagen, wenn die Vorzeichen der genannten Operanden unterschiedlich sind.
15. Ein Datenverarbeitungssystem gemäß einem beliebigen der vorhergehenden Ansprüche, in dem die genannte Komparator- Einrichtung eine Einrichtung (17) zum Bestimmen enthält, wenn beide Operanden Null sind, um ein beide Null Signal BOZ bereitzustellen, und wobei die genannte Auswähleinrichtung eine Einrichtung zum Auswählen des genannten beide-Null- Signales enthält.
16. Ein Datenverarbeitungssystem gemäß Anspruch 15, in dem der genannte Bedingungscode-Setzbefehl eine logische Addition festlegt und die genannte Auswähleinrichtung das genannte wahr-wahr-Austragssignal und das genannte Komplement-Komplement-Austragssignal und die genannten beide-Null-Signale auswählt, um die Ergebnisse der genannten logischen Addition vorauszusagen.
17. Ein Datenverarbeitungssystem gemäß Anspruch 15, in dem der genannte Bedingungscode-Setzbefehl eine algebraische Addition festlegt und die genannte Auswähleinrichtung das genannte wahr-wahr-Austragssignal, und das genannte beide- Null-Signal auswählt, um die Ergebnisse der genannten algebraischen Addition vorauszusagen, wenn die Vorzeichen der genannten Operanden dieselben sind.
DE84305733T 1983-08-24 1984-08-22 Kodebestimmung mit einem auf Halbaddierer basierten Operandenvergleicher. Expired - Fee Related DE3486211T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/526,047 US4578750A (en) 1983-08-24 1983-08-24 Code determination using half-adder based operand comparator

Publications (2)

Publication Number Publication Date
DE3486211D1 DE3486211D1 (de) 1993-10-28
DE3486211T2 true DE3486211T2 (de) 1994-01-20

Family

ID=24095710

Family Applications (1)

Application Number Title Priority Date Filing Date
DE84305733T Expired - Fee Related DE3486211T2 (de) 1983-08-24 1984-08-22 Kodebestimmung mit einem auf Halbaddierer basierten Operandenvergleicher.

Country Status (5)

Country Link
US (1) US4578750A (de)
EP (1) EP0142912B1 (de)
AU (1) AU574095B2 (de)
CA (1) CA1211849A (de)
DE (1) DE3486211T2 (de)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6015745A (ja) * 1983-07-06 1985-01-26 Nec Corp 情報処理装置
US4845659A (en) * 1986-08-15 1989-07-04 International Business Machines Corporation Accelerated validity response permitting early issue of instructions dependent upon outcome of floating point operations
US4967351A (en) * 1986-10-17 1990-10-30 Amdahl Corporation Central processor architecture implementing deterministic early condition code analysis using digit based, subterm computation and selective subterm combination
DE3856175T2 (de) * 1987-06-05 1998-12-17 Mitsubishi Denki K.K., Tokio/Tokyo Digitales Signalverarbeitungssystem in dem ein Prozessor unter Kontrolle eines Hosts auf zwei Befehlsspeicher zugreift
US4888722A (en) * 1987-07-02 1989-12-19 General Datacomm, Inc. Parallel arithmetic-logic unit for as an element of digital signal processor
US4870575A (en) * 1987-10-01 1989-09-26 Itt Corporation System integrated fault-tree analysis methods (SIFTAN)
US4924422A (en) * 1988-02-17 1990-05-08 International Business Machines Corporation Method and apparatus for modified carry-save determination of arithmetic/logic zero results
US5210834A (en) * 1988-06-01 1993-05-11 Digital Equipment Corporation High speed transfer of instructions from a master to a slave processor
KR0136594B1 (ko) * 1988-09-30 1998-10-01 미다 가쓰시게 단일칩 마이크로 컴퓨터
DE68927218T2 (de) * 1988-10-18 1997-02-06 Hewlett Packard Co Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5768575A (en) * 1989-02-24 1998-06-16 Advanced Micro Devices, Inc. Semi-Autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for sepculative and out-of-order execution of complex instructions
US5781753A (en) * 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
ATE126908T1 (de) * 1989-06-02 1995-09-15 Siemens Nixdorf Inf Syst Verfahren und anordnung zur bearbeitung von sprungbefehlen in nach dem fliessbandprinzip arbeitenden datenverarbeitungsanlagen.
US5301341A (en) * 1990-11-28 1994-04-05 International Business Machines Corporation Overflow determination for three-operand alus in a scalable compound instruction set machine which compounds two arithmetic instructions
JP2894015B2 (ja) * 1991-06-28 1999-05-24 日本電気株式会社 桁あふれ検出方法および回路
US6353883B1 (en) * 1998-08-04 2002-03-05 Intel Corporation Method and apparatus for performing predicate prediction
US20010042195A1 (en) 1998-08-04 2001-11-15 Ralph M. Kling Method and apparatus for performing predicate prediction
US6367004B1 (en) * 1998-12-31 2002-04-02 Intel Corporation Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared
US6628886B2 (en) * 2002-01-04 2003-09-30 Iphotonics, Inc. Integrated processing system for optical devices
US6877069B2 (en) * 2002-03-28 2005-04-05 International Business Machines Corporation History-based carry predictor for data cache address generation
US6941421B2 (en) * 2002-10-29 2005-09-06 International Business Machines Corporation Zero delay data cache effective address generation
US7739434B2 (en) 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US20090182988A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Compare Relative Long Facility and Instructions Therefore
US20090182985A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Move Facility and Instructions Therefore
US20090182984A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Execute Relative Long Facility and Instructions Therefore
US9280480B2 (en) 2008-01-11 2016-03-08 International Business Machines Corporation Extract target cache attribute facility and instruction therefor
US7870339B2 (en) * 2008-01-11 2011-01-11 International Business Machines Corporation Extract cache attribute facility and instruction therefore
US20090182992A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Load Relative and Store Relative Facility and Instructions Therefore
US7895419B2 (en) 2008-01-11 2011-02-22 International Business Machines Corporation Rotate then operate on selected bits facility and instructions therefore
US7734900B2 (en) 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
US9684514B2 (en) * 2014-09-10 2017-06-20 International Business Machines Corporation Inference based condition code generation

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3881173A (en) * 1973-05-14 1975-04-29 Amdahl Corp Condition code determination and data processing
US4016545A (en) * 1975-07-31 1977-04-05 Harris Corporation Plural memory controller apparatus
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4399507A (en) * 1981-06-30 1983-08-16 Ibm Corporation Instruction address stack in the data memory of an instruction-pipelined processor

Also Published As

Publication number Publication date
US4578750A (en) 1986-03-25
EP0142912A2 (de) 1985-05-29
AU574095B2 (en) 1988-06-30
AU3221884A (en) 1985-02-28
DE3486211D1 (de) 1993-10-28
EP0142912B1 (de) 1993-09-22
CA1211849A (en) 1986-09-23
EP0142912A3 (en) 1987-04-15

Similar Documents

Publication Publication Date Title
DE3486211T2 (de) Kodebestimmung mit einem auf Halbaddierer basierten Operandenvergleicher.
DE69327996T2 (de) Verfahren zur Feststellung eines nullwertigen Ergebnisses als Folge einer arithmetischen oder logischen Berechnung und Schaltung hierfür
DE2714805C2 (de)
DE19983860B4 (de) Ein Verfahren und eine Einrichtung zur verbesserten Prädikatvorhersage
DE68927371T2 (de) Verfahren und Vorrichtung zur Verarbeitung von mehreren Zustandscodes wie für einen Parallel-Pipeline-Rechner
DE2704842C2 (de) Im Pipeline-Betrieb arbeitende Datenverarbeitungseinrichtung
DE69115344T2 (de) Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE2230102C2 (de) Mikroprogrammierter Prozessor mit bitparalleler Datenübertragung
DE68927911T2 (de) Datenverarbeitungssystem
DE69132129T2 (de) In der Grundzahl 4 arbeitende Übertragvorgriffsbäume
DE1813916C3 (de) Elektronische Datenverarbeitungsanlage
DE68928727T2 (de) Cachespeicheranlage zum Versorgen eines Festworts eines Befehlscodes mit variabler Länge und Befehlsabrufanlage
DE2224537A1 (de) Einrichtung und verfahren zur instruktionsselektion
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE2934971A1 (de) Datenverarbeitungssystem
DE3306084A1 (de) Rechnerarchitektur zur gleitkomma -addition
DE2421130C2 (de)
DE2948668A1 (de) Puffereinheit
DE3686828T2 (de) Hochleistungsparalleler vektorprozessor mit modifizierter register/elementprozessor konfiguration.
DE68920560T2 (de) Restprüfungsvorrichtung zur Fehlerkennung in Additions-, Substraktions-, Multiplikations-, Divisions- und Quadratwurzel-Operationen.
DE19983098B4 (de) Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren
DE3588212T2 (de) Verfahren und Gerät zum Suchen von Daten
DE3688806T2 (de) Instruktionsprozessor.
DE3900246C2 (de)

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee