FR 3047136 A1 20170728 FR 1650644 A 20160127 1 SAUVEGARDE DE DONNEES DANS UN CIRCUIT ASYNCHRONE Domaine de l'invention La présente invention concerne le domaine des circuits asynchrones, et en particulier un pipeline asynchrone ayant des 5 capacités de mémorisation non volatile de données. Exposé de l'art antérieur Contrairement aux conceptions à base de circuits synchrones qui reposent sur un signal d'horloge, les circuits asynchrones ont l'avantage d'être plus ou moins insensibles aux 10 variations de retard résultant par exemple de variations dans le processus de fabrication. En outre, en évitant l'utilisation d'une horloge, les circuits asynchrones ont une consommation d'énergie relativement faible. Les circuits asynchrones sont en général conçus pour fonctionner sur la base d'événements déterminés en 15 utilisant un protocole de poignée de main spécifique. L'élément de base d'un circuit d'une conception asynchrone est basé sur un circuit connu sous le nom de porte C ou circuit de Muller. Ce circuit comprend une bascule volatile pour mémoriser un état. Ainsi si le circuit asynchrone voit son 20 alimentation coupée, les données mémorisées par les diverses portes C seront perdues. 3047136 2 Il serait souhaitable de prévoir une porte C ayant une capacité de mémorisation non volatile, de sorte que l'état du circuit pourrait être restauré à la suite d'une, coupure d'alimentation. Toutefois, il y a un problème en ce que les opérations de mémorisation non volatile de données ont tendance à consommer des quantités d'énergie relativement élevées. On a donc besoin dans la technique d'un système de sauvegarde de données dans un pipeline asynchrone qui permette de réduire la consommation d'énergie au moins une partie du temps. Résumé Un objet de modes de réalisation de la présente description est de résoudre au moins partiellement un ou plusieurs problèmes de l'art antérieur. Selon un aspect, on prévoit un circuit asynchrone 15 comprenant : un pipeline asynchrone comprenant deux étages, ou plus, chaque étage comportant : un circuit tampon pour mémoriser temporairement des données à transférer d'un étage vers le suivant sur la base d'un protocole de poignée de main, le circuit tampon comprenant une mémoire non volatile ; et un circuit de détection 20 de présence de données adapté à générer une valeur de détection de présence de données indiquant si des données sont mémorisées ou pas par le circuit tampon ; et un circuit de conauande adapté à réaliser une opération de sauvegarde de données en contrôlant indépendamment chaque circuit tampon pour sauvegarder les données 25 qu'il mémorise vers sa mémoire non volatile sur la base de la valeur de détection de présence de données correspondante. Selon un mode de réalisation, le circuit de détection de présence de données comprend une autre mémoire non volatile adaptée à mémoriser la valeur de détection de présence de données, 30 le circuit de commande étant adapté à contrôler chaque circuit de détection de présence de données pour restaurer la valeur de détection de présence de données à partir de l'autre mémoire non volatile pendant une phase de mise sous tension. Selon un mode de réalisation, chacun des circuits de 35 détection de présence de données est adapté à générer la valeur 3047136 3 de détection de présence de données sur la base de l'état d'un signal d'accusé de réception reçu d'un étage suivant du pipeline, et d'un signal d'accusé de réception généré par le circuit tampon correspondant. 5 Selon un mode de réalisation, le pipeline asynchrone comprend une ou plusieurs paires de lignes de données et une ligne d'accusé de réception couplant le circuit tampon de chaque étage de pipeline au suivant, les circuits tampons étant agencés pour mettre en oeuvre un protocole de poignée de main à quatre phases 10 pour le transfert d'un jeton de données à partir d'une phase de pipeline vers la suivante, le protocole de poignée de main à quatre phases comprenant le fait d'amener le signal d'accusé de réception présent sur la ligne d'accusé de réception d'un premier état vers un deuxième état et de le ramener vers le premier état, et le circuit de détection de présence de données d'un premier étage de pipeline étant adapté à générer une valeur de détection de présence de données indiquant que des données sont présentes dans le circuit tampon du premier étage de pipeline lorsque le signal d'accusé de réception provenant de l'étage de pipeline suivant est dans le premier état et le signal d'accusé de réception généré par le circuit tampon du premier étage de pipeline est dans le deuxième état. Selon un mode de réalisation, le circuit de commande comprend une mémoire non volatile mémorisant une table de jetons 25 indiquant la présence de jetons de données dans le pipeline asynchrone. Selon un mode de réalisation, le circuit tampon de chaque étage de pipeline est un demi-tampon comprenant des première et deuxième portes C, chaque porte C comprenant : des 30 premier et deuxième noeuds d'entrée et des premier et deuxième inverseurs couplés de façon croisée entre des premier et deuxième noeuds de mémorisation complémentaires, le deuxième noeud de mémorisation formant un noeud de sortie de la porte C ; et une mémoire non volatile comprenant : un premier élément résistif 35 ayant une première borne couplée au premier noeud de mémorisation ; 3047136 4 un deuxième élément résistif ayant une première borne couplée au deuxième noeud de mémorisation, au moins l'un des premier et deuxième éléments résistifs étant programmable pour prendre l'un d'au moins deux états résistifs, une valeur de donnée étant 5 représentée par les résistances relatives des premier et deuxième éléments résistifs, une deuxième borne du premier élément résistif étant couplée à une deuxième borne du deuxième élément résistif par l'intermédiaire d'un premier transistor ; et le circuit de commande étant adapté, pendant une phase de sauvegarde d'un bit 10 de données mémorisé sur les premier et deuxième noeuds de mémorisation vers la mémoire non volatile, à rendre conducteur le premier transistor pendant que des niveaux logiques différents sont appliqués aux premier et deuxième noeuds d'entrée de la porte C. 15 Selon un mode de réalisation, le premier transistor est adapté à conduire un courant d'écriture pendant la phase de sauvegarde, et le circuit de la porte C est agencé de telle sorte que le courant d'écriture passe à travers au moins un transistor de chacun des premier et deuxième inverseurs pendant la phase 20 d'écriture. Selon un mode de réalisation, chacune des première et deuxième portes C est adaptée à recevoir un premier signal d'entrée sur le premier noeud d'entrée et un deuxième signal d'entrée sur le deuxième noeud d'entrée ; et le premier inverseur comprend : des premier et deuxième transistors ayant leurs noeuds de commande couplés au premier ou au deuxième noeud de mémorisation ; des troisième et quatrième transistors couplés en parallèle entre eux et couplant le premier transistor du premier inverseur à un rail de tension d'alimentation ; et des cinquième et sixième transistors couplés en parallèle entre eux et couplant le deuxième transistor du premier inverseur au rail de tension de masse. Selon un mode de réalisation, au moins l'un des premier et deuxième éléments résistifs est de l'un des types suivants : 35 un élément à couple de transfert de spin ayant une anisotropie 3047136 5 dans le plan ; un élément à couple de transfert de spin ayant une anisotropie perpendiculaire au plan ; un élément à oxydation-réduction (RedOx) ; un élément ferroélectrique ; et un élément à changement de phase. 5 Selon un autre aspect, on prévoit un procédé de sauvegarde de données dans un pipeline asynchrone comprenant deux étages de pipeline ou plus, le procédé comprenant : générer, par un circuit de détection de présence de données de chaque étage de pipeline, une valeur de détection de présence de données indiquant 10 si des données sont mémorisées par un circuit tampon de chaque étage de pipeline, les circuits tampons mémorisant temporairement des données à transférer d'un étage vers le suivant sur la base d'un protocole de poignée de main, chaque circuit tampon comprenant une mémoire non volatile ; et réaliser une opération 15 de sauvegarde de données en contrôlant indépendamment chaque circuit tampon pour sauvegarder les données qu'il mémorise vers sa mémoire non volatile sur la base de la valeur de détection de présence de données correspondante. Brève description des dessins 20 Les objets et avantages susmentionnés, et d'autres, apparaîtront clairement à la lecture de la description détaillée suivante de modes de réalisation, donnés à titre d'illustration et non de limitation en faisant référence aux dessins joints dans lesquels : 25 la figure 1 illustre schématiquement un exemple de porte C ; la figure 2 illustre schématiquement un exemple de circuit comprenant une porte C et une mémoire non volatile ; la figure 3 illustre schématiquement un demi-tampon 30 asynchrone selon un exemple de réalisation ; la figure 4A illustre schématiquement un demi-tampon asynchrone de 1 bit ayant une mémorisation non volatile de données selon un exemple de réalisation de la présente description ; la figure 4B illustre schématiquement un demi-tampon 35 asynchrone de n bits ayant une mémorisation non volatile de 3047136 6 données selon un exemple de réalisation de la présente description ; la figure 5A illustre schématiquement un pipeline asynchrone selon un exemple de réalisation de la présente 5 description ; la figure 5B est un chronogramme illustrant un exemple de signaux dans le circuit de la figure 5A selon un exemple de réalisation ; la figure 6 illustre schématiquement un pipeline 10 asynchrone comprenant des circuits de détection de présence de données selon un exemple de réalisation de la présente description ; la figure 7 illustre schématiquement un pipeline asynchrone comprenant des contrôleurs de mémorisation non volatile 15 de données selon un exemple de réalisation de la présente description ; la figure 8 illustre schématiquement l'un des contrôleurs de mémorisation non volatile de données de la figure 7 plus en détail selon un exemple de réalisation de la présente 20 description ; la figure 9 est un chronogramme illustrant des exemples de signaux dans le pipeline asynchrone de la figure 7 selon un exemple de réalisation ; et la figure 10 est un organigramme illustrant des 25 opérations dans un procédé de mémorisation non volatile de données et de restauration de données selon un exemple de réalisation de la présente description. Description détaillée Dans la description qui suit, le terme "connecté" est 30 utilisé pour désigner une connexion directe entre deux éléments, tandis que le terme "couplé" est utilisé pour désigner une connexion qui pourrait être directe, ou qui pourrait se faire par l'intermédiaire d'un ou plusieurs éléments intermédiaires comme des résistances, des condensateurs ou des transistors. 3047136 7 La figure 1 illustre un exemple de porte C 100, connue aussi sous le nom de circuit de Muller. Elle comprend deux noeuds d'entrée de données pour recevoir des signaux d'entrée A et B. Deux transistors, 102, 104, qui sont par exemple des transistors 5 PMOS, sont couplés en série entre eux entre un rail de tension d'alimentation VDD et un noeud de mémorisation 0 de la porte C. Deux autres transistors 106, 108, qui sont par exemple des transistors NMOS, sont couplés en série entre eux entre le noeud de mémorisation Q et un rail de tension de masse. Les transistors 10 104 et 106 ont leurs noeuds de commande couplés au noeud d'entrée recevant le signal A, et les transistors 102 et 108 ont leurs noeuds de commande couplés au noeud d'entrée recevant le signal B. Deux inverseurs 110, 112 sont couplés de façon croisée entre le noeud de mémorisation 0 et un autre noeud de mémorisation 15 Z, qui forme le noeud de sortie de la porte C. L'inverseur 112 a par exemple son entrée couplée au noeud de mémorisation Z et sa sortie couplée au noeud de mémorisation 0, et a ses bornes d'alimentation couplées aux rails de tension d'alimentation par l'intermédiaire d'autres transistors. En particulier, une borne 20 d'alimentation haute de l'inverseur 112 est couplée au rail de tension d'alimentation VDD par l'intermédiaire de chacun de deux transistors 114, 116, qui sont par exemple des transistors PMOS, couplés en parallèle entre eux. La borne d'alimentation basse de l'inverseur 112 est couplée au rail de tension de masse par 25 l'intermédiaire de chacun de deux transistors 118, 120, qui sont par exemple des transistors NMOS, couplés en parallèle entre eux. Les transistors 114 et 118 ont leurs noeuds de commande couplés au noeud d'entrée destiné à recevoir le signal A, et les transistors 116 et 120 ont leurs noeuds de commande couplés à l'autre noeud 30 d'entrée destiné à recevoir le signal B. En fonctionnement, la porte C a par exemple un fonctionnement défini par la table de vérité suivante : 3047136 8 A B Z 0 0 0 0 1 z-1 1 0 Z-1 1 1 1 En d'autres termes, lorsque les valeurs des signaux d'entrée A et B sont au même niveau logique, la sortie Z est mise 5 à ce niveau logique. Lorsque les valeurs des signaux d'entrée A et B sont à des niveaux logiques différents entre eux, le circuit est dans un état de veille dans lequel la sortie Z reste inchangée, en d'autres termes l'état de tension sur les noeuds de mémorisation Q et Z n'est pas modifié. 10 La figure 2 illustre un circuit 200 comprenant la porte C 100 de la figure 1, à laquelle a été ajoutée une mémoire non volatile. Les éléments de la porte C 100 portent les mêmes références qu'en figure 2, et ne vont pas être décrits de nouveau détail. Le circuit de la figure 2 est décrit plus en détail dans 15 la demande de brevet français déposée sous le numéro FR14/58289, dans la demande de brevet européen déposée sous le numéro EP15183551 et dans la demande de brevet des États-Unis numéro US14/845213, le contenu de ces demandes étant incorporé ici comme référence, dans les limites autorisées par la loi. 20 Le circuit 200 de la figure 2 comprend deux éléments résistifs 202, 204, dont chacun peut être programmé pour prendre l'un d'une pluralité d'états résistifs. Les éléments résistifs 202 et 204 peuvent être d'un type quelconque d'élément à commutation de résistance pour lequel la résistance est 25 programmable par le sens d'un courant qu'on fait passer dedans. Par exemple, les éléments à commutation de résistance 202, 204 sont des éléments à couple de transfert de spin ayant une anisotropie dans le plan ou perpendiculaire au plan, comme cela est décrit plus en détail dans la publication intitulée "Magnonic 30 spin-transfer torque MRAM with low power, high speed, and error- 3047136 9 free switching", N.Mojumder et al., IEDM Tech. Digest (2010), et dans la publication intitulée "Electric toggling of magnets", E. Tsymbal, Natural Materials Vol 11, janvier 2012. En variante, les éléments résistifs pourraient être ceux qui sont utilisés dans 5 des mémoires à commutation résistive RAM RedOx (RAM à réduction-oxydation), qui sont par exemple décrits plus en détail dans la publication intitulée "Redox-Based Resistive Switching Memories - Nanoionic Mechanisms, Prospects and Challenges", Rainer Waser et al., Advanced Materials 2009, 21, pages 2632 à 2663. Dans encore 10 un autre exemple, les éléments résistifs pourraient être ceux qui sont utilisés dans une FeRAM (RAM PCRAM (RAM à changement de phase). Quel que soit le type des donnée est par exemple mémorisé de 15 l'un des éléments à une résistance ferroélectrique) ou dans une éléments résistifs, un bit de façon non volatile en mettant relativement haute (Rmax), et l'autre à une résistance relativement basse (Rmin). Dans l'exemple de la figure 2, l'élément 202 est programmé pour avoir une résistance Rmax et l'élément 204 une résistance Rmin représentant une valeur du bit de donnée, et comme cela est représenté par les 20 références Rmin et Rmax entre parenthèse, la programmation opposée des valeurs de résistance mémorise la valeur de donnée opposée. Chacun des éléments à commutation de résistance 202, 204 a par exemple seulement deux états résistifs correspondant aux résistances haute et basse Rmax et Rmin, mais les valeurs exactes 25 de Rmin et Rmax peuvent varier en fonction de conditions comme le procédé de fabrication, les matériaux, les variations de température, etc. Le bit de donnée non volatile représenté par les éléments résistifs 202, 204 dépend duquel des éléments résistifs 30 a la résistance Rmax et Rmin, en d'autres termes des résistances relatives. Les éléments résistifs 202, 204 sont par exemple sélectionnés de telle sorte que Rmax soit toujours significativement plus grande que Rhin, par exemple supérieure d'au moins 20 %. En général, le rapport entre la résistance Rmax et la résistance Rmin est par exemple compris entre 1,2 et 10 000. Rmin 3047136 10 est par exemple dans la région des 2 kilo-ohms ou moins, et Rmax est par exemple dans la région des 6 kilo-ohms ou plus, bien que de nombreuses autres valeurs soient possibles. Il apparaîtra clairement à l'homme de l'art que dans 5 certains modes de réalisation, plutôt que les deux éléments soit résistifs 202, 204 soient programmables, un seul programmable. Dans un tel cas, l'autre élément résistif a par exemple une résistance fixe à un niveau intermédiaire à environ à la moitié du chemin entre Rmin et Rmax, par exemple égal, avec une 10 tolérance de 10 %, à (Rmin+(Rmax-Rmin)/2). Par exemple, l'un des éléments résistifs 202, 204 pourrait correspondre à une résistance de valeur fixe. En variante, l'un des éléments résistifs 202, 204 pourrait être constitué d'une paire d'éléments résistifs en parallèle entre eux et dans des de sorte que quel que soit le sens dans lequel chaque élément est programmé, la valeur de résistance reste relativement constante au niveau intermédiaire. L'élément résistif 202 est couplé entre le noeud de mémorisation 0 et un noeud intermédiaire 206. L'élément résistif 20 204 est couplé entre le noeud de mémorisation Z et un noeud intermédiaire 208. Les noeuds intermédiaires 206 et 208 sont couplés entre eux par l'intermédiaire d'un transistor 210, qui est par exemple un transistor NMOS. Le transistor 210 reçoit sur son noeud de commande un signal d'écriture WR. 25 Le noeud 206 est en outre couplé au rail de tension de masse par l'intermédiaire d'un transistor 212, qui est par exemple un transistor NMOS. De façon similaire, le noeud 208 est en outre couplé au rail de tension de masse par l'intermédiaire d'un transistor 214, qui est aussi par exemple un transistor NMOS. Les 30 noeuds de commande des transistors 212 et 214 sont contrôlés par un signal de lecture RD. La figure 2 illustre aussi les inverseurs 110 et 112 plus en détail. L'inverseur 110 comprend par exemple un transistor 216, qui est par exemple un transistor PMOS, couplé entre le noeud 35 de mémorisation Z et le rail de tension d'alimentation VDD. programmables couplés 15 orientations opposées, 3047136 11 Optionnellement, dans le but d'équilibrer les chemins de lecture pendant une phase de restauration décrite plus en détail ci-après, un autre transistor 217, qui est par exemple un transistor PMOS, est couplé entre le transistor 216 et le rail de tension 5 d'alimentation VDD. L'inverseur 110 comprend aussi par exemple un transistor 218, qui est par exemple un transistor NMOS, couplé entre le noeud de mémorisation Z et un noeud commun 220. Dans certains modes de réalisation, le noeud commun 220 est connecté au rail de tension de masse, alors que dans des modes de réalisation 10 alternatifs comme celui représenté en figure 2, le noeud commun 220 est couplé au rail de tension de masse par l'intermédiaire d'un transistor 222, qui est par exemple un transistor NMOS contrôlé par un signal Az décrit plus en détail ci-après. L'inverseur 112 comprend par exemple un transistor 226, 15 qui est par exemple un transistor PMOS, couplé entre le noeud de mémorisation Q et la borne de tension haute de l'inverseur 112. L'inverseur 112 comprend aussi par exemple un transistor 228, qui est par exemple un transistor NMOS, couplé entre le noeud de mémorisation Q et la borne de tension basse de l'inverseur 112. 20 Les transistors 118 et 120 sont couplés entre la borne de tension basse de l'inverseur 112 et le noeud commun 220. Optionnellement, un transistor 230, qui est par exemple un transistor PMOS ayant son noeud de commande couplé de façon à recevoir le signal Az, est couplé entre les noeuds de mémorisation 0 et Z. 25 La figure 2 illustre aussi un bloc de commande 232, fournissant les signaux de commande RD, WR et Az aux transistors correspondants du circuit 200. La figure 3 illustre schématiquement un demi-tampon 300 constitué d'une paire de portes C 302, 304. Un tel demi-tampon 30 forme par exemple une portion principale de chaque étage d'un pipeline asynchrone, comme on va le décrire plus en détail ci-après. La porte C 302 a l'une de ses entrées couplée à une ligne d'entrée de données 306 recevant un signal de données d'entrée 1.0, et son autre entrée couplée à une ligne d'entrée de données 35 308 recevant un signal d'entrée de données 1.1. Les autres entrées 3047136 12 des portes C 302 et 304 sont couplées à une ligne d'accusé de réception 310 recevant un signal d'accusé de réception 0 ack. Les sorties des portes C 302, 304 sont couplées à des lignes de données de sortie 312 et 314 respectivement, la ligne 312 fournissant un 5 signal de données de sortie 0.0, et la ligne 314 fournissant un signal de données de sortie 0.1. Les lignes 312 et 314 sont aussi couplées à des entrées respectives d'une porte NON OU à deux entrées 316, qui fournit sur sa sortie un signal d'accusé de réception Lack sur une ligne d'accusé de réception 318. 10 Un bit de données est transmis sur les lignes de données d'entrée 306, 308 et sur les lignes de données de sortie 312, 314 en utilisant un protocole selon lequel : - des états logiques "01" sur les lignes 1.0 et 1.1 respectivement ou sur les lignes 0.0 et 0.1 respectivement 15 transmettent par exemple un bit logique "1" ; - des états logiques "10" sur les lignes 1.0 et 1.1 respectivement ou sur les lignes 0.0 et 0.1 respectivement transmettent par exemple un bit logique "0" ; - des états logiques "00" sur les lignes 1.0 et 1.1 ou 20 sur les lignes 0.0 et 0.1 indiquent par exemple un état de repos dans lequel aucune donnée n'est transmise ; et - des états logiques "11" sur les lignes 1.0 et 1.1 ou sur les lignes 0.0 et 0.1 sont par exemple un état interdit. La figure 4A illustre schématiquement un demi-tampon 400 25 très similaire à celui de la figure 3, et les éléments similaires portent les mêmes références numériques et ne seront pas décrits de nouveau détail. Cependant, dans le demi-tampon 400, les portes C 302, 304 sont remplacées par des portes C 402, 404 respectivement, chacune ayant une capacité de mémorisation non 30 volatile de données. Par exemple, chacune de ces portes C 402, 404, est mise en oeuvre par le circuit de la figure 2, et reçoit des signaux d'entrée WR, RD et Az décrits en relation avec la figure 2. En outre, une porte 406 est connectée entre la sortie de la porte C 402 et la ligne de sortie 312, et relie la sortie 35 de la porte C 402 à la ligne de sortie 312 seulement lorsque le 3047136 13 signal Az et l'inverse RD du signal RD sont activés. De façon similaire, une porte 408 est connectée entre la sortie de la porte C 404 et la ligne de sortie 314, et relie la sortie de la porte C 404 à la ligne de sortie 314 seulement lorsque le signal Az et 5 l'inverse RD du signal RD sont activés. Ces portes 406, 408 empêchent par exemple les sorties des portes C 402, 404 d'être propagées pendant qu'elles sont dans des états non stables, par exemple pendant que des données sont en cours de restauration à partir des éléments non volatiles 202, 204 vers les noeuds de 10 mémorisation Q et Z. Bien que dans l'exemple de la figure 4A le demi-tampon comporte une seule paire de portes C 402, 404, permettant la transmission d'un seul bit de données à la fois en utilisant les lignes de données d'entrée 306, 308 et les lignes de données de 15 sortie 312, 314, dans des variantes de réalisation d'autres paires de portes C, et d'autres lignes d'entrée et de sortie, pourraient être prévues pour que plus qu'un seul bit de données soit transmis à la fois, comme on va maintenant le décrire plus en détail en faisant référence à la figure 4B. 20 La figure 4B illustre schématiquement un demi-tampon 450 similaire au demi-tampon 400 de la figure 4A, et les éléments similaires portent les mêmes références et ne seront pas décrits de nouveau détail. Cependant, le demi-tampon 450 est un demi-tampon à n bits qui comporte une pluralité de 2n lignes de données 25 d'entrée 1.00, I.10 à I.On-1, I.1/1-1 et une pluralité de 2n lignes de données de sortie 0.00, 0.10 à 0.0n-1, 0.1n-1. Dans un tel cas, des paires de portes C sont par exemple équipées d'un circuit d'accusé de réception local formé par la porte NON OU 316. Chaque porte NON OU 316 fournit sa sortie sur une ligne 451, et ces 30 sorties sont par exemple fusionnées sur la ligne de sortie de signal d'accusé réception 318, par exemple par une porte C 452. La figure 5A illustre schématiquement un pipeline asynchrone 500 selon un exemple de réalisation. Le pipeline comprend par exemple au moins deux étages de pipeline couplés en 35 série. Dans l'exemple de la figure 5A, il y a quatre étages de 3047136 14 pipeline 502, 504, 506 et 508. Chaque étage de pipeline 502, 504, 506 et 508 comprend respectivement un demi-tampon 512, 514, 516 et 518, qui est par exemple mis en oeuvre par le circuit 400 de la figure 4A. Les demi-tampons 512, 514, 516 et 518 reçoivent par 5 exemple respectivement des signaux de données de n bits sur des lignes Ai_2 , Ai_i , Ai et Ai+1 . Les lignes Ai_2 sont par exemple couplées à la sortie d'un circuit logique 520. En outre, les lignes de sortie de données des demi-tampons 512, 514, 516 et 518 de chaque étage sont couplées 10 respectivement à des circuits logiques 522, 524, 526 et 528 de chaque étage, qui fournissent des signaux de sortie à l'étage suivant, ou le signal de sortie du pipeline dans le cas de l'étage final 508. Les demi-tampons 512, 514, 516 et 518 de chaque étage sont aussi couplés à des lignes d'accusé de réception pour 15 recevoir le signal d'accusé de réception provenant de l'étage suivant, et transmettre le signal d'accusé de réception à un étage précédent. Par exemple, l'étage 506 est considéré comme étant un étage de rang i dans le pipeline, et a des lignes de données d'entrée Ai pour recevoir des signaux de données provenant 20 du circuit logique 524 de l'étage précédent, génère un signal d'accusé de réception de rang i, acki, et reçoit un signal d'accusé de réception de rang (i+1), acki+1, provenant du demi-tampon 518 de l'étage suivant 508. Bien que cela ne soit pas illustré en figure 5A, le 25 pipeline est par exemple terminé par un tampon capable de mémoriser les données provenant du pipeline et de générer un signal d'accusé de réception vers le dernier demi-tampon du pipeline. En variante, le pipeline peut se terminer avec un demi-tampon. 30 Les signaux de données et d'accusé de réception pendant un transfert de données de un bit d'un étage vers le suivant vont maintenant être décrits plus en détail en faisant référence à la figure 5B. La figure 5B est un chronogramme illustrant un exemple 35 des signaux 1.0, 1.1 reçus par un demi-tampon et du signal Lack 3047136 15 généré par le demi-tampon 400 de la figure 4A, qui fait par exemple partie de l'un des étages du pipeline de la figure 5A. Un protocole de poignée de main à quatre phases sur une ligne de connexion à double rail est par exemple utilisé pour 5 chaque transmission de donnée. Comme cela est représenté en figure 5B, pendant une séquence de transmission de donnée 530 d'un "1" logique, les quatre phases du protocole de poignée de main sont référencées 532, 534, 536 et 538. Pendant la phase 532, le signal d'entrée I.1 sur la ligne 308 est amené au niveau de l'état logique 10 "1" par l'étage précédent. Le demi-tampon répond dans la phase 534 en amenant le signal d'accusé de réception Lack sur la ligne 318 de l'état logique "1" à l'état logique "0". Dans la phase 536, l'étage précédent ramène ensuite le signal d'entrée 1.1 à un niveau logique "0". Le demi-tampon répond dans la phase 538 en 15 renvoyant le signal d'accusé de réception I_ack sur la ligne 318 à un niveau logique "1". La figure 5B illustre aussi un état de repos dans lequel les signaux I.0 et 1.1 restent bas et le signal Lack reste haut. La figure 5B illustre aussi une autre séquence 542 pour la 20 transmission d'un état logique "0", qui est identique à la séquence 530, excepté que c'est le signal I.0 qui est amené au niveau logique "1". La figure 6 illustre schématiquement un pipeline asynchrone 600 similaire au pipeline 500 de la figure 5A, mais 25 comprenant en plus des circuits de détection de présence de données associés à chaque étage, comme on va le décrire maintenant plus en détail. De façon avantageuse, selon les modes de réalisation décrits ici, des circuits de détection de présence de données 30 indiquent la présence de données dans un pipeline asynchrone. Cela permet de déclencher des séquences de mémorisation non volatile de données seulement pour les étages dans lesquels se trouvent des données, évitant par cela une consommation d'énergie pour des étages de pipeline dans lesquels il n'y a pas de données. Par 35 exemple, une phase de sauvegarde non volatile est déclenchée afin 3047136 16 de permettre de réaliser un blocage d'alimentation. Le blocage d'alimentation est une technique utilisée pour réduire la consommation d'énergie en déconnectant des circuits de la tension d'alimentation lorsqu'ils sont au repos. Une telle technique est 5 par exemple décrite plus en détail dans la demande de brevet des États-Unis publiée sous le numéro US2013/0198549, dont le contenu est incorporé ici comme référence dans les limites autorisées par la loi. Chacun des étages de pipeline 502, 504, 506 et 508 en 10 figure 6 est par exemple associé à un circuit de détection de présence de données mis en oeuvre par une porte ET à deux entrées 602, 604, 606 et 608 respectivement, chaque porte ET ayant l'une de ses entrées couplée à la ligne d'entrée d'accusé de réception provenant de l'étage suivant (la ligne 310 en figure 3) et l'autre 15 de ses entrées couplée à la ligne de sortie d'accusé de réception vers l'étage précédent (la ligne 318 en figure 3). L'entrée couplée à la ligne de sortie d'accusé de réception est par exemple inversée, de sorte que lorsque le signal I_ack sur cette ligne est bas, et le signal d'accusé de réception d'entrée 0_ack 20 provenant de l'étage suivant est haut, la sortie de la porte ET est activée pour indiquer que des données sont mémorisées par le demi-tampon. En effet, en référence à la figure 5B, cet état correspond à la phase 534, la phase 536 et une partie de la phase 538, pendant lesquelles le signal 1._ack est bas indiquant que des 25 données ont été transférées à partir de l'étage précédent, et le signal 0_ack provenant de l'étage suivant n'est pas encore passé à l'état bas, indiquant que les données n'ont pas encore été transférées à l'étage suivant. Dans certains cas, il peut être possible que le signal d'accusé de réception acki passe à l'état 30 bas avant que le signal acki+1 revienne à un niveau haut. Dans un exemple de la figure 6, une valeur de données de n bits 610 a été reçue par le demi-tampon 514, et le signal d'accusé de réception acki-1 vers le demi-tampon 512 précédent a été amené à l'état bas, de sorte que les données sont libérées. 35 Ainsi, le demi-tampon 514 mémorise les données, et le signal sur 3047136 17 la sortie de la porte ET 604 est haut. Cette valeur de données de n bits est ensuite transmise à l'étage suivant 506, comme cela est représenté par un cercle en pointillés 610'. La valeur de données est émise à partir du demi-tampon 514, et est traitée par 5 le circuit logique 524, avant d'être acquise par le demi-tampon 516. Le signal d'accusé de réception acki est ensuite amené à l'état bas pour indiquer que les données ont été acquises, et cette valeur de données va ensuite être transférée vers le demi-tampon 516. 10 Dans certains modes de réalisation, la sortie de chacune des portes ET 602, 604, 606 et 608 est couplée à un circuit de sortie 612, 614, 616 et 618 respectivement, qui est adapté à échantillonner le signal de sortie de la porte ET lorsqu'un signal d'état de sauvegarde (SS) est activé. Par exemple, chacun des 15 circuits de sortie 612 à 616 est mis en oeuvre par une bascule ayant son entrée D connectée à la sortie de la porte ET 602 à 608 correspondante respectivement, son entrée d'horloge recevant le signal d'état de sauvegarde SS, et sa sortie Q fournissant le bit d'indication de présence de données pour l'étage de pipeline 20 correspondant. Les bits d'indication de présence de données 620 provenant de chacun des circuits de sortie 612 à 618 sont par exemple utilisés par un contrôleur de mémoire non volatile associé à chaque demi-tampon pendant une opération de mémorisation non volatile pour mémoriser seulement les données maintenues par des 25 demi-tampons contenant des données. Alors qu'un exemple particulier de mise en oeuvre des circuits de détection de présence de données est représenté en figure 6, dans des variantes de réalisation, d'autres mises en oeuvre seraient possibles. Par exemple, dans certains modes de 30 réalisation, un état logique "1" sur l'une quelconque des lignes d'entrée de données d'un demi-tampon pendant que le signal d'accusé de réception I_ack sur la sortie du demi-tampon est bas, pourrait être utilisé comme indication que des données sont mémorisées par le demi-tampon. En outre, la technique décrite dans 35 la publication de Y.Thonnart et al. intitulée "Automatic Power 3047136 18 Regulation Based on an Asynchronous Activity Detection and its Application to ANOC Node Leakage Reduction", ASYNC2008, pourrait aussi être utilisée, le contenu de cette publication étant incorporé ici comme référence dans les limites autorisées par la 5 loi. Un avantage du fait de baser la détection de présence de données sur les signaux d'accusé de réception seuls est que les circuits de détection peuvent être d'une complexité relativement faible. La figure 7 illustre le pipeline asynchrone 600 plus en 10 détail selon un exemple de réalisation. Chacun des demi-tampons 512, 514, 516 et 518 comprend par exemple une mémoire non volatile correspondante 702, 704, 706 et 708, mise en oeuvre par exemple dans chaque porte C comme décrit précédemment en relation avec la figure 2. En outre, la figure 7 illustre un exemple dans lequel 15 des contrôleurs de mémoire non volatile (NVM) (NVM CONTROLLER) 712, 714, 716 et 718 sont associés aux étages de pipeline 502, 504, 506 et 508 respectivement. Chaque contrôleur de NVM 702 à 708 comprend par exemple l'un correspondant des circuits de détection de présence de données 602 à 608 de la figure 6, ainsi 20 que des circuits pour mettre en oeuvre les opérations de sauvegarde et de restauration de données, comme on va le décrire plus en détail ci-après. Les contrôleurs de NVM 712 à 718 fournissent chacun par exemple des signaux de commande locaux AZi, RDi et WRi aux mémoires non volatiles correspondantes 702 à 708 des demi-25 tampons 512 à 518. En effet, les contrôleurs de NVM comprennent chacun par exemple un circuit mettant en oeuvre le circuit de commande 232 de la figure 2 pour contrôler chaque porte C non volatile. Dans l'exemple de la figure 7, les signaux d'accusé de 30 réception à destination et en provenance de chaque demi-tampon 512 à 518 passent par exemple par l'intermédiaire du contrôleur de NVM correspondant 712 à 718, de sorte que ces signaux sont gelés pendant les opérations de sauvegarde et de restauration de données, empêchant ainsi temporairement que des données se 35 déplacent dans le pipeline pendant un temps suffisant pour un 3047136 19 achèvement correct de ces opérations. Comme cela est illustré en figure 7, les signaux d'accusé de réception générés par les demi-tampons 512 à 518 sont respectivement notés acki-2 à acki+1, et les signaux d'accusé de réception reçus par les contrôleurs de 5 NVM 712 à 718 à partir du- contrôleur de NVM de l'étage suivant sont notés ackgi-1 à ackgi+2- Chaque contrôleur de NVM 712 à 718 comporte par exemple des entrées pour recevoir, à partir d'un circuit de commande (CTRL) 720, les signaux rstn, WRNV, RDNV, AzNV, Az, RD and WR, 10 qui vont être décrits plus en détail en relation avec les figures 8 et 9. La figure 8 illustre schématiquement l'étage de pipeline 504 et le contrôleur de NVM 714 correspondant plus en détail selon un exemple de réalisation. Les autres contrôleurs de NVM 712, 716 15 et 718 comprennent par exemple des circuits similaires. Le circuit de sortie 614 du contrôleur de NVM 714 dans l'exemple de la figure 8 est par exemple une bascule D comprenant une mémoire non volatile 802. La bascule non volatile 814 est par exemple mise en oeuvre par une paire de bascules à verrouillage 20 couplées en série, chaque bascule à verrouillage étant par exemple mise en oeuvre par un circuit similaire à celui de la figure 2, mais sans les transistors 102 à 108, 114, 116, 118, 120 et 217. En variante, la bascule non volatile 814 pourrait être mise en oeuvre par un dispositif décrit dans l'une des publications 25 suivantes : demande de brevet internationale publiée sous le numéro W02014/110566 ; demande de brevet des États-Unis publiée sous le numéro US2013/0286721 ; et brevet des États-Unis US6862226, le contenu de ces publications étant incorporé ici connue référence dans les limites autorisées par la loi. 30 L'entrée de donnée de la bascule 614 est couplée à la sortie de la porte ET 604, qui a par exemple l'une de ses entrées couplée de façon à recevoir le signal acki-1 sur la ligne de sortie d'accusé de réception du demi-tampon 514, cette entrée étant inversée, et son autre entrée couplée de façon à recevoir le 35 signal d'accusé de réception ackgi sur la ligne d'accusé de 3047136 20 réception provenant de l'étage suivant. Le bit de détection de présence de données généré sur la sortie Q de la bascule 614 est utilisé pour contrôler si des opérations de sauvegarde ou de restauration de données sont réalisées ou pas dans la mémoire non 5 volatile 704 du demi-tampon 512. Par exemple, la sortie Q de la bascule 614 est couplée à une entrée d'une porte NON ET à trois entrées 804. Une autre entrée de la porte NON ET 804 est couplée au signal RDNV, et encore une autre entrée inversée de la porte NON ET 804 est couplée au signal d'entrée AZNV. Une ligne 806 sur 10 la sortie de la porte NON ET 804 est couplée à une entrée d'une porte OU à deux entrées 808, qui a son autre entrée couplée de façon à recevoir le signal AZ. La ligne 806 sur la sortie de la porte NON ET 804 est aussi couplée à une entrée d'une porte ET à deux entrées 810 par l'intermédiaire d'un inverseur 812, l'autre 15 entrée de la porte ET 810 étant couplée de façon à recevoir le signal RD. La sortie de l'inverseur 812 est aussi couplée à une entrée d'une porte OU à deux entrées 814, dont l'autre entrée est couplée de façon à recevoir l'inverse du signal de réinitialisation rstn. La sortie de la porte OU 814 est couplée à une 20 entrée de la porte ET à deux entrées 816, dont l'autre entrée est couplée de façon à recevoir le signal WR. Le signal WR est aussi couplé à une entrée d'une porte ET à deux entrées 818, dont l'autre entrée est couplée à la sortie Q de la bascule 614. La sortie de la porte ET 818 est couplée à 25 une entrée d'une porte OU à deux entrées 820, dont l'autre entrée reçoit le signal d'accusé de réception ackgi provenant du contrôleur de NVM de l'étage suivant. La sortie de la porte OU 820 est couplée à l'entrée d'accusé de réception du demi-tampon 512. 30 Le signal d'accusé de réception acki-1 généré par le demi-tampon 512 est par exemple couplé à une entrée d'une porte ET à deux entrées 822, dont l'autre entrée est couplée de façon à recevoir le signal WR inversé. Ce signal WR est aussi couplé à l'entrée d'horloge CK de la bascule 614. La sortie de la porte ET 35 822 fournit le signal d'accusé de réception ackgi-i. 3047136 exemple le signal RDNV sur son entrée de sur son entrée Az, et le signal WR provenant de la sortie d'une porte OU à deux entrées 824. La porte OU 824 a une entrée couplée 5 à la sortie d'une porte ET à deux entrées 826, qui à son tour a l'une de ses entrées couplée au signal WRNV et son autre entrée couplée à la sortie de la porte OU 814. Le signal WRNV est aussi fourni à une entrée d'une porte C à deux entrées 828 ayant une réinitialisation active à l'état bas. Une autre entrée de 10 réinitialisation de la porte C 828 est inversée et couplée au signal de réinitialisation rstn, et la deuxième entrée de la porte C 828 est couplée à la sortie d'une autre porte C à deux entrées 830 ayant une réinitialisation active à l'état bas. La porte C 828 a une entrée inversée couplée de façon à recevoir le signal 15 de réinitialisation rstn et ses autres entrées couplées respectivement à la sortie de l'inverseur 812 et au signal de lecture RD. Le signal de réinitialisation rstn est inversé par un inverseur 832 pour fournir le signal à l'entrée de la porte OU 20 814. La sortie de l'inverseur 832 est aussi couplée à une entrée d'une porte OU à deux entrées 834, dont l'autre entrée est couplée à la sortie de la porte C 828, qui est aussi couplée à une entrée de la porte OU 824. La sortie de la porte OU 834 est couplée à une entrée de réinitialisation R de la bascule 614. 25 certains modes de réalisation, la détection de présence de données sur la sortie Q de la bascule 614 fournit aussi une- valeur de sortie OUT de chaque contrôleur de NVM, ces lignes étant couplées à un circuit de commande de sorte que les valeurs de détection de présence de données peuvent 30 être mémorisées dans une table de jetons, comme on va le décrire plus en détail dans la suite. Les signaux WR, RD et d'écriture globaux destinés sauvegarde et de restauration 35 volatile des demi-tampons, et 21 La mémoire non volatile de la bascule 614 reçoit par lecture, le signal AZNV valeur de Dans AZ sont des signaux de lecture et à contrôler les opérations de vers/à partir de la mémoire non ces signaux sont propagés comme 3047136 22 signaux de commande locaux vers les demi-tampons seulement si des données sont présentes. Les signaux WRNV, RDNV et AZNV sont des signaux de commande pour contrôler les opérations de sauvegarde et de restauration vers/à partir de la mémoire non volatile de la 5 bascule 614. Le signal rstn est un signal de réinitialisation pour initialiser les états des portes C 830, 828 et de la bascule 614 après une mise sous tension. En fonctionnement, lorsque le signal d'écriture WR est activé, la bascule 614 échantillonne la sortie de la porte ET 604, 10 qui indique, sur la base d'une analyse des signaux d'accusé de réception, s'il y a des données maintenues par le demi-tampon 504. La valeur échantillonnée à partir de la porte ET 604 est par exemple mémorisée dans la mémoire non volatile 802 avant que le pipeline passe dans un état de coupure d'alimentation. Ces données 15 peuvent être récupérées, pendant une phase de récupération, lors d'une mise sous tension pour indiquer quels demi-tampons doivent être restaurés. La porte NON ET 804 est utilisée pour empêcher la propagation de l'état non défini sur la sortie de la bascule 614 pendant la phase de récupération. 20 La sortie de la porte NON ET 804 est utilisée pour générer le signal d'écriture local WRi vers la mémoire non volatile 704 du demi-tampon 504, qui va être activé lorsque le signal d'écriture WR est activé et qu'il y a des données dans le demi-tampon 504. En outre, la sortie de la bascule 614 est utilisée 25 pour bloquer, en utilisant la porte ET 818 et la porte OU 820, le signal d'accusé de réception d'entrée pour l'empêcher de passer à l'état bas pendant que le signal d'écriture WR est activé. De façon similaire, la porte ET 822 bloque le signal d'accusé de réception ackgi-1 pour l'empêcher d'être activé jusqu'à ce que le 30 signal d'écriture WR soit passé à l'état bas. Ainsi, une impulsion haute du signal d'écriture WR provoque un état gelé dans lequel la propagation des données dans le pipeline est suspendue pendant l'écriture de la mémoire non volatile 704. La durée de cette impulsion haute est par exemple choisie de façon à être suffi- 35 samment longue pour que cette opération d'écriture soit réalisée. 3047136 23 Une fois que le signal d'écriture WR est passé à l'état bas, les signaux d'accusé de réception sont libérés, et le pipeline continue son fonctionnement normal à partir de l'état gelé. Le signal WRNV est utilisé pour écrire l'état de 5 présence de données détecté mémorisé par la bascule 614 dans la mémoire non volatile 802. Ainsi le signal WRNV est par exemple activé une fois que l'opération de détection a été réalisée par la porte ET 604 et que la bascule 614 mémorise un niveau logique valide. 10 Pendant une mise sous tension, le signal de réinitia- lisation global rstn est utilisé pour réinitialiser les portes C 828 et 830 et la bascule 614. Une fois que tous les états initiaux ont été établis, la phase de récupération survient, dans laquelle d'abord le bit de donnée mémorisé par la mémoire non volatile 802 15 est restauré vers la bascule 614 par une séquence d'impulsions des signaux RDNV et AZNV. Pendant cette phase de récupération, la sortie Q de la bascule 614 est restaurée à la valeur de la valeur de présence de données détectée, mais cette valeur est bloquée par la porte NON ET 804 pendant que les signaux RDNV et AZNV sont 20 activés. Un niveau haut sur la sortie Q de la bascule 614 permet aux signaux AZ et RD de passer à travers les portes 808 et 810 et de contrôler la mémoire non volatile 704 pour restaurer les données mémorisées dans le stockage volatil du demi-tampon 512. En outre, une sortie haute de la bascule 614 est utilisée, par 25 l'intermédiaire de l'inverseur 812 et des portes C 830, 828, pour déclencher une réinitialisation de la bascule 614 à la suite d'une récupération pour effacer la valeur maintenue par la mémoire non volatile 802. En effet, la porte C 828 génère une valeur haute si des données ont été précédemment détectées comme présentes et si 30 un niveau haut du signal WRNV arrive, provoquant la réinitialisation de la bascule 614 et une sur-écriture de la mémoire non volatile 802, et préparant ainsi la bascule 614 pour un cycle suivant de détection de présence de données. La figure 9 est un chronogramme illustrant des signaux 35 dans le pipeline 600 de la figure 7 selon un exemple de 3047136 24 réalisation. Du haut vers le bas, la figure 7 illustre la tension d'alimentation VDD du demi-tampon 512, le signal d'accusé de réception ackgi-2, les signaux de données Ai_2 et Ai_2 , le signal d'accusé de réception ackgi-i, les signaux de données 5 Ai_l et Ai_l , le signal d'accusé de réception ackgi, les signaux de données Ai et Ai , le signal d'accusé de réception ackgi+1, les signaux de données Aii_l et Ai+1 , le signal d'accusé de réception ackgi+2, les signaux rstn, WR, AZ, RD, WRNV, AZNV et RDNV reçus par les contrôleurs de NVM, les signaux WRi-1, 10 AZi-1 et RDi-1 fournis au demi-tampon 512 par le contrôleur de NVM 712 correspondant, les signaux WRi, AZi et RDi fournis au demi-tampon 514 par le contrôleur de NVM 714 correspondant, les signaux WRi+l, AZi+l et RDi+1 fournis au demi-tampon 516 par le contrôleur de NVM 716 correspondant et les signaux WRi+2, AZi+2 et RDi+2 15 fournis au demi-tampon 518 par le contrôleur de NVM 718 correspondant. Pendant une première période 902, une phase d'initialisation a lieu dans laquelle toutes les bascules et toutes les portes C de l'étage de pipeline sont mises dans un état 20 initial, et tous les éléments non volatils sont effacés et mis dans un état initial. Ainsi, les signaux d'écriture WRNV, WR, WRi-i, WRi, WRi+l et WRi+2 sont activés. Pendant une période suivante 904, un fonctionnement standard a lieu dans lequel des données rentrent et se propagent 25 dans le pipeline. Pendant une période suivante 906, une phase de sauvegarde a lieu pendant laquelle les contrôleurs de NVM 712 à 718 analysent l'état du pipeline et détectent la présence de données dans les demi-tampons. Si des données sont détectées dans 30 un étage, elles sont mémorisées dans la mémoire non volatile locale du demi-tampon. Dans l'exemple de la figure 9, des données sont détectées dans le demi-tampon 518, et ainsi le signal WRi+2 est activé pour écrire les données de ce demi-tampon dans sa mémoire volatile. Peu de temps après, le signal WR est activé, le 35 signal WRNV est activé pour écrire les bits de détection de 3047136 25 présence de données générés dans chaque contrôleur dans la mémoire non volatile correspondante. Le pipeline reprend ensuite par exemple son fonction- nement normal pendant une période 908, mais ensuite par exemple 5 un blocage d'alimentation survient, et la tension d'alimentation VDD est amenée à l'état bas pendant une période 910. À la fin de cette période, une mise sous tension survient, et la tension d'alimentation VDD est de nouveau activée. Une période d'initialisation 912 par exemple survient 10 ensuite, pendant laquelle le signal de réinitialisation rstn est appliqué à la totalité des bascules et des portes C de sorte qu'elles passent dans un état logique stable. Dans une période suivante 914, une phase de restauration a lieu, pendant laquelle le résultat de l'opération de détection 15 de présence de données précédente est restauré, dans chacun des contrôleurs du pipeline, à partir de la mémoire non volatile 802 de la bascule 614 vers le stockage volatil de la bascule. Pour cela, le signal AZNV est par exemple amené à un état bas, et peu de temps après le signal RDNV est amené à l'état haut. Le signal 20 AZNV revient ensuite à un niveau haut, et le signal RDNV revient à un niveau bas. Dans une opération suivante 916, les bits de détection de présence restaurés dans chaque contrôleur sont utilisés pour contrôler si une opération de restauration est réalisée ou pas 25 dans le demi-tampon correspondant. Dans cet exemple, le signal de commande local AZi+2 est amené à l'état bas et peu de temps après le signal de commande local RDi+2 est amené à l'état haut pour récupérer les données mémorisées dans la mémoire non volatile du demi-tampon 518 vers sa portion volatile. 30 Pendant une période suivante 918, le pipeline reprend son fonctionnement normal à partir de l'état mémorisé précédemment, et les mémoires non volatiles 802 des bascules 614 de chaque contrôleur sont effacées par un niveau haut du signal WRNV de sorte que la bascule est prête pour une opération de détection 35 de présence de données suivante. 3047136 26 Alors que dans l'exemple de la figure 9 une seule opération de sauvegarde est illustrée avant la coupure d'alimentation, en pratique il peut y avoir plusieurs opérations de sauvegarde conduisant à la phase de coupure d'alimentation, 5 chaque opération de sauvegarde écrasant l'écriture des résultats de l'opération de sauvegarde précédente. La figure 10 est un organigramme illustrant des étapes dans un procédé de sauvegarde et de restauration de données dans un pipeline asynchrone, par exemple le pipeline 600 de la figure 10 7, selon un exemple de réalisation. Ces opérations sont par exemple réalisées par les contrôleurs de NVM 712 à 718 et le circuit de commande 720 de la figure 7. À partir d'un point de départ 1000 du procédé, dans une étape 1001, un fonctionnement normal du pipeline a lieu, pendant 15 lequel des données sont introduites dans le pipeline. Dans une étape 1002, on détermine s'il y a assez d'énergie pour alimenter le pipeline. Par exemple, le pipeline asynchrone fait partie d'un dispositif électronique portable alimenté par une batterie, et l'étape 1002 implique une 20 vérification de l'état de charge de la batterie. Quand le niveau d'énergie est élevé, le fonctionnement de pipeline 1001 continue par exemple sans sauvegarde de données. Par contre, lorsque le niveau d'énergie descend en dessous d'un certain seuil, le procédé va par exemple à une étape 1003. 25 Dans l'étape 1003, une phase de sauvegarde est lancée, par exemple en activant le signal WR. Dans une étape suivante 1004, on détermine si la présence de jetons de données a été détectée dans l'un quelconque des étages du pipeline. Si oui, dans une opération suivante 1005, 30 les données présentes dans chaque étage de pipeline correspondant sont mémorisées localement, et dans une étape suivante 1006, une table de jetons est par exemple mise à jour. La table de jetons est par exemple une table mémorisée dans une mémoire non volatile du circuit de commande 720 de la figure 7 et indique, pour chaque 35 étage de pipeline, si des données étaient présentes ou pas à 3047136 27 dernière opération de sauvegarde. Ensuite, dans le pipeline asynchrone voit son alimentation 1007 est aussi réalisée directement après l'étape jeton n'est détecté et le pipeline peut par considéré comme vide de données. étape suivante 1008, on détermine encore une batterie fois s'il y a de alimentant le pipeline asynchrone a été chargée, ou qu'un l'énergie disponible, par exemple puisqu'une dispositif de collecte d'énergie a pompé dans un condensateur 10 d'alimentation ayant une quantité d'énergie suffisante. Dans la négative, le procédé revient dans l'étape de coupure d'alimentation 1007. Si par contre de l'énergie est devenue disponible, l'étape suivante est l'étape 1009, dans laquelle une mise sous tension du pipeline asynchrone a lieu. 15 Dans une étape suivante 1010, la table de jetons se trouvant dans le circuit de commande 720 est par exemple restaurée à partir du stockage non volatil, puis on détermine dans une étape 1011 si la dernière information de détection de présence de données indiquait la présence de données dans le pipeline. Par 20 exemple, la table de jetons contient un bit de données pour chaque étage du pipeline indiquant s'il contenait des données ou pas. Si au moins un jeton était présent dans le pipeline, une ou plusieurs opérations de lecture de mémoire non volatile 1012 sont réalisées pour restaurer les données du pipeline. Ensuite, dans une étape 25 1013, la table de jetons est réinitialisée dans la mémoire non volatile, puis dans une étape 1014, le fonctionnement normal du pipeline est repris. Le fonctionnement normal du pipeline est aussi par exemple repris directement après l'étape 1011 si aucun jeton n'est détecté dans le pipeline. 30 Un avantage des modes de réalisation décrits ici est que la consommation d'énergie peut être réduite pendant une sauvegarde non volatile d'un pipeline asynchrone en détectant l'emplacement où des données sont présentes dans le pipeline, et en réalisant des opérations de sauvegarde et de restauration seulement dans 35 les étages du pipeline dans lesquels des données sont présentes. l'instant de la une étape 1007, coupée. L'étape 1004 si aucun 5 conséquent être Dans une 3047136 28 Avec la description ainsi faite d'au moins un mode de réalisation illustratif, diverses altérations, modifications et améliorations apparaîtront facilement à l'homme de l'art. Par exemple, alors que dans les exemples de réalisation chaque étage 5 du circuit asynchrone comprend un demi-tampon, dans des variantes de réalisation on pourrait utiliser d'autres types de circuits tampons. En outre, il apparaîtra clairement à l'homme de l'art que la tension d'alimentation VDD dans les divers modes de 10 réalisation pourrait avoir un niveau quelconque, par exemple entre 1 V et 3 V, et plutôt que d'être à 0 V, la tension de masse pourrait aussi être considérée comme une tension d'alimentation qui pourrait avoir un niveau quelconque, comme un niveau négatif. En outre, il apparaîtra clairement à l'homme de l'art 15 que, dans tous les modes de réalisation décrits ici, tous les transistors NMOS pourraient être remplacés par des transistors PMOS et/ou que tous les transistors PMOS pourraient être remplacés par des transistors NMOS. Il apparaîtra clairement à l'homme de l'art comment on pourrait mettre en oeuvre les circuits en 20 utilisant seulement des transistors PMOS ou seulement des transistors NMOS, par exemple en inversant les rails d'alimentation. En outre, alors qu'on a décrit ici des transistors basés sur la technologie MOS, dans des variantes de réalisation on pourrait utiliser d'autres technologies, comme la technologie 25 bipolaire. REVENDICATIONS1. Circuit asynchrone comprenant : un pipeline asynchrone (600) comprenant deux étages, ou plus, (502, 504, 506, 508), chaque étage comportant : un circuit tampon (512, 514, 516, 518) pour mémoriser 5 temporairement des données à transférer d'un étage vers le suivant sur la base d'un protocole de poignée de main, le circuit tampon comprenant une mémoire non volatile (702, 704, 706, 708) ; et un circuit de détection de présence de données (604, 614) adapté à générer une valeur de détection de présence de 10 données indiquant si des données sont mémorisées ou pas par le circuit tampon ; et un circuit de conimande (712, 714, 716, 718, 720) adapté à réaliser une opération de sauvegarde de données en contrôlant indépendamment chaque circuit tampon pour sauvegarder les données 15 qu'il mémorise vers sa mémoire non volatile (702, 704, 706, 708) sur la base de la valeur de détection de présence de données correspondante. 2. Circuit asynchrone selon la revendication 1, dans lequel le circuit de détection de présence de données (604, 614) 20 comprend une autre mémoire non volatile (802) adaptée à mémoriser la valeur de détection de présence de données, dans lequel le circuit de collunande (712, 714, 716, 718, 720) est adapté à contrôler chaque circuit de détection de présence de données (604, 614) pour restaurer la valeur de détection de présence de données 25 à partir de l'autre mémoire non volatile pendant une phase de mise sous tension. 3. Circuit asynchrone selon la revendication 1 ou 2, dans lequel chacun des circuits de détection de présence de données (604, 614) est adapté à générer la valeur de détection de 30 présence de données sur la base de l'état d'un signal d'accusé de réception (ackg) reçu d'un étage suivant du pipeline, et d'un signal d'accusé de réception (ack) généré par le circuit tampon (512, 514, 516, 518) correspondant. 3047136 30 4. Circuit asynchrone selon la revendication 3, dans lequel le pipeline asynchrone comprend une ou plusieurs paires de lignes de données et une ligne d'accusé de réception couplant le circuit tampon (512, 514, 516, 518) de chaque étage de pipeline au suivant, dans lequel les circuits tampons (512, 514, 516, 518) sont agencés pour mettre en oeuvre un protocole de poignée de main à quatre phases pour le transfert d'un jeton de données à partir d'une phase de pipeline vers la suivante, le protocole de poignée de main à quatre phases comprenant le fait d'amener le signal d'accusé de réception présent sur la ligne d'accusé de réception d'un premier état vers un deuxième état et de le ramener vers le premier état, et dans lequel le circuit de détection de présence de données (604, 614) d'un premier étage de pipeline est adapté à générer une valeur de détection de présence de données indiquant que des données sont présentes dans le circuit tampon du premier étage de pipeline lorsque le signal d'accusé de réception provenant de l'étage de pipeline suivant est dans le premier état et le signal d'accusé de réception généré par le circuit tampon du premier étage de pipeline est dans le deuxième état. 5. Circuit asynchrone selon l'une quelconque des revendications 1 à 4, dans lequel le circuit de commande (720) comprend une mémoire non volatile mémorisant une table de jetons indiquant la présence de jetons de données dans le pipeline asynchrone. 6. Circuit asynchrone selon l'une quelconque des revendications 1 à 5, dans lequel le circuit tampon (512, 514, 516, 518) de chaque étage de pipeline est comprenant des première et deuxième portes C, comprenant des premier et deuxième noeuds d'entrée et des premier et deuxième inverseurs (110, 112) couplés de façon croisée entre des premier et deuxième noeuds de mémorisation complémentaires (0, Z) le deuxième noeud de mémorisation (Z) formant un noeud de sortie de la porte C ; et une mémoire non volatile comprenant : un demi-tampon chaque porte C 3047136 31 un premier élément résistif (202) ayant une première borne couplée au premier noeud de mémorisation (0) ; un deuxième élément résistif (204) ayant une première borne couplée au deuxième noeud de mémorisation (Z), au moins l'un 5 des premier et deuxième éléments résistifs étant programmable pour prendre l'un d'au moins deux états résistifs (Rmin, Rmax), une valeur de donnée étant représentée par les résistances relatives des premier et deuxième éléments résistifs, une deuxième borne du premier élément résistif (202) étant couplée à une deuxième borne 10 du deuxième élément résistif (204) par l'intermédiaire d'un premier transistor (210) ; et dans lequel le circuit de commande est adapté, pendant une phase de sauvegarde d'un bit de donnée mémorisé sur les premier et deuxième noeuds de mémorisation vers la mémoire non volatile, à 15 rendre conducteur le premier transistor (210) pendant que des niveaux logiques différents sont appliqués aux premier et deuxième noeuds d'entrée de la porte C. 7. Circuit asynchrone selon la revendication 6, dans lequel le premier transistor (210) est adapté à conduire un 20 courant d'écriture pendant la phase de sauvegarde, et dans lequel le circuit de la porte C est agencé de telle sorte que le courant d'écriture passe à travers au moins un transistor de chacun des premier et deuxième inverseurs (110, 112) pendant la phase d'écriture. 25 8. Circuit asynchrone selon la revendication 6 ou 7, dans lequel : chacune des première et deuxième portes C est adaptée à recevoir un premier signal d'entrée (A) sur le premier noeud d'entrée et un deuxième signal d'entrée (B) sur le deuxième noeud 30 d'entrée ; et le premier inverseur (112) comprend : des premier et deuxième transistors (226, 228) ayant leurs noeuds de commande couplés au premier ou au deuxième noeud de mémorisation (Q, Z) ; des troisième et quatrième transistors (114, 116) couplés en 35 parallèle entre eux et couplant le premier transistor du premier 3047136 32 inverseur à un rail de tension d'alimentation (VDD) ; et des cinquième et sixième transistors (118, 120) couplés en parallèle entre eux et couplant le deuxième transistor du premier inverseur au rail de tension de masse. 5 9. Circuit asynchrone selon l'une quelconque des revendications 6 à 8, dans lequel au moins l'un des premier et deuxième éléments résistifs (202, 204) est de l'un des types suivants : un élément à couple de transfert de spin ayant une 10 anisotropie dans le plan ; un élément à couple de transfert de spin ayant une anisotropie perpendiculaire au plan ; un élément à oxydation-réduction (RedOx) ; un élément ferroélectrique ; et 15 un élément à changement de phase. 10. Procédé de sauvegarde de données dans un pipeline asynchrone comprenant deux étages de pipeline ou plus, le procédé comprenant : générer, par un circuit de détection de présence de 20 données (604, 614) de chaque étage de pipeline, une valeur de détection de présence de données indiquant si des données sont mémorisées par un circuit tampon (512, 514, 516, 518) de chaque étage de pipeline, les circuits tampons mémorisant temporairement des données à transférer d'un étage vers le suivant sur la base 25 d'un protocole de poignée de main, chaque circuit tampon comprenant une mémoire non volatile ; et réaliser une opération de sauvegarde de données en contrôlant indépendamment chaque circuit tampon (512, 514, 516, 518) pour sauvegarder les données qu'il mémorise vers sa mémoire 30 non volatile sur la base de la valeur de détection de présence de données correspondante.