Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD
A topology is disclosed. The topology may include at least one Non-Volatile Memory Express (NVMe) Solid State Drive (SSD), a Field Programmable Gate Array (FPGA) to implement one or more functions supporting the NVMe SSD, such as data acceleration, data deduplication, data integrity, data encryption, and data compression, and a Peripheral Component Interconnect Express (PCIe) switch. The PCIe switch may communicate with both the FPGA and the NVMe SSD.
1. A system, comprising:
a first Non-Volatile Memory Express (NVMe) Solid State Drive (SSD);
a second NVMe SSD;
a Field Programmable Gate Array (FPGA), the FPGA implementing one or more functions supporting the first NVMe SSD, the functions comprising at least one of data acceleration, data deduplication, data integrity, data encryption, and data compression, and including a Peripheral Component Interconnect Express (PCIe) switch, the PCIe switch including a processing circuit configured to direct an NVMe storage command, sent to the system, to the FPGA;
wherein the PCIe switch communicates with the FPGA and is connected to the first NVMe SSD, and
wherein the PCIe switch receives the NVMe storage command sent to the system and delivers the NVME storage command to the FPGA based at least in part on the processing circuit.
2. The system according to claim 1 , wherein the FPGA includes an Erasure Coding circuit, the Erasure Coding circuit including an Erasure Coding controller.
3. The system according to claim 2 , wherein the Erasure Coding circuit is configured to return a response to a read request from the host based at least in part on a data requested in the read request is present in a cache.
4. The system according to claim 2 , wherein the Erasure Coding circuit is configured to return a response to a write request to the host independent of completing the write request.
5. The system according to claim 2 , wherein the Erasure Coding circuit includes a Look-Aside Erasure Coding circuit, the Look-Aside Erasure Coding circuit including the processing circuit.
6. The system according to claim 2 , wherein the Erasure Coding circuit is configured to intercept a data transmission received at the FPGA from the host and replace a host Logical Block Address (LBA) used by the host in the data transmission with a device LBA used by the first NVMe SSD.
7. The system according to claim 2 , wherein the FPGA is configured to enable the Erasure Coding circuit based at least in part on the NVMe SSD not including a native Erasure Coding circuit.
8. The system according to claim 2 , further comprising a second device connected to the FPGA with Erasure Coding circuit.
9. The system according to claim 8 , wherein:
the second device comprises at least one of a non-storage device and a storage device with a native Erasure Coding circuit; and
the FPGA is configured to disable the Erasure Coding circuit based at least in part on the second device.
10. The system according to claim 8 , wherein:
the second device comprises at least one of a non-storage device and a storage device with a native Erasure Coding circuit; and
the FPGA is configured to enable the Erasure Coding circuit based at least in part on the first NVMe SSD not including a native Erasure Coding circuit and to enable access to the second device without using the Erasure Coding circuit.
11. A system, comprising:
a first Non-Volatile Memory Express (NVMe) Solid State Drive (SSD);
a second NVMe SSD; and
a Field Programmable Gate Array (FPGA), the FPGA including a first FPGA part and a second FPGA part, the first FPGA part implementing one or more functions supporting the first NVMe SSD, the functions comprising at least one of data acceleration, data deduplication, data integrity, data encryption, and data compression, and the second FPGA part implementing a Peripheral Component Interconnect Express (PCIe) switch, the PCIe switch including a processing circuit configured to direct an NVMe storage command, sent to the system, to the FPGA,
wherein the PCIe switch communicates with the first FPGA part and is connected to the first NVMe SSD,
wherein the PCIe switch receives the NVMe storage command sent to the system and delivers the NVMe storage command to the first FPGA part based at least in part on the processing circuit, and wherein the first FPGA part, the PCIe switch, the first NWMe SSD and the second NVMe SSD are internal to a common housing.
12. The system according to claim 11 , wherein the FPGA includes an Erasure Coding circuit, the Erasure Coding circuit including an Erasure Coding controller.
13. The system according to claim 12 , wherein the Erasure Coding includes at least one of a Look-Aside Erasure Coding or a Look-Through Erasure Coding circuit.
14. The system according to claim 12 , wherein the Erasure Coding circuit is configured to return a response to a read request from the host based at least in part on a data requested in the read request is present in a cache.
15. The system according to claim 12 , wherein the Erasure Coding circuit is configured to return a response to a write request to the host independent of completing the write request.
16. The system according to claim 12 , wherein the Erasure Coding circuit includes a Look-Aside Erasure Coding circuit, the Look-Aside Erasure Coding circuit including the processing circuit.
17. The system according to claim 12 , wherein the Erasure Coding circuit is configured to intercept a data transmission received at the FPGA from the host and replace a host Logical Block Address (LBA) used by the host in the data transmission with a device LBA used by the first NVMe SSD.
18. The system according to claim 12 , wherein the Erasure Coding circuit is configured to intercept a data transmission received at the FPGA from the first NVMe SSD and replace a device LBA used by the first NVMe SSD in the data transmission with a host LBA used by the host.
19. The system according to claim 12 , wherein the FPGA with Erasure Coding circuit is to enable the Erasure Coding circuit based at least in part on the first NVMe SSD not including a native Erasure Coding circuit.
20. The system according to claim 12 , wherein the FPGA with Erasure Coding circuit is to disable the Erasure Coding circuit based at least in part on the first NVMe SSD including a native Erasure Coding circuit.
21. The system according to claim 8 , wherein the NVMe SSD and the second device are in separate housings.
22. A system, comprising:
a first Non-Volatile Memory Express (NVMe) Solid State Drive (SSD);
a second NVMe SSD;
a Field Programmable Gate Array (FPGA), the FPGA implementing one or more functions supporting the first NVMe SSD, the functions comprising at least one of data deduplication, data encryption, and data compression, the FPGA including a Peripheral Component Interconnect Express (PCIe) switch, the PCIe switch including a processing circuit configured to direct an NVMe storage command, sent to the system, to the FPGA;
wherein the PCIe switch communicates with the FPGA and is connected to the first NVMe SSD, and wherein the PCIe switch receives the NVMe storage command sent to the first NVMe SSD and delivers the NVMe storage command to the FPGA based at least in part on the processing circuit.
23. The system according to claim 22 , further comprising a common housing including the first NVMe SSD, the second NVMe SSD, the FPGA, and the PCIe switch.
24. The system according to claim 1 , further comprising a common housing including the first NVMe SSD, the second NVMe SSD, the FPGA, and the PCIe switch.
25. The system according to claim 1 , wherein the NVMe storage command is associated with a storage operation for data storage on the first NVMe SSD.
26. The system according to claim 1 , wherein the FPGA the first NVMe SSD, and the second NVMe SSD are exposed to the host as a single device.
27. The system according to claim 26 , wherein the single device is exposed to the host as an NVMe storage device.
28. The system according to claim 1 , wherein the PCIe switch is configured to direct a second NVMe storage command to the first NVMe SSD based at least in part on the processing circuit.