第四章Blackfin-程序结构-20140915V.pptVIP

  • 4
  • 0
  • 约1.1万字
  • 约 67页
  • 2017-06-22 发布于湖北
  • 举报
第四章Blackfin-程序结构-20140915V概要

对小数点积计算,内联函数实现 //好的示例,内联函数实现 内联函数(compiler intrinsic)优化 * 获取系统时钟周期 //使用汇编语言,程序可读性差 内联函数(compiler intrinsic)优化 * 获取系统时钟周期 //使用ADI提供的头文件,程序可读性好 内联函数(compiler intrinsic)优化 * 使用寄存器代替局部变量 使用硬件循环代替软件循环 充分利用数据宽度 使用并行指令和向量指令 使用汇编语言优化 * 继续优化 汇编程序优化方法 C代码优化方法 作业 * 并行指令 32位ALU/MAC指令||16位指令|| 16位指令 用“||”隔开3条指令,分号表示并行指令的结束 32位ALU/MAC指令||16位指令 仍是64位指令,未用到的16位将执行NOP操作 MNOP||16位指令|| 16位指令 仍是64位指令,未用到的16位将执行MNOP操作 * 并行指令 32位指令包括: 算术运算指令 加载和存储指令(仅支持累加器版本) 位操作指令 逻辑运算指令 数据转移指令 移位和循环指令 外部事件操作指令(仅支持32位MNOP版本) 向量操作指令 视频像素操作指令 * 并行指令 16位指令包括: 算术运算指令(仅支持索引寄存器版本) 加载和存储指令 外部事件操作指令(仅支持16位MNOP版本) 并行指令中的2条指令满足以下约束: 只能一条是存储指令 如果2条指令都是内存访问指令,至少有一条是索引寄存器版本。 * 并行指令 并行举例: A1+=R0.L*R2.L, A0+=R0.H*R2.H || R2.L=W[I2++] || [I3++]=R3; R3.H=(A1+=R0.L*R2.)L, R3.L=( A0+=R0.H*R2.H) || R0=[P0++] || R1 = [I0] * 优化练习1: 矢量A*B+C * 计算公式 * 第一次:每次循环6个周期 LSETUP(lp_start,lp_end)LCO=N; lp_start: r0 = [i0,m3]; /* 读A*/ r1 = [i1,m2]; /*读B */ r2 = r0 * r1; /* 计算 A * B*/ r3 = [i2,m1]; /*读 C */ r4 = r3 + r2; /* 把C与积相加 */ lp_end: [i3,m0] = r4; /* 存放结果 */ * 第二次:每次循环3个周期 r0 = [i0,m3] || r1 = [i1,m2]; /* 读A和B */ LSETUP(lp_start,lp_end)LCO=N-1; lp_start: r2=r0*r1 || r3=[i2,m1]; /* 计算A * B, 读C */ r4=r3+r2 || r0=[i0,m3] || r1=[i1,m2]; /* 加C, 读A和B */ lp_end: [i3,m0]=r4; /* 存放结果 */ 循环准备,先读入第一组值 循环体部分 * 一、汇编语言程序 二、汇编程序优化 三、C语言程序 四、C代码优化 本章要点 * * 程序流大部分是线性的,此时处理器顺序地执行程序指令。 当程序采用非顺序结构时,线性程序流会发生改变,非顺序结构包括: 循环 子程序 跳转 中断和异常 空闲 * 注释文本 代码段(主程序) 伪指令 子程序 1.任何程序都有主函数。 2.程序由若干语句组成, { }是函数开始和结束的标志,不可省。 3.语句由“;”结束; /*……*/表示注释 结构化程序设计思想 结构化程序设计(Structured Programming) 程序设计技术 C语言是结构化程序设计语言 强调程序设计的风格和程序结构的规范化,提倡清晰的结构,其基本思路是将一个复杂问题的求解过程划分为若干阶段,每个阶段要处理的问题都容易被理解和处理。 按自顶向下的方法对问题进行分析、模块化设计和结构化编码等3个步骤。 * 自顶向下的分析方法 把大的复杂的问题分解成小问题后再解决 面对一个复杂的问题,首先进行上层(整体)的分析,按组织或功能将问题分解成子问题,如果子问题仍然十分复杂,再做进一步分解,直到处理对象相对简单,容易处理为止。 当所有的子问题都得到了解决,整个问题也就解决了。 每一次分解都是对上一层的问题进行细化和逐步求精,最

文档评论(0)

1亿VIP精品文档

相关文档