Computer architecture and method of operation for multi-computer distributed processing with synchronization
First Claim
1. In a multiple computer system including a plurality of single computers interconnected via a communications link, a method of operating an application program having code written to include a plurality of threads all intended to execute on and reference a single independent computer having a single central processing unit (CPU) or symmetric multiple processing units and a single independent local memory that is not shared with any other computer of said plurality of single computers, said method comprising:
- (a) allocating said plurality of application program code threads amongst said plurality of interconnected single computers so that at least a portion of the application program including at least one first thread of said application program code is allocated a first particular one of said plurality of single computers for execution thereon and at least one second thread of said application program code is allocated a second particular one of said plurality of single computers for execution thereon;
(b) operating each single computer so that the memory locations of its single independent local memory are only addressable by the thread or threads allocated for execution thereon;
(c) substantially simultaneously executing said allocated application program code thread or threads by those single computers having an application program code thread or threads allocated thereto for execution;
(d) storing, during or after execution, by said single computer in its single independent local memory, an original version of each application memory value addressable by execution of said thread or threads allocated thereto;
(e) communicating an update via said communications link, a replica version of each new original version of each application memory value which has overwritten a previous corresponding application memory value as a consequence of execution of said thread or threads on any said single computer, to the single independent local memory of all other ones of said plurality of single computers; and
(f) storing in said single independent local memory of all of said plurality of single computers said communicated updated replica version of each and every application memory value;
(g) locking memory locations in each said single computer wherein any single computer wishing to utilize a memory location therein acquires an authorizing lock within the multiple computer system which permits said utilization of said memory location and which prevents all the other of the single computers from utilizing their corresponding memory location until said authorizing lock is relinquished; and
(h) the stored application memory values, including said original versions and said replica versions, of all said single computers thereby remaining, subject to a communications link updating transmission delay, substantially identical without any of said single computers addressing the independent local memory of any other one of said plurality of single computers during execution of their allocated thread or threads.
1 Assignment
0 Petitions
Accused Products
Abstract
The present invention discloses a modified computer architecture (50, 71, 72) which enables an applications program (50) to be run simultaneously on a plurality of computers (M1, . . . 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 the application program (50) acquiring (or releasing) a lock on a particular asset (50A, 50X-50Y) (synchronization) are identified. Additional instructions are inserted (162, 163) to result in a modified synchronization routine with which all computers are updated.
84 Citations
13 Claims
-
1. In a multiple computer system including a plurality of single computers interconnected via a communications link, a method of operating an application program having code written to include a plurality of threads all intended to execute on and reference a single independent computer having a single central processing unit (CPU) or symmetric multiple processing units and a single independent local memory that is not shared with any other computer of said plurality of single computers, said method comprising:
- (a) allocating said plurality of application program code threads amongst said plurality of interconnected single computers so that at least a portion of the application program including at least one first thread of said application program code is allocated a first particular one of said plurality of single computers for execution thereon and at least one second thread of said application program code is allocated a second particular one of said plurality of single computers for execution thereon;
(b) operating each single computer so that the memory locations of its single independent local memory are only addressable by the thread or threads allocated for execution thereon;
(c) substantially simultaneously executing said allocated application program code thread or threads by those single computers having an application program code thread or threads allocated thereto for execution;
(d) storing, during or after execution, by said single computer in its single independent local memory, an original version of each application memory value addressable by execution of said thread or threads allocated thereto;
(e) communicating an update via said communications link, a replica version of each new original version of each application memory value which has overwritten a previous corresponding application memory value as a consequence of execution of said thread or threads on any said single computer, to the single independent local memory of all other ones of said plurality of single computers; and
(f) storing in said single independent local memory of all of said plurality of single computers said communicated updated replica version of each and every application memory value;
(g) locking memory locations in each said single computer wherein any single computer wishing to utilize a memory location therein acquires an authorizing lock within the multiple computer system which permits said utilization of said memory location and which prevents all the other of the single computers from utilizing their corresponding memory location until said authorizing lock is relinquished; and
(h) the stored application memory values, including said original versions and said replica versions, of all said single computers thereby remaining, subject to a communications link updating transmission delay, substantially identical without any of said single computers addressing the independent local memory of any other one of said plurality of single computers during execution of their allocated thread or threads. - View Dependent Claims (3, 4, 5, 6, 7, 8, 9, 10, 11)
- (a) allocating said plurality of application program code threads amongst said plurality of interconnected single computers so that at least a portion of the application program including at least one first thread of said application program code is allocated a first particular one of said plurality of single computers for execution thereon and at least one second thread of said application program code is allocated a second particular one of said plurality of single computers for execution thereon;
-
2. A computer program product stored on a tangible machine-readable medium and including executable instructions for, in a multiple computer system including a plurality of single computers interconnected via a communications link, implementing a method of operating an application program having code written to include a plurality of threads all intended to execute on and reference a single independent computer having a single central processing unit (CPU) or symmetric multiple processing units and a single independent local memory that is not shared with any other computer of said plurality of single computers, said executable instruction performing a method comprising:
- (a) allocating said plurality of application program code threads amongst said plurality of interconnected single computers so that at least a portion of the application program including at least one first thread of said application program code is allocated a first particular one of said plurality of single computers for execution thereon and at least one second thread of said application program code is allocated a second particular one of said plurality of single computers for execution thereon;
(b) operating each single computer so that the memory locations of its single independent local memory are only addressable by the thread or threads allocated for execution thereon;
(c) substantially simultaneously executing said allocated application program code thread or threads by those single computers having an application program code thread or threads allocated thereto for execution;
(d) storing, during or after execution, by said single computer in its single independent local memory, an original version of each application memory value addressable by execution of said thread or threads allocated thereto;
(e) communicating an update via said communications link, a replica version of each new original version of each application memory value which has overwritten a previous corresponding application memory value as a consequence of execution of said thread or threads on any said single computer, to the single independent local memory of all other ones of said plurality of single computers; and
(f) storing in said single independent local memory of all of said plurality of single computers said communicated updated replica version of each and every application memory value; and
(g) locking memory locations in each said single computer wherein any single computer wishing to utilize a memory location therein acquires an authorizing lock within the multiple computer system which permits said utilization of said memory location and which prevents all the other of the single computers from utilizing their corresponding memory location until said authorizing lock is relinquished; and
(h) the stored application memory values, including said original versions and said replica versions, of all said single computers thereby remaining, subject to a communications link updating transmission delay, substantially identical without any of said single computers addressing the independent local memory of any other one of said plurality of single computers during execution of their allocated thread or threads.
- (a) allocating said plurality of application program code threads amongst said plurality of interconnected single computers so that at least a portion of the application program including at least one first thread of said application program code is allocated a first particular one of said plurality of single computers for execution thereon and at least one second thread of said application program code is allocated a second particular one of said plurality of single computers for execution thereon;
-
12. A multiple computer system comprising:
- a plurality of single computers interconnected via a communications link;
each of said plurality of single computers;
(a) has a single central processing unit (CPU) or symmetric multiple processing units, (b) a single independent local memory which is not shared with any other computer of said plurality of single computers, and (c) that is independent of the other ones of said plurality of single computers;
each one of said plurality of single computers is adapted to store and execute at least one thread of a substantially similar copy of an application program having code written to operate only on a single computer system, the code including a plurality of threads all intended to execute in cooperation with a single memory; and
each said single independent local memory has memory locations only addressable and accessible by the thread or threads of the corresponding single computer executing the corresponding copy of said application program code, and each said independent local memory has stored therein all application memory values arising from the execution of all said threads of all said plurality of computers;
(i) means for allocating or receiving an allocation of said plurality of threads of said stored application program code amongst said plurality of single computers so that at least a portion of the application program including at least one thread of said application program code is allocated to a corresponding one of said plurality of single computers for execution thereon by one or more threads of that one of said plurality of single computers;
(ii) means for substantially simultaneously executing said application program code thread or threads by those ones of said plurality of single computers having an application program code thread or threads allocated thereto;
(iii) a memory storage for storing in said single independent local memory of each said single computer a replica of each and every application memory value addressable by each and every said thread of each and every one of said plurality of computers;
(iv) means for communicating via said communications link each new application memory value which has overwritten a previous corresponding value as a consequence of execution of said application program code on any one of said single computers, to the single independent local memory of all other ones of said plurality of single computers, so that the values of said replica application memory values of all said single computers remain, subject to an updating transmission delay, substantially identical; and
(v) lock means applicable to each said single computer wherein any single computer wishing to utilize a memory location therein acquires an authorizing lock from said lock means which permits said utilization of said memory location and which prevents all the other of said single computers from utilizing their corresponding memory location until said authorizing lock is relinquished. - View Dependent Claims (13)
- a plurality of single computers interconnected via a communications link;
Specification