Memory system performance of programs with intensive heap allocation
- 1 August 1995
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Computer Systems
- Vol. 13 (3) , 244-273
- https://doi.org/10.1145/210126.210129
Abstract
Heap allocation with copying garbage collection is a general storage management technique for programming languages. It is believed to have poor memory system performance. To investigate this, we conducted an in-depth study of the memory system performance of heap allocation for memory systems found on many machines. We studied the performance of mostly functional Standard ML programs which made heavy use of heap allocation. We found that most machines support heap allocation poorly. However, with the appropriate memory system organization, heap allocation can have good performance. The memory system property crucial for achieving good performance was the ability to allocate and initialize a new object into the cache without a penalty. This can be achieved by having subblock by placement with a subblock size of one word with a write-allocate policy, along with fast page-mode writes or a write buffer. For caches with subblock placement, the data cache overhead was under 9% for a 64K or larger data cache; without subblock placement the overhead was often higher than 50%.Keywords
This publication has 14 references indexed in Scilit:
- The concurrency workbenchACM Transactions on Programming Languages and Systems, 1993
- Optimally profiling and tracing programsPublished by Association for Computing Machinery (ACM) ,1992
- Compiling with ContinuationsPublished by Cambridge University Press (CUP) ,1991
- A runtime systemHigher-Order and Symbolic Computation, 1990
- Evaluating associativity in CPU cachesIEEE Transactions on Computers, 1989
- Simple generational garbage collection and fast allocationSoftware: Practice and Experience, 1989
- A case for direct-mapped cachesComputer, 1988
- Garbage collection can be faster than stack allocationInformation Processing Letters, 1987
- A nonrecursive list compacting algorithmCommunications of the ACM, 1970
- A LISP garbage-collector for virtual-memory computer systemsCommunications of the ACM, 1969