当前位置: 首页 > news >正文

商丘企业做网站网站开发培训视频

商丘企业做网站,网站开发培训视频,wordpress 调用评论框,wordpress默认登录地址官网发表的文章地址#xff1a;RISC-V Optimization Guide B站有人做过解读视频#xff0c;这篇文章也是看视频时做的笔记#xff1a;视频地址 一、标量整数优化 1.1 常量的具体化 使用lui/addiw将立即数加载至寄存器#xff0c;当立即数低12位的最高位为1时#xff0c…官网发表的文章地址RISC-V Optimization Guide B站有人做过解读视频这篇文章也是看视频时做的笔记视频地址 一、标量整数优化 1.1 常量的具体化 使用lui/addiw将立即数加载至寄存器当立即数低12位的最高位为1时需要特殊处理提前补值0x800。 具体的推导过程见https://zhuanlan.zhihu.com/p/374235855 1.2 有效使用x0寄存器 1将目标寄存器置0 正确做法如下 mv x10, x0 or li x10, 0不要使用下面方法因为会有一个读寄存器x10额外的开销。 xor x10, x10, x10 and x10, x10, x0 andi x10, x10, 0 sub x10, x10, x102善于将x0作为指令的源操作数 x0可以折叠到任何指令中作为源操作数有些情况还可以用作目的操作数所以避免使用额外指令将0先加载到寄存器中。 下表列出了可以通过谨慎使用 x0 来消除临时寄存器的情况。 1.3 有效利用指令的立即数域 尽量将范围符合立即数域编码的常量编码到立即数域而不是通过额外的指令加载到寄存器再使用。 比如访问一个数组a0存放的是数组基地址8是offset。应该用 ld t0, 8(a0)而不是 addi a1, a0, 8 ld t0, (a1)这部分的扩展资料https://www.bilibili.com/video/BV1pN411H7Y3 1.4 善于利用常量池 对64bit的立即数常量使用常量池。如果该常量在程序中用到多次收益则会更大。 将一个64bit的数加载至寄存器 li a0, 0x123456789abcde1其背后的逻辑可能是要耗费32byte lui a0,0x92 addiw a0,a0,-1493 slli a0,a0,0xc addi a0,a0,965 slli a0,a0,0xd addi a0,a0,-1347 slli a0,a0,0xc addi a0,a0,-543如果我们使用常量池常量可以在16个字节中加载8个字节用于常量8个字节用于加载它所需的指令。 1:auipc a0, %pcrel_hi(large_constant)ld a0, %pcrel_lo(1b)(a0) ....section .rodata .p2align 3 large_constant:.dword 0x123456789abcde11.5 使用典型的mov指令 使用汇编器 MV 助记符可转换为 ADDI rd, rs1, 0将值从一个寄存器复制到另一个寄存器。 例如使用 mv x10, x11优先于以下任何指令 or x10, x11, x0 ori x10, x11, 0 xor x10, x11, x0 xori x10, x11, 01.6 使用条件mov代替分支指令 处理器进行分支预测的代价是很高的一旦分支预测错误就需要清空流水线重新开始读取。通过把分支指令替换成条件move是编译器的常见优化实际上是将控制流的依赖转换成数据流的依赖。而这种转换通常会用到zicond 扩展也就是czero.eqz 和 czero.nez指令。 czero.eqz rd, rs1, rs2 // if rs20 then rdrs1 else rd0 czero.nez rd, rs1, rs2 // if rs2!0 then rdrs1 else rd0原始分支指令版本 beqz a0, 1fli a0, constant1j 2f 1:li a0, constant2 2:初步优化后的指令版本 li t2, constant1 li t3, (constant2 - constant1) czero.nez t3, t3, a0 add a0, t3, t2如果能确定constant1在12bit范围还持续优化 li t3, (constant2 - constant1) czero.nez t3, t3, a0 addi a0, t3, constant1如果没有zicond 扩展指令还可以使用seqz和逻辑组合来达成条件move li t2, constant1 li t3, constant2 seqz t0, a0 // if a00 then t01 else t00 addi t0, t0, -1 // if t01 then t0置为全0 else t0置为全1 xor t1, t2, t3 and t1, t1, t0 xor a0, t1, t3 // if t1是全0 then resultt3 else resultt21.7 代码段的Padding 分支跳转的目标或者函数地址的起始能够Padding在一个Cache行的开头地址上对于整个跳转来说都是比较好的操作。所以在编译一个函数时会在其结束的时候进行Padding从而占满Cache行或者在函数的开头Padding让其位于Cache行的开头地址。 函数之间对齐padding使用0 illegal instruction函数内部对齐padding使用Nop或C.Nop因为在函数内部的执行频率高乱序执行情况下流水线在遇见非法指令后可能就不执行后续指令了而控制流如果传递到函数之间极有可能是程序出错了非法指令反而会帮助debug 1.8 将字符数组对齐到更大的对齐单位 如果CPU不支持快速非对齐访问那么在连续访问字符数组元素大小8bit时lw/sw指令从4字节边界访问ld/sd从8字节边界访问效率会高很多。 1.9 使用移位指令取出前导位和末尾位leading/trailing bits 如将x5的低12位取出 slli x6, x5, 20 srli x7, x6, 20而不是 lui x6, 1 addi x7, x6, -1 and x8, x7, x5二、标量浮点优化 2.1 与整数优化相似的部分 尽量使用尽可能短的代码序列实现同样的功能。加载立即数0的折叠。内存访问对齐。 2.2 高效控制舍入模式 为什么要舍入? 因为单精度浮点数只取23位尾数除去隐藏位而一些运算不可避免的得到的尾数会超过23位因此需要考虑舍入。 RISC-V的浮点计算舍入模式有两种静态模式和动态模式。 静态舍入模式浮点指令的编码中有3位作为舍入模式域RISC-V架构支持如下五种合法的舍入模式。除此之外如果舍入模式编码为101或者110 则为非法模式如果舍入模式编码111 则意味着使用动态舍入模式。 并不是所有的指令都有舍入模式根据指令编码格式以下的指令存在舍入模式的浮点运算指令fadd fsub fmul fdiv fsqrt 浮点乘加指令fmadd fmsub fnmadd fnmsub 浮点转换指令fcvt.w.s fcvt.s.w fcvt.uw.s fcvt.s.uw动态舍入模式如果使用动态舍入模式则使用fcsr寄存器中的舍入模式域。fcsr 寄存器包含舍入模式域。不同的舍入模式编码同样如上图所示仅支持五种合法的舍入模式。如果 fcsr 寄存器中的舍入模式域指定为非法的舍入模式则后续浮点指令会产生非法指令异常。 浮点优化尽可能使用静态模式: fadd.s f10, f10, f11, rtz而不是通过csr读写指令来设置FPCSR.FRM csrrwi t0, frm, 1 ; 1 rtz fadd.s f10, f10, f11 fsrm t0三、向量优化 3.1 保留v0寄存器作为mask register来使用
http://www.zqtcl.cn/news/300928/

