Optimising Bytecode Emulation for Prolog

Byte-code representation has been used to implement several programming languages such as Lisp, ML, Prolog, or Java. In this work, we discuss the impact of several emulator optimisations for the Prolog system YAP. YAP obtains performance comparable or exceeding well-known Prolog systems by applying several different styles of optimisations, such as improving the emulation mechanism, exploiting the characteristics of the underlying hardware, and improving the abstract machine itself. We give throughout a detailed performance analysis, demonstrating that low-level optimisations can have a very significant impact on the whole system and across a range of architectures.

[1]  Mats Carlsson Design and implementation of an or-parallel Prolog engine , 1990, RIT / KTH / TRITA-CS.

[2]  G. J. Sussman,et al.  A brief introduction to Lisp , 1993, HOPL-II.

[3]  Ralph Clarke Haygood Native Code Compilation in SICStus Prolog , 1994, ICLP.

[4]  Werner Kluge,et al.  Implementation of Functional Languages , 1996, Lecture Notes in Computer Science.

[5]  Peter Van Roy,et al.  Can Logic Programming Execute as Fast as Imperative Programming? , 1990 .

[6]  Todd A. Proebsting Optimizing an ANSI C interpreter with superoperators , 1995, POPL '95.

[7]  Simon L. Peyton Jones,et al.  C-: A Portable Assembly Language , 1997, Implementation of Functional Languages.

[8]  Andrew Taylor,et al.  Parma - Bridging the Performance GAP Between Imperative and Logic Programming , 1996, J. Log. Program..

[9]  Ehud Shapiro,et al.  Third International Conference on Logic Programming , 1986 .

[10]  Richard P. Gabriel,et al.  Performance and evaluation of Lisp systems , 1985 .

[11]  Peter J. Stuckey,et al.  Incremental Analysis of Logic Programs , 1995, ICLP.

[12]  Robin Milner,et al.  Definition of standard ML , 1990 .

[13]  Manuel V. Hermenegildo,et al.  Effectivness of abstract interpretation in automatic parallelization: a case study in logic programming , 1999, TOPL.

[14]  James R. Bell,et al.  Threaded code , 1973, CACM.

[15]  Bart Demoen,et al.  Partial Translation: Towards a Portable and Efficient Prolog Implementation Technology , 1996, J. Log. Program..

[16]  Peter Van Roy,et al.  The Wonder Years of Sequential Prolog Implementation , 1996 .

[17]  Jan M. Van Campenhout,et al.  Interpretation and instruction path coprocessing , 1990, Computer systems.

[18]  Håkan Grahn,et al.  SimICS/Sun4m: A Virtual Workstation , 1998, USENIX Annual Technical Conference.

[19]  Mats Carlsson,et al.  SICStus Prolog User''s Manual , 1993 .

[20]  Peter Van Roy,et al.  1983-1993: The Wonder Years of Sequential Prolog Implementation , 1994, J. Log. Program..

[21]  M. Anton Ertl,et al.  Stack caching for interpreters , 1995, PLDI '95.

[22]  Philippe Codognet,et al.  WAMCC: Compiling Prolog to C , 1995, ICLP.

[23]  Alec Wolman,et al.  The structure and performance of interpreters , 1996, ASPLOS VII.

[24]  Leon Sterling,et al.  The Art of Prolog , 1987, IEEE Expert.

[25]  Pascal Van Hentenryck,et al.  Experimental Evaluation of a Generic Abstract Interpretation Algorithm for PROLOG , 1992, ACM Trans. Program. Lang. Syst..

[26]  Ken Arnold,et al.  The Java Programming Language , 1996 .

[27]  Anoop Gupta,et al.  Complete computer system simulation: the SimOS approach , 1995, IEEE Parallel Distributed Technol. Syst. Appl..