0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳解ARM WFI和WFE指令

安芯教育科技 ? 來源:老秦談芯 ? 2023-06-07 17:32 ? 次閱讀

今天來看兩個特殊的指令,WFI(Wait For Interrupt)和WFE(Wait For Event)。這兩條指令的語法非常簡單,不需要帶任何參數(shù)。如果大家讀過前面文章,肯定對中斷(interrupt)不陌生。至于事件(event),與中斷有點像,不同的是處理器對二者的處理方式不一樣??梢韵葘⑹录斫獬商厥獾闹袛唷?/p>

先看WFI,首先,我們研究一下ARM處理器進入低功耗狀態(tài)的機制。當(dāng)一個處理器核的工作負(fù)載不高時,可以通過降壓降頻(DVFS)的方式來讓處理器運行在較低的頻率,從而降低整個芯片的功耗。如果處理器的沒有工作負(fù)載,完全空閑下來,這時就需要其它方法讓處理器進入更低的功耗模式。如果大家對ACPI有一些了解,就知道其中定義的“睡眠(sleep)”模式就有好幾種,每種模式對應(yīng)的電源時鐘狀態(tài)不同。處理器芯片進入空閑狀態(tài)的大體順序應(yīng)該是這樣的,應(yīng)用處理器(Application Processor)判斷是否具備進入空閑狀態(tài)的條件,如果滿足條件則進行一些準(zhǔn)備工作;發(fā)消息給系統(tǒng)控制器(System control processor);等待全部操作執(zhí)行完;執(zhí)行WFI進入空閑狀態(tài);等待系統(tǒng)控制器做出下一步動作,或者關(guān)閉時鐘,或者關(guān)閉電源等等。

從WFI這個名字可以看出,喚醒(wake up)處理器的一個機制就是發(fā)送中斷給處理器。與A系列處理器搭配的中斷處理器是GIC,這在前面介紹過。GIC接到中斷后,產(chǎn)生喚醒信號給系統(tǒng)控制器或者是電源管理模塊(PowerManagement Unit),系統(tǒng)控制器或者PMU根據(jù)處理器核的狀態(tài)以及系統(tǒng)狀態(tài),決定下一步的動作。如果喚醒信號是給系統(tǒng)控制器,則可以考慮接到系統(tǒng)控制器的中斷處理接口,比如,采用M系列作為系統(tǒng)控制器時,可以接到NVIC(Nested Vectored Interrupt Controller)。喚醒機制要根據(jù)具體情況具體分析,法無定法。

WFE與WFI很像,只不過等待的是事件,也就是說系統(tǒng)可以通過發(fā)送事件來喚醒應(yīng)用處理器。WFE的一個典型應(yīng)用場景是自旋鎖。當(dāng)多個應(yīng)用處理器競爭同一個臨界區(qū)資源時,只有一個應(yīng)用處理器能獲得權(quán)限,其它的應(yīng)用處理器需要等待臨界區(qū)資源被釋放,也就是這些應(yīng)用處理器“自旋”。當(dāng)然操作系統(tǒng)也可以采取其它的處理方式,比如把時間片分給其它的應(yīng)用程序,不過這不在今天的研究范疇。顯然,應(yīng)用處理器簡單的“自旋”對于功耗不友好,一個解決辦法就是讓這些“自旋”的應(yīng)用處理器進入一種低功耗模式,獲得臨界區(qū)資源的應(yīng)用處理器在完成當(dāng)前進程后,喚醒這些應(yīng)用處理器去重新競爭臨界區(qū)資源。這時的喚醒機制不宜采取中斷方式,因為效率不高。ARM中采用的是事件方式,即通過執(zhí)行SEV(Send Event)指令向其它應(yīng)用處理器發(fā)送喚醒的事件。

WFI和WFE還有一種變體形式,WFIT和WFET,其中的T是超時(timeout)的意思,也就是說,喚醒機制多了一種超時的方式,沒有中斷或者事件產(chǎn)生,時間到了也會發(fā)出喚醒。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19038

    瀏覽量

    228457
  • 指令
    +關(guān)注

    關(guān)注

    1

    文章

    604

    瀏覽量

    35582
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    894

    瀏覽量

    41321
  • wfi
    wfi
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    1452

