La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

(R&D) Valpré, 18-21 Septembre 2006David Etasse Comment optimiser l’usage d’un lien Ethernet Gigabit en acquisition de données ? « FASTER »

Présentations similaires


Présentation au sujet: "(R&D) Valpré, 18-21 Septembre 2006David Etasse Comment optimiser l’usage d’un lien Ethernet Gigabit en acquisition de données ? « FASTER »"— Transcription de la présentation:

1 (R&D) Valpré, 18-21 Septembre 2006David Etasse Comment optimiser l’usage d’un lien Ethernet Gigabit en acquisition de données ? « FASTER » etasse@lpccaen.in2p3.fr

2 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 16000 Octets en 12.8 us FASTER 1.0 Fast Acquisition SysTem on Ethernet netwoRk 1 Gbits/s Valpré, 18-21 Septembre 2006David Etasse« FASTER »

3 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é, 18-21 Septembre 2006David Etasse« FASTER » ©LPC

4 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é, 18-21 Septembre 2006David Etasse« FASTER »

5 Introduction ©LPC 7Application ou Processus 6Présentation 5Session 4TransportHôte à hôte 3RéseauInternet 2Liaison Accès Réseau 1Physique Valpré, 18-21 Septembre 2006David Etasse« FASTER » Operating System Linux Carte réseau Driver Ethernet

6 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é, 18-21 Septembre 2006David Etasse« FASTER » ©LPC

7 Driver Ethernet Driver Ethernet ©LPC 7Application ou Processus 6Présentation 5Session 4TransportHôte à hôte 3RéseauInternet 2Liaison Accès Réseau 1Physique Valpré, 18-21 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

8 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é, 18-21 Septembre 2006David Etasse« FASTER » ©LPC

9 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é, 18-21 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

10 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é, 18-21 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

11 Valpré, 18-21 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

12 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é, 18-21 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; /*16 - 64*/ ….. 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

13 Valpré, 18-21 Septembre 2006David Etasse« FASTER » Exemple : Nios2 (80 Mhz), Linux 2.6.11, 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

14 ©LPC Valpré, 18-21 Septembre 2006David Etasse« FASTER » 6.4 9600 octets 1 Gbits/s 13 021 DébitGain Nombre d’interruptions 1500 octets 1 Gbits/s 83 333 (Optimisation de la réception du driver Ethernet) Utilisation de Jumbo Frame

15 ©LPC Valpré, 18-21 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 !!!!

16 ©LPC Valpré, 18-21 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

17 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é, 18-21 Septembre 2006David Etasse« FASTER » ©LPC

18 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é, 18-21 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*/ }

19 Valpré, 18-21 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

20 Valpré, 18-21 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

21 Valpré, 18-21 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;

22 ©LPC Valpré, 18-21 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)

23 ©LPC Valpré, 18-21 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

24 ©LPC Valpré, 18-21 Septembre 2006David Etasse« FASTER » (Optimisation du driver Ethernet) Bilan  Carte TOE (Tcp/Ip Offload Engine)  Jumbo frame  Checksum  Segmentation  ….

25 ©LPC Valpré, 18-21 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

26 Bilan Acquisition Time: 20 minutes Acquisition rate : ~3000 part/sec Dead time : 90 % Acquisition Time : 3 seconds Acquisition rate : ~200000 part/sec Dead Time : 0 % Standard Acquisition FASTER 1.0 + (TCP/IP protocol) ©LPC Valpré, 18-21 Septembre 2006David Etasse« FASTER » (Optimisation du driver Ethernet)

27 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é, 18-21 Septembre 2006David Etasse« FASTER » ©LPC

28 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é, 18-21 Septembre 2006David Etasse« FASTER »

29 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é, 18-21 Septembre 2006David Etasse« FASTER » Switch LPC Je configure le protocole LPC avant de démarrer l’acquisition Débit : 100 MOctets/sec

30 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é, 18-21 Septembre 2006David Etasse« FASTER » ©LPC

31 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é, 18-21 Septembre 2006David Etasse« FASTER » Mesure de temps LPC-Time --> <-- LPC-Ack

32 Le protocole «LPC» (Préliminaires) ©LPC Valpré, 18-21 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 = 1 9600 octets 121,7 1500 octets 108,2 T décision = 0.1 us

33 Le protocole «LPC» (Préliminaires) ©LPC Valpré, 18-21 Septembre 2006David Etasse« FASTER » Débit (Mo/sec) = 1500 (C * 12,762 us) + T décision (us) 25 m Débit (Mo/sec) C = 1 9600 octets 121,7 1500 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 = 2 61.7 58.5 25 m

34 Le protocole «LPC» (Préliminaires) ©LPC Valpré, 18-21 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

35 Le protocole «LPC» (Préliminaires) ©LPC Valpré, 18-21 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 = 1 9600 octets 57.2 1500 octets 14,6 T décision = 90 us Débit (Mo/sec) C = 2 32 13 25 m

36 Le protocole «LPC» (Préliminaires) ©LPC Valpré, 18-21 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

37 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é, 18-21 Septembre 2006David Etasse« FASTER »

38 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é, 18-21 Septembre 2006David Etasse« FASTER » ©LPC

39 Développements futures Valpré, 18-21 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)

40 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é, 18-21 Septembre 2006David Etasse« FASTER » ©LPC

41 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é, 18-21 Septembre 2006David Etasse« FASTER » ©LPC


Télécharger ppt "(R&D) Valpré, 18-21 Septembre 2006David Etasse Comment optimiser l’usage d’un lien Ethernet Gigabit en acquisition de données ? « FASTER »"

Présentations similaires


Annonces Google