RISC-V 开放架构设计之道 1.0.0数读出一个内存字,写 入目的寄存器,并记录该内存字的预订信息。条件存数往源寄存器中的地址写入一个 字,前提是该目标地址被预订。若写入成功,则向目的寄存器写入 0;否则向其写入 一个非 0 的错误码。 为何 RV32A 要提供两种原子操作?答案是有两种区别很大的使用场景。 简洁 编程语言开发者假定底层的体系结构提供原子的比较-交换操作:比较某寄存器 值与用另一寄存器寻址的内存值,若相等,则将第 条件存双字。R 型,仅在 RV64A 中。 若内存地址 x[rs1] 被预订,则将 x[rs2] 中的 8 字节写入该地址。若写入成功,则向 x[rd] 写入 0,否则向其写入一个非 0 的错误码。 31 27 26 25 24 20 19 15 14 12 11 7 6 0 00011 aq rl rs2 rs1 011 rd 0101111 RISC-V 指令:SGTZ 163 sc 条件存字。R 型,在 RV32A 和 RV64A 中。 若内存地址 x[rs1] 被预订,则将 x[rs2] 中的 4 字节写入该地址。若写入成功,则向 x[rd] 写入 0,否则向其写入一个非 0 的错误码。 31 27 26 25 24 20 19 15 14 12 11 7 6 0 00011 aq rl rs2 rs1 010 rd 0101111 sd rs2, offset(rs1) M[x[rs1]0 码力 | 223 页 | 15.31 MB | 1 年前3
RISC-V 手册 v2(一本开源指令集的指南)R-type, RV64A only. 如果内存地址 x[rs1]上存在加载保留,将 x[rs2]寄存器中的 8 字节数存入该地址。如果存入 成功,向寄存器 x[rd]中存入 0,否则存入一个非 0 的错误码。 00011 aq rl rs2 rs1 011 rd 0101111 156 31 27 26 25 24 20 RV32A and RV64A. 内存地址 x[rs1]上存在加载保留,将 x[rs2]寄存器中的 4 字节数存入该地址。如果存入成功, 向寄存器 x[rd]中存入 0,否则存入一个非 0 的错误码。 00011 aq rl rs2 rs1 010 rd 0101111 sd rs2, offset(rs1)0 码力 | 164 页 | 8.85 MB | 1 年前3
共 2 条
- 1













