ABSTRACT

This paper reports an efficient implementation of Lisp in terms of processing speed in which parallel list processing is realized as well as parallel garbage collection. Parallel garbage collection enables realtime (i.e. non-stop) list processing. Despite the improvement of realtimeness, processing speed might be slower than stop-and-collect GC like generation scavenging GC. Parallel GC is currently adopted only by Lisp systems in which sequential list processing is performed. We have implemented a parallel Lisp where multiple list processing and GC processes are running in parallel to realize fast processing. The optimal number of list processing processes and GC processes depends on the application and the machine, because the cell consumption rate varies from application to application and a different machine has a different number of CPUs. Therefore we provide a mechanism to determine the CPU allocation of list processing processes and GC processes dynamically monitoring the cell consumption rate and the remaining free cells. This mechanism enables a fast and realtime processing for the major Lisp applications. Our basic allocation strategy is to assign a maximum number of CPUs to list processing. As a result, list processing is not interrupted and the execution time decreases.