前两天江波龙公号发布了“不止于性能,FORESEE P78A SSD斩获多项兼容平台认证”一文,阿呆安排我读一下然后写一点感想。
首先,我喜欢“不止于性能”这五个字,有大量的SSD评测文章:贴产品图,贴PCB图,贴产品参数,然后贴个性能测试的数据(而且连FIO都懒得用,直接CrystalDiskMark)。在看了千篇一律的各种性能测试之后,这次的东西有点意思。
其次,我觉得Modern Standby有点意思,在了解Modern Standby之前,有必要简单了解一下ACPI规范中的S0~S5状态。
S0:正常工作状态
S1:也称为POS(Power on Suspend,CPU停止工作),其他的硬件设备仍然正常工作;
S2:使用不多,我们不做介绍
S3:待机(Suspend to RAM), 即是把 windows 当前存在内存中的所有资料保存不动,然后进入“假关机”。此时除了内存需要电源来保持资料以外,其它的设备,装置全部停止供电。
S4: 休眠(Suspend to Disk), 即是把 windows 内存中的资料完整的保存在硬盘中,等开机时就直接从保存这些资料的地方直接完整的读到内存中,不需要跑一堆应用程序。
S5: 关机状态
Modern Standby介绍
S3/S4虽然能省电,延长笔记本电脑的使用时间,但是恢复时间过长,已经无法适应当前我们的使用习惯。现在的用户都被智能手机惯坏了,拿出手机点亮屏幕就要马上开始操作,如果要等个10来秒那简直不能忍耐。Intel和微软顺势推出了Modern Standby的概念,希望能在笔记本上实现类似手机的体验。比如,用户合上屏幕就开始省电,打开屏幕就马上恢复使用,这样就能做到在不影响客户体验的情况下节省电力。
Modern Standby既不是S0,也不是S1,因为CPU并不是处于全速工作状态(S0),但是也没有完全关闭(S1)。我们希望手机在屏幕关闭的时候能够放歌,收微信,同理Modern Standby也赋予笔记本在省电模式下在后台处理任务的能力,比如收邮件。那我们可以考虑将其理解为S0.5。
那么Modern Standby对NVMe SSD的要求是什么呢?说通俗一点,尽量省电的情况下同时支持读写,对此时的读写性能没有高要求(比如只有平时50%水平),但是要求恢复时间短。如果用技术语言表达,就是要求SSD实现高效的NVMe Power State管理。
NVMe 1.2协议中引入Power State的概念:
Power objective和Performance Objective: 系统层面的应用有功耗和读写性能的目标,这个是输入。
Power Manager (Host Software): 这个我理解是NVMe Controller Device Driver
NVMe Express Power State:NVMe规定(Identify Controller Data Structure)最多支持32个Power State Descriptor,其中Power State Descriptor 0是必须support 的,其他都是可选。
Host是如何通过NVMe Power State来控制SSD的呢?大致流程如下:
1.Host给Controller发个Identify Controller Command, Controller会回复一个4K的数据包。
2.Host解析Byte 263获知Controller支持的Power State的数量
3.Host解析Byte 2079:3140获知每个Power State下Controller的具体属性
例如Controller可以支持四种Power State
PS0: 均衡模式 (平衡考虑功耗,读写性能,延迟,但每个都不突出)
PS1: OLTP模式 –大量随机小IO (要求低延迟)
PS2: 视频模式 –大小连续大IO (要求高吞吐量)
PS3: 绿色模式 – 低能耗
4.Host根据正在运行的应用(例如邮箱服务,数据库服务,视频服务和股票交易服务等)选择让Controller合适的Power State,具体实现是通过Set Feature Command(Feature ID 0x02),在DW 11的Bit 04:00写入
5.同理,Host也可以通过Get Feature Command来获知当前Controller所处的Power State
设几个Power State跳来跳去容易,但具体的跳转策略才是这个技术的核心价值所在:结合IO Pattern,功耗要求和Enter/Exit Latency来决定跳不跳,何时跳,跳哪里。要设定一个优秀跳转策略,相信没有人能够比Intel + Microsoft更有发言权,而能通过他们的认证,说明P78A完全符合两位大佬对于功耗和性能两方面之间平衡的理解。
再次,UNH IOL也有点意思,主要体现在:
1.这不是一个强制的认证
可以不参加,不影响卖盘
但国际大厂一般都参加
2.这是一个很贵的认证
报名成为会员要花钱(每年数千到上万不等)
成为会员获取License文件以后,就获得送测资格了,每年官方会定期举行插拔大会让厂商携带样品集中起来进行测试,测试包括两部分:
1.NVMe Conformance Test Suite (协议一致性测试)
2.NVMe Interoperability Test Suite (交互性测试)
每年的官方测试活动次数有限,每次大概3天左右,厂商这边在官方送测前都会自己先进行预测试,预测试一般是跑UNH IOL PC Edition,然而官方正式测试一般是跑UNH IOL LeCroy Edition
你也可以预测试跑UHN IOL LeCroy Edition, 但需要先采购仪器,一套LeCroy的PCIe Analyzer和Exerciser加起来需要20万美金
3.这是一个很花功夫的认证
UNH IOL认证会考验SSD对NVMe协议支持的方方面面,以UNH IOL PC Edition 为例,测试项目一共有10个Group,分别是:
Group 1: Admin Command Set
Group 2: NVM Command Set
Group 3: NVM Features
Group 4: Controller Registers
Group 5: System Memory Structure
Group 6: Controller Architecture
Group 7: Reservations
Group 8: Autonomous Power State Transitions
Group 9: Namespace Management
Group 10: PCI Express Capability Registers
以Group 2里的read command为例,就有以下测试项目:
Case 1: Valid Read, LR (Limited Retry)=0,FUA (Force Unit Access)=0
Case2:SLBA out of Range
Case 3:SLBA in range,NLB goes out of range
Case 4:SLBA out of range,NLB>MDTS
Case 5:SLBA out of Range, but lower dword=00000000
Case 6: Invalid namespace ID
Case 7: Invalid Namespace ID and SLBA out of range
Case 8:Valid Read,LR=0,FUA=1
Case 9:Valid Read,LR=1,FUA=0
Case 10:Valid Read,LR=1,FUA=1
Case 11:Valid Read, Invalid PRP address offset
可以看到,一致性测试除了正常read操作,基本上把read命令出可能出现的各种错误情况都考虑到了。这些错误情况每一个看起来都不复杂,固件处理起来也并不困难,但是要把所有命令的各种错误情况都处理的明明白白,固件工程师们需要投入大量的精力。
写在最后,P78A顺利通过Intel Modernstandby认证,我点赞。在UNH IOL这个非强制认证上花功夫,我喜欢。
高端微信群介绍 |
|
创业投资群 |
AI、IOT、芯片创始人、投资人、分析师、券商 |
闪存群 |
覆盖5000多位全球华人闪存、存储芯片精英 |
云计算群 |
全闪存、软件定义存储SDS、超融合等公有云和私有云讨论 |
AI芯片群 |
讨论AI芯片和GPU、FPGA、CPU异构计算 |
5G群 |
物联网、5G芯片讨论 |
第三代半导体群 |
氮化镓、碳化硅等化合物半导体讨论 |
存储芯片群 |
DRAM、NAND、3D XPoint等各类存储介质和主控讨论 |
汽车电子群 |
MCU、电源、传感器等汽车电子讨论 |
光电器件群 |
光通信、激光器、ToF、AR、VCSEL等光电器件讨论 |
渠道群 |
存储和芯片产品报价、行情、渠道、供应链 |
< 长按识别二维码添加好友 >
加入上述群聊
带你走进万物存储、万物智能、
万物互联信息革命新时代