US20030093654A1 - Handling of load errors in computer processors - Google Patents

Handling of load errors in computer processors Download PDF

Info

Publication number
US20030093654A1
US20030093654A1 US10/328,252 US32825202A US2003093654A1 US 20030093654 A1 US20030093654 A1 US 20030093654A1 US 32825202 A US32825202 A US 32825202A US 2003093654 A1 US2003093654 A1 US 2003093654A1
Authority
US
United States
Prior art keywords
load
unit
arithmetic logic
datum
logic unit
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.)
Abandoned
Application number
US10/328,252
Inventor
Jeremy Harris
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Priority to US10/328,252 priority Critical patent/US20030093654A1/en
Publication of US20030093654A1 publication Critical patent/US20030093654A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Definitions

  • the invention relates generally to the handling of load errors in computer processors, more especially but not exclusively to the handling of load errors resulting from speculative loads.
  • a speculative load is thus defined a load operation that is issued by a processor before it is known whether the results of the load will be required in the flow of the program.
  • Speculative loads can reduce the effects of load latency by improving instruction scheduling.
  • speculative loads are generated by the compiler promoting loads to positions before test control instructions.
  • Speculative loads are often implemented as non-faulting loads.
  • a non-faulting load is a load which always completes, even in the presence of faults.
  • the semantics of a non-faulting load are the same as for any other load, except when faults occur.
  • An example of a fault is an address-out-of-range error. When a fault occurs, it is ignored and the hardware and system software cooperate to make the load appear to complete normally, but in some way to return the result in a form which reflects that the loaded datum is invalid.
  • the hardware will be configured to generate a fault indication for a failed normal load and to return a particular data value for a failed speculative load.
  • One known example of the handling of a failed load is the standard use of a poison bit or valid bit in the register into which the result of the speculative load is loaded. If the non-faulting load is successful then the poison bit remains unset or the valid bit is set. On the other hand, if the non-faulting load is unsuccessful then the poison bit is set or the valid bit remains unset. The software or hardware is then configured to ensure that any subsequent use of the data in the register generates a trap. With this approach, whenever there is an error in a non-faulting load, the program flow will enter into an error handling routine when an operation on the invalid data is attempted.
  • a processor comprising a load/store unit, a register unit comprising a set of registers and an arithmetic logic unit, the processor being of the kind in which the load/store unit has an error flag for marking as invalid a datum loaded to the load/store unit following a load which has not reliably completed and which is thus to be treated as having failed.
  • the processor is modified by the provision of a symbolic entity transmitter operatively arranged as an output stage of the load/store unit so that a symbolic entity is loaded into a destination one of the registers or directly into the arithmetic logic unit when the error flag is set in the load/store unit following a failed load.
  • the arithmetic logic unit is configured to propagate the symbolic entity, when present in an operand of an operation carried out by the arithmetic logic unit, to a result of the operation, the result with symbolic entity then being conveyed either to a destination register of the register unit or the load/store unit, depending on the processor design.
  • ALU arithmetic logic unit
  • FPU floating point units
  • the symbolic entity may be a Not-a-Number (NaN) value.
  • the symbolic entity transmitter may then take the form of a bit pattern generator interposed between the load/store unit and the register unit, and/or between the load/store unit and the ALU.
  • the bit pattern generator is then configured and arranged to load a bit pattern of a NaN value into the load destination register or the ALU in the case of a failed load.
  • the NaN value may be one of the large number of defined NaN values which is not used as a NaN value by the remaining hardware. Alternatively, a NaN value used by the processor for other purposes may be used.
  • a bit pattern generator operatively arranged in an output path from the load/store unit so that a Not-a-Number value for the invalid datum is loaded into a destination one of the floating-point registers in the register unit, or directly into the ALU.
  • the ALU is preferably configured to propagate the Not-a-Number value as a Quiet-Not-a-Number (QNaN) value through operations carried out in the ALU.
  • the QNaN value is preferably testable for in a datum by a system software command code provided for that purpose.
  • the command code may include a conversion, conditional on the test result, of the QNaN value to a Signaling-Not-a-Number (SNaN) value, so as to cause generation of a trap on subsequent use of the datum concerned. This may be especially useful in a processor supporting multiple threads of control where much of the processor execution will involve computing alternative “ways” only one of which will ultimately lie on the execution path of the code.
  • the command code may include a conditional branch, conditional on the test result, for immediately invoking an error handling routine for dealing with the invalid datum.
  • the symbolic entity transmitter may take the form of hardware interposed between the output-side of the load/store unit and the input-side of the register unit and/or ALU so that, in the case of a failed load, the error flag set in the load/store unit is conveyed to set or unset a poison or valid bit, respectively, in the destination register or operand of the ALU.
  • the ALU and register unit, or ALU register unit and load/store unit are interconnected so as to transmit and receive the poison or valid bit from each other during processor operation, and the ALU is internally configured to propagate the poison or valid bit through its operations.
  • a reduced instruction set computer (RISC) processor the register unit of which includes a set of integer registers, the integer registers having one or more poison bits responsive to loads from the load/store unit of invalid data, or, alternatively, one or more valid bits responsive to loads from the load/store unit or ALU of valid data, the poison or valid bits thus serving to indicate the integrity of data held in the respective registers, wherein the ALU is configured to propagate poison or valid bits present in operands of the operations to the results of the operations and to return the results together with the propagated poison or valid bits to the registers or ALU.
  • poison or valid bits may also be used as the symbolic entities for floating point data instead of Not-a-Number values.
  • Similar functionality may be provided in an another integer embodiment of the invention in a complex instruction set computer (CISC) processor by configuring the ALU to receive operands including one or more poison bits responsive to loads from the load/store unit or register unit of invalid data, or, alternatively, one or more valid bits responsive to loads from the load/store unit or register unit of valid data.
  • CISC complex instruction set computer
  • the ALU of a processor When performing an operation, the ALU of a processor according to the above-described integer aspect of the invention will return a poisoned or non-valid result if one or more of the operands of the operation are poisoned or non-valid respectively. On the other hand, the ALU will, in all cases, or all but a number of special cases, return a valid or non-poisoned result if the or each operand of the operation is valid or non-poisoned respectively.
  • a software command code may be provided for testing a datum for the presence of poison or valid bits. Moreover, a branch conditional on the result of the testing may form part of the software command code execution, whereby an invalid datum can be handled by branching to an error handling routine.
  • a processor comprising an instruction unit, a load/store unit, a register unit comprising a set of registers, and an ALU, the method comprising the steps of:
  • the invention especially in some of its embodiments for floating-point operations, may be better understood by analogy with the concept of Not-a-Number (NaN) as defined by IEEE 754 (1985) which is a well-known standard for floating-point arithmetic implemented in many recently designed processors.
  • NaN Not-a-Number
  • NaN is described in IEEE 754 and in standard literature on the programming of any processor which implements NaN. A brief summary is however now given.
  • NaN is a symbolic entity encoded in floating-point format.
  • the IEEE floating-point single and double formats includes a sign bit, a number of exponent bits, in the form of a biased exponent, and a number of mantissa bits conveying the fraction.
  • the sign and mantissa collectively form the significand.
  • Reserved values of the exponents are used to encode NaN's. The reserved values may be any values apart from those two reserved for +/ ⁇ infinity. If the biased exponent is all ones (in its binary representation) and the fraction is not zero then the significand conveys a NaN.
  • the NaN standard applies to arithmetic operations such as add, subtract, multiply, divide and square root, as well as to various other arithmetic and logical operations, such as conversions between number formats, remaindering and rounding, and optionally copying without change of format. If one or more signaling NaN (SNaN) values are input to an operation then an exception is signalled. If one or more quiet NaN (QNaN) values are input to an operation, and no SNaN's, then the operation signals no exception and delivers as its result a QNaN. With each exception there is typically an associated trap under software control.
  • SNaN signaling NaN
  • QNaN quiet NaN
  • SNaN's thus signal the invalid operation exception whenever they appear as operands and will result in the setting of a status flag, taking a trap or both.
  • QNaN's propagate through almost every arithmetic operation without signaling exceptions.
  • the invention may be thought of as the provision of a symbolic entity similar to a propagating QNaN which propagates when operations are carried out on an invalid datum resulting from a failed speculative load.
  • An advantage achievable with some embodiments of the invention is that it becomes possible to delay testing the results of a non-faulting load, since the QNaN-like symbolic entity will propagate with the results of operations on an invalid datum, thereby keeping track of the integrity of the data.
  • This has the benefit that program flow does not have to be slowed or otherwise disrupted by testing non-faulting load results as the loads occur, but can be deferred until some other time, for example when processor time is freely available, under the control of the program.
  • the testing can be performed when convenient and, if the test reveals a QNaN-like entity, i.e.
  • FIG. 1 shows a floating-point processor according to a first embodiment of the invention
  • FIG. 2 shows the format of a floating-point number supported by the processor of FIG. 1;
  • FIG. 3 is a table of the exponent, significand and fraction parts of the floating-point format of FIG. 2;
  • FIG. 4 shows an integer processor according to a second embodiment of the invention
  • FIG. 5 shows the flow of an operation supported by the arithmetic logic unit of the integer processor of FIG. 4;
  • FIG. 6 shows a combined floating-point and integer processor according to a third embodiment of the invention.
  • FIG. 7 shows the flow of conversion operations supported by the arithmetic logic unit of the processor of FIG. 6.
  • FIG. 8 shows a floating-point processor according to a sixth embodiment of the invention.
  • FIG. 9 shows an integer processor according to a seventh embodiment of the invention.
  • FIG. 1 shows a processor according to a first embodiment of the invention.
  • the processor comprises the conventional components of an instruction unit 1 , a load/store unit 2 , a register unit including a set of floating-point registers 4 , and an arithmetic logic unit (ALU) 5 in the form of a floating point unit (FPU).
  • ALU arithmetic logic unit
  • FPU floating point unit
  • RISC reduced instruction set computer
  • a memory cache 3 which interfaces with the processor unit through the load/store unit 2 through an external input/output of the load/store unit 2 provided for that purpose.
  • This arrangement is also conventional.
  • the processor may interact directly with any other external storage, such as a main memory unit.
  • the floating-point processor of FIG. 1 is of the kind capable of supporting speculative loads from an external data storage, in this case the cache 3 .
  • the load/store unit 2 has an error flag for marking a datum loaded to the load/store unit 2 following a speculative load which has loaded a datum that has not yet been validated by the rest of the program code and may therefore be wrong.
  • the generally conventional RISC architecture of the processor unit of FIG. 1 is departed from by the inclusion of a bit pattern generator 6 operatively arranged on the internal output side of the load/store unit 2 , more particularly in the data path from the load/store unit 2 to the register unit 4 .
  • the reverse path from the register unit 4 to the load/store unit 2 is not affected by the bit pattern generator 6 .
  • the bit pattern generator 6 is configured to generate as an output a Not-a-Number (NaN) value.
  • NaN Not-a-Number
  • the bit pattern generator 6 is responsive to the error flag in the load/store unit 2 for the datum being loaded. If the error flag is not set, then the datum is passed unchanged from the load/store unit 2 to the register unit 4 , i.e. the bit pattern generator 6 has no operational effect. On the other hand, if the error flag in the load/store unit 2 is set, indicating a load which has not completed reliably, i.e. failed, then the bit pattern generator 6 acts to load the reserved NaN value into the destination register, instead of the datum loaded into the load/store unit 2 from the external storage 3 . The error flag will be set following a failed load of any kind and a failed speculative load is but one example of a load error.
  • the ALU 5 is configured to handle the NaN value generated by the bit pattern generator 6 as a Quiet-not-a-Number (QNaN) value.
  • QNaN Quiet-not-a-Number
  • a QNaN value is one which propagates through operations in the ALU 5 without signaling exceptions.
  • the NaN value generated by the bit pattern generator 6 may be a general QNaN value used for normal purposes in the processor, or may be a separate NaN value which the processor is also designed to propagate in the manner of a QNaN and which is specific to data resulting from failed loads. (Here it is noted that current processors typically has a very large number of unused NaN values. For example, in the Intel pentium processor for single precision format floating-point numbers there are 2 8 -3 available NaN values only a few of which are used).
  • FIG. 2 shows the basic format of a floating-point number, for example either in conventional single or double precision, as used in IEEE 754.
  • the floating-point numbers are composed of three fields, namely a one bit sign field “s” , a multi-bit biased exponent “e” and a multi-bit fraction “f”.
  • the exponent has 8 bits and the fraction 23 bits, thereby to provide a significand of 24 bits (including the sign bit).
  • NaN values are defined as values of the fraction part of the significand which may have any value apart from 10 . . . 00 when all the bits of the biased exponents are ones, i.e. 11 . . . 11, and when the sign bit has a negative value.
  • the bit pattern generator 6 thus ensures that speculative loads which load invalid, or non-validated, data will result in QNaN values being loaded into the destination registers of the register unit 4 .
  • the conventional NaN value support provided in the ALU 5 will then ensure that any results of operations which use any of the invalid data are themselves given the QNaN value.
  • program flow need not be interrupted until a convenient time, since data integrity is tracked through the QNaN propagation process.
  • the particular action needed to deal with a failed load may be delayed for as many instructions as needed, while still permitting manipulation and use of the results of the load, should it complete normally in the manner of a non-faulting load.
  • the system software code is provided with a command for testing for the validity of any datum by means of testing the datum for the QNaN value generated by the bit pattern generator 6 .
  • the processor is configured, or its software designed, so that the QNaN test command is required to be issued before selected operations, such as an attempt to use a non-valid datum as an address for a load or store, an attempt to store a non-valid datum, or an attempt to use a non-valid datum to alter internal processor functional modes.
  • a positive test result may then cause a trap to be generated or a branch to a servicing routine.
  • a still further option would be to provide a trap on use of a non-valid datum, the trap being switchable by the program.
  • a trapping function may be implemented by providing a command for converting the value of a datum to a SNaN value.
  • the SNaN value may be either a general SNaN value used in normal processor operation, or one or more special SNaN values specific to data resulting from failed loads. (Here it is noted that any processor supporting IEEE 754 will have at least one SNaN value and associated support).
  • the conversion command would typically be used following a test command returning a positive result, thereby converting a QNaN value into a SNaN value.
  • the SNaN value will automatically trap on use, or invoke whatever other general SNaN servicing routines are present in the processor hardware or software, since, by definition, a SNaN value will signal an invalid operation exception whenever it appears as an operand of an operation.
  • FIG. 4 shows a processor according to a second embodiment of the invention interfaced to an external storage element.
  • the processor unit of the second embodiment includes an instruction unit 1 , a load/store unit 2 , a register unit 4 including a set of integer registers, and an ALU 5 for integer arithmetic operations.
  • the processor unit is connected to an external storage element in the form of a memory cache 3 , the processor unit being connected to the cache 3 through the load/store unit 2 .
  • the components of the processor unit are connected in a generally conventional manner.
  • the communication path between the register unit 4 and the ALU 5 is provided with one bit of extra bandwidth through an additional bus line 7 which is shown in FIG. 4, for the sake of convenience only, as being separate from the remaining internal bus lines interconnecting the register unit 4 and the ALU 5 .
  • An extension of the bus line 7 is linked to the load/store unit 2 .
  • Each of the integer registers of the register unit 4 have a poison/valid bit responsive to loads from the load/store unit 2 of failed, speculatively loaded, data.
  • the poison/valid bits thus indicate the integrity of the datum held in the integer register concerned.
  • the provision of poison/valid bits responsive to the error flag in the load/store unit is known, as is the loading of a poison or valid bit into a destination register of the register unit from the load/store unit.
  • the processor of FIG. 4 differs from a conventional design in that the register unit 4 and ALU 5 are configured to pass the poison/valid bits with their associated data during inter-communication between these components.
  • the ALU 5 is configured to propagate the poison/valid bits present in any operand of an operation to the result or results of that operation, and to return the results together with the propagated poison/valid bits to the integer registers in the register unit, using the additional bus line 7 for communication of the poison/valid bits.
  • the same functionality as described above for the first embodiment in respect of floating-point registers, i.e. the quiet propagation of a symbolic entity tagging data validity, can also be provided for integer registers.
  • a given operation carried out in the ALU 5 will have a first integer operand 8 , and optionally one or more further integer operands 9 .
  • Each operand includes an integer datum part “i” and a poison bit “p”. (Here it will be understood that valid bits may be used instead of poison bits and also that multiple poison bits or valid bits may be used instead of a single poison bit or a single valid bit respectively).
  • the operation on the or each operand will complete to generate an operation result 10 , also having an integer datum portion “i” and a poison bit “p”.
  • the hardware of the ALU 5 is configured to ensure that the poison bit of the result 10 is set if one or more of the poison bits of the or each operand is set.
  • the internal hardware of the ALU 5 may be implemented to provide this functionality for all of its operations or only for a defined subset of its operations.
  • FIG. 6 shows a third embodiment of the invention which is a hybrid of the first and second embodiments of the invention in which the register unit 4 has a set of floating-point registers and a set of integer registers, both of which support propagation of a data-integrity signifying symbolic entity.
  • a bit pattern generator 6 as described in connection with the first embodiment, is provided to support the functionality for the floating-point registers and a bus line 7 and modified internal hardware design of the ALU 5 is provided to support the same functionality for the integer registers, as in the second embodiment.
  • the ALU of the third embodiment supports both floating point and integer arithmetic operations. Floating-point operations are handled in the manner described for the first embodiment and integer operations are handled in the manner described for the second embodiment. In addition to these operations, there will also be integer-to-floating-point conversion operations in the third embodiment, as shown in FIG. 7 with the solid arrow. Such a conversion operation has an integer operand.
  • the conversion process is responsive to the poison bit which, if set, will result in the reserved QNaN value generated by the bit pattern generator 6 being defined as the result of the conversion process, as shown in FIG. 7.
  • the ALU 5 is configured to support the reverse floating-point-to-integer conversion process, setting the poison bit of the result if the operand has the QNaN value, or indeed any NaN value, as shown in FIG. 7 by the dashed arrow.
  • the ALU 5 is also configured to set the poison bit in the case of a conversion overflow.
  • a floating point processor having the same basic structure as shown for the integer processor of FIG. 4.
  • poison/valid bits are used as the symbolic entities indicating an error status in the datum concerned, as opposed to NaN-like symbolic entities, as in the first embodiment.
  • the load/store unit of the fourth embodiment may optionally be provided with a conversion unit.
  • the conversion unit is operable on storing a datum to convert a datum with set poison or unset valid bits to a NaN value.
  • the conversion unit is operable on loading a datum to set the poison or unset the valid bits when a datum having a NaN value is loaded into the processor.
  • a fifth embodiment of the invention there is provided a combined integer and floating point processor having the same basic structure as shown for the integer processor of FIG. 4.
  • poison/valid bits are used as the symbolic entities both for integer data and floating point data, substantially as described with reference to the fourth embodiment.
  • CISC complex instruction set computer
  • data which are operands of operations to be carried out in the ALU may be directly loaded from the load/store unit into the ALU, not via the register unit.
  • the ALU may directly output data, for example the results of operations, to the load/store unit, not via the register unit.
  • the register unit is connected to the ALU, as in a RISC architecture, and can thus serve to store intermediate results from the ALU, for example.
  • CISC architectures may also allow for loading of data from the load/store unit into the register unit and storing of data from the register unit to the load/store unit, as in a RISC architecture.
  • FIG. 8 shows a processor according to a sixth embodiment of the invention.
  • the processor comprises the conventional components of an instruction unit 1 , a load/store unit 2 , a register unit including a set of floating-point registers 4 , and an ALU 5 in the form of a FPU. These components are arranged in a generally conventional fashion for a complex instruction set computer (CISC) processor. Namely, there is a line of control from the instruction unit 1 to the load/store unit 2 and from the instruction unit 1 to the ALU 5 , and also bi-directional lines of control between the load/store unit 2 and the ALU 5 and between the register unit 4 and the ALU 5 .
  • CISC complex instruction set computer
  • bi-directional lines of control may exist between the load/store unit 2 and the register unit 4 .
  • a memory cache 3 external to the processor unit there is a memory cache 3 , or other external storage, which interfaces with the processor unit through the load/store unit 2 , more especially through an input/output arranged on the external side of the load/store unit 2 . This arrangement is also conventional.
  • the floating-point processor of FIG. 8 is of the kind capable of supporting speculative loads from an external data storage, in this case cache 3 , using an error flag as described for the first embodiment.
  • bit pattern generator 6 operatively arranged on the output side of the internal input/output of the load/store unit 2 , more particularly in the data path from the load/store unit 2 to the ALU 5 .
  • the reverse path from the ALU 5 to the load/store unit 2 is not affected by the bit pattern generator 6 . If there is a data path between the load/store unit 2 and the register unit 4 , as indicated by the dashed lines in FIG. 8, then the bit pattern generator 6 is also operatively arranged in the data path between those two components. For this optional data path, the operation of the bit pattern generator 6 will be the same as described with reference to the first embodiment and is thus not further discussed.
  • the bit pattern generator 6 is configured to generate as an output a NaN value. In the course of a load completion, a datum is loaded from the load/store unit 2 into a destination operand location of the ALU 5 . The bit pattern generator 6 is responsive to the error flag in the load/store unit 2 for the datum being loaded. If the error flag is not set, then the datum is passed unchanged from the load/store unit 2 to the ALU 5 , i.e. the bit pattern generator 6 has no operational effect.
  • the bit pattern generator 6 acts to load the reserved NaN value into the destination operand of the ALU, instead of the datum loaded into the load/store unit 2 from the external storage 3 .
  • bit pattern generator 6 in the CISC processor of the sixth embodiment is thus generally analogous to that in the RISC processor of the first embodiment, the difference being that data is loaded into, and downloaded from, the ALU 5 rather than the register unit 4 . Both these embodiments have in common that the bit pattern generator 6 is arranged to act as an output stage of the load/store unit located on the processor-internal side of the load/store unit 2 .
  • FIG. 9 shows a processor according to a seventh embodiment of the invention interfaced to an external storage element.
  • the processor unit of the second embodiment includes an instruction unit 1 , a load/store unit 2 , a register unit 4 including a set of integer registers, and an ALU 5 for integer arithmetic operations.
  • the processor unit is connected to an external storage element in the form of a memory cache 3 , the processor unit being connected to the cache 3 through the load/store unit 2 .
  • the components of the processor unit are connected generally in the manner of a conventional CISC processor.
  • the bi-directional line of control between the register unit 4 and the ALU 5 may have an extension to the load/store unit 2 in the manner of a RISC processor, as shown by dashed lines in FIG. 9.
  • the communication paths between the load/store unit 2 and the ALU 5 and between the register unit 4 and the ALU 5 are both provided with one bit of extra bandwidth through additional bus lines 7 and 7 ′ respectively.
  • the additional bus lines 7 and 7 ′ are shown in FIG. 9, for the sake of convenience only, as being separate from the remaining internal bus lines.
  • An extension of the bus line 7 ′ may optionally be provided to link the register unit 4 to the load/store unit 2 , as shown in FIG. 9 with dashed lines.
  • the bus line extension would provide a similar functionality to the corresponding connection in the RISC processor of the second embodiment.
  • the processor of FIG. 9 differs from a conventional CISC design in that the load/store unit 2 and ALU 5 are configured so that a set error flag in the load/store unit will load into a destination operand of the ALU 5 as one or more poison or valid bits. Similarly, poison/valid bits pass with their associated data during communication from the ALU 5 to the load/store unit. Moreover, the ALU 5 is configured to propagate the poison/valid bits present in any operand of an operation to the result or results of that operation, and to return the results together with the propagated poison/valid bits to either the load/store unit 2 or the integer registers in the register unit 4 , using the additional bus lines 7 and 7 ′ respectively for communication of the poison/valid bits. In this way, the same functionality as described above for the first and sixth embodiments in respect of floating-point registers, i.e. the quiet propagation of a symbolic entity for tagging data validity, can also be provided for integer registers.
  • Each of the integer registers of the register unit 4 have a poison/valid bit responsive to loads from the ALU 5 , and optionally the load/store unit 2 , of failed, speculatively loaded, data.
  • the poison/valid bits thus indicate the integrity of the data present as results of an operation in the ALU 5 and data held in the integer registers.
  • a combined integer and floating point CISC processor which is a hybrid of the CISC processors of the sixth and seventh embodiments of the invention in which the register unit 4 has a set of floating-point registers and a set of integer registers, both of which support propagation of a data-integrity signifying symbolic entity.
  • a bit pattern generator 6 as described and illustrated in connection with the sixth embodiment, is provided to support the functionality for the floating-point registers and a bus line 7 and modified internal hardware design of the ALU 5 is provided to support the same functionality for the integer registers, as described and illustrated in relation to the seventh embodiment.
  • a ninth embodiment of the invention there is provided a CISC processor with an ALU that supports both floating point and integer arithmetic operations. Floating-point operations are handled in the manner described for the sixth embodiment and integer operations are carried out in the manner described for the seventh embodiment. In addition to these operations, there will also be integer-to-floating-point conversion operations and floating-point-to-integer conversion operations, substantially as illustrated in and described with reference to FIG. 7.
  • the ALU 5 may be further modified as follows. Selected types of operation supported by the ALU 5 may, given a certain operand or combination of operands, necessarily cause an invalid or undefined result.
  • One example would be a divide-by-zero operation in integer long-division.
  • Another example would be an overflow in an integer or floating-point arithmetic operation.
  • the ALU 5 may be configured to define the result as the reserved QNaN value in the case of a floating-point result or by setting the poison bit in the case of a floating-point or integer result.
  • the symbolic entity defined by the QNaN value or the poison bit would then be stored in the associated register of the register unit and, if further operations were carried out on that datum, these would be handled in the same way as described above, thus allowing failure testing to be delayed also in the case of ALU generated errors as well as errors resulting from invalid speculative load results.
  • a further embodiment of the invention provides a processor for integer operations configured to support poison/valid bits that are propagatable through ALU operations, as described with reference to the second embodiment, wherein the ALU is configured to return a result with a set poison bit (or unset valid bit), when, for one or more prespecified operations, an operand or combination of operands have a predefined value or combination of values.
  • a processor may combine floating-point and integer support.

