# US 2020/0401402 A1 · Processor cores using packet identifiers for routing and computation

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

- Number: US 2020/0401402 A1
- Document ID: US20200401402A1
- Status: Published application
- Kind: A1
- Application number: 16/902,035
- Filed: 2020-06-15
- Published: 2020-12-24
- Earliest claimed: 2019-06-18
- Assignees: Tenstorrent Inc.
- Applicants: Tenstorrent Inc.
- Inventors: Davor Capalija; Ljubisa Bajic; Jasmina Vasiljevic
- Web page: https://patentgrep.com/patent/US20200401402A1

## CPC

- G06F 9/30: Arrangements for executing machine instructions, e.g. instruction decode (for executing microinstructions G06F9/22)
- G06F 15/7825: {Globally asynchronous, locally synchronous, e.g. network on chip}
- G06F 8/427: {Parsing}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Processor cores using packet identifiers for routing and computation are disclosed. One method includes executing a complex computation using a set of processing cores. The method includes routing a set of packets using a set of packet identifiers and executing a set of instructions. The set of instructions are defined using a set of operand identifiers. The operand identifiers represent packet identifiers in the set of packet identifiers. In specific implementations the set of the operand identifiers represent packet identifiers in the set of packet identifiers in that a set of memories on the set of processing cores stores data values in common association with both the set of packets, and a set of operands identified by the set of operand identifiers. In specific implementations the set of operand identifiers and packet identifiers are unambiguously mapped to an underlying set of application datums of the complex computation.

## Claims

### Claim 1

A method for executing a complex computation using a set of processing cores, comprising:
routing a set of packets between the set of processing cores using a set of packet identifiers; and
executing a set of instructions using the set of processing cores, wherein the set of instructions are defined using a set of operand identifiers;
wherein the operand identifiers in the set of operand identifiers represent packet identifiers in the set of packet identifiers.

### Claim 2 (depends on 1)

The method of claim 1, wherein the operand identifiers in the set of operand identifiers represent packet identifiers in the set of packet identifiers in that:
a set of memories on the set of processing cores stores data values in common association with both: (i) the set of packets; and (ii) a set of operands identified by the set of operand identifiers.

### Claim 3 (depends on 1)

The method of claim 1, wherein:
the set of operand identifiers and the set of packet identifiers are the same.

### Claim 4 (depends on 1)

The method of claim 1, wherein:
the set of operand identifiers are unambiguously mapped to an underlying set of application datums of the complex computation throughout the execution of the complex computation; and
the set of packet identifiers are unambiguously mapped to the underlying set of application datums of the complex computation throughout the execution of the complex computation.

### Claim 5 (depends on 4)

The method of claim 4, wherein:
the set of instructions are composite computations of the complex computation; and
the underlying set of application datums are a set of variables in the complex computation.

### Claim 6 (depends on 4)

The method of claim 4, wherein:
the set of packets contain data values for the underlying set of application datums; and
the set of instructions are executed using the data values for the underlying set of application datums.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
parsing an application code definition of the complex computation;
defining, based on the parsing, the set of packets,
defining, based on the parsing, the set of operand identifiers; and
defining, based on the parsing, a set of processing core operational codes to execute the complex computation, wherein the set of processing core operational codes include the set of operand identifiers.

### Claim 8 (depends on 7)

The method of claim 7, further comprising:
distributing a subset of the set of packets to the set of processing cores to initialize the set of processing cores for the complex computation.

### Claim 9 (depends on 7)

The method of claim 7, wherein:
the set of operand identifiers is in the set of packet identifiers.

### Claim 10 (depends on 7)

The method of claim 7, wherein:
the application code definition is source code;
the application code definition of the complex computation includes: (i) an underlying set of application datums; and (ii) a set of application instructions that use the underlying set of application datums as operands;
the underlying set of application datums are variables in the source code; and
the set of application instructions are operations in the source code.

### Claim 11 (depends on 10)

The method of claim 10, wherein:
a subset of packets in the set of packets contain data values for a single application datum in the underlying set of application datums;
a subset of instructions in the set of instructions are composite computations for a single application instruction in the set of application instructions; and
executing the set of instructions includes commencing execution of the subset of instructions on a processing core prior to receiving all the packets in the subset of packets at the processing core.

### Claim 12 (depends on 1)

The method of claim 1, wherein:
the routing of the set of packets is conducted using a set of routers distributed across the set of processing cores; and
the executing of the set of instructions is conducted using a set of processing pipelines distributed across the set of processing cores.

### Claim 13 (depends on 12)

The method of claim 12, further comprising:
buffering the set of packets in a set of memories distributed across the set of processing cores;
obtaining data for the execution of the set of instructions from the set of memories using the set of operand identifiers; and
obtaining data for the routing of the set of packets from the set of memories using the set of packet identifiers.

### Claim 14 (depends on 13)

