# Fabric-Centric Computing hot'OS23 TL;DR:FCC:结构中心的计算,将内存结构视为系统中一等公民,用于在可组合基础设施上实例化、编排和回收计算。

与通信结构相比,memory fabric内存结构提供load/store语义、有限的缓存一致性,将FAM集成到主机处理器的层次结构中

FCC组件

  • Fabric Host Adapter (FHA)
  • Fabric Switch (FS)
  • Fabric Endpoint Adapter (FEA)
  • Fabric Attached Memory (FAM) and Fabric Attached Accelerators (FAA)

differences of memory fabric

  1. 同步执行:与通信结构(RDMA)的异步交互相比,内存结构的load/store是透明生成并同步处理的(同步和异步的优化方式不同了)
  2. 灵活的内存节点:包括 NUMA CC-NUMA NonCC-NUMA COMA(通过在内存中动态迁移和复制缓存对象来减少平均缓存缺失延迟。)
  3. 可路由PCIE的重要性
  4. 快速的上下文切换
  5. 被动故障域

FCC

设计原则

  1. 数据移动作为托管服务:
    1. 相比于通信结构,内存结构的数据移动只有发起者和执行者,没有completion facilitator,为了减少高延迟停顿的开销,应当解耦发起者和执行者,请求和执行由不同的核心/FAA执行(有点类似线程预取)
    2. host和加速器的本地内存层次可以透明的加速FAM性能,要利用好局部性
    3. 读写由CPU/FAA发起,由FAM提供服务,这会引起一种新型的机架级/集群级流量矩阵
    4. 对于延迟敏感或与当前执行上下文紧密耦合(例如数据结构遍历)的加载/存储请求是同步执行的。在这种情况下,FCC 通过软件/硬件辅助的缓存和预取优化来增强它们,以利用局部性优势。然后,CPU/FAA 提交的其他数据传输被委托给专用迁移代理(在同一内存域中),并通过执行控制平面策略(例如远程内存带宽限制)的中央模块进行编排。
  2. Host-assisted memory node typeconscious data structure
    1. 内存结构引入了不同特征和功能的内存节点,设计高效的数据结构应当考虑不同节点的内存布局、访问分布和数据局部性。
    2. numa-aware被广泛研究,其和CC-NUMA节点很像
    3. 对于无CPU的节点,单边的远程访问模式该如何设计?
    4. 提出 基于主动统一堆的主机辅助内存节点类型感知数据结构设计host-assisted memory node type-conscious data structure design based on an active and unified heap。
    5. 将来自不同结构连接的内存节点的内存区域/段实例化为一系列不同大小的内存仓,然后使用堆管理器进行对象分配和回收。底层是一个运行时系统,它 (1) 分析对象的访问特征和底层内存节点的可用性; (2)根据对象温度、并发访问模型和内存节点能力,有效地跨各个内存节点(包括主机本地内存)迁移对象。开发人员使用向后兼容的编程接口(如智能指针)来移植或构建数据结构。我们的目标是在不向程序员暴露内存节点的特殊性的情况下实现最大的性能增益。例如,频繁访问的对象将被缓存在主机处理器中并移至本地主机存储器中。
  3. 实现可靠性和拓展性:Idempotent tasks and hardware cooperative scalable functions
    1. 通过幂等任务来实现可靠性,灵感来源于幂等处理器架构(幂等任务:执行多次不会影响正确性和一致性)
    2. 为FAA提出硬件协作可扩展功能,期望构建一个供FAA继承的基本模板,作为幂等任务的硬件执行底层。
  4. 由于可路由 PCIe 的特性和不确定性,FCC 提出了一种带内集中式结构仲裁器,用于带宽分配、拥塞控制和流调度。

UNIFABRIC

基于上面的设计原则提出UniFabric,本质上是一个分布式运行时系统,在机架集群规模提供一系列新的或者改进的服务。包含以下组件

  1. 用于(异步)数据移动的弹性事务引擎
  2. 统一的堆管理器
  3. 开发幂等任务的编译和执行框架
  4. 可路由 PCIe 之上的通信基板,支持弹性事务