# US 2014/0195783 A1 · Dot product processors, methods, systems, and instructions

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

- Number: US 2014/0195783 A1
- Document ID: US20140195783A1
- Status: Published application
- Kind: A1
- Application number: 13/977,094
- Filed: 2011-12-29
- Published: 2014-07-10
- Earliest claimed: 2011-12-29
- Inventors: Krishnan Karthikeyan; Elmoustapha Ould-Ahmed-Vall; Victor Cherepanov
- Web page: https://patentgrep.com/patent/US20140195783A1

## CPC

- G06F 9/3001: {Arithmetic instructions}
- G06F 7/5443: {Sum of products (for applications thereof, see the relevant places, e.g. G06F17/10, H03H17/00)}
- G06F 9/30014: {with variable precision}
- G06F 9/30036: {Instructions to perform operations on packed data, e.g. vector, tile or matrix operations}
- G06F 9/30038: {using a mask}
- G06F 9/30109: {having multiple operands in a single register}
- G06F 9/30192: {according to data descriptor, e.g. dynamic data typing}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method of an aspect includes receiving a dot product instruction. The dot product instruction indicates a first source packed data including at least four data elements, indicates a second source packed data including at least eight data elements, and indicates a destination storage location. A result packed data is stored in the destination storage location in response to the dot product instruction. The result includes a plurality of data elements that each includes a dot product result. Each of the dot product results includes a sum of products of the at least four data elements of the first source packed data with corresponding data elements in a different subset of at least four data elements of the second source packed data. Other methods, apparatus, systems, and instructions are disclosed.

## Claims

### Claim 1

A method comprising:
receiving a dot product instruction, the dot product instruction indicating a first source packed data including at least four data elements, indicating a second source packed data including at least eight data elements, and indicating a destination storage location; and
storing a result packed data in the destination storage location in response to the dot product instruction, the result packed data including a plurality of data elements that each include a dot product result, each of the dot product results including a sum of products of the at least four data elements of the first source packed data with corresponding data elements in a different subset of at least four data elements of the second source packed data.

### Claim 2 (depends on 1)

The method of claim 1, wherein receiving comprises receiving a dot product instruction that specifies a size of the data elements of the second source packed data, and wherein the dot product instruction allows the size of the data elements of the second source packed data to be any one of a plurality of different sizes.

### Claim 3 (depends on 2)

The method of claim 2, wherein receiving comprises receiving a dot product instruction that has an immediate that specifies the size of the data elements of the second source packed data.

### Claim 4 (depends on 1)

The method of claim 1, wherein receiving comprises receiving a dot product instruction that indicates a second source packed data including data elements having a size of only two bits and that indicates a first source packed data including data elements having a size of at least eight bits.

### Claim 5 (depends on 1)

The method of claim 1, wherein receiving comprises receiving a dot product instruction that indicates a second source packed data including data elements having a size of only four bits and that indicates a first source packed data including data elements having a size of at least eight bits.

### Claim 6 (depends on 1)

The method of claim 1, wherein receiving comprises receiving a dot product instruction that indicates a first source packed data including at least sixteen data elements and that indicates a second source packed data including at least thirty-two data elements, and wherein storing comprises storing at least two data elements that each include a dot product result based on a sum of at least sixteen products.

### Claim 7 (depends on 1)

The method of claim 1, wherein receiving comprises receiving a dot product instruction that indicates a first source packed data including at least sixteen data elements and that indicates a second source packed data including at least sixty four data elements, and wherein storing comprises storing at least four data elements that each include a dot product result based on a sum of at least sixteen products.

### Claim 8 (depends on 1)

The method of claim 1, wherein storing comprises storing two data elements that each include a dot product result, a first dot product result including a sum of products of the at least four data elements of the first source packed data with corresponding data elements in a lower half of the second source packed data, and wherein a second dot product result includes a sum of products of the at least four data elements of the first source packed data with corresponding data elements in an upper half of the second source packed data.

### Claim 9 (depends on 1)

The method of claim 1, wherein storing comprises storing at least four data elements that each include a dot product result, each of the dot product results based on a different one of at least four subsets of the at least eight data elements of the second source packed data.

### Claim 10 (depends on 1)

The method of claim 1, wherein storing comprises storing a saturation value in at least one of the data elements of the result packed data when the corresponding dot product result exceeds the saturation value.

### Claim 11

(canceled)

### Claim 12

An apparatus comprising:
a plurality of packed data registers; and
an execution unit coupled with the plurality of the packed data registers, the execution unit operable, in response to a dot product instruction indicating a first source packed data including at least four data elements, indicating a second source packed data including at least eight data elements, and indicating a destination storage location, to store a result packed data in the destination storage location, the result packed data including a plurality of data elements that each include a dot product result, each of the dot product results including a sum of products of the at least four data elements of the first source packed data with corresponding data elements in a different subset of at least four data elements of the second source packed data.

