SMI今年的财报好成这副样子,鬼知道他们的攻城狮经历了什么!
我大SSDFans居然没有写过关于SMI的文章,说明我们还没有使出洪荒之力!
对于一块SSD,尤其是用于消费级的SSD,为什么功耗这么重要?
因为对于消费级来说最大的市场是OEM,而OEM市场里笔记本市场搭载已经是大势所趋!
笔记本与台式机相比的两大特点:
- 用电池 – 每个看小电影的宅男,都希望跟蛋博士一样充电5分钟,看片2小时;
- 结构相对紧凑
要求电池寿命长,要求SSD功耗低,结构紧凑,要求SSD体积小,发热少,这都要求SSD必须控制功耗。
SMI的主控是如何进行功耗控制的呢?见下图:
又看到了NVMe Power State这个熟悉的配方,木有错 – 跟PMC的做法差不多:
- 提前在FW中定义好一系列不同的Power State,不同的Power State配置PCIe Link状态,SSD Active/Idle,功耗比,退出时延;
- 通过NVMe下发切换Power State的指令;
从Power这列可以看到,功耗可以降低到正常工作状态下的40%,甚至更低,仅靠调整PCIe Link State是没办法省这么多电的。
这里就引入了Power Domain的概念:
从这张图可以看到,SMI主控把芯片内部的模块划分成了几个部分,学名叫Power Domain, 简称PD
- PD #0: Always-on/PCIe PHY
- PD #1:最大的一部分,包括Sys Bus, Buffer, NVMe DMA, LDPC/RAID, NAND CTRL
- PD #2:CPU/DRAM
整个节能逻辑的大致演绎如下:
- Host一段时间没有读写,触发SSD的PCIe link进入ASPM,退出Latency非常短;
- Host继续Idle,PCIe Link进入ASPM Substate,SSD仍处于Active mode,退出Latency也挺短;
- Host继续Idle,主控操作PD#1(关闭NVMe模块,各级FIFO,ECC模块,Flash Controller等),SSD进入Idle Mode,退出Latency明显延长;
- Host继续Idle,主控操作PD#2, 将CPU进入Sleep mode,DRAM进入Self refresh mode, 进入最高节能模式,退出Latency最长;
最后,为了更好的控制发热,SMI主控会设置一个温度阈值,当芯片温度接近阀值时,主动降低时钟频率,使温度降低。
等温度回到指定范围,再把时钟调会正常工作频率。