# US 10,872,393 B2 · Image processor with high throughput internal communication protocol

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

- Number: US 10,872,393 B2
- Document ID: US10872393B2
- Status: Granted
- Kind: B2
- Application number: 15/595,242
- Filed: 2017-05-15
- Published: 2018-11-15
- Granted: 2020-12-22
- Earliest claimed: 2017-05-15
- Assignees: Google Inc.
- Applicants: Google LLC
- Inventors: Jason Redgrave; Albert Meixner; Qiuling Zhu; Ji Kim; Artem Vasilyev; Ofer Shacham
- Web page: https://patentgrep.com/patent/US10872393B2

## CPC

- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06F 12/0813: with a network or matrix configuration
- G06F 15/8023: {Two dimensional arrays, e.g. mesh, torus}
- H04L 25/40: Transmitting circuits; Receiving circuits {(repeater circuits, relay circuits H04L25/20)}
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A processor is described. The processor includes a network. A plurality of processing cores are coupled to the network. The processor includes a transmitter circuit coupled to the network. The transmitter circuit is to transmit output data generated by one of the processing cores into the network. The transmitter circuit includes control logic circuitry to cause the transmitter circuit to send a request for transmission of a second packet of output data prior to completion of the transmitter circuit's transmission of an earlier first packet of output data.

## Claims

### Claim 1

A processor, comprising:
a network implementing a credit counter protocol that requires each sender to receive an acknowledgement from a receiver for a data packet to be transmitted before the sender sends data units belonging to the data packet;
one or more processing cores coupled to the network; and
a transmitter circuit coupling a first processing core of the one or more processing cores to the network, the transmitter circuit being configured to transmit data units output by the first processing core into the network, the transmitter circuit comprising control logic circuitry that is configured to cause the transmitter circuit to:
initiate transmitting a first data packet to a first receiver of the processor,
provide a request for a different second data packet to be transmitted to a different second receiver of the processor before a last data unit of the first data packet has been transmitted to the first receiver,
receive a pre-issued acknowledgement for the different second data packet to be transmitted before the last data unit of the first data packet has been transmitted to the first receiver,
increment a different second receiver-specific credit counter for the second receiver in response to receiving the pre-issued acknowledgement for the different second data packet to be transmitted,
receive an indication that the last data unit of the first data packet has been consumed by the first receiver,
increment a first receiver-specific credit counter in response to receiving the indication that the last data unit belonging to the first data packet has been consumed by the first receiver, and
send a first data unit belonging to the different second data packet to the different second receiver using credits of the second receiver-specific credit counter incremented due to receiving the pre-issued acknowledgement for the different second data packet to be transmitted.

### Claim 2 (depends on 1)

The processor of claim 1, wherein the control logic circuitry comprises a plurality of credit counters, and wherein the control logic circuitry is configured to reassign each credit counter to a different respective receiver after a respective data packet is transmitted.

### Claim 3 (depends on 1)

The processor of claim 1, wherein the second receiver of the second data packet is a different component of the processor than the first receiver of the first data packet.

### Claim 4 (depends on 1)

The processor of claim 1, wherein the processor further comprises a line buffer, and wherein the first receiver of the first data packet is the line buffer.

### Claim 5 (depends on 1)

The processor of claim 1, wherein receiving the pre-issued transaction acknowledgement for the second data packet comprises receiving the pre-issued acknowledgement for the second data packet before sending any data units of the first data packet.

### Claim 6 (depends on 1)

The processor of claim 1, wherein the control logic circuitry is configured to increment the credits of the second receiver-specific credit counter due to receiving the pre-issued acknowledgment whenever the first receiver of the processor is a different component than the second receiver of the processor.

### Claim 7 (depends on 1)

The processor of claim 1, wherein the control logic circuitry is configured to send interleaved data units to the first receiver of the processor and the second receiver of the processor using the first receiver-specific credit counter for data units belonging to the first data packet and the second receiver-specific credit counter for data units belonging to the second data packet respectively.

