NVMe PetaLinux dépasse 7 Go/s sur le kit d'évaluation ZCU106 d'AMD avec la solution de Design Gateway

Par Design Gateway Co., Ltd.

La plupart des conceptions MPSoC Zynq™ UltraScale+™ sur Linux embarqué n'atteignent qu'un débit d'environ 2 Go/s lorsqu'elles utilisent le pilote NVMe standard avec le bloc matériel PCIe Gen3. Cet article présente la première solution NVMe PetaLinux au monde fonctionnant à la vitesse PCIe Gen4 sans dépendre du bloc matériel PCIe du FPGA. Cette avancée est rendue possible grâce à l'utilisation d'un bloc IP NVMe associé à un pilote de périphérique sur mesure de Design Gateway. Avec le kit d'évaluation ZCU106 d'AMD, cet article démontre qu'il est possible d'atteindre des vitesses de lecture d'environ 7,5 Go/s et d'écriture de 6,9 Go/s avec un SSD NVMe Gen4 standard, et montre comment la technologie de Design Gateway libère le plein potentiel du NVMe haut débit sur les plateformes Linux embarqué.

Présentation du kit d'évaluation MPSoC Zynq™ UltraScale+™ ZCU106

Le kit d'évaluation ZCU106 d'AMD est architecturé sur la plateforme MPSoC Zynq™ UltraScale+™, intégrant des processeurs Arm Cortex®-A53 à quatre cœurs avec une logique programmable haute vitesse. Grâce à cette puissante combinaison, les ingénieurs peuvent exécuter des systèmes d'exploitation complets tels que PetaLinux, permettant le contrôle logiciel, la gestion des E/S à haute vitesse et le fonctionnement de l'accélérateur FPGA dans un seul environnement.

Image du kit d'évaluation Zynq™ UltraScale+™ d'AMD (cliquez pour agrandir)Figure 1 : Kit d'évaluation Zynq™ UltraScale+™ d'AMD. (Source de l'image : Advanced Micro Devices, Inc.)

Image de Linux (PetaLinux) s'exécutant sur un MPSoC Zynq™ UltraScale+™ d'AMDFigure 2 : Linux (PetaLinux) s'exécutant sur un MPSoC Zynq™ UltraScale+™ d'AMD — alliant la flexibilité du logiciel à l'accélération matérielle du FPGA. (Source de l'image : AMD)

Pour exploiter pleinement le potentiel de performances des SSD NVMe PCIe Gen4, les développeurs doivent toutefois également comprendre comment se comporte la pile NVMe Linux traditionnelle sur les SoC embarqués. Même avec la puissante architecture hétérogène du ZCU106, les systèmes PetaLinux peuvent rencontrer des limitations de débit et d'efficacité, un défi abordé dans la section suivante.

Pourquoi NVMe sur PetaLinux constitue souvent un goulet d'étranglement

Bien que PetaLinux fournisse une puissante couche logicielle pour contrôler le matériel et gérer les entrées/sorties de données, son implémentation NVMe conventionnelle n'est pas optimisée pour des performances à haut débit soutenues. L'interaction entre le noyau Linux et le système de traitement basé sur ARM introduit de multiples sources d'inefficacité qui limitent l'utilisation de la bande passante même lorsque des ressources PCIe Gen4 sont disponibles :

  • ⚙️ Surcharge de la pile du noyau : le pilote NVMe standard s'exécute entièrement dans le noyau Linux, ce qui implique de multiples changements de contexte, la gestion des interruptions, des copies de tampon et la maintenance du cache. Ces opérations logicielles limitent les IOPS et empêchent l'utilisation de la bande passante complète.
  • Limitations d'ordonnancement et de profondeur de file d'attente : les configurations NVMe par défaut utilisent souvent des files d'attente peu profondes et des tailles de blocs E/S réduites. Combinée à la surcharge d'ordonnancement du noyau, l'utilisation du processeur sature avant la bande passante de la liaison.
  • Contraintes du sous-système mémoire et CPU : sur les SoC embarqués comme le MPSoC Zynq UltraScale+, la bande passante DDR et le trafic de cohérence du cache entre PS et PL peuvent devenir la véritable limitation de performances.
  • Gestion de l'alimentation et IRQ : les systèmes configurés avec des gouverneurs CPU à la demande ou des affinités d'interruptions non équilibrées peuvent subir une réduction des performances en cas de charges de travail E/S importantes.
  • Impact réel : même les systèmes bien réglés avec le pilote NVMe conventionnel dépassent rarement ~1,5–2,5 Go/s. Cela ne représente que 50–60 % de la bande passante de 4 Go/s, qui est la pleine capacité de PCIe Gen3x4.
  • Bloc matériel PCIe non disponible pour Gen4 : bien que certains dispositifs SoC comportent des émetteurs-récepteurs prenant en charge les débits PCIe Gen4 (16 Gbps par voie), leur bloc matériel PCIe intégré reste limité au fonctionnement Gen3. Cette lacune architecturale empêche le système d'exploiter le plein potentiel de la bande passante Gen4, limitant ainsi les applications à données intensives ou à hautes performances qui exigent un débit multi-gigaoctets soutenu sur des plateformes FPGA optimisées en termes de coûts.

Dépasser ces limites

Pour surmonter cette limitation de performances, les développeurs abandonnent généralement la pile de stockage gérée par le noyau au profit de l'espace utilisateur ou des E/S accélérées par le matériel. Il existe deux approches principales :

  • Frameworks SPDK/DPDK : utilisation de pilotes en mode d'interrogation dans l'espace utilisateur, éliminant les changements de contexte du noyau et les interruptions. Cependant, cette méthode consomme d'énormes ressources CPU.
  • Déchargement FPGA (par exemple, NVMe-IP + moteur DMA) : déplace le traitement des commandes, la mise en file d'attente et le transfert de données dans une logique programmable, atteignant un débit proche de la vitesse du fil avec des performances déterministes au niveau matériel.

Architecture de la solution

Image de la comparaison des solutions NVMe sur PetaLinux avec Zynq UltraScale+Figure 3 : Comparaison des solutions NVMe sur PetaLinux avec Zynq UltraScale+. (Source de l'image : Design Gateway)

La solution DMA PetaLinux de Design Gateway remplace l'IP matériel PCIe et le pilote NVMe traditionnels par un cœur NVMeG4-IP logiciel et un pilote NVMe DG personnalisé.

Cette architecture à déchargement matériel exécute PCIe Gen4 entièrement via des émetteurs-récepteurs FPGA, atteignant un débit de 7 Go/s sur les plateformes Zynq UltraScale+. En combinant NVMeG4-IP et double AXI DMA dans un pilote DG unifié, le système élimine la surcharge CPU, permettant des performances Gen4 x4 complètes sur PetaLinux.

Fonctionnalités clés

  • IP logicielle NVMe Gen4 en PL — Solution NVMe complète à déchargement matériel intégrant un bloc IP logiciel PCIe Gen4, éliminant le recours à un bloc matériel PCIe et utilisant des émetteurs-récepteurs FPGA à leur potentiel maximum.
  • Deux canaux DMA pour doubler la bande passante DMA, jusqu'à 8 Go/s pour la vitesse PCIe Gen4.
  • Pilote PetaLinux personnalisé avec interfaces de contrôle et de surveillance claires, et optimisé pour éliminer les goulets d'étranglement dans le transfert de données entre logiciel et matériel.
  • Interfaces compatibles AXI pour intégration aisée dans les pipelines de données PL.
  • Pack de démonstration complet avec code source, scripts, documentation et instructions de mise en service rapide.
  • Conception portable adaptable à tout dispositif FPGA d'AMD prenant en charge Linux embarqué.

Implémentation et résultats de performances sur ZCU106

La Figure 4 présente un aperçu de la conception de référence basée sur le kit d'évaluation ZCU106 d'AMD (XCZU7EV). Le système intègre l'IP logicielle NVMe Gen4 de Design Gateway avec une architecture double DMA et un pilote PetaLinux personnalisé, permettant un accès à haut débit entre le SSD NVMe Gen4 et le système d'exploitation PetaLinux.

Pour plus de détails sur la conception de référence NVMeG4-IP avec DMA sur PetaLinux, reportez-vous à la documentation de conception de référence NVMeG4-IP avec DMA sur PetaLinux fournie sur le site Web de Design Gateway.

Image de la documentation de conception de référence NVMeG4-IP avec DMA sur PetaLinuxFigure 4 : Vue d'ensemble de la conception de référence. (Source de l'image : Design Gateway)

Le système de démonstration est conçu pour écrire et vérifier les données avec le SSD NVMe sur le ZCU106. L'exécution des tests est contrôlée via une console série sur PetaLinux à l'aide de l'application DG NVMe. Cette application transfère les données entre la mémoire hôte et le SSD NVMe via deux canaux DMA pour un fonctionnement haute vitesse. Le CPU est uniquement responsable de la configuration et de la surveillance, tandis que tous les mouvements de données sont gérés par le matériel.

Une carte d'adaptateur AB17-M2FMC est utilisée pour connecter le SSD NVMe au port FMC-HPC, comme illustré à la Figure 5.

Image de l'environnement de démonstration configuré sur le ZCU106Figure 5 : Environnement de démonstration configuré sur le ZCU106. (Source de l'image : Design Gateway)

Le résultat de test d'exemple lors de l'exécution du système de démonstration sur le ZCU106 en utilisant le 990 Pro de 1 To de Samsung est présenté à la Figure 6, confirmant l'utilisation complète de la bande passante PCIe Gen4 x4 sur PetaLinux.

Image de la comparaison des performances de lecture/écriture du SSD NVMe sur le ZCU106Figure 6 : Comparaison des performances de lecture/écriture du SSD NVMe sur le ZCU106 : pilote NVMe traditionnel et solution DG NVMe. (Source de l'image : Design Gateway)

Conclusion

L'IP logicielle NVMe Gen4 de Design Gateway pour PetaLinux transforme le Zynq UltraScale+ en une plateforme de stockage hautes performances, atteignant un débit inédit de 7 Go/s à la vitesse Gen4. En déchargeant entièrement le protocole NVMe dans la logique matérielle, avec un pilote de périphérique PetaLinux optimisé, la solution élimine les goulets d'étranglement au niveau logiciel, maximise l'efficacité du chemin de données et ajuste la bande passante pour les charges de travail d'acquisition de données et de traitement vidéo. La conception est portable, efficace et idéale pour les systèmes périphériques ou embarqués qui exigent à la fois un haut débit et des performances déterministes.

Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.

À propos de l'auteur

Design Gateway Co., Ltd.