US20060195497A1 - Method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations - Google Patents

Method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations Download PDF

Info

Publication number
US20060195497A1
US20060195497A1 US11/068,206 US6820605A US2006195497A1 US 20060195497 A1 US20060195497 A1 US 20060195497A1 US 6820605 A US6820605 A US 6820605A US 2006195497 A1 US2006195497 A1 US 2006195497A1
Authority
US
United States
Prior art keywords
saturation
memory location
shifter
data
output
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.)
Granted
Application number
US11/068,206
Other versions
US8209366B2 (en
Inventor
Jeffrey Dobbek
Kirk Hwang
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.)
Western Digital Technologies Inc
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to US11/068,206 priority Critical patent/US8209366B2/en
Assigned to HITACHI GLOBAL STORAGE TECHNOLOGIES NETHERLANDS B.V. reassignment HITACHI GLOBAL STORAGE TECHNOLOGIES NETHERLANDS B.V. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DOBBEK, JEFFREY J., HWANG, KIRK
Priority to EP06000180A priority patent/EP1696314A1/en
Priority to CNB2006100549550A priority patent/CN100495316C/en
Publication of US20060195497A1 publication Critical patent/US20060195497A1/en
Publication of US8209366B2 publication Critical patent/US8209366B2/en
Application granted granted Critical
Assigned to HGST Netherlands B.V. reassignment HGST Netherlands B.V. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: HITACHI GLOBAL STORAGE TECHNOLOGIES NETHERLANDS B.V.
Assigned to WESTERN DIGITAL TECHNOLOGIES, INC. reassignment WESTERN DIGITAL TECHNOLOGIES, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HGST Netherlands B.V.
Assigned to JPMORGAN CHASE BANK, N.A., AS AGENT reassignment JPMORGAN CHASE BANK, N.A., AS AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: WESTERN DIGITAL TECHNOLOGIES, INC.
Assigned to WESTERN DIGITAL TECHNOLOGIES, INC. reassignment WESTERN DIGITAL TECHNOLOGIES, INC. RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Assignors: JPMORGAN CHASE BANK, N.A.
Assigned to JPMORGAN CHASE BANK, N.A. reassignment JPMORGAN CHASE BANK, N.A. PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Assignors: WESTERN DIGITAL TECHNOLOGIES, INC.
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • G11B2220/25Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
    • G11B2220/2508Magnetic discs
    • G11B2220/2516Hard disks

