随笔分类 -  c程序开发与优化

c程序开发与优化
摘要:程序功能:求从1一直到 APPLE_MAX_VALUE (100000000) 相加累计的和,并赋值给 apple 的a 和b ;求 orange 数据结构中的 a[i]+b[i ] 的和,循环 ORANGE_MAX_VALUE(1000000) 次。说明:由于样例程序是从实际应用中抽象出来的模型,所以本文不会进行 test.a=test.b= test.b+sum 、中间变量(查找表)等类似的优化。以下所有程序片断均为部分代码,完整代码请参看本文最下面的附件。清单 1. 样例程序[cpp] #defineORANGE_MAX_VALUE1000000 #defineAPPLE_MAX_VAL 阅读全文
posted @ 2012-10-11 22:49 c6000 阅读(2347) 评论(2) 推荐(2)
摘要:优化一个codec的时候,MCPS往往作为一个关键的指标,很多公司的datasheet上,也常常把MCPS最为关键参数列出,一个公司能做到多少MCPS,往往成为它技术能力的象征。那么通常做一个项目的时候,怎么确定到底最终能到达多少MCPS呢?怎么能在项目开展之前准确的算出最终能达到多少MCPS, 我感觉也没有很好的方法,不过倒是有几点可以参考。1.项目的需求,实际上,根据项目的需求来确定codec的MCPS比较好。根据采用的dsp/arm的计算能力和整个项目的计算复杂度,然后的分配给codec多少。2. 参考其他公司的指标,在网上可以查到很多公司做的codec的指标,虽然各个公司有偏差,但大致 阅读全文
posted @ 2011-02-15 23:57 c6000 阅读(1663) 评论(0) 推荐(1)
摘要:from http://www.cnblogs.com/c6000, by c6000@sina.com在定点算法实现中,由于数的定标直接影响到运算的精度,因此,确定各个变量的Q值非常重要.当Q值选得过大时,可能导致变量取值超出其所能表示得范围而导致失真;当Q值选得过小时,又会因为其所能表示的精度太低达不到较好的算法性能。确定Q值的问题实际上就是要确定变量的动态范围。设变量的最大绝对值为|max|... 阅读全文
posted @ 2010-08-24 23:25 c6000 阅读(2224) 评论(0) 推荐(0)
摘要:由于定点数的字长效应,其数值表示的动态范围较小,在运算过程中需要进行:饱和处理(Saturation)当运算(如累加、乘法等)超出最大、最小范围时,将超出最大值的数置为最大能表示的数值(如MAX16、MAX32等);将小于最小值的数表示为最小能表示的数值(如MIN16、MIN32等)。在累加和乘运算中,结果往往会超出原操作数的字长。例如,两个16位的数相乘得到的是32位的乘积,而结果保存只希望高1... 阅读全文
posted @ 2010-08-22 23:44 c6000 阅读(2050) 评论(1) 推荐(1)
摘要:设浮点除法运算的表达式为:float x,y,z;z=x/y ;假设经过统计后被除数x的Q值为Qx,除数y的Q值为Qy,商z的Q值为Qz,则zq*2^(- Qz) = xq*2^(-Qx)/ yq*2^(- Qy) zq=(xq)*2^( Qz -Qx +Qy)/yq但是在通用的DSP中,一般不提供单周期的除法指令,必须用除法子程序来完成定点数除法。除法是乘法的逆运算,乘法包括一系列的移位和加法;... 阅读全文
posted @ 2010-08-22 21:43 c6000 阅读(4391) 评论(0) 推荐(0)
摘要:两个有符号定点数相乘结果将导致两个符号位,为此DSP处理器一般都设计了硬件控制逻辑,可以直接将乘积结果左移移位,去掉符号位以后再存储。两个16比特定点数相乘得到的是32位定点数,一种处理方法是直接保留32比特乘积,进行后续处理;另一种处理方法是舍弃低16比特,降低精度。设浮点乘法运算的表达式为:float x,y,z;z=xy ;假设经过统计后x的Q值为Qx,y的Q值为Qy,乘积z的Q值为Qz,则... 阅读全文
posted @ 2010-08-21 23:41 c6000 阅读(1868) 评论(0) 推荐(0)
摘要:一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(... 阅读全文
posted @ 2010-08-20 00:09 c6000 阅读(438) 评论(0) 推荐(0)
摘要:1. 定点数表示的基础:Q值。Q值就是小数点的位置。16位整形数表示小数32位整形数表示小数2. 将浮点加减法转化为定点加减法最重要的是必须保持两个操作数的Q值一致。如果两者不一致,一般地,为了保证数的精度,在运算前将Q值小的数调整为与Q值大的数的Q值,同时必须注意是否溢出。设x的Q值为QX,y的Q值为Qy,加法/减法结果z的定标值为Qz,则 z=x+y zq*2^(- Qz) = xq*2^(-... 阅读全文
posted @ 2010-08-19 22:24 c6000 阅读(1570) 评论(0) 推荐(0)
摘要:定点DSP把所有数据都当作整数来处理ü在定点DSP芯片中,数字运算都是基于整形数的运算,也即所有操作数都用整形数表示。运算精度取决于整形数的字长,一般定点DSP的字长为16、24、或32。ü定点数用2的补码表示,16比特定点数表示的数值范围-32768~32767ü如1111111111111100b = -4ü定点DSP如何处理小数/分数?ü数的... 阅读全文
posted @ 2010-08-19 00:30 c6000 阅读(3725) 评论(0) 推荐(0)