Abstract
A hardware self-managing heap memory (RCM) for languages like Lisp, Smalltalk, and Java has been designed, built, tested and benchmarked. On every pointer write from the processor, reference-counting transactions are performed in real time within this memory, and garbage cells are reused without processor cycles. A processor allocates new nodes simply by reading from a distinguished location in its address space. The memory hardware also incorporates support for off-line, multiprocessing, mark-sweep garbage collection.
Performance statistics are presented from a partial implementation of Scheme over five different memory models and two garbage collection strategies, from main memory (no access to RCM) to a fully operational RCM installed on an external bus. The performance of the RCM memory is more than competitive with main memory.
Similar content being viewed by others
References
Appel, A.W. Garbage collection can be faster than stack allocation. Inf. Proc. Lett., 25(4):275–279, June 1987.
Appel, A.W., Ellis, J.R., and Li, K. Real-time concurrent collection on stock multiprocessors. Proc. SIGPLAN '88 Conf. Programming Language Design and Implementation, ACM SIGPLAN Notices, 23(7):11–20, July 1988.
Baker, H.G., Jr. List processing in real time on a serial computer. Comm. ACM, 21(4):280–294, April 1978.
Baker, H.G., Jr. Preface to Baker, H.G., Jr. (Ed.) Memory Management. Lecture Notes in Computer Science. Springer, Berlin, vol. 986, pp. v–viii, Springer, 1995.
Bobrow, D.G. Managing reentrant structures using reference counts. ACM Trans. Prog. Lang. Sys., 2(3):269–273, July 1980.
Clark D.W. and Green, C.C. A note on shared structure in LISP. Inform. Proc. Ltrs., 7(6):312–314, Oct. 1978.
Cohen, J. Garbage collection of linked data structures. Comput. Surveys, 13(3):341–367, Sept. 1981.
Collins, G.E. A method for overlapping and erasure of lists. Comm. ACM, 3(12):655–657, Dec. 1960.
Deutsch, L.P. and Bobrow, D.G. An efficient, incremental, real-time garbage collector. Comm. ACM, 19(9):522–526, Sept. 1976.
Deutsch, L.P. and Schiffman, A.M. Efficient implementation of the SMALLTALK-80 system. Conf. Rec. 11th ACM Symp. on Principles of Programming Languages, pp. 297–302, 1984.
Diwan, A., Tarditi, D., and Moss, E. Memory-system performance of programs with intensive heap allocation. ACM Trans. Comput. Sys., 13(3):244–273, Aug. 1995.
Duff, I.S., Grimes, R.G., and Lewis, J.G. Sparse matrix test problems. ACM Trans. Math. Software, 15(1):1–14, March 1989.
Dybvig, R.K. Three Implementation Models for SCHEME, Ph.D. dissertation. Univ. of North Carolina at Chapel Hill, April 1987.
Feldman, S.I. Technological Maturity Scale. Personal communication, 1991.
Feldman, S.I. Technological maturity and the history of UNIX. Keynote address, USENIX Summer 1992 Technical Conference, San Antonio, TX, June 10, 1992.
Frens, J. and Wise, D.S. Matrix inversion Using quadtrees implemented in GOFER. Technical Rept. 433, Computer Science Dept., Indiana Univ., May 1995.
Friedman, D.P. and Wise, D.S. Reference counting can manage the circular environments of mutual recursion. Inform. Proc. Ltrs., 8(1):41–44, Jan. 1979.
Gottlieb, A., Girshman, R., Kruskal, C.P., McAuliffe, K.P., Rudolph, L., and Snir, M. The NYU ultracomputer—Designing an MIMD shared memory parallel computer. IEEE Trans. Computers, C-32(2): 175–189, Feb. 1983.
Gries, D. An exercise in proving programs correct. Comm. ACM, 20(12):921–930, Dec. 1977.
Halstead, R.H., Jr. MULTILISP: A language for concurrent symbolic computation. ACM Trans. Prog. Lang. Sys., 7(4):501–538, Oct. 1985.
Heck, B., and Wise, D.S. Implementation of an applicative file system. In Memory Management. Y. Bekkers, and J. Cohen (Eds.), Lecture Notes in Computer Science, Springer, Berlin, vol. 637, pp. 248–263, 1992.
Hudak, P. and Keller, R.M. Garbage collection and task deletion in distributed applicative processing systems. Conf. Rec. 1982 ACM Symp. on Lisp and Functional Programming, pp. 168–178, 1982.
Ingalls, D.H.H. The SMALLTALK-76 programming system: Design and implementation. Conf. Rec. 5th ACM Symp. on Principles of Programming Languages, pp. 9–15, 1978.
Johnson, S.D., Bose, B., and Johnson, S.D. DDD-FM9001: Derivation of a verified microprocessor; an exercise in integrating verification with formal derivation. In Proc. IFIP Conf. on Correct Hardware Design and Verification Methods. G. Milne, and L. Pierre (Eds.). Lecture Notes in Computer Science, Springer, Berlin, vol. 683, pp. 191–202, 1993.
Jones, R. and Lins, R. Garbage Collection, Algorithms for Automatic Dynamic Memory Management, John Wiley and Sons, New York, 1996.
Knuth, D.E. The Art of Computer Programming I, Fundamental Algorithms, 2nd edition, Reading, MA, Addison-Wesley, 1973.
Knuth, D.E. The Art of Computer Programming III, Sorting and Searching, Addison-Wesley, Reading, MA, 1973.
Lang, B., Queinnec, and C., Piquer, J. Garbage collecting the world. Conf. Rec. 19th ACM Symp. on Principles of Programming Languages, pp. 39–50, 1992.
Lieberman, H. and Hewitt, C. A real-time garbage collector based on the lifetime of objects. Comm. ACM, 26(6):419–429, June 1983.
Moon, D. Garbage collection in a large LISP system. Conf. Rec. 1984 ACM Symp. on Lisp and Functional Programming, pp. 235–246.
Nilsen, K. Progress in hardware-assisted real-time garbage collection. In Memory Management. H.G. Baker (Ed.). Lecture Notes in Computer Science, Springer, Berlin, vol. 986, pp. 355–379, 1995.
Rees, J. and Clinger, W. (Eds.). Revised3 report on the algorithmic language SCHEME. ACM SIGPLAN Notices 21(12):37–79, Dec. 1986.
Schmidt, W. and Nilsen, K. Performance of a hardware-assisted real-time garbage collector. ASPLOS-VI Proc.: 6th Intl. Conf. on Architectural Support for Programming Languages and Operating Systems, ACM SIGPLAN Notices, 29(11):76–85, Nov. 1994.
Schorr, H. and Waite, W.M. An efficient machine-independent procedure for garbage collection in various list structures, Comm. ACM, 10(8):501–506, Aug. 1967.
Weizenbaum, J. Symmetric list processor. Comm. ACM, 6(9):524–544, Dec. 1963.
Wise, D.S. Design for a multiprocessing heap with on-board reference counting. In Functional Programming Languages and Computer Architecture, J.-P. Jouannaud (Ed.). Lecture Notes in Computer Science, Springer, Berlin, vol. 201, pp. 289–304, 1985.
Wise, D.S. Undulant block elimination and integer-preserving matrix inversion. Sci. Comput. Programming, (to appear).
Wise, D.S. and Franco, J. Costs of quadtree representation of non-dense matrices. J. Parallel Distrib. Comput., 9(3):282–296, July 1990.
Wise, D.S. and Walgenbach, J. Static and dynamic partitioning of pointers as links and threads. Proc. 1996 Intl. Conf. on Functional Programming, ACM SIGPLAN Notices, vol. 31, no. 6, pp. 42–49, June 1996.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Wise, D.S., Heck, B., Hess, C. et al. Research Demonstration of a Hardware Reference-Counting Heap. Higher-Order and Symbolic Computation 10, 159–181 (1997). https://doi.org/10.1023/A:1007715101339
Issue Date:
DOI: https://doi.org/10.1023/A:1007715101339