2-Ch RAID0 (muNVMe-IP) Demo Instruction

Rev1.0 3-Jul-23

 

1     Overview.. 2

2     Test Menu.. 3

2.1     Identify Command. 3

2.2     Write/Read Command. 4

2.2.1     Write command. 4

2.2.2     Read Command. 6

2.2.3     Mixed Write/Read command. 8

2.3     SMART Command. 9

2.4     Flush Command. 10

2.5     Shutdown Command. 10

3      Revision History. 11

 


 

 

1       Overview

 

This document describes the instruction to run 2-ch RAID0 by muNVMe-IP demo on FPGA development board for two users accessing two NVMe SSD as RAID0 operation. 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_raid0x2_fpgasetup” document, main menu is displayed and the user sets the input to the console for selecting test operation.

 

Figure 11 2-ch RAID0 by muNVMe-IP main menu

 

On welcome screen, IP name and IP version number are displayed. The PCIe speed and number of PCIe lanes of each channel 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 RAID0 via User#0 I/F.

 

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 of each SSD.

2)  RAID capacity                 : This value is calculated by multiplying device capacity in channel#0 by 2. Therefore, it is recommended to connect two SSDs which have the same size.

Note: If two SSDs are different model which has different capacity, please connect the smallest capacity SSD to CH#0.

 

When unsupported LBA size SSD is detected, the error message is displayed on the console as shown in Figure 2‑2

Note: In RAID0 design, LBA size of SSD must be equal to 512-byte. Other size can be supported by modifying RAID0 controller hardware.

 

Figure 22 Error message when LBA does not support


 

2.2      Write/Read Command

 

Select ‘1’ to send Write/Read command by using 1-2 users to RAID0 system.

 

2.2.1    Write command

Figure 23 Write command by 1-2 users

 

Input four parameters per user as follows.

1)   Command: Select command - Write, Read, or Disable (no operation).

2)   Start Address: Start address to write RAID0 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.

3)   Transfer Length: 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.

4)   Test pattern: Select test data pattern for writing to RAID0. 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, current amount of write data in the active user is displayed on the console every second to show that system is still alive. Finally, total size, total time usage, and test speed of the active user are displayed on the console as test result.

 

As shown in Figure 2‑3, total performance when running one-user and two-user are equal (2223+2223 MB/s and 4251 MB/s). The performance per user when running two-user test is about a half of the one-user performance.

Note: The performance of each user depends on SSD characteristic.


 

Figure 24 Example Test data of the 1st and 2nd 512-byte of each SSD by using LFSR pattern

 

The stripe size in 2-ch RAID0 demo is 512-byte. For incremental, decremental, or LFSR pattern, each 512-byte data has unique 64-bit header which consists 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 1st stripe of RAID0 is mapped to the first 512-byte of SSD#0. The 2nd stripe, the 3rd stripe, and the 4th stripe are mapped to the first 512-byte of SSD#1, the second 512-byte of SSD#0, and the second 512-byte of SSD#1, respectively. The unique header is not included when running all-0 or all-1 pattern.

 

Figure 2‑5 shows the example when the input is out of the recommended range for each parameter. The console displays “Invalid input” and then the operation is cancelled.

 

Figure 25 Error message from the invalid input


 

2.2.2    Read Command

Figure 26 Read command by 1-2 users

 

Input four parameters per user as follows.

1)   Command: Select command - Write, Read, or Disable (no operation).

2)   Start Address: Start address to read RAID0 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.

3)   Transfer Length: 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.

4)   Test pattern: Select test data pattern to verify data from RAID0. Test pattern must be matched with the pattern using in Write Command menu. 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, test system reads data from RAID0 when all inputs are valid. While running Read command, current amount of read data is displayed on the console every second to show that system is still alive. Finally, total size, total time usage, and test speed of the active user are displayed on the console as test result.

 

As shown in Figure 2‑6, total performance when running one-user (5478 MB/s) is slightly more than two-user (2719 + 2719 MB/s). The performance of each user is similar. However, the performance result depends on SSD characteristic.


 

Figure 2‑7 shows error message when data verification is failed. “User#x 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

 


 

2.2.3    Mixed Write/Read command

Figure 28 Test result when running mixed Write/Read command

 

Input four parameters for each user as follows.

1)   Command: Select command - Write, Read, or Disable (no operation).

2)   Start Address: Input start address to write/read RAID0 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.

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.

4)   Test pattern: Select test data pattern for writing/verifying data to/from RAID0. 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, current amount of write/read data in the active user is displayed on the console every second to show that system is still alive. Finally, total size, total time usage, and test speed of the active user are displayed on the console as test result.

 

The error message is displayed if the input is invalid or data verification is failed.

 


 

2.3      SMART Command

 

Select ‘2’ to send SMART command to RAID0 via User#0 I/F.

 

Figure 29 Test result when running SMART command

 

After finishing the operation, SMART/Health Information (output from SMART command) of two SSDs are displayed as shown in Figure 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.4      Flush Command

 

Select ‘3’ to send Flush command to RAID0 via User#0 I/F.

 

Figure 210 Test result when running Flush command

 

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

 

2.5       Shutdown Command

 

Select ‘4’ to send Shutdown command to RAID0 via User#0 I/F.

 

 

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.0

11-Aug-22

Initial version release