risc_v 汇编指令(1)

  • bgtz:
    -用法:bgtz rs,offset;作用:if rs > 0 then branch

  • blez:
    -用法:blez rs,offset;作用:if rs <= 0 then branch

  • bne:
    -用法:bne rs,rt,offset;作用:if rs != rt then branch

  • beq:
    -用法:beq rs,rt,offset;作用:if rs = rt then branch,
    将地址为rs的通用寄存器的值与地址为rt的通用寄存器的值进行比较,如果相等,则发生转移
    bnez

  • bnez rs1, offset ;
    -当寄存器 rs1 的值是非 0 值,则指令产生控制转移

  • beqz rs1, offset ;
    -当寄存器 rs1 的值是 0,则指令产生控制转移

  • j:
    -用法:j offset ;作用:pc += sext(offset)
    无条件控制转移。偏移量被符号扩展后,与pc相加形成跳转目标地址

  • jal:
    -用法:jal rd, offset;作用:x[rd] = pc+4; pc += sext(offset)
    把下一条指令的地址 (pc+4)存入x[rd],然后把 pc 设置为当前值加上符号位扩展的offset。rd 默认为 x1;
    sext是sign-extend(符号扩展)的缩写,表示将该立即数扩展到32位;

  • li:
    -用法:li rd, immediate; 作用:x[rd] = immediate 将常量加载到 x[rd]中。

  • sw rs2, offset(rs1)

  • csrc 0x%0x, 0x4;
    -把 0x%0x 中指定的 bit位 (0x4)置 0

  • csrs 0x%0x, 0x4 ;
    -把 0x%0x 中指定的 bit位 (0x4)置 1

  • addi rd, rs1, immediate ;
    – x[rd] = x[rs1] + sext(immediate) 把符号位扩展的立即数加到寄存器 x[rs1]上,结果写入 x[rd]。忽略算术溢出。

  • andi rd, rs1, immediate;
    x[rd] = x[rs1] & sext(immediate) 把符号位扩展的立即数和寄存器 x[rs1]上的值进行位与,结果写入 x[rd]。

  • EBREAK;
    -指令被调试器所使用,用来将控制权传送回给调试环境。

(1) 对于标准的MIPS单流水线,SAXPY循环计算一个Y值需要5个时钟周期。其中,ld、multd、ld、addd、sd、addi和beqz指令各需要1个时钟周期,sgti指令需要0个空转周期。 (2) 将SAXPY循环顺序展开4次,不进行任何指令调度,计算一个Y值平均需要20个时钟周期。加速比为1/5=0.2。加速比的计算公式为: 加速比 = 顺序执行循环处理时间 / 展开4次不进行调度的循环处理时间 加速比的获得是因为展开循环后,可以重复利用部分指令的结果,避免了一些重复计算,从而提高了执行效率。 (3) 将SAXPY循环顺序展开4次,并进行指令调度,可以得到以下优化后的代码: ld f2, 0(r1) ld f6, 0(r2) multd f4, f2, f0 addd f6, f4, f6 sd 0(r2), f6 ld f2, 8(r1) ld f6, 8(r2) multd f4, f2, f0 addd f6, f4, f6 sd 8(r2), f6 ld f2, 16(r1) ld f6, 16(r2) multd f4, f2, f0 addd f6, f4, f6 sd 16(r2), f6 ld f2, 24(r1) ld f6, 24(r2) multd f4, f2, f0 addd f6, f4, f6 sd 24(r2), f6 addi r1, r1, #32 addi r2, r2, #32 sgti r3, r1, done beqz r3, LOOP 其中,LOOP表示循环的起始标志,done表示循环结束的标志。这个优化后的代码可以在12个时钟周期内计算一个Y值,加速比为1/5=0.2。 这个优化后的代码的加速比获得是因为我们将多个指令之间的相关性和优先级考虑在内,通过指令调度,将一些指令的执行顺序调整到更合适的位置,避免了一些指令之间的等待时间,从而提高了执行效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东边坡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值