AMOMIN.H 的 rd 是零扩展吗?
不是。Zabha 的 AMO.H old value 写回 rd 时符号扩展到 XLEN;AMOMINU.H/AMOMAXU.H 的 U 只表示无符号比较。
AMOMIN.H 原子读取 halfword 旧值、符号扩展写 rd,并按有符号 16-bit 比较 old halfword 与 rs2[15:0],较小者写回。
AMOMIN.H 是 Zabha 字节/半字原子内存操作中的 halfword AMO。它按 16-bit 宽度执行读改写,rd 接收旧内存 halfword 的符号扩展值;按有符号 16-bit 比较 old halfword 与 rs2[15:0],较小者写回。aq/rl 位只提供内存排序标注,不改变数据计算。
展示 Zabha halfword 原子指令的字段解析、aq/rl 排序位、内存读取和 RMW 状态更新。
Zabha 扩展 halfword 原子指令使用 32-bit 编码;动画先展示字段切分。
AMOMIN.H 按有符号 16-bit halfword 比较选择内存写回值;这不是逐 bit 逻辑运算。
该动画展示 ISA 可见的原子读改写、比较并交换、LR/SC 预留状态和内存排序位,不表示任何特定 CPU 的缓存一致性实现、流水线或时序。
AMOMIN.H 是 L5 Zabha halfword AMO:以 16-bit 宽度原子读取旧内存值,旧值符号扩展写入 rd,同时按有符号 16-bit 比较 old halfword 与 rs2[15:0],较小者写回。
结合 «amomin.h a0, a2, (a1)» 等实际代码理解该场景。
结合 «amomin.h a0, a2, (a1)» 等实际代码理解该场景。
不是。Zabha 的 AMO.H old value 写回 rd 时符号扩展到 XLEN;AMOMINU.H/AMOMAXU.H 的 U 只表示无符号比较。
架构语义只修改目标 16-bit halfword,并以 halfword 宽度计算新内存值;相邻字节不属于该数据结果。