|
ABSTRACT
Recent high-level synthesis approaches and C-based hardware description languages attempt to improve the hardware design process by allowing developers to capture desired hardware functionality in a well-known high-level source language. However, these approaches have yet to achieve wide commercial success due in part to the difficulty of incorporating such approaches into software tool flows. The requirement of using a specific language, compiler, or development environment may cause many software developers to resist such approaches due to the difficulty and possible instability of changing well-established robust tool flows. Thus, in the past several years, synthesis from binaries has been introduced, both in research and in commercial tools, as a means of better integrating with tool flows by supporting all high-level languages and software compilers. Binary synthesis can be more easily integrated into a software development tool-flow by only requiring an additional backend tool, and it even enables completely transparent dynamic translation of executing binaries to configurable hardware circuits. In this article, we survey the key technologies underlying the important emerging field of binary synthesis. We compare binary synthesis to several related areas of research, and we then describe the key technologies required for effective binary synthesis: decompilation techniques necessary for binary synthesis to achieve results competitive with source-level synthesis, hardware/software partitioning methods necessary to find critical binary regions suitable for synthesis, synthesis methods for converting regions to custom circuits, and binary update methods that enable replacement of critical binary regions by circuits.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Ahpah Software Inc. 2004. SourceAgain Java decompiler. http://www.ahpah.com/product.html.
|
| |
2
|
Altera Corp. 2006. Nios embedded processor. http://www.altera.com/products/ip/processors/nios/nio-index.html.
|
 |
3
|
Glenn Ammons , Thomas Ball , James R. Larus, Exploiting hardware performance counters with flow and context sensitive profiling, Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation, p.85-96, June 16-18, 1997, Las Vegas, Nevada, United States
|
| |
4
|
|
 |
5
|
|
 |
6
|
|
| |
7
|
Leonid Baraz , Tevi Devor , Orna Etzion , Shalom Goldenberg , Alex Skaletsky , Yun Wang , Yigel Zemach, IA-32 Execution Layer: a two-phase dynamic translator designed to support IA-32 applications on Itanium®-based systems, Proceedings of the 36th annual IEEE/ACM International Symposium on Microarchitecture, p.191, December 03-05, 2003
|
| |
8
|
Barbe, P. 1974. The Piler system of computer program translation. Techn. rep. PLR-020, Probe Consultants Inc. Prepared for the Office of Naval Research, distributed by National Technical Information Service, USA. ADA000294. Contract N00014-67-C-0472.
|
 |
9
|
|
| |
10
|
|
| |
11
|
|
| |
12
|
Binachip, Inc. 2006. http://www.binachip.com/.
|
| |
13
|
W. Böhm , J. Hammes , B. Draper , M. Chawathe , C. Ross , R. Rinker , W. Najjar, Mapping a Single Assignment Programming Language to Reconfigurable Systems, The Journal of Supercomputing, v.21 n.2, p.117-130, February 2002
[doi> 10.1023/A:1013623303037]
|
| |
14
|
The Boomerang Decompiler Project. 2006. Boomerang Decompiler. http://boomerang. sourceforge.net/.
|
| |
15
|
|
 |
16
|
|
| |
17
|
Brinkley, D. L. 1981. Intercomputer transportation of assembly language software through decompilation. Techn. rep., Naval Underwater Systems Center.
|
| |
18
|
Celoxica. 2006. DK design suite. http://www.celoxica.com/products/dk/default.asp.
|
| |
19
|
|
| |
20
|
Anton Chernoff , Mark Herdeg , Ray Hookway , Chris Reeve , Norman Rubin , Tony Tye , S. Bharadwaj Yadavalli , John Yates, FX!32: A Profile-Directed Binary Translator, IEEE Micro, v.18 n.2, p.56-64, March 1998
[doi> 10.1109/40.671403]
|
| |
21
|
Massimilano Chiodo , Paolo Giusto , Attila Jurecska , Harry C. Hsieh , Alberto Sangiovanni-Vincentelli , Luciano Lavagno, Hardware-Software Codesign of Embedded Systems, IEEE Micro, v.14 n.4, p.26-36, August 1994
[doi> 10.1109/40.296155]
|
 |
22
|
|
| |
23
|
Cifuentes, C. 1994. Reverse compilation techniques. PhD thesis Queensland University of Technology, Department of Computer Science.
|
| |
24
|
|
| |
25
|
Cifuentes, C., Van Emmerik, M., Ung, D., Simon, D., and Waddington, T. 1999. Preliminary experiences with the use of the UQBT binary translation framework. In Proceedings of the Workshop on Binary Translation. 12--22.
|
| |
26
|
|
 |
