Brevet FR3082029A1 — publié le 20191206

I Contrôleur de partage de ressources d'une plate-forme informatique et procédé associé de partage des ressources La présente invention concerne le domaine des plates-formes informatiques comprenant au moins un processeur, un support de stockage de données, des applications logicielles aptes à être exécutées sur le processeur et comprenant des commandes d'accès au support de stockage. Une mémoire de masse est un support de stockage de grande capacité (typiquement de plus de 8 GB, ou encore de plus de 256 GB ou encore au-delà), non volatile, et qui peut être lue et écrite par des applications exécutées sur un processeur. Les supports de ces mémoire de masse peuvent être de type varié, par exemple de type bande magnétique, disque dur, disque à semi-conducteur (en anglais « Solid-State Drive » ou SSD), carte SD (« Secure Digital »), disque optique (CD, DVD, Blu-ray), disque magnéto-optique, mémoire flash .... et comprennent des cellules mémoires unitaires et un contrôleur de mémoire adapté pour opérer sur les cellules en fonction des commandes reçues et pour en délivrer ou y enregistrer des données issues de ces opérations. Les performances induites par les technologies de mémoires de masse partagées entre les applications et la quantité de données manipulées ne sont pas compatibles d'une exécution en temps bref (par exemple inférieur à inférieur à 100 ms) des opérations menées sur ces mémoires. Ces opérations sont typiquement des opérations de création, de lecture, d'écriture, de suppression, de nommage, de classement, d'archivage notamment, commandées par les applications, appliquées sur des zones de mémoire de taille variable et elles sont menées sur la mémoire de masse via un gestionnaire de fichiers. Dans le secteur de l'avionique entre autres, avec l'augmentation du nombre, et la complexité croissante, des fonctions avioniques, les fabricants groupent plusieurs applications logicielles sur une même plate-forme de traitement informatique à haute performance. Pour répondre à ce nouveau contexte, des directives dites d'Avionique Modulaire Intégrée (en anglais « Integrated Modular Avionics » ou IMA) ont été développées, selon lesquelles une plate-forme de traitement informatique doit pouvoir assurer un partitionnement robuste, temporel et spatial, entre les applications, leur permettant de partager une même plate-forme et ses ressources, parmi lesquelles notamment les supports de stockage de données, encore appelées mémoires de masse. A titre d'illustration, dans l'avionique, les applications « Système de Vision Synthétique », dite SVS et « Gestion de Vol », dite FMS, « Terrain Avoidance Warning 2 System » dite TAVVS utilisent toutes trois les données de définition de cartes de sol et de relief communes et donc nécessairement partagées en accès, en association desquelles il est en outre possible pour les applications de stocker des annotations, des fichiers-journaux (« log files ») etc., l'ensemble étant stocké sur une mémoire de masse de 16 GB 5 à 256 GB. Il existe donc un besoin accru de garantir un partitionnement robuste entre plusieurs applications partageant des fichiers pouvant être communs ou propres à chaque application au sein d'une même mémoire de masse, dans un contexte de traitement en temps réel 10 A cet effet, suivant un premier aspect, l'invention propose un contrôleur de partage de ressources adapté pour opérer dans une plate-forme informatique comprenant en outre au moins : - un processeur, - un support de stockage de données, 15 - des applications logicielles aptes à être exécutées sur le processeur et comprenant des commandes d'accès au support de stockage, ledit contrôleur de partage de ressources étant caractérisé en ce qu'il est adapté pour, en fonction d'une portion respective prédéterminée, attribuée à chaque application, d'une capacité maximum d'accès au support de stockage, en fonction d'une liste de prochaines 20 commandes d'accès au support de stockage à exécuter issues de chaque application et en fonction en outre des temps théoriques maximum de réalisation desdites commandes, sélectionner, dans une première phase de sélection, pour chaque application et pour un prochain cycle temporel d'accès au support de stockage, les prochaines commandes à mettre en oeuvre et pour successivement distribuer, lors dudit prochain cycle temporel, 25 l'accès dudit support à chaque application pour la mise en oeuvre desdites commandes sélectionnées. L'invention permet de garantir un partage maîtrisé entre les applications de l'accès au support de stockage de données qui limite les risques de débordement d'une application sur les autres, correspondant aux particularités des mémoires de masse. Ce 30 partage permet d'assurer l'indépendance des applications pour les accès à la ressource mémoire de masse. L'invention permet d'allouer par application un intervalle (en anglais « slot ») temporel et de la mémoire. L'utilisation du slot temporel par rapport à une bande passante ou quantité de donnée a pour avantage de s'abstraire de la grande variabilité de 35 performance des technologies mémoires de masse en fonction de la taille et du type 3 accès séquentiel ou aléatoire. L'invention permet d'avoir une totale indépendance entre les applications utilisant la même ressource afin de permettre l'intégration de plusieurs applications sur le même module tout en répondant à des besoins de sûreté de fonctionnement, mais aussi d'efficacité de développement. 5 L'invention contribue en outre à la diminution du nombre de calculateurs (partage d'une plateforme entre plusieurs applications) et à la réduction des travaux pour une certification, par exemple européenne ETSO (de l'anglais « European Technical Standard Order »).Dans des modes de réalisation, le contrôleur de partage de ressources suivant l'invention comporte en outre une ou plusieurs des caractéristiques suivantes : 10 - la capacité d'accès maximum est un élément parmi un temps maximum de cycle temporel d'accès au support de stockage, une bande passante maximum du support de stockage et un volume de données maximum échangé avec le support de stockage ; - le contrôleur de partage de ressources est adapté, lorsque la réalisation des 15 commandes sélectionnées lors de la première phase de sélection pour le cycle temporel en cours pour les applications est terminée, dans une deuxième phase de sélection, pour sélectionner des commandes supplémentaires parmi les prochaines commandes restant mettre en oeuvre pour chaque application, en fonction du temps restant jusqu'à l'expiration du cycle temporel en cours, d'une 20 pondération affectée à chaque application et des temps théoriques maximum de réalisation desdites commandes ; - le contrôleur de partage de ressources est adapté pour définir un élément unitaire correspondant à une taille de données et associé à une capacité d'accès unitaire au support de stockage, pour déterminer, pour chaque application, un nombre de 25 capacités unitaires correspondant à la portion respective prédéterminée qui lui a été attribuée, ledit contrôleur étant adapté en outre pour déterminer, pour chaque commande d'accès, le nombre d'élément(s) unitaire(s) correspondant à ladite commande d'accès, tel que la commande d'accès étant relative à un bloc de données, ledit nombre d'élément(s) unitaire(s) sera 1 si le bloc est de taille 30 inférieure ou égale à celle de l'élément unitaire et sera n si le bloc est de taille égale à n fois la taille de l'élément unitaire, le contrôleur étant adapté pour sélectionner, pour ladite application, les prochaines commandes à mettre en oeuvre dans la première phase de sélection comme le maximum de commandes successives telles que la somme des éléments unitaires correspondant auxdites 4 commandes est inférieure au nombre de capacités unitaires correspondant à la portion respective prédéterminée qui lui a été attribuée ; des commandes de la liste sont issues d'une application de maintenance du support de stockage de données comprenant au moins une opération de 5 maintenance parmi un écrasement de blocs de support de stockage de données libérés par répartition de l'usure, une fusion de blocs ou de pages pour optimiser des accès aléatoires non alignés et un déplacement de blocs pour réduire des problèmes de rétention de données. Suivant un deuxième aspect, la présente invention propose une plate-forme 10 informatique comprenant un processeur, un support de stockage de données, des applications logicielles aptes à être exécutées sur le processeur et comprenant des commandes d'accès au support de stockage, et un contrôleur de partage de ressources suivant le premier aspect de l'invention. Suivant un troisième aspect, la présente invention propose un procédé de partage 15 des ressources dans une plate-forme informatique comprenant un contrôleur de partage de ressources, un processeur, un support de stockage de données, des applications logicielles aptes à être exécutées sur le processeur et comprenant des commandes d'accès au support de stockage ledit procédé étant caractérisé en ce qu'il comprend les étapes suivantes mises en oeuvre 20 par le contrôleur de partage de ressources et consistant à: en fonction d'une portion respective prédéterminée, attribuée à chaque application, d'une capacité maximum d'accès au support de stockage, en fonction d'une liste de prochaines commandes d'accès au support de stockage à exécuter issues de chaque application et en fonction en outre des temps 25 théoriques maximum de réalisation desdites commandes, sélectionner, dans une première phase de sélection, pour chaque application et pour un prochain cycle temporel d'accès au support de stockage, les prochaines commandes à mettre en oeuvre et successivement distribuer, lors dudit prochain cycle temporel, l'accès dudit 30 support à chaque application pour la mise en oeuvre desdites commandes sélectionnées. Suivant un autre aspect, la présente invention propose un programme d'ordinateur comprenant des instructions qui, lorsque le programme est exécuté par un ordinateur, conduisent celui-ci à mettre en oeuvre le procédé suivant le troisième aspect de 35 l'invention. 5 Suivant un autre aspect, la présente invention propose un support lisible par ordinateur, sur lequel est enregistré le programme d'ordinateur suivant le précédent aspect de l'invention. Ces caractéristiques et avantages de l'invention apparaîtront à la lecture de la 5 description qui va suivre, donnée uniquement à titre d'exemple, et faite en référence aux dessins annexés, sur lesquels : - la figure 1 représente une vue d'une plate-forme de traitement dans un mode de réalisation de l'invention ; - la figure 2 est une vue d'un cycle de travail THw dans un mode de réalisation 10 de l'invention ; - la figure 3 est un schéma illustrant un partitionnement temporel des opérations entre applications dans un mode de réalisation de l'invention ; - la figure 4 est un schéma illustrant un partitionnement temporel des opérations entre applications dans un mode de réalisation de l'invention ; 15 la figure 5 est un organigramme d'étapes mises en oeuvre dans un mode de réalisation de l'invention ; la figure 6 illustre un exemple de temps d'accès maximum à une mémoire de masse en fonction de la taille des données concernées. 20 La figure 1 représente une vue d'une plate-forme de traitement informatique 1 dans un mode de réalisation de l'invention, par exemple dans le domaine de l'avionique. Cette plate-forme 1 comprend, comme il est connu, un ou plusieurs processeur(s) 10, un ensemble 2 d'applications logicielles, un système de gestion de fichiers 3 et une mémoire de masse (MM) 4, dont l'usage est partagé entre les applications logicielles de 25 l'ensemble 2. La plate-forme 1 comprend en outre, selon l'invention, un contrôleur de partage de ressources 5, disposé entre le système de gestion de fichiers 3 et la mémoire de masse 4 et dont le rôle est d'assurer un partage de l'utilisation de cette mémoire de masse 4 entre les applications logicielles, pour éviter que le fonctionnement d'une application ne soit 30 perturbé par le fonctionnement d'une autre application. Le partitionnement ici décrit est temporel et spatial, mais dans d'autres modes de réalisation, il peut être uniquement spatial ou uniquement temporel. L'ensemble 2 d'applications logicielles comprend n applications logicielles (n nombre entier supérieur ou égal à 2) A1, A2, ... An, aptes à être exécutées sur le 6 processeur 10. Parmi ces applications figurent par exemple les applications SVS et FMS. Et la MM 4 comprend par exemple des bases de données sol, dont le relief. Dans le contexte de partitionnement temporel et spatial de ressources informatiques ARINC 653 du mode de réalisation ici considéré, une application logicielle 5 peut donner lieu à plusieurs partitions de cette application (ARINC, Report 651, RTCA DO-255). Une partition est un programme chargeable dans un espace d'adressage unique dans un module intégré, ici la plate-forme 1. La plate-forme 1 (via son système d'exploitation, non représenté) est adaptée pour contrôler l'utilisation, par une partition, du 10 temps de traitement, de la mémoire de masse 4 et autres ressources, de sorte que chaque partition est isolée des autres partitions partageant la plate-forme 1. Les partitions sont cadencées sur la base d'un cycle temporel de travail, maintenu par le système d'exploitation. Une partition comprend un ou plusieurs unités de programmation, appelée(s) 15 processus, partageant le même espace d'adressage, qui peuvent opérer en parallèle et qui se combinent dynamiquement pour fournir les fonctions associées à la partition. Ainsi, lorsqu'une partition est en cours d'exécution, certains processus de la partition sont mis en oeuvre, eux-mêmes- donnant lieu à l'exécution de commandes d'accès aux données de la mémoire de masse, via le système de gestion de fichiers 3 20 pour des opérations de création, de lecture, d'écriture, de suppression, de nommage, de classement, d'archivage de données entre le système de gestion de fichiers 3 et la mémoire de masse MM 4, pilotées selon l'invention par le contrôleur de partage de ressources 5. Dans le cas considéré en référence à la figure 1, l'application Al comprend par 25 exemple 3 partitions (Partition n°i, i = 1 à 3). La partition n°1 comprend 2 processus (Process n°j, j= 1 à 2). La partition n°2 comprend le processus Process n°3. La partition n°3 comprend le processus Process n°4. L'application A2 comprend une partition (Partition n°4), qui comprend 3 processus (Process n°k, k= 5 à 7)... Le contrôleur de partage de ressources 5 comprend un bloc d'échanges MLBX 51 30 et un bloc de traitement 52 adapté pour exécuter des commandes stockées dans des files de soumission Zk (k = 1 à 3) du bloc d'échanges MLBX 51, selon un algorithme particulier (permettant le partage de la bande passante), pour interpréter chaque commande pour les envoyer vers la mémoire de masse 4 en tenant compte du vieillissement des composants, pour maintenir les données disponibles dans le temps. 35 7 Partitionnement temporel La bande passante, i.e. la taille globale des données auxquelles il peut être accédé pendant un temps donné, de la ressource matérielle 4 (par exemple inférieure à 100 MB/s) couplée à la taille de fichier manipulé, (par exemple environ 1 MB) par les 5 applications avioniques n'est pas adaptée au traitement en temps réel, typiquement correspondant à des fréquences situées entre 1 et 15 Hertz, de même que les communications fractionnées entre le système de gestion de fichiers et la ressource matérielle MM 4 pendant des opérations d'ouverture de fichier OPEN_FILE0 ou d'ouverture de répertoire OPEN_DIRECTORYO. En outre, les temps requis par les 10 opérations de lecture ou écriture sont non déterministes. Le contrôleur de partage de ressources 5 selon l'invention correspond à une couche supplémentaire, par rapport aux architectures traditionnelles de plate-forme informatique, disposée entre le système de gestion de fichiers 3 et la ressource matérielle MM 4, et est adapté pour séquencer les requêtes parallèles en provenance des 15 applications et destinées à cette mémoire de masse MM 4 tout en assurant une distribution de la capacité d'accès maximum de la mémoire de masse en fonction de ratios de cette capacité maximum attribués aux partitions respectives en tenant compte des pires cas de temps d'exécution. Cette caractérisation « pire cas de temps d'exécution » prend en compte la grande variabilité de performance de la mémoire de 20 masse et les variabilités introduites par l'algorithme interne de la mémoire de masse optimisant sa durée de vie et la rétention de données. Le contrôleur de partage de ressources 5 est adapté pour traiter les opérations en cours requises par une partition selon les caractéristiques suivantes : - même si une autre partition est alors en train de travailler sur le processeur 25 10, - en respectant des priorités prédéterminées. Le contrôleur de partage de ressources 5 est adapté pour opérer dans un cycle de travail, en deux étapes. Il distribue d'abord à chaque partition le ratio d'accès à la mémoire de masse 4 qui lui a été alloué (correspondant donc à une valeur de bande 30 passante, de temps) ou de volume de données selon la représentation considérée de la capacité d'accès à la mémoire de masse, ces représentations étant équivalentes) ; puis s'il reste du temps d'ici la fin du cycle de travail après l'exécution des commandes que chaque partition s'est vue autorisée à exécuter en fonction du ratio d'accès qui lui a été attribué et du pire cas d'exécution théorique de chaque commande, la bande passante 35 équivalente au temps restant est redistribuée. 8 En considérant que l'ensemble d'applications A comportent 3 partitions A, B, C et que les bandes passantes suivantes ont été attribuées : Partition A: 1MB/s ; Partition B: 1,5 MB/s; 5 Partition C: 500 KB/s ; dans un premier exemple, dans l'hypothèse où la performance globale de la mémoire de masse dans le pire temps d'exécution est égale à 8 MB/s, toute e la capacité offerte d'accès à la mémoire de masse 4 n'est pas consommée et le reste du volume de données, (ou encore de bande passante ou de temps) 10 est redistribué aux partitions par le contrôleur de partage de ressources 5 pour améliorer les temps de traitement ; dans un autre exemple, dans l'hypothèse où la performance globale de la mémoire de masse dans le pire temps d'exécution est égale à 3 MB/s, si la performance réelle est meilleure que la performance du pire temps de 15 traitement, toute la bande passante qui n'est pas consommée est redistribuée aux partitions par le contrôleur de partage de ressources 5 pour améliorer les temps de traitement. Dans le mode de réalisation considéré, les applications de l'ensemble 2 et le système de gestion de fichiers 3, relevant du domaine logiciel communiquent, à travers 20 une interface de type NVMHCI (en anglais « Non-Volatile Memory Host Controller Interface »), dite aussi NVMe, avec le domaine matériel auquel appartiennent le contrôleur de partage de ressources 5 et la mémoire de masse 4. L'implémentation du contrôleur de partage de ressources 5 pourrait dans un autre mode de réalisation être réalisée dans une autre technologie d'interface, par exemple de type SATA (en anglais 25 « Serial Advanced Technology Attachment »). La dernière couche du système de gestion de fichiers 3, en charge de la communication avec la mémoire de masse 4 via le contrôleur de partage de ressources 5 est adaptée pour poster au contrôleur de partage de ressources 5 des commandes de lecture, d'écriture ou de « purge » (i.e. pour vider des cellules de mémoire) issues des 30 processus en cours). Chaque nouvelle commande ainsi postée est stockée dans une file de soumission qui se trouve dans le bloc d'échanges MLBX 51 du contrôleur de partage de ressources 5: le bloc d'échanges MLBX 51 comprend, pour chaque processus dans chaque partition, une file de soumission Z1 qui lui est dédiée exclusivement (où sont placées les 35 commandes postées par le système de gestion de fichiers 3 et dont la réalisation est non 9 encore terminée), une file de réalisation Z2 qui lui est dédiée exclusivement (où sont placés les statuts d'exécution des commandes et une aire de données Z3 qui lui est dédiée exclusivement (où sont placées les données associées à la lecture ou l'écriture, comme représenté en figure 1. 5 On peut caractériser l'utilisation d'une ressource par une application sur la base d'un « pire cas de temps d'exécution » et/ou sur la base d'un « temps moyen d'exécution » relatif(s) à une instruction ou à un ensemble d'instructions mises en oeuvre suite à l'exécution de l'application et comprenant un ou des accès à la ressource. 10 Typiquement, une telle instruction correspond par exemple à la réalisation d'au moins une commande de lecture, d'écriture, de suppression, d'archivage de données dans la ressource. La différence entre les deux valeurs de « pire cas de temps d'exécution » et « temps moyen d'exécution » est généralement faible (pas plus d'un facteur 2) pour les ressources classiques, mais il en va radicalement autrement pour les mémoires de masse 15 où les performances peuvent être multipliées par 10 ou plus : par exemple une opération d'effacement de bloc d'une cellule flash NAND peut prendre de 1,5 milliseconde (ms) à 15 MS. Le contrôleur de partage de ressources 5 est adapté pour distribuer la capacité d'accès à la mémoire de masse MM 4 entre les différentes partitions actives, en 20 respectant des allocations de capacité d'accès à la mémoire de masse théoriques respectivement attribuées à ces applications. Dans un mode de réalisation, le contrôleur de partage de ressources 5 est adapté pour distribuer la capacité d'accès à la mémoire de masse MM 4 entre ces différentes partitions d'applications et les opérations de maintenance sur la mémoire de masse 4. 25 Ainsi BWmm = BWPartition n°1 + BWPartition n°2 + - - - + BWPartition BWMaintenance) ; où : BWmm désigne la bande passante de la MM 4, i.e. la taille des données de la mémoire MM 4 auxquelles il peut être accédé pendant un temps donné ; BWPartition i= 1 à p désigne la bande passante octroyée à la partition i, parmi cette bande passante totale de la mémoire MM 4, accessible par la partition i pour ledit temps donné 30 et BWMaintenance désigne la bande passante attribuée aux opérations de maintenance, la plate-forme comprenant n applications Al , ..., An, le nombre total de partitions pour ces applications étant égal à p. La portion attribuée à chaque partition résulte par exemple d'une allocation effectuée en fonction d'un budget qui lui a été alloué résultant d'un besoin minimum 35 applicatif, par exemple pris en compte par l'intégrateur. 10 Dans un mode de réalisation décrit en détail ci-dessous, la mémoire de masse MM 4 est adaptée pour opérer avec le contrôleur 5 selon un cycle de travail, de durée TFiw, qui est synchronisé ou non avec le cycle de traitement de durée TFiw du processeur 10 utilisé 5 pour cadencer les opérations des partitions. Ainsi, en référence à la figure 2 et à la figure 5, le contrôleur de partage de ressources 5 est adapté pour dans une étape préliminaire 100, acquérir les ratios de la capacité maximum d'accès à la mémoire de masse attribués à chaque partition. Puis, dans une étape 101, dite étape-quota, pour chaque partition, en considérant 10 la liste de soumission Z1 de cette partition, le contrôleur de partage de ressources 5 détermine, dans une étape 101, quelles commandes postées dans cette liste Z1 (en partant de la plus ancienne commande postée présente dans cette liste) pourront être traitées dans le ratio de la capacité d'accès à la mémoire de masse attribué à cette partition, dans l'hypothèse où le temps d'exécution de chacune de ces commandes est le 15 pire temps d'exécution de ces commandes. Ainsi, dans un mode de réalisation, il détermine la portion d'intervalle de temps attribuée à chaque partition pour son prochain cycle de durée THw en fonction du ratio respectif de bande passante (ou du temps ou du volume de données) attribuée à cette partition. 20 Ainsi, l'ensemble d'applications 2 comprend au total p partitions (dans l'illustration de la figure 2, p=3), la portion théorique d'intervalle de temps Tt' i = 1 à p, attribuée théoriquement à la Partition n°i est calculée de la façon suivante : Tt, = THw x BWmm BWPartition ni Par ailleurs, il a été préalablement estimé, dans une étape préparatoire au 25 procédé, le pire temps d'exécution de chaque commande mise en oeuvre par les partitions, à l'aide par exemple de tests et de mesures. Pour chaque partition, en considérant la liste de soumission Z1 de cette partition, le contrôleur de partage de ressources 5 détermine quelles commandes postées dans cette liste Z1 (en partant de la plus ancienne commande postée présente dans cette liste) 30 pourront être traitées dans la portion théorique d'intervalle de temps calculée pour cette partition, dans l'hypothèse où le temps d'exécution de chacune de ces commandes est le pire temps d'exécution de ces commandes : ce sont le maximum des commandes successives considérées en partant de la plus ancienne telles que la somme de leur pire temps d'exécution est inférieure à la durée correspondant à la portion théorique 35 d'intervalle de temps calculée allouée à cette partition. Ces commandes telles que 11 déterminées sont les commandes sélectionnées pour l'étape de traitement 101 dite étape-quota. Les commandes sélectionnées pour les partitions sont exécutées. Dans un mode de réalisation particulier de l'étape 101, un élément unitaire de 5 données est d'abord défini, permettant de simplifier notamment l'exécution de l'étape 101, comme décrit ci-après, en référence à la figure 6 et de la manière suivante : Tout d'abord, les accès en lecture à la mémoire de masse (i.e. au contrôleur de la mémoire 4 et aux NAND flash) sont caractérisés par les mesures des : temps pour lire (séquentiellement et aléatoirement) 5120 (plus petite taille 10 échangée avec le contrôleur dans le cas considéré) ; temps pour lire (séquentiellement et aléatoirement) 1Ko ; - temps pour lire (séquentiellement et aléatoirement) 2Ko ; - temps pour lire (séquentiellement et aléatoirement) 16Ko ; 15 - temps pour lire (séquentiellement et aléatoirement) 32Ko ; - temps pour lire (séquentiellement et aléatoirement) 512Ko. On notera que les informations de taille de page, de nombre de contrôleurs, etc., considérés ici sont pris à titre d'exemple uniquement. 20 Les « pires cas » de performances pour la lecture dans la mémoire de masse 4 peuvent ainsi être cartographiées (les mêmes tests et graphes sont réalisés de la même façon en écriture), comme représenté en figure 6, avec en abscisse le temps d'accès à un bloc de la mémoire de masse 4 en fonction de la taille du bloc représentée en ordonnée dans un exemple. 01 désigne la section [512 o; 8 Ko] et correspond au temps de 25 récupération d'une page, 02 désigne la section [8 Ko; 128 Ko] et correspond au temps de récupération d'une page sur 16 canaux en parallèle (1 canal = 1 contrôleur + 1 NAND flash), et 03 désigne la section [128 Ko ; 256 Ko] et correspond au temps de récupération de deux pages sur 16 canaux en parallèle. Globalement, on s'aperçoit, dans le cas particulier considéré, que c'est 30 sensiblement toujours le même pire temps, pour toute taille de données entre 1 o et 128 Ko. La taille 16Ko est alors choisie comme taille d'élément unitaire (il aurait pu être choisi une autre taille dans la plage considérée, mais il a été déterminé par essais multiples que cette taille optimisait l'efficacité du traitement). 12 En prenant comme hypothèse que le temps d'accès mémoire est égal à 400ps, de 10 à 128 Ko, les valeurs de bande passante correspondantes sont donc : Pour 512 o: 1,22MB/s Pour 16 Ko: 39 MB/s 5 Pour 64 Ko : 156MB/s Pour 128 Ko : 312MB/s Tous les accès inférieurs à 16 Ko seront décomptés à 16 Ko. Et les accès supérieurs à 16 Ko seront décomptés en tant que multiples de 16 Ko. Donc en lissant sur 1s, 39MB/s sont à partager entre les partitions. 10 Pour déterminer alors le nombre d'éléments unitaires par cycle de travail par partition, dans l'étape 101, dans le cas où la moitié de la bande passante est attribuée à la partition n°1 et où un cycle de travail est de durée 100ms, il existe plusieurs manières d'opérer (que l'on considère la bande passante ou le temps ou le volume de données revient en effet à calculer le même nombre d'éléments unitaires) : 15 selon un premier exemple, en considérant les bandes passantes : 39 MB/s / 10 cycles dans 1s 4 3,9MB / taille de l'élément unitaire 4 250 éléments unitaires en totalité / % 4 125 éléments unitaires réservés pour la partition n°1 ; Selon un deuxième exemple en considérant le temps : 1s / 400ps (400 ps étant une valeur retenue à titre d'exemple donnant la performance de pire cas associée à la 20 lecture d'une page de la NAND Flash) 4 2500 / 10 cycles dans 1s 4 250 éléments unitaires en totalité 4 125 éléments réservés pour la partition n°1. Dans l'étape 101, pour chaque commande, le contrôleur 5 décompte le nombre d'éléments unitaires correspondant à la commande en fonction de la taille des données 25 manipulées par la commande (i.e. 1 élément unitaire si cette taille est inférieure ou égale à 16 Ko, et n éléments unitaires si cette taille est n fois 16 Ko). Et les commandes de la partition 1 sélectionnées dans l'étape-quota 101 sont les commandes successives de la liste telles que la somme cumulée de leurs éléments unitaires est inférieure au nombre d'éléments unitaires réservés à la partition 1. 30 Par exemple, dans le cas d'une commande correspondant à 5 éléments unitaires, il va donc rester après sélection de la commande, 120 éléments réservés pour la Partition n°1 pour sélectionner les commandes suivantes. Toutefois, le nombre d'éléments unitaires réservés à la Partition n°1 notamment correspond au cas de l'exécution de commandes successives de 1 élément unitaire. 13 Or le temps effectivement consommé par l'exécution d'une commande de 5 éléments unitaires (80 Ko) est quasiment identique à celui consommé par une commande de 1 élément unitaire (80 Ko), donc du temps disponible pourra être redistribué, comme détaillé ci-dessous en étape 103 (5 commandes dl élément unitaire = 5 x 400ps ; 1 5 commande de 5 éléments unitaires = 500ps REVENDICATIONS1.- Contrôleur de partage de ressources (5) adapté pour opérer dans une plate-forme informatique (1) comprenant en outre au moins : - un processeur (10), - un support de stockage de données (4), - des applications logicielles (2) aptes à être exécutées sur le processeur et comprenant des commandes d'accès au support de stockage, ledit contrôleur de partage de ressources étant caractérisé en ce qu'il est adapté pour, en fonction d'une portion respective prédéterminée, attribuée à chaque application, d'une capacité maximum d'accès au support de stockage, en fonction d'une liste (Z1) de prochaines commandes d'accès au support de stockage à exécuter issues de chaque application et en fonction en outre des temps théoriques maximum de réalisation desdites commandes, sélectionner, dans une première phase de sélection, pour chaque application et pour un prochain cycle temporel d'accès au support de stockage, les prochaines commandes à mettre en oeuvre et pour successivement distribuer, lors dudit prochain cycle temporel, l'accès dudit support à chaque application pour la mise en oeuvre desdites commandes sélectionnées. 2.- Contrôleur de partage de ressources (5) selon la revendication 1, dans lequel la capacité d'accès maximum est un élément parmi un temps maximum de cycle temporel d'accès au support de stockage, une bande passante maximum du support de stockage et un volume de données maximum échangé avec le support de stockage. 3. Contrôleur de partage de ressources (5) selon la revendication 1 ou 2, adapté, lorsque la réalisation des commandes sélectionnées lors de la première phase de sélection pour le cycle temporel en cours pour les applications (2) est terminée, dans une deuxième phase de sélection, pour sélectionner des commandes supplémentaires parmi les prochaines commandes restant mettre en oeuvre pour chaque application, en fonction du temps restant jusqu'à l'expiration du cycle temporel en cours, d'une pondération affectée à chaque application et des temps théoriques maximum de réalisation desdites commandes. 4.- Contrôleur de partage de ressources (5) selon l'une des revendications précédentes, adapté pour définir un élément unitaire correspondant à une taille de données et associé 22 à une capacité d'accès unitaire au support de stockage, pour déterminer, pour chaque application, un nombre de capacités unitaires correspondant à la portion respective prédéterminée qui lui a été attribuée, ledit contrôleur étant adapté en outre pour déterminer, pour chaque commande d'accès, le nombre d'élément(s) unitaire(s) 5 correspondant à ladite commande d'accès, tel que la commande d'accès étant relative à un bloc de données, ledit nombre d'élément(s) unitaire(s) sera 1 si le bloc est de taille inférieure ou égale à celle de l'élément unitaire et sera n si le bloc est de taille égale à n fois la taille de l'élément unitaire, le contrôleur étant adapté pour sélectionner, pour ladite application, les prochaines commandes à mettre en oeuvre dans la première phase de 10 sélection comme le maximum de commandes successives telles que la somme des éléments unitaires correspondant auxdites commandes est inférieure au nombre de capacités unitaires correspondant à la portion respective prédéterminée qui lui a été attribuée. 15 5.- Contrôleur de partage de ressources (5) selon l'une des revendications précédentes' dans lequel des commandes de la liste sont issues d'une application de maintenance du support de stockage de données (4) comprenant au moins une opération de maintenance parmi : écrasement de blocs de support de stockage de données libérés par 20 répartition de l'usure ; - fusion de blocs ou de pages pour optimiser des accès aléatoires non alignés ; - déplacement de blocs pour réduire des problèmes de rétention de données. 6. Plate-forme informatique (1) comprenant : 25 - un processeur (10), - un support de stockage de données (4), - des applications logicielles (2) aptes à être exécutées sur le processeur et comprenant des commandes d'accès au support de stockage, et - un contrôleur de partage de ressources (5) selon l'une des revendications 30 précédentes. 7.- Plate-forme informatique (1) selon la revendication 6, dans laquelle le support de stockage comprend des cellules de stockages et la plate-forme informatique est adaptée pour dédier des sections spécifiques distinctes du support de stockage de données à des 35 applications distinctes, les cellules de stockages d'une section dédiée à une application 23 étant accessibles à ladite application et interdites aux autres applications, une section dédiée à une application comprenant au moins un élément parmi un collecteur de recyclage et un ensemble de rechange tels que : - un collecteur de recyclage comprend des cellules de stockage ayant précédemment 5 servi au stockage de données et disponibles pour stocker des données à écrire via de futures commandes d'écriture ; - un ensemble de rechange comprend des cellules de stockage de rechange destinées à remplacer des cellules de stockage défectueuses dans la section dédiée à ladite application. 10 8.- Procédé de partage des ressources dans une plate-forme informatique (1) comprenant un contrôleur de partage de ressources (5), un processeur (10), un support de stockage de données (4), des applications logicielles (2) aptes à être exécutées sur le processeur et comprenant des commandes d'accès au support de stockage 15 ledit procédé étant caractérisé en ce qu'il comprend les étapes suivantes mises en oeuvre par le contrôleur de partage de ressources et consistant à: en fonction d'une portion respective prédéterminée, attribuée à chaque application, d'une capacité maximum d'accès au support de stockage, en fonction d'une liste (Z1) de prochaines commandes d'accès au support de 20 stockage à exécuter issues de chaque application et en fonction en outre des temps théoriques maximum de réalisation desdites commandes, sélectionner, dans une première phase de sélection, pour chaque application et pour un prochain cycle temporel d'accès au support de stockage, les prochaines commandes à mettre en oeuvre et 25 successivement distribuer, lors dudit prochain cycle temporel, l'accès dudit support à chaque application pour la mise en oeuvre desdites commandes sélectionnées. 9.- Procédé de partage des ressources dans une plate-forme informatique (1) selon la 30 revendication 8, selon lequel la capacité d'accès maximum est un élément parmi un temps maximum de cycle temporel d'accès au support de stockage, une bande passante maximum du support de stockage et un volume de données maximum échangé avec le support de stockage. 24 10. Procédé de partage de ressources (5) selon la revendication 8 ou 9, comprenant l'étape, lorsque la réalisation des commandes sélectionnées lors de la première phase de sélection pour le cycle temporel en cours pour les applications (2) est terminée, dans une deuxième phase de sélection, de sélectionner des commandes supplémentaires parmi les 5 prochaines commandes restant mettre en oeuvre pour chaque application, en fonction du temps restant jusqu'à l'expiration du cycle temporel en cours, d'une pondération affectée à chaque application et des temps théoriques maximum de réalisation desdites commandes. 10 15