Abstract

In a RISC or CISC processor supporting the IEEE 754 Not-a-Number (NaN) standard and of the kind comprising a load/store unit, a register unit and an arithmetic logic unit, and wherein the load/store unit has an error flag for marking a datum loaded to the load/store unit following a load which has completed, but resulted in an error, the processor is provided with a bit pattern generator operatively arranged in an output path from the load/store unit to at least one of the register unit and the arithmetic logic unit so that a Not-a-Number value for the invalid datum is loaded into a destination one of the floating-point registers or the arithmetic logic unit. The arithmetic logic unit is configured to propagate the Not-a-Number value as a Quiet-Not-a-Number (QNaN) value through its operations. The QNaN value may be tested for in a datum by a system software command code provided for that purpose. In other embodiments of the invention, similar functionality is provided for integer registers using poison/valid bits in conjunction with an arithmetic logic unit designed to propagate the poison/valid bits through its operations. An advantage to be gained by this design is that it becomes possible to delay testing the results of a non-faulting load, since the QNaN-like symbolic entity will propagate with the results of operations on an invalid datum, thereby keeping track of the integrity of the data.

Description

    BACKGROUND OF THE INVENTION
  • The invention relates generally to the handling of load errors in computer processors, more especially but not exclusively to the handling of load errors resulting from speculative loads. [0001]
  • For good performance of a processor in a data processing system it is desirable to overlap data loads with other operations, by moving the load instructions forward to earlier positions in the instruction stream. When a load instruction is moved ahead of conditional control structures in the program flow, then the address it reads from may not yet be validated by the rest of the program code and may therefore be wrong. Loading of this kind is referred to as speculative. [0002]
  • A speculative load is thus defined a load operation that is issued by a processor before it is known whether the results of the load will be required in the flow of the program. Speculative loads can reduce the effects of load latency by improving instruction scheduling. Generally, speculative loads are generated by the compiler promoting loads to positions before test control instructions. [0003]
  • Speculative loads are often implemented as non-faulting loads. A non-faulting load is a load which always completes, even in the presence of faults. The semantics of a non-faulting load are the same as for any other load, except when faults occur. An example of a fault is an address-out-of-range error. When a fault occurs, it is ignored and the hardware and system software cooperate to make the load appear to complete normally, but in some way to return the result in a form which reflects that the loaded datum is invalid. Typically, the hardware will be configured to generate a fault indication for a failed normal load and to return a particular data value for a failed speculative load. [0004]
  • One known example of the handling of a failed load is the standard use of a poison bit or valid bit in the register into which the result of the speculative load is loaded. If the non-faulting load is successful then the poison bit remains unset or the valid bit is set. On the other hand, if the non-faulting load is unsuccessful then the poison bit is set or the valid bit remains unset. The software or hardware is then configured to ensure that any subsequent use of the data in the register generates a trap. With this approach, whenever there is an error in a non-faulting load, the program flow will enter into an error handling routine when an operation on the invalid data is attempted. [0005]
  • Another example of the handling of a failed load is to be found in the Sun SPARC processors UltraSPARC I & II. Here a non-faulting load returns zero-valued data when an exception (i.e. an error) is encountered. Software code then uses a compare instruction to check the load result before use, not using the speculatively loaded data if it is zero. If the result is zero, then the memory address is read again later using a normal (non-speculative) load to which normal protection mechanisms apply. The normal load will be able to differentiate between correct zero-valued data and an exception condition. Only if the normal load shows an error will an exception be caused, i.e. a trap generated. With this approach, whenever a zero result is returned from a non-faulting, speculative load, the instruction stream is stalled until the normal load has completed. [0006]
  • It is an aim of the invention to provide a mechanism for handling non-faulting loads which can improve program flow in the cases that non-faulting loads return invalid results. [0007]
  • SUMMARY OF THE INVENTION
  • Particular and preferred aspects of the invention are set out in the accompanying independent and dependent claims. Features of the dependent claims may be combined with those of the independent claims as appropriate and in combinations other than those explicitly set out in the claims. [0008]
  • According to a first aspect of the invention there is provided a processor comprising a load/store unit, a register unit comprising a set of registers and an arithmetic logic unit, the processor being of the kind in which the load/store unit has an error flag for marking as invalid a datum loaded to the load/store unit following a load which has not reliably completed and which is thus to be treated as having failed. The processor is modified by the provision of a symbolic entity transmitter operatively arranged as an output stage of the load/store unit so that a symbolic entity is loaded into a destination one of the registers or directly into the arithmetic logic unit when the error flag is set in the load/store unit following a failed load. Moreover, the arithmetic logic unit is configured to propagate the symbolic entity, when present in an operand of an operation carried out by the arithmetic logic unit, to a result of the operation, the result with symbolic entity then being conveyed either to a destination register of the register unit or the load/store unit, depending on the processor design. [0009]
  • In the present document, it should be noted that the term arithmetic logic unit (ALU) is used as a generic term for both integer logic units (which in the art are usually referred to as arithmetic logic units) and floating point units (FPUs). [0010]
  • In the case of floating-point registers in a processor conforming to IEEE 754, the symbolic entity may be a Not-a-Number (NaN) value. The symbolic entity transmitter may then take the form of a bit pattern generator interposed between the load/store unit and the register unit, and/or between the load/store unit and the ALU. The bit pattern generator is then configured and arranged to load a bit pattern of a NaN value into the load destination register or the ALU in the case of a failed load. The NaN value may be one of the large number of defined NaN values which is not used as a NaN value by the remaining hardware. Alternatively, a NaN value used by the processor for other purposes may be used. No or minimal special hardware is required in the ALU, since the ALU will automatically propagate a NaN value through arithmetic and logical operations. Moreover, no additional internal bandwidth will be required for the communication links between the load/store unit, register unit and ALU, since the failed load information is conveyed with the normal data bits. [0011]
  • Thus, according to a floating-point aspect of the invention, there is provided a bit pattern generator operatively arranged in an output path from the load/store unit so that a Not-a-Number value for the invalid datum is loaded into a destination one of the floating-point registers in the register unit, or directly into the ALU. [0012]
  • The ALU is preferably configured to propagate the Not-a-Number value as a Quiet-Not-a-Number (QNaN) value through operations carried out in the ALU. Moreover, the QNaN value is preferably testable for in a datum by a system software command code provided for that purpose. The command code may include a conversion, conditional on the test result, of the QNaN value to a Signaling-Not-a-Number (SNaN) value, so as to cause generation of a trap on subsequent use of the datum concerned. This may be especially useful in a processor supporting multiple threads of control where much of the processor execution will involve computing alternative “ways” only one of which will ultimately lie on the execution path of the code. Alternatively, the command code may include a conditional branch, conditional on the test result, for immediately invoking an error handling routine for dealing with the invalid datum. [0013]
  • In the case of integer registers, the symbolic entity transmitter may take the form of hardware interposed between the output-side of the load/store unit and the input-side of the register unit and/or ALU so that, in the case of a failed load, the error flag set in the load/store unit is conveyed to set or unset a poison or valid bit, respectively, in the destination register or operand of the ALU. Moreover, the ALU and register unit, or ALU register unit and load/store unit, are interconnected so as to transmit and receive the poison or valid bit from each other during processor operation, and the ALU is internally configured to propagate the poison or valid bit through its operations. [0014]
  • Thus, according to an integer embodiment of the invention, there is provided a reduced instruction set computer (RISC) processor, the register unit of which includes a set of integer registers, the integer registers having one or more poison bits responsive to loads from the load/store unit of invalid data, or, alternatively, one or more valid bits responsive to loads from the load/store unit or ALU of valid data, the poison or valid bits thus serving to indicate the integrity of data held in the respective registers, wherein the ALU is configured to propagate poison or valid bits present in operands of the operations to the results of the operations and to return the results together with the propagated poison or valid bits to the registers or ALU. It is noted that poison or valid bits may also be used as the symbolic entities for floating point data instead of Not-a-Number values. [0015]
  • Similar functionality may be provided in an another integer embodiment of the invention in a complex instruction set computer (CISC) processor by configuring the ALU to receive operands including one or more poison bits responsive to loads from the load/store unit or register unit of invalid data, or, alternatively, one or more valid bits responsive to loads from the load/store unit or register unit of valid data. [0016]
  • When performing an operation, the ALU of a processor according to the above-described integer aspect of the invention will return a poisoned or non-valid result if one or more of the operands of the operation are poisoned or non-valid respectively. On the other hand, the ALU will, in all cases, or all but a number of special cases, return a valid or non-poisoned result if the or each operand of the operation is valid or non-poisoned respectively. The special cases where a poisoned or non-valid result will be returned even when all operands are non-poisoned or valid will be those in which the result of an operation can be predicted as being invalid merely by virtue of, first, the operation type and, second, either the value of one operand or the combination of values of two or more operands. [0017]
  • A software command code may be provided for testing a datum for the presence of poison or valid bits. Moreover, a branch conditional on the result of the testing may form part of the software command code execution, whereby an invalid datum can be handled by branching to an error handling routine. [0018]
  • According to a further aspect of the invention there is provided a method of operation of a processor comprising an instruction unit, a load/store unit, a register unit comprising a set of registers, and an ALU, the method comprising the steps of: [0019]
  • a) the instruction unit issuing a load request for a datum to an external storage element; [0020]
  • b) the load being carried out, but returning an invalid datum to the load/store unit; [0021]
  • c) the load/store unit setting an error flag for the invalid datum; [0022]
  • d) the load completing by loading a symbolic entity as at least a part of the datum into one of the register unit and the arithmetic logic unit; [0023]
  • e) the arithmetic logic unit carrying out an operation having the datum as an operand such that the symbolic entity associated with the invalid datum is conveyed to a result of the operation; and [0024]
  • f) outputting from the arithmetic logic unit the result with symbolic entity into one of the register unit and the load/store unit. [0025]
  • The invention, especially in some of its embodiments for floating-point operations, may be better understood by analogy with the concept of Not-a-Number (NaN) as defined by IEEE 754 (1985) which is a well-known standard for floating-point arithmetic implemented in many recently designed processors. [0026]
  • NaN is described in IEEE 754 and in standard literature on the programming of any processor which implements NaN. A brief summary is however now given. NaN is a symbolic entity encoded in floating-point format. The IEEE floating-point single and double formats includes a sign bit, a number of exponent bits, in the form of a biased exponent, and a number of mantissa bits conveying the fraction. The sign and mantissa collectively form the significand. Reserved values of the exponents are used to encode NaN's. The reserved values may be any values apart from those two reserved for +/− infinity. If the biased exponent is all ones (in its binary representation) and the fraction is not zero then the significand conveys a NaN. [0027]
  • The NaN standard applies to arithmetic operations such as add, subtract, multiply, divide and square root, as well as to various other arithmetic and logical operations, such as conversions between number formats, remaindering and rounding, and optionally copying without change of format. If one or more signaling NaN (SNaN) values are input to an operation then an exception is signalled. If one or more quiet NaN (QNaN) values are input to an operation, and no SNaN's, then the operation signals no exception and delivers as its result a QNaN. With each exception there is typically an associated trap under software control. SNaN's thus signal the invalid operation exception whenever they appear as operands and will result in the setting of a status flag, taking a trap or both. On the other hand, QNaN's propagate through almost every arithmetic operation without signaling exceptions. [0028]
  • Now, by analogy with NaN, the invention may be thought of as the provision of a symbolic entity similar to a propagating QNaN which propagates when operations are carried out on an invalid datum resulting from a failed speculative load. [0029]
  • In contrast, with fore-knowledge of the present invention, the prior art use of a poison bit or valid bit in conjunction with trapping, as described above, may be thought of as analogous to the provision of a non-propagating SNaN. A QNaN-type functionality cannot be provided with the conventional design, since there is no means for generating a propagatable QNaN-like bit pattern in the load/store unit when the flag for a failed speculative load is set. Moreover, for non-floating-point operations, a conventional ALU has no means for propagating a QNaN-like entity through its operations, even if one could be generated. [0030]
  • An advantage achievable with some embodiments of the invention is that it becomes possible to delay testing the results of a non-faulting load, since the QNaN-like symbolic entity will propagate with the results of operations on an invalid datum, thereby keeping track of the integrity of the data. This has the benefit that program flow does not have to be slowed or otherwise disrupted by testing non-faulting load results as the loads occur, but can be deferred until some other time, for example when processor time is freely available, under the control of the program. The testing can be performed when convenient and, if the test reveals a QNaN-like entity, i.e. data corrupted by an earlier failed speculative load, then this can be dealt with, for example immediately by branching to a servicing routine, or by converting the QNaN-like entity to a SNaN-like entity so as to cause trapping on subsequent use. [0031]
  • Although the invention was conceived with the handling of failed speculative loads specifically in mind, it will be appreciated that the processor designs herein described are equally well suited to handling failed loads of any type. Delay of testing the results of loads of any kind may be advantageous for the same reason as described above in relation to non-faulting loads. One example of the utility of the propagatable, error indicating, symbolic entity for normal loads would be to provide hardware protection against programing errors of the kind which may result in illegal loads from external storage, e.g. a load from an address that does not exist. The invention may thus be embodied in processors that do not support non-faulting loads, and also in processors that do support non-faulting loads for handling both failed normal loads and failed speculative loads. [0032]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • For a better understanding of the invention and to show how the same may be carried into effect reference is now made by way of example to the accompanying drawings in which: [0033]
  • FIG. 1 shows a floating-point processor according to a first embodiment of the invention; [0034]
  • FIG. 2 shows the format of a floating-point number supported by the processor of FIG. 1; [0035]
  • FIG. 3 is a table of the exponent, significand and fraction parts of the floating-point format of FIG. 2; [0036]
  • FIG. 4 shows an integer processor according to a second embodiment of the invention; [0037]
  • FIG. 5 shows the flow of an operation supported by the arithmetic logic unit of the integer processor of FIG. 4; [0038]
  • FIG. 6 shows a combined floating-point and integer processor according to a third embodiment of the invention; [0039]
  • FIG. 7 shows the flow of conversion operations supported by the arithmetic logic unit of the processor of FIG. 6. [0040]
  • FIG. 8 shows a floating-point processor according to a sixth embodiment of the invention; and [0041]
  • FIG. 9 shows an integer processor according to a seventh embodiment of the invention. [0042]
  • DETAILED DESCRIPTION
  • FIG. 1 shows a processor according to a first embodiment of the invention. The processor comprises the conventional components of an [0043] instruction unit 1, a load/store unit 2, a register unit including a set of floating-point registers 4, and an arithmetic logic unit (ALU) 5 in the form of a floating point unit (FPU). These components are interconnected internally and externally in a generally conventional fashion for a reduced instruction set computer (RISC) processor. Namely, there is an internal line of control from the instruction unit 1 to the load/store unit 2, from the instruction unit 1 to the ALU 5, and from the load/store unit 2 to the register unit 4, and also bi-directional internal lines of control between the register unit 4 and the ALU 5. Furthermore, external to the processor unit there is a memory cache 3 which interfaces with the processor unit through the load/store unit 2 through an external input/output of the load/store unit 2 provided for that purpose. This arrangement is also conventional. Instead of a cache, the processor may interact directly with any other external storage, such as a main memory unit.
  • The floating-point processor of FIG. 1 is of the kind capable of supporting speculative loads from an external data storage, in this case the [0044] cache 3. For this purpose, the load/store unit 2 has an error flag for marking a datum loaded to the load/store unit 2 following a speculative load which has loaded a datum that has not yet been validated by the rest of the program code and may therefore be wrong.
  • The generally conventional RISC architecture of the processor unit of FIG. 1 is departed from by the inclusion of a [0045] bit pattern generator 6 operatively arranged on the internal output side of the load/store unit 2, more particularly in the data path from the load/store unit 2 to the register unit 4. The reverse path from the register unit 4 to the load/store unit 2 is not affected by the bit pattern generator 6. The bit pattern generator 6 is configured to generate as an output a Not-a-Number (NaN) value. In the course of a load completion, a datum is loaded from the load/store unit 2 into a destination one of the floating-point registers contained in the register unit 4. The bit pattern generator 6 is responsive to the error flag in the load/store unit 2 for the datum being loaded. If the error flag is not set, then the datum is passed unchanged from the load/store unit 2 to the register unit 4, i.e. the bit pattern generator 6 has no operational effect. On the other hand, if the error flag in the load/store unit 2 is set, indicating a load which has not completed reliably, i.e. failed, then the bit pattern generator 6 acts to load the reserved NaN value into the destination register, instead of the datum loaded into the load/store unit 2 from the external storage 3. The error flag will be set following a failed load of any kind and a failed speculative load is but one example of a load error.
  • The [0046] ALU 5 is configured to handle the NaN value generated by the bit pattern generator 6 as a Quiet-not-a-Number (QNaN) value. As described further above, a QNaN value is one which propagates through operations in the ALU 5 without signaling exceptions. The NaN value generated by the bit pattern generator 6 may be a general QNaN value used for normal purposes in the processor, or may be a separate NaN value which the processor is also designed to propagate in the manner of a QNaN and which is specific to data resulting from failed loads. (Here it is noted that current processors typically has a very large number of unused NaN values. For example, in the Intel pentium processor for single precision format floating-point numbers there are 28-3 available NaN values only a few of which are used).
  • In the case that a general QNaN value is generated by the bit pattern generator, the qualities of the conventional floating-point NaN value would be merged with the non-valid-datum NaN value. The special NaN value usage according to the invention would then be integrated with the semantics required by conventional NaN value handling of a processor that conforms with IEEE 754. [0047]
  • On the other hand, in the case that a separate QNaN value is designated specifically for the purpose of tagging non-validated data resulting from failed loads, there is then the possibility of providing a more sophisticated protocol for responding to failed loads, either programmatically or in hardware. Furthermore, different QNaN values may be used for different types of load error. For example, data from failed speculative loads may be ascribed one QNaN value and data from failed normal loads another QNaN value. [0048]
  • FIG. 2 shows the basic format of a floating-point number, for example either in conventional single or double precision, as used in IEEE 754. The floating-point numbers are composed of three fields, namely a one bit sign field “s” , a multi-bit biased exponent “e” and a multi-bit fraction “f”. In conventional single precision format, the exponent has 8 bits and the fraction 23 bits, thereby to provide a significand of 24 bits (including the sign bit). Conventionally, and as shown in FIG. 3, NaN values are defined as values of the fraction part of the significand which may have any value apart from 10 . . . 00 when all the bits of the biased exponents are ones, i.e. 11 . . . 11, and when the sign bit has a negative value. [0049]
  • In operation, the [0050] bit pattern generator 6 thus ensures that speculative loads which load invalid, or non-validated, data will result in QNaN values being loaded into the destination registers of the register unit 4. The conventional NaN value support provided in the ALU 5 will then ensure that any results of operations which use any of the invalid data are themselves given the QNaN value. In this way, program flow need not be interrupted until a convenient time, since data integrity is tracked through the QNaN propagation process. The particular action needed to deal with a failed load may be delayed for as many instructions as needed, while still permitting manipulation and use of the results of the load, should it complete normally in the manner of a non-faulting load.
  • In one implementation, the system software code is provided with a command for testing for the validity of any datum by means of testing the datum for the QNaN value generated by the [0051] bit pattern generator 6. Moreover, the processor is configured, or its software designed, so that the QNaN test command is required to be issued before selected operations, such as an attempt to use a non-valid datum as an address for a load or store, an attempt to store a non-valid datum, or an attempt to use a non-valid datum to alter internal processor functional modes. A positive test result may then cause a trap to be generated or a branch to a servicing routine. A still further option would be to provide a trap on use of a non-valid datum, the trap being switchable by the program.
  • A trapping function may be implemented by providing a command for converting the value of a datum to a SNaN value. The SNaN value may be either a general SNaN value used in normal processor operation, or one or more special SNaN values specific to data resulting from failed loads. (Here it is noted that any processor supporting IEEE 754 will have at least one SNaN value and associated support). The conversion command would typically be used following a test command returning a positive result, thereby converting a QNaN value into a SNaN value. The SNaN value will automatically trap on use, or invoke whatever other general SNaN servicing routines are present in the processor hardware or software, since, by definition, a SNaN value will signal an invalid operation exception whenever it appears as an operand of an operation. [0052]
  • FIG. 4 shows a processor according to a second embodiment of the invention interfaced to an external storage element. The processor unit of the second embodiment includes an [0053] instruction unit 1, a load/store unit 2, a register unit 4 including a set of integer registers, and an ALU 5 for integer arithmetic operations. The processor unit is connected to an external storage element in the form of a memory cache 3, the processor unit being connected to the cache 3 through the load/store unit 2. The components of the processor unit are connected in a generally conventional manner. Namely, there is a line of control from the instruction unit 1 to the load/store unit 2, from the instruction unit 1 to the ALU 5, and from the load/store unit 2 to the register unit 4, and also bi-directional lines of control between the register unit 4 and the ALU 5.
  • By contrast to a conventional RISC processor unit, the communication path between the [0054] register unit 4 and the ALU 5 is provided with one bit of extra bandwidth through an additional bus line 7 which is shown in FIG. 4, for the sake of convenience only, as being separate from the remaining internal bus lines interconnecting the register unit 4 and the ALU 5. An extension of the bus line 7 is linked to the load/store unit 2.
  • Each of the integer registers of the [0055] register unit 4 have a poison/valid bit responsive to loads from the load/store unit 2 of failed, speculatively loaded, data. The poison/valid bits thus indicate the integrity of the datum held in the integer register concerned. The provision of poison/valid bits responsive to the error flag in the load/store unit is known, as is the loading of a poison or valid bit into a destination register of the register unit from the load/store unit. However, the processor of FIG. 4 differs from a conventional design in that the register unit 4 and ALU 5 are configured to pass the poison/valid bits with their associated data during inter-communication between these components. Moreover, the ALU 5 is configured to propagate the poison/valid bits present in any operand of an operation to the result or results of that operation, and to return the results together with the propagated poison/valid bits to the integer registers in the register unit, using the additional bus line 7 for communication of the poison/valid bits. In this way, the same functionality as described above for the first embodiment in respect of floating-point registers, i.e. the quiet propagation of a symbolic entity tagging data validity, can also be provided for integer registers.
  • As shown in FIG. 5, a given operation carried out in the [0056] ALU 5 will have a first integer operand 8, and optionally one or more further integer operands 9. Each operand includes an integer datum part “i” and a poison bit “p”. (Here it will be understood that valid bits may be used instead of poison bits and also that multiple poison bits or valid bits may be used instead of a single poison bit or a single valid bit respectively). The operation on the or each operand will complete to generate an operation result 10, also having an integer datum portion “i” and a poison bit “p”. The hardware of the ALU 5 is configured to ensure that the poison bit of the result 10 is set if one or more of the poison bits of the or each operand is set. As will be appreciated, the internal hardware of the ALU 5 may be implemented to provide this functionality for all of its operations or only for a defined subset of its operations.
  • FIG. 6 shows a third embodiment of the invention which is a hybrid of the first and second embodiments of the invention in which the [0057] register unit 4 has a set of floating-point registers and a set of integer registers, both of which support propagation of a data-integrity signifying symbolic entity. A bit pattern generator 6, as described in connection with the first embodiment, is provided to support the functionality for the floating-point registers and a bus line 7 and modified internal hardware design of the ALU 5 is provided to support the same functionality for the integer registers, as in the second embodiment.
  • The ALU of the third embodiment supports both floating point and integer arithmetic operations. Floating-point operations are handled in the manner described for the first embodiment and integer operations are handled in the manner described for the second embodiment. In addition to these operations, there will also be integer-to-floating-point conversion operations in the third embodiment, as shown in FIG. 7 with the solid arrow. Such a conversion operation has an integer operand. The conversion process is responsive to the poison bit which, if set, will result in the reserved QNaN value generated by the [0058] bit pattern generator 6 being defined as the result of the conversion process, as shown in FIG. 7. Similarly the ALU 5 is configured to support the reverse floating-point-to-integer conversion process, setting the poison bit of the result if the operand has the QNaN value, or indeed any NaN value, as shown in FIG. 7 by the dashed arrow. The ALU 5 is also configured to set the poison bit in the case of a conversion overflow.
  • According to a fourth embodiment of the invention (not separately illustrated) there is provided a floating point processor having the same basic structure as shown for the integer processor of FIG. 4. In the floating point processor of the fourth embodiment, poison/valid bits are used as the symbolic entities indicating an error status in the datum concerned, as opposed to NaN-like symbolic entities, as in the first embodiment. The load/store unit of the fourth embodiment may optionally be provided with a conversion unit. The conversion unit is operable on storing a datum to convert a datum with set poison or unset valid bits to a NaN value. Moreover, the conversion unit is operable on loading a datum to set the poison or unset the valid bits when a datum having a NaN value is loaded into the processor. [0059]
  • According to a fifth embodiment of the invention (not separately shown) there is provided a combined integer and floating point processor having the same basic structure as shown for the integer processor of FIG. 4. In the processor of the fifth embodiment, poison/valid bits are used as the symbolic entities both for integer data and floating point data, substantially as described with reference to the fourth embodiment. [0060]
  • The above described embodiments relate to processor units with a reduced instruction set computer (RISC) architecture. The invention may however also be embodied in processor units with a complex instruction set computer (CISC) architecture, as described in more detail further below. In a CISC architecture, data which are operands of operations to be carried out in the ALU may be directly loaded from the load/store unit into the ALU, not via the register unit. Moreover, the ALU may directly output data, for example the results of operations, to the load/store unit, not via the register unit. The register unit is connected to the ALU, as in a RISC architecture, and can thus serve to store intermediate results from the ALU, for example. CISC architectures may also allow for loading of data from the load/store unit into the register unit and storing of data from the register unit to the load/store unit, as in a RISC architecture. [0061]
  • FIG. 8 shows a processor according to a sixth embodiment of the invention. The processor comprises the conventional components of an [0062] instruction unit 1, a load/store unit 2, a register unit including a set of floating-point registers 4, and an ALU 5 in the form of a FPU. These components are arranged in a generally conventional fashion for a complex instruction set computer (CISC) processor. Namely, there is a line of control from the instruction unit 1 to the load/store unit 2 and from the instruction unit 1 to the ALU 5, and also bi-directional lines of control between the load/store unit 2 and the ALU 5 and between the register unit 4 and the ALU 5. In addition, as shown by dashed lines, bi-directional lines of control may exist between the load/store unit 2 and the register unit 4. Furthermore, external to the processor unit there is a memory cache 3, or other external storage, which interfaces with the processor unit through the load/store unit 2, more especially through an input/output arranged on the external side of the load/store unit 2. This arrangement is also conventional.
  • The floating-point processor of FIG. 8 is of the kind capable of supporting speculative loads from an external data storage, in this [0063] case cache 3, using an error flag as described for the first embodiment.
  • The generally conventional CISC architecture of the processor unit of FIG. 8 is departed from by the inclusion of a [0064] bit pattern generator 6 operatively arranged on the output side of the internal input/output of the load/store unit 2, more particularly in the data path from the load/store unit 2 to the ALU 5. The reverse path from the ALU 5 to the load/store unit 2 is not affected by the bit pattern generator 6. If there is a data path between the load/store unit 2 and the register unit 4, as indicated by the dashed lines in FIG. 8, then the bit pattern generator 6 is also operatively arranged in the data path between those two components. For this optional data path, the operation of the bit pattern generator 6 will be the same as described with reference to the first embodiment and is thus not further discussed. The bit pattern generator 6 is configured to generate as an output a NaN value. In the course of a load completion, a datum is loaded from the load/store unit 2 into a destination operand location of the ALU 5. The bit pattern generator 6 is responsive to the error flag in the load/store unit 2 for the datum being loaded. If the error flag is not set, then the datum is passed unchanged from the load/store unit 2 to the ALU 5, i.e. the bit pattern generator 6 has no operational effect. On the other hand, if the error flag in the load/store unit 2 is set, indicating a failed load, then the bit pattern generator 6 acts to load the reserved NaN value into the destination operand of the ALU, instead of the datum loaded into the load/store unit 2 from the external storage 3.
  • The operational effect of the [0065] bit pattern generator 6 in the CISC processor of the sixth embodiment is thus generally analogous to that in the RISC processor of the first embodiment, the difference being that data is loaded into, and downloaded from, the ALU 5 rather than the register unit 4. Both these embodiments have in common that the bit pattern generator 6 is arranged to act as an output stage of the load/store unit located on the processor-internal side of the load/store unit 2.
  • FIG. 9 shows a processor according to a seventh embodiment of the invention interfaced to an external storage element. The processor unit of the second embodiment includes an [0066] instruction unit 1, a load/store unit 2, a register unit 4 including a set of integer registers, and an ALU 5 for integer arithmetic operations. The processor unit is connected to an external storage element in the form of a memory cache 3, the processor unit being connected to the cache 3 through the load/store unit 2. The components of the processor unit are connected generally in the manner of a conventional CISC processor. Namely, there is a line of control from the instruction unit 1 to the load/store unit 2, from the instruction unit 1 to the ALU 5, and also bidirectional lines of control between the load/store unit 2 and the ALU 5 and between the register unit 4 and the ALU 5. Optionally, the bi-directional line of control between the register unit 4 and the ALU 5 may have an extension to the load/store unit 2 in the manner of a RISC processor, as shown by dashed lines in FIG. 9.
  • By contrast to a conventional CISC processor unit, the communication paths between the load/[0067] store unit 2 and the ALU 5 and between the register unit 4 and the ALU 5 are both provided with one bit of extra bandwidth through additional bus lines 7 and 7′ respectively. The additional bus lines 7 and 7′ are shown in FIG. 9, for the sake of convenience only, as being separate from the remaining internal bus lines. An extension of the bus line 7′ may optionally be provided to link the register unit 4 to the load/store unit 2, as shown in FIG. 9 with dashed lines. The bus line extension would provide a similar functionality to the corresponding connection in the RISC processor of the second embodiment.
  • The processor of FIG. 9 differs from a conventional CISC design in that the load/[0068] store unit 2 and ALU 5 are configured so that a set error flag in the load/store unit will load into a destination operand of the ALU 5 as one or more poison or valid bits. Similarly, poison/valid bits pass with their associated data during communication from the ALU 5 to the load/store unit. Moreover, the ALU 5 is configured to propagate the poison/valid bits present in any operand of an operation to the result or results of that operation, and to return the results together with the propagated poison/valid bits to either the load/store unit 2 or the integer registers in the register unit 4, using the additional bus lines 7 and 7′ respectively for communication of the poison/valid bits. In this way, the same functionality as described above for the first and sixth embodiments in respect of floating-point registers, i.e. the quiet propagation of a symbolic entity for tagging data validity, can also be provided for integer registers.
  • Each of the integer registers of the [0069] register unit 4 have a poison/valid bit responsive to loads from the ALU 5, and optionally the load/store unit 2, of failed, speculatively loaded, data. The poison/valid bits thus indicate the integrity of the data present as results of an operation in the ALU 5 and data held in the integer registers.
  • According to an eighth embodiment of the invention (not separately shown) there is provided a combined integer and floating point CISC processor which is a hybrid of the CISC processors of the sixth and seventh embodiments of the invention in which the [0070] register unit 4 has a set of floating-point registers and a set of integer registers, both of which support propagation of a data-integrity signifying symbolic entity. A bit pattern generator 6, as described and illustrated in connection with the sixth embodiment, is provided to support the functionality for the floating-point registers and a bus line 7 and modified internal hardware design of the ALU 5 is provided to support the same functionality for the integer registers, as described and illustrated in relation to the seventh embodiment.
  • According to a ninth embodiment of the invention (not separately shown) there is provided a CISC processor with an ALU that supports both floating point and integer arithmetic operations. Floating-point operations are handled in the manner described for the sixth embodiment and integer operations are carried out in the manner described for the seventh embodiment. In addition to these operations, there will also be integer-to-floating-point conversion operations and floating-point-to-integer conversion operations, substantially as illustrated in and described with reference to FIG. 7. [0071]
  • In any of the above-described embodiments of the invention, the [0072] ALU 5 may be further modified as follows. Selected types of operation supported by the ALU 5 may, given a certain operand or combination of operands, necessarily cause an invalid or undefined result. One example would be a divide-by-zero operation in integer long-division. Another example would be an overflow in an integer or floating-point arithmetic operation. In such cases, the ALU 5 may be configured to define the result as the reserved QNaN value in the case of a floating-point result or by setting the poison bit in the case of a floating-point or integer result. In either case, the symbolic entity defined by the QNaN value or the poison bit would then be stored in the associated register of the register unit and, if further operations were carried out on that datum, these would be handled in the same way as described above, thus allowing failure testing to be delayed also in the case of ALU generated errors as well as errors resulting from invalid speculative load results.
  • Indeed this functionality could be provided on its own without the capability of delaying faults on loads. For example, a further embodiment of the invention provides a processor for integer operations configured to support poison/valid bits that are propagatable through ALU operations, as described with reference to the second embodiment, wherein the ALU is configured to return a result with a set poison bit (or unset valid bit), when, for one or more prespecified operations, an operand or combination of operands have a predefined value or combination of values. Such a processor may combine floating-point and integer support. [0073]
  • It will be appreciated that although particular embodiments of the invention have been described, many modifications/additions and/or substitutions may be made within the spirit and scope of the present invention as defined in the appended claims. [0074]

