Abstract
Data dependence analysis is the foundation to many reordering related compiler optimizations and loop parallelization. Traditional data dependence analysis algorithms are developed primarily for Fortran-like subscripted array variables. They are not very effective for pointer-based references in C or C++. With more advanced hardware support for speculative execution, such as the advanced load instructions in Intel’s IA64 architecture, some data dependences with low probability can be speculatively ignored. However, such speculative optimizations must be carefully applied to avoid excessive cost associated with potential mis-speculations. Data dependence profiling is one way to provide probabilistic information on data dependences to guide such speculative optimizations and speculative thread generation. Software-based data dependence profiling requires detailed tracing of memory accesses, therefore, could be very time consuming. In this paper, we examine issues related to data dependence profiling, and propose various techniques to improve the efficiency of data dependence profiling. We use the Open Research Compiler (ORC) [15,16] to test the efficiency of our data profiling techniques. We also study the effectiveness of data dependence profiling on data speculative optimizations on Itanium systems. Our results show that efficient data dependence profiling could improve the performance for data speculative optimizations.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Banerjee, U.: Dependence Analysis for Supercomputing. Kluwer Academic Publishers, Dordrecht (1988)
Wolfe, M.: Optimizing Supercompilers for Supercomputers. MIT Press, Cambridge (1989)
Pugh, W.: The Omega test: a fast and practical integer programming algorithm for dependence analysis. Communications of the ACM 35(8), 102–114 (1992)
Kennell, R.L., Eigenmann, R.: Automatic Parallelization of C by Means of Language Transcription. In: Carter, L., Ferrante, J., Sehr, D., Chatterjee, S., Prins, J.F., Li, Z., Yew, P.-C. (eds.) LCPC 1998. LNCS, vol. 1656, pp. 166–180. Springer, Heidelberg (1999)
Hendren, L.J., Hummel, J., Nicolau, A.: A general data dependence test for dynamic, pointer-based data structures. In: Proceedings of the SIGPLAN 1994 Conference on Programming Language Design and Implementation, June 1994, pp. 218–229 (1994)
Ghiya, R., Hendren, L.J.: Is it a tree, a dag, or a cyclic graph? In: Symposium on Principle of Program Language, January 1996, ACM, New York (1996)
Hind, M.: Pointer analysis: Haven’t we solved this problem yet? In: ACM SIGPLANSIGSOFT Workshop on Program Analysis for Software Tools and Engineering, Snowbird, Utah, June 2001, pp. 54–61 (2001)
Ghiya, R., Lavery, D., Sehr, D.: On the Importance of Points-To Analysis and Other Memory Disambiguation methods For C programs. In: Proceedings of the ACM SIGPLAN 2001 Conference on Programming Language Design and Implementation, June 2001, pp. 47–58 (2001)
Dulong, C.: The IA-64 Architecture at Work. IEEE Computer 31(7), 24–32 (1998)
Sohi, G.S., Breach, S.E., Vijaykumar, T.N.: Multiscalar Processors. In: The 22nd Annual International Symposium on Computer Architecture, June 1995, pp. 414–425 (1995)
Tsai, J.-Y., Huang, J., Amlo, C., Lilja, D.J., Yew, P.-C.: The Superthreaded Processor Architecture. IEEE Transactions on Computers, Special Issue on Multithreaded Architectures 48(9) (September 1999)
Gallagher, D.M., Chen, W.Y., Mahlke, S.A., Gyllenhaal, J.C., Hwu, W.W.: Dynamic Memory Disambiguation Using the Memory Conflict Buffer. In: Proc. Sixth Int’l. Conf. on ASPLOS, October 1994, pp. 183–193 (1994)
Zilles, C., Sohi, G.: A programmable co-processor for profiling. In: Proceedings of the 7th International Symposium on High Performance Computer Architecture (HPCA-7), January 2001, p. 12 (2001)
Kennedy, R., Chan, S., Liu, S., Lo, R., Tu, P., Chow, F.: Partial Redundancy Elimination in SSA Form. ACM Trans. on Programming Languages and systems 21(3), 627–676 (1999)
Ju, R.D.-C., Chan, S., Wu, C.: Open Research Compiler (ORC) for the Itanium Processor Family. Tutorial presented at Micro 34 (2001)
Ju, R.D.-C., Chan, S., Chow, F., Feng, X.: Open Research Compiler (ORC): Beyond Version 1.0. Tutorial presented at PACT 2002 (2002)
Arnold, M., Ryder, B.G.: A Framework for Reducing the Cost of Instrumented Code SIGPLAN Conference on Programming Language Design and Implementation (2001)
Kennedy, R., Chan, S., Liu, S.-M., Io, R., Tu, P., Chow, F.: Partial redundancy elimination in SSA form. ACM Trans. Program. Languages and Systems (May 1999)
Lin, J., Chen, T., Hsu, W.C., Yew, P.C.: Speculative Register Promotion Using Advanced Load Address Table (ALAT). In: Proceedings of First Annual IEEE/ACM International Symposium on Code Generation and Optimization, San Francisco, California, March 2003, pp. 125–134 (2003)
Lin, J., Chen, T., Hsu, W.-C., Yew, P.-C., Ju, R.D.-C., Ngai, T.-F., Chan, S.: A Compiler Framework for Speculative Analysis and Optimizations. In: Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI) (June 2003)
pfmon project web site, http://www.hpl.hp.com/research/linux/perfmon/
Callahan, D., Cocke, J., Kennedy, K.: Estimating Interlock and Improving Balance for Pipelined Architectures. Journal of Parallel and Distributed Computing 5, 334–348 (1988)
Larus, J.: Whole program paths. In: Programming Languages Design and Implementation, PLDI (1999)
Ball, T., Mataga, P., Sagiv, M.: Edge profiling versus path profiling: The showdown. In: Conference Record of the 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (January 1998)
Ju, R.D.-C., Collard, J., Oukbir, K.: Probabilistic Memory Disambiguation and its Application to Data Speculation. Computer Architecture News 27(1) (March 1999)
Chen, M., Olukotun, K.: TEST: A Tracer for Extracting Speculative Threads. In: Proceedings of First Annual IEEE/ACM International Symposium on Code Generation and Optimization, San Francisco, California, March 2003, pp. 301–312 (2003)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2004 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Chen, T., Lin, J., Dai, X., Hsu, WC., Yew, PC. (2004). Data Dependence Profiling for Speculative Optimizations. In: Duesterwald, E. (eds) Compiler Construction. CC 2004. Lecture Notes in Computer Science, vol 2985. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-24723-4_5
Download citation
DOI: https://doi.org/10.1007/978-3-540-24723-4_5
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-21297-3
Online ISBN: 978-3-540-24723-4
eBook Packages: Springer Book Archive