Definitions

  • This invention relates in general to digital signal processing, and more particularly to a method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations.
  • the central processing unit includes circuitry to receive and decode instructions and circuitry to process data in accordance with the decoded instructions.
  • the circuitry to process the data typically includes an arithmetic logic unit (ALU).
  • ALU arithmetic logic unit
  • the arithmetic logic unit performs arithmetic functions such as add, subtract, multiply, divide, shift data, etc. and performs logic functions such as AND, OR, NAND, NOR, exclusive OR, etc. More specifically, the ALU consists of two kinds of operations: arithmetic operation such as addition/subtraction and logical operation.
  • Addition and subtraction are straightforward and unexceptional.
  • the result may be an n+1-bit binary due to the carry-out.
  • data is typically represented as fixed-width number.
  • the sum of 0110 and 1110 will be 0100 in a 4-bit processor and an overflow is used to point out the result is erroneous.
  • Subtraction behaves similar. The same problem occurs in two's complement number system, under different condition. In the twos complement representation, negative numbers are represented as the result of a subtraction of the magnitude of the number from zero.
  • a negative 2 is represented as the result of 0000 minus 0010, which is 1110 (the borrow, or carry, produced by the subtraction is ignored).
  • the twos complement representation has the advantageous characteristic that additions and subtractions of twos complement numbers can be effected without regard for whether the numbers being added or subtracted are positive or negative.
  • the overflow occurs when adding two positive numbers and the sum is negative, or vice versa.
  • adding or subtracting two 32-bit numbers can yield a result that needs 33-bits to be fully expressed.
  • the lack of a 33rd bit means that the overflow occurs and the sign bit is being set with the value of the result instead of the proper sign of the result.
  • the arithmetic logic unit includes an arithmetic shifter.
  • An arithmetic shifter is used to store a bit-vector of some specified length. It has two control signals: shift-left and shift-right. When shift-left is asserted, the bits in the vector are shifted one bit to the left, with a 0 shifted into the rightmost bit. When shift-right is asserted, the bits in the vector are shifted one bit to the right, with a copy of the most significant bit shifted into the leftmost bit.
  • An arithmetic shifter is typically implemented using a shift register.
  • a shift register is a group of registers set up in a linear fashion that have their inputs and outputs connected together in such a way that the data is shifted down the line when the circuit is activated. Shifting a word right or left (which is equivalent to multiplying or dividing by a power of 2) is used in multiplication and division and also to align data on byte or word boundaries.
  • Arithmetic overflow is the condition that occurs when a calculation produces a result that is greater than a given register or storage location can store or represent.
  • a digital processor may use a self-saturating number representation in which any arithmetic operation which generates an overflow will automatically set the output to a value having the proper sign and a magnitude equal to the maximum value which can be represented by the digital data word.
  • ALU saturation logic may be used to prevent a result from overflowing by keeping the result at a maximum (or minimum) value. Thus, when arithmetic operations produce values too large or too small for registers, the largest or smallest value that can be represented is substituted instead. More specifically:
  • the present invention discloses a method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations.
  • a saturation detection circuit is provided with an arithmetic shifter and a final decision multiplexor that receives the output from the arithmetic shifter and the saturated value from a saturation circuit.
  • the term multiplexor is intended to include any type of device, e.g., switch, logic device, programming code, etc., that connects one signal selected from several inputs to a single output.
  • the final decision multiplexor selects the saturate minimum or the saturate maximum depending on whether the MSB of the data in equals one or zero, respectively.
  • An arithmetic shifter with saturation detection in accordance with the principles of the present invention includes an arithmetic shifter for receiving input data and a shift amount indication, a saturation detector, coupled to the arithmetic shifter, for detecting when saturation occurs and generating a saturation signal in response, a saturation value generator for generating a saturation value and an output selector for selecting whether to provide as an output shifter the output data or the saturation value in response to the saturation signal.
  • a processor unit in another embodiment, includes memory for storing data and instructions therein and a processor for performing arithmetic shift operations, the processor being configured to receive input data and a shift amount indication, the processor further being configured for detecting when saturation occurs, generating a saturation value for output when saturation occurs and for providing as an output either the input data shifted by the shift amount or, in response to saturation being detected, the saturation value.
  • a storage control device in another embodiment, includes a storage controller for processing read and write signals and a processor unit, coupled to the storage controller, the processor unit performing operations in support of storage operations, wherein the processor unit is configured to receive a shift instruction from the storage controller, the shift instruction allowing input data to be shifted N bits in a single cycle, the processor further being configured for detecting when saturation results from the shift operation, generating a saturation value for output when saturation occurs and for providing as an output either the input data shifted by N bits or, in response to saturation being detected, the saturation value.
  • a data storage system in another embodiment, includes a translatable recording medium for storing data thereon, a motor for translating the recording medium, a transducer disposed proximate to the recording medium for reading and writing data on the recording medium, an actuator, coupled to the transducer, for moving the transducer relative to the recording medium and a storage control device for controlling operations of the data storage system, the storage control device further including a storage controller for processing read and write signals and a processor unit, coupled to the storage controller, the processor unit performing operations in support of storage operations, wherein the processor unit is configured to receive a shift instruction from the storage controller, the shift instruction allowing input data to be shifted N bits in a single cycle, the processor further being configured for detecting when saturation results from the shift operation, generating a saturation value for output when saturation occurs and for providing as an output either the input data shifted by N bits or, in response to saturation being detected, the saturation value.
  • an arithmetic shifter with saturation detection includes means for receiving input data and a shift amount indication, means, coupled to the means for receiving input data and a shift amount indication, for detecting when saturation occurs and generating a saturation signal in response, means for generating a saturation value and means for selecting to provide as an output shifter output data or the saturation value in response to the saturation signal.
  • a processor unit in another embodiment, includes means for storing data and instructions therein and means for performing arithmetic shift operations, receiving input data and a shift amount indication, detecting when saturation occurs, generating a saturation value for output when saturation occurs and providing as an output either the input data shifted by the shift amount or, in response to saturation being detected, the saturation value.
  • FIG. 1 illustrates an arithmetic shifter and saturation detection circuit according to an embodiment of the present invention
  • FIG. 2 illustrates a block diagram of a digital signal processing circuit for implementing an arithmetic shifter and saturation detection circuit according to an embodiment of the present invention
  • FIG. 3 is a flow chart of the method for providing a shift process with saturation for digital signal processor operations according to an embodiment of the present invention.
  • FIG. 4 shows a schematic block diagram showing a hard disk storage system according to one embodiment of the present invention.
  • the present invention provides a method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations.
  • a single instruction is generated for shifting an operand to either maximum or the minimum value depending on the bit of data input when saturation occurs.
  • a saturation detection circuit is provided with an arithmetic shifter and a final decision multiplexor that receives the output from the arithmetic shifter and the saturated value from a saturation circuit. When saturation is detected, the final decision multiplexor selects the saturate minimum or the saturate maximum depending on whether the MSB of the data in equals one or zero, respectively.
  • FIG. 1 illustrates an arithmetic shifter and saturation detection circuit 100 according to an embodiment of the present invention.
  • data 110 and shift amount 112 values are provided to an arithmetic shifter 120 .
  • the arithmetic shifter 120 provides an output to maximum shifter 122 and to minimum 124 shifter.
  • An underflow 130 and overflow 132 detection circuit are coupled to the maximum shifter 122 and to the minimum shifter 124 respectively.
  • the arithmetic shifter 120 shifts data thru maximum shifter 122 and minimum shifter 124 , the bits leaving the arithmetic shifter 120 are filling the maximum shifter 122 and the minimum shifter 124 .
  • the arithmetic shift amount 112 is “n”
  • the arithmetic shifter 120 can perform from 0 to (2n-1) bit left shifts in a cycle.
  • a saturation decision multiplexor 140 receives input from the underflow 130 and overflow 132 detection circuits.
  • the term multiplexor is intended to include any type of device, e.g., switch, logic device, programming code, etc., that connects one signal selected from several inputs to a single output.
  • the most significant bit of data input 142 is used to control the saturation decision multiplexor 140 .
  • a final decision multiplexor 150 receives the output 194 from the arithmetic shifter 120 , and the saturated value 160 from the output multiplexor 170 .
  • the saturation decision multiplexor 140 provides an indicator of saturation to an OR gate 180 .
  • the most significant bit of the data 182 and the most significant bit of arithmetic shifter 184 are exclusively ORed (XOR) 186 . This result is ORed 180 with the indication of saturation from the saturation decision multiplexor 140 . If either is high, the signal “saturation detected” 190 is high.
  • the arithmetic shifter and saturation detection circuit 100 operates as follows. When the multiple bits are shifted left in a cycle, an arithmetic shifter 120 alone is not able to determine by the arithmetic shifter output if the arithmetic shifter 120 has had a situation of overflow and underflow during the shift operation. Basically, there are two situations when the saturation can be applied. One is that the sign of the arithmetic shifter 120 is different from the sign of the data in 110 . The other is when the bits 194 leaving the arithmetic shifter 120 are not the same, i.e., all bits are not either zeros or ones.
  • the arithmetic shifter and saturation detection circuit 100 detects the saturation cases and modifies the shifter output to either the maximum or the minimum value depending on the sign bit of data input when the saturation has occurred.
  • the arithmetic shifter and saturation detection circuit 100 shifts an operand to the left, i.e., 2 x *operand.
  • the result would be saturated to (2 n -1) or -2 n , which ever is appropriate, for the given sign. Operations would then be the same in the sense that negative values would remain negative and positive values would remain positive.
  • the content of 15 bit maximum shifter 122 is 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, D 31 , D 30 , D 29 .
  • the ones detection circuit 130 checks if all bits of the shifter 122 are one.
  • the ones detection circuit 130 may be implemented by 15 bit “AND” gate. When the output of ones detection circuit 130 is low, the arithmetic shifter 120 may have been underflowed.
  • the content of 15 bit minimum shifter 124 is 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, D 31 , D 30 , D 29 .
  • the zeros detection circuit 132 checks if all bits are of the shifter 124 are zero.
  • the zeros detection circuit 132 may be implemented by 15 bit “NOR” gate. When the output of zeros detection circuit 132 is low, the arithmetic shifter 120 may have been overflowed.
  • the saturation decision multiplexor 140 is selected by the most significant bit (MSB) 142 of data input, D( 31 ). If the MSB 142 , D( 31 ), is one, saturation decision multiplexor 140 selects the output of the ones detection circuit 130 ; otherwise, the saturation decision multiplexor 140 selects the output of the zeros detection circuit 132 . When the output signal of the saturation decision multiplexor 140 is low, saturation has occurred.
  • the maximum saturated value (overflow) and the minimum saturated value (underflow) are defined to be “7FFF FFFF” and “8000 0000/1” (could be 8000 0001 for symmetry with positive maximum value) respectively.
  • the output of the output multiplexor 170 is “8000 0000/1” when the MSB 142 , D( 31 ), is one; otherwise the output of the output multiplexor 170 is “7FFF FFFF”.
  • the final decision multiplexor 150 selects either the output 194 of the arithmetic shifter 120 or the saturated value 160 from the output multiplexor 170 .
  • the shift output is modified to the saturated value 160 , otherwise the output 194 of the arithmetic shifter 120 .
  • Saturation is determined using the output of the saturation decision multiplexor 140 and the most significant bit, S( 31 ) 184 , of the arithmetic shifter output, S( 31 : 0 ) 194 , and the most significant bit, D( 31 ) 182 , of Data in, ( 31 : 0 ) 110 .
  • the final decision multiplexor 150 selects the saturate minimum or the saturate maximum 160 depending on the MSB 142 , i.e., D( 31 ) equals one or zero, respectively.
  • D( 31 ) equals one or zero, respectively.
  • the saturation detection is based on the MSB of the 10 arithmetic shifter output, S 31 184 , and the MSB of the data, D 31 182 , being different, wherein the MSB of the data, D 31 142 , being zero selects the output of the output multiplexor to be 7FFF FFFF.
  • the saturation detection is based on the output of the zero detection circuit being zero (i.e., the minimum shift register does not contain all zeroes).
  • the saturation detection is based on the MSB of the arithmetic shifter output, S 31 184 , and the MSB of the data, D 31 182 , being different, wherein the MSB of the data, D 31 142 , being one selects the output of the output multiplexor to be 8000 0000.
  • the saturation detection is based on the output of the ones detection circuit being zero (i.e., the maximum shift register does not contain all ones).
  • FIG. 2 illustrates a block diagram of a digital signal processing circuit 200 for implementing an arithmetic shifter and saturation detection circuit according to an embodiment of the present invention.
  • FIG. 2 shows a control unit 210 , a data unit 220 and an address unit 230 .
  • the control unit 210 directs the operation of the digital signal processor based on an instruction set (ISA) optimised for the task of rapid signal processing.
  • ISA instruction set
  • the signal processing is divided between the control unit 210 that directs program flow and one or more execution units that perform operations on data. Almost always, a collection of registers/memory 240 is included to hold operands and intermediate results.
  • One of the execution units is the address unit 230 .
  • the address unit 230 directs the operand fetch for all variables which are defined and used by the executing instructions or program.
  • Another execution unit is the data unit 220 , which includes at least one arithmetic logic unit 222 that accepts as inputs the data to be operated on and a code from the control unit 210 indicating what operation to perform.
  • the arithmetic logic unit 222 provides the result of the computation and may indicate cases such as carry-in or carry-out, overflow, underflow and/or other statuses.
  • FIG. 3 is a flow chart 300 of the method for providing a shift process with saturation for digital signal processor operations according to an embodiment of the present invention.
  • data and shift amount values are provided to an arithmetic shifter 310 .
  • the arithmetic shifter provides an output to maximum shifter and to minimum shifter 312 .
  • An underflow and overflow detection circuit detect underflow and overflow based on the content of the minimum shifter and the maximum shifter 314 .
  • a saturation decision multiplexor receives input from the underflow and overflow detection circuits 316 .
  • a final decision multiplexor receives the output from the arithmetic shifter and the saturated value from the output multiplexor 318 .
  • Whether saturation occurs is determined by the final decision multiplexor using the output of the saturation decision multiplexor, the most significant bit of the arithmetic shifter output, and the most significant bit of data in 320 . Saturation is detected if the most significant bit of the arithmetic shifter output and the most significant bit of data in are different or if the saturation decision multiplexor so indicates.
  • the final decision multiplexor selects the saturate minimum or the saturate maximum depending on whether the MSB equals one or zero, respectively 330 .
  • the final decision multiplexor selects the output from the arithmetic shifter 340 .
  • a digital signal processor as illustrated above with respect to FIGS. 1-3 may be used in a wide variety of products such as field programmable gate arrays, personal digital assistants (PDAs), cellular phones, digital scanners, digital cameras, personal computers and storage controllers.
  • FIG. 4 shows one example wherein a magnetic disk drive includes a hard drive controller and microprocessor unit.
  • the hard drive controller, microprocessor and memory e.g., SRAM, may be shown separately, such components could easily be combined into one component, e.g., the hard drive controller.
  • FIG. 4 shows a schematic block diagram showing a hard disk storage system 400 according to one embodiment of the present invention.
  • the hard disk storage system 400 is connected to a host computer 432 .
  • the hard disk storage system 400 responds to the write request by the host computer 432 and records the recording data from the host computer 432 on a magnetic disk 410 , which serves as a recording medium.
  • the hard disk storage system 400 further responds to the read request from the host computer 432 , reads the data recorded on the magnetic disk 410 , and sends the data to the host computer 432 .
  • the hard disk storage system 400 includes the magnetic disk 410 , first and second motors 412 , 416 , a head device 414 , a signal processing circuit 420 , a servo circuit 430 , a microprocessor (MPU) 440 , a memory (RAM) 450 , a hard drive controller (HDC) 460 , and an interface circuit 470 .
  • the circuits 420 - 470 are connected to one another by a bus 480 .
  • the magnetic disk 410 is rotated by the first motor 412 at a constant rotating speed.
  • the second motor 416 controls the head device 414 so that it moves in the radial direction with respect to the magnetic disk 410 .
  • the head device 414 reads the data recorded on the magnetic disk 410 and sends a read signal, RD, to the signal processing circuit 420 .
  • the signal processing circuit 420 samples the read signal, RD, in synchronism with a clock signal and generates a digital read signal.
  • the signal processing circuit 420 carries out a decoding process on the digital read signal and outputs the decoded data signal.
  • the servo circuit 430 controls the first motor 412 and rotates the magnetic disk 410 at a constant speed.
  • the servo circuit 430 further receives the decoded data signal from the signal processing circuit 420 via the bus 480 and controls the second motor 416 based on the servo data included in the digital read signal so that the head device 414 is on track at the target position.
  • the MPU 440 analyzes the write/read processing command sent from the host computer 432 in accordance with the program data stored in the RAM 450 and sends a control signal to the HDC 460 via the bus 480 .
  • the HDC 460 controls the signal processing circuit 420 and the servo circuit 430 in accordance with the control signal from the MPU 440 .
  • the HDC 460 further receives a data signal from the signal processing circuit 420 via the bus 480 .
  • the HDC 460 processes date, e.g., performs an error correcting code (ECC) process on the data signal.
  • ECC error correcting code
  • the interface circuit 470 converts the data from the HDC 460 to a predetermined communication mode and sends the converted data to the host computer 432 .
  • the MPU 440 includes an arithmetic logic unit including an arithmetic shifter and saturation detection circuit as illustrated in FIG. 1 for shifting an operand to either maximum or the minimum value depending on the bit of data input when saturation occurs.
  • the HDC 460 sends a single shift instruction to the MPU 440 .
  • the MPU 440 may be configured so that the shift instruction may be run by firmware of the HDC 460 .
  • the MPU 440 returns a shifted operand or a minimum/maximum saturation value.
  • the MPU 440 could include a standalone processor or an embedded processor, e.g., the MPU 440 could be embedded in the HDC 460 .
  • the MPU 440 could be part of a system on a chip (SOC).
  • the MPU 440 could be an ASIC, which would be hardware circuits that perform the function of the processor operating pursuant to memory 450 .
  • memory 450 may be used but is not required, as the ASIC is designed to perform any assigned functions.
  • memory 450 could be either volatile or non-volatile memory.
  • the MPU 440 controls the operation of the voice coil motor 416 and spindle motor 412 via the servo unit 430 .

