DSP数字信号处理知识点(三)

一、延迟间隙

延迟间隙:一条指令在第一个执行节拍E1以后占用的CPU周期数。

延迟间隙数:一条指令的执行或结果获得的潜在周期。

单周期类型指令(如ADD),在第i个周期读取源操作数,指令执行结果在第i+1周期才被访问,延迟间隙为0;

多周期类型指令(如MPY),在第i周期读取源操作数,指令执行结果在第i+2周期才能被访问,延迟间隙为1。 

TMS320C64xDSP各指令对应的延迟间隙数

Branch为分支跳转指令,例如go to指令;i+5=i+6-(i+1)

二、并行操作

一次取8条指令为一个取指包,宽256位(8个字)

取指包的基本格式

1)一个执行包最多包含8条指令;

2)执行包中每条指令必须使用不同的功能单元;

3)P=1代表 该指令与后一条指令并行

例如

0 0 1 1 0 1 1 0               ——>   共有A、B、C//D//E 、F//G//H 4个执行包

A B C D E F G H           

三、资源对公共指令集的限制

1.使用相同功能单元指令的限制

在一个执行包中两条指令不可以使用同一个功能单元。

2.使用交叉通路(1X和2X)的限制

同一执行包不用同一交叉通路。

3.数据读/写的限制

1)不能对同一寄存器组同时读/写。

2)数据读写使用的地址寄存器必须与所用的功能单元(.D)处于同一个数据通路。

4.使用长定点类型(40位)数据的限制

1)每个寄存器只有一个长定点类型的数据。

2)不可以同时读/写。

5.存储器读取的限制

对同一寄存器的读取次数<=4;条件寄存器除外。

6.存储器存储的限制

在同一周期内,两条指令不可以对同一寄存器进行写操作;不同周期内就可以,可以并行执行。

四、汇编代码结构

label:        parallel bass        [condition]        instruction        unit        operands        comments

标号            并行符号               条件                 指令          功能单元     操作数                注释

五、汇编伪指令

1.段定义伪指令

.bss          变量段,为未初始化的变量保留空间

.data        数据段,该段包含已初始化的数据

.text          代码段,该段包含可执行代码

.sect         定义初始化了的带名称的段

.usect        在一个未初始化的段中保留空间

2.初始化常数的伪指令

.int        .word        .char        

3.格式化输出清单文件的伪指令

.list        .nolist        .length        .title

4.引用其他文件的伪指令

.copy/.include        .global        .mlib

5.条件汇编伪指令

.if/.else/.endif        .loop/.endloop        .break

6.定义宏的伪指令

.macro        .endm        .var

7.汇编符号伪指令

.asg        .eval        .set        .equ        .end

六、C源程序转为可执行文件步骤

创建C源文件——创建工程文件——链接器命令文件——编译全部工程文件——链接——生成可执行文件

七、链接器命令文件的编写和使用

链接命令文件(CMD):DSP和目标板的存储器空间的定义,以及代码段、数据段如何分配到这些存储空间

MEMORY:定义目标系统的存储器配置空间。

SECTIONS:指定链接器将输入段组合成输出段的方式;输出段在存储器中的位置。

例如
MEMORY
{

   PAGE 0: PROM:origin=0x8000,length=0x06
   PAGE 0: VECT:origin=0xFF80,length=0x04
   PAGE 1: DATA:origin=0xA000,length=0x500
}
SECTIONS
{
    .text     >PROM PAGE 0
    .bss      >DATA PAGE 1
    .const   >DATA PAGE 1
}

 PAGE 0代表程序空间;  PAGE 1代表数据空间;

MEMORY指令将程序空间分为两部分,一部分名字为PROM,起始地址为0x8000,长度为0x06;另一部分名字为VECT,起始地址为0xFF80,长度为0x04;数据空间名为DATA,起始地址为0xA000,长度为0x500;

SECTIONS指令将三个段进行分配,.text段分配到PROM程序空间中,.bss和.const段分配到DATA数据空间中。

八、DSP/BIOS的组件构成

作用:实时调度和同步;主机-目标系统通信和实时监测。

意义:减少对CPU和内存资源的占用;可重复使用,减少软件的维护费用。

九、DSP软件开发过程

十、C语言代码的优化

1.选用C编译器提供的优化选项

-o        -pm        -mg        -mt        -ms        -mh        -mx

2.数据类型

3.减小存储器的相关性

4.使用内联函数(Intrinsics)

下划线开头;const/restrict

5.尽量少进行函数调用

6.使用逻辑运算代替乘除运算

7.软件流水线技术的使用

十一、汇编代码的优化

1.C代码转换为线性汇编

2.使用并行指令

3.延时间隙的利用

4.循环优化

5.软件流水技术

6.Cache优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值