INPI-France/Brevets-Francais-2024-Chunked huggingface dataset:
On notera que le bus mémoire système 251 et le bus système 239 peuvent avantageusement être reliés l’un à l’autre par différents circuits d’interface. En outre, le bus système 239 et le bus système mémoire 251 peuvent être un même et unique bus, même si cela n’est pas le mode de réalisation préférentiel. En effet, le bus système 239 est souvent de petite taille pour les données et mettre les deux bus en commun pourrait conduire à avoir un bus 251 de petite taille, et de surcroît à augmenter le débit nécessaire sur le bus commun ce qui pourrait en pratique se traduire par une saturation du bus, et par ricochet une diminution du débit d’échanges de données par rapport à une configuration à deux bus.
De préférence, le bus système mémoire 251 est plus large que le bus système processeur 239. La liaison de transfert de données 204 a de préférence une largeur égale à la taille du plus grand vecteur de données pouvant être lu en une fois dans le circuit mémoire 201, par exemple égale à la taille d'une rangée de circuits de lecture présents en pieds de colonnes dans la matrice de cellules élémentaires de stockage du circuit mémoire 201. A titre de variante, la liaison 204 peut avoir une largeur égale à un sous-multiple de la taille du plus grand vecteur de données pouvant être lu en une fois dans le circuit mémoire 201. Le bus 251 peut avoir une largeur égale à la largeur de la liaison 204. A titre de variante, la largeur du bus 251 peut être un sous-multiple de la largeur de la liaison 204. La largeur de la liaison 204 est de préférence supérieure à la largeur d'un port d'entrée/sortie du processeur 231. On notera que par largeur d'un bus, d'un port ou d'une liaison, on entend ici la largeur des données pouvant transiter en parallèle sur le bus, le port ou la liaison (indépendamment d'éventuels signaux additionnels d'adresse et/ou de contrôle).
Le circuit d'accès direct 203 aussi appelé circuit de transfert direct est adapté à transférer des données directement, c'est-à-dire sans faire transiter ces données par le processeur 231, entre le circuit mémoire 201 et le bus système mémoire 251. Dans l'exemple représenté, le système comprend en outre un circuit mémoire 253 (MM) externe au module 200. Le circuit mémoire 253 est relié au bus système mémoire 251 par l'intermédiaire d'une liaison 255. Ainsi, le circuit d'accès direct 203 permet de transférer des données directement, c'est-à-dire sans faire transiter ces données par le processeur 231, entre le circuit mémoire 201 du module 200 et le circuit mémoire externe 253. Plus généralement, le circuit d'accès direct 203 permet de transférer des données directement, c'est-à-dire sans faire transiter ces données par le processeur 231, entre le circuit mémoire 201 du module 200 et tout circuit périphérique connecté au bus système mémoire 251. A titre d'exemples non limitatif, le circuit mémoire 253 peut être une mémoire de type SRAM, une mémoire de type NVM (de l'anglais "Non Volatil Memory" – mémoire non volatile), une mémoire de type DRAM (de l'anglais "Dynamic Random Access Memory" – mémoire dynamique à accès aléatoire), une mémoire de type Flash, ou encore un autre circuit mémoire adapté à mettre en œuvre des opérations de calcul. Les différents composants du module 200 peuvent être intégrés dans une même puce de circuits intégrés. Le circuit mémoire 253 peut être intégré à cette même puce, ou externe à cette puce.
Dans l'exemple de la , le module 200 comprend en outre un circuit de contrôle 205 (PC pour Pipeline controler) adapté à ordonnancer les accès au circuit mémoire 201 requis par le processeur 231. Le circuit 205 est adapté à décoder les instructions reçues en provenance du processeur 231 et à décomposer, si nécessaire, chaque instruction reçue en une séquence de plusieurs sous-opérations aussi appelées opérations élémentaires. Par opération élémentaire, on entend une opération de lecture, d’écriture ou de calcul dans le circuit mémoire 201. Une opération de calcul peut éventuellement consister à actionner uniquement une unité de calcul accolée à la matrice mémoire (dans le cas par exemple d’une mémoire de type NMC). Une opération de calcul peut également consister à réaliser une opération de lecture d’une ou plusieurs rangées avec actionnement de moyens de calcul placés en pied de colonne dans le cas par exemple d’une mémoire de type IMC). De façon générale, on peut considérer qu’une opération élémentaire peut être réalisée dans un cycle d’accès au circuit mémoire 201, comme cela est par exemple décrit dans la demande de brevet français N°20/08272 déposée le 4 août 2020 par le demandeur en relation avec les figures 4A, 4B.
Le module 200 de la comprend en outre un circuit 207 (AD) de distribution des requêtes en provenance du processeur 231. Le circuit 207 est relié au processeur 231 par l'intermédiaire d'une liaison 233. Le circuit 207 est en outre relié au circuit de contrôle 205 du circuit mémoire 201 par une liaison 209 interne au module 200, et au circuit d'accès direct 203 par une liaison 211 interne au module 200. Le circuit 207 permet de contrôler la distribution du flux d'instructions en provenance du processeur 231 entre d'une part le circuit mémoire 201 (via la liaison 209 et le circuit de contrôle 205) et d'autre part le circuit d'accès direct 203 (via la liaison 211). Un mécanisme de type mappage mémoire peut être prévu pour réaliser le routage (aiguillage) des instructions vers l'un ou l'autre du circuit mémoire 201 et du circuit d'accès direct 203, en fonction d'un champ d'adresse contenu dans l'instruction.
Le processeur 231 peut requérir des accès en lecture ou en écriture au circuit mémoire 201, ou encore l'exécution de calculs par le circuit mémoire 201. Le processeur peut en outre requérir des transferts directs (via le circuit 203) de données entre le circuit mémoire 201 et un circuit périphérique externe au module 200, par exemple le circuit mémoire 253. Ces requêtes sont réparties entre le circuit de contrôle 205 et le circuit d'accès direct 203 par le circuit de distribution 207.
La illustre plus en détail un exemple d'implémentation du système de la .
Le système de la comprend les mêmes éléments que dans l'exemple de la , agencés sensiblement de la même manière.
Dans l'exemple de la , on a représenté plus en détail différents éléments du circuit d'accès direct 203 du module 200.
Plus particulièrement, dans cet exemple, le circuit 203 comprend un ensemble 301 (DMA IR) d'un ou plusieurs registres d'instructions. Les registres 301 reçoivent des instructions en provenance du processeur 231, par l'intermédiaire de la liaison 211. Les registres 301 stockent les instructions de transfert à exécuter par le circuit 203.
Les instructions stockées dans les registres 301 sont par exemple des instructions dédiées de contrôle du circuit d'accès direct 203, contenant notamment les plages d'adresses source et destination des transferts à réaliser, et des informations quant à la taille et, éventuellement, à l'agencement (motif ou "pattern" en anglais) des données à transférer dans le circuit mémoire source et dans le circuit mémoire destination (de manière à permettre de modifier l'arrangement des données lors de leur transfert entre la source et la destination).
Avantageusement, l’étape 240 d’inversion du mot de code initial suivie de l’étape 241 de programmation en mode 1T1R du mot de code initial inversé sont effectuées sans aucune autre opération d’écriture et de vérification du mot de code initial qui a été programmé en mode 1T1R lors de l’étape précédente 220 de programmation du mot de code initial.
Le procédé d’écriture de la présente invention permet d’outrepasser des manquements ou des erreurs de programmation en mode 1T1R lors de la programmation d’un mot de code initial ou de ce mot de code initial sous une forme inversée. En effet, s’il est habituel dans le domaine technique des mémoires résistives de vérifier après chaque écriture la correcte programmation de bits de données et de vérification, il est aussi habituel de ne pas poursuivre de telles opérations d’écriture tant que tous les bits ne sont pas programmés. Ainsi, si dans le domaine une limitation du nombre maximal de programmations est déjà connue, ce nombre maximal de programmations est déterminé de manière à s’assurer d’une fiabilité suffisante de la programmation en mode 1T1R et donc d’un nombre de cycles de programmation suffisant.
Les inventeurs ont établi que le procédé d’écriture d’un mot de code dans une mémoire résistive composée de cellules 2T2R de la présente invention peut s’affranchir au moins partiellement de ce niveau de fiabilité de la programmation en mode 1T1R exigé dans l’art. En effet, le procédé de la présente invention se repose sur le doublement de la marge de lecture lorsque cette lecture est effectuée en mode différentiel, ce qui permet de réduire la répétition des procédures d’écriture tout en maintenant un niveau suffisant de fiabilité. Autrement dit, le nombre maximal d’itérations d’écriture en mode 1T1R est dans la présente invention choisi plus faible que le nombre maximal d’itérations d’écriture en mode 1T1R généralement retenu dans les dispositifs de l’état de l’art.
Ainsi le procédé d’écriture de la présente invention permet de maximiser les chances de bonne lecture d’un mot de code alors que le nombre maximal de programmations est diminué. Par conséquent, le procédé d’écriture de la présente invention permet d’optimiser la performance et la fiabilité d’une mémoire résistive en mode 2T2R en allant à l’encontre d’une recherche de la fiabilité des programmations effectuées en mode 1T1R.
Dans un cas particulier concernant l’écriture pour des mémoires résistives en mode 2T2R où le procédé d’écriture 200 n’implique pas l’écriture de bits de données constituant un mot entier mais seulement une subdivision de ce mot entier, il est nécessaire au préalable d’effectuer une lecture du mot entier à l’adresse mémoire ciblée par l’opération d’écriture 200, de corriger les éventuelles erreurs de stockage ou lecture à l’aide du décodeur ECC et d’inclure dans le mot entier éventuellement corrigé, la subdivision du mot à écrire. Le procédé d’écriture 200 pourra alors être effectué selon la première étape 210 de génération d’un mot de code à partir des bits de données correspondant au mot corrigé et modifié.
La représente un mode de réalisation particulier d’un procédé 300 consistant à programmer en mode 1T1R un mot dans une mémoire résistive. Le procédé de programmation 300 d’un mot dans la mémoire 1T1R peut être appliqué pour l’étape présentée 220 de la , de programmation des bits du mot de code initial généré dans la mémoire résistive selon un mode 1T1R et aussi pour l’étape 241 de programmation des bits du mot de code initial inversé, dans la mémoire résistive et selon un mode 1T1R.
La programmation d’un mot dans la mémoire en mode 1T1R selon la débute par une étape 310 consistant à lire en mode 1T1R dans la mémoire résistive les bits à l’adresse de programmation et comparer les bits lus à ladite adresse de programmation et les bits du mot à programmer. Grâce à cette comparaison, il est possible de déterminer quels sont les bits lus qui sont déjà programmés correctement pour le mot qui doit être programmé et lesquels ne sont pas programmés correctement.
Suite à cette étape 310, la programmation 300 se poursuit par une étape 320 consistant à programmer en mode 1T1R dans la mémoire résistive uniquement les bits qui ne correspondent pas aux bits du mot à programmer. Notamment, dans le mode de réalisation particulier de la , seuls sont programmés les bits qui n’étaient pas égaux à ‘1’ et les bits qui étaient déjà programmés à ‘1’ ne sont pas programmés. Cette étape est également connue comme une opération de type « set ». Egalement, lors de cette programmation le compteur de nombre de programmations est décrémenté.
Cette étape 310, de lecture puis programmation des bits seulement égaux à ‘1’, correspondent à une étape connue selon l’anglicisme « READ BEFORE WRITE » qui permet d’économiser la programmation de cellules qui n’ont pas besoin d’être programmées.
La programmation d’un mot de code dans la mémoire en mode 1T1R selon la se poursuit par une étape consistant à vérifier par lecture en mode 1T1R à l’adresse de programmation dans la mémoire résistive s’il reste des bits non programmés à ‘1’. Cette étape correspond aux étapes 230 et 242 de la .
La programmation d’un mot dans la mémoire en mode 1T1R selon la se poursuit par une étape 340 consistant à programmer en mode 1T1R dans la mémoire résistive les bits du mot de code égaux à ‘0’ qui ne correspondent pas aux bits lus. Notamment, dans le mode de réalisation particulier de la , les bits de données qui étaient déjà programmés à ‘0’ ne sont pas modifiés. Cette étape est également connue comme une opération de type « reset ». Egalement, lors de cette programmation le compteur de nombre de programmations est décrémenté.
La programmation d’un mot de code dans la mémoire en mode 1T1R selon la se poursuit par une étape consistant à vérifier par lecture en mode 1T1R à l’adresse de programmation dans la mémoire résistive s’il reste des bits non programmés à ‘0’. Cette étape correspond également aux étapes 230 et 242 de la , qui sont ainsi doublées, une étape étant effectuée pour chaque opération, une de type « set » et une de type « reset ».
Un mode de réalisation particulier d’un procédé d’écriture selon la présente invention consiste à effectuer le procédé d’écriture représenté par la , les étapes 220 et 241 de programmation en mode 1T1R dans la mémoire résistive étant effectuée selon la , ce mode de réalisation particulier ne comprenant pas d’étape de vérification de bits non-programmés effectuée juste après l’étape 320 de programmation de bits égaux à 1, et/ou d’étape de vérification de bits non-programmés effectuée juste après l’étape 340 de programmation de bits égaux à 0.
Dans un autre mode de réalisation particulier de l’invention qui peut être combiné aux modes de réalisation précédemment décrits, le dispositif mettant en œuvre le procédé d’écriture 300 dans une mémoire résistive en mode 1T1R comprend un premier circuit d’écriture uniquement adapté pour configurer dans un état HRS les cellules de la mémoire résistive et un second circuit d’écriture uniquement adapté pour configurer dans un état LRS les cellules de la mémoire résistive. Dans ce mode de réalisation particulier, l’étape 320 consistant à programmer des bits égaux à 1 (opération de type « set » utilisée pour programmer les cellules en état LRS) et l’étape 340 consistant à programmer des bits égaux à 0 (opération de type « reset » utilisée pour programmer les cellules en état HRS) sont effectuées en parallèle, c’est-à-dire en même temps par le premier circuit d’écriture concernant les cellules de la mémoire résistive à programmer dans un état HRS et par le second circuit d’écriture concernant les cellules de la mémoire résistive à programmer dans un état LRS. Un tel mode de réalisation permet notamment un gain de temps d’écriture, la programmation de bits de données pouvant être faite par deux circuits d’écriture en même temps lors de chaque étape de programmation.
Dans un autre mode de réalisation particulier de l’invention, le dispositif mettant en œuvre le procédé d’écriture 200 dans une mémoire résistive composée de cellules différentielles 2T2R comprend un unique circuit d’écriture adapté pour configurer dans un état HRS ou LRS les cellules de la mémoire résistive. En comparaison avec les modes de réalisation où le dispositif mettant en œuvre le procédé d’écriture 200 de l’invention comprend deux circuits d’écriture, un dispositif comportant un unique circuit d’écriture permet un gain de surface et une réduction de la consommation statique dans la réalisation de ce dispositif. On notera que ce circuit d’écriture « unique » car capable de programmer des « 0 » et des « 1 » est en pratique souvent constitué de plusieurs circuits d’écriture associés par exemple à des colonnes de cellules mémoire différentes, afin de pouvoir réaliser en parallèle plusieurs opérations d’écriture dans des cellules mémoires distinctes.
Par ailleurs, on notera que l’écriture des cellules mémoire associées à un mot de code est, de façon classique en soi, réalisées dans un groupe de cellules mémoires sélectionnées à partir d’une même valeur d’adresse qui est fournie par le processeur hôte, le nombre de cellules mémoires sélectionnées étant par exemple égal à k+r (k étant la taille des données et r le nombre de bits d’ECC). Ainsi, lorsque l’on réalise une lecture, en mode différentielle «2T2R » à une adresse indiquée par le processeur, on réalise en pratique une pluralité de lectures différentielles en parallèles des cellules mémoire associées à l’adresse indiquée.
Notamment, la commande de sécurité comprend un multiplet de sécurité comportant M bits, M étant par exemple un entier supérieur à 8, par exemple égal à N, notamment égal à 16. En d’autres termes, le multiplet de sécurité est un multiplet de M bits, c’est-à-dire un multiplet ayant une longueur de M bits.
Il est à noter que les valeurs de N et M sont adaptables selon les besoins en fonction, par exemple, de l’architecture électronique des modules 14, 16, 18, du degré de sécurité désiré, du degré de complexité de l’architecture de commande 10 souhaité.
Avantageusement, la commande de sécurité est différente de la commande principale. En particulier, le multiplet de sécurité est différent du multiplet principal. Autrement dit, le multiplet de sécurité et le multiplet principal correspondent à des combinaisons différentes de bits.
Par exemple, le module de confirmation 14 génère la commande de sécurité après une temporisation commençant lorsque le module de confirmation 14 reçoit la commande principale. Par exemple, la temporisation est comprise entre 500ms et 15s. Par exemple, lorsque la commande principale correspond à la commande suggérée, la temporisation est dite « courte » et est comprise entre 500 ms et 1 s. Avantageusement, lorsque la commande principale ne correspond pas à la commande suggérée, la temporisation est dite « longue » et est comprise entre 1s et 15 s. La temporisation est supérieure ou égale à un temps minimum, ce qui assure un certain décalage d’un envoi vers le module de contrôle 16 de la commande de sécurité chronologiquement par rapport à l’envoi de la commande principale vers le module de contrôle 16.
Comme il sera décrit plus bas, le module de confirmation 14 génère la commande de sécurité lorsque la commande principale correspond à la commande suggérée. Sinon, lorsque la commande principale diffère de la commande suggérée, le module de confirmation 14 génère la commande de sécurité lorsque le dispositif de confirmation 20 est actionné pour confirmer la commande principale, comme il sera décrit en détails plus bas. La temporisation est alors supérieure ou égale à un délai nécessaire au pilote pour actionner le dispositif de confirmation 20 le cas échéant.
Avantageusement, le module de confirmation 14 est configuré, après réception de la commande principale, lorsque la commande principale diffère de la commande suggérée, pour générer la demande de confirmation de la commande principale. En particulier, la demande de confirmation comprend une chaîne de caractères associée à la commande principale. Le module de confirmation 14 est en outre par exemple configuré pour transmettre la demande de confirmation à l’unité de gestion d’affichage 30 afin que celui-ci l’affiche sur l’afficheur 28.
Par exemple, l’élément graphique correspondant à la demande de confirmation comprend la chaîne de caractère. Dans l’exemple de la , lorsque la commande principale correspond au passage de l’élément fonctionnel 3 dans la configuration cible mais que la commande suggérée ne correspond pas au passage de l’élément fonctionnel 3 dans la configuration cible, la chaîne de caractère correspond à un message comme par exemple « ‘ CONFIRM BOOSTER 1 OFF’ » qui retranscrit une demande de confirmation de passage de l’élément fonctionnel 3 dans la configuration cible. La demande de confirmation permet alors à l’opérateur de se rendre compte que la commande principale diffère de la commande suggérée. Lorsque la commande principale diffère de la commande correspondant au passage de l’élément fonctionnel 3 dans la configuration cible, une chaîne de caractères correspondant à un autre message est affichée. Cette chaine de caractère correspond par exemple alors au passage de l’élément fonctionnel 3 dans une configuration différente de la configuration cible, au contrôle d’un élément fonctionnel 3 distinct, ou à aucun contrôle tangible d’un élément fonctionnel 3 quelconque de l’aéronef 1. L’opérateur prend alors conscience que la commande principale ne correspond pas au passage de l’élément fonctionnel 3 dans la configuration cible. Ceci peut découler soit du fait d’une action incorrecte de l’opérateur, par exemple d’un pointage incorrect sur l’écran tactile correspondant à une commande alternative, soit d’une avarie de l’unité de gestion d’affichage 30 qui n’a pas généré la commande principale adéquate malgré une action correcte de l’opérateur.
Le module de contrôle 16 est apte à piloter l’élément fonctionnel 3 entre ses configurations. Pour ce faire, le module de contrôle 16 comprend tout élément électronique, mécanique, ou électromécanique nécessaire pour réaliser le contrôle de l’élément fonctionnel 3.
Par exemple, dans le cas où l’élément fonctionnel 3 est un dispositif de contrôle de l’alimentation du moteur, le module de contrôle 16 comprend un organe mécanique ou électromécanique apte à activer ou éteindre la première et/ou la deuxième pompe.
En particulier, le module de contrôle 16 passe l’élément fonctionnel 3 dans la configuration cible lorsque la commande principale correspond à une commande principale attendue de passage de l’élément fonctionnel 3 dans la configuration cible et lorsque la commande de sécurité correspond à une commande de sécurité attendue de passage de l’élément fonctionnel 3 dans la configuration cible.
Avantageusement, la commande principale attendue de passage de l’élément fonctionnel 3 dans la configuration cible comprend un multiplet principal attendu de passage de l’élément fonctionnel 3 dans la configuration cible comportant N bits. En d’autres termes, le multiplet principal attendu de passage de l’élément fonctionnel 3 dans la configuration cible est un multiplet de N bits, c’est-à-dire un multiplet ayant une longueur de N bits.
Encore avantageusement, la commande de sécurité attendue de passage de l’élément fonctionnel 3 dans la configuration cible comprend un multiplet de sécurité attendu de passage de l’élément fonctionnel 3 dans la configuration cible comportant M bits. En d’autres termes, le multiplet de sécurité attendu de passage de l’élément fonctionnel 3 dans la configuration cible est un multiplet de M bits, c’est-à-dire un multiplet ayant une longueur de M bits.
Selon un exemple, la commande de sécurité attendue de passage de l’élément fonctionnel 3 dans la configuration cible est différente de la commande principale attendue de passage de l’élément fonctionnel 3 dans la configuration cible. En particulier, le multiplet de sécurité attendu de passage de l’élément fonctionnel 3 dans la configuration cible est différent du multiplet principal attendu de passage de l’élément fonctionnel 3 dans la configuration cible. Autrement dit, le multiplet de sécurité attendu et le multiplet principal attendu de passage de l’élément fonctionnel 3 dans la configuration cible correspondent à des combinaisons différentes de bits.