ARM体系结构的HLT和WFI指令有什么区别?

时间:2014-12-21 06:39:49

标签: linux arm cpu power-management

我想了解各种C状态,C1状态下的大多数CPU都在HLT上运行,在c4状态下像c4一样转到WFI。

2 个答案:

答案 0 :(得分:0)

这个问题没有意义。您正在混淆ARM和x86系统中的术语。

x86上存在HLT指令;它在ARM上不存在。 WFI是最接近的等价物,同样地,仅存在于ARM上。这两个指令在各自的体系结构上执行类似的任务。

C状态也是x86特定的术语。 ARM CPU通常具有类似的睡眠状态,但它们通常由各个硬件制造商定义,而不是由ARM本身定义。

答案 1 :(得分:0)

HLT用于JTAG,WFI和WFE,这是您通常在裸机程序中使用的

ARMv8中的HLT是与调试相关的指令,即GDB用于实现硬件断点/监视点或JTAG使用的指令类型。

与其他所有指令一样,《 ARM参考手册》中对此文档进行了说明:https://static.docs.arm.com/ddi0487/db/DDI0487D_b_armv8_arm.pdf

我不确定这是做什么的,但是手册在C6.2.84“ HLT”中将其描述为:

  

HLT暂停指令。 HLT指令可以生成“暂停指令”调试事件,从而导致进入“调试”状态。

H2章“调试状态”描述了调试状态的含义:

  

在外部调试中,调试事件允许外部调试器暂停PE。然后,PE进入调试状态。

进一步,我们看到“外部调试”意味着类似JTAG的调试方法。

因此,HLT似乎是从软件进入JTAG调试模式的一种方式,就像BRK进行GDB软件调试一样。

因此,除非您要实现此类与调试相关的功能,否则您不希望接触HLT。

以下是简约的裸机示例:

相关:arm sleep mode entry and exit differences WFE, WFI