COMPUTER ARCHITECTURE AND METHOD OF OPERATION FOR MULTI-COMPUTER DISTRIBUTED PROCESSING WITH SYNCHRONIZATION
First Claim
1. A single computer configured 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 application program(s) execute substantially simultaneously on different ones of said computers and for each portion a like plurality of substantially identical memory locations are created;
each in the corresponding computer and each having a substantially identical name; and
said single computer including a lock means applicable to all said computers wherein any computer wishing to exclusively utilize a named memory location therein acquires an authorizing lock from said lock means which permits said utilization and which prevents all the other computers from exclusively utilizing their corresponding named memory location until said authorizing lock is relinquished.
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.
-
Citations
50 Claims
-
1. A single computer configured 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 application program(s) execute substantially simultaneously on different ones of said computers and for each portion a like plurality of substantially identical memory locations are created;
each in the corresponding computer and each having a substantially identical name; and
said single computer including a lock means applicable to all said computers wherein any computer wishing to exclusively utilize a named memory location therein acquires an authorizing lock from said lock means which permits said utilization and which prevents all the other computers from exclusively utilizing their corresponding named memory location until said authorizing lock is relinquished. - View Dependent Claims (2, 3, 4, 5, 6, 7, 35)
- wherein different portions of said application program(s) execute substantially simultaneously on different ones of said computers and for each portion a like plurality of substantially identical memory locations are created;
-
8. 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 operating substantially simultaneously 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 application program(s);
each said computer in operating its application program portion utilizes a memory location only in local independent memory physically located in each said computer;
the contents of the local independent memory utilized by each said computer is fundamentally similar but not, at each instant, identical; and
every one of said computers has an acquire lock routine and a release lock routine which permit exclusive utilization of the local memory location only by said single computer and each of the remainder of said plurality of computers is locked out of exclusive utilization of their corresponding memory location. - View Dependent Claims (9, 10, 11)
- wherein each said computer substantially simultaneously executes a different portion of said application program(s);
-
12. A method of running on a single computer at least one application program each written to operate only on one computer;
- said single computer being configured to operate with a 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 application program(s) substantially simultaneously on different ones of said computers and for each said portion creating a like plurality of substantially identical memory locations each in the corresponding computer and each having a substantially identical name; and
(ii) requiring any of said computers wishing to exclusively utilize a named memory location therein to acquire an authorizing lock which permits said utilization and which prevents all the other computers from exclusively utilizing their corresponding named memory location until said authorizing lock is relinquished. - View Dependent Claims (13, 14, 15, 16, 29, 30, 33, 36)
- said single computer being configured to operate with a plurality of computers which are interconnected by means of a communications network without forming a distributed shared memory arrangement;
-
17. A method of ensuring for a single computer consistent synchronization of an application program written to operate only on one computer but different portions of which 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 a synchronization routine; and
(ii) modifying said synchronization routine to ensure exclusive utilization of a memory location by only one of said plurality of computers and preventing all the remaining computers of said plurality of computers from substantially simultaneously exclusively utilizing their corresponding memory locations. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 31, 32, 34, 37)
- said plurality of computers including said single computer and being interconnected via a communications network without forming a distributed shared memory arrangement;
-
26. In a multiple thread processing computer operation taking place on a single computer configured to operate with a plurality of computers and in which individual threads of a single application program written to operate only on said single computer are simultaneously being processed each on a corresponding different one of said plurality of computers which are interconnected via a communications link without forming a distributed shared memory arrangement;
- and in which memory locations in local independent memory physically associated with the computer processing each thread have corresponding memory locations in the local independent memory of each other said computer;
the improvement comprising permitting only said single computer to exclusively utilize a memory location and preventing all the remaining computers from substantially simultaneously exclusively utilizing their corresponding memory location. - View Dependent Claims (27, 28)
- and in which memory locations in local independent memory physically associated with the computer processing each thread have corresponding memory locations in the local independent memory of each other said computer;
-
38. 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 (40, 41, 42, 43, 44, 45, 46, 47, 48)
-
-
39. 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.
-
-
49. 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 (50)
-
Specification