Introducing the PilGRIM: A Processor for Executing Lazy Functional Languages

  • Arjan Boeijink
  • Philip K. F. Hölzenspies
  • Jan Kuper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6647)


Processor designs specialized for functional languages received very little attention in the past 20 years. The potential for exploiting more parallelism and the developments in hardware technology, ask for renewed investigation of this topic. In this paper, we use ideas from modern processor architectures and the state of the art in compilation, to guide the design of our processor, the PilGRIM. We define a high-level instruction set for lazy functional languages and show the processor architecture, that can efficiently execute these instructions.


Return Address Assembly Language Functional Language Graph Reduction Primitive Operation 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Augustsson, L.: BWM: A concrete machine for graph reduction. Functional Programming, 36–50 (1991)Google Scholar
  2. 2.
    Baaij, C.P.R., Kooijman, M., Kuper, J., Boeijink, W.A., Gerards, M.E.T.: Cλash: Structural descriptions of synchronous hardware using haskell. In: Proceedings of the 13th EUROMICRO Conference on Digital System Design: Architectures, Methods and Tools, pp. 714–721 (September 2010)Google Scholar
  3. 3.
    Boquist, U.: Code Optimisation Techniques for Lazy Functional Languages. Ph.D. thesis, Chalmers University of Technology (April 1999),
  4. 4.
    Boquist, U., Johnsson, T.: The GRIN project: A highly optimising back end for lazy functional languages. Implementation of Functional Languages, 58–84 (1996)Google Scholar
  5. 5.
    Hennessy, J.L., Patterson, D.A.: Computer Architecture: A Quantitative Approach, 4th edn. Morgan Kaufmann, San Francisco (2006)zbMATHGoogle Scholar
  6. 6.
    Johnsson, T.: Efficient compilation of lazy evaluation. In: SIGPLAN Symposium on Compiler Construction, pp. 58–69 (1984)Google Scholar
  7. 7.
    Marlow, S., Peyton Jones, S.L.: Making a fast curry: push/enter vs. eval/apply for higher-order languages. In: ICFP, pp. 4–15 (2004)Google Scholar
  8. 8.
    Naylor, M., Runciman, C.: The reduceron: Widening the von neumann bottleneck for graph reduction using an FPGA. In: Chitil, O., Horváth, Z., Zsók, V. (eds.) IFL 2007. LNCS, vol. 5083, pp. 129–146. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  9. 9.
    Naylor, M., Runciman, C.: The reduceron reconfigured. In: ICFP (2010)Google Scholar
  10. 10.
    Nethercote, N., Mycroft, A.: The cache behaviour of large lazy functional programs on stock hardware. In: MSP/ISMM, pp. 44–55 (2002)Google Scholar
  11. 11.
    Peyton Jones, S.L.: The Implementation of Functional Programming Languages. Prentice-Hall, Inc., Englewood Cliffs (1987)zbMATHGoogle Scholar
  12. 12.
    Peyton Jones, S.L.: Implementing lazy functional languages on stock hardware: The spineless tagless g-machine. J. Funct. Program. 2(2), 127–202 (1992)CrossRefzbMATHGoogle Scholar
  13. 13.
    Scheevel, M.: Norma: A graph reduction processor. In: LISP and Functional Programming, pp. 212–219 (1986)Google Scholar
  14. 14.
    Stoye, W.R., Clarke, T.J.W., Norman, A.C.: Some practical methods for rapid combinator reduction. In: LISP and Functional Programming, pp. 159–166 (1984)Google Scholar
  15. 15.
    Tolmach, A.: An external representation for the GHC core language (2001)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Arjan Boeijink
    • 1
  • Philip K. F. Hölzenspies
    • 1
  • Jan Kuper
    • 1
  1. 1.University of TwenteEnschedeThe Netherlands

Personalised recommendations