RD Comment optimiser lusage dun lien Ethernet Gigabit
(R&D) Comment optimiser l’usage d’un lien Ethernet Gigabit en acquisition de données ? etasse@lpccaen. in 2 p 3. fr David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC 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. FASTER 1. 0 Fast Acquisition Sys. Tem on Ethernet netwo. Rk 1 Gbits/s 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 16000 Octets en 12. 8 us « Low Power, Low Cost but very High Speed » David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
SOMMAIRE ©LPC q Introduction q Deux façons d’envoyer des données sur Ethernet q CPU, Linux et TCP/IP q Le driver Ethernet q Optimisation de la réception du driver Ethernet q Optimisation de la transmission du driver Ethernet q FPGA et LPC q Le protocole LPC (préliminaires) q Développements futurs David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Introduction 4 cm FPGA Lecture (Écriture) des données TNS Trigger Numérique David Etasse PHY 1 G 3. 7 cm Ethernet. RAM MAC NIOSII µProcessor (Linux embedded) FLASH « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Introduction 7 Application 6 Présentation 5 Session 4 Transport Hôte à hôte 3 Réseau Internet 2 Liaison 1 Physique David Etasse Application ou Processus Operating System Linux Driver Ethernet Accès Réseau Carte réseau « FASTER » Valpré, 18 -21 Septembre 2006
SOMMAIRE ©LPC ü Introduction q q Deux façons d’envoyer des données sur Ethernet q CPU, Linux et TCP/IP q Le driver Ethernet q Optimisation de la réception du driver Ethernet q Optimisation de la transmission du driver Ethernet q FPGA et LPC q Le protocole LPC (préliminaires) q Développements futurs David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Driver Ethernet 7 Application 6 Présentation 5 Session 4 Transport 3 Réseau 2 Liaison 1 Physique Application ou Processus Hôte à hôte Internet Driver Ethernet Accès Réseau Ø 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 dev->stop dev->hard_start_xmit dev->tx_timeout dev->change_mtu = lpc 2 g 1000_open; = lpc 2 g 1000_close; = lpc 2 g 1000_start_xmit; = lpc 2 g 1000_timeout; = lpc 2 g 1000_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 David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
SOMMAIRE ©LPC ü Introduction q q Deux façons d’envoyer des données sur Ethernet q CPU, Linux et TCP/IP ü Le driver Ethernet q q Optimisation de la réception du driver Ethernet q Optimisation de la transmission du driver Ethernet q FPGA et LPC q Le protocole LPC (préliminaires) q Développements futurs David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Allocation mémoire (Optimisation de la réception du driver Ethernet) lpc 2 g 1000_Rx. Interrupt(){ /* Lecture du nombre d’octets de la trame */ /* Allocation mémoire */ Ø Tache de basse priorité d’allocation mémoire /* Lecture de la trame par le CPU */ /* Envoi du pointeur à la couche Internet */ /* Fin*/ } David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Utilisation de DMA (Optimisation de la réception du driver Ethernet) lpc 2 g 1000_Rx. Interrupt(){ /* Lecture du nombre d’octets de la trame */ /* Allocation mémoire */ /* Lecture de la trame par le CPU */ /* Envoi du pointeur à la couche Internet */ Ø Tache de basse priorité d’allocation mémoire Ø Lecture de la trame par un DMA /* Fin*/ } David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Modération des interruptions (Optimisation de la réception du driver Ethernet) Méthode de modération des interruptions Méthode classique Couche Internet Driver Interruption Trame Interruption Trame David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Modération des interruptions (Optimisation de la réception du driver Ethernet) ether_setup(dev); dev->open dev->stop dev->hard_start_xmit dev->tx_timeout dev->change_mtu dev->poll dev->weight …. . lpc 2 g 1000_Rx. Interrupt(){ /* Lecture du nombre d’octets de la trame */ /* Interdire les interruptions Rx*/ /* Allocation mémoire */ /* Demander à l’OS de lancer la fonction /* Lecture de la trame par le CPU */ de polling */ /* Envoi du pointeur à la couche Internet */ /* Fin*/ } } David Etasse = lpc 2 g 1000_open; = lpc 2 g 1000_close; = lpc 2 g 1000_start_xmit; = lpc 2 g 1000_timeout; = lpc 2 g 1000_change_mtu; = lpc 2 g 1000_poll; = N; /*16 - 64*/ lpc 2 g 1000_poll(){ /* Lecture du nombre d’octets de la trame */ /* Allocation mémoire */ /* Lecture de la trame par le CPU */ /* Envoi du pointeur à la couche Internet */ /* Tant qu’il y a des trames ou limite atteinte (weight)*/ /* Autorisation des interruptions Rx */ /* Fin*/ } « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Modération des interruptions (Optimisation de la réception du driver Ethernet) Exemple : Nios 2 (80 Mhz), Linux 2. 6. 11, TIRQ = 10 us Lecture 1 trame Lecture 10 trames (sans NAPI) (avec NAPI) Gain 1500 octets 140 us 1. 5 ms 1. 41 ms 6 % 80 octets 7. 4 us 174 us 84 us 50 % David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Utilisation de Jumbo Frame 1500 octets (Optimisation de la réception du driver Ethernet) Débit Nombre d’interruptions 1 Gbits/s 83 333 Gain 6. 4 9600 octets David Etasse 1 Gbits/s « FASTER » 13 021 Valpré, 18 -21 Septembre 2006
Checksum TCP, IP, MAC (Optimisation de la réception du driver Ethernet) IP Header TCP Header ©LPC 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 !!!! David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Bilan (Optimisation de la réception du driver Ethernet) Ø Allocation mémoire Ø Utilisation de DMA Ø Modération des interruptions Ø Utilisation de «Jumbo Frame » Ø Checksum TCP David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
SOMMAIRE ©LPC ü Introduction q q Deux façons d’envoyer des données sur Ethernet q CPU, Linux et TCP/IP ü Le driver Ethernet q ü Optimisation de la réception du driver Ethernet q q Optimisation de la transmission du driver Ethernet q FPGA et LPC q Le protocole LPC (préliminaires) q Développements futurs David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Utilisation de DMA (Optimisation de la transmission du driver Ethernet) lpc 2 g 1000_start_xmit (){ /* On stoppe l’émission des trames venant de la couche Internet*/ /* Écriture de la trame par le CPU */ Ø Écriture de la trame par un DMA (cache !!!!) /* On prévient la couche réseau qu’elle peut envoyer la trame*/ /* Fin*/ } lpc 2 g 1000_Tx. Interrupt(){ /* On autorise l’émission des trames venant de la couche Internet */ /* Fin*/ } David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Utilisation de DMA 60 μS (Optimisation de la transmission du driver Ethernet) 10 μS 175 μS 33 μS 10 μS DMA (4014 Octets) David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Zéro copie (Scatter/Gather IO) (Optimisation de la transmission du driver Ethernet) Application User Space Données Utilisateurs RAM Kernel Space Pile TCP/IP TCP Header Ip Header Eth Header Driver Skb Mémoire du FPGA David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Zéro copie (Scatter/Gather IO) (Optimisation de la transmission du driver Ethernet) Application User Space Données Utilisateurs TCP Header Page 1 Skb Ip Header RAM Kernel Space Pile TCP/IP Page 2 Eth Header Page 3 Driver Ø Prévenir que le driver est de type Scatter/Gather dev->features |= NETIF_F_SC; Mémoire du FPGA David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
Checksum TCP, IP, MAC (Optimisation de la transmission du driver Ethernet) IP Header TCP Header ©LPC 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 !!!! David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Bilan (Optimisation de la transmission du driver Ethernet) Ø Utilisation de DMA Ø Zéro copie (Scatter/Gather) Ø Utilisation de «Jumbo Frame » Ø Checksum TCP David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Bilan (Optimisation du driver Ethernet) Ø Carte TOE (Tcp/Ip Offload Engine) Ø Jumbo frame Ø Checksum Ø Segmentation Ø …. David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Bilan Nios. II (80 Mhz) (Cyclone) David Etasse (Optimisation du driver Ethernet) Driver n° 1 (JF + DMA) Driver n° 2 (CSUM + NAPI + SG) 1. 5 MO/s 2. 8 MO/s 4~5 MO/s « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Bilan (Optimisation du driver Ethernet) FASTER 1. 0 + (TCP/IP protocol) Standard Acquisition Time: 20 minutes Acquisition rate : ~3000 part/sec Dead time : 90 % David Etasse Acquisition Time : 3 seconds Acquisition rate : ~200000 part/sec Dead Time : 0 % « FASTER » Valpré, 18 -21 Septembre 2006
SOMMAIRE ©LPC ü Introduction q q Deux façons d’envoyer des données sur Ethernet ü CPU, Linux et TCP/IP q ü Le driver Ethernet q ü Optimisation de la réception du driver Ethernet q ü Optimisation de la transmission du driver Ethernet q q FPGA et LPC q Le protocole LPC (préliminaires) q Développements futurs David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Deux façons d’envoyer des données sur Ethernet Je copie du kernel vers la mémoire vers le user space du FPGA Je copie de la mémoire du FPGA vers la mémoire (Espace Kernel) 16 MO (SDRAM) NIOSII µProcessor (Linux embedded) Ethernet Mac 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 David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Deux façons d’envoyer des données sur Ethernet Je configure le protocole LPC avant de démarrer l’acquisition 16 MO (SDRAM) NIOSII µProcessor (Linux embedded) Switch LPC Read data from FE Digital trigger, Shape Analysis, Put acquisition header Ethernet Mac Débit : 100 MOctets/sec David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
SOMMAIRE ©LPC ü Introduction q ü Deux façons d’envoyer des données sur Ethernet q ü CPU, Linux et TCP/IP q ü Le driver Ethernet q ü Optimisation de la réception du driver Ethernet q ü Optimisation de la transmission du driver Ethernet q ü FPGA et LPC q q Le protocole LPC (préliminaires) q Développements futurs David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Le protocole «LPC» (Préliminaires) Initialisation LPC-Request --> LPC-Ack --> <-- LPC-Response Transfert de données LPC-Data --> <-- LPC-Ack Producteur Mesure de temps LPC-Time --> <-- LPC-Ack Consommateur Fermeture LPC-Close --> <-- LPC-Close. Req « FASTER » presentation <-- LPC-Reset LPC-Close --> <-- LPC-Reset David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Le protocole «LPC» (Préliminaires) Débit (Mo/sec) = 1500 (C * 12, 762 us) + T décision (us) 9600 (C * 77, 762 us) + T décision (us) 25 m David Etasse T décision = 0. 1 us Débit (Mo/sec) C = 1 1500 octets 108 , 2 9600 octets 121, 7 « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Le protocole «LPC» (Préliminaires) Débit (Mo/sec) = 1500 (C * 12, 762 us) + T décision (us) 9600 (C * 77, 762 us) + T décision (us) 25 m David Etasse T décision = 0. 1 us Débit (Mo/sec) C = 1 1500 octets 108 , 2 58. 5 9600 octets 121, 7 61. 7 « FASTER » Débit (Mo/sec) C = 2 Valpré, 18 -21 Septembre 2006
©LPC Le protocole «LPC» (Préliminaires) Débit (Mo/sec) = 1500 (C * 12, 762 us) + T décision (us) 9600 (C * 77, 762 us) + T décision (us) 25 m Ø Utilisation de mémoires de 1500 octets David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Le protocole «LPC» (Préliminaires) Débit (Mo/sec) = 1500 (C * 12, 762 us) + T décision (us) 9600 (C* 77, 762 us) + T décision (us) 25 m David Etasse T décision = 90 us Débit (Mo/sec) C = 1 1500 octets 14, 6 13 9600 octets 57. 2 32 « FASTER » Débit (Mo/sec) C = 2 Valpré, 18 -21 Septembre 2006
©LPC Le protocole «LPC» (Préliminaires) Débit (Mo/sec) = 1500 (C * 12, 762 us) + T décision (us) 9600 (C* 77, 762 us) + T décision (us) 25 m ØUtilisation de mémoires de 9600 octets David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
Le protocole «LPC» et Linux User Space sd = socket (AF_INET, SOCK_STREAM, 0); sd = socket (PF_LPC, SOCK_LPC, 0); Kernel Space ©LPC Application Socket TCP UDP IP LPC Ethernet Driver Physical Component David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
SOMMAIRE ©LPC ü Introduction q ü Deux façons d’envoyer des données sur Ethernet q ü CPU, Linux et TCP/IP q ü Le driver Ethernet q ü Optimisation de la réception du driver Ethernet q ü Optimisation de la transmission du driver Ethernet q ü FPGA et LPC q ü Le protocole LPC (préliminaires) q q Développements futurs David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Développements futures Ø 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) David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
©LPC Développements futures Switch Ethernet 10 ports 1 Gbits/s 1 port 10 Gbits/s DSP FEE DSP Advanced-TCA Cyclone II Switch Or Stratix II Ethernet Switch Cyclone II Nios. II Ethernet LPC protocol Linux 12 ports 1 Gbits/s RAM FLASH POWER David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
SOMMAIRE ©LPC ü Introduction q ü Deux façons d’envoyer des données sur Ethernet q ü CPU, Linux et TCP/IP q ü Le driver Ethernet q ü Optimisation de la réception du driver Ethernet q ü Optimisation de la transmission du driver Ethernet q ü FPGA et LPC q ü Le protocole LPC (préliminaires) q ü Développements futurs q David Etasse « FASTER » Valpré, 18 -21 Septembre 2006
- Slides: 41