相关文章:

  • 点样用外网访问自己做的网站北京市网站设计公司网址
  • 用备案的网站做违法网站wordpress个性404
  • 中国制造网官方网站下载安装我国做民宿的网站
  • 英文网站seo广州市软件开发有限公司
  • 锦州网站建设渠道山西做网站的公司有哪些
  • 4线城市搞网站开发丹灶网站建设公司
  • 青岛网站建设seo优化wordpress分类标题自定义
  • 网站开发本地环境在海南注册公司需要多少钱
  • 济南网站开发去哪儿旅行app下载安装
  • 大城 网站北京做网站男生工资
  • 赣州网站建设百家号免费软件网
  • 在合肥做网站多少钱网站开发外包平台
  • 百度指数查询平台网站建设SEO优化哪家好
  • 网站怎么在成都备案中企动力如何
  • 免费数据统计网站app推广拉新一手渠道
  • 网站推广效果不好原因zac seo博客
  • 高端网站设计合肥网站建设个人网站建设公
  • 廊坊建站模板系统做效果图的网站
  • 建网站打开需要验证四川省成都市建设厅官网
  • 网站文章列表如何排版珠海建设工程信息网站
  • 郑州个人做网站建设银行招聘网站
  • 杭州网站设计公司联系亿企邦网站怎么上百度
  • 网站建设的未来网站不备案访问
  • 网站改版效果图怎么做网站建设的五个基本要素
  • 河南建站网站做o2o网站需要多少钱
  • 重庆企业网站定制开发公司wordpress用户页
  • 电子商务网站seo网站规划与设计方向
  • 外贸双语网站源码wordpress 柚子
  • 隆昌市住房和城乡建设厅网站html5网页成品代码
  • 泉州丰泽建设局网站wordpress设置logo和公司名