教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 建筑文档 >

DSP 图像处理算法的实现-III(2)

来源:网络收集 时间:2026-08-19
导读: TMS320C6000 的 CPU 有两个数据通道 A 和 B,每个通道有 16 个 32 位字 长的寄存器(A0~A15,B0~B15),四个功能单元(L,S,M,D),每个功能 单元负责完成一定的算术或者逻辑运行。A、B 两通道的寄存器并不是完

TMS320C6000 的 CPU 有两个数据通道 A 和 B,每个通道有 16 个 32 位字 长的寄存器(A0~A15,B0~B15),四个功能单元(L,S,M,D),每个功能 单元负责完成一定的算术或者逻辑运行。A、B 两通道的寄存器并不是完全共享, 只能通过 TM320C6000 提供的两个交换通道 1X、2X,才能实现处理单元从不 同通道的寄存器堆那里获取 32 位字长的操作数。TMS320C6000 的地址线为 32 位,存储器寻址空间是 4G。

各个部分简要介绍:

C62X 和 C67X 的数据通路包括:

2 个通用寄存器组(A 和 B)8 个功能单元(.L1,.L2,.S1,.S2,.M1,.M2,.D1,D2) 2 个存储器读取通路(LD1 和 LD2)2 个存储器存储通路(ST1 和 ST2) 2 个寄存器组交叉通路(1X 和 2X)2 个数据寻址通路(DA1 和 DA2) 1 通用寄存器组

C62X/C67X 数据通路中有 2 个通用寄存器组(A 和 B): 寄存器组 A:A0-A15,寄存器组 B:B0-B15。

8

条件寄存器: A1、A2、B0、B1 和 B2 可用于循环寻址的寄存器:A4-A7 和 B4-B7。

通用寄存器组支持 32 位和 40 位定点数据,C67X 也支持 32 位单精度和 64 位双精度浮点数据。对于 40 位和 64 位数据,需跨放在两个寄存器内。

2 功能单元

8 个功能单元分成 A、B 两组:A 组:L1、S1、M1、D1 B 组:L2、S2、 M2、D2

每个功能单元都有:2 个 32bit 读口和 1 个 32 位写口

.L1、.L2、.S1 和.S2 另有:8bit 写口和 8bit 读口,支持 40 位操作数的读写 同一周期 8 个功能单元可并行使用

各个功能单元的执行操作 功 能

浮 点 操 作 .L 单元(.L1,.L2) 32/40 位算术和比较操作 算术操作 32 位中最左边 1 或 0 的位数计数 转换操作 32 位和 40 位计数 DP→SD INT→32 位逻辑操作 DP INT→SP .S 单元(.S1,.S2) 32 位算术操作 32/40 位移位和 32 位位操作 32 位逻辑操作 转移 常数产生 寄存器与控制寄存器传递(仅.S2) .M 单元(.M1,.M2) 16×16 乘法操作 比较倒数和倒数平方根 操作 绝对值操作 SP→DP 转换 单 元 结构示意图

定 点 操 作 32×32 乘法操作 浮点乘法操作 .D 单元(.D1,.D2) 32 位加、减、线性循环寻址计算 5 位常数偏移量双字读 5 位常数偏移量取存 取 15 位常数偏移量取存(仅.D2) 3 寄存器组交叉通路 9

CPU 中有两个交叉通路 1X 和 2X

1X:允许 A 侧功能单元读取 B 组寄存器数据

2X:允许 B 侧功能单元读取 A 组寄存器数据 每侧仅有一个交叉通路,在同一周期内从另一侧寄存器组读操作数只能一 次,或者同时进行使用 2 个交叉通路(1X 和 2X)的操作。

.D 不能使用交叉通路仅 src2 可以使用另一侧寄存器数据

第三节 TMS320C6000 指令系统

C62xx 和 C67xx 共享同一个指令集。所以 C67xx 可以使用所有的 C62xx 指令,但因为 C67xx 是浮点芯片,怕以 C67xx 的指令集中有一些指令只能用于 浮点运算。TMS320C6201CPU 的设计采用了类似于 RISC 的结构,指令集简单、 运算速度快。8 个功能单元负责不同功能的运算,指令和功能单元之间存在一个 映射关系。其中,L 单元有 23 条指令,M 单元有 20 条指令,S 单元 29 有条指 令,D 单元有 26 条指令。

