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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital Library
- }}Boyland, J. Why we should not add readonly to Java (yet). Journal of Object Technology 5, 5 (2006), 5--29.Google ScholarCross 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 ScholarDigital Library
- }}Cardoso, J., and Diniz, P. Compilation techniques for reconfigurable architectures. Springer, 2008. Google ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital Library
- }}Hoare, C. Communicating sequential processes. Communications of the ACM 21, 8 (1978), 677. Google ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital Library
- }}Stephens, R. A survey of stream processing. Acta Informatica 34, 7 (1997), 491--541.Google ScholarCross Ref
- }}Thies, W. Language and compiler support for stream programs. PhD thesis, Massachusetts Institute of Technology, 2009. Google ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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: Proceedings of the 9th 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