Last updated by Hilda Xue, 26 Aug 2015
If you have any questions, please do not hesitate to contact me.
My email address: zeping.xue10 AT imperial.ac.uk.
SysAlloc is a hardware memory allocator for memory-mapped bus connected heterogeneous systems targeting centred memory. It is scalable in terms of having arbitrary number of active clients in the system; it is also flexible in the range of memory to be managed.
The current SysAlloc is based on the idea of binary buddy systems. The allocator searches for the first-fit memory block. Unlike software-implemented allocators where the memory management is done by repeatedly splitting and coalescing memory blocks, our hardware implemented allocator takes a number of continuous base blocks and allocate. In this way we avoid the splitting and coalescing. Apart from that, instead of searching in a list of memory blocks, we use a tree data structure to search for suitable memory blocks.
You could read my paper to better understand SysAlloc.
SysAlloc IP core for Zynq SoC
The VHDL implementation of SysAlloc IP core can be found here.
Allocator-only source
The VHDL implementation of memory allocator can be found here. This is the allocator only code, which means the communication protocol is not included.
Allocator Algorithm C model
The allocator algorithm is firstly modelled in C and the C code can be found here.
Synthetic FPGA implemented client
Source code for the synthetic hardware clients used in testing SysAlloc can be found here.
Software Access
The example code for accessing SysAlloc from software running on processors can be found here.
HLS Access
SysAlloc can also be accessed from HLS, and the example can be found here.