• DocumentCode
    760039
  • Title

    A high performance memory allocator for object-oriented systems

  • Author

    Chang, J.M. ; Gehringer, Edward F.

  • Author_Institution
    Dept. of Comput. Sci., Illinois Inst. of Technol., Chicago, IL, USA
  • Volume
    45
  • Issue
    3
  • fYear
    1996
  • fDate
    3/1/1996 12:00:00 AM
  • Firstpage
    357
  • Lastpage
    366
  • Abstract
    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
  • Keywords
    object-oriented programming; storage management; binary tree; bit-vector allocation; buddy-system allocation; combinational-logic; dynamic memory management; hardware design; high-performance; internal fragmentation; memory allocation; memory allocator; nonbacktracking search; object-oriented systems; software realization; Binary trees; Computer languages; Hardware; Heuristic algorithms; Logic devices; Memory management; Object oriented modeling; Power engineering and energy; Power engineering computing; Software standards;
  • fLanguage
    English
  • Journal_Title
    Computers, IEEE Transactions on
  • Publisher
    ieee
  • ISSN
    0018-9340
  • Type

    jour

  • DOI
    10.1109/12.485574
  • Filename
    485574