Abstract
High-level synthesis tools generally convert abstract designs described in a high-level language into a control and data flow graph (CDFG), which is then optimized and mapped to hardware. However, there has been little work on generating CDFGs from highly pipelined software binaries, which complicate the problem of determining data flow propagation and dependencies. This paper presents a methodology for generating CDFGs from highly pipelined and scheduled assembly code that correctly represents the data dependencies and propagation of data through the program control flow. This process consists of three stages: generating a control flow graph, linearizing the assembly code, and generating the data flow graph. The proposed methodology was implemented in the FREEDOM compiler and tested on 8 highly pipelined software binaries. Results indicate that data dependencies were correctly identified in the designs, allowing the compiler to perform complex optimizations to reduce clock cycles.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Amme, W., Braun, P., Thomasset, F., Zehendner, E.: Data Dependence Analysis of Assembly Code. International Journal of Parallel Programming 28(5) (2000)
Banerjee, U.: Dependence Analysis for Supercomputers. Kluwer Academic Publishers, Norwell (1988)
Cifuentes, C., Gough, K.: A Methodology for Decomposition. In: Proceedings for XIX Conferencia Latinoamericana de Informatica, Buenos Aires, Argentina, pp. 257–266 (1993)
Cifuentas, C., Malhotra, V.: Binary Translation: Static, Dynamic, Retargetable? In: Proceedings for the International Conference on Software Maintenance (ICSM), Monterey, CA, pp. 340–349 (1996)
Cifuentes, C., Simon, D., Fraboulet, A.: Assembly to High-Level Language Translation. In: Proceedings of the International Conference on Software Maintenance (ICSM), Washington, DC, pp. 228–237 (1998)
Cooper, K., Harvey, T., Waterman, T.: Building a Control-Flow Graph from Scheduled Assembly Code. Technical Report 02-399. Department of Computer Science, Rice University, Houston, TX (2002)
Decker, B., Kästner, D.: Reconstructing Control Flow from Predicated Assembly Code. In: Krall, A. (ed.) SCOPES 2003. LNCS, vol. 2826, pp. 81–100. Springer, Heidelberg (2003)
Kästner, D., Wilhelm, S.: Generic Control Flow Reconstruction from Assembly Code. In: Proceedings of the Joint Conference on Languages, Compilers and Tools for Embedded Systems (LCTES), vol. 37(7), pp. 46–55 (2002)
Kruegel, C., Robertson, W., Valeur, F., Vigna, G.: Static Disassembly of Obfuscated Binaries. In: Proceedings of USENIX Security 2004, San Diego, CA, pp. 255–270 (2004)
Levine, B., Schmidt, H.: Efficient Application Representation for HASTE: Hybrid Architectures with a Single Executable. In: Proceedings of the 11th Annual IEEE Symposium on Field-Programmable Custom Computing Machines, Napa, CA, pp. 101–107 (2003)
Mittal, G., Zaretsky, D., Tang, X., Banerjee, P.: Automatic Translation of Software Binaries onto FPGAs. In: Proceedings of the 41st Annual Conference on Design Automation, San Diego, CA, pp. 389–394 (2004)
Mittal, G., Zaretsky, D., Memik, G., Banerjee, P.: Automatic Extraction of Function Bodies from Software Binaries. In: Proceedings for the IEEE/ACM Asia and South Pacific Design Automation Conference (ASPDAC), Beijing, China (2005)
Muchnick, S.: Advanced Compiler Design Implementation. Morgan Kaufmann Publishers, San Francisco (1997)
Ramsey, N., Fernandez, M.: New Jersey Machine-Code Toolkit. In: Proceedings of the 1995 USENIX Technical Conference, New Orleans, LA, pp. 289–302 (1995)
Ramsey, N., Fernandez, M.: Specifying Representations of Machine Instructions. In: ACM Transactions on Programming Languages and Systems (TOPLAS), New York, NY, vol. 19(3), pp. 492–524 (1997)
Stitt, G., Vahid, F.: Dynamic Hardware/Software Partitioning: A First Approach. In: Proceedings of the Design Automation Conference, Anaheim, CA, pp. 250–255 (2003)
Stitt, G., Vahid, F.: Hardware/Software Partitioning of Software Binaries. In: Proceedings of the International Conference of Computer Aided Design (ICCAD), Santa Clara, CA, pp. 164–170 (2002)
Ye, Z., Moshovos, A., Hauck, S., Banerjee, P.: CHIMAERA: A High-Performance Architecture with a Tightly-Coupled Reconfigurable Functional Unit. In: Proceedings of the 27th International Symposium on Computer Architecture, Vancouver, Canada, pp. 225–235 (2000)
Zaretsky, D., Mittal, G., Tang, X., Banerjee, P.: Overview of the FREEDOM Compiler for Mapping DSP Software to FPGAs. In: Proceedings of the 12th Annual IEEE Symposium on Field-Programmable Custom Computing Machines, Napa, CA, pp. 37–46 (2004)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Zaretsky, D.C., Mittal, G., Dick, R., Banerjee, P. (2006). Generation of Control and Data Flow Graphs from Scheduled and Pipelined Assembly Code. In: Ayguadé, E., Baumgartner, G., Ramanujam, J., Sadayappan, P. (eds) Languages and Compilers for Parallel Computing. LCPC 2005. Lecture Notes in Computer Science, vol 4339. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-69330-7_6
Download citation
DOI: https://doi.org/10.1007/978-3-540-69330-7_6
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-69329-1
Online ISBN: 978-3-540-69330-7
eBook Packages: Computer ScienceComputer Science (R0)