IP Library Granted Patent US 10,776,085
Granted Patent B2
US 10,776,085 · App. 15/951,354 · Granted Sep 15, 2020

Programming a multi-processor system

Inventors: John Mark Beardslee (Menlo Park, CA); Michael B. Doerr (Dripping Springs, TX); Tommy K. Eng (Pleasanton, CA)
Assignee: Coherent Logix, Incorporated
G06F8/41G06F8/30G06F8/451G06F9/52G06F9/54G06F9/546
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,776,085
App. No.
15/951,354
Granted
Sep 15, 2020
Kind
B2
Abstract

A computer-implemented method for creating a program for a multi-processor system comprising a plurality of interspersed processors and memories. A user may specify or create source code using a programming language. The source code specifies a plurality of tasks and communication of data among the plurality of tasks. However, the source code may not (and preferably is not required to) 1) explicitly specify which physical processor will execute each task and 2) explicitly specify which communication mechanism to use among the plurality of tasks. The method then creates machine language instructions based on the source code, wherein the machine language instructions are designed to execute on the plurality of processors. Creation of the machine language instructions comprises assigning tasks for execution on respective processors and selecting communication mechanisms between the processors based on location of the respective processors and required data communication to satisfy system requirements.

Claims (46)

1. A method, comprising:

configuring communications mechanisms for a program to be executed on a multi-processor system, wherein the multi-processor system comprises an array of processors and a plurality of memories coupled to the processors, wherein the plurality of memories are interspersed among the processors within an apparatus, wherein each of the processors is coupled to at least one other processor, and wherein the configuring includes:

determining, for each of a plurality of communications of the program, sending and receiving processors and a location of data being communicated;

generating performance modeling data based on the determined sending and receiving processors and data locations, wherein the performance modeling data includes indications of predicted messaging congestion;

selecting communications mechanisms for the plurality of communications based on the performance modeling data, including selecting message passing for at least a portion of the communications and shared memory for at least a portion of the communications;

routing, based on the performance modeling data, communications paths for communications for which message passing is selected; and

synthesizing the routed communications paths.

2. The method of claim 1 , wherein the selecting communications mechanisms includes selecting from among shared memory, memory to memory, memory to register, register to memory, and register to register transfers.

3. The method of claim 1 , wherein the determining is based on symbolic processor indicators in the program.

4. The method of claim 1 , wherein the synthesizing includes binding communications requirements specified in source code of the program to routing logic.

5. The method of claim 1 , further comprising:

assigning tasks to processors based on the performance modeling data.

6. The method of claim 1 , wherein the selecting and routing are further based on one or more parameters associated with the performance modeling data including one or more of: latency, throughput, and power consumption.

7. The method of claim 1 , further comprising:

determining a schedule for multiple ones of the message passing communications that share at least a portion of a physical route.

8. The method of claim 1 , wherein the determining includes copying data for one of the communications to multiple memories.

9. A non-transitory computer-readable medium having instructions stored thereon that are executable by a computing device to perform operations comprising:

configuring communications mechanisms for a program to be executed on a multi-processor system, wherein the multi-processor system comprises an array of processors and a plurality of memories coupled to the processors, wherein the plurality of memories are interspersed among the processors within an apparatus, wherein each of the processors is coupled to at least one other processor, and wherein the configuring includes:

determining, for each of a plurality of communications of the program, sending and receiving processors and a location of data being communicated;

generating performance modeling data based on the determined sending and receiving processors and data locations, wherein the performance modeling data includes indications of predicted messaging congestion;

selecting communications mechanisms for the plurality of communications based on the performance modeling data, including selecting message passing for at least a portion of the communications and shared memory for at least a portion of the communications;

routing, based on the performance modeling data, communications paths for communications for which message passing is selected; and

synthesizing the routed communications paths.

10. The non-transitory computer-readable medium of claim 9 , wherein the selecting communications mechanisms includes selecting from among shared memory, memory to memory, memory to register, register to memory, and register to register transfers.

11. The non-transitory computer-readable medium of claim 9 , wherein the determining is based on symbolic processor indicators in the program.

12. The non-transitory computer-readable medium of claim 9 , wherein the synthesizing includes binding communications requirements specified in source code of the program to routing logic.

13. The non-transitory computer-readable medium of claim 9 , wherein the operations further comprise:

assigning tasks to processors based on the performance modeling data.

14. The non-transitory computer-readable medium of claim 9 , wherein the routing is further based on a latency parameter associated with the performance modeling data.

15. The non-transitory computer-readable medium of claim 9 , wherein the routing is further based on a throughput parameter associated with the performance modeling data.

16. The non-transitory computer-readable medium of claim 9 , wherein the operations further comprise:

implementing a deadlock avoidance mechanism for multiple ones of the message passing communications that share at least a portion of a physical route.

17. An apparatus, comprising:

one or more processors; and

one or more memories having program instructions stored thereon that are executable by the one or more processors to:

configure communications mechanisms for a program to be executed on a multi-processor system, wherein the multi-processor system comprises an array of processors and a plurality of memories coupled to the processors, wherein the plurality of memories are interspersed among the processors within an apparatus, wherein each of the processors is coupled to at least one other processor, and wherein the configuration includes:

determine, for each of a plurality of communications of the program, sending and receiving processors and a location of data being communicated;

generate performance modeling data based on the determined sending and receiving processors and data locations, wherein the performance modeling data includes indications of predicted messaging congestion;

select communications mechanisms for the plurality of communications based on the performance modeling data, including selecting message passing for at least a portion of the communications and shared memory for at least a portion of the communications;

route, based on the performance modeling data, communications paths for communications for which message passing is selected; and

synthesize the routed communications paths.

18. The apparatus of claim 17 , wherein to selection the communications mechanisms, the instructions are executable to select from among: shared memory, memory to memory, memory to register, register to memory, and register to register transfers.

19. The apparatus of claim 17 , wherein the instructions are further executable to:

assign tasks to processors based on the performance modeling data.

20. The apparatus of claim 17 , wherein the instructions are further executable to:

resolve one or more conflicts between multiple ones of the message passing communications that share at least a portion of a physical route.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2025
From: PACIFIC CAP ACQUISITION FUND, LLC
To: HYPERX HOLDINGS LLC
Reel/Frame 072342/0090 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 6, 2025
From: COHERENT LOGIX, INC.
To: PACIFIC CAP ACQUISITION FUND, LLC
Reel/Frame 072370/0394 →
SECURITY INTEREST Recorded Apr 11, 2024
From: COHERENT LOGIX, INCORPORATED
To: ACP POST OAK CREDIT I LLC
Reel/Frame 067097/0363 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2018
From: BEARDSLEE, JOHN MARK; DOERR, MICHAEL B.; ENG, TOMMY K.
To: COHERENT LOGIX, INCORPORATED
Reel/Frame 045518/0352 →
Continuity (5)
Continuation 14972815 · Dec 17, 2015
Continuation 14284573 · May 22, 2014
Continuation 11691889 · Mar 27, 2007
Provisional Application 60786582 · Mar 27, 2006
Related Publication 20180232218A1 · Aug 16, 2018