[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
research-article

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

Published: 17 October 2010 Publication History

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.
[2]
}}Ackerman, W., and Dennis, J. VAL-a value-oriented algorithmic language. Tech. Rep. MIT-LCS-TR-218, Massachusetts Institute of Technology, 1979.
[3]
}}Arvind, Gostelow, K., and Plouffe, W. An asynchronous programming language and computing machine. Tech. Rep. 114, University of California at Irvine, 1978.
[4]
}}Ashcroft, E., and Wadge, W. Lucid, a nonprocedural language with iteration. Communications of the ACM 20, 7 (1977), 526.
[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.
[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.
[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.
[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.
[9]
}}Boyland, J. Why we should not add readonly to Java (yet). Journal of Object Technology 5, 5 (2006), 5--29.
[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.
[11]
}}Cardoso, J., and Diniz, P. Compilation techniques for reconfigurable architectures. Springer, 2008.
[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.
[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.
[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.
[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.
[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).
[17]
}}Greaves, D., and Singh, S. Exploiting system-level concurrency abstractions for hardware descriptions. Tech. Rep. MSR-TR-2009--48, Microsoft Research, Apr 2009.
[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.
[19]
}}Hoare, C. Communicating sequential processes. Communications of the ACM 21, 8 (1978), 677.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[30]
}}Stephens, R. A survey of stream processing. Acta Informatica 34, 7 (1997), 491--541.
[31]
}}Thies, W. Language and compiler support for stream programs. PhD thesis, Massachusetts Institute of Technology, 2009.
[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.
[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.
[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.
[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.

Cited By

View all
  • (2023)The Good, the Bad and the Ugly: Practices and Perspectives on Hardware Acceleration for Embedded Image ProcessingJournal of Signal Processing Systems10.1007/s11265-023-01885-595:10(1181-1201)Online publication date: 29-Jul-2023
  • (2022)PLD: fast FPGA compilation to make reconfigurable acceleration compatible with modern incremental refinement software developmentProceedings of the 27th ACM International Conference on Architectural Support for Programming Languages and Operating Systems10.1145/3503222.3507740(933-945)Online publication date: 28-Feb-2022
  • (2020)Resource Management and Scheduling in Distributed Stream Processing SystemsACM Computing Surveys10.1145/335539953:3(1-41)Online publication date: 28-May-2020
  • Show More Cited By

Index Terms

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

      Recommendations

      Comments

      Please enable JavaScript to view thecomments powered by Disqus.

      Information & Contributors

      Information

      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
      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
      Published in SIGPLAN Volume 45, Issue 10

      Check for updates

      Author Tags

      1. fpga
      2. functional programming
      3. high level synthesis
      4. object oriented
      5. reconfigurable architecture
      6. streaming
      7. value type

      Qualifiers

      • Research-article

      Contributors

      Other Metrics

      Bibliometrics & Citations

      Bibliometrics

      Article Metrics

      • Downloads (Last 12 months)26
      • Downloads (Last 6 weeks)3
      Reflects downloads up to 15 Jan 2025

      Other Metrics

      Citations

      Cited By

      View all
      • (2023)The Good, the Bad and the Ugly: Practices and Perspectives on Hardware Acceleration for Embedded Image ProcessingJournal of Signal Processing Systems10.1007/s11265-023-01885-595:10(1181-1201)Online publication date: 29-Jul-2023
      • (2022)PLD: fast FPGA compilation to make reconfigurable acceleration compatible with modern incremental refinement software developmentProceedings of the 27th ACM International Conference on Architectural Support for Programming Languages and Operating Systems10.1145/3503222.3507740(933-945)Online publication date: 28-Feb-2022
      • (2020)Resource Management and Scheduling in Distributed Stream Processing SystemsACM Computing Surveys10.1145/335539953:3(1-41)Online publication date: 28-May-2020
      • (2020)Parallel multiprocessing and scheduling on the heterogeneous Xeon+FPGA platformThe Journal of Supercomputing10.1007/s11227-019-02935-176:6(4645-4665)Online publication date: 1-Jun-2020
      • (2019)Exploring Heterogeneous Scheduling for Edge Computing with CPU and FPGA MPSoCsJournal of Systems Architecture10.1016/j.sysarc.2019.06.006Online publication date: Jun-2019
      • (2019)NoTThe Journal of Supercomputing10.1007/s11227-019-02749-175:7(3810-3841)Online publication date: 1-Jul-2019
      • (2018)Towards compilation of an imperative language for FPGAsProceedings of the 10th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages10.1145/3281287.3281291(47-56)Online publication date: 4-Nov-2018
      • (2016)ClickNPProceedings of the 2016 ACM SIGCOMM Conference10.1145/2934872.2934897(1-14)Online publication date: 22-Aug-2016
      • (2016)Compile-Time Automatic Synchronization Insertion and Redundant Synchronization Elimination for GPU Kernels2016 IEEE 22nd International Conference on Parallel and Distributed Systems (ICPADS)10.1109/ICPADS.2016.0112(826-834)Online publication date: Dec-2016
      • (2016)Asynchronous Dataflow De-Elastisation for Efficient Heterogeneous Synthesis2016 16th International Conference on Application of Concurrency to System Design (ACSD)10.1109/ACSD.2016.22(104-113)Online publication date: Jun-2016
      • Show More Cited By

      View Options

      Login options

      View options

      PDF

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader

      Media

      Figures

      Other

      Tables

      Share

      Share

      Share this Publication link

      Share on social media