Dead Store Elimination in COBOL PERFORM Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing dataflow optimization techniques are inefficient and memory-intensive when dealing with large COBOL programs containing many PERFORM statements, as they require extensive processing of control flow related metadata to eliminate dead stores.

Innovation Solution

The method involves splitting the contiguous storage area into two portions, optimizing the PERFORM-related storage with a single pass using bitvectors, and applying deadness-range-based dataflow analysis to the computational storage area to identify and eliminate dead store ranges, allowing for flexible choice of liveness or deadness-based dataflow techniques.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If existing dataflow optimizations are applied to eliminate dead stores in COBOL programs with many PERFORM statements, then dead store elimination is achieved, but the process becomes very time consuming and memory intensive

Engineering Contradiction:
Improvedead store elimination efficiencyVSAvoidoptimization time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent segments the contiguous storage area into two distinct portions: a first portion for PERFORM-related metadata and a second portion for computational storage. This segmentation allows different optimization strategies to be applied to each portion, reducing the overall optimization time and memory requirements while maintaining effective dead store elimination.

Inventive Principle:
Principle #1Segmentation

2Productivity

If existing dataflow optimizations are applied to eliminate dead stores in COBOL programs with many PERFORM statements, then dead store elimination is achieved, but memory usage becomes excessively high

Engineering Contradiction:
Improvedead store elimination efficiencyVSAvoidmemory usage
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent divides the storage area into two portions, allowing the optimizer to use different data structures and memory management strategies for each portion. This segmentation reduces the overall memory footprint required for dead store elimination while maintaining optimization effectiveness.

Inventive Principle:
Principle #1Segmentation

3Reliability

If liveness-based dataflow analysis is used to track variables, then dead stores can be identified, but the process becomes complex and resource-intensive for large COBOL programs

Engineering Contradiction:
Improvedead store identification accuracyVSAvoiddataflow analysis complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent inverts the traditional liveness-based approach by using deadness-based dataflow analysis. Instead of tracking variables that are live (potentially read), the analysis tracks variables that are dead (definitely not read). This inversion simplifies the dataflow analysis complexity while maintaining accurate dead store identification, as deadness propagation is more straightforward than liveness propagation in the context of COBOL PERFORM statements.

Inventive Principle:
Principle #13The other way round (Inversion)

Data Source

PatentUS11593080B1Eliminating dead stores
Publication Date: 2023.02.28 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US11593080B1 patent drawing
  • US11593080B1 patent drawing
  • US11593080B1 patent drawing

AI summary

Dataflow optimization by dead store elimination focusing on logically dividing a contiguous storage area into different portions by use to allow a different number and type of dataflow and dead store techniques on each portion. A first storage portion, containing the storage for control flow related metadata, is split from a remaining storage portion. Liveness analysis is executed on the first storage portion using bitvectors with each bit representing four bytes. The remaining storage portion, containing the temporary storage for computational values, is processed using a deadness-range-based dataflow analysis. IN and OUT sets for each basic block are generated by processing blocks GEN and KILL sets by performing a backwards intersection dataflow analysis. Stores that write to the set of dead ranges in the IN sets of blocks are eliminated as dead stores.