# US 2013/0160028 A1 · Method and apparatus for low latency communication and synchronization for multi-thread applications

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

- Number: US 2013/0160028 A1
- Document ID: US20130160028A1
- Status: Published application
- Kind: A1
- Application number: 13/325,222
- Filed: 2011-12-14
- Published: 2013-06-20
- Earliest claimed: 2011-12-14
- Inventors: John E. Black
- Web page: https://patentgrep.com/patent/US20130160028A1

## CPC

- G06F 9/546: {Message passing systems or structures, e.g. queues}
- G06F 15/17325: {Synchronisation; Hardware support therefor (intertask synchronisation G06F9/52)}
- G06F 2209/548: Queue
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A computing device, a communication/synchronization path or channel apparatus and a method for parallel processing of a plurality of processors. The parallel processing computing device includes a first processor having a first central processing unit (CPU) core, at least one second processor having a second central processing unit (CPU) core, and at least one communication/synchronization (com/syn) path or channel coupled between the first CPU core and the at least one second CPU core. The communication/synchronization channel can include a request message queue configured to receive request messages from the first CPU core and to send request messages to the second CPU core, and a response message queue configured to receive response messages from the second CPU core and to send response messages to the first CPU core.

## Claims

### Claim 1

A parallel processing computing device, comprising:
a first processor having a first central processing unit (CPU) core;
at least one second processor having a second central processing unit (CPU) core; and
at least one communication/synchronization (com/syn) channel coupled between the first CPU core and the at least one second CPU core,
wherein the at least one communication/synchronization (com/syn) channel includes
a request message communications path configured to receive request messages sent from the first CPU core and to deliver request messages to the second CPU core, and
a response message communications path configured to receive response messages sent from the second CPU core and to deliver response messages to the first CPU core.

### Claim 2 (depends on 1)

The computing device as recited in claim 1, wherein at least one of the request message communications path and the response message communications path includes a message queue having associated therewith a write address queue pointer register and a read address queue pointer register, wherein the write address queue pointer register is configured to identify the position in the message queue where a current message is to be written, and wherein the read address queue pointer is configured to identify the position in the message queue where a current message is to be read from the queue.

### Claim 3 (depends on 2)

The computing device as recited in claim 2, wherein the message queue has associated therewith logic to determine whether the message queue is full and to determine whether the message queue is empty.

### Claim 4 (depends on 2)

The computing device as recited in claim 2, wherein the message queue has a back end and a queue process identification (PID) number associated with the back end of the message queue, and wherein the computing device further comprises logic that allows message data to be sent to the back end of the message queue only if a comparison of the queue PID associated with the back end of the message queue and a core PID stored in the CPU core coupled to the back end of the message queue determines that access to the message queue is permitted by the application currently using the CPU core.

### Claim 5 (depends on 2)

The computing device as recited in claim 2, wherein the message queue has a front end and a queue process identification (PID) number associated with the front end of the message queue, and wherein the computing device further comprises logic that allows message data to be received from the front end of the message queue only if a comparison of the queue PID associated with the front end of the message queue and a core PID stored in the CPU core coupled to the front end of the message queue determines that access to the message queue is permitted by the application currently using the CPU core.

### Claim 6 (depends on 1)

The computing device as recited in claim 1, wherein the first processor and the at least one second processor further comprises a plurality of processors each having a corresponding CPU core, and wherein the at least one com/syn channel further comprises at least one communication/synchronization channel coupled between each of the plurality of CPU cores of the plurality of processors.

### Claim 7 (depends on 1)

The computing device as recited in claim 1, wherein at least one of the request message communications path and the response message communications path is a unidirectional first in first out (FIFO) buffer.

### Claim 8 (depends on 1)

The computing device as recited in claim 1, wherein at least one of the request message communications path and the response message communications path includes a storage device for storing therein at least one message from at least one of the first CPU core and the second CPU core.

### Claim 9

