TI中文支持网
TI专业的中文技术问题搜集分享网站

c6678评估板和simulator运行汇编代码时间问题

您好:

我自己编写的一个大量数据运算的汇编代码,发现该汇编代码在simulator下运算时间和在c6678评估板上运行时间区别很大,评估板上运行时间是simulator下的2倍多,不知道是什么原因, 程序数据段都是放在片内的.

Andy Yin1:

您好,

simulator分为functional及cycle approximate 两种,前一种主要用来仿真功能,不能用来测试cycle;后一种cycle更接近实际板子的测试数据,但是根据实测发现他不能准确仿真cache性能,所以还是会有一定的差异;所以请以板子上实测的cycle为准,注意在板子上测试的时候一定要确定配置好了工作主频。

si cheng:

回复 Andy Yin1:

你好:

我是在cycle approximate 下仿真的,  我编写的是2个32K个点向量做加法运算,流水循环核中平均每个运算是1.75个时钟周期,那么计算完这32K点所用时间应该大约是32*1024*1.75(这里排除了流水填充和排空的时间), 在simulator下计算的时间确实跟这个时间差不多,但是在c6678评估板上运行,发现时间是这个的2倍多, 我想知道是:会不会是lddw指令去L2取数据在数据总线上有延迟,导致整个时间消耗过多? 我的L1D,L1P全部配置成cache了,数据和代码全部放在L2.

si cheng:

回复 si cheng:

你好:

我在评估板上单步执行该汇编程序的同时,去观察核计算器TSCL. 一般情况下,没单步执行一次,TSCL应该是加1的, 但是 发现程序每次运行到某个特定的地址执行指令时(该指令是lddw指令), TSCL 一次加了 8,  这个让我很奇怪.

Andy Yin1:

回复 si cheng:

您好,

1. 关于cycle问题:第一次执行的时候存在cache miss,而由于simulator不能很好仿真cache性能,所以得到的cycle与你实际的计算相近;所以在板子上测试时建议测试多次看cycle,或者在程序执行前加入touch达到warm cache的效果,这样避免第一次执行cache miss的概率;

2. 每次TSC加的数取决于指令执行一次的周期数。

si cheng:

回复 Andy Yin1:

您好:

1.你说的在程序执行前加入touch达到warm cache, 这个touch 是什么意思?如何使用?

2. 如果我吧我程序放在SL2, L1P ,L1D 默认全部设置成CACHE,运行在c6678评估板上,运行时间和在simulator上时间周期数大约会相差多少?

Andy Yin1:

回复 si cheng:

您好,

1. warm cache主要就是实现了将数据地址预先映射到cache,降低miss 概率;具体的touch实现可以参考附件,在使用时只需将附件汇编文件加入到工程中,然后再测试函数之前调用touch函数对重要的大块数据实现warm cache,功能;

2. 需要看你当时处理数据的存放于读写格式,及块大小;具体差异没有衡量。

赞(0)
未经允许不得转载:TI中文支持网 » c6678评估板和simulator运行汇编代码时间问题
分享到: 更多 (0)