FR2827996A1 - Procede et dispositif de gestion de memoire - Google Patents

Procede et dispositif de gestion de memoire Download PDF

Info

Publication number
FR2827996A1
FR2827996A1 FR0110158A FR0110158A FR2827996A1 FR 2827996 A1 FR2827996 A1 FR 2827996A1 FR 0110158 A FR0110158 A FR 0110158A FR 0110158 A FR0110158 A FR 0110158A FR 2827996 A1 FR2827996 A1 FR 2827996A1
Authority
FR
France
Prior art keywords
fifo
size
data
block
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR0110158A
Other languages
English (en)
Other versions
FR2827996B1 (fr
Inventor
Arnaud Closset
Du Fretay Tristan Halna
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to FR0110158A priority Critical patent/FR2827996B1/fr
Publication of FR2827996A1 publication Critical patent/FR2827996A1/fr
Application granted granted Critical
Publication of FR2827996B1 publication Critical patent/FR2827996B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

L'invention concerne la gestion d'une mémoire comprenant un ensemble (106) d'au moins une FIFO (1) de taille variable dont l'accès est contrôlé à l'aide d'un pointeur d'écriture (PtW) et au moins un pointeur de lecture (PtR). Selon l'invention, on met en oeuvre une modification (503, 505) de la taille d'une des FIFO appartenant à l'ensemble par un retrait (503) ou un ajout (505) d'un bloc d'au moins une case mémoire (1a à 1f), 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.

Description

<Desc/Clms Page number 1>
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 qui est 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 au moins un élément destinataire.
Dans les systèmes de communication, les FIFOs sont souvent utilisées pour le stockage temporaire de données durant le transfert entre ux éléments de système non parfaitement synchronisés. Les caractéristiques initiales d'une FIFO (notamment emplacement et taille) sont généralement choisies en fonction de des critères ou paramètres comme la charge des chemins de données, la capacité à transférer les données d'une source vers une destination, les conditions de transfert...
Ces paramètres peuvent cependant évoluer au fil du temps et les caractéristiques initiales de la FIFO devenir inadaptées à de nouvelles requêtes.
Ainsi, des tailles de FIFOs figées à leur initialisation présentent les inconvénients d'être surdimensionnées (ce qui entraîne un surcoût, une consommation accrue et un encombrement supplémentaire) ou de conduire à un fonctionnement non optimal des échanges de données et notamment à des engorgements, blocages, ou pertes de données.
Une solution à ce problème consiste à modifier les tailles de FIFO en fonction des paramètres.
Ainsi, on connaît dans l'état de la technique un document de brevet US 5 359 568 de la société MOTOROLA Inc. (marque déposée) qui décrit un système de mémoire de type FIFO permettant la modification dynamique de taille en se
<Desc/Clms Page number 2>
basant sur des FIFOs paginées. Le mode de réalisation décrit dans ce brevet consiste essentiellement : - à instancier un ensemble de FIFOs ( instancier une FIFO signifiant ici, décrire la constitution d'une FIFO notamment sa taille, son emplacement,...) en fonction d'un nombre de pages de DPRAM (de l'anglais Double Port Random Access Memory ou mémoire volatile à double port ) ; - à augmenter la taille de chaque FIFO lorsqu'elle devient pleine en utilisant un traitement d'agrément reposant sur l'addition d'une page appartenant à un ensemble de pages partagées mais a priori non affectées de la DPRAM, la page ajoutée étant positionnée après le pointeur d'écriture de la FIFO ; et - à diminuer la taille de chaque FIFO précédemment agrandie, lorsqu'une FIFO est lue, en libérant une à une les pages précédemment empruntées à l'ensemble des pages partagées, cette page étant placée avant le pointeur de lecture de la FIFO.
Selon cette technique, une seule FIFO peut être accédée à un moment donné.
Un autre inconvénient de cette technique de l'art antérieur est qu'elle ne permet pas de réduire une taille initiale de FIFO instanciée lorsque, par exemple, la variation de la gigue (ou jitter en anglais qui signifie ici, la variation des débits de données autour d'une valeur moyenne qui entraîne une variation de latence entre l'écriture et la lecture d'une donnée) varie de manière importante.
Encore, un autre inconvénient de cette technique de l'art antérieur est qu'elle ne permet pas de modifier la taille d'une FIFO indépendamment de son usage (lecture/écriture en cours).
Un inconvénient de cette technique de l'art antérieur est également, qu'elle ne permet pas de modifier plusieurs pages à la fois lorsque, notamment, il y a une variation de gigue importante.
<Desc/Clms Page number 3>
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 & l'invention est de fournir un procédé et un dispositif de gestion de FIFOs permettant de modifier dynamiquement la taille de FIFOs.
Un autre objectif de l'invention est d'optimiser l'espace mémoire globalement nécessaire à l'utilisation de plusieurs FIFOs de taille variable.
L'invention a également pour objectif de mettre en navre des FIFOs de taille variable de manière simple et souple, et notamment de manière indépendante de l'instantiation de FIFO initiale.
Dans ce but, l'invention propose un procédé de gestion d'une mémoire comprenant un ensemble d'au moins une FIFO de taille variable dont l'accès est contrôlé à l'aide d'un pointeur d'écriture et au moins un pointeur de lecture, remarquable en ce qu'il comprend une étape de modification de la taille d'une des FIFO appartenant à l'ensemble 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.
On note que la mémoire s'entend ici comme une mémoire simple port ou à ports multiples.
On note aussi que la mémoire peut contenir une ou plusieurs FIFOs.
On note également que l'écriture et la lecture de la FIFO sont gérées par des pointeurs. D'une manière générale, lorsque les données mémorisées dans la ou les FIFOs sont destinées à un seul destinataire, un seul pointeur de lecture suffit alors que si les données sont destinées à plusieurs destinataires, plusieurs pointeurs de lecture peuvent être nécessaires.
L'invention permet avantageusement 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 lecture 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.
<Desc/Clms Page number 4>
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 que l'étape de modification comprend, pour une diminution de la taille de la FIFO : une sous-étape de vérification qu'au moins une partie du bloc ne contient pas de données écrites qui riront pas été lues par leur ou leurs destinataires ; et - une sous-étape de diminution de la taille de la FIFO permettant le retrait de la partie du bloc que l'étape de vérification a confirmé qu'il ne contient pas de données écrites et non lues.
Ainsi, l'invention permet de ne pas perdre de données et/ou de ne pas ralentir le débit global des données.
L'invention permet en outre, d'effectuer à la volée la diminution de la taille de FIFO.
On note que la partie du bloc peut être aussi petite qu'une case mémoire mais peut aussi comprendre des pages ou des plages d'adresse de grande taille (typiquement plusieurs kilo ou méga octets).
Selon une caractéristique particulière, le procédé est remarquable en ce que la FIFO a un début et une fin déterminés et que l'emplacement déterminé coï ncide, avant le retrait, avec la fin de la FIFO lorsque l'étape de modification comprend une sous-étape de diminution de la taille de la FIFO.
Ainsi, l'invention présente l'avantage d'être facile àmettre en ouvre.
Selon une caractéristique particulière, le procédé est remarquable en ce que l'étape de modification comprend, pour une augmentation de la taille de la FIFO : - une sous-étape d'augmentation de la taille de la FIFO permettant l'ajout de la partie du bloc ; et - une sous-étape d'autorisation de lecture si la partie ajoutée du bloc contient au moins une donnée écrite après l'ajout ; et/ou
<Desc/Clms Page number 5>
- une sous-étape de saut de la partie du bloc par un ou des pointeurs de lecture si la partie ajoutée ne contient pas de donnée écrite après l'ajout.
Selon une caractéristique particulière, le procédé est remarquable en ce que la FIFO a un début et une fin déterminés et que l'emplacement coï ncide, après l'ajout, avec la fin de la FIFO lorsque l'étape de modification comprend une sous- étape d'augmentation de la taille de la FIFO.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il comprend une étape de mise à jour d'un statut associé à chaque partie de la FIFO lors d'une étape d'écriture de données dans la partie de la FIFO et lors d'une étape de lecture de l'ensemble des données écrites dans la partie de la FIFO et en ce qu'au moins une étape faisant partie du groupe comprenant : l'étape de vérification ; - la sous-étape de d'autorisation ; et - la sous-étape de saut ; prend en compte le statut mis àjour.
Ainsi, la simple prise en compte d'un statut de lecture et d'écriture associée à des parties de la FIFO permet une gestion de FIFO aisée.
Selon une caractéristique particulière, le procédé est remarquable en ce que la FIFO est découpée en pages comprenant chacune un nombre prédéterminé de données élémentaires.
Selon une caractéristique particulière, le procédé est remarquable en ce que la FIFO est initialisée avec un nombre initial de pages prédéterminé lors de sa création et qu'à l'issue de l'étape de modification, elle est susceptible de contenir un nombre de pages inférieur ou supérieur au nombre initial de pages.
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 mise en ouvre après une étape de requête de modification de la taille de la FIFO faisant partie du groupe comprenant : des détections d'un seuil de remplissage ;
<Desc/Clms Page number 6>
des données de protocoles spécifiques ; - des mesures d'amplitude de gigue dans le flux de données.
Ainsi, l'invention permet avantageusement la modification de la taille d'une FIFO en fonction de son usage pour certaines applications (notamment de type vidéo et/ou émissions vers un bus IEEE1355). Elle permet notamment d'anticiper le besoin de modification de FIFO dans le but d'empêcher l'exécution de sous-programmes d'exception FIFO pleine et dans le but d'optimiser l'attribution des pages entre les FIFO requérant une plus grande taille et celles devenant surdimensionnées ;...) en fonction de différents critères.
L'invention concerne également un dispositif de gestion d'une mémoire comprenant un ensemble d'au moins une FIFO de taille variable dont l'accès est contrôlé à l'aide d'un pointeur d'écriture et au moins un pointeur de lecture, remarquable en ce qu'il comprend des moyens de modification de la taille d'une des FIFOs appartenant à l'ensemble par retrait ou 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 que les moyens de modification comprennent, pour une diminution de la taille de la FIFO : des moyens de vérification qu'au moins une partie du bloc ne contient pas de données écrites qui n'ont pas été lues par leur ou leurs destinataires ; et - des moyens de diminution de la taille de la FIFO permettant le retrait de la partie du bloc que les moyens de vérification ont confirmé qu'il ne contient pas de données écrites et non lues.
Selon une caractéristique particulière, le dispositif est remarquable en ce que la FIFO a un début et une fin déterminés et que l'emplacement déterminé coï ncide, avant le retrait, avec la fin de la FIFO lorsque les moyens de modification mettent en ouvre une diminution de la taille de la FIFO.
<Desc/Clms Page number 7>
Selon une caractéristique particulière, le dispositif est remarquable en ce que les moyens de modification comprennent, pour une augmentation de la taille de la FIFO : des moyens d'augmentation de la taille de la FIFO permettant l'ajout de la partie du bloc ; et - des moyens d'autorisation de lecture si la partie ajoutée du bloc contient au moins une donnée écrite après l'ajout ; et/ou - des moyens de saut de la partie du bloc par un ou des pointeurs de lecture si la partie ajoutée ne contient pas de donnée écrite après l'ajout.
Selon une caractéristique particulière, le dispositif est remarquable en ce que la FIFO a un début et une fin déterminés et que l'emplacement coï ncide, après l'ajout, avec la fin de la FIFO lorsque les moyens de modification mettent en ouvre une augmentation de la taille de la FIFO.
Selon une caractéristique particulière, le dispositif est remarquable en ce qu'il comprend des moyens de mise à jour dun statut associé à chaque partie de la FIFO lors d'une écriture de données dans la partie de la FIFO et lors d'une lecture de l'ensemble des données écrites dans la partie de la FIFO et en ce qu'au moins des moyens faisant partie du groupe comprenant : les moyens de vérification ; les moyens d'autorisation ; et les moyens de saut ; prennent en compte le statut mis àjour.
Selon une caractéristique particulière, le dispositif est remarquable en ce que la FIFO est découpée en pages comprenant chacune un nombre prédéterminé de données élémentaires.
Selon une caractéristique particulière, le dispositif est remarquable en ce que la FIFO est initialisée avec un nombre initial de pages prédéterminé lors de sa création et qu'à l'issue d'une modification de taille, elle est susceptible de contenir un nombre de pages inférieur ou supérieur au nombre initial de pages.
<Desc/Clms Page number 8>
Selon une caractéristique particulière, le dispositif est remarquable en ce que les moyens de modification de la taille de la FIFO sont mise en ouvre après une requête de modification de la taille de la FIFO faisant partie du groupe comprenant : - des détections d'un seuil de remplissage ; - des données de protocoles spécifiques ; des mesures d'amplitude de gigue dans le flux de données.
L'invention concerne également 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, en outre, 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 d'au moins une FIFO de taille variable dont l'accès est contrôlé à l'aide d'un pointeur d'écriture et au moins un pointeur de lecture, le programme étant enregistré sur un support utilisable dans un ordinateur et comprenant des moyens de programmation lisibles par ordinateur pour effectuer une étape de modification de la taille d'une des FIFO appartenant à l'ensemble 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.
Les avantages 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 ;
<Desc/Clms Page number 9>
- la figure 2 représente une structure de FIFO reposant sur la fragmentation en plusieurs pages d'une DPRAM 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 ;
Figure img00090001

- 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 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 ouvre l'invention, utilisé pour interconnecter une pluralité de dispositifs audio et vidéo dans la maison.
<Desc/Clms Page number 10>
Figure img00100001
1 Le principe général de l'invention repose sur la mise en ouvre d'une mémoire contenant au moins une FIFO dont la taille est gérée dynamiquement en fonction des besoins.
Chaque FIFO comprend un nombre variable de pages ordonnées (on peut ainsi identifier clairement un début et une fin de FIFO même si les pointeurs de lecture et d'écriture varient en boucle sur la FIFO).
Idéalement, la taille de chaque FIFO est telle que son degré de remplissage reste voisin d'une valeur typique (par exemple 50%). En deçà, la FIFO est trop grande et consomme inutilement des ressources mémoires qui pourraient être utilisées à d'autres usages, notamment pour une autre FIFO. Au delà, la FIFO est trop petite, et il existe un risque de saturation de la FIFO et donc d'un ralentissement de transfert de données, voire de perte de données.
Ainsi, lorsque le remplissage d'une FIFO dépasse un certain seuil haut, prédéterminé, il est nécessaire d'augmenter la taille de la FIFO. Selon l'invention, on peut ainsi ajouter un ou plusieurs blocs de mémoire à une FIFO indépendamment de l'emplacement des pointeurs de lecture et d'écriture.
Néanmoins, il faut veiller à une bonne gestion des pointeurs de lecture et d'écriture dans la FIFO.
Lorsque le ou les blocs de mémoire sont ajoutés à la fin de la FIFO, deux cas sont possibles : - premier cas : le pointeur de lecture est placé avant le pointeur d'écriture dans la FIFO ; dans ce cas, l'ajout se fait de manière transparente pour les pointeurs : lorsque le pointeur d'écriture parvient au niveau du ou des blocs ajoutés, le pointeur d'écriture pointe normalement sur le ou les blocs ajoutés pour permettre une écriture des données dans ce ou ces blocs, qui seront lues classiquement grâce au pointeur de lecture ; deuxième cas : le pointeur de lecture est placé après le pointeur d'écriture dans la FIFO ; dans ce cas, lorsque le pointeur de lecture parvient au niveau du ou des blocs ajoutés, ceux-ci ne contiennent pas
<Desc/Clms Page number 11>
de données à lire ; aussi, le pointeur de lecture est réinitialisé pour pointer sur le début de la FIFO afin de ne pas permettre la lecture du ou des blocs lorsqu'ils viennent d'être ajoutés et ne contiennent pas encore de données ; lorsque le pointeur d'écriture va pointer sur le ou les blocs ajoutés, il est incrémenté normalement au fur à mesure des besoins pour permettre une écriture des données dans ce ou ces blocs, qui pourront alors être lues classiquement grâce au pointeur de lecture.
Selon une variante, dans tous les cas, on attend que le pointeur de lecture parvienne à la fin de la FIFO, avant d'augmenter la taille de la FIFO en fonction des besoins. Ce pointeur est donc est réinitialisé pour pointer sur le début de la FIFO lorsqu'il parvient à la fin de la FIFO. La taille de la FIFO est augmentée et la suite des opérations de lecture et d'écriture se fait normalement.
De même, lorsque le remplissage d'une FIFO est en deçà d'une limite basse prédéterminée, il est nécessaire de diminuer la taille de la FIFO. On peut ainsi retirer un ou plusieurs blocs de mémoire à une FIFO. Néanmoins, il faut veiller àune bonne gestion des pointeurs de lecture et d'écriture dans la FIFO.
Lorsqu'il est nécessaire de retirer un ou plusieurs blocs de mémoire à la fin de la FIFO, si un bloc devant être retiré contient des données, il est nécessaire d'attendre la fin de lecture des données avant de retirer ce bloc. En revanche, si le bloc ne contient pas de données et si les pointeurs de lecture ou d'écriture ne pointent pas vers ce bloc, ce dernier peut être retiré de la FIFO.
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
<Desc/Clms Page number 12>
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 DPRAM permettant le stockage des données en provenance et/ou à destination d'un bus IEEE1394.
Cette DPRAM 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 tois é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 ;
Figure img00120001

des FIFOs de sorties utilisées pour les données à destination de la DPRAM d'interfaçage avec le bus IEEE1394 ; et des FIFO internes utilisées pour les données en provenance de la DPRAM d'interfaçage avec le bus IEEE1394.
Les FIFOs sont préférentiellement de type mémoire double ports et peuvent ainsi être accédées simultanément en lecture et en écriture sur deux 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
<Desc/Clms Page number 13>
Figure img00130001

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 noad de commutation 90 connecté à deux interfaces de communication série conformes aux normes IEEE 1394 et IEEE1355.
Le noad représenté à la figure 1 est ainsi connecté à un ou plusieurs autres nods de commutation du réseau commuté auquel il appartient, par l'interface 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 ncad 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
<Desc/Clms Page number 14>
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 nonne 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).
<Desc/Clms Page number 15>
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 le 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. II en est de même
<Desc/Clms Page number 16>
Figure img00160001

pour l'ensemble des éléments CPU 93, RAM 95 et ROM 94.
Comme représenté sur la figure 1, le noad selon l'invention comporte également deux moyens d'interfaçage 103 et 104.
Le moyen 103 est destiné à assurer l'interface entre le nard 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ôle 107 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 noads est appelé"Maître de cycle" ("Cycle Master"en terminologie anglo-saxonne) et le ncod"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 noads"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
<Desc/Clms Page number 17>
Figure img00170001

t t 1 v 11 référence ou cycle.
La durée du cycle notée T est égale à un nombre entier nit d'impulsions d'horloge, commun ou non à tous les bus, et qui est multiplié par l'inverse de la fréquence de l'horloge interne propre au ncud"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 Cl 13 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 Cl 13 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 nord de commutation du réseau commuté, permettant ainsi au dispositif 90 de communiquer avec un autre ncad de ce réseau.
Le dispositif 90 comporte également un moyen de contrôle de flux de
<Desc/Clms Page number 18>
Figure img00180001

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 cuivre notamment une unité de mémorisation à double port 106 qui permet de stocker des données à destination de, ou provenant du réseau commuté IEEE1355, ou du bus série IEEE1394.
L'unité de mémorisation à double port 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 DPRAM à accès 32 bits.
Les initiales DPRAM signifient en terminologie anglo-saxonne"Dual Port Random Access Memory"ce qui peut être approximativement traduit en langue française par"Mémoire volatile à double port".
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 franç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
<Desc/Clms Page number 19>
possible de venir écrire de nouvelles données à la place de celles-ci.
L'unité de mémorisation à double port 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 IEEEE1394 auquel est raccordé le noad de commutation 90 ou sur le réseau commuté IEEE1355.
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 noad 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
<Desc/Clms Page number 20>
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 anglo-
<Desc/Clms Page number 21>
saxonne). Ces mémoires FIFO sont plus largement décrites dans la documentation associée au composant LINK TSBl2LVOlA.
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 de 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 cavre dans la DPRAM 106 présentée en regard de la figure 1.
<Desc/Clms Page number 22>
Figure img00220001
Le module de contrôle 107 illustré en regard de la figure 1 gère cette DPRAM et met en celvre les algorithmes décrits dans les figures suivantes.
L'espace mémoire de la DPRAM 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 DPRAM 106 est structurée comme un ensemble de pages élémentaires de la DPRAM 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 à lc chaînés, correspondants respectivement aux pages 2, 4 et 27 (référencées 2c, 2e et 2f) de la DPRAM 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 DPRAM 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 DPRAM 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 nords de communication et de la charge entre ces nords.
Lorsque la communication entre deux nords 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.
<Desc/Clms Page number 23>
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 modification de la 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 données de contrôle (liées notamment au protocole du réseau) échangées entre des noads 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, deux tables et cinq registres sont associés à la FIFO : une table 10 de statuts de page ; - une table 20 de numéros de page ; - un registre 30 de taille ; un registre 40 Pt W de pointeur en écriture ; un registre 50 PtR de pointeurs en lecture ; - un registre 60 de seuil ; et - un compteur 70.
Chacun de ces registres est mis en carre dans une mémoire volatile de type RAM telle par exemple la DPRAM 106 ou une RAM propre au module de contrôle 107.
On note que huit pages peuvent être allouées à chaque FIFO. Le registre 30 de taille 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
<Desc/Clms Page number 24>
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).
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 DPRAM 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.
La table 10 statuts de page contient huit registres 10a à 10h, indexés de 0 à 8. Chacun des registres (ou cases mémoire) de la table 10 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 la table 10 des statuts de pages.
Les registres de la table 10 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).
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 PtW est 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
<Desc/Clms Page number 25>
- 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 50 PtR est un registre à 14 bits contenant l'information utile pour positionner le pointeur de lecture de la FIFO.
Le registre 50 PtR est constitué de 2 champs séparés : les trois bits les plus significatifs (MSB) contiennent une valeur 50a d'index dans la table 20 de numéros de page ; et les onze bits les moins significatifs (LSB) contiennent une valeur 50b d'offset.
Grâce à cette information, la position du pointeur d'écriture PtR de la FIFO est pertinente : - le champ d'index 50a (compris entre 0 et 7) permet de déterminer un numéro de pages (entre 0 et 31) ; et - le champ d'offset 50b 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 maximum de la gigue qui peut être absorbée dépend de la taille de la FIFO.
Le compteur 70 Cpt est un compteur à 11 bits utilisé pour compter le nombre de mots écrits dans la FIFO jusqu'à ce que le seuil de la FIFO soit atteint.
La figure 4 décrit un algorithme de requête de modification de taille d'une FIFO ei 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 et le compteur 70 associé à la FIFO sont initialisés à une valeur nulle ; et
<Desc/Clms Page number 26>
- le registre 60 de seuil associé à la FIFO est initialisé à une valeur prédéfinie.
Ensuite au cours d'une étape 501, l'espace restant de la FIFO est continuellement analysé et intégré dans le temps jusqu'à ce qu'une valeur limite de temps d'intégration soit atteinte.
Ensuite, lors d'un test 502, 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, 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 tl et t2, cinq pages vides (4,27, 0, 30 et 31) sont retirées de la FIFO 1.
Si l'espace restant est plus petit que ou égal au seuil SI lors d1 test 502, alors au cours d'un test 504, l'espace restant intégré dans le temps 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 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 me é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.
<Desc/Clms Page number 27>
Ensuite 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 DPRAM 106 est calculée par accès au registre 40 Pt associé à 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 AddrW.
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 et le pointeur de lecture PtR de la FIFO sont comparés. L'égalité du pointeur de lecture PtR et de la valeur a priori du pointeur d'écriture PtW de la FIFO signifie que la FIFO est pleine.
Si les deux pointeurs 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. Par exemple, la DPRAM 106 retourne un événement de type FIFO pleine (ainsi que le numéro de la FIFO pleine) au module qui écrit dans la FIFO 107 ou 108, et reste en attente (d'une écriture dans une autre FIFO, d'une lecture de FIFO,...). Le seul accès bloqué est un accès en écriture dans une FIFO pleine. L'étape 701 est ensuite réitérée.
Lorsque la valeur a priori du pointeur d'écriture PtW et le pointeur de lecture PtR de la FIFO ne sont pas égaux, le registre 40 Pt West mis à jour avec la
<Desc/Clms Page number 28>
valeur a priori de l'offset du pointeur d'écriture, au cours d'une étape 710 et le test 701 est réitéré.
Si au cours du test 705, 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'une étape 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 effectué.
La figure 6 décrit un algorithme de gestion de flux utilisé pour la gestion des pointeurs de lecture d'une FIFO.
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 le registre 50 PtR associés à la FIFO sont initialisés à l'adresse de la première case mémoire, ce qui signifie que le pointeur de lecture pointe vers la première case mémoire de la FIFO c'est-à-dire de la première page de la table 20 de numéros de pages.
Ensuite, au cours d'un test 201, le module de contrôle 107 détecte une requête de lecture de la FIFO.
Si aucune requête de lecture n'est détectée, le test 201 est réitéré.
Lorsqu'une requête de lecture est détectée lors du test 201, les paramètres de lecture sont initialisés au cours d'une étape 202 : une adresse AddrR de lecture de la DPRAM 106 est calculée par accès au registre 50 PtR 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
<Desc/Clms Page number 29>
de l'adresse AddrR. (On note que la première requête de lecture se fait à l'issue d'un événement 405 décrit 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 du pointeur de lecture PtR et le pointeur d'écriture Pew de la FIFO sont comparés.
L'égalité de la valeur a priori du pointeur de lecture PtR et du pointeur
Figure img00290001

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 (module la taille d'une page) correspondant à la valeur a priori du pointeur de lecture 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 50 PtR 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 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 PtR et PtW ne sont pas égaux. On effectue alors le test 208 dans l'affirmative et l'étape 207 dans la négative.
<Desc/Clms Page number 30>
Figure img00300001
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 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 50 PtR.
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
<Desc/Clms Page number 31>
acquittement de page ajoutée est généré (un signal IT~buff added 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.
Ensuite, au cours d'une étape 219, le registre 50 PtR est mis àjour avec la valeur de l'index courant et un offset nul.
Si al 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 10 de statut indique que le statut 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 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 est mis en ouvre (un signal ITbuffccancelled est affecté d'une valeur égale à 1) pour informer l'émetteur de la requête de diminution de la taille de la FIFO.
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 50 PtR est mis àjour avec la valeur d'index courant et un offset nul.
<Desc/Clms Page number 32>
Figure img00320001
La figure 7 décrit la manière dont sont implantées les acquittements des requêtes 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 size-decreased 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 ITbuff cancelled soit activé 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é 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.
<Desc/Clms Page number 33>
La figure 8 décrit l'algorithme d'autorisation de lecture utilisé à l'initialisation permettant la génération d'un événement de type seuil indiquant que la FIFO a atteint une valeur prédéterminée de données écrites et que les opérations de lecture de la FIFO 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 cadence de 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).
La FIFO est initialisée au cours d'une étape 400 à la suite d'une requête quelconque de création de FIFO ou au démarrage du moyen de contrôle de flux de données 105. Au cours de l'étape 400, on réserve notamment l'espace nécessaire aux registres de gestion de la FIFO (notamment les registres associés à la FIFO et qui sont décrits en regard de la figure 3)
Ensuite, le compteur 70 est initialisé à une valeur nulle au cours d'une étape 401.
Puis, au cours d'un test 402, le module de contrôle 107 attend que la FIFO soit accédée en écriture.
Puis, lorsque la FIFO a été accédée en écriture, le compteur 70 est incrémenté d'une unité.
Ensuite, au cours d'un test 404, le module de contrôle 107 compare la valeur du compteur 70 à la valeur contenue dans le registre 60 de seuil.
Lorsque le compteur 70 n'a pas atteint la valeur de registre 60 de seuil, le test 402 est réitéré.
Lorsque le compteur 70 a atteint la valeur du registre de seuil, au cours d'une étape 405, le module de contrôle 107 génère un événement de type seuil atteint qui permet la lecture des données.
Bien entendu, l'invention n'est pas limitée aux exemples de réalisation mentionnés ci-dessus.
<Desc/Clms Page number 34>
En particulier, l'homme du métier pourra apporter toute variante dans le type de mémoire utilisée pour mettre en covre les FIFOs de taille variable. Ces mémoires pourront notamment être de type mémoire RAM simple port ou multiports.
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 note également que l'invention ne se limite pas au cas où les données sont lues par un seul destinataire mais s'étend au cas où les données d'une FIFO peuvent être lues par plusieurs destinataires. Dans ce cas, plusieurs pointeurs de lecture sont associés à la FIFO. Chacun des pointeurs de lecture est géré indépendamment des autres pointeurs de lecture. En outre, le statut de lecture de la FIFO indiquera le nombre de destinataires ayant lu une donnée afin qu'une page écrite ne soit pas retirée de la FIFO avant d'être lue par tous les destinataires.
On notera que l'invention ne se limite pas à une implantation purement matérielle mais qu'elle peut aussi être mise en cuivre 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 me 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.

Claims (20)

  1. REVENDICATIONS 1. Procédé de gestion d'une mémoire comprenant un ensemble (106) d'au moins une FIFO (1) de taille variable dont l'accès est contrôlé à l'aide d'un pointeur d'écriture (Ptg) et au moins un pointeur de lecture etR), caractérisé en ce qu'il comprend une étape de modification (503,505) de la taille d'une desdites FIFO appartenant audit ensemble par un retrait (503) ou un ajout (505) d'un bloc d'au moins une case mémoire (la à If), 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.
  2. 2. Procédé selon la revendication 1, caractérisé en ce que ladite étape de modification comprend, pour une diminution (503) de la taille de ladite FIFO : - une sous-étape de vérification (206) qu'au moins une partie dudit bloc ne contient pas de données écrites qui n'ont pas été lues par leur ou leurs destinataires ; et - une sous-étape de diminution (211) de la taille de ladite FIFO permettant le retrait de ladite partie dudit bloc que ladite étape de vérification a confirmé qu'il ne contient pas de données écrites et non lues.
  3. 3. Procédé selon l'une quelconque des revendications 1 et 2, caractérisé en ce que ladite FIFO a un début (la) et une fin déterminés et que ledit emplacement déterminé coï ncide, avant ledit retrait, avec ladite fin de ladite FIFO lorsque ladite étape de modification comprend une sous-étape de diminution de la taille de ladite FIFO.
  4. 4. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce que ladite étape de modification comprend, pour une augmentation de la taille de ladite FIFO : une sous-étape d'augmentation de la taille de ladite FIFO permettant ledit ajout de ladite partie dudit bloc ; et
    <Desc/Clms Page number 36>
    - une sous-étape d'autorisation de lecture si ladite partie ajoutée dudit bloc contient au moins une donnée écrite après ledit ajout ; et/ou une sous-étape de saut de ladite partie dudit bloc par un ou des pointeurs de lecture si ladite partie ajoutée ne contient pas de donnée écrite après ledit ajout.
  5. 5. Procédé selon l'une quelconque des revendications 1 à 4, caractérisé en ce que ladite FIFO a un début (la) et une fin déterminés et que ledit emplacement coï ncide, après ledit ajout, avec ladite fin de ladite FIFO lorsque ladite étape de modification comprend une sous-étape d'augmentation de la taille de ladite FIFO.
  6. 6. Procédé selon l'une quelconque des revendications 1 à 5, caractérisé en ce qu'il comprend une étape de mise à jour d'un statut (705,206) associé à chaque partie de ladite FIFO lors d'une étape d'écriture de données dans ladite partie de ladite FIFO et lors d'une étape de lecture de l'ensemble des données écrites dans ladite partie de ladite FIFO et en ce qu'au moins une étape faisant partie du groupe comprenant :
    Figure img00360001
    - ladite étape de vérification selon la revendication 2 ; - ladite sous-étape de d'autorisation selon la revendication 4 ; et - ladite sous-étape de saut selon la revendication 4 ; prend en compte ledit statut mis àjour.
  7. 7. Procédé selon l'une quelconque des revendications 1 à 6, caractérisé en ce que ladite FIFO est découpée en pages (la à If) comprenant chacune un nombre prédéterminé de données élémentaires.
  8. 8. Procédé selon la revendication 7, caractérisé en ce que ladite FIFO est initialisée avec un nombre initial de pages (la à lc) prédéterminé lors de sa création et qu'à l'issue de ladite étape de modification, elle est susceptible de contenir un nombre de pages inférieur ou supérieur audit nombre initial de pages.
  9. 9. Procédé selon l'une quelconque des revendications 1 à 8, caractérisé en ce que ladite étape de modification de la taille de ladite FIFO est mise en avare après une étape de requête de modification de la taille de ladite FIFO faisant partie du groupe comprenant :
    <Desc/Clms Page number 37>
    - des détections d'un seuil de remplissage ; - des données de protocoles spécifiques ; des mesures d'amplitude de gigue dans le flux de données.
  10. 10. Dispositif de gestion d'une mémoire comprenant un ensemble d'au moins une FIFO (1) de taille variable dont l'accès est contrôlé à l'aide d'un pointeur d'écriture (putz et au moins un pointeur de lecture (PtR), caractérisé en ce qu'il comprend des moyens de modification de la taille d'une desdites FIFOs appartenant audit ensemble par retrait (503) ou ajout (505) d'un bloc d'au moins une case mémoire (la à If), 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.
  11. 11. Dispositif selon la revendication 10, caractérisé en ce que lesdits moyens de modification comprennent, pour une diminution de la taille de ladite FIFO : - des moyens de vérification qu'au moins une partie dudit bloc ne contient pas de données écrites qui n'ont pas été lues par leur ou leurs destinataires ; et des moyens de diminution de la taille de ladite FIFO permettant le retrait de ladite partie dudit bloc que lesdits moyens de vérification ont confirmé qu'il ne contient pas de données écrites et non lues.
  12. 12. Dispositif selon l'une quelconque des revendications 10 et 11, caractérisé en ce que ladite FIFO a un début et une fin déterminés et que ledit emplacement déterminé coï ncide, avant ledit retrait, avec ladite fin de ladite FIFO lorsque lesdits moyens de modification mettent en ouvre une diminution de la taille de ladite FIFO.
  13. 13. Dispositif selon l'une quelconque des revendications 10 à 12, caractérisé en ce que lesdits moyens de modification comprennent, pour une augmentation de la taille de ladite FIFO : des moyens d'augmentation de la taille de ladite FIFO permettant ledit ajout de ladite partie dudit bloc ; et
    <Desc/Clms Page number 38>
    - des moyens d'autorisation de lecture si ladite partie ajoutée dudit bloc contient au moins une donnée écrite après ledit ajout ; et/ou des moyens de saut de ladite partie dudit bloc par un ou des pointeurs de lecture si ladite partie ajoutée ne contient pas de donnée écrite après ledit ajout.
  14. 14. Dispositif selon l'une quelconque des revendications 10 à 13, caractérisé en ce que ladite FIFO a un début et une fin déterminés et que ledit emplacement coï ncide, après ledit ajout, avec ladite fin de ladite FIFO lorsque lesdits moyens de modification mettent en ouvre une augmentation de la taille de ladite FIFO.
  15. 15. Dispositif selon l'une quelconque des revendications 10 à 14, caractérisé en ce qu'il comprend des moyens de mise à jour d'un statut associé à chaque partie de ladite FIFO lors d'une écriture de données dans ladite partie de ladite FIFO et lors d'une lecture de l'ensemble des données écrites dans ladite partie de ladite FIFO et en ce qu'au moins des moyens faisant partie du groupe comprenant : - lesdits moyens de vérification selon la revendication 11 ; - lesdits moyens d'autorisation selon la revendication 13 ; et - lesdits moyens de saut selon la revendication 13 ; prennent en compte ledit statut mis àjour.
  16. 16. Dispositif selon l'une quelconque des revendications 10 à 15, caractérisé en ce que ladite FIFO est découpée en pages comprenant chacune un nombre prédéterminé de données élémentaires.
  17. 17. Dispositif selon la revendication 16, caractérisé en ce que ladite FIFO est initialisée avec un nombre initial de pages prédéterminé lors de sa création et qu'à l'issue d'une modification de taille, elle est susceptible de contenir un nombre de pages inférieur ou supérieur audit nombre initial de pages.
  18. 18. Dispositif selon l'une quelconque des revendications 10 à 17, caractérisé en ce que lesdits moyens de modification de la taille de ladite FIFO sont mise en avare après une requête de modification de la taille de ladite FIFO faisant partie du groupe comprenant :
    <Desc/Clms Page number 39>
    - des détections d'un seuil de remplissage ; - des données de protocoles spécifiques ; - des mesures d'amplitude de gigue dans le flux de données.
  19. 19. 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 à 9 lorsque ledit programme est exécuté sur un ordinateur.
  20. 20. 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 d'au moins une FIFO de taille variable dont l'accès est contrôlé à l'aide d'un pointeur d'écriture et au moins un pointeur de lecture, ledit programme étant enregistré sur un support utilisable dans un ordinateur, comprenant des moyens de programmation lisibles par ordinateur pour effectuer une étape de modification de la taille d'une desdites FIFO appartenant audit ensemble par 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.
FR0110158A 2001-07-27 2001-07-27 Procede et dispositif de gestion de memoire Expired - Fee Related FR2827996B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR0110158A FR2827996B1 (fr) 2001-07-27 2001-07-27 Procede et dispositif de gestion de memoire

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0110158A FR2827996B1 (fr) 2001-07-27 2001-07-27 Procede et dispositif de gestion de memoire

Publications (2)

Publication Number Publication Date
FR2827996A1 true FR2827996A1 (fr) 2003-01-31
FR2827996B1 FR2827996B1 (fr) 2003-12-26

Family

ID=8866059

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0110158A Expired - Fee Related FR2827996B1 (fr) 2001-07-27 2001-07-27 Procede et dispositif de gestion de memoire

Country Status (1)

Country Link
FR (1) FR2827996B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100411382C (zh) * 2004-03-04 2008-08-13 华为技术有限公司 一种先进先出处理芯片及其数据更新方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000074432A1 (fr) * 1999-05-28 2000-12-07 Network Equipment Technologies, Inc. Systeme de suppression equitable

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000074432A1 (fr) * 1999-05-28 2000-12-07 Network Equipment Technologies, Inc. Systeme de suppression equitable

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"FRAME HANDLER WITH DYNAMIC ALLOCATION OF BUFFER SPACE", IBM TECHNICAL DISCLOSURE BULLETIN, IBM CORP. NEW YORK, US, vol. 32, no. 6B, 1 November 1989 (1989-11-01), pages 37 - 40, XP000073673, ISSN: 0018-8689 *
DAS ET AL: "Dynamic allocation of buffer-space etc.", PROCEEDINGS OF THE SPIE, vol. 1364, September 1990 (1990-09-01), SPIE, BELLINGHAM, VA, US, pages 61 - 69, XP008004442 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100411382C (zh) * 2004-03-04 2008-08-13 华为技术有限公司 一种先进先出处理芯片及其数据更新方法

Also Published As

Publication number Publication date
FR2827996B1 (fr) 2003-12-26

Similar Documents

Publication Publication Date Title
EP1701274B1 (fr) Architecture de noeud de communication dans un système de réseau sur puce globalement asynchrone
FR2820921A1 (fr) Dispositif et procede de transmission dans un commutateur
FR2883116A1 (fr) Architecture de communication globalement asynchrone pour systeme sur puce.
FR2961048A1 (fr) Reseau sur puce avec caracteristiques de qualite-de-service
US7272150B2 (en) System and method for shaping traffic from a plurality of data streams using hierarchical queuing
FR2898753A1 (fr) Systeme sur puce a controle semi-distribue
FR2724277A1 (fr) Dispositif de mise en forme de trafic et appareil de communication par paquets.
FR2999367A1 (fr) Procede de transmission de donnees dans des unites de commande ecu et/ou des dispositifs de mesure dans le domaine automobile
FR2758681A1 (fr) Allocation a une pluralite d&#39;elements d&#39;autorisations d&#39;acces a une ressource partagee
EP0524070A1 (fr) Dispositif universel de couplage d&#39;un bus d&#39;ordinateur à un contrôleur d&#39;un groupe de périphériques
FR2804812A1 (fr) Procede et dispositif de communication entre un premier et un deuxieme reseau
FR2824434A1 (fr) Procede de diffusion d&#39;un paquet de donnees au sein d&#39;un reseau commute, base sur un calcul optimise de l&#39;arbre de recouvrement
EP0410860B1 (fr) Dispositif passerelle de connexion d&#39;un bus d&#39;ordinateur à un réseau fibre optique en forme d&#39;anneau
FR2827995A1 (fr) Procede et dispositif de gestion de memoire
FR2827996A1 (fr) Procede et dispositif de gestion de memoire
FR2790892A1 (fr) Procede et dispositif de controle de la synchronisation entre deux bus de communication serie d&#39;un reseau
FR2774242A1 (fr) Systeme et procede de commutation asynchrone de cellules composites, et modules de port d&#39;entree et de port de sortie correspondants
EP1845456A1 (fr) Système d&#39;interconnexions de blocs fonctionnels externes sur puce muni d&#39;un unique protocole parametrable de communication
FR3001310A1 (fr) Interface de reseau sur puce dotee d&#39;un systeme adaptatif de declenchement d&#39;envoi de donnees
EP1212879A1 (fr) Procede et systeme de transmission d&#39;une chaine de messages pour base de donnees
FR2848056A1 (fr) Procedes d&#39;insertion et de traitement d&#39;informations pour la synchronisation d&#39;un noeud destinataire a un flux de donnees traversant un reseau de base d&#39;un reseau heterogene, et noeuds correspondants
WO2020109733A2 (fr) Gestion des données pour le stockage de trames de données dans la mémoire d&#39;un système de transmission de données
EP0470875B1 (fr) Contrôleur de communication entre un ordinateur et une pluralité de terminaux de type RNIS
FR2820845A1 (fr) Procede d&#39;optimisation de l&#39;utilisation d&#39;un moyen de stockage, dispositif de commutation, signal, et applications correspondantes
FR2826535A1 (fr) Procede de diffusion de donnees utiles au sein d&#39;un reseau commute, base sur l&#39;utilisation de paquets de diffusion dynamique

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20140331