FR3089374A1 - Gestion des données pour le stockage de trames de données dans la mémoire d’un système de transmission de données - Google Patents

Gestion des données pour le stockage de trames de données dans la mémoire d’un système de transmission de données Download PDF

Info

Publication number
FR3089374A1
FR3089374A1 FR1872072A FR1872072A FR3089374A1 FR 3089374 A1 FR3089374 A1 FR 3089374A1 FR 1872072 A FR1872072 A FR 1872072A FR 1872072 A FR1872072 A FR 1872072A FR 3089374 A1 FR3089374 A1 FR 3089374A1
Authority
FR
France
Prior art keywords
data
memory
module
data frame
management unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1872072A
Other languages
English (en)
Other versions
FR3089374B1 (fr
Inventor
Serge Delwasse
Vincent Laporte
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silkan Rt
Original Assignee
Silkan Rt
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Silkan Rt filed Critical Silkan Rt
Priority to FR1872072A priority Critical patent/FR3089374B1/fr
Priority to PCT/FR2019/052832 priority patent/WO2020109733A2/fr
Publication of FR3089374A1 publication Critical patent/FR3089374A1/fr
Application granted granted Critical
Publication of FR3089374B1 publication Critical patent/FR3089374B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9005Buffering arrangements using dynamic buffer space allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

La présente invention concerne une unité de gestion d’une mémoire pour le stockage de trames de données transmises par un système de transmission de données ; ledit système de transmission de données comportant ladite mémoire et ladite unité de gestion comportant : un premier module de réception de trames de données et un deuxième module de traitement de trames de données; ladite unité de gestion étant configurée pour stocker lesdites trames de données dans la mémoire au fur et à mesure de leur réception par le premier module, chaque trame de données étant stockée dans la mémoire en fonction d’au moins un paramètre de stockage ; et ledit deuxième module étant configuré pour calculer ledit au moins un paramètre de stockage de chaque trame de données en fonction d’au moins une donnée de chaque trame de données et d’un traitement déterministe prédéterminé à l’initialisation de ladite unité de gestion. (sans figure d’abrégé)

Description

Description
Titre de l'invention : Gestion des données pour le stockage de trames de données dans la mémoire d’un système de transmission de données
Domaine technique [0001] La présente invention concerne le domaine des télécommunications.
[0002] Plus particulièrement, la présente invention concerne le transport de données de manière fiable et déterministe.
Technique antérieure [0003] Dans un réseau de télécommunications, le transport de données se fait de manière habituelle sous forme de trames de données établies selon un protocole prédéfini. Pour transporter une trame entre un émetteur de données (ou producteur) et un ou plusieurs récepteurs (ou consommateurs), on utilise habituellement un commutateur réalisé à partir d’unités de traitement contrôlées par un logiciel. Un exemple classique de commutateur réseau est le commutateur Ethernet.
[0004] Ce type de commutateur ne permet pas de garantir de façon sûre ni la délivrance effective de la trame de données ni un délai maximal de transmission de cette trame. L’utilisation de tels commutateurs dans les systèmes dits « critiques » ou la fiabilité totale des transmissions est nécessaire n’est donc pas possible. En outre, ce type de commutateur est généralement limité à une utilisation selon un protocole de communication physique et logique unique.
[0005] Ainsi, il existe un besoin pour un système de communication de données permettant la communication de données de manière intègre et dans un délai maximal garanti, sans limitation d’utilisation d’un protocole particulier.
[0006] La présente invention s’inscrit dans ce contexte.
Résumé de l’invention [0007] Selon un premier aspect de l’invention, il est prévu une unité de gestion d’une mémoire d’un système de transmission de données ; ladite unité de gestion comportant
- un premier module de réception de trames de données ;
- un deuxième module de traitement de trames de données ;
ladite unité de gestion étant configurée pour stocker lesdites trames de données dans la mémoire au fur et à mesure de leur réception par le premier module, chaque trame de données étant stockée dans la mémoire en fonction d’au moins un paramètre de stockage ; et ledit deuxième module étant configuré pour calculer ledit au moins un paramètre de stockage de chaque trame de données en fonction d’au moins une donnée de chaque trame de données et d’un traitement déterministe prédéterminé à l’initialisation de ladite unité de gestion.
[0008] Une unité de gestion d’une mémoire selon le premier aspect permet de garantir un stockage déterministe des trames de données dans la mémoire d’un système de transmission de données avant la retransmission desdites trames de données par le système de transmission. Le stockage des trames de données dans la mémoire est en effet le résultat d’un calcul déterministe rapide fonction de la trame de données à stocker. Tous les paramètres du calcul sont prédéterminés à l’initialisation de l’unité de gestion. En outre, grâce à une gestion optimisée de la mémoire, l’unité de gestion permet de garantir le stockage et l’accès aux données en temps réel et à hauts débits (supérieur à 800 Mo/s).
[0009] Dans un mode de réalisation, au moins un premier paramètre de stockage est une adresse de stockage de chaque trame de données dans la mémoire.
[0010] Dans un mode de réalisation, au moins un deuxième paramètre de stockage est un mode d’accès à une pluralité de trames de données dans la mémoire une fois la pluralité de trames de données stockées. Selon un mode de réalisation, le mode d’accès à la pluralité de trames de données est un mode d’accès libre dans lequel la mémoire est accessible indifféremment en lecture et en écriture. Selon un mode de réalisation, le mode d’accès à la pluralité de trames de données est un mode d’accès séquentiel dans lequel les trames de données sont lues dans l’ordre d’écriture des trames dans la mémoire. Selon un mode de réalisation, le mode d’accès à la pluralité de trames de données est un mode d’accès cyclique dans lequel
- la mémoire comprend un premier espace mémoire et un second espace mémoire;
- au cours d’un cycle, le premier espace mémoire est accessible en écriture et le second espace mémoire est accessible en lecture ;
- au cours du cycle suivant, le premier espace mémoire est accessible en lecture et le second espace mémoire est accessible en écriture.
[0011] Dans un mode de réalisation, au moins un troisième paramètre de stockage est une taille nécessaire au stockage de chaque trame de données dans la mémoire.
[0012] Dans un mode de réalisation, ledit deuxième module de traitement de trames de données est configuré pour attribuer un numéro de séquence à chaque trame de données réceptionnée par le premier module de réception. Dans un mode de réalisation, chaque trame de données comprend un en-tête et une charge utile et ledit deuxième module de traitement de trames de données calcule ledit au moins un paramètre de stockage de chaque trame de données en fonction d’au moins une donnée de son en-tête. Dans un mode de réalisation, le au moins un paramètre de stockage est calculée en fonction d’une route suivie par la trame de données. Dans un mode de réa lisation, chaque module est réalisé dans un circuit programmable ou un circuit intégré propre à une application (ASIC).
[0013] Selon un deuxième aspect, l’invention concerne une unité de base de données comprenant une unité de gestion selon le premier aspect et une mémoire pour le stockage de trames de données ; dans laquelle la mémoire comprend une première mémoire ayant une vitesse d’écriture et un temps de latence élevés et une seconde mémoire ayant une vitesse d’écriture et un temps de latence plus faibles.
[0014] Dans un mode de réalisation, le deuxième module de traitement de trames de données de l’unité de gestion est configuré pour autoriser successivement la lecture et l’écriture dans la seconde mémoire par paquets de tailles prédéterminées de sorte à ce que le temps d’écriture ou de lecture corresponde au temps de latence de la seconde mémoire.
[0015] Dans un mode de réalisation, l’unité de gestion est configurée pour gérer les accès en lecture et en écriture dans la première mémoire avec un algorithme d’ordonnancement, par exemple un algorithme de type Round-robin.
[0016] Dans un mode de réalisation, la mémoire comprend une pluralité de zones, chaque zone étant allouée au stockage des trames de données transmises selon une route donnée. Selon un mode de réalisation, le paramètre de stockage calculé par le module de gestion des données pour une trame de données circulant le long d’une route donnée est une adresse de stockage et ladite adresse de stockage se situe dans la zone de la mémoire allouée à ladite route.
[0017] Selon un troisième aspect de l’invention, il est prévu un module d’analyse et de filtrage de données pour un système de transmission de données comportant :
[0018] - une unité de réception de trame de données à retransmettre, [0019] - une unité de mémoire pour stocker lesdites données de ladite trame au fur et à mesure de leur réception par l’unité de réception, [0020] - au moins une unité de traitement pour réaliser un traitement sur au moins une donnée stockée dans ladite unité de mémoire, le résultat dudit traitement étant destiné à être utilisé dans la gestion de la retransmission des données, et [0021] - une unité de commande pour déclencher le chargement de données depuis au moins l’un parmi ladite unité de réception et de l’unité de mémoire vers ladite au moins une unité de traitement, ledit chargement et ledit traitement étant réalisés pendant la réception de ladite trame au fur et à mesure du stockage des données dans ladite mémoire.
[0022] Selon des modes de réalisation le fonctionnement du module est synchrone.
[0023] Par exemple, l’unité de commande est une machine à états finie.
[0024] Par exemple encore, l’unité de mémoire comporte un ensemble de registres.
[0025] Selon des modes de réalisation, le chargement de données est déclenché en fonction de la disponibilité desdites données dans un registre donné.
[0026] Selon des modes de réalisation, le module comporte une unité de traitement permettant le contrôle d’intégrité de ladite trame en cours de réception.
[0027] Par exemple, le contrôle d’intégrité porte sur une donnée chargée depuis ladite unité de réception.
[0028] Selon des modes de réalisation, le module comporte une unité de traitement qui permet le contrôle de la validité de ladite trame en cours de réception.
[0029] Par exemple, l’unité de traitement permettant le contrôle de la validité de ladite trame en cours de réception opère un traitement dichotomique de ladite trame.
[0030] Selon des modes de réalisation, l’unité de traitement permettant le contrôle de la validité de ladite trame en cours de réception comporte une pluralité d’étages en série.
[0031] Selon des modes de réalisation, au moins un étage de l’unité de traitement comporte une pluralité de sous-étages parallèles.
[0032] Par exemple, le module comporte une unité de traitement (503) permettant la réalisation de calculs spécifiques pour alimenter au moins l’un parmi un étage et un sousétage de ladite unité de traitement permettant le contrôle de la validité de ladite trame en cours de réception.
[0033] Selon des modes de réalisation, l’unité de commande permet en outre de commander l’unité de réception en fonction d’information reçue de ladite au moins une unité de traitement.
[0034] Par exemple, le module est configuré pour générer une sortie indiquant une anomalie de réception de ladite trame en fonction d’information reçue de ladite au moins une unité de traitement.
[0035] Par exemple encore, le module est configuré pour générer une sortie indiquant le contenu de ladite unité de mémoire en fonction d’information reçue de ladite au moins une unité de traitement.
[0036] Selon des modes de réalisation, le module est configuré pour générer un pointeur en sortie par au moins une unité de traitement pointant vers un espace mémoire du système contenant une structure de données pour encapsuler ladite trame de données à retransmettre.
[0037] Selon des modes de réalisation, le module est réalisé dans un circuit programmable ou un circuit intégré propre à une application (ASIC).
[0038] Selon un quatrième aspect de l’invention, il est prévu un système de transmission de données comprenant une unité d’échange de données ; dans lequel, pour transmettre une trame de données, celle-ci transite successivement au moins par :
- un module d’interface configuré pour recevoir ladite trame de données depuis l’extérieur du système de transmission ;
- un module d’analyse et de filtrage en charge du traitement de ladite trame de données reçue depuis le module d’interface avant encapsulation ; et
- un module d’encapsulation en charge d’encapsuler ladite trame de données traitée par le module d’analyse et de filtrage ; caractérisé en ce que, deux modules successifs par lesquels transite ladite trame de données sont reliés entre eux par un dispositif d’interconnexion comprenant chacun une mémoire temporaire pour stocker ladite trame et les accès en écriture et en lecture à ladite mémoire étant indépendants en fréquence.
[0039] Un système de transmission de données selon le quatrième aspect permet de garantir l’indépendance d’un module amont et d’un module aval par lesquels transite une trame de données. En effet, la présence d’un dispositif d’interconnexion selon la revendication 1 entre deux modules permet d’isoler les chaînes de traitement des données de chaque module les unes des autres. Le dispositif d’interconnexion est utilisé comme une barrière de stockage dans le flux de données.
[0040] Le dispositif d’interconnexion selon l’invention permet à chaque module d’avoir sa propre horloge de fonctionnement. Les performances sont ainsi accrues car chaque module peut réaliser les traitements qui lui sont propre sans à avoir à tenir compte de ce qui peut se passer dans le module qui le suit ou qui le précède.
[0041] Dans un système selon le quatrième aspect, chaque module peut ainsi être conçu indépendamment. En outre, la mise à jour d’un système selon le quatrième aspect est simplifiée car il est possible de modifier un module sans affecter le reste du système.
[0042] L’utilisation d’un dispositif d’interconnexion entre deux modules permet enfin de ne pas modifier le déterminisme de l’ensemble du système de transmission. Le niveau de sûreté est donc préservé.
[0043] Par exemple, le dispositif d’interconnexion peut assurer une gestion dite « EIEO » (« Eirst In, Eirst Out » ou encore « premier entré, premier sorti » en langue française) des données échangées par son intermédiaire.
[0044] Le dispositif d’interconnexion selon l’invention permet également de ne présenter en sortie que des données valides grâce au filtrage des données anormales.
[0045] Dans un mode de réalisation, le système de transmission de données comprend en outre une unité de base de données configurée pour stocker les trames de données encapsulées par le module d’encapsulation ; elle est reliée au module d’encapsulation par un dispositif d’interconnexion comprenant une mémoire temporaire pour stocker ladite trame et les accès en écriture et en lecture à ladite mémoire étant indépendants en fréquence.
[0046] Dans un mode de réalisation, pour transmettre une trame de données, celle-ci transite en outre successivement au moins par :
- un module de génération des données à émettre en charge de recevoir des trames de données encapsulées de la part de l’unité de base de données et de les traiter en vue d’une retransmission ; et
- un module de contrôle de l’émission en charge de désencapsuler une trame de données encapsulées reçue du module de génération des données à émettre puis de transmettre la trame de données désencapsulée au module d’interface en vue de l’émission de la trame de données désencapsulée hors du système de transmission. [0047] Dans un mode de réalisation, l’unité de base de données est reliée au module de génération des données à émettre par un dispositif d’interconnexion comprenant une mémoire temporaire pour stocker ladite trame et les accès en écriture et en lecture à ladite mémoire étant indépendants en fréquence.
[0048] Dans un mode de réalisation, l’unité d’échange de données comporte également :
- un module de gestion en charge de gérer les émissions de trames de données encapsulées de la part de l’unité de base de données ; et
- un module de génération des commandes en charge de la génération de commandes à destination de l’unité de base de données pour commander l’extraction d’une donnée à retransmettre et la communiquer au module de génération des données à émettre. Dans un mode de réalisation, l’unité de base de données est reliée au module de gestion par un dispositif d’interconnexion comprenant une mémoire temporaire pour stocker des données de commande et de signalisation et les accès en écriture et en lecture à ladite mémoire étant indépendants en fréquence. Dans un mode de réalisation, l’unité de base de données est reliée au module de génération des commandes par un dispositif d’interconnexion comprenant une mémoire temporaire pour stocker des données de commande et de signalisation et les accès en écriture et en lecture à ladite mémoire étant indépendants en fréquence.
[0049] Dans un mode de réalisation, lequel l’unité d’échange de données comporte en outre un module de gestion de statut, en charge de stocker les états de fonctionnement courant de chacun des modules du système de transmission de données, relié au module d’interface par un dispositif d’interconnexion comprenant une mémoire temporaire pour stocker des données de commande et de signalisation et les accès en écriture et en lecture à ladite mémoire étant indépendants en fréquence.
[0050] Dans un mode de réalisation, deux modules successifs par lesquels transite ladite trame de données fonctionnent selon des horloges indépendantes. Dans un mode de réalisation, la mémoire de chaque dispositif d’interconnexion est paramétrable à l’initialisation.
[0051] Dans un mode de réalisation, chaque dispositif d’interconnexion comprend une interface d’écriture pour stocker des données dans la mémoire temporaire au fur et à mesure de leur réception et une interface de lecture pour lire lesdites donnés dans l’ordre de leur réception. Dans un mode de réalisation, chaque dispositif d’interconnexion dans lequel transite une trame de données est configuré pour stocker les trames de données au fur et à mesure de leur réception et pour lire lesdites trames de données dans l’ordre de leur réception.
[0052] Dans un mode de réalisation, les interfaces de lecture et d’écriture ont une relation d’horloge asynchrone. Dans un mode de réalisation, l’interface d’écriture est configurée pour réaliser un traitement sur au moins une donnée stockée dans ladite mémoire temporaire pour détecter des erreurs et interrompre le stockage des données si une erreur est détectée. Dans un mode de réalisation, l’interface de lecture est configurée pour lire les données en totalité, pour relire les données ou pour supprimer les données. Dans un mode de réalisation, l’interface de lecture est configurée pour réaliser un traitement sur au moins une donnée stockée dans ladite mémoire temporaire afin d’extraire des informations sur ladite au moins une donnée. Dans un mode de réalisation, chaque dispositif d’interconnexion comprend une interface de rapport d’erreurs pour transmettre les erreurs de fonctionnement en écriture ou en lecture.
[0053] Dans un mode de réalisation, chaque module est réalisé dans un circuit programmable ou un circuit intégré propre à une application. Dans un mode de réalisation, chaque dispositif d’interconnexion est réalisé dans un circuit programmable ou un circuit intégré propre à une application.
Brève description des dessins [0054] D’autres caractéristiques et avantages de l’invention apparaîtront à la lecture de la présente description détaillée qui suit, à titre d’exemple non limitatif, et des figures annexées parmi lesquelles:
[0055] - la [fig 1] illustre un système selon des modes de réalisation ;
- la [fig 2] illustre la transmission d’une donnée selon des modes de réalisation ;
- les [fig 3] et [fig 4] illustrent la réception d’une donnée (ou message) par une unité d’échange de données selon des modes de réalisation ;
- la [fig. 5] illustre le traitement d’une trame selon des modes de réalisation ;
- la [fig 6] est un schéma illustrant un module d’analyse et de filtrage selon des modes de réalisation ;
- la [fig 7] est un schéma illustrant une unité de base de données selon des modes de réalisation.
Description des modes de réalisation [0056] Un système selon des modes de réalisation est décrit en référence à la [fig 1].
[0057] Le système représenté sur cette figure est réalisé de manière matérielle, c’est-à-dire qu’il n’est pas contrôlé de manière logicielle. Le système est par exemple réalisé sous forme de circuit de type FPGA (acronyme de « Field-Programmable Gate Array »).
[0058] Le système comporte une ou plusieurs unités d’échange de données 100 (ComSet) et une unité de base de données 101 (Station de base).
[0059] L’unité de base de données permet le stockage de données échangées entre les unités d’échange de données. Le nombre d’unités d’échange de données est égal au nombre de ports de communication souhaités pour le système. Ces ports de communication sont connectés.
[0060] Les unités d’échange 100 peuvent être connectées à une unité de base de données 101 au moyen d’une interface standardisée, c’est-à-dire que l’interface est la même pour tous les modules. L’interface standard comporte autant de bus de transport de données que de modules en communication directe avec l’unité de base de données.
[0061] Par exemple, un module 112 est en charge d’encapsuler des trames de données reçues et à traiter au sein du système. Ce module communique avec l’unité de base de données via un bus dédié 102. Un module 113 est par exemple en charge de la génération de commandes à destination de l’unité de base de données 101 pour extraire une donnée à retransmettre. Ce module communique avec l’unité de base de données via un bus dédié 103. Un module 115 est en charge de recevoir des trames encapsulées de la part de l’unité de base de données et de les traiter pour une retransmission. Ce module communique avec l’unité de base de données via un bus dédié 105. Un module 114 est en charge de gérer les émissions de la part de l’unité de base de données indiquant certains évènements tel que le stockage de trames encapsulées. Cette gestion inclut par exemple la coordination des modules 113 et 115. Ce module communique avec l’unité de base de données via un bus dédié 104. Un module d’horloge 116 est en charge de de recevoir les mises à jour de l’heure générale du système depuis la station de base. Par ailleurs, il fournit l’heure à tous les modules du système de transmission de données qui doivent soit marquer les données, soit vérifier les délais de transmission de celles-ci. Le module d’horloge peut aussi générer les évènements pour la fourniture des signaux de synchronisation au processus qui en ont fait la demande. Il peut en outre prévenir les modules d’émission de données du moment de l’envoi de données lorsqu’elles sont définies comme cycliques par le paramétrage. Le module d’horloge communique avec l’unité de base de données via un bus dédié 106.
[0062] Le module 117 d’analyse et de filtrage est un module de traitement des trames de données reçues avant leur encapsulation par le module 112.
[0063] A l’inverse, le module 118 permet de désencapsuler une trame encapsulée reçue du module 115.
[0064] Un module de gestion de statut 119 est en charge de stocker les états de fonctionnement courant de chacun des modules du système de transmission de données. Préférentiellement, le module de gestion de statut 119 est en charge de stocker les états de fonctionnement courant de chacun des modules du système de transmission de données si le paramétrage le demande. En effet, le comportement du système de transmission de données est modifiable par la fourniture initiale de données de confi guration dans lesquelles on pourra spécifier les états et incidents que l’on souhaite pouvoir gérer. De plus tous les modules sont conçus pour transmettre tout incident de fonctionnement à ce module de gestion de statut qui met alors à jour sa base d’information et génère un évènement d’erreur immédiatement si le paramétrage le demande vers le système de transmission de données destiné à cet effet.
[0065] Les données échangées par une unité d’échange sont reçues et envoyées au travers d’un module d’interface 107 configuré en fonction du protocole utilisé à l’extérieur du système. Des exemples de protocoles avec lesquels le système peut être interfacé sont Ethernet, CAN, ARINC 664P7 ou autres.
[0066] La communication entre d’une part les différents modules 112,113,114,115 de chaque unité d’échange avec d’autre part les bus de communication respectifs 102,103 , 104,105 se fait via des dispositifs d’interconnexion 108,109,110,111 décrits plus précisément ci-dessous.
[0067] La communication entre d’une part les différents modules 117,119,118 de chaque unité d’échange avec d’autre part le module d’interface 107 se fait également via des dispositifs d’interconnexion 120,121,122.
[0068] Un dispositif d’interconnexion est également présent entre deux modules successifs le long d’un flux de données. On entend par « le long d’un flux de données » la succession des modules par lesquels transite une trame de données.
[0069] Ainsi, un dispositif d’interconnexion 123 relie le module 117 d’analyse et de filtrage en charge du traitement des trames de données reçues avec le module 112 en charge d’encapsuler des trames de données reçues et à traiter au sein du système de transmission des données.
[0070] Un dispositif d’interconnexion 125 relie le module 115 en charge de recevoir des trames encapsulées de la part de l’unité de base de données 101 et de les traiter pour une retransmission avec le module 118 permettant de desencapsuler une trame encapsulée reçue du module 115.
[0071] Les dispositifs d’interconnexion comprennent une mémoire temporaire accessible indépendamment temporellement par le module en aval du dispositif d’interconnexion et par le module en amont du dispositif d’interconnexion. Selon un mode de réalisation, la mémoire temporaire du dispositif d’interconnexion est une mémoire tampon. La mémoire est accessible indépendamment en écriture par le module amont et en lecture par le module aval. Cette mémoire accessible indépendamment temporellement par les modules amont et aval permet au module amont d’écrire dans la mémoire indépendamment de la lecture par le module aval. En d’autres termes, le module amont et le module aval utilisent la mémoire du dispositif d’interconnexion de manière non synchronisée.
[0072] Grâce aux dispositifs d’interconnexion, les modules du système de transmission ne partagent pas d’espace de stockage et échangent les données par l’intermédiaire de la mémoire d’un dispositif d’interconnexion. En outre, les modules du système de transmission ne partagent pas de plan d’horloge. Les modules amont et aval sont totalement indépendants dans l’utilisation de la mémoire du dispositif d’interconnexion. Il n’y a pas d’altération du déterminisme de l’ensemble du système de transmission. [0073] Les dispositifs d’interconnexion permettent une latence minimale et ont une bande passante très supérieure au débit maximal de chaque transmission et peuvent donc fonctionner en mode « famine ».
[0074] Les dispositifs d’interconnexion peuvent être par exemple des mémoires dites DPM (acronyme de « Dual Port Memory » en anglais) ou DAM (acronyme de « Dual Access memory » en anglais) réalisés sous forme de circuit de type LPGA (acronyme de « Eield-Programmable Gate Array » en anglais).
[0075] La mémoire des dispositifs d’interconnexion est accessible au module amont par l’intermédiaire d’une interface d’écriture et au module aval par l’intermédiaire d’une interface de lecture. Selon un mode de réalisation, les interfaces de lecture et d’écriture ont une relation d’horloge asynchrone.
[0076] L’interface d’écriture permet de stocker les données dans la mémoire au fur et à mesure de leur réception et l’interface de lecture permet de lire lesdites donnés de ladite trame dans l’ordre de leur réception.
[0077] L’interface de lecture est configurée pour lire les données stockées dans la mémoire dans l’ordre d’écriture (ainsi les dispositifs d’interconnexion assurent une gestion dite « EIEO » des données échangées par leur intermédiaire). Une donnée stockée dans la mémoire peut être lue, relue ou encore annulée par l’interface de lecture du dispositif d’interconnexion.
[0078] Selon un mode de réalisation, l’interface d’écriture est configurée pour réaliser un traitement sur au moins une donnée stockée dans ladite mémoire afin de détecter des erreurs et interrompre le stockage des données d’une trame de données si une erreur est détectée. Les erreurs détectées peuvent par exemple être l’absence d’espace tampon ou une erreur de séquence dans l’ordre des données.
[0079] Selon un mode de réalisation, l’interface de lecture est configurée pour réaliser un traitement sur au moins une donnée stockée dans ladite mémoire temporaire afin d’extraire des informations sur ladite au moins une donnée. Les informations extraites peuvent être par exemple un numéro de séquence, son temps de production ou encore sa longueur. Ces informations sont transmises au module aval en même temps que la donnée. Elles peuvent être utiles par exemple pour le traitement dans les unités d’échange de données 100 ou le stockage dans l’unité de base de données 101.
[0080] Selon un mode de réalisation, chaque dispositif d’interconnexion comprend également une interface de rapport d’erreurs rapportant les erreurs de fonctionnement en écriture ou en lecture. Ces informations sont transmises par l’intermédiaire de l’interface de rapport d’erreurs à un mécanisme de rapport d’état du système de transmission de données.
[0081] Lorsque les dispositifs d’interconnexion sont situés le long d’un flux de trames de données 120,123,108,111,125,118, la mémoire temporaire des dispositifs d’interconnexion stocker les trames de données.
[0082] Lorsque les dispositifs d’interconnexion ne sont pas situés le long d’un flux de trames de données 109,110,121, la mémoire temporaire des dispositifs d’interconnexion stocke des données de commandes et de signalisation. Ces données de commande et de signalisation ont le même format que les trames de données.
[0083] En référence à la [fig 2], on décrit la transmission d’une donnée (ou message) par une unité d’échange 200 qui a la même structure que décrite précédemment en référence à la [fig 1].
[0084] Le message 201 est reçu au niveau du module d’interface 202. Ce module d’interface est en charge du dialogue avec les composants responsables de la gestion physique des signaux du protocole lié au système de transmission de données. Il récupère l’information des trames reçues via ces composants et les transmet octet par octet au module suivant via un dispositif d’interconnexion 207. Le message 201 est transmis depuis le module d’interface 202 au module 203 en charge de l’analyse et du filtrage du message via le dispositif d’interconnexion 207.
[0085] Le module 203 vérifie l’intégrité du message et vérifie aussi que le message est autorisé, par configuration, à être reçu par l’unité d’échange 200. En d’autres termes, le module 203 extrait les informations de la trame entrante afin de s’assurer que l’adresse IP source et le port source du message ainsi que sa taille sont bien tels que le paramétrage les a définis. D’autre part le calcul du CRC (acronyme de « Cyclic redundancy check » ou les sommes de contrôle « checksum » en anglais) permet de vérifier que la trame reçue est bien intègre.
[0086] Le message est ensuite transmis du module 203 en charge de l’analyse et du filtrage au module d’encapsulation 204 via un dispositif d’interconnexion 208. Le message est encapsulé dans le module d’encapsulation 204. Une fois encapsulé, le message est traité indépendamment du protocole utilisé pour le transporté à l’extérieur du système. Le message encapsulé est ensuite transmis à l’unité de base de données 205, via le dispositif d’interconnexion 209 et le bus 206, pour stockage en mémoire.
[0087] Le message encapsulé peut être stocké en prenant en compte différents paramètres. Il s’agit par exemple d’éviter la duplication d’information en mémoire. L’enregistrement d’un message est unique même si il possède plusieurs destinataires. Chaque destinataire et prévenu de l’arrivée de la donnée ainsi que de son emplacement. Les destinataires sont alors autorisés à venir l’y chercher pour transmission. L’heure d’arrivée de la donnée fait aussi partie des données d’encapsulation afin que les récepteurs de l’information puissent contrôler la validité temporelle de celle-ci. Il s’agit par exemple encore de tenir compte du vieillissement du message. Il s’agit par exemple encore de gérer les méthodes d’accès au message qui définissent les adresses des objets en mémoire (on peut par exemple citer les méthodes dites de « Sampling », « Queuing », « Flip/Flop » qui sont des méthodes standard.
[0088] En référence aux [fig 3] et [fig. 4], on décrit la réception d’une donnée (ou message) par une unité d’échange 300.
[0089] A la suite du stockage du message encapsulé dans l’unité de base de données 205 décrite ci-dessus en référence à la [fig 2], une donnée de type « évènement » est envoyée à l’unité d’échange 300 à qui le message 201 est destiné via le bus 304 et le dispositif d’interconnexion 308. Une donnée de type « évènement » est un objet au format d’encapsulation commun dont l’objet est de prévenir le module destinataire soit du comportement d’un autre module soit d’une action à accomplir pour ce dernier.
[0090] L’unité de base de données 205 (commune aux modules 200 et 300) génère et gère les évènements relatifs à l’émission d’un message encapsulé. L’unité de base de données cadence aussi les moments de transmission des données de type « évènement » aux modules d’échange qui doivent émettre le message encapsulé concerné par la donnée. Le module d’émission est prévenu par message que la donnée à émettre est disponible et où aller la chercher.
[0091] La donnée de type « évènement » est ensuite reçue par un module 301 de gestion des émissions cycliques et événementielles en charge de la réception de ces données. Sur réception d’une telle donnée le module 301 envoie une demande de commande à destination du module de génération de commandes 302.
[0092] Le module de génération de commandes 302 envoie ensuite une commande à destination de l’unité de base de données via un dispositif d’interconnexion 310 et le bus 311 afin que l’objet encapsulé soit envoyé vers l’unité d’échange 300.
[0093] En parallèle, le module 301 envoie une demande de mise en mode attente du message encapsulé au module 303 de génération de données à émettre.
[0094] Le module 302 joue ainsi un rôle de gestion du cycle (en particulier de la fréquence) d’envoi des messages.
[0095] L’unité de base de données envoie ensuite le message encapsulé via le bus 305 et un dispositif d’interconnexion 313 au module 303 qui désencapsule le message pour en faire un message conforme au protocole de l’équipement connecté sur le port physique de l’unité d’échange 300.
[0096] Le message ainsi desencapsulé est transmis via un dispositif d’interconnexion 314 au module 306 de contrôle de l’émission puis au module d’interface 307 via un dispositif d’interconnexion 315. Le module de contrôle 306 après une dernière vérification de l’intégrité de la donnée à l’aide du code de contrôle (CRC) vérifie aussi que les informations contenues correspondent bien à tous les critères définis par le paramétrage du port de sortie.
[0097] Dans ce qui suit, on décrit les opérations réalisées par le module d’analyse et de filtrage d’une unité d’échange de données.
[0098] Le filtrage intervient entre la réception d’une trame et son encapsulation. Le filtrage a pour objectif de vérifier que la trame reçue est bien une trame connue, attendue et bien formée. Si ce n’est pas le cas, la trame est rejetée et un message d’erreur est généré. Le filtrage a aussi pour objectif de fournir, si la trame et acceptée, l’information des emplacements où les données nécessaires à l’encapsulation de la trame peuvent être récupérées.
[0099] D’une manière générale, le filtrage, dans le domaine des réseaux, est l’opération qui consiste à vérifier l’intégrité et la validité d’une trame en réception.
[0100] La vérification de l’intégrité de la trame permet de s’assurer qu’une trame reçue respecte des propriétés liées à sa structure.
[0101] Parmi les vérifications effectuées on trouve par exemple les altérations au niveau logique élémentaire (bit ou ensemble de bits). La vérification est réalisée grâce à un code détecteur d’erreurs du type contrôle de redondance cyclique ou CRC (acronyme de « Cyclic Redundancy Check »).
[0102] On trouve aussi parmi les vérifications effectuées le fait que l’arrivée de deux trames successives doit respecter un délai minimum (on parle d’IFG, acronyme de « InterFrame Gap »). Si ce délai n’est pas respecté, la trame est considérée corrompue.
[0103] D’autres vérifications sont possibles comme par exemple les intervalles de longueur de la trame, notés [LMAX, LMIN] qui peuvent dépendre des protocoles. Une trame peut avoir une taille fixe (c’est par exemple le cas dans le protocole Arinc 429) ou une taille variable bornée en valeurs inférieure et supérieure (par exemple le protocole Ethernet 802.3). En plus des restrictions normatives, l’utilisateur peut durcir les conditions sur les tailles. Quand la trame ne respecte pas les contraintes de taille, elle est considérée corrompue.
[0104] La vérification de la validité permet de s’assurer qu’une trame reçue à un point de réception donné est bien autorisée à être reçue à cet endroit (le vocable « endroit » sous-entend « port de communication » dans la terminologie réseau). La prise de décision de l’autorisation se base sur les données d’encapsulation de la trame. Si on prend l’exemple des trames de type IP (acronyme de « Internet Protocol »), respectant le standard IEEE 802.3, les données d’encapsulation sont à récupérer des champs de la pile protocolaires tels que : « IP sources », « EtherType », « MAC source », « MAC destination », etc.
[0105] Chaque trame qui passe par le module de filtrage provoque une prise de décision binaire, donc avec deux états stables et aucune indécision possible : la trame passe le filtrage ou la trame ne passe pas le filtrage. Toute violation d’intégrité et/ou de validité de la trame provoque son rejet (trame ne passe donc pas le filtrage).
[0106] Deux actions sont alors déclenchées. Une première action est la suppression (purge) de la trame du module de filtrage. Une deuxième action est une levée d’un statut d’erreur par le contrôle du module de gestion du statu évoqué ci-avant. Les statuts peuvent être gérés de différentes manières. Par exemple, il est possible de choisir l’envoi d’une information d’état de façon cyclique et ce, avec une périodicité paramétrable, ou d’émettre un évènement dès la survenance d’un évènement particulier vers le module et le système de transmission de données paramétrés à cet effet. Les statuts peuvent être actifs et donc pris en compte ou masqués et donc ignorés.
[0107] Dans le cas où aucune violation des règles d’intégrité et de validité n’est détectée, la trame est acceptée dans le système, autrement dit, la trame passe le filtrage.
[0108] Deux actions sont alors déclenchées. Une première action est la fourniture de la trame au module suivant (c’est-à-dire le module d’encapsulation). Une deuxième action est la génération d’un pointeur vers les tables d’encapsulation qui permet de trouver, dans les mémoires internes, les données de certains champs d’encapsulation objet (sur-encapsulation de la trame).
[0109] L’encapsulation d’une trame est en fait une sur-encapsulation. Une trame est déjà une encapsulation des données utiles par des champs propres au protocole. Ici, il s’agit d’ajouter d’autres champs. Il est alors possible de parler de sur-encapsulation. Certains champs sont calculés et chargés en mémoire par un configurateur en mode hors-ligne (avant le démarrage de la phase opérationnelle) et d’autres champs sont calculés par le composant en mode en-ligne (pendant la phase opérationnelle).
[0110] Une particularité du module de filtrage, outre le fait qu’il soit conçu pour une implémentation exclusivement matérielle, est la garantie d’une performance très élevée comparativement aux systèmes existants sur le marché. L’aspect « implémentation matérielle » ici fait opposition à une mise en œuvre logicielle basée sur un schéma type Von Neumann. Le module de filtrage, comme l’unité d’échange de données auquel il appartient est implantable dans des circuits programmables type FPGA (acronyme de « Field-Programmable Gate Array » ou ASIC (acronyme de « application-specific integrated circuit »). La performance allie à la fois débit élevé et déterminisme temporel.
[0111] Le fonctionnement du module de filtrage comporte une base de registres de réception des trames, des modules de dichotomie, et une machine d’état de contrôle.
[0112] Tout le mécanisme du module de filtrage est cadencé par une machine d’état de contrôle qui pousse dans une structure de registres la trame au fur et à mesure qu’elle est reçue, et, à des moments opportuns, charge des données particulière et/ou fait des calculs sur certaines de ces données.
[0113] Avant même la fin de la réception de la trame, le filtrage, qui utilise des tables de dichotomie pour la recherche des informations et actions à effectuer, est déjà lancé car toutes les informations nécessaires sont rendues disponibles.
[0114] Au besoin, il est possible d’arrêter l’opération, et de purger le module si, par exemple, une corruption de donnée est détectée via les mécanismes de protection (tels que le CRC (acronyme de « Cyclic redundancy check » ou les sommes de contrôle « checksum » en anglais).
[0115] Dans ce fonctionnement, plusieurs traitements son parallélisés. En effet, quand l’arrivée d’une trame est détectée, celle-ci est dé-sérialisée au fil de son arrivée. A chaque fois qu’un nombre suffisant de bits est correctement reçu, la machine d’état remplit un registre de réception dans la base de registres prévue à cet effet. Chaque registre est clairement identifié. Ainsi, en fonction du protocole de la trame en cours de réception, il est possible de récupérer à la volée des informations particulières pour les besoins, soit de traitement, soit de passage de paramètres pour une fonction donnée.
[0116] Un exemple de trame est décrit en référence à la [fig 5]. L’invention n’est pas limitée à un protocole particulier et peut s’appliquer à un protocole quelconque tel que le protocole Arinc 429 ou le protocole Ethernet 802.3.
[0117] Dans l’exemple d’une trame conforme au standard IEEE 802.3, les 6 premiers octets reçus sont l’adresse MAC destination, les 6 octets suivants sont l’adresse MAC source, les 2 octets suivants sont le champ EtherType. Si pour les besoins du filtrage, le module nécessite les deux derniers octets de l’adresse MAC de destination (numéro du « Virtual Link » dans la norme Arinc 664P7), et si la base de registre est constituée de registres de 32 bits (4 octets) alors la réception du second registre, noté « Reg2 » dans la [fig 5], déclenche une récupération des octets 1 et 2 pour les besoins du traitement (identification du « Virtual Link »).
[0118] L’opération de réception et de stockage, en plus des tâches de récupération des paramètres pendant la réception, assure la vérification de l’intégrité des trames : vérification de l’enveloppe de la trame, de l’IEG, de la taille, du CRC, etc.
[0119] Les informations récupérées de l’encapsulation (parfois après un traitement dessus) sont utilisées pour s’assurer de la validité de la trame. En d’autres termes, vérifier si la trame est bien autorisée à passer dans la suite du système. Cette activité est prise en charge par les « tables de dichotomie » appelées aussi « tables de filtrage ».
[0120] Pour une optimisation des performances, le schéma de la dichotomie est divisé en plusieurs étages dont chaque étage peut être lui-même subdivisé en plusieurs parties. Le principe de partitionnement en « étages » et « parties » obéit aux deux règles suivantes. Les « étages » sont « pipelinés », c’est-à-dire, les sorties d’un « étage » d’ordre n-1 sont des entrées pour l’étage d’ordre n. L’exécution de toutes les « parties » dans un même « étage » est parallélisée.
[0121] Dans un exemple de mise en œuvre, la dichotomie est organisée en deux étages dont le premier est lui-même subdivisé en deux parties. Chronologiquement, les recherches du premier étage sont parallélisées. Les sorties du premier étages constituent des entrées pour le second étage qui, en sortie, fournit un pointeur vers des structures mémoires qui permettent au module d’encapsulation de sur-encapsuler de la trame reçue.
[0122] La [fig 6] est un schéma illustrant un module de filtrage selon des modes de réalisation.
[0123] Le fonctionnement global de ce module est synchrone. Ce module utilise une horloge unique distribuée. Il est en outre géré par une machine à états finie 501 (FSM acronyme de « Final State Machine »). L’intérêt de cette manière de faire est de pouvoir maîtriser le déclanchement et la durée de chaque opération ce qui induit une garantie d’un temps de traitement borné et connu, et donc, une garantie de déterminisme temporel.
[0124] La trame en réception est dé-sérialisée dans le module d’entrée 500 « Data_IN » qui la stocke au fur et à mesure de son arrivée dans une base de registres 507. Dès la disponibilité d’informations pertinentes dans cette dernière, celles-ci sont récupérées pour être exploitées. Dans l’exemple de la [fig 6], le premier octet du premier registre peut être mis à disposition, dès sa réception, du module 502 pour la recherche dichotomique de l’étage 1 partie 2, notée E1P2. Le lancement du bloc 502 nécessite une commande de la machine 501 ainsi que des données complémentaires (notées « data externes » telle que l’enveloppe de trame et l’horloge).
[0125] En parallèle, la réception de la trame continue et d’autres informations sont prélevées à la volée soit pour alimenter les recherches dichotomiques, soit pour alimenter une unité 503 de calcul spécifiques qui alimente par la suite les recherches dichotomiques. L’unité 503 permet de traiter certaines informations d’encapsulation qui ne sont pas utilisables dans leur état brut et/ou doivent être combinées entre elles pour qu’elles soient exploitables par la suite. Par exemple, le module 502 ne peut être lancé qu’après extraction directe de l’octet 2 du registre 2 et mise à disposition d’un résultat de traitement de l’unité 503 basé sur l’octet 1 du registre 2. Le lancement du module 504 comprenant l’étage 2 de la dichotomie, noté E2, ne peut se faire qu’une fois les traitements de l’étage 1 complétés. En effet, les résultats des modules 502 (E1P1) et 505 (la partie 1 de l’étage 1 notée E1P2) sont injectés comme entrées dans le module 504. De plus, ces entrées ne sont pas exclusives. Chaque étage peut avoir besoin d’entrées complémentaires (en plus de celle de l’étage amont). Dans l’exemple de la [fig 6], le module 504 nécessite le dernier octet de l’avant-dernier registre ainsi qu’un résultat fourni par l’unité 503.
[0126] En parallèle de tous ces traitements, une unité 506 de contrôle d’intégrité vérifie que la trame en réception ne comporte pas d’anomalie. Les vérifications portent sur plusieurs paramètres tel que par exemple le CRC, la longueur, l’ILG, ou autre. Cette unité informe la machine 501 du statut de la réception en cours et lève une anomalie le cas échéant.
[0127] Tout au long du fonctionnement, des statuts sont générés et échangés afin de prévenir tout dysfonctionnement et détecter toute anomalie.
[0128] Les sorties du modules de filtrage peuvent être au nombre de un ou trois selon l’état final de la machine d’état de contrôle. Une sortie est un mot de statut contenant l’état final de la machine d’état avec, le cas échéant, une indication (communément appelée drapeau ou «flag » en anglais) à propos de l’anomalie constatée. Si le traitement s’est correctement déroulé, alors le module de filtrage fournit en plus le contenu de la base de registres qui n’est autre que la trame reçue et un pointeur, issu du dernier étage de la dichotomie, sur les structures mémoires permettant de créer l’objet issu de l’encapsule de la trame.
[0129] En référence à la [fig 7], on décrit maintenant le fonctionnement d’une unité de base de données 600.
[0130] Une trame de données encapsulée est reçue via le bus 602 depuis l’unité d’échange telle que décrite précédemment en référence à la [fig 1] (en particulier depuis un module d’encapsulation tel que le module 112 de la [fig 1]) par le module d’interface RX 610. Cette trame de données est transmise à un module des évènements d’écriture 630 par l’intermédiaire d’un dispositif d’interconnexion 620. Le module des évènements d’écriture 630 est en charge de transmettre les trames de données encapsulées reçues à un module de gestion de la mémoire 650.
[0131] Pour cela, en fonction des informations de la trame de données encapsulées transmises, en particulier en fonction des informations situées en en-tête de la trame, le module des évènements d’écriture 630 communique avec un module de gestion des données 642 afin d’obtenir l’adresse d’écriture dans la mémoire 660 de la trame de données. Le module de gestion des données 642 est en charge d’attribuer une adresse d’écriture dans la mémoire 660 à chaque trame de données.
[0132] Une fois l’adresse d’écriture de la trame de données reçue du module de gestion des données 642, le module des évènements d’écriture 630 communique avec le module de gestion de la mémoire 650 en transmettant une demande d’écriture par l’intermédiaire d’un premier dispositif d’interconnexion 641 et en transmettant la trame de données par l’intermédiaire d’un second dispositif d’interconnexion 640.
[0133] Dès la trame de données reçue, le module de gestion de la mémoire 650 stocke la trame de données dans la mémoire 660.
[0134] Lorsque la trame de données a été stockée, le module des évènements d’écriture 630 communique avec un module évènements 631 et l’informe du stockage de la trame de données dans la mémoire 660. En fonction des informations de la trame de données encapsulées stockées, en particulier en fonction des informations situées en en-tête de la trame, le module évènements 631 communique avec le module interface évènement 611 par l’intermédiaire d’un dispositif d’interconnexion 621 qui envoie via le bus 604 un message à l’unité d’échange (en particulier, au module de gestion des émissions 114 ) concernant les données disponibles avec les références des données disponibles. Le module évènement 631 est en charge d’informer l’unité d’échange des trames de données stockées disponibles.
[0135] Lorsque l’unité d’échange souhaite récupérer une trame de données, le module de génération des commandes 113 envoie une commande de lecture via le bus 603 à l’interface de commande 612. L’interface de commande 612 transmet cette commande au module de commande de lecture 632 par l’intermédiaire d’un dispositif d’interconnexion 622. Le module de commande de lecture 632 est en charge de la réception des commandes de trames de données depuis le module d’unité d’échange et de l’envoi des trames de donnés commandées.
[0136] Le module de commande de lecture 632 qui reçoit la commande fait une demande au module de gestion des données 642 afin d’obtenir l’adresse de lecture à laquelle récupérer la trame de données en fonction des références fournies dans la commande.
[0137] Le module de gestion des données 642 transmet alors l’adresse de lecture au module de commande de lecture 632 qui communique sa commande au module de gestion de la mémoire 650 par l’intermédiaire d’un premier dispositif d’interconnexion 643. Le module de gestion de la mémoire 650 récupère la trame de données depuis la mémoire 660 à partir de l’adresse de lecture communiquée et transmet la trame de données au module de commande de lecture 632 par l’intermédiaire d’un second dispositif d’interconnexion 644.
[0138] Une fois la trame de données récupérée par le module de commande de lecture 632, celui-ci transmet la trame de données au module d’interface TX 613 par l’intermédiaire d’un dispositif d’interconnexion 623. Le module d’interface TX 613 transmet enfin la trame de données à l’unité d’échange (en particulier au module de génération des données à émettre 115) via le bus 605.
[0139] L’unité de base de données comprend également un module de gestion du temps 614 qui communique avec le module d’horloge 116 de l’unité d’échange via le bus 606 afin de transmettre les mises à jour de l’heure générale du système. Le module de gestion du temps 614 est aussi en charge de la fourniture des signaux de synchronisation aux modules qui en ont fait la demande.
[0140] Les dispositifs d’interconnexion 620, 621, 622, 623, 640, 641, 643, 644 de l’unité de base de données ont les mêmes propriétés et capacités que les dispositifs d’interconnexion décrits ci-dessus en référence de l’unité d’échange.
[0141] Il ressort de la description qui précède que l’unité de base de données 600 comprend une mémoire 660 pour le stockage de trames de données réceptionnées puis transmises par le système de transmission de données et une unité de gestion de ladite mémoire. L’unité de gestion comprend un premier module de réception de trames de données : le module des évènements d’écriture 630, et un deuxième module de traitement de trames de données : le module de gestion des données 642.
[0142] Afin de stocker les trames de données de manière fiable et déterministe, le module de gestion des données 642 de l’unité de base de données effectue un traitement de chaque trame de données entrant dans le système de transmission de données. Ce traitement est prédéterminé à l’initialisation du module de gestion des données 642 afin d’assurer le déterminisme du système. Le traitement effectué par le module de gestion des données 642 est prédéterminée lors de la configuration de l’unité de base de données 600. Ainsi, à tout moment, il est possible de connaître exactement le résultat du traitement en fonction de la trame de données qui sera traitée par le module. Le résultat du traitement est distinct pour chaque trame de données. De ce fait, il peut être utilisé dans la gestion du stockage de chaque trame de donnée.
[0143] En particulier, le résultat du traitement est utilisé pour calculer une adresse de stockage (encore appelée adresse d’écriture) de chaque trame de données dans la mémoire 660, pour se conformer à un mode d’accès de la trame de données une fois celle-ci stockée, pour attribuer un numéro de séquence à chaque trame de données ou encore pour déterminer une taille nécessaire au stockage de chaque trame de données dans la mémoire.
[0144] L’attribution d’un numéro de séquence à chaque trame de données permet d’éviter la duplication des informations.
[0145] Une trame de données comporte typiquement un en-tête et une charge utile (ou « payload » en anglais). De préférence, le traitement est effectué sur l’en-tête de chaque trame de données. Ainsi, le résultat du traitement est différent pour chaque trame de données dès lors que chaque trame de données présente un en-tête distinct.
[0146] Le module de gestion des données 642 est également en charge de la gestion des modes d’accès aux trames de données en vue de la retransmission desdites trames de données.
[0147] Les modes d’accès gérés par le module de gestion des données peuvent être :
- un mode d’accès libre (aussi appelé mode d’accès échantillonné) : il s’agit d’une mémoire partagée entre la lecture et écriture. Dans ce mode, si le lecteur n’a pas lu la donnée avant l’écriture suivante, elle est écrasée ;
- un mode d’accès cyclique (tels que décrit dans les protocoles MIL-STD-1553B ou ARINC664 part7) : dans ce mode, un premier espace mémoire est attribué pour l’écriture et un second espace mémoire est attribuée en lecture pendant le temps d’un cycle. A la fin du cycle, l’attribution des mémoires est inversée. Ce mode d’accès permet d’éviter les écrasements de données dans un mode d’utilisation asynchrone. Ce mode d’accès est utilisé pour les trames de données paramétrées comme cycliques, c’est-à-dire les trames de données auxquelles une période de cycle est associée. Dans ce mode de réalisation, indépendamment de l’arrivée des données, les données sont transmises à tous les intervalles de temps correspondants à la durée d’un cycle ;
- un mode d’accès séquentiel : il s’agit d’une gestion premier entré premier sorti de la mémoire (dite également gestion FIFO). Ce mode d’accès permet d’éviter les écrasements de données et de rattraper un éventuel décalage entre les processus de lecture et d’écriture.
[0148] Selon un mode de réalisation, la mémoire 660 de l’unité de base de données est une mémoire tampon.
[0149] Selon un mode de réalisation, la mémoire 660 de l’unité de base de données comprend une première mémoire ayant une vitesse d’écriture et un temps de latence élevés et une seconde mémoire ayant une vitesse d’écriture et un temps de latence plus faibles. Chacune de ces mémoires peut comprendre au moins deux espaces mémoires. On entend par temps de latence, le temps écoulé entre la saisie d’une commande et son exécution.
[0150] Selon un mode de réalisation, le module de gestion des données 642 optimise l’utilisation de la première mémoire et de la seconde mémoire en fonction de la taille des trames de données à stocker. Pour une trame de données de taille importante, la durée d’écriture sera le facteur limitant, le module de gestion des données 642 privilégiera donc le stockage dans une mémoire ayant un temps de latence et une vitesse d’écriture élevés (la première mémoire). Pour une trame de données de petite taille, le temps de latence sera le facteur limitant et le module de gestion des données 642 privilégiera le stockage dans une mémoire ayant un temps de latence et une vitesse d’écriture plus faibles (la seconde mémoire).
[0151] Selon un mode de réalisation, la première mémoire est une mémoire du type RLDRAM (acronyme de « Reduced Latency Dynamic Random-Accès s Memory » en anglais), préférentiellement une mémoire RLDRAM3 ; ou une mémoire SDRAM (acronyme de « Synchronous Dynamic Random Access Memory » en anglais), préférentiellement une mémoire SDRAM interne.
[0152] Selon un mode de réalisation, la seconde mémoire est une mémoire du type DDR4 (acronyme de « Double Data Rate 4th generation » en anglais).
[0153] Selon un mode de réalisation, compte tenu de la latence relativement importante de la première mémoire, les accès mémoires se font en mode dit « burst ». L’accès en mode « burst » permet d’optimiser la bande passante. Comme il est bien connu de l’homme du métier, un mode burst pour une mémoire consiste à envoyer une quantité de données importante en une seule fois en réalisant ainsi une seule fois les actions d’initialisation. Ce mode de réalisation la permet de profiter de la bande passante maximale pour le transfert.
[0154] Selon un mode de réalisation, l’accès en lecture et en écriture de la première mémoire est géré par un algorithme d’ordonnancement tel que l’algorithme dit « Round-robin ». Ce mode de réalisation permet d’équilibrer la bande passant entre les accès en lecture et les accès en écriture de la mémoire 660.
[0155] Selon un mode de réalisation, compte tenu de la vitesse d’écriture et de lecture relativement faible de la seconde mémoire, les lectures et écritures dans la seconde mémoire sont effectuées par paquets de tailles inférieures à un seuil prédéterminé.
[0156] Selon un mode de réalisation, la lecture et l’écriture dans la seconde mémoire sont réalisées successivement par paquets de tailles prédéterminées de sorte à ce que le temps d’écriture ou de lecture corresponde au temps de latence de la seconde mémoire. Ce mode de réalisation permet de minimiser les pertes de bande passante. En effet, le temps de latence d’accès à la seconde mémoire en écriture est utilisé pour effectuer la lecture et le temps de latence d’accès à la seconde mémoire en lecture est utilisé pour effectuer l’écriture. De plus, l’alternance entre écriture et lecture dans la mémoire permet de garantir le déterminisme des accès à la mémoire. De préférence, les lectures et les écritures dans la seconde mémoire sont effectuées par paquets de 4 mots de 256 bits.
[0157] Selon un mode de réalisation, le module de gestion des données 642 est également en charge d’assurer la ségrégation des trames de données en fonction de la route suivie par chaque trame de données.
[0158] Par « route », on entend au sens de la présente invention le trajet d’une trame de données entre un émetteur et au moins un récepteur (une même trame de données pouvant être lue par un seul ou bien par plusieurs récepteurs) à travers l’unité d’échange de données et l’unité de base de données. Ainsi, deux trames de données issues d’un même émetteur et à destination d’un même récepteur ou de la même pluralité de récepteurs, partagent la même route.
[0159] Afin d’assurer la ségrégation des trames de données en fonction de la route suivie par chaque trame de données, le module de gestion des données 642 calcule un paramètre de stockage pour une trame de données en fonction de la route suivie par ladite trame de données.
[0160] Les informations concernant la route suivie par une trame de données sont insérées en en-tête de la trame de données lors de l’étape de sur-encapsulation de la trame par un module d’encapsulation (tel que le module d’encapsulation 112 de la [fig 1]). Le module d’encapsulation récupère les informations concernant la route suivie par une trame de données par le biais d’un module d’analyse et de filtrage (tel que le module d’analyse et de filtrage 117 de la [fig 1]). Connaissant l’émetteur dont est issue une trame de données et à l’aide d’une table de routage prédéterminée lors de la configuration du système de transmission de données, le module d’analyse et de filtrage détermine la route suivie par la trame de données et transmet cette information au module d’encapsulation.
[0161] La table de routage prédéterminée lors de la configuration du système permet de connaître le nombre de routes qui seront suivies par les différentes trames de données transmises par le système de transmission de données. Lors de la configuration du système, la mémoire 660 est alors subdivisée en une pluralité de zone. Chaque zone étant allouée à une route donnée.
[0162] Selon un mode de réalisation, le module de gestion des données 642 attribue à chaque trame de données une adresse de stockage dans une zone de la mémoire 660 correspondant à la zone de la route suivie par la trame de données.
[0163] Lorsqu’une trame de données provenant d’un émetteur est reçue par l’unité d’échange de données sur un port de communication données, un module d’analyse et de filtrage (tel que le module d’analyse et de filtrage 117 de la [fig 1]) affecte la trame de données à une route grâce à la table de routage. Les informations concernant la route d’une trame de données sont incorporées dans la trame de données lors de l’étape de sur encapsulation par un module d’encapsulation (tel que le module 112 de la [fig 1] ). Lorsque la trame de données arrive dans l’unité de base de données, le module de traitement des données 642 assure que l’adresse de stockage d’une trame de données se situe de la zone de la mémoire correspondant à la route suivie par la trame de données. De même, lorsque le module de commande de lecture 632 demande au module de gestion des données 642 l’adresse de lecture pour récupérer une trame de données, le module de gestion des données 642 assure que cette adresse soit bien située dans la zone de la mémoire correspondant à la route de la trame de données à récupérer.
[0164] Ce mode de réalisation permet de s’assurer que les trames de données soient stockées dans une zone de la mémoire exclusivement réservée à la route suivie par la trame de données. De même, lors de la récupération de la trame de données pour sa transmission à au moins un récepteur, seule une trame de données située dans la zone de la mémoire correspondant à la route pourra être récupérée. Ce mode de réalisation empêche ainsi qu’une trame de données soit transmise à un récepteur auquel elle n’est pas destinée.
[0165] La présente invention a été décrite et illustrée dans la présente description détaillée en référence aux figures jointes. Toutefois la présente invention ne se limite pas aux formes de réalisation présentées. D’autres variantes, modes de réalisation et combinaisons de caractéristiques peuvent être déduits et mis en œuvre par la personne du métier à la lecture de la présente description et des figures annexées.
[0166] Pour satisfaire des besoins spécifiques, une personne compétente dans le domaine de l’invention pourra appliquer des modifications ou adaptations.
[0167] Dans les revendications, le terme “comporter” n’exclut pas d’autres éléments ou d’autres étapes. L’article indéfini « un » n’exclut pas le pluriel. Un seul processeur ou plusieurs autres unités peuvent être utilisées pour mettre en œuvre l’invention. Les différentes caractéristiques présentées et/ou revendiquées peuvent être avantageusement combinées. Leur présence dans la description ou dans des revendications dépendantes différentes, n’exclut pas en effet la possibilité de les combiner. Les signes de référence ne sauraient être compris comme limitant la portée de l’invention.

Claims (1)

  1. [Revendication 1] [Revendication 2] [Revendication 3] [Revendication 4] [Revendication 5] [Revendication 6]
    Revendications
    Unité de gestion d’une mémoire (660) d’un système de transmission de données pour le stockage de trames de données ; ladite unité de gestion comportant :
    - un premier module de réception de trames de données (630) ;
    - un deuxième module de traitement de trames de données (642) ; ladite unité de gestion étant configurée pour stocker lesdites trames de données dans la mémoire (606) au fur et à mesure de leur réception par le premier module (630), chaque trame de données étant stockée dans la mémoire (660) en fonction d’au moins un paramètre de stockage ; et ledit deuxième module (642) étant configuré pour calculer ledit au moins un paramètre de stockage de chaque trame de données en fonction d’au moins une donnée de chaque trame de données et d’un traitement déterministe prédéterminé à l’initialisation de ladite unité de gestion.
    Unité de gestion selon la revendication 1, dans laquelle au moins un premier paramètre de stockage est une adresse de stockage de chaque trame de données dans la mémoire (660).
    Unité de gestion selon la revendication 1 ou la revendication 2, dans laquelle au moins un deuxième paramètre de stockage est un mode d’accès à une pluralité de trames de données dans la mémoire (660) une fois la pluralité de trames de données stockées.
    Unité de gestion selon la revendication 3, dans laquelle le mode d’accès à la pluralité de trames de données est un mode d’accès libre dans lequel la mémoire (660) est accessible indifféremment en lecture et en écriture. Unité de gestion selon la revendication 3, dans laquelle le mode d’accès à la pluralité de trames de données est un mode d’accès séquentiel dans lequel les trames de données sont lues dans l’ordre d’écriture des trames dans la mémoire (660).
    Unité de gestion de la mémoire selon la revendication 3, dans laquelle le mode d’accès à la pluralité de trames de données est un mode d’accès cyclique dans lequel
    - la mémoire (660) comprend un premier espace mémoire et un second espace mémoire;
    - au cours d’un cycle, le premier espace mémoire est accessible en écriture et le second espace mémoire est accessible en lecture ;
    - au cours du cycle suivant, le premier espace mémoire est accessible en
    lecture et le second espace mémoire est accessible en écriture. [Revendication 7] Unité de gestion selon l’une quelconque des revendications 1 à 6, dans laquelle au moins un troisième paramètre de stockage est une taille nécessaire au stockage de chaque trame de données dans la mémoire (660). [Revendication 8] Unité de gestion selon l’une quelconque des revendications 1 à 7, dans laquelle ledit deuxième module de traitement de trames de données est configuré pour attribuer un numéro de séquence à chaque trame de données réceptionnée par le premier module de réception. [Revendication 9] Unité de gestion selon l’une quelconque des revendications 1 à 8, dans laquelle chaque trame de données comprend un en-tête et une charge utile et dans lequel ledit deuxième module de traitement de trames de données calcule ledit au moins un paramètre de stockage de chaque trame de données en fonction d’au moins une donnée de son en-tête. [Revendication 10] Unité de gestion selon l’une quelconque des revendications 1 à 9, dans laquelle, le au moins un paramètre de stockage est calculée en fonction d’une route suivie par la trame de données. [Revendication 11] Unité de gestion selon l’une quelconque des revendications 1 à 10, dans laquelle chaque module est réalisé dans un circuit programmable ou un circuit intégré propre à une application (ASIC). [Revendication 12] Unité de base de données (600) comprenant une unité de gestion selon l’une quelconque des revendications 1 à 11 et une mémoire (660) pour le stockage de trames de données ; dans laquelle la mémoire comprend une première mémoire ayant une vitesse d’écriture et un temps de latence élevés et une seconde mémoire ayant une vitesse d’écriture et un temps de latence plus faibles. [Revendication 13] Unité de base de données (600) selon la revendication 12, dans laquelle le deuxième module de traitement de trames de données (642) de l’unité de gestion est configuré pour autoriser successivement la lecture et l’écriture dans la seconde mémoire par paquets de tailles prédéterminées de sorte à ce que le temps d’écriture ou de lecture corresponde au temps de latence de la seconde mémoire. [Revendication 14] Unité de base de données (600) selon la revendication 12 ou la revendication 13, dans laquelle l’unité de gestion est configurée pour gérer les accès en lecture et en écriture dans la première mémoire avec un algorithme d’ordonnancement. [Revendication 15] Unité de base de données (600) selon la revendication 14, dans laquelle ledit algorithme d’ordonnancement est un algorithme de type Round-
    robin. [Revendication 16] Unité de base de données (600) selon l’une quelconque des revendications 11 à 14, dans laquelle la mémoire (660) comprend une pluralité de zones, chaque zone étant allouée au stockage des trames de données transmises selon une route donnée. [Revendication 17] Unité de base de données selon la revendication 16, dans laquelle le paramètre de stockage calculé par le module de gestion des données (642) pour une trame de données circulant le long d’une route donnée est une adresse de stockage et dans laquelle ladite adresse de stockage se situe dans la zone de la mémoire allouée à ladite route.
    1/7
FR1872072A 2018-11-29 2018-11-29 Gestion des données pour le stockage de trames de données dans la mémoire d’un système de transmission de données Active FR3089374B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR1872072A FR3089374B1 (fr) 2018-11-29 2018-11-29 Gestion des données pour le stockage de trames de données dans la mémoire d’un système de transmission de données
PCT/FR2019/052832 WO2020109733A2 (fr) 2018-11-29 2019-11-28 Gestion des données pour le stockage de trames de données dans la mémoire d'un système de transmission de données

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1872072A FR3089374B1 (fr) 2018-11-29 2018-11-29 Gestion des données pour le stockage de trames de données dans la mémoire d’un système de transmission de données

Publications (2)

Publication Number Publication Date
FR3089374A1 true FR3089374A1 (fr) 2020-06-05
FR3089374B1 FR3089374B1 (fr) 2024-04-12

Family

ID=66166174

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1872072A Active FR3089374B1 (fr) 2018-11-29 2018-11-29 Gestion des données pour le stockage de trames de données dans la mémoire d’un système de transmission de données

Country Status (2)

Country Link
FR (1) FR3089374B1 (fr)
WO (1) WO2020109733A2 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506440A (zh) * 2020-12-17 2021-03-16 杭州迪普信息技术有限公司 基于二分法的数据查找方法和设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682553A (en) * 1995-04-14 1997-10-28 Mitsubishi Electric Information Technology Center America, Inc. Host computer and network interface using a two-dimensional per-application list of application level free buffers
US7072342B1 (en) * 2002-03-20 2006-07-04 Applied Micro Circuits Corporation Reordering of out-of-order packets
US7197043B2 (en) * 2000-02-08 2007-03-27 Mips Technologies, Inc. Method for allocating memory space for limited packet head and/or tail growth

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682553A (en) * 1995-04-14 1997-10-28 Mitsubishi Electric Information Technology Center America, Inc. Host computer and network interface using a two-dimensional per-application list of application level free buffers
US7197043B2 (en) * 2000-02-08 2007-03-27 Mips Technologies, Inc. Method for allocating memory space for limited packet head and/or tail growth
US7072342B1 (en) * 2002-03-20 2006-07-04 Applied Micro Circuits Corporation Reordering of out-of-order packets

Also Published As

Publication number Publication date
WO2020109733A3 (fr) 2020-08-13
FR3089374B1 (fr) 2024-04-12
WO2020109733A2 (fr) 2020-06-04

Similar Documents

Publication Publication Date Title
EP2793431B1 (fr) Méthode distribuée d'acquisition de données dans un réseau afdx
EP1641197B1 (fr) Architecture de communication NoC (réseau sur puce ) pour applications de type flots de données
EP2885899B1 (fr) Dispositif et procédé de transfert unidirectionnel de données
FR2820921A1 (fr) Dispositif et procede de transmission dans un commutateur
FR3011953A1 (fr) Reseau de transmission de donnees pour aeronef
EP1575222B1 (fr) Procédé et dispositif de commutation par paquets entre des agents
CA2006831C (fr) Systeme d'emission de trames hdlc sur canal de type mic, a circuit hdlc unique et memoire tampon de transposition
FR3011999A1 (fr) Reseau de transmission de donnees pour aeronef
FR2824434A1 (fr) Procede de diffusion d'un paquet de donnees au sein d'un reseau commute, base sur un calcul optimise de l'arbre de recouvrement
WO2020109733A2 (fr) Gestion des données pour le stockage de trames de données dans la mémoire d'un système de transmission de données
FR2998125A1 (fr) Procede de transmission de paquets de donnees entre deux modules de communication ainsi que module emetteur et module recepteur
WO2015145382A1 (fr) Composant electronique a reponse deterministe
FR2765425A1 (fr) Procede de detection d'erreurs sur une liaison serie d'un circuit integre et dispositif de mise en oeuvre du procede
FR3071118A1 (fr) Dispositif electronique et procede de reception de donnees via un reseau de communication rebonde, systeme de communication et programme d'ordinateur associes
WO2020089558A1 (fr) Système de transmission de données
FR3079695A1 (fr) Analyse et filtrage de donnees dans un systeme de transmission de donnees
FR3001310A1 (fr) Interface de reseau sur puce dotee d'un systeme adaptatif de declenchement d'envoi de donnees
EP3654613B1 (fr) Protocole de transmission d'un flux de données transitant entre un ordinateur hôte et un client distant
EP0895159B1 (fr) Procédé de purge des tampons de liaisons séries à haut débit et dispositif de mise en oeuvre du procédé
EP3637645B1 (fr) Dispositif électronique et procédé de réception de données via un réseau de communication redondé, système de communication et programme d'ordinateur associés
EP0974902B1 (fr) Procédé de détection d'erreurs sur une liaison série d'un circuit intégré et dispositif de mise en oeuvre du procédé
EP2740039B1 (fr) Dispositif pour echanger des donnees entre au moins deux applications
EP3748935B1 (fr) Procédé de stockage de fichiers numériques mis en oeuvre par un réseau avionique déterministe et à routage prédéterminé, et système de communication avionique associé
WO2021105262A1 (fr) Système de gestion des données partagées
EP3005625B1 (fr) Composant et procede de gestion de communication

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

EXTE Extension to a french territory

Extension state: PF

PLSC Publication of the preliminary search report

Effective date: 20200605

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6