Object-oriented, parallel language, method of programming and multi-processor computer
OwnerSlawomir Janczewskiinventor
Life of this patent
Estimating the term…
Abstract
This invention relates to architecture and synchronization of multi-processor computing hardware. It establishes a new method of programming, process synchronization, and of computer construction, named stress-flow by the inventor, allowing benefits of both opposing legacy concepts of programming (namely of both data-flow and control flow) within one cohesive, powerful, object-oriented scheme. This invention also relates to construction of object-oriented, parallel computer languages, script and visual, together with compiler construction and method to write programs to be executed in fully parallel (or multi-processor) architectures, virtually parallel, and single-processor multitasking computer systems.
Claims42
Programming method, interface mechanism of parallel running tasks, script computer language, visual computer language, extension to existing computer language, compiler apparatus, any of them defining parallel execution through program subroutines comprising:
- (a) a part that only a single task can be executing at a given moment with the remaining part, if any, being allowed to be executed by plurality of running tasks at the same time;
- (b) a lock variable or data structure, automatically generated by the compiler or assigned to one said subroutine or set of them, managing exclusive execution of part (a) allowing only one task to execute above part (a) at the same given moment while suspending and queuing or otherwise constraining for a time being other tasks attempting execution of said part (a);
- whereby complex computing jobs are broken down into plurality of such relatively small subroutines executing in parallel and synchronized through limited access to above described exclusive parts (a) of subroutines.
Method of representing in a single data structure data-amount-weighted location of data needed by software subroutine or task running in a distributed memory multi-processor computer comprising:
- (a) approximate representation of physical data location;
- (b) approximate representation of data amount;
- (c) method to combine two or more different said weighted representations of data location structures into one.
A computing machine comprising:
- (a) plurality of computing nodes with processors, physical or software emulated, executing sequences of instructions;
- (b) plurality of lock devices managing exclusive access, implemented in software or in electronics circuitry, one of them assigned to every sequence of instructions to be executed as a separate task;
- (c) interface means to receive from other nodes identification of sequence of instructions to execute together with identification of aforementioned lock construct assigned to said sequence of instructions, together comprising definition of new task to execute;
- (d) interface means to send to other nodes identification of sequence of instructions to execute together with identification of aforementioned lock construct assigned to said sequence of instructions, together comprising definition of new task to execute;
- whereby said lock constructs (b) serve as interface between tasks and as means to regulate parallelism by requirement of having to reserve said lock before new task can be sent through above listed sending interface (d) and by need to be released inside sequence of instructions of said new task;
- whereby such machine is used to compute complex jobs by breaking them into a large number of relatively small tasks executing in parallel on many processors and regulated by need to reserve the lock (b) of each such new small task to be run.
Software method, script computer language, visual computer language, extension to existing computer language, compiler apparatus, any of them defining function call parameter passing method where unary expression can be passed as actual parameter instead of value, reference, or pointer;
- whereby function calls can be made specifying parameter values relative to previous call values.
Dependencies are inferred from the claim text.