This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RM57L843:RAM ECC 问题

Guru**** 2460850 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/653657/rm57l843-ram-ecc-question

器件型号:RM57L843

您好!

我希望对此微处理器上的 RAM ECC 特性进行澄清:

如果我在默认情况下正确理解了技术参考、RAM ECC 将不会自动更正单个位错误、除非通过 设置 L2RAMW 模块控制寄存器(RAMCTRL)中的 Memory Scrubbing Enable (MSE)位启用、否则不会自动更正单个位错误、除非通过 CPUWSC 启用: CPU 写入 SERR 捕捉位。

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Dmitri、

    首先、要明确的是、我们只讨论 L2 SRAM、而不讨论高速缓存 RAM。

    L2 SRAM 在默认情况下受 ECC 保护。 即、这意味着 ECC 在复位后默认启用。 ECC 逻辑位于两个位置。 它位于 CPU 中、位于 L2 SRAM 包装程序中。

    如果在发送到 CPU 的数据中检测到故障(单个位错误)、它将由 CPU 中的 ECC 逻辑进行校正。 在这种情况下、具有故障的 L2 SRAM 位置的内容保持不变、这意味着在再次读取同一位置时将出现相同的单个位故障。 这些故障仍然存在这一事实将增加在同一64位空间中发生另一个故障的可能性/风险、并导致不可纠正的双位错误。

    因此、该器件实现了几种方法、即如果故障是瞬态故障、L2 SRAM 中的实际数据将被纠正。 首先、在对32位位置进行写入操作的情况下、对 ECC 值适用的整个64位数据执行读-修改-写(RMW)操作。 即、如果在其他32位中发现"未写入"的单个位错误、则将进行校正、然后用校正后的内容写回、以清除瞬态故障。 其次、如果启用了存储器清理、即使只从 L2 SRAM 进行纯读操作、它也会强制 RMW 周期、从而导致在 L2 SRAM 中即时纠正单个位错误。 这些操作的结合降低了由于在纠正的位翻转/瞬态故障后将数据重新写入各自的 SRAM 位置而导致双位故障的可能性。

    要更直接地回答您的初始问题、请执行以下操作:

    [引用 USER="Dmitri Zakharevski59"]如果我在默认情况下正确理解了技术参考,RAM ECC 将不会自动更正单个位错误,除非 通过设置 L2RAMW 模块控制寄存器(RAMCTRL )[/QUERP]中的 Memory Scrubing Enable (MSE)位启用该选项。

    在提供给 CPU 之前、总是在数据中纠正单个位错误;但是、仅在 RMW 操作期间和启用存储器清理时、才会纠正存储器中的物理单个位错误。

    问题的后半部分:

    [引用 USER="Dmitri Zakharevski59"],除非通过 CPUWSC:CPU 写入 SERR 捕获位启用,否则不会发出检测到的错误信号。[/引用]

    你是对的。 在许多情况下、应用不关心单个位错误、因为这些错误会即时纠正、对应用的安全运行没有影响。 在这些情况下、无需或无需监控单个位故障或对其进行校正。 因此、通知它们是可选的。 为了将单位错误通知输出到 ESM、这个特性必须通过 CPUWSC 位域启用。 同样、应将 EEMMS 位字段置为有效、以启用 ESM 通知、通知因存储器清理功能而进行的单个位错误校正。

    值得注意的是、所有双位错误通知都会发生、并且至少会导致 CPU 的数据中止异常。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢!