一句话:提出首个面向 CXL 并发程序的编程模型 CXL0,给出操作语义并支持持久化转换。
CXL 作为新兴互连标准可在解聚架构下提供缓存一致的共享内存池,但缺乏编程模型,导致上层系统难以推理正确性与崩溃一致性。本文提出 CXL0——首个面向 CXL 上并发程序的编程模型,为内存访问提供高层抽象并形式化定义操作语义。作者论证 CXL0 能覆盖当前与未来多种 CXL 配置,并在真实硬件上进行初步测量。为展示其用处,论文给出一种通用转换,可为任意线性一致并发算法在分布式部分崩溃场景下增加持久性。该工作为基于 CXL 的系统设计与编程奠定基础。
CXL (Compute Express Link) is an emerging open industry-standard interconnect between processing and memory devices that is expected to revolutionize the way systems are designed. It enables cache-coherent, shared memory pools in a disaggregated fashion at unprecedented scales, allowing algorithms to interact with various storage devices using simple loads and stores. While CXL unleashes unique opportunities, it also introduces challenges of data management and crash consistency. For example, CXL currently lacks an adequate programming model, making it impossible to reason about the correctness and behavior of systems on top. In this work, we present CXL0, the first programming model for concurrent programs over CXL. We propose a high-level abstraction for memory accesses and formally define operational semantics. We demonstrate that CXL0 captures a wide range of current and future CXL setups and perform initial measurements on real hardware. To illustrate the usefulness of CXL0, we present a general transformation that enhances any linearizable concurrent algorithm with durability in a distributed partial-crash setting. We believe that this work will serve as a stepping stone for systems design and programming on top of CXL.