Claims (19)

What I claim is:
1. A processor comprising a register unit having a set of registers, an arithmetic logic unit and a load/store unit, the load/store unit being connected to at least one of the register unit and the arithmetic logic unit by a data path and having an error flag for marking as invalid a datum received from an external storage element following a load which has resulted in an error, the processor further comprising a symbolic entity transmitter operatively arranged in said data path from the load/store unit so as to transmit a symbolic entity to said at least one of the register unit and the arithmetic logic unit when an invalid datum is output from the load/store unit for said at least one of the register unit and the arithmetic logic unit, the arithmetic logic unit being configured to propagate the symbolic entity, when present in an operand of an operation carried out by the arithmetic logic unit, to a result of the operation.
2. A processor according to claim 1, wherein the load/store unit is arranged to communicate with the register unit, the symbolic entity transmitter being operatively arranged in the data path from the load/store unit to the register unit.
3. A processor according to claim 1, wherein the load/store unit is arranged to communicate with the arithmetic logic unit, the symbolic entity transmitter being operatively arranged in the data path from the load/store unit to the arithmetic logic unit.
4. A processor according to claim 1, wherein the load/store unit is arranged to communicate with the arithmetic logic unit, the symbolic entity transmitter being operatively arranged in the data path from the load/store unit to the arithmetic logic unit and the register unit.
5. A processor according to claim 1, wherein the set of registers is a set of floating-point registers and the symbolic entity transmitter includes a bit pattern generator operatively arranged to output a Not-a-Number value when an invalid datum is received from the load/store unit.
6. A processor according to claim 5, wherein the arithmetic logic unit is configured to propagate the Not-a-Number value as a Quiet-Not-a-Number value through operations carried out in the arithmetic logic unit.
7. A processor according to claim 6 responsive to a software command code testing a datum for the presence of a Quiet-Not-a-Number value.
8. A processor according to claim 7, responsive to the software command code so as to cause execution of a branch conditional on the result of the testing, whereby an invalid datum can be handled.
9. A processor according to claim 7, responsive to the software command code conditional on the result of the testing so as to cause conversion of the Quiet-Not-a-Number value to a Signaling-Not-a-Number value, whereby subsequent use of the invalid datum will generate a trap.
10. A processor according to claim 1, wherein the set of registers includes integer registers, and the symbolic entity transmitter is operatively arranged to output one of poison and valid bits as a symbolic entity, responsive to the error flag in the load/store unit.
11. A processor according to claim 10 responsive to a software command code testing a datum for the presence of one of poison and valid bits.
12. A processor according to claim 11, responsive to the software command code so as to cause execution of a branch conditional on the result of the testing, whereby an invalid datum can be handled.
13. A processor according to claim 1, wherein the set of registers includes floating-point registers and integer registers, the symbolic entities being Not-a-Number values for floating-point data and one of poison and valid bits for integer data.
14. A processor according to claim 13, wherein the arithmetic logic unit is configured to propagate the Not-a-Number value as a Quiet-Not-a-Number value through operations carried out in the arithmetic logic unit.
15. A processor according to claim 1, wherein the set of registers includes floating-point registers and integer registers, the symbolic entities being one of poison and valid bits both for floating-point data and for integer data.
16. A processor according to claim 1, wherein the arithmetic logic unit and the register unit are interconnected so as to transmit and receive the symbolic entities with respective data passing between the arithmetic logic unit, the register unit and the load/store unit.
17. A processor according to claim 1, wherein, for at least one prespecified type of operation, the arithmetic logic unit is configured to generate the symbolic entity as a result when an operand of the operation is not an invalid datum and has a predefined value.
18. A processor according to claim 1, wherein, for at least one prespecified type of operation, the arithmetic logic unit is configured to generate the symbolic entity as a result when at least two operands of the operation have a predefined combination of values and are not invalid data.
19. A method of operation of a processor comprising an instruction unit, a load/store unit, a register unit comprising a set of registers, and an arithmetic logic unit, the method comprising the steps of:
a) the instruction unit issuing a load request for a datum to an external storage element;
b) the load being carried out, but returning an invalid datum to the load/store unit;
c) the load/store unit setting an error flag for the invalid datum;
d) the load completing by loading a symbolic entity as at least a part of the datum into one of the register unit and the arithmetic logic unit;
e) the arithmetic logic unit carrying out an operation having the datum as an operand such that the symbolic entity associated with the invalid datum is conveyed to a result of the operation; and
f) outputting from the arithmetic logic unit the result with symbolic entity into one of the register unit and the load/store unit.
US10/328,252 1999-02-04 2002-12-23 Handling of load errors in computer processors Abandoned US20030093654A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/328,252 US20030093654A1 (en) 1999-02-04 2002-12-23 Handling of load errors in computer processors

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/243,982 US6519694B2 (en) 1999-02-04 1999-02-04 System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity
US10/328,252 US20030093654A1 (en) 1999-02-04 2002-12-23 Handling of load errors in computer processors

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/243,982 Continuation US6519694B2 (en) 1999-02-04 1999-02-04 System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity

