转自:蛋蛋读UFS之十:UFS电源管理

UFS是手机存储设备,因此对功耗要求很高。我们来看看UFS的电源管理。

三个供电电压,VCC,VCCQ和VCCQ2,分别给UFS设备模块供电。UFS设备主要包括三部分:前端UFS接口(M-PHY),UFS控制器和闪存介质(图中的Memory模块)。VCC给闪存介质供电,VCCQ一般给闪存输入输出接口和UFS控制器供电,VCCQ2一般给M-PHY或其它一些低电压模块供电。

UFS2.1中,三者电压值为:

我们知道,UFS协议采用MIPI的M-PHY作为物理层和UniPro作为其数据链路层。M-PHY有高速模式(High Speed Mode, HS-MODE)和低速模式 (Low Speed Mode, LS-MODE)。其中,高速模式下,M-PHY有两种状态:STALL和HS-BURST。

低速模式下,M-PHY有三种状态:LINE-CFG,SLEEP和PWM-BURST。

当链路上没有数据传输时,M-PHY会自动切换到STALL或者SLEEP状态下,这两种状态为省电状态。

除此之外,M-PHY还有一种更加省电的状态,那就是HIBERN8 (Hibernate,休眠状态),这种状态下,M-PHY极为省电。UFS主机和UFS设备不可能一直交互数据,总有闲下来的时候。当UFS主机没有读写UFS设备,它会让彼此链路进入休眠状态,即HIBERN8。那UFS主机如何通知M-PHY切换到休眠状态呢?

前面提到,设备管理器可以略过传输层,直接管理与控制互联层:

主机设备管理器可以通过原语(Primitive)直接与UFS互联层(UIC,即MIPI的UniPro和M-PHY)通信。除了上图中所示的reset原语,UFS还包括让UIC进入和退出休眠的原语:DME_HIBERNATE_ENTER和DME_HIBERNATE_EXIT。

这是UFS主机和设备之间链路的省电模式,对UFS设备来说,链路只是整个UFS设备的一部分。一个UFS设备是否省电,除了看其链路,还需要考虑UFS控制器、存储介质等是否省电,即看整个UFS设备是否有好的电源管理。

UFS定义了4种基本功耗模式:Active,Idle,Power Down和Sleep(简称AIDS),外加3个过渡功耗模式:Pre-Active, Pre-Sleep和Pre-PowerDown,一共是7种功耗模式。非常4+3!

Active模式:UFS设备在执行命令或者做后台任务(Background Operation)时处于这种状态;

Idle模式:UFS设备空闲时,即既没有来自UFS主机的命令,自身也没有后台任务需要处理,设备就处于该状态;

Sleep模式:闲得瞌睡了。睡眠模式下,VCC电源可能被切断(取决UFS设备设计)。VCC一般给闪存供电,即切断闪存供电。

Power Down模式:掉电模式下,所有电源供电VCC, VCCQ和VCCQ2都可能被掐断(取决UFS设备设计),该模式是最省电的功耗模式了。

这些模式之间的转换如下图:

我们看到,触发模式之间转换的很多是SSU,那么什么是SSU? SSU是Start Stop Unit的缩写,它是UFS协议中的一个基本命令,主机用它来切换UFS设备的功耗模式。

具体命令可以参看UFS spec。

注意,UFS设备的这些功耗状态,和前面说的M-PHY接口的STALL,SLEEP或者HIBERN8状态是独立的,两者没有必然联系。比如,当前M-PHY处于HIBERN8状态,UFS设备可以处于以上状态中的任何一种,比如UFS设备可以是处于Active状态,没有要求说你休眠了我也得跟着休眠。

一个优秀的员工,不是老板push一下,然后才往前走一步,而是能主动的去承担一些任务。一个好的UFS设备,不是等着主机发功耗切换命令来进入省电模式,而是自己能主动做一些事情来省电。

下面就是一个优秀UFS设备需要具备的素质。

比如,UFS刚上电时,UFS进入Active状态,一段时间如果没有来自主机的命令,自己内部也没有后台任务要处理,UFS设备将进入Idle状态。Idle意味着无事可做,这时候主机也没有发任何SSU命令要求UFS设备进入指定的状态(老板也没有叫你去做什么),好的UFS设备,这个时候就要想想怎么去省电。举例来说,如果当前M-PHY处于HIBERN8状态,说明主机目前不会访问UFS设备,因此,UFS设备可以做一些节能设计:比如把当前UFS设备的软硬件上下文保存到闪存,然后切断所有电源以达到省电目的。待M-PHY接口退出HIBERN8状态,UFS设备上电,然后把软硬件上下文加载运行。

老板没有叫你去干活,你主动的去把活干了,这样的员工哪个老板不喜欢?

省电和用户体验(命令响应快慢)其实是个矛盾。因为如果UFS设备休眠了,它就不能及时的响应主机的命令,因为它需要先退出休眠(比如需要把休眠之前保存的上下文重新加载,这往往比较花时间),然后再响应主机命令。睡觉是个技术活,在追求最大节能的同时,还要兼顾用户体验。

