独立于硬件技术的XC166单片机的DSP程序优化方法

发布者:bluepion最新更新时间:2012-02-14 来源: 21IC关键字:硬件技术  XC166单片机  DSP  程序优化 手机看文章 扫描二维码
随时随地手机看文章

  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单片机中的应用。 

[page]

  1.4 指令流水线重排

  指令流水线重排的意思是通过软件程序中的指令重排来改变指令流水线,以此来排除由于硬件引起的指令堵塞,从而加快程序的运行时间。这种优化操作通常用在汇编程序中,指令流水线重排是一个一般的优化原理,把这个原理用于不同类型的单片机可以导出不同的与单片机硬件相关的优化方法。下面介绍的基于XC166单片机的优化方法主要是应用这个优化原理得到的。

  2 与芯片相关的优化技术

  2.1 XC166指令流水线

  XC166单片机指令流水线共有7级,前两级为取指令流水线,后5级为执行流水线,所有指令都必须经过5级执行流水线的每一级。

  第1级--指令预取。这一级根据预测顺序,把指令从程序管理单元(PMU)取出,取出的指令在跳转检测单元进行前期处理,以检测是否有跳转,预测逻辑决定是否接收转移。

  第2级--取指令。根据转移预测规则计算出下一条被取指令的指针。对于零机器周期转移,转移合并单元先预处理,并将检测到的转移与正在执行的指令结合起来。预取出的指令存在FIFO缓存器中,同时,下一条要执行的指令输出FIFO缓存器,进入执行流水线。

  第3级--译码。指令被译码,如需要,在间接寻址模式中,寄存器文件将被访问,以读取通用寄存器GPR。

  第4级--寻址。计算所有操作数地址,对于所有隐含访问系统堆栈的指令,堆栈指针递减或增加。

  第5级--存储。所有需要的操作数被取出。

  第6级--执行。使用已取出的操作数进行MAC单元操作。对于非MAC单元指令,在这一级中,指令将由算术逻辑单元(ALU)执行。条件标志被更新,执行所有直接对CPU特殊功能寄存器CPU_SFRs进行写操作的指令,在间接寻址时,作为地址指针的GPRs自动递减或增加。

  第7级--写回。所有外部操作数以及剩余的,在内部DPRAM空间内的操作器被写回。定位在内部SRAM中的操作数进入写回缓冲区。

  下面给出一个具体例子: 

  上面程序的指令流水线如表1所列,(Tn表示机器周期)

  2.2 数据相关性排除

  在XC166的CPU中,由于指令流水线的设计要求,在使用通用寄存器(GPRs)的指令之间存在一些数据相互依赖的情况,尽管XC166单片机已经使用了专用硬件来检测及解决数据相关性,但仍然有一些不可避免的数据相关性。在编程时,可以充分利用数据相关性来达到程序优化的目的,比如,在用GPR作为间接寻址指针时,如果PGR中的地址值被改变,间接寻址操作必须等待2个机器指令周期后,才能使用GPR作为地址指针寻址。在这种情况下,可以在这2个等待机器周期内插入2条其他单机器周期指令,充分利用这2个周期的等待时间以便程序更优化。

  下面举一个例子: 

  另外一种数据相关性发生在间接寻址访问内存时,XC166单片机中的地址产生单元使用推测原理,在地址译码前,数据的读取路经将根据历史记录表中选出;在历史记录表中,每个GPR都有一个入口。这些入口记录了用相应GPR所访问的内存空间情况。如果这种预测发生错误,读取操作必须重新开始。

  因此,如果用GPR作为间接寻址,GPR最好能指向相同内存空间。如果更新后的GPR指向不同内存空间,下一个操作将出现访问错误,读操作必须重复,这就产生了指令流水线堵塞。例如:  

