DE68926063T2 - Method and device for controlling processors by predicting exceptions to floating point arithmetic - Google Patents
Method and device for controlling processors by predicting exceptions to floating point arithmeticInfo
- Publication number
- DE68926063T2 DE68926063T2 DE68926063T DE68926063T DE68926063T2 DE 68926063 T2 DE68926063 T2 DE 68926063T2 DE 68926063 T DE68926063 T DE 68926063T DE 68926063 T DE68926063 T DE 68926063T DE 68926063 T2 DE68926063 T2 DE 68926063T2
- Authority
- DE
- Germany
- Prior art keywords
- floating point
- exception
- floating
- operands
- calculation
- 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 - Lifetime
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000012545 processing Methods 0.000 claims abstract description 29
- 230000004044 response Effects 0.000 claims description 6
- 238000007792 addition Methods 0.000 description 12
- 239000013256 coordination polymer Substances 0.000 description 6
- 230000008901 benefit Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
Classifications
-
- 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
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- 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/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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
- G06F7/4991—Overflow or underflow
-
- 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/49942—Significance control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
Description
Die Erfindung betrifft allgemein ein Verfahren zum genauen Vorhersagen oder Handhaben von Gleitkommaausnahmen und insbesondere die Umsetzung eines derartigen Verfahrens in Systeme, die die Form einer Parallel- oder Pipelinearchitektur haben.The invention relates generally to a method for accurately predicting or handling floating point exceptions and more particularly to the implementation of such a method in systems having the form of a parallel or pipelined architecture.
Heutige Rechner insbesondere diejenigen für wissenschaftlich und technische Anwendungen führen desöfteren Berechnungen mit Gleitkommazahlen durch. Ein Vorteil der Gleitkommazahlen besteht darin, daß sie Rechenvorgänge erlauben, bei denen der Größenbereich der Zahlen sehr groß ist und zwar größer, als er, abgesehen von großen Schwierigkeiten, mit Festkommazahlen gehandhabt werden kann. Die Gleitkommadarstellung von Zahlen kommt dem sehr nahe, was oft als "wissenschaftliche Schreibweise" bezeichnet wird, indem jede Zahl als Produkt aus einer normalen Zahl und einer Basis und der Potenz der Basis dargestellt wird. Eine Zahl kann beispielweise in der folgenden Weise dargestellt werden:Today's computers, especially those for scientific and technical applications, often perform calculations using floating point numbers. One advantage of floating point numbers is that they allow calculations in which the range of numbers is very large, larger than can be handled with fixed point numbers, apart from great difficulty. The floating point representation of numbers comes very close to what is often referred to as "scientific notation" in that each number is represented as a product of a normal number and a base and the power of the base. For example, a number can be represented in the following way:
6318 x 10².6318x10².
Die Zahl 6318 wird als der Teil hinter dem Komma bezeichnet und die Zahl 2 ist der Exponent. In einer digitalen Darstellung:The number 6318 is called the part after the decimal point and the number 2 is the exponent. In a digital representation:
∅0∅0.11∅∅∅1∅1∅111∅∅0∅0.11∅∅∅1∅1∅111∅
in der das höchstwertige Bit das Vorzeichen ist, bilden die nächsten 3 Bit das Exponentenfeld und bilden die übrigen Bit das Feld des Teils hinter dem Komma.in which the most significant bit is the sign, the next 3 bits form the exponent field and the remaining bits form the field of the part after the decimal point.
Gleitkommazahlen und Gleitkommaberechnungen haben zwar bezeichnende Vorteile gegenüber Festkommazahlen und Festkommaberechnungen, sie sind jedoch nicht ohne Probleme. Ein derartiges Problem kann dann auftreten, wenn die Größe des Ergebnisses einer Gleitkommaberechnung die Kapazität des Gleitkommazahlensystems überschreitet oder überläuft. Dieses Problem, das üblicherweise als Gleitkommaausnahme bezeichnet wird, macht dann, wenn es entdeckt wird, eine spezielle Handhabung erforderlich ( beispielweise das Setzen einer Anzeige, die ein Programmierer prüfen kann, um die Berechnung mit einer passenden Fehlermeldung zu unterbrechen).Although floating-point numbers and floating-point calculations have significant advantages over fixed-point numbers and fixed-point calculations, they are not without problems. One such problem can occur when the size of the result of a floating-point calculation exceeds or overflows the capacity of the floating-point number system. This problem, commonly referred to as a floating-point exception, requires special handling when discovered (such as setting an indicator that a programmer can check to interrupt the calculation with an appropriate error message).
Andere Ausnahmen schließen das Unterlaufen, das aus dem Versuch resultiert, ein von Null verschiedenes Ergebnis zu erzeugen, das zu klein (in seiner Größe) ist, um erfaßt zu werden, oder die Ungenauigkeitsausnahme ein, bei der aufgrund der Größe des Ergebnisses Abrundungen erfolgen müssen, die mögliche Ungenauigkeiten erzeugen.Other exceptions include undercutting, which results from attempting to produce a non-zero result that is too small (in size) to be detected, or the inaccuracy exception, where the size of the result requires rounding off, creating possible inaccuracies.
Es gibt gegenwärtig viele Verfahren und Techniken eine Gleitkommaausnahme zu handhaben, wenn diese auftritt, wobei alle diese Verfahren und Techniken bekannt sind. Spezielle Probleme treten jedoch dann auf, wenn Gleitkommaberechnungen in Datenverarbeitungsystemen verwandt werden, die eine Art Parallelverarbeitung ausführen können, wie es bei einer Pipelinearchitektur anzutreffen ist. Eine Pipelinearchitektur umfaßt üblicherweise Prozessorausbildungen, bei denen es zum gleichem Zeitpunkt mehrere Befehle in verschiedenen Stufen der Ausführung gibt. Wenn ein Gleitkommabefehl in einer Gleichkommaausnahme gipfelt, macht es die erforderliche spezielle Handhabung notwendig, daß der Gleitkommabefehl erneut ausgeführt wird&sub1; jedoch nur nachdem die Operanden so angepaßt sind, daß das erneute Auftreten der Ausnahme vermieden wird. Um den Gleitkommabefehl erneut auszuführen, muß die Datenverarbeitungsvorrichtung jedoch sozusagen gesichert werden , was bedeutet, daß die Ergebnisse von Befehlen, die während der Ausführung des Gleitkommabefehls ausgeführt oder teilweise ausgeführt wurden, für später gesichert oder weggeworfen werden müssen. Das wiederum macht es erforderlich, daß der Status der Datenverarbeitungsvorrichtung auf denjenigen zurückgeführt wird, den ursprünglich der Befehl angetroffen hatte.There are currently many methods and techniques for handling a floating-point exception when it occurs, all of which are well known. However, special problems arise when floating-point calculations are used in data processing systems capable of performing some form of parallel processing, as is found in a pipelined architecture. A pipelined architecture typically involves processor designs in which there are several instructions in different stages of execution at the same time. When a floating-point instruction culminates in an equal-point exception, the special handling required requires that the floating-point instruction be re-executed, but only after the operands are adjusted to avoid re-occurrence of the exception. However, in order to re-execute the floating-point instruction, the computing device must be saved, so to speak, which means that the results of instructions that were executed or partially executed during the execution of the floating-point instruction must be saved for later or discarded. This in turn requires that the state of the computing device be returned to that originally encountered by the instruction.
Das Problem verschlimmert sich dann, wenn verschiedene Befehle verschiedene Ausführungszeiten benötigen, das heißt, wenn gewisse Befehle in zwei, vier oder in einer kleinen Anzahl von Prozessorarbeitszyklen ausgeführt werden können, während andere Befehle, insbesondere die Gleitkommabefehle, zur Ausführung wesentlich mehr Prozessorarbeitszyklen benötigen. In diesem Fall ist eine Gleitkommaberechnung, die zu einer Ausnahme führt, noch viel schwieriger zu vermeiden. Das heißt, daß es noch viel schwieriger ist, den Status der Datenverarbeitungsvorrichtung wiederherzustellen, den der Befehl ursprünglich angetroffen hatte, um eine Gleitkommaausnahme zu vermeiden.The problem is exacerbated when different instructions require different execution times, that is, when certain instructions can be executed in two, four, or a small number of processor cycles, while other instructions, particularly floating-point instructions, require significantly more processor cycles to execute. In this case, a floating-point calculation that results in an exception is even more difficult to avoid. That is, it is even more difficult to restore the state of the computing device that the instruction originally encountered in order to avoid a floating-point exception.
Eine Lösung dieses Problems würde darin bestehen, die Verarbeitung eines folgenden Befehls anzuhalten, wenn zum ersten Mal auf eine Gleitkommaberechnung gestoßen wird, und nur die Gleitkommaberechnung ablaufen zu lassen. Eine Prüfung des Ergebnisses kann dann erfolgen, um festzustellen, ob eine Ausnahme aufgetreten ist. Wenn nicht, kann die normale Verarbeitung wieder aufgenommen werden; wenn eine Ausnahme aufgetreten ist, kann die Berechnung erneut durchgeführt werden, ohne daß die Pipeline durchgespült werden muß (das heißt, Ergebnise der Pipeline, was Befehle anbetrifft, die auf den Gleitkommabefehl folgen, weggeworfen oder gespeichert werden). Dieses Arbeitsschema kann jedoch bezeichnend die Leistung des Datenverarbeitungssystems beeinträchtigen.A solution to this problem would be to halt processing of a subsequent instruction when a floating-point calculation is first encountered and to allow only the floating-point calculation to proceed. An examination of the result can then be made to determine whether an exception has occurred. If not, normal processing can resume; if an exception has occurred, the calculation can be performed again without flushing the pipeline (that is, discarding or storing pipeline results relating to instructions following the floating-point instruction). However, this scheme of operation can significantly degrade the performance of the data processing system.
In der EP-A-0 256 358 sind ein Verfahren und eine entsprechende Vorrichtung beschrieben, die die Leistung eines Gleitkommaprozessors dadurch verbessern, daß die Plausibilitätsantwort von einer Gleitkommaeinheit unter bestimmten Bedingunggen beschleunigt wird, so daß das Plausibilitätssignal zur Verfügung steht, bevor der arithmetische Gleitkommabefehl ausgeführt ist. Dieses beschleunigte Plausibilitätssignal wird dadurch erzeugt, daß eine Kombination der Exponentenfelder von zwei Operanden mit einer Gleitkommaausnahmen hervorrufenden Kriterien insbesondere dadurch verglichen wird, daß die Exponenten, die Vorzeichen und die Teile nach dem Komma in den Operanden bewertet werden. In Abhängigkeit von bestimmten Umständen erfolgt effektiv eine Vorhersage, wann das Nichtauftreten einer Ausnahme garantiert werden kann.EP-A-0 256 358 describes a method and a corresponding device which improve the performance of a floating point processor by accelerating the plausibility response from a floating point unit under certain conditions so that the plausibility signal is available before the floating point arithmetic instruction is executed. This accelerated plausibility signal is generated by comparing a combination of the exponent fields of two operands with a floating point exception-causing criteria, in particular by evaluating the exponents, the signs and the parts after the decimal point in the operands. Depending on certain circumstances, a prediction is effectively made as to when the non-occurrence of an exception can be guaranteed.
Die vorliegende Erfindung nach dem Anspruch 1 nutzt den Vorteil des Verfahrens und der Vorrichtung, die in der EP-A- 0 256 358 beschrieben sind, indem ein Verfahren geschaffen wird, bei dem das die Ausnahme vorhersagende Signal dazu benutzt wird, eine Universaldatenprozessoreinheit, die parallel zu einer Gleitkommaprozessoreinheit arbeitet, kurzzeitig anzuhalten. Die Gleitkommaberechnung wird durchgeführt und die Arbeit der Universaldatenprozessoreinheit wird wieder aufgenommen, wenn die Gleitkommaberechnung nicht zu einer tatsächlichen Gleitkommaausnahme geführt hat.The present invention according to claim 1 takes advantage of the method and apparatus disclosed in EP-A- 0 256 358 by providing a method in which the exception predicting signal is used to temporarily stop a general purpose data processing unit operating in parallel with a floating point processing unit. The floating point calculation is performed and the operation of the general purpose data processing unit is resumed if the floating point calculation did not result in an actual floating point exception.
Es wird auch eine vorrichtung nach dem Anspruch 3 geschaffen, bei der eine zweite Prozessoreinheit vorgesehen ist, um Universaldatenverarbeitungsaufgaben parallel zu Gleitkommaberechnungen auszuführen, die vom ersten Prozessor durchgeführt werden, und bei der Einrichtungen vorgesehen sind, um kurzzeitig auf das Vorliegen eines eine Gleitkommaausnahme vorhersagenden Signals die zweite Prozessoreinheit anzuhalten und die Arbeit wieder aufzunehmen, wenn die Gleitkommaberechnung nicht zu einer tetsächlichen Gleitkommaausnahme geführt hat.There is also provided an apparatus according to claim 3, in which a second processor unit is provided to perform general purpose data processing tasks in parallel with floating point calculations performed by the first processor, and in which means are provided to temporarily stop the second processor unit in response to a signal predicting a floating point exception and to resume operation if the floating point calculation did not result in an actual floating point exception.
Die Erfindung benutzt die frühe Vorhersage des Standes der Technik, ob eine Gleitkommaausnahme auftreten könnte oder nicht. Wenn die Vorhersage angibt, daß eine Ausnahme auftreten wird, wird diese dazu benutzt, alle anderen Verarbeitungsvorgänge anzuhalten, während die Gleitkommaberechnung bis zum Abschluß ablaufen gelassen wird. Wenn die Berechnung in einer Ausnahme endet, werden die Operanden angepaßt und wird die Berechnung erneut gestartet. Wenn andererseits die Vorhersage angibt, daß keine Ausnahme auftreten wird, dann setzt sich der Arbeitsablauf normal fort.The invention uses the prior art's early prediction of whether or not a floating point exception might occur. If the prediction indicates that an exception will occur, it is used to halt all other processing while the floating point calculation is allowed to run to completion. If the calculation ends in an exception, the operands are adjusted and the calculation is started again. On the other hand, if the prediction indicates that no exception will occur, then the operation continues normally.
Vorzugsweise werden die Exponentenfelder der Operanden, die im Gleitkommamultiplikations- (oder -divisions) -berechnungen verwandt werden, zueinander addiert (oder voneinander subtrahiert) und wird das Ergebnis zusammen mit einer Anzeige der Operation (beispielsweise Multiplikation oder Division) an ein programmierbares logisches Datenfeld gelegt. Das programmierbare logische Datenfeld wird so programmiert, daß es ein Gleitkommaausnahmesignal erzeugt, wenn der Ergebniswert, der durch diese Kombination der Exponentenfelder der Operanden erzeugt wird, angibt, daß die Gleitkommaberechnung zu einer Gleitkommaausnahme führen wird oder könnte. Das Gleitkommaausnahmesignal führt dazu, daß alle anderen parallelen Verarbeitungsfunktionen kurzzeitig unterbrochen werden, damit die Gleitkommaberechnung bis zum Abschluß ablaufen kann. Wenn jedoch die Vorhersage so ist, daß keine Ausnahme auftreten wird, dann können die parallelen Verarbeitungsvorgänge ohne Rücksicht darauf, daß eine Gleitkommaausnahme auftreten könnte, fortgesetzt werden. Die Vorhersage für Gleitkommaadditionen und -subtraktionen ist mit der Ausnahme ähnlich, daß die Exponentenfelder lediglich miteinander verglichen werden, um zu bestimmen, ob der Wert eines der Exponentenfelder ausreichend größer als der des anderen ist, um eine Garantie abzugeben, was das Auftreten einer Ausnahme anbetrifft.Preferably, the exponent fields of the operands used in floating point multiplication (or division) calculations are added to (or subtracted from) each other and the result is applied to a programmable logic array together with an indication of the operation (e.g., multiplication or division). The programmable logic array is programmed to be a Floating-point exception signal is generated when the result value produced by this combination of the exponent fields of the operands indicates that the floating-point calculation will or could result in a floating-point exception. The floating-point exception signal causes all other parallel processing functions to be temporarily suspended to allow the floating-point calculation to complete. However, if the prediction is that no exception will occur, then the parallel processing operations can continue without regard to whether a floating-point exception might occur. The prediction for floating-point additions and subtractions is similar except that the exponent fields are simply compared to each other to determine whether the value of one of the exponent fields is sufficiently larger than that of the other to provide a guarantee that an exception will occur.
Wenn eine Ausnahmevorhersage gemacht worden ist und die Berechnung schließlich dazu führt, daß eine Ausnahme auftritt, dann wird ein Unterbrechungssignal erzeugt, das das im System laufende Programm über dieses Auftreten informiert. Die Ausnahme wird gehandhabt, und die Gleitkommaberechnung wird erneut ausgeführt.If an exception prediction has been made and the calculation eventually results in an exception occurring, then an interrupt signal is generated informing the program running in the system of this occurrence. The exception is handled and the floating point calculation is re-executed.
Die Erfindung wird im folgenden anhand eines Beispiels unter Bezug auf die zugehörigen Zeichnungen beschrieben, in denenThe invention is described below by way of example with reference to the accompanying drawings in which
Fig. 1 eine schematische Darstellung eines Datenverarbeitungssystems zeigt, das Gleitkommaberechnungen ausführen kann und gemäß der vorliegenden Erfindung konfiguriert ist,Fig. 1 shows a schematic representation of a data processing system capable of performing floating point calculations and configured in accordance with the present invention,
die Fig. 2A bis 2D graphische Darstellungen möglicher eine Ausnahme bewirkender Situationen für Multiplikationen, Divisionen, Aditionen/Subtraktionen und unäre Gleitkommaoperationen zeigen undFigures 2A to 2D show graphical representations of possible exception-causing situations for multiplications, divisions, additions/subtractions and unary floating point operations, and
Fig. 3 in einem schematischen Schaltbild eine Vorrichtung zeigt, die dazu benutzt wird, die eine Ausnahme vorhersagende Schaltung zu bilden.Fig. 3 shows a schematic diagram of a device used to predict the exception to form a circuit.
Die vorliegende Erfindung ist in einer Datenverarbeitungssystemarchitektur ausgeführt, die allgemein in Fig. 1 mit dem Bezugszeichen 10 bezeichnet ist und zwei Prozessoreinheiten umfaßt: eine Zentralprozessoreinheit (CPU) 12 und eine Gleitkommaprozessoreinheit (FPU) 14. Die CPU und FPU 12 und 14 empfangen ein periodisches Taktsignal, das von einer Taktquelle (CLK) 16 entwickelt wird, und beide sind mit einem Speichersystem 18 über eine Datensammelleitung 20 verbunden. Allein die CPU 12 ist über eine Adressensammelleitung 22 mit dem Speichersystem 18 verbunden.The present invention is embodied in a data processing system architecture, generally indicated in Figure 1 by the reference numeral 10, comprising two processor units: a central processing unit (CPU) 12 and a floating point processing unit (FPU) 14. The CPU and FPU 12 and 14 receive a periodic clock signal developed by a clock source (CLK) 16 and are both connected to a memory system 18 via a data bus 20. The CPU 12 alone is connected to the memory system 18 via an address bus 22.
Die CPU 12 lenkt die Arbeit des Systems, indem auf Befehle der Reihe nach vom Speicher 18 über Adressen zugegriffen wird, die von einem Programmzähler (PC) 24 der CPU 12 gebildet werden. Es wird sich zeigen, daß Adressen auch im Speichersystem 18 durch den Ausnahmeprogrammzähler (EPC) 26 geliefert werden, der über irgendeine herkömmliche Technik zur Adressensammelleitung multiplexed ist. Jeder zugegriffene Befehl wird jedoch durch die FPU 14 geprüft, wobei jedoch nur Gleitkommaberechnungsbefehle durch die FPU 14 behandelt werden, während alle andere Befehle durch die CPU 12 ausgeführt werden. Der Grund für diese spezielle Ausbildung der Architektur wird sich im folgenden deutlicher zeigen.The CPU 12 directs the operation of the system by accessing instructions in sequence from the memory 18 via addresses provided by a program counter (PC) 24 of the CPU 12. It will be seen that addresses are also provided in the memory system 18 by the exception program counter (EPC) 26, which is multiplexed to the address bus via some conventional technique. Each accessed instruction is, however, checked by the FPU 14, but only floating point calculation instructions are handled by the FPU 14, all other instructions being executed by the CPU 12. The reason for this special architectural design will become more apparent hereinafter.
In Fig. 1 ist nicht im einzelnen die Tatsache dargestellt, daß die Architektur des Datenverarbeitungssystems 10 und insbesondere die der CPU 12 eine Form hat, die typischerweise auf dem Gebiet der Technik als Pipelinearchitektur bezeichnet wird. Diese erlaubt es, daß eine Anzahl von sequentiellen Befehlen, auf die vom Speicher 18 zugegriffen wird, gleichzeitig in verschiedenen Stufen der Ausführung vorliegt. Während jeder Befehl in einer Stufe der Ausführung ist, wird die Speicheradresse dieses Befehls kurzzeitig in einer Warteschlange 28 des Programmzählers (PC) der CPU 12 gehalten. Die verschiedenen Parameter werden während der Ausführung in einer Parameterregisterdatei 30 gehalten.Not shown in detail in Fig. 1 is the fact that the architecture of the data processing system 10, and in particular that of the CPU 12, takes a form typically referred to in the art as a pipeline architecture. This allows a number of sequential instructions accessed from the memory 18 to be in different stages of execution simultaneously. While each instruction is in a stage of execution, the memory address of that instruction is temporarily held in a queue 28 of the program counter (PC) of the CPU 12. The various parameters are stored in a parameter register file during execution. 30 held.
Wie es in Fig. 1 dargestellt ist, ist die FPU 14 mit der Datensammelleitung 20 verbunden, um Befehle und Operanden an der Befehlsdekodiereinheit 34 und an den Operandenregistern 36 jeweils zu empfangen. Die Exponentenfelder der Operanden kommen von den Operandenregistern zu einer Ausnahmevorhersageeinheit 38 über Signalleitungen 40. Die vollständigen Operanden (Exponentenfeld und Feld für den Teil nach dem Komma) liegen an einer Gleitkommaausführungseinheit 42. Die Ausnahmevorhersageeinheit 38 arbeitet, wie ihr Name sagt&sub1; so, daß sie ermittelt, ob die sich ergebende Gleitkommaberechnung möglicherweise zu einer Ausnahme führen kann. Wenn das der Fall ist, wird ein CP BUSY Signal erzeugt, das an der CPU 14 liegt. Die Gleitkommaausführungseinheit 42 führt die tatsächliche Berechnung durch und erzeugt dann, wenn die Berechnung dazu führt, daß eine Ausnahme auftritt, ein INTERRUPT Signal, das an der CPU 14 liegt. Eine Angabe der jeweiligen Berechnung, die auszuführen ist, liegt in Form eines Operationscodesignals (OP) an der Ausnahmevorhersageeinheit 38 und an der Gleitkommaausführungseinheit 42. Im zuerst genannten Fall bewirken die OP Signale, daß Kriterien gewählt werden, gegenüber denen die Operandenexponentenfelder geprüft werden, um Ausnahmen vorherzusagen, im zuletzt genannten Fall steuern die OP Signale den Rechenvorgang.As shown in Figure 1, the FPU 14 is connected to the data bus 20 to receive instructions and operands at the instruction decode unit 34 and the operand registers 36, respectively. The exponent fields of the operands come from the operand registers to an exception prediction unit 38 via signal lines 40. The complete operands (exponent field and post-decimal field) are applied to a floating point execution unit 42. The exception prediction unit 38, as its name suggests, operates to determine whether the resulting floating point calculation has the potential to result in an exception. If so, a CP BUSY signal is generated and applied to the CPU 14. The floating point execution unit 42 performs the actual computation and then, if the computation results in an exception occurring, generates an INTERRUPT signal which is applied to the CPU 14. An indication of the particular computation to be performed is applied in the form of an operation code (OP) signal to the exception prediction unit 38 and to the floating point execution unit 42. In the former case, the OP signals cause criteria to be selected against which the operand exponent fields are checked to predict exceptions; in the latter case, the OP signals control the computational process.
Die Pipeline des vorliegenden Ausführungsbeispiels des Datenverarbeitungssystems 10 ist 5 Befehle tief, das heißt, daß bis zu 5 Befehle gleichzeitig in den verschiedenen Stufen der Ausführung vorliegen können. Die 5 definierbaren Ausführungsstufen sindThe pipeline of the present embodiment of the data processing system 10 is 5 instructions deep, which means that up to 5 instructions can be present simultaneously in the various stages of execution. The 5 definable execution stages are
1. Eine Befehlsabrufstufe (1), während der auf den Befehl zugegriffen wird, indem eine Adresse, die im PC 24 enthalten ist, vom Speicher 18 zum Dekodieren benutzt wird;1. An instruction fetch stage (1) during which the instruction is accessed using an address contained in the PC 24 from the memory 18 for decoding;
2. Eine Dekodier- und Registerzugriffstufe (R), während der eine anfängliche Dekodierung des Befehls stattfindet und auf die Register zugegriffen wird,die die Operanden enthalten, wie es durch den Befehl bezeichnet ist;2. A decode and register access stage (R), during which an initial decode of the instruction takes place and the registers containing the operands are accessed as specified by the instruction;
3. Eine arithmetische Ausführungsstufe (A), die die verschiedenen arithmetischen Operationen, wie beispielweise eine Gleitkommaberechnung auslöst;3. An arithmetic execution stage (A) which triggers the various arithmetic operations, such as a floating point calculation;
4. Eine Speicherbetriebsstufe (M)4. A storage operating stage (M)
5. Eine Schreibstufe (W), in der die Ergebnisse der Operation in ein Register (nicht dargestellt) des Systems 10 (das heißt die CPU 12 oder die FPU 14) oder in den Speicher 18 geschrieben werden.5. A write stage (W) in which the results of the operation are written to a register (not shown) of the system 10 (i.e., the CPU 12 or the FPU 14) or to the memory 18.
Die Befehle, auf die der Reihe nach von Speicher 18 zugegriffen wird, können auf einer dieser Stufen (I, R, A, M und/oder W) zu irgendeinem Zeitpunkt während des Betriebes sein.The instructions accessed sequentially from memory 18 may be at any of these levels (I, R, A, M and/or W) at any time during operation.
Wie es bekannt ist, benötigen verschiedene Befehle zur Ausführung verschiedene Zeiten. Ein Festkommaganzzahlbefehl benötigt beispielweise zur Ausführung nur einen Zyklus. Die Lade- und Speicheroperationen benötigen 2 Zyklen, wohingegen Gleitkommaoperationen (-berechnungen) bis zu 19 Zyklen benötigen können.As is known, different instructions require different times to execute. For example, a fixed-point integer instruction requires only one cycle to execute. The load and store operations require 2 cycles, whereas floating-point operations (calculations) can require up to 19 cycles.
Man betrachte eine Gleitkommaberechnung, die schließlich zu einer Ausnahme führt. Auf den Befehl wird vom Speicher 18 zugegriffen und der Befehl wird sowohl durch die CPU 12 als auch die FPU 14 geprüft. Der Befehl wird jedoch nur durch die FPU 14 ausgeführt und geht daher durch die Stufe 1, die Stufe R und die Stufe A, während der die Operanden gesammelt und so festgelegt werden, daß der tatsächlicher Rechenvorgang beginnen kann. Der Abschluß der Stufe A setzt die Gleitkommaausführungseinheit 42 in Bewegung, wobei das Ergebnis 1 bis 19 Zyklen später in Abhängigkeit von der Operation (das heißt Addition/Subtraktion oder Multiplikation/Division) vorliegt. In Abhängigkeit von dem jeweiligen Rechenvorgang, den der Befehl fordert (das heißt Addition, Subtraktion, Multiplikation oder Division), wird daher ein gewisses Zeitintervall ablaufen, bevor das Ergebnis des Rechenvorganges verfügbar ist. Während der Rechenvorgang erfolgt, hat die CPU 12 jedoch auf andere Befehle zugegriffen und diese in der Pipeline angeordnet, so daß dann, wenn der Gleitkommabefehl die Stufe M der Ausführung erreicht, die ihm nacheinander folgenden Befehle wenigstens ihre jeweiligen Stufen I, R, A der Ausführung abgeschlossen haben. In Abhängigkeit davon, wie lange der Gleitkommarechenvorgang dauert, werden einige sogar die Stufe M abgeschlossen haben.Consider a floating point calculation that ultimately results in an exception. The instruction is accessed from memory 18 and the instruction is checked by both CPU 12 and FPU 14. However, the instruction is only executed by FPU 14 and therefore goes through stage 1, stage R and stage A during which the operands are collected and set so that the actual calculation can begin. The completion of stage A sets floating point execution unit 42 in motion with the result available 1 to 19 cycles later depending on the operation (i.e., addition/subtraction or multiplication/division). Therefore, depending on the particular calculation required by the instruction (i.e., addition, subtraction, multiplication or division), a certain time interval will elapse before the result of the arithmetic operation. However, while the arithmetic operation is taking place, the CPU 12 has accessed other instructions and placed them in the pipeline so that by the time the floating point instruction reaches the M stage of execution, the instructions following it have at least completed their respective I, R, A stages of execution. Depending on how long the floating point arithmetic operation takes, some will even have completed the M stage.
Wenn sich herausstellt, daß das Ergebnis des Gleitkommabefehls zu einer Ausnahme führt, muß der Befehl angepaßt und erneut ausgeführt werden. Was passiert jedoch mit den Befehlen, die dem Gleitkommabefehl folgen? In der vorliegenden Pipelinearchitektur muß das System 10 entweder die Ergebnisse der folgenden Befehle kurzzeitig speichern oder sie vollständig wegwerfen, während der Ausnahmefall gehandhabt wird (beispielsweise die Operanden angepaßt werden, um eine Ausnahme zu vermeiden), und muß der Gleitkommabefehl erneut ausgeführt werden, indem die modifizierten Operanden benutzt werden. Die Probleme bestehen natürlich darin, daß diese Techniken das System entweder erheblich zeitlich belasten oder zusätzliche und komplizierte Schaltungen zusätzlich am System erforderlich machen.If the result of the floating point instruction turns out to result in an exception, the instruction must be modified and re-executed. But what happens to the instructions that follow the floating point instruction? In the present pipeline architecture, the system 10 must either temporarily store the results of the following instructions or discard them entirely while the exception is handled (e.g., modifying the operands to avoid an exception), and the floating point instruction must be re-executed using the modified operands. The problems, of course, are that these techniques either impose significant time burdens on the system or require additional and complicated circuitry on the system.
Die vorliegende Erfindung ist darauf gerichtet vorab vorherzusagen, ob es möglich ist, einen Ausnahmefall einzufangen. Am Abschluß der arithmetischen Ausführungsstufe A, jedoch vor dem Beginn des tatsächlichen Rechenvorganges wird dementsprechend eine Vorhersage getroffen, um festzustellen, ob es möglich ist, daß tatsächlich ein Ausnahmefall auftreten wird.The present invention is directed to predicting in advance whether it is possible to catch an exception. At the end of the arithmetic execution stage A, but before the start of the actual calculation process, a prediction is accordingly made to determine whether it is possible that an exception will actually occur.
Bei der vorliegenden Erfindung können die Gleitkommaoperationen in einfache Genauigkeit (unter Verwedung von Operanden einfacher Genauigkeit) oder in doppelten Genauigkeit (unter Verwendung von Operanden in doppelter Genauigkeit) vorliegen. Operanden mit einfacher Genauigkeit haben eine Länge von 32 Bit, wobei das höchstwertige Bit (MSB) das Vorzeichen bildet, die nächsten 8 MSB das Exponentenfeld bilden und die restlichen 23 Bit den Teil nach dem Komma des Operanden bilden. Bei doppelter Genauigkeit bildet das MSP wiederum das Vorzeichen, während die nächsten 11 MSB das Exponentenfeld und die restlichen 52 Bit den Teil nach dem Komma bei insgesamt 64 Bit bilden.In the present invention, the floating point operations may be in single precision (using single precision operands) or in double precision (using double precision operands). Single precision operands are 32 bits long, with the most significant bit (MSB) forming the sign, the next 8 MSBs forming the exponent field, and the remaining 23 bits form the part after the decimal point of the operand. In double precision, the MSP forms the sign, while the next 11 MSB form the exponent field and the remaining 52 bits form the part after the decimal point, for a total of 64 bits.
Die vorliegende Erfindung hängt jedoch nicht notwendigerweise von der Größe der Operanden ab. Aus Gründen der Einfachheit wird daher angenommen, daß die Operanden ein Exponentenfeld mit nur 3 Bit haben. In den Fig. 2A bis 2D sind graphische Darstellungen der Exponentenfelder der Operanden relativ zueinander für Multiplikations-, Divisions-, Additions-/Subtraktionsoperationen oder unäre Berechnungen/Operationen dargestellt (eine unäre Operation ist eine Operation, bei der nur ein Operand involviert ist, wie es beispielweise bei der Komplementbildung, bei der Inkrementbildung, bei der Absolutwertbildung und ähnlichen Operationen der Fall ist).However, the present invention does not necessarily depend on the size of the operands. Therefore, for simplicity, the operands are assumed to have an exponent field of only 3 bits. Figures 2A through 2D show graphical representations of the exponent fields of the operands relative to each other for multiplication, division, addition/subtraction, or unary operations (a unary operation is an operation involving only one operand, such as complement, increment, absolute value, and similar operations).
Die Fig. 2A bis 2C zeigen graphische Darstellungen in rechtwinkligen kartesischen Koordinaten der Exponentenfelder von zwei Operanden von Gleichtkommaberechnungen. Die Zeichen x bei gewissen Koordinaten geben die Exponentenfeldwerte an, die zu einer Gleitkommaausnahme führen werden oder möglicherweise eine derartige Ausnahme hervorrufen werden und zwar für die jeweilige Operation der graphischen Darstellung (beispielweise eine Multiplikation in Fig. 2A). Diejenigen Exponentenfeldwerte, die entlang der gestrichelten Linien 50 (50a bis 50c) liegen, geben Vorhersagen an, bei denen es möglich ist, daß während der entsprechenden Operation dieser Figur ein Ausnahmefall auftreten wird.Figures 2A through 2C show graphs in rectangular Cartesian coordinates of the exponent fields of two operands of floating point calculations. The x symbols at certain coordinates indicate the exponent field values that will result in or are likely to cause a floating point exception for the particular operation of the graph (for example, multiplication in Figure 2A). Those exponent field values that lie along the dashed lines 50 (50a through 50c) indicate predictions for which it is possible that an exception will occur during the corresponding operation of that figure.
Eine Möglichkeit der Betrachtung der Fig. 2A bis 2D besteht darin, daß diese für jede Gleitkommaoperation (das heißt Multiplikation, Division, Addition, Subtraktion oder unäre Operation) Kriterien wiedergeben, die durch die auszuführende Operation gewählt werden und gegenüber denen eine Kombination von Exponentenfelder verglichen wird.One way of looking at Figures 2A through 2D is that they represent, for each floating point operation (i.e., multiplication, division, addition, subtraction, or unary operation), criteria that are chosen by the operation being performed and against which a combination of exponent fields are compared.
Die Operandenexponentenfelder für eine Gleitkommamultiplikation werden addiert und die Operandenexponentenfelder für eine Gleitkommadivision werden voneinander abgezogen, bevor sie mit den Kriterien verglichen werden, die in den Fig. 2A und 2B angegeben sind. Wenn somit beispielsweise ein Gleitkommamultiplikationsbefehl mit Operanden auszuführen ist, die Exponentenfelder "100" und "110" haben, würde ihre Summe ("1010") in Kombination mit der Anzeige der auszuführenden Operation (Multiplikation) Anlaß für eine Vorhersage einer Rechenoperation geben, die zu einer Gleitkommaausnahme führt.The operand exponent fields for a floating point multiplication are added and the operand exponent fields for a floating point division are subtracted from each other before being compared to the criteria specified in Figures 2A and 2B. Thus, for example, if a floating point multiplication instruction is to be executed with operands having exponent fields "100" and "110", their sum ("1010") in combination with the indication of the operation to be performed (multiplication) would give rise to a prediction of an arithmetic operation that results in a floating point exception.
Bei Gleitkommaadditionen oder -subtraktionen werden die Operandenexponentenfelder miteinander verglichen, um zu ermitteln, ob eines wesentlich größer als das andere ist, wie es durch die Kriterien angegeben ist, die in Fig. 2C dargestellt sind. Unäre Operationen machen es lediglich erforderlich, auf das Exponentenfeld des Operanden zu schauen, um festzustellen, ob es unter die mögliche Ausnahmefälle verursachenden Kriterien fällt, die in Fig. 2D dargestellt sind.In floating-point additions or subtractions, the operand exponent fields are compared to determine if one is significantly larger than the other, as indicated by the criteria shown in Fig. 2C. Unary operations only require looking at the exponent field of the operand to determine if it falls under the possible exception-causing criteria shown in Fig. 2D.
Die Ausnahmevorhersageeinheit 38 ist mehr im einzelnen in Fig. 3 dargestellt. Wie es dargestellt ist, werden die Operandenexponentenfelder (E1, E2) vom Operandenregister 36 (Fig. 1) über ein programmierbares logisches Datenfeld (PLA) 51 empfangen. Das PLA 51, das auch die OP Signale von der Befehlsdekodiereinheit 34 empfängt, arbeitet so, daß es Ausnahmefälle für Additions- und Subtraktionsoperationen vorhersagt und zwar nach Maßgabe der Kriterien, die in Fig. 2C dargestellt sind. Der Ausgang (0) des PLA 51 ist mit einer Ausnahmevorhersageverriegelungsschaltung 52 über ein ODER-Glied 54 mit zwei Eingängen verbunden. Die Ausnahmevorhersageverriegelungsschaltung 52 erzeugt das CP BUSY Signal, das an der CPU 12 liegt.The exception prediction unit 38 is shown in more detail in Fig. 3. As shown, the operand exponent fields (E1, E2) are received from the operand register 36 (Fig. 1) via a programmable logic array (PLA) 51. The PLA 51, which also receives the OP signals from the instruction decode unit 34, operates to predict exceptions for addition and subtraction operations according to the criteria shown in Fig. 2C. The output (0) of the PLA 51 is connected to an exception prediction latch circuit 52 via a two-input OR gate 54. The exception prediction latch circuit 52 generates the CP BUSY signal which is applied to the CPU 12.
Die Operandenexponentenfelder (E&sub1;, E&sub2;) werden für Multiplikations- und Divisionsoperationen etwas anders behandelt, als es im obigen bezüglich der Additions- und Subtraktionsoperationen beschrieben wurde. Die bei Multiplikationen oder Divisionen benutzten Operanden liegen an einer Addierschaltung 16, wo sie addiert werden oder voneinander subtrahiert werden, was davon abhängt, ob die OP Signale eine Multiplikation oder Division jeweils angeben. Das Ergebnis liegt an einem PLA 62, das so arbeitet, daß es dieses Ergebnis mit den Kriterien (Fig 2A, 2B) vergleicht, die durch die OP Signale festgelegt oder gewählt sind&sub1; die durch das PLA 62 von der Befehlsdekodierschaltung 34 (Fig. 1) empfangen werden. Das Ausgangssignal (O) des PLA 62 wird am anderen der beiden Eingänge des ODER-Gliedes 45 empfangen, so daß dann&sub1; wenn die gewählten Kriterien und das Ergebnis der Kombination der Exponentenfelder einen Ausnahmefall anzeigen, was durch das PLA 62 bestimmt wird, daß CP BUSY Signal aktiv wird. Aus Gründen, die sich aus der folgenden Erläuterung ergeben werden, wird sich zeigen, daß das CP BUSY Signal bewirkt, daß die CPU 12 kurzzeitig in einem Wartezustand gehalten wird, bis die Gleitkommaberechnung abgeschlossen ist.The operand exponent fields (E₁, E₂) are treated slightly differently for multiplication and division operations than described above for addition and subtraction operations. The values used for multiplication or The operands used for multiplication and division are applied to an adder 16 where they are added or subtracted from one another depending on whether the OP signals indicate multiplication or division respectively. The result is applied to a PLA 62 which operates to compare this result with the criteria (Figs. 2A, 2B) specified or selected by the OP signals received by the PLA 62 from the instruction decode circuit 34 (Fig. 1). The output signal (O) of the PLA 62 is received at the other of the two inputs of the OR gate 45 so that if the selected criteria and the result of the combination of the exponent fields indicate an exception as determined by the PLA 62, the CP BUSY signal becomes active. For reasons which will become apparent from the following discussion, it will be seen that the CP BUSY signal causes the CPU 12 to be temporarily held in a wait state until the floating point calculation is completed.
Während des Arbeitsablaufes führt die CPU 12 Zugriffe zum Speichersystem 18 (für Befehle und Operanden oder zum Speichern vom Daten, wie es bei normalen Datenverarbeitungsoperationen üblich ist) unter Verwendung von Adressen durch, die durch den PC 24 geliefert werden (Fig. 1). Jeder zugegriffene Befehl liegt sowohl an der CPU 12 als auch an der FPU 14, wobei jedoch nur die FPU 14 Gleitkommabefehle erkennt und ausführt, während alle anderen Befehle durch die CPU 12 ausgeführt werden. Jeder Befehl läuft durch die 5 Decodierstufen (I, R, A, M und W) wie es oben beschrieben wurde. Zu irgendeinem Zeitpunkt wird es daher 5 Befehle in verschiedenen Ausführungsstufen im System 10 geben.During operation, the CPU 12 makes accesses to the memory system 18 (for instructions and operands or to store data as is common in normal data processing operations) using addresses provided by the PC 24 (Fig. 1). Each accessed instruction is accessible to both the CPU 12 and the FPU 14, however, only the FPU 14 recognizes and executes floating point instructions, while all other instructions are executed by the CPU 12. Each instruction passes through the 5 decoding stages (I, R, A, M and W) as described above. At any one time, therefore, there will be 5 instructions in various stages of execution in the system 10.
Es sei angenommen, daß während dieses Arbeitsablaufes des Datenverarbeitungssystems 10 vom Speichersystem 18 auf einen Gleitkommabefehl zugegriffen wird. Der Befehl wird am Anfang sowohl durch die CPU 12 als auch durch die FPU 14 inspiziert, wobei jedoch, wie oben angegeben, nur die FPU 14 den Befehl verarbeiten wird. Nachdem die FPU 14 den Gleitkommabefehl über die Stufe I bis zur Stufe R verarbeitet hat, ist die Stufe A erreicht und hat das Datenverarbeitungssystem 10 einen Befehl (derjenige, der unmittelbar auf den Gleitkommabefehl bei diesem Beispiel folgt), der die Stufe R der Ausführung erreicht, und greift das System auf einen weiteren Befehl für die Stufe I zu.Suppose that during this operation of the data processing system 10, a floating point instruction is accessed from the storage system 18. The instruction is initially inspected by both the CPU 12 and the FPU 14, but as stated above, only the FPU 14 will process the instruction. After the FPU 14 has processed the floating point instruction via the Stage I through Stage R, Stage A is reached and the data processing system 10 has an instruction (the one immediately following the floating point instruction in this example) that reaches Stage R of execution, and the system accesses another instruction for Stage I.
Während der Ausführungstufe A des Gleitkommabefehls liegen die Exponentenfelder (E&sub1; und E&sub2;) der Operanden für diesen Befehl an der Ausnahmevorhersageeinheit 38 der FPU 14 (Fig. 1). Wenn der Rechenvorgang ein Multiplikations- oder Divisionsbefehl ist, führen die OP Signale dazu, daß (1) die Additions- oder Subtraktionsfunktion des Addierers 60 gewählt wird, (2) die Kriterien gewählt werden, gegenüber denen das durch den Addierer 60 erzeugte Ergebnis über das PLA 62 zu vergleichen ist, und (3) das Ausgangssignal (O) des PLA 62 freigegeben wird, während gleichzeitig das Ausgangssignal (O) des PLA 51 gesperrt wird. Wenn umgekehrt der auszuführende Rechenvorgang eine Additions- oder Subtraktionsoperation ist, dann wird das Ausgangssignal des PLA 62 gesperrt und wird das Ausgangsignal des PLA 51 freigegeben, um das Ergebnis des PLA 51 zur Ausnahmeverriegelungsschaltung 52 (über das ODER-Glied 54) gehen zu lassen.During the execution stage A of the floating point instruction, the exponent fields (E1 and E2) of the operands for that instruction are applied to the exception prediction unit 38 of the FPU 14 (Fig. 1). If the operation is a multiplication or division instruction, the OP signals result in (1) selecting the addition or subtraction function of the adder 60, (2) selecting the criteria against which the result produced by the adder 60 is to be compared via the PLA 62, and (3) enabling the output signal (O) of the PLA 62 while simultaneously disabling the output signal (O) of the PLA 51. Conversely, if the arithmetic operation to be performed is an addition or subtraction operation, then the output of the PLA 62 is disabled and the output of the PLA 51 is enabled to allow the result of the PLA 51 to go to the exception latch circuit 52 (via the OR gate 54).
Am Ende der Ausführungsstufe A des Gleitkommabefehls steht eine Vorhersage über den Ausnahmefall zur Verfügung. Wenn diese Vorhersage derart ist, daß die Gleitkommaberechnung nicht zu einem Ausnahmefall führen wird, dann bleibt die Leitung für das CP BUSY Signal inaktiv, setzt die CPU 12 ihren Arbeitsablauf fort und wird die Gleitkommaausführungseinheit den Rechenvorgang abschließen.At the end of execution stage A of the floating point instruction, a prediction of the exception is available. If this prediction is such that the floating point calculation will not result in an exception, then the line for the CP BUSY signal remains inactive, the CPU 12 continues its operation, and the floating point execution unit will complete the calculation.
Vom größerem Interesse ist der Fall, daß das PLA 51 oder 62 (in Abhängigkeit natürlich von der jeweiligen Operation) vorhersagt, daß ein Ausnahmefall auftreten wird. Diese Vorhersage aktiviert das CP BUSY Signal, das dann, wenn es von der Ausnahmeverriegelungsschaltung 52 an der CPU 12 liegt (Fig. 3), kurzzeitig den Arbeitsablauf der CPU 12 anhält. Für den jetzigen Zeitpunkt erfolgen keine weiteren Zugriffe an das Speichersystem 18 und wird die Ausführung der beiden Befehle, die auf den Gleittkommabefehl folgen, in der Schwebe gehalten; sie bleiben in ihren jeweiligen Stufen I und R der Ausführung. Der Gleitkommabefehl geht jedoch weiter bis zum Abschluß: die Gleitkomaausführungseinheit 42 (Fig.1) setzt die Ausführung des Rechenvorganges (beispielsweise Addition, Subtraktion, Multiplikation u.s.w.) fort, die vom Gleitkommabefehl gefordert wird.Of greater interest is the case where the PLA 51 or 62 (depending of course on the particular operation) predicts that an exception will occur. This prediction activates the CP BUSY signal which, when applied to the CPU 12 by the exception latch circuit 52 (Fig. 3), temporarily halts the operation of the CPU 12. No further accesses to the memory system are made at this time. 18 and the execution of the two instructions following the floating point instruction is held in abeyance; they remain in their respective stages I and R of execution. The floating point instruction, however, continues to completion: the floating point execution unit 42 (Fig. 1) continues to execute the arithmetic operation (e.g. addition, subtraction, multiplication, etc.) required by the floating point instruction.
Wenn am Ende des Rechenvorganges eine Gleitkommaausnahme auftritt, wie es vorhergesagt wurde, dann wird die Gleitkommaausführungseinheit 42 das INTERRUPT Signal aktivieren. Das INTERRUPT Signal liegt von der FPU 14 an der CPU 12, wodurch die CPU 12 dazu gebracht wird, aus ihrem kurzzeitig angehaltenen Zustand auf zuwachen und zwar mit der Kenntnis, daß eine Gleitkommaausnahme aufgetreten ist. Die Handhabung des Ausnahmefalles liegt nun bei der Software oder genauer beim Programmierer, um die notwendigen Schritte zur Handhabung des Ausnahmefalles zu ergreifen.If a floating point exception occurs at the end of the computation, as predicted, then the floating point execution unit 42 will assert the INTERRUPT signal. The INTERRUPT signal is provided from the FPU 14 to the CPU 12, causing the CPU 12 to wake up from its temporarily suspended state with the knowledge that a floating point exception has occurred. The handling of the exception now rests with the software, or more precisely, the programmer, to take the necessary steps to handle the exception.
Zu dem Zeitpunkt, zu dem das INTERRUPT Signal von der CPU 12 empfangen wird, wird die Adresse des Gleitkommabefehls, der die Unterbrechung hervorgerufen hat, von der PC Warteschlange 28 zum EPC 26 bewegt und dazu benutzt, auf das Speichersystem 18 zuzugreifen, um den Platz der Operanden (im System 10) zu bestimmen, die Gegenstand des Gleitkommabefehls sind. Das Softwareprogramm, in das als Folge des Auftretens des INTERRUPT Signals eingetreten wurde, führt nun die Modifikationen durch, die für die Operanden notwendig sind, wobei irgendeines der vielen bekannten technischen Verfahrens benutzt wird, die nun Teil der vorliegenden Erfindung sind. Der letzte Teil der Software setzt den Inhalt des PC 24 auf die Adresse des Befehls, der unmittelbar auf den Gleitkommabefehl folgt, und stellt die Steuerung des Systems auf den normalen Betrieb zurück. Das System 10 arbeitet nun wie bisher, indem es den Gleitkommabefehl mit angepaßten Operanden ausführt und auf die folgenden Befehle zugreift, um diese in die Pipeline zur Ausführung zu bringen.At the time the INTERRUPT signal is received by the CPU 12, the address of the floating point instruction which caused the interrupt is moved from the PC queue 28 to the EPC 26 and used to access the memory system 18 to determine the location of the operands (in the system 10) which are the subject of the floating point instruction. The software program entered as a result of the occurrence of the INTERRUPT signal now makes the modifications necessary to the operands using any of the many known techniques which now form part of the present invention. The last part of the software sets the contents of the PC 24 to the address of the instruction which immediately follows the floating point instruction and returns control of the system to normal operation. The system 10 now operates as before by executing the floating point instruction with adapted operands and accessing the following instructions to bring them into the pipeline for execution.
Claims (6)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/161,543 US4879676A (en) | 1988-02-29 | 1988-02-29 | Method and apparatus for precise floating point exceptions |
Publications (2)
Publication Number | Publication Date |
---|---|
DE68926063D1 DE68926063D1 (en) | 1996-05-02 |
DE68926063T2 true DE68926063T2 (en) | 1996-11-28 |
Family
ID=22581611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68926063T Expired - Lifetime DE68926063T2 (en) | 1988-02-29 | 1989-02-24 | Method and device for controlling processors by predicting exceptions to floating point arithmetic |
Country Status (8)
Country | Link |
---|---|
US (1) | US4879676A (en) |
EP (1) | EP0331372B1 (en) |
JP (1) | JP3025776B2 (en) |
KR (1) | KR950003200B1 (en) |
AU (1) | AU603973B2 (en) |
CA (1) | CA1295742C (en) |
DE (1) | DE68926063T2 (en) |
IL (1) | IL89262A (en) |
Families Citing this family (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US5341482A (en) * | 1987-03-20 | 1994-08-23 | Digital Equipment Corporation | Method for synchronization of arithmetic exceptions in central processing units having pipelined execution units simultaneously executing instructions |
JPS63259727A (en) * | 1987-04-17 | 1988-10-26 | Hitachi Ltd | Interface system for coprocessor |
US5153848A (en) * | 1988-06-17 | 1992-10-06 | Bipolar Integrated Technology, Inc. | Floating point processor with internal free-running clock |
JP2858140B2 (en) * | 1988-10-19 | 1999-02-17 | アポロ・コンピューター・インコーポレーテッド | Pipeline processor device and method |
US4943941A (en) * | 1989-01-13 | 1990-07-24 | Bolt Beranek And Newman Inc. | Floating point processor employing counter controlled shifting |
US5134693A (en) * | 1989-01-18 | 1992-07-28 | Intel Corporation | System for handling occurrence of exceptions during execution of microinstructions while running floating point and non-floating point instructions in parallel |
US5093908A (en) * | 1989-04-17 | 1992-03-03 | International Business Machines Corporation | Method and apparatus for executing instructions in a single sequential instruction stream in a main processor and a coprocessor |
US5218711A (en) * | 1989-05-15 | 1993-06-08 | Mitsubishi Denki Kabushiki Kaisha | Microprocessor having program counter registers for its coprocessors |
US5058048A (en) * | 1990-04-02 | 1991-10-15 | Advanced Micro Devices, Inc. | Normalizing pipelined floating point processing unit |
JP3089427B2 (en) * | 1990-09-20 | 2000-09-18 | 松下電器産業株式会社 | Data processing device |
JP2682232B2 (en) * | 1990-11-21 | 1997-11-26 | 松下電器産業株式会社 | Floating point processor |
JP2925818B2 (en) * | 1991-04-05 | 1999-07-28 | 株式会社東芝 | Parallel processing controller |
DE69231720T2 (en) * | 1991-12-10 | 2001-06-21 | Fujitsu Ltd., Kawasaki | Memory access device with address pipeline |
US5257216A (en) * | 1992-06-10 | 1993-10-26 | Intel Corporation | Floating point safe instruction recognition apparatus |
US5559977A (en) * | 1992-08-04 | 1996-09-24 | Intel Corporation | Method and apparatus for executing floating point (FP) instruction pairs in a pipelined processor by stalling the following FP instructions in an execution stage |
US5596693A (en) * | 1992-11-02 | 1997-01-21 | The 3Do Company | Method for controlling a spryte rendering processor |
US5481275A (en) | 1992-11-02 | 1996-01-02 | The 3Do Company | Resolution enhancement for video display using multi-line interpolation |
US5572235A (en) * | 1992-11-02 | 1996-11-05 | The 3Do Company | Method and apparatus for processing image data |
US5838389A (en) * | 1992-11-02 | 1998-11-17 | The 3Do Company | Apparatus and method for updating a CLUT during horizontal blanking |
US5752073A (en) * | 1993-01-06 | 1998-05-12 | Cagent Technologies, Inc. | Digital signal processor architecture |
JP2847688B2 (en) * | 1993-05-27 | 1999-01-20 | 松下電器産業株式会社 | Program conversion device and processor |
US5752013A (en) * | 1993-06-30 | 1998-05-12 | Intel Corporation | Method and apparatus for providing precise fault tracing in a superscalar microprocessor |
WO1995016955A1 (en) * | 1993-12-15 | 1995-06-22 | Silicon Graphics, Inc. | Load latency of zero for floating point load instructions using a load data queue |
US5537538A (en) * | 1993-12-15 | 1996-07-16 | Silicon Graphics, Inc. | Debug mode for a superscalar RISC processor |
KR0175116B1 (en) * | 1993-12-15 | 1999-04-01 | 윌리엄 더블유. 켈리 | Superscalar microprocessor instruction pipeline including in struction dispatch and release control |
DE4434895C2 (en) * | 1993-12-23 | 1998-12-24 | Hewlett Packard Co | Method and device for handling exceptional conditions |
TW260765B (en) * | 1994-03-31 | 1995-10-21 | Ibm | |
US5530663A (en) * | 1994-11-14 | 1996-06-25 | International Business Machines Corporation | Floating point unit for calculating a compound instruction A+B×C in two cycles |
US5548545A (en) * | 1995-01-19 | 1996-08-20 | Exponential Technology, Inc. | Floating point exception prediction for compound operations and variable precision using an intermediate exponent bus |
US5812439A (en) * | 1995-10-10 | 1998-09-22 | Microunity Systems Engineering, Inc. | Technique of incorporating floating point information into processor instructions |
US7197625B1 (en) * | 1997-10-09 | 2007-03-27 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US5864703A (en) * | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
US6275838B1 (en) | 1997-12-03 | 2001-08-14 | Intrinsity, Inc. | Method and apparatus for an enhanced floating point unit with graphics and integer capabilities |
US6460134B1 (en) | 1997-12-03 | 2002-10-01 | Intrinsity, Inc. | Method and apparatus for a late pipeline enhanced floating point unit |
US6044454A (en) * | 1998-02-19 | 2000-03-28 | International Business Machines Corporation | IEEE compliant floating point unit |
US6216222B1 (en) * | 1998-05-14 | 2001-04-10 | Arm Limited | Handling exceptions in a pipelined data processing apparatus |
US7242414B1 (en) | 1999-07-30 | 2007-07-10 | Mips Technologies, Inc. | Processor having a compare extension of an instruction set architecture |
US6732259B1 (en) | 1999-07-30 | 2004-05-04 | Mips Technologies, Inc. | Processor having a conditional branch extension of an instruction set architecture |
US7346643B1 (en) | 1999-07-30 | 2008-03-18 | Mips Technologies, Inc. | Processor with improved accuracy for multiply-add operations |
US6631392B1 (en) | 1999-07-30 | 2003-10-07 | Mips Technologies, Inc. | Method and apparatus for predicting floating-point exceptions |
US6714197B1 (en) | 1999-07-30 | 2004-03-30 | Mips Technologies, Inc. | Processor having an arithmetic extension of an instruction set architecture |
US6912559B1 (en) | 1999-07-30 | 2005-06-28 | Mips Technologies, Inc. | System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit |
US6697832B1 (en) | 1999-07-30 | 2004-02-24 | Mips Technologies, Inc. | Floating-point processor with improved intermediate result handling |
JP2001092662A (en) | 1999-09-22 | 2001-04-06 | Toshiba Corp | Processor core and processor using the same |
US6996596B1 (en) | 2000-05-23 | 2006-02-07 | Mips Technologies, Inc. | Floating-point processor with operating mode having improved accuracy and high performance |
US7162621B2 (en) | 2001-02-21 | 2007-01-09 | Mips Technologies, Inc. | Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration |
US7711763B2 (en) | 2001-02-21 | 2010-05-04 | Mips Technologies, Inc. | Microprocessor instructions for performing polynomial arithmetic operations |
US7181484B2 (en) * | 2001-02-21 | 2007-02-20 | Mips Technologies, Inc. | Extended-precision accumulation of multiplier output |
US7599981B2 (en) | 2001-02-21 | 2009-10-06 | Mips Technologies, Inc. | Binary polynomial multiplier |
US7401206B2 (en) * | 2004-06-30 | 2008-07-15 | Sun Microsystems, Inc. | Apparatus and method for fine-grained multithreading in a multipipelined processor core |
US7373489B1 (en) * | 2004-06-30 | 2008-05-13 | Sun Microsystems, Inc. | Apparatus and method for floating-point exception prediction and recovery |
US7437538B1 (en) | 2004-06-30 | 2008-10-14 | Sun Microsystems, Inc. | Apparatus and method for reducing execution latency of floating point operations having special case operands |
JP4500183B2 (en) | 2005-02-25 | 2010-07-14 | 東芝機械株式会社 | Transfer device |
US7451171B1 (en) * | 2008-03-31 | 2008-11-11 | International Business Machines Corporation | Systems, methods and computer program products for hardware assists for microcoded floating point divide and square root |
US10514913B2 (en) | 2017-06-23 | 2019-12-24 | International Business Machines Corporation | Compiler controls for program regions |
US10379851B2 (en) | 2017-06-23 | 2019-08-13 | International Business Machines Corporation | Fine-grained management of exception enablement of floating point controls |
US10684852B2 (en) | 2017-06-23 | 2020-06-16 | International Business Machines Corporation | Employing prefixes to control floating point operations |
DE102022104815A1 (en) | 2022-03-01 | 2023-09-07 | Schaeffler Technologies AG & Co. KG | Hybrid powertrain control method |
DE102022111312A1 (en) | 2022-05-06 | 2023-11-09 | Schaeffler Technologies AG & Co. KG | Dedicated hybrid powertrain and method for controlling the same |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS53135531A (en) * | 1977-05-02 | 1978-11-27 | Hitachi Ltd | Data processor |
AU549632B2 (en) * | 1981-04-23 | 1986-02-06 | Data General Corporation | Floating point notation |
JPS5892041A (en) * | 1981-11-27 | 1983-06-01 | Hitachi Ltd | Data processor |
JPS5943440A (en) * | 1982-09-03 | 1984-03-10 | Toshiba Corp | Arithmetic control system |
US4587612A (en) * | 1982-10-22 | 1986-05-06 | International Business Machines Corporation | Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter |
JPS59139448A (en) * | 1983-01-28 | 1984-08-10 | Matsushita Electric Ind Co Ltd | Floating-point multiplying device |
US4773035A (en) * | 1984-10-19 | 1988-09-20 | Amdahl Corporation | Pipelined data processing system utilizing ideal floating point execution condition detection |
JPS61288226A (en) * | 1985-06-17 | 1986-12-18 | Panafacom Ltd | External condition control system |
US4791557A (en) * | 1985-07-31 | 1988-12-13 | Wang Laboratories, Inc. | Apparatus and method for monitoring and controlling the prefetching of instructions by an information processing system |
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 |
-
1988
- 1988-02-29 US US07/161,543 patent/US4879676A/en not_active Expired - Lifetime
-
1989
- 1989-02-10 IL IL89262A patent/IL89262A/en unknown
- 1989-02-24 EP EP89301862A patent/EP0331372B1/en not_active Expired - Lifetime
- 1989-02-24 DE DE68926063T patent/DE68926063T2/en not_active Expired - Lifetime
- 1989-02-27 CA CA000592911A patent/CA1295742C/en not_active Expired - Lifetime
- 1989-02-27 AU AU30765/89A patent/AU603973B2/en not_active Expired
- 1989-02-28 KR KR1019890002537A patent/KR950003200B1/en not_active IP Right Cessation
- 1989-02-28 JP JP1045523A patent/JP3025776B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0331372B1 (en) | 1996-03-27 |
JPH0210427A (en) | 1990-01-16 |
KR890013553A (en) | 1989-09-23 |
KR950003200B1 (en) | 1995-04-04 |
DE68926063D1 (en) | 1996-05-02 |
IL89262A (en) | 1992-08-18 |
JP3025776B2 (en) | 2000-03-27 |
CA1295742C (en) | 1992-02-11 |
EP0331372A2 (en) | 1989-09-06 |
EP0331372A3 (en) | 1990-07-04 |
AU603973B2 (en) | 1990-11-29 |
IL89262A0 (en) | 1989-09-10 |
US4879676A (en) | 1989-11-07 |
AU3076589A (en) | 1989-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68926063T2 (en) | Method and device for controlling processors by predicting exceptions to floating point arithmetic | |
DE3650413T2 (en) | Method and device for canceling a command. | |
DE69028138T2 (en) | Mechanism for the precise handling of exceptions in a processor with paired instructions | |
DE68927911T2 (en) | Data processing system | |
DE69033443T2 (en) | Branch reset mechanism in a paired instruction processor | |
DE19983860B4 (en) | A method and apparatus for improved predicate prediction | |
DE69033398T2 (en) | Computer architecture with multiple command output | |
DE68927371T2 (en) | Method and device for processing multiple status codes as for a parallel pipeline computer | |
DE69430838T2 (en) | Circuit and method for parallel shifting and addition | |
DE69308548T2 (en) | DEVICE AND METHOD FOR COMPLETING THE COMMAND IN A SUPER-SCALAR PROCESSOR. | |
DE69032635T2 (en) | Method and device for identifying resource conflicts in a pipeline processing unit | |
DE69327637T2 (en) | Superscalar computer system | |
DE69031991T2 (en) | Method and device for accelerating branch instructions | |
DE69622305T2 (en) | Process and device for an optimizing compiler | |
DE4434895C2 (en) | Method and device for handling exceptional conditions | |
DE102020120019A1 (en) | PROACTIVE DI / DT VOLTAGE ROOF DESCENT ATTENUATION | |
DE69131544T2 (en) | Floating point arithmetic unit | |
DE4211245B4 (en) | Processor system in parallel processing type and method for its control | |
DE68924400T2 (en) | Assembly line data processing device. | |
DE19506435C2 (en) | Method and apparatus for avoiding write-back conflicts between execution units using a common writeback path | |
DE102009030525A1 (en) | Efficient Parallel Handling of Floating Point Exceptions in a Processor | |
DE69130757T2 (en) | Execution device for conditional branch instructions | |
DE112011103195T5 (en) | Function unit for calculating leading zeros of vectors, trailing zeros of vectors, the number of ones of vector operands and the vector parity | |
DE112004001040B4 (en) | Method and data processor with reduced operation interruption due to operand dependencies | |
DE69901338T2 (en) | MICROPROCESSOR WITH SEVERAL REGISTER SETS THAT HAVE THE SAME LOGICAL SPACE |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: MIPS TECHNOLOGIES,INC., MOUNTAIN VIEW,CALIF.,, US |