# US 2018/0324112 A1 · Joining data within a reconfigurable fabric

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

- Number: US 2018/0324112 A1
- Document ID: US20180324112A1
- Status: Published application
- Kind: A1
- Application number: 16/021,840
- Filed: 2018-06-28
- Published: 2018-11-08
- Earliest claimed: 2015-08-02
- Assignees: Wave Computing, Inc.
- Applicants: Wave Computing, Inc.
- Inventors: Christopher John Nicol
- Web page: https://patentgrep.com/patent/US20180324112A1

## CPC

- H04L 47/39: {Credit based}
- H04L 47/2475: for supporting traffic characterised by the type of applications
- H04L 47/6225: {Fixed service order, e.g. Round Robin}
- H04L 47/6235: {Variable service order}
- H04L 49/1546: using pipelined operation
- H04L 49/555: {Error detection}
- H04L 49/557: {Error correction, e.g. fault recovery or fault tolerance}
- H04L 49/90: Buffering arrangements
- H04L 49/901: using storage descriptor, e.g. read or write pointers
- H04L 49/9031: {Wraparound memory, e.g. overrun or underrun detection}
- G06F 2213/0064: Latency reduction in handling transfers
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques are disclosed for managing data within a reconfigurable computing environment. In a multiple processing element environment, such as a mesh network or other suitable topology, there is an inherent need to pass data between processing elements. Subtasks are divided among multiple processing elements. The output resulting from the subtasks is then merged by a downstream processing element. In such cases, a join operation can be used to combine data from multiple upstream processing elements. A control agent executes on each processing element. A memory buffer is disposed between upstream processing elements and the downstream processing element. The downstream processing element is configured to automatically perform an operation based on the availability of valid data from the upstream processing elements.

## Claims

### Claim 1

A processor-implemented method for data manipulation comprising:
coupling a plurality of control agents, executing on a plurality of processing elements, wherein the plurality of processing elements comprises a reconfigurable fabric and wherein the plurality of processing elements is controlled by circular buffers;
linking a first control agent and a second control agent, from the plurality of control agents, with a third control agent, from the plurality of control agents; and
receiving data from the first control agent and the second control agent by the third control agent, wherein a first FIFO memory is employed by the first control agent to facilitate the receiving of the data by the third control agent, and a second FIFO memory is employed by the second control agent to facilitate the receiving of the data by the third control agent.

### Claim 2 (depends on 1)

The method of claim 1 further comprising operating on the data, received from the first control agent and the second control agent, by the third control agent.

### Claim 3 (depends on 2)

The method of claim 2 further comprising producing resulting data based on the operating on the data.

### Claim 4 (depends on 3)

The method of claim 3 further comprising sending the resulting data to a fourth control agent from the plurality of control agents.

### Claim 5 (depends on 4)

The method of claim 4 wherein the receiving of the data by the third control agent is only accomplished when there is output space available for results from the third control agent.

### Claim 6 (depends on 5)

The method of claim 5 wherein the receiving of the data by the third control agent comprises consuming the data.

### Claim 7 (depends on 5)

The method of claim 5 wherein output space is available in a third FIFO employed between the third control agent and the fourth control agent.

### Claim 8 (depends on 5)

The method of claim 5 wherein processing by the third control agent is delayed until output space is available.

### Claim 9 (depends on 8)

The method of claim 8 wherein the processing by the third control agent is suspended by stopping rotating of a circular buffer within the circular buffers.

### Claim 10 (depends on 2)

The method of claim 2 wherein the operating on the data is in response to receiving the data from the first control agent and the second control agent.

### Claim 11 (depends on 10)

The method of claim 10 wherein the data received from the first control agent is determined to be valid.

### Claim 12 (depends on 11)

The method of claim 11 wherein the data received from the second control agent is determined to be valid.

### Claim 13 (depends on 11)

The method of claim 11 wherein the operating is based on the data being valid.

### Claim 14 (depends on 13)

The method of claim 13 wherein the operating is activated by the data being valid.

### Claim 15 (depends on 11)

The method of claim 11 wherein a processing element associated with the third control agent is brought out of a sleep state when the data from the first control agent is determined to be valid.

### Claim 16 (depends on 11)

The method of claim 11 wherein a processing element associated with the third control agent is brought out of a sleep state by the data from the first control agent being valid.

### Claim 17 (depends on 16)

The method of claim 16 wherein the third control agent is brought out of a sleep state by the data from the second control agent also being valid.

### Claim at position 18

18-23. (canceled)

### Claim 24 (depends on 1)

The method of claim 1 wherein the receiving the data from the first control agent and the data from the second control agent comprises joining data.

### Claim 25 (depends on 24)

The method of claim 24 wherein the joining data is accomplished by the third control agent.

### Claim at position 21

26-31. (canceled)

### Claim 32 (depends on 1)

The method of claim 1 further comprising sending a fire signal from the first control agent to the third control agent to facilitate operating by the third control agent.

### Claim at position 23

33-34. (canceled)

### Claim 35 (depends on 1)

The method of claim 1 further comprising linking a fifth control agent, from the plurality of control agents, with the third control agent.

### Claim 36 (depends on 35)

The method of claim 35 further comprising receiving data from the fifth control agent by the third control agent.

### Claim 37 (depends on 36)

The method of claim 36 wherein a third FIFO memory is interposed between the fifth control agent and the third control agent.

### Claim 38 (depends on 37)

The method of claim 37 wherein the third FIFO memory facilitates the receiving of the data by the third control agent.

### Claim 39

A computer program product embodied in a non-transitory computer readable medium for data manipulation, the computer program product comprising code which causes one or more processors to perform operations of:
coupling a plurality of control agents, executing on a plurality of processing elements, wherein the plurality of processing elements comprises a reconfigurable fabric and wherein the plurality of processing elements is controlled by circular buffers;
linking a first control agent and a second control agent, from the plurality of control agents, with a third control agent, from the plurality of control agents; and
receiving data from the first control agent and the second control agent by the third control agent, wherein a first FIFO memory is employed by the first control agent to facilitate the receiving of the data by the third control agent, and a second FIFO memory is employed by the second control agent to facilitate the receiving of the data by the third control agent.

### Claim 40

A computer system for analysis comprising:
a memory which stores instructions;
one or more processors attached to the memory wherein the one or more processors, when executing the instructions which are stored, are configured to:
couple a plurality of control agents, executing on a plurality of processing elements, wherein the plurality of processing elements comprises a reconfigurable fabric and wherein the plurality of processing elements is controlled by circular buffers;
link a first control agent and a second control agent, from the plurality of control agents, with a third control agent, from the plurality of control agents; and
receive data from the first control agent and the second control agent by the third control agent, wherein a first FIFO memory is employed by the first control agent to facilitate the receiving of the data by the third control agent, and a second FIFO memory is employed by the second control agent to facilitate the receiving of the data by the third control agent.
