首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TI DSP编程-C是否足够快,或者我需要汇编程序吗?

TI DSP编程-C是否足够快,或者我需要汇编程序吗?
EN

Stack Overflow用户
提问于 2009-09-21 09:56:23
回答 8查看 4.7K关注 0票数 6

我将为德州仪器的DaVinci平台编写一些图像处理程序。有适合用C语言编程的工具,但我想知道是否真的有可能在不求助于汇编语言的情况下充分利用DSP处理器的优势。你知道在这个DSP平台上用C编写的程序和用汇编语言编写的程序之间的速度比较吗?

EN

回答 8

Stack Overflow用户

发布于 2009-09-21 10:03:53

我用过一些其他的TI DSP,C语言通常也不错。通常的方法是从用C编写所有代码开始,然后分析代码,看看是否有需要手工优化的地方。

你通常也可以用C语言进行优化,通过调整C代码直到得到你想要的汇编输出。重要的是要知道DSP是如何工作的,以及什么工作方式更快或更慢。

票数 11
EN

Stack Overflow用户

发布于 2009-11-06 07:20:54

用于OMAP3上的C64x/C64x+ DSP的TI编译器包括对TI所称的“内部”函数调用的支持。它们不是真正的函数调用,它们只是一种告诉编译器使用什么汇编操作码的方式,而这些操作可能不是用C直接表达的。它对于在C64x/C64x+ DSP中利用C64x/C64x+DSP中的SIMD操作码特别有用。

一个示例可能是:

A= _add2(B,C);

此SIMD指令将B和C的低/高16位相加,并将结果存储在A的低/高16位中。您不能用常规C来表示这一点,但您可以使用固有的C操作码来实现。

我已经使用了内部C来非常接近你可以用成熟的汇编语言做的事情(在5-10%以内)。它对于像过滤和运动补偿(_dotpsu4!)这样的视频功能特别有用。

我通常使用-al开关进行编译,并查看管道以尝试确定哪些功能单元被重载,然后查看我的内部函数,看看是否可以重新平衡循环(如果我使用了太多的S单元,我可能会查看是否可以将操作码更改为使用M单元)。

此外,记住C64x DSP有64个寄存器是很有帮助的,所以加载本地变量和永远不会将指令的输出赋值回相同的变量--这将对编译器正确流水线的能力产生负面影响。

票数 10
EN

Stack Overflow用户

发布于 2009-09-21 10:18:12

通常,C语言是一个很好的起点。您可以快速获得整体框架和算法,并编写在真正的数学之间移动数据的大部分管道。一旦这些准备就绪,并且您很高兴您的数据结构是正确的,您就可以在分析器中查看并找出哪些例程需要手动压缩。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1453718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档