“…Primitives for FPGAs include sharing FPGA fabric [9,14,26,50,51,93], spatial multiplexing [15,28,84,91], context switch [59,77], memory virtualization [1,18,62,96], relocation [40], preemption [60], and interleaved hardware-software task execution [8,30,84,91]. Core techniques include virtualizing FPGA fabric, including regions [71], tasks [73], processing elements [21], IPC-like communication primitives [66], and abstraction layers/overlays [7,33,48,49,85] Extending OS abstractions to FPGAs is an area of active research. ReconOS [62] extends eCos [22] with hardware threads similar to Hthreads [70].…”