Improving the Performance of Buddy Systems
IEEE Transactions on Computers
Disk file allocation based on the buddy system
ACM Transactions on Computer Systems (TOCS)
The logical design of operating systems (2nd ed.)
The logical design of operating systems (2nd ed.)
A lazy buddy system bounded by two coalescing delays
SOSP '89 Proceedings of the twelfth ACM symposium on Operating systems principles
Design of the opportunistic garbage collector
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Empirical measurements of six allocation-intensive C programs
ACM SIGPLAN Notices
The measured cost of conservative garbage collection
Software—Practice & Experience
Resource allocation strategies for hypercube architectures
Information Sciences: an International Journal
A coprocessor architecture for memory management in object-oriented systems
A coprocessor architecture for memory management in object-oriented systems
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
Tailored-List and Recombination-Delaying Buddy Systems
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communications of the ACM
A efficient bit table technique for dynamic storage allocation of 2"-word blocks
Communications of the ACM
Communications of the ACM
Object-Caching for Performance in Object-Oriented Systems
ICCD '91 Proceedings of the 1991 IEEE International Conference on Computer Design on VLSI in Computer & Processors
Synthesis of hardware models in C with pointers and complex data structures
IEEE Transactions on Very Large Scale Integration (VLSI) Systems - System Level Design
Research Frontiers in Object Technology
Information Systems Frontiers
A Multithreaded Concurrent Garbage Collector Parallelizing the New Instruction in Java
IPDPS '02 Proceedings of the 16th International Parallel and Distributed Processing Symposium
Dynamic Memory Oriented Transformations in the MPEG4 IM1-Player on a Low Power Platform
PACS '00 Proceedings of the First International Workshop on Power-Aware Computer Systems-Revised Papers
Estimating internal memory fragmentation for Java programs
Journal of Systems and Software
DMMX: dynamic memory management extensions
Journal of Systems and Software
Hardware support for real-time embedded multiprocessor system-on-a-chip memory management
Proceedings of the tenth international symposium on Hardware/software codesign
An integrated dynamic memory tracing tool for C++
Information Sciences—Informatics and Computer Science: An International Journal
Architectural Support for Dynamic Memory Management
ICCD '00 Proceedings of the 2000 IEEE International Conference on Computer Design: VLSI in Computers & Processors
The design and analysis of a quantitative simulator for dynamic memory management
Journal of Systems and Software
A tunable hybrid memory allocator
Journal of Systems and Software
Exploration of distributed shared memory architectures for NoC-based multiprocessors
Journal of Systems Architecture: the EUROMICRO Journal
A self-maintained memory module supporting DMM
CASES '07 Proceedings of the 2007 international conference on Compilers, architecture, and synthesis for embedded systems
Feasibility of decoupling memory management from the execution pipeline
Journal of Systems Architecture: the EUROMICRO Journal
Efficient dynamic heap allocation of scratch-pad memory
Proceedings of the 7th international symposium on Memory management
Memory management thread for heap allocation intensive sequential applications
Proceedings of the 10th workshop on MEmory performance: DEaling with Applications, systems and architecture
Numerical relay for overcurrent protection using TMS320F2812
CSECS '10 Proceedings of the 9th WSEAS international conference on Circuits, systems, electronics, control & signal processing
Power-aware dynamic memory management on many-core platforms utilizing DVFS
ACM Transactions on Embedded Computing Systems (TECS) - Special Section on ESTIMedia'10
Hi-index | 14.98 |
Object-oriented programming languages tend to allocate and deallocate blocks of memory very frequently. The growing popularity of these languages increases the importance of high-performance memory allocation. For speed and simplicity in memory allocation, the buddy system has been the method of choice for nearly three decades. A software realization incurs the overhead of internal fragmentation and of memory traffic due to splitting and coalescing memory blocks. This paper presents a simple hardware design for buddy-system allocation that takes advantage of the speed of a pure combinational-logic implementation. Two binary trees formed by anding and oring propagate information about the allocation status of blocks and subblocks. They implement a nonbacktracking search for the address of the first free block that is large enough to satisfy a request.Although the buddy system may allocate a block that is much larger than the requested size, the logic that finds a free block can be augmented by a "bit-flipper" to relinquish the unused portion at the end of the block. This effectively eliminates internal fragmentation. Simulation results show that the buddy system modified in this way uses less memory in most, though not all, programs than the unmodified buddy. Hence, the hardware buddy-system allocator is faster and uses memory more efficiently than the standard software approach.