FR 3155920 A1 20250530 FR 2313113 A 20231127 Selon un aspect, il est proposé un système sur puce comprenant une unité centrale de traitement (CPU) configurée pour : - exécuter une première séquence de micro-instructions avant d’être placée dans un mode d’alimentation de conservation, ladite première séquence de micro-instructions étant adaptées pour copier, dans au moins une mémoire de données (TCDM) directement couplée à l’unité centrale de traitement (CPU), un contexte d’exécution d’un programme informatique dont l’exécution par l’unité centrale de traitement (CPU) est interrompu pour passer dans un mode d’alimentation de conservation, - exécuter une deuxième séquence de micro-instructions en sortie du mode d’alimentation de conservation pour récupérer le contexte d’exécution stocké dans lesdites mémoires afin de reprendre l’exécution du programme informatique interrompu. Figure pour l’abrégé : Figure 1 SYSTÈME SUR PUCE ET PROCÉDÉ DE GESTION D’ALIMENTATION D’UN TEL SYSTÈME SUR PUCE Des modes de réalisation et de mise en œuvre concernent les systèmes sur puce, et plus particulièrement l’optimisation de la consommation d’énergie de tels systèmes sur puce. Les systèmes sur puce sont couramment utilisés dans une grande variété d'appareils électroniques, tels que les « téléphones intelligents » (en anglais « smartphones »,) les tablettes numériques, les ordinateurs portables, les systèmes embarqués, les objets connectés (IoT), et bien d'autres. Un système sur puce (également désigné par l’acronyme « SoC » de l’expression anglaise « System on a Chip ») est un composant électronique qui intègre plusieurs éléments essentiels d'un système informatique ou électronique sur une seule puce de silicium. Un système sur puce comprend par exemple une unité centrale de traitement, une mémoire et des interfaces de communication sur une seule puce. L'optimisation de la consommation d'énergie d'un système sur puce revêt une grande importance afin d’éviter de consommer inutilement de l’énergie. En particulier, le système sur puce peut être alimenté par une batterie ayant une capacité limitée. Il convient donc de limiter au mieux la consommation d’énergie stockée dans cette batterie pour augmenter la durée d’utilisation du système sur puce entre deux recharges de la batterie. Afin d’optimiser la consommation d’énergie d’un système sur puce, le système sur puce peut comprendre plusieurs domaines d’alimentation. Les domaines d'alimentation (en anglais « power domains ») correspondent à des zones du système sur puce qui sont distinctes et isolées électriquement. Ces domaines d’alimentation permettent d’alimenter de manière indépendante différents blocs fonctionnels ou sous-systèmes du système sur puce. L’utilisation de domaines d’alimentation permet ainsi de gérer plus efficacement la consommation d'énergie et de contrôler l'alimentation des éléments du système sur puce en fonction de leur utilisation ou de leur état de fonctionnement. En particulier, les domaines d'alimentation permettent de contrôler et de gérer l'alimentation électrique des éléments du système sur puce de manière sélective, en adaptant l’alimentation électrique de ces éléments en fonction de leurs besoins. Il est ainsi possible de réduire la consommation d'énergie lorsque certains éléments du système sur puce ne sont pas utilisés. La gestion de l’alimentation des différents éléments du système sur puce peut être assurée par un système de gestion d’énergie. Un système sur puce peut notamment comprendre un domaine d’alimentation associé à son unité centrale de traitement et un domaine d’alimentation associé à son système de gestion d’énergie. Il est important d’optimiser la consommation d’énergie du système sur puce lorsque l’unité centrale de traitement est inactive. En particulier, l’unité centrale de traitement peut être rendue inactive lors de l’exécution d’un programme informatique. Il est alors important de pouvoir stopper l’alimentation électrique de l’unité centrale de traitement tout en conservant le contexte d’exécution du programme informatique interrompu afin de pouvoir le récupérer pour reprendre l’exécution du programme informatique une fois l’alimentation électrique de l’unité centrale de traitement rétablie. On connait à ce titre des solutions logicielles permettant de stopper l’alimentation électrique d’une unité centrale de traitement tout en conservant le contexte d’exécution du programme informatique interrompu. Néanmoins, ces solutions logicielles sont généralement complexes et demandent d’exécuter un nombre important d’instructions. Ainsi, le stockage et la récupération du contexte d’exécution peuvent être relativement lents. Il est également possible d’utiliser des bascules à double alimentation (en anglais « flip-flops ») pour conserver le contexte d’exécution lorsque l’alimentation électrique de l’unité centrale de traitement est interrompue au cours de l’exécution d’un programme informatique. Néanmoins, de telles bascules présentent l’inconvénient d’occuper une place importante dans le système sur puce. Il existe donc un besoin de proposer une solution permettant d’interrompre l’alimentation électrique de l’unité centrale de traitement d’un système sur puce lors de l’exécution d’un programme informatique puis de redémarrer relativement rapidement cette unité centrale de traitement une fois son alimentation électrique reprise. Il existe également un besoin de proposer une telle solution ayant un impact limité sur l’encombrement du système sur puce. Selon un aspect, il est proposé un système sur puce comprenant : - une unité centrale de traitement, - des mémoires directement couplées à l’unité centrale de traitement, - un contrôleur d’alimentation configuré pour placer l’unité centrale de traitement et lesdites mémoires: ○ dans un mode d’alimentation de fonctionnement normal dans lequel l’unité centrale de traitement et lesdites mémoires sont alimentées par une tension d’alimentation de fonctionnement normal, ou ○ dans un mode d’alimentation de conservation dans lequel l’unité centrale de traitement n’est plus alimentée et lesdites mémoires sont alimentées par une tension d’alimentation de conservation inférieure à ladite tension d’alimentation de fonctionnement normal et suffisante pour conserver des données stockées dans lesdites mémoires, et dans lequel l’unité centrale de traitement est configurée pour : - exécuter une première séquence de micro-instructions –notamment injectées, par l’exécution d’une instruction « goto_retention », dans une chaîne de traitement de l’unité centrale de traitement– avant d’être placée dans un mode d’alimentation de conservation, ladite première séquence de micro-instructions étant adaptées pour copier, dans au moins une mémoire de données directement couplée à l’unité centrale de traitement, un contexte d’exécution d’un programme informatique dont l’exécution par l’unité centrale de traitement est interrompu pour passer dans un mode d’alimentation de conservation, - exécuter une deuxième séquence de micro-instructions –notamment injectées, par l’exécution d’une instruction « release_retention », dans la chaîne de traitement de l’unité centrale de traitement– en sortie du mode d’alimentation de conservation pour récupérer le contexte d’exécution stocké dans lesdites mémoires afin de reprendre l’exécution du programme informatique interrompu. Un tel système sur puce utilise donc des mémoires directement couplées à l’unité centrale de traitement pour stocker le contexte d’exécution d’un programme informatique exécuté par cette unité centrale de traitement avant de passer en mode d’alimentation de conservation. Ainsi, lorsque l’unité centrale de traitement est inactive, il est possible de stopper l’alimentation électrique de l’unité centrale de traitement tout en maintenant une alimentation électrique suffisante pour lesdites mémoires directement couplées à l’unité centrale de traitement afin de conserver le contexte d’exécution jusqu’à la reprise de l’alimentation électrique de l’unité centrale de traitement. Cela permet de réduire drastiquement la consommation d’énergie du système sur puce. En outre, la conservation du contexte d’exécution dans les mémoires directement couplées à l’unité centrale de traitement permet une restauration simple et rapide du contexte d’exécution du programme informatique interrompu une fois l’alimentation électrique de l’unité centrale de traitement rétablie. L’exécution du programme informatique peut donc être reprise rapidement après avoir rétabli l’alimentation électrique de l’unité centrale de traitement. Un tel système sur puce présente également l’avantage que le stockage et la récupération du contexte d’exécution dans les mémoires directement couplées à l’unité centrale de traitement pour le passage et la sortie du mode d’alimentation de conservation sont effectués par une machine d’état de l’unité centrale de traitement et non pas par voie logicielle. Cela permet de réaliser plus simplement et plus rapidement le passage et la sortie du mode d’alimentation de conservation. Cela permet également de s’assurer que l’ensemble du contexte d’exécution est bien stocké et récupéré dans ladite au moins une mémoire de données directement couplée à l’unité centrale de traitement. En particulier, un tel système sur puce est configuré pour restaurer des informations du contexte dans des registres en lecture seule ne pouvant être modifiés que par voie matérielle et non par voie logicielle. Un tel système sur puce présente également l’avantage de ne pas utiliser de composants basse consommation additionnels et encombrants tels que des bascules à double alimentation pour conserver le contexte d’exécution du programme informatique interrompu. Dans un mode de réalisation avantageux, l’unité centrale de traitement comprend un contrôleur de mode d’alimentation configuré pour communiquer avec le contrôleur d’alimentation afin de négocier avec le contrôleur d’alimentation un passage dans un mode d’alimentation de conservation. Avantageusement, l’unité centrale de traitement comprend une unité de contrôle configurée pour exécuter une machine d’état permettant d’exécuter des micro-instructions pour : - stocker le contexte d’exécution dans ladite au moins une mémoire de données directement couplée avec l’unité centrale de traitement avant de passer dans le mode d’alimentation de conservation, - récupérer le contexte d’exécution dans ladite au moins une mémoire de données directement couplée avec l’unité centrale de traitement en sortie du mode d’alimentation de conservation. De préférence, l’unité centrale de traitement est configurée pour exécuter des instructions pour entrer et sortir du mode d’alimentation de conservation –notamment l’instruction « goto_retention » pour entrer dans le mode d’alimentation de conservation et les instructions « luiX2/addX2 », « release_retention » et « mret » pour sortir du mode d’alimentation de conservation–, ces instructions étant stockées dans au moins une mémoire de programme directement couplée avec l’unité centrale de traitement. Avantageusement, l’unité centrale de traitement comprend en outre un registre configuré pour stocker un pointeur de pile auxiliaire configuré pour stocker la valeur d’un pointeur de pile principal avant de passer dans un mode d’alimentation de conservation, ladite première séquence de micro-instructions étant configurée pour stocker ledit pointeur de pile auxiliaire dans ladite au moins une mémoire de données directement couplée à l’unité centrale de traitement avant de passer dans le mode d’alimentation de conservation, ladite deuxième séquence de micro-instructions étant configurée pour récupérer la valeur du pointeur de pile auxiliaire pour l’utiliser comme pointeur de pile principal. Dans un mode de réalisation avantageux, le contrôleur d’alimentation est configuré pour, en sortie du mode d’alimentation de conservation, transmettre un signal permettant d’indiquer à l’unité centrale de traitement que cette dernière revient d’un mode d’alimentation de conservation, afin que l’unité centrale de traitement exécute ladite deuxième séquence de micro-instructions. Selon un autre aspect, il est proposé un procédé de gestion d’alimentation électrique d’un système sur puce tel que décrit précédemment, le procédé comprenant : - une exécution par l’unité centrale de traitement d’une première séquence de micro-instructions –notamment injectées, par l’exécution d’une instruction « goto_retention », dans une chaîne de traitement de l’unité centrale de traitement– avant d’être placée dans un mode d’alimentation de conservation, ladite première séquence de micro-instructions étant adaptées pour copier, dans au moins une mémoire de données directement couplée à l’unité centrale de traitement, un contexte d’exécution d’un programme informatique dont l’exécution par l’unité centrale de traitement est interrompu pour passer dans un mode d’alimentation de conservation, - une exécution par l’unité centrale de traitement d’une deuxième séquence de micro-instructions –notamment injectées, par l’exécution d’une instruction « release_retention », dans la chaîne de traitement de l’unité centrale de traitement– en sortie du mode d’alimentation de conservation pour récupérer le contexte d’exécution stocké dans lesdites mémoires afin de reprendre l’exécution du programme informatique interrompu. Dans un mode de mise en œuvre avantageux, le procédé comprend une communication entre un contrôleur de mode d’alimentation de l’unité centrale de traitement et le contrôleur d’alimentation afin de négocier un passage dans un mode d’alimentation de conservation. Avantageusement, le procédé comprend une exécution par l’unité centrale de traitement de micro-instructions fournies par une machine d’état d’une unité de contrôle de l’unité centrale de traitement pour : - stocker le contexte d’exécution dans ladite au moins une mémoire de données directement couplée avec l’unité centrale de traitement avant de passer dans le mode d’alimentation de conservation, - récupérer le contexte d’exécution dans ladite au moins une mémoire de données directement couplée avec l’unité centrale de traitement en sortie du mode d’alimentation de conservation. De préférence, le procédé comprend une exécution, par l’unité centrale de traitement, d’instructions –notamment les instructions « goto_retention », « luiX2/addX2 », « release_retention » et « mret » – pour entrer et sortir du mode d’alimentation de conservation, ces instructions étant stockées dans au moins une mémoire de programme couplée directement avec l’unité centrale de traitement. Avantageusement, le procédé comprend en outre un stockage d’un pointeur de pile auxiliaire dans un registre de l’unité centrale de traitement, le pointeur de pile auxiliaire permettant de stocker la valeur d’un pointeur de pile principal exécutée avant de passer dans un mode d’alimentation de conservation, l’exécution de ladite première séquence de micro-instructions permettant de stocker ledit pointeur de pile auxiliaire dans ladite au moins une mémoire de données couplée directement à l’unité centrale de traitement avant de passer dans le mode d’alimentation de conservation, l’exécution de ladite deuxième séquence de micro-instructions permettant de récupérer la valeur du pointeur de pile auxiliaire pour l’utiliser comme pointeur de pile principal. Dans un mode de mise en œuvre avantageux, le procédé comprend en outre, en sortie du mode d’alimentation de conservation, une transmission par le contrôleur d’alimentation d’un signal permettant d’indiquer à l’unité centrale de traitement que cette dernière revient d’un mode d’alimentation de conservation, afin que l’unité centrale de traitement exécute ladite deuxième séquence de micro-instructions. D’autres avantages et caractéristiques de l’invention apparaîtront à l’examen de la description détaillée de modes de réalisation, nullement limitatifs, et des dessins annexés sur lesquels : FIG. 1 FIG. 2 FIG. 3 FIG. 4 FIG. 5 illustrent des modes de réalisation et de mise en œuvre de l’invention. La FIG. 1 illustre un système sur puce SOC. Le système sur puce SOC comprend une unité centrale de traitement CPU, un contrôleur d’alimentation PCTRL, des mémoires TCM directement couplées à l’unité centrale de traitement CPU (ces mémoires pouvant également être désignées par l’expression « mémoires fortement couplées », en anglais « tightly coupled memories »). L’unité centrale de traitement CPU est configurée pour exécuter des instructions d’un programme informatique, notamment de type « firmware ». En particulier, l’unité centrale de traitement CPU comprend des éléments bien connus de l’homme du métier, tels qu’une unité arithmétique et logique ALU, une unité de génération d’adresses AGU, une unité de multiplication/division MUL, etc… Le système sur puce SOC utilise plusieurs modes d’alimentation permettant d’adapter sa consommation d’énergie selon l’utilisation des différents éléments de ce système sur puce SOC. Le système sur puce SOC est divisé en plusieurs domaines d’alimentation permettant d’adapter l’alimentation de manière indépendante entre les différents domaines d’alimentation. En particulier, le système sur puce comprend un premier domaine d’alimentation PD_SOC contenant le contrôleur d’alimentation PCTRL. Le système sur puce SOC comprend un deuxième domaine d’alimentation PD_CPU contenant l’unité centrale de traitement CPU. Le système sur puce SOC comprend un troisième domaine d’alimentation PD_TCM contenant les mémoires TCM. L’unité centrale de traitement CPU peut être placée sous différents modes d’alimentation. En particulier, l’unité centrale de traitement CPU peut être placée dans un mode d’alimentation de fonctionnement normal. Dans ce mode, l’unité centrale de traitement CPU est alimentée par une tension Vcore. L’unité centrale de traitement CPU peut également être placée dans un mode d’alimentation d’inactivité. Dans ce mode, l’unité centrale de traitement CPU n’est plus alimentée. L’unité centrale de traitement CPU peut aussi être placée dans un mode d’alimentation de conservation. Dans ce mode, l’unité centrale de traitement CPU n’est plus alimentée mais est configurée pour sauvegarder le contexte d’exécution du programme avant que son alimentation soit arrêtée. Le passage du mode d’alimentation de fonctionnement normal au mode d’alimentation de conservation est réalisé en exécutant une instruction "goto_retention" capable d'injecter des micro-instructions dans une chaîne de traitement (« pipeline ») de l’unité centrale de traitement CPU. L’unité centrale de traitement CPU comprend un banc de registres REGF (ou « fichier de registres » en anglais « register file »). Le banc de registres REGF est utilisé pour stocker temporairement des données pendant le traitement d’instructions par l’unité centrale de traitement CPU lors d’une exécution d’un programme informatique. L’unité centrale de traitement CPU comprend un contrôleur de mémoire couplé avec les mémoires TCM. Les mémoires TCM sont des mémoires directement couplées et juxtaposées à l’unité centrale de traitement CPU. Les mémoires TCM sont configurées pour fournir un accès rapide pour l’unité centrale de traitement, notamment plus rapide par rapport à une mémoire RAM externe ou d’autres types de mémoire plus éloignés de l’unité centrale de traitement. Ces mémoires TCM permettent ainsi d’améliorer les performances d’un programme informatique exécuté par l’unité centrale de traitement CPU en réduisant les temps d’accès à la mémoire. Les mémoires TCM présentent également une faible latence, c’est-à-dire la durée écoulée entre une demande d’accès à la mémoire et une mise à disposition des données par la mémoire. La latence des mémoires TCM est notamment de l’ordre d’un cycle de l’unité centrale de traitement. Chaque mémoire TCM présente un circuit de périphérie et un tableau. Le tableau est utilisé pour mémoriser des données ou des instructions. Le circuit de périphérie est utilisé pour le fonctionnement de la mémoire TCM. Le circuit de périphérie et le tableau peuvent recevoir deux tensions différentes pour un même mode d’alimentation. Les mémoires TCM peuvent être placées dans un mode d’alimentation de fonctionnement normal ou bien dans un mode d’alimentation de conservation. Dans le mode d’alimentation de fonctionnement normal, le circuit de périphérie et le tableau de chaque mémoire TCM sont alimentées par une tension Vcore. Dans le mode d’alimentation de conservation, la périphérie de chaque mémoire TCM n’est pas alimentée mais le tableau de chaque mémoire TCM est alimenté par une tension Vret pour garder les informations qu’il contient. La tension Vret est une tension inférieure à la tension Vcore. La tension Vret est adaptée pour être inférieure à la tension Vcore mais suffisante pour permettre une conservation des données dans les mémoires TCM, et plus particulièrement pour conserver un contexte d’exécution, comme cela est décrit dans la suite. La tension Vret est par exemple de l’ordre de 0,6 Volts. Les mémoires TCM comprennent une mémoire de programme TCPM et une mémoire de données TCDM. La mémoire de programme TCPM est configurée pour stocker des instructions d’un programme informatique exécuté par l’unité centrale de traitement. L’unité centrale de traitement utilise un pointeur d’instructions pointant sur les instructions à exécuter stockées dans la mémoire de programme TCPM lors de l’exécution d’un programme informatique. La mémoire de données TCDM comprend une pile principale (zone DZ de la mémoire de données TCDM) configurée pour stocker des données générées lors de l’exécution d’un programme informatique, notamment des données temporaires issues du banc de registre REGF. L’unité centrale de traitement utilise également un pointeur de pile principal SP pointant vers des adresses de la pile principale de la mémoire de données TCDM. Cette pile principale permet de sauvegarder le contenu du banc de registres REGF lors d’un changement de contexte d’exécution. Ce contenu est rétabli dans le banc de registres REGF lors de la restauration de contexte d’exécution. Le pointeur de pile principal SP pointe alors vers l’adresse de la dernière donnée sauvegardée dans la zone DZ de la mémoire de données TCDM. Par ailleurs, la mémoire de données TCDM est également configurée pour présenter une zone de conservation RETZ. Cette zone de conservation RETZ est utilisée pour stocker un contexte d’exécution du programme avant que l’unité centrale de traitement CPU passe en mode de conservation. La zone de conservation RETZ débute à une adresse « retention_context_address » connue par l’unité de contrôle CTRLU de l’unité centrale de traitement CPU. L’unité centrale de traitement CPU comprend en outre des registres de contrôle et de statuts CSR (en anglais « control and status register »). Les registres CSR sont configurés pour stocker des paramètres de fonctionnement de l’unité centrale de traitement CPU ainsi que des informations sur l’état de l’unité centrale de traitement CPU. L’unité centrale de traitement CPU comprend également une interface P_PETR pour des périphériques privés. Cette interface P_PETR comprend des registres PPR pour les périphériques privés. Les registres PPR pour les périphériques privés permettent de configurer et contrôler le fonctionnement de périphériques du système sur puce, tels qu’un contrôleur d’interruption, une unité de de protection de mémoire, etc… L’unité centrale de traitement CPU comprend en outre une unité de contrôle CTRLU. L’unité de contrôle CTRLU est configurée pour mettre en œuvre une machine d’état FSM, permettant d’injecter des micro-instructions dans la chaîne de traitement de l’unité centrale de traitement, avant que l’unité centrale de traitement CPU passe dans le mode d’alimentation de conservation et à la sortie de ce dernier. En particulier, l’instruction « goto_retention » est exécutée avant de passer dans le mode d’alimentation de conservation. L’instruction « goto_retention » permet de mettre en œuvre la machine d’état FSM pour injecter une séquence de micro-instructions dans la chaîne de traitement de l’unité centrale de traitement CPU. Cette séquence de micro-instructions permet de sauvegarder le contexte d’exécution du programme informatique dans une mémoire TCM avant de passer en mode d’alimentation de conservation. À la sortie du mode d’alimentation de conservation, l’unité centrale de traitement CPU exécute une série de micro-instructions injectées par une machine d’état FSM dans la chaîne de traitement de l’unité centrale de traitement. Cette série de micro-instructions permettent de récupérer le contexte d’exécution du programme informatique interrompu afin de reprendre l’exécution de ce programme informatique. Le contexte d’exécution correspond à l’ensemble des données utilisées par le programme informatique qui requiert d’être sauvegardées pour permettre une interruption du programme informatique puis une reprise de son exécution au point où le programme informatique avait été interrompu. Le contexte d’exécution comprend les données stockées dans le banc de registres REGF, celles stockées dans les registres de contrôle et de statuts CSR et celles stockées dans les registres PPR pour les périphériques privés. L’unité centrale de traitement CPU comprend également un registre SSP configurée pour stocker un pointeur de pile auxiliaire (en anglais « Shadow stack pointer »). Le pointeur de pile auxiliaire prend la valeur du pointeur de pile principal vers la zone de la mémoire de données TCDM dans laquelle est stocké le contexte d’exécution du programme informatique interrompu, avant de passer dans le mode d’alimentation de conservation. Le registre SSP permet ainsi de stocker un pointeur de pile auxiliaire SP2 pointant l’adresse du pointeur de pile principal avant de procéder à la sauvegarde du contexte d’exécution dans la mémoire de données TCDM. La séquence de micro-instructions injectée par la machine d’état est configurée pour réaliser un stockage de ce pointeur de pile auxiliaire SP2 dans la zone de conservation RETZ de la mémoire de données TCDM avant de passer en mode d’alimentation de conservation. Le stockage de ce pointeur de pile auxiliaire SP2 permet de récupérer, à la sortie du mode d’alimentation de conservation, l’adresse du pointeur de pile principal correspondant à l’adresse du sommet de la zone DZ de la mémoire de données TCDM stockant les données temporaires générées lors de l’exécution du programme informatique avant le passage en mode d’alimentation de conservation. La mémoire de programme TCPM comprend également une zone WRZ dans laquelle sont stockées des instructions permettant de sortir du mode d’alimentation de conservation en récupérant le contexte d’exécution du programme interrompu puis en effectuant le branchement vers l’instruction qui suit la dernière instruction du programme informatique exécutée avant le passage en mode d’alimentation de conservation. Cette zone WRZ débute à une adresse « warm_restart_addr[31 :0] ». En particulier, l’unité de contrôle CTRLU connaît une adresse de démarrage « boot_address_i[31 :0] » ainsi qu’une valeur de décalage permettant d’obtenir l’adresse « warm_restart_addr[31 :0] » en l’ajoutant à l’adresse de démarrage. En particulier, cette zone WRZ de la mémoire de programme TCPM comprend des instructions « luiX2/addX2 » permettant de charger la valeur de la fin de la zone de conservation dans un registre X2 du banc de registres. Cette zone WRZ de la mémoire de programme TCPM comprend aussi une instruction « release_retention ». Cette instruction permet de récupérer le contexte d’exécution du programme interrompu stocké dans la mémoire de données TCDM. En particulier, cette instruction « release_retention » permet de récupérer les données stockées dans la zone de conservation de la mémoire de programme TCPM qui sont associées au banc de registres REGF, aux registres de contrôle et de statuts CSR et aux registres PPR pour les périphériques afin de rétablir ces données dans les registres correspondants. L’instruction « release retention » est également configurée pour décrémenter le pointeur de pile chargé par l’instruction « luiX2/addX2 » dans le registre X2 du banc de registres. Cette zone WRZ de la mémoire de programme TCPM comprend également une instruction « mret ». Cette instruction permet de récupérer la valeur du pointeur d’instruction (en anglais « program counter ») stockée dans la mémoire de données TCDM pour l’utiliser pour le pointeur d’instruction afin d’effectuer le branchement vers l’instruction qui suit la dernière instruction du programme informatique exécutée avant le passage en mode d’alimentation de conservation. L’unité centrale de traitement CPU comprend également un contrôleur d’interruption INT_CTRL. Le contrôleur d’interruption est configuré pour recevoir des signaux d’interruption. Les signaux d’interruption peuvent permettre d’arrêter l’exécution d’un programme informatique. L’unité centrale de traitement CPU comprend un contrôleur de mode d’alimentation RET_CTRL. Le contrôleur de mode d’alimentation RET_CTRL est configuré pour communiquer avec le contrôleur d’alimentation PCTRL. Le contrôleur d’alimentation PCTRL est contenu dans le premier domaine d’alimentation. L’ensemble des éléments du premier domaine d’alimentation sont constamment alimentés par une tension VSOC. Le contrôleur d’alimentation PCTRL est configuré pour commander l’alimentation des différents domaines d’alimentation du système sur puce. En particulier, le système sur puce SOC est configuré pour générer la tension VSOC, la tension Vret de conservation et la tension Vcore d’alimentation. Ces tensions sont générées à partir d’une source d’alimentation, notamment un générateur de puissance du système sur puce SOC. Le système sur puce SOC comprend un premier commutateur d’alimentation PWRS1 et un deuxième commutateur d’alimentation PWRS2 compris dans le domaine d’alimentation PD_SOC. Le premier commutateur PWRS1 est commandé par le contrôleur d’alimentation PCTRL. Le premier commutateur PWRS1 est configuré pour recevoir la tension Vret et pour délivrer ou non cette tension Vret au domaine d’alimentation PD_TCM en fonction d’une commande du contrôleur d’alimentation PCTRL. En particulier, le premier commutateur délivre la tension Vret uniquement lorsque le système sur puce SOC est dans un mode de conservation. Le deuxième commutateur PWRS2 est commandé par le contrôleur d’alimentation PCTRL. Le deuxième commutateur PWRS2 est configuré pour recevoir la tension Vcore et pour délivrer ou non cette tension Vcore aux domaines d’alimentation PD_TCM et PD_CPU en fonction d’une commande du contrôleur d’alimentation PCTRL. En particulier, le deuxième commutateur PWRS2 délivre la tension Vcore uniquement lorsque le système sur puce SOC est dans un mode d’alimentation de fonctionnement normal. Le contrôleur d’alimentation PCTRL est configuré pour recevoir un signal RET_REQ émis par le contrôleur de mode d’alimentation RET_CTRL de l’unité centrale de traitement CPU lorsque l’unité centrale de traitement CPU demande au contrôleur d’alimentation PCTRL de passer dans un mode de conservation. Le contrôleur d’alimentation PCTRL est configuré pour transmettre un signal RET_ACK au contrôleur de mode d’alimentation RET_CTRL de l’unité centrale de traitement CPU lorsque le contrôleur d’alimentation PCTRL accepte de passer l’unité centrale de traitement CPU dans un mode de conservation après avoir reçu le signal RET_REQ. Le contrôleur d’alimentation PCTRL est configuré pour recevoir un signal RET_O émis par le contrôleur de mode d’alimentation RET_CTRL de l’unité centrale de traitement CPU lorsque l’unité centrale de traitement CPU reçoit le signal RET_ACK. Le contrôleur d’alimentation PCTRL est configuré pour passer l’unité centrale de traitement CPU en mode de conservation après avoir reçu le signal RET_O Le contrôleur d’alimentation PCTRL est également configuré pour transmettre un signal RST_CSE à l’unité centrale de traitement CPU lorsque le contrôleur d’alimentation PCTRL passe l’unité centrale de traitement CPU dans un mode de fonctionnement normal après avoir été dans un mode de conservation. Le signal RST_CSE permet d’indiquer à l’unité de contrôle CTRLU de l’unité centrale de traitement CPU d’effectuer une procédure de sortie de mode de conservation pour récupérer le contexte d’exécution du programme interrompu. Le système sur puce SOC comprend également des cellules d’isolation ISOC. Ces cellules d’isolation ISOC sont comprises dans le domaine d’alimentation PD_SOC. Les cellules d’isolation permettent d’isoler le domaine PD_CPU du reste du système sur puce SOC lorsque son alimentation électrique est interrompue. En particulier, les cellules d’isolation permettent d’empêcher une propagation de signaux flottants provenant de l’unité centrale de traitement lorsque cette dernière n’est plus alimentée électriquement vers d’autres éléments du système sur puce SOC. La FIG. 2 illustre un procédé de gestion d’alimentation électrique d’un système sur puce SOC tel que celui décrit précédemment. En particulier, le procédé de gestion d’alimentation permet de passer dans un mode d’alimentation de conservation puis de revenir dans un mode d’alimentation de fonctionnement normal. Avant de passer dans un mode d’alimentation de conservation, à l’étape 20, l’unité centrale de traitement CPU fonctionne normalement et exécute un programme informatique, notamment de type « firmware ». L’unité centrale de traitement CPU et les mémoires TCM sont donc placées dans un mode d’alimentation de fonctionnement normal NORM_M. Ainsi, le contrôleur d’alimentation PCTRL contrôle le deuxième commutateur PWRS2 pour que l’unité centrale de traitement CPU soit alimentée par la tension Vcore. La FIG. 3 illustre l’état des registres REGF, CSR, PPR de l’unité centrale de traitement CPU ainsi que l’état des mémoires TCM avant de passer dans le mode d’alimentation de conservation. Ensuite, à l’étape 21, le programme d’ordinateur reçoit une interruption entraînant l’arrêt de l’exécution du programme informatique et l’exécution de l’instruction « goto_retention ». L’interruption peut provenir d’un périphérique du système sur puce SOC. En variante, l’instruction « goto_retention » peut être présente dans le code exécutable du programme d’ordinateur et être exécutée au cours de l’exécution du programme d’ordinateur. L’instruction « goto_retention » permet d’injecter une séquence de micro-instructions dans la chaîne de traitement de l’unité centrale de traitement CPU. En particulier, cette séquence d’instructions est exécutée une fois que tous les accès mémoires en cours sont terminés. La séquence de micro-instructions injectées par l’instruction « goto_retention » en mettant en œuvre la machine d’état FSM permet de désactiver la prise en charge des interruptions par le contrôleur d’interruption INT_CTRL de l’unité centrale de traitement CPU, afin d’éviter toute interruption lors du passage en mode d’alimentation de conservation. L’exécution de ladite séquence de micro-instructions entraîne un stockage du contexte d’exécution du programme interrompu dans la zone de conservation RETZ de la mémoire de données TCDM. En particulier, l’exécution de la séquence de micro-instruction entraîne un stockage des valeurs REGF_V du banc de registres REGF, des valeurs CSR_V des registres de contrôle et de statuts CSR et des valeurs PPR_V des registres PPR pour les périphériques. Cette séquence de micro-instructions permet ensuite de générer le signal RET_REQ par le contrôleur de mode d’alimentation RET_CTRL et de le transmettre au contrôleur d’alimentation PCTRL. Ensuite, le contrôleur d’alimentation PCTRL attend que le système sur puce SOC soit prêt pour passer dans un mode d’alimentation de conservation puis génère le signal RET_ACK et le transmet au contrôleur de mode d’alimentation PCTRL de l’unité centrale de traitement CPU. Une fois le signal RET_ACK reçu, l’exécution de la séquence de micro-instructions permet ensuite de générer le signal RET_O par le contrôleur de mode d’alimentation RET_CTRL et de le transmettre au contrôleur d’alimentation PCTRL. Ce signal RET_O permet d’indiquer que l’unité centrale de traitement est prête pour passer en mode d’alimentation de conservation. À l’étape 22, une fois le signal RET_O reçu, le contrôleur d’alimentation PCTRL passe l’unité centrale de traitement CPU et les mémoires TCM dans un mode d’alimentation de rétention. Pour ce faire, le contrôleur d’alimentation PCTRL commande le premier commutateur d’alimentation PWRS1 de manière à délivrer la tension Vret aux mémoires TCM. Le contrôleur d’alimentation PCTRL commande également le deuxième commutateur d’alimentation PWRS2 de manière à stopper l’alimentation de l’unité centrale de traitement CPU. Le contrôleur d’alimentation PCTRL arrête également le signal d’horloge et force une réinitialisation de l’unité centrale de traitement CPU avec le signal de réinitialisation (« reset »). Le contrôleur d’alimentation commande également les cellules d’isolation ISOC pour isoler l’unité centrale de traitement CPU. L’unité centrale de traitement CPU et les mémoires TCM sont ainsi placées dans un mode d’alimentation de conservation RET_M. En particulier, l’unité centrale de traitement CPU n’est pas alimentée et les mémoires TCM sont alimentées par la tension Vret. Ainsi, les données du banc de registres REGF, les données des registres de contrôle et de statuts CSR et les données des registres PPR pour les périphériques sont effacées mais conservées dans la zone de conservation RETZ de la mémoire de données TCDM. La FIG. 4 illustre la conservation du contexte d’exécution dans le mode d’alimentation de conservation. Ensuite, à l’étape 23, le contrôleur d’alimentation PCTRL peut sortir l’unité centrale de traitement CPU et les mémoires TCM du mode d’alimentation de conservation en fonction des besoins du système sur puce SOC. La sortie du mode d’alimentation de conservation est notamment réalisée lorsqu’une nouvelle séquence de données d’un périphérique du système sur puce SOC doit être traitée par l’unité centrale de traitement. Afin de sortir du mode d’alimentation de conservation, le contrôleur d’alimentation PCTRL commande le premier commutateur PWRS1 et le deuxième commutateur PWRS2 pour délivrer la tension Vcore à l’unité centrale de traitement CPU et aux mémoires TCM. L’unité centrale de traitement CPU et les mémoires TCM passent alors dans un mode d’alimentation de fonctionnement normal NORM_M. Le contrôleur d’alimentation PCTRL rétablit aussi le signal d’horloge et le signal de réinitialisation. Le contrôleur d’alimentation PCTRL commande également les cellules d’isolation ISOC pour arrêter l’isolation de l’unité centrale de traitement CPU. Le contrôleur d’alimentation PCTRL transmet également un signal RST_CSE à l’unité centrale de traitement. Ce signal RST_CSE permet d’indiquer à l’unité centrale de traitement CPU qu’elle sort d’un mode d’alimentation de conservation. L’unité centrale de traitement CPU peut alors mettre en œuvre une procédure de sortie de mode d’alimentation de conservation. Cette procédure est mise en œuvre par l’exécution de fonctions de retour de mode d’alimentation. En particulier, une machine d’état FSM de l’unité de contrôle CTRLU est configurée pour injecter dans la chaîne de traitement (« pipeline ») de l’unité centrale de traitement CPU une séquence de micro-instructions de l’instruction « release_retention ». Cette séquence de micro-instructions est ensuite exécutée par l’unité centrale de traitement CPU. En particulier, l’instruction « release_retention » est exécutée pour récupérer les données stockées dans la zone de conservation RETZ de la mémoire de données TCDM, c’est-à-dire le contexte d’exécution du programme informatique interrompu. Comme indiqué précédemment, certaines données REGF_V sont associées au banc de registres REGF, d’autres données CSR_V sont associées aux registres de contrôle et de statuts CSR, et encore d’autres données PPR_V sont associées aux registres PPR pour les périphériques. Ces données sont récupérées puis copiées respectivement dans le banc de registres REGF, dans les registres de contrôle et de statuts CSR et dans les registres PPR pour les périphériques. En outre, la valeur du pointeur de pile principal est modifiée en prenant la valeur du pointeur de pile auxiliaire stockée dans la zone de conservation RETZ de sorte que le pointeur de pile principal pointe vers l’adresse au sommet de la zone DZ de la mémoire de données TCDM. La valeur du pointeur d’instruction est également récupérée et stockée dans les registres de contrôle et de statut CSR. La FIG. 5 illustre la récupération du contexte d’exécution en sortie de mode d’alimentation de conservation. Puis l’instruction « mret » est exécutée pour récupérer le pointeur d'instruction depuis les registres de contrôle et de statut CSR afin de rétablir l’exécution du programme informatique à partir de l’adresse de l’instruction N_INST qui suivait la dernière instruction L_INST du programme informatique exécutée avant de passer l’unité centrale de traitement dans le mode d’alimentation de conservation. La prise en charge des interruptions par le contrôleur d’interruption INT_CTRL est ensuite rétablie. L’exécution du programme informatique peut ensuite reprendre à l’étape 24. Le système sur puce et le procédé décrit précédemment utilisent des mémoires directement couplées à l’unité centrale de traitement pour stocker le contexte d’exécution d’un programme informatique exécuté par cette unité centrale de traitement avant de passer en mode d’alimentation de conservation. Ainsi, lorsque l’unité centrale de traitement est inactive, il est possible de stopper l’alimentation électrique de l’unité centrale de traitement tout en maintenant une alimentation électrique suffisante pour lesdites mémoires directement couplées à l’unité centrale de traitement afin de conserver le contexte d’exécution jusqu’à la reprise de l’alimentation électrique de l’unité centrale de traitement. Cela permet de réduire drastiquement la consommation d’énergie du système sur puce. En outre, la conservation du contexte d’exécution dans les mémoires directement couplées à l’unité centrale de traitement permet une restauration simple, rapide, complète et exacte du contexte d’exécution du programme informatique interrompu une fois l’alimentation électrique de l’unité centrale de traitement rétablie. L’exécution du programme informatique peut donc être reprise rapidement après avoir rétabli l’alimentation électrique de l’unité centrale de traitement. Le système sur puce et le procédé décrit précédemment présentent également l’avantage que le stockage et la récupération du contexte d’exécution dans les mémoires directement couplées à l’unité centrale de traitement pour le passage et la sortie du mode d’alimentation de conservation sont effectués par une machine d’état de l’unité centrale de traitement et non pas par voie logicielle. Cela permet de réaliser plus simplement et plus rapidement et de manière exacte le passage et la sortie du mode d’alimentation de conservation. Cela permet notamment de s’assurer que l’ensemble du contexte d’exécution est bien stocké et récupéré dans ladite au moins une mémoire de données directement couplée à l’unité centrale de traitement. En particulier, un tel système sur puce est configuré pour restaurer des informations du contexte dans des registres en lecture seul ne pouvant être modifiés que par voie matérielle et non par voie logicielle. Le système sur puce présente également l’avantage de ne pas utiliser de composants basse consommation additionnels et encombrants tels que des bascules à double alimentation pour conserver le contexte d’exécution du programme informatique interrompu. Système sur puce comprenant : - une unité centrale de traitement (CPU), - des mémoires (TCPM, TCDM) directement couplées à l’unité centrale de traitement (CPU), - un contrôleur d’alimentation (PCTRL) configuré pour placer l’unité centrale de traitement (CPU) et lesdites mémoires (TCPM, TCDM): ○ dans un mode d’alimentation de fonctionnement normal dans lequel l’unité centrale de traitement (CPU) et lesdites mémoires (TCPM, TCDM) sont alimentées par une tension d’alimentation de fonctionnement normal (Vcore), ou ○ dans un mode d’alimentation de conservation dans lequel l’unité centrale de traitement (CPU) n’est plus alimentée et lesdites mémoires (TCPM, TCDM) sont alimentées par une tension d’alimentation de conservation (Vret) inférieure à ladite tension d’alimentation de fonctionnement normal (Vcore) et suffisante pour conserver des données stockées dans lesdites mémoires (TCPM, TCDM), et dans lequel l’unité centrale de traitement (CPU) est configurée pour : - exécuter une première séquence de micro-instructions avant d’être placée dans un mode d’alimentation de conservation, ladite première séquence de micro-instructions étant adaptées pour copier, dans au moins une mémoire de données (TCDM) directement couplée à l’unité centrale de traitement (CPU), un contexte d’exécution d’un programme informatique dont l’exécution par l’unité centrale de traitement (CPU) est interrompu pour passer dans un mode d’alimentation de conservation, - exécuter une deuxième séquence de micro-instructions en sortie du mode d’alimentation de conservation pour récupérer le contexte d’exécution stocké dans lesdites mémoires afin de reprendre l’exécution du programme informatique interrompu. Système sur puce selon la revendication 1, dans lequel l’unité centrale de traitement comprend un contrôleur de mode d’alimentation (RET_CTRL) configuré pour communiquer avec le contrôleur d’alimentation (PCTRL) afin de négocier avec le contrôleur d’alimentation (PCTRL) un passage dans un mode d’alimentation de conservation. Système sur puce selon l’une quelconque des revendications 1 ou 2, dans lequel l’unité centrale de traitement comprend une unité de contrôle (CTRLU) configurée pour exécuter une machine d’état permettant d’exécuter des micro-instructions pour : - stocker le contexte d’exécution dans ladite au moins une mémoire de données (TCDM) directement couplée avec l’unité centrale de traitement (CPU) avant de passer dans le mode d’alimentation de conservation, - récupérer le contexte d’exécution dans ladite au moins une mémoire de données (TCDM) directement couplée avec l’unité centrale de traitement (CPU) en sortie du mode d’alimentation de conservation. Système sur puce selon l’une des revendications 1 à 3, dans lequel l’unité centrale de traitement (CPU) est configurée pour exécuter des instructions pour entrer et sortir du mode d’alimentation de conservation, ces instructions étant stockées dans au moins une mémoire de programme (TCPM) couplée directement avec l’unité centrale de traitement (CPU). Système sur puce selon l’une des revendications 1 à 4, dans lequel l’unité centrale de traitement (CPU) comprend en outre un registre (SSP) configurée pour stocker un pointeur de pile auxiliaire (SP2) configuré pour stocker la valeur d’un pointeur de pile principal avant de passer dans un mode d’alimentation de conservation, ladite première séquence de micro-instructions étant configurée pour stocker ledit pointeur de pile auxiliaire (SP2) dans ladite au moins une mémoire de données (TCDM) couplée directement à l’unité centrale de traitement (CPU) avant de passer dans le mode d’alimentation de conservation, ladite deuxième séquence de micro-instructions étant configurée pour récupérer la valeur du pointeur de pile auxiliaire pour l’utiliser comme pointeur de pile principal. Système sur puce selon l’une des revendications 1 à 5, dans lequel le contrôleur d’alimentation (PCTRL) est configuré pour, en sortie du mode d’alimentation de conservation, transmettre un signal (RET_CSE) permettant d’indiquer à l’unité centrale de traitement que cette dernière revient d’un mode d’alimentation de conservation, afin que l’unité centrale de traitement exécute ladite deuxième séquence de micro-instructions. Procédé de gestion d’alimentation électrique d’un système sur puce selon l’une des revendications 1 à 6, le procédé comprenant : - une exécution par l’unité centrale de traitement (CPU) d’une première séquence de micro-instructions avant d’être placée dans un mode d’alimentation de conservation, ladite première séquence de micro-instructions étant adaptées pour copier, dans au moins une mémoire de données (TCDM) directement couplée à l’unité centrale de traitement (CPU), un contexte d’exécution d’un programme informatique dont l’exécution par l’unité centrale de traitement (CPU) est interrompu pour passer dans un mode d’alimentation de conservation, - une exécution par l’unité centrale de traitement (CPU) d’une deuxième séquence de micro-instructions en sortie du mode d’alimentation de conservation pour récupérer le contexte d’exécution stocké dans lesdites mémoires afin de reprendre l’exécution du programme informatique interrompu. Procédé selon la revendication 7, comprenant une communication entre un contrôleur de mode d’alimentation (RET_CTRL) de l’unité centrale de traitement et le contrôleur d’alimentation (PCTRL) afin de négocier un passage dans un mode d’alimentation de conservation. Procédé selon l’une quelconque des revendications 7 ou 8, comprenant une exécution par l’unité centrale de traitement de micro-instructions fournies par une machine d’état (FSM) d’une unité de contrôle (CTRLU) de l’unité centrale de traitement (CPU) pour : - stocker le contexte d’exécution dans ladite au moins une mémoire de données (TCDM) directement couplée avec l’unité centrale de traitement (CPU) avant de passer dans le mode d’alimentation de conservation, - récupérer le contexte d’exécution dans ladite au moins une mémoire de données (TCDM) directement couplée avec l’unité centrale de traitement (CPU) en sortie du mode d’alimentation de conservation. Procédé selon l’une des revendications 7 à 9, comprenant une exécution, par l’unité centrale de traitement (CPU), d’instructions pour entrer et sortir du mode d’alimentation de conservation, ces instructions étant stockées dans au moins une mémoire de programme (TCPM) couplée directement avec l’unité centrale de traitement (CPU). Procédé selon l’une des revendications 7 à 10, comprenant en outre un stockage d’un pointeur de pile auxiliaire dans un registre (SSP) de l’unité centrale de traitement (CPU), le pointeur de pile auxiliaire permettant de stocker la valeur d’un pointeur de pile principal avant de passer dans un mode d’alimentation de conservation, l’exécution de ladite première séquence de micro-instructions permettant de stocker ledit pointeur de pile auxiliaire (SP2) dans ladite au moins une mémoire de données directement couplée à l’unité centrale de traitement (CPU) avant de passer dans le mode d’alimentation de conservation, l’exécution de ladite deuxième séquence de micro-instructions permettant de récupérer la valeur du pointeur de pile auxiliaire pour l’utiliser comme pointeur de pile principal. Procédé selon l’une des revendications 7 à 11, comprenant en outre, en sortie du mode d’alimentation de conservation, une transmission par le contrôleur d’alimentation (PCTRL) d’un signal (RET_CSE) permettant d’indiquer à l’unité centrale de traitement que cette dernière revient d’un mode d’alimentation de conservation, afin que l’unité centrale de traitement exécute ladite deuxième séquence de micro-instructions.