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

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章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)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档