raNVMe-IP Demo Instruction

Rev1.4 5-Jul-23

 

1     Overview.. 2

2     Test Menu.. 3

2.1     Identify Command. 3

2.2     Write Command. 4

2.3     Read Command. 7

2.4     SMART Command. 11

2.5     Flush Command. 12

2.6     Shutdown Command. 12

3     Revision History. 13

 


 

1       Overview

 

This document describes the instruction to run raNVMe-IP demo on FPGA development board for accessing one NVMe SSD. The demo is designed to run Identify, Write, Read, SMART, Flush, and Shutdown command. User controls test operation via FPGA console.

 

After user finishes FPGA board setup following “dg_nvmeip_fpgasetup” document, main menu is displayed and the user sets the input to the console for selecting test operation.

 

Figure 11 raNVMe-IP main menu

 

On welcome screen, IP name and IP version number are displayed. The PCIe speed and number of PCIe lanes are displayed in the next message. Finally, the test menu is displayed on the console.

 


 

2       Test Menu

 

2.1      Identify Command

 

Select ‘0’ to send Identify command to NVMe SSD.

 

Figure 21 Test result when running Identify command

 

After finishing the operation, the SSD information output from Identify command is displayed. The console shows two values.

1)  SSD model number: This value is decoded from Identify controller data.

2)  SSD capacity: This value is signal output from raNVMe-IP.

 

Figure 22 Error when LBA unit does not support

 

When the SSD operates in LBA unit which is not equal to 512 bytes, the error message is displayed on the console, as shown in Figure 2‑2. After that, the system stays inactive status and user needs to reset the system to restart the demo.


 

2.2      Write Command

 

Select ‘1’ to send Write command to NVMe SSD.

Figure 23 Test result when running Write command

 

There are four input parameters for running Write command, described as follows.

1)  Transfer Mode: Select address mode of the transfer. There are two modes supported - Sequential and Random mode. The first address is assigned by Start Address input while the next address can be generated by using two equations. First is sequential mode which creates the next address by adding by 8 (4 Kbyte) to store data in contiguous area. Another is the random mode which creates the next address by LFSR equation.

Note: The test data stored to the SSD in each address is similar for both Sequential mode and Random mode. The different point is the order of the address that stores the data. Therefore, if the transfer length is less than full-disk capacity, the free area that is not accessed in Random mode depends on the start address value.

2)  Start Address: Input start address to write SSD as 512-byte unit. The input is decimal unit when user enters only digit number. User can add “0x” to be prefix for hexadecimal unit. This input must be aligned to 8 for 4-Kbyte alignment.

3)  Transfer Length: Input total transfer size as 512-byte unit. The input is decimal unit when user enters only digit number. User can add “0x” to be prefix for hexadecimal unit. This input must be aligned to 8 for 4-Kbyte alignment.

4)  Test pattern: Select test data pattern for writing to SSD. There are five patterns, i.e., 32-bit incremental, 32-bit decremental, all 0, all 1, and 32-bit LFSR counter.

 

When all inputs are valid, the operation begins. While the command is operating, the progress of transfer in percentage unit is displayed on the console every second. Finally, total size, total time usage, and test speed are displayed on the console as a test result.

 

Note: Most SSD shows better write performance when using Sequential addressing, comparing to Random addressing.


 

Figure 24 Example Test data of the 1st and 2nd 4Kbyte data by using incremental/LFSR pattern

 

Test data in SSD is split into 4096-byte (4-Kbyte) unit. For incremental, decremental, and LFSR pattern, each 4-Kbyte data has a unique 64-bit header consisting of 48-bit address in 512-byte unit and 16-bit zero value. The data after 64-bit header is the test pattern which is selected by user.

 

The left window of Figure 2‑4 shows the example when using 32-bit incremental pattern while the right window shows the example when using 32-bit LFSR pattern. The unique header is not included when running all-0 or all-1 pattern.

 


 

Figure 2‑5 shows the example error message when the input from the user is invalid which may be caused from out-of-range or not aligned to 8. “Invalid input” is displayed as the error message and the operation is cancelled before returning to the main menu.

 

Figure 25 Error message from the invalid input


 

2.3      Read Command

 

Select ‘2’ to send Read command to NVMe SSD.

Figure 26 Test result when running Read command

 

There are four or five inputs parameters for running Read command, described as follows.

