1.5.5 功耗和其他剖析
1.SSD产品功耗
SSD中定义了以下几种功耗类型。
❑ 空闲(Idle)功耗:当主机无任何命令发给SSD,即SSD处于空闲状态但也没有进入省电模式时,设备所消耗的功耗。
❑ 最大峰值(Max active)功耗:这是SSD处于最大工作负载时的功耗。SSD的最大工作负载条件一般是连续写,让闪存并发忙写和主控ASIC满负荷工作,这时的功耗即为最大功耗。
❑ Standby/Sleep功耗:规范规定了SSD状态,包括Active(活跃)、Idle(空闲)、Standby(待机)和Sleep(睡眠),功耗值从Active到Sleep逐级递减,具体的实现由各商家自行定义。一般来讲,在Standby和Sleep状态下,设备应尽可能把不工作的硬件模块关闭,以降低功耗。一般消费级SSD在Standby和Sleep状态下功耗为100~500mW。
❑ DevSleep(深度睡眠)功耗:这是SATA和PCIe新定义的一种功耗标准,目的是在Standby和Sleep的基础上再降一级功耗,即主机和操作系统在休眠状态下,SSD关掉一切自身模块,处于极致低功耗模式,甚至是零功耗,一般功耗在10mW以下。
对于主机而言,功耗状态和SSD(作为设备端)状态是一一对应的,而功耗模式发起端是主机,SSD被动执行和切换对应功耗状态。
系统功耗状态(Power State,SATA SSD作为OS盘)如下。
❑ S0:工作模式,OS可以管理SATA SSD的功耗状态,D0或者D3都可以。
❑ S1:低唤醒延时的状态,系统上下文不会丢失(CPU和Chipset),硬件负责维持所有的系统上下文。
❑ S2:与S1相似,不同的是处理器和系统缓存上下文会丢失(OS负责维护缓存和处理器上下文)。收到唤醒请求后,从处理器的reset vector(重置向量)开始执行请求。
❑ S3:睡眠模式(Sleep),CPU不运行指令,SATA SSD关闭,除了内存之外的所有上下文都会丢失。硬件会保存一部分处理器和L2缓存以配置上下文,从处理器的reset vector开始执行唤醒请求。
❑ S4:休眠模式(Hibernation),CPU不运行指令,SATA SSD关闭,DDR内容写入SSD中,所有的系统上下文都会丢失,OS负责上下文的保存与恢复。
❑ S5:软关闭状态(Soft off state),与S4相似,但OS不会保存和恢复系统上下文。消耗很少的电能,可通过鼠标、键盘等设备唤醒。
进入功耗模式有一定的延时,退出功耗模式也有,通常恢复SSD到初始功耗模式所花费的时间更长,如表1-10所示。
表1-10 各种功耗模式下SSD进入和退出的时间
延时和性能之间存在某种平衡,频繁地在低功耗模式与正常模式之间进行切换一定会带来性能损失。对于SSD设备功耗模块设计而言,建议尽可能缩短低功耗模式的进入和退出时间。
从正常工作模式Active状态切换到低功耗模式,需要找到正确的切换时间。太短的时间会较早进入低功耗模式,但唤醒需要延时,进而带来主机端性能损失;太长的时间有利于维持性能,但牺牲了功耗。
总之低功耗是一个好的SSD特性,消费级应用出于低功耗需求,非常需要这个特性,但企业级应用为了维持性能,对低功耗的需求较弱。
最后,SSD各项功耗是SSD产品竞争力的一个方面,尤其是对功耗敏感的消费级SSD,最大写入功耗和低功耗是核心竞争力之一。最大写入功耗代表的是写入同样数据量所消耗的电能,主要是闪存写入功耗;低功耗是设备处于空闲或休眠状态时的功耗,这些对绿色能源数据中心等有很大意义。我们来看看几款消费级SSD的功耗对比,如图1-30所示。
最大写入功耗的对比(除了ASIC主控和板级PCB工作状态功耗,最大写入功耗和连续写性能紧密相关,写性能越高,功耗越高)如图1-31所示。
图1-30 AnandTech对比几款消费级SSD的HIPM或DIPM slumber模式下的功耗
图1-31 AnandTech对比几款SSD的最大写入功耗
2.最大工作功耗与发热控制
前面已解释过最大工作功耗,这里再次单独把最大工作功耗拿出来讨论,是因为当SSD一直处于最大工作功耗模式下,器件会存在发热问题。SSD中功耗最大的是ASIC主控和闪存模块,因此二者也是发热大户,当热量积累到一定程度时,器件会损坏,而这是不能容忍的。当外界环境温度(Ambient Temperature)处在50℃或60℃时,如不加以控制,发热的速度和损坏器件的概率也会随之增大。所以工作在最大负载下,控制SSD温度是固件设计要考虑的,此时重点是设计降温的处理算法。
算法的具体原理为:当SSD温度传感器侦测到温度达到阈值,如70℃时,固件会启动降温算法模块,限制闪存后端并发写的个数。由于SSD中发热大户是闪存芯片,故当写并发数减少后,温度自然下降。同时由于写并发数量下降,SSD写性能也会下降,这是性能和温度的一个折中。
当温度下降到阈值70℃以下后,SSD固件重新恢复到正常的后端写并发个数,性能上升,温度也会再次上升,如此往复,如图1-32所示。