蛋蛋读UFS之十:UFS电源管理相关推荐

  1. 深入理解Linux电源管理(0.2)

    学习方法论 写作原则 标题括号中的数字代表完成度与完善度 0.0-1.0 代表完成度,1.1-1.5 代表完善度 0.0 :还没开始写 0.1 :写了一个简介 0.3 :写了一小部分内容 0.5 :写 ...

  2. 蛋蛋读UFS之三:UFS数据包UPIU

    转自:蛋蛋读UFS之三:UFS数据包UPIU UFS中流淌的数据包叫做UPIU(UFS Protocol Information Unit,UFS协议信息单元),它是固定格式的数据结构,用以传输应用层 ...

  3. 蛋蛋读UFS之二:UFS协议栈

    转自:蛋蛋读UFS之二:UFS协议栈 任何一种接口或者协议,都是由一个完整的协议栈组成的.UFS也不例外. UFS定义了一个完整的协议栈.从上到下,依次为应用层.传输层.数据链路层和物理层.UFS使用 ...

  4. 蛋蛋读UFS之九:UFS数据安全

    转自:蛋蛋读UFS之九:UFS数据安全 前面提到RPMB使用认证机制和抗重放攻击机制保障数据不被黑客攻击,除此之外,UFS还有其它一些手段来保护用户数据安全,这一章节我们来关注UFS数据安全. UFS ...

  5. 蛋蛋读UFS之一:UFS简介

    转载:蛋蛋读UFS之一:UFS简介 我们知道,我们电脑由三大件组成:CPU,内存和硬盘.CPU用以计算和控制,内存用以临时存储程序运行时所需的数据(掉电数据丢失),而硬盘用以长久保存数据(掉电数据不丢 ...

  6. 蛋蛋读UFS之六:UFS设备初始化和启动

    转自:蛋蛋读UFS之六:UFS设备初始化和启动 这一节讲讲UFS初始化. 初始化和启动包括三个阶段:部分初始化,加载启动代码(可选)和初始化完成. 部分初始化阶段 这个阶段开始于上电或者设备重启,它涉 ...

  7. android电源驱动程序,[转]Android虚拟电源管理驱动

    Android系统如果没有电源管理相关的驱动程序,在启动时将会提示如下错误: I/SystemServer(   50): Starting Battery Service. E/BatterySer ...

  8. FPGA内部电源管理详解

    做了这么长时间的FPGA的设计,也看了很多这方面的书籍资料,不管是编程还是调试,一直都只在关心有没有实现功能,没有去深入理解FFPGA的内部结构,接下来这几篇文章将着重分析FPGA设计的各个部分细节. ...

  9. MTK6573电源管理(PM)小结

    继续MTK平台的研究 开始研究电源管理,因为PM永远是嵌入式的核心技术,所以静下来走一遍流程. MTK启动的过程: 硬件板载的启动入口为 static __init int board_init(vo ...

最新文章

  1. 5G NGC — 关键技术 — 网络切片 — 概述
  2. java实现int类型数组元素拷贝
  3. nssl1258-naive的瓶子【贪心】
  4. BZOJ.3524.[POI2014]Couriers(主席树)
  5. Mysql5.6.23免安装配置
  6. 系统架构师 项目经理 哪个更有前景_OLED和QLED电视有什么区别?哪个更好更有前景?...
  7. JUC学习之CountDownLatch入门
  8. DOS-强制结束进程命令(ntsd命令/taskkill命令)使用教程
  9. 计算机蓝屏代码0x0000007b,开机出现蓝屏代码0X0000007B原因分析及解决方法
  10. 台式计算机windows7系统怎么做,台式电脑怎么在线一键重装win7操作系统
  11. dw8html合并单元格,DW 做一个table表 对单元格进行合并
  12. keil symbol外部符号定义
  13. 如何科学的建立自己的个人网站
  14. PHP内裤,用sqlmap来扒下她的内裤吧~
  15. am335x linux 的uboot工作流程.doc,am335x uboot2016.05 (MLO u-boot.img)执行流程(转)
  16. 谷歌您的个人资料_如何控制其他人可以看到的有关您的Google个人资料的信息
  17. OCR:通用数码管图像识别训练和使用
  18. 什么是 SAP Support Package Stack
  19. BA_重投影误差e对于相机的位姿ξ和对空间点的坐标P的雅可比矩阵的推导
  20. 加班996,生病ICU!趁着120,这个救命利器值得被关注

热门文章

  1. 这一次,522 道腾讯大厂真题汇总!
  2. 周鸿祎构建360客户端帝国:可进军搜索战百度
  3. activiti7数据库表结构参考
  4. mysql undo mvvc_MySQL之MVVC原理
  5. 第一性原则:伊隆·马斯克(Elon Musk)论自我思考的力量 - jamesclear
  6. 微软服务器名字,微软服务器软件名字最终敲定?
  7. mysql去重查询并将结果放入新表
  8. unreal engine实现vive手柄控制
  9. 计算机在英语口语教学中的应用,英语口语论文,关于小组合作学习在中职英语口语教学中的实践运用相关参考文献资料-免费论文范文...
  10. VIM 粘贴缩进问题解决