Share via


Hybrid Hard Disk Drive Logo Test

Note  This content applies to the Windows Logo Kit (WLK). For the latest information using the new Windows Hardware Certification Kit (HCK), see Windows HCK User's Guide on the Windows Hardware Dev Center.

Type: Automated Test

Overview

The Hybrid Hard Disk Drive Logo test validates and verifies if a hybrid disk drive complies with the standards and achieves the performance and power management requirements. This test should run on a secondary drive and when the test is running there should not be any other I/O happening to the drive.

Warning To verify the performance and throughput of the drive, the test reads and writes to the disk directly. So, the data in the disk will be lost if you run this test. Please make sure you back up the data before running the test. The test will skip testing with a failure if you try to run it on a system or boot drive.

Details

A hybrid hard disk (H-HDD) is a hard disk drive with nonvolatile Flash memory that acts as a cache that holds written and pinned LBAs within the drive. The main purpose of a H-HDD is to provide a nonvolatile cache (NV Cache) mechanism by using the Flash memory that is accessible at all times for writes and low-latency reads including when the magnetic media spindle is stopped.

During power savings periods, the disk is spun down most of the time and reads and writes happen from the NV Cache. The Disk will spin up if the data has to be flushed to the disk from the cache or the read request could not be resolved from data in the cache. The power consumption for the disk can be minimized because the disk is spun down most of the time. The power savings are targeted at portable computer systems powered by a battery. The ATA command set has been extended to support the NV Cache and power management functionalities of the H-HDD.

A hard disk drive that is implemented as a Hybrid Hard Disk responds to an ATA command set extension - Non Volatile Cache Command Proposal for ATA8-ACS, Feb. 4th, 2006, Revision 6.

The Microsoft Windows operating system must be able to perform the following tasks when a Hybrid Disk Drive is installed on a system:

  • Detect the hybrid hard disk.

  • Enable NV-Cache mode when on battery power.

  • Pin boot or resume LBAs as required to enhance boot and resume performance.

  • Pin as many LBAs as the Identify Device reports as the size of the NV Cache.

  • Use the current ATA command set as released to T13 (which is referenced earlier).

The device must be configured to allow these command sets to function properly and control the resource in an appropriate fashion (spinning down the drive to save power when in NV Cache mode).

Systems that implement a hybrid hard disk must meet the requirements that are outlined in this topic.

The Hybrid Disk Logo test verifies the following requirements of the hybrid disk drive:

  • Basic logo requirements:

    • The hybrid disk is detectable.
    • The disk satisfies the minimum NV cache size requirement.
  • The disk supports the ATA command set extension.

  • Performance requirements.

LOGO TEST REQUIREMENTS

Basic Requirements tests:

  • Detect the hybrid hard disk when installed.

  • NV cache size is at least 50 MB.

NV Cache ATA command support:

  • Should be in compliance with the ATA7 command set along with the ATA8-ACS command set extensions for NV Cache proposed to T13:
    • Identify command.
    • Power Management commands.
    • Cache Management commands.

Note The command set proposal is available from the Technical Committee T13 Web site.

NV cache Management tests:

  • Pin Lba(s) into NV cache.

  • Unpin LBA(s) from NV cache.

  • Validate the behavior of the disk in the NV cache power save mode for read and write requests.

  • Validate the behavior of the disk for the NV Cache commands in non-power save mode.

  • Latency requirements in power mode:

    • In Boot/resume scenarios the read, write latencies for a 512 bytes block should be less than 3 seconds.
    • In normal operation, the read/write latencies for 4 K block should be less than 3 milliseconds and for 4.5 K block it should be less than 4 milliseconds.

Performance test:

  • Verifies the read/write latency is less than:
    • 3 ms for a 4 K random block.
    • 4 ms for a 4.5 K random block.

Note 10% of the IOs can exceed the latency requirements. But none of the IOs should take more than 5 ms for 4 K random/sequential block scenario and 10 ms for 4.5 K random/same block scenario.

Throughput test:

  • Verifies the following throughput values:
Scenario Throughput

4 KB Random Read

4 MB/sec

4 KB Random Write

4 MB/sec

64 KB Sequential Read

16 MB/sec

64 KB Sequential Write

8 MB/sec

1 MB Random Read

16 MB/sec

1 MB Random Write

10 MB/sec

 

Logo Test Assumptions:

