(R&D) Valpré, Septembre 2006David Etasse Comment optimiser l’usage d’un lien Ethernet Gigabit en acquisition de données ? « FASTER »
FASTER 1.0 et FASTER 10.0 Le but de FASTER 1.0 Permettre au plus petit des FPGA de communiquer sur un lien Ethernet 1 Gbits/s au maximum de sa bande passante. 1 Gbits/s ou 125 MOctets/s ou 1500 Octets en 12 us ou 9600 Octets en 77 us permettre à des ordinateurs sous Linux de communiquer avec ces FPGA sans utiliser une carte hardware spécifique. utiliser une carte hardware spécifique. « Low Power, Low Cost but very High Speed » ©LPC Le but de FASTER 10.0 la même chose que FASTER 1.0 mais avec un lien 10 Gbits/s Ethernet. 10 Gbits/s ou 1.25 GOctets/s ou 1500 Octets en 1.2 us ou Octets en 12.8 us FASTER 1.0 Fast Acquisition SysTem on Ethernet netwoRk 1 Gbits/s Valpré, Septembre 2006David Etasse« FASTER »
SOMMAIRE Introduction Deux façons d’envoyer des données sur Ethernet CPU, Linux et TCP/IP Le driver Ethernet Optimisation de la réception du driver Ethernet Optimisation de la transmission du driver Ethernet FPGA et LPC Le protocole LPC (préliminaires) Développements futurs Valpré, Septembre 2006David Etasse« FASTER » ©LPC
FPGA RAM PHY 1G FLASH 4 cm 3.7 cm NIOSII µProcessor (Linux embedded) Ethernet MAC Lecture (Écriture) des données TNS Trigger Numérique Introduction ©LPC Valpré, Septembre 2006David Etasse« FASTER »
Introduction ©LPC 7Application ou Processus 6Présentation 5Session 4TransportHôte à hôte 3RéseauInternet 2Liaison Accès Réseau 1Physique Valpré, Septembre 2006David Etasse« FASTER » Operating System Linux Carte réseau Driver Ethernet
SOMMAIRE Introduction Deux façons d’envoyer des données sur Ethernet CPU, Linux et TCP/IP Le driver Ethernet Optimisation de la réception du driver Ethernet Optimisation de la transmission du driver Ethernet FPGA et LPC Le protocole LPC (préliminaires) Développements futurs Valpré, Septembre 2006David Etasse« FASTER » ©LPC
Driver Ethernet Driver Ethernet ©LPC 7Application ou Processus 6Présentation 5Session 4TransportHôte à hôte 3RéseauInternet 2Liaison Accès Réseau 1Physique Valpré, Septembre 2006David Etasse« FASTER » Driver Ethernet Il permet au système d’exploitation d’être indépendant du hardware On doit initialiser la structure associée au device ether_setup(dev); dev->open = lpc2g1000_open; dev->stop = lpc2g1000_close; dev->hard_start_xmit= lpc2g1000_start_xmit; dev->tx_timeout= lpc2g1000_timeout; dev->change_mtu = lpc2g1000_change_mtu; ….. On doit définir les handlers des interruptions Rx et Tx En fonctionnement, on appelle les fonctions de l’OS pour gérer le transfert provenant ou en direction de la couche Internet le transfert provenant ou en direction de la couche Internet
SOMMAIRE Introduction Deux façons d’envoyer des données sur Ethernet CPU, Linux et TCP/IP Le driver Ethernet Optimisation de la réception du driver Ethernet Optimisation de la transmission du driver Ethernet FPGA et LPC Le protocole LPC (préliminaires) Développements futurs Valpré, Septembre 2006David Etasse« FASTER » ©LPC
lpc2g1000_RxInterrupt(){ /* Lecture du nombre d’octets de la trame */ /* Lecture du nombre d’octets de la trame */ /* Allocation mémoire */ /* Allocation mémoire */ /* Lecture de la trame par le CPU */ /* Envoi du pointeur à la couche Internet */ /* Fin*/ } Valpré, Septembre 2006David Etasse« FASTER » Tache de basse priorité d’allocation mémoire d’allocation mémoire ©LPC (Optimisation de la réception du driver Ethernet) Allocation mémoire
lpc2g1000_RxInterrupt(){ /* Lecture du nombre d’octets de la trame */ /* Lecture du nombre d’octets de la trame */ /* Allocation mémoire */ /* Allocation mémoire */ /* Lecture de la trame par le CPU */ /* Envoi du pointeur à la couche Internet */ /* Fin*/ } Valpré, Septembre 2006David Etasse« FASTER » Tache de basse priorité d’allocation mémoire d’allocation mémoire Lecture de la trame par un DMA un DMA ©LPC (Optimisation de la réception du driver Ethernet) Utilisation de DMA
Valpré, Septembre 2006David Etasse« FASTER » Couche Internet Driver Interruption Trame Interruption Trame Driver Interruption Trame Trame Trame Méthode classique Méthode de modération des interruptions ©LPC (Optimisation de la réception du driver Ethernet) Modération des interruptions
lpc2g1000_RxInterrupt(){ /* Lecture du nombre d’octets de la trame */ /* Lecture du nombre d’octets de la trame */ /* Allocation mémoire */ /* Allocation mémoire */ /* Lecture de la trame par le CPU */ /* Lecture de la trame par le CPU */ /* Envoi du pointeur à la couche Internet */ /* Envoi du pointeur à la couche Internet */ /* Fin*/ /* Fin*/} Valpré, Septembre 2006David Etasse« FASTER » ether_setup(dev); dev->open = lpc2g1000_open; dev->stop = lpc2g1000_close; dev->hard_start_xmit= lpc2g1000_start_xmit; dev->tx_timeout= lpc2g1000_timeout; dev->change_mtu = lpc2g1000_change_mtu; dev->poll= lpc2g1000_poll; dev->weight= N; /* */ ….. lpc2g1000_RxInterrupt(){ /* Interdire les interruptions Rx*/ /* Interdire les interruptions Rx*/ /* Demander à l’OS de lancer la fonction /* Demander à l’OS de lancer la fonction de polling */ de polling */ /* Fin*/ /* Fin*/} lpc2g1000_poll(){ /* Lecture du nombre d’octets de la trame */ /* Lecture du nombre d’octets de la trame */ /* Allocation mémoire */ /* Allocation mémoire */ /* Lecture de la trame par le CPU */ /* Lecture de la trame par le CPU */ /* Envoi du pointeur à la couche Internet */ /* Envoi du pointeur à la couche Internet */ /* Tant qu’il y a des trames ou /* Tant qu’il y a des trames ou limite atteinte (weight)*/ limite atteinte (weight)*/ /* Autorisation des interruptions Rx */ /* Autorisation des interruptions Rx */ /* Fin*/ /* Fin*/} ©LPC (Optimisation de la réception du driver Ethernet) Modération des interruptions
Valpré, Septembre 2006David Etasse« FASTER » Exemple : Nios2 (80 Mhz), Linux , T IRQ = 10 us Lecture 1 trameLecture 10 trames (avec NAPI) GainLecture 10 trames (sans NAPI) 80 octets 50 % 7.4 us 84 us 174 us 1500 octets 1.41 ms 6 % 140 us 1.5 ms ©LPC (Optimisation de la réception du driver Ethernet) Modération des interruptions
©LPC Valpré, Septembre 2006David Etasse« FASTER » octets 1 Gbits/s DébitGain Nombre d’interruptions 1500 octets 1 Gbits/s (Optimisation de la réception du driver Ethernet) Utilisation de Jumbo Frame
©LPC Valpré, Septembre 2006David Etasse« FASTER » (Optimisation de la réception du driver Ethernet) Checksum TCP, IP, MAC IPHeaderTCPHeader Checksum Faire le checksum TCP/IP par le Hardware skb->ip_summed = CHECKSUM_UNNECESSARY; Ne pas vérifier le checksum TCP/IP pour les réseaux d’acquisition !!!!
©LPC Valpré, Septembre 2006David Etasse« FASTER » (Optimisation de la réception du driver Ethernet) Bilan Allocation mémoire Utilisation de DMA Modération des interruptions Utilisation de «Jumbo Frame » Checksum TCP
SOMMAIRE Introduction Deux façons d’envoyer des données sur Ethernet CPU, Linux et TCP/IP Le driver Ethernet Optimisation de la réception du driver Ethernet Optimisation de la transmission du driver Ethernet FPGA et LPC Le protocole LPC (préliminaires) Développements futurs Valpré, Septembre 2006David Etasse« FASTER » ©LPC
lpc2g1000_start_xmit (){ /* On stoppe l’émission des trames venant de la /* On stoppe l’émission des trames venant de la couche Internet*/ couche Internet*/ /* Écriture de la trame par le CPU */ /* Écriture de la trame par le CPU */ /* On prévient la couche réseau qu’elle peut /* On prévient la couche réseau qu’elle peut envoyer la trame*/ envoyer la trame*/ /* Fin*/ } Valpré, Septembre 2006David Etasse« FASTER » Écriture de la trame par un DMA (cache !!!!) un DMA (cache !!!!) ©LPC (Optimisation de la transmission du driver Ethernet) Utilisation de DMA lpc2g1000_TxInterrupt(){ /* On autorise l’émission des trames venant de /* On autorise l’émission des trames venant de la couche Internet */ la couche Internet */ /* Fin*/ }
Valpré, Septembre 2006David Etasse« FASTER » ©LPC (Optimisation de la transmission du driver Ethernet) Utilisation de DMA 175 μS 33 μS 10 μS DMA (4014 Octets) 10 μS 60 μS
Valpré, Septembre 2006David Etasse« FASTER » ©LPC (Optimisation de la transmission du driver Ethernet) Zéro copie (Scatter/Gather IO) Kernel Space User Space Données Utilisateurs TCP Header Ip Header Application Pile TCP/IP Driver Eth Header Mémoire du FPGA RAMSkb
Valpré, Septembre 2006David Etasse« FASTER » ©LPC (Optimisation de la transmission du driver Ethernet) Zéro copie (Scatter/Gather IO) Kernel Space User Space Mémoire du FPGA Données Utilisateurs TCP Header Ip Header Application Pile TCP/IP Driver Eth Header RAMSkb Page1 Page2 Page3 Prévenir que le driver est de type Scatter/Gather dev->features |= NETIF_F_SC;
©LPC Valpré, Septembre 2006David Etasse« FASTER » Checksum TCP, IP, MAC IPHeaderTCPHeader Checksum Faire le checksum TCP/IP par le Hardware dev->features |= NETIF_F_HW_CSUM; Ne pas calculer le checksum TCP/IP pour les réseaux d’acquisition !!!! (Optimisation de la transmission du driver Ethernet)
©LPC Valpré, Septembre 2006David Etasse« FASTER » (Optimisation de la transmission du driver Ethernet) Bilan Utilisation de DMA Zéro copie (Scatter/Gather) Utilisation de «Jumbo Frame » Checksum TCP
©LPC Valpré, Septembre 2006David Etasse« FASTER » (Optimisation du driver Ethernet) Bilan Carte TOE (Tcp/Ip Offload Engine) Jumbo frame Checksum Segmentation ….
©LPC Valpré, Septembre 2006David Etasse« FASTER » (Optimisation du driver Ethernet) Bilan Driver n°1 (JF + DMA) NiosII (80 Mhz) (Cyclone) 1.5 MO/s 2.8 MO/s Driver n°2 (CSUM + NAPI + SG) 4~5 MO/s
Bilan Acquisition Time: 20 minutes Acquisition rate : ~3000 part/sec Dead time : 90 % Acquisition Time : 3 seconds Acquisition rate : ~ part/sec Dead Time : 0 % Standard Acquisition FASTER (TCP/IP protocol) ©LPC Valpré, Septembre 2006David Etasse« FASTER » (Optimisation du driver Ethernet)
SOMMAIRE Introduction Deux façons d’envoyer des données sur Ethernet CPU, Linux et TCP/IP Le driver Ethernet Optimisation de la réception du driver Ethernet Optimisation de la transmission du driver Ethernet FPGA et LPC Le protocole LPC (préliminaires) Développements futurs Valpré, Septembre 2006David Etasse« FASTER » ©LPC
Deux façons d’envoyer des données sur Ethernet NIOSII µProcessor (Linux embedded) Ethernet Mac 16 MO (SDRAM) Je copie de la mémoire du FPGA vers la mémoire (Espace Kernel) Read data from FE Digital trigger, Shape Analysis, Put acquisition header Je copie de l’espace User vers le Kernel et ajoute le TCP/IP header Je copie du kernel vers le user space ©LPC Je copie du kernel vers la mémoire du FPGA Valpré, Septembre 2006David Etasse« FASTER »
Deux façons d’envoyer des données sur Ethernet NIOSII µProcessor (Linux embedded) Ethernet Mac 16 MO (SDRAM) Read data from FE Digital trigger, Shape Analysis, Put acquisition header ©LPC Valpré, Septembre 2006David Etasse« FASTER » Switch LPC Je configure le protocole LPC avant de démarrer l’acquisition Débit : 100 MOctets/sec
SOMMAIRE Introduction Deux façons d’envoyer des données sur Ethernet CPU, Linux et TCP/IP Le driver Ethernet Optimisation de la réception du driver Ethernet Optimisation de la transmission du driver Ethernet FPGA et LPC Le protocole LPC (préliminaires) Développements futurs Valpré, Septembre 2006David Etasse« FASTER » ©LPC
Fermeture <-- LPC-CloseReq LPC-Close --> <-- LPC-Reset Le protocole «LPC» (Préliminaires) Producteur Consommateur Initialisation LPC-Request --> <-- LPC-Response LPC-Ack --> Transfert de données LPC-Data --> <-- LPC-Ack « FASTER » presentation Fermeture LPC-Close --> <-- LPC-Reset ©LPC Valpré, Septembre 2006David Etasse« FASTER » Mesure de temps LPC-Time --> <-- LPC-Ack
Le protocole «LPC» (Préliminaires) ©LPC Valpré, Septembre 2006David Etasse« FASTER » Débit (Mo/sec) = 1500 (C * 12,762 us) + T décision (us) 25 m Débit (Mo/sec) = 9600 (C * 77,762 us) + T décision (us) Débit (Mo/sec) C = octets 121, octets 108,2 T décision = 0.1 us
Le protocole «LPC» (Préliminaires) ©LPC Valpré, Septembre 2006David Etasse« FASTER » Débit (Mo/sec) = 1500 (C * 12,762 us) + T décision (us) 25 m Débit (Mo/sec) C = octets 121, octets 108,2 Débit (Mo/sec) = 9600 (C * 77,762 us) + T décision (us) T décision = 0.1 us Débit (Mo/sec) C = m
Le protocole «LPC» (Préliminaires) ©LPC Valpré, Septembre 2006David Etasse« FASTER » Débit (Mo/sec) = 1500 (C * 12,762 us) + T décision (us) 25 m Débit (Mo/sec) = 9600 (C * 77,762 us) + T décision (us) 25 m Utilisation de mémoires de 1500 octets
Le protocole «LPC» (Préliminaires) ©LPC Valpré, Septembre 2006David Etasse« FASTER » Débit (Mo/sec) = 1500 (C * 12,762 us) + T décision (us) 25 m Débit (Mo/sec) = 9600 (C* 77,762 us) + T décision (us) Débit (Mo/sec) C = octets octets 14,6 T décision = 90 us Débit (Mo/sec) C = m
Le protocole «LPC» (Préliminaires) ©LPC Valpré, Septembre 2006David Etasse« FASTER » Débit (Mo/sec) = 1500 (C * 12,762 us) + T décision (us) 25 m Débit (Mo/sec) = 9600 (C* 77,762 us) + T décision (us) 25 m Utilisation de mémoires de 9600 octets
Le protocole «LPC» et Linux IP TCPUDP LPC Socket Physical Component Ethernet Driver ©LPC Kernel Space Application User Space Socket Physical Component Ethernet Driver Application sd = socket (AF_INET, SOCK_STREAM, 0); sd = socket (PF_LPC, SOCK_LPC, 0); Valpré, Septembre 2006David Etasse« FASTER »
SOMMAIRE Introduction Deux façons d’envoyer des données sur Ethernet CPU, Linux et TCP/IP Le driver Ethernet Optimisation de la réception du driver Ethernet Optimisation de la transmission du driver Ethernet FPGA et LPC Le protocole LPC (préliminaires) Développements futurs Valpré, Septembre 2006David Etasse« FASTER » ©LPC
Développements futures Valpré, Septembre 2006David Etasse« FASTER » ©LPC Hardware Implantation du protocole « LPC » Test du checksum TCP Carte DSP Carte mère pour Advanced-TCA Carte de numérisation (1 Ghz 8-10 bits) Ethernet 10 Gbits/s Software Adaptation de U-boot Implantation du protocole « LPC » pour linux Amélioration du driver Ethernet (NAPI, Scatter/Gather)
Cyclone II Or Stratix II NiosII Linux RAM FLASH Cyclone II LPC protocol Développements futures Advanced-TCA FEE SwitchEthernet POWER DSP Switch Ethernet 12 ports 1 Gbits/s Switch Ethernet 10 ports 1 Gbits/s 1 port 10 Gbits/s Valpré, Septembre 2006David Etasse« FASTER » ©LPC
SOMMAIRE Introduction Deux façons d’envoyer des données sur Ethernet CPU, Linux et TCP/IP Le driver Ethernet Optimisation de la réception du driver Ethernet Optimisation de la transmission du driver Ethernet FPGA et LPC Le protocole LPC (préliminaires) Développements futurs Valpré, Septembre 2006David Etasse« FASTER » ©LPC