# US 10,310,818 B2 · Floating point chained multiply accumulate

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

- Number: US 10,310,818 B2
- Document ID: US10310818B2
- Status: Granted
- Kind: B2
- Application number: 15/653,757
- Filed: 2017-07-19
- Published: 2019-01-24
- Granted: 2019-06-04
- Earliest claimed: 2017-07-19
- Assignees: Arm Limited
- Applicants: ARM Limited
- Inventors: Felix Segundo Missel Manzo
- Web page: https://patentgrep.com/patent/US10310818B2

## CPC

- G06F 7/5443: {Sum of products (for applications thereof, see the relevant places, e.g. G06F17/10, H03H17/00)}
- 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 9/30014: {with variable precision}
- G06F 7/4836: {Computations with rational numbers}
- G06F 7/49957: {Implementation of IEEE-754 Standard}
- G06F 9/3001: {Arithmetic instructions}
- G06F 9/30196: {using decoder, e.g. decoder per instruction set, adaptable or programmable decoders}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Floating point chained multiply accumulation is performed using a multiplier to multiply a first floating point operand by a second floating point operand to generate an unrounded multiplication result. An adder then adds a third floating point operand to the unrounded multiplication result to generate an unrounded accumulation result. Rounding circuitry then applies both the rounding associated with the unrounded multiplication result and rounding associated with the unrounded accumulation result to generate a rounded accumulation result.

## Claims

### Claim 1

Apparatus for performing a floating point chained multiply accumulate operation, said apparatus comprising:
a multiplier to multiply a first floating point operand by a second floating point operand to generate an unrounded multiplication result;
an adder to add a third floating point operand and said unrounded multiplication result to generate an unrounded accumulation result; and
rounding circuitry to generate:
multiplication rounding data indicative of rounding associated with said unrounded multiplication result;
accumulation rounding data indicative of rounding associated with said unrounded accumulation result; and
a rounded accumulate result from said unrounded accumulate result, said multiplication rounding data, and said accumulation rounding data.

### Claim 2 (depends on 1)

Apparatus as claimed in claim 1, wherein said rounding circuitry comprises a carry-save adder to add said unrounded accumulate result, a multiplication rounding value derived from said multiplication rounding data, and an accumulation rounding value derived from said accumulation rounding data.

### Claim 3 (depends on 1)

Apparatus as claimed in claim 1, wherein said multiplication rounding data represents a multiplication rounding bit to be added to said unrounded multiplication result and a significance indicating a bit significance of said multiplication rounding bit.

### Claim 4 (depends on 1)

Apparatus as claimed in claim 1, wherein said accumulation rounding data represents an accumulation rounding bit to be added to said unrounded accumulation result and a significance indicating a bit significance of said accumulation rounding bit.

### Claim 5 (depends on 1)

Apparatus as claimed in claim 1, wherein said first floating point operand and said second floating point operand are supplied to said multiplier to generate said unrounded multiplication result during a first processing clock cycle.

### Claim 6 (depends on 5)

Apparatus as claimed in claim 5, wherein said unrounded multiplication result and said third floating point operand are supplied to said adder to generate said unrounded accumulation result during a second processing clock cycle.

### Claim 7 (depends on 6)

Apparatus as claimed in claim 6, wherein rounding circuitry generates said multiplication rounding data during said second processing clock cycle.

### Claim 8 (depends on 7)

Apparatus as claimed in claim 7, comprising a multiplication rounding data register to store said multiplication rounding data generated during said second processing clock cycle.

### Claim 9 (depends on 7)

Apparatus as claimed in claim 7, wherein said rounding circuitry generates said accumulation rounding data during a third processing clock cycle.

### Claim 10 (depends on 9)

Apparatus as claimed in claim 9, wherein said rounding circuitry generates said rounded accumulation result from said unrounded accumulation result, said multiplication rounding data, and said accumulation rounding data during said third processing clock cycle.

### Claim 11 (depends on 1)

Apparatus as claimed in claim 1, comprising a floating point register file to store said first floating point operand, said second floating point operand, and said third floating point operand, wherein said floating point register file comprises operand read circuitry supporting reading of up to two floating point operands from said floating point register file during a processing clock cycle.

### Claim 12 (depends on 1)

Apparatus as claimed in claim 1, comprising an adder-input multiplexer to selectively supply said unrounded multiplication result from said multiplier as an input operand to said adder in combination with said third floating point operand.

### Claim 13

Apparatus for performing a floating point chained multiply accumulate operation, said apparatus comprising:
means for multiplying a first floating point operand by a second floating point operand to generate an unrounded multiplication result;
means for adding a third floating point operand and said unrounded multiplication result to generate an unrounded accumulation result; and
means for generating:
multiplication rounding data indicative of rounding associated with said unrounded multiplication result;
accumulation rounding data indicative of rounding associated with said unrounded accumulation result; and
a rounded accumulate result from said unrounded accumulate result, said multiplication rounding data, and said accumulation rounding data.

### Claim 14

A method of performing a floating point chained multiply accumulate operation, said apparatus comprising:
multiplying, by a multiplier, a first floating point operand by a second floating point operand to generate an unrounded multiplication result;
adding, by an adder, a third floating point operand and said unrounded multiplication result to generate an unrounded accumulation result; and
generating, by rounding circuitry:
multiplication rounding data indicative of rounding associated with said unrounded multiplication result;
accumulation rounding data indicative of rounding associated with said unrounded accumulation result; and
a rounded accumulate result from said unrounded accumulate result, said multiplication rounding data, and said accumulation rounding data.