The test should be run on a secondary disk. The test reads and writes to the disk directly. The test verifies IOs on the entire disk, so it expects the disk to be formatted, empty, and have only one partition. The disk must not be active, and the test will not run if the disk is active. To verify that your disk is not active, or to remove the active property if it is active, follow these steps:

  1. Open Disk Management (type diskmgmt.msc in the Run dialog or Start menu search box.

  2. Your system/boot disk and hybrid drive will appear.

  3. The hybrid drive must not have the word Active in its description. If the drive is marked Active (for example, if it says Healthy (Active, Primary Partition), then it must be made inactive before the test is run. To do this using the Disk Management Method, follow these steps:

    a. Right-click the secondary drive in Disk Management, and select Delete Volume. You will receive the following warning if the drive has an active partition:

    This is the active partition on this disk....

    Click Yes to continue.

    b. The drive will now be unallocated. Right-click the disk again and select New Simple Volume using the default values. You can select Quick Format if you don't want to wait for a full format.

    c. The disk in Disk Manager will now say Healthy (Primary Partition) without the word "Active".

TEST OVERVIEW

  1. Check if the drive supports NV cache.

    • Send the IDENTIFY command.
    • Check if bit 0 and bit 4 are set in the word 214 in the response. Skip the test if those bits are not set.
    • Skip the test if the test drive is a boot drive or a system drive.
  2. Check if the drive supports write cache.

    • If the drive supports this feature, check if the write cache is disabled. If the write cache is not disabled, disable the write cache.
  3. Run the test cases.

  4. Enable the write cache, if the test disabled it.

TEST CASES

  1. IDENTIFY TEST

    Description: This test verifies if the device correctly identifies itself as a hybrid hard disk drive.

    1.1 Send identify device command

    ATA Command: Identify Device - ECh

    1.2 Check for the following data in the response.

    1.3 NV cache mode support flag is 1

    Bit 0 in word 214

    1.4 NV cache mode commands support flag is 1

    Bit 4 in word 214

    1.5 Device estimated time to spin up in seconds is not 0

    Bits 0-7 in word 219

    1.6 NV cache size is at least 50MB

    Bits 0-15 in word 215 for MSW of cache size in LBAs

    Bits 0-15 in word 216 for LSW of cache size in LBAs

    Result: The drive should properly set the NV Cache parameters in response for the IDENTIFY command.

  2. NV CACHE POWER MODE TEST

    Description: This test ensures that the drive responds appropriately to the NV Cache Power mode command.

    Windows Vista uses this command to manage drive spin down and improve battery life.

    2.1 Set NV cache power mode with 5 seconds minimum high power time

    ATA Command: Set NV Cache Power Mode - B6/00h

    2.2 Check the power mode of the disk after 15 seconds

    ATA Command: Check Power Mode - E5h

    2.3 If the disk is not in the power save mode, the test fails

    2.4 Disable NV cache power mode

    ATA Command: Return from NV Cache Power Mode - B6/01h

    2.5 Check the power mode state of the drive

    ATA Command: Check Power Mode - E5h

    2.6 If the disk is still in power save mode, the test fails

    Result: The drive should respond correctly for the enable/disable power mode commands.

  3. NV CACHE MAX PIN AREA TEST

    Description: This test ensures that the drive correctly reports the number of LBAs that are available to Windows Vista for pinning data. Windows Vista uses this number to determine how much data it can place into the NV cache.

    3.1 Set NV cache power mode with 5 seconds minimum high power time

    ATA Command: Set NV Cache Power Mode - B6/00h

    3.2 Unpin all LBAs in the NV Cache

    ATA Command: Remove LBA(s) From NV Cache Pinned Set - B6/11h with unpin all flag set

    3.3 Wait for Unpin all LBAs operation to complete

    3.4 Flush the NV cache

    ATA Command: Flush NV Cache - B6/14h

    3.5 Wait for Flush operation to complete

    3.6 Send Add LBA command to pin 0 LBAs. The drive should respond with number of unpinned LBAs equal to

    NV Cache size.

    ATA Command: Add LBA(s) to NV Cache Pinned Set - B6/10h

    3.7 Check for NV Cache number of remaining unpinned LBAs in the response data

    3.8 If the number of unpinned LBAs is not equal to NV Cache, the test case fails.

    3.9 Disable NV cache power mode.

    ATA Command: Return from NV Cache Power Mode - B6/01h

    Result: When the NV Cache is empty, the drive should report that the number of the unpinned LBAs is equal to the NV Cache size.

  4. POWER MODE SPIN UP TIME TEST

    Description: This test measures whether Windows Vista can put a H-HDD into a given power mode and that the drive appropriately obeys the spin up hold time. This feature enables Windows Vista to aggressively conserve power by spinning down the drive.

    4.1 Enable Power Mode with 5 seconds minimum high power time

    ATA Command: Set NV Cache Power Mode - B6/00h

    4.2 Check for the drive spindle state for 5 seconds.

    ATA Command: Check Power Mode - E5h

    4.3 Disk spindle should be up for at least 5 seconds; otherwise, the test case fails.

    4.4 Disable NV cache power mode.

    ATA Command: Return from NV Cache Power Mode - B6/01h

    Result: When the power mode is enabled with some minimum high power time, the drive should be in spin up state at least for the high power time before going to spun down state.

  5. POWER MODE STATE TEST

    Description: These tests ensure that the drive correctly sets power mode states so that Windows Vista can improve battery life.

    5.1 Set NV cache power mode with 5 seconds minimum high power time.

    ATA Command: Set NV Cache Power Mode - B6/00h

    5.2 Set the disk power state to D3.

    Send IOCTL IOCTL_PT_SET_DEVICE_POWER_STATE to the powertst.sys to set the power state of the

    hybrid hard disk to D3

    5.3 Sleep for 5 seconds to make sure the disk spindle will be in idle state .

    5.4 Set the disk power state to D0.

    Send IOCTL IOCTL_PT_SET_DEVICE_POWER_STATE to the powertst.sys to set the power state of the

    hybrid hard disk to D0

    5.5 Check the power mode of the disk.

    ATA Command: Check Power Mode - E5h

    5.6 If the disk is not in the power save mode, the test fails.

    5.7 Disable NV cache power mode.

    ATA Command: Return from NV Cache Power Mode - B6/01h

    5.8 Set the disk power state to D3.

    Send IOCTL IOCTL_PT_SET_DEVICE_POWER_STATE to the powertst.sys to set the power state of the

    hybrid hard disk to D3

    5.9 Sleep for 5 seconds to make sure the disk spindle will be in idle state.

    5.10 Set the disk power state to D0.

    Send IOCTL IOCTL_PT_SET_DEVICE_POWER_STATE to the powertst.sys to set the power state of

    the hybrid hard disk to D0

    5.11 Check the power mode of the disk.

    ATA Command: Check Power Mode - E5h

    5.12 If the disk is in power save mode, the test fails.

    5.13 Disable NV cache power mode.

    ATA Command: Return from NV Cache Power Mode - B6/01h

    Result: The drive should retain its power mode state even when its device power state is changed.

  6. PIN LBA TEST

    Description: This test ensures that Windows Vista can correctly pin data into the NVCache. Pinning forms the foundation for many of the performance and spin-down improvements.

    6.1 This scenario is verified in both power save mode and without power save mode. If this scenario is being

    verified in power save mode, perform steps 6.2 to 6.9. Otherwise, perform only steps 6.7 to 6.8.

    6.2 Set NV cache power mode with 5 seconds minimum high power time.

    ATA Command: Set NV Cache Power Mode - B6/00h

    6.3 Unpin all LBAs in the NV Cache.

    ATA Command: Remove LBA(s) From NV Cache Pinned Set - B6/11h with unpin all flag set

    6.4 Wait for Unpin all LBAs operation to complete

    6.5 Flush the NV cache.

    ATA Command: Flush NV Cache - B6/14h

    6.6 Wait for Flush operation to complete

    6.7 Pin one random LBA with populate immediately flag.

    ATA Command: Add LBA(s) to NV Cache Pinned Set - B6/10h

    6.8 Query for NV cache pinned LBAs set and check for the NV cache LBA range that we just pinned. If that range

    entry is not found, the test fails.

    ATA Command: Query NV Cache Pinned Set - B6/12h

    6.9 Disable NV cache power mode.

    ATA Command: Return from NV Cache Power Mode - B6/01h

    Result: The drive should respond to the Pin LBA command properly.

  7. UNPIN LBA TEST

    Description: This ensures that Windows Vista can remove data from the NV cache to manage the cache.

    7.1 This scenario is verified in both power save mode and without power save mode. If this scenario is being

    verified in power save mode, perform steps 7.2 to 7.10. Otherwise, perform only steps 7.7 to 7.9.

    7.2 Set NV cache power mode with 5 seconds minimum high power time.

    ATA Command: Set NV Cache Power Mode - B6/00h

    7.3 Unpin all LBAs in the NV Cache.

    ATA Command: Remove LBA(s) From NV Cache Pinned Set - B6/11h with unpin all flag set

    7.4 Wait for Unpin all LBAs operation to complete

    7.5 Flush the NV cache.

    ATA Command: Flush NV Cache - B6/14h

    7.6 Wait for Flush operation to complete

    7.7 Pin one random LBA with populate immediately flag.

    ATA Command: Add LBA(s) to NV Cache Pinned Set - B6/10h

    7.8 Remove (unpin) the LBA that we just pinned.

    ATA Command: Remove LBA(s) From NV Cache Pinned Set - B6/11h

    7.9 Query for NV Cache pinned LBAs set and check for the NVCache LBA range that we just unpinned; if that

    range entry is found, the test fails.

    ATA Command: Query NV Cache Pinned Set - B6/12h

    7.10 Disable NV cache power mode.

    ATA Command: Return from NV Cache Power Mode - B6/01h

    Result: The drive should respond to the Remove LBA command properly.

  8. PIN MAXIMUM (64) LBA ENTRIES TEST

    Description: This command ensures that the drive appropriately pins large blocks of data by pinning the maximum allowable number of LBAs. Pinning large amounts of data enables Windows Vista to efficiently populate the drive.

    8.1 This scenario is verified in both power save mode and without power save mode. If this scenario is being

    verified in power save mode, perform steps 8.2 to 8.10. Otherwise, perform only steps 8.7 to 8.9.

    8.2 Set NV cache power mode with 5 seconds minimum high power time.

    ATA Command: Set NV Cache Power Mode - B6/00h

    8.3 Unpin all LBAs in the NV Cache.

    ATA Command: Remove LBA(s) From NV Cache Pinned Set - B6/11h with unpin all flag set

    8.4 Wait for Unpin all LBAs operation to complete

    8.5 Flush the NV cache.

    ATA Command: Flush NV Cache - B6/14h

    8.6 Wait for Flush operation to complete

    8.7 Create a list of 64 Random LBAs entries list, of chunk size 1 LBA (512 bytes).

    8.8 Pin all the LBAs in the entry list with populate immediately flag.

    ATA Command: Add LBA(s) to NV Cache Pinned Set - B6/10h

    8.9 Query for NV Cache pinned LBAs set and check for the all the NVCache LBA range entries that we just pinned;

    if any of those ranges are not found, the test fails.

    ATA Command: Query NV Cache Pinned Set - B6/12h

    8.10 Disable NV cache power mode.

    ATA Command: Return from NV Cache Power Mode - B6/01h

    Result: The drive should respond to the Pin LBA and Query NV Cache Pinned set commands properly.

  9. PIN LBAS UPTO NV CACHE SIZE

    Description: This test ensures that Windows Vista can use all the LBAs in the NV Cache. If the entire NV Cache is not available to Windows Vista, it cannot optimally manage the cache.

    9.1 This scenario is verified in both power save mode and without power save mode. If this scenario is being verified in power save mode, perform steps 9.2 to 9.9. Otherwise, perform only steps 9.7 to 9.8.

    9.2 Set NV cache power mode with 5 seconds minimum high power time.

    ATA Command: Set NV Cache Power Mode - B6/00h

    9.3 Unpin all LBAs in the NV Cache

    ATA Command: Remove LBA(s) From NV Cache Pinned Set - B6/11h with unpin all flag set

    9.4 Wait for Unpin all LBAs operation to complete

    9.5 Flush the NV cache

    ATA Command: Flush NV Cache - B6/14h

    9.6 Wait for Flush operation to complete

    9.7 Pin the number of LBAs of 64K chunks up to the size of the NV cache with populate immediately flag

    ATA Command: Add LBA(s) to NV Cache Pinned Set - B6/10h

    9.8 If the pinning is unsuccessful, the logo test fails.

    9.9 Disable NV cache power mode

    ATA Command: Return from NV Cache Power Mode - B6/01h

    Result: The drive should allow us to pin the LBAs upto NVCache size.

  10. PIN LBAS MORE THAN NVCACHE SIZE

    Description: This verifies that the drive correctly handles a request to pin more data than the drive can physically accommodate.

    10.1 This scenario is verified in both power save mode and without power save mode. If this scenario is being verified in power save mode, perform steps 10.2 to 10.10. Otherwise, perform only steps 10.7 to 10.9.

    10.2 Set NV cache power mode with 5 seconds minimum high power time.

    ATA Command: Set NV Cache Power Mode - B6/00h

    10.3 Unpin all LBAs in the NV Cache

    ATA Command: Remove LBA(s) From NV Cache Pinned Set - B6/11h with unpin all flag set

    10.4 Wait for Unpin all LBAs operation to complete

    10.5 Flush the NV cache

    ATA Command: Flush NV Cache - B6/14h

    10.6 Wait for Flush operation to complete

    10.7 Pin the number of LBAs of 128K chunks up to one LBA more than the size of the NV cache with populate immediately flag

    ATA Command: Add LBA(s) to NV Cache Pinned Set - B6/10h

    10.8 If the pinning is successful then the logo test fails

    10.9 If the pinning is unsuccessful, validate the response; the error code should reflect that there is no enough NV cache space to complete the request; otherwise, the test fails.

    10.10 Disable NV cache power mode

    ATA Command: Return from NV Cache Power Mode - B6/01h

    Result: The drive should not allow us to pin the LBAs more than NVCache size.

  11. NV CACHE MISS TEST

    Description: This test verifies that the drive correctly reports NV Cache misses. Windows Vista uses this information to optimize the set of data that it places in the cache.

    11.1 This scenario is verified in both power save mode and without power save mode. If this scenario is being verified in power save mode, perform steps 11.2 to 11.9. Otherwise, perform only steps 11.7 to 11.8.

    11.2 Set NV cache power mode with 5 seconds minimum high power time.

    ATA Command: Set NV Cache Power Mode - B6/00h

    11.3 Unpin all LBAs in the NV Cache

    ATA Command: Remove LBA(s) From NV Cache Pinned Set - B6/11h with unpin all flag set

    11.4 Wait for Unpin all LBAs operation to complete

    11.5 Flush the NV cache

    ATA Command: Flush NV Cache - B6/14h

    11.6 Wait for Flush operation to complete

    11.7 Query NV cache misses

    ATA Command: Query NV Cache Misses - B6/13h

    11.8 Check the response for the query NV cache misses command

    11.9 Disable NV cache power mode

    ATA Command: Return from NV Cache Power Mode - B6/01h

    Result: The drive should respond to Query NV Cache Misses command properly.

  12. READ LBA TEST

    Description: This tests determines whether Windows Vista can read LBAs from the NV Cache and verifies the integrity of the data read.

    12.1 This scenario is verified in both power save mode and without power save mode. If this scenario is being verified in power save mode, perform steps 12.2 to 12.22. Otherwise, perform only steps 12.7 to 12.21.

    12.2 Set NV cache power mode with 5 seconds minimum high power time.

    ATA Command: Set NV Cache Power Mode - B6/00h

    12.3 Unpin all LBAs in the NV Cache

    ATA Command: Remove LBA(s) From NV Cache Pinned Set - B6/11h with unpin all flag set

    12.4 Wait for Unpin all LBAs operation to complete

    12.5 Flush the NV cache

    ATA Command: Flush NV Cache - B6/14h

    12.6 Wait for Flush operation to complete

    12.7 Select a random LBA between 0 - 1024

    12.8 Write data to the selected LBA

    ATA Command: WRITE DMA EXT - 35h, DMA

    12.9 Unpin all LBAs in the NV Cache

    ATA Command: Remove LBA(s) from NV Cache Pinned Set - B6/11h with unpin all flag set

    12.10 Wait for Unpin all LBAs operation to complete

    12.11 Flush the NV cache

    ATA Command: Flush NV Cache - B6/14h

    12.12 Wait for Flush operation to complete

    12.13 Pin the selected LBA to NV cache with populate Immediately flag

    ATA Command: Add LBA(s) to NV Cache Pinned Set - B6/10h

    12.14 Set the disk power state to D3

    Send IOCTL IOCTL_PT_SET_DEVICE_POWER_STATE to the powertst.sys to set the power state of

    the hybrid hard disk to D3

    12.15 Sleep for 5 seconds to make sure the disk spindle will be in idle state

    12.16 Set the disk power state to D0

    Send IOCTL IOCTL_PT_SET_DEVICE_POWER_STATE to the powertst.sys to set the power state of

    the hybrid hard disk to D0

    12.17 Calculate the time stamp T1

    12.18 Send the read request for the pinned LBA

    ATA Command: Read DMA EXT - 25h, DMA

    12.19 Calculate the time stamp T2

    12.20 Calculate the time (T2-T1) it took to access the LBA in the NV cache and compare it with the threshold time (3 seconds). If the access time is exceeding the threshold time, the test fails.

    12.21 Validate the data of the LBA by comparing with the data that we initially wrote. The test fails if the validation fails.

    12.22 Disable NV cache power mode

    ATA Command: Return from NV Cache Power Mode - B6/01h

    Result: The test writes to an LBA and pins that LBA. Then, it checks if the read latency is less than three seconds when the drive is still trying to startup. This check is to verify pinning the LBA with populate immediately flag would make the drive to copy the LBA from the disk to the NVCache.

  13. WRITE LBA TEST

    Description: This test measures the drive's ability to write an LBA into NVRAM when in power saving mode without spinning up the drive. Writing to the NVRAM without spinning up the drive is critical to extend the battery life.

    13.1 This scenario is verified in both power save mode and without power save mode. If this scenario is being verified in power save mode, perform steps 13.2 to 13.18. Otherwise, perform only steps 13.7 to 13.17.

    13.2 Set NV cache power mode with 5 seconds minimum high power time

    ATA Command: Set NV Cache Power Mode - B6/00h

    13.3 Unpin all LBAs in the NV Cache

    ATA Command: Remove LBA(s) from NV Cache Pinned Set - B6/11h with unpin all flag set

    13.4 Wait for Unpin all LBAs operation to complete

    13.5 Flush the NV cache

    ATA Command: Flush NV Cache - B6/14h

    13.6 Wait for Flush operation to complete

    13.7 Select one Random LBA

    13.8 Pin the selected LBA to NV cache with populate immediately flag

    ATA Command: Add LBA(s) to NV Cache Pinned Set - B6/10h

    13.9 Write some date to the selected LBA

    ATA Command: WRITE DMA EXT - 35h, DMA

    13.10 Set the disk power state to D3

    Send IOCTL IOCTL_PT_SET_DEVICE_POWER_STATE to the powertst.sys to set the power state of

    the hybrid hard disk to D3

    13.11 Sleep for 5 seconds to make sure the disk spindle will be in idle state

    13.12 Set the disk power state to D0

    Send IOCTL IOCTL_PT_SET_DEVICE_POWER_STATE to the powertst.sys to set the power state of

    the hybrid hard disk to D0

    13.13 Calculate the time stamp T1

    13.14 Send the read request for the pinned LBA

    ATA Command: Read DMA EXT - 25h, DMA

    13.15 Calculate the time stamp T2

    13.16 Calculate the time (T2-T1) it took to access the LBA in the NV cache and compare it with the threshold time (3 seconds). If the access time is exceeding the threshold time, the test fails.

    13.17 Validate the data of the LBA by comparing with the data that we initially wrote. The test fails if the validation fails.

    13.18 Disable NV cache power mode

    ATA Command: Return from NV Cache Power Mode - B6/01h

    Result: The test pins an LBA and write to that LBA. Then, it checks if the read latency is less than three seconds when the drive is still trying to startup. This check is to verify whether the writes go to the NV Cache when that LBA is already in the pinned set.

  14. PERFORMANCE TEST

    Description: This test verifies that the drive meets the minimum criteria for random and sequential reads and writes. Setting a minimum performance bar ensures that the user will have an acceptable experience when using a H-HDD.

    14.1 Set NV cache power mode with 5 seconds minimum high power time

    14.2 Unpin all LBAs in the NV Cache

    ATA Command: Remove LBA(s) from NV Cache Pinned Set - B6/11h with unpin all flag set

    14.3 Wait for Unpin all LBAs operation to complete

    14.4 Flush the NV cache

    ATA Command: Flush NV Cache - B6/14h

    14.5 Wait for Flush operation to complete

    a) 1024 RANDOM 4K BLOCK READ WRITES

    1. Generate list of 1024 different random 4KB blocks which are 512b aligned to the disk offsets (but no overlapping ranges).

    2. Generate a random 32-bit number and fill that number in the 4K write buffer.

    3. Write to the 4K random block.

      • Measure the IO latency; it should be less than 3 ms.
      • If the IO latency exceeds 3 ms but less than 5 ms, print a warning message. 10% of IOs are allowed to exceed the latency requirements. But if the number of IOs that fail the performance requirements is more than 10%, fail the test.
      • If the IO latency is more than 5 ms, fail the test.
    4. Sleep for 50 ms.

    5. Read from the 4K random block.

      • Measure the latency; it should take less than 3 ms.
      • If the IO latency exceeds 3 ms but less than 5 ms, print a warning message. 10% of IOs are allowed to exceed the latency requirements. But if the number of IOs that fail the performance requirements is more than 10%, fail the test.
      • If the IO latency is more than 5 ms, fail the test.
      • Validate the read data. The read data should match with the data written to that location before.
    6. Repeat steps 2 to 5 on 1024 random 4K blocks.

    7. Unpin all LBAs in the NV Cache

      ATA Command: Remove LBA(s) from NV Cache Pinned Set - B6/11h with unpin all flag set

    8. Wait for Unpin all LBAs operation to complete.

    9. Flush the NV cache

      ATA Command: Flush NV Cache - B6/14h

    10. Wait for Flush operation to complete.

    (b) 1024 RANDOM 4.5K BLOCK READ WRITES

    1. Generate list of 1024 different random 4.5KB blocks which are 512b aligned to the disk offsets (but no overlapping ranges).

    2. Generate a random 32-bit number and fill that number in the 4.5K write buffer.

    3. Write to the 4.5K random block.

      • Measure the IO latency; it should take less than 4 ms.
      • If the IO latency exceeds 4 ms but less than 10 ms, print a warning message. 10% of the IOs are allowed to exceed the latency requirements. But if the number of IOs that fail the performance requirements is more than 10%, fail the test.
      • If the IO latency is more than 10 ms, fail the test.
    4. Sleep for 50 ms.

    5. Read from the 4.5K random block.

      • Measure the IO latency; it should take less than 4 ms.
      • If the IO latency exceeds 4 ms but less than 10 ms, print a warning message. 10% of the IOs are allowed to exceed the latency requirements. But if the number of IOs that fail the performance requirements is more than 10%, fail the test.
      • If the IO latency is more than 10 ms, fail the test.
      • Validate the read data. The read data should match with the data that was written to that location before.
    6. Repeat steps 2 to 5 on 1024 random 4.5K blocks.

    7. Unpin all LBAs in the NV Cache

      ATA Command: Remove LBA(s) from NV Cache Pinned Set - B6/11h with unpin all flag set

    8. Wait for Unpin all LBAs operation to complete

    9. Flush the NV cache

      ATA Command: Flush NV Cache - B6/14h

    10. Wait for Flush operation to complete

    (c) SAME 4.5K BLOCK READ WRITES

    1. Generate a random 32-bit number and fill that number in the 4.5K write buffer.

    2. Select a 4.5 K random lock that is the last block on a 64-KB boundary and pin that block.

    3. Write to the 4.5 K random Block.

      • Measure the IO latency; it should take less than 4 ms.
      • If the IO latency exceeds 4 ms but less than 10 ms, print a warning message. 10% of the IOs are allowed to exceed the latency requirements. But if the number of IOs that fail the performance requirements is more than 10%, fail the test.
      • If the IO latency is more than 10 ms, fail the test.
    4. Sleep for 50ms.

    5. Read from the 4.5K random block.

      • Measure the IO latency; it should take less than 4 ms.
      • If the IO latency exceeds 4 ms but less than 10 ms, print a warning message. 10% of the IOs are allowed to exceed the latency requirements. But if the number of IOs that fail the performance requirements is more than 10%, fail the test.
      • If the IO latency is more than 10 ms, fail the test.
      • Validate the read data. The read data should match with the data that was written to that location before.
    6. Repeat steps 1 to 4 on the same random block 1024 times.

    7. Unpin all LBAs in the NV Cache

      ATA Command: Remove LBA(s) from NV Cache Pinned Set - B6/11h with unpin all flag set

    8. Wait for Unpin all LBAs operation to complete.

    9. Flush the NV cache

      ATA Command: Flush NV Cache - B6/14h

    10. Wait for Flush operation to complete.

    (d) 1024 SEQUENTIALLY INCREASING 4K BLOCK READ WRITES

    1. Generate list of 1024 sequential (increasing order) 4KB blocks which are 512-b aligned to the disk offsets

      (but no overlapping ranges).

    2. Generate a random 32-bit number and fill that number in the 4K write buffer.

    3. Write to the 4K block.

      • Measure the IO latency; it should take less than 3 ms.
      • If the IO latency exceeds 3 ms but less than 5 ms, print a warning message. 10% of the IOs are allowed to exceed the latency requirements. But if the number of IOs that fail the performance requirements is more than 10%, fail the test.
      • If the IO latency is more than 5 ms, fail the test.
    4. Sleep for 50 ms.

    5. Read from the 4K block.

      • Measure the IO latency; it should take less than 3 ms.
      • If the IO latency exceeds 3 ms but less than 5 ms, print a warning message. 10% of the IOs are allowed to exceed the latency requirements. But if the number of IOs that fail the performance requirements is more than 10%, fail the test.
      • If the IO latency is more than 5 ms, fail the test.
      • Validate the read data. The read data should match with the data that was written to that location before.
    6. Repeat steps 2 to 5 on 1024 sequentially incrementing 4K blocks.

    7. Unpin all LBAs in the NV Cache

      ATA Command: Remove LBA(s) from NV Cache Pinned Set - B6/11h with unpin all flag set

    8. Wait for Unpin all LBAs operation to complete.

    9. Flush the NV cache

      ATA Command: Flush NV Cache - B6/14h

    10. Wait for Flush operation to complete.

    (e) 1024 SEQUENTIALLY DECREASING 4K BLOCK READ WRITES:

    1. Generate list of 1024 sequential (decreasing order) 4KB blocks which are 512b aligned to the disk offsets (but no overlapping ranges).

    2. Generate a random 32-bit number and fill that number in the 4K write buffer.

    3. Write to the 4K block.

      • Measure the IO latency; it should take less than 3 ms.
      • If the IO latency exceeds 3 ms but less than 5 ms, print a warning message. 10% of the IOs are allowed to exceed the latency requirements. But if the number of IOs that fail the performance requirements is more than 10%, fail the test.
      • If the IO latency is more than 5 ms, fail the test.
    4. Sleep for 50 ms.

    5. Read from the 4 K block.

      • Measure the IO latency; it should take less than 3 ms.
      • If the IO latency exceeds 3 ms but less than 5 ms, print a warning message. 10% of the IOs are allowed to exceed the latency requirements. But if the number of IOs that fail the performance requirements is more than 10%, fail the test.
      • If the IO latency is more than 5 ms, fail the test.
      • Validate the read data. The read data should match with the data that was written to that location before.
    6. Repeat steps 2 to 5 on 1024 sequentially decrementing 4K blocks.

    7. Unpin all LBAs in the NV Cache

      ATA Command: Remove LBA(s) from NV Cache Pinned Set - B6/11h with unpin all flag set

    8. Wait for Unpin all LBAs operation to complete.

    9. Flush the NV cache

      ATA Command: Flush NV Cache - B6/14h

    10. Wait for Flush operation to complete.

    11. Make sure the device is set back to non NV cache by the end of the test case.

    12. Disable NV cache power mode

      ATA Command: Return from NV Cache Power Mode - B6/01h

    Result: Read/Write latencies should be less than:

    • 1 ms for a 4 K random/sequential block.
    • 1.2 ms for a 4.5 K random/sequential block.
  15. THROUGHPUT TEST

    Description: This test is to measure performance of the drive; it focuses on total throughput rather than responsiveness for individual operations.

    This test case is sub divided into three test cases. Each test case verifies the Read Write throughput on 32 MB.

    • 4 KB Random blocks (8192 IOs)
    • 64 KB Sequential blocks (512 IOs)
    • 1 MB Random blocks (32 IOs)

    The throughput is calculated based on the read write latencies to these blocks.

    Perform steps 1 to 11 on 4 KB random blocks, 64 KB sequential blocks, and 1 MB random blocks.

    1. Set NV cache power mode with 5 seconds minimum high power time.

      ATA Command: Set NV Cache Power Mode - B6/00h

    2. Unpin all LBAs in the NV Cache

      ATA Command: Remove LBA(s) from NV Cache Pinned Set - B6/11h with unpin all flag set

    3. Wait for Unpin all LBAs operation to complete

    4. Flush the NV cache

      ATA Command: Flush NV Cache - B6/14h

    5. Wait for Flush operation to complete

    6. Generate a list of test blocks for 32 MB data that are not overlapping. These blocks will be 512 bytes aligned to the disk offsets if the scenario that is being tested is the 4 KB random or 64 KB Sequential scenario. The blocks will be 1 MB aligned for the 1 MB random clock scenario. Pin all the test data blocks.

    7. Generate random 32-bit value for each location. These random 32-bit random values are used to fill the data blocks.

    8. Write to the tests data blocks. Measure the time it took to write.

    9. Generate random IO blocks of the same block size and send write IOs to those blocks. This step is to make sure that the data in the DRAM cache is overwritten with this data.

    10. Read from the test data blocks. Measure the time it took to read. Validate the read data; it should be filled with the value we wrote to that location before.

    11. Calculate the throughput for these reads and writes.

    12. The drive should meet the following requirements.

      Scenario Throughput

      4 KB Random Read

      4 MB/sec

      4 KB Random Write

      4 MB/sec

      64 KB Sequential Read

      16 MB/sec

      64 KB Sequential Write

      8 MB/sec

      1 MB Random Read

      16 MB/sec

      1 MB Random Write

      10 MB/sec

       

    13. Disable NV cache power mode

      ATA Command: Return from NV Cache Power Mode - B6/01h

FUNCTION TO WAIT FOR UNPIN ALL OPERATION TO COMPLETE

  1. Send the unpin all command.

  2. Poll the device to find the "Number unpinned LBAs remaining" (N).

  3. If 'N' is equal to NV cache size, then unpin all operation is complete, so exit the loop with success.

  4. If the previous value of 'N' is less than its current value then the unpin all operation is considered as progressing, So time out counter will be reset to zero.

  5. If the previous value of 'N' is >= to its current value then the test would consider the unpin all operation is not progression, so the time out counter is incremented.

  6. If the time out counter is >= 60, then the test will generate an error saying "ERR: TIMEOUT - NV cache Unpin all operation is not progressing for the last one minute." and exits the test case.

  7. Sleep for 1 second.

  8. Go to step2.

FUNCTION TO WAIT FOR FLUSH OPERATION TO COMPLETE

  1. Send the Flush command and check the response for "Number of LBAs still to be removed" (N).

  2. If 'N' is equal to zero, then the flush operation is complete, so exit the loop with success.

  3. If the current value of 'N' is less than its previous value then the flush operation is considered as progressing, so time out counter will be reset to zero.

  4. If the current value of 'N' is >= to its previous value then the test would consider flush operation is not progression, so the time out counter is incremented.

  5. If the time out counter is >= 60, then the test will generate an error saying "ERR: TIMEOUT - NV Cache Flush operation is not progressing for the last one minute." and exits the test case.

  6. Sleep for 1 second.

  7. Go to step 1.

Run Time: 60 minutes

Log File:

System Restart Required: No

Test Category:

Supported operating systems for Logo or Signature testing:

  • Windows Vista

  • Windows Server 2008

  • Windows 7

  • Windows Server 2008 R2

Program:

Requirements

Software Requirements

The test tool requires the following software:

Hardware Requirements

The test tool requires the following hardware:

Processor

The test tool runs on the following processor architectures:

Running Hybrid Hard Disk Drive Logo Test

To run this test, you must have the following three binary files:

  • PitonLogoTestsetup.exe is a setup application to install the powertst.sys driver.

  • PitonLogotest.exe is the logo test.

  • Powertst.sys is a driver to change the power state of the drive.

To run the test manually, do the following:

  1. Copy the following test binaries to a folder:

    • PitonLogoTestsetup.exe
    • PitonLogotest.exe
    • Powertst.sys
    • wttlog.dll
  2. Start a command prompt with administrator privileges and use that command window for steps 3 and 4.

  3. Install the powertst.sys driver by running the setup application with the PitonLogoTestSetup.exe -install command.

  4. Run the logo test by using the PitonLogoTest.exe -deviceid <deviceid> command.

For more information about command-line options, type PitonLogoTest.exe /?.

Note The powertst.sys driver does automatically start when the computer is restarted. You must manually start the driver before you run the logo test by using PitonLogoTestSetup.exe -install or net start powertst.

To uninstall the powertst.sys driver, run PitonLogoTestSetup.exe -uninstall.

Command Syntax

Command option Description

pitonlogotest.exe -device <deviceid>

Run the test on the disk drive with that deviceid

 

Cautions

The driver verifier would interfere with the logo test IOs. If the driver verifier is enabled on the system, please disable it before running the test.

Please make sure there are no Ready Boost configured devices on the system. The Ready Boost features in the operating system might interfere with logo test IOs.

Code Tour

File Manifest

File Location

pitonlogotest.exe

storage\wdk\piton

pitonlogotestsetup.exe

storage\wdk\piton

powertst.sys

storage\wdk\piton

 

Test Assertions

TEST: IDENTIFY Device Command

Test Assertion GUID: aaecc364-c420-11da-94f4-00123f3a6b60

Windows Logo Program: STORAGE-0005 Hybrid Disk Drives support industry standards and Windows requirements

TEST: Enable Disable NV Cache Power Mode

Test Assertion GUID: aaecc365-c420-11da-94f4-00123f3a6b60

Windows Logo Program: STORAGE-0005 Hybrid Disk Drives support industry standards and Windows requirements

TEST: Max NV Cache Pin Area

Test Assertion GUID: aaecc366-c420-11da-94f4-00123f3a6b60

Windows Logo Program: STORAGE-0005 Hybrid Disk Drives support industry standards and Windows requirements

TEST: Power Mode Spinup Time

Test Assertion GUID: aaecc367-c420-11da-94f4-00123f3a6b60

Windows Logo Program: STORAGE-0005 Hybrid Disk Drives support industry standards and Windows requirements

TEST: Power Mode State Test

Test Assertion GUID: aaecc368-c420-11da-94f4-00123f3a6b60

Windows Logo Program: STORAGE-0005 Hybrid Disk Drives support industry standards and Windows requirements

TEST: Pin Data

Test Assertion GUID: aaecc369-c420-11da-94f4-00123f3a6b60

Windows Logo Program: STORAGE-0005 Hybrid Disk Drives support industry standards and Windows requirements

TEST: Unpin Data

Test Assertion GUID: aaecc36a-c420-11da-94f4-00123f3a6b60

Windows Logo Program: STORAGE-0005 Hybrid Disk Drives support industry standards and Windows requirements

TEST: Pin Max LBAs

Test Assertion GUID: aaecc36b-c420-11da-94f4-00123f3a6b60

Windows Logo Program: STORAGE-0005 Hybrid Disk Drives support industry standards and Windows requirements

TEST: Pin LBAs More than NV cache size

Test Assertion GUID: aaecc36c-c420-11da-94f4-00123f3a6b60

Windows Logo Program: STORAGE-0005 Hybrid Disk Drives support industry standards and Windows requirements

TEST: Query Cache Misses

Test Assertion GUID: aaecc36d-c420-11da-94f4-00123f3a6b60

Windows Logo Program: STORAGE-0005 Hybrid Disk Drives support industry standards and Windows requirements

TEST: Read LBAs

Test Assertion GUID: aaecc36e-c420-11da-94f4-00123f3a6b60

Windows Logo Program: STORAGE-0005 Hybrid Disk Drives support industry standards and Windows requirements

TEST: Write LBAs

Test Assertion GUID: aaecc36f-c420-11da-94f4-00123f3a6b60

Windows Logo Program: STORAGE-0005 Hybrid Disk Drives support industry standards and Windows requirements

TEST: Pin Maximum Random LBA Entries

Test Assertion GUID: aaecc370-c420-11da-94f4-00123f3a6b60

Windows Logo Program: STORAGE-0005 Hybrid Disk Drives support industry standards and Windows requirements

TEST: Power Mode Performance Test

Test Assertion GUID: aaecc371-c420-11da-94f4-00123f3a6b60

Windows Logo Program: STORAGE-0005 Hybrid Disk Drives support industry standards and Windows requirements

 

 

Build date: 9/14/2012