问题意识
• CXL 三大协议的分工如何?哪个负责控制面?哪些负责数据面?
• CXL 除了硬件厂商参与,在设备可靠性RAS方面,少不了软件厂商的投入,具体应该关注哪些方面?从哪里入手?
CXL 设备类型和协议
说明:
- • .mem 请求通过 PCIe/CXL 层次结构由硬件路由 (routed through PCIe/CXL hierarchy via HW)。
- • .io 协议用于建立路由 (used to establish routing)。
- • .io 协议涵盖所有使用场景 (.io protocol covers all use cases)。
- • .io 协议是控制平面 (.io protocol is control plane)。
后续内容将专注于类型 3 设备 。
Note:近年来,国内在CXL方向的创业公司也有不少,鹏弟接触到的主要还是关注Type 3 做内存扩展的比较多,可能这个场景的需求更大,且土壤也相对肥沃。
Bill Gervasi 在2024 FMS 论坛发言上,预测Type2 会在市场竞争中消失,详细参考:
CXL 技术在分层存储的实现中表现出强大潜力,但仍存在一些挑战和注意事项:
- • RAS 功能(可靠性、可用性、可维护性)依赖 .io 协议来完成毒性处理、数据清理和错误扩散的管理。
- • CXL 与 DDR 的对比:虽然 CXL 支持更高的延迟,但这可能需要额外的软件支持来应对错误监控。
- • 性能监控:通过 .io 协议实现,同时提出了热度跟踪机制作为未来改进的方向。
技术实现的复杂性和软件需求可能是内存分层应用中需要重点关注的问题。
CXL内存数据热度跟踪,参考:
Linux 中针对 RAS(可靠性、可用性和可维护性)的实现正在发生变化:
- • 传统 EDAC 系统:主要用于检测和修复内存控制器的错误。
- • CXL 的引入:通过将内存控制功能移动到设备端,CXL 带来了新的 RAS 处理架构,与 EDAC 存在差异,尤其在分层处理(如数据清理和毒性处理)方面。
- • 错误来源多样化:CXL 错误可能同时来自设备本身和设备通信路径,这对软件处理能力提出了新要求。
这些变化为 Linux 在支持 CXL 技术时的架构设计提供了深刻的启示,同时需要开发者关注软件层次的复杂性和错误管理的多样性。
EDAC 系统简介
EDAC(Error Detection and Correction,错误检测与校正)是一种广泛用于计算系统中的技术,其核心功能是通过硬件或软件层面实现错误检测和修复,以提高系统的可靠性和稳定性,尤其是在内存控制器中的应用。
EDAC 系统的主要功能
- 1. 错误检测(Error Detection)
- • 监控内存或数据传输中的比特错误,例如单位比特翻转(Single Bit Error, SBE)和多位比特翻转(Multi-Bit Error, MBE)。
- • 提供实时监控功能,能快速发现系统运行中的潜在问题。
- 2. 错误校正(Error Correction)
- • 对于单比特错误,EDAC 系统通常可以自动修复,而无需软件或用户的额外操作。
- • 对于无法修复的错误(如多比特错误),EDAC 记录并上报问题,以便采取进一步措施。
- 3. 数据清理(Scrubbing)
- • 定期扫描和验证内存,确保数据完整性并主动纠正可能存在的错误,降低累积错误导致系统崩溃的风险。
- 4. 毒性处理(Poison Handling)
- • 如果数据错误超出校正能力(例如多位错误),EDAC 系统会标记这些数据为“有毒数据”(poisoned data),以防止被进一步使用。
EDAC 的工作原理
- 1. 内存控制器集成
- • EDAC 系统主要运行在内存控制器中,通过监控内存访问时的数据校验位(Parity Bit)或纠错码(ECC, Error Correction Code)实现错误检测与校正。
- 2. 硬件与操作系统交互
- • EDAC 系统通常通过中断(Interrupt)将错误信息通知操作系统,或者将错误日志写入硬件管理单元(如日志寄存器)。
- 3. 支持多种硬件
- • 除内存外,EDAC 也可用于其他硬件模块(如 PCIe 总线或存储设备)来保障数据传输的完整性。
EDAC 的应用场景
- 1. 服务器与数据中心
- • 高可靠性是关键,EDAC 能确保内存和数据传输的高可用性,降低因硬件故障导致的停机风险。
- 2. 嵌入式系统
- • 在航天、汽车、医疗等高安全性场景中,EDAC 至关重要,能保障系统在高辐射或恶劣环境下的正常运行。
- 3. 个人计算机
- • 虽然桌面计算机中较少采用完整的 EDAC 系统,但 ECC 内存模块作为一种轻量级实现也得到一定应用。
EDAC 的优势与挑战
优势:
- • 增强系统的稳定性和可靠性。
- • 减少因硬件错误导致的数据损坏和服务中断。
- • 提高系统对环境干扰(如辐射或电磁干扰)的容忍度。
挑战:
- • 增加了硬件的复杂性和成本。
- • 某些多比特错误可能无法通过 EDAC 系统修复,仍需额外机制处理。
- • 在高性能场景中,EDAC 的数据校验过程可能带来额外的延迟。
EDAC和SSD中的ECC有什么关联?
差异性比较
EDAC 和 ECC 是互补的技术,它们分别用于处理计算系统的两个关键领域:内存和存储。 EDAC 提供系统层的实时保护,避免计算中因内存比特翻转引发的错误,而 SSD 中的 ECC 专注于持久存储的完整性,校正 NAND 闪存中的存储错误。在现代计算系统中,它们协同工作,形成从存储到内存的数据保护链,共同提高计算机系统的可靠性和数据完整性。
总结
CXL 技术带来了新功能,但也对现有软件和系统架构提出了挑战:
- • CXL .mem 协议:完全由硬件处理,提供类似传统内存的体验,降低了软件的复杂性。
- • CXL .io 协议:作为设备的核心控制平面,用于管理可靠性(RAS)、性能监控等关键任务。
- • 对软件的影响:新功能要求硬件、固件和操作系统之间的协同发展,需要对操作系统子系统进行适配,以支持 CXL 的分层和复杂性。
这表明 CXL 的发展既提供了强大的功能,也需要软硬件开发人员更紧密的合作来应对架构的演变。