VEC-C描述:Create small,compact code,reduce cycle count !
VEC-C的作用是优化代码,减少cycle数,让代码翻译出来的汇编代码有更多的并行操作(直观看起来就是有很多或符号‘||’)。
在CEVA中有3种等级的优化:
1,C level : easy 通过C代码本身的优化
2,VEC-C : hard 需要对指令集和架构非常了解
3,Assembly level : very hard 需要对架构、指令集以及汇编都要精通
显然第三等级的优化需要非常专业的汇编开发员才能完成,通常情况VEC-C就可以达到很理想的优化效果。
VEC-C优化原理:
CEVA定义了一系列的VEC-C intrinsic是一个非常接近汇编的一个函数集,这个函数集使用了向量处理来达到并行运算的目的。
拓展:在vs c++里有intrinsic和inline函数,inline以前是用来优化函数调用速度的,在函数中调用函数的时候,直接拷贝被调用函数的内容进来,从而减少调用次数,以增加代码量为代价来优化速度。现在的编译器已经默认执行这个操作了,inline函数用来指示多处函数的定义。相反intrinsic函数就是用来取消这个默认优化操作。编程人员写的函数要比这个默认操作更加优化,那就用intrinsic来取消这个默认操作。后来intrinsic代表了一个不需要这个默认操作的一系列函数集,比如strcmp、strcpy等,代表了非常优化的一类函数。
所以,VEC-C intrinsic就是CEVA公司开发出来的一类近似汇编的优化过的函数。用VEC-C来优化代码就是要学会如何用这一系列的intrinsic函数来代替c代码中的笨拙操作,让原来的标量处理过程变成矢量处理。
vec-c intrinsic对数据有这三种类型的操作:binary operators、compare operators、unary operators。