Abstract
Determination of data dependences is a task typically performed with high-level language source code in today's optimizing and parallelizing compilers. Very little work has been done in the field of data dependence analysis on assembly language code, but this area will be of growing importance, e.g., for increasing instruction-level parallelism. A central element of a data dependence analysis in this case is a method for memory reference disambiguation which decides whether two memory operations may access (or definitely access) the same memory location. In this paper we describe a new approach for the determination of data dependences in assembly code. Our method is based on a sophisticated algorithm for symbolic value propagation, and it can derive value-based dependences between memory operations instead of just address-based dependences. We have integrated our method into the Salto system for assembly language optimization. Experimental results show that our approach greatly improves the precision of the dependence analysis in many cases.
Similar content being viewed by others
REFERENCES
M. D. Tiemann, The GNU instruction scheduler. Technical Report CS 343, Free Software Foundation, Cambridge, Massachusetts (June 1989).
S. Davidson, D. Landskov, B. D. Shriver, and P. W. Mallet, Some experiments in local microcode compaction for horizontal machines, IEEE Trans. Computers 30(7):460–477 (July 1981).
J. A. Fisher, Trace scheduling: A technique for global microcode compaction, IEEE Trans. Computers 30(7):478–490 (July 1981).
A. Nicolau, Percolation scheduling: A parallel compilation technique, Technical Report TR 85-678, Cornell University, Department of Computer Science (May 1985).
B. R. Rau and J. A. Fisher, Instruction-level parallel processing: History overview, and perspective, J. Supercomputing 7(1-2):9–50 (May 1993).
R. M. Stallman, Using and porting the GNU CC, Technical Report, Free Software Foundation, Cambridge, Massachusetts (January 1989).
D. W. Wall. Systems for late code modification. In R. Giegerich and S. L. Graham (eds.), Code Generation-Concepts, Tools, Techniques, Workshops in Computing, Springer-Verlag, pp. 275–293 (1992).
A. Srivastava and D. W. Wall, A practical system for intermodule code optimization at link-time, J. Progr. Lang. 1(1):1–18 (June 1989).
J. A. Fisher, Walk-time techniques catalyst for architectural change, IEEE Computer 30(9):40–42 (September 1997).
E. Schnarr and J. R. Larus, Instruction scheduling and executable editing, Proc. 29th Ann. IEEE-ACM Int'l. Symp. Microarchitecture (MICRO-29), Paris, pp. 288–297 (December 1996).
R. L. Sites, A. Chernoff, M. B. Kirk, M. P. Marks, and S. G. Robinson, Binary translation, Commun. ACM 36(2):69–81 (February 1993).
P. Feautrier, Array expansion, Proc. Second Int'l. Conf. Supercomputing, ACM Press (July 1988).
W. Pugh and D. Wonnacott, An exact method for analysis of value-based array data dependences, In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua (eds.), Proc. Sixth Workshop on Languages and Compilers for Parallel Computing, Lecture Notes in Computer Science, Springer-Verlag, Portland, Oregon, Vol. 768, pp. 546–566 (1993).
W. Landi and B. G. Ryder, Pointer-induced aliasing: A problem classification, Conf. Record 18th Ann. ACM Symp. Principles Progr. Lang., Orlando, Florida, pp. 93–103 (January 1991).
D. W. Wall, Limits of instruction level parallelism, ACM SIGPLAN Notices 26(4): 176–188 (April 1991).
S. S. Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann Publishers, San Francisco, California (1997).
E. Rohou, F. Bodin, and A. Seznec, Salto: System for assembly-language transformation and optimization. In M. Gerndt (ed.), Proc. Sixth Workshop Compilers for Parallel Computers, Konferenzen des Forschungszentrums Jülich, Forschungszentrum Jülich, Aachen, Vol. 21, pp. 261–272 (December 1996).
J. R. Larus and P. N. Hilfinger, Detecting conflicts between structure accesses, ACM SIGPLAN Notices 23(7):21–34 (July 1988).
A. V. Aho, R. Sethi, and J. D. Ullman, Compilers: Principles, Techniques, and Tools, Addison-Wesley Publishing Company, Reading, Massachusetts (1988).
J. B. Kam and J. D. Ullman, Monotone data flow analysis frameworks, Acta Informatica 7:305–317 (1977).
A. V. Aho, J. E. Hopcroft, and J. D. Ullman, The Design and Analysis of Computer Algorithms, Addison-Wesley Publishing Company, Reading, Massachusetts (1974).
W. Pugh, The Omega test: A fast and practical integer programming algorithm for dependence analysis, Commun. ACM 8:102–114 (August 1992).
M. M. Brandis, Optimizing compilers for structured programming languages, Ph.D. dissertation, Institute for Computer Systems, ETH Zürich (1995).
J. R. Ellis, Bulldog: A Compiler for VLIW Architectures, ACM Doctoral Dissertation Awards, MIT Press, Cambridge, Massachusetts (1985).
R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, and F. K. Zadek, An efficient method of computing static single assignment form, Conf. Record 16th Ann. ACM Symp. Principles Progr. Lang., Austin, Texas, pp. 25–35 (January 1989).
P. G. Lowney, S. M. Freudenberger, T. J. Karzes, W. D. Lichtenstein, R. P. Nix, J. S. O'Donnell, and J. C. Ruttenberg, The multiflow trace scheduling compiler, J. Supercomputing 7:51–142 (1993).
G. Böckle, Exploitation of Fine-Grain Parallelism, Lecture Notes in Computer Science, Vol. 942, Springer-Verlag, Berlin (1995).
S.-M. Moon and K. Ebcioğlu, A study on the number of memory ports in multiple instruction issue machines, Proc. 26th Ann. Int'l. Symp. Microarchitecture (Micro-26), Austin, Texas, pp. 49–58 (December 1993).
M. Moudgill, J. H. Moreno, K. Ebcioğlu, E. Altman, S. K. Chen, and A. Polyak, Compiler/architecture interaction in a tree-based VLIW processor, Workshop on Inter-action between Compilers and Computer Architecture '97 (in conjunction with HPCA-3), San Antonio, Texas (February 1997).
K. Pingali, M. Beck, R. Johnson, M. Moudgill, and P. Stodghill, Dependence flow graphs: An algebraic approach to program dependencies, Conf. Record 18th Ann. ACM Symp. Principles Progr. Lang., ACM Press, Orlando, Florida (January 1991).
U. Banerjee, Dependence Analysis for Supercomputing, Kluwer Academic Publishers, Boston, Massachusetts (1988).
S. Debray, R. Muth, and M. Weippert, Alias analysis of executable code, Proc. 25th ACM SIGPLAN-SIGACT Symp. Principles Progr. Lang. (POPL '98), ACM Press, San Diego, California, pp. 12–24 (January 1998).
P. Cousot and R. Cousot, Abstract interpretation and applications to logic programs, J. Logic Progr. 13(2-3):103-180 (July 1992).
R. Bodik and S. Anik, Path-sensitive value-flow analysis, Proc. 25th ACM SIGPLAN-SIGACT Symp. on Principles of Progr. Lang. (POPL '98), ACM Press, San Diego, California, pp. 237–251 (January 1998).
W. Amme, P. Braun, F. Thomasset, and E. Zehendner, Data dependence analysis of assembly code, Proc. Int'l. Conf. Parallel Architectures and Compilation Techniques (PACT '98), Paris, pp. 340–347 (October 1998).
P. Braun, W. Amme, F. Thomasset, and E. Zehendner, A data flow framework for analyzing assembly code, Proc. 8th Int'l. Workshop on Compilers for Parallel Computers (CPC 2000), Aussois, France, pp. 163–172 (January 2000).
P. Cousot, Abstract interpretation, ACM Computing Surveys 28(2):324–328 (June 1996).
S. Novack and A. Nicolau, A hierarchical approach to instruction level parallelization, IJPP 23(1):35–62 (February 1995).
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Amme, W., Braun, P., Thomasset, F. et al. Data Dependence Analysis of Assembly Code. International Journal of Parallel Programming 28, 431–467 (2000). https://doi.org/10.1023/A:1007588710878
Issue Date:
DOI: https://doi.org/10.1023/A:1007588710878