[page]

  2.3 内存带宽冲突排除

  如果在流水线上的指令在同一时间访问同一内存,就会发生内存带宽冲突,MAC单元的CoXXX指令是特别为实现DSP设计的。为了避免在DPRAM中发生带宽冲突,CoXXX指令的其中一个操作数必须放在SRAM中,以保证在单个机器周期内执行MAC单元指令。例如: 

  2.4 指令重排

  在用MAC单元指令编程时,经常要改变MAC单元的特殊功能寄存器,比如IDX0,IDX1、QX0、QX1、QR0以及QR1等,在XC166单片机中,有一些指令将会阻塞在译码阶段,如果这些指令正好在一条修改特殊功能寄存器(SFR)指令之后执行,这种阻塞将引起3个机器周期的延时。

  这些指令包括:

  ◇使用长地址模式的指令;

  ◇使用间接寻址的指令,除JMPS和CALLI外;

  ◇所有MAC单元指令(CoXXX指令)。

  为了避免指令阻塞,在使用上述指令时,如有阻塞情况发生,应该重新重排指令,以消除延时,例如: 

  3 结论

  用于英飞凌XC166单片机的DSP优化技术分为两类:与硬件相关的优化技术和独立于硬件的优化技术。独立于硬件的优化技术也可以用于其他的单片机或专用数字信号处理器。

关键字:硬件技术  XC166单片机  DSP  程序优化 引用地址:独立于硬件技术的XC166单片机的DSP程序优化方法

上一篇:ST20P18单片机应用于通用家电无线遥控设备
下一篇:基于MSP430单片机的温度测量实验设计

推荐阅读最新更新时间:2024-03-16 12:53

基于DSP/ARM双核系统的通信接口设计
嵌入式系统的核心是嵌入式微处理器和嵌入式操作系统。早期的嵌入式系统硬件核心是各种类型的8位和16位单片机;而近年来32位处理器以其高性能、低价格,得到了广泛的应用。近年来,又出现了另一类数据密集处理型芯片DSP。DSP由于其特殊的结构、专门的硬件乘法器和特殊的指令,使其能快速地实现各种数字信号处理及满足各种高实时性要求。随着现代嵌入式系统的复杂度越来越高,操作系统已成为嵌入式系统不可缺少的部分。免费的嵌入式操作系统,如 Linux等,随着自身不断的改善,得到了飞速的发展。Linux是一个免费的、强大的、可信赖的、具有可伸缩性与扩充性的操作系统。Linux实现了许多现代化操作系统的理论,并且支持完整的硬件驱动程序、网络通信协议与多处
[单片机]
基于<font color='red'>DSP</font>/ARM双核系统的通信接口设计
Credo 光DSP再添新成员:Seagull 110和Seagull XR8
完全符合IEEE标准,性能和功耗表现优异,满足客户对更低单位比特成本和更短交付周期的需 求 中国深圳 2021年9月8日——专注为800G/400G/200G/100G/50G端口网络提供高性能、低功耗先进连接解决方案的全球创新领导者 Credo今日宣布:推出Seagull 110和Seagull XR8两款PAM4 DSP芯片。这两款新品扩展了Credo的SEAGULL系列 DSP芯片产品组合,全系列芯片推动了高性能连接50/100/200/400Gbps应用在超大规模数据中心。 Seagull 110是一款2x50Gbps PAM4 retimer产品,Seagull XR8 是一款 8x50Gbps PAM4 ret
[嵌入式]
Credo 光<font color='red'>DSP</font>再添新成员:Seagull 110和Seagull XR8
S3C2440裸机------触摸屏_定时候程序优化
我们前面的触摸屏代码中,当我们短按一次会有一个数据输出,但是当我们长按或者滑动时并没有数据输出,我们用定时器使触摸屏支持长按,在按下时我们启动定时器,定时器间隔一段时间中断一次,然后在中断函数里面再去测量触点的XY坐标。 我们前面的定时器代码是直接在定时器中断函数里面点灯,我们应该用一个数组去做处理,当定时器中断发生时分别进入不同的函数做不同的处理。 1. timer.c #include s3c2440_soc.h #define TIMER_NUM 32 #define NULL ((void *)0) typedef void(*timer_func)(void); typedef struct ti
[单片机]
基于FPGA和DSP的高速图像处理系统
    摘要:为了提高图像处理系统的高性能和低功耗,提出了一种基于FPGA和DSP协同作业的高速图像处理嵌入式系统,其中DSP为主处理器,负责图像处理,而FPGA为协处理器,负责系统的所有数字逻辑。整个系统中FPGA和DSP的工作之间形成流水,同时借助于单片双口RAM(CY7C025 AV-15AI)完成两者的通信,比使用单片DSP建立的处理系统性能提高25%左右。该系统具有可重构性,方便其他的算法于该系统上实现。 关键词:图像处理;FPGA;DSP;双口RAM 0 引言     现阶段用于数字图像处理的系统有很多种,而从成本、性能、开发难易程度等多方面的考虑,基于FPGA和DSP的灵活性高、实用性强、可靠性高的图像压缩系统脱颖而
