This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于时间的测量



关于时间的测量一直没有弄的特别清楚,整理出如下几个问题,请教大家:

1、clock(),Timer,TSCL/H这些方法获得的是指令执行周期数?

 

2、访存指令,或者使用读写文件的操作一般比较耗时(没有读取完毕时,会一直等待,假设这个时间是A),但是通过上述三种方法(我只试了TSCL)测得的周期数却很短,假设为B。

C6000里是如何界定指令执行结束的?我想获得人能感觉到的时间,即A,不知道有什么方法可以得到这个时间。

关于这个问题,理解的本身不透彻,表达的不是很清楚。主要还是想弄清楚问题1中几种时间测量方法的实现机制和一种符合实际情况的测量方法。

 

提前谢谢了!

  • 一般你可以用TSCL/H 来获取cycle 数,如果需要获取人为感知的时间,则你需要根据主频的不同将cycle数换算为时间

    其实你测的时间主要是指令执行时间,(这中间会包含因为data cache,程序 cache 以及其他原因造成的各种 stall)

  • 你好,

    你也可以用timer来测得人能感觉到的时间,比如说10s。根据CPU的主频,定义一个10ms的timer,timer expires 之后,产生一个硬中断,在中断的服务程序(ISR)中,设个计数器,初值为0,中断每相应一次,计数器加一,计数器达1000时,清零,并打印一条信息,这样,你就可以每10秒看到一条打印信息。

    谢谢

  • 6678 1ghz   1cycles  是1ns   写个函数 就可以了