A communication/synchronization (com/syn) channel apparatus for parallel processing of a plurality of processors, comprising:
at least one request message communications path coupled between a CPU core of a first processor and a CPU core of a second processor,
wherein the request message communications path is configured to receive request messages from the first CPU core and to deliver request messages to the second CPU core, and
at least one response message communications path coupled between a CPU core of a first processor and a CPU core of a second processor,
wherein the response message communications path is configured to receive response messages from the second CPU core and to deliver response messages to the first CPU core.

### Claim 10 (depends on 9)

The apparatus as recited in claim 9, wherein at least one of the request message communications path and the response message communications path includes a message queue having associated therewith a write address queue pointer register and a read address queue pointer register, wherein the write address queue pointer register is configured to identify the position in the queue where a current message is to be written, and wherein the read address queue pointer is configured to identify the position in the queue where a current message is to be read from the queue.

### Claim 11 (depends on 10)

The apparatus as recited in claim 10, wherein the message queue has associated therewith logic to determine whether the message queue is full and to determine whether the message queue is empty.

### Claim 12 (depends on 10)

The apparatus as recited in claim 10, wherein the message queue has a back end and a queue process identification (PID) number associated with the back end of the message queue, and wherein the apparatus further comprises logic that allows message data to be delivered to the back end of the message queue only if a comparison of the queue PID associated with the back end of the message queue and a core PID stored in the CPU core coupled to the back end of the message queue determines that access to the message queue is permitted by the application currently using the CPU core.

### Claim 13 (depends on 10)

The apparatus as recited in claim 10, wherein the message queue has a front end and a queue process identification (PID) number associated with the front end of the queue, and wherein the apparatus further comprises logic that allows message data to be retrieved from the front end of the queue only if a comparison of the queue PID associated with the front end of the message queue and a core PID stored in the CPU core coupled to the front end of the message queue determines that access to the message queue is permitted by the application currently using the CPU core.

### Claim 14 (depends on 9)

The apparatus as recited in claim 9, wherein at least one of the request message communications path and the response message communications path includes a storage device for storing therein at least one message from at least one of the first CPU core and the second CPU core.

### Claim 15

A method for parallel processing of a plurality of processors, comprising:
coupling at least one communication/synchronization (com/syn) channel between a CPU core of a first processor and a CPU core of a second processor,
wherein the at least one communication/synchronization (com/syn) channel includes
a request message communications path configured to receive request messages from the first CPU core and to deliver request messages to the second CPU core, and
a response message communications path configured to receive response messages from the second CPU core and to deliver response messages to the first CPU core;
receiving by the request message communications path a request message from the first CPU core;
delivering by the request message communications path a request message to the second CPU core;
receiving by a response message queue a response message from the second CPU core; and
delivering by a response message queue a response message to the first CPU core.

### Claim 16 (depends on 15)

The method as recited in claim 15, wherein at least one of the request message communications path and the response message communications path includes a message queue having associated therewith a write address queue pointer register and a read address queue pointer register, and wherein the method further comprises the write address queue pointer register identifying the position in the message queue where a current message is to be written and the read address queue pointer register identifying the position in the message queue where a current message is to be read from the queue.

### Claim 17 (depends on 16)

The method as recited in claim 16, further comprising determining by logic associated with the message queue whether the message queue is full and determining whether the message queue is empty.

### Claim 18 (depends on 16)

The method as recited in claim 16, wherein the message queue has a back end and a queue process identification (PID) number associated with the back end of the message queue, and wherein the method further comprises allowing message data to be delivered to the back end of the message queue only if a comparison of the queue PID associated with the back end of the message queue and a core PID stored in the CPU core coupled to the back end of the message queue determines that access to the message queue is permitted by the application currently using the CPU core.

### Claim 19 (depends on 16)

The method as recited in claim 16, wherein the message queue has a front end and a queue process identification (PID) number associated with the front end of the queue, and wherein the method further comprises allowing message data to be retrieved from the front end of the message queue only if a comparison of the queue PID associated with the front end of the message queue and a core PID stored in the CPU core coupled to the front end of the message queue determines that access to the message queue is permitted by the application currently using the CPU core.
