当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]摘要:随着主频的不断增加及多核处理器的出现,DSP运算量也不断地提高,但是从系统集成度的提高和成本角度考虑,仍然需要对C语言代码进行优化以提高效率。介绍了TMS320C66x

摘要:随着主频的不断增加及多核处理器的出现,DSP运算量也不断地提高,但是从系统集成度的提高和成本角度考虑,仍然需要对C语言代码进行优化以提高效率。介绍了TMS320C66x汇编和流水线技术,阐述了在CCS编译器的实时运行环境下,编程需要注意的有关问题,以及如何利用流水线技术提高DSP的处理效率。

引言

DSP(数字信号处理器)通常作为实时信号处理的核心器件,被广泛应用于工业控制、通信、航空航天、武器精确制导等领域中。在以DSP为核心的系统设计过程中,软件开发的地位显得尤为重要。虽然器件水平的不断提高、DSP主频和运算核的增加,使DSP的运算能力大为提升,但是随着系统集成度和实时性的不断提高,为了提高运算速度和执行效率,在进行软件开发时经常需要用到C语言和汇编语言的混合编程。

如何使C语言和汇编语言有效地结合在一起,使程序清晰易懂,同时提升运算效率是本文着重讨论的问题。TI公司的TMS320C66x系列是高性能的数字信号处理器,本文以CCS5.0编程环境为例,讲述了编译器的实时运行环境下的汇编编程规则、使用流水线技术对程序的改善,以及在编程中需要注意的问题。

1 TMS320C66x DSP简介

TMS320C66x高性能DSP采用VLIW结构,具有2路数据通道,每个通道包含4个可以并行运行的处理单元(.L、.S、.M和.D),每个通道有32个32位通用寄存器,每个周期最多可以运行8个32位的指令,数据的加载位宽为每个周期32位或者64位。

其L1/L2存储包括直接映射的32 KB的L1P指令RAM、32 KB的2路L1D数据RAM、512 KB可配置的L2 RAM;最高运行频率为1.25 GHz,每核最高有40 GMAC/s定点和20 GFLOP/s运算能力,8核共享4MB片上存储,包含丰富的外围接口,如DDR3控制器、PCIe控制器和SRIO接口等。

TMS320C66x DSP核心框图如图1所示。

 

 

2 编译器的实时运行环境

在编译器的实时运行环境下,编写汇编代码时要遵守的规则主要有:寄存器使用规则和参数传递规则。

TMS320C66x两组通用寄存器,每组分别有32个32位寄存器,分为两组,分别是A0~A31和B0~B31。编译器对特定寄存器的使用及如何保护作了规定。占用两个寄存器的数据(长整型、双精度浮点数)放在相邻的两个寄存器中,且第一个必须是奇数,例如A1:A0,前面存放高位,后面存放低位,成对使用。

TMS320C66x编译器对汇编函数调用有严格的规定,如果在调用中不遵守这些规定,就会破坏实时运行环境,导致程序错误。主程序把函数调用需要传递的参数放在寄存器或者堆栈里。参数的前10个依次放在A4、B4、A6、B6、A8、B8、A10、B10、A12和B12里、如果参数是长整型或者浮点型,就占用一个寄存器对,如A5:A4、B5:B4等,依此类推。

剩下的参数放在堆栈里,堆栈指针指向下一个空地址,第11个参数就是SP+offset,依此类推。参数放在堆栈里需要考虑存储边界,一个参数如未声明类型且长度不超过一个整型,按整型存放,未声明的浮点数按双精度浮点数存放。返回值如果是整型,单精度浮点数或者指针,放在A4中,如果是长整型或者双精度浮点数则放在A5:A4中。

3 软件流水线技术的应用

TMS320C66x系列DSP的高速度、高效率是靠并行处理来实现的,而软件流水线技术(software pipeline)则是实现并行处理的关键。DSP只有在流水线充分发挥作用的情况下,才可能达到最高的执行效率。软件流水线包含取指、译码和执行3个阶段,每个阶段又分为不同的相位。软件流水线技术处于不同相位可以并行执行,即取指、译码和执行可以并行运行,甚至相同阶段不同相位也可以并行运行。

软件流水线技术是一种循环内的指令,能在一个周期内使用不同功能单元并行处理多个迭代的技术,能更为有效地使用资源,尤其对于VLIW的具有多功能单元的架构,通过减少循环中因为数据相关导致的依赖和功能单元使用冲突挖掘一次循环中指令的并行性,一般都是针对最内层循环进行的优化。

