US2009198776A1PendingUtilityA1

Computer architecture and method of operation for multi-computer distributed processing with initialization of objects

Assignee: WARATEK PTY LTDPriority: Apr 23, 2004Filed: Dec 19, 2008Published: Aug 6, 2009
Est. expiryApr 23, 2024(expired)· nominal 20-yr term from priority
G06F 15/16G06F 8/456
56
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

The present invention discloses a modified computer architecture which ( 50, 71, 72 ) enables an applications program ( 50 ) to be run simultaneously on a plurality of computers (M 1 , . . . Mn). Shared memory at each computer is updated with amendments and/or overwrites so that all memory read requests are satisfied locally. During initial program loading ( 75 ), or similar, instructions which result in memory being re-written or manipulated are identified ( 92 ). Additional instructions are inserted ( 103 ) to cause the equivalent memory locations at all computers to be updated. In particular, the initialisation of JAVA language classes and objects is disclosed ( 162, 163 ) so all memory locations for all computers are initialized in the same manner.

Claims

exact text as granted — not AI-modified
1 . A method of compiling or modifying an application program written to operate on only one computer to have different portions thereof to execute substantially simultaneously on different ones of a plurality of computers interconnected via a communications link without creating a distributed shared memory arrangement; said method comprising the steps of: (i) detecting instructions which create objects a in local independent memory of a single one of said computers; and (ii) activating an initialization routine following each said detected object creation instruction, said initialization routine forwarding each created object to the remainder of said computers. 
   
   
       2 . The method as claimed in  claim 1  and carried out prior to loading the application program onto each said computer, or during loading of the application program onto each said computer, or after loading of the application program onto each said computer and before execution of the relevant portion of the application program. 
   
   
       3 . A method of ensuring for a single computer consistent initialization of an application program written to operate on only one computer but different portions of which application program are to be executed substantially simultaneously each on a different one of a plurality of computers: said plurality of computers including said single computer and being interconnected via a communications network without forming a distributed shared memory arrangement; said method comprising the steps of:
 (i) scrutinizing said application program at, or prior to, or after loading to detect each program step defining an initialization routine; and   (ii) modifying said initialization routine to generate a corresponding modified initialization routine to ensure consistent operation of all said computers.   
   
   
       4 . The method as claimed in  claim 3  wherein said initialization routine is modified to execute once only on the creation of a first object by any one of said computers and is modified to be disabled on the creation of each subsequent peer copy of said object by the remainder of said computers. 
   
   
       5 . The method claimed in  claim 3  wherein step (ii) comprises the steps of:
 (iii) loading and executing said initialization routine on said single computer;   (iv) modifying said initialization routine by said single computer; and   (v) transferring said modified initialization routine to each of the remaining computers.   
   
   
       6 . The method as claimed in  claim 5  wherein said modified initialization routine is supplied by said single computer direct to each of said remaining computers. 
   
   
       7 . The method as claimed in  claim 5  wherein said modified initialization routine is supplied in cascade fashion from said single computer sequentially to each of said remaining computers. 
   
   
       8 . The method claimed in  claim 3  wherein step (ii) comprises the steps of: (vi) loading and modifying said initialization routine on said single computer; (vii) said single computer sending said initialization routine to each of the remaining computers; and (viii) each of said remaining computers modifying said initialization routine after receipt of same. 
   
   
       9 . The method claimed in  claim 8  wherein said initialization routine is supplied by said single computer directly to each of said remaining computers. 
   
   
       10 . The method claimed in  claim 8  wherein said initialization routine is supplied in cascade fashion from said single computer sequentially to each of said remaining computers. 
   
   
       11 . The method claimed in  claim 4  wherein step (ii) comprises the steps
 (iii) loading and executing said initialization routine on said single computer;   (iv) modifying said initialization routine by said single computer; and   (v) transferring said modified initialization routine to each of the remaining computers.   
   
   
       12 . The method as claimed in  claim 11  wherein said modified initialization routine is supplied by said single computer direct to each of said remaining computers. 
   
   
       13 . The method as claimed in  claim 11  wherein said modified initialization routine is supplied in cascade fashion from said single computer sequentially to each of said remaining computers. 
   
   
       14 . The method claimed in  claim 11  wherein step (ii) comprises the steps of:
 (vi) loading and modifying said initialization routine on said single computer;   (vii) said single computer sending said unmodified initialization routine to each of the remaining computers; and   (viii) each of said remaining computers modifying said initialization routine after receipt of same.   
   
   
       15 . The method claimed in  claim 14  wherein said unmodified initialization routine is supplied by said single computer directly to each of said remaining computers. 
   
   
       16 . The method claimed in  claim 14  wherein said unmodified initialization routine is supplied in cascade fashion from said single computer sequentially to each of said remaining computers. 
   
   
       17 . A computer program product comprising a set of program instructions stored in a storage medium and operable to permit either a single computer or a plurality of computers, or a plurality of computers in cooperation with a single computer, to carry out the method as claimed in  claim 1 . 
   
   
       18 . A computer program product comprising a set of program instructions stored in a storage medium and operable to permit either a single computer, or a plurality of computers, or a plurality of computers in cooperation with a single computer, to carry out the method as claimed in  claim 3 . 
   
   
       19 . A single computer intended to operate with a plurality of computers interconnected via a communication network without forming a distributed shared memory arrangement and operable to ensure consistent initialization of an application program written to operate on only one computer but running substantially simultaneously on all said computers, said single computer being programmed to carry out the method as claimed in  claim 1 . 
   
   
       20 . A single computer intended to operate with a plurality of computers interconnected via a communication network without forming a distributed shared memory arrangement and operable to ensure consistent initialization of an application program written to operate on only one computer but running substantially simultaneously on all said computers, said single computer being programmed to carry out the method as claimed in  claim 3 . 
   
   
       21 . A single computer intended to operate in a multiple computer system comprising a plurality of computers interconnected by a communications network without forming a distributed shared memory arrangement, said single computer having at least one application program each written to operate on only one computer but running simultaneously on said plurality of computers wherein different portions of said at least one application program execute substantially simultaneously on different ones of said plurality of computers and for each said different portion a like plurality of substantially identical objects are created; each in a local independent memory of the corresponding computer and each having a substantially identical name; and wherein the initial contents of each of said substantially identically named objects is substantially the same. 
   
   
       22 . The single computer as claimed in  claim 21  wherein each said computer includes a distributed run time means with the distributed run time means of each said computer able to communicate with all other computers so that if a portion of said application program(s) running on one of said computers creates an object in that computer then the created object is propagated by the distributed run time means of said one computer to all the other computers. 
   
   
       23 . The single computer as claimed in  claim 22  wherein each said application program is modified before, during, or after loading by inserting an initialization routine to modify each instance at which said application program creates an object, said initialization routine propagating every object newly created by one computer to all said other computers. 
   
   
       24 . The single computer as claimed in  claim 23  wherein said inserted initialization routine modifies a preexisting initialization routine to enable the pre-existing initialization routine to execute on creation of the first of said like plurality of objects, and to disable the pre-existing initialization routine on creation of all subsequent ones of said like plurality of objects. 
   
   
       25 . The single computer as claimed in  claim 24  wherein the application program is modified in accordance with a procedure selected from the group of procedures consisting of re-compilation at loading, pre-compilation prior to loading, compilation prior to loading, just-in-time compilation, and re-compilation after loading and before execution of the relevant portion of application program. 
   
   
       26 . The single computer as claimed in  claim 25  wherein said modified application program is transferred to all said computers in accordance with a procedure selected from the group consisting of master/slave transfer, branched transfer and cascaded transfer. 
   
   
       27 . A single computer arranged to operate within a plurality of computers interconnected via a communications link without forming a distributed shared memory arrangement, said plurality of computers substantially simultaneously operating at least one application program each written to operate on only one computer; wherein each said computer substantially simultaneously executes a different portion of said at least one application program; each said computer in operating its application program portion creates objects only in local independent memory physically located in each said computer, the contents of the local independent memory utilized by each said computer are fundamentally similar but not, at each instant, identical; and every one of said computers has a distribution update means to distribute to all other said computers objects created by said single computer. 
   
   
       28 . The single computer as claimed in  claim 27  wherein the local memory capacity allocated to each said application program is substantially identical and the total memory capacity available to each said application program is said allocated memory capacity. 
   
   
       29 . The single computer as claimed in  claim 27  wherein all said distribution update means communicate via said communications link at a data transfer rate which is substantially less than the local memory read rate. 
   
   
       30 . The single computer as claimed in  claim 27  wherein at least some of said computers are manufactured by different manufacturers and/or have different operating systems. 
   
   
       31 . A method of running on a single computer at least one application program each written to operate on only one computer; said single computer being intended to operate in cooperation with a plurality of other computers which are interconnected by means of a communications network without forming a distributed shared memory arrangement; said method comprising the steps of:
 (i) executing different portions of said at least one application program substantially simultaneously on different ones of said other computers and for each said portion creating a like plurality of substantially identical objects each in a local independent memory of the corresponding computer and each having a substantially identical name; and   (ii) creating the initial contents of each of said identically named objects substantially the same.   
   
   
       32 . The method as claimed in  claim 31  comprising the further step of: (iii) if a portion of said application program running on one of said computers creates an object in that computer, then the created object is propagated to all of the other computers via said communications network. 
   
   
       33 . The method as claimed in  claim 32  including the further step of: (iv) modifying said application program before, during or after loading by inserting an initialization routine to modify each instance at which said application program creates an object, said initialization routine propagating every object created by one computer to all said other computers. 
   
   
       34 . The method as claimed in  claim 33  including the further step of: (v) modifying said application program utilizing a procedure selected from the group of procedures consisting of re-compilation at loading, pre-compilation prior to loading, compilation prior to loading, just-in-time compilation, and re-compilation after loading and before execution of the relevant portion of application program. 
   
   
       35 . The method as claimed in  claim 33  including the further step of: (vi) transferring the modified application program to all said computers utilizing a procedure selected from the group consisting of master/slave transfer, branched transfer and cascaded transfer. 
   
   
       36 . In a multiple thread processing computer operation taking place on a single computer intended to operate in cooperation with a plurality of computers and in which individual threads of a single application program written to operate on only one computer are simultaneously being processed each on a different corresponding one of a plurality of computers interconnected via a communications link without forming a distributed shared memory arrangement; the improvement comprising: communicating objects created in local independent memory physically associated with the computer processing each thread to the local independent memory of each other said computer via said communications link. 
   
   
       37 . The improvement as claimed in  claim 36  wherein objects created in the memory associated with one said thread are communicated by the computer of said one thread to all other said computers. 
   
   
       38 . The improvement as claimed in  claim 36  wherein objects created the memory associated with one said thread are transmitted to the computer associated with another said thread and are transmitted thereby to all said other computers. 
   
   
       39 . A computer program product comprising a set of program instructions stored in a storage medium and operable to permit either a single computer, or a plurality of computers, or a plurality of computers in cooperation with a single computer, to carry out the method as claimed in  claim 36 . 
   
   
       40 . A single computer intended to operate with a plurality of computers interconnected via a communication network without forming a distributed shared memory arrangement and operable to ensure consistent initialization of an application program written to operate on only one computer but running substantially simultaneously on all said computers, said single computer being programmed to carry out the method as claimed in  claim 31 . 
   
   
       41 . A single computer intended to operate with a plurality of computers interconnected via a communication network without forming a distributed shared memory arrangement and operable to ensure consistent initialization of an application program written to operate on only one computer but running substantially simultaneously on all said computers, said single computer being programmed to carry out the method as claimed in  claim 36 . 
   
   
       42 . A single computer intended to operate with a plurality of computers interconnected via a communication network without forming a distributed shared memory arrangement and operable to ensure consistent initialization of an application program written to operate on only one computer but running substantially simultaneously on all said computers, said single computer being loaded with the computer program product as claimed in  claim 17 . 
   
   
       43 . A single computer intended to operate with a plurality of computers interconnected via a communication network without forming a distributed shared memory arrangement and operable to ensure consistent initialization of an application program written to operate on only one computer but running substantially simultaneously on all said computers, said single computer being loaded with the computer program product as claimed in  claim 39 . 
   
   
       44 . A single computer intended to operate with a plurality of computers interconnected via a communication network without forming a distributed shared memory arrangement and operable to ensure consistent initialization of an application program written to operate on only one computer but running substantially simultaneously on all said computers, said single computer being loaded with the computer program product as claimed in  claim 18 . 
   
   
       45 . A computer program product comprising a set of program instructions stored in a storage medium and operable to permit either a single computer, or a plurality of computers, or a plurality of computers in cooperation with a single computer, to carry out the method as claimed in  claim 31 . 
   
   
       46 . A single computer intended to operate with a plurality of computers interconnected via a communication network without forming a distributed shared memory arrangement and operable to ensure consistent initialization of an application program written to operate on only one computer but running substantially simultaneously on all said computers, said single computer being loaded with the computer program product as claimed in  claim 45 . 
   
   
       47 . In a multiple computer system comprising a plurality of computers, a method of compiling or modifying an application program written to operate on only one computer to have different portions thereof to execute substantially simultaneously on different ones of said plurality of computers interconnected via a communications link without creating a distributed shared memory arrangement; said method comprising the steps of:
 (i) detecting instructions which create objects a in local independent memory of a single one of said computers of said plurality of computers; and   (ii) activating an initialization routine following each said detected object creation instruction, said initialization routine forwarding each created object to the remainder of said plurality of computers.   
   
   
       48 . In a multiple computer system comprising a plurality of computers interconnected via a communications network, a method of ensuring for a single computer selected from among the plurality of computers consistent initialization of an application program written to operate on only one computer but different portions of which application program are to be executed substantially simultaneously each on a different one of said plurality of computers: said plurality or computers including said single computer and being interconnected via a communications network without forming a distributed shared memory arrangement; said method comprising the steps of:
 (i) scrutinizing said application program at, or prior to, or after loading to detect each program step defining an initialization routine; and   (ii) modifying said initialization routine to generate a corresponding modified initialization routine to ensure consistent operation of all said computers.   
   
   
       49 . A multiple computer system comprising a plurality of computers interconnected by a communications network without forming a distributed shared memory arrangement, said plurality of computers each having at least one application program each written to operate on only one computer but running simultaneously on said plurality of computers wherein different portions of said at least one application program execute substantially simultaneously on different ones of said plurality of computers and for each said different portion a like plurality of substantially identical objects are created; each in a local independent memory of the corresponding one of the plurality of computers and each having a substantially identical name; and wherein the initial contents of each of said substantially identically named objects is substantially the same. 
   
   
       50 . A multiple computer system comprising:
 a plurality of single computers arranged to operate within said multiple computer system, said plurality of computers interconnected via a communications link without forming a distributed shared memory arrangement, said plurality of computers substantially simultaneously operating at least one application program each written to operate on only one computer; wherein each said computer substantially simultaneously executes a different portion of said at least one application program;   each said computer in operating its application program portion creates objects only in local independent memory physically located in each said computer, the contents of the local independent memory utilized by each said computer are fundamentally similar but not, at each instant, identical; and   every one of said computers has a distribution update means to distribute to all other said computers objects created by said single computer.   
   
   
       51 . A method of running on a multiple computer system comprising a plurality of single computers at least one application program each written to operate on only one computer; each said single computer being intended to operate in cooperation with said plurality of computers which are interconnected by means of a communications network without forming a distributed shared memory arrangement; said method comprising the steps of:
 (i) executing different portions of said at least one application program substantially simultaneously on different ones of said plurality of computers and for each said portion creating a like plurality of substantially identical objects each in a local independent memory of the corresponding single computer and each having a substantially identical name; and   (ii) creating the initial contents of each of said identically named objects substantially the same.   
   
   
       52 . In a multiple thread processing computer operation configured to operate in cooperation with a plurality of single computers and in which individual threads of a single application program written to operate on only one computer are simultaneously being processed each on a different corresponding one of said plurality of computers interconnected via a communications link without forming a distributed shared memory arrangement; the improvement comprising: communicating objects created in local independent memory physically associated with the single computer from the plurality of computers processing each thread to the local independent memory of each other said plurality of computer via said communications link different from the single computer processing the tread. 
   
   
       53 . A single computer configured for operating with a plurality of single computers in a multiple computer system and having at least one application program written to operate on only a single computer but running substantially simultaneously on the plurality of single computers interconnected by a communications network; the single computer comprising:
 a local independent memory structure defined in a local independent memory of the single computer and configured to provide execution of application program code of the application program including a plurality of code threads that are written with the intent to execute on and reference a single computer having a single processing unit or symmetric multiple processing units and the single independent local memory with a local memory capacity that is not shared with any other single computer of said plurality of single computers;   the single computer configured for and executing a different portion of said at least one application program than the other computers of the plurality of single computers, and executing its portion substantially simultaneously with the execution of different portions of the application program on the different other ones of said plurality of computers and for each portion in said single computer a plurality of objects are created in its independent local memory while a like plurality of substantially identical objects are created in the independent local memory of the other computers and each object having a substantially identical name; and   means for consistently creating or initializing all said identical objects on said single computer and on the other plurality of computers.   
   
   
       54 . A single computer configured for use with a plurality of different networked single computers that are interconnected via a communications link, the single computer and the plurality of different computers operating substantially simultaneously to execute an application program written to operate on only a single computer, the application program having application program code including a plurality of code threads all intended to execute on and reference a single computer having a single processing unit or symmetric multiple processing units and a single independent local memory with a local memory capacity that is not shared with any other single computer of said plurality of single computers;
 said single computer substantially simultaneously executes a first portion of said application program and other of said plurality of different networked single computers substantially simultaneously executes a second and other different portion with said first portion;   said single computer in operating said application program first portion utilizes an named object only by using a local replica of the named object stored in independent local memory physically located in said single computer with a local memory capacity that is not shared with or accessible by any other of the plurality of different networked single computers; the contents of the independent local memory utilized by said single computer and by each said plurality of different networked single computers is fundamentally similar but not, at each instant, identical; and   said single computer having and executing an object creation or initialization routine which creates or initializes objects consistently across the plurality of computers.   
   
   
       55 . In a single computer, a method of ensuring consistent initialization of an application program written to operate only on one single computer but different portions of which are to be executed substantially simultaneously on the single computer and on each different one of a plurality of computers interconnected with each other and with the single computer via a communications network, the application program having application program code including a plurality of code threads all intended to execute on and reference only one computer having a single processing unit or symmetric multiple processing units and only one independent local memory with a local memory capacity that is not shared with any other computer, said method comprising:
 (i) scrutinizing said application program at, or prior to, or after loading on said single computer to detect each application program step defining an initialization routine instruction creating or initializing an object utilizing said single computer or one of said plurality of other computers in the application program, wherein for each said different portion of the application program a like plurality of substantially identical objects are created in each single independent local memory of the corresponding computer including in the single independent memory of the single computer and with a local memory capacity that is not shared with or accessible by any other computer of said plurality of computers and each object having a substantially identical name; and   (ii) modifying said initialization routine to generate a corresponding modified initialization routine to ensure consistent operation of all said plurality of computers and forwarding each created object to the remainder of said plurality of computers.   
   
   
       56 . A multiple computer system having at least one application program each written to operate on only a single computer but running substantially simultaneously on a plurality of single computers interconnected by a communications network; the system comprising:
 a local independent memory structure defined for each of the plurality of single computers configured to provide execution of application program code of the application program including a plurality of code threads that are written with the intent to execute on and reference a single computer having a single processing unit or symmetric multiple processing units and a single independent local memory with a local memory capacity that is not shared with any other single computer of said plurality of single computers;   means for executing different portions of said at least one application program substantially simultaneously on different ones of said computers and for each portion a like plurality of substantially identical objects are created in each independent local memory of the corresponding single computer and each object having a substantially identical name; and   a distribution update means including a distributed run time to distribute to all other said plurality of computers objects created or initialized by said single computer.   
   
   
       57 . A method of ensuring consistent initialization of an application program written to operate only on a single computer but different portions of which are to be executed substantially simultaneously each on a different one of a plurality of single computers interconnected via a communications network, the application program having application program code including a plurality of code threads all intended to execute on and reference a single computer having a single processing unit or symmetric multiple processing units and a single independent local memory with a local memory capacity that is not shared with any other single computer of said plurality of single computers, said method comprising the steps of:
 (i) scrutinizing said application program at, or prior to, or after loading to detect each application program step defining a object creation or initialization routine instruction creating or initializing an object utilizing one of said computers in the application program, wherein for each said different portion of the application program a like plurality of substantially identical objects being created in each single independent local memory of the corresponding computer with a local memory capacity that is not shared with or accessible by any other single computer of said plurality of single computers and each object having a substantially identical name; and   (ii) modifying said object creation or initialization routine to ensure collective creation or initialization of corresponding objects in all said single computers to ensure consistent object creation and initialization in everyone of said plurality of computers.

Join the waitlist — get patent alerts

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

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