CACHE BEHAVIOR OF COMBINATOR GRAPH REDUCTION

Citation
Pj. Koopman et al., CACHE BEHAVIOR OF COMBINATOR GRAPH REDUCTION, ACM transactions on programming languages and systems, 14(2), 1992, pp. 265-297
Citations number
39
ISSN journal
01640925
Volume
14
Issue
2
Year of publication
1992
Pages
265 - 297
Database
ISI
SICI code
0164-0925(1992)14:2<265:CBOCGR>2.0.ZU;2-4
Abstract
The results of cache-simulation experiments with an abstract machine f or reducing combinator graphs are presented. The abstract machine, cal led TIGRE, exhibits reduction rates that, for similar kinds of combina tor graphs on similar kinds of hardware, compare favorably with previo usly reported techniques. Furthermore, TIGRE maps easily and efficient ly onto standard computer architectures, particularly those that allow a restricted form of self-modifying code. This provides some indicati on that the conventional "stored program" organization of computer sys tems is not necessarily an inappropriate one for functional programmin g language implementations. This is not to say, however, that present day computer systems are well equipped to reduce combinator graphs. In particular, the behavior of the cache memory has a significant effect on performance. In order to study and quantify this effect, trace-dri ven cache simulations of a TIGRE graph reducer running on a reduced in struction-set computer are conducted. The results of these simulations are presented with the following hardware-cache parameters varied: ca che size, block size, associativity, memory update policy, and write-a llocation policy. To begin with, the cache organization of a commercia lly available system is used and then the performance sensitivity with respect to variations of each parameter are measured. From the result s of the simulation study, a conclusion is made that combinator-graph reduction using TIGRE runs most efficiently when using a cache memory with an allocate-on-write-miss strategy, moderately large block size ( preferably with subblock placement), and copy-back memory updates.