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.

[参考译文] RTOS/TMS320C6748:了解 SYSBIOS 基准

Guru**** 2539500 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/811354/rtos-tms320c6748-understanding-sysbios-benchmarks

器件型号:TMS320C6748
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

DSP: C6748

SYSBIOS: 6.75.00.12

电路板: 定制硬件

我不理解如何读取 HWI 的 SYSBIOS 时序基准。  我要尝试回答的是: "用于处理 HWI 的 SYSBIOS 开销是多少"?  要回答此问题、您必须考虑三种情况。  在所有这三种情况下,假设应用程序在 HWI 之前的任务级别运行,并且它不在 HWI_disable()代码块中执行,也不在 sloop 中执行。

 ISR 不会发布信号量来唤醒任务、也不会发布 SWI。

 ISR 发布一个信号量来唤醒一个任务。

 ISR 发布一个 SWI。

在所有情况下、HWI 都会触发、CPU 会关闭至 HWI 矢量表。  它从此处进入 HWI 调度程序、该调度程序最终调用我们的 ISR。  我们的 ISR 会执行、然后返回 HWI 调度程序。  调度员确定下一步的位置。  我可以对我的 ISR 进行评测以确定执行所需的时间、但我无法从提供的 SYSBIOS 基准中了解如何将其余时间组合在一起。

中断延迟: SYSBIOS 用户指南指出这是禁用可屏蔽中断的时间。  此外、它还指出、这是从中断触发到中断调度程序的第一条指令的时间。  这两项发言似乎相互矛盾。  不确定我是否需要该数字。  C674x 的数量为205个周期。

Hwi 调度程序 prolog: 在 SYSBIOS 用户指南中定义为从触发中断到调用用户的 ISR 的时间。  C674x 的数量为127个周期。  但等待、这是127个周期、但中断延迟是205个周期。  我认为这是我需要回答"执行 ISR 中第一条指令的中断触发"的数字。

Hwi 调度程序结语: 在 SYSBIOS 用户指南中定义为从我的 ISR 返回到完成 HWI 调度程序工作的时间。  C674x 的数量为159个周期。  似乎我也需要这个数字。

Hwi 调度程序: 未在 SYSBIOS 用户指南中定义。  C674x 号为281个周期。  您会认为这应该是序言+结语、但不会累加(结束但不完全正确)。

Hwi 到被阻止的任务: 在 SYSBIOS 用户指南中定义为从发布信标到执行任务中的第1条指令的 ISR 开始的时间。  但是,下面的图中包括了 HWI 触发的时间和与描述相矛盾的 prolog。  C674x 号是445个圆柱。

Hwi 到 SWI: 在 SYSBIOS 用户指南中定义为从发布 SWI 的 ISR 开始到执行该 SWI 中的第1条指令的时间。  但是,下面的图中包括了 HWI 触发的时间和与描述相矛盾的 prolog。  C674x 的数字为271。

这是我回答这三个问题的最佳猜测。

 1.序言+结语= 127 + 159 = 286个周期。  这将忽略中断延迟、因为我认为它正在尝试定义可屏蔽 HWI 的总时间被禁用。  它也不包括 HWI 调度程序、因为我认为序言+结语涵盖了这一点。  很难在计算中包含其中一个、但不确定。  困惑。

2. 序言+结语+ HWI 到被阻止的任务= 127 + 159 + 445 = 731个周期。  如果 HWI to block 任务说明错误且图正确、则该值应为445个周期。  困惑。

3. 序言+结语+ HWI 至 SWI = 127 + 159 + 271 = 557个周期。  如果 HWI 至 SWI 的描述错误且该图正确、则该值应该仅为227个周期。  但这不是真的、因为227小于序言+结语。  困惑。

谢谢、Dean

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

    尊敬的 Dean:

    [引用用户="Dean Hofstetter"]

    中断延迟: SYSBIOS 用户指南指出这是禁用可屏蔽中断的时间。  此外、它还指出、这是从中断触发到中断调度程序的第一条指令的时间。  这两项发言似乎相互矛盾。  不确定我是否需要该数字。  C674x 的数量为205个周期。

    [/报价]

    中断延迟是 prolog 加上我们在内核中禁用中断的最长时间。  

    [引用用户="Dean Hofstetter"]

    Hwi 调度程序: 未在 SYSBIOS 用户指南中定义。  C674x 号为281个周期。  您会认为这应该是序言+结语、但不会累加(结束但不完全正确)。

    [/报价]

    Hwi 调度程序是序言+空 ISR +结语。  

    [引用用户="Dean Hofstetter"]

    Hwi 到被阻止的任务: 在 SYSBIOS 用户指南中定义为从发布信标到执行任务中的第1条指令的 ISR 开始的时间。  但是,下面的图中包括了 HWI 触发的时间和与描述相矛盾的 prolog。  C674x 号是445个圆柱。

    [/报价]

    它是 ISR 的开始、而不是 Hwi 函数的开始。 因此包含了序言。 针对 Swi 描述/图表的 DITto。

    注意:您可以查看该文件  \packages/ti\SysBIOS\examples\generic\benchloop\benchloop.c 以查看生成这些数字的代码。

    这是否可以清除问题?

    Todd

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

    中断延迟。  在阅读了 SYSBIOS 用户指南中的定义、然后阅读了上面的定义后、我仍然感到困惑。  由于 SYSBIOS 可被配置为具有 HWI 的中断和 HWI 的中断、我认为中断延迟将更接近 HWI 调度程序 prolog 定义。  我认为您对该数字的理解如下:

    1. 假设 HWI 不能中断其他 HWI

    2. 序言+结语中仍禁用中断的部分。

    基准测试"HWI 调度程序"应重命名为"硬件中断返回到同一任务"。  在任何速率下、我认为我需要继续测量系统上的 HWI 负载。

    1. 如果 HWI 不包括用于发布 SWI 或发布信标的 SYSBIOS 调用、则使用"HWI 发送程序"时间。

    2. 如果 HWI 包括对 SWI POST 的 SYSBIOS 调用、则使用"硬件中断至 SWI 中断"时间。

    3. 如果 HWI 包括一个用于发布信标的 SYSBIOS 调用,则使用“硬件中断到被阻止的任务”时间。

    最后、它不会说提供的基准数是 :min、max 或 avg。  我假设平均值。  如果每个 L1P 或 L1D (或两者)都有缓存缺失、则必须将几个周期丢弃到所有数字上。

    谢谢、Dean

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

    [引用用户="Dean Hofstetter"]

    基准测试"HWI 调度程序"应重命名为"硬件中断返回到同一任务"。  在任何速率下、我认为我需要继续测量系统上的 HWI 负载。

    1. 如果 HWI 不包括 用于 发布 SWI 或发布信标的 SYSBIOS 调用、则使用"HWI 发送程序"时间。

    [/报价]

    是的

    [引用用户="Dean Hofstetter"]

    2. 如果 HWI 包括 SWI POST 的 SYSBIOS 调用、则使用"硬件中断至 SWI 中断"时间。

    [/报价]

    是的

    [引用用户="Dean Hofstetter"]

    3. 如果 HWI 包括 个用于发布信标的 SYSBIOS 调用,则使用“硬件中断到被阻止的任务”时间。

    [/报价]

    是的

    [引用用户="Dean Hofstetter"]

    最后、它不会说提供的基准数是 :min、max 或 avg。  我假设平均值。  如果每个 L1P 或 L1D (或两者)都有缓存缺失、则必须将几个周期丢弃到所有数字上。

    [/报价]

    对进行平均值计算。  内核版本中包含了基准测试示例、以准确地显示基准测试的收集方式。