嵌入式编程中 `if` 的 CPU 成本? [关闭]

问题描述 投票:0回答:0

我目前正在研究用于运动控制的实时固件,其中每条指令都很关键。该架构基于每 50 微秒触发一次的硬件中断。 CPU内核采用C2000(TI)架构,32位混合浮点/定点和8级流水线,无分支预测。系统时钟以 200 MHz 运行,允许每轮大约 10,000 条指令。

我了解编译器优化、循环展开和算术运算的成本。但是,我面临一个关于在算术表达式之间进行选择的问题,我通过查看程序集和指令后的 NOP 数量(例如“sinf”或“cosf”)或修改我的算法以使用分支来了解它们的成本。

分支机构的真实成本很难评估,因为它们对装配是隐藏的。我的理解是,C2000 架构上的每条

if
指令都可能导致流水线中断,从而浪费多达 8 个 CPU 周期。优化器在这种情况下无法提供帮助,CPU 缓存只能帮助更快地获取下一条指令。当我从 RAM 运行我的代码时,我几乎没有等待状态,并且
if
指令不受缓存的影响。

因此,我想确认我的假设是正确的:C2000 架构上的每条

if
指令都可能导致流水线中断,最多浪费 8 个 CPU 周期。

是真的吗?

c++ c pipeline cpu-architecture
© www.soinside.com 2019 - 2024. All rights reserved.