Abstract
The halt in clock frequency scaling has forced architects and language designers to look elsewhere for continued improvements in performance. We believe that extracting maximum performance will require compilation to highly heterogeneous architectures that include reconfigurable hardware.
We present a new language, Lime, which is designed to be executable across a broad range of architectures, from FPGAs to conventional CPUs. We present the language as a whole, focusing on its novel features for limiting side-effects and integration of the streaming paradigm into an object- oriented language. We conclude with some initial results demonstrating applications running either on a CPU or co- executing on a CPU and an FPGA.
- }}Bluespec SystemVerilog version 3.8 reference guide. www.bluespec.com, 2004.Google Scholar
- }}Ackerman, W., and Dennis, J. VAL-a value-oriented algorithmic language. Tech. Rep. MIT-LCS-TR-218, Massachusetts Institute of Technology, 1979. Google Scholar
Digital Library
- }}Arvind, Gostelow, K., and Plouffe, W. An asynchronous programming language and computing machine. Tech. Rep. 114, University of California at Irvine, 1978.Google Scholar
- }}Ashcroft, E., and Wadge, W. Lucid, a nonprocedural language with iteration. Communications of the ACM 20, 7 (1977), 526. Google Scholar
Digital Library
- }}Auerbach, J., Bacon, D. F., Cheng, P., and Rabbah, R. Lime language manual (version 2.0). Tech. Rep. RC-25004, IBM Research, Oct 2010.Google Scholar
- }}Auerbach, J., Bacon, D. F., Iercan, D., Kirsch, C. M., Rajan, V. T., Rock, H., and Trummer, R. Low-latency time-portable real-time programming with Exotasks. ACM Trans. Embed. Comput. Syst. 8, 2 (2009), 1--48. Google Scholar
Digital Library
- }}Birka, A., and Ernst, M. D. A practical type system and language for reference immutability. In OOPSLA '04: Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (New York, NY, USA, 2004), ACM, pp. 35--49. Google Scholar
Digital Library
- }}Boyapati, C., Lee, R., and Rinard, M. Ownership types for safe programming: preventing data races and deadlocks. In OOPSLA '02: Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (New York, NY, USA, 2002), ACM, pp. 211--230. Google Scholar
Digital Library
- }}Boyland, J. Why we should not add readonly to Java (yet). Journal of Object Technology 5, 5 (2006), 5--29.Google Scholar
Cross Ref
- }}Bridges, M., Vachharajani, N., Zhang, Y., Jablin, T., and August, D. Revisiting the sequential programming model for multi-core. In MICRO '07: Proceedings of the 40th Annual IEEE/ACM International Symposium on Microarchitecture (Washington, DC, USA, 2007), IEEE Computer Society, pp. 69--84. Google Scholar
Digital Library
- }}Cardoso, J., and Diniz, P. Compilation techniques for reconfigurable architectures. Springer, 2008. Google Scholar
Digital Library
- }}Courtney, A. Frappe: Functional reactive programming in Java. In PADL '01: Proceedings of the Third International Symposium on Practical Aspects of Declarative Languages (London, UK, 2001), Springer-Verlag, pp. 29--44. Google Scholar
Digital Library
- }}Elliott, C., and Hudak, P. Functional reactive animation. In ICFP '97: Proceedings of the second ACM SIGPLAN international conference on Functional programming (New York, NY, USA, 1997), ACM, pp. 263--273. Google Scholar
Digital Library
- }}Gordon, M. I., Thies, W., and Amarasinghe, S. Exploiting coarse-grained task, data, and pipeline parallelism in stream programs. In ASPLOS-XII: Proceedings of the 12th international conference on Architectural support for programming languages and operating systems (New York, NY, USA, 2006), ACM, pp. 151--162. Google Scholar
Digital Library
- }}Gordon, M. I., Thies, W., Karczmarek, M., Lin, J., Meli, A. S., Lamb, A. A., Leger, C., Wong, J., Hoffmann, H., Maze, D., and Amarasinghe, S. A stream compiler for communication-exposed architectures. In ASPLOS-X: Proceedings of the 10th international conference on Architectural support for programming languages and operating systems (New York, NY, USA, 2002), ACM, pp. 291--303. Google Scholar
Digital Library
- }}Greaves, D., and Singh, S. Kiwi: Synthesis of FPGA circuits from parallel programs. In FCCM: IEEE Symposium on Field-Programmable Custom Computing Machines (2008). Google Scholar
Digital Library
- }}Greaves, D., and Singh, S. Exploiting system-level concurrency abstractions for hardware descriptions. Tech. Rep. MSR-TR-2009--48, Microsoft Research, Apr 2009.Google Scholar
- }}Hagiescu, A., Wong, W.-F., Bacon, D. F., and Rabbah, R. A computing origami: folding streams in FPGAs. In DAC '09: Proceedings of the 46th Annual Design Automation Conference (New York, NY, USA, 2009), ACM, pp. 282--287. Google Scholar
Digital Library
- }}Hoare, C. Communicating sequential processes. Communications of the ACM 21, 8 (1978), 677. Google Scholar
Digital Library
- }}Hormati, A., Kudlur, M., Mahlke, S., Bacon, D., and Rabbah, R. Optimus: efficient realization of streaming applications on FPGAs. In CASES '08: Proceedings of the 2008 international conference on Compilers, architectures and synthesis for embedded systems (New York, NY, USA, 2008), ACM, pp. 41--50. Google Scholar
Digital Library
- }}Huang, S. S., Hormati, A., Bacon, D. F., and Rabbah, R. M. Liquid metal: Object-oriented programming across the hardware/software boundary. In ECOOP (2008), J. Vitek, Ed., vol. 5142 of Lecture Notes in Computer Science, Springer, pp. 76--103. Google Scholar
Digital Library
- }}Kahn, G. The semantics of a simple language for parallel programming. In Proceedings of IFIP Congress 74 (Stockholm, Sweden, Aug. 1974), J. Rosenfield, Ed., pp. 471--475.Google Scholar
- }}Lee, E. A., and Messerschmitt, D. G. Static scheduling of synchronous data flow programs for digital signal processing. IEEE Trans. on Computers 36, 1 (January 1987), 24--35. Google Scholar
Digital Library
- }}Nikhil, R. Bluespec System Verilog: efficient, correct RTL from high level specifications. In MEMOCODE'04: Proceedings of the Second ACM and IEEE International Conference on Formal Methods and Models for Co-Design (2004), pp. 69--70.Google Scholar
Digital Library
- }}Peyton Jones, S. L., and Wadler, P. Imperative functional programming. In POPL '93: Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages (New York, NY, USA, 1993), ACM, pp. 71--84. Google Scholar
Digital Library
- }}Reynolds, J. C. Syntactic control of interference. In Proceedings of the 5th ACM SIGACT-SIGPLAN Symposium on Principles of programming languages (New York, NY, USA, 1978), ACM, pp. 39--46. Google Scholar
Digital Library
- }}Ryder, B. G., Landi, W. A., Stocks, P. A., Zhang, S., and Altucher, R. A schema for interprocedural modification side-effect analysis with pointer aliasing. ACM Trans. Program. Lang. Syst. 23, 2 (2001), 105--186. Google Scholar
Digital Library
- }}Sasitorn, J., and Cartwright, R. Efficient first-class generics on stock Java virtual machines. In SAC '06: Proceedings of the 2006 ACM symposium on Applied computing (New York, NY, USA, 2006), ACM, pp. 1621--1628. Google Scholar
Digital Library
- }}Spring, J. H., Privat, J., Guerraoui, R., and Vitek, J. StreamFlex: high-throughput stream programming in Java. In OOPSLA '07: Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications (New York, NY, USA, 2007), ACM, pp. 211--228. Google Scholar
Digital Library
- }}Stephens, R. A survey of stream processing. Acta Informatica 34, 7 (1997), 491--541.Google Scholar
Cross Ref
- }}Thies, W. Language and compiler support for stream programs. PhD thesis, Massachusetts Institute of Technology, 2009. Google Scholar
Digital Library
- }}Thies, W., Chandrasekhar, V., and Amarasinghe, S. A practical approach to exploiting coarse-grained pipeline parallelism in c programs. In MICRO '07: Proceedings of the 40th Annual IEEE/ACM International Symposium on Microarchitecture (Washington, DC, USA, 2007), IEEE Computer Society, pp. 356--369. Google Scholar
Digital Library
- }}Thies, W., Karczmarek, M., and Amarasinghe, S. P. StreamIt: A language for streaming applications. In CC '02: Proceedings of the 11th International Conference on Compiler Construction (London, UK, 2002), Springer-Verlag, pp. 179--196. Google Scholar
Digital Library
- }}Thies, W., Karczmarek, M., Sermulins, J., Rabbah, R., and Amarasinghe, S. Teleport messaging for distributed stream programs. In Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming (New York, NY, USA, 2005), ACM, pp. 224--235. Google Scholar
Digital Library
- }}Wadler, P. Comprehending monads. In LFP '90: Proceedings of the 1990 ACM conference on LISP and functional programming (New York, NY, USA, 1990), ACM, pp. 61--78. Google Scholar
Digital Library
Index Terms
Lime: a Java-compatible and synthesizable language for heterogeneous architectures
Recommendations
Lime: a Java-compatible and synthesizable language for heterogeneous architectures
OOPSLA '10: Proceedings of the ACM international conference on Object oriented programming systems languages and applicationsThe halt in clock frequency scaling has forced architects and language designers to look elsewhere for continued improvements in performance. We believe that extracting maximum performance will require compilation to highly heterogeneous architectures ...
Virtualization of heterogeneous machines hardware description in a synthesizable object-oriented language
DAC '11: Proceedings of the 48th Design Automation ConferenceLime is a new Java-compatible and object-oriented language designed to make programming of reconflgurable hardware significantly more accessible to skilled software developers. Lime programs may run either in software (via Java bytecodes) or in hardware ...
Toward Evaluating High-Level Synthesis Portability and Performance between Intel and Xilinx FPGAs
IWOCL'21: International Workshop on OpenCLOffloading computation from a CPU to a hardware accelerator is becoming a more common solution for improving performance because traditional gains enabled by Moore’s law and Dennard scaling have slowed. GPUs are often used as hardware accelerators, but ...







Comments