原文標(biāo)題:ARM系列 -- WFI和WFE

文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    STM32F0 stop模式WFIWFE區(qū)別是什么?

    同題:STM32F0 stop模式WFIWFE區(qū)別?求大神指點,謝謝!
    發(fā)表于 04-16 06:39

    L138-arm不能進入wfi模式

    ?? 在L138的arm中執(zhí)行一個小程序,希望執(zhí)行完成之后進入wfi,因此寫了一個匯編 .global?? _armidle _armidle: mcr p15,#0,r0,c7,c0,#4
    發(fā)表于 06-21 07:00

    ARM 無法進入WFI 模式

    我們的是使用OMAP138, ARM使用linux系統(tǒng), DSP 是BIOS系統(tǒng) 現(xiàn)在想要讓ARM 的linux 系統(tǒng)進入WFI 模式(?ARM Wait-For-Interrupt
    發(fā)表于 06-21 12:51

    STM32低功耗模式有哪幾種

    方式:**內(nèi)核寄存器SLEEPDEEP = 0,調(diào)用WFIWFE進入睡眠模式。SLEEPONEXIT = 0 立即睡眠,SLEEPONEXIT = 1,退出睡眠。喚醒方式:_WFI任意中斷喚醒。_
    發(fā)表于 08-02 08:06

    一文詳解ARM指令ARM匯編

    1、2、3、ARM嵌入式開發(fā)之ARM指令ARM匯編入門4、ARM嵌入式開發(fā)之ARM匯編高級教程
    發(fā)表于 12-23 06:45

    ARM是怎樣使用多種低功耗模式來節(jié)省功耗的

    1. 簡介本文STM32 為例, Crotex 系列屬于 ARMv7 架構(gòu)。ARMv7-M 支持使用等待中斷 (WFI) 和等待事件 (WFE) 指令作為系統(tǒng)電源管理的一部分;ARMv7-M 本身有
    發(fā)表于 02-11 07:26

    求分享基于WFE的睡眠示例

    你好 ,我想獲得一些基于 WFE 的睡眠示例。在 stm32cube 示例中,我看到它們中的大多數(shù)都類似于基于 WFI 的示例。請求某人幫助我獲取此信息。提前致謝。
    發(fā)表于 02-08 07:05

    arm匯編指令詳解

    arm匯編指令詳解
    發(fā)表于 02-11 10:51 ?215次下載
    <b class='flag-5'>arm</b>匯編<b class='flag-5'>指令</b><b class='flag-5'>詳解</b>

    arm指令詳解手冊(精華)

    arm指令詳解手冊
    發(fā)表于 03-03 16:30 ?242次下載
    <b class='flag-5'>arm</b><b class='flag-5'>指令</b><b class='flag-5'>詳解</b>手冊(精華)

    ARM指令詳解

    ARM指令詳解 內(nèi)容提要 ARM指令ARM指令
    發(fā)表于 03-09 09:39 ?263次下載
    <b class='flag-5'>ARM</b><b class='flag-5'>指令</b>集<b class='flag-5'>詳解</b>

    詳解ARM常用的偽指令資料下載

    電子發(fā)燒友網(wǎng)為你提供詳解ARM常用的偽指令資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 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)。這兩條指令的語法非常簡單,不需要帶任何參數(shù)。
    發(fā)表于 05-29 17:47 ?3938次閱讀

    ARM系列—WFIWFE特殊指令

    今天來看兩個特殊的指令,WFI(Wait For Interrupt)和WFE(Wait For Event)。
    發(fā)表于 06-07 17:32 ?936次閱讀

    處理器是如何處理WFIWFE的?

    先看WFI,首先,我們研究一下ARM處理器進入低功耗狀態(tài)的機制。
    發(fā)表于 06-28 12:35 ?814次閱讀

    STM32的三種低功耗模式介紹

    接下來我們就詳細(xì)的看一下這三者有何區(qū)別。 1、睡眠(Sleep)模式 ● 進入睡眠模式 進入睡眠模式有兩種指令WFI(等待中斷)和WFE(等待事件)。根據(jù)Cortex-M內(nèi)核的SCR(系統(tǒng)控制
    的頭像 發(fā)表于 07-30 11:14 ?6922次閱讀
    STM32的三種低功耗模式介紹