Abstract: This invention teaches a way of implementing formally verified massively parallel programs, which run efficiently in distributed and shared-memory multi-core chips. It allows programs to be developed from an initial abstract statement of interactions among parallel software components, called cells, and progressively refine them to their final implementation. At each stage of refinement a formal description of patterns of events in computations is derived automatically from implementations. This formal description is used for two purposes: One is to prove correctness, timings, progress, mutual exclusion, and freedom from deadlocks/livelocks, etc. The second is to automatically incorporate into each application a Self-Monitoring System (SMS) that constantly monitors the application in parallel, with no interference with its timings, to identify and report errors in performance, pending errors, and patterns of critical behavior.
Abstract: This invention teaches a way of implementing formally verified massively parallel programs, which run efficiently in distributed and shared-memory multi-core chips. It allows programs to be developed from an initial abstract statement of interactions among parallel software components, called cells, and progressively refine them to their final implementation. At each stage of refinement a formal description of patterns of events in computations is derived automatically from implementations. This formal description is used for two purposes: One is to prove correctness, timings, progress, mutual exclusion, and freedom from deadlocks/livelocks, etc. The second is to automatically incorporate into each application a Self-Monitoring System (SMS) that constantly monitors the application in parallel, with no interference with its timings, to identify and report errors in performance, pending errors, and patterns of critical behavior.
Abstract: TICC manages asynchronous communications among groups of concurrent (parallel) processes (Objects) in multiprocessors. It dedicates one processor to function as Communications Processor, C. TICC defines a Causal Communication programming Language, called CCL, whose statements may appear intermixed with statements of any conventional programming language. TICC defines methods for compiling CCL statements in these mixed language programs into sequences of protocols which are executed by C, in parallel with on going computations guaranteeing (1) group-to-group loss less, buffer less, self-synchronizing asynchronous data transfers; (2) more than a hundred fold reduction in communication latencies; (3) Dynamic Flexibility to monitor, repair, reconfigure and update software objects without service interruption; and (4) protection and security of all data, distributed to or collected from communicating objects, based on an Agreement Protocol.