1)  Transfer Mode: Select address mode of the transfer. There are two modes supported - Sequential and Random mode. The first address is assigned by Start Address input while the next address can be generated by using two equations. First is sequential mode which creates the next address by adding by 8 (4 Kbyte) to store data in contiguous area. Another is the random mode which creates the next address by LFSR equation.

Note: The test data stored to the SSD in each address is similar for both Sequential mode and Random mode. The different point is the sequence of the address that stores the data.

2)  Enable Data Verification: Select to enable or disable data verification for verifying the data.

Note: When the user enables data verification with Random mode and transfer length is not full-disk capacity, start address of Read command must be the same as Write command and transfer length must be less than or equal to transfer length in Write command.

3)  Start Address: Input start address to read SSD as 512-byte unit. The input is decimal unit when user enters only digit number. User can add “0x” to be prefix for hexadecimal unit. This input must be aligned to 8 for 4-Kbyte alignment.

4)  Transfer Length: Input total transfer size as 512-byte unit. The input is decimal unit when user enters only digit number. User can add “0x” to be prefix for hexadecimal unit. This input must be aligned to 8 for 4-Kbyte alignment.

5)  Test pattern: This input is available only when data verification is enabled. Select test data pattern for verifying to SSD. There are five patterns, i.e., 32-bit incremental, 32-bit decremental, all 0, all 1, and 32-bit LFSR counter.


 

Similar to Write command menu, the progress of transfer in percentage unit is displayed on the console every second. Finally, total size, total time usage, and test speed are displayed on the console as a test result.

Note: The read performance of most SSD when using Sequential addressing is better than Random addressing.

 

Figure 2‑7 shows the error message when data verification is failed. “Verify fail” is displayed with the information of the 1st failure data, i.e., the error byte address, the expected value, and the read value.

 

User can press any key(s) to cancel read operation. Otherwise, the operation is still run until finishing Read command. After that, the output performance is displayed on the console.

 

When cancelling the operation, the Read command still runs as the background process and may not finish in a good sequence. It is recommended to power-off/on FPGA board and adapter board (if connected).


 

Figure 27 Data verification is failed


 

In some conditions, CPU handles too much tasks until the speed to generate the command request is less than transfer performance of raNVMe-IP. Therefore, the test performance on the console is limited by CPU, not by raNVMe-IP and SSD. In this case, the caution message is displayed on the console, as shown in Figure 2‑8.

 

Figure 28 Caution message when the performance is dropped from the firmware responses

 


 

2.4      SMART Command

 

Select ‘3’ to send SMART command to NVMe SSD.

 

Figures 29 Test result when running SMART command

 

After finishing the operation, SMART/Health Information (output from SMART command) is be displayed as shown in Figures 2‑9. The console shows Health status and SMART log information. Health status shows the remaining life of the SSD in percent unit which is calculated from Percentage Used in the SMART log information.

 

The SMART log information shows seven parameters as follow.

1)   Percentage used: Display SSD usage in percent unit.

2)   Temperature in °C unit.

3)   Total Data Read decoded as GB/TB unit. Also, raw data without decoding is displayed by 32 digits of hex number (128 bits). The unit size of raw data is 512,000 bytes.

4)   Total Data Written decoded as GB/TB unit. Also, raw data without decoding is displayed by 32 digits of hex number (128 bits). The unit size of raw data is 512,000 bytes.

5)   Power On Cycles: Display the number of power cycles.

6)   Power On Hours: Display the period of time in hours to show how long the SSD has been powered on.

7)   Unsafe Shutdowns: Display the number of unsafe shutdowns of SSD.


 

2.5      Flush Command

 

Select ‘4’ to send Flush command to NVMe SSD.

 

Figure 210 Test result when running Flush command

 

“Flush Command Complete” is displayed after finishing Flush operation.

 

2.6       Shutdown Command

 

Select ‘5’ to send Shutdown command to NVMe SSD.

 

Figure 211 Test result when running Shutdown command

 

The confirmation message is displayed on the console. User enters ‘y’ or ‘Y’ to continue the operation or enters other keys to cancel the operation.

 

After finishing Shutdown operation, “Shutdown command is complete” is displayed on the console as the last message. Main menu is not displayed anymore. User needs to power off/on test system to start new test operation.

 


 

3       Revision History

 

Revision

Date

Description

1.4

7-Nov-22

Update raNVMe-IP version and performance

1.3

16-Jun-22

Update SMART info and test performance

1.2

12-Jan-21

Correct IOPs value

1.1

22-Dec-20

Update test result by new SSD model

1.0

11-Aug-20

Initial version release