CN109947680A - 一种基于dsp的软件运行速度优化方法 - Google Patents
一种基于dsp的软件运行速度优化方法 Download PDFInfo
- Publication number
- CN109947680A CN109947680A CN201910038208.5A CN201910038208A CN109947680A CN 109947680 A CN109947680 A CN 109947680A CN 201910038208 A CN201910038208 A CN 201910038208A CN 109947680 A CN109947680 A CN 109947680A
- Authority
- CN
- China
- Prior art keywords
- software
- dsp
- optimization
- code
- judges whether
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种基于DSP的软件运行速度优化方法,包括以下步骤:配置DSP集成的硬件接口实现数据采集通信;以DMA方式实现数据转存;针对DSP存储架构进行存储空间优化;执行C程序开发,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行下一步骤;执行C程序优化,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行下一步骤;执行线性汇编优化,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行第三步骤。相比于传统技术,本发明设计合理,易于实现,基于DSP处理器的硬件接口、硬件架构、DMA以及代码编写优化等来实现软件速度优化,从而可得到满足实时性要求的软件系统。
Description
技术领域
本发明涉及嵌入式数字信号处理技术领域,尤其是一种基于DSP的软件运行速度优化方法。
背景技术
嵌入式软件系统技术具有广阔的应用前景,已经被广泛应用在工业控制、交通管理、智能家电、电子商务、环境监测以及机器人开发等领域。整体上,嵌入式软件系统由嵌入式软件和嵌入式硬件构成,具有软件系统内核小、专用性强、软件系统精简以及高实时性等重要特征,然而嵌入式应用软件在实时性、稳定性、可靠性以及抗干扰性方面都比通用软件要求更为苛刻,一些并行处理器(比如GPU或者FPGA)的计算性能尚佳,但在软件速度方面上不能良好地推动加成,因此基于这些处理器的软件软件系统的整体运行速度较慢。
发明内容
为了解决上述问题,本发明的目的是提供一种基于DSP的软件运行速度优化方法,基于DSP处理器的硬件接口、硬件架构、DMA以及代码编写优化等来实现软件速度优化,从而使满足软件实时性要求。
为了弥补现有技术的不足,本发明实施例采用的技术方案是:
一种基于DSP的软件运行速度优化方法,包括以下步骤:
S1、配置DSP集成的硬件接口实现数据采集通信;
S2、以DMA方式实现数据转存;
S3、针对DSP存储架构进行存储空间优化;
S4、执行C程序开发,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行步骤S5;
S5、执行C程序优化,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行步骤S6;
S6、执行线性汇编优化,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行步骤S3。
进一步地,所述步骤S1中,配置DSP集成的硬件接口实现数据采集通信,包括以下步骤:
基于DSP集成的硬件接口配置相匹配的第一寄存器;
采用帧中断通知CPU的方式,通过第一寄存器实现数据采集通信。
进一步地,所述步骤S2中,以DMA方式实现数据转存,包括以下步骤:
根据DMA配置相匹配的第二寄存器;
将数据转移存储到第二寄存器上预设的内存指定位置。
进一步地,所述步骤S3中,针对DSP存储架构进行存储空间优化,包括以下步骤:针对DSP存储架构编写.cmd内存映射文件,按需求分配使用DSP存储架构上的内存。
进一步地,所述步骤S4中,执行C程序开发,判断是否满足软件系统时限要求,包括:在CCS集成开发环境下编写C功能代码,基于CCS代码性能跟踪分析工具测试C功能代码的运行耗时,判断C功能代码的运行耗时是否满足软件系统。
进一步地,所述步骤S5中,执行C程序优化,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行步骤S6,包括,执行优化步骤:
设置CCS编译器,选择CCS编译器自动优化;
对C功能代码中的多重循环代码进行拆解操作;
对中值滤波算法下的输入及输出地址指针添加restrict关键字;
调用库函数,实现中值滤波算法功能;
改用内联函数重新设计中值滤波算法;
每执行所述的一项优化步骤后,测试并判断C功能代码的运行耗时是否满足软件系统,若是,则输出软件代码,否则继续执行下一项优化步骤,直至执行完最后一项优化步骤,测试并判断C功能代码的运行耗时是否满足软件系统,若是,则输出软件代码,否则执行步骤S6。
进一步地,所述步骤S6中,执行线性汇编优化,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行步骤S3,包括:基于CCS集成开发环境工具实现线性汇编优化操作,对软件流水线进行调整优化,测试并判断C功能代码的运行耗时是否满足软件系统,若是,则输出软件代码,否则执行步骤S3。
本发明实施例中提供的一个或多个技术方案,至少具有如下有益效果:首先直接采用DSP集成的硬件接口实现数据采集通信,可以大大减少CPU工作量,然后以DMA方式实现数据转存,无需CPU干预,转存速度更快,接着针对DSP存储架构进行存储空间优化,可以合理分配软件内的程序数据,从而充分发挥DSP的综合性能,最后通过编写C程序代码实现软件系统功能,同时对其进行逐级地优化调试,并实时测试是否满足软件系统实时性要求,有利于掌握软件系统的实时情况,以便及时输出软件代码,可减少不必要的优化步骤,最终可得到满足时限要求的软件系统;因此,本发明设计合理,易于实现,基于DSP处理器的硬件接口、硬件架构、DMA以及代码编写优化等来实现软件速度优化,从而可得到满足实时性要求的软件系统。
附图说明
下面结合附图给出本发明较佳实施例,以详细说明本发明的实施方案。
图1是本发明的步骤流程示意图;
图2是本发明的DSP存储架构示意图;
具体实施方式
参照图1和图2,本发明的实施例提供了一种基于DSP的软件运行速度优化方法,包括以下步骤:
S1、配置DSP集成的硬件接口实现数据采集通信;
S2、以DMA方式实现数据转存;
S3、针对DSP存储架构进行存储空间优化;
S4、执行C程序开发,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行步骤S5;
S5、执行C程序优化,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行步骤S6;
S6、执行线性汇编优化,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行步骤S3。
在本实施例中,参照图1,图1中的测试1-测试3本身及数字编号划分只是为了表明相关步骤的执行对应关系,以免供公众参看时产生混淆,因此其不应理解为对本发明实施例的限制;本实施例首先直接采用DSP集成的硬件接口实现数据采集通信,可以大大减少CPU工作量,然后以DMA方式实现数据转存,无需CPU干预,转存速度更快,接着针对DSP存储架构进行存储空间优化,可以合理分配软件内的程序数据,从而充分发挥DSP的综合性能,最后通过编写C程序代码实现软件系统功能,同时对其进行逐级地优化调试,并实时测试是否满足软件系统实时性要求,有利于掌握软件系统的实时情况,以便及时输出软件代码,可减少不必要的优化步骤,最终可得到满足时限要求的软件系统;因此,本发明设计合理,易于实现,基于DSP处理器的硬件接口、硬件架构、DMA以及代码编写优化等来实现软件速度优化,从而可得到满足实时性要求的软件系统。
进一步地,本发明的另一实施例还提供了一种基于DSP的软件运行速度优化方法,其中,所述步骤S1中,配置DSP集成的硬件接口实现数据采集通信,包括以下步骤:
基于DSP集成的硬件接口配置相匹配的第一寄存器;
采用帧中断通知CPU的方式,通过第一寄存器实现数据采集通信。
在本实施例中,配置好第一寄存器后,可以相应设置第一寄存器的预定数据格式、速率以及存储位置,这样在通过帧中断通知CPU时,能够更为清楚准确地将设定信息传达给CPU,减少实现数据采集通信时的错误率,有利于提升整体的执行速度;比如,基于TI公司的TMS320C6748这款DSP处理器,以最通用的摄像头图像采集、预处理(中值滤波)及LCD显示操作为例,针对摄像头图像采集,直接采用TMS320C6748这款DSP集成的VPIF硬件接口实现,软件通过配置相关寄存器,以预定的数据格式、速率和存储位置等设置,采取帧中断通知CPU的方式,实现摄像头数据的采集任务,这可大大减少CPU工作量。
进一步地,本发明的另一实施例还提供了一种基于DSP的软件运行速度优化方法,其中,所述步骤S2中,以DMA方式实现数据转存,包括以下步骤:
根据DMA配置相匹配的第二寄存器;
将数据转移存储到第二寄存器上预设的内存指定位置。
在本实施例中,DMA(Direct Memory Access)即直接内存存取,是嵌入式底层驱动里的一环,方便不同速度的硬件装置进行沟通,是一种现有技术,不作赘述;采用DMA方式,可以在无需CPU干预的情况下,按照预先的指令将成块大量的数据搬移到第二寄存器上预设的内存指定位置上,因此存储较为有序,不会占用额外的内存位置,使内存分布在整体上较为均衡。
进一步地,本发明的另一实施例还提供了一种基于DSP的软件运行速度优化方法,其中,所述步骤S3中,针对DSP存储架构进行存储空间优化,包括以下步骤:针对DSP存储架构编写.cmd内存映射文件,按需求分配使用DSP存储架构上的内存。
在本实施例中,编写相应.cmd文件,将相应的代码和数据,在外部存储器上分配足够容量存储空间,并设置成均可被缓存,以此充分发挥DSP多级储存架构的高效性能;所述的按需求分配是指按速率、容量以及使用程度等进行分配,可根据软件系统情况进行实际设置;基于TI公司的TMS320C6748这款DSP处理器,以最通用的摄像头图像采集、预处理(中值滤波)及LCD显示操作为例,考虑到TMS320C6748这款DSP处理器一般仅有几百KB的L1、L2片上内存,因此,参照图2,其中,L1P SRAM、L1D SRAM和L2SRAM为可寻址内存,L1P Cache、L1D Cache和L2Cache为缓存内存,图中箭头表示的是该DSP存储架构(缓存控制器)的数据流通路径,可见按需求将高速、小容量的L1、L2片上内存设置作为程序、数据的缓存,将程序中经常使用的小部分程序或者数据放到L2或者L3片(未示出)上内存,剩下的程序和数据则放在低速、大容量的片外存储器上,可见,片上内存的合理分配使用才能充分发挥DSP的综合性能。
进一步地,本发明的另一实施例还提供了一种基于DSP的软件运行速度优化方法,其中,所述步骤S4中,执行C程序开发,判断是否满足软件系统时限要求,包括:在CCS集成开发环境下编写C功能代码,基于CCS代码性能跟踪分析工具测试C功能代码的运行耗时,判断C功能代码的运行耗时是否满足软件系统。
在本实施例中,CCS(Code Composer Studio)是一种集成开发环境(IDE),其支持TI的微控制器和嵌入式处理器产品系列;基于TI公司的TMS320C6748这款DSP处理器,以最通用的摄像头图像采集、预处理(中值滤波)及LCD显示操作为例,CCS环境配合DSP处理器进行功能代码的开发,借助CCS集成开发环境,编写完基本中值滤波的C功能代码,实现图像预处理操作,并且在bedug模式下调试无误后,利用CCS集成相关代码性能跟踪分析工具,测试代码运行耗时,若软件运行耗时达到预期时间,则可以直接生成、发布release版本软件代码,完成软件运行速度优化任务。
进一步地,本发明的另一实施例还提供了一种基于DSP的软件运行速度优化方法,其中,所述步骤S5中,执行C程序优化,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行步骤S6,包括,执行优化步骤:
设置CCS编译器,选择CCS编译器自动优化;
对C功能代码中的多重循环代码进行拆解操作;
对中值滤波算法下的输入及输出地址指针添加restrict关键字;
调用库函数,实现中值滤波算法功能;
改用内联函数重新设计中值滤波算法;
每执行所述的一项优化步骤后,测试并判断C功能代码的运行耗时是否满足软件系统,若是,则输出软件代码,否则继续执行下一项优化步骤,直至执行完最后一项优化步骤,测试并判断C功能代码的运行耗时是否满足软件系统,若是,则输出软件代码,否则执行步骤S6。
在本实施例中,设置CCS编译器,开启编译器自动优化选项、设置相关选项及优化等级等参数,此时编译器通过对循环指令进行编排,使得循环指令多次迭代,最终可以达到并行执行的效果,实现软件流水线功能,生成高效的代码,加快软件运行速度;
对C功能代码中的多重循环代码进行拆解操作,尤其是针对耗时较长的多重循环代码,基于TI公司的TMS320C6748这款DSP处理器,以最通用的摄像头图像采集、预处理(中值滤波)及LCD显示操作为例,比如执行中值滤波中循环遍历图像数据的操作,对窗口内的像素进行排序操作等,均可用拆解算法在单次循环中实现;
对中值滤波算法下输入、输出两块图像地址指针,添加restrict关键字,以消除空间相关性,以便编译器判定对此两块内存执行指令操作是不相关的,从而实行程序并行操作的优化,提升软件运行速度;
调用库函数,实现中值滤波算法功能,具体地,调用TI公司针对TMS320C6748这款DSP优化的相关ImgLib库中IMG_median_3x3_8函数,实现中值滤波功能;
进一步地,本发明的另一实施例还提供了一种基于DSP的软件运行速度优化方法,其中,所述步骤S6中,执行线性汇编优化,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行步骤S3,包括:基于CCS集成开发环境工具实现线性汇编优化操作,对软件流水线进行调整优化,测试并判断C功能代码的运行耗时是否满足软件系统,若是,则输出软件代码,否则执行步骤S3。
在本实施例中,若最终需要重新执行步骤S3,则显然地,需要对DSP存储架构重新进行存储空间优化,也就是说,需要重新进行内存分配,以便于在后续步骤中开发生成不同的C功能代码。
并且,发明人也针对本发明以及传统技术中的软件运行速度进行了示例比较测试,仍然以最通用的摄像头图像采集、预处理(中值滤波)及LCD显示操作为例,主要通过修改库函数以及操作C代码、C源码的方式来进行示范测试,同时也比较了本发明的优化以及深度优化的区别,其结果参照如下的表1:
表1
从测试结果可知,采用了本发明的优化方法后,无论对图像进行中值滤波还是遍历二值化操作,其执行时间(包括时钟数)均大大减少,并且随着优化的不断升入,仍然能够保持这种变化趋势,也证明了本发明相比于传统技术是具有突出的实质性特点和显著地进步的;其中,800*480是测试图像的大小参数。
以上内容对本发明的较佳实施例和基本原理作了详细论述,但本发明并不局限于上述实施方式,熟悉本领域的技术人员应该了解在不违背本发明精神的前提下还会有各种等同变形和替换,这些等同变形和替换都落入要求保护的本发明范围内。
Claims (7)
1.一种基于DSP的软件运行速度优化方法,其特征在于,包括以下步骤:
S1、配置DSP集成的硬件接口实现数据采集通信;
S2、以DMA方式实现数据转存;
S3、针对DSP存储架构进行存储空间优化;
S4、执行C程序开发,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行步骤S5;
S5、执行C程序优化,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行步骤S6;
S6、执行线性汇编优化,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行步骤S3。
2.根据权利要求1所述的一种基于DSP的软件运行速度优化方法,其特征在于,所述步骤S1中,配置DSP集成的硬件接口实现数据采集通信,包括以下步骤:
基于DSP集成的硬件接口配置相匹配的第一寄存器;
采用帧中断通知CPU的方式,通过第一寄存器实现数据采集通信。
3.根据权利要求1所述的一种基于DSP的软件运行速度优化方法,其特征在于,所述步骤S2中,以DMA方式实现数据转存,包括以下步骤:
根据DMA配置相匹配的第二寄存器;
将数据转移存储到第二寄存器上预设的内存指定位置。
4.根据权利要求1所述的一种基于DSP的软件运行速度优化方法,其特征在于,所述步骤S3中,针对DSP存储架构进行存储空间优化,包括以下步骤:针对DSP存储架构编写.cmd内存映射文件,按需求分配使用DSP存储架构上的内存。
5.根据权利要求1所述的一种基于DSP的软件运行速度优化方法,其特征在于,所述步骤S4中,执行C程序开发,判断是否满足软件系统时限要求,包括:在CCS集成开发环境下编写C功能代码,基于CCS代码性能跟踪分析工具测试C功能代码的运行耗时,判断C功能代码的运行耗时是否满足软件系统。
6.根据权利要求1所述的一种基于DSP的软件运行速度优化方法,其特征在于,所述步骤S5中,执行C程序优化,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行步骤S6,包括,执行优化步骤:
设置CCS编译器,选择CCS编译器自动优化;
对C功能代码中的多重循环代码进行拆解操作;
对中值滤波算法下的输入及输出地址指针添加restrict关键字;
调用库函数,实现中值滤波算法功能;
改用内联函数重新设计中值滤波算法;
每执行所述的一项优化步骤后,测试并判断C功能代码的运行耗时是否满足软件系统,若是,则输出软件代码,否则继续执行下一项优化步骤,直至执行完最后一项优化步骤,测试并判断C功能代码的运行耗时是否满足软件系统,若是,则输出软件代码,否则执行步骤S6。
7.根据权利要求1所述的一种基于DSP的软件运行速度优化方法,其特征在于,所述步骤S6中,执行线性汇编优化,判断是否满足软件系统时限要求,若是,则输出软件代码,否则执行步骤S3,包括:基于CCS集成开发环境工具实现线性汇编优化操作,对软件流水线进行调整优化,测试并判断C功能代码的运行耗时是否满足软件系统,若是,则输出软件代码,否则执行步骤S3。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910038208.5A CN109947680A (zh) | 2019-01-16 | 2019-01-16 | 一种基于dsp的软件运行速度优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910038208.5A CN109947680A (zh) | 2019-01-16 | 2019-01-16 | 一种基于dsp的软件运行速度优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109947680A true CN109947680A (zh) | 2019-06-28 |
Family
ID=67006715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910038208.5A Pending CN109947680A (zh) | 2019-01-16 | 2019-01-16 | 一种基于dsp的软件运行速度优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109947680A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489356A (zh) * | 2019-08-06 | 2019-11-22 | 上海商汤智能科技有限公司 | 信息处理方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514358A (zh) * | 2002-12-31 | 2004-07-21 | 深圳市中兴通讯股份有限公司 | 一种基于StarCore数字信号处理器的并行运算处理的优化方法 |
CN101132427A (zh) * | 2006-08-22 | 2008-02-27 | 中国科学院声学研究所 | 一种用DSP实现的VoIP模拟电话适配器 |
CN101304525A (zh) * | 2008-06-06 | 2008-11-12 | 南京邮电大学 | 基于高级加密标准的视频加密方法 |
CN103049245A (zh) * | 2012-10-25 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种基于cpu多核平台的软件性能优化方法 |
CN104503921A (zh) * | 2014-12-31 | 2015-04-08 | 中国科学院重庆绿色智能技术研究院 | 一种嵌入式高性能rtk算法内存空间定量优化分配方法 |
-
2019
- 2019-01-16 CN CN201910038208.5A patent/CN109947680A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514358A (zh) * | 2002-12-31 | 2004-07-21 | 深圳市中兴通讯股份有限公司 | 一种基于StarCore数字信号处理器的并行运算处理的优化方法 |
CN101132427A (zh) * | 2006-08-22 | 2008-02-27 | 中国科学院声学研究所 | 一种用DSP实现的VoIP模拟电话适配器 |
CN101304525A (zh) * | 2008-06-06 | 2008-11-12 | 南京邮电大学 | 基于高级加密标准的视频加密方法 |
CN103049245A (zh) * | 2012-10-25 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种基于cpu多核平台的软件性能优化方法 |
CN104503921A (zh) * | 2014-12-31 | 2015-04-08 | 中国科学院重庆绿色智能技术研究院 | 一种嵌入式高性能rtk算法内存空间定量优化分配方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489356A (zh) * | 2019-08-06 | 2019-11-22 | 上海商汤智能科技有限公司 | 信息处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8332829B2 (en) | Communication scheduling within a parallel processing system | |
US20130232495A1 (en) | Scheduling accelerator tasks on accelerators using graphs | |
JPH02183362A (ja) | コンピュータシステム | |
US11016773B2 (en) | Processor trace extensions to facilitate real-time security monitoring | |
Ariel et al. | Visualizing complex dynamics in many-core accelerator architectures | |
WO2020083050A1 (zh) | 一种数据流处理方法及相关设备 | |
CN112580792B (zh) | 一种神经网络多核张量处理器 | |
CN102073480B (zh) | 基于时分复用实现多核处理器内核模拟的方法 | |
US20180011957A1 (en) | Method for improving opencl hardware execution efficiency | |
CN109947680A (zh) | 一种基于dsp的软件运行速度优化方法 | |
WO2018076979A1 (zh) | 一种指令间数据依赖的检测方法和装置 | |
CN103729180A (zh) | 一种快速开发cuda并行程序的方法 | |
US20220100512A1 (en) | Deterministic replay of a multi-threaded trace on a multi-threaded processor | |
US11934809B2 (en) | Multi-stage automatic compilation for vector computations in applications | |
CN111008133B (zh) | 粗粒度数据流架构执行阵列的调试方法及装置 | |
CN111506395B (zh) | 一种混合仿真的全数字虚拟运行环境的实现方法及装置 | |
Koehler et al. | Platform-aware bottleneck detection for reconfigurable computing applications | |
CN103744698A (zh) | Dsp工程的高效运行方法及系统 | |
Imhmed | Understanding Performance of a Novel Local Memory Store Design through Compiler-Driven Simulation | |
CN111651382A (zh) | 基于局部总线的数据采集系统的并行化存储实现方法 | |
CN1219254C (zh) | 一种用于51核ic卡的硬件仿真系统 | |
CN209281188U (zh) | 基于arm9架构的高性能热电联产机组运行数据采集终端 | |
KR20110067795A (ko) | 실시간 프로세스의 응답성 개선을 위한 tcm운용방법 | |
Lee et al. | Pointer Analysis for Programs on Hybrid DRAM-PM Memory Systems | |
Pouget et al. | User level DB: a debugging API for user-level thread libraries |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190628 |
|
RJ01 | Rejection of invention patent application after publication |