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.

[参考译文] TMS320C6678:所有8个内核上的外部存储器高速缓存不一致

Guru**** 2612365 points
Other Parts Discussed in Thread: TMS320C6678

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/656513/tms320c6678-cacheability-of-external-memory-is-not-consistent-on-all-8-cores

器件型号:TMS320C6678

大家好

TMS320C6678上的8个内核中的每个内核将 MAR128_REG 设置为零。 存储器地址范围 80000000h - 80FFFFFFh 在内核0、1、2、3、4上是不可缓存的、但在内核5、6、7上是可缓存的。 这是在 每个内核上将 MAR128_REG 分配为零的同一代码段。 不知道为什么内核5、6、7的行为不同。 感谢您的任何帮助。

谢谢!

韦国

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

    在每个内核上运行相同代码后、您是否检查了每个内核上的 MAR128值? 您如何喜欢内核5/6/7仍被缓存? 您是否有小 CCS 项目显示此问题?

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

    你(们)好 Eric

    我在内存浏览器中的每个内核上检查 MAR128的值、它们等于零。 通过在存储器浏览器中选中/取消选中 L1/L2复选框、我发现 非高速缓存存储器区域中的一些数据缓存在内核6上的 L1/L2高速缓存中、与外部存储器中的数据不同。 下面是 MAR128在0x01848200处的 code composer 屏幕快照

    以下是 对位于 MAR128的非高速缓存存储器区域(8000 0000h - 80FF FFFFh)内的0x8001B5BC 处的存储器内容进行屏幕快照。

    选中 L1/L2高速缓存复选框时、您可以看到0x8001B58C 处的存储器内容为0x80019C28。 选中 L1/L2缓存框时、其值为0x80019F58。 颜色编码的缓存数据也可在内核5和7上找到。  

    下面是内核0的捕获。

     可以看到、0x8001B58C 处的存储器内容为 0x80019F58、选中 L1/L2高速缓存复选框时、未显示颜色编码为高速缓存数据。  

    谢谢!

    韦国

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

    将 MAR128设置为零后、立即使 L2中的非高速缓存存储器区域无效、从而修复了内核5、6、7上的高速缓存一致性问题。 设置 MAR 的更好方法是调用 cache_setmar(),而不是直接操作 MAR。