Publications (1)

Publication Number Publication Date
US20030093654A1 true US20030093654A1 (en) 2003-05-15

Family

ID=22920913

Family Applications (2)

Application Number Title Priority Date Filing Date
US09/243,982 Expired - Lifetime US6519694B2 (en) 1999-02-04 1999-02-04 System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity
US10/328,252 Abandoned US20030093654A1 (en) 1999-02-04 2002-12-23 Handling of load errors in computer processors

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/243,982 Expired - Lifetime US6519694B2 (en) 1999-02-04 1999-02-04 System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity

Country Status (3)

Country Link
US (2) US6519694B2 (en)
EP (1) EP1026582A3 (en)
JP (1) JP2000235491A (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010005808A1 (en) * 1999-12-24 2001-06-28 Mitsuhiro Kawai Electronic control having floating-point data check function
US20070130449A1 (en) * 2005-12-02 2007-06-07 Giacomo Curatolo Processing arrangement, memory card device and method for operating and manufacturing a processing arrangement
US20100005279A1 (en) * 2006-11-30 2010-01-07 Hitachi, Ltd. Data processor

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6526485B1 (en) * 1999-08-03 2003-02-25 Sun Microsystems, Inc. Apparatus and method for bad address handling
US6895527B1 (en) * 2000-09-30 2005-05-17 Intel Corporation Error recovery for speculative memory accesses
US6829700B2 (en) * 2000-12-29 2004-12-07 Stmicroelectronics, Inc. Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
US7114059B2 (en) * 2001-11-05 2006-09-26 Intel Corporation System and method to bypass execution of instructions involving unreliable data during speculative execution
US6918030B2 (en) * 2002-01-10 2005-07-12 International Business Machines Corporation Microprocessor for executing speculative load instructions with retry of speculative load instruction without calling any recovery procedures
WO2004059472A2 (en) * 2002-12-24 2004-07-15 Sun Microsystems, Inc. Method and apparatus for generating prefetches
US20060143256A1 (en) * 2004-12-28 2006-06-29 Galin Galchev Cache region concept
US8458684B2 (en) * 2009-08-19 2013-06-04 International Business Machines Corporation Insertion of operation-and-indicate instructions for optimized SIMD code
US20110047358A1 (en) * 2009-08-19 2011-02-24 International Business Machines Corporation In-Data Path Tracking of Floating Point Exceptions and Store-Based Exception Indication
TWI499886B (en) * 2010-07-15 2015-09-11 Univ Nat Taiwan A method of evaluating power of maximum power point of a circuit
US10289412B2 (en) * 2012-02-09 2019-05-14 Qualcomm Incorporated Floating point constant generation instruction
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US9875105B2 (en) 2012-05-03 2018-01-23 Nvidia Corporation Checkpointed buffer for re-entry from runahead
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
JP5937209B2 (en) 2012-07-03 2016-06-22 株式会社日立製作所 Failure effect evaluation system and evaluation method
US9645929B2 (en) 2012-09-14 2017-05-09 Nvidia Corporation Speculative permission acquisition for shared memory
US10001996B2 (en) 2012-10-26 2018-06-19 Nvidia Corporation Selective poisoning of data during runahead
US9740553B2 (en) 2012-11-14 2017-08-22 Nvidia Corporation Managing potentially invalid results during runahead
US9632976B2 (en) 2012-12-07 2017-04-25 Nvidia Corporation Lazy runahead operation for a microprocessor
US9569214B2 (en) 2012-12-27 2017-02-14 Nvidia Corporation Execution pipeline data forwarding
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US9823931B2 (en) 2012-12-28 2017-11-21 Nvidia Corporation Queued instruction re-dispatch after runahead
US9329936B2 (en) 2012-12-31 2016-05-03 Intel Corporation Redundant execution for reliability in a super FMA ALU
KR102028729B1 (en) * 2013-03-11 2019-11-04 삼성전자주식회사 Apparatus and method for non-blocking execution of a static scheduled processor
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9547602B2 (en) 2013-03-14 2017-01-17 Nvidia Corporation Translation lookaside buffer entry systems and methods
US9268527B2 (en) 2013-03-15 2016-02-23 Freescale Semiconductor, Inc. Method and device for generating an exception
US9244653B2 (en) 2013-03-15 2016-01-26 Freescale Semiconductor, Inc. Method and device for handling data values
US9582280B2 (en) 2013-07-18 2017-02-28 Nvidia Corporation Branching to alternate code based on runahead determination
US9213524B2 (en) 2013-09-30 2015-12-15 Freescale Semiconductor, Inc. Method and device for generating floating-point values

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE33629E (en) * 1980-02-13 1991-07-02 Intel Corporation Numeric data processor
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
US5778219A (en) 1990-12-14 1998-07-07 Hewlett-Packard Company Method and system for propagating exception status in data registers and for detecting exceptions from speculative operations with non-speculative operations
US5692169A (en) 1990-12-14 1997-11-25 Hewlett Packard Company Method and system for deferring exceptions generated during speculative execution
US5694574A (en) 1994-01-04 1997-12-02 Intel Corporation Method and apparatus for performing load operations in a computer system
US5471612A (en) * 1994-03-03 1995-11-28 Borland International, Inc. Electronic spreadsheet system and methods for compiling a formula stored in a spreadsheet into native machine code for execution by a floating-point unit upon spreadsheet recalculation
EP0685794A1 (en) * 1994-06-01 1995-12-06 Advanced Micro Devices, Inc. System for generating floating point test vectors
US5685009A (en) * 1994-07-20 1997-11-04 Exponential Technology, Inc. Shared floating-point registers and register port-pairing in a dual-architecture CPU
US5799179A (en) 1995-01-24 1998-08-25 International Business Machines Corporation Handling of exceptions in speculative instructions
US5761103A (en) * 1995-03-08 1998-06-02 Texas Instruments Incorporated Left and right justification of single precision mantissa in a double precision rounding unit
US5748516A (en) * 1995-09-26 1998-05-05 Advanced Micro Devices, Inc. Floating point processing unit with forced arithmetic results
US6044441A (en) * 1995-09-29 2000-03-28 Intel Corporation Method and apparatus for encoding valid and invalid states in a cache with an invalid pattern
US5611063A (en) 1996-02-06 1997-03-11 International Business Machines Corporation Method for executing speculative load instructions in high-performance processors
US5748936A (en) * 1996-05-30 1998-05-05 Hewlett-Packard Company Method and system for supporting speculative execution using a speculative look-aside table
US5771392A (en) * 1996-06-20 1998-06-23 Mathsoft, Inc. Encoding method to enable vectors and matrices to be elements of vectors and matrices
US5884062A (en) * 1996-08-30 1999-03-16 Texas Instruments Incorporated Microprocessor with pipeline status integrity logic for handling multiple stage writeback exceptions
US6009511A (en) * 1997-06-11 1999-12-28 Advanced Micro Devices, Inc. Apparatus and method for tagging floating point operands and results for rapid detection of special floating point numbers
US6128687A (en) * 1997-07-23 2000-10-03 Texas Instrumenets Incorporated Fast fault detection circuitry for a microprocessor
US5881280A (en) * 1997-07-25 1999-03-09 Hewlett-Packard Company Method and system for selecting instructions for re-execution for in-line exception recovery in a speculative execution processor
US5915117A (en) * 1997-10-13 1999-06-22 Institute For The Development Of Emerging Architectures, L.L.C. Computer architecture for the deferral of exceptions on speculative instructions
US5931943A (en) * 1997-10-21 1999-08-03 Advanced Micro Devices, Inc. Floating point NaN comparison
US5948095A (en) 1997-12-31 1999-09-07 Intel Corporation Method and apparatus for prefetching data in a computer system
US6189094B1 (en) * 1998-05-27 2001-02-13 Arm Limited Recirculating register file
US6304963B1 (en) 1998-05-14 2001-10-16 Arm Limited Handling exceptions occuring during processing of vector instructions
US6170001B1 (en) 1998-05-27 2001-01-02 Arm Limited System for transfering format data from format register to memory wherein format data indicating the distribution of single or double precision data type in the register bank
US6138135A (en) * 1998-08-27 2000-10-24 Institute For The Development Of Emerging Architectures, L.L.C. Propagating NaNs during high precision calculations using lesser precision hardware

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010005808A1 (en) * 1999-12-24 2001-06-28 Mitsuhiro Kawai Electronic control having floating-point data check function
US6904543B2 (en) * 1999-12-24 2005-06-07 Denso Corporation Electronic control having floating-point data check function
US20070130449A1 (en) * 2005-12-02 2007-06-07 Giacomo Curatolo Processing arrangement, memory card device and method for operating and manufacturing a processing arrangement
US7502916B2 (en) * 2005-12-02 2009-03-10 Infineon Technologies Flash Gmbh & Co. Kg Processing arrangement, memory card device and method for operating and manufacturing a processing arrangement
US20100005279A1 (en) * 2006-11-30 2010-01-07 Hitachi, Ltd. Data processor
US7962728B2 (en) * 2006-11-30 2011-06-14 Hitachi, Ltd. Data processor

Also Published As

Publication number Publication date
EP1026582A3 (en) 2001-10-04
US6519694B2 (en) 2003-02-11
US20010056530A1 (en) 2001-12-27
EP1026582A2 (en) 2000-08-09
JP2000235491A (en) 2000-08-29

Similar Documents

Publication Publication Date Title
US6519694B2 (en) System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity
US10289469B2 (en) Reliability enhancement utilizing speculative execution systems and methods
US6163764A (en) Emulation of an instruction set on an instruction set architecture transition
US8095825B2 (en) Error correction method with instruction level rollback
US4639886A (en) Arithmetic system having pipeline structure arithmetic means
US7409589B2 (en) Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor
US7457938B2 (en) Staggered execution stack for vector processing
US7603497B2 (en) Method and apparatus to launch write queue read data in a microprocessor recovery unit
US6289445B2 (en) Circuit and method for initiating exception routines using implicit exception checking
US6301655B1 (en) Exception processing in asynchronous processor
JP3813157B2 (en) Multi-pipe dispatch and execution of complex instructions on superscalar processors
US5668984A (en) Variable stage load path and method of operation
US20050108509A1 (en) Error detection method and system for processors that employs lockstepped concurrent threads
US7552313B2 (en) VLIW digital signal processor for achieving improved binary translation
JPH10105402A (en) Processor of pipeline system
US5815420A (en) Microprocessor arithmetic logic unit using multiple number representations
EP0901067A2 (en) Method and system for executing operations on denormalised numbers
Sharangpani Intel® Itanium™ processor microarchitecture overview
JP2006331399A (en) Instruction issue control within superscalar processor
JP2000066894A (en) Pipelined floating point store
US5761469A (en) Method and apparatus for optimizing signed and unsigned load processing in a pipelined processor
US6401195B1 (en) Method and apparatus for replacing data in an operand latch of a pipeline stage in a processor during a stall
US20100199072A1 (en) Register file
US6453412B1 (en) Method and apparatus for reissuing paired MMX instructions singly during exception handling
US5729729A (en) System for fast trap generation by creation of possible trap masks from early trap indicators and selecting one mask using late trap indicators

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION