NVMe per PetaLinux supera i 7 GB/s sul kit di valutazione ZCU106 di AMD con la soluzione di Design Gateway

Di Design Gateway Co., Ltd.

La maggior parte dei progetti MPSoC Zynq™ UltraScale+™ su Linux embedded raggiunge un throughput di appena 2 GB/s circa quando si utilizza il driver NVMe standard con il blocco rigido PCIe Gen3. Questo articolo presenta la prima soluzione NVMe per PetaLinux al mondo che opera alla velocità di PCIe Gen4 senza fare affidamento sul blocco rigido PCIe dell'FPGA. Questa innovazione è stata ottenuta grazie all'utilizzo di un controller NVMe IP Core e di un driver personalizzato di Design Gateway. Dedicato al kit di valutazione ZCU106 di AMD, questo articolo dimostrerà che è possibile ottenere velocità di circa 7,5 GB/s in lettura e 6,9 GB/s in scrittura con un'unità SSD NVMe Gen4 di tipo mainstream e illustrerà come la tecnologia di Design Gateway possa sbloccare il pieno potenziale di NVMe ad alta velocità sulle piattaforme Linux embedded.

Presentazione del kit di valutazione MPSoC Zynq™ UltraScale+™ ZCU106

Il kit di valutazione ZCU106 di AMD è costruito sulla piattaforma MPSoC Zynq™ UltraScale+™, che integra processori Arm Cortex®-A53 quad-core con logica programmabile ad alta velocità. Questa potente combinazione permette agli ingegneri di eseguire sistemi operativi completi come PetaLinux, consentendo controllo software, gestione I/O ad alta velocità e funzionamento dell'acceleratore FPGA in un unico ambiente.

Immagine del kit di valutazione Zynq™ UltraScale+™ di AMD (fare clic per ingrandire)Figura 1: Kit di valutazione Zynq™ UltraScale+™ di AMD. (Immagine per gentile concessione di Advanced Micro Devices, Inc.)

Immagine di Linux (PetaLinux) in esecuzione su MPSoC Zynq™ UltraScale+™ di AMDFigura 2: Linux (PetaLinux) in esecuzione su MPSoC Zynq™ UltraScale+™ di AMD, combinando la flessibilità del software con l'accelerazione hardware dell'FPGA. (Immagine per gentile concessione di AMD)

Per sfruttare appieno le potenzialità di prestazioni delle unità SSD NVMe PCIe Gen4, tuttavia, è importante che gli sviluppatori comprendano come si comporta il tradizionale stack NVMe di Linux sui SoC embedded. Anche con la potente architettura eterogenea di ZCU106, i sistemi PetaLinux possono incontrare limitazioni in termini di throughput ed efficienza, una sfida che esploreremo nella sezione seguente.

Perché si verificano spesso colli di bottiglia con NVMe su PetaLinux

Sebbene PetaLinux fornisca un potente strato software per il controllo dell'hardware e la gestione dell'I/O dati, la sua implementazione NVMe convenzionale non è ottimizzata per prestazioni sostenute ad alto throughput. L'interazione tra il kernel Linux e il sistema di elaborazione basato su ARM introduce molteplici fonti di inefficienza che limitano l'utilizzo della larghezza di banda anche quando sono disponibili risorse PCIe Gen4:

  • ⚙️ Sovraccarico dello stack del kernel: il driver NVMe standard viene eseguito interamente all'interno del kernel Linux, il che implica molteplici commutazioni di contesto, gestione degli interrupt, copie di buffer e manutenzione della cache. Queste operazioni guidate dal software limitano l'IOPS e impediscono l'utilizzo della larghezza di banda completa.
  • Limiti della pianificazione e della profondità della coda: le configurazioni NVMe predefinite utilizzano spesso code poco profonde e blocchi I/O di piccole dimensioni. In combinazione con il sovraccarico della pianificazione del kernel, l'utilizzo della CPU si satura prima della larghezza di banda del collegamento.
  • Vincoli della CPU e del sottosistema di memoria: nei SoC embedded come l'MPSoC Zynq UltraScale+, la larghezza di banda DDR e il traffico di coerenza della cache tra PS e PL possono diventare il vero limite delle prestazioni.
  • Gestione dell'alimentazione e delle IRQ: nei sistemi configurati con governor della CPU su richiesta o con affinità di interrupt sbilanciate è possibile riscontrare prestazioni ridotte in caso di carichi di lavoro I/O elevati.
  • Impatto nel mondo reale: anche i sistemi ben tarati che utilizzano il driver NVMe convenzionale raramente superano 1,5-2,5 GB/s. Parliamo di appena il 50-60% della larghezza di banda di 4 GB/s che rappresenta la piena capacità di PCIe Gen3x4.
  • Blocco rigido PCIe non disponibile per Gen4: sebbene alcuni dispositivi SoC siano dotati di transceiver che supportano velocità di trasmissione PCIe Gen4 (16 Gbps per canale), il loro blocco rigido PCIe integrato rimane limitato al funzionamento Gen3. Questa lacuna architetturale impedisce al sistema di sfruttare appieno le potenzialità in termini di larghezza di banda di Gen4, limitando le applicazioni ad alte prestazioni o a uso intensivo di dati che richiedono un throughput sostenuto di diversi gigabyte su piattaforme FPGA a costi ottimizzati.

Superare il limite

