The IPM-NVMe_Host core is a verilog IP to be integrated in a FPGA or ASIC design. It fully manages the NVMe and PCIe protocol on the host side without requiring any CPU and any specific knowledge. It can be used with any NVMe SSD available on the market, or with a custom design based on the IPM-NVMe_Device IP .
The IPM-NVMe_Host is well suited for embedded applications requiring a high throughput storage such as recorder and video applications. 1+ million IOPS performance requires the use of an expensive CPU, which is not feasible in an embedded system due to cost, space and power limitation.
Using the pre-validated IPM-NVMe_Host IP core greatly reduces time-to-market for storage OEM; this allows the OEM to benefit from a powerful data transfer manager. The IPM-NVMe_Host IP core is full featured and easy to use with multiple application interface such as AXI or RAM-like.
Description
The architecture of the Host NVM Express IP is based on 4 main blocks:
- Automatic init engine: PCIe and NVMe device initialization, hardware discovering
- User Interface: memory configuration and input for the transfer request by the API
- NVMe command manager: translation of the data request from API into a NVMe command. Submission and completion pointers management
- Data Transfer Engine: management of the data transfer between the NVMe SSD and the FIFO/memory
It delivers very low latency since it is a full hardware host NVMe implementation. That takes only few dozens of clock cycles (compared to multiple thousands of clock cycles for a software NVMe driver on a CPU). In addition, there is no needs of PCIe interrupt management because it is directly processed by the Host NVMe manager, therefore avoiding context switches.