(EN) A method and apparatus for shared memory management (220) in a switched network element (100) are provided. According to one aspect of the present invention, a shared memory manager (220) for a packet forwarding device (140) includes a pointer memory (320) having stored therein information regarding buffer usage (e.g., usage counts) for each of a number of buffers in a shared memory (230). An encoder (410) is coupled to the pointer memory (320) for generating an output which indicates a set of buffers that contains a free buffer. The shared memory manager (220) further includes a pointer generator (440) that is coupled to the encoder (410) for locating a free buffer in the set of buffers. The pointer generator (440) is further configured to produce a pointer to the free buffer based upon the output of the encoder (410) and the free buffer's location within the set of buffers. According to another aspect of the present invention, a packet forwarding device (100) includes a number of output ports (117) for transmitting packets onto a network and a number of input ports (117) coupled to the output ports for receiving packets from the network, buffering the packets, and forwarding the packets to one or more of the output ports (117). The packet forwarding device (100) also includes a shared memory (230) that is segmented into buffers (140) for temporarily buffering the packets. No more than one copy of a given packet is ever stored in the shared memory (230). The packet forwarding device (100) further includes a shared memory manager (220) which dynamically allocates buffers on behalf of the input ports (117) and tracks ownership counts for each of the buffers.
(FR) L'invention concerne un procédé et un appareil utiles pour une gestion (220) de mémoire partagée dans un élément (100) de réseau commuté. Selon un aspect de l'invention, un gestionnaire (220) de mémoire partagée utile pour un dispositif (140) d'envoi de paquets comporte une mémoire (320) de pointeurs contenant en mémoire des informations relatives à l'utilisation de tampons (p. ex. mesures de trafic) pour chacun des tampons d'une mémoire (230) partagée. Un codeur (410) est couplé à la mémoire (32) de pointeurs afin de produire un signal de sortie indiquant un ensemble de tampons qui contiennent un tampon libre. Le gestionnaire (220) de mémoire partagée comporte en outre un générateur (440) de pointeurs qui est couplé au codeur (410) pour permettre de localiser un tampon libre dans l'ensemble de tampons. Le générateur (440) de pointeurs est en outre configuré pour produire un pointeur dirigé vers le tampon libre en fonction du signal de sortie du codeur (410) et de l'emplacement du tampon libre dans l'ensemble de tampons. Selon un autre aspect de l'invention, un dispositif (100) d'envoi de paquets comporte un certain nombre de ports (117) de sortie servant à transmettre les paquets sur un réseau, et un certain nombre de ports (117) d'entrée couplés aux ports de sortie pour recevoir des paquets provenant du réseau, mettre les paquets en mémoire tampon, et envoyer les paquets vers un ou plusieurs ports (117) de sortie. Le dispositif (100) d'envoi de paquets comporte également une mémoire (230) partagée, segmentée en tampons (140), qui permet de mettre temporairement les paquets en mémoire tampon. Seule une copie au plus d'un paquet donné est stockée dans la mémoire (230) partagée. Le dispositif (110) d'envoi de paquets comporte en outre un gestionnaire (220) de mémoire partagée qui permet d'attribuer dynamiquement des tampons aux ports (117) d'entrée, et de surveiller le nombre de détenteurs pour chacun des tampons.