- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
/pic/Class345/Class353/20080818093305.html TMS320C64X DSP 的程序设计与优化
TMS320C64X 的特点
采用 VelociTI.2 体系结构的 C64X 系列定点 DSP 芯片,在结构上有许多特点: 1) C64X 片内有 2 个数据通道、8 个功能单元(.L1,.L2,.S1,.S2,.D1,. D2,.M1 和.M2,
其中.M1 和.M2 为两个乘法器)和 2 个一般目的寄存器文件(A 和 B)。而 8 个功能单元和 2 个寄存器文件又分成了相同的两组,每组占用一个数据通道。两个数据通道之间包含有两个数据交叉通路。
C64X DSP 采用超长指令字(VLIW),即在每个时钟周期最高可提供 8 条 32
位指令,总字长为 256 位的指令包同时分配到 8 个并行处理单元。在 600MHz 的时钟频率下,当片内 8 个处理单元同时运行时,其最大处理能力可以达到4800MIPS。
C64X DSP 具有双 16bit 扩充功能,芯片能在一个周期内完成双 16bit 的乘法、加减法、比较、移位等操作。
TMS320C64X 的软件开发流程。
TMS320C64X 内部有 8 个独立的功能单元,所以在一个周期内最多可以并行执行
8 条指令。然而指令与功能单元之间特殊的映射关系、每一条指令执行时间的不相同、每一条指令的数据通路的不相同和指令间操作数的相关性等因素,致使一个周期内实际能并行执行的指令数达不到8 条,从而降低了DSP的性能,因此,必须采用合理的开发和优化流程,尽可能的对代码进行优化,从而提高指令执行的并行度(DSP 优化的关键)。
如图 1 所示,工作流程一般分为三个阶段。
阶段一:直接按照需要用C 语言实现功能。在实际的DSP 应用中,许多算法都是非常复杂,直接用汇编代码编写,虽然优化效率很高,可是实现的难度却很大,所以一般都采用先用C 语言来实现,然后编译运行,利用C64X 开发环境的profile clock 工具测试程序运行时间,若不能满足要求,则进行第二阶段。
阶段二:C 语言级的优化。选择 C64X 开发环境提供的优化方式以及充分运用其他技巧,优化 C 代码,若还不能满足效率要求,则进行第三步。
阶段三:汇编级的优化。将上一阶段 C 程序中优化效率较低的部分提出来,用线
性汇编语言编写,利用汇编优化器进行优化。汇编优化器的作用是让开发人员在不考虑 C64X 流水线结构和分配其内部寄存器的情况下,编写线形汇编语言程序, 然后汇编优化器通过分配寄存器和循环优化将汇编语言程序转化为利用流水线方式的高速并行汇编程序。
上述的三个阶段不是都必须经过,当在某一阶段获得了期望的性能,就不必进行下 一阶段的优化。
C 代码的优化方法
对于 C64X 平台下的 C 源程序,可以选用的优化方法有:
选用 C 编译器提供的优化选项
在编译器中提供了分为若干等级和种类的自动优化选项,如下:
-o:使能软件流水和其他优化方法
-pm:使能程序级优化
-mt:使能编译器假设程序中没有数据存储混淆,可进一步优化代码。
-mg:使能分析(profile)优化代码
-ms:确保不产生冗余循环,从而减小代码尺寸
-mh:允许投机执行
-mx:使能软件流水循环重试,基于循环次数对循环试用多个方案,以便选择最佳 方案。
根据实际编译的程序,选择合适的优化选项,进行源程序的优化。
减小存储器相关性
为使指令达到最大效率,C64X 编译器尽可能将指令安排为并行执行。为使指令并行操作,编译器必须知道指令间的关系,因为只有不相关的指令才可以并行执行。 当编译器不能确定两条指令是否相关时,则编译器假定它们是相关的,从而不能并 行执行。设计中常采用关键字 const 来指定目标,const 表示一个变量或一个变量的存储单元保持不变。因此,在代码中加入关键字 const,可以去除指令间的相关性。例如下面的程序:
void vecsum(short *sum,short*in1,short*in2,unsigned int N)
{
int i;
for(i=0;iN;i++) sum[i]=in1[i]+in2[i];
}
由其相关图 2(a)可见,写 sum 可能对指针 in1、in2 所指向的地址有影响, 从而 in1 和 in2 的读操作必须等到写 sum 操作完成之后才能进行,降低了流水效率,为帮助编译器确定存储器的相关性,使用 const 关键字来指定一个目标,上面的源程序可改为含关键字 const 的优化源代码:
void vecsum(short * sum, const short*in1,const short*in2,unsigned int N)
{
int i; fo
您可能关注的文档
最近下载
- 第九讲混一南北与中华民族大统合(元朝时期)-第十讲中外会通与中华民族巩固壮大(明朝时期)-中华民族共同体概论专家大讲堂课件.pptx VIP
- 成人术中非计划低体温预防与护理-2024中华护理学会团体标准.pptx VIP
- 2025年-《中华民族共同体概论》试题及答案解析-新版.pdf VIP
- 《中华民族共同体概论》试题汇总.pdf VIP
- 2023版思想道德与法治绪论1我们处在中国特色社会主义新时代.pdf VIP
- 2025年-中华民族共同体概论-第八讲 共奉中国与中华民族内聚发展(辽宋夏金时期).docx VIP
- Ti-Mg脱氧工艺对低碳钢板气电立焊接头组织和性能的影响.pdf VIP
- 2025年“国学小名士”专题知识竞赛题库500题(含答案).docx
- 新版中华民族共同体概论课件第八讲共奉中国与中华民族内聚发展(辽宋夏金时期)-2025年版.pdf VIP
- 初一英语上册英语竞赛试题.doc VIP
原创力文档


文档评论(0)