【问答】Versal ACAP,APU - 当有逐出传输事务处于暂挂状态时,外部数据嗅探可能导致数据损坏

描述
如果 Arm Cortex-A72 处理器配置为向处于 UniqueClean (UC) 状态的缓存行发送逐出传输事务,那么 Cortex-A72 处理器可能返回陈旧数据并发出嗅探响应。

条件

1. Cortex-A72 配置为针对 UC 逐出传输事务不发送任何数据。这是通过将 L2ACTLR[14] 设置为 1b0 来实现的。该位的默认值为 1'b1。
2. Cortex-A72 配置为向外部推送无数据逐出传输事务。这是通过将 L2ACTLR[3] 设置为 1b0 来实现的。该位的默认值为 1b1。
3. Cortex-A72 针对处于 UC 状态的缓存行发出无数据逐出传输事务(即 SnpClean、SnpShared 或 SnpUnique 传输事务)。
4. Cortex-A72 发出逐出传输事务,并等待来自互连对象的完成响应 (COMP)。
5. 互连对象发出 COMP,随后又向同一缓存行地址发出嗅探请求。
6. 由于互连中存在争用条件,Cortex-A72 先接收到嗅探请求,后接收到 COMP。

解决方案

影响:

如果满足上述条件,则可能发生数据损坏。

变通方法:

有多种变通方法可选:

选项 1:

将 Cortex-A72 配置为针对 UC 逐出传输事务发送数据。这可通过将 L2ACTLR[14] 设置为 1b1 来实现。

选项 2:

将 Cortex-A72 配置为禁止向外部推送清除 (Clean) 或逐出 (Evict) 传输事务。

这可通过将 L2ACTLR[3] 设置为 1b1 来实现。

受影响的配置:

具有 Arm Cortex-A72 (APU) 的所有 Versal 器件。

解决方案:

请参阅此第三方勘误表 (Arm, Inc. 854172)。

最新文章