【发布时间】:2016-04-05 18:10:54
【问题描述】:
我有一个基于双核 ARM A9 的处理器,我需要对其进行一些非常特殊的纳秒计时。我计划使用 NOP 汇编指令通过确定系统时钟每个周期通过的纳秒数来实现这一点。
我想知道在处理双核 ARM 处理器时调用 NOP 时是否有任何特殊考虑,因为我只需要处理单核 ATMEL 和 ARM 处理器。处理器是否会尝试自动在两个内核之间分配 NOP?我是否应该将系统时钟速度(667MHz)加倍来计算两个内核的时间?是否有任何其他我看不到的特殊考虑因素可能会妨碍我?
【问题讨论】:
-
不,每个内核运行自己的指令流。你也不需要加倍。你没有说你是否有一个操作系统,或者是否启用了任何中断。这些事情可能会打乱你的时间;)也不知道 ARM cpus 是否进行时钟频率缩放(省电)。
-
您尝试做的事情可能站不住脚。 ARM Cortex-A9 使用具有 8 到 11 级流水线的超标量乱序内核。即使不考虑外部事件,如果 ARM 完全记录了所有内容,也必须计算出确切的指令时序。相反,他们的文档说“Cortex-A9 处理器的复杂性使得无法手动计算精确的时序信息。指令的时序通常受到其他并发指令、内存系统活动和指令流之外的其他事件的影响。”
-
出于兴趣,延迟的实际性质是什么?可能有更多创造性的方法来解决它——我见过的最酷的事情之一是一些外围设备,它需要在操作之间精确延迟几百个总线周期;它在其编程接口中有一个额外的寄存器,它完全没有做任何事情,但是在读取时需要几百个周期才能返回 0:D
-
@Notlikethat 延迟的本质是对来自处理器所连接的设备本身的数字输出的某个信号进行计时。这必须在纳秒时间内完成,才能按照我需要的方式工作。不过我喜欢这个想法,它非常聪明,如果我不试图限制自己只使用处理器本身,那可能会很容易尝试。
标签: assembly arm multicore timing