第七讲:DSP软件的优化
- 格式:ppt
- 大小:3.84 MB
- 文档页数:89


TMS320C6000系列DSP的软件优化技术
摘要:实现了一种全集成可变带宽中频宽带低通滤波器,讨论分析了跨导放大器-电容(OTA—C)连续时间型滤波器的结构、设计和具体实现,使用外部可编程电路对所设计滤波器带宽进行控制,并利用ADS软件进行电路设计和仿真验证。仿真结果表明,该滤波器带宽的可调范围为1~26 MHz,阻带抑制率大于35 dB,带内波纹小于0.5 dB,采用1.8 V电源,TSMC 0.18μm CMOS工艺库仿真,功耗小于21 mW,频响曲线接近理想状态。关键词:Butte
摘要详细介绍DSP软件优化流程;结合具体实例阐述在C语言中使用内联函数、指夸并行、字装载半字型数据、软件流水等几种代码优化技术,并对各种技术优化后的代码执行效率进行总结分析,对实际系统的开发具有重要意义。
关键词DSP软件优化 软件流水 TMS320C6000
1 DSP系统的软件优化流程
DSP系统的软件优化流程如图l所示。整个工作流程分为3个阶段:
第l阶段,直接根据需要用高级C语言实现DSP功能,测试代码的正确性。然后,移植到C6X平台,利用C6X开发环境Profile测试程序的运行时间。若不满足要求,则进入下一阶段。
第2阶段,利用C6X提供的优化方式和其他各种优化技巧,如使用不同的编译器选项使能软件流水,循环展开,字存取代替半字存取等,优化C语言代码。如果还不能满足要求,则进入第3阶段。
第3阶段,将C语言代码中耗时最长的部分抽取出来,用线性汇编语言重写,用汇编优化器进行优化。使用profile确定这段代码是否需要进一步优化。
2 优化过程
首先,用C语言编写程序,并通过编译验证其正确性。然后,使用内联函数和合适的优化选项进行优化,并通过CCS中的profiler确定是否有函数需要被进一步优化,使用线性汇编语言重写需要被优化的函数。最后,使用汇编优化编程技巧和汇编优化器优化汇编代码。
DSP技术与应用
一:
DSP简介:
DSP信号处理是一门涉及许多科学而又广泛应用与众多领域的新型科学。步入21世纪以后,社会进入数字化时代,而DSP正是这场数字化革命的核心。数字信号处理器的发展无论在其应用的广度方面还是在其深度方面,都以前所未有的速度发展。
数字信号处理器利用计算机或专用设备,以数字形式对信号进行采样、变换、滤波等处理。以得人们需要的信号形式。数字信号处理器作为快速处理与实时处理最重要的载体之一,正日益受到科学技术界与工程界的关注。
DSP的发展大致分为三个阶段:
在数字信号处理技术发展的初期(二十世纪50-60年代),人们只能在微处理器上完成数字信号的处理。直到70年代,有人才提出了DSP的理论和算法基础。一般认为,世界上第一个单片DSP芯片应当是1978年AMI公司发布的S281l。1979年美国Intel公司发布的商用可编程器件2920是DSP芯片的一个重要里程碑。这两种芯片内部都没有现代DSP芯片所必须有的单周期乘法器。1980年,日本NEC公司推出的mPD7720是第一个具有硬件乘法器的商用DSP芯片,从而被认为是第一块单片DSP器件。
随着大规模集成电路技术的发展,1982年美国德州仪器公司推出世界上第一代DSP芯片TMS32010及其系列产品,标志了实时数字信号处理领域的重大突破。Ti公司之后不久相继推出了第二代和第三代DSP芯片。90年代DSP发展最快。Ti公司相继推出第四代、第五代DSP芯片等。随着CMOS技术的进步与发展,日本的Hitachi公司在1982年推出第一个基于CMOS工艺的浮点DSP芯片,1983年日本Fujitsu公司推出的MB8764,其指令周期为120ns,且具有双内部总线,从而使处理吞吐量发生了一个大的飞跃。而第一个高性能浮点DSP芯片应是AT&T公司于1984年推出的DSP32.与其他公司相比,Motorola公司在推出DSP芯片方面相对较晚。1986年,该公司推出了定点处理器MC56001.1990年推出了与IEEE浮点格式兼容的浮点DSP芯片MC96002。美国模拟器件公司(AD)在DSP芯片市场上也占有一定的份额,相继推出了一系列具有自己特点的DSP芯片。自1980年以来,DSP芯片得到了突飞猛进的发展,DSP芯片的应用越来越广泛,并逐渐成为电子产品更新换代的决定因素。从运算速度来看,MAC(一次乘法和一次加法)时间已经从20世纪80年代初的400ns降低到10ns以下,处理能力提高了几十倍。DSP芯片内部关键的乘法器部件从1980年占模片区的40%左右下降到5%以下,片内RAM数量增加一个数量级以上。DSP芯片的引脚数量从1980年的最多64个增加到现在的200个以上,引脚数量的增加,意味着结构灵活性的增加,如外部存储器的扩展和处理器间的通信等
DSP程序优化---ccs优化选项详解
DSP程序优化---ccs优化选项详解
1. –O0
l 简化控制流图
l 分配变量到寄存器
l 进行循环旋转(loop rotation)
l 删除未使用的代码
l 简化表达式和语句
l 内联声明为inline的函数
2. –O2
l 执行局部复制/常量传递
l 删除未使用的赋值语句
l 删除局部共有表达式
3. –O2
l 进行软件流水
l 进行循环优化
l 删除全局共有子表达式
l 删除全局未使用的赋值语句
l 把循环中的对数组的引用转化为递增的指针形式
l 把循环展开
4. –O3
l 删除未使用的所有的函数
l 当函数的返回值没用到时,简化函数的返回形式
l 内联小的函数
l 重新对函数的声明进行排序。这样当优化调用代码时,被调用函数的属性是已知的
l 当所有调用都传递一个相同的参数时,把这个参数直接放到函数体中去,不在通过寄存器/存储器的方式传递这个参数。
l 识别文件级别变量的特征
基于DSP的软件流水优化
摘 要:本文通过研究软件流水相关技术,结合TI DSP C6000系列DSP的硬件特性,探讨了DSP软件流水的相关优化方法。通过性能比较,说明这些方法具有普遍的应用价值。
关键词:DSP 软件流水 循环展开 线性汇编
1. 引言
数字信号处理器DSP(Digital Signal Processing)是一种运算密集型处理器,采用哈佛结构设计,即数据总线和地址总线分开,使程序和数据分别存储在不同的空间,允许取指令和执行指令完全重叠。DSP芯片内部嵌有硬件乘法器、累加器等功能单元,采用流水线结构,具有良好的并行特性。然而,在DSP算法中存在大量的循环操作,要提高系统的并行性,就必须发掘循环中各循环体之间的指令级并行性。目前,在这方面己经提出的技术有循环展开和软件流水等。其中,循环展开是通过多次复制循环体和调整循环中止代码,从而优化ILP和增大指令调度的作用范围。这种方法有两个缺点:(1)指令调度不能越过新的循环体,在产生的代码中就会有过多的注满与清空流水线的部分,效率不高;(2)展开次数不易确定,太少并行度不够,太多会导致代码长度过大。而软件流水则避免了这些问题[1]。本文将通过研究软件流水相关技术,从代码和编译器的角度提出DSP软件流水的一些优化方法。
2. 软件流水技术
软件流水是一种重要的指令调度技术,它通过编排循环指令,重叠地执行不同的循环体来提高ILP[2]。此法主要应用于具有多个功能部件的并行处理器,例如VLIW(Very Long Instruction Word)、超标量等多发射体系结构处理器,以及可以同时执行整数和浮点指令、但不同时对这两种指令初始化的单发射体系结构。
目前,针对软件流水己经提出了一系列的调度算法,主要包括模调度(Modulo
Scheduling)、核心识别(Kernel Recognition)及增强流水线调度(Enhanced Pipeline