emucxl: an emulation framework for CXL-based disaggregated memory applications
<|reference_start|>emucxl: an emulation framework for CXL-based disaggregated memory applications: The emergence of CXL (Compute Express Link) promises to transform the status of interconnects between host and devices and in turn impact the design of all software layers. With its low overhead, low latency, and memory coherency capabilities, CXL has the potential to improve the performance of existing devices while making viable new operational use cases (e.g., disaggregated memory pools, cache coherent memory across devices etc.). The focus of this work is design of applications and middleware with use of CXL for supporting disaggregated memory. A vital building block for solutions in this space is the availability of a standard CXL hardware and software platform. Currently, CXL devices are not commercially available, and researchers often rely on custom-built hardware or emulation techniques and/or use customized software interfaces and abstractions. These techniques do not provide a standard usage model and abstraction layer for CXL usage, and developers and researchers have to reinvent the CXL setup to design and test their solutions, our work aims to provide a standardized view of the CXL emulation platform and the software interfaces and abstractions for disaggregated memory. This standardization is designed and implemented as a user space library, emucxl and is available as a virtual appliance. The library provides a user space API and is coupled with a NUMA-based CXL emulation backend. Further, we demonstrate usage of the standardized API for different use cases relying on disaggregated memory and show that generalized functionality can be built using the open source emucxl library.<|reference_end|>
@article{gond2024emucxl:,
    title={emucxl: an emulation framework for CXL-based disaggregated memory
  applications},
    author={Raja Gond, Purushottam Kulkarni},
    journal={arXiv preprint arXiv:2404.08311},
    year={2024},
    archivePrefix={arXiv},
    eprint={2404.08311},
    primaryClass={cs.DC}
}