多核 ARM A9 上的 NOP
NOPs on Multicore ARM A9
我有一个基于 ARM A9 的双核处理器,我需要用它来做一些非常特殊的纳秒计时。我计划使用 NOP 汇编指令通过确定每个系统时钟周期经过的纳秒数来实现此目的。
我想知道在处理双核 ARM 处理器时调用 NOP 时是否需要特别考虑,因为我只需要处理单核 ATMEL 和 ARM 处理器。处理器是否会尝试自动在两个内核之间分配 NOP?我是否应该对双倍系统时钟速度 (667MHz) 进行时序计算以考虑两个内核?是否有任何其他我没有看到的特殊注意事项可能会妨碍我?
显然,如果您 运行 一个非多线程的单个程序,那么它不可能在两个 CPU 上都是 运行。它总是 运行 在一个 CPU 上(虽然你不知道是哪一个)。
使用 NOP 计算时序确实不是一个好主意,因为您无法控制指令的发出和执行方式,尤其是因为 Cortex-A9 有多个执行单元。
虽然我认为这不是一个非常可靠的解决方案,但您至少应该使用一系列具有 1 个周期时序的相关指令:
ADD r0, r0, r0
ADD r0, r0, r0
...
这将有助于每个周期有一个指令,比 NOP 操作更好,但这仍然是一个近似值。
我有一个基于 ARM A9 的双核处理器,我需要用它来做一些非常特殊的纳秒计时。我计划使用 NOP 汇编指令通过确定每个系统时钟周期经过的纳秒数来实现此目的。
我想知道在处理双核 ARM 处理器时调用 NOP 时是否需要特别考虑,因为我只需要处理单核 ATMEL 和 ARM 处理器。处理器是否会尝试自动在两个内核之间分配 NOP?我是否应该对双倍系统时钟速度 (667MHz) 进行时序计算以考虑两个内核?是否有任何其他我没有看到的特殊注意事项可能会妨碍我?
显然,如果您 运行 一个非多线程的单个程序,那么它不可能在两个 CPU 上都是 运行。它总是 运行 在一个 CPU 上(虽然你不知道是哪一个)。
使用 NOP 计算时序确实不是一个好主意,因为您无法控制指令的发出和执行方式,尤其是因为 Cortex-A9 有多个执行单元。
虽然我认为这不是一个非常可靠的解决方案,但您至少应该使用一系列具有 1 个周期时序的相关指令:
ADD r0, r0, r0
ADD r0, r0, r0
...
这将有助于每个周期有一个指令,比 NOP 操作更好,但这仍然是一个近似值。