WFE and WFI
郑重声明: 该文章转载于以下博客园–博主yooooooo
博客园-博主yooooooo
此文对于小菜学习帮助很大,小菜实在是忍不住重新写了一遍加深理解。
WFE &WFI
WFI: Wait for interrupt
WFE: Wait for event
两者均可以让ARM核进入low-power standby模式的指令,由ARM architecture定义,由ARM core实现。
WFI和WFE
相同点
WFI和WFE的功能非常类似,以ARMv8-A为例(参考DDI0487A_d_armv8_arm.pdf的描述),主要是“将ARMv8-A PE(Processing Element, 处理单元)设置为low-power standby state”。
需要说明的是,ARM architecture并没有规定“low-power standby state”的具体形式,因而可以由ARM core自行发挥,根据ARM的建议,一般可以实现为standby(关闭clock、保持供电)、dormant、shutdown等等。但有个原则,不能造成内存一致性的问题。以Cortex-A57 ARM core为例,它把WFI和WFE实现为“put the core in a low-power state by disabling the clocks in the core while keeping the core powered up”,即我们通常所说的standby模式,保持供电,关闭clock。
不同点
那它们的区别体现在哪呢?主要体现进入和退出的方式上。
对WFI来说,执行WFI指令后,ARM core会立即进入low-power standby state,直到有WFI Wakeup events发生。
而WFE则稍微不同,执行WFE指令后,根据Event Register(一个单bit的寄存器,每个PE一个)的状态,有两种情况:如果Event Register为1,该指令会把它清零,然后执行完成(不会standby);如果Event Register为0,和WFI类似,进入low-power standby state,直到有WFE Wakeup events发生。
使用场景
WFI: 一般用于cpuidle。
WFE: WFE的一个典型使用场景,是用在spinlock中(可参考arch_spin_lock,对arm64来说,位于arm64/include/asm/spinlock.h中)。spinlock的功能,是在不同CPU core之间,保护共享资源。使用WFE的流程是:
a)资源空闲
b)Core1访问资源,acquire lock,获得资源
c)Core2访问资源,此时资源不空闲,执行WFE指令,让core进入low-power state
d)Core1释放资源,release lock,释放资源,同时执行SEV指令,唤醒Core2
e)Core2获得资源
以往的spinlock,在获得不到资源时,让Core进入busy loop,而通过插入WFE指令,可以节省功耗,也算是因祸(损失了性能)得福(降低了功耗)吧。
WFE and WFI相关推荐
- ARM系列之ARM多核指令WFE、WFI、SEV原理
目录 前言 使用场景概述 WFE.SEV 与 WFI 的作用与工作原理 SEV WFE WFI The Event Register WFE伪代码 WFE wake-up events WFI伪代码 ...
- WFE和WFI的区别
1. 概念: WFI(Wait for interrupt)和WFE(Wait for event)是两个让ARM核进入low-power standby模式的指令,由ARM architecture ...
- 最全讲解WFE和WFI进入低功耗的原理机制
快速链接: .
- SEV/WFE/WFI
目录 WFE SEV WFI WFE Wait For Event,是否实现此指令是可选的.如果此指令未实现,它将作为NOP指令来执行.如果指令作为NOP在目标处理器上执行,汇编程序将生成诊断消息. ...
- 姚文详(Joseph Yiu):《ARM Cortex-M0权威指南》中文版目录
JosephYiu是英国ARM公司微控制器系统级设计专家,是ARMCortex-M3和Cortex-M0设计者,作者高屋建瓴,创作了基于Cortex-M0的重量级作品--<ARMCortex-M ...
- FreeRTOS源码分析与应用开发09:低功耗Tickless模式
目录 1. STM32F4低功耗模式简介 2. Tickless模式详解 2.1 如何降低功耗 2.2 关闭SysTick的问题与解决方案 2.2.1 关闭SysTick导致系统节拍计数器停止 2.2 ...
- 正点原子STM32(基于HAL库)3
目录 高级定时器实验 高级定时器简介 高级定时器输出指定个数PWM 实验 高级定时器输出指定个数PWM原理 TIM1/TIM8 寄存器 硬件设计 课堂源码(输出指定个数PWM灯就闪几次) 程序设计 下 ...
- 嵌入式系统原理及应用课后习题答案
嵌入式系统原理及应用-基于ARM Cortex-M3内核的STM32F103系列微控制器 第1篇 系统篇 第1章嵌入式系统概述 第2章嵌入式系统开发 第2篇 内核篇 第3章ARMCortex-M3处理 ...
- ARM hint instruction-WFI(Wait For Interrupt)指令详解
WFI(Wait For Interrupt)指令是ARM中的一个Hint 指令,内核执行hint指令的时候不需要依赖额外的处理操作.WFI指令可以让CPU进入standby 模式,即低功耗模式,此时 ...
最新文章
- Step by step通过online方式做product archiving
- 【渝粤教育】电大中专跨境电子商务理论与实务 (20)作业 题库
- PHP $_SERVER['HTTP_REFERER'] 获取前一页面的 URL 地址
- mysql/mariadb主从复制
- 自己整理实现的python小工具
- python的get和post方式请求详解
- 随机森林 ---sklearn
- linux rz sz putty,PuTTY xshell rz sz命令实现上传下载到windows的方法
- Mac投屏软件推荐duet
- 超级外链工具-在线SEO超级外链群发工具免费
- python查缺补漏之decorate
- 2017年自动修复概述——Automatic Software Repair: A Survey [来自软件工程顶刊 TSE 2017]
- 程序开发心理学第四篇
- 金融安全资讯精选 2017年第二期:金融网络安全和反欺诈方法论_金融新兴技术成熟度几何?...
- 威斯康星大学麦迪逊计算机本科,威斯康星大学麦迪逊分校计算机专业为什么火?申请要求及学费详解!...
- 一到放假就稀里糊涂过
- 《感动中国》2005年度人物评选揭晓
- 国企数字化转型的难点及建议
- 我个人整理的AD/2000技巧,各位收藏吧!60多个。 转贴
- 【数据库原理及应用教程(第4版|微课版)陈志泊】【第三章习题】