# US 11,029,962 B2 · Execution unit

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

- Number: US 11,029,962 B2
- Document ID: US11029962B2
- Status: Granted
- Kind: B2
- Application number: 16/428,901
- Filed: 2019-05-31
- Published: 2020-09-17
- Granted: 2021-06-08
- Earliest claimed: 2019-03-11
- Assignees: Graphcore Limited
- Applicants: Graphcore Limited
- Inventors: Jonathan Mangnall
- Web page: https://patentgrep.com/patent/US11029962B2

## CPC

- G06F 9/30014: {with variable precision}
- G06F 9/3867: {using instruction pipelines}
- G06F 1/03: working, at least partly, by table look-up (G06F1/025 takes precedence)
- 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/52: Multiplying; Dividing (G06F7/483 - G06F7/491, G06F7/544 take precedence)
- G06F 7/544: for evaluating functions by calculation {(G06F7/4824 takes precedence)}
- G06F 9/3001: {Arithmetic instructions}
- G06F 9/3824: {Operand accessing}
- G06F 17/17: Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method ({G06F17/18 takes precedence } ; interpolation for numerical control G05B19/18)
- G06N 3/063: using electronic means
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS

## Abstract

An execution unit comprising a processing pipeline configured to perform calculations to evaluate a plurality of mathematical functions. The processing pipeline comprises a plurality of stages through which each calculation for evaluating a mathematical function progresses to an end result. Each of a plurality of processing circuits in the pipeline is configured to perform an operation on input values during at least one stage of the plurality of stages. The plurality of processing circuits include multiplier circuits. A first multiplier circuit and a second multiplier circuit are configured to operate in parallel, such that at the same stage in the processing pipeline, the first multiplier circuit and the second multiplier circuit perform their processing. A third multiplier circuit is arranged in series with the first multiplier circuit and the second multiplier circuit and processes outputs from the first multiplier circuit and the second multiplier circuit.

## Claims

### Claim 1

An execution unit for a processor, the execution unit comprising a hardware module having a processing pipeline configured to perform calculations to evaluate a plurality of mathematical functions of input values, wherein the processing pipeline comprises a plurality of stages through which each calculation for evaluating a given mathematical function progresses to an end result,
the processing pipeline comprising a plurality of processing circuits, each configured to perform an operation on one or more values to provide a result during at least one stage of the plurality of stages,
wherein the plurality of processing circuits comprises a plurality of multiplier circuits, each configured to multiply together two or more values to produce a multiplication result during at least one stage of the plurality of stages,
wherein the plurality of multiplier circuits comprises a first multiplier circuit and a second multiplier circuit that are configured to operate in parallel, such that at a same stage in the processing pipeline, the first multiplier circuit and the second multiplier circuit perform processing of one or more values,
wherein the plurality of multiplier circuits comprises a third multiplier circuit arranged in series with the first multiplier circuit and the second multiplier circuit, wherein the third multiplier circuit is configured to process outputs from the first multiplier circuit and the second multiplier circuit,
wherein at least one of the first multiplier circuit and the second multiplier circuit is configured to, at a first time, perform processing associated with a first mathematical function, and the third multiplier circuit is configured to, at the first time, perform processing associated with a second mathematical function different to the first mathematical function.

### Claim 2 (depends on 1)

An execution unit as claimed in claim 1, wherein the hardware module comprises control circuitry configured to control which values are provided to each of the plurality of processing circuits,
wherein the execution unit is configured to:
execute an instruction comprising an op code indicating the first mathematical function;
access an operand defined by the instruction;
in response to the execution of the instruction, provide a first at least one input value dependent upon the operand to the processing pipeline; and
provide control information associated with the instruction to the control circuitry to cause the control circuitry to control a supply of values to the plurality of processing circuits so as to cause the processing pipeline to evaluate the first mathematical function with respect to the operand.

### Claim 3 (depends on 2)

An execution unit as claimed in claim 2, wherein the first at least one input value comprises the operand.

### Claim 4 (depends on 1)

An execution unit as claimed in claim 1, wherein the processing pipeline is configured to, for each of the plurality of stages, assign a time slot of a plurality of time slots for performing processing associated with the respective stage for evaluating the first mathematical function.

### Claim 5 (depends on 4)

An execution unit as claimed in claim 4, wherein at least one of the plurality of multiplier circuits is configured to:
perform processing associated with the first mathematical function during a first of the time slots; and
perform processing associated with a third mathematical function during a second of the time slots immediately following the first of the time slots.

### Claim 6 (depends on 5)

An execution unit as claimed in claim 5, wherein control circuitry of the execution unit is configured to, following a start of the first of the time slots, re-configure a supply of values to the at least one of the plurality of multiplier circuits so as to enable the at least one of the plurality of multiplier circuits to perform processing associated with the third mathematical function during the second of the time slots.

### Claim 7 (depends on 1)

An execution unit as claimed in claim 1, wherein control circuitry of the execution unit comprises a plurality of multiplexers of the processing pipeline configured to control which values are provided to each of the plurality of processing circuits.

### Claim 8 (depends on 1)

An execution unit as claimed in claim 1, wherein the outputs from the first multiplier circuit and the second multiplier circuit are modified by further processing circuitry of the plurality of processing circuits prior to being provided to the third multiplier circuit for processing.

