DSP OMAP 程序耗时测定 CPU周期 两种方法

利用TSCL和TSCH来计算时钟周期,这两天看了一下如何他们

DSP开发,测量某个函数或某段代码的cycles消耗是经常要做的 事情,常用的profiling和clock()一般在simulation下使用,真正到了板子上做emulation时,因为要考虑到数据和被测 code在板子上的存放位置和读取时间,用这种方法测结果就不那么可靠了。其实在c64x+ core上有两个计数寄存器TSCL/TSCH,它们与CPU同频,共同表示一个64-bit数,CPU运行一个cycle,该寄存器就加1,因此可以用 它们来准确的测量cpu在某个执行段中消耗的cycles。一般我们只会用到TSCL这个寄存器,594MHz下,32-bit可以测试到7s,而 TSCH是高32位,除非测试整个工程,一般用不到它。

使用方法:长时间宽范围时钟测定

unsigned long long t1,t2;

t1=_itoll(TSCH,TSCL);

code_wait_test;

t2=_itoll(TSCH,TSCL);

printf(“#cycle=%d”,t2-t1);

短时间(7秒)窄范围时钟测定:

T1=TSCL;

…process code …

T2=TSCL;

Printf(“#cycle=%d”,t2-t1);

方法二,也可以采用biosAPI方式

LgUns time1=CLK_gethtime();

…process code …

LgUns time2=CLK_gethtime();

Cpucycles=(time2-time1)*CLK_cpucyclePerhtime;

Prinf(“#cycle=%d”,Cpucycle);

关于测量CPU时钟周期中我们用的变量类型和函数我们都可以在C6000DSP/bios的API文档和BIOS提供的源码找到,可以详细去查阅。

#include "c6x.h"

void YourFunc (void)
{
unsigned long long start;
unsigned long long end;

start = _itoll (TSCH, TSCL);

/* put your code here */

end = _itoll (TSCH, TSCL);

printf ("Hi mate, I just wasted %d DSP-cycles in your punny code.
Optimize me!\n", end-start);
}

inline long long read_time(void)
{
extern cregister volatile unsigned int TSCL;
extern cregister volatile unsigned int TSCH;
long long l = (TSCH << 32) | TSCL;
return l;
}
在使用TSCL和TSCH时首先需要向TSCL中写入数据,使能TSC寄存器。
在DSP手册中说明:
The counter is enabled by writing to TSCL. The value written is ignored.

转载自:http://blog.chinaunix.net/uid-24517893-id-3235121.html

DSP 运行时间计算函数--_itoll(TSCH,TSCL);的更多相关文章

  1. 使用python装饰器计算函数运行时间的实例

    使用python装饰器计算函数运行时间的实例 装饰器在python里面有很重要的作用, 如果能够熟练使用,将会大大的提高工作效率 今天就来见识一下 python 装饰器,到底是怎么工作的. 本文主要是 ...

  2. 【opencv基础】测量运行时间的函数getTickCount/getCPUTickCount/getTickFrequency

    函数的计算结果类型是double,单位是秒. 要使用更精确的计时,就需要使用getCPUTickCount(),不过现代计算机CPU的频率会随着负载而变化所以没大有必要使用该函数,可以参看函数的介绍[ ...

  3. sas编程-日期相差计算函数 intnx

    sas编程-日期相差计算函数 intnx 示例代码: data _null_;    lastdate=intnx('year',today(),-100);    format lastdate  ...

  4. C++11用于计算函数对象返回类型的统一方法

    [C++11用于计算函数对象返回类型的统一方法] 模板 std::result_of 被TR1 引进且被 C++11 所采纳,可允许我们决定和使用一个仿函数其回返值的类别.底下,CalculusVer ...

  5. python小练习,打出1-100之间的所有偶数,设计一个函数,在桌面上创建10个文件,并以数字命名,复利计算函数

    练习一:打出1-100之间的所有偶数 def even_print(): for i in range(1,101): if i % 2 == 0: print (i) even_print() #列 ...

  6. 基于visual Studio2013解决C语言竞赛题之1030计算函数

          题目 解决代码及点评 /********************************************************************** ...

  7. Go 实现字符串相似度计算函数 Levenshtein 和 SimilarText

    [转]http://www.syyong.com/Go/Go-implements-the-string-similarity-calculation-function-Levenshtein-and ...

  8. C语言中几个常用数学计算函数ceil(), floor(), round()的用法

    最近在实现算法的过程中,遇到了使用几个数学计算函数,感觉挺有意思,就记下来 方便以后使用. ceil(x)返回不小于x的最小整数值(然后转换为double型). floor(x)返回不大于x的最大整数 ...

  9. C# .Net计算函数执行的时间

    C#计算函数执行的时间 protected void StopwatchTest() { System.Diagnostics.Stopwatch stopwatch = new System.Dia ...

随机推荐

  1. Spring Boot 整合JDBCTemplate

    1. 首先配置pom.xml 1.1 dbcm2 是数据源类型,表示配置dataSource的方式 1.2 spring-boot-starter-jdbc是表示让spring boot 支持jdbc ...

  2. 18-09-13 机器人和服务器之间的ip配置和脚本的重启

    问题9 服务器安装完毕后 怎么配置机器人客户端的配置ip

  3. pycharm环境下用Python+Django开发web搭建

    1.安装pycharm: 2.安装Python: 3.安装mysql: 4.安装Django; pip3 install django 5.创建Django工程命令方式: # 创建Django程序 d ...

  4. NLP相似度之tf-idf计算

    当然,在学习过程中也是参考了很多其他的资料,代码都是一行一行敲出来的. 一.将多个文件合并成一个文件,避免频繁的打开和关闭 import sys for line in sys.stdin: ss = ...

  5. Spring 基于构造函数的依赖注入

    基于构造函数依赖注入 sprig通过bean创建对象时,会通过bean提供的参数来选择调用某个构造函数.上例中, <constructor-arg ref="spellChecker& ...

  6. Echarts 一个开源图表设计工具

    一般来说,因有所需,方有所求.最近项目中有这方面的需求,用着感觉不错.特此记录!此处仅是一个简单的demo.官网地址:http://echarts.baidu.com/,相关文档.插件都有. 1.js ...

  7. linux c 使用socket 发送http请求 可以发送json格式数据

    #include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <time.h ...

  8. Mybatis集成Oracle

    首先需要导入Oracle的驱动,这部分会有一个天坑 Maven无法直接将我们所需的Oracle驱动加入项目中,手动加入依赖也是无效(原因还在分析),而且驱动无效如果不注意的话是看不出来的,他不会在编译 ...

  9. onkeyup+onafterpaste 只能输入数字和小数点

    1.文本框只能输入数字代码(小数点也不能输入)<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafter ...

  10. 15个HTML元素方法!

    首先让我们来讨论一下 HTML 与 DOM 之间的区别. 显然,普通的 <table> 元素就是一段 HTML 代码,它可以应用在任何一个以 .html 为扩展名的文件中.元素自带一系列特 ...