九章节使用汇编优化器.ppt

上传人:本田雅阁 文档编号:3160922 上传时间:2019-07-18 格式:PPT 页数:36 大小:1,000.53KB
返回 下载 相关 举报
九章节使用汇编优化器.ppt_第1页
第1页 / 共36页
九章节使用汇编优化器.ppt_第2页
第2页 / 共36页
九章节使用汇编优化器.ppt_第3页
第3页 / 共36页
九章节使用汇编优化器.ppt_第4页
第4页 / 共36页
九章节使用汇编优化器.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《九章节使用汇编优化器.ppt》由会员分享,可在线阅读,更多相关《九章节使用汇编优化器.ppt(36页珍藏版)》请在三一文库上搜索。

1、BIT/TI,第九讲 使用汇编优化器,1,第九讲 使用汇编优化器,BIT/TI,第九讲 使用汇编优化器,2,学习内容,写线性汇编代码 使用汇编优化器 多周期循环的软件流水,BIT/TI,第九讲 使用汇编优化器,3,题目,一、写线性汇编代码 二、写线性汇编代码举例点积 三、调用汇编优化器 四、多周期循环的软件流水 五、加权矢量和(WVS)循环展开,BIT/TI,第九讲 使用汇编优化器,4,一、写线性汇编代码,BIT/TI,第九讲 使用汇编优化器,5,软件工具流程,BIT/TI,第九讲 使用汇编优化器,6,线性汇编文件基本考虑事项,线性汇编文件使用“.sa”扩展名 仅对指定的代码段进行优化,指定代

2、码段外的代码被拷贝为输出“.asm”文件 线性汇编过程可以: 传递参数 返回结果 使用符号变量 不考虑流水线问题,BIT/TI,第九讲 使用汇编优化器,7,二、写线性汇编代码举例点积,BIT/TI,第九讲 使用汇编优化器,8,点积线性汇编,线性汇编不需要指出和考虑: 功能单元 寄存器 延迟间隙,BIT/TI,第九讲 使用汇编优化器,9,确定优化代码段,Dotp: .cproc zero sum loop: ldh *p_m+, m ldh *p_n+, n mpy m, n, prod add prod, sum, sum count sub count, 1, count count b l

3、oop .endproc,.cproc/ .endproc: 确定要优化的代码段 必须成对使用 可作为C调用的函数,在汇编代码中使用 .proc/ .endproc 确定要优化的代码段, 它们也必须成对使用,BIT/TI,第九讲 使用汇编优化器,10,使用符号变量,Dotp: .cproc .reg p_m, m, p_n, n, prod,sum,count zero sum loop: ldh *p_m+, m ldh *p_n+, n mpy m, n, prod add prod, sum, sum count sub count, 1, count count b loop .end

4、proc,.reg伪指令: 声明符号变量,变量由优化器 选择与功能单元一致的寄存器 .reg仅在.cproc/ .endproc内有效 当变量为40/64bit时,变量使用 寄存器对格式:如ahi:alo,BIT/TI,第九讲 使用汇编优化器,11,参数传递,Dotp: .cproc p_m, p_n, count .reg p_m, m, p_n, n, prod,sum,count zero sum loop: ldh *p_m+, m ldh *p_n+, n mpy m, n, prod add prod, sum, sum count sub count, 1, count coun

5、t b loop .return sum .endproc,.cproc variable1,variable2,: 给出输入参数 .return:给出返回结果 .return仅在.cproc/ .endproc内有效,.proc register1,register2, ; 给出输入参数 .reg p_m, mv register1, p_m ;建立输入寄存器 : ;与变量关系 mv sum, register1 .endproc register1,register2, ;给出返回结果,BIT/TI,第九讲 使用汇编优化器,12,保护寄存器,Dotp: .cproc p_m, p_n, c

