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
Links
- 238000012545 processing Methods 0.000 claims description 46
- 230000000295 complement effect Effects 0.000 claims description 29
- 238000007792 addition Methods 0.000 description 22
- 238000005192 partition Methods 0.000 description 11
- 238000012546 transfer Methods 0.000 description 8
- 101100084052 Mus musculus Ppil2 gene Proteins 0.000 description 6
- 102000012643 PPIL2 Human genes 0.000 description 6
- 101100327147 Arabidopsis thaliana CYCB1-5 gene Proteins 0.000 description 5
- 101150058276 CYC3 gene Proteins 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 101100327144 Arabidopsis thaliana CYCB1-3 gene Proteins 0.000 description 3
- 101150018690 CPS2 gene Proteins 0.000 description 3
- 101150113005 cyc2 gene Proteins 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 101000595375 Homo sapiens Porimin Proteins 0.000 description 2
- 101150091468 IGSF8 gene Proteins 0.000 description 2
- 102100036489 Immunoglobulin superfamily member 8 Human genes 0.000 description 2
- 102100036026 Porimin Human genes 0.000 description 2
- 108091006626 SLC12A7 Proteins 0.000 description 2
- 102100034252 Solute carrier family 12 member 7 Human genes 0.000 description 2
- 238000000034 method Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012360 testing method 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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
-
- 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
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow 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.
- 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.
- 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:
- 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.
- 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.
- 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.
- 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)
- 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
- 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
- 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
- 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.
- 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
- 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
- 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.
- 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
- Eingang Ausgang
- -KCC4,0 -CCX4
- -TOP4 -CCX5
- -TCP5 -CCX6
- -TCP6 -CCX7
- -TCP7
- -KCC4,5
- -TOP5
- -TOP6
- -KCC4,6
- -KCC4,7
- -TOP7
- -PT7
- 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.
- 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.
- Operanden sind gleich: (K32TC) (K32CT)
- Erster Operand ist niedrig: *K32CT
- Zweiter Operand ist niedrig: *K32TC
- Operanden sind ungleich: *(K32TC) (K32CT)
- 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)
- Ergebnis ist nicht Null, kein Übertrag: *K32CT
- Ergebnis ist Null, Übertrag: (K32TC) (K32CT)
- Ergebnis ist nicht Null, Übertrag: *K32TC
- Operanden sind gleich: (K32TC) (K32CT)
- Erster Operand ist niedrig: *K32CT
- Zweiter Operand ist niedrig: *K32TC
- Erster Operand ist niedrig: *K32TC
- Zweiter Operand ist niedrig: *K32CT
- Ergebnis ist Null: (K32TC) (K32CT)
- Ergebnis ist nicht Null: *(K32TC) (K32CT)
- 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
- Ergebnis ist Null: (K32TT) (K32CC)
- Ergebnis ist negativ: *K32TT
- Ergebnis ist positiv: *K32CC
- Ergebnis ist Null: (K32TC)·(K32CC)
- Ergebnis ist negativ: *K32CT
- Ergebnis ist positiv: *K32TC
- Kein Überlauf: *(K32TC) (K32CC)
- Überlauf: K32CT K31CT
- 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)
- Ergebnis ist Null: *("UND" Ergebnis nicht-Null)
- Ergebnis ist nicht-Null: ("UND" Ergebnis nicht-Null)
- Ergebnis ist Null: beide Operanden Null
- Ergebnis ist nicht-Null: *(beide Operanden Null)
- 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.
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)
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)
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 |
-
1983
- 1983-08-24 US US06/526,047 patent/US4578750A/en not_active Expired - Lifetime
-
1984
- 1984-08-21 AU AU32218/84A patent/AU574095B2/en not_active Ceased
- 1984-08-22 EP EP84305733A patent/EP0142912B1/de not_active Expired - Lifetime
- 1984-08-22 DE DE84305733T patent/DE3486211T2/de not_active Expired - Fee Related
- 1984-08-23 CA CA000461604A patent/CA1211849A/en not_active Expired
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 |