FR 3104277 A1 20210611 FR 1913749 A 20191204 Système (1) comprenant une mémoire (8), la mémoire (8) comprenant une pluralité d’unités mémoires accessibles en écriture, chaque unité mémoire étant configurable : - dans un état de rétention dans lequel l’unité mémoire est capable de retenir des données jusqu’à une mise hors tension ultérieure de l’unité mémoire, et - dans un état de non-rétention dans lequel l’unité mémoire ne retient pas de données et consomme moins d’énergie que dans le premier état, le système comprenant par ailleurs un contrôleur (10) configuré pour configurer dans l’état de rétention toute unité mémoire de la mémoire ayant subi au moins un accès en écriture depuis sa dernière mise sous tension, et pour configurer dans l’état de non-rétention au moins une unité mémoire de la mémoire n’ayant subi aucun accès en écriture depuis sa dernière mise sous tension. Figure pour l’abrégé : Fig. 1 gestion de mémoire pour économiser de l’énergie Le présent document se rapporte au domaine de la gestion de mémoire dans un but d’économie d’énergie. ARRIERE PLAN TECHNOLOGIQUE Il a été proposé un système comprenant un système configurable dans un premier mode de fonctionnement et dans un deuxième mode de fonctionnement consommant moins d’énergie, ces modes étant sélectionnables par le biais de commandes utilisateur. Dans le premier mode de fonctionnement, la mémoire retient toute donnée qu’elle stocke jusqu’à une mise hors tension ultérieure. Dans le deuxième mode de fonctionnement, la mémoire ne retient aucune donnée, d’où l’économie d’énergie réalisée. Un but est de contrôler une mémoire de manière à réduire encore sa consommation d’énergie, et ce sans perdre d’éventuelles données qu’elle stockerait. Il est à cet effet proposé, selon un premier aspect, un système comprenant une mémoire, la mémoire comprenant une pluralité d’unités mémoires accessibles en écriture, chaque unité mémoire étant configurable : - dans un état de rétention dans lequel l’unité mémoire est capable de retenir des données jusqu’à une mise hors tension ultérieure de l’unité mémoire, et - dans un état de non-rétention dans lequel l’unité mémoire ne retient pas de données et consomme moins d’énergie que dans le premier état, le système comprenant par ailleurs un contrôleur configuré pour configurer dans l’état de rétention toute unité mémoire de la mémoire ayant subi au moins un accès en écriture depuis sa dernière mise sous tension, et pour configurer dans l’état de non-rétention au moins une unité mémoire de la mémoire n’ayant subi aucun accès en écriture depuis sa dernière mise sous tension. Le système selon ce premier aspect peut comprendre les caractéristiques optionnelles suivantes, prises seules ou en combinaison lorsque cela est techniquement possible. De préférence, le contrôleur est configuré pour configurer dans l’état de non-rétention toute unité mémoire de la mémoire n’ayant subi aucun accès en écriture depuis sa dernière mise sous tension. De préférence, la mémoire est configurable dans une pluralité de modes comprenant : - un premier mode, dans lequel toute unité mémoire de la mémoire ayant subi au moins un accès en écriture depuis sa dernière mise sous tension est dans l’état de rétention, et au moins une unité mémoire de la mémoire n’ayant subi aucun accès en écriture depuis sa dernière mise sous tension est dans l’état de non-rétention, et - au moins un autre mode dans lequel toutes les unités mémoire de la mémoire sont dans le même état. De préférence, la pluralité de modes comprend un deuxième mode dans lequel toutes les unités mémoire sont dans l’état de rétention, et un troisième mode dans lequel toutes les unités mémoire sont dans l’état de non-rétention. De préférence, le premier mode est un mode dans lequel au moins une horloge du système est désactivée. De préférence, le système comprend une interface pour recevoir des commandes utilisateur demandant une configuration de la mémoire dans l’un des modes de la pluralité de modes. De préférence, le contrôleur est configuré pour ne pas autoriser de configuration individuelle de l’état d’une unité mémoire de la mémoire au moyen d’une commande utilisateur reçue par l’interface. De préférence, la mémoire est une mémoire volatile, par exemple une mémoire RAM. De préférence, le système est du type système sur puce. Il est également proposé, selon une deuxième aspect, un procédé de contrôle d’une mémoire, la mémoire comprenant une pluralité d’unités mémoires accessibles en écriture, chaque unité mémoire étant configurable : - dans un état de rétention dans lequel l’unité mémoire est capable de retenir des données jusqu’à une mise hors tension ultérieure de l’unité mémoire, et - dans un état de non-rétention dans lequel l’unité mémoire ne retient pas de données et consomme moins d’énergie que dans le premier état, le procédé comprenant les étapes suivantes : - configuration dans l’état de rétention de toute unité mémoire de la mémoire ayant subi au moins un accès en écriture depuis sa dernière mise sous tension, et - configuration dans l’état de non-rétention au moins une unité mémoire de la mémoire n’ayant subi aucun accès en écriture depuis sa dernière mise sous tension. DESCRIPTION DES FIGURES D’autres caractéristiques, buts et avantages de l’invention ressortiront de la description qui suit, qui est purement illustrative et non limitative, et qui doit être lue en regard des dessins annexés sur lesquels : La figure 1 illustre de façon schématique un système selon un mode de réalisation de l’invention. La figure 2 illustre de façon schématique l’organisation interne d’une mémoire du système de la figure 1. La figure 3 est un organigramme d’étapes d’un procédé selon un mode de réalisation, mis en œuvre lors d’une requête en écriture. La figure 4 est un organigramme d’étapes d’un procédé selon un mode de réalisation, mis en œuvre mis en œuvre lors d’une requête en effacement. La figure 5 est un organigramme d’étapes d’un procédé selon un mode de réalisation, pour changer une mémoire de mode de fonctionnement. Sur l’ensemble des figures, les éléments similaires portent des références identiques. DESCRIPTION DETAILLEE DE L'INVENTION En référence à la figure 1 , un système 1, tel qu’un système sur puce, comprend au moins un dispositif de stockage 2, une interface de réception de commandes 4 et au moins un module maître 6. Le module maître 6 est typiquement un processeur configuré pour exécuter du code de programme. Le dispositif de stockage 2 comprend une mémoire 8 et un contrôleur 10 pour contrôler la mémoire 8. La mémoire 8 est accessible en écriture (voire en lecture) par le module maître 6. La mémoire 8 est volatile, dans le sens où toute donnée qu’elle stocke est perdue lors d’une mise hors tension de cette mémoire 8. La mémoire 8 est par exemple de type RAM. En référence à la figure 2, la mémoire 8 comprend une pluralité d’unités mémoire 8a, 8b, 8c, 8d, 8e. Chaque unité mémoire 8a-8e est configurable dans un état de rétention, et dans un état de non-rétention. Dans l’état de rétention, une unité mémoire 8a-8e est capable de retenir des données jusqu’à une mise hors tension ultérieure de l’unité mémoire. Dans l’état de non-rétention, une unité mémoire 8a-8e ne retient pas de données, et consomme moins d’énergie que dans son état de rétention. Les différentes unités mémoires 8a-8e sont configurables dans l’un ou l’autre de ces états indépendamment les unes des autres. Autrement dit, des unités mémoire différentes de la mémoire 8 peuvent être configurées dans des états différents. La taille d’une des unités mémoire 8a-8e a une taille comprise entre 1 et 128 kilooctets., par exemple 64 kilooctets. Le nombre d’unités mémoire de la mémoire 8 est par exemple compris entre 1 et 20 (ce nombre étant de cinq dans l’exemple de réalisation illustré en figure 2). La mémoire 8 a une taille globale égale à la somme des tailles respectives de ses unités mémoire. Par exemple, cette taille globale est de 320 kilooctets. La mémoire 8 est configurable dans plusieurs modes de fonctionnement : un premier mode dit mode RUN, un deuxième mode dit mode STOP et un troisième mode dit mode STANDBY. Le mode RUN est celui qui parmi les trois modes de fonctionnement précités consomme le plus d’énergie. Lorsque la mémoire 8 est dans le mode RUN, toutes les unités mémoire 8a-8 e de la mémoire 8 sont dans l’état de rétention. Ce mode RUN est typiquement utilisé au cours de l’exécution d’un programme par le module maître 6. Dans le mode RUN, toutes les horloges du système sont activées. Le mode STANDBY est un mode à basse consommation d’énergie, comparativement au mode RUN. Dans le mode STANDBY, toutes les unités mémoire 8a-8e de la mémoire 8 sont dans l’état de non-rétention. Dans ce mode, la mémoire 8 n’est tout simplement pas alimentée en énergie. Ainsi, dans ce mode, aucune donnée ne peut être retenue par la mémoire 8, et ce quelle que soit l’unité mémoire où une telle donnée est écrite. Dans le mode STANDBY, toutes les horloges du système sont désactivées. Le mode STOP est quant à lui un mode intermédiaire qui consomme moins d’énergie que le mode RUN, mais qui consomme potentiellement plus d’énergie que le mode STANDBY. Dans le mode STOP, les unités mémoire de la mémoire 8 sont susceptible d’être dans des états différents les uns des autres. Ainsi, dans ce mode STOP, des données peuvent être retenues par la mémoire 8, mais cette faculté de rétention dépend de l’unité mémoire 8a-8e considérée. Dans le mode STOP, au moins une horloge du système est désactivée. Le contrôleur 10 a pour fonction de configurer la mémoire 8 dans l’un ou l’autre des trois modes de fonctionnement RUN, STOP et STANDBY. Il est à noter que ces modes de fonctionnements RUN, STOP et STANDBY sont des modes de fonctionnement de la mémoire 8 qui sont sélectionnables par un utilisateur, au moyen de commandes transmises au système 1 via l’interface de réception de commandes. Le contrôleur 10 est par exemple un circuit, programmable (FPGA) ou non (ASIC). Le contrôleur 10 a pour fonction de configurer les états respectifs des unités mémoire 8a-8e de la mémoire 8, en fonction d’une commande utilisateur de configuration de la mémoire 8 dans l’un des modes de fonctionnement global RUN, STOP et STANDBY de cette mémoire 8. A l’opposé des modes de fonctionnements RUN, STOP et STANDBY de la mémoire 8, les états individuels des unités mémoire 8a-8e de la mémoire 8 ne sont pas ajustables individuellement par des commandes utilisateur. C’est la fonction du contrôleur 10 d’ajuster ces états en fonction des commandes reçues et ce automatiquement, en suivant une logique qui est exposée plus loin. Le contrôleur 10 comprend une pluralité de registres 12, dont un registre de mode et des registres d’écriture. Le registre de mode est destiné à mémoriser un mode de fonctionnement courant de la mémoire 8 (c’est-à-dire le dernier mode de fonctionnement demandé de l’extérieur du système 1 via une commande reçue par l’interface 4). Les registres d’écriture sont par ailleurs associés respectivement aux unités mémoire 8a-8e. Autrement dit, chaque unité mémoire 8a-8e est associée à un registre d’écriture qui lui est propre (ce qui suppose, dans l’exemple de réalisation illustré en figure 2, l’existence de cinq registres d’écriture). Comme on le verra plus en détail dans la suite, un registre d’écriture associé à une unité mémoire 8a-8e indique s’il s’est produit ou non au moins une écriture de données dans cette unité mémoire, depuis la dernière mise sous tension du système 1. Par exemple, un registre d’écriture peut stocker : Une première valeur, telle que zéro, pour indiquer qu’aucune écriture n’est survenue depuis la dernière mise sous tension du système 1 dans l’unité mémoire associée. Une deuxième valeur, telle que un, pour indiquer qu’au moins une écriture est survenue depuis la dernière mise sous tension du système 1 dans l’unité mémoire associée. Un registre d’écriture peut ainsi être codé sur un seul bit. Le contrôleur comprend par ailleurs une unité de traitement 14, configurée pour traiter des requêtes d’accès à la mémoire 8 émanant du module maître 6, et pour traiter des commandes de reconfiguration de la mémoire dans un nouvel état de fonctionnement, émanant de l’interface 4. L’unité de traitement 14 est apte à relayer aux unités mémoire émises par le module maître du système 1 les requêtes d’accès. Le système 1 peut comprendre une pluralité de dispositifs de stockage 2 conformes à la description qui précède. Chacun de ces dispositifs 2 comprend une mémoire 8 et un contrôleur 10 pour contrôler spécifiquement cette mémoire 8. Autrement, il y a autant de contrôleurs 10 que de mémoires 8 dans le système 1. Lorsque le système 1 comprend plusieurs mémoires, ces mémoires peuvent être de tailles variables et/ou être utilisées à des fins différentes. Par exemple, le système 1 peut comprendre : une première mémoire dédiée au stockage de données d’exécution, notamment une pile d’exécution, une deuxième mémoire dédiée au stockage de données de sécurité, telles que des codes correcteurs d’erreurs, et une troisième mémoire constituant une extension de la première mémoire. Le système 1 décrit ci-dessus, et en particulier le contrôleur 10, fonctionne de la manière suivante. Initialisation du contrôleur Lorsque le système 1 est mis sous tension, les registres d’écriture du contrôleur 10 sont tous mis à zéro. Par ailleurs, le registre de mode est positionné à un mode par défaut parmi les différents modes disponibles, par exemple le mode STOP. Accès en écriture Lorsque le module maître 6 émet une requête en écriture de données dans la mémoire 8, les étapes suivantes sont mises en œuvre en référence à la figure 3 . La requête en écriture est reçue par le contrôleur 10 (étape 100). La requête en écriture comprend typiquement une adresse d’écriture dans la mémoire 8 et les données à écrire dans la mémoire 8, ces données occupant une taille renseignée dans la requête en écriture ou déductible de celle-ci. Le contrôleur 10 détermine, sur la base de la requête en écriture, la ou les unités mémoire 8a-8b de la mémoire 8 visée(s) par la requête, c’est-à-dire celles dont le contenu est mis à jour par l’écriture (étape 102). Cette détermination 102 peut être mis en œuvre avant, pendant ou après l’écriture dans la mémoire 8. Le registre d’écriture associé à chaque unité mémoire visée par la requête en écriture est positionné à un par le contrôleur 10 (étape 104). Ce positionnement à un est mis en œuvre par exemple une fois l’écriture effective. En revanche, les registres d’écritures des unités mémoires de la mémoire 8 qui ne sont pas concernées par la requête en écriture ne sont pas modifiés à l’étape 104. Par ailleurs, le contrôleur 10 vérifie quel est le mode de fonctionnement courant de la mémoire 8, en lisant le contenu du registre de mode (étape 106). Dans le cas particulier où ce mode de fonctionnement est le mode STOP (étape 108), le contrôleur 10 bascule chaque unité mémoire déterminée lors de l’étape 102 dans le mode de rétention (étape 110). En revanche, le contrôleur 10 ne change pas les états respectifs des unités mémoires 8a-8e non concernées par la requête en écriture. En outre, si le mode de fonctionnement courant n’est pas le mode STOP, le contrôle ne met pas en œuvre l’étape 110. Vidage d’unité mémoire Lorsque le module maître 6 émet une requête d’effacement de données stockées dans la mémoire 8, les étapes suivantes sont mises en œuvre en référence à la figure 4 . Une telle requête d’effacement peut être émise pour des raisons de sécurité, par exemple lorsqu’il est détecté un accès non autorisé au système voire à la mémoire 8. La requête d’effacement est reçue par le contrôleur 10 (étape 200). La requête d’effacement requête comprend typiquement une adresse d’effacement et la taille des données à effacer. Le contrôleur 10 détermine, sur la base de la requête d’effacement, au moins une unité mémoire de la mémoire 8 visée par la requête entièrement vidée à l’issue de l’effacement demandé (étape 202). Par « vidée entièrement », on entend que l’unité mémoire ne contient plus aucune donnée accessible en lecture à l’issue de l’effacement. Cette détermination 202 peut être mis en œuvre avant, pendant ou après l’effacement dans la mémoire 8. Le registre d’écriture associé à chaque unité mémoire 8a-8e déterminée au cours de l’étape 202 est positionné à un par le contrôleur 10 (étape 204). Ce positionnement à zéro est mis en œuvre par exemple une fois l’effacement effectif. En revanche, les registres d’écritures des unités mémoires de la mémoire 8 qui ne sont pas vidées entièrement par l’effacement ne sont pas modifiés lors de l’étape 204. Par ailleurs, le contrôleur 10 vérifie quel est le mode de fonctionnement courant de la mémoire 8 (étape 206). Dans le cas particulier où ce mode de fonctionnement est le mode STOP (étape 208), le contrôleur 10 bascule chaque unité mémoire déterminée lors de l’étape 202 dans le mode de non-rétention (étape 210). Le contrôleur 10 ne change pas les états respectifs des unités mémoires non entièrement vidés par la requête en effacement. En outre, si le mode de fonctionnement courant n’est pas le mode STOP, le contrôle ne met pas en œuvre l’étape 210. Configuration de la mémoire dans un nouveau mode de fonctionnement Lorsque l’interface 4 reçoit une commande de configuration de la mémoire 8 dans l’un des modes de fonctionnement précités (RUN, STOP ou STANDBY), les étapes sont alors mises en œuvre en référence à la figure 5 . La commande reçue par l’interface 4 est transmise au contrôleur 10. Le contrôleur 10 compare le mode de fonctionnement visé par la commande reçue et le mode de fonctionnement courant indiqué dans son registre de mode interne (étape 302). Si les deux modes comparés sont identiques, le contrôleur 10 ne traite pas la commande reçue. Si les deux modes comparés sont différents, le contrôleur 10 détermine, sur la base de la commande reçue, un état de destination vers lequel basculer chaque unité mémoire de la mémoire 8. Si la commande reçue demande une configuration de la mémoire 8 dans le mode RUN, le contrôleur 10 bascule toutes les unités mémoires dans le mode de rétention, à moins que celles-ci ne s’y trouvent déjà (étape 304). Si la commande reçue demande une configuration de la mémoire 8 dans le mode STANDBY, le contrôleur 10 bascule toutes les unités mémoires dans le mode de non-rétention, à moins que celles-ci ne s’y trouvent déjà (étape 306). Si la commande reçue demande une configuration de la mémoire 8 dans le mode STOP, alors le contrôleur 10 adopte une politique de configuration plus fine, et potentiellement hétérogène, des unités mémoires 8a-8e. Le contrôleur 10 configure en effet dans l’état de rétention toute unité mémoire de la mémoire 8 ayant subi au moins un accès en écriture depuis sa dernière mise sous tension (étape 310). Le contrôleur 10 configure par ailleurs dans l’état de non-rétention au moins une unité mémoire de la mémoire 8 n’ayant subi aucun accès en écriture depuis sa dernière mise sous tension, voire toute unité mémoire n’ayant pas subi un tel accès en écriture, au cours de l’étape 310. Pour appliquer cette politique, le contrôleur 10 lit (étape 308) les registres d’écriture respectivement associés aux unités mémoire 8a-8e. Si un registre d’écriture est à zéro, cela signifie qu’aucune écriture n’est survenue dans l’unité mémoire associée depuis la dernière mise sous tension ; cette unité mémoire va donc basculer vers l’état de non rétention, à moins qu’elle ne s’y trouve déjà. Si au contraire un registre d’écriture est à un, cela signifie qu’au moins une écriture est survenue dans l’unité mémoire associée depuis la dernière mis sous tension ; cette unité mémoire va donc basculer vers l’état de rétention, à moins qu’elle ne s’y trouve déjà. La politique mise en œuvre par le contrôleur 10 permet de réduire de manière optimale la consommation d’énergie de la mémoire 8 lorsque celle-ci est dans le mode de fonctionnement STOP, et ce sans perte de données mémorisées. On notera par ailleurs que le système 1 fonctionne à deux niveaux de configurations : un niveau de configuration haut niveau et public (les modes de fonctionnement globaux de la mémoire 8) qu’un utilisateur du système 1 peut sélectionner, un niveau de configuration plus bas niveau et privé (les états respectifs des unités mémoire), qui sont sous le contrôle du contrôleur 10, mais sur lesquels un utilisateur ne peut pas exercer de contrôle individuel. Ce double niveau de configuration permet d’obtenir un compromis idéal entre versatilité du système 1 et gestion optimale d’économie d’énergie. Autres variantes de réalisation Dans ce qui précède, il a été présenté un mode de réalisation du mode de fonctionnement RUN dans lequel toutes les unités mémoire 8a-8e de la mémoire 8 sont dans leur état de rétention. En variante, la politique de bascule d’états des unités mémoires mise en œuvre lorsque la mémoire 8 est dans le mode de fonctionnement STOP est également mise en œuvre lorsque la mémoire 8 est dans le mode de fonctionnement RUN. Système (1) comprenant une mémoire (8), la mémoire (8) comprenant une pluralité d’unités mémoires accessibles en écriture, chaque unité mémoire étant configurable : - dans un état de rétention dans lequel l’unité mémoire est capable de retenir des données jusqu’à une mise hors tension ultérieure de l’unité mémoire, et - dans un état de non-rétention dans lequel l’unité mémoire ne retient pas de données et consomme moins d’énergie que dans le premier état, le système comprenant par ailleurs un contrôleur (10) configuré pour configurer dans l’état de rétention toute unité mémoire de la mémoire ayant subi au moins un accès en écriture depuis sa dernière mise sous tension, et pour configurer dans l’état de non-rétention au moins une unité mémoire de la mémoire n’ayant subi aucun accès en écriture depuis sa dernière mise sous tension. Système (1) selon la revendication précédente, dans lequel le contrôleur est configuré pour configurer dans l’état de non-rétention toute unité mémoire de la mémoire n’ayant subi aucun accès en écriture depuis sa dernière mise sous tension. Système selon l’une des revendications précédentes, dans lequel la mémoire (8) est configurable dans une pluralité de modes comprenant : - un premier mode (STOP), dans lequel toute unité mémoire de la mémoire ayant subi au moins un accès en écriture depuis sa dernière mise sous tension est dans l’état de rétention, et au moins une unité mémoire de la mémoire n’ayant subi aucun accès en écriture depuis sa dernière mise sous tension est dans l’état de non-rétention, et - au moins un autre mode (RUN, STANDBY) dans lequel toutes les unités mémoire de la mémoire sont dans le même état. Système (1) selon la revendication précédente, dans lequel la pluralité de modes comprend un deuxième mode (RUN) dans lequel toutes les unités mémoire sont dans l’état de rétention, et un troisième mode (STANDBY) dans lequel toutes les unités mémoire sont dans l’état de non-rétention. Système (1) selon l’une des revendications 3 et 4, dans lequel le premier mode est un mode dans lequel au moins une horloge du système est désactivée. Système (1) selon l’une des revendications 3 à 5, dans lequel le système (1) comprend une interface pour recevoir des commandes utilisateur demandant une configuration de la mémoire dans l’un des modes (RUN, STOP, STANDBY) de la pluralité de modes. Système selon la revendication précédente, dans lequel le contrôleur est configuré pour ne pas autoriser de configuration individuelle de l’état d’une unité mémoire de la mémoire au moyen d’une commande utilisateur reçue par l’interface. Système (1) selon l’une des revendications précédentes, dans lequel la mémoire est une mémoire volatile, par exemple une mémoire RAM. Système (1) selon l’une des revendications précédentes, du type système sur puce. Procédé de contrôle d’une mémoire, la mémoire comprenant une pluralité d’unités mémoires accessibles en écriture, chaque unité mémoire étant configurable : - dans un état de rétention dans lequel l’unité mémoire est capable de retenir des données jusqu’à une mise hors tension ultérieure de l’unité mémoire, et - dans un état de non-rétention dans lequel l’unité mémoire ne retient pas de données et consomme moins d’énergie que dans le premier état, le procédé comprenant les étapes suivantes : - configuration dans l’état de rétention de toute unité mémoire de la mémoire ayant subi au moins un accès en écriture depuis sa dernière mise sous tension, et - configuration dans l’état de non-rétention au moins une unité mémoire de la mémoire n’ayant subi aucun accès en écriture depuis sa dernière mise sous tension.