Brevet FR3034542A1 — publié le 20161007

B15065 - XPL-05600 1 SYSTEME,-PROCEDE ET DISPOSITIF DE MEMOIRE-DE PAQUETS POUR EMPECHER LES RUPTURES D'APPROVISIONNEMENT Domaine de l'invention La présente invention concerne un système de mémoire de paquets. Plus particulièrement, la présente invention concerne la 5 prévention des ruptures d'approvisionnement dans un système de mémoire de paquets. Exposé de l'art antérieur Un dispositif de traitement de paquets, comme une micro-puce de commutateur, a en général besoin de mettre en tampon les 10 paquets dans une mémoire tampon de paquets (PM) comportant un ou plusieurs bancs pendant que le dispositif les traite. La taille de certains paquets (par exemple les paquets Ethernet) n'est pas connue à l'avance, de sorte que le dispositif doit commencer à mémoriser un paquet dans le tampon de paquets sans connaître la 15 taille du paquet. En outre, les paquets arrivent au niveau du dispositif d'une manière entrelacée, de sorte que le dispositif mémorise simultanément plusieurs paquets entrants dans le tampon de paquets. La solution de l'état de l'art pour mémoriser un paquet dans la mémoire de paquets du dispositif consiste à 20 affecter de multiples tronçons (appelés pages) de mémoire de paquets à chaque paquet, plutôt qu'un seul gros tronçon. Avec ce 3034542 815065 - XPL-05600 2 processus, le paquet n'est pas mémorisé de façon consécutive dans les bancs de la mémoire de paquets, mais est dispersé dans une ou plusieurs pages dans de multiples bancs de la mémoire de paquets. Il en résulte qu'une liste liée de toutes les pages (et par conséquent des bancs) qu'un paquet particulier utilise doit être maintenue dans le commutateur ; cette liste liée est ensuite parcourue pour localiser et lire le paquet à partir de la mémoire de paquets pour transmission. Dans un type de trafic de paquets connu sous le nom de trafic en diffusion, on demande à tous les ports de sortie du dispositif de fournir le même paquet de données. De façon similaire, dans un type de trafic de paquets connu sous le nom de trafic en multidiffusion, on demande à plusieurs (mais pas à la totalité) des ports de sortie du dispositif de fournir le même paquet de données. Par conséquent, pour un tel trafic la totalité de ces ports de sortie va demander à la mémoire de paquets le même paquet de données. Cela peut créer des problèmes de performances dans le dispositif puisque cela provoque un grand nombre de requêtes de ports de sortie pour les mêmes données pratiquement en même temps. En particulier, lorsque cela arrive souvent, un petit nombre de bancs de la mémoire de paquets va devoir servir toutes les requêtes pendant que les autres bancs restent au repos. Il en résulte que, alors que certains des ports de sortie pourraient obtenir les données rapidement, d'autres pourraient devoir attendre un temps relativement long pour obtenir les données puisqu'un petit sous-ensemble de bancs doit sérialiser toutes les requêtes provenant des ports de sortie en raison du petit nombre usuel de ports de sortie par banc. Ce temps d'attente des données a deux conséquences non souhaitables. Si les données correspondent au début du paquet, la transmission du paquet complet va être retardée. Cela implique une dégradation de la bande passante du port puisqu'il attend pour envoyer des données alors qu'il pourrait effectivement envoyer des données. Si les données correspondent au milieu du paquet et certaines de S données du paquet ont déjà été transmises, le port 3034542 315065 - XPL-05600 3 de sortie n'arrive pas à transmettre au débit demandé et risque de subir une erreur de rupture d'approvisionnement. Cela est plus grave que la dégradation de performances décrite précédemment puisque le paquet est transmis avec une erreur et que le récepteur 5 devra supprimer le paquet, provoquant dans certains cas une retransmission coûteuse du paquet Le deuxième cas décrit ci-dessus est plus courant lorsque le commutateur travaille dans un mode à anticipation. Dans ce mode, tous les ports de sortie qui doivent transmettre le paquet vont le faire pratiquement en même 10 temps puisqu'ils reçoivent l'instruction de transmettre le paquet dès que possible sans attendre que le paquet complet soit reçu. Bref résumé de l'invention L'invention concerne un système de mémoire de paquets pour fournir sélectivement des paquets reçus sur un ou plusieurs 15 ports de sortie. Le système de mémoire de paquets comprend un contrôleur pour contrôler les ports de sortie. Spécifiquement, pour des paquets de trafic en multidiffusion ou en diffusion qui doivent être fournis à partir d'une pluralité des ports, le contrôleur désigne un ou plusieurs ports lecteurs qui lisent les 20 données de paquets à partir d'une mémoire de paquets de sorte que le reste des ports peut simplement écouter les données de paquets lues sans réaliser d'opération de lecture. Un premier aspect concerne un système de mémoire de paquets, le système comprenant une mémoire de paquets non 25 transitoire lisible par un ordinateur comprenant un ou plusieurs bancs de mémoire pour mémoriser des données de paquet d'un paquet reçu dans le système, les données de paquet mémorisées dans les bancs de mémoire étant organisées en une ou plusieurs pages mappées vers les bancs de mémoire, une pluralité de ports de 30 sortie couplés à la mémoire de paquets et agencés pour lire sélectivement les données de paquet dans la mémoire de paquets et fournir les données de paquet du système et un contrôleur couplé à la pluralité de ports de sortie pour contrôler lequel des ports fournit les données de paquet, dans lequel, si les données de 35 paquet doivent être fournies à partir de deux ou plusieurs des 3034542 B15065 - XPL-05600 4 ports, le contrôleur ordonne à moins que la totalité desdits deux ou plusieurs ports de faire en sorte que les données de paquet soit lues à partir de la mémoire de paquets et transmises à la totalité desdits deux ou plusieurs ports. Dans certains modes de 5 réalisation, la pluralité de ports de sortie et le contrôleur fonctionnent dans un mode à anticipation dans lequel chaque port de la pluralité de ports de sortie coumence à fournir des données de paquet avant que la totalité des données de paquet ait été reçue. Dans certains modes de réalisation, le contrôleur ordonne 10 à la totalité desdits deux ou plusieurs ports d'écouter et fournir les données de paquet après que les données de paquet ont été lues dans la mémoire de paquets sur la base d'un identificateur de données de paquet que le contrôleur envoie à la totalité des deux ou plusieurs ports. Dans certains modes de réalisation, chacun 15 desdits moins de la totalité des deux ou plusieurs ports provoque la lecture d'une partie différente des données de paquet dans la mémoire de paquets. Dans certains modes de réalisation, la partie différente des données de paquet de chacun desdits moins de la totalité des deux ou plusieurs ports est déterminée par le 20 contrôleur sur la base de la façon dont les données de paquet sont réparties entre les pages. Dans certains modes de réalisation, une quantité desdits moins de la totalité des deux ou plusieurs ports est déterminée par le contrôleur sur la base d'une quantité de pages sur lesquelles les données de paquet sont mémorisées. 25 Dans certains modes de réalisation, le contrôleur sélectionne lesdits moins de la totalité des deux ou plusieurs ports sur la base d'un niveau d'encombrement de chacun desdits deux ou plusieurs ports. Dans certains modes de réalisation, chacun de la pluralité de ports de sortie comprend un tampon qui mémorise une 30 liste identifiant un ou plusieurs paquets qui ont été affectés par le contrôleur pour être fournis par le port, mais qui n'ont pas encore été fournis par le port, et en outre dans lequel le niveau d'encombrement de chacun desdits deux ou plusieurs ports est basé sur une quantité courante de paquets identifiée par la 35 liste du tampon du port. Dans certains modes de réalisation, 3034542 B15065 - XPL-05600 5 lesdits moins que la totalité des deux ou plusieurs ports est exactement l'un desdits deux ou plusieurs ports, qui provoque la lecture de toutes les données de paquet à partir de la mémoire de paquets. Dans certains modes de réalisation, lesdits moins que la 5 totalité des deux ou plusieurs ports sont exactement un premier port et un deuxième port desdits deux ou plusieurs ports, et en outre le contrôleur commande le premier port pour faire en sorte qu'une première portion des données de paquet soit lue et commande le deuxième port pour faire en sorte qu'un reste des données de 10 paquet, qui n'a pas été inclus dans la première portion, soit lu. Dans certains modes de réalisation, la première portion est mémorisée sur une ou plusieurs premières pages des pages mappées sur les bancs de mémoire et comprend l'en-tête des données de paquet, et en outre le reste des données de paquet est mémorisé 15 sur une ou plusieurs deuxièmes pages des pages mappées vers les bancs de mémoire et comprend le reste des données de paquet non inclus dans les premières pages. Un deuxième aspect concerne un contrôleur mémorisé sur un support non transitoire lisible par un ordinateur et couplé à 20 une pluralité de ports de sortie qui sélectivement lisent et fournissent des données de paquet d'un paquet à partir d'une mémoire de paquets, dans lequel la mémoire de paquets comporte un ou plusieurs bancs mémoire mémorisant les données de paquets, et en outre dans lequel le contrôleur est agencé pour, si les données 25 de paquet doivent être fournies à partir de deux ou plusieurs des ports, ordonner à moins que la totalité desdits deux ou plusieurs ports de faire en sorte que les données de paquet soient lues dans la mémoire de paquets et transmises à la totalité desdits deux ou plusieurs ports. Dans certains modes de réalisation, la pluralité 30 de ports de sortie et le contrôleur fonctionnent dans un mode à anticipation dans lequel chacun de la pluralité des ports de sortie commence à fournir des données de paquet avant que la totalité du paquet ait été reçue. Dans certains modes de réalisation, le contrôleur est agencé pour commander la totalité 35 desdits deux ou plusieurs ports pour qu'ils écoutent et 3034542 B15065 - XPL-05600 6 fournissent les données de paquet après que les données de paquet ont été lues dans la mémoire de paquets sur la base d'un identificateur de données de paquet que le contrôleur envoie à tous les ports desdits deux ou plusieurs ports. Dans certains 5 modes de réalisation, chacun desdits moins que la totalité des deux ou plusieurs ports provoque la lecture d'une partie différente des données de paquet dans la mémoire de paquets. Dans certains modes de réalisation, les données de paquet mémorisées dans les bancs de mémoire sont organisées selon une ou plusieurs 10 pages mappées vers les bancs de mémoire, et en outre la partie différente des données de paquet de chacun desdits moins que la totalité des deux ou plusieurs ports est déterminée par le contrôleur sur la base de la façon dont les données de paquet sont réparties entre les pages. Dans certains modes de réalisation, le 15 contrôleur est agencé pour déterminer une quantité desdits moins que la totalité des deux ou plusieurs ports sur la base d'une quantité de pages sur lesquelles les données de paquet sont mémorisées. Dans certains modes de réalisation, le contrôleur est agencé pour sélectionner lesdits moins que la totalité des deux 20 ou plusieurs ports sur la base d'un niveau d'encombrement de chacun desdits deux ou plusieurs ports. Dans certains modes de réalisation, chaque port de la pluralité des ports de sortie comprend un tampon qui mémorise une liste identifiant un ou plusieurs paquets qui ont été affectés par le contrôleur pour être 25 fournis par le port, mais qui n'ont pas encore été fournis par le port, et en outre le niveau d'encombrement de chacun desdits deux ou plusieurs ports est basé sur une quantité courante de paquets identifiée par la liste du tampon du port. Dans certains modes de réalisation, lesdits moins que la totalité des deux ou plusieurs 30 ports sont exactement l'un desdits deux ou plusieurs ports, qui provoque la lecture de toutes les données de paquet dans la mémoire de paquets. Dans certains modes de réalisation, lesdits moins que la totalité des deux ou plusieurs ports sont exactement un premier port et un deuxième port desdits deux ou plusieurs ports, et en 35 outre le contrôleur est agencé pour commander le premier port pour 3034542 B15065 - XPL-05600 7 qu'il provoque la lecture d'une première portion des données de paquet et le deuxième port pour qu'il provoque la lecture d'un reste des données de paquet qui n'a pas été inclus dans la première portion. Dans certains modes de réalisation, la première portion 5 est mémorisée sur une ou plusieurs premières pages des pages mappées vers les bancs de mémoire et comprend l'en-tête des données de paquet, et en outre le reste des données de paquet est mémorisé sur une ou plusieurs deuxièmes pages des pages mappées vers les bancs de mémoire et comprend le reste des données de 10 paquet qui n'est pas inclus dans les premières pages. Un troisième aspect concerne un procédé d'actionnement d'un système de mémoire de paquets. Le procédé comprend la mémorisation de données de paquet d'un paquet sur un ou plusieurs bancs de mémoire d'une mémoire de paquets non transitoire lisible 15 par un ordinateur, la mémorisation des données de paquet dans les bancs de mémoire comprenant le fait d'organiser les données de paquet mémorisées sur les bancs de mémoire selon une ou plusieurs pages mappées vers les bancs de mémoire, si les données de paquet doivent être fournies à partir de deux ou plusieurs ports d'une 20 pluralité de ports de sortie couplés à la mémoire de paquets, de commander moins de ports que la totalité des deux ou plusieurs ports pour provoquer la lecture des données de paquet à partir de la mémoire de paquets et leur transmission à tous les ports desdits deux ou plusieurs ports avec un contrôleur couplé aux ports de 25 sortie et de fournir des données de paquet à partir de chacun desdits deux ou plusieurs ports avec lesdits deux ou plusieurs ports. Dans certains modes de réalisation, la pluralité de ports de sortie et le contrôleur _fonctionnent dans un mode à anticipation dans lequel la fourniture des données de paquet par 30 chacun desdits deux ou plusieurs ports comprend le fait de commencer à fournir au moins une portion des données de paquet avant que la totalité du paquet ait été reçue. Dans certains modes de réalisation, le procédé comprend en outre le fait d'ordonner à tous les ports desdits deux ou plusieurs ports d'écouter et de 35 fournir les données de paquet après que les données de paquet ont 3034542 B15065 - XPL-05600 8 été lues dans la mémoire de paquets avec le contrôleur sur la base d'un identificateur de données de paquet que le contrôleur envoie à tous les ports desdits deux ou plusieurs ports. Dans certains modes de réalisation, chacun desdits moins que la totalité des 5 deux ou plusieurs ports provoque la lecture d'une partie différente des données de paquet dans la mémoire de paquets. Dans certains modes de réalisation, le procédé comprend en outre le fait de déterminer la partie différente des données de paquet de chacun des ports desdits moins que la totalité desdits deux ou 10 plusieurs ports avec le contrôleur sur la base de la façon dont les données de paquet sont réparties entre les pages. Dans certains modes de réalisation, le procédé comprend en outre la détermination d'une quantité desdits moins que la totalité des deux ou plusieurs ports avec le contrôleur sur la base d'une 15 quantité de pages sur lesquelles les données de paquet sont mémorisées. Dans certains modes de réalisation, le procédé comprend en outre la sélection desdits moins que la totalité des deux ou plusieurs ports avec le contrôleur sur la base d'un niveau d'encombrement de chacun desdits deux ou plusieurs ports. Dans 20 certains modes de réalisation, chaque port de la pluralité de ports de sortie comprend un tampon qui mémorise une liste identifiant un ou plusieurs paquets qui ont été affectés par le contrôleur pour être fournis par le port, mais qui n'ont pas encore été fournis par le port, et en outre dans lequel le niveau 25 d'encombrement de chacun desdits deux ou plusieurs ports est basé sur une quantité courante de paquets identifiée par la liste du tampon du port. Dans certains modes de réalisation, lesdits moins que la totalité des deux ou plusieurs ports sont exactement l'un desdits deux ou plusieurs ports, qui provoque la lecture des 30 données de paquet dans la mémoire de paquets. Dans certains modes de réalisation, lesdits moins que la totalité des deux ou plusieurs ports sont exactement un premier port et un deuxième port desdits deux ou plusieurs ports, comprenant en outre le fait d'ordonner au premier port de provoquer la lecture avec le 35 contrôleur d'une première portion des données de paquet et au 3034542 B15065 - XPL-05600 9 deuxième port de provoquer la lecture d'un reste des données de paquet qui n'était pas inclus dans la première portion. Dans certains modes de réalisation, la première portion est mémorisée sur une ou plusieurs premières pages des pages mappées vers les 5 bancs de mémoire et comprend l'en-tête des données de paquet, et en outre le reste des données de paquet est mémorisé sur une ou plusieurs deuxièmes pages des pages mappées en mémoire et comprend le reste des données de paquet qui n'est pas inclus dans les premières pages. 10 Brève description des dessins La figure 1 illustre un système de mémoire de paquets selon certains modes de réalisation. La figure 2 illustre une liste de liaisons de pages pour un paquet et un exemple de mappage de la liste de liaisons vers 15 les bancs de mémoire de la mémoire de paquets selon certains modes de réalisation. La figure 3 illustre un procédé pour empêcher une rupture d'approvisionnement dans un système de mémoire de paquets selon certains modes de réalisation. 20 Description détaillée de l'invention Dans la description qui suit, de nombreux détails sont présentés dans un but d'explication. Toutefois, l'homme de l'art remarquera que l'invention peut être mise en pratique sans utiliser ces détails spécifiques. Ainsi, la présente invention 25 n'est pas destinée à être limitée aux modes de réalisation présentés mais doit se voir accorder la portée la plus large en accord avec les principes et les caractéristiques qu'on décrit ici. Des modes de réalisation concernent un système de 30 mémoire de paquets destiné à fournir sélectivement des paquets reçus sur un ou plusieurs ports de sortie. Le système de mémoire de paquets comprend un contrôleur pour contrôler les ports de sortie. En particulier, pour des paquets de trafic de multidiffusion ou de diffusion qui doivent être fournis à partir 35 de plusieurs ports, le contrôleur désigne un ou plusieurs ports 3034542 B15065 - XPL-05600 10 lecteurs qui lisent les données de paquet à partir d'une mémoire de paquets de telle sorte que les ports restants peuvent simplement écouter les données de paquet lues sans réaliser d'opération de lecture. Il en résulte qu'une tentative 5 essentiellement simultanée pour accéder aux paquets dans la mémoire de paquets par la totalité des ports de sortie est empêchée, ce qui augmente l'efficacité du système. La figure 1 illustre un système de mémoire de paquets 100 sur un dispositif de traitement de paquets 102 selon certains 10 modes de réalisation. Comme cela est représenté en figure 1, le système de mémoire de paquets 100 comprend un ou plusieurs ports de sortie 106 couplés à une mémoire de paquets 104 et à un contrôleur 108. La mémoire de paquets 104 comprend un ou plusieurs bancs de mémoire 110 dont chacun comporte un ou plusieurs ports 15 de lecture et/ou d'écriture (non représentés) qui permettent de lire ou d'écrire des données dans les bancs 110 à chaque cycle. Les bancs 110 sont couplés à chacun des ports 106 de telle sorte que chacun des bancs 110 peut fournir des données qui sont reçues par un, par plusieurs ou par tous les ports 106. Chacun des ports 20 106 comprend un tampon de port 116 et peut faire partie d'un élément d'accès 112 à la mémoire de paquets (par exemple un bloc d'accès direct en mémoire), l'élément d'accès 112 à la mémoire de paquets pouvant en outre comprendre un ou plusieurs éléments d'adresse de banc 114 couplés à chacun des ports 106 et à au moins 25 l'un des bancs 110. En particulier, l'élément 112 peut comprendre un élément d'adresse de banc 114 pour chacun des bancs 110. En variante, il peut y avoir plus ou moins d'éléments d'adresse de banc 114 par rapport au nombre de bancs 110. Il en résulte que chacun des ports 106 peut communiquer avec chacun des bancs 110 30 (par exemple y lire des données) par l'intermédiaire du ou des éléments d'adresse de banc associés et de l'élément d'accès 112 à la mémoire de paquets. Dans certains modes de réalisation, les éléments d'adresse de banc 114 sont des multiplexeurs d'adresses de lecture de banc (mux). Le contrôleur 108 peut réaliser toute 35 modification nécessaire du paquet, peut décider de là où il faut 3034542 B15065 - XPL-05600 11 envoyer le paquet, et réaliser toute gestion de trafic nécessaire. Le contrôleur 108 est couplé à chacun des ports 106 de sorte que le contrôleur 108 peut envoyer des données de commande et d'autres types de données sélectivement à un ou plusieurs des ports 106. 5 En outre, dans certains modes de réalisation, le contrôleur 108 peut surveiller le statut du tampon de port 116 d'un ou plusieurs des ports 106 et/ou recevoir des données de retour de ceux-ci. Le dispositif de traitement de paquets 102 peut être un circuit de traitement de paquets et/ou une micro-puce. Par 10 exemple, le dispositif 102 peut être une micro-puce de commutateur (par exemple un coimmtateur de fond de rack) pour un central de données, ou un autre type de circuit de traitement de paquets, ou un circuit intégré spécifique d'application. Dans certains modes de réalisation, le dispositif 102 est une micro-puce programmable 15 par un réseau définie par du logiciel, qui peut être programmée/personnalisée pour ajuster la façon avec laquelle les paquets sont traités. En variante, le dispositif 102 peut être d'un autre type de dispositif de traitement de paquets connu dans la technique. Les ports 106, le contrôleur 108 et les éléments 20 d'adresse 114 peuvent comprendre du matériel, du logiciel ou une combinaison de matériel et de logiciel, le logiciel étant mémorisé sur un support non transitoire lisible par un ordinateur du dispositif 102. La mémoire de paquets 104 peut comprendre un support non transitoire lisible par un ordinateur comme une 25 mémoire ternaire adressable par son contenu. En variante, la mémoire de paquets 104 peut comprendre d'autres types de mémoire connus dans la technique, ou une de leurs combinaisons. Le système 100 et/ou le dispositif 102 peuvent fonctionner dans un mode normal et dans un mode à anticipation. Dans le mode normal, le 30 système / dispositif attend qu'un paquet entier soit reçu avant de commencer à le fournir. Dans le mode à anticipation, le contrôleur 108 et/ou les ports de sortie 106 transmettent le paquet dès que possible sans attendre que le paquet entier ait été reçu. 3034542 B15065 - XPL-05600 12 La figure 2 illustre une liste de liaisons de pages 202 pour un paquet et un exemple de mappage de la liste de liaisons 202 vers les bancs de mémoire 110 de la mémoire de paquets 104 selon certains modes de réalisation. Comme cela est représenté en 5 figure 2, les données de paquet d'un paquet sont mémorisées dans une ou plusieurs pages 202 mappées vers les bancs 110 de la mémoire de paquets 104. En particulier, chacune des pages 202 peut représenter (ou être mappée vers) une ou plusieurs entrées d'une pluralité des bancs 110. Il en résulte que, lorsqu'un paquet ou 10 une portion de celui-ci est mémorisée dans une des pages 202, le paquet est mémorisé dans une pluralité d'emplacements non séquentiels répartis dans les bancs 110 se trouvant dans la mémoire de paquets 104 qui sont mappés vers cette page. Souvent un paquet va nécessiter plusieurs pages 202 pour mémoriser la 15 totalité du paquet. Cette liste de pages 202 est connue sous le nom de liste de liaisons et peut être utilisée comme carte ou liste de pointeurs, qui pointe vers les emplacements où le paquet est mémorisé dans les bancs 110 de la mémoire de paquets 104. En général, un premier ensemble 202a d'une ou plusieurs pages de la 20 liste de liaisons 202 va inclure l'en-tête du paquet alors qu'un deuxième ensemble 202b d'une ou plusieurs pages de la liste de liaisons 202 va mémoriser le corps du paquet. En particulier, les pages d'en-tête contiennent les données d'en-tête que le bloc de commande traite et les pages de corps contiennent le corps du 25 paquet qui n'est en général pas altéré par le dispositif 102. Il en résulte que les pages 202 permettent de répartir les données de paquet de chaque paquet à travers les bancs 110 de sorte que la lecture ou l'écriture des données de paquet dans les bancs 110 est plus efficace. 30 Bien que, comme cela est représenté en figure 2, les pages d'en-tête 202a soient mappées sur deux bancs 110 et les pages de corps 202 soient mappées sur trois bancs 110, chacune des pages 202 peut être mappée sur plus ou moins de bancs. Par exemple, une page peut être mappée vers des entrées non 35 séquentielles d'un seul banc 110 ou vers des entrées d'un nombre 3034542 B15065 - XPL-05600 13 quelconque d'une pluralité de bancs 110. En variante, une page 202 peut être mappée vers des entrées séqùentielles d'un seul banc 110. Un paquet comporte un descripteur ou jeton associé qui dans sa forme basique peut être un pointeur vers la première page de 5 la liste de liaisons de pages 202 mémorisant le paquet. Avec ce pointeur initial, toutes les pages utilisées par le paquet peuvent être récupérées dans le même ordre que celui avec lequel elles ont été utilisées en parcourant la liste de liaisons 202 puisque chaque page successive comprend un pointeur vers l'emplacement de 10 la page suivante dans la liste 202. En fonctionnement, lorsque le dispositif/système 102/100 est dans le mode à anticipation, le contrôleur 108 détermine si un paquet est un paquet de trafic à envoi individuel destiné à être fourni par un seul port cible parmi les ports 106 15 ou bien un paquet de trafic de multidiffusion / diffusion destiné à être fourni par une pluralité de ports cibles parmi les ports 106. Si on détermine que le paquet est un paquet de multidiffusion / diffusion, au lieu de commander tous les ports 106 cibles pour tenter de lire les données de paquet du paquet dans la mémoire 20 104, le contrôleur 108 sélectionne et ordonne à seulement un sous- ensemble des ports 106 cibles de tenter de lire les données de paquet. Dans certains modes de'réalisation, le sous-ensemble est constitué d'un seul port 106 des ports 106 cibles de sorte que seul le port 106 sélectionné est commandé pour accéder à la 25 totalité des données de paquet dans la mémoire de paquets 104. En variante, le sous-ensemble peut être constitué de plusieurs (mais pas tous) des ports 106 cibles. Dans de tels modes de réalisation, les ports 106 sélectionnés peuvent chacun être commandé par le contrôleur 108 pour accéder à une portion différente des données 30 de paquet de sorte que c'est seulement après que tous les ports 106 ont émis leurs requêtes que toutes les données de paquet sont lues dans la mémoire de paquets 104. En particulier, les données de paquet peuvent être réparties et/ou allouées entre les sous-ensembles de ports dans un mode page par page de la liste de 35 liaisons 202 dans lequel chacun des sous-ensembles se voit 3034542 B15065 - XPL-05600 14 affecter une ou plusieurs pages de la liste de liaisons 202 associée au paquet. Par exemple, si le sous-ensemble est constitué de deux ports 106, le contrôleur 108 peut allouer les pages 202a mémorisant les données d'en-tête du paquet au premier port 106 du 5 sous-ensemble et les pages 202b mémorisant les données de corps (ou le reste) du paquet au deuxième port 106 du sous-ensemble. Dans certains modes de réalisation, le contrôleur 108 sélectionne ceux des ports et/ou le nombre de ports de la pluralité de ports 106 cibles qui sont inclus dans le sous-ensemble de façon 10 aléatoire ou selon un protocole de tour de rôle. En variante, le contrôleur 108 peut sélectionner ceux des ports et/ou le nombre de ports de la pluralité de ports 106 cibles qui sont inclus dans le sous-ensemble sur la base d'un niveau courant d'encombrement des ports 106 cibles. Par exemple, les ports 106 cibles ayant les 15 niveaux d'encombrement les plus faibles sont sélectionnés comme ports lecteurs pour former le sous-ensemble. En particulier, le contrôleur 108 peut surveiller, demander et/ou recevoir des informations de retour de chacun des ports 106 indiquant un niveau courant d'encombrement de trafic. Dans certains modes de 20 réalisation, le niveau d'encombrement de chaque port 106 est basé sur une quantité de paquets en attente qui ont été affectés par le contrôleur pour être fournis par le port, mais qui n'ont pas encore été fournis par le port comme cela est indiqué par les tampons de port 116 qui stockent les messages de commande ou les 25 jetons provenant du contrôleur 108 indiquant les données de paquet qui doivent être fournies par le port 106. Par exemple, les tampons de port 116 peuvent fonctionner selon un protocole du type premier entré, premier sorti, dans lequel des identificateurs (par exemple des descripteurs ou jetons) de paquets ou des données de paquet à 30 fournir sont reçus par le tampon 116 puis sont ensuite retirés du tampon 116 seulement lorsque le paquet associé ou les données de paquet associées ont été reçus et fournis par le port 106. Ainsi, la quantité d'identificateurs mémorisée dans le tampon 116 3034542 B15065 - XPL-05600 15 représente un niveau courant de travail en attente ou d'encombrement pour le port 106. En variante, le niveau d'encombrement peut être basé sur d'autres métriques et/ou facteurs. Dans certains modes de réalisation, le contrôleur 108 5 peut déterminer la quantité de ports (parmi les ports cibles) qui doivent être désignés comme étant le sous-ensemble de ports 106 lecteurs sur la base de la taille du paquet (par exemple du nombre de pages mémorisant le paquet, du nombre de multiplets), d'un nombre de types différents de données du paquet et/ou sur la base 10 du niveau d'encombrement courant des ports cibles 106. Par exemple, sur la base d'un niveau d'encombrement d'un premier port 106 sélectionné, le contrôleur 108 peut limiter le nombre de pages du paquet qui sont affectées au premier port 106 et peut déterminer qu'un ou plusieurs ports 106 additionnels sont nécessaires, la 15 même limitation de nombre de pages et/ou la même addition de ports 106 sélectionnés pouvant être réalisées pour chaque port 106 additionnel jusqu'à ce que la totalité des données de paquet ait été affectées à un port cible 106 formant ainsi le sous-ensemble. En d'autres termes, plus le niveau d'encombrement est élevé plus 20 le nombre de pages et/ou la quantité de données de paquet qu'on affectera à un port cible 106 sélectionné sera faible, et si la totalité des données ne peut pas être allouée entre les ports 106 courants sélectionnés en raison des contraintes d'encombrement, un ou plusieurs ports 106 peuvent être ajoutés comme ports 25 lecteurs 106 sélectionnés. Une fois que le sous-ensemble de ports 106 cibles a été déterminé par le contrôleur 108, le contrôleur 108 envoie un message de lecteur à chaque port du sous-ensemble. Le message de lecteur comprend un identificateur de lecteur, un identificateur 30 de paquet (par exemple un descripteur ou un jeton), un identificateur de port, et/ou un identificateur de données de paquet. L'identificateur de lecteur indique au port 106 qu'il doit émettre une requête d'accès en lecture pour lire les données de paquet indiquées par l'indicateur de données de paquet dans 35 l'emplacement, se trouvant dans les entrées des bancs 110 de la 3034542 B15065 - XPL-05600 16 mémoire de paquets 104, indiqué par l'indicateur de données de paquet. L'identificateur de port identifie le port 106 auquel le message de lecteur est adressé et permet ainsi à un port 106 de savoir que le message est destiné à ce port 106. L'identificateur 5 de paquet identifie de façon unique le paquet et l'identificateur de données de paquet identifie les données de paquet ou une portion de celles-ci pour lesquelles le port 106 reçoit l'instruction de lecture dans la mémoire de paquets 104. Par exemple, l'identificateur de données de paquet peut identifier une ou 10 plusieurs des pages de la liste de liaisons 202 associée au paquet, de sorte que sur la base des emplacements dans les bancs 110 qui sont pointés par les pages, les ports 106 lecteurs sélectionnés peuvent émettre des messages d'accès en lecture qui provoquent la lecture des données de paquet mémorisées dans les pages 15 identifiées dans la mémoire de paquets 104. Dans certains modes de réalisation, l'identificateur de port peut être omis et/ou l'identificateur de paquet et l'identificateur de données de paquet peuvent concorder ou n'être qu'un seul identificateur. Par exemple, si le sous-ensemble n'est constitué que d'un seul port 20 106, l'identificateur de paquet lui-même peut être utilisé pour identifier les données de paquet (par exemple par l'intermédiaire de la liste de liaisons 202 associée). En outre, l'identificateur de paquet peut être attaché à toutes les requêtes d'accès et donc à toutes les données de paquet lorsque les données sont lues et 25 transmises à tous les ports 106 du dispositif 102, de sorte que tous les ports cibles 106 peuvent identifier et fournir les données de paquet sur la base de l'identificateur de paquet attaché lorsqu'il est reçu. Le contrôleur 108 peut aussi envoyer des messages 30 d'écouteur à chacun des ports cibles 106 qui n'ont pas été inclus dans le sous-ensemble sélectionné. Ces messages d'écouteur sont similaires aux messages de lecteur, excepté que l'identificateur de données de paquet peut être omis et que l'identificateur de lecteur peut être omis et/ou indiquer que le port 106 n'est pas 35 un lecteur et qu'au lieu de cela il n'a besoin que de 3034542 315065 - XPL-05600 17 surveiller/écouter la sortie de la mémoire de paquets 104 pour trouver des données de paquet ayant un identificateur de paquet attaché qui concorde avec l'identificateur indiqué dans le message d'écouteur. Il en résulte que les ports cibles 106 non 5 sélectionnés ou restants ne vont pas essayer de lire les données de paquet dans la mémoire de paquets 104 et qu'au lieu dé cela ils ne vont faire qu'écouter/surveiller les données de paquet lorsqu'elles sont lues dans la mémoire 104 vers tous les ports 106 sur la base des tentatives d'accès du sous-ensemble. 10 Après la réception des messages de lecteur, les ports cibles sélectionnés 106 émettent une requête de données de paquet pour obtenir les données au niveau des entrées des bancs 110 indiquées par l'identificateur de données de paquet et/ou l'identificateur de paquet comme comprenant les données de paquet 15 nécessaires. Comme cela a été décrit précédemment, ces requêtes d'accès en lecteur peuvent inclure l'identificateur de paquet de sorte que les données de paquet, lorsqu'elles sont lues dans la mémoire de paquets 104, peuvent avoir l'identificateur de paquet attaché de sorte que tous les ports cibles (le sous-ensemble et 20 le reste) peuvent recevoir et fournir les données de paquet lues en comparant l'identificateur de paquet attaché aux données à l'identificateur de paquet se trouvant dans le message de lecteur/écouteur reçu. Le sous-ensemble des ports 106 sélectionnés peut émettre autant de requêtes d'accès en lecture vers la mémoire 25 de paquets 104 que cela est nécessaire pour récupérer les données de paquet indiquées par le contrôleur 108. Par exemple, pour les pages affectées à chaque port 106, le port 106 peut commencer par un premier emplacement dans la mémoire 104, indiqué par la première page des pages affectées, puis continuer vers un 30 emplacement suivant dans la mémoire de paquets 104 indiqué par la page suivante dans la liste de liaisons 202 jusqu'à ce que toutes les pages affectées au port 106 aient reçu des requêtes d'accès/lecture. Ces requêtes peuvent survenir à l'intérieur de l'élément 35 d'accès 112. En particulier, les requêtes sont émises à partir du 3034542 B15065 - XPL-05600 18 sous-ensemble de ports 106 vers les éléments d'adresse de banc 114 associés au banc 110 où les données de paquet nécessaires sont mémorisées (comme cela est indiqué par les pages 202). Les éléments d'adresse de banc 114 arbitrent ensuite pour décider 5 quels ports 106 ayant émis une requête d'accès en lecture vont obtenir un accès à un ou plusieurs ports de lecture d'un banc 110 associé pour ce cycle. Cet arbitrage peut être indépendant ou peut se faire indépendamment pour chaque élément d'adresse 114 et pax conséquent pour chaque banc 110. Ensuite, comme cela a été décrit 10 précédemment, le port de lecture du banc 110 accédé propage l'identificateur de paquet de la requête vers les données de paquet lues et ces données de paquet lues sont transmises à tous les ports 106 se trouvant sur le dispositif 102. Ainsi, à la réception des données de paquet, chaque port 106 peut comparer 15 les identificateurs de paquets affectés aux ports 106 à l'identificateur de paquet propagé qui est attaché aux données de paquet, et s'ils concordent, peut consommer et fournir les données. Il en résulte que tous les ports cibles 106 vont consommer les données de paquet de multidiffusion/diffusion et fournir les 20 données indiquées par le contrôleur 108 malgré que seuls les ports du sous-ensemble 106 demandent effectivement les données à partir de la mémoire de paquets 104. Ainsi, le système 100 procure l'avantage que les conflits entre les bancs 110 sont réduits dans le cas du trafic multidiffusé et par conséquent que la probabilité 25 de ruptures d'approvisionnement de paquets est supprimée ou minimisée en particulier pendant le mode à anticipation. La figure 3 illustre un procédé pour empêcher les ruptures d'approvisionnement dans un système de mémoire de paquets selon certains modes de réalisation. Comme cela est représenté en 30 figure 3, le dispositif de traitement de paquets 102 mémorise un ou plusieurs paquets dans un ou plusieurs bancs de mémoire 110 de la mémoire de paquets 104, à l'étape 302. Comme cela a été décrit précédemment, chaque paquet peut être mémorisé sur une ou plusieurs pages d'une liste de liaisons 202 mappée vers une 35 pluralité d'emplacements dans la mémoire de paquets 104. Le 3034542 B15065 - XPL-05600 19 contrôleur 108 détermine si un paquet est un paquet de multidiffusion/diffusion qui doit être fourni à partir d'une pluralité de ports 106 cibles, à l'étape 304. Si le paquet est un paquet de multidiffusion ou de diffusion, le contrôleur 108 envoie 5 une commande de lecteur à un sous-ensemble sélectionné des ports 106 cibles qui donne instruction à chaque port du sous-ensemble de lire une portion ou la totalité des données de paquet dans la mémoire de paquets 104, à l'étape 306. Tous les ports de sortie 106 cibles fournissent les données de paquet dès la réception en 10 provenance de la mémoire de paquets 103, à l'étape 308. Dans certains modes de réalisation, le dispositif 102 est dans un mode à anticipation de sorte que la fourniture des données de paquet par les ports 106 cibles comprend le fait de commencer à fournir au moins une portion des données de paquet avant que la totalité 15 du paquet ait été reçu. Dans certains modes de réalisation, le procédé comprend en outre, si le paquet est de multidiffusion ou de diffusion, le fait que le contrôleur 108 envoie une commande d'écouteur au reste des ports 106 cibles qui ne sont pas sélectionnés et donne instruction à chacun des ports restants 20 d'écouter/surveiller l'arrivée de données de paquet lorsqu'elles sont lues par le sous-ensemble dans la mémoire de paquets 104. Ainsi, le procédé procure l'avantage de réduire le trafic d'accès en lecture envoyé aux bancs 110 des données de paquet pour des données de paquet de multidiffusion ou de diffusion. 25 Le système de mémoire de paquets décrit ici présente de nombreux avantages. En particulier, le système procure l'avantage de réduire le nombre d'accès à la mémoire de paquets pour lire un paquet qui doit être envoyé à partir des ports et de réduire ainsi les conflits entre les ports de lecture des bancs. En effet, cela 30 réduit en retour la possibilité de ruptures d'approvisionnement de paquets et aide à améliorer les performances de bande passante des ports. En outre, la bande passante de la mémoire de paquets est augmentée lorsqu'une pluralité des ports, mais pas la totalité, est désignée comme ports lecteurs de sorte qu'une 35 quantité appropriée d'accès de données en parallèle peut être 3034542 B15065 - XPL-05600 20 réalisée. En particulier, la répartition des données de paquet entre les ports peut aider à empêcher que tous les ports sélectionnés aient besoin d'accéder au même banc en même temps. En outre, en utilisant des informations de retour d'encombrement 5 provenant des ports, le contrôleur peut offrir l'avantage d'une meilleure répartition de la charge d'accès en lecture entre les ports cibles en plus de déterminer la quantité de ports qui est nécessaire. Ainsi, le système peut encore réduire l'éventualité de ruptures d'approvisionnement de paquets et aider à améliorer 10 les performances de bande passante des ports. Bien que l'invention ait été décrite en faisant référence à de nombreux détails spécifiques, l'homme de l'art remarquera que l'invention peut être mise en oeuvre sous d'autres formes spécifiques sans s'écarter de l'esprit de l'invention. Par 15 exemple, bien que les différents procédés et les différentes opérations qu'on décrit ici décrivent un ordre particulier d'étapes, d'autres ordres sont envisagés ainsi que l'omission d'une ou plusieurs des étapes et/ou l'ajout d'une ou plusieurs nouvelles étapes. En outre, bien que les procédés et les 20 opérations présentés ici soit décrits séparément, un ou plusieurs des procédés et opérations peuvent être combinés (totalement ou en partie). Ainsi, l'homme de l'art comprendra que l'invention n'est pas limitée par les détails illustratif présentés ici, mais au lieu de cela est définie par les revendications jointes. REVENDICATIONS1. Système de mémoire de paquets, le système comprenant : une mémoire de paquets non transitoire lisible par un ordinateur, comprenant un ou plusieurs bancs de mémoire pour mémoriser des données de paquet d'un paquet reçu par le système, les données de paquet mémorisées dans les bancs de mémoire étant organisées en une ou plusieurs pages mappées vers les bancs de mémoire ; une pluralité de ports de sortie couplés à la mémoire 10 de paquets et agencés pour lire sélectivement les données de paquet dans la mémoire de paquets et fournir les données de paquet hors du système ; et un contrôleur couplé à la pluralité de ports de sortie pour contrôler quels sont les ports qui fournissent les données 15 de paquet, et si les données de paquet doivent être fournies à partir de deux ou plusieurs des ports, le contrôleur ordonne à moins de la totalité des deux ou plusieurs ports de provoquer la lecture des données de paquet à partir de la mémoire de paquets et de les transmettre à la totalité desdits deux ou plusieurs 20 ports. 2. Système selon la revendication 1, dans lequel la pluralité de ports de sortie et le contrôleur fonctionnent dans un mode à anticipation dans lequel chacun de la pluralité de ports de sortie commence à fournir des données de paquet avant que la 25 totalité du paquet ait été reçu. 3. Système selon la revendication 1 ou 2, dans lequel le contrôleur ordonne à la totalité desdits deux ou plusieurs ports d'écouter et de fournir les données de paquet après que les données de paquet ont été lues dans la mémoire de paquets sur la 30 base d'un identificateur de données de paquet que le contrôleur envoie à la totalité desdits deux ou plusieurs ports. 4. Système selon l'une quelconque des revendications 1 à 3, dans lequel chacun desdits moins que la totalité des deux ou 3034542 B15065 - XPL-05600 22 plusieurs ports provoque la lecture d'une partie différente des données de paquet dans la mémoire de paquets. 5. Système selon l'une quelconque des revendications 1 à 4, dans lequel la partie différente des données de paquet de 5 chacun desdits moins que la totalité des deux ou plusieurs ports est déterminée par le contrôleur sur la base de la façon dont les données de paquet sont réparties entre les pages. 6. Système selon l'une quelconque des revendications 1 à 5, dans lequel la quantité desdits moins que l totalité des deux ou plusieurs ports est déterminée par le contrôleur sur la base d'une quantité de pages sur lesquelles les données de paquet sont mémorisées. 7. Système selon l'une quelconque des revendications 1 à 6, dans lequel le contrôleur sélectionne lesdits moins que la 15 totalité des deux ou plusieurs ports sur la base d'un niveau d'encombrement de chacun desdits deux ou plusieurs ports. 8. Système selon l'une quelconque des revendications 1 à 7, dans lequel chacun de la pluralité de ports de sortie comprend un tampon qui mémorise une liste identifiant un ou plusieurs 20 paquets qui ont été affectés par le contrôleur pour être fournis par le port, mais qui n'ont pas encore été fournis par le port, et en outre dans lequel le niveau d'encombrement de chacun desdits deux ou plusieurs ports est basé sur une quantité courante de paquets identifiée par la liste du tampon du port. 25 9. Système selon l'une quelconque des revendications 1 à 7, dans lequel lesdits moins que la totalité des deux ou plusieurs ports sont constitués de : - exactement l'un desdits deux ou plusieurs ports, qui provoque la lecture de toutes les données de paquet dans la mémoire 30 de paquets ; ou - exactement un premier port et un deuxième port desdits deux ou plusieurs ports, et en outre dans lequel le contrôleur ordonne au premier port de provoquer la lecture d'une première portion des données de paquet et au deuxième port de provoquer la 3034542 B15065 - XPL-05600 23 lecture d'un reste des données de paquet qui n'a pas été inclus dans la première portion. 10. Système selon la revendication 9, dans lequel la première portion est mémorisée sur une ou plusieurs premières 5 pages des pages mappées vers les bancs de mémoire, et comprend l'en-tête des données de paquet, et en outre dans lequel le reste des données de paquet est mémorisé sur une ou plusieurs deuxièmes pages des pages mappées vers les bancs de mémoire et comprend le reste des données de paquet non inclus dans les premières pages. 10 11. Procédé d'actionnement d'un système de mémoire de paquets, le procédé comprenant : mémoriser des données de paquet d'un paquet dans un ou plusieurs bancs de mémoire d'une mémoire de paquets non transitoire lisible par un ordinateur, la mémorisation des données de paquet dans les bancs de mémoire comprenant une organisation des données de paquet mémorisées dans les bancs de mémoire selon une ou plusieurs pages mappées vers les bancs de mémoire ; si les données de paquet doivent être fournies à partir de deux ou plusieurs ports d'une pluralité de ports de sortie couplés à la mémoire de paquets, commander moins que la totalité desdits deux ou plusieurs ports pour provoquer la lecture des données de paquet dans la mémoire de paquets et leur transmission à la totalité desdits deux ou plusieurs ports à l'aide d'un contrôleur couplé aux ports de sortie ; et fournir les données de paquet à partir de chacun desdits deux ou plusieurs ports avec lesdits deux ou plusieurs ports. 12. Procédé selon la revendication 11, dans lequel la pluralité de ports de sortie et le contrôleur fonctionnent dans un mode à anticipation dans lequel la fourniture des données de paquet par chacun desdits deux ou plusieurs ports comprend le fait de commencer à fournir au moins une portion des données de paquet avant que la totalité du paquet ait été reçu. 13. Procédé selon la revendication 11 ou 12, comprenant en outre le fait d'ordonner à la totalité desdits deux ou plusieurs 35 ports d'écouter et de fournir les données de paquet après que les 3034542 B15065 - XPL-05600 24 données de paquet ont été lues dans la mémoire de paquets avec le contrôleur sur la base d'un identificateur de données de paquet que le contrôleur envoie à la totalité desdits deux ou plusieurs ports. 14. Procédé selon l'une quelconque des revendications 11 à 13, dans lequel chacun desdits moins que la totalité des deux ou plusieurs ports provoque la lecture d'une partie différente des données de paquet dans la mémoire de paquets. 15. Procédé selon l'une quelconque des revendications 10 11 à 14, comprenant en outre la détermination de la partie différente des données de paquet de chaque port desdits moins de la totalité des deux ou plusieurs ports, avec le contrôleur, sur la base de la façon dont les données de paquet sont réparties entre les pages. 15 16. Procédé selon l'une quelconque des revendications 11 à 15, comprenant en outre la détermination d'une quantité desdits moins que la totalité des deux ou plusieurs ports avec le contrôleur sur la base d'une quantité de pages sur lesquelles les données de paquet sont mémorisées. 20 17. Procédé selon l'une quelconque des revendications 11 à 16, comprenant en outre la sélection desdits moins que la totalité des deux ou plusieurs ports avec le contrôleur sur la base d'un niveau d'encombrement de chacun desdits deux ou plusieurs ports. 25 18. Procédé selon l'une quelconque des revendications 11 à 17, dans lequel chaque port de la pluralité de ports de sortie comprend un tampon qui mémorise une liste identifiant un ou plusieurs paquets qui ont été affectés par le contrôleur pour être fournis par le port, mais qui n'ont pas encore été fournis 30 par le port, et en outre dans lequel le niveau d'encombrement de chacun desdits deux ou plusieurs ports est basé sur une quantité courante de paquets identifiée par la liste du tampon du port. 19. Procédé selon l'une quelconque des revendications 11 à 17, dans lequel lesdits moins que la totalité des deux ou 35 plusieurs ports sont constitués de : 3034542 315065 - XPL-05600 25 - exactement l'un desdits deux ou plusieurs ports, qui provoque la lecture de toutes les données de paquet dans la mémoire de paquets ; ou - exactement un premier port et un deuxième port desdits 5 deux ou plusieurs ports, et comprenant en outre le fait d'ordonner au premier port de provoquer la lecture d'une première portion des données de paquet et au deuxième port de provoquer la lecture d'un reste des données de paquet qui n'a pas été inclus dans la première portion. 10 20. Procédé selon la revendication 19, dans lequel la première portion est mémorisée sur une ou plusieurs premières pages des pages mappées vers les bancs de mémoire, et comprend l'en-tête des données de paquet, et en outre dans lequel le reste des données de paquet est mémorisé sur une ou plusieurs deuxièmes 15 pages des pages mappées vers les bancs de mémoire et comprend le reste des données de paquet qui n'est pas inclus dans les premières pages.