Abstract

A method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations are disclosed. An instruction is generated for shifting an operand to either maximum or the minimum value depending on the bit of data input when saturation occurs. A saturation detection circuit is combined with an arithmetic shifter and a final decision multiplexor. The final decision multiplexor receives the output from the arithmetic shifter and the saturated value from the saturation circuit. When saturation is detected by the saturation detection circuit, the final decision multiplexor selects the saturate minimum or the saturate maximum depending on whether the MSB of the data in equals one or zero, respectively.

Description

    BACKGROUND OF THE INVENTION
  • 1. Field of the Invention
  • This invention relates in general to digital signal processing, and more particularly to a method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations.
  • 2. Description of Related Art
  • Techniques are known in the domain of integrated circuits using calculation units for verifying if the format allowed for the result of an arithmetic operation carried out by an AU (Arithmetic Unit) on two operands and an input carry digit does not exceed a given format. This technique has applications in most calculation units, such as, calculation units included in programmable circuits, such as, a digital signal processor (DSP) or a microcontroller.
  • To process the applications, the central processing unit includes circuitry to receive and decode instructions and circuitry to process data in accordance with the decoded instructions. The circuitry to process the data typically includes an arithmetic logic unit (ALU). The arithmetic logic unit performs arithmetic functions such as add, subtract, multiply, divide, shift data, etc. and performs logic functions such as AND, OR, NAND, NOR, exclusive OR, etc. More specifically, the ALU consists of two kinds of operations: arithmetic operation such as addition/subtraction and logical operation.
  • Addition and subtraction are straightforward and unexceptional. When adding two i-bit numbers, the result may be an n+1-bit binary due to the carry-out. In computer hardware, data is typically represented as fixed-width number. Thus, the sum of 0110 and 1110 will be 0100 in a 4-bit processor and an overflow is used to point out the result is erroneous. Subtraction behaves similar. The same problem occurs in two's complement number system, under different condition. In the twos complement representation, negative numbers are represented as the result of a subtraction of the magnitude of the number from zero. That is, in a four-bit system, for example, a negative 2 is represented as the result of 0000 minus 0010, which is 1110 (the borrow, or carry, produced by the subtraction is ignored). The twos complement representation has the advantageous characteristic that additions and subtractions of twos complement numbers can be effected without regard for whether the numbers being added or subtracted are positive or negative. In the two's complement number system, the overflow occurs when adding two positive numbers and the sum is negative, or vice versa. Clearly, adding or subtracting two 32-bit numbers can yield a result that needs 33-bits to be fully expressed. The lack of a 33rd bit means that the overflow occurs and the sign bit is being set with the value of the result instead of the proper sign of the result.
  • Multiplication of signed numbers requires special care. For example, multiplying numbers with the same sign produces a positive product, but multiplying a positive number by a negative number yields a negative product. Multiplication may be performed using a sequence of shifts and additions. To achieve the data shift function, the arithmetic logic unit includes an arithmetic shifter. An arithmetic shifter is used to store a bit-vector of some specified length. It has two control signals: shift-left and shift-right. When shift-left is asserted, the bits in the vector are shifted one bit to the left, with a 0 shifted into the rightmost bit. When shift-right is asserted, the bits in the vector are shifted one bit to the right, with a copy of the most significant bit shifted into the leftmost bit.
  • An arithmetic shifter is typically implemented using a shift register. A shift register is a group of registers set up in a linear fashion that have their inputs and outputs connected together in such a way that the data is shifted down the line when the circuit is activated. Shifting a word right or left (which is equivalent to multiplying or dividing by a power of 2) is used in multiplication and division and also to align data on byte or word boundaries.
  • ALU results are saturated upon overflow. Arithmetic overflow is the condition that occurs when a calculation produces a result that is greater than a given register or storage location can store or represent. A digital processor may use a self-saturating number representation in which any arithmetic operation which generates an overflow will automatically set the output to a value having the proper sign and a magnitude equal to the maximum value which can be represented by the digital data word. For example, ALU saturation logic may be used to prevent a result from overflowing by keeping the result at a maximum (or minimum) value. Thus, when arithmetic operations produce values too large or too small for registers, the largest or smallest value that can be represented is substituted instead. More specifically:
      • if ((result=a±b)>(2n-1))
        • result=2n-1;
      • else if ((a±b)<=−2n)
        • result=−2n;
          However, there is typically no solution for saturating the result of 2x*data. Furthermore, solutions that are used are very expensive in terms of cycles.
  • It can be seen then that there is a need for a method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations.
  • SUMMARY OF THE INVENTION
  • To overcome the limitations in the prior art described above, and to overcome other limitations that will become apparent upon reading and understanding the present specification, the present invention discloses a method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations.
  • The present invention solves the above-described problems by providing an instruction for shifting an operand to either maximum or the minimum value depending on the most significant bit of data input when saturation occurs. A saturation detection circuit is provided with an arithmetic shifter and a final decision multiplexor that receives the output from the arithmetic shifter and the saturated value from a saturation circuit. Herein, the term multiplexor is intended to include any type of device, e.g., switch, logic device, programming code, etc., that connects one signal selected from several inputs to a single output. When saturation is detected, the final decision multiplexor selects the saturate minimum or the saturate maximum depending on whether the MSB of the data in equals one or zero, respectively.
  • An arithmetic shifter with saturation detection in accordance with the principles of the present invention includes an arithmetic shifter for receiving input data and a shift amount indication, a saturation detector, coupled to the arithmetic shifter, for detecting when saturation occurs and generating a saturation signal in response, a saturation value generator for generating a saturation value and an output selector for selecting whether to provide as an output shifter the output data or the saturation value in response to the saturation signal.
  • In another embodiment of the present invention, a processor unit is disclosed. The processor unit includes memory for storing data and instructions therein and a processor for performing arithmetic shift operations, the processor being configured to receive input data and a shift amount indication, the processor further being configured for detecting when saturation occurs, generating a saturation value for output when saturation occurs and for providing as an output either the input data shifted by the shift amount or, in response to saturation being detected, the saturation value.
  • In another embodiment of the present invention, a storage control device is disclosed. The storage control device includes a storage controller for processing read and write signals and a processor unit, coupled to the storage controller, the processor unit performing operations in support of storage operations, wherein the processor unit is configured to receive a shift instruction from the storage controller, the shift instruction allowing input data to be shifted N bits in a single cycle, the processor further being configured for detecting when saturation results from the shift operation, generating a saturation value for output when saturation occurs and for providing as an output either the input data shifted by N bits or, in response to saturation being detected, the saturation value.
  • In another embodiment of the present invention, a data storage system is disclosed. The data storage system includes a translatable recording medium for storing data thereon, a motor for translating the recording medium, a transducer disposed proximate to the recording medium for reading and writing data on the recording medium, an actuator, coupled to the transducer, for moving the transducer relative to the recording medium and a storage control device for controlling operations of the data storage system, the storage control device further including a storage controller for processing read and write signals and a processor unit, coupled to the storage controller, the processor unit performing operations in support of storage operations, wherein the processor unit is configured to receive a shift instruction from the storage controller, the shift instruction allowing input data to be shifted N bits in a single cycle, the processor further being configured for detecting when saturation results from the shift operation, generating a saturation value for output when saturation occurs and for providing as an output either the input data shifted by N bits or, in response to saturation being detected, the saturation value.
  • In another embodiment of the present invention, an arithmetic shifter with saturation detection is disclosed. The arithmetic shifter with saturation detection includes means for receiving input data and a shift amount indication, means, coupled to the means for receiving input data and a shift amount indication, for detecting when saturation occurs and generating a saturation signal in response, means for generating a saturation value and means for selecting to provide as an output shifter output data or the saturation value in response to the saturation signal.
  • In another embodiment of the present invention, a processor unit is disclosed. The processor unit includes means for storing data and instructions therein and means for performing arithmetic shift operations, receiving input data and a shift amount indication, detecting when saturation occurs, generating a saturation value for output when saturation occurs and providing as an output either the input data shifted by the shift amount or, in response to saturation being detected, the saturation value.
  • These and various other advantages and features of novelty which characterize the invention are pointed out with particularity in the claims annexed hereto and form a part hereof. However, for a better understanding of the invention, its advantages, and the objects obtained by its use, reference should be made to the drawings which form a further part hereof, and to accompanying descriptive matter, in which there are illustrated and described specific examples of an apparatus in accordance with the invention.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Referring now to the drawings in which like reference numbers represent corresponding parts throughout:
  • FIG. 1 illustrates an arithmetic shifter and saturation detection circuit according to an embodiment of the present invention;
  • FIG. 2 illustrates a block diagram of a digital signal processing circuit for implementing an arithmetic shifter and saturation detection circuit according to an embodiment of the present invention;
  • FIG. 3 is a flow chart of the method for providing a shift process with saturation for digital signal processor operations according to an embodiment of the present invention; and
  • FIG. 4 shows a schematic block diagram showing a hard disk storage system according to one embodiment of the present invention.
  • DETAILED DESCRIPTION OF THE INVENTION
  • In the following description of the embodiments, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration the specific embodiments in which the invention may be practiced. It is to be understood that other embodiments may be utilized because structural changes may be made without departing from the scope of the present invention.
  • The present invention provides a method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations. A single instruction is generated for shifting an operand to either maximum or the minimum value depending on the bit of data input when saturation occurs. A saturation detection circuit is provided with an arithmetic shifter and a final decision multiplexor that receives the output from the arithmetic shifter and the saturated value from a saturation circuit. When saturation is detected, the final decision multiplexor selects the saturate minimum or the saturate maximum depending on whether the MSB of the data in equals one or zero, respectively.
  • FIG. 1 illustrates an arithmetic shifter and saturation detection circuit 100 according to an embodiment of the present invention. In FIG. 1, data 110 and shift amount 112 values are provided to an arithmetic shifter 120. At the beginning of a cycle, the arithmetic shifter 120 provides an output to maximum shifter 122 and to minimum 124 shifter. An underflow 130 and overflow 132 detection circuit are coupled to the maximum shifter 122 and to the minimum shifter 124 respectively. When the arithmetic shifter 120 shifts data thru maximum shifter 122 and minimum shifter 124, the bits leaving the arithmetic shifter 120 are filling the maximum shifter 122 and the minimum shifter 124. If the arithmetic shift amount 112 is “n”, the arithmetic shifter 120 can perform from 0 to (2n-1) bit left shifts in a cycle.
  • A saturation decision multiplexor 140 receives input from the underflow 130 and overflow 132 detection circuits. Herein, the term multiplexor is intended to include any type of device, e.g., switch, logic device, programming code, etc., that connects one signal selected from several inputs to a single output. The most significant bit of data input 142 is used to control the saturation decision multiplexor 140. A final decision multiplexor 150 receives the output 194 from the arithmetic shifter 120, and the saturated value 160 from the output multiplexor 170. The saturation decision multiplexor 140 provides an indicator of saturation to an OR gate 180. The most significant bit of the data 182 and the most significant bit of arithmetic shifter 184 are exclusively ORed (XOR) 186. This result is ORed 180 with the indication of saturation from the saturation decision multiplexor 140. If either is high, the signal “saturation detected” 190 is high.
  • The arithmetic shifter and saturation detection circuit 100 operates as follows. When the multiple bits are shifted left in a cycle, an arithmetic shifter 120 alone is not able to determine by the arithmetic shifter output if the arithmetic shifter 120 has had a situation of overflow and underflow during the shift operation. Basically, there are two situations when the saturation can be applied. One is that the sign of the arithmetic shifter 120 is different from the sign of the data in 110. The other is when the bits 194 leaving the arithmetic shifter 120 are not the same, i.e., all bits are not either zeros or ones.
  • The arithmetic shifter and saturation detection circuit 100 detects the saturation cases and modifies the shifter output to either the maximum or the minimum value depending on the sign bit of data input when the saturation has occurred. The arithmetic shifter and saturation detection circuit 100 shifts an operand to the left, i.e., 2 x*operand. The result would be saturated to (2n-1) or -2n, which ever is appropriate, for the given sign. Operations would then be the same in the sense that negative values would remain negative and positive values would remain positive.
  • Assume data 110 provided to the arithmetic shifter 120 was D31, D30, D29, . . . , D0. At the beginning of the cycle, the maximum shifter 122 is initially filled with ones, and the minimum shifter 124 is initially filled with zeroes. If, for example, the shift amount is 3, three bits leave the arithmetic shifter, D(31:29), and fill the maximum 122 and minimum 124 shifter with D(31:29) from the right. The output of the arithmetic shifter 120 is D28, D27, D26, . . . , D0, “000”. The content of 15 bit maximum shifter 122 is 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, D31, D30, D29. The ones detection circuit 130 checks if all bits of the shifter 122 are one. The ones detection circuit 130 may be implemented by 15 bit “AND” gate. When the output of ones detection circuit 130 is low, the arithmetic shifter 120 may have been underflowed.
  • The content of 15 bit minimum shifter 124 is 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, D31, D30, D29. The zeros detection circuit 132 checks if all bits are of the shifter 124 are zero. The zeros detection circuit 132 may be implemented by 15 bit “NOR” gate. When the output of zeros detection circuit 132 is low, the arithmetic shifter 120 may have been overflowed.
  • The saturation decision multiplexor 140 is selected by the most significant bit (MSB) 142 of data input, D(31). If the MSB 142, D(31), is one, saturation decision multiplexor 140 selects the output of the ones detection circuit 130; otherwise, the saturation decision multiplexor 140 selects the output of the zeros detection circuit 132. When the output signal of the saturation decision multiplexor 140 is low, saturation has occurred. The maximum saturated value (overflow) and the minimum saturated value (underflow) are defined to be “7FFF FFFF” and “8000 0000/1” (could be 8000 0001 for symmetry with positive maximum value) respectively. The output of the output multiplexor 170 is “8000 0000/1” when the MSB 142, D(31), is one; otherwise the output of the output multiplexor 170 is “7FFF FFFF”.
  • The final decision multiplexor 150 selects either the output 194 of the arithmetic shifter 120 or the saturated value 160 from the output multiplexor 170. When the signal “saturation detected” 190 is high, the shift output is modified to the saturated value 160, otherwise the output 194 of the arithmetic shifter 120. Saturation is determined using the output of the saturation decision multiplexor 140 and the most significant bit, S(31) 184, of the arithmetic shifter output, S(31:0) 194, and the most significant bit, D(31) 182, of Data in, (31:0)110. First, when the data in 110 is shifted by n 112, the result is in the arithmetic shifter 120. When the most significant bit, S(31) 184, of the output 194 of the arithmetic shifter 120, and the most significant bit, D(31) 182, of Data in, (31:0) 110, are different, the saturation has occurred. Second, when the output of saturation decision multiplexor 140 is low, the saturation has occurred. In either case, the signal “saturation detected” 190 is set to high. When the signal “saturation detected” 190 is high, saturation has occurred. The final decision multiplexor 150 selects the saturate minimum or the saturate maximum 160 depending on the MSB 142, i.e., D(31) equals one or zero, respectively.
    TABLE 1
    MSB Arith MSB Final
    Data in Data Shift shifter Shifter Zeros Ones Saturate Saturate Output
    (31:0) D(31) amt(n:0) (31:0) S(31) detect detect detected value (31:0)
    Normal Case
    0x07FF
    0 3 0x3FFF 0 1 0 0 0x7FFF 0x3FFF
    FFFF FFF8 FFFF FFF8
    0xF7FF
    1 3 0xBFFF 1 0 1 0 0x8000 0xBFFF
    FFFF FFF8 0000 FFF8
    Saturated Case
    0x08FF
    0 4 0x8FFF 1 1 0 1 0x7FFF 0x7FFF
    FFFF FFF0 FFFF FFFF
    0x08FF
    0 5 0x1FFF 0 0 0 1 0x7FFF 0x7FFF
    FFFF FFE0 FFFF FFFF
    0xF7FF
    1 4 0x7FFF 0 0 1 1 0x8000 0x8000
    FFFF FFF0 0000 0000
    0xF7FF 1 5 0xFFFF 1 0 0 1 0x8000 0x8000
    FFFF FFE0 0000 0000
  • In the first saturated case, the saturation detection is based on the MSB of the 10 arithmetic shifter output, S31 184, and the MSB of the data, D31 182, being different, wherein the MSB of the data, D31 142, being zero selects the output of the output multiplexor to be 7FFF FFFF. In the second saturated case, the saturation detection is based on the output of the zero detection circuit being zero (i.e., the minimum shift register does not contain all zeroes). In the third saturated case, the saturation detection is based on the MSB of the arithmetic shifter output, S31 184, and the MSB of the data, D31 182, being different, wherein the MSB of the data, D31 142, being one selects the output of the output multiplexor to be 8000 0000. In the fourth saturated case, the saturation detection is based on the output of the ones detection circuit being zero (i.e., the maximum shift register does not contain all ones).
  • FIG. 2 illustrates a block diagram of a digital signal processing circuit 200 for implementing an arithmetic shifter and saturation detection circuit according to an embodiment of the present invention. FIG. 2 shows a control unit 210, a data unit 220 and an address unit 230. The control unit 210 directs the operation of the digital signal processor based on an instruction set (ISA) optimised for the task of rapid signal processing. The signal processing is divided between the control unit 210 that directs program flow and one or more execution units that perform operations on data. Almost always, a collection of registers/memory 240 is included to hold operands and intermediate results. One of the execution units is the address unit 230. The address unit 230, AU, directs the operand fetch for all variables which are defined and used by the executing instructions or program. Another execution unit is the data unit 220, which includes at least one arithmetic logic unit 222 that accepts as inputs the data to be operated on and a code from the control unit 210 indicating what operation to perform. The arithmetic logic unit 222 provides the result of the computation and may indicate cases such as carry-in or carry-out, overflow, underflow and/or other statuses.
  • FIG. 3 is a flow chart 300 of the method for providing a shift process with saturation for digital signal processor operations according to an embodiment of the present invention. First, data and shift amount values are provided to an arithmetic shifter 310. At the beginning of a cycle, the arithmetic shifter provides an output to maximum shifter and to minimum shifter 312. An underflow and overflow detection circuit detect underflow and overflow based on the content of the minimum shifter and the maximum shifter 314. A saturation decision multiplexor receives input from the underflow and overflow detection circuits 316. A final decision multiplexor receives the output from the arithmetic shifter and the saturated value from the output multiplexor 318. Whether saturation occurs is determined by the final decision multiplexor using the output of the saturation decision multiplexor, the most significant bit of the arithmetic shifter output, and the most significant bit of data in 320. Saturation is detected if the most significant bit of the arithmetic shifter output and the most significant bit of data in are different or if the saturation decision multiplexor so indicates. When saturation is detected 322, the final decision multiplexor selects the saturate minimum or the saturate maximum depending on whether the MSB equals one or zero, respectively 330. Else 324, the final decision multiplexor selects the output from the arithmetic shifter 340.
  • A digital signal processor as illustrated above with respect to FIGS. 1-3 may be used in a wide variety of products such as field programmable gate arrays, personal digital assistants (PDAs), cellular phones, digital scanners, digital cameras, personal computers and storage controllers. FIG. 4 shows one example wherein a magnetic disk drive includes a hard drive controller and microprocessor unit. Those skilled in the art will recognize that while the hard drive controller, microprocessor and memory, e.g., SRAM, may be shown separately, such components could easily be combined into one component, e.g., the hard drive controller.
  • FIG. 4 shows a schematic block diagram showing a hard disk storage system 400 according to one embodiment of the present invention. The hard disk storage system 400 is connected to a host computer 432. The hard disk storage system 400 responds to the write request by the host computer 432 and records the recording data from the host computer 432 on a magnetic disk 410, which serves as a recording medium. The hard disk storage system 400 further responds to the read request from the host computer 432, reads the data recorded on the magnetic disk 410, and sends the data to the host computer 432. The hard disk storage system 400 includes the magnetic disk 410, first and second motors 412, 416, a head device 414, a signal processing circuit 420, a servo circuit 430, a microprocessor (MPU) 440, a memory (RAM) 450, a hard drive controller (HDC) 460, and an interface circuit 470. The circuits 420-470 are connected to one another by a bus 480.
  • The magnetic disk 410 is rotated by the first motor 412 at a constant rotating speed. The second motor 416 controls the head device 414 so that it moves in the radial direction with respect to the magnetic disk 410. The head device 414 reads the data recorded on the magnetic disk 410 and sends a read signal, RD, to the signal processing circuit 420.
  • The signal processing circuit 420 samples the read signal, RD, in synchronism with a clock signal and generates a digital read signal. The signal processing circuit 420 carries out a decoding process on the digital read signal and outputs the decoded data signal. The servo circuit 430 controls the first motor 412 and rotates the magnetic disk 410 at a constant speed. The servo circuit 430 further receives the decoded data signal from the signal processing circuit 420 via the bus 480 and controls the second motor 416 based on the servo data included in the digital read signal so that the head device 414 is on track at the target position.
  • The MPU 440 analyzes the write/read processing command sent from the host computer 432 in accordance with the program data stored in the RAM 450 and sends a control signal to the HDC 460 via the bus 480. The HDC 460 controls the signal processing circuit 420 and the servo circuit 430 in accordance with the control signal from the MPU 440. The HDC 460 further receives a data signal from the signal processing circuit 420 via the bus 480. The HDC 460 processes date, e.g., performs an error correcting code (ECC) process on the data signal. The HDC 460 then sends the processed data to the interface circuit 470 via the bus 480. The interface circuit 470 converts the data from the HDC 460 to a predetermined communication mode and sends the converted data to the host computer 432. The MPU 440 includes an arithmetic logic unit including an arithmetic shifter and saturation detection circuit as illustrated in FIG. 1 for shifting an operand to either maximum or the minimum value depending on the bit of data input when saturation occurs. According to one embodiment of the present invention, the HDC 460 sends a single shift instruction to the MPU 440. The MPU 440 may be configured so that the shift instruction may be run by firmware of the HDC 460. In response to receiving the single shift instruction, the MPU 440 returns a shifted operand or a minimum/maximum saturation value.
  • It should be appreciated that the MPU 440 could include a standalone processor or an embedded processor, e.g., the MPU 440 could be embedded in the HDC 460. The MPU 440 could be part of a system on a chip (SOC). Further, the MPU 440 could be an ASIC, which would be hardware circuits that perform the function of the processor operating pursuant to memory 450. In such a situation, memory 450 may be used but is not required, as the ASIC is designed to perform any assigned functions. It should also be appreciated that memory 450 could be either volatile or non-volatile memory. The MPU 440 controls the operation of the voice coil motor 416 and spindle motor 412 via the servo unit 430.
  • The foregoing description of the exemplary embodiment of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be limited not with this detailed description, but rather by the claims appended hereto.

