HMalloc: A Hybrid, Scalable, and LockFree Memory Allocator for MultiThreaded Applications An efficient multithreaded memory allocator has great impact on performance of applications with frequent memory allocation and deallocation operations. Currently, most popular memory allocators ignore the difference between thread local and shared memory, and manage them in a unified manner, which cannot make good use of the spatiotemporal locality of memory access. To solve this problem, this paper proposes a hybrid and lockfree multithreaded memory allocator, named HMalloc. The allocator separates local memory from shared memory. There is no false sharing and lock contentions in local memory allocation and deallocation process. Moreover, coalescencefree is used to optimize this process. Further, a flagbased shared memory allocation and deallocation method is proposed to achieve lockfree shared memory management. Experimental results show that HMalloc can achieve significant performance improvement when compared with existing wellknown memory allocators.

ASAP: Automatic Sizing and Partitioning for Dynamic Memory Heaps in HighLevel Synthesis Efficient highlevel synthesis (HLS) of dynamic memory allocation techniques (malloc() and free()) simplifies the compilation of algorithms with runtimevarying memory requirements to hardware designs. Existing HLS memory allocation frameworks often degrade performance and area, while simultaneously introducing even more parameters to optimize (e.g. heap depth, heap assignments to program logic). We address these concerns with ASAP (Automatic Sizing and Partitioning),a dynamic memory allocation framework for HLS tools. ASAP provides (1) automatic heap depth selection through dynamic analysis of an application, (2) automatic heap partitioning (through static analysis) to provide parallelism from program logic to memory, improving performance. We demonstrate that ASAP is able to improve performance and reduce cycle latencies compared with nonheappartitioned designs, with speedups up to  5xc3x97 when applied to common memory patterns, and up to  2xc3x97 improvement when applied to a suite of dynamicmemory intensive applications.