您好!
我正在 EVMK2GX 电路板上对 c66x DSP 进行实验。 我 想为我的应用测量功能时间。 不过、当我使用 库随附的驱动程序示例计时实际时钟时、实际时钟周期似乎总是比我使用 德州仪器(TI)中的公式"Test Results DSPLIB 3.4.0.0 C66x (库安装文档已有文档)"计算出的理论时钟周期高25%。 例如:
DSPF_SP_MAT_SUBAT_COPY_CpLx | DSPF_SP_MAT_TRANS_CpLx | dspf_sp_mat_mul_gemm_CpLx | |
周期公式 | 5270 | 3780 | 55700 |
EVMK2GX | 6692 | 4631 | 68989 |
我修改了一个进行测量的示例:
void main (void){
CLOCK_t t_OVERHEAD、t_start、t_stop 和 t_opt;
/*------------------ */
/*计算调用时钟的两次开销以获取计时信息*/
/*------------------ */
/*初始化时钟的计时器*/
TSCL= 0、TSCH = 0;
T_start =_itoll (TSCH、TSCL);
t_stop =_itoll (TSCH、TSCL);
T_OVERHEAD = t_stop - t_start;
/*------------------ */
/*生成范围内(-10、10)的随机输入。 */
/*------------------ */
Util_fillRandSP (ptr_x1、2 * nr1 * NC1、10.0);
DSPF_sp_mat_submit_copy_CpLx (ptr_x1、nr1、nc1、0、nr1、 ptr_x2、1);
/*------------------ */
/*测量周期数*/
/*------------------ */
T_start =_itoll (TSCH、TSCL);
T_start =_itoll (TSCH、TSCL);/*用于消除 L1P 缺失开销*/
DSPF_sp_mat_submit_copy_CpLx (ptr_x1、nr1、nc1、0、nr1、 ptr_x2、1);
t_stop =_itoll (TSCH、TSCL);
t_opt = t_stop - t_start - t_overhead;
printf ("\TNR =%.2d\tNC1 =%.2d\tNC2 =%.2d\toptC:%d\n"、nr1、NC1、NC2、t_opt);
}
所有数据都存储在 L2存储器中(请参阅随附的链接器文件)。 规定可能会由于缓存缺失等而产生差异。 但是,在我看来,不一致并非所有职能都是恒定的。 实际测量需要比使用周期公式计算出的测量大约1.25倍的周期。
可能是什么问题?