ZHCZ054A December   2024  – October 2025 AWR2544

 

  1.   1
  2. 1简介
  3. 2器件命名规则
  4. 3器件标识
  5. 4器件型号/修订版对应关系公告
  6. 5功能规范的已知设计异常
    1.     MSS#25
    2.     MSS#27
    3.     MSS#28
    4.     MSS#29
    5.     MSS#30
    6.     MSS#33
    7.     MSS#40
    8. 5.1  MSS#49
    9. 5.2  MSS#52
    10. 5.3  MSS#53
    11. 5.4  MSS#54
    12. 5.5  MSS#55
    13. 5.6  MSS#56
    14. 5.7  MSS#57
    15. 5.8  MSS#58
    16. 5.9  MSS#59
    17. 5.10 MSS#60
    18. 5.11 MSS#61
    19. 5.12 MSS#62
    20. 5.13 MSS#63
    21. 5.14 MSS#64
    22. 5.15 MSS#65
    23.     MSS#68
    24.     MSS#71
    25. 5.16 ANA#12A
    26.     ANA#37A
    27.     ANA#39
    28.     ANA#43
    29.     ANA#44
    30.     ANA#45
    31.     ANA#47
    32.     ANA#59
  7.   商标
  8. 6修订历史记录

MSS#64

块和全局一致性操作期间的 L2 缓存损坏问题

受影响的修订版:

AWR2544

说明:

在一组特定的情况下,L1D 或 L2 的块和全局一致性操作可能导致 L2 缓存损坏。当同一 L2 组中连续发生以下四个操作时,会引发该问题:

  1. L1D 写缺失
  2. 因块和全局一致性操作导致的失效或带失效的写回
  3. 对某个地址的写分配
  4. 对某个地址的读分配或写分配

该问题适用于所有块和全局一致性操作,但以下操作除外:

  • L1D 块写回
  • L1D 全局写回
  • L2 块写回
  • L2 全局写回

另请参见:公告 63 — 块一致性操作期间的潜在 L2 缓存损坏问题

权变措施:

通用权变措施:

以下权变措施具有通用性,但可能影响性能。建议客户理解应用场景,然后选择更适合的方案。

权变措施 1:

此权变措施要求内存系统在块和全局一致性操作期间保持空闲状态。因此,程序必须等待块和全局一致性操作完成后才能继续执行。这适用于 L1D 和 L2 内存块以及全局一致性操作。

要发出块一致性操作,请按照以下顺序操作:

  1. 禁用中断。

  2. 将起始地址写入相应的 BAR 寄存器。

  3. 将字计数写入相应的 WC 寄存器

  4. 通过以下任一方式等待操作完成:

    1. 发出 MFENCE 指令(首选)

    2. 轮询 WC 寄存器,直到字计字段读数为 0

  5. 执行 16 个 NOP

  6. 恢复中断

要发出全局一致性操作,请按照以下顺序操作:

  1. 禁用中断。

  2. 向相应的全局一致性寄存器(L1DINV、L1DWBINV、L2DINV 和 L2DWBINV)写入 1

  3. 通过以下任一方式等待操作完成

    1. 发出 MFENCE 指令(首选)

    2. 轮询相应的全局一致性寄存器(L1DINV、L1DWBINV、L2DINV 和 L2DWBINV),直到位 [0] 字段读取为 0

  4. 执行 16 个 NOP

  5. 恢复中断

权变措施 2:

此变通办法同样具有通用性,但允许 CPU 事务与缓存一致性操作并行执行。要发出块一致性操作,请按照以下顺序操作:

  1. 发出 MFENCE 命令。

  2. 冻结 L1D 缓存

  3. 启动 L1D WBINV

  4. 重新启动 CPU 事务(CPU 操作与 WBINV 并行执行,无需等待缓存一致性操作完成)

  5. 轮询 WC 寄存器,直到字计字段读数为 0。

  6. 当字数统计字段读数为 0 时,WBINV 完成

  7. 发出 MFENCE 命令。

  8. 解冻 L1D 缓存。

有关缓存控制寄存器(BAR、WC、L1DINV、L1DWBINV、L2DINV 和 L2DWBINV)的更多信息,请参阅《TMS320C66x DSP CorePac 用户指南》(SPRUGW0)。MFENCE 指令是 C66x DSP 的新增指令。该指令会使 DSP 暂停,直至所有未完成的内存操作执行完毕。有关 MFENCE 指令的更多信息,请参阅《C66x DSP 和指令集参考指南》(SPRUGH7)。