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.

C6748中指令执行速度



请教大家一个问题:看了C6748的手册,每个时钟周期可以执行8条32bits的指令,也就是3648MIPS。但我实际测出的结果是一条单周期指令执行需要将近10个时钟周期,也就是每个时钟周期大概执行0.1条指令,慢了很多。想知道怎么回事,如何能够提高C6748的执行速度。多谢!

  • 每个时钟周期可以执行8条32bits的指,是指在很多指令同时执行时最理想的流水排布效果。就单条指令来说,它的执行的时钟周期是固定的。

  • robieson robieson 说:
    看了C6748的手册,每个时钟周期可以执行8条32bits的指令,也就是3648MIPS

    这是最大值,针对单周期指令的情况再乘以8条并行执行的指令,通常说的CPU loading 100%的定义就是这种条件。而且这里只考虑指令在功能单元的执行时间。

    robieson robieson 说:
    但我实际测出的结果是一条单周期指令执行需要将近10个时钟周期,也就是每个时钟周期大概执行0.1条指令,

    实际测试一条指令的时间,它还包括了delay slot,这个时间跟不同的指令相关,见下表(来源文档sprufe8b:TMS320C674x DSP CPU and Instruction Set Reference Guide),和取指的时间,即CPU从内存把这条指令读取到功能单元的时间,这个时间长短取决于内存位置,如果是在片上内存L1最快,L2次之,DDR为最慢。

    robieson robieson 说:
    如何能够提高C6748的执行速度

    下面链接有相关资料及视频,内容很详实,希望你有耐心:

    http://processors.wiki.ti.com/index.php/TMS320C6000_DSP_Optimization_Workshop


  • 谢谢!有一点还不太明白,“针对单周期指令的情况再乘以8条并行执行的指令”。指令执行分fetch,decode,execute3个阶段,fetch阶段需要4个phases,decode阶段需要2个phase,对于单周期指令execute阶段需要1个phase。是不是每个phase用1/3648MIPS,还是别的什么意思。我在5510和6748两种平台下测同一段程序,主频设为基本一样,都在片上运行,结果6748运行的慢占用cpu的cycle多,如果这样,c6000结构的平台性能比c5000要低吗
  • x8是指C6000有8个功能单元。一个cycle最多可以执行8条指令。C5000只有两个功能单元,一个cycle最多执行2条指令。

    CPU之间的性能对比,要在充分利用其CPU架构的基础上,如果C6000上的代码不进行优化利用其可以一个cycle执行多条指令的特性,那任何CPU的的性能对比就是频率了,谁频率高谁就快(假设都是单周期指令)。

    这里讲的一个指令多长时间指的是execute。fetch, decode是固定的。

    你把优化选项打开,C6000要比C5000快的多。