In hypercube computers that support a multiuser environment, it is important for the operating system to be able to allocate subcubes of different dimensions. Previously proposed subcube allocation schemes, such as the buddy strategy, may fragment the hypercube excessively. We present a precise characterization of the subcube allocation problem and develop a general methodology to solve it. New subcube allocation and coalescing algorithms are described that have the goal of minimizing fragmentation. The concept of a maximal set of subcubes (MSS), which is useful in making allocations that result in a tightly packed hypercube, is introduced. The problems of allocating subcubes and of forming an MSS are formulated as decision problems, and shown to be NP-hard. Optimal algorithms for allocating subcubes and for forming an MSS are given. We suggest a heuristic procedure for efficiently coalescing a released cube with the existing free cubes. Finally, we present simulation results comparing several different allocation and coalescing strategies, which show that our methods provide a marked performance improvement over previous techniques.
[1]
Donald E. Knuth,et al.
The Art of Computer Programming, Volume I: Fundamental Algorithms, 2nd Edition
,
1997
.
[2]
Donald Leo Dietmeyer,et al.
Logic design of digital systems
,
1971
.
[3]
Michel Dagenais,et al.
McBOOLE: A New Procedure for Exact Logic Minimization
,
1986,
IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.
[4]
David S. Johnson,et al.
Computers and Intractability: A Guide to the Theory of NP-Completeness
,
1978
.
[5]
John P. Hayes,et al.
A Microprocessor-based Hypercube Supercomputer
,
1986,
IEEE Micro.
[6]
Donald E. Knuth.
The art of computer programming: fundamental algorithms
,
1969
.
[7]
F. Harary,et al.
A survey of the theory of hypercube graphs
,
1988
.
[8]
Donald Ervin Knuth,et al.
The Art of Computer Programming
,
1968
.
[9]
Ming-Syan Chen,et al.
Processor Allocation in an N-Cube Multiprocessor Using Gray Codes
,
1987,
IEEE Transactions on Computers.