查看: 2677|回复: 0

[转帖]DSP应用优化技术(二)

[复制链接]

该用户从未签到

发表于 2007-2-4 21:05:30 | 显示全部楼层 |阅读模式
分享到:
DSP 应用优化技术――第二部分
作者:Rob Oshana roshana@ti.com

简介

数字信号处理 (DSP) 是一种采用增强功能处理信号与数据,以及修改这些信号的方法。数
字信号处理技术还可用于分析信号,以确定特定的信息内容。DSP
主要涉及真实信号的处理。这些信号根据序号进行转换与表示。然后采用数学方法处理这些
信号,以便从信号提取特定信息或者以某种方式转换信号。

DSP 一般驻留在实时嵌入式系统,其中计算的及时性与其正确性同等重要。DSP 在这些环境
中很普通,因为对它们经过精心设计后,可非常迅速地执行常见的信号处理运算。DSP 的可
编程性使应用能够随时间而改变和演进,从而为应用供应商提供众多优势。对 DSP
编程需要了解应用、DSP 硬件架构、以及用于生成可满足系统紧迫期限要求的高效实时软件
代码生成工具。

本文是系列文章的第二部分,总结在实践中从高性能 DSP 获得数量级速度提高所采用的某
些技术。

优化的首要原则----切勿盲动!

在开始进行任何优化之前,您必须了解从何处着手。就性能方面来看,并非所有软件生来相
同!您必须首先了解瓶颈在何处。一旦分析了应用,就可以开始调整代码。应用程序分析意
味着权衡需在每部分代码所花费的时间(或者所占用的内存、所消耗的功率)。软件的某些
部分可能只执行
一次(初始化)或者只执行少数几次。如果费尽心思优化此部分代码并非明智之举,因为获
得的整体节省效果会是微乎其微。更可能的情况是,会有几部分软件执行很多次,尽管代码
自身可能会很短,但代码执行频繁意味着花费在该代码的总循环会很多。即使如果您在这些
代码中可以节省
一、两个循环,所获得的节省也会很可观。这就是在调整和优化过程中您应该多费些时间的
地方。

并行是关键所在

在编程超量标及 VLIM 期间时所要遵循的标准原则是"保持流水线充满"(Keep the
pipelines full!)。充满的流水线意味着有效的代码。为了确定流水线充满的程度,您需
要费些时间检查汇编程序生成的汇编语言代码。通常可以根据代码中NOP 的冗余性检查低效
的代码。

为了证明在基于 VLIW 的超量标机器中并行性的优势,让我们首先从图 1 所示的简单循环
程序入手。如果我们准备编写此程序的串行汇编语言实施,其代码会与图 2 中的类似。此
循环采用超量标机器的两个可用侧之一。通过指令与 NOP 计数,它需要 26
个循环来执行循环的每个迭代。但是,我们可以做得更好。

在这个例子中,需要注意两件事情。许多执行单元并未使用,而是处于空闲状态。这是对处
理器硬件的浪费。其次,在汇编程序的此部分存在众多延迟间隙(准确说是 20 个),在其
中 CPU 需要停滞下来等待加载或保存数据。在 CPU
停滞时,不会进行任何操作。在试图处理大量数据时,这对处理器是很糟糕的事情。

有众多方法可以在等待数据期间保持 CPU 运转。我们可以执行不依赖正在等待的数据的其
他运算。我们还可以使用超量标结构的两侧来帮助加载和保存其他数据值。图 3 中的代码
就是一种对串行版本的改进。我们已经将 NOP 的数量从 20 个降至了 5
个。我们还可以并行执行某些步骤。第 4 行和第 5 行同时执行向器件的两个单元(D1 和
D2)的加载。此代码还执行循环前的分支运算,然后充分利用与该运算相关的延迟来完成当
前循环的运算。请注意,在该代码中存在新的一列,它可指定您希望将哪次执行单元用于特
定运算。这种指定执行单元的灵活性使您能够更好地对运算进行控制。

1   void example1(float *out, float *input1, float *input2)
2   {
3     int i;
4
5     for(i = 0; i 
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-11-24 21:18 , Processed in 0.114680 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.