-
0 引言
-
水声遥控装置通过水声发射换能器向水下节点发送遥控指令,遥控水下节点完成指定任务。其中遥控接收装置需在水中超长时间待机。对遥控接收装置的低功耗设计有利于提高用户的使用感受。现阶段水声遥控装置低功耗设计一般进行硬件的低功耗设计,在硬件设计中,选取性能较高、功耗较低的设备和模块,适时控制电源。在软件设计中,按照可靠性、简洁性和标准化的原则进行编写,可大大降低对硬件的需求。因此采用硬件软件相结合、相配合的方法,充分降低系统功耗,延长水声遥控装置通海上运行时间,不仅能够延长设备的使用时间,而且能够减少资源的浪费。遥控接收装置的低功耗设计主要从2方面进行考虑:1)硬件的低功耗设计;2)软件的低功耗设计。软件低功耗设计的最根本原则是在保证程序正确运行的大前提下,提高运算速度和占用更少的运行资源。
-
本文中的遥控接收装置低功耗软件优化主要从源级低功耗优化、算法级低功耗优化及编译级算法优化3个方面进行,以达到编译级汇编语言编写的程序代码能够以最快的速度、占用最少的硬件资源进行正确的运行,从而实现对接收端低功耗的需求。
-
1 软件功耗优化原则方法及分类
-
从普遍意义上讲,在功耗优化这个问题上,研究者普遍比较关注硬件功耗优化,应用各种技术想方设法改进硬件的功耗。比如,在芯片制造工艺上采用更精细的纳米技术,不断降低芯片驱动电压,改变片内系统结构等。事实上,整个系统的运行管理是由软件体现的。在硬件基础一定的情况下,只有将软件系统对能量的损耗降至最小,才能使整个系统工作于最佳状态。软件设计中,所有频繁调用的函数都需要优化[1-2]。代码优化是一件非常有意义的事情。优化处理是指产生更高效的目标代码所做的工作。目标代码占空间更小、执行速度更快。低功耗软件优化的原则是基于阿姆达尔定律[3],优化经常使用的代码,不经常使用的代码不做较多优化考虑(或者完全不优化)。
-
阿姆达尔定律:
-
式中:S 表示固定负载情况下描述并行处理效果的加速比;a 表示并行计算部分所占比例;n 表示并行处理节点个数。
-
阿姆达尔定律同样适合低功耗的软件优化,由此低功耗优化的基本原则:1)等价原则优化后不改变原程序运行的功能;2)有效原则优化后产生的目标代码运行时间较短;3)优化后占用空间较小,包括代码空间和数据空间。
-
一般而言,低功耗的优化过程如图1。其中:中间代码优化表示与硬件无关的优化,目标代码优化依赖于硬件的优化。
-
图1 代码优化过程
-
Fig.1 Code optimization process
-
根据以上过程并结合遥控接收装置的自身特点,从算法级、源程序级(与硬件无关)以及编译级(与硬件相关)3个方面研究常用的水声遥控装置接收软件低功耗优化方法。
-
2 低功耗优化设计
-
2.1 算法级低功耗优化
-
水声遥控装置接收端系统如图2所示,接收装置获得遥控信号后,首先去载波,然后进行信号搜索,搜到信号后进行跟踪,并进行多普勒修正,然后由测量信号进行信道估计,根据估计的结果进行RAKE接收,解码后得到输出的信息。
-
图2 遥控装置接收系统框图
-
Fig.2 Block diagram of remote control device receiving system
-
去载波是接收端所有信号处理算法执行的大前提,对其进行优化具有十分重要的意义。首先对其信号结构进行改造,按照传统的操作,其流程如图3。
-
去载波的改进优化可分成数据流的改进优化和数据结构的改进优化2部分:
-
1)关于数据结构的改变,进行硬件平台的低功耗性能优化时,要建立对内存数据进行操作的概念。先分析内存,然后再根据算法的需要进行合理的分配设置。在本项目中,实现了真正意义的复数结构。去载波的过程中包络数据的实部和虚部分别放到不同的地址中,进行后续的处理。改进优化后的方案将分开存放包络数据的实部和虚部,放到了数组内相邻的2个short型中。从内存的角度看,这一操作是把数据放到了一个4字节的高位和低位,不仅节约了内存,实现了内存的优化,而且使后续的编译级得到优化。
-
图3 去载波流程
-
Fig.3 Carrier elimination flow
-
2)对数据流进行改进优化,在原有的算法中硬件中断到达的时刻,将采集到的接收信号数据放到固定的地址,数据达到遥控装置的1个信号周期后进行去载波的处理,处理后的数据进行后续的解码计算。进行低功耗优化后的数据流结构如图5所示,中断到达后直接进行去载波处理得到基带信号,累计处理后的基带信号达到1个周期后再进行后续算法处理。
-
图4 优化前去载波流程
-
Fig.4 Carrier elimination flow before optimization
-
去载波低功耗优化的有益效果在当下步骤主要体现在程序占用内存的大量减少。统计仅对去载波部分进行比较,不包含程序的其他部分,不进行整体比较。在未进行编译级优化及源级优化时速度的提高,是由于释放了大量的内存,程序可以充分使用片内空间,消除了片内外读写速度的差异,同时节省了数据搬移的开销。
-
图5 优化后去载波流程
-
Fig.5 Carrier elimination flow after optimization
-
要想进一步提高遥控接收装置的抗多普勒、抗多途能力,就要在接收端采取额外措施——多普勒频率搜索和多途分量的提取,再加上同步信号搜索和信号的解扩,这将会带来很大量的相关运算。要进行低功耗的优化,仅仅在编译级进行优化效果不是特别明显,所以要在算法级进行优化。一个快速算法,对低功耗性能优化有着十分重要的意义。本设计中主要采用了快速沃尔什变换代替快速傅里叶变换。
-
快速沃尔什变换(FWHT)类似于FFT,WHT也有快速算法FWHT,也可将输入序列 f(x)按奇偶进行分组,分别进行WHT[4]。FWHT的基本关系为
-
WHT是将一个函数变换成取值为+1或-1的基本函数构成的级数,用它来逼近数字脉冲信号时要比FFT有利。同时,WHT只需要进行实数运算,存储量比FFT要少得多,运算速度也快得多。沃什–阿达玛快速转换图解与傅里叶快速转换图解外观相似,区别在于完全没有复数乘法。这种特点在大多数硬件平台上都占有绝对的优势,其避免了平台对乘法器的需求和依赖。同时WHT将一个函数变换成取值为+1或–1,占用的存储空间小,为硬件平台的低功耗优化带来了极大的优势。沃什–阿达玛快速转换与傅里叶快速转换相比带来的效果增益,使其运行速度提高了4.3倍。
-
2.2 源程序及优化
-
虽然水声遥控装置接收部分的软件部分全部采用编译级汇编代码进行编写,但是在编写汇编程序之前进行了源程序级的C语言程序设计,然后再进行汇编程序的编写。所以高效的源程序记得代码编写及优化是十分必要的,也是后续汇编程序的基础。
-
常用优化技术包括:删除多余运算、循环不变代码外提、强度削弱、变换循环控制条件、合并已知量与复写传播、删除无用赋值等。这些方法在遥控通信的接收装置的低功耗性能优化中同样有效。具体实施可实例化到堆栈和寄存器的合理利用,避免调用开销[5],局部变量和使用查找表方面。主要体现在以下几个方面:
-
1)堆栈和寄存器的合理利用包括:避免或减少使用本地变量,减少函数参数的个数,尽量避免数据转换[6],全局变量合理分配。
-
2)避免不必要的开销包括:避免调用的开销,尤其是循环的合理利用[7];局部变量的合理使用,应该尽可能地不使用char和short类型的局部变量;函数通常可以设计成查找表,这样可以显著提升性能;减小运算强度[6],非必要情况不采用除法和取余实现程序;充分利用指令层的并行机制。
-
2.3 编译级(依赖于硬件)的低功耗优化
-
由于水声遥控装置接收部分对低功耗的要求极高,所以仅仅对软件部分进行算法的低功耗优化及源程序级的低功耗优化无法满足需要。虽然软件部分全部采用编译级汇编代码进行编写,但是在编写汇编程序之前进行了源程序级的C语言程序设计,然后再进行汇编程序的编写。所以高效的源程序记得代码编写及优化是十分必要的,也是后续汇编程序的基础。
-
编译级的低功耗优化主要集中在使用并行指令,用有用的指令(取代NOP)填充延迟间隙,循环展开,字长优化(使用LDW);排流水。
-
在指令级并行的机器上,程序的运行速度依赖于:程序中潜在的并行、处理器上可用的并行、从串行程序提取并行的能力、在给定的调度约束下发现最佳并行调度的能力。
-
指令级并行时,通常是一个处理器在单个时钟周期内发射几个操作。而指令级并行的获得是通过使用流水线技术指令流水线和分支延迟。发现应该执行一个分支而不是直接后继,转向一个分支时会引起取分支目的地址指令的延迟并引起指令流水线“打嗝”[8]。可以通过使用硬件,根据分支的执行历史来预测分支结果并从预测的目的地址预取指令。分支延迟不可避免,因为分支预测会发生偏差,此部分可以通过排流水的方法来解决。此处不过多说明。
-
NOP指令相当于未优化,消除不必要的NOP指令,在很大程度上能提高程序的运算速度避免不必要的时序浪费[8]。其算法优化的沃尔什哈达玛变换中的速度提高,本质上可以看成是一种有效的去延迟间隙。
-
在不过度占用程序空间的情况下,展开循环来提高程序的运算速度是一种非常有效的方法。
-
字长优化是指,在对一段连续地址内存的数据进行运算时,打破常规的按数据类型按址取数的方法,一次性获取需要的地址的尽可能多的数据量的方法。例如short型数据一次获取2个或4个short数据再进行计算,取数只占用一个指令时序。在前面涉及的沃尔什哈达玛变换就十分适用这种方式。
-
这种方法可以运用到去载波的算法中,大大提高了运算速度,在之后的排流水结构中能大大调高程序的运行速度。尤其是在运算过程中,数据的读取及乘法计算占运算时间的大部分时间,所以此部分优化极有意义。
-
流水线是一种在时间上串行,在空间上并行的技术。将整个电路划分为若干个流水线级,流水线每级之间设置寄存器锁存上一级输出的数据;每一级只完成数据处理的一部分;一个时钟周期完成一级数据处理,然后在下一个时钟到来时将处理后的数据传递给下一级;第1组数据进入流水线后,经过1个时钟周期传到第2级,同时第2组数据进入第1级,数据队列依次前进。每组数据都要经过所有的流水级后才能得到最后的计算结果,但是对整个流水而言,每个时钟都能计算出一组结果,所以平均计算一组数据只需要1个时钟周期的时间,这样就大大提高了数据处理的速度。
-
排流水能使关键路径缩短,从而提高时钟速度,或者在同样速度下降低功耗;同时流水的并行处理,多个输入在一个时钟周期内并行地处理,可使有效速度提高与并行级数相当的倍数,同样也可以降低功耗。
-
3 低功耗性能及分析
-
经软件功耗优化改进后,在单片机上进行了多次的时间测试,测试条件为相同工作主频。未改进前信号的去载波、搜索、跟踪时间分别为2.0s、 2.7s、2.0s。优化后去载波、搜索、跟踪时间分别为0.11s、0.14s、0.13s。经过统计最长解码时间提高了近20倍。同时算法对空间的需求从原来的8MB空间的需求降低为313KB的需要,不需要硬件平台提高额外的存储空间。
-
优化后可以对硬件进行无外部存储空间设计,并且降主频正常工作。经测试,原硬件功耗为130mW,优化后约为12mV,大大降低了平台的功耗,相同电池电量的情况下可在海上进行更长时间的工作。
-
图6 低功耗优化测试仿真
-
Fig.6 Low power optimization test simulation
-
4 结束语
-
在水声遥控装置项目中,为了实现接收端的低功耗稳定运行,项目中采用了编译级的机器语言(汇编语言)进行程序的编写。在过程中经历了算法优化设计、源程序优化设计到将源程序转化成所需的机器语言并进行手工流水的过程,极大地提高了程序的运行速度,降低了程序数据空间的占有率,使得在硬件运算芯片上实现算法设计成为可能,无需额外设计外挂存储芯片,大大降低了设备的功耗。同时,在同样的主频下,运行程序的时间提高了近20倍,这种有利的条件可以使算法程序在一个更低的主频条件下进行运算,对设备的低功耗运行也是十分有益的。
-
参考文献
-
[1] 廖海艳,范明明.源码级和算法级的功耗测试与优化[J].单片机与嵌入式系统应用,2010(1):11-14.
-
[2] 李小进.嵌入式系统低功耗优化技术在肺音信号处理中的应用[D].哈尔滨:哈尔滨理工大学,2014.
-
[3] GUNTHEROTH K.Optimized C++:proven techniques for heightened performance[M].California:“O’Reilly Media,Inc.”,2016.
-
[4] 黄晓萍,桑恩方,乔钢.H 序沃尔什快速变换及其在水声扩频通信中的应用[J].声学技术,2007(3):477-482.
-
[5] 邵建博.浅谈C语言编程方法优化与应用[J].计算机光盘软件与应用,2013,16(4):225.
-
[6] KUSSWURM D.Modern X86 assembly language programming[M].Berlin:Springer,2014.
-
[7] 刘朝晖,郑玉墙.用C语言进行DSP软件设计的优化考虑[J].空军雷达学院学报,2001(2):49-52.
-
[8] 王飞,李芳慧,何佩琨.TMS320C6000 系列DSPs原理与应用[M].北京:电子工业出版社,2003.
-
摘要
水声遥控节点的遥控接收装置,需在水中超长时间待机,迫切需要对遥控接收装置进行低功耗设计。讨论了遥控接收装置低功耗设计的实现方法,详细地研究了源程序级、算法级及编译级算法优化方法, 经过优化处理所产生的目标代码占空间更小、执行速度更快,可以实现高效、快速的低功耗信号处理,提高设备的使用寿命、效率和工作时长。
Abstract
The remote receiver of the underwater acoustic remote control node needs to stand by in the water for a long time,so it is urgent to design the remote receiver with low power consumption. In this paper, the implementation method of remote control receiver with low power design is discussed,and the source program level,algorithm-level and compiler-level algorithm optimization methods are studied in detail. The optimized target code occupies a smaller space,works at a faster speed,and can achieve efficient and fast signal processing with low power consumption. Therefore,the service life,working efficiency and hours of the equipment are improved.