FR 2827995 A1 20030131 FR 0110142 A 20010727 Procédé et dispositif de gestion de mémoire. La présente invention se rapporte au domaine de la gestion des mémoires de type FIFOs (de l'anglais First In, First Out désignant une mémoire tampon dont les éléments sont extraits dans le même ordre que celui dans lequel ils ont été stockés), notamment, mais non exclusivement, dans le cadre de systèmes de commutation, de transmission et/ou de réception de données numériques. Plus précisément, l'invention concerne l'optimisation de l'utilisation de moyens de stockage de type FIFO, alimentés par des données reçues et devant être transférées vers une pluralité de destinataires. Dans les systèmes de communication, les FIFOs sont souvent utilisées pour le stockage temporaire de données durant le transfert entre dsux éléments de système non parfaitement synchronisés. L'utilisation de la mémoire est un pointclé pour optimiser les coûts lors de la définition d'un système. Ainsi, il est souhaitable d'éviter la duplication de données lors d'une transmission du même flux de données à plusieurs destinataires. Ainsi, on connaît dans l'état de la technique, un dispositif de duplication de ports de lecture, tel que décrit dans un document de brevet US 5,909, 438 de la société Cascade Communications Corp. (marque déposée). Selon cette technique, une même donnée est émise vers l'ensemble des destinataires. Cette technique présente l'inconvénient de ne pas prendre en compte les différences de vitesse de lecture des destinataires et/ou la gigue associée et qu'ainsi des données peuvent être perdues. Un autre inconvénient de cette technique de l'art antérieur est qu'elle ne permet pas une configuration souple des communications vers les destinataires (tous les destinataires recevant systématiquement et simultanément la même donnée). On connaît également, dans l'état de la technique un document de brevet US 6,172, 927 de la société Ramtron Int. Corp. (marque déposée) qui décrit un système de mémoire de type FIFO permettant la retransmission de paquet de données. Le mode de réalisation décrit dans ce brevet consiste essentiellement : - à lire des données en sortie de la FIFO en utilisant un pointeur de lecture ; - à sauvegarder le pointeur de lecture, lors d'une requête de retransmission ; - à initialiser le pointeur de lecture avec une nouvelle position dans l'espace d'adresses de la FIFO ; - à lire à nouveau les données en sortie de la FIFO ; et - à affecter au pointeur de lecture, la valeur sauvegardée précédemment, à l'occurrence d'un signal de retour. Une technique similaire est décrite dans le document de brevet US 5,365, 485 de la société Texas Instruments Inc. (marque déposée). Selon ces techniques, une même donnée ne peut pas être émise simultanément vers plusieurs destinataires (les retransmissions de données étant plutôt effectuées pour ré-émettre une donnée mal reçue par un destinataire). Un autre inconvénient de ces techniques de l'art antérieur est que, si un destinataire ne peut pas lire une donnée à un instant donné, les autres destinataires doivent attendre. Cela peut introduire un blocage complet alors qu'un seul destinataire est hors service. Encore un autre inconvénient de ces techniques est qu'elle conduit à un fonctionnement non optimal des échanges de données et notamment à des engorgements, blocages, ou pertes de données. Encore, un autre inconvénient de ces techniques de l'art antérieur est qu'elle est mal adaptée à un grand nombre de destinataires d'une même donnée, la complexité de cette technique s'accroissant avec le nombre de destinataires. L'invention selon ses différents aspects a notamment pour objectif de pallier ces inconvénients de l'art antérieur. Plus précisément, un objectif de l'invention est d'optimiser la transmission de données vers plusieurs destinataires sur des liens de communications pouvant avoir une gigue en fonction du destinataire, les données étant mémorisées dans une FIFO. Un autre objectif de l'invention est d'optimiser l'espace mémoire de type FIFO globalement nécessaire à l'envoi d'un même ensemble de données vers plusieurs destinataires. Encore un autre objectif de l'invention est de fournir un procédé et un dispositif de gestion de FIFOs permettant de transmettre simultanément à plusieurs destinataires des données mémorisées dans une même FIFO, les données transmises à deux destinataires distincts n'étant pas nécessairement identiques à un instant donné. Dans ce but, l'invention propose un procédé de gestion d'une mémoire FIFO comprenant un ensemble de cases mémoire, dont l'accès en écriture est contrôlé à l'aide d'un pointeur d'écriture, chacune des données étant susceptible d'être lue par au moins deux destinataires, le procédé comprenant une étape d'association un pointeur de lecture de la FIFO à chacun des destinataires. Ces pointeurs de lecture peuvent être gérés indépendamment les uns des autres, et deux destinataires distincts peuvent donc être associés à deux pointeurs de lecture pointant sur des adresses de la FIFO différentes. Cela permet de gérer efficacement les décalages entre destinataires. On note qu'on entend ici par donnée notamment une information pouvant comprendre un ou plusieurs éléments binaires, voire un ensemble d'informations de taille relativement importante. On note qu'un destinataire est, par exemple, un dispositif, un élément de dispositif ou une application particulière. En outre, les données devant être lues par plusieurs destinataires ne sont pas nécessairement dupliquées. Selon une caractéristique particulière, le procédé est remarquable en ce qu'il comprend en outre : - une étape de requête de lecture par un destinataire demandeur ; une étape de lecture d'une donnée écrite dans la FIFO pointée par le pointeur de lecture associé au destinataire demandeur après réception de la requête ; et - une étape de mise à jour du pointeur de lecture associé au destinataire demandeur. Ainsi, les requêtes de lecture peuvent être émises indépendamment par chacun des destinataires en fonction notamment du débit ou du taux de charge sur le lien de communication et/ou du type de gestion de flux. En outre, l'invention permet à chacun des destinataires de lire à sa propre vitesse et selon ses propres besoins les données mémorisées. Selon une caractéristique particulière, le procédé est remarquable en ce que la FIFO est mise en ouvre dans une mémoire à ports multiples permettant la lecture simultanée de données distinctes par au moins deux des destinataires. Ainsi, la lecture de données est optimisée et n'est pas ralentie si un destinataire est plus lent que les autres. On peut, ainsi, en outre, assurer un synchronisme global entre plusieurs appareils (par exemple, un téléviseur et un magnétoscope). Selon une caractéristique particulière, le procédé est remarquable en ce qu'il comprend une étape de modification dynamique de la taille de la FIFO. Ainsi, le procédé permet d'optimiser la taille de la FIFO en fonction de paramètres de communication liés à chaque destinataire (par exemple, la gigue), ces paramètres pouvant évoluer dans le temps (notamment lorsqu'il y a ajout ou retrait de destinataire), de manière indépendante de l'instantiation de FIFO initiale. Selon une caractéristique particulière, le procédé est remarquable en ce que l'étape de modification de la taille de la FIFO est effectuée par un retrait ou un ajout d'un bloc d'au moins une case mémoire, le bloc étant placé à un emplacement déterminé de la FIFO, indépendant de la position des pointeurs de lecture et d'écriture de la FIFO. L'invention permet un choix d'une position d'insertion ou de retrait au sein des blocs chaînés formant la FIFO qui ne dépend pas de la position des pointeurs de ècture ou d'écriture. Ceci permet notamment de faciliter la mise en ouvre puisqu'on ne mélange pas les opérations d'accès aux données et les opérations de modification de taille de la FIFO. On note que la modification de taille ainsi effectuée est simple d souple à mettre en ouvre. L'invention a également pour avantage de permettre un ajustement de taille de la FIFO de manière asynchrone vis-à-vis des accès en lecture/écriture. Selon une caractéristique particulière, le procédé est remarquable en ce qu'il comprend une étape d'affectation d'un canal de communication à chacun des destinataires. Ainsi, l'invention est bien adaptée au cas où les communications sont effectuées en mode connecté, par exemple, par un lien physique entre la FIFO et un destinataire ou encore par un lien partagé notamment multiplex dans le temps, avec un créneau réservé pour la liaison entre la FIFO et le destinataire. De cette manière, l'invention est compatible avec un lien de type IEEE 1355. L'invention concerne aussi une application du procédé remarquable en ce qu'elle est de type appartenant au groupe comprenant : - des applications vidéo ; - des applications audio ; des applications du bus IEEE 1394 ; des applications d'un réseau de type IEEE 1355 ; et des applications d'interfaçage entre au moins un réseau de type IEEE 1355 et au moins un bus IEEE 1394. Ainsi, l'invention est adaptée en particulier aux applications audio/vidéo pour un système comprenant, par exemple, un décodeur numérique (en anglais set top box ), des téléviseurs et des magnétoscopes. L'invention concerne également un dispositif de gestion d'une mémoire FIFO comprenant un ensemble de cases mémoire, dont l'accès en écriture est contrôlé à l'aide d'un pointeur d'écriture, chacune des données étant susceptible d'être lue par au moins deux destinataires, remarquable en ce qu'il comprend des moyens de contrôle d'un pointeur de lecture de la FIFO pour chacun des destinataires. Selon une caractéristique particulière, le dispositif est remarquable en ce qu'il comprend en outre : des moyens de requête de lecture par un destinataire demandeur ; des moyens de lecture d'une donnée écrite dans la FIFO pointée par le pointeur de lecture associé au destinataire demandeur après réception de la requête ; et des moyens de mise à jour du pointeur de lecture associé au destinataire demandeur. Selon une caractéristique particulière, le dispositif est remarquable en ce que la FIFO est mise en cuivre dans une mémoire à ports multiples permettant la lecture simultanée de données distinctes par au moins deux des destinataires. Selon une caractéristique particulière, le dispositif est remarquable en ce qu'il comprend des moyens de modification dynamique de la taille de la FIFO. Selon une caractéristique particulière, le dispositif est remarquable en ce que les moyens de modification de la taille de la FIFO mettent en ouvre un retrait ou un ajout d'un bloc d'au moins une case mémoire, le bloc étant placé à un emplacement déterminé de la FIFO, indépendant de la position des pointeurs de lecture et d'écriture de la FIFO. Selon une caractéristique particulière, le dispositif est remarquable en ce qu'il comprend des moyens d'affectation d'un canal de communication à chacun des destinataires. L'invention concerne, en outre, un programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé de gestion d'une mémoire lorsque le programme est exécuté sur un ordinateur. L'invention concerne aussi un produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé de gestion d'une mémoire comprenant un ensemble de cases mémoire, dont l'accès en écriture est contrôlé à l'aide d'un pointeur d'écriture, chacune des données étant susceptible d'être lue par au moins deux destinataires, le programme étant enregistré sur un support utilisable dans un ordinateur, comprenant des moyens de programmation lisibles par ordinateur pour effectuer une étape d'association d'un pointeur de lecture de la FIFO à chacun des destinataires. Les avantages de l'application du procédé, du dispositif de gestion de mémoire et des programmes d'ordinateurs sont les mêmes que ceux du procédé, ils ne sont pas détaillés plus amplement. D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante d'un mode de réalisation préférentiel, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : - la figure 1 présente un synoptique de commutateur conforme à l'invention selon un mode particulier de réalisation ; - la figure 2 représente une structure de FIFO reposant sur la fragmentation en plusieurs pages d'une MPRAM telle qu'illustrée en figure 1 ; - la figure 3 représente la structure d'une ressource mémoire pour la gestion d'une FIFO telle qu'illustrée en figure 2 ; - la figure 4 illustre un algorithme de requête de modification d'une taille de FIFO telle que représentée en figure 2, selon une première variante de l'invention ; - la figure 5 décrit un algorithme de gestion d'un pointeur d'écriture dans une FIFO telle qu'illustrée en figure 2 ; - la figure 6 illustre la gestion d'un pointeur de lecture d'une FIFO telle qu'illustrée en figure 2 ; - la figure 7 décrit un algorithme de gestion des requêtes et des acquittements pour une modification de taille de FIFO telle qu'illustrée en figure 2 ; - la figure 8 illustre un algorithme d'initialisation d'un nouveau pointeur de lecture d'une FIFO telle qu'illustrée en figure 2 ; et - la figure 9 illustre un algorithme de gestion d'évènements de type de dépassement de seuil pour permettre une première lecture sur une FIFO telle qu'illustrée en figure 2. L'invention trouve des applications dans de nombreux domaines, et s'applique notamment dans le cadre de : la commutation à haut débit ; les applications distribuées ; la transmission et/ou la réception de données numériques ; les applications audio ; les réseaux d'entreprises ; et la transmission d'images en temps réel. Un domaine d'application particulier de l'invention est celui des applications domestiques pour les transferts à haut débit. On décrit par la suite un exemple de système mettant en avare l'invention, utilisé pour interconnecter une pluralité de dispositifs audio et vidéo dans la maison. Le principe général de l'invention repose sur la mise en ouvre d'une mémoire contenant au moins une FIFO gérée par un pointeur d'écriture et plusieurs pointeurs de lecture. Ainsi, on associe à chaque destinataire des données un pointeur de lecture qui évolue indépendamment des autres pointeurs de lecture. Ainsi, un pointeur de lecture est limité dans son évolution uniquement par le pointeur d'écriture que le pointeur de lecture ne peut pas dépasser. Si un destinataire est trop lent, il peut bloquer ou ralentir l'écriture. Si la gigue n'est cependant pas trop importante, on fait évoluer la taille de la FIFO par insertion d'un espace mémoire pour résoudre ce problème. Le système présenté dans la suite du document à titre d'exemple est un réseau fédérateur à débit commuté permettant d'atteindre des capacités de transmission élevées (typiquement de l'ordre du GBit), et répondant au besoin important d'interfaçage des normes IEEE 1394 et IEEE 1355 adaptées respectivement aux communications série et aux communications point à point. D'une manière générale, les sources et destinataires de données sont synchronisées ; néanmoins, la variation de débit en écriture par une source ou en lecture par un destinataire entraîne des augmentations ou baisses du remplissage de FIFOs. L'invention permet notamment d'optimiser l'occupation mémoire de la ou des FIFOs. L'interface de type IEEE1355 comprend plusieurs paires de ports entrées/sorties, une paire de FIFO étant associée à chaque paire de ports. L'interface de type IEEE1394 comprend une mémoire MPRAM permettant le stockage des données en provenance et/ou à destination d'un bus IEEE1394. La mémoire MPRAM est, par exemple, du type RAM à 4 port de référence CY0430V commercialisée par la société Cypress (marque déposée). Cette MPRAM peut aussi être utilisée pour le transfert de données vers et/ou à destination d'autres interfaces de communication. Le module de commutation architecturé autour de deux bus de données (l'un en réception et l'autre en émission) de type MRT comprend notamment : - une matrice d'arbitrage ; des registres trois états pilotés par des signaux générés par la matrice d'arbitrage et permettant la lecture et/ou l'écriture de données sur les deux bus de données. - des FIFOs d'entrée utilisées pour la réception des données en provenance d'une FIFO associée àun port de réception IEEE1355 ; des FIFOs de sorties utilisées pour les données à destination de la MPRAM d'interfaçage avec le bus IEEE1394 ; et des FIFO internes utilisées pour les données en provenance de la MPRAM d'interfaçage avec le bus IEEE1394. Les FIFOs sont préférentiellement de type mémoire à ports multiples et peuvent ainsi être accédées simultanément en lecture et en écriture sur plusieurs ports distincts. Les données à destination d'un port d'émission IEEE1355 sont émises directement vers la FIFO associée à ce port via le bus de transmission de données. Selon le protocole d'échange des données, les opérations de transfert des données entre une FIFO d'entrée ou interne et une ou plusieurs FIFO de sortie et/ou ports 1355, ne peuvent être effectuées que dans le cadre d'une connexion établie au niveau des paquets. Ainsi, pour qu'une connexion soit ouverte, à la suite d'une requête en provenance d'une FIFO d'entrée ou d'une FIFO interne, il est nécessaire que chacune de la ou des FIFOs destinataires permette l'ouverture d'une connexion. De cette manière, les FIFOs destinataires ne sont jamais saturées. La matrice d'arbitrage gère des connexions entre ports d'entrées et des ports de sortie en évitant les conflits et en gérant les aspects liés à la synchronisation. Ceci permet à la matrice d'arbitrage de générer des signaux de commande permettant l'accès (en écriture et en lecture) aux bus de transmission et de réception et des signaux de commandes des FIFOs en écriture. La figure 1 présente un synoptique d'un nond de commutation 90 connecté à deux interfaces de communication série conformes aux normes IEEE 1394 et IEEE 1355. Le noud représenté à la figure 1 est ainsi connecté à un ou plusieurs autres ncuds de commutation du réseau commuté auquel il appartient, par l'interface IEEE 1355. Dans le mode de réalisation représenté sur la figure 1, on a choisi de représenter un appareil de traitement de données 92, également appelé périphérique, qui est associé au dispositif de commutation 90. Un noad de commutation comprend : - un dispositif de commutation 90 ; et - un appareil de traitement de données 92 associé au dispositif de commutation. A titre de variante, l'appareil de traitement de données peut lui-même constituer ou comprendre le dispositif de commutation 90. Le dispositif 90 comprend : - une unité centrale de traitement CPU 93 ; - un moyen de stockage permanent 94 de type ROM ; et - un moyen de stockage temporaire 95 de type RAM, associé à l'unité centrale 93, et dans lequel est chargée une architecture logicielle à l'initialisation. Le moyen de stockage 95 est apte à stocker des paquets de données de différents types, notamment : des paquets du type asynchrone conforme à la norme IEEE 1394 ; des paquets constituant des messages en mode non connecté (asynchrones), du type conforme à la norme IEEE 1355 ; des paquets de contrôle du type conforme à la norme IEEE 1355 ; des paquets stream (isochrones) du type conforme à la norme IEEE 1355 et des paquets stream (isochrones) du type conforme à la norme IEEE 1394. Les paquets de type conforme à la norme IEEE 1355 ont réellement une existence au niveau du composant 104 qui sera mentionné ultérieurement mais ils ne sont pas stockés sous cette forme dans le moyen de stockage RAM 95. On notera que le moyen de stockage 95 contient les informations nécessaires pour générer les paquets IEEE 1355. Le cheminement de tels paquets jusqu'au moyen de stockage 95, provenant soit du bus 1394 soit du réseau commuté constitué de liens IEEE 1355 sera détaillé ultérieurement. Le cheminement de tels paquets, depuis le moyen de stockage 95 jusqu'à leur transmission par le nond de commutation, soit en direction du bus IEEE1394, soit en direction du réseau commuté constitué de liens IEEE 1355 sera détaillé ultérieurement. Ces trois éléments 93,94 et 95 communiquent au moyen de bus d'adresses et de données respectifs notés 96,97 et 98, avec un bloc noté 99 et connu de l'homme du métier sous le nom de contrôleur de bus. Ce bloc 99 permet notamment d'échanger des données au moyen d'un bus principal 100 avec au moins un composant d'interface de bus 101. Dans le cas où le bus 100 est un bus standard PCI (PCI signifiant en terminologie anglo-saxonne "Peripheral Component Interconnect"), le composant 101 peut être un composant dénommé AMCC 5933QC commercialisé par la société APPLIED MICRO CIRCUITS CORPORATION (Marque déposée). Le bus 100 peut également connecter entre eux d'autres éléments, non représentés sur la figure 1, eux-mêmes pourvus d'une interface de bus et pouvant mettre en ouvre, par exemple, des fonctions de traitement de données. Par exemple, dans un cas où le bus 100 est un bus standard PCI, le bloc 99 est en fait un ensemble de composants PCI tel que l'ensemble Intel 440LX AGP ("Intel 440LX AGPset"dans la terminologie anglo-saxonne) commercialisé par la société INTEL (Marque déposée). Ainsi, le bloc 99 comprend, par exemple, un composant 82443LX qui assure l'interface avec la mémoire 95 via le bus mémoire 98 et avec l'unité centrale de traitement CPU 93 via b bus local 96. Le composant 82443LX est luimême relié à un composant 82371AB qui fournit une interface avec le bus ISA 97 relié à la mémoire 94. Un contrôleur d'interruption IOAPIC Intel 82093AA connecté à l'unité centrale de traitement CPU 93 gère les interruptions pouvant survenir dans le système. Comme représenté sur la figure 1, le dispositif 90 comporte également une interface de bus 102 qui peut être similaire à l'interface de bus 101 permettant ainsi à l'appareil de traitement de données ou périphérique 92 d'accéder au dispositif de communication. Une telle interface est par exemple réalisée sous la forme d'une carte SEDNET PCI commercialisée par la société SEDERTA (Marque déposée) sous la référence SD-PCI-200 et permet d'y connecter n'importe quel appareil de traitement de données existant, conçu pour fonctionner en conformité avec la norme 1394. Il est bien entendu possible d'utiliser un adaptateur 102 spécifique à l'appareil de traitement de données que l'on souhaite y connecter. L'adaptateur 102 comprend essentiellement un composant d'interface similaire au composant d'interface de bus 101. Selon le type d'appareil de traitement de données, le bus principal 100, ainsi que les composants d'interface de bus 101 et contrôleur de bus 99 peuvent être adaptés en fonction de l'architecture du type de l'appareil. Il en est de même pour l'ensemble des éléments CPU 93, RAM 95 et ROM 94. Comme représenté sur la figure 1, le nood selon l'invention comporte également deux moyens d'interfaçage 103 et 104. Le moyen 103 est destiné à assurer l'interface entre le noud 90 et le bus de communication série prévu pour fonctionner selon la norme IEEE 1394 auquel est rattaché ledit nard. Le moyen d'interfaçage 103 est un ensemble de composants PHY/LINK 1394 qui est par exemple constitué d'un composant PHY TSB21LV03A et d'un composant LINK TSB12LV01A commercialisés par la société TEXAS INSTRUMENT (Marque déposée) et de connecteurs 1394, par exemple commercialisés par la société MOLEX (Marque déposée), par exemple sous la référence 53462. Le moyen d'interfaçage 103 comporte au moins un port externe destiné à être connecté à un appareil de traitement de données ou périphérique qui est rattaché au bus de communication série 1394. Le moyen 103 comporte des moyens de comptage du nombre d'impulsions en fonction d'un signal d'horloge généré par un module de contrôle 107, qui sera défini ultérieurement. Ce signal d'horloge est synchronisé avec le"Maître de cycle"du bus de communication série avec lequel il est en relation, par l'intermédiaire des paquets de début de cycle, appelés"Cycle Start packet"en terminologie anglo-saxonne. La fréquence du signal d'horloge généré par le module de contrôle107 est égale à 24,576 MHz +/-100 ppm. Ce signal est représenté comme étant l'un des signaux notés ctrl3 sur la figure 1. Sur chaque bus de communication série du réseau, l'un des nords est appelé"Maître de cycle" ("Cycle Master"en terminologie anglo-saxonne) et le noad"Maître de cycle"du bus"racine"est appelé"Maître de cycle du réseau" ("Net Cycle Master"en terminologie anglo-saxonne). En outre, tous les nocds"Maîtres de cycle"du réseau présentent une caractéristique qui leur est propre, puisqu'elle dépend de la fréquence de leur horloge interne, à partir de laquelle est définie la durée d'une"période de référence" ou "cycle". La durée du cycle notée T est égale à un nombre entier njnit d'impulsions d'horloge, commun ou non à tous les bus, et qui est multiplié par l'inverse de la ft fréquence de l'horloge interne propre au noad"Maître de cycle". La durée du cycle T est ainsi, par exemple, égale à 125 microsecondes. Lorsque deux bus de communication série sont reliés par un pont, le "Maître de cycle"de l'un des bus doit synchroniser ses cycles par rapport aux cycles générés par le"Maître de cycle"du bus adjacent. D'une manière générale, les réseaux de communication formés de bus de communication série permettent la transmission de paquets synchronisée à partir des cycles de bus considérés. Les bus sont par exemple utilisés pour transmettre des paquets de données en temps réel du type audio/vidéo. Les moyens de comptage comme ceux du moyen d'interfaçage 103 cité plus haut se présentent par exemple sous la forme d'un registre. Le moyen d'interfaçage 104 mentionné ci-dessus est un composant d'interface IEEE 1355 qui comporte trois ports. Il comprend notamment un composant C113 commercialisé par la société 4LINKS ainsi que trois composants d'interface LUC1141MK commercialisés par la société LUCENT (Marque déposée), eux-mêmes reliés à des connecteurs IEEE 1355, par exemple commercialisés par la société HARTING (Marque déposée). Le composant C113 est lui-même réalisé sur la base d'un composant programmable de type FPGA ("Field Programmable Gate Array"en terminologie anglo-saxonne) Spartan XCS30XL, commercialisé par la société XILINX (Marque déposée). Les initiales FPGA correspondent approximativement en français à "Matrice de Portes Programmables". Les trois ports externes du moyen d'interfaçage 104 sont destinés à être connectés à des ports de même type sur un autre ncad de commutation du réseau commuté, permettant ainsi au dispositif 90 de communiquer avec un autre nond de ce réseau. Le dispositif 90 comporte également un moyen de contrôle de flux de données 105 qui permet le transfert des données entre les différents composants d'interface 101, 103 et 104. Ce moyen 105 est réalisé en logique programmable, exécuté par un composant de type FPGA, par exemple de référence VIRTEX, commercialisé par la société XILINX. Ce moyen 105 met en ouvre notamment une unité de mémorisation à ports multiples 106 qui permet de stocker des données à destination de, ou provenant du réseau commuté 1355, ou du bus série IEEE1394. L'unité de mémorisation à ports multiples possède une capacité de stockage inférieure à 2 Mbits et est, par exemple, réalisée sous la forme d'une mémoire de type MPRAM à accès 32 bits. L'unité de mémorisation 106 comporte une pluralité de zones mémoires qui sont gérées comme des mémoires individuelles de type FIFO, initiales des termes anglais"First-in First-out"signifiant en & ançais"Premier entré Premier 1 sorti". Une telle zone mémoire correspond à une mémoire dans laquelle les données sont lues dans l'ordre dans lequel elles ont été préalablement écrites. Ces zones mémoires comportent chacune un pointeur de lecture et un pointeur d'écriture associés. Chaque zone mémoire étant gérée comme une mémoire de type FIFO, son remplissage et son vidage peuvent s'effectuer en même temps, et de manière indépendante. Ceci permet de désynchroniser les opérations de lecture et d'écriture des données, effectuées par une unité de commutation 108 qui sera définie ultérieurement, des opérations de lecture et d'écriture des données, effectuées par le module de contrôle 107. En effet, le taux d'occupation de la zone mémoire considérée est géré de manière circulaire et l'on sait à tout moment si les données contenues dans une zone mémoire ont été lues ou non. Lorsque ces données ont été lues, il est alors possible de venir écrire de nouvelles données à la place de celles-ci. L'unité de mémorisation à ports multiples constitue en quelque sorte une file d'attente pour les paquets, et la fonction de stockage est réalisée de manière indépendante, selon le port par lequel les paquets parviennent à l'unité de mémorisation. D'une manière générale, toutes les données isochrones ou asynchrones provenant du réseau commuté sont stockées dans l'unité de mémorisation 106. Ce stockage est temporaire pour les paquets de données asynchrones (paquets constituant un message transmis en mode non connecté) et pour les paquets de contrôle, qui sont amenés à être transférés ensuite dans le moyen de stockage RAM 95 (ou vice-versa du moyen de stockage vers le réseau) pour un stockage d'une durée plus importante.. En revanche, les paquets de données isochrones (paquets de type"stream", c'est-à-dire transmis en mode connecté), sont stockés uniquement dans cette unité de mémorisation 106 avant leur transmission sur le bus de communication série IEEE1394 auquel est raccordé le nwd de commutation 90 ou sur le réseau commuté, IEEE 1355. Ceci s'explique par le fait que ce type de données doit être transféré aussi rapidement que possible du réseau commuté vers le bus et donc doit être stocké dans un moyen de stockage facilement et rapidement accessible. De même, les paquets de données isochrones, issus du bus de communication série IEEE1394 auquel est raccordé le nocd de commutation 90, et qui sont destinés au réseau commuté, sont stockés uniquement dans l'unité de mémorisation 106, et non dans le moyen de stockage 95, pour les mêmes raisons que celles invoquées précédemment, tandis que les paquets asynchrones IEEE1394 sont stockés dans le moyen de stockage 95. Ainsi que représenté sur la figure 1, le moyen de contrôle de flux de données 105 comporte plusieurs autres éléments dont un module de contrôle 107 (déjà mentionné plus haut), qui assure une fonction de contrôle de l'unité de mémorisation 106, une unité de commutation 108 (déjà mentionnée plus haut) en communication avec le moyen d'interfaçage 104, avec l'unité de mémorisation 106 et avec le module de contrôle 107, ainsi qu'une unité d'ordonnancement des paquets de données 109, qui est relation avec le module de contrôle 107. On notera également que le module de contrôle 107 communique avec les moyens d'interfaçage 103 et 104 ainsi qu'avec le composant d'interface de bus noté 101. Le module de contrôle 107 a pour fonction de multiplexer les accès en lecture ou en écriture à des registres d'autres modules à partir du bus principal noté 100. Le module 107 possède également la maîtrise du composant d'interface de bus 101 pour les opérations de lecture et d'écriture sur le bus principal 100, incluant notamment le transfert en"mode rafale" (connu en terminologie anglosaxonne sous le terme de"burst mode"). Le module de contrôle 107 est également chargé du déclenchement des interruptions sur le bus principal 100, en fonction d'événements de communication particuliers. Ce module échange des données avec le composant 101, sur un bus additionnel 110 (connu en terminologie anglo-saxonne sous le terme de"add-on bus"), suivant les signaux de contrôle notés ctrll. Comme annoncé ci-dessus, le module 107 est chargé du contrôle de l'unité de mémorisation 106, en ce qui concerne les opérations de lecture et d'écriture en mode FIFO, dans le cas particulier où le composant d'interface de bus 101 est un AMCC, par l'intermédiaire d'un bus de données 111 et de signaux de contrôle ctrl2. Le moyen d'interfaçage 103 contient des mémoires de type FIFO, qui sont utilisées lors du transfert de paquets de données de type conforme à la norme IEEE 1394. Il comprend deux mémoires FIFO de transmission dites ATF ("Asynchronous Transfer FIFO"en terminologie anglo-saxonne) et ITF ("Isochronous Transfer FIFO"en terminologie anglosaxonne) et une mémoire FIFO de réception dite GRF ("General Receive FIFO"en terminologie anglosaxonne). Ces mémoires FIFO sont plus largement décrites dans la documentation associée au composant LINK TSB 12L VO 1 A. Le module de contrôle 107 et le moyen d'interfaçage 103 gèrent le transfert de données sur un bus 112 suivant des signaux de contrôle ctrl3. Par ailleurs, le module de contrôle 107 contrôle l'unité de commutation 108, au moyen de signaux de contrôle ctrl 4, afin de transférer des données & l'unité de commutation vers l'unité de mémorisation 106 par l'intermédiaire d'un bus de données 113, et inversement. L'unité de commutation 108 est connectée au moyen d'interface 104 par l'intermédiaire d'un bus de données 114 et de signaux de contrôle ctrl5. L'unité d'ordonnancement des paquets de données 109, notée également SAR (connue en terminologie anglo-saxonne sous le terme de"Segmentation And Reassembling"), informe le module de contrôle 107 du ou des prochains paquets de données à transmettre, par l'intermédiaire de signaux de contrôle ctrl6. En outre, l'unité d'ordonnancement 109 vérifie la réception des paquets de données, et gère l'allocation et la libération de zones mémoires (connues en terminologie anglo-saxonne sous le terme de"buffers") de l'unité de mémorisation 106. Les signaux de contrôle ctrl7 échangés entre le moyen d'interfaçage 104 et le module de contrôle 107 comprennent notamment les signaux d'horloges régénérés à partir de la réception des paquets 1355 sur chacun des trois ports du moyen d'interfaçage 104. Un quartz à 49, 152Mhz (non représenté) est connecté à la fois au moyen 104 pour l'émission des paquets 1355 et au module de contrôle 107 qui génère un signal d'horloge à 24,576 MHz +/-100 ppm, d'une part, pour l'unité d'ordonnancement des paquets de données 109, afin de cadencer l'émission des paquets 1355 et, d'autre part pour le moyen d'interfaçage 103, afin de cadencer l'émission des paquets 1394. La figure 2 illustre une structure de FIFOs mise en ouvre dans la MPRAM 106 présentée en regard de la figure 1. Le module de contrôle 107 illustré en regard de la figure 1 gère cette MPRAM et met en ouvre les algorithmes décrits dans les figures suivantes. L'espace mémoire de la MPRAM 106 est fragmenté en 32 pages élémentaires numérotées (de la page 0 à la page 31 référencées respectivement 2a à 2j). Chaque page a une taille identique de 2048 mots de 32 bits (éléments binaires). Selon des variantes non représentées, les pages ont des tailles différentes de 2048 mots et/ou sont organisées en mots de tailles non égales à 32 bits (par exemple, 8,16 ou 64 éléments binaires ou non). Chaque FIFO de la MPRAM 106 est structurée comme un ensemble de pages élémentaires de la MPRAM 106 et cette structure évolue au cours du temps par ajout ou retrait d'un nombre entier de pages élémentaires. Par exemple, à un instant tO initial, la configuration de la première FIFO 1 comprend trois blocs la à 1c chaînés, correspondants respectivement aux pages 2, 4 et 27 (référencées 2c, 2e et 2f) de la MPRAM 106. Puis, à un temps tl, à la suite d'une nécessaire augmentation de la taille de la FIFO 1, la FIFO 1 est configurée pour contenir trois pages supplémentaires chaînées, par addition successive des pages 0,30 et 31 (référencées 2a, 2i et 2j) de la MPRAM 106. Ensuite, au temps t2, la FIFO 1 se vidant, sa taille décroît en fonction des besoins réels et est configurée pour contenir une seule page, par exemple la page 2 (de référence 2a) de la MPRAM 106. La FIFO est configurée pour gérer la gigue en fonction du type de données impliquées dans la communication entre deux needs de communication et de la charge sur les différents chemins de communication entre les needs de communication. On note que l'utilisation de plusieurs pointeurs de lectures entraîne plusieurs chemins, la charge la plus élevée sur les différents chemins étant considérée comme base de référence pour la détermination de la gigue. Lorsque la communication entre des needs n'est pas surchargée, quatre pages sont, par exemple, allouées pour transporter des données vidéo, trois pages pour les données audio et une page pour les données de protocole. En cas de surcharge de communication, huit pages, par exemple, peuvent être assignées à une FIFO pour transporter des données de vidéo. Après une phase d'initialisation, la taille de la FIFO associée à une communication sera mise à jour en fonction des changements de contexte entraînant une gigue sur la communication considérée. Pour détecter une telle modification de contexte et décider s'il est nécessaire de modifier la taille de FIFO associée, les échanges de données de contrôle (liées notamment au protocole du réseau) sont analysés. On note que les données de contrôles comprennent, par exemple, des informations sur la charge des liens connectés dans le réseau, ou sur des localisations de points de congestion dans le réseau, ou sur la topologie du réseau,... Selon une première variante de modification de contexte, l'amplitude de la gigue dans une FIFO sera mesurée par analyse et intégration de l'espace restant dans la FIFO en cours d'utilisation. La figure 3 décrit les ressources mémoire utilisées pour la gestion de chaque FIFO de taille variable, telle qu'illustrée en regard de la figure 2. Pour gérer chaque FIFO, plusieurs tables et registres sont associés à la FIFO : - une table 20 de numéros de page ; - un registre 30 de taille ; - un registre 40 PtW de pointeur en écriture ; un registre de seuil de FIFO 70 ; et pour chaque pointeur de lecture respectivement PtRO, PtRl et PtR2 : - un registre respectivement 50, 51 et 52 de pointeurs en lecture ; - une table respectivement 10, 11 et 12 de statuts de page associée ; et - un registre respectivement 60,61 et 62 de seuil de pointeur de lecture. Chacun de ces registres est mis en ouvre dans une mémoire volatile de type RAM telle par exemple la MPRAM 106 ou une RAM propre au module de contrôle 107. La table 20 de numéros de page contient huit registres 20a à 20h, indexés de 0 à 8. Chacun des n premiers registres de la table 20 contient le numéro relatif à une page de la MPRAM 106 allouée pour la FIFO. Chaque numéro est codé sur cinq bits (ou éléments binaires), ce qui permet d'identifier une page parmi 32 dont le numéro est compris entre 0 et 31. On note que huit pages peuvent être allouées à chaque FIFO. Le registre 30 de bille est un registre à quatre bits contenant le nombre de pages, n, associées à la FIFO concernée. Un champ égal à 0 indique que la FIFO n'est pas ou n'est plus en cours d'utilisation alors qu'un champ non nul indique le nombre de pages allouées à la FIFO (valeur comprise entre 1 et 8). Le registre 40, PtW est un registre à 14 bits contenant les informations utiles pour positionner le pointeur d'écriture d'une FIFO. Le registre 40 Pt West constitué de deux champs séparés : - les trois bits les plus significatifs (MSB) contiennent une valeur 40a d'index dans la table 20 de numéros de page ; et - les onze bits les moins significatifs (LSB) contiennent une valeur 40b d'offset. Grâce à cette information, la position du pointeur d'écriture PtW de la FIFO est pertinente : - le champ d'index 40a (compris entre 0 et 7) permet de déterminer un numéro de pages (entre 0 et 31) ; et - le champ d'offset 40b permet de déterminer l'adresse (entre 0 et 2047) à l'intérieur de la page dont le numéro est identifié par l'index. Le registre 60 de seuil est un registre à 11 bits codant le nombre de mots écrits dans la FIFO avant de permettre un premier traitement de lecture de la FIFO. Le registre 60 permet d'initialiser un seuil de remplissage autour duquel la gigue sera absorbée. L'amplitude maximale de la gigue qui peut être absorbée dépend de la taille de la FIFO. Les registres 50,51 et 52 sont des registres à 14 bits contenant l'information utile pour positionner respectivement les pointeurs PtRO, PtRl et PtR2 de lecture de la FIFO. Chacun des registres 50,51 et 52 est constitué de 2 champs séparés : les trois bits les plus significatifs (MSB) contiennent une valeur respectivement 50a, 51a et 52a d'index dans la table 20 de numéros de page ; et les onze bits les moins significatifs (LSB) contiennent une valeur respectivement 50b, 51b et 52b d'offset. Grâce à cette information, la position de chacun des pointeurs d'écriture PtRO, PtRl et PtR2 de la FIFO est pertinente : les champs d'index respectivement 50a, 5la et 52a (compris entre 0 et 7) permettent de déterminer un numéro de pages (entre 0 et 31) ; et - les champs d'offset 50b, 51b et 52b permettent de déterminer l'adresse (entre 0 et 2047) à l'intérieur de la page dont le numéro est identifié par l'index. Chacun des registres 70,71 et 72 de seuil de pointeur de lecture est associé à un pointeur de lecture respectivement PtRO, PtRl et PtR2 et contient l'offset à l'intérieur de la FIFO correspondant à l'adresse devant être atteinte par le pointeur d'écriture avant de permettre la première lecture gérée par le pointeur associé respectivement PtRO, PtRl et PtR2. Les registres 70,71 et 72 permettent d'initialiser un seuil de remplissage autour duquel la gigue de communication à l'intérieur du système sera absorbée. Pour un pointeur de lecture donné, le seuil de pointeur de lecture associé est défini comme étant la somme (modulo la taille de la FIFO) : de l'adresse du premier mot à lire (pointé par le pointeur concerné) ; et - du seuil de la FIFO mémorisé dans le registre 60. Chacune des tables 10,11 et 12 de statuts de page contient huit registres respectivement lOa à 1Oh, lia à llh et 12a à 12h indexés de 0 à 8. Chacun des registres (ou cases mémoire) de chacune des tables 10,11 et 12 contient une information de statut relatif à la page dont le numéro est contenu dans le registre de même index dans la table 20. Cette information de statut est codée sur un bit. Ainsi, par exemple, si la FIFO contient au moins une page, le statut de la page dont le numéro est mémorisé dans le registre d'index 0 de la table 20 de numéros de page est mémorisé dans le registre d'index 0 de chacune des tables 10, 11 et 12 des statuts de pages. Les registres de chacune des tables 10, 11 et 12 sont initialisés avec une valeur nulle. Lorsqu'une page vient juste d'être complètement écrite (respectivement lue), le statut de page correspondant est mise à jour avec une valeur égale à 1 (respectivement 0). La figure 4 décrit un algorithme de requête de modification de taille d'une FIFO en fonction de l'intégration de l'espace restant selon la première variante de modification de contexte mentionnée en regard de la figure 2. Lors d'une première étape d'initialisation 500, les différentes variables et paramètres nécessaires au fonctionnement de l'algorithme de requête de modification de taille de la FIFO concernée sont initialisés : - le registre 30 de taille est initialisé à une valeur nulle ; - le registre 70 de seuil associé à la FIFO est initialisé à une valeur prédéfinie ; et - les registres 70,71 et 72 de seuil de pointeur de lecture associé à la FIFO sont initialisés comme précédemment décrit en regard de la figure 3. Ensuite, au cours d'une étape 501, en supposant que la taille (mémorisée dans le registre 30) de la FIFO n'est pas nulle, l'espace restant de la FIFO est continuellement analysé et intégré dans le temps, pour chacun des pointeurs de lecture PtRO, PtRI et PtR2, jusqu'à ce qu'une valeur limite de temps d'intégration soit atteinte. Puis, lors d'un test 502, pour chacun des pointeurs de lecture PtRO, PtRI et PtR2, on compare l'espace résiduel intégré dans le temps dans la FIFO avec une valeur de premier seuil SI prédéfinie. Si l'espace résiduel est plus grand que le seuil SI pour chacun des pointeurs de lecture PtRO, PtRI et PtR2, alors au cours d'une étape 503, une réduction de la taille de la FIFO est requise. Cette réduction dépend de l'écart entre l'espace résiduel et le seuil SI. Ceci est notamment illustré en figure 2 lorsque, entre les instants t1 et t2, cinq pages vides (4,27, 0,30 et 31) sont retirées de la FIFO 1. Si l'espace restant intégré dans le temps est plus petit que ou égal au seuil SI pour au moins un des pointeurs de lecture PtRO, PtRI et PtR2, lors du test 502, alors au cours d'un test 504, pour chacun des pointeurs de lecture PtRO, PtRI et PtR2, l'espace restant de la FIFO est comparé avec un second seuil S2 prédéfini. Si l'espace restant dans la même mémoire est plus petit que le seuil S2, pour au moins un des pointeurs de lecture PtRO, PtRI et PtR2, alors, au cours d'une étape 505, une augmentation de la taille de la FIFO est requise. Cette augmentation dépend de l'écart entre l'espace résiduel et le seuil S2. Ainsi, tel qu'illustré en figure 2, trois pages disponibles (0,30 et 31) sont ajoutées àla FIFO 1 entre les instants tO et tl,. Après une étape 504 ou 502 ou un résultat négatif au test 503, l'étape 501 est réitérée. La figure 5 décrit un algorithme de gestion de flux utilisé pour la gestion des pointeurs d'écriture d'une FIFO. Au cours d'une première étape 700, la FIFO est initialisée. Au cours de cette étape, une variable de type index courant d'écriture et le registre 40 PtW associés à la FIFO sont initialisés avec la valeur de l'adresse de la première case mémoire de la première page de la table 20 de numéros de pages, ce qui signifie que le pointeur d'écriture pointe vers la première case mémoire de la FIFO. Ensuite, en supposant que la taille (mémorisée dans le registre 30) de la FIFO n'est pas nulle, au cours d'un test 701, une détection de requête d'écriture de la FIFO est effectuée. Si aucune requête d'écriture n'est détectée, l'étape 701 est réitérée. Lorsqu'une requête d'écriture est détectée lors du test 701, les paramètres d'écriture sont initialisés au cours d'une étape 702 : une adresse AddrW d'écriture de la MPRAM 106 est calculée par accès au registre 40 Pu associés à la FIFO dont les bits de poids forts (MSB) pointent sur un numéro de page dans la table 20 et les bits de poids faible sur l'offset à appliquer pour compléter les bits de poids faibles de l'adresse Addr W. Ensuite, au cours d'une étape 703, le champ d'offset du registre 40 PtW associé à la FIFO est incrémenté d'une unité pour définir une valeur a priori de l'offset du pointeur d'écriture permettant d'identifier l'offset suivant dans la page de la FIFO. Ensuite, au cours d'un test 705, la valeur a priori de l'offset (modulo la taille d'une page) correspondant à la valeur a priori du pointeur d'écriture est comparée à la valeur 0 afin de détecter un changement de page. Si la valeur a priori de l'offset du pointeur d'écriture n'est pas nul, au cours d'un test 704, la valeur a priori du pointeur d'écriture PtW est comparée à chacun des pointeurs PtRO, PtRl et PtR2 de lecture de la FIFO. L'égalité d'au moins un des pointeurs de lecture PtRO, PtRl et PtR2 et de la valeur a priori du pointeur d'écriture PtW de la FIFO signifie que la FIFO est pleine. Si la valeur a priori du pointeur de lecture PtW et au moins un des pointeurs de lecture PtRO, PtRl et PtR2 sont égaux, au cours d'une étape 709, une exception de traitement de type FIFO pleine est effectuée et l'étape 701 est réitérée. Lorsque la valeur a priori du pointeur de lecture PtW n'est égale à aucun des pointeurs de lecture PtRO, PtRl et PtR2, au cours d'une étape 710, le registre 40 PtW est mis à jour avec la valeur a priori de l'offset du pointeur d'écriture, et le test 701 est réitéré. Si au cours du test 705, l'offset la valeur a priori de l'offset du pointeur d'écriture est nul, au cours d'une étape 706, une valeur égale à 1 (indiquant que la page vient juste d'être complètement écrite) est affectée au statut de la page correspondante indexée par l'index courant d'écriture, dans la table 10 de statuts puis la valeur de l'index courant d'écriture est incrémentée d'une unité. Ensuite, au cours d'un test 707, on détermine si la valeur de l'index courant d'écriture est strictement inférieure à la valeur de la taille dans le registre 30 de taille afin de détecter si la fin de la FIFO n'est pas atteinte. Dans la négative, la fin de la FIFO est atteinte et au cours d'un test 708, la valeur de l'index courant d'écriture est initialisée à une valeur égale à 0 (correspondant à une boucle de retour à la première page de la FIFO). Dans l'affirmative ou à la suite de l'étape 708, le test 704 est réitéré. La figure 6 décrit un algorithme de gestion de flux utilisé pour la gestion d'un pointeur de lecture PtRi, chacun des pointeurs PtRO, PtRl et PtR2 étant géré indépendamment des autres. Au cours d'une première étape 200, la FIFO est initialisée. Au cours de cette étape, une variable de type index courant de lecture et chacun des registres pointeurs de lecture PtRi sont initialisés selon l'algorithme d'initialisation qui sera décrit ultérieurement en référence à la figure 8. Ensuite, au cours d'un test 201, en supposant que h taille (mémorisée dans le registre 30) de la FIFO n'est pas nulle, le module de contrôle 107 détecte une requête de lecture de la FIFO associée au pointeur de lecture PtRi. Si aucune requête de lecture associée au pointeur de lecture PtRi n'est détectée, le test 201 est réitéré. Lorsqu'une requête de lecture associée au pointeur de lecture PtRi est détectée lors du test 201, les paramètres de lecture sont initialisés au cours d'une étape 202 : une adresse AddrRi de lecture de la MPRAM 106 est calculée par accès au registre PtRi associé à la FIFO dont les bits de poids fort (MSB) pointent sur un numéro de page dans la table 20 et les bits de poids faible sur l'offset à appliquer pour compléter les bits de poids faible de l'adresse AddrRi. (On note que la première requête de lecture associée à un pointeur PtRi se fait à l'issue d'un dépassement de seuil correspondant initialisé à l'étape 404 illustrée en regard de la figure 8.) Ensuite, au cours d'une étape 203, le champ d'offset du registre 50 PtR associé à la FIFO est incrémenté d'une unité pour définir une valeur a priori de pointeur de lecture permettant d'identifier l'offset suivant dans la page de la FIFO. Ensuite, au cours d'un test 204, la valeur a priori des pointeurs de lecture en cours d'utilisation PtRi et le pointeur d'écriture Pt W de la FIFO sont comparés. On note que la notion de FIFO vide est associée à un pointeur de lecture PtRi : si la FIFO est vide pour un pointeur de lecture PtRi actif, une routine d'exception est lancée pour ce pointeur, les autres pointeurs de lecture ne devant pas être gênés dans leur progression. On pourra considérer que le pointeur de lecture PtRi pour lequel la FIFO est vide est perdu et devra être réinitialisé. L'égalité de la valeur a priori du pointeur de lecture PtRi et du pointeur d'écriture PtW de la FIFO signifie que la FIFO est vide. Si les deux pointeurs sont égaux, au cours d'une étape 207, une exception de traitement quelconque de type FIFO vide est effectuée et l'étape 201 est réitérée. Lorsque le pointeur d'écriture PtW et la valeur a priori du pointeur de lecture PtR de la FIFO ne sont pas égaux, au cours d'un test 205, la valeur a priori de l'offset (modulo la taille d'une page) correspondant à la valeur a priori du pointeur de lecture PtRi est comparée à la valeur 0 afin de détecter un éventuel changement de page. Si l'offset correspondant à la valeur a priori du pointeur de lecture n'est pas nul, au cours d'une étape 219, le registre PtRi est mis à jour avec la valeur a priori du pointeur de lecture. Le test 201 est ensuite réitéré. Si au cours du test 205, l'offset correspondant à la valeur a priori du pointeur de lecture est nul, un changement de page est détecté et, au cours d'une étape 206, une valeur égale à 0 est affectée au statut (associé au pointeur PtRi) de la page correspondante (indiquant que la page vient juste d'être complètement lue) indexée par l'index courant de lecture dans la table 10 puis la valeur de l'index courant de lecture est incrémentée d'une unité. On note que lors de l'étape 206, on vérifie (selon un mode non représenté) que les pointeurs PtRi et PtW ne sont pas égaux. On effectue alors le test 208 dans l'affirmative et l'étape 207 dans la négative. Ensuite, au cours d'un test 208, on détermine si la valeur de l'index courant de lecture est strictement inférieure à la valeur de la taille dans le registre 30 de taille afin de détecter si la fin de la FIFO n'est pas atteinte. Dans l'affirmative, la fin de la FIFO n'est pas atteinte, et, au cours d'un test 213, on détermine : si le pointeur d'écriture pointe vers la page suivante de la FIFO ; ou si la page suivante a été complètement écrite mais non lue. Ce test est justifié par le fait que la taille peut avoir été augmentée sans qu'aucune écriture n'ait encore été effectuée dans la page nouvellement ajoutée. Dans ce cas, le pointeur de lecture PtRi devra pointer sur la première page de la FIFO et non sur la page suivant immédiatement la page venant d'être lue. Si le résultat du test 213 est négatif (signifiant que la dernière page écrite de la FIFO vient d'être lue), la valeur de l'index courant est initialisée à une valeur nulle (correspondant à une boucle de retour à la première page de la FIFO) et la valeur a priori du pointeur de lecture est mise à jour avec la valeur de l'index courant et un offset nul (première page de la FIFO) au cours d'une étape 215. Ensuite, l'étape 219 de mise àjour du registre 50 PtR est réitérée. Si le résultat du test 213 est positif (signifiant que la page suivante de la FIFO n'est pas la dernière page écrite), au cours d'un test 214, on détermine : - si l'index courant est égal au contenu du registre 30 de taille de la FIFO diminuée d'une unité ; et si une requête d'accroissement de la taille de la FIFO a été effectuée (lors d'une opération décrite en regard de la figure 7) et a besoin d'être acquittée. Si le résultat du test 214 est négatif (la dernière page écrite n'est pas atteinte ou il n'y a pas de requête d'accroissement de la taille de la FIFO), l'étape 219 est réitérée pour affecter la valeur a priori de pointeur de lecture au registre PtRi. Si le résultat du test 214 est positif (la dernière page écrite est atteinte et il y a une requête d'accroissement de la taille de la FIFO), un événement de type acquittement de page ajoutée (associé au pointeur PtRi) est généré (un signal Il-buff added associé au pointeur PtRi est affecté d'une valeur égale à 1) au cours d'une étape 216 pour informer l'émetteur de la requête d'accroissement de la taille de la FIFO que la dernière page additionnée de la FIFO est en cours de lecture pour la première fois par le pointeur PtRi. Ensuite, au cours d'une étape 219, le registre PtRi est mis àjour avec la valeur de l'index courant et un offset nul. Si au cours du test 208, la valeur de l'index courant est supérieure ou égale à la valeur de taille, au cours d'un test 209 on détermine si le pointeur d'écriture pointe vers la page suivante de la FIFO ou si la page suivante a été complètement écrite mais non lue (c'est-à-dire si la table de statut indique que le statut (associé au pointeur PtRi) de la page est égal à 1). Ce test est justifié par le fait que la taille peut avoir été diminuée alors qu'une écriture a été effectuée dans la page suivante effacée. Dans ce cas, le pointeur de lecture PtRi devra pointer sur la page suivant immédiatement la page venant d'être lue et non sur la première page de la FIFO. Si le résultat du test 209 est négatif (signifiant que la dernière page de la FIFO a été atteinte), un test 210 optionnel est effectué pour déterminer si une requête ayant ordonné la diminution de la taille de la FIFO a besoin d'être acquittée. Si le résultat du test 210 est positif, au cours d'une étape 211, un événement d'acquittement associé au pointeur PtRi est mis en ouvre (un signal - ff cancelled associé au pointeur PtRi est affecté d'une valeur égale à 1) pour Il but informer l'émetteur de la prise en compte de la requête de diminution de la taille de la FIFO par le pointeur PtRi. Suite à l'étape 211 ou lorsque le résultat du test 210 est négatif, au cours d'une étape 212, la valeur de l'index courant est initialisée à une valeur nulle (correspondant à la première page de la FIFO). Suite à l'étape 212 ou lorsque le résultat du test 209 est positif, au cours d'une étape 219, le registre PtRi est mis à jour avec a valeur d'index courant et un offset nul. La figure 7 décrit la manière dont sont implantées les requêtes optionnelles de modification de taille d'une FIFO et les flux de données d'acquittement. Au cours d'une étape 300, une instantiation initiale de FIFO est effectuée. Au cours d'une étape 301, les signaux indiquant une requête de modification de taille de type soit accroissement size-increased ou diminution sizcdecreasedjeq de la taille de la FIFO sont initialisés à une valeur nulle. Ensuite, au cours d'un test 302, le module de contrôle 107 vérifie si une diminution de taille de FIFO a été requise (notamment lors de l'étape 503 décrite en regard de la figure 4) en examinant si le registre 30 de taille a été modifié et contient une valeur plus petite que la valeur précédente. Dans l'affirmative, au cours d'une étape 306, une requête de réduction de taille est notifiée en affectant une valeur égale à 1 au signal size-decreased-req. Ensuite, au cours d'une étape 307, le module de contrôle 107 attend que qu'un évènement d'acquittement correspondant IT buff cancelled soit activé au moins une fois par chacun de pointeurs de lecture PtRO, PtRl et PtR2 lors de l'étape 211 illustrée en regard de la figure 6. Lorsque l'événement IT buff cancelled est activé, l'étape 301 est réitérée. Si le résultat du test 302 est négatif, au cours d'un test 303, le module de contrôle 107 vérifie si une augmentation de taille de FIFO a été requise (notamment lors de l'étape 505 décrite en regard de la figure 4) en examinant si le registre 30 de taille a été modifié et contient une valeur plus grande que la valeur précédente. Dans l'affirmative, au cours d'une étape 304, une requête d'augmentation de taille est notifiée en affectant une valeur égale à 1 au signal size-increased-req. Ensuite, au cours d'une étape 305, le module de contrôle 107 attend que qu'un évènement d'acquittement correspondant IT buff added soit activé au moins une fois par chacun de pointeurs de lecture PtRO, PtRl et PtR2 lors de l'étape 216 illustrée en regard de la figure 6. Lorsque l'événement IT buff added est activé ou après un résultat négatif du test 303, l'étape 301 est réitérée. La figure 8 illustre un algorithme d'initialisation d'un nouveau pointeur de lecture PtR~num d'une FIFO 1 telle qu'illustrée en figure 2. Au cours d'une étape 400, la FIFO 1 est initialisée. Ensuite, au cours d'un test 401, le module de contrôle 107 vérifie si un nouveau pointeur de lecture est requis, c'est-à-dire si un nouveau destinataire requiert l'envoi des données stockées dans la FIFO 1. On note qu'un signal de contrôle 1394pkgap géré par le module écrivant dans la FIFO vaut 1. Ce signal vaut 1 lorsque le mot écrit correspond à un début de paquet IEEE1494. En effet, les premiers paquets ultérieurement commutés sur le réseau IEEE 1355 doivent pour la première lecture être alignés sur un paquet IEEE 1394. Dans la négative, l'étape 401 est réitérée. Dans l'affirmative, au cours d'un test 402, le module de contrôle 107 vérifie si le pointeur d'écriture PtRW pointe sur le début d'un paquet, par exemple de type IEEE1394. Si le résultat du test 402 est négatif, le test 402 est réitéré. Si le résultat du test 402 est positif, au cours d'une étape 403, un nouveau pointeur de lecture PtR~num est créée (on réserve notamment l'espace nécessaire) avec les registres et tables nécessaires, associés à PtR~num et à la FIFO 1, notamment, les registres et tables décrits en regard de la figure 3 : - un registre PtR~num de pointeurs en lecture ; - une table de statuts de page associée àPtR~num ; et - un registre de seuil de pointeur de lecture Threshold PtRnum (ou Threshold (PtMum, fifo~number) où fifo~number représente un identifiant de la FIFO 1). Chacun de ces registres ou tables est initialisé. Ainsi, au cours de l'étape 403, le registre PtR~num de pointeurs en lecture est affectée d'une valeur égale au pointeur PtR d'écriture de la FIFO 1. La table de statuts de page associée à PtR~num est initialisée avec des statuts nuls indiquant que les pages de la FIFO ne contiennent pas de données écrites, destinées au destinataire associé au pointeur nouvellement créé PtR~num. Ensuite, au cours d'une étape 404, le seuil de pointeur de lecture Threshold (PtR~num, fifo~number) est initialisé avec une valeur qui est la somme (modulo la taille de la FIFO 1 mémorisée dans le registre 30) : de l'adresse du premier mot à lire (pointé par le pointeur PtR~num égal àPtRW) ; et du seuil de la FIFO 1 mémorisé dans le registre 60. Puis, l'étape 401 est réitérée. La figure 9 décrit l'algorithme d'autorisation de lecture utilisé à l'initialisation (après la création d'un pointeur PtR~num associé à la FIFO 1 telle que décrite en regard de la figure 8) permettant la génération d'un événement de type seuil indiquant que la FIFO 1 a atteint une valeur prédéterminée de données écrites et que les opérations de lecture de la FIFO 1, associées au pointeur PtR~num peuvent commencer. On note que pour des applications de type vidéo, il est nécessaire que la FIFO contienne déjà des données avant de commencer la lecture afin d'assurer une fluidité dans la lecture qui ne dépend pas de la gigue. Selon une variante non représentée, il n'est pas nécessaire d'attendre pour commencer la lecture, ce qui correspond à une valeur de seuil égale à un (selon cette variante, dès qu'une donnée est écrite, la lecture peut commencer). L'algorithme d'autorisation de lecture est initialisé au cours d'une étape 600 à la suite de la création d'une pointeur de lecture PtR~num associé à la FIFO 1. Puis, au cours d'un test 601, le module de contrôle 107 vérifie si la FIFO 1 est accédée en écriture. Si le résultat du test 601 est négatif, le test 601 est réitéré (cela signifie qu'on attend un accès en écriture pour passer à l'étape suivante) Si le résultat du test 601 est positif, au cours d'un test 602, le module de contrôle 107 compare le pointeur d'écriture PtW de la FIFO 1 au seuil de pointeur de lecture Threshold ('tRnum, fibnumber), initialisé au cours de l'étape 404. * Lorsque le pointeur d'écriture PtW de la FIFO 1 n'a pas atteint la valeur seuil de pointeur de lecture Threshold (PtR~num, fifo~number), le test 602 est réitéré. Lorsque le pointeur d'écriture PtW de la FIFO 1 a atteint la valeur du seuil de pointeur de lecture Threshold (PtR~num, fifo~number), au cours d'une étape 603, le module de contrôle 107 génère un événement de type seuil atteint associé au pointeur de lecture PtR~num et à la FIFO 1 qui permet la lecture des données destinées au destinataire associé àPtR~num, dans la FIFO 1. Selon, une variante non représentée, le seuil de pointeur de lecture est remplacé par un compteur initialisé à 0 qui est incrémenté d'une unité à chaque écriture, et on permet la lecture des données destinées au destinataire associé à PtR~num, dans la FIFO 1 lorsque, au cours d'un test (remplaçant le test 602), le compteur atteint la valeur du seuil de FIFO contenu dans le registre 60. Cette dernière étape de la variante, selon une autre variante, prend en compte non pas une valeur du seuil de FIFO commune à tous les pointeurs mais une valeur spécifique propre à chaque pointeur. Ainsi, selon cette autre variante, on permet la lecture des données destinées au destinataire associé à PtR~num, dans la FIFO 1 lorsque, au cours d'un test (remplaçant le test 602), le compteur atteint la valeur du seuil de FIFO propre au pointeur PtR~num. Bien entendu, l'invention n'est pas limitée aux exemples de réalisation mentionnés ci-dessus. En particulier, l'homme du métier pourra apporter toute variante dans le type de FIFO utilisée pour mettre en ouvre l'émission des données vers plusieurs destinataires. Ces FIFOs pourront notamment être de taille fixe ou variable. On note que l'invention ne se limite pas aux applications domestiques et/ou basées sur l'utilisation d'interface IEEE1355 ou IEEE1394 mais s'étend à tout type d'application où une ou plusieurs FIFOs de taille variable sont mises en ouvre. On notera que l'invention ne se limite pas à une implantation purement matérielle mais qu'elle peut aussi être mise en ouvre sous la forme d'une séquence d'instructions d'un programme informatique ou toute forme mixant une partie matérielle et une partie logicielle. Dans le cas où l'invention est implantée partiellement ou totalement sous forme logicielle, la séquence d'instructions correspondante pourra être stockée dans un moyen de stockage amovible (tel que par exemple une disquette, un CD-ROM ou un DVD-ROM) ou non, ce moyen de stockage étant lisible partiellement ou totalement par un ordinateur ou un microprocesseur. REVENDICATIONS 1. Procédé de gestion d'une mémoire FIFO (1) comprenant un ensemble de cases mémoire, dont l'accès en écriture est contrôlé à l'aide d'un pointeur d'écriture, chacune desdites données étant susceptible d'être lue par au moins deux destinataires, caractérisé en ce qu'on associe un pointeur de lecture (PtRi) de ladite FIFO à chacun desdits destinataires. 2. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre : une étape de requête de lecture par un destinataire demandeur ; - une étape de lecture d'une donnée écrite dans ladite FIFO pointée par ledit pointeur de lecture associé audit destinataire demandeur après réception de ladite requête ; et - une étape de mise à jour dudit pointeur de lecture associé audit destinataire demandeur. 3. Procédé selon l'une quelconque des revendications 1 et 2, caractérisé en ce que ladite FIFO est mise en ouvre dans une mémoire à ports multiples (106) permettant la lecture simultanée de données distinctes par au moins deux desdits destinataires. 4. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce qu'il comprend une étape de modification dynamique (211,216) de la taille de ladite FIFO. 5. Procédé selon la revendication 4, caractérisé en ce que ladite étape de modification de la taille de ladite FIFO est effectuée par un retrait (211) ou un ajout (216) d'un bloc d'au moins une case mémoire, ledit bloc étant placé à un emplacement déterminé de ladite FIFO, indépendant de la position desdits pointeurs de lecture et d'écriture de ladite FIFO. 6. Procédé selon l'une quelconque des revendications 1 à 5, caractérisé en ce qu'il comprend une étape d'affectation d'un canal de communication à chacun desdits destinataires. 7. Application du procédé selon l'une quelconque des revendications 1 à 6 caractérisé en ce qu'elle est de type appartenant au groupe comprenant : - des applications vidéo ; - des applications audio ; - des applications du bus IEEE 1394 ; des applications d'un réseau de type IEEE 1355 ; et - des applications d'interfaçage entre au moins un réseau de type IEEE 1355 et au moins un bus IEEE 1394. 8. Dispositif de gestion d'une mémoire FIFO (1) comprenant un ensemble de cases mémoire, dont l'accès en écriture est contrôlé à l'aide d'un pointeur d'écriture, chacune desdites données étant susceptible d'être lue par au moins deux destinataires, caractérisé en ce qu'il comprend des moyens de contrôle d'un pointeur de lecture (PtRi) de ladite FIFO pour chacun desdits destinataires. 9. Dispositif selon la revendication 8, caractérisé en ce qu'il comprend en outre : des moyens de requête de lecture par un destinataire demandeur ; - des moyens de lecture d'une donnée écrite dans ladite FIFO pointée par ledit pointeur de lecture associé audit destinataire demandeur après réception de ladite requête ; et - des moyens de mise à jour dudit pointeur de lecture associé audit destinataire demandeur. 10. Dispositif selon l'une quelconque des revendications 8 et 9, caractérisé en ce que ladite FIFO est mise en ouvre dans une mémoire à ports multiples permettant la lecture simultanée de données distinctes par au moins deux desdits destinataires. 11. Dispositif selon l'une quelconque des revendications 8 à 10, caractérisé en ce qu'il comprend des moyens de modification dynamique de la taille de ladite FIFO. 12. Dispositif selon la revendication 11, caractérisé en ce que lesdits moyens de modification de la taille de ladite FIFO mettent en cavre un retrait ou un ajout d'un bloc d'au moins une case mémoire, ledit bloc étant placé à un emplacement déterminé de ladite FIFO, indépendant de la position desdits pointeurs de lecture et d'écriture de ladite FIFO. 13. Dispositif selon l'une quelconque des revendications 8 à 12, caractérisé en ce qu'il comprend des moyens d'affectation d'un canal de communication à chacun desdits destinataires. 14. Programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé de gestion d'une mémoire selon l'une quelconque des revendications 1 à 6 lorsque ledit programme est exécuté sur un ordinateur. 15. Produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé de gestion d'une mémoire comprenant un ensemble de cases mémoire, dont l'accès en écriture est contrôlé à l'aide d'un pointeur d'écriture, chacune desdites données étant susceptible d'être lue par au moins deux destinataires, ledit programme étant enregistré sur un support utilisable dans un ordinateur, comprenant des moyens de programmation lisibles par ordinateur pour effectuer une étape d'association d'un pointeur de lecture de ladite FIFO à chacun desdits destinataires.