[嵌入式]
高性能FLASH存储器在DSP电机智能保护中的应用
摘要:DSP芯片以其高速、实时性等优点逐步被用到电机保护中,利用高性能外围器件尤其是外围存储器与DSP的硬件匹配是充分发挥其优点的必要条件。文中以基于TMS320C32高速CPU为核心芯片的智能型电机保护装置为模型,介绍了高性能FLASH芯片Am29F010B与DSP芯片的硬件接口电路、软件编程技术以及应注意的问题和设计技巧。 关键词:Flash存储器 DSP 嵌入式算法 Am29F010B 国内的电动机保护装置种类繁多,但随着现代大中型电动机对保护要求的不断提高和VLSI技术的不断进步,传统的基于热敏电阻、机械式继电器和电子式等保护模式均因可靠性不高,容易出现误操作等缺点已不能满足需要;而以单片机为核心的数字或保护装置的运
[应用]
μC/OSⅡ的分布式应急电源控制系统设计
  1 引言    随着社会的发展,对供电可靠性的要求越来越高,一旦某些重要设施供电系统突然发生故障而中断供电,将会破坏社会的正常秩序,甚至造成重大的政治影响和经济损失。然而,电力故障突发性强,断电情况必须考虑,因此就需要做到电源的不间断,即供电线路停电时由备用电源供电。应急电源又称EPS(Emergency Power System)具有下述优点:(1)电网有电时,处于静态,无噪音;供电时,噪音小于60dB。不需排烟和防震处理,具有节能、无公害、无火灾隐患的特点;(2)自动切换,可实现无人值守,电网供电与EPS电源供电相互切换时间均为0.1~0.25s;(3)带载能力强,EPS适应于电感性电容性、及综合性负载的设备,如电梯、水
[电源管理]
μC/OSⅡ的分布式应急电源控制系统设计
TMS320C6000 DSP自动引导的方法和编程实现
摘要:TI高速信号处理器TMS320C5X和TMS320C6X需要从外部的存储器(ROM或FLASH)中引导应用程序这是开发中的重点和难点之一,关系到系统的可靠性和处理速度。以TMS320C6000 DSP为例,介绍了应用程序的三种引导方式;以实际工程为背景详细叙述了从ROM中引导程序的实现方法,并钟对其中重要的命令文件和用户引导程序,给出了相应的示例文件和程序。 关键词:TMS320C6000 DSP CMD 引导 1 TMS320C6000 DSP硬件结构概述 TMS320C6000是TI公司生产的TMS320系列产品中新一代高性能的DSP芯片,适用于高速数字信号处理。TMS320C6000主要由三个部分组成:CPU内
[应用]
嵌入式DSP访问片外SDRAM的低功耗设计研究
DSP有限的片内存储器容量往往使得设计人员感到捉襟见肘,特别是在数字图像处理、语音处理等应用场合,需要有高速大容量存储空间的强力支持。因此,需要外接存储器来扩展DSP的存储空间。 在基于DSP的嵌入式应用中,存储器系统逐渐成为功耗的主要来源。例如Micron公司的MT48LC2Mx32B2-5芯片,在读写时功耗最大可以到达924 mW,而大部分DSP的内核功耗远远小于这个数值。如TI的TMS320C55x系列的内核功耗仅仅为0.05 mW/MIPS。所以说,优化存储系统的功耗是嵌入式DSP极其重要的设计目标。本文主要以访问外部SDRAM为例来说明降低外部存储系统功耗的设计方法。 1 SDRAM功耗来源 SDRAM内部一般
[嵌入式]
嵌入式<font color='red'>DSP</font>访问片外SDRAM的低功耗设计研究
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved