Abstract
In the era of multi-core processors, it is increasingly important to extract parallelism from programs. A key work to find and extract parallelism is data dependence analysis. This paper proposes to analyze the data dependences among code blocks offline, so as to save the computing time and resources with runtime execution. Offline data dependence analysis is feasible because register numbers to access are usually directly encoded in instructions, and register accesses are way more frequent than memory accesses. Therefore we may parse an executable file, divide it into code blocks, and find their register read/write dependences, which can be used at runtime to accelerate future executions. The offline analysis is more than mere static analysis, because many implicit dependences are only revealed at runtime. So we will simulate a runtime environment to analyze the simulated execution, which helps to better understand the dependences, and facilitate runtime parallelization. We built a trace driven simulator and conducted experiments with SPEC2006 benchmarks. The data shows that compared with online analysis, for every 1000 instructions the offline analysis will be able to save at least 1420 a#x007E; 2332 clocks of time (i.e. 1.42 a#x007E; 2.33 times of performance improvement), plus other additional 13 a#x007E; 32 clocks of time (i.e. 1.3% a#x007E; 3.2% of performance improvement), or equivalent computing resource.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.