Programming a multi-processor system

US9965258B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9965258-B2
Application numberUS-201514972815-A
CountryUS
Kind codeB2
Filing dateDec 17, 2015
Priority dateMar 27, 2006
Publication dateMay 8, 2018
Grant dateMay 8, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

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.

First claim

Opening claim text (preview).

The invention claimed is: 1. A computer-implemented method, comprising: creating a program for 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 plurality of processors within an apparatus, wherein each of the processors is coupled to at least one other processor, and wherein the creating includes: creating machine language instructions based on source code, wherein the machine language instructions are designed to execute on the array of processors, wherein the source code specifies first functionality, and wherein the source code specifies a plurality of tasks and communication of data among the plurality of tasks; selecting communication mechanisms between tasks to perform at least a portion of the specified communication of data, wherein the communication mechanisms include shared local variables and message passing pathways, wherein the message passing pathways are via a plurality of communications units coupled to processors in the array of processors; using dependency information to detect potential conflicts for communication resources between messages; selecting or adjusting the message passing pathways to send potentially conflicting messages using different hardware routing resources, thereby avoiding conflicts for communication resources; determining an assignment of tasks to respective processors in the multi-processor system based on the selected communication mechanisms, including assigning tasks that use one or more shared local variables to different first and second processors that neighbor a shared memory and are both configured to access the shared memory, wherein the shared memory is selected to store the one or more shared local variables; and storing the machine language instructions in various ones of the plurality of memories, wherein the multi-processor system is operable to execute the machine language instructions using the local variables and the message passing pathways to implement the first functionality. 2. The computer-implemented method of claim 1 , further comprising: selecting communication mechanisms between tasks to perform a second portion of the specified communication of data wherein the selecting for the second portion is performed based on locations of tasks associated with the second portion. 3. The computer-implemented method of claim 1 , further comprising synthesizing the message passing pathways between processors by binding communication requirements in the source code to routing logic. 4. The computer-implemented method of claim 1 , further comprising: allocating local variables to memories based on data size and resource availability within the memories. 5. The computer-implemented method of claim 1 , wherein each of the communication units comprises a memory and routing logic. 6. The computer-implemented method of claim 1 , wherein the determining an assignment of tasks includes assigning tasks that use common shared variables prior to allocating tasks that do not have common shared variables. 7. The computer-implemented method of claim 1 , wherein the source code specifies communication in symbolic form. 8. The computer-implemented method of claim 1 , further comprising: generating a performance model for the multi-processor system based on locations of sending and receiving processing elements for the message passing pathways. 9. The computer-implemented method of claim 8 , further comprising: adjusting the selection of communication mechanisms and the assignment of tasks based on the performance model and a parameter associated with at least one of: latency, throughput, or power consumption. 10. The computer-implemented method of claim 1 , wherein the determining the assignment of tasks further includes assigning tasks for serial execution to the same processing element. 11. A non-transitory computer readable memory medium comprising: program instructions for creating a program for a multi-processor system, wherein the multi-processor system comprises an array of processors, wherein each of the processors is coupled to at least one other processor, wherein there are multiple communication mechanisms between the respective processors, wherein the program instructions are executable to: create machine language instructions based on source code, wherein the machine language instructions are designed to execute on the array of processors, wherein the source code specifies first functionality, and wherein the source code specifies a plurality of tasks and communication of data among the plurality of tasks; select communication mechanisms between tasks to perform at least a portion of the specified communication of data, wherein the communication mechanisms include shared local variables and message passing pathways, wherein the message passing pathways are via a plurality of communications units coupled to processors in the array of processors; use dependency information to detect potential conflicts for communication resources between messages; select or adjust the message passing pathways to send potentially conflicting messages using different hardware routing resources, thereby avoiding conflicts for communication resources; determine an assignment of tasks to respective processors in the multi-processor system based on the selected communication mechanisms, including to assign tasks that use one or more shared local variables to different first and second processors that neighbor a shared memory and are both configured to access the shared memory, wherein the shared memory is selected to store the one or more shared local variables; and store the machine language instructions in various ones of a plurality of memories of the multi-processor system, wherein the multi-processor system is operable to execute the machine language instructions using the local variables and the message passing pathways to implement the first functionality. 12. The non-transitory computer readable memory medium of claim 11 , wherein the program instructions are further executable to: select communication mechanisms between tasks to perform a second portion of the specified communication of data, wherein the communication mechanisms include shared local variables and message passing pathways, and wherein the selection for the second portion is performed based on locations of tasks associated with the second portion. 13. The non-transitory computer readable memory medium of claim 11 , wherein the program instructions are further executable to: synthesize the message passing pathways between processors by binding communication requirements in the source code to routing logic. 14. The non-transitory computer readable memory medium of claim 11 , wherein allocation of local variables to memories is based on data size and resource availability within the memories. 15. The non-transitory computer readable memory medium of claim 11 , wherein the determination of the assignment of tasks includes assigning tasks that use common shared variables prior to allocating tasks that do not have common shared variables. 16. The non-transitory computer readable memory medium of claim 11 , wherein the program instructions are further executable to: generate a performance model for the multi-processor system based on locations of sending and receiving processing elements for the message passing pathways. 17. The non-transitory computer readable memory medium of claim 11 , wherein the determi

Assignees

Inventors

Classifications

  • G06F8/451Primary

    Code distribution (considering CPU load at run-time G06F9/505; load rebalancing G06F9/5083) · CPC title

  • Creation or generation of source code · CPC title

  • Program synchronisation; Mutual exclusion, e.g. by means of semaphores · CPC title

  • Interprogram communication · CPC title

  • Message passing systems or structures, e.g. queues · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9965258B2 cover?
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) expli…
Who is the assignee on this patent?
Coherent Logix Inc
What technology area does this patent fall under?
Primary CPC classification G06F8/451. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue May 08 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).