AU637618B2 – Deferred comparison multiplier checker
– Google Patents
AU637618B2 – Deferred comparison multiplier checker
– Google Patents
Deferred comparison multiplier checker
Download PDF
Info
Publication number
AU637618B2
AU637618B2
AU58895/90A
AU5889590A
AU637618B2
AU 637618 B2
AU637618 B2
AU 637618B2
AU 58895/90 A
AU58895/90 A
AU 58895/90A
AU 5889590 A
AU5889590 A
AU 5889590A
AU 637618 B2
AU637618 B2
AU 637618B2
Authority
AU
Australia
Prior art keywords
arithmetic
result
unit
operands
operand
Prior art date
1989-07-11
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.)
Ceased
Application number
AU58895/90A
Other versions
AU5889590A
(en
Inventor
Robert W. Horst
Robert L. Jardine
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.)
Tandem Computers Inc
Original Assignee
Tandem Computers 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.)
1989-07-11
Filing date
1990-07-11
Publication date
1993-06-03
1990-07-11
Application filed by Tandem Computers Inc
filed
Critical
Tandem Computers Inc
1991-01-17
Publication of AU5889590A
publication
Critical
patent/AU5889590A/en
1993-06-03
Application granted
granted
Critical
1993-06-03
Publication of AU637618B2
publication
Critical
patent/AU637618B2/en
2010-07-11
Anticipated expiration
legal-status
Critical
Status
Ceased
legal-status
Critical
Current
Links
Espacenet
Global Dossier
Discuss
Classifications
G—PHYSICS
G06—COMPUTING; CALCULATING OR COUNTING
G06F—ELECTRIC DIGITAL DATA PROCESSING
G06F11/00—Error detection; Error correction; Monitoring
G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
G06F11/14—Error detection or correction of the data by redundancy in operation
G—PHYSICS
G06—COMPUTING; CALCULATING OR COUNTING
G06F—ELECTRIC DIGITAL DATA PROCESSING
G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
Description
COMMONWEALTH OF AUSTRALIA 6 7 1 PATENTS ACT 1952 Form COMPLETE SPECIFICATION FOR OFFICE USE Short Title: Int. Cl: Application Number: Lodged: Complete Specification-Lodged: Accepted: Lapsed: Published: Priority: Related Art: TO BE COMPLETED BY APPLICANT I I Name of Applicant: Address of Applicant: TANDEM COMPUTERS INCORPORATED 19333 Vallco Parkway, Cupertino, California 95014, United States of America Robert W. HORST and Robert L. JARDINE GRIFFITH HACK CO 71 YORK STREET SYDNEY NSW 2000 Actual Inventor: Address for Service: 0* Complete Specification for the invention entitled: DEFERRED COMPARISON MULTIPLIER CHECKER The following statement is a full description of this invention, including the best method of performing it known to us:- 16223-CI COS/SMcL 1784A/SMcL 1A 10577-209/T18 DEFERRED COMPARISON MULTIPLIER CHECKER BACKGROUND OF THE INVEV”TION The present invention relates generally to data processing equipment, and more particularly to a method, and apparatus for implementing that method, of checking the result of each multiplier operation.
As today’s data processing equipment finds its way into more critical uses, the need to check the integrity of various of the operations performed by the data processing equipment, including its computational operations, becomes important. Balancing this importance is a need to keep cost and circuit count low. Thus, there often is a conflict between the necessity of reliable error detection and expense.
A variety of error detection routines are available for the more simplistic arithmetic operations such o as, for example, addition, subtraction, and shifting.
o. However, for the more complicated arithmetic operations, such as multiplication implemented by special purpose circuitry, the error detection methods can become complex, necessitating large amounts of circuitry.
One approach to error detection of multiplication is found in an article by Janak H. Patel and Leona Y. Fung, entitled “Concurrent Error Detection in Multiply and Divide Arrays,” IEEE Transactions on Computers, Vol. C-32, No. 4, April, 1983 (pps. 417-422). This article describes an error detection technique in which, after the initial multiplication operation, one of the operands is shifted, and a redundant multiplication operation performed. The 0 result of the initial multiplication operation is thus checked by comparing it with the result of the redundant multiplication operation. However, the technique leaves much to be desired: First, although the technique taught involves some data alteration before performing the 2 redundant multiplication operation, it is believed that the particular alteration taught (shifting one operand) is not as complete as could be. In addition, the technique withholds use of the result of the initial multiplication operation until the check is complete. This withholding is costly in terms of CPU time for each multiplication operation.
Accordingly, it is apparent that error detection for multiplication operations can be improved.
SUMMARY OF THE INVENTION According to the present invention there is provided a data processing system, including a processor unit of the type having an instruction unit operable to execute a Se plurality of instTuctions, and an autonomous arithmetic unit operable to receive multi-bit operands to perform Searithmetic operations substantially in parallel with operation of the instruction unit and produce therefrom a result, a method of checking the result comprising the steps of: providing at least first and second operands to the arithmetic unit; the arithmetic unit performing a first arithmetic S. operation on the first and second operands to obtain therefrom a first arithmetic result; temporarily retaining the first arithmetic result and, at the same time, making the first arithmetic result available to the processor unit; providing again the first and second operands in swapped order so that the first operand takes the place of the second operand as a third operand, and the second operand takes the place of the first operand as a fourth operand; the arithmetic unit performing a second arithmetic operation on the third and fourth operands to obtain therefrom a second arithmetic result; holding the second arithmetic result until a next Simmediately successive arithmetic operation is requested SI M S:16223CI 3 while permitting use of the first arithmetic result by the instruction unit; when the next immediately successive arithmetic operation is requested, comparing the first and second arithmetic results to one another for equality; and issuing an error signal in the event the comparing step does not result in equality.
Preferably the method includes the steps of: in response to appearance of the error signal, the arithmetic unit performing again the second arithmetic operation on the third and fourth operands to obtain therefrom another second arithmetic result; •again comparing the first and another second arithmetic results to one another for equality; .15 halting operation of the processor in the event the again comparing step does not result in equality.
Preferably the method includes the step of shifting the third operand one bit position before the second arithmetic operation is performed; and the comparing step 20 is immediately preceded by the step of shifting the second S.arithmetic result to compensate for the shifting of the third operand.
0 OV., Preferably the step of shifting the third operand performs the shift in a manner that effects an arithmetic multiply operation.
Preferably the step of shifting the second arithmetic result is a one-bit position shift.
As a result the multiplication operations are checked later in time than heretofore known in the prior art.
Embodiments of the invention enjoy a number of advantages. First, by deferring the error checking, the initial result of the multiplier operation can be used immediately, so that each multiplier operation need not wait for the check to be performed. The error checking routine is performed in parallel with a subsequent multiplier operation, thereby saving time, and circuitry.
Further, the redundant multiply operation forms a z ,r result for the deferred check using permutated operands; S: 16223CI 4 the other), and one is shifted left multiplied) one bit position. This performs a more complete check of the multiplier unit to ensure that a fault will produce different multiplication results. Swapping only may not detect certain faults internal to the multiplier unit, and shifting only can fail to detect faulty stuck HIGH or LOW) input pins of the multiplier unit. Swapping the operands and shifting one of them left one bit position advantageously achieves a more complete multiplication check.
In a further aspect the invention provides a data processing system of the type including at least one processor unit, the processor unit including a state machine-controlled multiplier unit for performing multiplication operation, a method of checking multiplication operations, comprising the steps of: i: the multiplication unit performing a multiplication :operation upon first and second operands to produce a first e result that is immediately available to the processor unit :20o for use; initiating a multiplication operation upon the first and second operands to produce a second result; holding the second result until another multiplication S operation is requested, or the first result is to be used outside the processor unit, whichever occurs first; comparing the first and second results; and halting the processor unit if the comparing step indicates the first result may not be correct.
😮 In a further aspect the invention provides a method of detecting errors in arithmetic operations performed by an autonomous arithmetic unit that forms a part of a controlling processor unit, the method comprising the steps of: performing a first arithmetic operation to produce a first result that is then substantially immediately available to the processor unit for use; performing a second arithmetic operation to produce a second result that can be used to check the operation of S: 16223CI the arithmetic unit in a check operation incorporating the first result; &I holding the second result until the first result is to leave the processor unit; then, before the first result is permitted to leave the processor unit, checking the arithmetic unit, using the first and second results; and issuing an error signal in response to the checking step indicating that the first and second results do not compare.
These, and other advantages and features of the present invention, will become evident to those skilled in the art upon a reading of the following detailed description of a preferred embodiment of the invention, which should be taken in conjunction with the accompanying drawings.
DESCRIPTION OF THE DRAWINGS Fig. 1 is a simplified block diagram schematic of a processor unit implementing the present invention; Fig. 2 is a state diagram of the state machine that controls the multiplier of the processor shown in Fig. 1; and Fig. 3 is a flow chart illustrating the steps taken in i multiplier operation, including the error checking routine.
DETAILED DESCRIPTION S…:Referring first to Fig. 1 there is illustrated a processor unit, designated generally with the reference numeral 10, shown as including an instruction unit 12, a •t o *memory unit 14, a control unit 16, and a data unit 18.
Data communication between the various units 12-18 of the processor 10 is established, in part, by an Bus 20, a multibit data/address bus of conventional fashion.
The instruction unit 12 is also of conventional design, and functions to sequentially access instructions from the memory unit 14, decode them, and communicate an S:16223CI initial microcode address for the sequencer 24 via signals 19.
The memory unit 14 holds both data and the instructions, and includes random access memory (RAM). Its architecture is also conventional and, therefore, is not discussed in further detail here. Synchronous operation of the elements instruction unit 12) is accomplished with a periodic clock signal (CLK) generated by a clock circuit 22.
The control unit 16 is designed to include various control circuitry (not shown); including a sequencer 24.
Sequencer 24 is responsible for generating the various control signals that operate the processor 10. Although, for reasons of clarity, sequencer 24 is shown here as a single unit, those skilled in this art will readily recognize that sequencer 24 is the microcode engine of the processor; and that it will include a control store from which microcode instructions sequentially issue to form, with other qualifying signals (not shown) the control signals that guide, direct, and control operation of the 0 *0e processor 10. The signaling on signal lines 19-determine which of various microcode sequences will issue, which in turn, depends upon the instructions decoded by the instruction unit 12. The control unit (CU) 16 additionally includes the circuitry for performing multiply operations as well as assisting in divide operations (by multiplying a reciprocal of a divisor by a dividend). As further illustrated in Fig. 1, the control unit 16 includes X and Y registers 26, 28 which each receive data from the Bus 20 via signal lines 30. Data is loaded in the X, Y registers 26, 28 in response to appropriate load commands (not shown) that issue from the sequencer 24.
The data content of the X and Y registers are applied to respective operand inputs of a multiplier array 32, the output of which is coupled to a multiplier (MPX) 34.
The multiplier array is formed from combinatorial logic of conventional design, such as that manufactured and -7distributed by Cypress Semiconductor, Inc., 3901 North First Street, San Jose, California 95134, and sold under the Part No. CY7C517.
The output of the multiplier array 32, is passed to a control unit (CU) bus register 36 by the MPX 34, where it is made available via the Bus 20 to the processor Control of the MPX 34 and bus register 36 are effected by a multiplier state machine 40. The multiplier state machine is of conventional design, and its operation will be discussed further with respect to the state diagram shown in Fig. 2.
In addition to the multiplier unit itself, the control unit 16 includes other circuitry (not shown) used for various control and data processing purposes. However, only the multiplier circuitry is shown for reasons of clarity, and also because this other circuitry is not germane to the present invention. The CU output register 36, however, is used for the entire control unit 16, and, therefore, the necessity of multiplexing these various other units (identified as “OTHER” in Fig. 1) with the output of the multiplier array 32 by the MPX 34.
Continuing with Fig. 1, the data unit 18 is shown as including a register file 50, constructed from a plurality of register circuits in conventional fashion, and forming a high-speed, temporary storage for, among other things, the operands used in the multiplier operation. As Fig. 1 indicates, the register file 50 has two sections: One section is a number of software visible registers that, in the implementation of the present invention, forms a last-in-first-out (LIFO) stack of conventional design, although it should be evident to those skilled in this art that other storage arrangements can be used. A second portion forms a number of “scratch” registers, used for high-speed, temporary storage. The actual implementation of the register file 50 is as a multi-ported (both input and output) device. However, Fig. 1 illustrates the register file 50 in simplistic form, showing the data paths.
The outputs of the register file 50 are coupled to J and K registers 54, 55, via multiplexers 56 and 57, respectively, and through these registers to an arithmetic logic unit (ALU) 58. The output of the ALU 58 is coupled back to the input of the register file 50 by a multiplexer 52.
The ALU is also of conventional design, capable of performing such various logic functions as exclusive-ORing, shifting left or right, or merely passing the data unaltered, in addition to the usual add and subtract operations.
Additional storage is provided by the data unit 18 in the form of a scratch path (SPAD) memory 64, that receives data directly from a multiplexer 60 which selects between the outputs of the J and K registers 54, 55. The output of the SPAD 64 is, in turn, coupled to an input of S* each of the multiplexers 56, 57. Thus, data accessed from oo’ the SPAD 64 is communicated to the register file 50 via one or the other of the multiplexer-register combinations 56/54 or 57/55, the ALU 58 and multiplexer 52; conversely, data from the SPAD may be communicated to the Bus 20 via the multiplexer-register combinations 56/54, 57/55, and multiplexer 60. Data may be transferred from the register file 50 to the SPAD 64 by this latter data path.
Data path widths are as shown in Fig. 1. Thus, for example, the Bus 20 will carry 32 bits of parallel data, as will the signal lines 30 (control unit 16), and the lines of the data unit 18 from the multiplexer 60 to the Bus and the SPAD 64, or the signal lines that communicate the Bus 20 to the multiplexer 52.
Generally, operation of the processor 10 proceeds as follows: Instructions are sequentially accessed from the memory unit 14 by the instruction unit 12, decoded, and resulting in issuance of various control signals (not shown) as indicated above. Thus, depending upon the instruction type, control signals (not shown) will be generated to select the source of the operands for the ALU 58 of the data unit 18 (e.g the regist’er file 50 or the SPAD 64), or, for that matter, the source of the X and Y registers 26, 28 the register file 50, the SPAD 64, or either of ‘the J, K registers 54, 55). As can be seen, there is a large amount of flexibility in what source is available for multiplier operands.
Although execution of a multiply instruction will be discussed in connection with the deferred comparison checking that is performed, it will be advantageous to describe its basic operation here. The execution of a multiplier instruction will cause the instruction unit 12 to issue appropriate control signals (not shown) that will effect transfer of the multiply operands from the register file 50 (more specifically, the LIFO stack 50a) to the X and Y registers 26, 28. The (16-bit) operands have been previously loaded so that they are at the top of the LIFO ::stack 50a. They are “popped” from ‘Ghe LIFO stack and respectively loaded in the J and K registers 54, 55, and transferred from there, in parallel (as a 32-bit piece of 0.t data) to the (16-bit) X and Y registers 26, 28 via the Bus and signal lines Essentially simultaneous with the loading of the X and Y registers, a control signal (not shown) initiates operation of the multiplier state machine, which then takes over control of the multiply operation to load the result ultimately produced by the multi..iier array 32 in the CU *output register 36. Under control of signals from the instruction unit 12, the result is transferred from the CU output register 36 to a one of the scratch registers 50b of the register file 50 (c&ata unit 1A) via the Bus 50 and the multiplexer 52.
At about the time the operands are transferred from the J and K registers 54, 56 to the X and Y registers 26, 28, they are also being transferred to certain ones of the scratch registers 50b. The content of the J-register 54 is altered, however, during this transfer: It is communicated through the ALU 58 in a manner that causes the |o operand to be shifted one bit left, in effect doubling the operand; the content of the K-register 55 is stored in a scratch reaister unaltered. The operands will be returned to the J and K registers 54, 56, for communication to the X and Y registers (for execution of a redundant multiply operation) in a manner that causes what was previously set in the J-register 54 to be set in the K-register 55, and vice versa, the operands are swapped.
When the initial multiply operation is complete, the content of the CU output register 36, the result of the initial multiply operation, is transferred to a scratch register 50b. Ultimately it will be pushed onto the top of the LIFO stack 50a, where it is made available to the processor 10. At the same time, the contents of the J and K registers the swapped and altered operands) are transferred to the X and Y registers, initiating the redundant multiply operation, and the instruction unit 12 proceeds to other tasks. The result of the redundant multiply operation ultimately is placed in the CU output b register 36, where is resides until a data check is performed by comparing the original or initial result (which has been stored in the SPAD 64, shifted left one bit to compensate for the alteration of one of the operands) with the redundant result. That check is performed upon the first to occur of two actions: When a subsequent multiply 1 (or divide) operation is initiated, or when the initial result of the multipl’, operation is to leave the processor for other destinations. Most times it will be the former io* activity, and the check (as will be discussed further below) is performed in parallel with the initiation of the subsequent multiply operation. In this manner, by deferring the check and then performing it in parallel with another (multiply) operation, the time penalty is minimized, as is the circuitry necessarily needed to make the comparison.
The comparison itself is performed by transferring the redundant result from the CU output register 36 to one or the other of the J or K registers 54, 56, transferring the (shifted) initial result from the SPAD 64 to the other of the J or K registers, and logically exclusive-ORing them via the ALU 58. A ZERO detect circuit receives the output of the ALU 58 to check the result of the comparison, issuing an ERROR signal in the event the comparison indicates a faulty operation. The ERROR signal is communicated to the instruction unit 12 for handling in a manner that will be discussed more fully below.
Turning now to Fig. 2, there is illustrated the state diagram of the multiplier state machine 40, from which those skilled in the art will see indicates that the design of the multiplier state machine 40 itself is of a relatively simple design.
As indicated in Fig. 2, the multiplier state machine resides first in an IDLE state. After the X and Y registers are loaded (preferably simultaneous therewith), the multiplier state machine 40 is caused to move from the “e IDLE state to a DRIVE_1 state, during which the content of the X and Y registers 26, 28 are applied to the multiplier w.
array 32.
From the DRIVE_1 state, the multiplier state machine 40 moves to a DRIVE_2 state, during which a SEL signal is issued by the state machine 40 to cause the multiplier 34 to select the multiplier array 32 for communication to the CU output register 36. At approximately the same time, the multiplier state machine will issue a load (LD) signal that causes the output of the multiplier array 32 to be loaded in the CU output register 36. Thereafter, the multiplier state machine 40 will return from the DRIVE_2 state to the IDLE state, where it will remain until the next multiply instruction.
Having now described the circuitry used to implement the present invention, and briefly discussing a multiply operation, the deferred comparison multiplier check can now be described in greater detail with respect to Fig.
3. For that discussion, assume that a previous multiplier operation had been performed, resulting in an initial Ii r, 4i multiplier result and a redundant result. The initial multiplier result is stored in the SPAD 64 (Fig. 1) of the data unit 18 shifted one bit. The redundant multiplier result is presumed to be presently contained in the control unit output register 36.
As Fig. 3 indicates, at step 80, the operands for the present multiply operLtion are transferred to the X and Y registers, and the multiply operation started. At the same tiu e, one of the operands is communicated to a scratch register file 50b via the ALU 58, so that it is doubled shifted left one bit); and the other operand is also stored in a scratch register 50b, unaltered.
At step 82, while the present multiply operation is in progress, the result of the previous multiply operation is checked as follows: The redundant multiplier result is transferred from the CU output register 36 to a scratch register 50b of the register file 50, and from there to one of the J or K registers 54, 56 of the data unit 18.
At the same time, the (shifted) initial result is transferred from the SPAD 64 to the other of the J or K registers 54, 56. Then, at step 84, the contents of the two registers are exclusive-ORed with one another by the ALU 58, and the result monitored by the zero detect circuit effecting the compare operation. If no error is detected, the output of the ALU 58 will be Pll ZEROs, and the ERROR eve* signal is not asserted by the zero detect circuit. If an error is detected, another series of steps are taken to ensure that the error is a multiplication error, as will be described more fully below.
Assuming the compare step 84 detects no error, step 86 is proceeded to in which the operands of the present multiplication are moved from their scratch registers 50b to the SPAD 64 via the J and K registers 54, 55. In step the result of the present multiply operation is moved from the CU output register 36 (where it has been loaded by the multiply operation) and stored in one of the scratch register files 50b. At the same time, the operands for the -io I I redundant multiply operation of the present multiply operation are transferred to ‘he J and K registers, and from there to the X and Y registers to start a redundant multiply.
In step 90, the present multiply result is passed through the ALU 58 to double it shift left one bit position) and stored back in a scratch register file In step 92, the doubled result is moved to the SPAD 64, and the present (unaltered) result is moved to the top of the register stack (TOS) of the LIFO 50a, where it is available for the processor 10. That completes the steps of the multiplier operation.
As indlcated above, the CU output register 36 is available for use by other circuitry, delineated OTHER in Fig. 1 coupled to one of the inputs of the multiplexer 34.
Thus, there is occasion when the data from such OTHER -o circuitry is loaded in the CU output register before a check of a multiplier result can be made, destroying the content the redundant result that sits in the CU output *o register 36 until the compare step 84 step can be made).
Thus, step 84 will cause the zero detect circuit 70 to produce an error, and the step 84 most likely will be followed by a series of steps, under control of the instruction unit, to ensure that the redundant result is compared to the shifted initial result.
Digressing for a moment, there is, as those skilled in this art will recognize, a chance that in the circumstance described above, the CU output register 36 will be loaded with data by such OTHER circuitry which, coincidentally, may have a bit configuration identical to the initial (but possibly incorrect) multiplier result. In ~this case the multiply operation will go unchecked.
0 However, as the skilled artisan will also readily recognize, 0 the chance of this occurrence, coupled with the chance )f multiplier error, is so small as to be infinitesimal and an acceptable risk.
Thus, at step 100, the result of the present multiply is moved from the CU output register 36 and stored in a scratch register file 50b. Next, in step 102, the operands for the redundant multiply operation are moved from the scratch register file 50b to the X and Y registers 26, 28, to start the redundant multiply operation. The processor 10 waits until completion in order to ensure that the CU output register 36 will contain the redundant result.
In step 104, the initial (doubled) result is moved from the SPAD 64 to one of the J, K registers 54, 55, while the redundant result is moved from the CU output register 36 to the other of the J, K, registers. and exclusive-ORed with one another via the ALU 58, as described above. This time, if the zero detect circuit determines an error, and the method of the present invention is used in a multi-processor (fault-tolerant) system, the processor 10 can preferably be halted, and a back-up processor (not shown) would take over the work of processor 10. Other procedures may well be taken in a single processor (or non-fault tolerant) system.
02 If no error is detected, the procedure moves back to step 86 and progresses through steps 88, 90, 94 as described above.
word about certain of the features of the invention: First, as has been seen, the multiplier operation is checked by creating a redundant result from swapped operand, one of which is shifted left multiplied). A multiplication (shift left) of the one operand is preferred over a divide (shift right) to preserve the integrity of the shifted operand bits are not lost shifting left, and any overflow can be handled specially).
Second, although the check is performed when a subsequent multiply instruction is executed, as noted above, S there is another instance that will cause a check to be initiated. Since the initial result of the multiply operation is immediately available to the processor for use, and a subsequent check indicates that the result may be erroneous, it is relatively easy to back-up and make 1 ‘9 1 II i appropriate adjustments as long as the use of the [il (unchecked) initial result remains within the confines of Ill the processor 10. This back-up capability may be lost however, if the unchecked initial result is allowed to propagate beyond the processor 10. Thus, it is preferred that if the unchecked initial result is to be sent beyond the processor 10 to secondary storage, another processor, or the like) before a subsequent multiply instruction causes initiation of a check, a multiplier check is initiated before the initial result is allowed to leave the processor. This is what is done. The steps of Fig. 3 are performed, as described above, except that no current multiply is performed; only the check is made.
Finally, there are various other methods of handling detection of an error in step 104 (Fig. 3) than halting operation of the processor 10, many depending upon the environment within which the present invention is used.
For example, as known to those skilled in this art, more than one process can be running on the processor 10. Thus, it could happen that a current process has initiated a multiply operation, but before that multiply operation is checked by a check initiated by a subsequent multiply or an operation that will send the initial result beyond the confines of the processor 10) the current process is momentarily swapped in favor of another process (or see° processes). In such an instance, it would be preferable to 00010 initiate a multiplier check before the process swap takes place.
oThus, the deferred multiplier checking method of the present invention is applicable to a wide variety of computing systems, even single processor systems. And, while a full and complete disclosure of the invention has 00: ~been disclosed, it will be evident to those skilled in this art that modifications can be made without departing from its essence. For example, while permutation of the operands used in the redundant multiply operation involves swapping, and shifting one operand, other techniques are available.
One such other technique may involve complementing one of the operands used in the redundant multiply operation, or shifting one operand left while the other operand is shifted right (if loss of resolution is not a problem). Thus, those skilled in the art will readily recognize that one may use a variety of combinations of the operand permutations heretofore discussed, swapping complementation and/or shifting (right or left).
9 .0b42 7I
Claims (9)
1. In a data processing system, including a processor unit of the type having an instruction unit operable to execute a plurality of instructions, and an autonomous arithmetic unit operable to receive multi-bit operands to perform arithmetic operations substantially in parallel with operation of the instruction unit and produce therefrom a result, a method of checking the result comprising the steps of: providing at least first and second operands to the arithmetic unit: the arithmetic unit performing a first arithmetic operation on the first and second operands to obtain *e therefrom a first arithmetic result; temporarily retaining the first arithmetic result and, at the same time, making the first arithmetic result SS available to the processor unit; providing again the first and second operands in swapped order so that the first operand takes the place of the second operand as a third operand, and the second S’ S operand takes the place of the first operand as a fourth operand; fob. the arithmetic unit performing a second arithmetic operation on the third and fourth operands to obtain therefrom a second arithmetic result; holding the. second arithmetic result until a next immediately successive arithmetic operation is requested while permitting use of the first arithmetic result by the instruction unit; when the next immediately successive arithmetic operation is requested, comparing the first and second arithmetic results to one another for equality; and issuing an error signal in the event the comparing step does not result in equality.
2. The data processing system of claim 1, including the steps of: in response to appearance of the error signal, the arithmetic unit performing again the second arithmetic S:16223CI 18 operation on the third and fourth operands to obtain therefrom another second arithmetic result; again comparing the first and another second arithmetic results to one another for equality; halting operation of the processor in the event the again comparing step does not result in equality.
3. The data processing system of claim 1, including the step of shifting the third operand one bit position before the second arithmetic operation is performed; and the comparing step is immediately preceded by the step of shifting the second arithmetic result to compensate for the shifting of the third operand.
4. The data processing system of claim 3, wherein the step of shifting the third operand performs the shift in a manner that effects an arithmetic multiply operation.
The data processing system of claim 4, wherein the step of shifting the second arithmetic result is a one-bit position shift.
6. The data processing system of claim 1, includinc e• the step of halting operation of the processor unit upon So”” issuance of the error signal. So:. a
7. In a data processing system of the type including at least one processor unit, the processor unit including a state machine-controlled multiplier unit for performing multiplication operation, a method of checking multiplication operations, comprising the steps of: the multiplication unit performing a multiplication operation upon first and second operands to produce a first result that is immediately available to the processor unit 0. for use; initiating a multiplication operation upon the first and second operands to produce a second result; holding the second result until another multiplication operation is requested, or the first result is to be used outside the processor unit, whichever occurs first; comparing the first and second results; and halting the processor unit if the comparing step indicates the first result may not be correct. S:16223CI 19
8. A method of detecting errors in arithmetic operations performed by an autonomous arithmetic unit that forms a part of a controlling processor unit, the method comprising the steps of: performing a first arithmetic operation to produce a first result that is then substantially immediately available to the processor unit for use; performing a second arithmetic operation to produce a second result that can be used to check the operation of the arithmetic unit in a check operation incorporating the first result; holding the second result until the first result is to leave the processor unit; then, before the first result is permitted to leave the processor unit, checking the arithmetic unit, using the first and second results; and issuing an error signal in response to the checking step indicating that the first and second results do not S compare.
9. A method of checking the results of arithmetic 9* operations prepared by a date processing system So”: substantially as herein described with reference to the accompanying drawings. 9o DATED this 13th day of January 1993 25 TANDEM COMPUTERS INCORPORATED By their Patent Attorneys GRIFFITH HACK CO. S:16223CI
AU58895/90A
1989-07-11
1990-07-11
Deferred comparison multiplier checker
Ceased
AU637618B2
(en)
Applications Claiming Priority (2)
Application Number
Priority Date
Filing Date
Title
US07/377,982
US5016208A
(en)
1989-07-11
1989-07-11
Deferred comparison multiplier checker
US377982
1999-08-20
Publications (2)
Publication Number
Publication Date
AU5889590A
AU5889590A
(en)
1991-01-17
AU637618B2
true
AU637618B2
(en)
1993-06-03
Family
ID=23491251
Family Applications (1)
Application Number
Title
Priority Date
Filing Date
AU58895/90A
Ceased
AU637618B2
(en)
1989-07-11
1990-07-11
Deferred comparison multiplier checker
Country Status (5)
Country
Link
US
(1)
US5016208A
(en)
EP
(1)
EP0408226B1
(en)
JP
(1)
JPH0776915B2
(en)
AU
(1)
AU637618B2
(en)
DE
(1)
DE69022144T2
(en)
Families Citing this family (4)
* Cited by examiner, † Cited by third party
Publication number
Priority date
Publication date
Assignee
Title
US5253349A
(en)
*
1991-01-30
1993-10-12
International Business Machines Corporation
Decreasing processing time for type 1 dyadic instructions
CN1086814C
(en)
*
1998-04-10
2002-06-26
英业达股份有限公司
Method for processing computer having continuously checking function
JP2003523682A
(en)
2000-02-17
2003-08-05
アナログ デバイス インコーポレーテッド
Method, apparatus, and product for use in generating CRC and other remainder-based codes
US9606803B2
(en)
*
2013-07-15
2017-03-28
Texas Instruments Incorporated
Highly integrated scalable, flexible DSP megamodule architecture
Family Cites Families (7)
* Cited by examiner, † Cited by third party
Publication number
Priority date
Publication date
Assignee
Title
US3660646A
(en)
*
1970-09-22
1972-05-02
Ibm
Checking by pseudoduplication
GB1419272A
(en)
*
1971-12-29
1975-12-31
Sharp Kk
Electrinoc desk calculator with verification function
JPS513825A
(en)
*
1974-06-29
1976-01-13
Tokyo Shibaura Electric Co
Enzankairono dosachetsukuhoshiki
US4314350A
(en)
*
1979-12-31
1982-02-02
Bell Telephone Laboratories, Incorporated
Self-checking arithmetic unit
JPS57212539A
(en)
*
1981-06-24
1982-12-27
Nec Corp
Arithmetic device
JPS5936853A
(en)
*
1982-08-24
1984-02-29
Nec Corp
Operation processor
JPS6019239A
(en)
*
1983-07-14
1985-01-31
Nec Corp
Error checking system of multiple generating circuit
1989
1989-07-11
US
US07/377,982
patent/US5016208A/en
not_active
Expired – Lifetime
1990
1990-07-02
DE
DE69022144T
patent/DE69022144T2/en
not_active
Expired – Fee Related
1990-07-02
EP
EP90307200A
patent/EP0408226B1/en
not_active
Expired – Lifetime
1990-07-10
JP
JP2182552A
patent/JPH0776915B2/en
not_active
Expired – Lifetime
1990-07-11
AU
AU58895/90A
patent/AU637618B2/en
not_active
Ceased
Also Published As
Publication number
Publication date
EP0408226A2
(en)
1991-01-16
US5016208A
(en)
1991-05-14
JPH0776915B2
(en)
1995-08-16
EP0408226B1
(en)
1995-09-06
AU5889590A
(en)
1991-01-17
JPH03129523A
(en)
1991-06-03
EP0408226A3
(en)
1991-12-04
DE69022144D1
(en)
1995-10-12
DE69022144T2
(en)
1996-03-14
Similar Documents
Publication
Publication Date
Title
US5222240A
(en)
1993-06-22
Method and apparatus for delaying writing back the results of instructions to a processor
US5051896A
(en)
1991-09-24
Apparatus and method for nullifying delayed slot instructions in a pipelined computer system
EP0111776B1
(en)
1989-07-19
Interrupt processor
US5193158A
(en)
1993-03-09
Method and apparatus for exception handling in pipeline processors having mismatched instruction pipeline depths
JP2597811B2
(en)
1997-04-09
Data processing system
US4999802A
(en)
1991-03-12
Floating point arithmetic two cycle data flow
US5339266A
(en)
1994-08-16
Parallel method and apparatus for detecting and completing floating point operations involving special operands
US5363495A
(en)
1994-11-08
Data processing system with multiple execution units capable of executing instructions out of sequence
US5070451A
(en)
1991-12-03
Forth specific language microprocessor
US5596733A
(en)
1997-01-21
System for exception recovery using a conditional substitution instruction which inserts a replacement result in the destination of the excepting instruction
US4541045A
(en)
1985-09-10
Microprocessor architecture employing efficient operand and instruction addressing
US20050108509A1
(en)
2005-05-19
Error detection method and system for processors that employs lockstepped concurrent threads
EP0644481A1
(en)
1995-03-22
Back-up logic for dual execution unit processor
AU637618B2
(en)
1993-06-03
Deferred comparison multiplier checker
JP2000066894A
(en)
2000-03-03
Pipelined floating point store
JPH0833842B2
(en)
1996-03-29
Logical operation device
US6055628A
(en)
2000-04-25
Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
US4631672A
(en)
1986-12-23
Arithmetic control apparatus for a pipeline processing system
Pflanz et al.
2001
Online check and recovery techniques for dependable embedded processors
US6263424B1
(en)
2001-07-17
Execution of data dependent arithmetic instructions in multi-pipeline processors
CA2019064C
(en)
1999-05-11
Deferred comparison multiplier checker
EP0212132A1
(en)
1987-03-04
Method and digital computer for recovering from errors
JPS58149542A
(en)
1983-09-05
Data processing device
JP2824484B2
(en)
1998-11-11
Pipeline processing computer
US5729729A
(en)
1998-03-17
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
2000-02-10
MK14
Patent ceased section 143(a) (annual fees not paid) or expired