WFI 一定会让处理器进入低功耗睡眠吗?
不会。WFI 不是 HINT 指令,但官方语义仍允许实现暂停,也允许合法地把它当作 NOP 继续执行。
等待中断指令:实现可暂停 hart,直到可能需要处理中断;也可合法地不暂停并像 NOP 一样继续。
扩展条件:所有已实现的特权模式可用;U-mode 支持可选,并受 TW 和实现 S-mode 时的有界时间规则约束;H 下另有 VTW 规则。
WFI 通知实现当前 hart 可暂停,直到可能需要处理中断;实现也可以把它当作 NOP。正常等待路径必须因本地使能的挂起中断而恢复,不受全局中断使能或 mideleg 影响;恢复不等于一定进入中断陷阱。如果停顿期间出现可投递的使能中断,陷阱在下一条指令处发生;若恢复事件不导致陷阱,则从 WFI 的 PC+4 继续,软件必须重新检查条件。TW=1 时,低于 M 的 WFI 若未在实现特定有界时间内完成,必须触发非法指令异常;实现也可选择总是立即陷入。实现 S-mode 时,U-mode 无论 TW 值都适用该有界完成条件。
展示 SYSTEM 固定编码、TW 限制,以及 WFI 可暂停也可像 NOP 返回的 ISA 可见语义。
动画按 V=0 展示;无 S-mode 时假定实现支持 U-mode WFI,不模拟 H/VTW。结果栏展示所选条件的可能路径,不表示已提交状态;TW 有界时间超限必须异常。该动画不承诺睡眠时长、功耗下降、唤醒延迟或调度策略;这些不是 WFI 的可移植 ISA 语义。
WFI 的重点是“可等待中断”而不是“必然睡眠”。它不是 HINT 指令,没有显式操作数且编码固定;执行后可能暂停 hart,也可能马上像 NOP 一样继续。可移植软件必须在 WFI 返回后重新检查等待条件。
V=0、M-mode、无可投递中断,PC=0x2000:若实现选择 NOP 路径,wfi 从 0x2004 继续;软件仍需重新检查等待条件,不能据此推断睡眠或节能。
V=0、M-mode、无可投递中断,PC=0x2000:若实现选择 NOP 路径,wfi 从 0x2004 继续;软件仍需重新检查等待条件,不能据此推断睡眠或节能。
不会。WFI 不是 HINT 指令,但官方语义仍允许实现暂停,也允许合法地把它当作 NOP 继续执行。
软件应重新检查等待条件或挂起状态,因为 WFI 可因任意原因恢复,恢复本身不保证目标事件已经完成处理。