The method of claim 13, wherein:
the set of memories are blocks of SRAM located on the set of processing cores; and
a set of processing core controllers conduct the obtaining of data for the execution of the set of instructions by providing the packet identifiers to the set of memories.

### Claim 15 (depends on 13)

The method of claim 13, wherein executing the set of instructions further comprises:
unpacking packets from the set of packets, using the set of processing pipelines, after obtaining data from the set of memories for the execution of the set of instructions; and
packing packets from the set of packets, using the set of processing pipelines, prior to writing data from the set of processing pipelines to the set of memories.

### Claim 16

A system for executing a complex computation, comprising:
a set of processing cores; and
a set of routers distributed across the set of processing cores;
wherein the set of routers route a set of packets between the set of processing cores using a set of packet identifiers;
wherein the set of processing cores execute a set of instructions;
wherein the set of instructions are defined using a set of operand identifiers; and
wherein the operand identifiers in the set of operand identifiers represent packet identifiers in the set of packet identifiers.

### Claim 17 (depends on 16)

The system of claim 16, wherein the operand identifiers in the set of operand identifiers represent packet identifiers in the set of packet identifiers in that:
a set of memories on the set of processing cores stores data values in common association with both: (i) the set of packets; and (ii) a set of operands identified by the set of operand identifiers.

### Claim 18 (depends on 16)

The system of claim 16, wherein:
the set of operand identifiers and the set of packet identifiers are the same.

### Claim 19 (depends on 16)

The system of claim 16, wherein:
the set of operand identifiers are unambiguously mapped to an underlying set of application datums of the complex computation throughout the execution of the complex computation; and
the set of packet identifiers are unambiguously mapped to the underlying set of application datums of the complex computation throughout the execution of the complex computation.

### Claim 20 (depends on 19)

The system of claim 19, wherein:
the set of instructions are composite computations of the complex computation; and
the underlying set of application datums are a set of variables in the complex computation.

### Claim 21 (depends on 19)

The system of claim 19, wherein:
the set of packets contain data values for the underlying set of application datums; and
the set of instructions are executed using the data values for the underlying set of application datums.

### Claim 22 (depends on 16)

The system of claim 16, further comprising a compiler configured to:
parse an application code definition of the complex computation;
define, based on the parsing, the set of packets,
define, based on the parsing, the set of operand identifiers; and
define, based on the parsing, a set of processing core operational codes to execute the complex computation, wherein the set of processing core operational codes include the set of operand identifiers.

### Claim 23 (depends on 22)

The system of claim 22, wherein the compiler is further configured to:
distribute a subset of the set of packets to the set of processing cores to initialize the set of processing cores for the complex computation.

### Claim 24 (depends on 22)

The system of claim 22, wherein:
the set of operand identifiers is in the set of packet identifiers.

### Claim 25 (depends on 22)

The system of claim 22, wherein:
the application code definition is source code;
the application code definition of the complex computation includes: (i) an underlying set of application datums; and (ii) a set of application instructions that use the underlying set of application datums as operands;
the underlying set of application datums are variables in the source code; and
the set of application instructions are operations in the source code.

### Claim 26 (depends on 25)

The system of claim 25, wherein:
a subset of packets in the set of packets contain data values for a single application datum in the underlying set of application datums;
a subset of instructions in the set of instructions are composite computations for a single application instruction in the set of application instructions; and
executing the set of instructions includes commencing execution of the subset of instructions on a processing core prior to receiving all the packets in the subset of packets at the processing core.

### Claim 27 (depends on 16)

The system of claim 16, further comprising:
a set of memories distributed across the set of processing cores;
wherein the set of packets is buffered in the set of memories;
wherein data for the execution of the set of instructions is obtained from the set of memories using the set of operand identifiers; and
wherein data for the routing of the set of packets is obtained from the set of memories using the set of packet identifiers.

### Claim 28 (depends on 27)

The system of claim 27, wherein:
the set of memories are blocks of SRAM located on the set of processing cores; and
a set of processing core controllers conduct the obtaining of data for the execution of the set of instructions by providing the packet identifiers to the set of memories.

### Claim 29 (depends on 27)

The system of claim 27, wherein executing the set of instructions further comprises:
unpacking packets from the set of packets, using a set of processing pipelines, after obtaining data from the set of memories for the execution of the set of instructions; and
packing packets from the set of packets, using the set of processing pipelines, prior to writing data from the set of processing pipelines to the set of memories.

### Claim 30

A method, wherein each step is conducted by a processing core in a set of processing cores executing a complex computation, comprising:
routing a set of packets using a router on the processing core and a set of packet identifiers; and
executing a set of instructions using a processing pipeline on the processing core, wherein the set of instructions are defined using a set of operand identifiers;
wherein the operand identifiers in the set of operand identifiers represent packet identifiers in the set of packet identifiers.
