IP Library Granted Patent US 12,136,000
Granted Patent B2
US 12,136,000 · App. 18/136,976 · Granted Nov 5, 2024

Programming flow for multi-processor system

Inventors: Michael L. Purnell (Scotts Valley, CA); Geoffrey N. Ellis (Santa Cruz, CA); Teng-I Wang (Yorba Linda, CA)
Assignee: Coherent Logix, Incorporated
G06F9/5077G06F8/443G06F9/3877G06F9/5038G06F9/5066G06F13/28
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 12,136,000
App. No.
18/136,976
Granted
Nov 5, 2024
Kind
B2
Abstract

Various embodiments are disclosed of a compilation with optimization for multi-processor system with processing elements optimized for high performance and low power dissipation and an associated method of programming the processing elements. Application source code may be initially compiled into an intermediate representation. Following the initial compilation, resources may be mapped and communication synthesis performed. Simulation and debug may be performed prior to loading an executable image onto the multi-processor system. At each step, checks may be performed for possible optimizations, and one or more steps repeated using results of the checks.

Claims (51)

1. A method, comprising:

by a multi-processor array comprising a plurality of processors interspersed among a plurality of memories;

performing a front-end compilation using application source code to generate a plurality of intermediate representations and connectivity information, wherein a particular intermediate representation of the plurality of intermediate representations corresponds to a particular task of a plurality of tasks, wherein the connectivity information includes a plurality of connections, and wherein a particular connection specifies a communication between a first task of the plurality of tasks and a second task of the plurality of tasks;

mapping logical objects included in the application source code to physical resources included in the multi-processor array using the plurality of intermediate representations and the connectivity information to generate a resource map, wherein mapping the logical objects to the physical resources is constrained by one or more of a plurality of constraints;

selecting a respective implementation for each connection in the plurality of connections;

performing a first optimization operation using the plurality of intermediate representations to generate a plurality of optimized intermediate representations, wherein the first optimization operation modifies the mapping of the logical objects to the physical resources to assign multiple tasks to a single processor of the plurality of processors while avoiding one or both of saving and restoring state information;

generating executable code using the plurality of optimized intermediate representations; and

loading the executable code onto the multi-processor array.

2. The method of claim 1 , wherein the plurality of constraints includes one or more required constraints and one or more optional constraints.

3. The method of claim 2 , further comprising, generating a mapping error in response to determining that a given one of the one or more required constraints could not be satisfied.

4. The method of claim 2 , further comprising, selecting the respective implementations for the plurality of connections, in response to determining that a given one of the one or more optional constraints could not be satisfied.

5. The method of claim 1 , wherein the plurality of constraints includes a plurality of location constraints and a plurality of communication constraints.

6. The method of claim 1 , wherein a particular processor of the plurality of processors includes a data memory, and wherein mapping the logical objects includes:

assigning a particular task of the plurality of tasks to the particular processor of the plurality of processors; and

assigning a variable associated with the particular task to the data memory.

7. The method of claim 1 ,

wherein the state information comprises one or both of registers and variables.

8. A computer system, comprising:

a multi processor array comprising:

a plurality of memories configured to store instructions; and

a plurality of processors interspersed among the the plurality of memories and configured execute instructions to cause the computer system to perform operations including:

performing a front-end compilation using application source code to generate a plurality of intermediate representations and connectivity information, wherein a particular intermediate representation of the plurality of intermediate representations corresponds to a particular task of a plurality of tasks, wherein the connectivity information includes a plurality of connections, and wherein a particular connection specifies a communication between a first task of the plurality of tasks and a second task of the plurality of tasks;

mapping, using the plurality of intermediate representations, the connectivity information and a plurality of constraints, logical objects included in the application source code to physical resources included in the multi-processor array to generate a resource map;

selecting a respective implementation for each connection in the plurality of connections;

performing a first optimization operation using the plurality of intermediate representations to generate a plurality of optimized intermediate representations, wherein the first optimization operation modifies the mapping of the logical objects to the physical resources to assign multiple tasks to a single processor of the plurality of processors while avoiding one or both of saving and restoring state information;