### Claim 13 (depends on 12)

The apparatus of claim 12, wherein the execution unit is to store the result packed data in response to a dot product instruction that specifies a size of the data elements of the second source packed data, and wherein the dot product instruction is to allow the size of the data elements of the second source packed data to be any one of a plurality of different sizes.

### Claim 14 (depends on 13)

The apparatus of claim 13, wherein the dot product instruction is to comprise an immediate to specify the size of the data elements of the second source packed data.

### Claim 15 (depends on 12)

The apparatus of claim 12, wherein the execution unit is to store the result packed data in response to a dot product instruction that indicates a second source packed data including data elements having a size of only two bits and that indicates a first source packed data including data elements having a size of at least eight bits.

### Claim 16 (depends on 12)

The apparatus of claim 12, wherein the execution unit is to store the result packed data in response to a dot product instruction that indicates a second source packed data including data elements having a size of only four bits and that indicates a first source packed data including data elements having a size of at least eight bits.

### Claim 17 (depends on 12)

The apparatus of claim 12, wherein the execution unit is to store the result packed data in response to a dot product instruction that indicates a first source packed data including at least sixteen data elements and that indicates a second source packed data including at least thirty-two data elements, and wherein the result packed data is to include at least two data elements that each are to include a dot product result that is based on a sum of at least sixteen products.

### Claim 18 (depends on 12)

The apparatus of claim 12, wherein the execution unit is to store the result packed data in response to a dot product instruction that indicates a first source packed data including at least sixteen data elements and that indicates a second source packed data including at least sixty four data elements, and wherein the result packed data is to include at least four data elements that each are to include a dot product result that is based on a sum of at least sixteen products.

### Claim 19 (depends on 12)

The apparatus of claim 12, wherein the execution unit, in response to the dot product instruction, is to store two data elements that each are to include a dot product result, a first dot product result to include a sum of products of the at least four data elements of the first source packed data with corresponding data elements in a lower half of the second source packed data, a second dot product result to include a sum of products of the at least four data elements of the first source packed data with corresponding data elements in an upper half of the second source packed data.

### Claim 20

(canceled)

### Claim 21 (depends on 12)

The apparatus of claim 12, wherein the execution unit, in response to the dot product instruction, is to store a saturation value in at least one of the data elements of the result packed data when the corresponding dot product result exceeds the saturation value.

### Claim 22 (depends on 12)

The apparatus of claim 12, wherein the execution unit is to store the result packed data in response to a dot product instruction that indicates a predicate mask, and wherein the execution unit is to conditionally store data elements that include dot product results according to the predicate mask.

### Claim 23

A system comprising:
an interconnect;
a processor coupled with the interconnect, the processor operable, in response to a dot product instruction indicating a first source packed data including at least four data elements A0, A1, A2, A3, indicating a second source packed data including at least eight data elements B0, B1, B2, B3, C0, C1, C2, C3, and indicating a destination storage location, to store a result packed data in the destination storage location, the result packed data including at least a first data element that includes A0*B0+A1*B1+A2*B2+A3*B3 and a second data element that includes A0*C0+A1*C1+A2*C2+A3*C3; and
a dynamic random access memory (DRAM) coupled with the interconnect.

### Claim 24 (depends on 23)

The system of claim 23, wherein the processor is to store the result packed data in response to a dot product instruction that specifies a size of the data elements of the second source packed data, and wherein the dot product instruction is to allow the size of the data elements of the second source packed data to be any one of a plurality of different sizes.

### Claim 25 (depends on 23)

The system of claim 23, wherein the processor is to store the result packed data in response to a dot product instruction that indicates a second source packed data including data elements having a size selected from only two bits and only four bits and that indicates a first source packed data including data elements having a size of at least eight bits.

### Claim 26

An article of manufacture comprising:
a machine-readable storage medium including one or more solid data storage materials, the machine-readable storage medium storing a dot product instruction,
the dot product instruction to indicate a first source packed data including at least four data elements A0, A1, A2, A3, to indicate a second source packed data including at least eight data elements B0, B1, B2, B3, C0, C1, C2, C3, and to indicate a destination storage location, and the dot product instruction if executed by a machine operable to cause the machine to perform operations comprising:
storing a result packed data in the destination storage location, the result packed data including at least a first data element that includes A0*B0+A1*B1+A2*B2+A3*B3 and a second data element that includes A0*C0+A1*C1+A2*C2+A3*C3.

### Claim 27

(canceled)

### Claim 28 (depends on 26)

The article of manufacture of claim 26, wherein the dot product instruction is to indicate a second source packed data including data elements having a size selected from only two bits and only four bits and is to indicate a first source packed data including data elements having a size of at least eight bits.
