周晓雁,张卫宁
(山东大学信息科学与工程学院,山东济南250100)
软件设计是数字信号处理器DSP应用的核心技术之一,也是“DSP原理与应用”课程教学的重点和难点之一。由于DSP可分别采用汇编语言、高级语言(C/C++)或混合语言(汇编和高级语言混合使用)编程[1],其软件具有高速、高效和实时性等特点,因此给教学提出了很高的要求。
我们在实验教学中配合课堂教学需要,针对DSP汇编语言及C54x C高级语言编程[2]的各自特点,开设了两个程序优化设计的实验,对学生进行更高层次的软件设计能力培养。
用汇编语言编写和优化程序,其特点就是软件设计与硬件的密不可分性。我们将TMS320C54x系列DSP的四个程序设计放在了同一个实验中,从不同角度出发,引导学生采用合理的优化手段和编程技巧,在缩短代码长度,提高执行速度,增大数据吞吐量以及提高CPU的利用效率等诸方面去优化程序的设计。下面对本实验中的四个程序设计内容做出介绍和分析。
1)分别使用CMPR、SUB或CMPS指令编写程序,比较两数X1和X2的大小。
若两者相等,则将其值存入Y单元,否则,将大者存入Y单元。比较三种指令编程的代码长度和执行时间,其实验结果示于表1,表中CPUCLK为CPU时钟周期(注:受篇幅所限,仅给出实验结果)。
表1 三种指令编程的程序代码长度和执行时间
比较分别用两种指令编程的代码长度和执行时间,其实验结果示于表2。
表2 两种指令编程的程序代码长度和执行时间
比较两种方法编程的代码长度和执行时间。其实验结果示于表3。
表3 两种方法编程的程序代码长度和执行时间
4)分别用双操作数寻址或用并行操作指令编程,计算:y2[i]=g[i]+h[i],i=1,2,3…20。
比较两种方法编程的代码长度和执行时间。其实验结果示于表4。
表4 两种方法编程的程序代码长度和执行时间
本实验囊括了TMS320C54x系列DSP的一些重要特性,牵扯到课程中的许多基本概念和指令。其中,程序设计1告诉学生怎样利用DSP的超标量操作汇编指令去优化程序。由表1可见,选用CMPS指令编写程序,占用的存储单元最少,执行时间最短,从而使学生进一步了解DSP指令超标量操作的含义。
程序设计2体现DSP的延迟操作功能在优化程序中的作用,使学生体会到巧妙利用延迟功能去组织程序能够有效提高执行速度。
程序设计3说明DSP的硬件重复机制和特有的重复操作指令在优化中的重要性,通过实验可以看到,采用单指令重复机制RPT架构去组织程序比用一般的BANZ循环架构在速度上提高了4到5倍,从而提醒学生高度重视和充分利用这些极有特色的重复操作功能。
程序设计4引导学生对DSP的多总线结构和并行操作指令进行深刻理解,通过周密思考和严谨分析,选择合适的处理结构和指令去完成设计任务,进而使学生对双操作数寻址在优化编程中优于并行操作有一个直观的认识。
本实验有一定的难度,我们要求学生在实验前针对四个内容独立编写出程序,实验中将获得的结果进行验证,并在实验报告中填写表1~4,分析总结汇编程序的优化方法及特点。通过实际动手设计和优化程序,使学生的DSP汇编程序设计和优化能力得到很大提高。
本实验紧密配合课堂理论教学,启发学生在基本掌握了DSP的内部结构、片内外围设备、指令系统、软硬件开发环境和仿真工具的基础上,进一步掌握汇编语言程序设计的一般设计方法和优化手段,使学生学会站在高效实时应用的角度去观察问题、分析问题和解决问题,从而提高学生的实际应用能力和综合系统设计能力。
[1]张卫宁,栗华.DSP汇编程序优化方法的探讨[J].南京:电气电子教学学报,2009,31(6):
[2]刘益成.TMS320 C54DSP应用程序设计与开发[M].北京:航空航天大学出版社,2002