# US 9,519,460 B1 · Universal single instruction multiple data multiplier and wide accumulator unit

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,519,460 B1
- Document ID: US9519460B1
- Status: Granted
- Kind: B1
- Application number: 14/496,426
- Filed: 2014-09-25
- Granted: 2016-12-13
- Earliest claimed: 2014-09-25
- Assignees: Cadence Design Systems, Inc.
- Applicants: Cadence Design Systems, Inc.
- Inventors: Aamir A. Farooqui; David Lawrence Heine
- Web page: https://patentgrep.com/patent/US9519460B1

## CPC

- G06F 7/483: Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers {(G06F7/4806, G06F7/4824, G06F7/49, G06F7/491, G06F7/544 take precedence)}
- G06F 7/49942: {Significance control}
- G06F 7/556: Logarithmic or exponential functions
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A single-instruction multiple-data (SIMD) multiplier-accumulator apparatus and method. A multiplier block with two 16-bit by 32-bit multiplier circuits transform a selectable number of input multipliers and multiplicands into a selected number of products. Each multiplier circuit comprises an array of full adders that generates and sums partial products using carry-save addition. An accumulator block, with additional data width to help prevent overflow, adds the products to a selectable number of input addends and outputs a number of results. Embodiments perform one to four multiplications together, depending on the number of bits (eight, 16, 24, or 32) selected for the input operands. Embodiments output 20-bit, 40-bit, or 80-bit multiply-accumulate results at rates of at least 1.1 GHz. Embodiments support signed inputs, negated multiplication products, and Q-format data. A hybrid sign extension management approach improves performance for 80-bit outputs.

## Claims

### Claim 1

A single-instruction multiple-data (SIMD) multiplier-accumulator apparatus comprising:
a multiplier block comprising two 16-bit by 32-bit multiplier circuits that together transform a number of input multipliers and a number of input multiplicands into a number of multiplication products; and
an accumulator block that adds the multiplication products to a number of input addends and tangibly outputs a number of multiply-accumulate results, wherein sign extension for the multiply-accumulate results is performed: (i) under a first format for at least a first number of bits for the input multipliers and the input multiplicands and (ii) under a second format for at least a second number of bits for the input multipliers and the input multiplicands.

### Claim 2 (depends on 1)

The apparatus of claim 1 wherein each multiplier circuit comprises an array of full adders that generates and sums partial products using carry-save addition.

### Claim 3 (depends on 1)

The apparatus of claim 1, further comprising:
an interface, wherein the interface receives an input two-bit data format control signal that designates a number of bits for the input multipliers and the input multiplicands, the number of bits selectively comprising one of eight, 16, 24, and 32.

### Claim 4 (depends on 3)

The apparatus of claim 3 wherein the input two-bit data format control signal designates an overall number of multiplications performed by the multiplier circuits and the accumulator width for each multiplication product, the number of multiplications selectively comprising one of four eight-bit by eight-bit multiplications each with a 20-bit accumulator width, two 16-bit by 16-bit multiplications each with a 40-bit accumulator width, one 24-bit by 24-bit multiplication with an 80-bit accumulator width, and one 32-bit by 32-bit multiplication with an 80-bit accumulator width.

### Claim 5 (depends on 1)

The apparatus of claim 1, further comprising:
an interface, wherein the interface receives an input two-bit signed multiplication control signal that designates how the input multipliers and the input multiplicands are selectively signed.

### Claim 6 (depends on 1)

The apparatus of claim 1, further comprising:
an interface, wherein the interface receives an input negation control signal that designates whether the multiplication products are selectively negated.

### Claim 7 (depends on 1)

The apparatus of claim 1, further comprising:
an interface, wherein the interface receives an input Q-format control signal that designates whether the input addend, multiplier, and multiplicand values are selectively formatted in Q-format.

### Claim 8 (depends on 1)

The apparatus of claim 1 wherein the apparatus outputs multiply-accumulate results at a rate of at least 1.1 GHz.

### Claim 9 (depends on 1)