Claims (32)

1. An arithmetic shifter with saturation detection, comprising:
an arithmetic shifter for receiving input data and a shift amount indication;
a saturation detector, coupled to the arithmetic shifter, for detecting when saturation occurs and generating a saturation signal in response;
a saturation value generator for generating a saturation value; and
an output selector for selecting to provide as an output shifter output data or the saturation value in response to the saturation signal.
2. The arithmetic shifter with saturation detection of claim 1, wherein the saturation value generator comprises a multiplexor, the multiplexor receiving an overflow input and an underflow input, wherein the multiplexor selects between the overflow input and the underflow input based upon a most significant bit of input data to the arithmetic shifter.
3. The arithmetic shifter with saturation detection of claim 1, wherein the saturation detector comprises an underflow detector, an overflow detector and a saturation decision multiplexor for indicating a saturation condition by selecting between an input signal from the underflow detector and a signal from the overflow detector.
4. The arithmetic shifter with saturation detection of claim 3, wherein the underflow detector comprises a first bit shifter comprising an initial load of all ones and a ones detection device.
5. The arithmetic shifter with saturation detection of claim 4, wherein the ones detection device performs an AND operation on the content of the first bit shifter to detect when the content of the first bit shifter is not all ones.
6. The arithmetic shifter with saturation detection of claim 3, wherein the overflow detector comprises a second bit shifter comprising an initial load of all zeroes and a zeroes detection device.
7. The arithmetic shifter with saturation detection of claim 6, wherein the zeroes detection device performs a NOR operation on the content of the first bit shifter to detect when the content of the second bit shifter is not all zeroes.
8. The arithmetic shifter with saturation detection of claim 3, wherein the saturation detector further comprises a detector for determining when a most significant bit of the arithmetic shifter output and a most significant bit of input data to the arithmetic shifter are different.
9. The arithmetic shifter with saturation detection of claim 8, wherein the saturation detector further comprises a saturation signal generator, the saturation signal generator indicating saturation when saturation is detected when a saturation condition is provided by the saturation decision multiplexor or when the most significant bit of the arithmetic shifter output and the most significant bit of input data to the arithmetic shifter are different.
10. A processor unit, comprising:
memory for storing data and instructions therein; and
a processor for performing arithmetic shift operations, the processor being configured to receive input data and a shift amount indication, the processor further being configured for detecting when saturation occurs, generating a saturation value for output when saturation occurs and for providing as an output either the input data shifted by the shift amount or, in response to saturation being detected, the saturation value.
11. The processor unit of claim 10, wherein the processor selects between an overflow value and an underflow value based upon a most significant bit of the input data.
12. The processor unit of claim 10, wherein the processor identifies a saturation condition when a most significant bit of the arithmetic shifter output and a most significant bit of input data to the arithmetic shifter are different.
13. The processor unit of claim 10, wherein the processor detects saturation by shifting N data bits in a first memory location having all ones therein and determining, after the N data bits are shifted in the first memory location, when the first memory location comprises all ones and identifying a saturation condition when the first memory location does not comprise all ones.
14. The processor unit of claim 13, wherein the saturation condition comprises an underflow condition when the first memory location does not comprise all ones.
15. The processor unit of claim 10, wherein the processor detects saturation by shifting N data bits in a second memory location having all zeroes therein and determining, after the N data bits are shifted in the second memory location, when the second memory location comprises all zeroes and identifying a saturation condition when the second memory location does not comprise all zeroes.
16. The processor unit of claim 15, wherein the saturation condition comprises an overflow condition when the second memory location does not comprise all zeroes.
17. A storage control device, comprising:
a storage controller for processing read and write signals; and
a processor unit, coupled to the storage controller, the processor unit performing operations in support of storage operations, wherein the processor unit is configured to receive a shift instruction from the storage controller, the shift instruction allowing input data to be shifted N bits in a single cycle, the processor further being configured for detecting when saturation results from the shift operation, generating a saturation value for output when saturation occurs and for providing as an output either the input data shifted by N bits or, in response to saturation being detected, the saturation value.
18. The storage control device of claim 17, wherein the processor unit selects between an overflow value and an underflow value based upon a most significant bit of the input data.
19. The storage control device of claim 17, wherein the processor unit identifies a saturation condition when a most significant bit of the input data shifted by N bits and a most significant bit of input data are different.
20. The storage control device of claim 17, wherein the processor unit detects saturation by shifting N data bits in a first memory location having all ones therein and determining, after the N data bits are shifted in the first memory location, when the first memory location comprises all ones and identifying a saturation condition when the first memory location does not comprise all ones.
21. The storage control device of claim 20, wherein the saturation condition comprises an underflow condition when the first memory location does not comprise all ones.
22. The storage control device of claim 17, wherein the processor unit detects saturation by shifting N data bits in a second memory location having all zeroes therein and determining, after the N data bits are shifted in the second memory location, when the second memory location comprises all zeroes and identifying a saturation condition when the second memory location does not comprise all zeroes.
23. The storage control device of claim 22, wherein the saturation condition comprises an overflow condition when the second memory location does not comprise all zeroes.
24. A data storage system, comprising:
a translatable recording medium for storing data thereon;
a motor for translating the recording medium;
a transducer disposed proximate the recording medium for reading and writing data on the recording medium;
an actuator, coupled to the transducer, for moving the transducer relative to the recording medium; and
a storage control device for controlling operation of the data storage system, the storage control device further comprising:
a storage controller for processing read and write signals; and
a processor unit, coupled to the storage controller, the processor unit performing operations in support of storage operations, wherein the processor unit is configured to receive a shift instruction from the storage controller, the shift instruction allowing input data to be shifted N bits in a single cycle, the processor further being configured for detecting when saturation results from the shift operation, generating a saturation value for output when saturation occurs and for providing as an output either the input data shifted by N bits or, in response to saturation being detected, the saturation value.
25. The storage control device of claim 24, wherein the processor unit selects between an overflow value and an underflow value based upon a most significant bit of the input data.
26. The storage control device of claim 24, wherein the processor unit identifies a saturation condition when a most significant bit of the input data shifted by N bits and a most significant bit of input data are different.
27. The storage control device of claim 24, wherein the processor unit detects saturation by shifting N data bits in a first memory location having all ones therein and determining, after the N data bits are shifted in the first memory location, when the first memory location comprises all ones and identifying a saturation condition when the first memory location does not comprise all ones.
28. The storage control device of claim 27, wherein the saturation condition comprises an underflow condition when the first memory location does not comprise all ones.
29. The storage control device of claim 24, wherein the processor unit detects saturation by shifting N data bits in a second memory location having all zeroes therein and determining, after the N data bits are shifted in the second memory location, when the second memory location comprises all zeroes and identifying a saturation condition when the second memory location does not comprise all zeroes.
30. The storage control device of claim 29, wherein the saturation condition comprises an overflow condition when the second memory location does not comprise all zeroes.
31. An arithmetic shifter with saturation detection, comprising:
means for receiving input data and a shift amount indication;
means, coupled to the means for receiving input data and a shift amount indication, for detecting when saturation occurs and generating a saturation signal in response;
means for generating a saturation value; and
means for selecting to provide as an output shifter output data or the saturation value in response to the saturation signal.
32. A processor unit, comprising:
means for storing data and instructions therein; and
means for performing arithmetic shift operations, receiving input data and a shift amount indication, detecting when saturation occurs, generating a saturation value for output when saturation occurs and providing as an output either the input data shifted by the shift amount or, in response to saturation being detected, the saturation value.
US11/068,206 2005-02-28 2005-02-28 Method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations Active 2027-12-08 US8209366B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US11/068,206 US8209366B2 (en) 2005-02-28 2005-02-28 Method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations
EP06000180A EP1696314A1 (en) 2005-02-28 2006-01-05 Arithmetic shifter, processor unit and storage device
CNB2006100549550A CN100495316C (en) 2005-02-28 2006-02-27 Method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/068,206 US8209366B2 (en) 2005-02-28 2005-02-28 Method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations

Publications (2)

Publication Number Publication Date
US20060195497A1 true US20060195497A1 (en) 2006-08-31
US8209366B2 US8209366B2 (en) 2012-06-26

Family

ID=36102994

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/068,206 Active 2027-12-08 US8209366B2 (en) 2005-02-28 2005-02-28 Method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations

Country Status (3)

Country Link
US (1) US8209366B2 (en)
EP (1) EP1696314A1 (en)
CN (1) CN100495316C (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090164544A1 (en) * 2007-12-19 2009-06-25 Jeffrey Dobbek Dynamic range enhancement for arithmetic calculations in real-time control systems using fixed point hardware
US20090182795A1 (en) * 2007-12-19 2009-07-16 Dobbek Jeffrey J Method and system for performing calculations using fixed point microprocessor hardware

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9747105B2 (en) 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
US9208839B2 (en) 2014-03-20 2015-12-08 Arm Limited Predicting saturation in a shift operation
CN112181354B (en) * 2020-10-12 2021-08-10 上海芯旺微电子技术有限公司 Method for synchronous shift saturation processing and application thereof
CN112181355B (en) * 2020-10-12 2021-08-06 上海芯旺微电子技术有限公司 Shift saturation processing method and application thereof

Citations (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3812470A (en) * 1972-07-31 1974-05-21 Westinghouse Electric Corp Programmable digital signal processor
US4843543A (en) * 1986-04-25 1989-06-27 501 Hitachi, Ltd. Storage control method and apparatus
US5241490A (en) * 1992-01-06 1993-08-31 Intel Corporation Fully decoded multistage leading zero detector and normalization apparatus
US5448509A (en) * 1993-12-08 1995-09-05 Hewlett-Packard Company Efficient hardware handling of positive and negative overflow resulting from arithmetic operations
US5557183A (en) * 1993-07-29 1996-09-17 International Business Machines Corporation Method and apparatus for predicting failure of a disk drive
US5684728A (en) * 1994-06-10 1997-11-04 Nec Corporation Data processing system having a saturation arithmetic operation function
US5706217A (en) * 1996-07-30 1998-01-06 Hughes Aircraft Digital signal processing automatic gain control amplifier
US5745393A (en) * 1996-10-17 1998-04-28 Samsung Electronics Company, Ltd. Left-shifting an integer operand and providing a clamped integer result
US5784532A (en) * 1994-02-16 1998-07-21 Qualcomm Incorporated Application specific integrated circuit (ASIC) for performing rapid speech compression in a mobile telephone system
US5844827A (en) * 1996-10-17 1998-12-01 Samsung Electronics Co., Ltd. Arithmetic shifter that performs multiply/divide by two to the nth power for positive and negative N
US5907498A (en) * 1997-01-16 1999-05-25 Samsung Electronics, Co., Ltd. Circuit and method for overflow detection in a digital signal processor having a barrel shifter and arithmetic logic unit connected in series
US5915109A (en) * 1996-08-12 1999-06-22 Mitsubishi Denki Kabushiki Kaisha Microprocessor for processing a saturation instruction of an optional-bit length value
US5959636A (en) * 1996-02-23 1999-09-28 Intel Corporation Method and apparatus for performing saturation instructions using saturation limit values
US5960200A (en) * 1996-05-03 1999-09-28 I-Cube System to transition an enterprise to a distributed infrastructure
US6078940A (en) * 1997-01-24 2000-06-20 Texas Instruments Incorporated Microprocessor with an instruction for multiply and left shift with saturate
US6314443B1 (en) * 1998-11-20 2001-11-06 Arm Limited Double/saturate/add/saturate and double/saturate/subtract/saturate operations in a data processing system
US6321248B1 (en) * 1997-12-23 2001-11-20 Stmicroelectronics S.A. Process for determining an overflow to the format of the result of an arithmetic operation carried out on two operands
US20020059351A1 (en) * 2000-09-27 2002-05-16 Mikio Shiraishi Digital filter
US6453464B1 (en) * 1998-09-03 2002-09-17 Legacyj. Corp., Inc. Method and apparatus for converting COBOL to Java
US6523171B1 (en) * 1998-12-29 2003-02-18 International Business Machines Corporation Enhanced source code translator from procedural programming language (PPL) to an object oriented programming language (OOPL)
US20030135813A1 (en) * 2001-09-17 2003-07-17 Mark Greenberg Apparatus and method for saturating decoder values
US6757819B1 (en) * 2000-02-18 2004-06-29 Texas Instruments Incorporated Microprocessor with instructions for shifting data responsive to a signed count value
US6822654B1 (en) * 2001-12-31 2004-11-23 Apple Computer, Inc. Memory controller chipset
US20060031272A1 (en) * 2004-08-05 2006-02-09 International Business Machines Corporation Alignment shifter supporting multiple precisions
US7103621B2 (en) * 2002-03-29 2006-09-05 Pts Corporation Processor efficient transformation and lighting implementation for three dimensional graphics utilizing scaled conversion instructions
US7206800B1 (en) * 2000-08-30 2007-04-17 Micron Technology, Inc. Overflow detection and clamping with parallel operand processing for fixed-point multipliers
US7213141B2 (en) * 1999-12-14 2007-05-01 Hitachi, Ltd. Storage subsystem and storage controller
US7543014B2 (en) * 2002-07-31 2009-06-02 Texas Instruments Incorporated Saturated arithmetic in a processing unit

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1058185A1 (en) 1999-05-31 2000-12-06 Motorola, Inc. A multiply and accumulate apparatus and a method thereof

Patent Citations (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3812470A (en) * 1972-07-31 1974-05-21 Westinghouse Electric Corp Programmable digital signal processor
US4843543A (en) * 1986-04-25 1989-06-27 501 Hitachi, Ltd. Storage control method and apparatus
US5241490A (en) * 1992-01-06 1993-08-31 Intel Corporation Fully decoded multistage leading zero detector and normalization apparatus
US5557183A (en) * 1993-07-29 1996-09-17 International Business Machines Corporation Method and apparatus for predicting failure of a disk drive
US5448509A (en) * 1993-12-08 1995-09-05 Hewlett-Packard Company Efficient hardware handling of positive and negative overflow resulting from arithmetic operations
US5784532A (en) * 1994-02-16 1998-07-21 Qualcomm Incorporated Application specific integrated circuit (ASIC) for performing rapid speech compression in a mobile telephone system
US5684728A (en) * 1994-06-10 1997-11-04 Nec Corporation Data processing system having a saturation arithmetic operation function
US5959636A (en) * 1996-02-23 1999-09-28 Intel Corporation Method and apparatus for performing saturation instructions using saturation limit values
US5960200A (en) * 1996-05-03 1999-09-28 I-Cube System to transition an enterprise to a distributed infrastructure
US5706217A (en) * 1996-07-30 1998-01-06 Hughes Aircraft Digital signal processing automatic gain control amplifier
US5915109A (en) * 1996-08-12 1999-06-22 Mitsubishi Denki Kabushiki Kaisha Microprocessor for processing a saturation instruction of an optional-bit length value
US5844827A (en) * 1996-10-17 1998-12-01 Samsung Electronics Co., Ltd. Arithmetic shifter that performs multiply/divide by two to the nth power for positive and negative N
US5745393A (en) * 1996-10-17 1998-04-28 Samsung Electronics Company, Ltd. Left-shifting an integer operand and providing a clamped integer result
US5907498A (en) * 1997-01-16 1999-05-25 Samsung Electronics, Co., Ltd. Circuit and method for overflow detection in a digital signal processor having a barrel shifter and arithmetic logic unit connected in series
US6078940A (en) * 1997-01-24 2000-06-20 Texas Instruments Incorporated Microprocessor with an instruction for multiply and left shift with saturate
US6321248B1 (en) * 1997-12-23 2001-11-20 Stmicroelectronics S.A. Process for determining an overflow to the format of the result of an arithmetic operation carried out on two operands
US6453464B1 (en) * 1998-09-03 2002-09-17 Legacyj. Corp., Inc. Method and apparatus for converting COBOL to Java
US6314443B1 (en) * 1998-11-20 2001-11-06 Arm Limited Double/saturate/add/saturate and double/saturate/subtract/saturate operations in a data processing system
US6523171B1 (en) * 1998-12-29 2003-02-18 International Business Machines Corporation Enhanced source code translator from procedural programming language (PPL) to an object oriented programming language (OOPL)
US7213141B2 (en) * 1999-12-14 2007-05-01 Hitachi, Ltd. Storage subsystem and storage controller
US6757819B1 (en) * 2000-02-18 2004-06-29 Texas Instruments Incorporated Microprocessor with instructions for shifting data responsive to a signed count value
US7206800B1 (en) * 2000-08-30 2007-04-17 Micron Technology, Inc. Overflow detection and clamping with parallel operand processing for fixed-point multipliers
US20020059351A1 (en) * 2000-09-27 2002-05-16 Mikio Shiraishi Digital filter
US20030135813A1 (en) * 2001-09-17 2003-07-17 Mark Greenberg Apparatus and method for saturating decoder values
US6822654B1 (en) * 2001-12-31 2004-11-23 Apple Computer, Inc. Memory controller chipset
US7103621B2 (en) * 2002-03-29 2006-09-05 Pts Corporation Processor efficient transformation and lighting implementation for three dimensional graphics utilizing scaled conversion instructions
US7543014B2 (en) * 2002-07-31 2009-06-02 Texas Instruments Incorporated Saturated arithmetic in a processing unit
US20060031272A1 (en) * 2004-08-05 2006-02-09 International Business Machines Corporation Alignment shifter supporting multiple precisions

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090164544A1 (en) * 2007-12-19 2009-06-25 Jeffrey Dobbek Dynamic range enhancement for arithmetic calculations in real-time control systems using fixed point hardware
US20090182795A1 (en) * 2007-12-19 2009-07-16 Dobbek Jeffrey J Method and system for performing calculations using fixed point microprocessor hardware
US8280941B2 (en) 2007-12-19 2012-10-02 HGST Netherlands B.V. Method and system for performing calculations using fixed point microprocessor hardware

Also Published As

Publication number Publication date
EP1696314A1 (en) 2006-08-30
CN100495316C (en) 2009-06-03
CN1828520A (en) 2006-09-06
US8209366B2 (en) 2012-06-26

Similar Documents

Publication Publication Date Title
CN110036368B (en) Apparatus and method for performing arithmetic operations to accumulate floating point numbers
JP6001276B2 (en) Apparatus and method for performing floating point addition
US8209366B2 (en) Method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations
EP1058185A1 (en) A multiply and accumulate apparatus and a method thereof
US7716268B2 (en) Method and apparatus for providing a processor based nested form polynomial engine
US9870200B2 (en) Decimal and binary floating point rounding
CN108139912B (en) Apparatus and method for calculating and preserving error bounds during floating point operations
US7668892B2 (en) Data processing apparatus and method for normalizing a data value
US4992969A (en) Integer division circuit provided with a overflow detector circuit
MX2008014047A (en) Controlled-precision iterative arithmetic logic unit.
US20050223055A1 (en) Method and apparatus to correct leading one prediction
EP0350928B1 (en) Data processor capable of executing division of signed data with a small number of program steps
JP4402654B2 (en) Result segmentation in SIMD data processing system
JPH04350724A (en) Shift extent detecting circuit
US6393452B1 (en) Method and apparatus for performing load bypasses in a floating-point unit
CN111290790A (en) Conversion device for converting fixed point into floating point
US6760738B2 (en) Exponent unit of data processing system
JP2591250B2 (en) Data processing device
JPS58186840A (en) Data processor
JP2001092634A (en) Functional unit and computing method and processor
JPH1031618A (en) Data conversion system
JPH03245226A (en) Floating decimal-point multiplier
JPS5851352A (en) Data processor
JPH09218785A (en) Information processor

Legal Events

Date Code Title Description
AS Assignment

Owner name: HITACHI GLOBAL STORAGE TECHNOLOGIES NETHERLANDS B.

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DOBBEK, JEFFREY J.;HWANG, KIRK;REEL/FRAME:016010/0144

Effective date: 20050215

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: HGST, NETHERLANDS B.V., NETHERLANDS

Free format text: CHANGE OF NAME;ASSIGNOR:HGST, NETHERLANDS B.V.;REEL/FRAME:029341/0777

Effective date: 20120723

Owner name: HGST NETHERLANDS B.V., NETHERLANDS

Free format text: CHANGE OF NAME;ASSIGNOR:HITACHI GLOBAL STORAGE TECHNOLOGIES NETHERLANDS B.V.;REEL/FRAME:029341/0777

Effective date: 20120723

FPAY Fee payment

Year of fee payment: 4

AS Assignment

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HGST NETHERLANDS B.V.;REEL/FRAME:040819/0450

Effective date: 20160831

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8

AS Assignment

Owner name: JPMORGAN CHASE BANK, N.A., AS AGENT, ILLINOIS

Free format text: SECURITY INTEREST;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:052915/0566

Effective date: 20200113

AS Assignment

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., CALIFORNIA

Free format text: RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:059127/0001

Effective date: 20220203

AS Assignment

Owner name: JPMORGAN CHASE BANK, N.A., ILLINOIS

Free format text: PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:064715/0001

Effective date: 20230818

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12