GB2343970A - Arithmetic operations in a data processing system - Google Patents
Arithmetic operations in a data processing system Download PDFInfo
- Publication number
- GB2343970A GB2343970A GB9825543A GB9825543A GB2343970A GB 2343970 A GB2343970 A GB 2343970A GB 9825543 A GB9825543 A GB 9825543A GB 9825543 A GB9825543 A GB 9825543A GB 2343970 A GB2343970 A GB 2343970A
- Authority
- GB
- United Kingdom
- Prior art keywords
- word
- bit
- data
- data processing
- generate
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49921—Saturation, i.e. clipping the result to a minimum or maximum value
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49936—Normalisation mentioned as feature only
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Abstract
A data processing system is provided for supporting saturating arithmetic using input operands of the Q31 and Q15 type. In order to accommodate this type of operation applied to multiply accumulate or multiply subtract instructions, additional instructions QDADD, QDSUB and QDRSB are provided. QDADD provides the function of double/saturate/add/saturate. QDSUB and QDRSB provide respective operand orderings of double/saturate/subtract/saturate operations. Providing these special purpose instructions within the instruction set allows the required saturation and adjustments to be provided for Q31 and Q15 operands whilst not imposing additional delays and complication onto the main data paths required for the rest of the processing operations.
Description
ARITHMETIC OPERATIONS IN A DATA PROCESSING SYSTEM
This invention relates to data processing systems. More particularly, this invention relates to data processing systems for performing arithmetic operations suitable for performing saturated arithmetic operations..
Many DSP algorithms use what is sometimes known as Q15 arithmetic and Q31 arithmetic. A Q15 number is an ordinary 16-bit 2's complement integer, but is regarded as representing that integer divided by 215. Since a 16-bit 2's complement integer can represent numbers from-215 to + 2l5-1, a Q15 can represent numbers from-1 to + (1-2 15).
Similarly, a Q31 number is an ordinary 32-bit 2's complement integer, regarded as being divided by 231, and is able to represent numbers from-1 to + (1-2-31). (N + 1)-bit QN numbers can be defined analogously for any other value of N.
An important feature of Q15 and Q31 arithmetic is that they are"saturating". If the mathematical arithmetic result of an operation exceeds the maximum positive value (+1- 2-N), then the saturated result is the maximum positive value; similarly, if the mathematical result is less than-1, then the saturated result is-1. For example, in Q15 arithmetic, if A=Ox8000 (representing-1) and B=OxCOOO (representing-0.5), then adding
A and B will produce a result of 0x8000 (representing-1) rather than the normal 16-bit 2's complement result of 0x4000.
A highly desirable and commonly occurring operation in DSP algorithms is a"multiply- accumulate", i. e. a multiplication of two operands followed by the additional of a third operand:
Result = (A*B) +C
Significant problems arise when wishing to provide such multiply-accumulate instructions for saturated (sometimes known as clipped) arithmetic. This is particularly the case when performing arithmetic on QN numbers.
In order to accommodate the various different types of instruction in both saturated and non-saturated form, a considerable amount of opcode bit space is required. Furthermore, when seeking to provide single cycle multiply performance, the additional burden of having to cope with the requirements for saturation and associated adjustments is such that the clock speed is undesirably limited by the worst-case saturated multiply instruction.
Viewed from one aspect the present invention provides data processing apparatus comprising:
an instruction decoder responsive to data processing instruction words to generate processing control signals ; and
processing logic controlled by said processing control signals to perform data processing operations upon data operand words ; wherein
said instruction decoder is responsive to a first instruction word to generate control signals to control said processing logic to perform a data processing operation upon a first N-bit data operand word P and a second N-bit data operand word Q to generate a result N-bit data word R as given by:
R = Sat (Fun (P) + Q), where
Sat (X) is a function returning a saturated value of X ; and
Fun (X) is a function operative for at least those values of X that may be generated by an
N/2-bit by N/2-bit signed multiplication to return a value obtained by shifting X by a shift amount to generate a shifted word and saturating said shifted word.
The invention recognises that the provision of a special purpose instruction suitable for dealing with the requirements of a saturated multiply-accumulate operation has significant advantages. More particularly, the timing requirements for the standard desired single cycle multiply are eased with the adjustments required to deal with the saturated nature of the arithmetic being more readily accommodated in the cycles used by the subsequent instruction which performs the accumulate operation. The new instruction is also able to replace the need to define saturating versions of several multiply instructions thereby reducing the opcode bit space and other overhead required to support saturating arithmetic. Finally, the new instruction may be implemented with little additional hardware over that which may be already provided within the system to deal with other aspects of unsaturated and saturated arithmetic.
It will be appreciated that the hardware used to implement the new instruction could take many different forms. The different operations necessary to produce the final result N-bit data word could be grouped in various different ways and performed by different circuit blocks. These various different alternatives that produce the result N-bit data word with the same final value as given above using a single instruction are all embodiments of the invention.
In an analogous manner to the above described instruction for use in saturated multiplyaccumulate operations, similar instructions may also be provided to support saturated multiply-decrement operations.
The shift amount applied by the instructions of the invention may have various different values. However, a shift amount being such that the shifted word is double the first N-bit data operand word P is particularly useful.
If an integer multiply is performed on two Q 15 numbers, then the normally generated result is a 32-bit"Q30-like"number, for which the ordinary 32-bit signed 2's complement value is regarded as being divided by 2 ; and thus representing numbers from-2 to + (2-2-30). A Q30-like number may also be considered to be a signed 32-bit fixed point number with 30 binary places. However, what is required for further processing in such circumstances is a Q31 number. In order to deal with this problem, the instruction of the invention may be executed following a standard integer multiply and the shift amount used to double the result of the integer multiply to change it from
Q30-like form to Q31 form prior to it being saturated and subject to an accumulate or decrement. Thus, one of the problematic adjustments needed for saturated arithmetic support may be provided with the adjustment to the result of the integer multiply being accommodated within the subsequent instruction rather than having to be provided by the end of the multiply cycle.
Logic circuits for performing saturation can take many different forms. However, in preferred embodiments of the invention saturating said shifted word comprises detecting predetermined characteristics of said first N-bit data operand word P and, if detected, replacing said shifted value with a respective end point value of a range of permitted values.
This feature recognises that in some circumstances saturation can be provided by detecting characteristics of the first N-bit data operand word P as the manipulation to be performed upon it is of a relatively restricted form and so the circumstances that can give rise to an overflow or an underflow requiring saturation may be specifically detected resulting in an overall decrease in hardware requirements.
In particular, when the shift amount being applied doubles the first N-bit data operand word P, then the need for saturation can be detected in an advantageously simply way by comparing the two most significant bits of the first N-bit data operand word P.
Compared to the relatively restricted range of circumstances that can give rise to an overflow or an underflow for the Fun (X) instruction, overflow or underflow for the
Sat (X) function can occur more generally and so preferred embodiments of the invention are such that Sat (X) comprises detecting if X lies outside of a range of permitted values and, if detected, replacing X with a respective end point value of said range of permitted values to generate said N-bit result data word R.
Whilst the new instructions of the present invention are advantageous in their own right, they are, as mentioned above, particularly well suited to embodiments in which a multiplier is provided for executing a second instruction word that generates the first Nbit operand data word by multiplying a third N/2-bit data operand word A and a fourth
N/2-bit data operand word B.
It is possible to use the instructions of the invention for operands of any sort. However, the instruction is particularly useful in embodiments in which said first N-bit operand data word P, said second N-bit operand data word Q and said result N-bit data word R are signed fixed point data words with the point immediately to the right of the most significant bit position such that-1 P < +1,-1 s Q < +1 and-1 R < +1 and Sat (X) is to the range-1 s X < +1.
As previously discussed, such QN-type operands require adjustments and saturations that may be efficiently provided by the instructions of the invention without undue impact upon the rest of the data processing system.
The most commonly useful values of the first N-bit data operand word P are those that can be produced by an N/2-bit by N/2-bit sign multiplication. However, preferred embodiments of the invention can expand the functionality of Fun (X) such that it is operative to shift and saturate all N-bit possible values of X.
The invention can be used in systems in which N has various different values. However,
DSP operations of the type for which the invention is particularly useful typically require values of N such as N=32.
Whilst it will be appreciated that the invention may be implemented as a system comprising discrete components, it is strongly preferred that the data processing apparatus is implemented as an integrated circuit.
Viewed from another aspect the present invention provides a method of processing data, said method comprising the steps of : in response to data processing instruction words, generating processing control signals; and
performing data processing operations upon data operand words under control of said processing control signals; wherein
in response to a first instruction word, generating control signals to control said processing logic to perform a data processing operation upon a first N-bit data operand word P and a second N-bit data operand word Q to generate a result N-bit data word R as given by:
R = Sat (Fun (P) + Q), where
Sat (X) is a function returning a saturated value of X ; and
Fun (X) is a function operative for at least those values of X that may be generated by an
N/2-bit by N/2-bit signed multiplication to return a value obtained by shifting X by a shift amount to generate a shifted word and saturating said shifted word.
Complementary method aspects of the invention are also provided in which the instruction performs a subtract rather than add operation.
An embodiment of the invention will now be described, by way of example only, with reference to the accompanying drawings in which:
Figure 1 illustrates the instruction decoder and processing logic within an integrated circuit ; and
Figures 2,3 and 4 are flow diagrams illustrating the operation of instructions provided to support saturated arithmetic.
Figure 1 shows a portion of an integrated circuit 2 (similar to part of an ARM9TDMI microprocessor as produced by ARM Limited of Cambridge, Great Britain) comprising an instruction decoder 4 and processing logic 6. The processing logic 6 is composed of many different separate functional elements. A register bank 8 stores data operand words (P, Q) to be manipulated. These words may be read from the register bank 8 and supplied via multiplexers 10,12,14 to various other processing units within the processing logic 6.
An integer multiplier 16 is provided for performing signed integer multiplication amongst other functions. An adder 18 is provided for performing unsaturated multiply-accumulate operations, and for converting the multiplier result from carry-save to 2's complement format. A shifter 20 and an arithmetic logic unit 22 are also provided. The above mentioned basic components of the processing logic 6 are generally known. Control signals 24 from the instruction decoder 4 are applied to the various elements within the processing logic 6 to control and co-ordinate their operation. More particularly, when an instruction is decoded by the instruction decoder, control signals 24 are output to switch the various multiplexers within the processing logic 6 to select the desired data path and to activate and configure the various processing units within the processing logic 6 to perform the operation specified by the decoded instruction. For clarity, the signal lines joining the individual components to the instruction decoder are omitted from the diagram.
In order to support additional instructions for saturated arithmetic (QDADD, QDSUB and
QDRSB), a shifting and saturating unit 26 is provided upstream of the arithmetic logic unit 22 and a full saturating unit 28 is provided on a feedback path to the register bank 8, in the next pipeline stage after the one in which the arithmetic logic unit 22 operates. In operation, the shifting and saturating unit 26 first checks to determine whether the most significant two bits of the 32-bit data word input to it are unequal. If this condition is detected, then a left shift by one bit will result in an overflow or an underflow when that input data word represents a Q30-like word that is to be converted to a Q31 word by the left shift. If the two most significant bits are"01", then the shifting and saturating unit 26 outputs Ox7FFFFFFF representing the maximum end point of the range of permitted values. Similarly, if the two most significant bits are"10", then the shifting and saturating unit 26 outputs 0x80000000 representing the minimum end point of the permitted range of values. If neither of these conditions is detected, then the shifting and saturating unit 26 left shifts the input binary data value by 1 bit position corresponding to a doubling of its value and accordingly transforms a Q30-like representation obtained by an integer multiply of a Q15 by Q15 number into a Q31 representation as required for further processing (e. g. an accumulate) and saturation.
The shifting and saturating unit 26 is provided with a bypass route such that it can be switched out of operation in response to an appropriate control signal 24 from the instruction decoder 4 when the particular instruction being decoded does not require this operation. The shifting and saturating unit 26 is positioned on the A bus and this bus normally has fewer timing constraints than the B bus since the B bus includes the shifter 20. Accordingly, the shifting and saturating unit 26 does not cause any significant additional timing problems.
A full saturating unit 28 is provided upon the return path for use after the arithmetic logic unit 22 has performed the required addition or subtraction. The full saturating unit 28 can operate in accordance with known principles to detect an overflow or an underflow of the signed result produced by the arithmetic logic unit 22 and correct it to the appropriate maximum or minimum end point value of the range of permitted values. Like the shifting and saturating unit 26, the full saturating unit 28 is provided with a bypass route such that it can be switched out of operation in response to an appropriate control signal 24 when this saturation is not required. Because the full saturating unit 28 is in a pipeline stage which normally does nothing for addition and subtraction instructions, this does not add any timing problems. It does however require that the processor should interlock for one cycle if the result of a saturating instruction is used by the immediately following instruction. This interlock can be handled in a manner analogous to the interlocks generated on many microprocessors if the value loaded by a load instruction is used by the immediately following instruction.
In overall operation, in order to perform a Q15 by Q15 multiply together with a Q31 accumulate operation, the processing proceeds as follows. Initially the Q15 values from the register bank 8 are read out upon bus A and bus B and fed as inputs to the single cycle integer multiplier 16. The result, which is in Q30-like form, is fed back to the register bank 8. On a subsequent processing cycle one of the new instructions is executed (e. g. a
QDADD instruction) to read out the Q30-like result of the multiply on the A bus and the
Q31 accumulate value on the B bus. The Q30-like value is then left shifted by one or saturated by the shifting and saturating unit 26 and supplied as one input to the arithmetic logic unit 22. The Q31 value on the B bus is supplied as the other input to the arithmetic logic unit 22 by using appropriate control signals 24 to cause the shifter 20 not to shift its input value. The shifting and saturating unit 26 has corrected the Q30-like value into the required saturated Q31 value and this is added to the Q31 value on the B bus by the arithmetic logic unit 22. The output from the arithmetic logic unit 22 is then supplied to the full saturating unit 28 where it is subject to a Q31 saturation by detecting overflow and underflow flags and other standard conditions from the arithmetic logic unit 22 prior to being stored back into the register bank 8. Instead of the arithmetic logic unit 22 performing an addition, it may be controlled by appropriate control signals 24 to subtract the A bus value from the B bus value in a QDRSB instruction or subtract the B bus value from the A bus value in a QDSUB instruction. The configuration of the arithmetic logic unit to perform subtractions in response to appropriate control signals 24 from the instruction decoder may be implemented in various standard ways.
It will be seen from the above that the operations performed by the QDADD, QDSUB and QDRSB instructions have been divided in different ways between the various functional units within the processing logic. Those skilled in the art will recognise that the division of these operations between the various units could take place in many different ways whilst still producing the same end result.
Figure 2 is a flow diagram illustrating the processing steps performed in a QDADD instruction. In step 40 a test is made as to whether the most significant two bits of the first 32-bit operand data word are equal to"01". If this is the case, then a left shift by 1 will result in an overflow and accordingly step 42 is used to set the value to the maximum permitted positive value (+1-231). Similarly, step 44 checks to see if the two most significant bits are"10"indicating that a left shift will result in an underflow. In this case, if detected, step 46 sets the value to the minimum permitted value of-1.
If neither an overflow nor an underflow condition is detected, then step 48 left shifts the first 32-bit operand data word by one bit position thereby converting it from Q30-like form to Q31 form if that is what the number is representing. The operation of steps 40 to 48 corresponds to the functions provided by the shifting and saturating unit 26 and the
Fun (X) function described earlier.
At step 50 an addition is performed. This addition corresponds to the addition performed by the arithmetic logic unit 22 in Figure 1.
Steps 52 and 54 detect and deal with an overflow in a saturated value resulting from the additional step 50. Similarly, steps 56 and 58 deal with an underflow. If neither an overflow or an underflow is detected, then no correction is applied. The result R of the
QDADD instruction is stored back into a register within the register bank 8 at step 60.
The operation performed by the steps 52 to 58 corresponds to that provided by the full saturating unit 28 in Figure 1 and the Sat (X) function discussed above.
Figure 3 illustrates a similar flow diagram but in this case for a QDSUB instruction. In this instruction, the step 50 of Figure 2 is replaced by a step 62 in which the second 32-bit operand data word Q is subtracted from the shifted and saturated first operand data word
P.
Figure 4 is similar to Figure 3 but in this case the order of the subtraction that takes place in step 62 of Figure 3 has been reversed in step 64 of Figure 4.
Claims (17)
- CLAIMS 1. Data processing apparatus comprising: an instruction decoder responsive to data processing instruction words to generate processing control signals; and processing logic controlled by said processing control signals to perform data processing operations upon data operand words; wherein said instruction decoder is responsive to a first instruction word to generate control signals to control said processing logic to perform a data processing operation upon a first N-bit data operand word P and a second N-bit data operand word Q to generate a result N-bit data word R as given by: R = Sat (Fun (P) + Q), where Sat (X) is a function returning a saturated value of X ; and Fun (X) is a function operative for at least those values of X that may be generated by an N/2-bit by N/2-bit signed multiplication to return a value obtained by shifting X by a shift amount to generate a shifted word and saturating said shifted word.
- 2. Data processing apparatus comprising: an instruction decoder responsive to data processing instruction words to generate processing control signals ; and processing logic controlled by said processing control signals to perform data processing operations upon data operand words; wherein said instruction decoder is responsive to a first instruction word to generate control signals to control said processing logic to perform a data processing operation upon a first N-bit data operand word P and a second N-bit data operand word Q to generate a result N-bit data word R as given by: R = Sat (Fun (P)-Q), where Sat (X) is a function returning a saturated value of X ; and Fun (X) is a function operative for at least those values of X that may be generated by an N/2-bit by N/2-bit signed multiplication to return a value obtained by shifting X by a shift amount to generate a shifted word and saturating said shifted word.
- 3. Data processing apparatus comprising: an instruction decoder responsive to data processing instruction words to generate processing control signals; and processing logic controlled by said processing control signals to perform data processing operations upon data operand words; wherein said instruction decoder is responsive to a first instruction word to generate control signals to control said processing logic to perform a data processing operation upon a first N-bit data operand word P and a second N-bit data operand word Q to generate a result N-bit data word R as given by: R = Sat (Q-Fun (P)), where Sat (X) is a function returning a saturated value of X ; and Fun (X) is a function operative for at least those values of X that may be generated by an N/2-bit by N/2-bit signed multiplication to return a value obtained by shifting X by a : amount to generate a shifted word and saturating said shifted word.
- 4. Data processing apparatus as claimed in any one of claims 1, 2 and 3, wherein said shift amount is such that said shifted word is double said first N-bit data operand word P.
- 5. Data processing apparatus as claimed in any one of the preceding claims, wherein saturating said shifted word comprises detecting predetermined characteristics of said first N-bit data operand word P and, if detected, replacing said shifted value with a respective end point value of a range of permitted values.
- 6. Data processing apparatus as claimed in claims 4 and 5, wherein said first N-bit data operand word is a signed value and said predetermined characteristic is non-equality of the two most significant bits of said first N-bit data operand word P.
- 7. Data processing apparatus as claimed in any one of the preceding claims, wherein Sat (X) comprises detecting if X lies outside of a range of permitted values and, if detected, replacing X with a respective end point value of said range of permitted values to generate said N-bit result data word R.
- 8. Data processing apparatus as claimed in any one of the preceding claims, wherein said processing logic includes a multiplier and said first N-bit operand data word P is a multiply result generated by a signed multiply of a third N/2-bit data operand word A and a fourth N/2-bit data operand word B in response to a second instruction word.
- 9. Data processing apparatus as claimed in any one of the preceding claims, wherein said first N-bit operand data word P, said second N-bit operand data word Q and said result N-bit data word R are signed fixed point data words with the point immediately to the right of the most significant bit position such that-1 S P < +1,-1 S Q < +1 and-1 S R < +1 and Sat (X) is to the range-1 S X < +1.
- 10. Data processing apparatus as claimed in any one of the preceding claims, wherein Fun (X) is a function operative for all N-bit values of X to return a value obtained by shifting X by a shift amount to generate a shifted word and saturating said shifted word.
- 11. Data processing apparatus as claimed in any one of the preceding claims, wherein N = 32.
- 12. Data processing apparatus as claimed in any one of the preceding claims, wherein said data processing apparatus comprises an integrated circuit.
- 13. A method of processing data, said method comprising the steps of : in response to data processing instruction words, generating processing control signals; and performing data processing operations upon data operand words under control of said processing control signals; wherein in response to a first instruction word, generating control signals to control said processing logic to perform a data processing operation upon a first N-bit data operand word P and a second N-bit data operand word Q to generate a result N-bit data word R as given by: R = Sat (Fun (P) + Q), where Sat (X) is a function returning a saturated value of X ; and Fun (X) is a function operative for at least those values of X that may be generated by an N/2-bit by N/2-bit signed multiplication to return a value obtained by shifting X by a shift amount to generate a shifted word and saturating said shifted word.
- 14. A method of processing data, said method comprising the steps of : in response to data processing instruction words, generating processing control signals; and performing data processing operations upon data operand words under control of said processing control signals; wherein in response to a first instruction word, generating control signals to control said processing logic to perform a data processing operation upon a first N-bit data operand word P and a second N-bit data operand word Q to generate a result N-bit data word R as given by: R = Sat (Fun (P)-Q), where Sat (X) is a function returning a saturated value of X ; and Fun (X) is a function operative for at least those values of X that may be generated by an N/2-bit by N/2-bit signed multiplication to return a value obtained by shifting X by a shift amount to generate a shifted word and saturating said shifted word.
- 15. A method of processing data, said method comprising the steps of : in response to data processing instruction words, generating processing control signals ; and performing data processing operations upon data operand words under control of said processing control signals; wherein in response to a first instruction word, generating control signals to control said processing logic to perform a data processing operation upon a first N-bit data operand word P and a second N-bit data operand word Q to generate a result N-bit data word R as given by: R = Sat (Q-Fun (P)), where Sat (X) is a function returning a saturated value of X ; and Fun (X) is a function operative for at least those values of X that may be generated by an N/2-bit by N/2-bit signed multiplication to return a value obtained by shifting X by a shift amount to generate a shifted word and saturating said shifted word.
- 16. Data processing apparatus substantially as hereinbefore described with reference to the accompanying drawings.
- 17. A method of data processing substantially as hereinbefore described with reference to the accompanying drawings.
Priority Applications (12)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB9825543A GB2343970A (en) | 1998-11-20 | 1998-11-20 | Arithmetic operations in a data processing system |
US09/196,213 US6314443B1 (en) | 1998-11-20 | 1998-11-20 | Double/saturate/add/saturate and double/saturate/subtract/saturate operations in a data processing system |
TW087119512A TW428142B (en) | 1998-11-20 | 1998-11-24 | Arithmetic operations in a data processing system |
RU2001116716/09A RU2225638C2 (en) | 1998-11-20 | 1999-05-26 | Arithmetic operations in data processing system |
KR1020017006111A KR100623604B1 (en) | 1998-11-20 | 1999-05-26 | Data processing apparatus and data processing method thereof |
EP99923761A EP1137980B1 (en) | 1998-11-20 | 1999-05-26 | Arithmetic operations in a data processing system |
DE69902814T DE69902814T2 (en) | 1998-11-20 | 1999-05-26 | ARITHMETIC OPERATIONS IN A DATA PROCESSING SYSTEM |
CN99813521.6A CN1218240C (en) | 1998-11-20 | 1999-05-26 | Arithmetic operations in data processing system |
JP2000584375A JP4177962B2 (en) | 1998-11-20 | 1999-05-26 | Numerical operations in data processing systems. |
IL14198299A IL141982A (en) | 1998-11-20 | 1999-05-26 | Arithmetic operations in a data processing system |
PCT/GB1999/001653 WO2000031621A1 (en) | 1998-11-20 | 1999-05-26 | Arithmetic operations in a data processing system |
MYPI99002498A MY114856A (en) | 1998-11-20 | 1999-06-17 | Double/saturate/add/saturate and double/saturate/substract/saturate operations in a data processing system |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB9825543A GB2343970A (en) | 1998-11-20 | 1998-11-20 | Arithmetic operations in a data processing system |
US09/196,213 US6314443B1 (en) | 1998-11-20 | 1998-11-20 | Double/saturate/add/saturate and double/saturate/subtract/saturate operations in a data processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
GB9825543D0 GB9825543D0 (en) | 1999-01-13 |
GB2343970A true GB2343970A (en) | 2000-05-24 |
Family
ID=26314704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
GB9825543A Withdrawn GB2343970A (en) | 1998-11-20 | 1998-11-20 | Arithmetic operations in a data processing system |
Country Status (6)
Country | Link |
---|---|
US (1) | US6314443B1 (en) |
EP (1) | EP1137980B1 (en) |
CN (1) | CN1218240C (en) |
GB (1) | GB2343970A (en) |
TW (1) | TW428142B (en) |
WO (1) | WO2000031621A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1484717A2 (en) * | 2003-06-05 | 2004-12-08 | General Electric Company | Enhancement of radiographic images |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6581086B1 (en) * | 1999-10-25 | 2003-06-17 | Motorola, Inc. | Multiply and accumulate unit (MAC) and method therefor |
US20040098439A1 (en) * | 2000-02-22 | 2004-05-20 | Bass Stephen L. | Apparatus and method for sharing overflow/underflow compare hardware in a floating-point multiply-accumulate (FMAC) or floating-point adder (FADD) unit |
US6633895B1 (en) * | 2000-02-22 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | Apparatus and method for sharing overflow/underflow compare hardware in a floating-point multiply-accumulate (FMAC) or floating-point adder (FADD) unit |
US20030229773A1 (en) * | 2002-05-28 | 2003-12-11 | Droplet Technology, Inc. | Pile processing system and method for parallel processors |
US7295689B2 (en) * | 2003-07-09 | 2007-11-13 | General Electric Company | System and method for real-time processing and display of digital medical images |
US7853653B2 (en) * | 2004-11-03 | 2010-12-14 | Aspect Software, Inc. | Method of tracking e-mail handling by a remote agent of an automatic contact distributor |
US8209366B2 (en) * | 2005-02-28 | 2012-06-26 | Hitachi Global Storage Technologies Netherlands B.V. | Method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations |
US20060224653A1 (en) * | 2005-04-01 | 2006-10-05 | Kimming So | Method and system for dynamic session control of digital signal processing operations |
US7406589B2 (en) * | 2005-05-12 | 2008-07-29 | International Business Machines Corporation | Processor having efficient function estimate instructions |
US7689640B2 (en) * | 2005-06-06 | 2010-03-30 | Atmel Corporation | Method and apparatus for formatting numbers in microprocessors |
US9747074B2 (en) | 2014-02-25 | 2017-08-29 | Kabushiki Kaisha Toshiba | Division circuit and microprocessor |
CN112181354B (en) * | 2020-10-12 | 2021-08-10 | 上海芯旺微电子技术有限公司 | Method for synchronous shift saturation processing and application thereof |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0766169A1 (en) * | 1995-09-29 | 1997-04-02 | Matsushita Electric Industrial Co., Ltd. | Processor and control method for performing proper saturation operation |
WO1997023822A1 (en) * | 1995-12-21 | 1997-07-03 | Intel Corporation | A system for providing the absolute difference of unsigned values |
WO1997031308A1 (en) * | 1996-02-23 | 1997-08-28 | Intel Corporation | Method and apparatus for performing saturation instructions |
US5687289A (en) * | 1994-12-16 | 1997-11-11 | Motorola, Inc. | Circuit and method for determining membership in a set during a fuzzy logic operation |
EP0845741A2 (en) * | 1996-11-29 | 1998-06-03 | Matsushita Electric Industrial Co., Ltd. | Processor which can favorably execute a rounding process |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5652910A (en) | 1989-05-04 | 1997-07-29 | Texas Instruments Incorporated | Devices and systems with conditional instructions |
US6108772A (en) * | 1996-06-28 | 2000-08-22 | Intel Corporation | Method and apparatus for supporting multiple floating point processing models |
GB2317465B (en) | 1996-09-23 | 2000-11-15 | Advanced Risc Mach Ltd | Data processing apparatus registers. |
US6078940A (en) * | 1997-01-24 | 2000-06-20 | Texas Instruments Incorporated | Microprocessor with an instruction for multiply and left shift with saturate |
-
1998
- 1998-11-20 GB GB9825543A patent/GB2343970A/en not_active Withdrawn
- 1998-11-20 US US09/196,213 patent/US6314443B1/en not_active Expired - Lifetime
- 1998-11-24 TW TW087119512A patent/TW428142B/en not_active IP Right Cessation
-
1999
- 1999-05-26 WO PCT/GB1999/001653 patent/WO2000031621A1/en active IP Right Grant
- 1999-05-26 CN CN99813521.6A patent/CN1218240C/en not_active Expired - Lifetime
- 1999-05-26 EP EP99923761A patent/EP1137980B1/en not_active Expired - Lifetime
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5687289A (en) * | 1994-12-16 | 1997-11-11 | Motorola, Inc. | Circuit and method for determining membership in a set during a fuzzy logic operation |
EP0766169A1 (en) * | 1995-09-29 | 1997-04-02 | Matsushita Electric Industrial Co., Ltd. | Processor and control method for performing proper saturation operation |
WO1997023822A1 (en) * | 1995-12-21 | 1997-07-03 | Intel Corporation | A system for providing the absolute difference of unsigned values |
WO1997031308A1 (en) * | 1996-02-23 | 1997-08-28 | Intel Corporation | Method and apparatus for performing saturation instructions |
EP0845741A2 (en) * | 1996-11-29 | 1998-06-03 | Matsushita Electric Industrial Co., Ltd. | Processor which can favorably execute a rounding process |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1484717A2 (en) * | 2003-06-05 | 2004-12-08 | General Electric Company | Enhancement of radiographic images |
EP1484717A3 (en) * | 2003-06-05 | 2012-11-07 | General Electric Company | Enhancement of radiographic images |
Also Published As
Publication number | Publication date |
---|---|
CN1218240C (en) | 2005-09-07 |
CN1326565A (en) | 2001-12-12 |
EP1137980A1 (en) | 2001-10-04 |
GB9825543D0 (en) | 1999-01-13 |
TW428142B (en) | 2001-04-01 |
US6314443B1 (en) | 2001-11-06 |
EP1137980B1 (en) | 2002-09-04 |
WO2000031621A1 (en) | 2000-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7236995B2 (en) | Data processing apparatus and method for converting a number between fixed-point and floating-point representations | |
US6115729A (en) | Floating point multiply-accumulate unit | |
EP1137980B1 (en) | Arithmetic operations in a data processing system | |
JPH1195981A (en) | Multiplication circuit | |
US5303174A (en) | Floating pointing arithmetic operation system | |
US5111421A (en) | System for performing addition and subtraction of signed magnitude floating point binary numbers | |
JP5640081B2 (en) | Integer and multiply-add operations with saturation | |
US6006316A (en) | Performing SIMD shift and arithmetic operation in non-SIMD architecture by operation on packed data of sub-operands and carry over-correction | |
KR960002061A (en) | Arithmetic Device for Floating Point | |
US6167420A (en) | Multiplication method and multiplication circuit | |
US4878191A (en) | Multiplication circuit capable of operating at a high speed with a small amount of hardware | |
US6014683A (en) | Arithmetic operation system for arithmetically operating a first operand having an actual point and a second operand having no actual point | |
JPH07234778A (en) | Arithmetic circuit | |
JP2511527B2 (en) | Floating point arithmetic unit | |
US5528525A (en) | Processor for determining shift counts based on input data | |
IL141982A (en) | Arithmetic operations in a data processing system | |
JP3252954B2 (en) | Multiplication method and multiplication circuit | |
JP4159565B2 (en) | Vector product-sum operation circuit | |
JPH10149277A (en) | Multiplication device | |
JP2903529B2 (en) | Vector operation method | |
JPH04260122A (en) | Addition/subtraction high speed digit matching circuit | |
GB2296803A (en) | Apparatus for arithmetically operating floating-points | |
JPH04160533A (en) | Microprocessor | |
JPH0414173A (en) | Fixed point product sum computing element | |
JPH0667849A (en) | Arithmetic circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WAP | Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1) |