The apparatus of claim 1 wherein the accumulator block comprises (i) a 3:2 compressor and a 5:2 compressor, (ii) a carry propagate adder and a 2× carry propagate adder, and (iii) a three-input carry propagate adder, wherein the 3:2 compressor and the 5:2 compressor compress the multiplier products, the carry propagate adder and the 2× carry propagate adder combine the compressed results, and the three-input carry propagate adder sums the combined results.

### Claim 10 (depends on 1)

The apparatus of claim 1 wherein, for 24-bit by 24-bit and 32-bit by 32-bit multiplications, a predetermined sign extension expression for the leading bits of an 80-bit multiply-accumulate result is evaluated before generating the leading bits of the 80-bit multiply-accumulate result.

### Claim 11

A method for performing single-instruction multiple-data (SIMD) multiply-accumulate data processing operations with a SIMD multiplier-accumulator apparatus, comprising:
transforming a number of input multipliers and a number of input multiplicands into a number of multiplication products using a multiplier block comprising two 16-bit by 32-bit multiplier circuits together; and
adding the multiplication products to a number of input addends and tangibly outputting a number of multiply-accumulate results using an accumulator block, wherein sign extension for the multiply-accumulate results is performed: (i) under a first format for at least a first number of bits for the input multipliers and the input multiplicands and (ii) under a second format for at least a second number of bits for the input multipliers and the input multiplicands.

### Claim 12 (depends on 11)

The method of claim 11 wherein the transforming in each multiplier circuit further comprises generating and summing partial products using an array of full adders with carry-save addition.

### Claim 13 (depends on 11)

The method of claim 11 further comprising using an input two-bit data format control signal at an interface of the apparatus to designate a number of bits for the input multipliers and the input multiplicands, the number of bits selectively comprising one of eight, 16, 24, and 32.

### Claim 14 (depends on 13)

The method of claim 13 further comprising using the input two-bit data format control signal to designate an overall number of multiplications performed by the multiplier circuits and the accumulator width for each multiplication product, the number of multiplications selectively comprising one of four eight-bit by eight-bit multiplications each with a 20-bit accumulator width, two 16-bit by 16-bit multiplications each with a 40-bit accumulator width, one 24-bit by 24-bit multiplication with an 80-bit accumulator width, and one 32-bit by 32-bit multiplication with an 80-bit accumulator width.

### Claim 15 (depends on 11)

The method of claim 11 further comprising using an input two-bit signed multiplication control signal at an interface of the apparatus to designate how the input multipliers and the input multiplicands are selectively signed.

### Claim 16 (depends on 11)

The method of claim 11 further comprising using an input negation control signal at an interface of the apparatus to designate whether the multiplication products are selectively negated.

### Claim 17 (depends on 11)

The method of claim 11 further comprising using an input Q-format control signal at an interface of the apparatus to designate whether the input addend, multiplier, and multiplicand values are selectively formatted in Q-format.

### Claim 18 (depends on 11)

The method of claim 11 wherein the adding further comprises compressing the multiplier products with a 3:2 compressor and a 5:2 compressor, combining the compressed results with a carry propagate adder and a 2× carry propagate adder, and summing the combined results with a three-input carry propagate adder.

### Claim 19 (depends on 11)

The method of claim 11 further comprising, for 24-bit by 24-bit and 32-bit by 32-bit multiplications, evaluating a predetermined sign extension expression for the leading bits of an 80-bit multiply-accumulate result before generating the leading bits of the 80-bit multiply-accumulate result.

### Claim 20

A non-transitory computer readable medium storing instructions that, when executed by a processor, perform a method for single-instruction multiple-data (SIMD) multiply-accumulate data processing operations comprising:
transforming a number of input multipliers and a number of input multiplicands into a number of multiplication products using a multiplier block comprising two 16-bit by 32-bit multiplier circuits together; and
adding the multiplication products to a number of input addends and tangibly outputting a number of multiply-accumulate results using an accumulator block, wherein sign extension for the multiply-accumulate results is performed: (i) under a first format for at least a first number of bits for the input multipliers and the input multiplicands and (ii) under a second format for at least a second number of bits for the input multipliers and the input multiplicands.
