Arm RAS(Reliability, Availability, and Serviceability)是一套面向服务器、车规、工业等高可靠场景的标准化硬件可靠性架构,为全 SoC 的硬件故障检测、上报、处置、诊断定义了统一的软硬件接口与行为规范,核心目标是从硬件架构层面保障系统的可靠性、服务连续性与可维护性。
一、核心目标与适用范围
三大核心定义目标
- 可靠性(Reliability ):通过硬件内置纠错机制(ECC、奇偶校验、冗余逻辑)容忍瞬时硬件故障,降低功能失效概率;
- 可用性(Availability ):分级故障响应机制,支持在线修复、局部隔离,最小化系统停机时间;
- 可服务性(Serviceability ):标准化错误日志与诊断接口,支持故障溯源、器件老化预警与预测性维护。
架构适用范围
覆盖 Arm 全架构场景,统一定义处理器内核(PE)、缓存、TLB、片上互联、内存控制器、高速外设等所有 SoC 组件的 RAS 接口,打破不同芯片厂商的定制化差异,让通用操作系统、固件、诊断工具可以统一适配。
二、RAS Error的分类
RAS规范严格界定了故障从发生到失效的三层逻辑:
- Fault (故障):硬件物理层面的原生异常事件(如 SRAM 单比特翻转、总线电气干扰、器件永久损坏),它是错误的根源,按持续特性分为瞬态故障、间歇故障、永久故障三类。
- Error (错误):Fault 被硬件检测逻辑捕获后,产生的可观测状态与结构化记录,是 Fault 的表现形式,具备明确的类型、地址与严重等级。
- Failure (失效):Error 未被及时处置并持续扩散,最终导致系统功能无法正常交付服务,是故障恶化的最终结果。
根据error是否发生静默扩散( Silenty propagated )、系统全局架构状态是否可信,可以将detected error划分为Contained Error (CI)和Uncontained error (UC)。
- Uncontained error (UC) 不可隔离错误
- 错误可能已发生静默传播,无法确认污染范围,系统全局架构状态不可信,是最严重的等级。
- Contained Error (CI) 隔离错误
- 错误被硬件逻辑隔离在局部模块内,不会扩散到其他 IP,系统主体可继续运行, 硬件自动隔离故障区域。
- Contained Error可以继续分为:
- Correctable Error (CE) 可纠正错误:硬件可自动修复(如 ECC 单比特纠错),无数据损坏、不影响指令流执行;自动纠错,仅记录状态,不中断业务;
- Deferred Error (DE) 延迟错误:不可纠正,但通过数据Poison标记被限制在存储单元内;未被读取时不会进入执行流,无静默扩散,属于潜伏可控状态;标记poison状态,暂不阻塞运行;
- Uncorrectable Error (UE) 不可纠正错误 :硬件无法修复,存在数据损坏风险;触发紧急异常或最高优先级中断。通过 UET(UE Type)再细分 3 个子等级:
- Unrecoverable error (UEU):错误未发生静默传播,但已造成局部硬件 / 状态不可逆损坏,软件无法通过常规手段恢复功能,必须执行模块级 / 核心级复位;
- Recoverable error (UER):故障范围严格局限在单条指令 / 单个进程上下文内;软件可通过重建上下文、重启进程、刷新缓存完成修复,不污染全局系统状态;
- Restartable/Latent error (UEO):存储介质数据已损坏,但尚未被 CPU / 外设访问消费,错误处于潜伏状态;提前处置可无损恢复,无全局污染;

