Code Execution Graphs and Superblocks in Software Analysis

undefined
 
Mohamed M. Saad & Mohamed A. Mohamedin
 
Static Execution Graph
Nodes; 
can be either
Basic Blocks; a sequence of non-branching instructions
Variables
Edges; represents the frequency of access
 
Dynamic Execution Graph
Capture the behavior of the code across the time
(i.e. relation between block and itself in the future)
 
Superblock; is a set of basic blocks, it has multiple entries,
multiple exists.
The suitable Entry & Exist are determined at runtime
`
 
Grouping of blocks
Hot-Path detection
Static data access analysis
Violations
Reference Tracking  (e.g. function calls)
Memory Arithmetic (e.g. arrays)
STM will handle these violations
Reconstruction (OoO handling)
Control Dependencies
 System.out.println(“start");
int counter=0;
if(Math.random()>0.3)
      counter++;
else
      counter--;
System.out.println(“end");
   0:    getstatic    #13;                //Field java/lang/System.out:Ljava/io/PrintStream;
   3:    ldc    #19;                         //String start
   5:    invokevirtual    #21;         //Method java/io/PrintStream.println:(Ljava/lang/String;)V
   8:    iconst_0
   9:    istore_1
   10:    invokestatic    #27;        //Method java/lang/Math.random:()D
   13:    ldc2_w    #33;                //double 0.3d
   16:    dcmpl
   17:    ifle    26
   20:    iinc    1, 1
   23:    goto    29
   26:    iinc    1, -1
   29:    getstatic    #13;              //Field java/lang/System.out:Ljava/io/PrintStream;
   32:    ldc    #35;                       //String end
   34:    invokevirtual    #21;        //Method java/io/PrintStream.println:(Ljava/lang/String;)V
   37:    return
 
1
 
2
 
3
 
4
 
5
 
   0:    getstatic    #13;                //Field java/lang/System.out:Ljava/io/PrintStream;
   3:    ldc    #19;                         //String start
   5:    invokevirtual    #21;         //Method java/io/PrintStream.println:(Ljava/lang/String;)V
   8:    iconst_0
   9:    istore_1
   10:    invokestatic    #27;        //Method java/lang/Math.random:()D
   13:    ldc2_w    #33;                //double 0.3d
   16:    dcmpl
   17:    ifle    
23
   20:    hydra_iload  2
   22:
    ireturn
   
23:
    iinc    1, -1
   26:    hydra_iload  4
   28:    ireturn
 System.out.println(“start");
int counter=0;
if(Math.random()>0.3)
      counter++;
else
      counter--;
System.out.println(“end");
 
   0:    getstatic    #13;                //Field java/lang/System.out:Ljava/io/PrintStream;
   3:    ldc    #19;                         //String start
   5:    invokevirtual    #21;         //Method java/io/PrintStream.println:(Ljava/lang/String;)V
   8:    iconst_0
   9:    istore_1
   10:    invokestatic    #27;        //Method java/lang/Math.random:()D
   13:    ldc2_w    #33;                //double 0.3d
   16:    dcmpl
   17:    ifle    26
   23:    iinc    1, -1
 
Synchronizing the same local variables after being
split in two or more superblocks blocks
Detecting thread memory access reads/writes at VM
level (STM)
Dynamic Execution Graph (loops handling)
OoO handling & Control Dependencies
Irrevocable blocks (i.e. I/O operations)
Strong Atomicity
Exploiting parallelization with Arrays
Slide Note
Embed
Share

Explore the concepts of Static Execution Graphs, Dynamic Execution Graphs, Superblocks, hot-path detection, and memory arithmetic in software analysis. Learn about the grouping of blocks, violation tracking, control dependencies, and code behaviors across time through these graphical representations.

  • Software analysis
  • Execution graphs
  • Superblocks
  • Code behavior
  • Memory arithmetic

Uploaded on Sep 27, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Mohamed M. Saad& Mohamed A. Mohamedin

  2. Static Execution Graph Nodes; can be either Basic Blocks; a sequence of non-branching instructions Variables Edges; represents the frequency of access Dynamic Execution Graph Capture the behavior of the code across the time (i.e. relation between block and itself in the future)

  3. Superblock; is a set of basic blocks, it has multiple entries, multiple exists. The suitable Entry & Exist are determined at runtime `

  4. Grouping of blocks Hot-Path detection Static data access analysis Violations Reference Tracking (e.g. function calls) Memory Arithmetic (e.g. arrays) STM will handle these violations Reconstruction (OoO handling) Control Dependencies

  5. 0: getstatic #13; //Field java/lang/System.out:Ljava/io/PrintStream; 3: ldc #19; //String start 5: invokevirtual #21; //Method java/io/PrintStream.println:(Ljava/lang/String;)V 8: iconst_0 9: istore_1 10: invokestatic #27; //Method java/lang/Math.random:()D 13: ldc2_w #33; //double 0.3d 16: dcmpl 17: ifle 26 2 4 5 1 System.out.println( start"); int counter=0; if(Math.random()>0.3) counter++; else counter--; System.out.println( end"); 20: iinc 1, 1 23: goto 29 3 26: iinc 1, -1 29: getstatic #13; //Field java/lang/System.out:Ljava/io/PrintStream; 32: ldc #35; //String end 34: invokevirtual #21; //Method java/io/PrintStream.println:(Ljava/lang/String;)V 37: return

  6. 0: getstatic #13; //Field java/lang/System.out:Ljava/io/PrintStream; 3: ldc #19; //String start 5: invokevirtual #21; //Method java/io/PrintStream.println:(Ljava/lang/String;)V 8: iconst_0 9: istore_1 10: invokestatic #27; //Method java/lang/Math.random:()D 13: ldc2_w #33; //double 0.3d 16: dcmpl 17: ifle 23 20: hydra_iload 2 22: ireturn System.out.println( start"); int counter=0; if(Math.random()>0.3) counter++; else counter--; System.out.println( end"); 23: iinc 1, -1 26: hydra_iload 4 28: ireturn 0: getstatic #13; //Field java/lang/System.out:Ljava/io/PrintStream; 3: ldc #19; //String start 5: invokevirtual #21; //Method java/io/PrintStream.println:(Ljava/lang/String;)V 8: iconst_0 9: istore_1 10: invokestatic #27; //Method java/lang/Math.random:()D 13: ldc2_w #33; //double 0.3d 16: dcmpl 17: ifle 26

  7. Synchronizing the same local variables after being split in two or more superblocks blocks Detecting thread memory access reads/writes at VM level (STM) Dynamic Execution Graph (loops handling) OoO handling & Control Dependencies Irrevocable blocks (i.e. I/O operations) Strong Atomicity Exploiting parallelization with Arrays

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#