27
|
Nathan Clark , Jason Blome , Michael Chu , Scott Mahlke , Stuart Biles , Krisztian Flautner, An Architecture Framework for Transparent Instruction Set Customization in Embedded Processors, Proceedings of the 32nd annual international symposium on Computer Architecture, p.272-283, June 04-08, 2005
|
| |
28
|
Nathan Clark , Manjunath Kudlur , Hyunchul Park , Scott Mahlke , Krisztian Flautner, Application-Specific Processing on a General-Purpose Core via Transparent Instruction Set Customization, Proceedings of the 37th annual IEEE/ACM International Symposium on Microarchitecture, p.30-40, December 04-08, 2004, Portland, Oregon
[doi> 10.1109/MICRO.2004.5]
|
| |
29
|
CriticalBlue. 2006. http://www.criticalblue.com.
|
| |
30
|
Decompilation Wiki. 2006. http://www.program-transformation.org/Transform/DeCompilation.
|
| |
31
|
James C. Dehnert , Brian K. Grant , John P. Banning , Richard Johnson , Thomas Kistler , Alexander Klaiber , Jim Mattson, The Transmeta Code Morphing™ Software: using speculation, recovery, and adaptive retranslation to address real-life challenges, Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization, March 23-26, 2003, San Francisco, California
|
| |
32
|
|
| |
33
|
Diniz, P., Hall, M., Park, J., So, B., and Ziegler, H. 2005. Automatic mapping of C to FPGAs with the DEFACTO compilation and synthesis systems. J. Microprocess. Microsyst. 29, 2--3, 51--62.
|
| |
34
|
DisC Decompiler. 2006. http://www.debugmode.com/dcompile/disc.htm.
|
 |
35
|
|
| |
36
|
|
| |
37
|
Eles, P., Peng, Z., Kuchchinski, K. and Doboli, A. 1997. System level hardware/software partitioning based on simulated annealing and tabu search. J. Design Autom. Embedd. Syst. 2, 1, 5--32.
|
| |
38
|
|
| |
39
|
Ernst, R. and Henkel, J. 1992. Hardware-software codesign of embedded controllers based on hardware extraction. In Proceedings of the International Workshop on Hardware/Software Codesign (CODES).
|
 |
40
|
|
 |
41
|
|
| |
42
|
Fleury, M., Self, R. P., and Downton, A. C. 2001. Hardware compilation for software engineers: An ATM example. Softw. Engin. 148, 1, 31--42.
|
 |
43
|
|
| |
44
|
|
 |
45
|
|
| |
46
|
Fuan, C. and Zongtian, L. 1991. C function recognition technique and its implementation in 8086 C decompiling system. Mini-Micro Syst. 12, 11, 33--40.
|
| |
47
|
|
| |
48
|
|
| |
49
|
|
| |
50
|
|
 |
51
|
|
| |
52
|
|
 |
53
|
Zhi Guo , Betul Buyukkurt , Walid Najjar, Input data reuse in compiling window operations onto reconfigurable hardware, Proceedings of the 2004 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems, June 11-13, 2004, Washington, DC, USA
|
| |
54
|
|
| |
55
|
Gupta, R. K. and De Micheli, G. 1992. System-level synthesis using re-programmable components. In Proceedings of the Conference on Design, Automation and Test in Europe (DATE). 2--7.
|
| |
56
|
|
| |
57
|
Halstead, M. H. 1967. Machine independence and third generation computers. In Proceedings of Sprint Joint Computer Conference (SJCC). 587--592.
|
| |
58
|
Halstead, M. H. 1970. Using the computer for program conversion. Datamation, 125--129.
|
| |
59
|
|
 |
60
|
|
| |
61
|
|
| |
62
|
Hood, S. T. 1991. Decompiling with definite clause grammars. Tech. rep. ERL-0571-RR, Electronics Research Laboratory, DSTO Australia.
|
| |
63
|
|
 |
64
|
|
 |
65
|
Alex K. Jones , Raymond Hoare , Dara Kusic , Joshua Fazekas , John Foster, An FPGA-based VLIW processor with custom hardware execution, Proceedings of the 2005 ACM/SIGDA 13th international symposium on Field-programmable gate arrays, February 20-22, 2005, Monterey, California, USA
[doi> 10.1145/1046192.1046207]
|
| |
66
|
JReversePro. 2006. http://jrevpro.sourceforge.net/.
|
 |
67
|
|
| |
68
|
|
 |
69
|
|
 |
70
|
Tommy Kuhn , Wolfgang Rosenstiel , Udo Kebschull, Description and simulation of hardware/software systems with Java, Proceedings of the 36th ACM/IEEE conference on Design automation, p.790-793, June 21-25, 1999, New Orleans, Louisiana, United States
[doi> 10.1145/309847.310059]
|
| |
71
|
|
 |
72
|
|
 |
73
|
Yanbing Li , Tim Callahan , Ervan Darnell , Randolph Harr , Uday Kurkure , Jon Stockwood, Hardware-software co-design of embedded reconfigurable architectures, Proceedings of the 37th conference on Design automation, p.507-512, June 05-09, 2000, Los Angeles, California, United States
[doi> 10.1145/337292.337559]
|
 |
74
|
|
 |
75
|
|
 |
