0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解ARM WFI和WFE指令

安芯教育科技 来源:老秦谈芯 2023-06-07 17:32 次阅读

今天来看两个特殊的指令,WFI(Wait For Interrupt)和WFE(Wait For Event)。这两条指令的语法非常简单,不需要带任何参数。如果大家读过前面文章,肯定对中断(interrupt)不陌生。至于事件(event),与中断有点像,不同的是处理器对二者的处理方式不一样。可以先将事件理解成特殊的中断。

先看WFI,首先,我们研究一下ARM处理器进入低功耗状态的机制。当一个处理器核的工作负载不高时,可以通过降压降频(DVFS)的方式来让处理器运行在较低的频率,从而降低整个芯片的功耗。如果处理器的没有工作负载,完全空闲下来,这时就需要其它方法让处理器进入更低的功耗模式。如果大家对ACPI有一些了解,就知道其中定义的“睡眠(sleep)”模式就有好几种,每种模式对应的电源时钟状态不同。处理器芯片进入空闲状态的大体顺序应该是这样的,应用处理器(Application Processor)判断是否具备进入空闲状态的条件,如果满足条件则进行一些准备工作;发消息给系统控制器(System control processor);等待全部操作执行完;执行WFI进入空闲状态;等待系统控制器做出下一步动作,或者关闭时钟,或者关闭电源等等。

从WFI这个名字可以看出,唤醒(wake up)处理器的一个机制就是发送中断给处理器。与A系列处理器搭配的中断处理器是GIC,这在前面介绍过。GIC接到中断后,产生唤醒信号给系统控制器或者是电源管理模块(PowerManagement Unit),系统控制器或者PMU根据处理器核的状态以及系统状态,决定下一步的动作。如果唤醒信号是给系统控制器,则可以考虑接到系统控制器的中断处理接口,比如,采用M系列作为系统控制器时,可以接到NVIC(Nested Vectored Interrupt Controller)。唤醒机制要根据具体情况具体分析,法无定法。

WFE与WFI很像,只不过等待的是事件,也就是说系统可以通过发送事件来唤醒应用处理器。WFE的一个典型应用场景是自旋锁。当多个应用处理器竞争同一个临界区资源时,只有一个应用处理器能获得权限,其它的应用处理器需要等待临界区资源被释放,也就是这些应用处理器“自旋”。当然操作系统也可以采取其它的处理方式,比如把时间片分给其它的应用程序,不过这不在今天的研究范畴。显然,应用处理器简单的“自旋”对于功耗不友好,一个解决办法就是让这些“自旋”的应用处理器进入一种低功耗模式,获得临界区资源的应用处理器在完成当前进程后,唤醒这些应用处理器去重新竞争临界区资源。这时的唤醒机制不宜采取中断方式,因为效率不高。ARM中采用的是事件方式,即通过执行SEV(Send Event)指令向其它应用处理器发送唤醒的事件。

WFI和WFE还有一种变体形式,WFIT和WFET,其中的T是超时(timeout)的意思,也就是说,唤醒机制多了一种超时的方式,没有中断或者事件产生,时间到了也会发出唤醒。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19259

    浏览量

    229654
  • 指令
    +关注

    关注

    1

    文章

    607

    浏览量

    35694
  • 中断
    +关注

    关注

    5

    文章

    898

    浏览量

    41471
  • wfi
    wfi
    +关注

    关注

    0

    文章

    2

    浏览量

    1464

原文标题:ARM系列 -- WFI和WFE

文章出处:【微信号:Ithingedu,微信公众号:安芯教育科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32F0 stop模式WFIWFE区别是什么?

    同题:STM32F0 stop模式WFIWFE区别?求大神指点,谢谢!
    发表于 04-16 06:39

    L138-arm不能进入wfi模式

       在L138的arm中执行一个小程序,希望执行完成之后进入wfi,因此写了一个汇编 .global   _armidle _armidle: mcr p15,#0,r0,c7,c0,#4
    发表于 06-21 07:00

    ARM 无法进入WFI 模式

    我们的是使用OMAP138, ARM使用linux系统, DSP 是BIOS系统 现在想要让ARM 的linux 系统进入WFI 模式( ARM Wait-For-Interrupt
    发表于 06-21 12:51

    STM32低功耗模式有哪几种

    方式:**内核寄存器SLEEPDEEP = 0,调用WFIWFE进入睡眠模式。SLEEPONEXIT = 0 立即睡眠,SLEEPONEXIT = 1,退出睡眠。唤醒方式:_WFI任意中断唤醒。_
    发表于 08-02 08:06

    一文详解ARM指令ARM汇编

    1、2、3、ARM嵌入式开发之ARM指令ARM汇编入门4、ARM嵌入式开发之ARM汇编高级教程
    发表于 12-23 06:45

    ARM是怎样使用多种低功耗模式来节省功耗的

    1. 简介本文STM32 为例, Crotex 系列属于 ARMv7 架构。ARMv7-M 支持使用等待中断 (WFI) 和等待事件 (WFE) 指令作为系统电源管理的一部分;ARMv7-M 本身有
    发表于 02-11 07:26

    求分享基于WFE的睡眠示例

    你好 ,我想获得一些基于 WFE 的睡眠示例。在 stm32cube 示例中,我看到它们中的大多数都类似于基于 WFI 的示例。请求某人帮助我获取此信息。提前致谢。
    发表于 02-08 07:05

    arm汇编指令详解

    arm汇编指令详解
    发表于 02-11 10:51 216次下载
    <b class='flag-5'>arm</b>汇编<b class='flag-5'>指令</b><b class='flag-5'>详解</b>

    arm指令详解手册(精华)

    arm指令详解手册
    发表于 03-03 16:30 242次下载
    <b class='flag-5'>arm</b><b class='flag-5'>指令</b><b class='flag-5'>详解</b>手册(精华)

    ARM指令详解

    ARM指令详解 内容提要 ARM指令ARM指令
    发表于 03-09 09:39 263次下载
    <b class='flag-5'>ARM</b><b class='flag-5'>指令</b>集<b class='flag-5'>详解</b>

    详解ARM常用的伪指令资料下载

    电子发烧友网为你提供详解ARM常用的伪指令资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-11 08:54 13次下载
    <b class='flag-5'>详解</b><b class='flag-5'>ARM</b>常用的伪<b class='flag-5'>指令</b>资料下载

    ARM系列-WFIWFE指令介绍

    今天来看两个特殊的指令WFI(Wait For Interrupt)和WFE(Wait For Event)。这两条指令的语法非常简单,不需要带任何参数。
    发表于 05-29 17:47 4387次阅读

    ARM系列—WFIWFE特殊指令

    今天来看两个特殊的指令WFI(Wait For Interrupt)和WFE(Wait For Event)。
    发表于 06-07 17:32 1081次阅读

    处理器是如何处理WFIWFE的?

    先看WFI,首先,我们研究一下ARM处理器进入低功耗状态的机制。
    发表于 06-28 12:35 912次阅读

    STM32的三种低功耗模式介绍

    接下来我们就详细的看一下这三者有何区别。 1、睡眠(Sleep)模式 ● 进入睡眠模式 进入睡眠模式有两种指令WFI(等待中断)和WFE(等待事件)。根据Cortex-M内核的SCR(系统控制
    的头像 发表于 07-30 11:14 7242次阅读
    STM32的三种低功耗模式介绍