首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ARM Cortex-A8处理器的程序执行时间

ARM Cortex-A8处理器的程序执行时间
EN

Stack Overflow用户
提问于 2013-01-04 21:53:25
回答 1查看 1.7K关注 0票数 2

我正在使用ARM Cortex-A8,并试图通过汇编代码从CCNT时间计数器读取数值。*我在How to measure program execution time in ARM Cortex-A8 processor?上关注这篇文章。根据它,在我可以从定时器读取数值之前,我必须启用计数器,启用64位分频器并清除溢出。这些操作是通过在适当的寄存器(例如,PMCR (性能监控控制寄存器))中写入数据来执行的。因此,我在一个循环中打印计数器值,以跟踪溢出是如何发生的,我有这样的行为:

代码语言:javascript
复制
1           (starts to incrementing after it was reset to zero)
4650
4858
4943
5023
...
...        (incrementing...)
...
4293939054
4293939128       (overflow happens)
1602570          
1602703
1602788
...
...
4293522911
4293522987
4293523062
4293523137
1186243
1186367
1186453
1186536
1186612
1186686
...
4293536300
4293536377
4293536456
4293536533
4293536612
1199090
1199209
1199295
1199373
1199453
1199530
….
and so forth.

因此,我有一组问题:

a) Linux内核使用哪些寄存器或上述寄存器?(更多内核版本的信息有多可靠)。改变他们的价值观有多安全?

b) CCNT频率的精确值是多少,如何获取?不幸的是,我找不到处理器规格中的值。然而,dmesg说

代码语言:javascript
复制
[ 0.000000] OMAP clocksource: GPTIMER2 at 24000000 Hz
[ 0.000000] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms
[ 0.132855] Switching to clocksource gp timer

但是手动识别它,对照clock_gettime,给了我7 MHz。那么,为什么不像预期的那样是24 MHz呢?

c)根据我的第一个输出,为什么在溢出之后,它不是从零开始,而是从大约1mil开始?

d)为什么没有64除法会得到错误的结果?该值开始以这种方式跳跃:

代码语言:javascript
复制
...
134110099
134114934
134119656
302352300
302361825
302367135
…
2885588930
2885593776
2885598630
3053958670
3053966752
3053972232
…
261130096
261134909
429343853
429351487
429356735

如果能帮上忙我会很感激的。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-04 23:46:15

a) PMU regs可由Linux内核的perf子系统使用(通过perf用户空间工具访问)。

b) CCNT频率是Cortex-A9 CPU周期计数器,如果启用分频器,则为cycle /64。因此,7 MHz的除法器的平均CPU时钟约为450 MHz。这与24 MHz系统时钟是分开的。

c)也许你的进程被调度出去了。这是整个CPU的低级周期计数器,而不仅仅是您的进程。当它在内核或另一个进程中时,它将继续运行。另一方面,如果您的进程迁移到另一个CPU,那么您将访问该CPU的周期计数器(它甚至可能没有相同的分频器设置)。如果你想要一个一致的计数,你应该将你的进程固定在一个CPU上。

d)类似于(c)的答案,您可能会看到进程调度和迁移的影响。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14158475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档