软件流水线技术可以概括为:从一个循环出发,将一个循环分成可以并行执行的迭代单元,也就是说在一次循环运算结束前,启动多次后续的循环运算。软件流水阶段分为进入循环核前的prolog、循环核loop kernel、循环核结束后的epilog三个过程。流水线技术示意图如图2所示。

软件流水线编程时,主要使用以下寄存器:

①Loop Buffer是一个能存储若干条SPLOOP指令的片内存储空间,最多达14个执行包。

②LBC 执行 SPLOOP、 SPLOOPD、SPLOOPW时清零,每个运行周期后+1,当运行到功能段(Stage)边缘时,重置为零,此寄存器用户不可见。

③ILC为用于循环计数的专用寄存器,SPLOOP和SPLOOPD使用向下计数器,每运行一次循环递减,使用ILC需要4个周期的延迟。

RILC循环嵌套时用于重置ILC。

软件流水线编程时,主要使用以下指令:

①SPLOOP一般用于告知循环最小运行次数,但不知循环体是否超过4个周期的起始,因为ILC加载和使用需要4个周期的间隔;SPLOOPD知道循环最小运行次数,以及循环体超过4个周期的起始;SPLOOPW不知道循环次数的任何信息,表明buffer的起始;SPLOOP的参数表示最小的功能段指令周期数。

②SPKERNEL和SPKERNELR表明结束,其参数表示循环结束的第几个功能段内的第几个周期。

 

 

而SPMASK和SPMASKR用来区分是SPLOOP内的存储还是普通memory内的指令。

软件流水线技术的限制:同一周期不能使用相同的功能单元;同一个周期不能同时写入一个目标寄存器;在一个执行程序包内,每个数据通路两个功能单元可以访问另一个寄存器堆的相同的操作数。当从另外一侧读取一个刚刚更新的寄存器时,会有一个周期的延迟,即交叉通道的延迟。

4 汇编语言在程序中的应用

在实际应用程序开发过程中,程序通常采用混合编程的方法实现。主函数采用C程序编写,而对于那些耗时较多的运算密集的模块采用汇编编写。

这样做的目的比较简单,因为这样在主程序中初始化一些初值,既简单又准确,且汇编程序能提升运算效率。这样既能保证程序的结构化和可读性,又能保证应用的实时性。

实验中主要以浮点复数点乘程序为例,介绍汇编语言对源代码的优化步骤。

首先将C源代码循环展开翻译成汇编代码,为了使运算效率最高,应使用相同运算周期内运算量最高的汇编指令。

确定最小迭代间隔规划使用功能单元,使循环的多次迭代能够并行执行;为了使程序流水执行,应首先确定最小功能段间隔。

一个循环的最小功能段间隔是这个循环相邻两次功能段开始之间必须等待的最小周期数。循环中的相邻功能段数据相关性和循环核中使用最多的功能单元是最小功能段间隔。

例如,如果在循环核中有3条相邻指令都使用.D1单元,则最小功能段间隔至少是3,因为使用同一功能单元的3条指令不能并行执行,这时需要的最小功能段为3。

规划使用寄存器。在已知最小功能段间隔以后,可根据程序的数据依赖关系为功能单元分配寄存器,必须保证每个周期内没有寄存器并行使用。

编写汇编程序如下:

 

 

 

 

程序中使用LDDW、CMPYSP等指令完成数据读写和乘法运算等,保证程序运算时间最短。程序中使用最多的单元为D1和D2,每个单元被使用了3次,所以程序的最小功能段为3,循环长度共有15个,被分为5个功能段,在每个周期内保证了没有相同的功能单元被使用。运行同时最多使用了A、B两侧共6个功能单元,保证了运算效率。使用更多的寄存器可以使数据的前后关联更小。

使用本程序运行平台为TMS320C6678,复数8 192点乘其运行周期为33 947,与使用编译器优化的点乘程序的运行周期42 055相比,大约提升了20%。

结语

本文提到的软件利用汇编优化代码技术,在实际的系统应用中获得了满意的代码效率,为大规模复杂算法运算的执行提供了有效的时间保障。

在程序中采用的汇编语言和软件流水技术,在实时条件下能够应用于更为复杂和有效的算法,尤其是在编译器对于某些程序优化不明显的情况下,为提升代码效率提供了一些解决思路。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