skip to main content
research-article

Lime: a Java-compatible and synthesizable language for heterogeneous architectures

Published:17 October 2010Publication History
Skip Abstract Section

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.

References

  1. }}Bluespec SystemVerilog version 3.8 reference guide. www.bluespec.com, 2004.Google ScholarGoogle Scholar
  2. }}Ackerman, W., and Dennis, J. VAL-a value-oriented algorithmic language. Tech. Rep. MIT-LCS-TR-218, Massachusetts Institute of Technology, 1979. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. }}Arvind, Gostelow, K., and Plouffe, W. An asynchronous programming language and computing machine. Tech. Rep. 114, University of California at Irvine, 1978.Google ScholarGoogle Scholar
  4. }}Ashcroft, E., and Wadge, W. Lucid, a nonprocedural language with iteration. Communications of the ACM 20, 7 (1977), 526. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. }}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 ScholarGoogle Scholar
  6. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. }}Boyland, J. Why we should not add readonly to Java (yet). Journal of Object Technology 5, 5 (2006), 5--29.Google ScholarGoogle ScholarCross RefCross Ref
  10. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. }}Cardoso, J., and Diniz, P. Compilation techniques for reconfigurable architectures. Springer, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. }}Greaves, D., and Singh, S. Exploiting system-level concurrency abstractions for hardware descriptions. Tech. Rep. MSR-TR-2009--48, Microsoft Research, Apr 2009.Google ScholarGoogle Scholar
  18. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. }}Hoare, C. Communicating sequential processes. Communications of the ACM 21, 8 (1978), 677. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. }}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 ScholarGoogle Scholar
  23. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  28. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  30. }}Stephens, R. A survey of stream processing. Acta Informatica 34, 7 (1997), 491--541.Google ScholarGoogle ScholarCross RefCross Ref
  31. }}Thies, W. Language and compiler support for stream programs. PhD thesis, Massachusetts Institute of Technology, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  35. }}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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Lime: a Java-compatible and synthesizable language for heterogeneous architectures

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 45, Issue 10
        OOPSLA '10
        October 2010
        957 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/1932682
        Issue’s Table of Contents
        • cover image ACM Conferences
          OOPSLA '10: Proceedings of the ACM international conference on Object oriented programming systems languages and applications
          October 2010
          984 pages
          ISBN:9781450302036
          DOI:10.1145/1869459

        Copyright © 2010 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 17 October 2010

        Check for updates

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader