Reverse Engineering of Dynamic Parallel Program Behavior from Execution Traces

2016 
Trace-driven simulation has been used widely for architectural exploitation in electronic system-level (ESL) designs for complex SoCs (system-on-chips). Most often the trace files are provided by third parties without source code. This makes it difficult to process and manipulate the trace files, e.g. to identify the region of interest (ROI), for efficient and more focused simulations. It is thus necessary to deduce high-level structures and patterns in the trace to facilitate such manipulations. This can be viewed as a reverse engineering process to derive the dynamic control flow of the original program from its execution trace. Furthermore, after the high-level structure is manipulated, it is also important to generate a new trace from the resultant structure that preserves the characteristics of the original trace for effective trace-driven simulations. The problem becomes even more difficult if the trace was generated from a parallel program because of the complex interactions between the multiple threads of executions. In this paper, a novel scheme to reverse-engineering the program execution trace is proposed, which can obtain the high-level dynamic control structure of the original parallel program as well as regenerate a similar trace from the derived structure, all without referencing the source code. The effectiveness of the proposed scheme is evaluated and verified with extensive experiments.
    • Correction
    • Source
    • Cite
    • Save
    • Machine Reading By IdeaReader
    8
    References
    0
    Citations
    NaN
    KQI
    []