会员登录     收藏本页
 
企业首页  |  企业文化  |  产品列表  |  项目合作  |  技术培训  |   好书推荐  |  资源下载  |  技术支持  |  联系我们
文章列表

基于DSP的动态会议信号产生器的实现

DSP:高性能32位内核与基于微控制器存储架构的集成
DSP:用C语言开发DSP嵌入式系统
手机语音识别应用中DSP的选择策略
DSP芯片在实时图像处理系统中的应用
DSP系统设计100问
DSP芯片介绍及其选型
DSP优化技术
TMS320C2XX开发设计中应注意的问题
语音压缩芯片CT8022的使用方法

DSP优化技术

介绍 

    数字信号处理 (DSP) 是处理信号和数据的专用方法,其目的在于加强并修改

这些信号。数字信号处理也用于分析信号以确定特定的信息内容。DSP主要用于处理

真实世界的信号。这些信号可由数字序列进行转化和表示。我们后来使用数学方法

处理信号,从信号中提取特定信息或以某种方式转化信号。 

    DSP在实时嵌入式系统中非常普遍,在这种系统中,计算的及时性与准确性

同样重要。DSP 在这些环境中非常普遍,因为其根据设计,能够非常迅速地执行常

见的信号处理操作。DSP 的可编程性允许应用随着时间的推移而不断变化发展,从

而为应用供应商提供了众多优势。进行 DSP 编程需要熟悉应用、DSP 硬件架构以及

用于编写高效实时软件、并能满足系统最终期限的代码生成工具。 

    本文是两篇文章中的第一篇,将探讨 DSP 某些重要的软件与系统优化技术,

并将解释采用强大处理器开发高效嵌入式应用的某些指导原则。 

    在开始任何优化工作之前,您必须了解自己的方向。从性能角度讲,所有

软件都是不同的!您必须首先理解瓶颈在哪里。一旦您已经对应用进行了描述,那

么接下来就可以开始调整代码。描述应用是指衡量代码每部分所需的时间(或所用

的存储器空间或功耗)。软件的某些部分仅执行一次(如初始化)或有限的次数。

花很多时间优化这部分代码是不明智的,因为这样做所得的总体节约是相对有限的

。很可能的情况是,软件的某些部分会执行许多次,尽管代码本身很短,但执行代

码的事实常常说明代码的整体周期需时不菲。如果您能够从这部分代码中节约哪怕

一两个周期,那么所得到的节约也会相当显著。在调整并优化进程时,这就是您应

当花时间开展工作的地方。 

    存储器的依赖性 

    处理器在存储器中存储指令和数据。尽管人们已经创建了许多具有创新性

的方法以从存储器中获取指令和数据,但访问指令和数据时总会有性能损失。

这就是纯粹的开销了。只要能够减少等待指令或数据存取的时间,不管怎么样

,都能够改善应用的整体性能。举例而言,硬件高速缓冲系统将会尽可能多的

指令靠近 CPU,从而实现快速存取,通常只需一个周期即可,业经验证这能够

改善整体性能。DSP 拥有片上存储器,其可存储数据与指令。但数据和指令不

能自动放置于片上存储器中。编程员必须对此进行管理,只要管理有效,

DSP 就可以利用片上存储器显著提高性能。 

    嵌入式系统存储器等级中有若干层次。第一层是芯片寄存器。这部分

存储器用于保存临时和中间数据。编译器在调度指令时使用寄存器。该存

储器是速度最快、价格最昂贵的(器件上的寄存器越多,器件体积就越大,

这意味着硅晶片上的器件减少,也就是说用更多的硅芯片获得相同数量的

器件,您应该明白我的意思吧)。存储器的下一层是高速缓冲系统。它也

是即快速又昂贵,用于将指令和数据在使用指令和/或数据前移至靠近 CPU

 处。存储器的再下一层是"外部"或"片外"存储器。该存储器会比其他存

储器类型的速度慢,而且价格也较便宜。这一般是不使用(存储期限较长)

数据和指令时保存的地方。从该存储器存取信息包括更多的信号交换和控制

,因此也需要更多时间。实时嵌入式设计人员的主要目的是使您将用到的任

何东西尽可能靠近 CPU。这意味着需要从外部存储器获取信息,使其进入速

度更快的存储器,并使用诸如直接存储器存取(DMA)等技术,以及编译或架

构技术。 

    为了增强采用流水线操作概念的处理器性能,我们使用了硬件架构技术。

流水线处理器的原则与汽车装配线没什么两样。每辆汽车都通过装配线被一步

步组装起来。许多辆车同时在装配线上,每辆车位于装配过程的不同环节。

在装配线末端会出现一辆新车,紧接着还有另一辆新车跟进,以此类推。

人们早就发现,在前一辆车完成之前即开始下一辆新车的装配工作,这种

做法的成本效益要高得多。在流水线处理器中,情况也是如此。流水线处理

器可在前一项任务完成前开始新任务。完成率就是传入新指令的速率。

DSP优化技术(二)

