【教学课件】第九讲使用汇编优化器.ppt

上传人:小飞机 文档编号:5661596 上传时间:2023-08-07 格式:PPT 页数:36 大小:997.50KB
返回 下载 相关 举报
【教学课件】第九讲使用汇编优化器.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”扩展名仅对指定的代码段进行优化,指定代码段外的代码被拷贝为输出“.asm”文件线性汇编过程可以:传递参数返回结果使用符号变量不考虑流水线问题,BIT/TI,7,二、写线性汇编代码举例点积,BIT/

2、TI,8,点积线性汇编,线性汇编不需要指出和考虑:功能单元寄存器延迟间隙,BIT/TI,9,确定优化代码段,Dotp:.cproc zero sumloop:ldh*p_m+,m ldh*p_n+,n mpy m,n,prod add prod,sum,sum count sub count,1,count count b loop.endproc,.cproc/.endproc:确定要优化的代码段必须成对使用可作为C调用的函数,在汇编代码中使用.proc/.endproc确定要优化的代码段,它们也必须成对使用,BIT/TI,10,使用符号变量,Dotp:.cproc.reg p_m,m,p_

3、n,n,prod,sum,count zero sumloop:ldh*p_m+,m ldh*p_n+,n mpy m,n,prod add prod,sum,sum count sub count,1,count count b loop.endproc,.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 su

4、mloop: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,.cproc variable1,variable2,:给出输入参数.return:给出返回结果.return仅在.cproc/.endproc内有效,.proc register1,register2,;给出输入参数.reg p_m,mv register1,p_m;建立输入寄存器:;与变量关系mv sum,register1.endproc register1,re

5、gister2,;给出返回结果,BIT/TI,12,保护寄存器,Dotp:.cproc p_m,p_n,count.reg p_m,m,p_n,n,prod,sum,count.reserve a3 zero sumloop: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,流水

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

7、T/TI,17,指出运算迭代次数,Dotp:.cproc p_m,p_n,count.reg p_m,m,p_n,n,prod,sum,count zero sumloop:.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,点积的完整线性汇编,Dotp:.cproc p_m,p_n,count.reg p_m,m,p_n,n,prod,sum,count zero sumlo

8、op:.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,四、多周期循环的软件流水,BIT/TI,21,软件流水过程,.用C语言实现算法并验证.写C6x线性汇编代码.画相关图.分配功能单元和寄存器.建编排表.将编排表转换为C6x汇编代码,BIT/TI,22,加权矢量和软件流水第一步:C代码,BIT/TI,23,第二步:

9、线性汇编代码,BIT/TI,24,第三步:相关图,BIT/TI,25,第四步:分配功能单元,BIT/TI,26,2周期循环,2个周期/每次循环迭代,迭代间隔:每次循环迭代 占用的周期数,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备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号