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.

[参考译文] CCS/TMS570LC4357:清除数据和指令高速缓存的内容

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/572973/ccs-tms570lc4357-clearing-the-contents-of-the-data-and-instruction-cache

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

工具/软件:Code Composer Studio

您好!

我尝试通过将该函数放入 for 循环来在处理器上运行 FFT 算法仿真。

我正在使用 PMU 上的计数器测量高速缓存缺失、这适用于迭代1、但后续迭代始终显示零数据缺失。 我想知道是否有一种简单的方法来清除 for 循环的每次迭代中的缓存内容?

谢谢、

Caroline

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

    由于第一次迭代后数据集被保存在缓存中、是否实际上可能存在零数据缺失?

    对于存储 FFT 数据的区域、您可以将 MPU 类型更改为不可缓存、这将始终导致处理器进入存储器以获取数据。

    您也可以禁用高速缓存、但 HalCoGen 中只有一个复选框、它将同时禁用指令和数据高速缓存、因此您将获得比仅丢失数据高速缓存本身更严重的减速。

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

    感谢您的回答! 我认为自己解释得不是很好、我假设读数正确、并且没有缓存缺失、但我希望每次迭代都能在数据和指令缓存缺失的数量上进行比较。 因此、在每次迭代开始时、我希望清除缓存、以便其与第一次迭代具有相同的数量或类似的缺失(我正在测量缓存可预测性、它将节省我将其置于循环中的时间、而不是每次重新加载程序)。

    然后、我将运行禁用高速缓存的程序、并将性能与使用高速缓存的时间进行比较。

    我希望这能更好地解释它吗? 我觉得必须有某种方法来清除缓存内容、我看到您可以使内容无效、但我并不完全确定我要执行的操作。

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

    当然、您也可以执行该操作;如果是您想要执行的操作。

    内核和高速缓存的最佳资源是:

    《ARMRegisteredCortexRegistered-R 系列版本:1.0编程人员指南》,是 ARM Ltd.提供的文档 ARM DEN 0042A

    有一节"7.7失效和清理缓存存储器"应说明要执行的操作。

    您还需要具备 CPU 参考手册、以便了解要写入的 CP15寄存器。

    HalCoGen 中有两个函数'HL_SYS_CORE.ASM'

    _dCacheInvalidate_、_iCacheInvalidate_

    尽管我无法告诉您自己他们是否工作(假设他们工作;但我没有自己使用)。

    此致、
    -Anthony