微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一种C/C++程序优化技术的实现

一种C/C++程序优化技术的实现

时间:01-05 来源:互联网 点击:

引 言

DSP(digital signal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号。再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。

目前在DSP平台上编程多使用汇编语言与C语言,为了追求代码的高效,过去一般用汇编语言来编制。DSP程序汇编语言简洁高效,能够直接操作DSP的内部寄存器、存储空间、外设,但可读性、可修改性、可移植性较差;随着DSP应用范围不断延伸,应用的日趋复杂,汇编语言程序在可读性、可修改性、可移植性和可重用性的缺点日益突出,软件需求与软件生产力之间的矛盾日益严重。DSP产业在约40年的历程中经历了三个阶段:第一阶段,DSP意味着数字信号处理,并作为一个新的理论体系广为流行。随着这个时代的成熟,DSP进入了发展的第二阶段,在这个阶段,DSP代表数字信号处理器,这些DSP器件使我们生活的许多方面都发生了巨大的变化。接下来又催生了第三阶段,这是一个赋能(enablement)的时期,我们将看到DSP理论和DSP架构都被嵌入到SoC类产品中。” 第一阶段,DSP意味着数字信号处理 。 80年代开始了第二个阶段,DSP从概念走向了产品,TMS32010所实现的出色性能和特性备受业界关注。方进先生在一篇文章中提到,新兴的DSP业务同时也承担着巨大的风险,究竟向哪里拓展是生死攸关的问题。当设计师努力使DSP处理器每MIPS成本降到了适合于商用的低于10美元范围时,DSP在军事、工业和商业应用中不断获得成功。

但由于DSF结构的特殊性,使得该平台上的C语言编译器无法充分发挥DSP器件的性能优势。同样功能的C语言程序,效率往往只有直接书写的汇编程序的几分之一甚至几十分之一。

l TMS320C6000处理器介绍

TMS320C6000是TMS320系列产品中的新一代高性能DSP芯片,共分为两大系列。其中定点系列为TMS320C62xx和TMS320C64xx;浮点系列为TMS320C67xx。由于TMS320C6000的开发主要面向数据密集型算法,它有着丰富的内部资源和强大的运算能力。

C6000系列CPU中的8个功能单元可以并行操作,并且其中两个功能单元为硬件乘法运算单元,大大地提高了乘法速度。DSP采用具有独立程序总线和数据总线的哈佛总线结构,仅片内程序总线宽度就可达到256位;片内两套数据总线的宽度分别为32位;此外,DSP还有一套32位DMA专用总线用于传输。灵活的总线结构使得数据瓶颈对系统性能的限制大大缓解。C6000的通用寄存器组能支持32位和40位定点数据操作,另外C67xx和C64xx还分别支持64位双精度数据和64位双字定点数据操作。微处理器是低成本的,主要执行智能定向控制任务的通用处理器能很好执行智能控制任务,但是数字信号处理功能很差。而DSP的功能正好与之相反。在许多应用中均需要同时具有智能控制和数字信号处理两种功能,如数字蜂窝电话就需要监测和声音处理功能。因此,把DSP和微处理器结合起来,用单一芯片的处理器实现这两种功能,将加速个人通信机、智能电话、无线网络产品的开发,同时简化设计,减小PCB体积,降低功耗和整个系统的成本。

2 C6000软件开发流程

图1为C6000的软件开发流程图。图中阴影部分是开发C代码的常规流程,其他部分用于辅助和加速开发讨程。

C/C++源文件首先经过C/C++编译器(C/C++cornpiler)转换为C6000汇编源代码。编译器、优化器(optimizer)和交叠工具是C/C++编译器的组成部分。编译器使用户能一步完成编译、汇编和连接;优化器调整合修改代码以提高C程序的效率;交叠工具把C/C++语句和对应的汇编语句交叠列出。

汇编源代码再经过汇编器(Assembier)翻译为机器语言目标文件。机器语言是基于通用目标文件格式(CommON Object File Format,COFF)的。

连接器(Linker)连接目标文件,生成一个可执行文件。它要完成地址的重分配(Relocation)和解析外部引用(Resolve External References)。

得到可执行文件之后就可以进行调试。可用软件仿真器(Simulator)在PC机上对指令和运行时间进行精确仿真;用XDS硬件仿真器(Emulator)在目标板上进行调试。

调试通过后即可下载到目标板进行独立运行。

3 程序优化流程及方法

3.1 程序优化阶段

由于DSP应用的复杂度,在用C语言进行DSP软件开发时,一般先在基于通用微处理器的PC机或工

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top