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.

[参考译文] EVMK2GX:DSPLIB 3.4.0.0 C66x 周期计数公式和采用定时器时钟周期的实际测量值之间不一致。

Guru**** 1558020 points
Other Parts Discussed in Thread: EVMK2GX
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1286380/evmk2gx-inconsistencies-between-dsplib-3-4-0-0-c66x-cycle-count-formulas-and-actual-measurement-of-clocks-cycles-using-the-timer

器件型号:EVMK2GX

您好!

我正在 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倍的周期。

可能是什么问题?