Parallelizing Sequential Methods via Speculative Execution
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing methods for parallelizing standard sequential programs on multicore processors are limited by data and control dependencies, which restrict the number of instructions that can be parallelized and lead to performance losses due to 'squashing' of threads as the number of concurrently executing threads increases.
Innovation Solution
The method identifies and exploits the natural structure of methods (subroutines, functions, and procedures) in sequential programs, using trigger points to execute methods on one processor while another processor handles the execution of the method's read set, avoiding data and control dependency violations through speculative execution and dynamic adjustment of trigger points.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If speculative techniques are used to execute small groups of instructions in parallel, then parallelization is achieved, but data and control dependency violations occur limiting the number of instructions that can be parallelized
Solution Approach 1:
The patent segments the program into method-level units of execution rather than instruction-level segments. By identifying natural method boundaries in the code and using those as parallelization units, the system achieves distant parallelism while maintaining reliability. Methods are self-contained computational units with well-defined inputs and outputs, making them ideal for speculative execution without violating dependencies.
Solution Approach 2:
The patent transitions from instruction-level parallelism (one-dimensional) to method-level parallelism (higher dimension). By executing entire methods in parallel across multiple processors rather than interleaving individual instructions, the system achieves greater parallelization depth while reducing dependency conflicts that limit traditional approaches.
2Productivity
If the number of concurrently executing threads is increased to achieve distant parallelism, then more instructions can be parallelized, but violations of data and control dependencies become more common requiring thread squashing
Solution Approach 1:
The patent performs preliminary analysis to identify method boundaries and establish execution schedules before parallel execution begins. By pre-determining which methods can be executed in parallel and on which processors, the system avoids runtime dependency violations that would require thread squashing, thereby maintaining high execution speed without the overhead of corrective actions.
3Productivity
If standard sequential programs are parallelized by exploiting naturally occurring parallel structure in small groups of instructions, then some parallelization is achieved, but the degree of parallelization is limited
Solution Approach 1:
The patent creates a universal parallelization framework that works with any sequential program containing method structures. By using method boundaries as the basis for parallel execution, the system can apply the same parallelization strategy across diverse applications without requiring program-specific customization, thereby increasing both parallel execution capability and applicability scope.
Data Source
AI summary
Distant parallelization of sequential programs is obtained by making parallelization decisions at the boundaries between program methods (e.g., functions and sub-routines). Experimentation suggests that such a partitioning allows for large-scale parallelization without data flow conflicts.


