首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
数字电路
» 独立于硬件技术的XC166单片机的DSP程序优化方法
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
独立于硬件技术的XC166单片机的DSP程序优化方法
发短消息
加为好友
520503
当前离线
UID
872339
帖子
13270
精华
0
积分
6635
阅读权限
90
在线时间
361 小时
注册时间
2012-3-2
最后登录
2016-3-10
论坛元老
UID
872339
1
#
打印
字体大小:
t
T
520503
发表于 2014-1-18 14:35
|
只看该作者
独立于硬件技术的XC166单片机的DSP程序优化方法
单片机
,
流水线
,
程序
,
技术
,
硬件
关键字:
MAC单元
数据存储器
DPRAM
XC166
单片机
的指令流水线存在着不可避免的阻塞现象,MAC单元指令也一样。尽管在硬件设计时已经采用了专用模块来减少阻塞,但有些阻塞是不可避免的,从程序优化的角度来说,可以充分利用指令流水线阻塞现象,通过重排指令流水线上的指令,消除阻塞,以使得程序的运行时间缩短,从而达到优化的目的。
通常
DSP
优化方法可以分为两类:一类是与芯片相关的,另一类是与芯片无关的。与芯片无关的优化方法独立于单片机硬件,适用于所有单片机及DSP
处理器
,下面根据使用XC166单片机的经验总结一些优化DSP程序的方法。
1 通用优化方法
1.1 数据组处理
数据组处理的基本思想是通过成组的处理数据,以节约每次调用处理子程序所需的附加指令。数据组处理可以在C语言或汇编语言程序中实现。一般而言,对于开发DSP程序,最常用的程序语言为C和汇编。下面分别介绍如何在C和汇编程序中使用数据组处理优化方法。
(1)C程序
在C环境中开发DSP程序,通常算法本身由汇编编写,以便优化实现。C主程序通过调用汇编实现的核心处理子程序来完成对数据的处理。核心处理子程序有两种实现方法,一种是数组处理,另一种是单值处理,假设单值处理子程序的核心部分与数组处理子程序的核心部分所需机器周期相同,并且调用子程序的前期处理需M个机器周期,后期处理需要N个机器周期,如果子程序被调用K次,那么理想情况下,数据组处理可以节约(K-1)(M+N)个机器周期,如图1所示。
(2)汇编程序
在汇编程序中实现数据组处理有多种方法,比如数组操作,数组读入/写出等。
1、数组操作。数组操作是将多个不同的短操作数装入一个长位数的寄存器,然后进行运算操作。比如,1个16位的寄存器可以装入2个8位的来自A/D转换器的数据。下面举例说明数据组处理在汇编程序中的应用。
2、数组读入写出。这种方法是将多个短操作数合并为一个长操作数后进行读入/写出操作,如上面例子中的输入/输出部分。
1.2
数据存储器
交织
数据存储器交织的目的是通过重新排列数据在存储器中的位置,以使得程序读写数据的时间最短,比如有2个8位的复数x和y,一般情况下,复数将按下列顺序存入内存:real(x),image(x),real(y),image(y)。但如果想使得读取复数的实部更容易,可以把数据重新排列如下:real(x),real(y),image(x),image(y),如图2所示。
1.3 循环展开
循环展开是一种非常传统的程序优化方法,可以用于所有程序优化中,循环展开的目的是通过重复循环中的程序,减少循环次数,从而减少循环判断指令的执行次数,以此来降低程序执行所需的机器周期,下面举一个例子来说明循环展开在XC164CS单片机中的应用。
图3为循环展开程序流程图。
1.4 指令流水线重排
指令流水线重排的意思是通过软件程序中的指令重排来改变指令流水线,以此来排除由于硬件引起的指令堵塞,从而加快程序的运行时间。这种优化操作通常用在汇编程序中,指令流水线重排是一个一般的优化原理,把这个原理用于不同类型的单片机可以导出不同的与单片机硬件相关的优化方法。下面介绍的基于XC166单片机的优化方法主要是应用这个优化原理得到的。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议