Abstract
Dynamic storage allocation is a vital component of programming systems intended for multiprocessor architectures that support globally shared memory. Highly parallel algorithms for access to system data structures lie at the core of effective memory allocation strategies as well as solutions to other parallel systems problems. In this paper, we investigate four algorithms, all based on the first fit approach, that provide different granularities of parallel access to the allocator's data structures. These solutions employ a variety of design techniques including specialized locking protocols, the use of atomic fetch-and-Ф operations, and structural modifications. We describe experiments designed to compare the performance of these schemes. The results show that simple algorithms are appropriate when the expected number of concurrent requests per memory is low and the request pattern is not bursty. Algorithms that support finer granularity access while avoiding locking protocols are successful in a range of larger processor/memory ratios.
Article PDF
Similar content being viewed by others
Avoid common mistakes on your manuscript.
References
D. Knuth, The Art of Computer Programming, Vol. 3: Sorting and Searching (1973).
C. Ellis, Concurrent Search and Insertion in 2-3 Trees,Acta Informatica 14:63–86 (1980).
C. Ellis, Concurrency in Linear Hashing,ACM Trans. Database Systems 12(2):195–217 (1987).
C. Ellis, Concurrency in Extendible Hashing,Information Systems 13(1):97–109 (1988).
C. Ellis, Concurrent Search and Insertion in AVL Trees,IEEE Transactions on Computers C-29(9):811–817 (September 1980).
P. L. Lehman and S. B. Yao, Efficient Locking for Concurrent Operations on B-Trees,ACM Trans. Database Systems 6(4):650–670 (December 1981).
D. Shasha and N. Goodman, Concurrent Search Structure Algorithms,ACM Trans. Database Systems Vol 13, No. 1 (March 1988).
H. Stone, Parallel Memory Allocation using the FETCH-AND-ADD Instruction, Technical Report RC 9674, IBM Thomas, J. Watson Research Center, (November 1982).
A. Gottlieb and J. Wilson, Using the Buddy System for Concurrent Memory Allocation, Ultracomputer System Software Note 6, Courant Institute, New York University, (April 1981).
A. Bigler, S. Allan and R. Oldehoeft, Parallel Dynamic Storage Allocation,Proceedings of Int'l Conf. on Parallel Processing, p. 272–275 (August 1985).
R. Ford, Concurrent Algorithms for a Real Time Memory Management System,IEEE Software, p. 10–23 (September 1988).
H. T. Kung and J. Robinson, On Optimistic Methods for Concurrency Control,ACM Trans. Database Systems 6(2):213–226 (June 1981).
A. Gottlieb and C. Kruskal, Coordinating Parallel Processors: A Partial Unification,Computer Architecture News 9(6):16–24 (October 1981).
Butterfly Parallel Processor Overview, Technical Report, BBN Laboratories, (June 1985).
G. Pfister, W. Brentley, D. George, S. Harvey, W. Kleinfelder, K. McAuliffe, E. Melton, V. Norton and J. Weiss, The IBM Research Parallel Processor Prototype (RP3): Introduction and Architecture,Proc. of Int'l Conf. on Parallel Processing, St Charles Illinois, p. 764–771 (August 1985).
Inside the Butterfly Plus, Technical Report, BBN Laboratories, (October 1987).
The Uniform System Approach to Programming the Butterfly Parallel Processor, Technical Report # 6149, BBN Laboratories, (October 1985).
H. T. Kung and P. L. Lehman, Concurrent Manipulation of Binary Search Trees,ACM Trans. Database Systems 5(3):339–353 (1980).
U. Manber and R. E. Ladner, Concurrency Control in a Dynamic Search Structure,ACM Trans. Database Systems 9(3):439–455 (September 1984).
Author information
Authors and Affiliations
Additional information
This research was supported in part by the National Science Foundation under Grant Number DCR 8320136, DARPA/U.S. Army Engineer Topographic Laboratories under contract number DACA76-85-C-0001, and Unisys Corporation.
A preliminary version appeared in International Conference on Parallel Processing, August 1987.
Rights and permissions
About this article
Cite this article
Ellis, C.S., Olson, T.J. Algorithms for parallel memory allocation. Int J Parallel Prog 17, 303–345 (1988). https://doi.org/10.1007/BF01407909
Received:
Revised:
Issue Date:
DOI: https://doi.org/10.1007/BF01407909