Per superare questa limitazione delle prestazioni, gli sviluppatori di solito abbandonano lo stack di storage gestito dal kernel per passare all'I/O ad accelerazione hardware o spazio utente. Gli approcci più utilizzati sono due:

  • Framework SPDK/DPDK: utilizzano driver in modo polling nello spazio utente, eliminando gli interrupt e le commutazioni di contesto del kernel. Questo metodo consuma però enormi risorse della CPU.
  • Alleggerimento del carico dell'FPGA (es. NVMe-IP + motore DMA): sposta nella logica programmabile l'elaborazione dei comandi, l'accodamento e il trasferimento dati, ottenendo un throughput vicino alla velocità del cavo con prestazioni deterministiche a livello hardware.

Architettura della soluzione

Immagine del confronto tra soluzioni NVMe su PetaLinux con Zynq UltraScale+Figura 3: Confronto tra soluzioni NVMe su PetaLinux con Zynq UltraScale+. (Immagine per gentile concessione di Design Gateway)

La soluzione DMA PetaLinux di Design Gateway sostituisce il tradizionale IP rigido PCIe e il driver NVMe con un soft core NVMeG4-IP e un driver NVMe di DG personalizzato.

Questa architettura con scarico hardware esegue PCIe Gen4 interamente attraverso transceiver FPGA, raggiungendo un throughput di 7 GB/s su piattaforme Zynq UltraScale+. Combinando NVMeG4-IP e due AXI DMA in un driver di DG unificato, il sistema elimina il sovraccarico della CPU, consentendo piene prestazioni Gen4 x4 su PetaLinux.

Caratteristiche principali

  • Soft core IP NVMe Gen4 in PL: soluzione NVMe completa con scarico hardware che integra un soft core IP PCIe Gen4, eliminando la necessità di blocco rigido PCIe e utilizzando i transceiver FPGA al loro massimo potenziale.
  • Due canali DMA per raddoppiare la larghezza di banda DMA, raggiungendo gli 8 GB/s per la velocità PCIe Gen4.
  • Driver PetaLinux personalizzato con interfacce di controllo e monitoraggio pulite, ben ottimizzate per eliminare i colli di bottiglia nel trasferimento dati software-hardware.
  • Interfacce compatibili con AXI per la facile integrazione nelle pipeline di dati PL.
  • Pacchetto demo completo con codice sorgente, script, documentazione e istruzioni per la rapida implementazione.
  • Progetto portatile adattabile a qualsiasi dispositivo FPGA di AMD che supporti Linux embedded.

Implementazione e risultato delle prestazioni su ZCU106

La Figura 4 mostra la panoramica del progetto di riferimento basato sul kit di valutazione ZCU106 di AMD (XCZU7EV). Il sistema integra il soft core IP NVMe Gen4 di Design Gateway con un'architettura a due DMA e un driver PetaLinux personalizzato, consentendo l'accesso ad alta velocità tra l'SSD NVMe Gen4 e il sistema operativo PetaLinux.

Per maggiori dettagli sul progetto di riferimento NVMeG4-IP con DMA su PetaLinux consultare la documentazione del progetto di riferimento NVMeG4-IP con DMA disponibile sul sito Web di Design Gateway.

Immagine della documentazione del progetto di riferimento NVMeG4-IP con DMA su PetaLinuxFigura 4: Panoramica del progetto di riferimento. (Immagine per gentile concessione di Design Gateway)

Il sistema di dimostrazione è progettato per scrivere e verificare i dati con SSD NVMe su ZCU106. L'esecuzione del test è controllata tramite una console seriale su PetaLinux utilizzando l'applicazione NVMe di DG. Questa applicazione trasferisce i dati tra la memoria host e l'unità SSD NVMe attraverso due canali DMA per un funzionamento ad alta velocità. La CPU è responsabile solo per l'impostazione e il monitoraggio, mentre tutti i trasferimenti di dati sono gestiti a livello hardware.

Per collegare l'unità SSD NVMe allo slot FMC-HPC si utilizza una scheda di espansione AB17-M2FMC, come illustrato nella Figura 5.

Immagine dell'ambiente dimostrativo impostato su ZCU106Figura 5: Ambiente dimostrativo impostato su ZCU106. (Immagine per gentile concessione di Design Gateway)

Il risultato del test di esempio quando si esegue il sistema dimostrativo su ZCU106 con Samsung 990 Pro da 1 TB è riportato nella Figura 6, a conferma del pieno utilizzo della larghezza di banda PCIe Gen4 x4 su PetaLinux.

Immagine del confronto delle prestazioni di lettura/scrittura di SSD NVMe su ZCU106Figura 6: Confronto delle prestazioni di lettura/scrittura di SSD NVMe su ZCU106: driver NVMe tradizionale e soluzione NVMe di DG. (Immagine per gentile concessione di Design Gateway)

Conclusione

Il soft core IP NVMe Gen4 di Design Gateway per PetaLinux trasforma l'MPSoC Zynq UltraScale+ in una piattaforma di storage ad alte prestazioni, raggiungendo un throughput di 7 GB/s alla velocità Gen4. Grazie allo spostamento del carico completo del protocollo NVMe nella logica hardware e a un driver PetaLinux ben ottimizzato, la soluzione elimina i colli di bottiglia a livello di software, massimizza l'efficienza del percorso dati e regola la larghezza di banda in base ai carichi di lavoro di elaborazione video e DAQ. Il progetto è portatile, efficiente e ideale per sistemi edge o embedded che richiedono prestazioni elevate in termini di throughput e determinismo.

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.

Informazioni su questo autore

Design Gateway Co., Ltd.