Brevet FR2871256A1 — publié le 20051209

La présente demande réclame l'avantage de la demande provisoire US n 60 572 272, enregistré le 17 mai 2004, intitulée Commande de flot de dispositif de stockage de Brian W. Hughes qui est incorporée ici en référence pour tout ce qui est décrit dans la présente. Contexte La plupart des dispositifs électronique; modernes contiennent une mémoire destinée à stocker les données soit temporairement ou à long terme, tels; que des télévisions qui enregistrent la dernière chaîne visionnée, les téléphones cellulaires qui stocker des numéros de téléphone et des informations concernant les appels entrants, etc. Une large gamme de systèmes de mémoire est connue, telle que les mémoires vives et les mémoires de type à empilement. Chaque type de système de mémoire présente des forces et des faibles et est utilisé dans différents types d'applications. Par exemple, les mémoires vives sont couramment utilisées lorsqu'une grande quantité d'espace de stockage est requise et chaque donnée doit être accessible individuellement à tout moment. Une mémoire vive requiert un circuit d'adressage relativement complexe, permettant à chaque donnée d'être adressée et. extraite à tout moment, dans un ordre quelconque. Pour d'autres applications, des systèmes de mémoire plus simples peuvent être acceptables ou souhaitables. Un tel système de mémoire est une mémoire de type à empilement, dans lequel les données sont stockées de manière séquentielle dans une liste et extraites dans un ordre prédéterminé, plutôt que chaque donnée qui est adressable individuellement et accessible à tout moment. Comme les données sont écrites dans la mémoire de type à empilement, elles remplissent la mémoire comme si on ajDutait à empilement ou une pile de données. Comme leB données sont lues dans la mémoire de type à empilement, elles vident la mémoire comme si on retirait des é:Léments de l'empilement, laissant de la place pour qui plus de données soient écrites. Une mémoire de type à empilement classique est une mémoire premier entré premier sorti (PEPS), dans laquelle la première donnée écrite dans une entrée du PEPS est la première donnée lue depuis une sortie du PEPS. Une application courante des systèmes de mémoire de type à empilement est en tant que tampon de communications entre deux circuits électroniques. Si le premier circuit électronique envoie un flot de données vers le deuxième circuit électronique, le deuxième doit généralemen: stocker temporairement ou mettre en tampon les données comme elles arrivent, jusqu'à ce qu'il soit prêt à utiliser les donnés. Si le deuxième circuit électronique utilise les données dans l'ordre dans lequel elles sont reçues, il n'existe généralement aucun besoin d'accéder de manière aléatoire aux données dans un quelconque autre ordre, et un PEPS est un dispositif de stockage simple et peu coûteux qui répond à ces exigences. Un inconvénient d'une mémoire de type à empilement est qu'elle peut déborder et perdre des données si elle continue de recevoir des données après être devenue pleine, avant que de quelconques données soient lues depuis la mémoire pour libérer de l'espace. Résumé Un exemple de mode de réalisation peut comprendre un procédé pour attribuer des crédits d'écriture de données pour un dispositif de stockage, le procédé comprenant la collecte de requêtes pour le5. crédits d'écriture de données provenant d'une pluralité de sources de données et l'assemblage de la pluralité de sources de données dans une liste hiérarchisée. Le procédé comprend également le retrait des sources de données de priorité la plus basse une par une de la liste hiérarchisée jusqu'à ce qu'un total des requêtes effectuées par toutes les sources de données restant dans la liste hiérarchisée se trouve dans un nombre de crédits d'écriture de données disponibles, et l'accord des requêtes pour toutes les sources de données restantes dans la liste hiérarchisée. Brève description des dessins Des modes de réalisation illustratifs sont 10 représentés sur les dessins en annexe tels que décrits ci-dessous. La figure 1 est un schéma de principe d'un exemple de source et de destination illustrant un flot de données. La figure 2 est un schéma de principe d'un exemple d'un arbitre commandant le flot de données c.epuis une paire de sources de données vers une destination. La figure 3 est un schéma de principe d'un exemple de circuit destiné à traiter des requêtes pour des crédits d'écriture de données vers une paire de sources de données. La figure 4 est un schéma de principe d'un exemple de dispositif basé sur processeur destiné à traiter les requêtes pour des crédits d'écriture de données vers trois sources de données. La figure 5 est un organigramme d'un exemple de fonctionnement pour traiter les requêtes pour des crédits d'écriture de données provenant d'un groupe de sources de données, leur permettant de stocker des données dans un dispositif de stockage collectif. La figure 6 est un organigramme d'un autre exemple de fonctionnement pour traiter des requêtes pour des crédits d'écriture de données provenant d'un groupe de sources de données, leur permettant de stocker des données dans un dispositif de stockage collectif. 2871256 4 Description Les dessins et la description, en général, décrivent un procédé et un dispositif de=stinés à commander le flot de données provenant d'un groupe de sources de données en direction d'un dispositif de stockage partagé ou collectif. Dans un exemp].e de mode de réalisation, le dispositif de stockage comprend une mémoire de type à empilement telle qu'une mémoire premier entré premier sorti (PEPS). Le flot de données en direction du PEPS est commandé en attribuant des crédits d'écriture de données au groupe de sources de données en réponse à leurs requêtes. Les données peuvent être écritures dans le dispositif de stockage par une source de données uniquement lorsque des crédits lui sont accordés, un crédit par donnée, empêchant de ce fait le dispositif de stockage de déborder et de supprimer des données. Le procédé et le dispositif destinés à commander le flot de données vers le dispositif de stockage partagé décrit dans la présente permettent à de multiples requêtes de crédit simultanées d'être arbitrées et hiérarchisées, de multiples requêtes étant accordées simultanément si suffisamment de crédits sont disponibles. Un exemple de système 10 contenant un tel dispositif de stockage partagé et un groupe de sources de données est illustré sur la figure 1. Les données sont transmises entre une source 12 et une destination 14 sur un quelconque type de connexion 16, telle qu'une connexion par câble directe, une connexion réseau, une connexion sans fil, etc. La source 12 contient un groupe de sources de données 20, 22, 24 et 26, à partir duquel des données sont envoyées en direction du dispositif de stockage 30 dans la destination 14. Un arbitre 32 communique avec les sources de données 20, 22, 24 et 26, recevant des requêtes pour des crédits et accordant ou refusant les requêtes. Un ccmpteur de crédit 34 dans la source 12 contient le nombre de crédits disponibles représentant des espaces vides ou emplacements dans le dispositif de stockage. L'arbitre 32 lit le compteur de crédit 34 pour obtenir le nombre de crédits disponibles lorsqu'il détermine les requêtes de crédit à accorder, le cas échéant. Une partie du système 10 est reproduite sur la figure 2, illustrant les messages passant entre l'arbitre 32 et deux des sources de données20 et 22. Pendant le fonctionnement du système 10, les sources de données (par exemple, 20 et 22) peuvent transmettre une requête pour des crédits en direction de l'arbitre 32 qui leur permet d'écrire des données dans le dispositif de stockage 30 dans la destination 14. Chaque source de données (par exemple, 20 et 22) qui comprend des données à stocker dans le dispositif de stockage 30 indique à l'arbitre 32 le nombre de crédits dont elle a besoin 40 et 42. L'arbitre 32 obtient le:nombre de crédits disponibles en provenance du compteur de crédit 34 et détermine s'il peut accorder les requêtes. Si oui, il indique 44 et 46 aux demandeurs 20 et 22 qu les requêtes de crédit sont accordées. Les demandeurs 20 et 22 peut ensuite écrire les données dans le dispositif de stockage 30. Dans un exemple de mode de réalisation, les sources de données 20 et 22 peuvent, pour un nombre quelconque de raisons, utiliser tous les crédits accordés. Dans ce cas, les sources de données 20 et 22 transmettent le nombre de crédits utilisés 50 et 52 vers l'arbitre 32, qui met à jour le compteur de crédit 34 en soustrayant les crédits utilisés du compte de crédit disponible. Le nombre de crédits disponibles dans le compteur 35 de crédit 34 est augmenté lorsque les données sont lues ou effacées du dispositif de stockage 30. Des crédits peuvent être augmentés dans le compteur de crédit 34 par l'arbitre 32 pour par un autre élément (non représenté) qui gère les opérations de lecture de données depuis le dispositif de stockage 30. Comme cela est décrit de manière plus détaillée ci-dessous, l'arbitre 32 dans un exemple de mode de réalisation hiérarchise les sources de données qui demandent des crédits, accordant les requêtes avec la priorité la plus haute en premier. Les priorités des sources de données peuvent être déterminées par l'arbitre 32 ou peuvent être fournies à l'arbitre 32 par un autre élément du système 10. Dans unes variante de mode de réalisation, l'arbitre 32 peut fonder l'ordre de considération de requête sur le nombre de crédits demandés plutôt que sur la priorité du demandeur. Le procédé et le dispositif destinés à commander le flot de données provenant d'un groupe de sources de données en direction d'un dispositif de stockage ne sont pas limités à la configuration illustrés sur les figures 1 et 2. Par exemple, les sources de données 20, 22, 24 et 26 et le dispositif de stockage 30 n'ont pas besoin d'être dans des éléments différents 12 et 114 ou emplacements. Un nombre quelconque de sources de données peut être supporté, à partir de deux. Une source de données unique peut également être Supportée, bien que le besoin d'un arbitrage hiérarchisé soit éliminé lorsqu'une seule source de données demande des crédits. Les sources de données 20, 22, 24 et 26 n'ont pas besoin de demander des crédits pendant chaque cycle d'écriture et seules celles qui demandent des crédits sont comprises dans le traitement de requête de crédit par l'arbitre 32. Les sources de données 20, 22, 24 et 26 ne sont pas nécessairement le créateur ou l'origine des données écrites dans le dispositif de stockage 30. Les sources de donnés 20, 22, 24 et 25 peuvent seulement être une conduite depuis un point précédent dans un système. Le format et le contenu des données provenant des sources de données 20, 22, 24 et 26 ne sont pas limités, de quelque manière que ce soit, par le procédé et le dispositif destinés à commander le flot de données. Par exemple, les éléments de données peuvent contenir une identification de la source de données (par exemple, 20) d'où ils proviennent, ou une identification d'une destination finale en aval, si nécessaire. Les données peuvent être transmises par une quelconque manière adaptée, telle qu'une architecture de buse basée sur des paquets, un flot de données en série, etc. Le procédé et le dispositif destinés à commander le flot de données vers le dispositif de stockage arbitrent de multiples requêtes de crédit simultanées, de multiples requêtes étant accordées simultanément si suffisamment de crédits sont disponibles. Il est à noter que l'accord simultané de crédits, ou]'écriture simultanée de données par des sources dei données multiples, ne signifie pas nécessairement que les sources de données reçoivent les crédits au même instant ou qu'elles peuvent toutes transmettre des données pour stockage dans le dispositif de stockage au même instant. Plutôt, l'accord simultané de crédits ou l'écriture simultanée de données signifie que l'arbitre collecte et traite les requêtes de crédit provenant des sources de données ensemble, par exemple, dans un cycle d'écriture dans le système, plutôt que de traiter une seule requête de crédit à la fois. Dans un exemple de mode de réalisation dans lequel les sources de données sont hiérarchisées, l.. procédé et le dispositif destinés à commander le flot de données vers le dispositif de stockage retiennent toutes les requêtes de priorité basse jusqu'à ce que les requêtes de priorité haute soient achevées. Dans ce mode de réalisation, toutes les requêtes de crédit sont rejetées jusqu'à ce qu'assez de crédits soient disponibles pour le demandeur de priorité supérieure, empêchant les requêtes de priorité basse petites mais fréquentes de maintenir le dispositif de stockage trop plein pour une grande requête de priorité haute. Se rapportant maintenant à la figure 3, un exemple de circuit 70 destiné à traiter les requêtes de crédit est décrit. Cet exemple de circuit 70 traite les requêtes de crédit provenant de deux sources de données en fonction des entrées de requête de crédit. DSl need 72 et DS2need 74 provenant des deux sources de données et d'une entrée de compte de crédit disponible credit_count 76. Un additionneur 80 est utilisé pour calculer une requête de crédit totale total r.eed 82 en ajoutant les requêtes de crédit DS1 need 72 et: DS2 need 74 provenant des deux sources de données. Trois comparateurs 84, 90 et 94 comparent la requête de crédit total total_ need 82, la requête de crédit DS1need 72 provenant de la première source de données, et la requête de crédit DS2_need 74 provenant de la deuxième source de données, respectivement, avec le nombre de crédits disponibles credit_count "6. Si le nombre de crédits disponibles credit_count 76 est supérieur à la requête de crédit total total need 82, le signal enable_both 86 est validé, inc.ique que suffisamment de crédits sont disponibles pour accorder les requêtes provenant des deux sources de données. Si le nombre de crédits disponibles credit_count 76 est supérieur à la requête de crédit DSl_need 72 provenant de la première source de données, le signal enable DSl 92 est validé, indique que suffisamment de crédits sont disponibles pour accorder la requête provenant de la première source de données. Si le nombre de crédits disponibles credit_count 76 est supérieur à la requête de crédit DS2_need 74 provenant de la deuxième source de données, le signal enableDS2 96 est= validé, indiquant que suffisamment de crédits sont disponibles pour accorder la requête provenant de la deuxième source de données. Les sources de données sont hiérarchisées, en fonction de la valeur du signal de priorité :00. Si la valeur du signal de priorité 100 est zéro, la première source de données (sur l'entrée 72) présente la priorité la plus haute. Si la valeur du signal de priorité 100 est un, la deuxième source de données (sur l'entrée 74) présente la priorité la plus hE.ute. Deux portes ET 102 et 106 sont utilisées pour appliquer le signal de priorité 100 sur le signal enable DSl 92 et le signal enableDS2 96 de sorte qu'une ou l'autre des requêtes de crédit individuelles mais pas les deux, puissent être accordées. La seule manière dans l'exemple de circuit 70 pour que les deux requêtes de crédit soient accordées est s'il existe suffisamment de crédits disponibles pour la somme des deux requêtes, comme cela est déterminé par l'additionneur 80. La première porte ET 102 présente deux entrées, le signal enableDSl 92 et une version inversée du signal de priorité 100. La sortie 104 de la première porte ET 102 est validée uniquement si le signal enable DS1 92 est validé, indiquant qu'il existe suffisamment de crédits disponibles pour la requête de crédit DS1 need 72 provenant de la première source de données, et que la première source de données a la priorité. La deuxième porte ET 106 comprend deux entrées, le signal enableDS2 96 et le signal de priorité 100. La sortie 110 de la deuxième porte ET 106 est validée uniquement si le signal enable_DS2 96 est validé, indiq.iant qu'il existe suffisamment de crédits disponibles pour la requête de crédit DS2_need 74 provenant de la deuxième source de données, et que la deuxième source 3e données a la priorité. Les signaux de sortie 114 et 120 indiquent chacun à l'une des sources de données que leur requête de crédit a été accordée. La première, DS1 can send 114, permet à la première source de données d'écrire ses entrées de données dans le dispositif de stockage, jusqu'au nombre de crédits qu'elle a demandés. Le deuxième, DS2cansend 120, permet à la deuxième source de données d'écrire ses entrées de données dans le dispositif de stockage, jusqu'au nombre de crédits qu'elle a demandés. Le signal DS1 can send 114 est généré par une porte OU 112 avec deux entrées, la première connectée au signal enable both 86, la deuxième connectée à la sortie 104 de la première porte ET 102. Le signal DSl_can_send 114 est par conséquent validé lorsque le signal enable both 86 est validé ou le signal enable_DS1 92 est validé et la première source de données a la priorité (lorsque le signal de priorité 100 est bas). Le signal DS2_can_send 120 est généré par une porte OU 116 avec deux en:rées, la première connectée au signal enable both 86, la deuxième connectée à la sortie 110 de la deuxième porte ET 106. Le signal DS2_can_send 120 est par conséquent validé lorsque le signal enable both 86 est validé ou le signal enable DS2 96 est validé et la deuxième source de données a la priorité (lorsque le signal de priorité 100 est haut). La table d'état suivante illustre le fonctionnement de l'exemple de circuit 70. La table d'état comprend des valeurs pour les signaux DSl need 72, DS2_need 74, credit_count 76 (répertorié comme crédits ), priorité 100, DS1_can_send 114 et DS2_can_send 120 (répertoriés comme DS1 CS et DS2_CS). DS1 need DS2 need crédits priorité DS1 CS DS2 CS 8 2 10 x 1 1 8 2 8 0 1 0 8 2 8 1 0 1 8 2 2 0 0 0 8 2 2 1 0 1 8 2 0 x 0 0 Dans tous les cas dans la table ci-dessus, la première source de données demande huit crédits à l'aide du signal DS1 need 72, et la deuxième source de _ données demande deux crédits à l'aide du signal DS2 need 74. Dans le premier cas représenté dans la première ligne de la table d'état, il existe dix crédits disponibles, indiquant que le dispositif de stockage comprend dix emplacements vides. Dans ce cas, le signal total_need 82 calculé par l'additionneur 80 est huit plus deux ou dix; le comparateur 84 compare le besoin total (dix) avec le crédit disponible (dix), et étant donné qu'il existe suffisamment de crédits disponibles pour accorder cette requête totale, valide le signal enable both 86. (L'exemple de c:_rcuit 70 utilise une logique haute active, donc les signaux validés présentent une valeur élevée, ou la valeur une, tandis que les signaux non validés préser..tent une valeur basse, ou la valeur zéro.) Les deux sorties DS1cansend 114 et DS2cansend 120 sont par conséquent validées par les portes OU 112 et 116, quel que soit l'état du signal de priorité 100 et des signaux enable_DSl et enable_DS2 92 et 96. Dans le deuxième cas représenté dans la ligne deux de la table d'état, il existe seulement huit: crédits disponibles, assez pour accorder l'une ou l'autre requête mais pas les deux. Le signal de priorité 100 est zéro, donnant la priorité à la première source de données et sa requête sur DSl_need 72. Les signaux enable DSl et enable DS2 92 et 96 sont tous deux validés, car il existe assez de crédits disponibles pour accorder l'une ou l'autre requête. Le signal enableboth 86 n'est pas validé, car il n'existe pas assez de crédits disponibles pour accorder le deux. Le signal DS1_can_send 114 est validé, accordant la requête de la première source de données, car enableDSl 92 et l'inverse de la priorité 100 sont tous deux validés, ce qui valide la sortie 104 de la porte ET 102. Le signal DS2_can_send 120 n'est pas validé car bien que le signal enable_DS2 96 soit validé, le signal de priorité 100 ne l'est pas, de sorte que 1E. porte ET 106 masque le signal enable DS2 96. Dans le troisième cas représenté dans la troisième ligne de la table d'état, il existe dei nouveau seulement huit crédits disponibles, assez pour accorder l'une ou l'autre requête mais pas les deux. Le signal de priorité 100 est un, donnant la priorité à la deuxième source de données et sa requête sur DS2 need 74. Les signaux enable DS1 et enable DS2 92 et 96 sont tous deux validés, car il existe assez de crédits disponibles pour accorder l'une ou l'autre requête. Le signal enable_both 86 n'est pas validé, car il n'existe pas assez de crédits disponibles pour accorder les deux. Le signal DS2_can_send 120 est validé, accordant la requête de la deuxième source de donn=es, car enableDS2 96 et la priorité 100 sont tous deux validés, ce qui valide la sortie 110 de la porte E7 106. Le signal DS1_can_send 114 n'est pas validé, car bien que le signal enable_DSl 92 soit validé, l'inverse du signal de priorité 100 ne l'est pas, de sorte que la porte ET 102 masque le signal enable DS1 92. Dans la ligne quatre de la table d'état, il existe seulement deux crédits, assez pour accorder uniquement la requête provenant de la deuxième source d= données. Le signal de priorité 100 est zéro, donnant la priorité à la première source de données et sa requête sur DS1_need 72. Les signaux enable both et enable DS1 86 et 92 ne sont pas validés car il n'existe pas assez de crédits disponibles pour accorder la requête provenant des deux sources de données ou de la première source de données seule. Le signal enableDS2 96 est validé, car il existe assez de crédits disponibles pour accorder la requête provenant de la deuxième source de données. Ni le signal de sortie DS1 can send 114 ni DS2 can send 120 ne sont validés, même s'il existe assez de crédits disponibles pour accorder la requête provenant de la deuxième source de données, car il n'existe pas assez de crédits disponibles pour accorder la requête provenant de la requête de priorité supérieure provenant de la première source de données. La porte ET 106 masque le signal enable_DS2 96 car le signal de priorité 100 est zéro. La logique retient ainsi les requêtes de priorité inférieure jusqu'à ce que les requêtes de priorité supérieure puissent être accordées. Dans la ligne cinq de la table d'état, il existe seulement deux crédits, assez pour accorder uniquement la requête provenant de la deuxième source de données. Le signal de priorité 100 est un, donnant la priorité à la deuxième source de données et sa requête sur DS2_need 74, contrairement au cas représenté, dans la ligne quatre de la table d'état et décrit cidessus. Dans ce cas, la requête de priorité supérieure par la deuxième source de données sur DS2_ned est accordée, validant DS2cansend 120 mais pas DS1 can send 114. Enfin, dans la ligne six de la table d'état, il n'existe aucun crédit disponible, donc aucune requête n'est accordée quel que soit l'état du signal de priorité 100, et ni le signal de sortie DS1 can send 5 114 ni DS2 can send 120 n'est validé. Dans l'exemple de circuit 70, si les sources de données n'ont pas besoin de quelconques crédits, les signaux d'entrée DS1 need 72 ou DS2 need 74 sont définies à un état indiquant que zéro crédit est nécessaire. Etant donné qu'une requête pour zéro crédit est toujours inférieure ou égale au nombre de crédits disponibles, le signal d'accord DS1 can send 114 ou DS2_can_send 120 peut être validé selon la valeur du signal de priorité 100. La source de données ignore une telle requête accordée si elle n'a besoi:-i d'aucun crédit. Dans des variantes de mode de réalisation, l'exemple de circuit 70 peut être modifié avec un autre signal provenant de chaque source de données indiquant s'il effectue une requête pour éviter d'accorder une requête pour zéro crédit, ou les entrées DS1 need 72 ou DS2_need 74 peuvent être vérifiées dans le circuit pour désactiver les sorties DS1 can send 114 ou DS2 can send 120 si la valeur de requête d'entrée est zéro. Se rapportant maintenant à la figure 4, ].e procédé et le dispositif destinés à commander le flot de données provenant d'un groupe de sources de données en direction d'un dispositif de stockage partagé peuvent être mis en oeuvre à l'aide d'un processeur 130 exécutant un code de programme. L'exemple de dispositif basé sur processeur illustré sur la figure 4 arbitre les requêtes de crédit provenant de trois sources de données en fonction de trois entrées de requête de crédit 132, 134 et 136 provenant des trois sources de données et du compte de crédit disponible 140. dans ce mode de réalisation, le processeur 130 affecte les priorités qui sont établies à l'avance et comprises dans le code de programme sur les trois:sources de données, ou génère des priorités pendant l'exécution à l'aide d'un quelconque algorithme adapté. Pa exemple, le processeur 130 peut appliquer un plan de priorité tournante pour donner à chaque source de données un tour à la priorité la plus haute. Le processeur 130 peut en variante baser les priorités sur des statistiques de trafic de données, telle, que la fréquence et la taille des requêtes de crédit provenant de chaque source de données. Le processeur 130 valide les trois sorties, DS1 can send 142, DS2 car.. send 144 et DS3cansend 146, pour accorder les requêtes de crédit des trois sources de données, leur permettant d'écrire dans le dispositif de stockage partagé. Le processeur 130 peut exécuter un code de programme tel que l'exemple de pseudo-code suj.vant pour déterminer le moment où valider les trois sorties, DS1 can send 142, DS2 can send 144 et DS3 can send 146. Dans le mode de réalisation illustré sur la figure 4, le nombre de demandeurs, n, est trois. Collecter demandes de crédit en provenance de n demandeurs Calculer une requête de crédit total pour chaque demandeur où tO = nombre total de crédits demandés en provenance de tous les demandeurs tl = nombre total de crédits demandés en 30 provenance de tous les demandeurs, à l'exception du demandeur à la priorité la plus basse t2 = nombre total de crédits demandés en provenance de tous les demandeurs, à l'exception des deux demandeurs à la priorité la plus basse tn = crédits demandés par le demandeur à la priorité la plus haute Accorder les crédits comme suit si tO ≤ le nombre de crédits disponibles (accorder toutes les requêtes) sinon si tl ≤ le nombre de crédits disponibles (accorder toutes les requêtes à l'exception de la requête à la priorité la plus basse) sinon si t2 ≤ le nombre de crédits disponibles (accorder toutes les requêtes à l'exception des deux requêtes à la priorité la plus basse) sinon si tn ≤ le nombre de crédits d::sponibles (accorder la requête à la priorité la plus haute) sinon (accorder aucune requête) Se rapportant maintenant à la figure 5, un exemple de fonctionnement pour traiter les requêtes de crédit provenant d'un groupe de sources de données pour un dispositif de stockage collectif est représenté. Des requêtes pour les crédits sont collectée; 150 en provenance d'un groupe de sources de données. Les crédits demandés, si nécessaire, permettent au groupe de sources de données de stocker une entrée de données par crédit dans un dispositif de stockage collectif. Le groupe de source de données est assemblé 152 dans une liste selon une priorité pour chacun du croupe de sources de données. Le nombre de créditsdemandés en provenance du groupe de sources de données restant dans la liste est totalisé 154. Si 156 il existe suffisamment de crédits disponibles pour accorder tous les crédits demandés à toutes les sources de données restantes dans la liste, les crédits demandés sont accordés 160 à toutes les sources de données restantes dans la liste. Si 156 il n'existe pas suffisamment de crédits disponibles pour accorder tous les crédits demandés à toutes les sources de données restantes dans la liste, la source de données à la priorité la plus basse est retirée 162 de la liste. Si 164, à ce stade, la liste est vide, aucune requête n'est accordée 166. Si 164 la liste n'est pas vide, le nombre de crédits demandés provenant du groupe de sources de données restantes dans la liste est de nouveau totalisé 154 et le procédé continue jusqu'à ce qu'un groupe de sources de données soit identifié pour les requêtes pour lesquelles suffisamment de crédits sont disponibles, ou jusqu'à ce que la liste soit vide. Se rapportant maintenant à la figure 6, un autre exemple de fonctionnement pour traiter les requêtes de crédit provenant d'un groupe de sources de données pour un dispositif de stockage collectif est représenté, ce mode de réalisation correspondant plus étroitement au pseudo-code répertorié ci-dessus par rapport à la figure 4. Une priorité est déterminée 200 poir chacune d'un groupe de sources de données demandant des crédits de sorte que le groupe de sources de données demandeuses est classé de la priorité la pluB haute à la priorité la plus basse. Pour chacune du groupe de sources de données, un total de requête de crédit est calculé 202 en ajoutant le nombre de crédits demandés par la source de données plus le nombre de crédits demandés par chacune du groupe de sources de données présentant une priorité supérieure à la Source de données. Le total de demande de crédit le plus grand pour lequel suffisamment de crédits sont disponibles est identifié 204, et la requête de chaque source de données dont la requête de crédit est comprise dans le total de requête de crédit le plus grand est accordée. Un exemple de mode de réalisation du dispositif destiné à commander le flot de données en direction d'un dispositif de stockage peut comprend un code de programme lisible par ordinateur stocké sur au moins un support lisible par ordinateur pour exécution dans un processeur (par exemple, 130) tel que cela est illustré sur la figure 4. L'exemple de code de programme lisible par ordinateur comprend un code destiné à déterminer une priorité de chacune d'une pluralité de sources de données demandant des crédits. Le code de programme lisible par ordinateur comprend également un code qui, pour chacune de la pluralité de sources de données, calcule un total de requête de crédit en ajoutant un nombre de crédits demandés par la source de données plus un nombre de crédits demandés par chacune de la pluralité de sources de données présentant une priorité supérieure à la source de données. Le code de programme lisible par ordinateur comprend également un code pour identifier un total de requête de crédit le plus grand pour lequel suffisamment de crédits sont disponibles, et pour accorder la requête de chaque source de données dont la requête de crédit est comprise dans lei total de requête de crédit le plus grand. Divers codes lisibles ou exécutables par ordinateur ou diverses instructions exécutables électroniquement ont été prises en référence ici. Ceux-ci peuvent être mis en oeuvre d'une quelconque manière adaptée, telle qu'un logiciel, un micrologiciel, des circuits électroniques câblés, ou la programmation dans une matrice de porte, etc. Le logiciel peut être programmé dans un quelconque langage de programmation, tel que le langage machine, le langage d'assemblage ou des langages de haut niveau tels que C ou C++. Les programmes d'ordinateur peuvent être interprétés ou compilés. 2871256 19 Le code lisible ou exécutable par ordinateur ou les instructions exécutables électroniquement peuvent être tangiblement mis en oeuvre sur un quelconque support de stockage lisible par ordinateur ou dans un quelconque circuit électronique destiné à être utilisé par ou en connexion avec un quelconque dispositif d'exécution d'instructions, tel qu'un processeur à usage général, un émulateur logiciel, un circuit spécifique de l'application, un circuit cDmposé de portes logiques, etc. qui peuvent accéder ou mettre en oeuvre et exécuter le code ou les instructions. Des procédés décrits et revendiqués dans la présente peuvent être réalisés par l'exécution d'un code lisible ou exécutable par ordinateur ou d'instructions exécutables électroniquement, tangiblement mis en oeuvre sur un quelconque support de stockage lisible par ordinateur ou dans un quelconque circuit électronique tel que décrit ci-dessus. Un support de stockage destiné à mettre en oeuvre tangiblement le code lisible ou exécutable par ordinateur ou les instructions exécutables électroniquement comprend de quelconques moyens qui peuvent stocker, transmettre, communiquer ou d'une quelconque manière propager le code ou les instructions destinés à être utilisés par ou en connexion avec le dispositif d'exécution d'instructions. Par exemple, le support de stockage peut comprendre (mais sans s'y limiter) un quelconque dispositif de stockage électronique, magnétique, optique ou autre, ou un quelconque support de transmission tel qu'un conducteur électrique, une transmission électromagnétique, optique, infrarouge, etc. Le support de stockage peut même comprendre un circuit électronique, avec le code ou les instructions représentés par la conception du circuit électronique. Des exemples spécifiques compre:znent des 2871256 20 disques magnétiques ou optiques, à la fois fixes et amovibles, des dispositifs de mémoire à semi-conducteur tels que les cartes mémoire et les mémoires mortes (ROM), y compris les ROM programmables et effaçables, les mémoires non volatiles (NVM), les fibres optiques, etc. Les supports de stockage pour mettre en oeuvre tangiblement le code ou les instructions comprennent également des supports imprimés tels que des impressions informatiques sur papier qui peuvent être numérisées optiquement pour extraire le code ou les instructions qui peuvent, à leur tour, être analysés, compilés, assemblés, stockés et exécutés par un dispositif d'exécution d'instruction. Le code ou les instructions peuvent également être mis en oeuvre tangiblement comme un signal électrique dans un support de transmission tel que l'Internet ou d'autres types de réseau, à la fois câblés et sans fil. Alors que des modes de réalisation il].ustratifs ont été décrits en détail dans la présente, il doit être compris que les concepts décrits dans la présente peuvent être autrement mis en oeuvre et ut.Llisés de manière variée, et que les revendications en annexe sont destinées à être interprétées comme comprenant ces variations, à l'exception des limites par l'art antérieur. REVENDICATIONS 1. Procédé destiné à attribuer des crédits d'écriture pour un dispositif de stockage (30), le procédé comprenant les étapes consistant à : collecter (150) des requêtes pour lesdits crédits d'écriture de données provenant d'une pluralité de sources de données; assembler (152) ladite pluralité de sources de données dans une liste hiérarchisée; retirer (162) les sources de données dei priorité la plus basse une par une de ladite liste hiérarchisée jusqu'à ce (156) qu'un total des requêtes effectuées par toutes les sources de données restantes dans ladite liste hiérarchisée est dans un nombre de crédits 15 d'écriture de données disponibles; et accorder (160) lesdites requêtes pour toutes les sources de données restantes dans ladite liste hiérarchisée. 2. Procédé selon la revendication 1, comprenant en outre l'étape consistant à calculer (154) ledit total desdites requêtes effectuées par toutes les Sources de données restantes dans ladite liste hiérarchisée chaque fois que ladite liste hiérarchisée est modifiée. 3. Procédé selon la revendication 1, comprenant en outre l'étape consistant à lire ledit nombre ce crédits d'écriture de données disponibles à partir d'un compteur de crédit (34). 4. Procédé selon la revendication 3, comprenant en outre l'étape consistant à collecter un compte de crédit utilisé (50, 52) à partir de chacune desdites sources de données dont les requêtes ont été accordées, dans lequel lesdits comptes de crédit utilisés indiquent combien de crédits ont été réellement utilisés par lesdites sources de données, ledit procédé comprenant en outre l'étape consistant à mettre à jour ledit compteur de crédit en fonction desdits comptes de crédit utilisés. 5. Dispositif destiné à traiter les requêtes provenant d'une pluralité de sources de données pour 5 des crédits d'écriture de données pour un dispositif de stockage collectif, comprenant: un additionneur (80) comprenant une pluralité d'entrées, chacune connectée à un signal de requête de crédit (72, 74) provenant de chaque source de données de ladite pluralité de sources de données, ledit additionneur comprenant une sortie (82) réalisant une indication d'un besoin de crédit total provenant de ladite pluralité de sources de données; t une pluralité de comparateurs (84, 90, 94) comprenant chacun une première entrée et une deuxième entrée, dans lequel chacun desdits signaux de requête de crédit (72, 74) est connecté à une unique desdites premières entrées de comparateur, et dans lequel ladite sortie d'additionneur (82) est connectée à une unique desdites premières entrées de comparateur, lesdites deuxièmes entrées de comparateur étant connectées à un signal de crédit disponible (76), ladite pluralité de comparateurs, comprenant chacun une sortie (8E, 92, 96), portant un signal de crédit suffisant ind:_quant si suffisamment de crédits sont disponibles pour accorder un nombre de crédits indiqués au niveau d'une première entrée de comparateur correspondante. 6. Dispositif selon la revendication 5, comprenant en outre une pluralité de portes ET (102, :L06), une pour chacune de ladite pluralité de sources de données, ladite pluralité de portes ET comprenant une première entrée et une deuxième entrée, ladite première entrée de chaque porte ET de ladite pluralité de portes ET étant connectée à une sortie (92, 96) d'L.n unique comparateur de ladite pluralité de comparateurs (90, 94) dont la première entrée est connectée à un desdits signaux de requête de crédit, ladite deuxième entrée de chaque porte ET de ladite pluralité de porte, ET étant connecté à un signal de priorité (100) indiquant une priorité d'une source de données correspondan:e. 7. Procédé selon la revendication 6, dans lequel ledit signal de priorité comprend un signal unique et dans lequel ledit signal de priorité est connecté directement à ladite deuxième entrée d'une porte ET de ladite pluralité de portes ET et est co::inectée à travers un inverseur à ladite deuxième entrée d'une autre porte ET de ladite pluralité de portes ET. 8. Procédé selon la revendication 6, comprenant en outre une pluralité de portes OU (112, 116), une pour chaque source de données de ladite pluralité de sources de données, chaque porte OU de ladite pluralité de portes OU comprenant une première entrée et une deuxième entrée, lesdites premières entrées étant connectées à ladite sortie (86) dudit compare. teur (80) comprenant ladite première entrée connectée à ladite sortie d'additionneur (82), lesdites deuxièmes entrées étant chacune connectées à une sortie (104, 110) d'une unique porte ET de ladite pluralité de portes ET, ladite pluralité de portes OU comprenant chacune une sortie (114, 120) indiquant si une requête de crédit provenant d'une source de données correspondante est accordée. 9. Dispositif destiné à commander un flot de données en direction d'un dispositif de stockage, 30 comprenant. a. au moins un support lisible par ordinateur; b. un code de programme lisible par crdinateur stocké sur ledit au moins un support lisible par ordinateur, ledit code de programme lis.Lble par 35 ordinateur comprenant: 2871256 24 i. un code destiné à déterminer (200) une priorité de chaque source de données d'une pluralité de sources de données demandant des crédits; ii. un code qui, pour chaque source de données de ladite pluralité de sources de données, calcule (202) un total de requête de crédit en ajoutant un nombre de crédits demandés par ladite source de données plus un nombre de crédits demandés par chaque source 3e données de ladite pluralité de sources de données présentant une priorité supérieure à ladite source de données; et iii. un code destiné à identifier (204) un total de requête de crédit le plus grand pour lequel suffisamment de crédits sont disponibles, et destiné à accorder une requête de chaque source de données dont la requête de crédit est comprise dans le total de requête de crédit le plus grand. 10. Dispositif selon la revendication 9, dans lequel ledit code destiné à déterminer une priorité de chacune desdites sources de données demandeuses comprend un code destiné à classer ladite pluralité de sources de données de la priorité la plus haute à la priorité la plus basse, et dans lequel ledit code destiné à identifier ledit total de requête de crédit le plus grand pour lequel suffisamment de crédits sont disponibles comprend un code destiné à comparer lesdits totaux de requête de crédit un par un avec un nombre disponible de crédits, en commençant avec un total de requête de crédit correspondant à une source de données à la priorité la plus haute, et en continuant avec un total de requête de crédit correspondant à t.ne source suivante de données à la priorité la plus haute, et ainsi de suite avec les sources de données de priorité décroissante, jusqu'à ce que ledit total de requête de crédit le plus grand, qui n'est pas supérieur audit nombre disponible de crédits, soit atteint.