generating executable code using the plurality of optimized intermediate representations; and

loading the executable code onto the multiprocessor array.

9. The computer system of claim 8 , wherein the plurality of constraints includes one or more required constraints and one or more optional constraints.

10. The computer system of claim 9 , wherein the operations further include generating a mapping error in response to determining that a given one of the one or more required constraints could not be satisfied.

11. The computer system of claim 9 , wherein the operations further include selecting the respective implementation for the plurality of connections, in response to determining that a given one of the one or more optional constraints could not be satisfied.

12. The computer system of claim 8 , wherein the plurality of constraints includes a plurality of location constraints and a plurality of communication constraints.

13. The computer system of claim 8 , wherein the multi-processor array includes a plurality of processors, wherein a particular processor of the plurality of processors includes a data memory, and wherein mapping the logical objects includes:

assigning a particular task of the plurality of tasks to the particular processor of the plurality of processors; and

assigning a variable associated with the particular task to the data memory.

14. The computer system of claim 8 , wherein the operations further include:

simulating the executable code to generate a simulation result; and

modifying at least the application source code based on the simulation result.

15. A non-transitory computer-accessible storage medium having programming instructions stored therein that, in response to execution by a computer system, causes the computer system to perform operations comprising:

performing a front-end compilation using application source code to generate a plurality of intermediate representations and connectivity information, wherein a particular intermediate representation of the plurality of intermediate representations corresponds to a particular task of a plurality of tasks, wherein the connectivity information includes a plurality of connections, and wherein a particular connection specifies a communication between a first task of the plurality of tasks and a second task of the plurality of tasks;

mapping, using the plurality of intermediate representations, the connectivity information and a plurality of constraints, logical objects included in the application source code to physical resources included in a multi-processor array of the computer system to generate a resource map, wherein the multi-processor array comprises a plurality of processors interspersed among a plurality of memories;

selecting a respective implementation for each connection in the plurality of connections;

performing a first optimization operation using the plurality of intermediate representations to generate a plurality of optimized intermediate representations, wherein the first optimization operation modifies the mapping of the logical objects to the physical resources to assign multiple tasks to a single processor of the plurality of processors while avoiding one or both of saving and restoring state information;

generating executable code using the plurality of optimized intermediate representations; and

loading the executable code onto the multi-processor array.

16. The non-transitory computer-accessible storage medium of claim 15 , wherein the plurality of constraints includes one or more required constraints and one or more optional constraints.

17. The non-transitory computer-accessible storage medium of claim 16 , wherein the operations further include generating a mapping error in response to determining that a given one of the one or more required constraints could not be satisfied.

18. The non-transitory computer-accessible storage medium of claim 16 , wherein the operations further include selecting the respective implementation for the plurality of connections, in response to determining that a given one of the one or more optional constraints could not be satisfied.

19. The non-transitory computer-accessible storage medium of claim 15 , wherein the plurality of constraints includes a plurality of location constraints and a plurality of communication constraints.

20. The non-transitory computer-accessible storage medium of claim 15 , wherein the multi-processor array includes a plurality of processors, wherein a particular processor of the plurality of processors includes a data memory, and wherein mapping the logical objects includes:

assigning a particular task of the plurality of tasks to the particular processor of the plurality of processors; and

assigning a variable associated with the particular task to the data memory.

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 May 6, 2024
From: COHERENT LOGIX, INCORPORATED
To: PACIFIC CAP ACQUISITION FUND, LLC
Reel/Frame 067325/0476 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 20, 2023
From: PURNELL, MICHAEL L.; ELLIS, GEOFFREY N.; WANG, TENG-I
To: COHERENT LOGIX, INCORPORATED
Reel/Frame 063386/0624 →
Continuity (3)
Continuation 16177680 · Nov 1, 2018
Provisional Application 62581525 · Nov 3, 2017
Related Publication 20230359509A1 · Nov 9, 2023