为了进一步改善性能,我们可以使用多个流水线。该方法称作超标量,其进

一步利用了平行的概念。如今某些高性能数字信号处理器(如 Intel i860)

就有一个超标量设计。 

    具备多个独立执行单元的 DSP 利用平行同时执行多个独立指令,这将为

性能改善提供立竿见影的效果。关键在于找到彼此独立的"n"个不同指令。有时,

我们通过硬件完成此工作,有时则通过软件来完成(编译)。超长指令字(VLIW)

处理器(如 TI 的 C6200 DSP 系列产品)使用编译技术可以在 8 个独立的

处理器执行单元上调度最多 8 个彼此独立的指令。

    较之于流水线处理器而言,超标量架构可提供更多的并行处理能力。但是,

如果算法或函数不能利用此并行功能的话,那么多余的管道将得不到使用,就会

降低能够实现的并行量。编写用作快速运行于流水线处理器上的算法不一定能在

超标量处理器上同样高效运行。举例而言,我们可以看看如下所示的算法。该算

法的编写利用了流水线处理器的优势。这是在串行处理器上计算多项式的常见

方法,因为它不必再计算 p**8, p**7 等。这节约了周期和存储中间值的寄存器。 

    但就超标量器件而言,这并不是计算表达式的最佳方法。算法中的括号限制

了编译器顺序计算表达式的功能。这也使得并行功能无法发挥。如果我们将此表

达式分解为几个独立的表达式,那么编译器就可以在超标量器件的并行管道上

以任何方便的顺序来安排这些独立的表达式。这样进行的计算利用了较少的指令

周期,而采用了更多的寄存器。 

上述实例说明了为什么编程人员必须了解器件架构、编译器以及算法,从而确定

执行任何特定函数的最快方法。我们将讨论利用上述高性能设备加速函数计算的

其他方法。 

rp = (((((((R8*p + R7) * p + R6) * p + R5) * p + R4) * p + R3)

 * p + R2) * p + R1) * p

p2 = p * p

p3 = p * p * p

.

p8 = p * p * p * p * p * p * p * p

---------------------------------------------

R1p1 = R1 * p

R2p2 = R2 * p2

.

R8p8 = R8 * p8

----------------------------------------------

rp = 0.0F

rp += R1p1

.

rp += R8p8

                              

直接存储器存取 

    直接存储器存取 (DMA)是无 CPU 介入情况下访问存储器的一种方式。外

设用于向内存直接写入并导出数据,这就减轻了 CPU 的负担。DMA 就是另一

种类型的CPU,其唯一作用就是快速移动数据,其优势则在于 CPU 可以向 DMA

 发出一些指令移动数据,随后就可以再进行原本的工作。DMA 在 CPU 运行的

同时移动数据。这实际就是另一种利用器件内置并行功能的方法。DMA 在复制

大量数据时非常有用。较小的数据块无法受益,因为还要考虑到 DMA 的设置

和开销时间,反倒不如直接使用 CPU 合适。但如果明智使用的话,DMA 可以

节约大量时间。 

    由于访问外部存储器会带来很大的性能损失,且占用 CPU 的代价不菲,

因此只要有可能,就应采用 DMA。最好是在实际需要数据之前就启动 DMA 操作。

这让CPU 同时也有工作可做,且不用强制应用等待数据的移动。随后,当确实

需要数据时,数据就已经就位了。应用应当进行检查,以确认操作成功,这将

要求检查寄存器。如果操作提前完成,这将对寄存器进行一次查询,但不会

产生大量工作,占用宝贵的处理时间。 

    DMA 的常见用法是将数据移入或移出芯片。CPU 访问片上存储器的速度

大大快于其访问片外或外部存储器的速度。将尽可能多的数据放于芯片上是

提高性能的最佳途径。如果被处理的数据不能全部同时放于芯片上(如大型

阵列),那么数据可使用 DMA 成块地移入或移出芯片。所有数据传输都可

在后台进行,同时 CPU 对数据进行实际处理。片上存储器的智能管理和布

局可以减少数据必须移入、移出存储器的次数。就如何使用片上存储器开

发出智能计划,在这项工作上投入时间和精力是值得的。总体而言,规则

就是使用 DMA 将数据移入、移出片上存储器并在芯片上生成结果。由于

成本和空间原因,大多数 DSP 不具备很多芯片上存储器。这要求编程人员

协调算法,以高效利用现有的片上存储器。 

    为使用 DMA 测量代码确实会产生一些性能损失。根据应用使用 DMA

 的多少,代码大小会上升。如果全面启用 DMA,我们曾遇到过代码大小

增长 50% 的情况。使用 DMA 还增加了复杂性和应用的同步化。只有在要求

高吞吐量的情况下才应使用 DMA。但是,片上存储器的智能布局和使用以

及明智地使用 DMA 能够消除大多数访问片外存储器所带来的性能损失。

 

 

 

三恒星首页关于三恒星联系我们
版权所有:北京三恒星科技有限公司
联系电话 010-62273269 62124910 公司传真:010-62124910
京ICP备09030370号