### Claim 9 (depends on 1)

An execution unit as claimed in claim 1, wherein the plurality of processing circuits comprise one or more items selected from the list consisting of:
at least one addition circuit configured to receive two or more values and determine an addition result;
at least one subtraction circuit configured to receive two or more values and determine a subtraction result; and
a circuit configured to search a look up table in dependence upon one or more values and output a result from the look up table.

### Claim 10 (depends on 1)

An execution unit as claimed in claim 1, wherein the plurality of mathematical functions comprise at least one item selected from the list consisting of:
an exponential function;
a divide function;
a square root function; and
a logarithm function.

### Claim 11 (depends on 1)

An execution unit as claimed in claim 1, wherein when evaluating the first mathematical function, the execution unit is configured to:
supply one or more input values to the processing pipeline;
process, in the pipeline, the one or more input values to produce one or more output values;
supply at least one of the one or more output values as at least one input to a start of the processing pipeline; and
process, in the pipeline, the at least one of the one or more output values to produce a result for the first mathematical function.

### Claim 12

A method of operating an execution unit in a processor, the execution unit comprising a hardware module having a processing pipeline configured to perform calculations to evaluate a plurality of mathematical functions of input values, wherein the processing pipeline comprises a plurality of stages through which each calculation for evaluating a given mathematical function progresses to an end result, the method comprising:
performing, at each of a plurality of processing circuits in the processing pipeline, an operation on one or more values to provide a result during at least one stage of the plurality of stages, wherein the processing circuits include a plurality of multiplier circuits;
operating a first multiplier circuit of the plurality of multiplier circuits and a second multiplier circuit of the plurality of multiplier circuits in parallel such that at a same stage in the processing pipeline, the first multiplier circuit and the second multiplier circuit perform processing of one or more values;
processing, at a third multiplier circuit arranged in series with the first multiplier circuit and the second multiplier circuit, outputs from the first multiplier circuit and the second multiplier circuit;
performing processing associated with a first mathematical function, at a first time, by the first multiplier circuit; and
performing processing associated with a second mathematical function, at the first time, by the third multiplier circuit.

### Claim 13 (depends on 12)

A method as claimed in claim 12, wherein the hardware module comprises control circuitry configured to control which values are provided to each of the plurality of multiplier circuits, the method further comprising:
controlling a supply of values to the plurality of multiplier circuits to cause the processing pipeline to evaluate the first mathematical function with respect to an operand defined by an instruction.

### Claim 14 (depends on 13)

A method as claimed in claim 13, wherein controlling comprises:
providing control signals to a plurality of multiplexors at inputs to the first multiplier circuit, the second multiplier circuit, and the third multiplier circuit.

### Claim 15 (depends on 12)

A method as claimed in claim 12, further comprising:
for each of the plurality of stages, assign a time slot for performing processing associated with the respective stage for evaluating the first mathematical function.

### Claim 16 (depends on 15)

A method as claimed in claim 15, further comprising:
following a start of the time slot, configure a supply of values to the first of the plurality of multiplier circuits to enable the first of the plurality of multiplier circuits to perform processing associated with an additional mathematical function during an immediately subsequent time slot.

### Claim 17 (depends on 12)

The method of claim 12, wherein the first multiplier circuit and the second multiplier circuit each multiply two or more values to produce respective multiplication results as the outputs.

### Claim 18

An execution unit for a processor, the execution unit comprising a hardware module having a processing pipeline configured to perform calculations to evaluate a plurality of mathematical functions of input values, wherein the processing pipeline comprises a plurality of stages through which each calculation for evaluating a given mathematical function progresses to an end result, the execution unit comprising:
a first multiplier circuit and a second multiplier circuit arranged in parallel, such that at a first stage in the processing pipeline, the first multiplier circuit and the second multiplier circuit multiply together two or more values to produce multiplication results during the first stage; and
a third multiplier circuit arranged in series with the first multiplier circuit and the second multiplier circuit, wherein the third multiplier circuit is configured to multiply the multiplication results from the first multiplier circuit and the second multiplier circuit,
wherein at least one of the first multiplier circuit and the second multiplier circuit is configured to, at a first time, perform processing associated with a first mathematical function, and the third multiplier circuit is configured to, at the first time, perform processing associated with a second mathematical function different to the first mathematical function.

### Claim 19 (depends on 18)

An execution unit as claimed in claim 18, wherein the hardware module comprises control circuitry, and wherein the execution unit is configured to:
execute an instruction comprising an op code indicating the first mathematical function;
access an operand defined by the instruction;
in response to the execution of the instruction, provide a first input value dependent upon the operand to the processing pipeline; and
provide control information associated with the instruction to the control circuitry to cause the control circuitry to control a supply of values so as to cause the processing pipeline to evaluate the first mathematical function with respect to the operand.

### Claim 20 (depends on 18)

An execution unit as claimed in claim 18, further comprising a plurality of multiplexers of the processing pipeline configured to provide the two or more values to the first multiplier circuit and the second multiplier circuit.

### Claim 21 (depends on 18)

An execution unit as claimed in claim 18, wherein the first multiplier circuit is configured to:
perform processing associated with the first mathematical function during a first time slot; and
perform processing associated with a third mathematical function during a second time slot immediately following the first time slot.