6、ount .reg p_m, m, p_n, n, prod,sum,count .reserve a3 zero sum loop: ldh *p_m+, m ldh *p_n+, n mpy m, n, prod add prod, sum, sum count sub count, 1, count count b loop .return sum .endproc,.reserve指出需要保护的寄存器 当.cproc/ .endproc内的代码明显 使用了要保护的寄存器,优化器 也可能使用该寄存器,如:,BIT/TI,第九讲 使用汇编优化器,13,流水代码的最小循环次数,具有填充和排空

7、 5次运算迭代,循环计数设置为3 如果循环计数设置为0,得到3次加 最小循环次数:3,循环测试,BIT/TI,第九讲 使用汇编优化器,14,计算最小循环次数,最小循环次数=循环和排空的周期数,这个点积代码 最小循环次数=?,BIT/TI,第九讲 使用汇编优化器,15,冗余循环,非流水代码 执行较慢,BIT/TI,第九讲 使用汇编优化器,16,消除冗余循环,关闭软件流水(-mu) 减小代码尺寸,但也减小吞吐量 指出运算迭代次数(.trip) 如果.trip最小循环次数,仅产生流水循环 如果.trip最小循环次数,产生两种循环 不产生冗余循环(-ms) 如果没给出.trip,仅产生不流水循环 如果

8、给出.trip,且.trip最小循环次数,仅产生流水循环,BIT/TI,第九讲 使用汇编优化器,17,指出运算迭代次数,Dotp: .cproc p_m, p_n, count .reg p_m, m, p_n, n, prod,sum,count zero sum loop: .trip 40 ldh *p_m+, m ldh *p_n+, n mpy m, n, prod add prod, sum, sum count sub count, 1, count count b loop .return sum .endproc,指出运算迭代次数,BIT/TI,第九讲 使用汇编优化器,18,

9、点积的完整线性汇编,Dotp: .cproc p_m, p_n, count .reg p_m, m, p_n, n, prod,sum,count zero sum loop: .trip 40 ldh *p_m+, m ldh *p_n+, n mpy m, n, prod add prod, sum, sum count sub count, 1, count count b loop .return sum .endproc,BIT/TI,第九讲 使用汇编优化器,19,三、调用汇编优化器,调用汇编优化器和汇编器,仅调用汇编器,BIT/TI,第九讲 使用汇编优化器,20,四、多周期循环的

10、软件流水,BIT/TI,第九讲 使用汇编优化器,21,软件流水过程,. 用C语言实现算法并验证 . 写C6x线性汇编代码 . 画相关图 . 分配功能单元和寄存器 . 建编排表 . 将编排表转换为C6x汇编代码,BIT/TI,第九讲 使用汇编优化器,22,加权矢量和软件流水 第一步:C代码,BIT/TI,第九讲 使用汇编优化器,23,第二步:线性汇编代码,BIT/TI,第九讲 使用汇编优化器,24,第三步:相关图,BIT/TI,第九讲 使用汇编优化器,25,第四步:分配功能单元,BIT/TI,第九讲 使用汇编优化器,26,2周期循环,2个周期/每次循环迭代,迭代间隔:每次循环迭代 占用的周期数,

11、BIT/TI,第九讲 使用汇编优化器,27,多周期循环迭代,BIT/TI,第九讲 使用汇编优化器,28,多周期循环,BIT/TI,第九讲 使用汇编优化器,29,第五步:建迭代间隔编排表(1),BIT/TI,第九讲 使用汇编优化器,30,第五步:建迭代间隔编排表(2),BIT/TI,第九讲 使用汇编优化器,31,第五步:建迭代间隔编排表(3),BIT/TI,第九讲 使用汇编优化器,32,第五步:建迭代间隔编排表(4),BIT/TI,第九讲 使用汇编优化器,33,第五步:建迭代间隔编排表(5),BIT/TI,第九讲 使用汇编优化器,34,第五步:建迭代间隔编排表(6),BIT/TI,第九讲 使用汇编优化器,35,展开加权矢量和代码,展开加权矢量和:2个结果/每3个周期,BIT/TI,第九讲 使用汇编优化器,36,小结,编写线性汇编代码 使用汇编优化器 多周期循环的软件流水,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1