2011-06-09 29 views
2

我正在使用ARM926EJ-S,并试图弄清楚ARM是否可以给CPU(例如一个可读寄存器)CPU的周期计数器。我想一个#代表CPU自启动以来的周期数。ARM926EJ-S周期计数器

在我的系统中,我只有低分辨率外部RTC /定时器。我希望能够实现高分辨率定时器。

非常感谢提前!

+0

关于“#将代表自CPU上电以来的周期数”,如果这样的寄存器是32位,处理器速度是200MHz,那么在打开电源之前,计数器会持续多于21秒。自开机以来的时间如果您真正想要的时间在指令周期中没有用处。 – Clifford 2011-06-11 07:13:09

+0

ARM926可能只有定时器可以在总线速度下运行。 – ninjalj 2011-06-11 09:15:57

回答

0

你可能只有两种选择:

  • 中使用的指令周期精确的仿真器;这里的问题是有效地模拟外围设备和外部刺激可能是复杂的或不可能的。

  • 使用外设硬件定时器。在大多数情况下,您将无法以ARM9的典型内核时钟速率运行此类定时器,并且在定时期间的任何一侧都可能会出现高位服务,但可用于执行时间超过更长或更长的代码段,这可能比循环次数更实际。

虽然循环计数可能会有所扩展到不同的时钟速率,它仍然受内存限制和I/O等待状态,所以也许不是有用,因为它可能看起来性能度量,除了在微分析水平和更大的性能收益通常是通过采取更广泛的观点。

+0

非常感谢! ..我想我没有“立即”的解决方案......但是......我会考虑你的建议! – Eyal 2011-06-11 10:11:02

0

arm-9没有配备包含在Cortex系列中的PMU(性能监控单元)。 PMU被描述为here。 Linux内核配备了使用PMU进行基准性能测试的支持。有关perf工具集的文档,请参阅here

位不确定的ARM-9,需要挖多一点...

+0

感谢您的快速回答!但是...你确定PMU存在ARM926EJ-S?...我知道它存在Cortex/ARM11?... – Eyal 2011-06-09 21:17:09

+0

@Eyal 926没有PMU,正如我所说的,我需要更多的挖掘:-) – 2011-06-09 21:29:52

+0

哦...没有注意到最后那里... SORRY!...所以我的问题仍然是开放的,我猜... – Eyal 2011-06-09 21:40:36