随着数字信号处理器 (DSP) 的应用范围不断扩大,对面向组件的软件模块的需求不断增长。第三方提供的现成算法在基本层面上能够响应上述需求。第三方算法使系统开放商不必再费力重新设计主要的软件功能,从而能够更快、更廉价地将系统与更多功能集成。因此,第三方算法在 DSP 系统开发中发挥着非常重要的作用。
为了使组件软件方法顺利工作,必须具备保证组件代码互用性、一致性和便携性的标准。DSP厂商认识到了上述需求,建立了管理不同算法与应用之间接口的算法标准。上述标准不是为了保证高效实施。针对代码大小、特性及性能而选择最佳算法的工作是由系统集成商进行的。而标准所作的,则是提供确保算法之间相互协作的一套规则,使他们更轻松地进行评估,然后在系统环境中进行集成。
算法标准的起源
20世纪90年代中期,算法标准的需求逐渐显现出来,此时更为强大的 DSP 出现了,其可支持一个算法的多通道,或者同一 DSP 上的多个算法。尽管早期的 DSP 可能仅用作语音编码器等,但像来自 TI TMS320C5000 平台中 DSP 则能够处理蜂窝电话所需的整个数字处理链,包括声码、音频校正、回波消除等。诸如来自 TMS320C6000平台的其他 DSP,则能够开发 DSL 线卡、视频服务器及其他在单个设备上要求具有极高多通道性能的系统。
利用现有更高层次的性能,许多新兴信号处理标准不断涌现,包括 JPEG、MPEG、电视会议、无线电话以及调制解调器与传真改进等。开发商开始创建交互改变任务的动态系统,而不是一般基于 DSP 的具有固定功能的静态系统。而且系统代码规模也开始剧增,常常为了适应新型多功能系统的复杂性而大幅度增加。
DSP 系统开发商始终缺少经验丰富且掌握深入信号处理知识的 DSP 程序员。目前,这些开发商们开始集成更为复杂的系统,一些刚刚进入 DSP 领域的其他开发商则已开始进行最初的 DSP 设计。不断增长的业界系统集成商寻找各种方法来将日益复杂化的设备整合起来,而不必从头设计所有软件。幸运的是,一些具备业经验证软件技术的开发商认识到新的市场商机,并开始作为第三方出售其知识产权,包括算法。系统集成商将从第三方购买"黑盒子"目标代码,并将其加载至系统中,以节省宝贵的开发时间。至少这就是假设的工作流程了。
然而,在实践中事情并非如此直接。第三方开发商常常假定DSP用法,以便使其算法尽可能精简,并获得最佳性能效果。因此,一个算法可能需要占用所有内存,在很长的时间中禁用出现中断,并完全控制核心。此外,系统集成商可能无法了解开发商的事先假定是什么,因为不存在统一的方法指定算法的资源要求与性能效果。
显然,如果有了上述假定的话,那么两种或多种算法就不能在多功能系统中和平共处。这样的问题在利用源代码进行再设计时可能相当困难,但力图集成目标代码的系统开发商对改变算法无能为力。而且,如果算法来自不同的第三方(事实常常如此),集成商将面临不兼容性难题以及不可避免的相互指摘。
到20世纪90年代末为止,很明显如果不就算法建立行为规则,那么 DSP 开发将停滞不前。因此,DSP 厂商开始发布这种规则,将其编写为第三方软件开发商必须遵循的标准代码,以便保证算法的兼容性。尽管这些标准是具有所有权的,但它们都具有相同的目标,并且许多规则都是一样的。由于某些规则反映了硬件实施,并且仅针对某些个体厂商,因此对所有权而不是业界标准进行保留。此外,当标准出现时,厂商为了跟上 DSP 的开发步伐被迫响应当时的需求,而不是将问题交给漫长的业界标准化进程来解决。
示范标准
最初建立的标准之一是 TI 的 TMS320 DSP Algorithm Standard?,也称作XDAIS。TI 推出了该标准作为其 eXpressDSP? 软件战略的基本元素,并同时推出了实施内核、集成开发环境 (IDE) 及第三方网络,这表明算法标准化将在 DSP 软件开发中发挥关键性作用。TMS320 Algorithm Standard 是各种 DSP 算法标准的一个示范,事实上它成了随后推出的某些标准的一个模型。
XDAIS 是在 TMS320 DSP 底层软件架构基础之上建立起来的。图1显示了 DSP 系统的组织方式,这样简单数据传感器算法从 I/O 功能以及底层核心运行时环境中分离出来。图2显示了 XpressDSP 环境中算法正常运行的必备系列事件。 <!-- 图1. XDAIS 与 DSP 系统 图2. XDAIS 算法事件 -->
XDAIS 算法规则
XDAIS 规则分外四组,具备基本的校验机制以保证符合标准。
常识性编程规则。本组规则的作用在于加强算法的便携性、可预测性及易用性。由于大多数 DSP 系统运行于 C 环境中,因此顶层的算法必须能在C中调用。算法不得干扰应用程序的运行时状态,并且代码必须在抢占式环境中进行重入以支持多个通道。必须对多实例共享的存储器与全局变量进行保护。所有代码引用必须完全可再定位,不得采用硬编码存储器寻址,否则将干扰其他代码。由于资源可能因系统而异,因此算法不得直接访问外设。
取消任意选择。如果需要以单一强制方法进行某项工作的话,该标准指定了应在各种不同方法中采用何种方法(就好像交通法规指定了在路上应左行还是右行)。为避免命名冲突,信号命名必须遵循 DSP/BIOS? 规则,这是 TMS320 DSP 采用的实时内核。为避免将代码移植到不同操作系统环境中时发生冲突,算法必须封装到遵循统一命名规则的档案文件中。必须使外部引用符合来源,如C运行支持库函数或其他符合 eXpressDSP 的模块。算法实例必须根据指定的程序调用并删除,并且它们必须能够独立地进行再定位。对 C6000? 平台而言,算法必须至少支持由小到大的字节顺序,或最好两个都支持,以便为系统开发商提供选择。
资源管理。由于算法一般比较贪婪,并且必须使其可以共享,因此本组位于该标准的核心。现在每个算法都有了强制的存储器管理界面,而且所有算法都必须在设计时一次协调或在运行时交互协调使用存储器。本规则适用于外部及内部存储器,以及 DMA 通道等外设。本应用同控制框架一样收集所有存储器请求,随后向算法分配存储器。算法可能不能获得其全部请求,但应用框架能够在竞争请求间进行很好的判断,并优化地划分系统资源。
统一规范。本组规则有助于系统集成商衡量算法并评估其在系统中的兼容性。所有的兼容性算法必须表现最坏情况的中断传输时间、典型与最坏情况的执行,以及程序、堆阵、静态和堆栈存储器要求等方面的特点。例如,算法供应商可能不再隐瞒会让算法独占内核几秒钟的中断传输时间。现在,必须根据已确定的方式在算法技术描述中指定并包含传输时间要求。
校验与 eXpressDSP 一致性。算法开发商不能简单地说它满足了 TMS320 Algorithm Standard 的要求。开发商必须通过 TI 的 XDAIS 一致性测试工具加以证明,该工具可校验代码是否符合规则。此外,第三方必须书面同意在开发算法时遵循了标准规定。当满足了这些要求时,第三方可以声明其算法符合 eXpressDSP,并在广告宣传中使用图3所示的标志。一致性工具可适用于第三方及 DSP 客户,以便使他们在开发自身软件时对这些软件进行检查。系统集成商还可以利用该工具保证他们购买的代码在获得eXpressDSP一致性称号后没有经过修改。 <!-- 图3. eXpressDSP 一致性标志 -->
XDAIS 的发展
XDAIS 在5年前推出时,其规则还不到30条。现在它已有了46条规则,这反映出对标准的需求不断发展,但其发展是以认真、受控的方式进行的。新规则的添加(以及一些改动)出于以下几点原因:
新硬件功能。添加某些规则是为了涵盖硅技术的开发。例如,随着将高级 DMA 功能集成到芯片中,XDAIS 也添加了新的规则以涵盖 DMA 通道的分配。未来,XDAIS还可能包括有关硬件加速器作为共享资源使用的规则。
性能优化。为优化性能,DMA规则已进行了修订,在此,这些规则也展示了XDAIS 标准中的另一个变化领域。由于早期规则解决了重大冲突,因此一些较新的指导方针倾向于帮助开发商更好地发挥系统优势。
新应用领域。XDAIS的最初指导方针主要是为了处理带有数据流应用的单功能DSP,如语音及音视频等。但今天的多功能系统常常必须处理突发数据,如 IP 数据包或更复杂的调制解调器标准中类似框架的编码。这些应用的核心和系统要求有时与流应用的不同,而XDAIS 规则必须包括两种类型的数据吞吐量。
有一个没有改变的特性,即需要将开销保持在较低水平。经验显示,DSP 客户与第三方将接受不超过一至两个百分点的性能及存储器干扰。这对于通用微处理器而言是一个较小的开销百分比,该微处理器可通过中断来驱动控制任务,并不十分受限于内存的高效利用。但是,通常每个性能MIP对DSP都是非常关键的,因此 TI 已努力将 XDAIS 开销保持在限定范围内。
算法标准的接受
尽管一直就软件规则向第三方进行咨询,但有些第三方最初对他们能否从算法标准中获益是抱有怀疑态度的。许多第三方将算法的开发看作完全是其自身的业务,不欢迎 DSP 厂商参与,认为这是一种干扰。此外,为了使算法符合新的标准,一些重复工作是不可避免的,而第三方则反对承担他们认为是不必要负担的工作。而且,对与标准相关的开销惩罚也有反对的声音。
与第三方形成对比的是,DSP 系统集成商几乎立即对标准表示欢迎。一些较大型DSP 开发商已经在努力建立其自身规则,而 DSP 标准的到来节省了他们的工作。系统集成商还认识到,与算法标准相关的少量开销能帮助他们避免大量时间耗费与麻烦,这种节约的价值大大超过了他们所必须接受的存储器与性能权衡。
一旦他们熟悉了这些标准,DSP 系统集成商就开始要求算法一致性,这样即便是最不情愿的第三方也不得不遵照行事。为了应付对额外开发工作的反对意见,出现了帮助第三方开发一致性算法的工具,图4所示的 Hyperception Component Wizard 便是其中一个实例,它可帮助创建 XDAIS 算法。 <!-- 图4. Hyperception Component Wizard -->
今天,标准已得到普遍接受,即便最不情愿的算法开发商也认同标准化使得出售软件的商机大大增加。根据标准进行设计还意味着能够最小化支持需求,从而节省第三方的开支。TMS320 Algorithm Standard 就是体现标准有多么成功的一个代表:目前,符合 eXpressDSP 算法的第三方开发商达110个,且数量还在不断增加。其他 DSP 厂商也认识到算法标准的需求,并为其各自的平台和第三方算法提供了相似的产品。由于标准涵盖了可互操作性编程的基本问题,因此其规则在许多方面都与最初推出的标准 TMS320 Algorithm Standard 相似。
新兴产业
事实上,DSP 算法标准带来了一种前所未有的国际产业。今天,某个地区的系统集成商可以通过网站从另一个地区的第三方处购买 DSP 算法,只要该算法通过认证,符合算法标准,那么该系统开发商就知道此代码在应用框架中可正常发挥作用。对 DSP 系统集成商而言,一致性算法已简化了对第三方目标代码进行评估并集成的工作,从而简化了开发进程并缩短了产品上市时间 。
由于我们最终控制了算法,现在业界中存在的问题就在于对其他软件组件(如库、驱动程序、内核以及通讯栈等)进行标准化会带来什么优势。DSP 厂商甚至在改进现有算法标准的同时,就已经在考虑有关对上述组件的标准化工作进行扩展的问题了。
随着 DSP 产业继续围绕着组件软件模型进行开发,算法标准的价值正变得越来越明显。标准提供了一系列规则,根据设计,实际上这些规则能够保证组件在任何应用中与来自不同厂商的算法实现进行互操作。因此,代码的便携性与可重复使用性得到加强,而算法的衡量与评估更为直接,并且算法也更易于集成到系统之中。总体系统开发变得更快、更灵活,从而为市场中的最终用户带来了更健硕、更廉价的产品。