DevSlp辣么好,Host还是不满足,还不断拿别人家的孩子PCIe SSD刺激SATA SSD。吹毛求疵的说DevSlp虽然功耗小,退出Latency也还行,但是进入DevSlp的时候Vcc还在,这样还是会有功耗,进而得寸进尺的要求Device在长期Idle后要把Power完全关掉…
在两者的博弈当中,SATA SSD作为Device永远是弱势的一方,需要考虑如何满足这个要求:在Host也就是系统处于S0 的情况下,让SATA SSD进入D3cold状态,这个就是 runtime D3,简称RTD3 。
了解一下以下概念能够更好的理解RTD3。
ACPI规定的Device Power State:
D0: Device处于工作状态,所有功能可用,功耗最高,所有设备都必须支持;
D0active:Device完成配置,随时准备工作
D1和D2是介于D3和D0之间的中间状态,D1比D2消耗更多的电能,保存更多的设备上下文,D1和D2是可选的,很多设备都没有实现这两个状态
D3hot: Device进入D3,Vcc还在, 设备可被软件枚举
D3cold: 设备完全切断电源,重新上电时系统需要重新初始化设备
来张表格更清晰
转换关系:
Partial和Slumber都是只针对SATA Link,而D State是针对整个SSD
系统Power State (SATA SSD作为OS盘):
S0:工作模式,OS可以管理SATA SSD的Power State,D0或者D3都可以
S1:是低唤醒延迟的状态,系统上下文不会丢失(CPU和Chipset),硬件负责维持所有的系统上下文。
S2: 与S1相似,不同的是处理器和系统cache上下文会丢失(OS负责维护cache和处理器上下文)。收到唤醒要求后,从处理器的reset vector开始执行
S3: 睡眠模式(Sleep),CPU不运行指令,SATA SSD Power off, 除了内存之外的所有上下文都会丢失。硬件会保存一部分处理器和L2 cache配置上下文,从处理器的reset vector开始执行。
S4:休眠模式(Hibernation), CPU不运行指令,SATA SSD Power off,DDR内容写入SSD中,所有的系统上下文都会丢失,OS负责上下文的保存与恢复。
S5: Soft off state,与S4相似,但OS不会保存和恢复系统上下文。消耗很少的电能,可通过鼠标键盘等设备唤醒
注意事项 :
- 需要主扳芯片组,OS和SSD三方都支持,RTD3 才能工作
- SSD可以支持D3 hot或者D3cold
- SSD不需要做硬件改动,厂家自行优化,保证从D3 回到D0的Latency不能长到能被用户察觉
- RTD3和DevSlp功能完全独立,可以互为补充更好的服务Host
- OS通过发送standby immediate command通知SSD把脏数据写入Flash,然后把SSD切到RTD3 State
-
与Partial,Slumber和DevSlp不同,进了RTD3 以后,SSD上之前Host做的设置全都没有了,重新上电的时候Host需要通过以下命令恢复之前的设置
- SET FEATURES
- DEVICE CONFIGURATION FREEZE LOCK
- SET MAX FREEZE LOCK
- SET MAX ADDRESS (If V_V attribute is not used)
- SECURITY FREEZE LOCK
- 其他等等
- SET FEATURES
使用了RTD3 后,腰不痛了,腿也不抽筋了
(功耗0,进入时间1.5S,退出时间0.6S)
RTD3不是SATA Device的专利,SATA HBA也可以,下图留给大伙自个儿参详。