PMC NVMe主控动态电源管理

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

PMC已经被MicroSemi收购了,说PMC是因为顺嘴 (反正Microsemi也不给稿费) J

PMC管自己的PCIe SSD主控叫Flashtec NVMe Controllers,一共有4款 PM8602 NVMe1016, PM8604 NVMe1032, PM8607 NVMe2016,PM8609 NVMe2032。其实主要是有两款,10xx和20xx,再分别支持16和32 channel。

在看官网的介绍时,有这么一段话介绍电源管理优化的。

里面提到一个术语,叫做Enterprise NVM Express dynamic power management interface。企业,动态,电源管理,接口,瞬间觉得有点高大上。

这块之前不了解,那就研究一下。

第一个问题,什么是Enterprise NVMe?

Bing了半天搜不到。先去问SSDFans的两位领导阿呆和蛋蛋,都不理我。然后去问了内部高人冬瓜哥和外部高人唐杰,都说没听过,基本确认加上Enterprise这个前缀是为了提升Bigger。

第二个问题, NVMe电源管理有些啥?

一顿查,查到下面这个Roadmap

  1. Autonomous power transition
  2. Active/Idle Power
  3. RTD3

这是NVMe做PM大概的范围,上面这些术语我就不翻译了,大家都是过了4,6级的人。

第三个疑问,这个Dynamic Interface是什么?

这个翻NVMe spec (NVMe 1.2a),看下面的highlight的部分,PMC说的动态接口应该就是对应NVMe电源管理这部分。

NVMe 1.2a Section 8.4

PMC的官方介绍

看一下NVMe里给出的这样动态电源管理的框图。

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 的,其他都是可选。

当然,如果只支持一个,也别玩什么Dynamic Management了。

。。。

。。。

每一个Power State Descriptor 里有些什么属性?看Identify – Power State Descriptor Data Structure,如下图





每个Power State Descriptor数据结构为32 Byte,里面包括了该Power State下各种属性:

Active Power Scale: 该Power state下Active模式功耗的粒度

Active Power: 该Power state下Active模式的最大平均功耗, 这个值乘以上面的Scale, 就是实际功耗值

Relative Write Latency: 该Power state下的写延迟, 值越小代表延迟越低 (这个值的分级级数必须小于Controller支持的Power State数量,Controller不能一边说只支持5个Power State,一边说可以支持10种写入延迟,这个是耍流氓)

Relative Write Throughput: 该Power state下的写入吞吐量:值越小代表吞吐量越高 (这个值的分级级数同样必须小于Controller支持的Power State数量)

解释了Active和Write,Idle和Read也就理解了。Host和Controller之间,就通过对这些Field的修改,实现下面的沟通。

Entry Latency: 进入该Power State的时间(微妙级)

Exit Latency: 退出该Power State的时间(微妙级)

这两个值给Host,Host根据这个来决策是否进入,何时进入某个Power State。

Non-Operation State:为’0’代表在这个Power State Controller会处理IO,为’1’代表在这个Power State Controller不会处理IO

第四个问题,Host的具体操作?

  1. Host给Controller发个Identify Controller Command, Controller会回复一个4K的数据包。
  2. Host解析Byte 263获知Controller支持的Power State的数量

  1. Host解析Byte 2079:3140获知每个Power State下Controller的具体属性
    1. 例如Controller可以支持四种Power State
    2. PS0: 均衡模式 (平衡考虑功耗,读写性能,延迟,但每个都不突出)
    3. PS1: OLTP模式 –大量随机小IO (要求低延迟)
    4. PS2: 视频模式 –大小连续大IO (要求高吞吐量)
    5. PS3: 绿色模式 – 低能耗
  2. Host根据正在运行的应用(例如邮箱服务,数据库服务,视频服务和股票交易服务等)选择让Controller合适的Power State,具体实现是通过Set Feature Command(Feature ID 0x02),在DW 11的Bit 04:00写入

    5.同理,Host也可以通过Get Feature Command来获知当前Controller所处的Power State

设几个State跳来跳去容易,具体的跳转策略:结合IO Pattern,功耗要求和Enter/Exit Latency来决定跳不跳,何时跳,跳哪里才是核心价值。这块没法继续看spec找答案了,要是蛋蛋给买块卡,阿呆给弄台PCIe analyzer, 抓几个典型应用场景切换时的PCIe trace,那应该可以发现部分策略,另外可以读到支持的Power State Descriptor,可能也能反推出一些策略的考虑点。

 

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

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