IP Library Granted Patent US 7,593,978
Granted Patent B2
US 7,593,978 · App. 10/841,261 · Granted Sep 22, 2009

Processor reduction unit for accumulation of multiple operands with or without saturation

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,593,978
App. No.
10/841,261
Granted
Sep 22, 2009
Kind
B2
Abstract

A processor having a reduction unit that sums m input operands plus an accumulator value, with the option of saturating after each addition or wrapping around the result of each addition. The reduction unit also allows the m input operands to be subtracted from the accumulator value by simply inverting the bits of the input operands and setting a carry into each of a plurality of reduction adders to one. The reduction unit can be used in conjunction with m parallel multipliers to quickly perform dot products and other vector operations with either saturating or wrap-around arithmetic.

Claims (33)

1. A multithreaded processor comprising:

a plurality of arithmetic units;

an accumulator unit; and

a reduction unit coupled between the plurality of arithmetic units and the accumulator unit, the reduction unit being configured to receive input operands from the arithmetic units and a first accumulator value from the accumulator unit;

wherein the reduction unit is pipelined and operative to sum the input operands and the first accumulator value, and to generate a second accumulator value for delivery to the accumulator unit, the reduction unit further comprising m inputs, m adders, and an m stage pipeline, where m is greater than or equal to two, each of the in inputs being coupled to a corresponding adder by means of N−1 pipeline registers where N is a stage number greater than or equal to 1, the m stage pipeline being configured to reduce the worst case delay of the reduction unit;

wherein the reduction unit is controllable to support saturation and wrap-around arithmetic; and

wherein operations for a dot product computed for a given thread are executed concurrently with operations from other threads, the number of cycles between execution of instructions from the given thread being greater than or equal to a number of pipeline stages in the reduction unit plus any additional cycles needed to write to and read from the accumulator unit.

2. The processor of claim 1 wherein the plurality of arithmetic units comprises a plurality of multipliers arranged in parallel with one another.

3. The processor of claim 2 wherein the plurality of multipliers comprises a plurality of multiply-accumulate units arranged in parallel with one another.

4. The processor of claim 1 wherein the accumulator unit comprises an accumulator register file.

5. The processor of claim 1 wherein the reduction unit is configured to provide controllable selection between at least a first type of computation with saturation after each of a plurality of addition operations and a second type of computation with wrapping around of results of the addition operations, responsive to an applied control signal.

6. The processor of claim 1 wherein the reduction unit is further operative to permit the input operands to be subtracted from the first accumulator value.

7. The processor of claim 6 wherein the input operands are subtracted from the first accumulator value by inverting the bits of the input operands and setting a carry into each of a plurality of reduction adders of the reduction unit to a designated logic value.

8. The processor of claim 1 wherein the reduction unit is utilizable in conjunction with m arithmetic units and the accumulator unit to compute m elements of a dot product.

9. The processor of claim 8 wherein the m arithmetic units comprise m multipliers, with each of the multipliers being operative to compute P[i]=X[i]*Y[i], 2≦i≦m, the P[i]outputs of the m multipliers being fed as input operands to the reduction unit along with an accumulator value P[ 0 ] from the accumulator unit, the reduction unit being configured to compute Acc=P[ 0 ]+P[ 1 ]+P[ 2 ]+ . . . +P[m], where P[ 0 ] is set to zero for an initial iteration, and in a next iteration, m new elements of X and Y are multiplied, and P[ 0 ] is set to accumulator value Acc from the previous iteration, the iterations continuing until the m-element dot product is computed.

10. The processor of claim 9 wherein the reduction unit is operable in a saturation mode in which the reduction unit performs saturation after each addition operation, and each of the m multipliers saturates its result when overflow occurs.

11. The processor of claim 9 wherein the reduction unit is operable in an invert mode in which the reduction unit is configured to compute Acc=P[ 0 ]−P[ 1 ]−P[ 2 ]− . . . −P[m].

12. The processor of claim 8 wherein the reduction unit is configured so as to allow m elements of the dot product to be accumulated on each of a plurality of processor clock cycles.

13. The processor of claim 1 wherein the reduction unit comprises m reduction adders connected in series, each of the reduction adders being operative to add its respective input operands with or without saturation.

14. The processor of claim 1 wherein the multithreaded processor utilizes token triggered threading.

15. The processor of claim 1 wherein the reduction unit is utilizable in execution of one or more vector-reduce instructions, including at least one of a vector-multiply-and-reduce-add instruction, a vector-multiply-and-reduce-subtract instruction, and a vector-add-reduce-add instruction.

16. An integrated circuit comprising at least one multithreaded processor, the multithreaded processor comprising:

a plurality of arithmetic units;

an accumulator unit; and

a reduction unit coupled between the plurality of arithmetic units and the accumulator unit, the reduction unit being pipelined and configured to receive input operands from the arithmetic units and a first accumulator value from the accumulator unit, the reduction unit further comprising m inputs, m adders, and an m stage pipeline, where m is greater than or equal to two, each of the m inputs being coupled to a corresponding adder by means of N−1 pipeline registers where N is a stage number greater than or equal to 1, the m stage pipeline being configured to reduce the worst case delay of the reduction unit;

wherein the reduction unit is operative to sum the input operands and the first accumulator value, and to generate a second accumulator value for delivery to the accumulator unit;

wherein the reduction unit is controllable to support saturation and wrap-around arithmetic; and

wherein operations for a dot product computed for a given thread are executed concurrently with operations from other threads, the number of cycles between execution of instructions from the given thread being greater than or equal to a number of pipeline stages in the reduction unit plus any additional cycles needed to write to and read from the accumulator unit.

17. An apparatus for use in a multithreaded processor comprising a plurality of arithmetic units and an accumulator unit, the apparatus comprising:

a reduction unit coupled between the plurality of arithmetic units and the accumulator unit, the reduction unit being pipelined and configured to receive input operands from the arithmetic units and a first accumulator value from the accumulator unit, the reduction unit further comprising m inputs, m adders, and an m stage pipeline, where m is greater than or equal to two, each of the m inputs being coupled to a corresponding adder by means of N−1 pipeline registers where N is a stage number greater than or equal to 1, the m stage pipeline being configured to reduce the worst case delay of the reduction unit;

wherein the reduction unit is operative to sum the input operands and the first accumulator value, and to generate a second accumulator value for delivery to the accumulator unit;

wherein the reduction unit is controllable to support saturation and wrap-around arithmetic; and

wherein operations for a dot product computed for a given thread are executed concurrently with operations from other threads, the number of cycles between execution of instructions from the given thread being greater than or equal to a number of pipeline stages in the reduction unit plus any additional cycles needed to write to and read from the accumulator unit.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 29, 2012
From: ASPEN ACQUISITION CORPORATION
To: QUALCOMM INCORPORATED
Reel/Frame 029377/0700 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNMENT BY SUPPLEMENTING TWO PAGES MISSING FROM THE ASSIGNMENT PREVIOUSLY RECORDED ON REEL 025084 FRAME 0963. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT OF ASSIGNOR'S INTEREST. Recorded Oct 25, 2010
From: SANDBRIDGE TECHNOLOGIES, INC.
To: ASPEN ACQUISITION CORPORATION
Reel/Frame 025178/0760 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2010
From: SANDBRIDGE TECHNOLOGIES, INC.
To: ASPEN ACQUISITION CORPORATION
Reel/Frame 025084/0963 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2005
From: SCHULTE, MICHAEL J.; BALZOLA, PABLO I.; GLOSSNER, C. JOHN
To: SANDBRIDGE TECHNOLOGIES, INC.
Reel/Frame 016695/0581 →