US2008098208A1PendingUtilityA1

Analyzing and transforming a computer program for executing on asymmetric multiprocessing systems

Assignee: ADVANCED RISC MACH LTDPriority: Oct 24, 2006Filed: Sep 11, 2007Published: Apr 24, 2008
Est. expiryOct 24, 2026(~0.2 yrs left)· nominal 20-yr term from priority
G06F 11/3466G06F 11/36G06F 11/22G06F 11/28G06F 11/362G06F 11/3636
52
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

A method is disclosed for transforming a portion of a computer program comprising a list of sequential instructions comprising control code and data processing code and a program separation indicator indicating a point where said sequential instructions may be divided to form separate sections that are capable of being separately executed and that each comprise different data processing code. The m method comprises the steps of: (i) analysing said portion of said program to determine if said sequential instructions can be divided at said point indicated by said program separation indicator and in response to determining that it can: (iia) providing data communication between said separate sections indicated by said program separation indicator, such that said separate sections can be decoupled from each other, such that at least one of said sections is capable of being separately executed by an execution mechanism that is separate from an execution mechanism executing another of said separate sections, said at least one of said sections being capable of generating data and communicating said data to at least one other of said separate sections; and in response to determining it can not: (iib) not performing step (iia). If step (iia) is not performed then a warning may be output, or the program may be amended so it can be separated at that point, or the program separation indicator may be removed and the sections that were to be separated merged.

Claims

exact text as granted — not AI-modified
1 . A method of transforming a portion of a computer program comprising a list of sequential instructions comprising control code and data processing code and a program separation indicator indicating a point where said sequential instructions may be divided to form separate sections that are capable of being separately executed and that each comprise different data processing code, said method comprising the steps of:
 (i) analysing said portion of said program to determine if said sequential instructions can be divided at said point indicated by said program separation indicator and in response to determining that it can:   (iia) providing data communication between said separate sections indicated by said program separation indicator, such that said separate sections can be decoupled from each other, such that at least one of said sections is capable of being separately executed by an execution mechanism that is separate from an execution mechanism executing another of said separate sections, said at least one of said sections being capable of generating data and communicating said data to at least one other of said separate sections; and   
       in response to determining it can not:
 (iib) not performing step (iia). 
 
     
     
         2 . A method according to  claim 1 , wherein said step (iib) further comprises outputting a warning indicating an error in said computer program. 
     
     
         3 . A method according to  claim 1 , wherein said step (iib) comprises amending said computer program such that said sequential instructions can be divided at said point and then performing step (iia). 
     
     
         4 . A method according to  claim 3 , wherein said step of amending said computer program comprises inserting data transfer instructions at said point indicated by said program separation indicator. 
     
     
         5 . A method according to  claim 1 , wherein said step (iib) comprises merging said two sections together and removing said program separation indicator. 
     
     
         6 . A method according to  claim 1 , wherein said program separation indicator comprises at least one data transfer instruction, said data communication between said separate sections being provided in dependence upon said at least one data transfer instruction. 
     
     
         7 . A method according to  claim 1 , wherein said program separation indicator comprises a plurality of data transfer instructions each corresponding to one of a plurality of data variables. 
     
     
         8 . A method according to  claim 6 , wherein said step (iia) of providing data communication comprises inserting at least one “put data into a data store” instruction and at least one “get data from said data store” instruction into said instruction stream, and dividing said computer program between said put and get instructions to form said at least one separate section. 
     
     
         9 . A method according to  claim 8 , wherein said data store comprises a FIFO buffer. 
     
     
         10 . A method according to  claim 1 , wherein said step (iia) of providing data communication comprises allowing said data to be transferred in an order different to that it is generated in. 
     
     
         11 . A method according to  claim 1 , wherein said step (iia) comprises providing cyclic data communication between said separate sections. 
     
     
         12 . A method according to  claim 1 , wherein said separate sections comprise the same control code. 
     
     
         13 . A method according to  claim 1 , said portion of said computer program comprising a plurality of program separation indicators each indicating a point where said sequential instructions may be divided to form separate sections, each of said separate sections being capable of being separately executed and comprising different data processing code, said method providing data communication between said separate sections indicated by said plurality of program separation indicators. 
     
     
         14 . A method according to  claim 1 , wherein said transformed computer program is suitable for execution upon respective execution mechanisms of a heterogeneous system having a plurality of execution mechanisms. 
     
     
         15 . A method according to  claim 14 , wherein said heterogeneous system comprises an asymmetric memory hierarchy. 
     
     
         16 . A method according to  claim 14 , wherein said control code of at least one of said sections is operable to be processed by a processor of said heterogeneous system and said data processing code of said section is operable to be processed by an execution mechanism under control of said control code processed by said processor. 
     
     
         17 . A method according to  claim 14 , wherein said plurality of execution mechanisms include one or more of:
 a general purpose processor;   a direct memory access unit;   a coprocessor;   an VLIW processor;   a digital signal processor; and   a hardware accelerator unit.   
     
     
         18 . A method according to  claim 1 , wherein said method step comprises an initial step performed before step (i) of:
 defining said portion of said computer program by marking said computer program with indications delimiting said portion of said sequential instructions within which said at least two sections are to be located.   
     
     
         19 . A method according to  claim 1 , wherein said computer program comprises said portion having a number of instructions to be executed sequentially and at least one further portion having instructions to be performed in parallel with each other. 
     
     
         20 . A method according to  claim 1 , wherein said portion of said computer program comprises an instruction loop comprising at least two data processing instructions, and said at least two sections each comprise said instruction loop each section comprising at least one of said at least two data processing instructions, said at least two sections comprising different data processing instructions. 
     
     
         21 . A method according to  claim 1 , wherein said portion of said computer program comprises a whole computer program. 
     
     
         22 . A computer-readable storage medium comprising a computer program for controlling a computer to perform the method as claimed in  claim 1 . 
     
     
         23 . A computer executing a computer program to perform the method of  claim 1 . 
     
     
         24 . A method of transforming a portion of a computer program comprising a list of sequential instructions and a program separation indicator indicating a point where said sequential instructions may be divided to form separate sections that are capable of being separately executed and that each comprise different data processing code, said list of instructions comprising control code and data processing code, said method comprising the step of:
 (i) in response to said program separation indicator, providing data communication between said separate sections such that they can be decoupled from each other, such that at least one of said sections is capable of being separately executed by an execution mechanism that is separate from an execution mechanism executing another of said separate sections and said at least one of said sections can communicate data that it generates to at least one other of said separate sections via said provided data communication.   
     
     
         25 . A method according to  claim 24 , comprising a further initial step (0) performed before step (i) of in response to said program separation indicator, analysing said portion of said computer program and determining which of said sequential instructions should be in which of said separate sections prior to providing said data communication.

Join the waitlist — get patent alerts

Track US2008098208A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.