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

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

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设备休眠了,它就不能及时的响应主机的命令,因为它需要先退出休眠(比如需要把休眠之前保存的上下文重新加载,这往往比较花时间),然后再响应主机命令。睡觉是个技术活,在追求最大节能的同时,还要兼顾用户体验。

分类目录 存储, 技术文章.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。