### Claim 8

A method performed by a processor having one or more processing cores and a network implementing a credit counter protocol that requires each sender to receive an acknowledgement from a receiver for a data packet to be transmitted before the sender sends data units belonging to the data packet, the method comprising:
processing, by a first processing core of the one or more processing cores, program code to generate output data to be sent in a first data packet and a different second data packet;
initiating, by a transmitter circuit coupling the first processing core to the network, transmitting the first data packet to a first receiver of the processor;
providing, by the transmitter circuit, a request for the different second data packet to be transmitted to a different second receiver of the processor before a last data unit of the first data packet has been transmitted to the first receiver;
receiving, by the transmitter circuit, a pre-issued acknowledgement for the different second data packet to be transmitted before the last data unit of the first data packet has been transmitted to the first receiver;
incrementing a different second receiver-specific credit counter for the second receiver in response to receiving the pre-issued acknowledgement for the different second data packet to be transmitted;
receiving, by the transmitter circuit, an indication that the last data unit of the first data packet has been consumed by the first receiver;
incrementing a first receiver-specific credit counter in response to receiving the indication that the last data unit belonging to the first data packet has been consumed by the first receiver; and
sending a first data unit belonging to the second data packet to the different second receiver using credits of the second receiver-specific credit counter incremented due to receiving the pre-issued acknowledgement for the second data packet to be transmitted.

### Claim 9 (depends on 8)

The method of claim 8, wherein the transmitter circuit comprises a plurality of credit counters, and further comprising reassigning each credit counter to a different respective receiver after a respective data packet is transmitted.

### Claim 10 (depends on 8)

The method of claim 8, wherein the second receiver of the processor is a different component of the processor than the first receiver of the processor.

### Claim 11 (depends on 8)

The method of claim 8, wherein the processor further comprises a line buffer, and wherein the first receiver is the line buffer.

### Claim 12 (depends on 8)

The method of claim 8, wherein receiving the pre-issued acknowledgement for the second data packet to be transmitted comprises receiving the pre-issued acknowledgement for the second data packet to be transmitted before sending any data units of the first data packet to be transmitted.

### Claim 13 (depends on 8)

The method of claim 8, further comprising incrementing the credits of the second receiver-specific credit counter due to receiving the pre-issued acknowledgment whenever the first receiver of the processor is a different component than the second receiver of the processor.

### Claim 14 (depends on 8)

The method of claim 8, further comprising sending interleaved data units to the first receiver and the second receiver using the first receiver-specific credit counter for data units belonging to the first data packet and the second receiver-specific credit counter for data units belonging to the second data packet respectively.

### Claim 15

A processor, comprising:
a network implementing a credit counter protocol that requires each sender to receive an acknowledgement from a receiver for a data packet to be transmitted before the sender sends data units belonging to the data packet;
one or more processing cores coupled to the network; and
a transmitter circuit coupling a first processing core of the one or more processing cores to the network, the transmitter circuit being configured to transmit data units output by the first processing core into the network, the transmitter circuit comprising means for:
initiating transmitting a first data packet to a first receiver of the processor,
providing a request for a different second data packet to be transmitted to a different second receiver of the processor before a last data unit of the first data packet has been transmitted to the first receiver,
receiving a pre-issued acknowledgement for the different second data packet to be transmitted before the last data unit of the first data packet has been transmitted to the first receiver,
incrementing a different second receiver-specific credit counter for the second receiver in response to receiving the pre-issued transaction acknowledgement for the different second data packet to be transmitted,
receiving an indication that the last data unit of the first data packet has been consumed by the first receiver,
incrementing a first receiver-specific credit counter for the first receiver of the first data packet in response to receiving the indication that the last data unit belonging to the first data packet has been consumed by the first receiver, and
sending a first data unit belonging to the different second data packet to the different second receiver using credits of the second receiver-specific credit counter incremented due to receiving the pre-issued acknowledgement for the different second data packet to be transmitted.