76
|
|
| |
77
|
Mentor Graphics Corp. 2006. Catapult C synthesis. http://www.mentor.com/products/c-based_design/catapult_c_synthesis/index.cfm.
|
| |
78
|
MIPS Computer Systems. 1990. UMIPS-V reference manual (pixie and pixstats).
|
 |
79
|
Gaurav Mittal , David C. Zaretsky , Xiaoyong Tang , P. Banerjee, Automatic translation of software binaries onto FPGAs, Proceedings of the 41st annual conference on Design automation, June 07-11, 2004, San Diego, CA, USA
[doi> 10.1145/996566.996678]
|
| |
80
|
Mocha, the Java Decompiler. 1996. http://www.brouhaha.com/~eric/software/mocha/
|
| |
81
|
|
| |
82
|
|
| |
83
|
Walid A. Najjar , Wim Böhm , Bruce A. Draper , Jeff Hammes , Robert Rinker , J. Ross Beveridge , Monica Chawathe , Charles Ross, High-Level Language Abstraction for Reconfigurable Computing, Computer, v.36 n.8, p.63-69, August 2003
[doi> 10.1109/MC.2003.1220583]
|
| |
84
|
OXFORD Hardware Compilation Group. 1997. The Handel language. Tech. rep., Oxford University.
|
| |
85
|
REC (Reverse Engineering Compiler). 2005. http://www.backerstreet.com/rec/rec.htm.
|
| |
86
|
Ted Romer , Geoff Voelker , Dennis Lee , Alec Wolman , Wayne Wong , Hank Levy , Brian Bershad , Brad Chen, Instrumentation and optimization of Win32/intel executables using Etch, Proceedings of the USENIX Windows NT Workshop on The USENIX Windows NT Workshop 1997, p.1-1, August 11-13, 1997, Seattle, Washington
|
| |
87
|
Sassaman, W. A. 1966. A computer program to translate machine language into Fortran. In Proceedings of SJCC. 235--239.
|
| |
88
|
Schneider, V. and Winiger, G. 1974. Translation grammars for compilation and decompilation. BIT Numer. Mathem. 14, 1, 78--86.
|
| |
89
|
|
 |
90
|
|
| |
91
|
V. Srinivasan , S. Radhakrishnan , R. Vemuri, Hardware/software partitioning with integrated hardware design space exploration, Proceedings of the conference on Design, automation and test in Europe, p.28-35, February 23-26, 1998, Le Palais des Congrés de Paris, France
|
 |
92
|
Greg Stitt , Zhi Guo , Walid Najjar , Frank Vahid, Techniques for synthesizing binaries to an advanced register/memory structure, Proceedings of the 2005 ACM/SIGDA 13th international symposium on Field-programmable gate arrays, February 20-22, 2005, Monterey, California, USA
[doi> 10.1145/1046192.1046208]
|
 |
93
|
|
| |
94
|
Stitt, G. and Vahid, F. 2003. Binary-level hardware/software partitioning of MediaBench, NetBench, and EEMBC benchmarks. Tech. rep. UCR-CSE-03-01, Department of Computer Science and Engineering, University of California, Riverside.
|
| |
95
|
|
 |
96
|
|
| |
97
|
|
 |
98
|
Greg Stitt , Frank Vahid , Gordon McGregor , Brian Einloth, Hardware/software partitioning of software binaries: a case study of H.264 decode, Proceedings of the 3rd IEEE/ACM/IFIP international conference on Hardware/software codesign and system synthesis, September 19-21, 2005, Jersey City, NJ, USA
[doi> 10.1145/1084834.1084905]
|
| |
99
|
Stretch, Inc. 2006. http://www.stretchinc.com.
|
| |
100
|
Synopsys. 2006. Design compiler. http://www.synopsys.com/products/logic/design_compiler.html.
|
| |
101
|
Synplicity, Inc. 2006. Synplify ASIC. http://www.synplicity.com/corporate/pressreleases/2003/SYB-197final.html
|
| |
102
|
Tensilica, Inc. 2006. XPRES Compiler. http://www.tensilica.com/html/xpres.html.
|
| |
103
|
Transmeta, Corp. 2006. Transmeta Efficeon. http://www.transmeta.com/efficeon/.
|
| |
104
|
|
| |
105
|
|
| |
106
|
|
| |
107
|
Walker, R. and Camposano, R. 1991. A Survey of High-Level Synthesis Systems. Kluwer Academic Publishers.
|
| |
108
|
Wolf, W. 1994. Hardware-software co-design of embedded systems. Proceedings of the IEEE 82, 7, 967--989.
|
| |
109
|
Workman, D. A. 1978. Language design using decompilation. Tech. rep., University of Central Florida.
|
| |
110
|
Xilinx, Inc. 2006. Xilinx MicroBlaze. http://www.xilinx.com/xlnx/xebiz/designResources/ip_ product _details.jsp?key=micro_blaze.
|
| |
111
|
|
| |
112
|
|
|