要注意Uncorrectable和Unrecoverable的区别:
- Uncorrectable Error(UE):描述的是硬件层面的纠错能力------ 硬件修不了,就是不可纠正。它不关心软件能不能恢复、会不会扩散,只是一个基础属性判定。
- Unrecoverable Error(UEU):描述的是软件层面的恢复能力------ 不仅硬件修不了,软件也没法通过上下文重建、进程重启等方式挽回,必须靠硬件复位才能解决。它是 UE 的子集,严重程度更高。
三、RAS Error的上报
当支持error上报的RAS节点(node)检测到error时,需要将error信息记录在Error Record registers中,并生成一个RAS interrupt。Error Record registers 是RAS 机制的核心基石,所有RAS节点(内核、缓存、外设等)都必须遵循统一的寄存器布局,实现软硬件接口标准化。
Error Record registers有:
- ERRDEVID (设备识别寄存器,只读)
- 标识节点硬件类型、厂商、版本、安全域属性,用于软件快速定位故障所属模块
- ERRFRn (特性寄存器,只读)
- 声明节点支持的错误类型、地址记录能力、中断能力、错误记录深度等硬件能力,软件初始化时读取以适配功能边界
- ERRCTRLn (控制寄存器,读写)
- 错误行为总开关,可配置错误检测使能、中断路由、同步异常使能、错误溢出覆盖策略等
- ERRSTATUSn (状态寄存器,W1C 写 1 清零)
- 错误日志核心载体,记录错误有效位、错误类型(CE/DE/CI/UE)、UET 子类型、溢出标志等
- ERRADDR (错误地址寄存器,只读)
- 记录故障发生的物理地址,辅助定位故障位置与影响范围
- ERRMISCn (附加信息寄存器)
- 存放厂商自定义的故障辅助诊断信息
- ERRGSRn (全局状态寄存器,只读)
- 汇总多个错误记录单元的有效状态,支持软件快速批量巡检,无需逐个遍历节点
- LAR (锁寄存器)
- CoreSight 标准写保护机制,写入密钥 0xC5ACCE55 才可改写配置寄存器,防止误操作
- RFSR (RAS 故障状态寄存器)
- Armv8.1-M 为嵌入式轻量化场景设计的简化顶层寄存器,挂载在内核 SCB 模块下
- 全芯片 RAS 故障总状态汇总------ 只要任意一个 RAS 错误记录单元存在未清除的有效错误,RFSR 对应标志位就会置位
- Armv8.1-M 为嵌入式轻量化场景设计的简化顶层寄存器,挂载在内核 SCB 模块下
RAS Error的上报形式有两大类:
- 同步错误路径
- bus error in response
- 即时响应、精准关联故障指令,对应 "PE 访存触发总线错误" 场景
- bus error in response
- 异步错误路径
- error recovery interrupt
- 对应 CE 级错误,硬件已自动修复,仅用于统计与老化预警
- fault handling interrupt
- 对应 DE/CI 级错误,需软件介入执行隔离、重试、刷新等操作
- critical error interrupt
- 对应 UE 级不可控错误,最高优先级,需软件紧急保存现场、执行复位或功能降级
- error recovery interrupt
RAS 节点会按层级分布式部署,形成全 SoC 覆盖:
- PE 级节点:处理器内核内部,覆盖 L1 缓存、TLB、寄存器文件、执行单元的故障检测;
- 系统级节点:片上互联、L2/L3 缓存、内存控制器、高速接口(PCIe、CCI)等 SoC 组件;
- 全局汇总单元:汇总全芯片错误状态,产生全局 RAS 中断,作为系统级故障入口。

四、Error处理流程
RAS定义了通用的故障处置流程,所有符合规范的硬件均遵循该流程:
- 检测:硬件 ECC、奇偶校验、冗余逻辑实时检测物理 Fault;
- 记录:硬件自动填充错误记录寄存器、置位有效位,全程不依赖软件干预;
- 上报:根据 ERRCTLR 配置,触发同步异常或对应等级的异步中断;
- 处置:软件读取错误记录,按等级执行对应操作:
- 清除:软件向 ERRSTATUS 对应位写 1 清零(W1C 特性),释放记录槽位;
- 恢复:根据故障等级恢复业务运行,或上报运维系统。
