请教大家一个问题:看了C6748的手册,每个时钟周期可以执行8条32bits的指令,也就是3648MIPS。但我实际测出的结果是一条单周期指令执行需要将近10个时钟周期,也就是每个时钟周期大概执行0.1条指令,慢了很多。想知道怎么回事,如何能够提高C6748的执行速度。多谢!
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的手册,每个时钟周期可以执行8条32bits的指令,也就是3648MIPS。但我实际测出的结果是一条单周期指令执行需要将近10个时钟周期,也就是每个时钟周期大概执行0.1条指令,慢了很多。想知道怎么回事,如何能够提高C6748的执行速度。多谢!
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
x8是指C6000有8个功能单元。一个cycle最多可以执行8条指令。C5000只有两个功能单元,一个cycle最多执行2条指令。
CPU之间的性能对比,要在充分利用其CPU架构的基础上,如果C6000上的代码不进行优化利用其可以一个cycle执行多条指令的特性,那任何CPU的的性能对比就是频率了,谁频率高谁就快(假设都是单周期指令)。
这里讲的一个指令多长时间指的是execute。fetch, decode是固定的。
你把优化选项打开,C6000要比C5000快的多。