PAUSE 会保证等待固定时间吗?
不会。官方只要求效果有界,并且持续时间可以为 0。
Zihintpause 有界暂停提示,表示当前 hart 的指令退休率可被临时降低或暂停。
PAUSE 使用 opcode 0001111(0x0f)、funct3 000。rs1 字段选择源寄存器,12 位立即数提供第二操作数,rd 选择目标寄存器。
PAUSE 是 Zihintpause 扩展定义的 HINT,编码为 FENCE 形式:pred=W、succ=0、fm=0、rd=x0、rs1=x0。它提示实现当前 hart 可能处于自旋等待序列中,指令退休率可被临时降低或暂停;该效果持续时间必须有界,也可以为 0。由于 successor set 为空,PAUSE 不强制任何内存排序。
PAUSE 告诉实现当前 hart 可能在自旋等待;它可以降低或暂停退休率,但效果必须有界且可以为零。
结合 «pause # hint for spinlock busy-wait loop» 等实际代码理解该场景。
结合 «pause # hint for spinlock busy-wait loop» 等实际代码理解该场景。
结合 «pause # hint for spinlock busy-wait loop» 等实际代码理解该场景。
不会。官方只要求效果有界,并且持续时间可以为 0。
不能。PAUSE 不强制任何内存排序。