TMS320C6201 的大部分指令都可在单周期内完成,都可以直接对 8/16/32bit 数据进行操作。同时,TMS320C6201 指令集针对数字信号处理算法 提供了一引起特殊指令:为复杂计算提供的 40bit 的特殊操作的加法运算;有效 的溢出处理和归一化处理;简洁的位操作功能等。TMS320C6201 中最多可以有 8 条指令同时并行执行;所有指令均可条件执行。以上所有特点提高了指令的执 行效率、减小了代码长度、大大减少了因跳转引起的开销、提高了编码效率。

10

第三章 基于 TMS320C6000 系列的 C 代码优化

在 DSP 软件开发中推荐的开发流程如图 1 所示

于是我们可以份三个阶段来优化所写的 C 语言代码 第一个阶段:对第一个阶段,我们根据需要实现的功能来编写 C 语言程序,

这时的代码和硬件平台是独立的,可以进行一些基本的 C 优化,然后使用 C6000 代码剖析工具,确定 C 代码中可能存在的低效率段,为进一步改进代码性能, 进入第二阶段。

第二个阶段:在这一阶段,我们根据 TI,C6000 平台一些基本的结构特点,

11

使用特定的优化方法,改进 C 代码。这些方法包括使用编译器选项、和代码转 换字访问、软件流水和循环展开等。如果代码仍不能达到所期望的效率,则进入 第三个阶段。

第三个阶段:从 C 代码中抽出对运行时间影响最大的代码段,用线性汇编 改写这段代码。用户能使用汇编优化器优化该代码。

第一节 第一个阶段代码优化

第一阶段的优化是基于通用微处理器的 PC 机环境中的优化,主要是针对 C 程序的通用特性来考虑的。这方面的优化工作主要包括数据类型选择、数值操作 优化、快速算法、变量定义和使用优化、函数调用优化以及计算表格化等.这个 阶段的 C 代码优化,可以通过选定 CCS(Code Composer Studio)提供的 C 编 译器的选项来实现优化,所以不详细展开,但有几点与 C6000 的硬件结构有关, 需详细说明下

1 数据类型 数据类型的选择在分析和编写代码时很重要,充分考虑数据类型大小才能从

C6000 体系结构中取得最优的性能。C6x 编译器对每种数据类型都定义了数据 大小。char :8 bit ; short : 16 bit ; int :32 bit ; long :40 bit ;float :32 bit ;double :64 bit 基于每一种数据类型的大小,在书写 C 代码时,应注意以下原则。(1) 要避免 把 int 和 long 数据类型当成相同大小来处理,因为 C6x 编译器对 long 数据使 用 40 bit 操作数;(2) 定点乘法,尽量采用 short 型作为输入,因为 C6x 上是一

16 的乘法器;个 16?(3) 用于循环的计数器,数据类型采用 int 或者 unsigned int

以避免汇编器产生不必要的符号扩展指令;(4) 当在浮点 DSP 装置中使用浮点 指令时,例如 C67x 应使用-mv6700 编译器开关,使得代码产生器符合浮点的 硬件装置代码。

2 数值操作优化

C 程序中主要有以下数值操作优化:(1)用比特的移位操作来代替 2 次幂整 数的乘除法运算更为有效;(2 )当使用浮点设备时, 尽量使用浮点数据类型,这 能够减小定点处理单元的负担;(3) 尽量避免数值的上下溢出,除非是算法本身 的需要。

3 快速算法

12

本优化方法是用快速算法实现各种变换。例如离散傅立叶变换(DFT)是数字 图像处理中应用十分广泛的一种变换,具有很好的实用性,其快速算法——快速 傅立叶变换(FFT)对其计算速度又有非常大的改进,从而使得该算法得到了更 加广泛的应用。

4 变量定义和使用优化

C 程序中对于需要多次重复使用的变量,如 for 循环中的变量值,一般可以 设置成 register 变量,从而提高效率。另外在 C 语言中指针和数组是可以相互 替代的,而对于数组的寻址非常耗时,特别是多维数组,因此可以通过降低数组 的维数,再指针化, …… 此处隐藏:4639字,全部文档内容请下载后查看。喜欢就下载吧 ……

DSP 图像处理算法的实现-III(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/681300.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)