ARM Cortex-R5F TRM (DDI0460D)状态:
"启用 ECC 检查时、硬件恢复始终启用。 ECC 错误时
检测到错误时、处理器会尝试清除包含错误的高速缓存行。 如果线路是干净的、则是
无效、并且从 L2存储器系统重新加载正确的数据。 如果线路变脏
逐出将脏数据写入 L2存储器系统、并在该过程中纠正任何数据
1位错误。 然后从 L2存储器系统中重新加载校正后的数据。
如果在脏线中检测到2位错误、则该错误不可纠正。 如果中存在2位误差
标签或脏 RAM、不会向 L2存储器系统写入任何数据。 如果数据中存在2位错误
RAM、缓存行被写入 L2存储器系统、但 AXI 主端口 WSTRBM
对于包含错误的数据、该信号为低电平。 如果检测到不可纠正的错误、则中止
数据可能已丢失、因此始终会生成。 预计这种情况会发生
对正在运行的软件进程致命。
如果启用了强制写通设置之一、则存储器标记为回写写写分配
表现为写通。 这可确保缓存行永远不会变脏、因此错误可能会变脏
始终通过使包含 ECC 错误的缓存行无效来恢复。
"
和
"数据高速缓存写入错误:
如果奇偶校验或 ECC 中止被启用、或者检测到不可纠正的 ECC 错误、则为异步
发生数据中止异常。 由于中止是异步的、因此 Far 数据是不可预测的。
数据 FSR 表示异步写入奇偶校验错误。 辅助 FSR 表示
错误位于高速缓存中、错误位于哪个高速缓存方式和索引中。
在直写高速缓存区域中、导致错误的存储被写入外部存储器
使用 L2存储器接口、以确保数据不会丢失、并且错误不会致命"
我打算通过将辅助控制寄存器的高速缓存 ECC 错误位[5:3]配置为以静默方式纠正单个位错误、并且仅针对不可纠正的错误配置信号中止。 不过,通过阅读 TRM 和 上文所述各段, 我不清楚会出现以下两个序列中的哪一个:
a: 由于区域标记为写入、因此根本不会产生中止、因此错误始终可以通过 CPU 背面的硬件机制进行校正。
b:生成中止、由 CPU 使缓存中的行无效
我目前假设方案 A、即不会为 WT 高速缓存和 CEC=B101生成异常中断、因为高速缓存中可能没有脏线、所有这些都由硬件恢复机制处理、并且 可能会为受影响 的访问带来额外延迟。
这是正确的假设吗?
谢谢、
弗朗克。