Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SYSTEM FOR WRITING DATA IN A MEMORY
Document Type and Number:
WIPO Patent Application WO/2015/086845
Kind Code:
A1
Abstract:
The invention relates to a system (100) comprising: a first memory (101) comprising several portions (Si) of one or more pages (Pi,j) each, said memory (101) comprising first (PTR) and second (PTW) ports that can simultaneously access, for reading and writing respectively, two distinct pages (Pi,j) of portions (Si) of the memory (101); and a control circuit (103) capable of performing write operations to the pages (Pi,j) of the memory (101), each write operation to a page (Pi,j) of the memory (101) requiring a reading step of a former datum on said page (Pi,j) via the first port (PTR), and comprising a writing step of a new datum to the page (Pi,j) via the second port (PTW), taking account of the former datum.

Inventors:
HARRAND MICHEL (FR)
Application Number:
PCT/EP2014/077651
Publication Date:
June 18, 2015
Filing Date:
December 12, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
COMMISSARIAT ENERGIE ATOMIQUE (FR)
International Classes:
G11C7/10; G06F11/10; G11C8/16; G11C13/00
Foreign References:
US20100103723A12010-04-29
US20110085398A12011-04-14
US20100080071A12010-04-01
US20110185259A12011-07-28
Attorney, Agent or Firm:
CABINET BEAUMONT (FR)
Download PDF:
Claims:
REVENDICATIONS

1. Système (100) comportant :

une première mémoire (101) comportant plusieurs portions (Sj_, 201j_) de plusieurs pages (Pi,j) chacune, cette mémoire (101) comportant des premier (PTR) et deuxième (PTW) ports permettant d'accéder en même temps, respectivement en lecture et en écriture, à deux pages de la mémoire, à condition que ces pages appartiennent à des portions (Sj_, 201j_) distinctes de la mémoire (101), chaque portion (Sj_, 201j_) de la première mémoire (101) comprenant un unique port d'accès (A, dj_n, dout) aux pages de la portion, ce port pouvant être connecté à l'un ou l'autre des premier (PTR) et deuxième (PTW) ports de la première mémoire (101) par des circuits de multiplexage (205j, MUX) ;

une deuxième mémoire (105) comportant un nombre (p) de lignes (Lj) égal au nombre (p) de pages (?i,j) d'une portion (Sj_, 201j_) de la première mémoire (101), chaque ligne (Lj) de la deuxième mémoire (105) contenant un premier champ (AS) adapté à contenir une adresse d'une portion (Sj_, 201j_) de la première mémoire, un deuxième champ (DATAI) adapté à contenir le contenu d'une page (?i,j) de la première mémoire (101), un troisième champ (DATA2) adapté à contenir le contenu d'une page (Pj_,j) de la première mémoire (101) , et un quatrième champ (V) adapté à contenir un bit de validité ; et

un circuit de contrôle (103) adapté à effectuer des opérations d'écriture dans des pages (Pj_,j) de la mémoire (101), chaque opération d'écriture dans une page (?i,j) de la mémoire (101) comportant une étape de lecture d'une ancienne donnée dans cette page (Pj_,j) via le premier port (PTR), suivie d'une étape d'écriture d'une nouvelle donnée dans cette page (?i,j) via le deuxième port (PTW) en tenant compte de l'ancienne donnée,

dans lequel le circuit de contrôle (103) est adapté, à chaque opération de lecture ou d'écriture dans une page (?i,j) de la première mémoire (101) , à consulter le quatrième champ (V) de la ligne (L-i ) dont l'adresse dans la deuxième mémoire (105) correspond à l'adresse de la page (?i,j) visée dans la portion (Sj_) à laquelle elle appartient.

2. Système selon la revendication 1, dans lequel le circuit de contrôle (103) est en outre adapté, à chaque opération de lecture ou d'écriture dans une page (Pj_,j) dans la première mémoire (101) :

à déterminer si le quatrième champ (V) de la ligne (Lj) d'adresse correspondant à l'adresse de la page (Pj_,j) visée est à un état valide ; et/ou

à comparer le contenu du premier champ (AS) de ladite ligne (Lj) à l'adresse (Sj_) de la portion contenant la page (pi, ) visée.

3. Système (100) selon la revendication 1 ou 2, dans lequel la première mémoire (101) est une mémoire résistive.

4. Système (100) selon l'une quelconque des revendications 1 à 3, dans lequel, pour effectuer des première et deuxième opérations d'écriture consécutives dans des première et deuxième pages (?i,j) de portions (Sj_, 201j_) distinctes de la première mémoire (101), le circuit de contrôle (103) est adapté à, successivement :

lire une première ancienne donnée dans la première page via le premier port (PTR) et écrire cette donnée dans la deuxième mémoire (105) ;

lire une deuxième ancienne donnée dans la deuxième page via le premier port (PTR) et écrire cette donnée dans la deuxième mémoire (105) , et, simultanément, écrire une première nouvelle donnée dans la première page via le deuxième port (PTW) en tenant compte de la première ancienne donnée ; et

écrire une deuxième nouvelle donnée dans la deuxième page via le deuxième port (PTW) en tenant compte de la deuxième ancienne donnée.

5. Système (100) selon l'une quelconque des revendications 1 à 4, dans lequel la deuxième mémoire (105) est une mémoire SRAM.

6. Système (100) selon l'une quelconque des revendications 1 à 5, dans lequel chaque page (Pi,j) de la première mémoire (101) comprend plusieurs cellules élémentaires de stockage de données, et dans lequel le circuit de contrôle (103) est adapté, à chaque opération d'écriture d'une nouvelle donnée dans une page (?i,j) de la première mémoire (101), lors de l'étape d'écriture de cette opération d'écriture, à comparer l'ancienne donnée lue dans la page (Pj_,j) et la nouvelle donnée, et à écrire uniquement dans les cellules de la page (Pj_,j) dont le contenu doit être modifié pour enregistrer la nouvelle donnée .

7. Système (100) selon l'une quelconque des revendications 1 à 5, dans lequel chaque page (Pi,j) de la première mémoire (101) comprend au moins des premier et deuxième mots comportant chacun une ou plusieurs cellules élémentaires de stockage de données, et un ensemble d'une ou plusieurs cellules élémentaires de stockage de données adapté à contenir un code de correction d'erreur protégeant des données contenues dans les premier et deuxième mots .

8. Système (100) selon la revendication 7, dans lequel le circuit de contrôle (103) est adapté, à chaque opération d'écriture dans une page (Pj_,j) de la mémoire (101), à lire dans la page (Pj_,j) une ancienne donnée comportant les contenus des premier et deuxième mots de la page (Pi,j) et le code de correction d'erreur les protégeant, à corriger si nécessaire les contenus des premier et deuxième mots à l'aide du code de correction d'erreur, à remplacer dans l'ancienne donnée le contenu d'au moins un des premier et deuxième mots par la nouvelle donnée utilisateur, à recalculer le code de correction d'erreur pour tenir compte de la nouvelle donnée utilisateur, puis à écrire dans la page (Pi,j) la nouvelle donnée et le nouveau code de correction d'erreur.

Description:
SYSTÈME D ' ÉCRITURE DE DONNÉES DANS UNE MÉMOIRE

La présente demande de brevet revendique la priorité de la demande de brevet français FR13/62469 qui sera considérée comme faisant partie intégrante de la présente description.

Domaine

La présente demande concerne le domaine des mémoires électroniques .

Exposé de l'art antérieur

Dans la présente demande, on désigne par mémoire, dispositif mémoire, ou mémoire électronique un dispositif comportant une pluralité de cellules élémentaires de mémorisation, chaque cellule pouvant être programmée pour stocker un ou plusieurs bits de données. En pratique, une mémoire peut contenir un très grand nombre de cellules élémentaires, typiquement plusieurs millions à plusieurs centaines de milliards.

On s'intéresse en particulier aux mémoires dites résistives, c'est-à-dire dans lesquelles chaque cellule élémentaire de mémorisation comprend un élément dont on peut modifier la résistance en lui appliquant une tension de polarisation. Parmi les mémoires résistives les plus répandues, on peut notamment citer : les mémoires à changement de phase, généralement désignées dans la technique par l'acronyme PCM (de l'anglais "Phase Change Memory"), dans lesquelles l'élément résistif est réalisé à l'aide d'un matériau dont on peut changer l'état cristallin et par conséquent la résistivité, en faisant varier sa température pendant l'écriture;

les mémoires à pont conducteur, généralement désignées dans la technique par l'acronyme CBRAM (de l'anglais "Conductive Bridge Random Access Memory"), dans lesquelles l'élément résistif est réalisé à l'aide d'un matériau isolant dans lequel un filament conducteur peut être créé ou supprimé par application d'une tension de polarisation ; et

les mémoires à oxydation-réduction, généralement désignées dans la technique par l'acronyme OxRRAM (de l'anglais "Oxyde-based Résistive Random Access Memory"), dans lesquelles l'élément résistif est aussi réalisé à l'aide d'un matériau isolant dans lequel un filament conducteur peut être créé ou supprimé par application d'une tension de polarisation.

Un inconvénient des mémoires résistives est qu'elles ont une durée de vie ou endurance relativement faible. A titre d'exemple illustratif, le nombre d'écritures que peut typiquement supporter une cellule élémentaire d'une mémoire résistive est de l'ordre de 10^, alors que ce nombre est quasiment infini, par exemple de l'ordre de 10^- , pour une cellule d'une mémoire capacitive volatile de type DRAM.

Un autre inconvénient des mémoires résistives réside dans le fait que l'écriture d'un bit dans une cellule de la mémoire nécessite une quantité d'énergie électrique relativement importante .

Pour augmenter la durée de vie d'une mémoire de type

PCM et réduire sa consommation électrique, il a été proposé, dans l'article intitulé "A Durable and Energy Efficient Main Memory Using Phase Change Memory Technology" de Ping Zhou et al., à chaque opération d'écriture d'une nouvelle donnée dans la mémoire, de commencer par lire la donnée contenue dans la zone de la mémoire que l'on souhaite écrire, puis d'écrire dans la mémoire uniquement les bits de la nouvelle donnée dont la valeur diffère des bits de l'ancienne donnée. L'usure de la mémoire et l'énergie électrique consommée lors d'une étape de lecture étant relativement faibles par rapport à l'usure de la mémoire et à l'énergie électrique consommée lors d'une étape d'écriture, ceci permet d'augmenter la durée de vie de la mémoire et de diminuer sa consommation électrique en évitant des écritures redondantes.

Toutefois, un inconvénient de cette solution est que l'étape de lecture qui précède chaque étape d'écriture lors d'une opération d'écriture dans la mémoire, entraine une augmentation non négligeable des temps d'écriture dans la mémoire .

Résumé

Ainsi, un mode de réalisation prévoit un système comportant : une première mémoire comportant plusieurs portions de plusieurs pages chacune, cette mémoire comportant des premier et deuxième ports permettant d'accéder en même temps, respectivement en lecture et en écriture, à deux pages de la mémoire à condition que ces pages appartiennent à des portions distinctes de la mémoire, chaque portion de la première mémoire comprenant un unique port d'accès aux pages de la portion, ce port pouvant être connecté à l'un ou l'autre des premier et deuxième ports de la première mémoire par des circuits de multiplexage ; une deuxième mémoire comportant un nombre de lignes égal au nombre de pages d'une portion de la première mémoire, chaque ligne de la deuxième mémoire contenant un premier champ adapté à contenir une adresse d'une portion de la première mémoire, un deuxième champ adapté à contenir le contenu d'une page de la première mémoire, un troisième champ adapté à contenir le contenu d'une page de la première mémoire, et un quatrième champ adapté à contenir un bit de validité ; et un circuit de contrôle adapté à effectuer des opérations d'écriture dans des pages de la mémoire, chaque opération d'écriture dans une page de la mémoire comportant une étape de lecture d'une ancienne donnée dans cette page via le premier port, suivie d'une étape d'écriture d'une nouvelle donnée dans cette page via le deuxième port en tenant compte de l'ancienne donnée, dans lequel le circuit de contrôle est adapté, à chaque opération de lecture ou d'écriture dans une page de la première mémoire, à consulter le quatrième champ de la ligne dont l'adresse dans la deuxième mémoire correspond à l'adresse de la page visée dans la portion à laquelle elle appartient.

Selon un mode de réalisation, le circuit de contrôle est en outre adapté, à chaque opération de lecture ou d'écriture dans une page de la première mémoire : à déterminer si le quatrième champ de la ligne d'adresse correspondant à l'adresse de la page visée est à un état valide ; et/ou à comparer le contenu du premier champ de ladite ligne à l'adresse de la portion contenant la page visée.

Selon un mode de réalisation, la première mémoire est une mémoire résistive.

Selon un mode de réalisation, pour effectuer des première et deuxième opérations d'écriture consécutives dans des première et deuxième pages de portions distinctes de la première mémoire, le circuit de contrôle est adapté à, successivement : lire une première ancienne donnée dans la première page via le premier port et écrire cette donnée dans la deuxième mémoire ; lire une deuxième ancienne donnée dans la deuxième page via le premier port et écrire cette donnée dans la deuxième mémoire, et, simultanément, écrire une première nouvelle donnée dans la première page via le deuxième port en tenant compte de la première ancienne donnée ; et écrire une deuxième nouvelle donnée dans la deuxième page via le deuxième port en tenant compte de la deuxième ancienne donnée.

Selon un mode de réalisation, la deuxième mémoire est une mémoire SRAM.

Selon un mode de réalisation, chaque page de la première mémoire comprend plusieurs cellules élémentaires de stockage de données, et le circuit de contrôle est adapté, à chaque opération d'écriture d'une nouvelle donnée dans une page de la première mémoire, lors de l'étape d'écriture de cette opération d'écriture, à comparer l'ancienne donnée lue dans la page et la nouvelle donnée, et à écrire uniquement dans les cellules de la page dont le contenu doit être modifié pour enregistrer la nouvelle donnée.

Selon un mode de réalisation, chaque page de la première mémoire comprend au moins des premier et deuxième mots comportant chacun une ou plusieurs cellules élémentaires de stockage de données, et un ensemble d'une ou plusieurs cellules élémentaires de stockage de données adapté à contenir un code de correction d'erreur protégeant des données contenues dans les premier et deuxième mots .

Selon un mode de réalisation, le circuit de contrôle est adapté, à chaque opération d'écriture dans une page de la mémoire, à lire dans la page une ancienne donnée comportant les contenus des premier et deuxième mots de la page et le code de correction d'erreur les protégeant, à corriger si nécessaire les contenus des premier et deuxième mots à l'aide du code de correction d'erreur, à remplacer dans l'ancienne donnée le contenu d'au moins un des premier et deuxième mots par la nouvelle donnée utilisateur, à recalculer le code de correction d'erreur pour tenir compte de la nouvelle donnée utilisateur, puis à écrire dans la page la nouvelle donnée et le nouveau code de correction d'erreur.

Brève description des dessins

Ces caractéristiques et leurs avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles :

la figure 1 représente de façon schématique et partielle un exemple d'un mode de réalisation d'un système comportant une mémoire et des moyens permettant d'effectuer des opérations d'écriture dans la mémoire ; la figure 2 représente de façon plus détaillée un exemple de réalisation de la mémoire du système de la figure 1 ; et

la figure 3 représente un autre exemple de réalisation de la mémoire du système de la figure 1.

Description détaillée

Par souci de clarté, de mêmes éléments ont été désignés par de mêmes références aux différentes figures. En outre, seuls les éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et seront détaillés par la suite.

La figure 1 représente de façon schématique et partielle un exemple d'un mode de réalisation d'un système 100 comportant une mémoire 101, par exemple une mémoire résistive, et des moyens permettant d'effectuer des opérations d'écriture dans la mémoire 101.

La mémoire 101 comprend une pluralité de cellules élémentaires (non représentées) réparties en plusieurs portions ou segments Sj_, avec i entier allant de 1 à s et s entier supérieur à 1. Les cellules élémentaires de chaque portion Sj_ sont réparties en une ou plusieurs pages Pi, / avec j entier allant de 1 à p et p entier supérieur ou égal à 1, de plusieurs cellules chacun. Dans cet exemple, une page correspond à la plus grande quantité de mémoire adressable en lecture ou en écriture en un seul cycle mémoire, c'est-à-dire au plus grand groupe de cellules élémentaires qui peut être lu ou écrit en un seul cycle dans la mémoire.

A titre d'exemple illustratif non limitatif, la mémoire 101 est une mémoire de 1 giga-bits, organisée en 512 segments, chaque segment comportant 4096 pages de 64 octets chacune .

Selon un aspect du mode de réalisation de la figure 1, la mémoire 101 a une architecture permettant d'accéder en même temps en lecture à une première page de la mémoire et en écriture à une deuxième page de la mémoire, à condition que les première et deuxième pages appartiennent à des portions Sj_ distinctes de la mémoire. Dans cet exemple, la mémoire 101 comprend un premier port d'accès PTR permettant d'accéder en lecture aux pages de la mémoire, et un deuxième port d'accès PTW permettant d'accéder en écriture aux pages de la mémoire, les ports PTR et PTW permettant d'adresser simultanément, c'est-à- dire lors d'un même cycle mémoire, deux pages Sj_ de portions distinctes de la mémoire. A chaque cycle de fonctionnement de la mémoire 101, il est ainsi possible de lire dans une page d'une portion de la mémoire 101 via le port PTR, et d'écrire dans une page d'une autre portion de la mémoire 101 via le port PTW.

Le système 100 comprend en outre un circuit de contrôle 103 (CTRL) , comportant par exemple un microcontrôleur ou un circuit spécifique utilisant par exemple une machine à états finis. Le circuit 103 est adapté à recevoir des requêtes d'accès à la mémoire provenant d'un utilisateur (USER) de la mémoire, et à répondre à ces requêtes, en accédant pour cela aux pages ?i, de la mémoire via ses ports d'accès PTR et PTW. Le circuit 103 est notamment adapté à effectuer des opérations d'écriture dans des pages de la mémoire, chaque opération d'écriture dans une page ?i, de la mémoire comportant une étape de lecture d'une ancienne donnée contenue dans la page ?i, via le port PTR, suivie d'une étape d'écriture d'une nouvelle donnée dans la page ?i, via le port PTW en tenant compte de l'ancienne donnée.

A titre d'exemple, lors d'une opération d'écriture dans une page Pj_ r j r le circuit 103 commence par lire l'ancienne donnée contenue dans la page Pj_ r j r compare cette ancienne donnée avec la nouvelle donnée fournie par l'utilisateur, puis écrit dans la page ?i, uniquement les bits de la nouvelle donnée qui diffèrent des bits de l'ancienne donnée. Pour cela, à titre d'exemple non limitatif, un OU EXCLUSIF peut être réalisé bit à bit entre l'ancienne donnée et la nouvelle donnée. Pour chaque bit de la page adressée, si le résultat du OU EXCLUSIF est un 1, cela signifie que la valeur que l'on souhaite écrire est différente de la valeur déjà contenue à la même position dans la page. Dans ce cas, l'amplificateur d'écriture de la cellule correspondante est commandé pour écrire la nouvelle valeur dans la cellule. Si au contraire, le résultat du OU EXCLUSIF est un 0, cela signifie que la valeur que l'on souhaite écrire est identique à la valeur déjà contenue à la même position dans la page. Dans ce cas, l'amplificateur d'écriture de la cellule correspondante est bloqué ou désactivé, et l'opération d'écriture n'est pas effectuée. En pratique, la nouvelle donnée fournie par l'utilisateur peut être appliquée sur une entrée de données de la mémoire, et le résultat du OU EXCLUSIF entre l'ancienne donnée et la nouvelle donnée peut être appliqué en même temps sur une entrée de commande des amplificateurs d'écriture de la mémoire. Ceci permet de supprimer des écritures de cellule redondantes et ainsi d'augmenter la durée de vie de la mémoire et/ou de réduire sa consommation électrique, en particulier si la mémoire est une mémoire s 'usant plus lorsqu'elle est écrite que lorsqu'elle est lue, et/ou si la mémoire consomme plus d'énergie lorsqu'elle est écrite que lorsqu'elle est lue.

Un avantage du système 100 de la figure 1 résulte du fait que les étapes de lecture et d'écriture d'une même opération d'écriture sont effectuées via des ports PTR et PTW distincts de la mémoire. Ceci permet, du point de vue de l'utilisateur, de diminuer les temps d'accès aux données de la mémoire par rapport aux systèmes existants. En effet, lorsqu'une opération d'écriture requise par l'utilisateur est réalisée par le circuit de contrôle 103, le circuit 103 peut :

lors d'un premier cycle mémoire, effectuer l'étape de lecture de l'opération d'écriture via le port PTR et effectuer, via le port PTW, une étape d'écriture d'une autre opération, par exemple une étape d'écriture d'une opération d'écriture précédente ; et

lors d'un deuxième cycle mémoire, effectuer l'étape d'écriture de l'opération d'écriture via le port PTW et effectuer, via le port PTR, une étape de lecture d'une autre opération, par exemple une étape de lecture d'une opération d'écriture suivante. Ainsi, bien qu'une opération d'écriture s'effectue en deux cycles mémoire, le système 100 de la figure 1 permet, du point de vue de l'utilisateur, de traiter une opération d'écriture par cycle mémoire, la durée du cycle mémoire étant conditionnée par le plus long des temps de lecture et d'écriture dans la mémoire.

Dans l'exemple de la figure 1, pour gérer les accès utilisateurs consécutifs à une même portion Sj_ de la mémoire 101, le système 100 comprend, en plus de la mémoire 101, une mémoire tampon 105 dans laquelle le circuit de contrôle 103 peut lire et écrire. La mémoire 105 est adaptée à mémoriser une table de p lignes L , avec j entier allant de 1 à p et p entier supérieur ou égal à 1, c'est-à-dire une table comportant un nombre de lignes Lj égal au nombre de pages ?i, dans chaque segment Sj_ de la mémoire 101. Dans cet exemple, chaque ligne Lj de la mémoire tampon 105 comprend un premier sous-ensemble de bits ou champ AS pouvant contenir une adresse d'un segment de la mémoire 101, un deuxième sous-ensemble de bits ou champ DATAI, par exemple de la taille d'une page ?i, de la mémoire 101, pouvant contenir une première donnée lue ou à écrire dans une page de la mémoire 101, un troisième sous-ensemble de bits ou champ DATA2, par exemple de la taille d'une page ?i, de la mémoire 101, pouvant contenir une deuxième donnée lue ou à écrire dans une page de la mémoire 101, et un bit ou champ de validité V indiquant si les champs AS, DATAI et DATA2 de la ligne P'j contiennent ou non des valeurs valides.

La mémoire 105 peut être une mémoire de technologie différente de la mémoire 101, par exemple une mémoire présentant des temps d'accès en lecture et en écriture plus courts que la mémoire 101, par exemple une mémoire SRAM (de l'anglais "Static Random Access Memory" - mémoire statique à accès aléatoire) .

A titre d'exemple, la mémoire 105 et le circuit de contrôle 103 d'une part, et la mémoire 101 d'autre part, peuvent être cadencés par des horloges de fréquences différentes. Dans l'exemple représenté, la mémoire 105 et le circuit de contrôle 103 reçoivent un premier signal d'horloge clkl d'une première fréquence, et la mémoire 101 reçoit un deuxième signal d'horloge clk2 de fréquence inférieure au premier signal clkl, le signal clk2 étant généré par le circuit de contrôle 103 par division fréquentielle du signal clkl. A titre de variante, le signal d'horloge rapide clkl peut être généré par multiplication fréquentielle du signal d'horloge lent clk2 utilisé pour cadencer la mémoire 101, par exemple à l'aide d'une boucle à verrouillage de phase.

Un exemple (non limitatif) de fonctionnement du système 100 de la figure 1 va maintenant être décrit.

A l'initialisation du système 100, tous les champs de validité V de la mémoire tampon 105 sont initialisés à un état invalide .

Lorsqu'une opération d'écriture dans une page ?i,j de la mémoire 101 est requise par l'utilisateur, le circuit de contrôle 103 consulte la table de lignes Lj de la mémoire tampon 105, à l'adresse correspondant à l'adresse page de la requête utilisateur, c'est-à-dire qu'il consulte la ligne Lj de même rang j dans la table de la mémoire 105 que la page ?i,j dans le segment Sj_. A titre de variante, les adresses ligne et les adresses page ne sont pas identiques, mais il existe en tout état de cause une transformation bijective entre les adresses ligne et les adresses page, c'est-à-dire que chaque adresse ligne est associée à une et une seule adresse page, et réciproquement .

Si le champ de validité V de la ligne Lj est à un état valide, le circuit de contrôle 103 vérifie si le champ d'adresse de segment AS de la ligne Lj contient la même adresse de segment que la requête utilisateur.

Si le champ de validité V de la ligne Lj est à un état valide et si le champ AS de la ligne Lj contient une adresse de segment différente de celle de la requête utilisateur, le circuit de contrôle 103 détermine, en tenant compte des données contenues dans les champs DATAI (ancienne donnée) et DATA2 (nouvelle donnée) de la ligne L , la donnée qu'il convient d'écrire dans la page ?i ' , j de la mémoire 101 dont l'adresse est définie par l'adresse segment contenue dans le champ AS de la donnée Lj et par l'adresse page de la requête utilisateur, puis écrit cette donnée dans la page ?i ' , j via le port PTW (i' étant le rang du segment dont l'adresse est contenue dans le champ AS de la ligne L ) .

Dans le cas où le système 100 met en oeuvre le mécanisme de réduction d'usure susmentionné, la donnée écrite dans la page ?l ' , j est la donnée contenue dans le champ DATA2 sans modification, mais seuls les bits de cette donnée qui diffèrent de la donnée contenue dans le champ DATAI sont effectivement écrits. Pour cela, le signal de commande à appliquer aux amplificateurs d'écriture de la mémoire 101 est calculé en exécutant un OU EXCLUSIF bit à bit entre les données contenues dans les champs DATAI et DATA2. Le résultat du OU EXCLUSIF est envoyé à la mémoire 101 en même temps que la donnée DATA2.

Parallèlement à cette étape d'écriture, le circuit de contrôle 103 lit la donnée contenue dans la page ?i,j de la mémoire 101, écrit cette donnée dans le champ DATAI de la ligne L , écrit la nouvelle donnée utilisateur (contenue dans la requête utilisateur) dans le champ DATA2 de la ligne L , et écrit l'adresse segment de la requête utilisateur dans le champ AS de la ligne L .

Si le champ de validité V de la ligne Lj est à un état valide et si le champ AS de la ligne Lj contient la même adresse de segment que la requête utilisateur, le circuit de contrôle

103 écrit directement dans le champ DATA2 de la ligne Lj , la nouvelle donnée utilisateur à écrire dans la page Pi,j- Dans ce cas, le traitement de l'opération d'écriture ne comprend pas d'étape de lecture d'une ancienne donnée dans la page ?i,j de la mémoire 101, cette ancienne donnée étant déjà contenue dans la champ DATAI de la ligne Lj .

Si le champ de validité V de la ligne Lj est à un état invalide, le circuit de contrôle 103 lit la donnée contenue dans la page ?i,j de la mémoire 101, écrit cette donnée dans le champ DATAI de la ligne L , écrit la nouvelle donnée utilisateur dans le champ DATA2 de la ligne L , écrit l'adresse segment de la requête utilisateur dans le champ AS de la ligne L , et met le champ de validité V de la donnée de la ligne Lj à l'état valide.

On notera que dans cet exemple, l'étape de détermination de la donnée à écrire dans une page ?i,j de la mémoire, en tenant compte de l'ancienne donnée contenue dans cette page et de la nouvelle donnée fournie par l'utilisateur, est effectuée juste avant l'étape d'écriture de la nouvelle donnée dans la page Pi,j- A titre de variante, cette étape peut être réalisée plus en amont, juste après la lecture de l'ancienne donnée contenue dans la page Pi,j- En particulier, dans l'exemple de fonctionnement susmentionné, on peut, au lieu d'écrire la nouvelle donnée utilisateur dans le champ DATA2 de la ligne Lj (après avoir lu l'ancienne donnée contenue dans la page Pj_,j), combiner l'ancienne donnée et la nouvelle donnée et écrire directement le résultat de cette combinaison dans le champ DATA2 de la ligne Lj , ou écrire la nouvelle donnée et le résultat de la combinaison (par exemple le résultat du OU EXCLUSIF entre l'ancienne et la nouvelle donnée) dans le champ DATA2 dans le cas où le mécanisme de réduction d'usure susmentionné est mis en oeuvre.

On notera que dans ce cas, dans chaque ligne Lj de la mémoire tampon 105, le champ DATA2 peut avoir la taille de deux pages ?i,j de la mémoire 101, de façon à pouvoir contenir à la fois une nouvelle donnée utilisateur à écrire dans une page de la mémoire, et le résultat de la combinaison entre cette nouvelle donnée et une ancienne donnée, par exemple le résultat du OU EXCLUSIF entre cette nouvelle donnée et une ancienne donnée. Cette variante de réalisation est notamment avantageuse lorsque les étapes d'écriture dans la mémoire 101 sont plus longues que les étapes de lecture dans la mémoire 101.

Lorsqu'une opération de lecture dans une page ?i,j de la mémoire 101 est requise par l'utilisateur, le circuit de contrôle 103 consulte la table de lignes Lj de la mémoire tampon 105, à l'adresse page de la requête utilisateur, c'est-à-dire qu'il consulte la ligne Lj de même rang j dans la table de la mémoire 105 que la page ?i, dans le segment Sj_.

Si le champ de validité V de la ligne Lj est à un état valide, et si le champ d'adresse de segment AS de la ligne Lj contient la même adresse de segment que la requête utilisateur, cela signifie que la donnée visée par l'utilisateur se trouve dans la ligne Lj de la mémoire tampon. Le circuit de contrôle 103 détermine alors, en tenant compte le cas échéant des données contenues dans les champs DATAI et DATA2 de la ligne Lj , la donnée à renvoyer à l'utilisateur et transmet cette donnée à l'utilisateur. Dans l'exemple susmentionné d'application à un mécanisme de réduction de l'usure et/ou de la consommation de la mémoire, la donnée renvoyée à l'utilisateur par le circuit 103 peut être directement la donnée contenue dans le champ DATA2 de la ligne Lj .

Si le champ de validité V de la ligne Lj est à un état valide, et si le champ d'adresse de segment AS de la ligne Lj ne contient pas la même adresse de segment que la requête utilisateur, ou si le champ de validité V de la ligne Lj est à un état invalide, le circuit de contrôle 103 lit la donnée visée directement dans la mémoire 101 et n'écrit pas dans la mémoire tampon 105.

A titre de variante, on peut également, à chaque opération de lecture, stocker la donnée lue dans la mémoire tampon 105 afin que cette donnée puisse ultérieurement être lue une nouvelle fois plus rapidement et avec une plus faible consommation d'énergie dans le cas où les pages de la mémoire sont, statistiquement, appelées à être lues plus souvent qu'elles ne sont écrites.

Pour cela, un deuxième bit ou champ de validité V (non représenté) est introduit dans chaque ligne Lj de la mémoire tampon 105, qui est initialement à un état invalide et qui est mis à un état valide lorsqu'une nouvelle donnée à écrire provenant d'une requête utilisateur est écrite dans le champ DATA2 de la ligne L .

Lorsqu'une opération de lecture dans une page ?i,j de la mémoire 101 est requise par l'utilisateur, le circuit de contrôle 103 consulte la table de lignes Lj de la mémoire tampon 105, à l'adresse page de la requête utilisateur.

Si le champ de validité V de la ligne Lj est à l'état valide, et si le champ d'adresse de segment AS de la ligne Lj contient la même adresse de segment que la requête utilisateur, le circuit de contrôle 103 vérifie si le champ de validité V de la ligne Lj est à l'état valide.

Si le champ V de la ligne Lj est à l'état valide, le circuit de contrôle 103 procède comme précédemment, c'est-à-dire qu'il détermine, en tenant compte des données contenues dans les champs DATAI et DATA2 de la ligne Lj , la donnée à renvoyer à l'utilisateur et fournit cette donnée à l'utilisateur.

Si le champ V de la ligne Lj est à l'état invalide, le circuit de contrôle 103 fournit directement à l'utilisateur la donnée contenue dans le champ DATAI de la ligne Lj , sans tenir compte de la donnée contenue dans le champ DATA2 de la ligne Lj .

Si le champ de validité V de la ligne Lj est à l'état valide, et si le champ d'adresse de segment AS de la ligne Lj contient une adresse de segment différente de l'adresse de segment de la requête utilisateur, le circuit de contrôle 103 vérifie si le champ de validité V de la ligne Lj est à l'état valide .

Si le champ V de la ligne Lj est à l'état valide, cela signifie qu'une étape d'écriture dans la mémoire 101 est en attente. Le circuit de contrôle 103 détermine alors, en tenant compte des données contenues dans les champs DATAI et DATA2 de la ligne Lj , la donnée à écrire dans la page ?i ' , j de la mémoire 101 dont l'adresse est définie par l'adresse segment contenue dans le champ AS de la ligne Lj et par l'adresse page de la requête utilisateur, puis écrit cette donnée dans la page Pj_',j via le port PTW. Parallèlement à cette étape d'écriture, le circuit de contrôle 103 lit la donnée contenue dans la page ?i,j de la mémoire 101, écrit cette donnée dans le champ DATAI de la ligne L , fournit cette donnée à l'utilisateur, et met le champ

V de la ligne Lj à l'état invalide.

Si le champ V de la ligne Lj est à l'état invalide, le circuit de contrôle 103 lit la donnée contenue dans la page ?i,j de la mémoire 101, écrit cette donnée dans le champ DATAI de la ligne Lj , fournit cette donnée à l'utilisateur, et laisse le champ V de la ligne Lj à l'état invalide.

Si le champ V de la ligne Lj est à l'état invalide, le circuit de contrôle 103 lit la donnée contenue dans la page ?i,j de la mémoire 101, écrit cette donnée dans le champ DATAI de la ligne Lj , fournit cette donnée à l'utilisateur, et met le champ

V de la ligne Lj à l'état valide et le champ V de la ligne Lj à l'état invalide.

Lorsqu'une opération d'écriture dans une page ?i,j de la mémoire 101 est requise par l'utilisateur, le circuit de contrôle 103 effectue les opérations décrites dans l'exemple précédent et met en outre le bit V de la ligne Lj à l'état valide .

Dans le cas où la mémoire tampon 105 est une mémoire volatile et où la mémoire principale 101 est une mémoire non volatile, des mécanismes peuvent être prévus pour éviter, à la mise hors tension du système, une éventuelle perte de données qui seraient enregistrées dans la mémoire tampon 105 mais pas encore écrites dans la mémoire principale 101.

A titre d'exemple, avant une coupure d'alimentation, le système utilisateur peut envoyer une instruction d'arrêt au circuit de contrôle 103. Le circuit de contrôle 103 peut alors parcourir toutes les lignes de la mémoire tampon 105 et effectuer les opérations d'écriture dans la mémoire 101 qui n'ont pas encore été effectuées. Dans ce cas, tous les champs de validité V ou V et V de la mémoire tampon peuvent être initialisés à l'état invalide à chaque mise sous tension du système .

A titre de variante, la mémoire tampon 105 peut être couplée à une mémoire non volatile supplémentaire, non représentée, dans laquelle sont transférées toutes les données contenues dans la mémoire tampon 105 avant une mise hors tension du système. Cette mémoire non volatile supplémentaire peut être incluse ou non dans la mémoire principale 101. Lorsque le système est remis sous-tension, les données de la mémoire non volatile supplémentaire peuvent être retransférées dans la mémoire tampon 105. A titre d'exemple, chaque cellule de stockage de la mémoire tampon 105 peut être couplée à un élément de stockage non volatil, de façon que le contenu de la mémoire 105 puisse être intégralement transféré dans les éléments de stockage non volatils en un seul cycle avant une mise hors- tension du système.

Les champs de validité V ou V et V de la mémoire tampon 105 sont alors par exemple initialisés à l'état invalide uniquement à la première mise sous tension du système.

On notera que les modes de réalisation décrits ne se limitent pas à l'exemple particulier susmentionné d'utilisation du système de la figure 1 pour la mise en oeuvre d'un mécanisme de réduction de l'usure et/ou de la consommation de la mémoire 101, dans lequel chaque opération d'écriture d'une nouvelle donnée dans la mémoire 101 comprend une étape de lecture d'une ancienne donnée dans la mémoire, suivie d'une étape d'écriture à la même adresse des seules cellules de la mémoire dont l'état doit être modifié pour enregistrer la nouvelle donnée.

Plus généralement, le système 100 de la figure 1 est compatible avec toute application dans laquelle une opération d'écriture d'une nouvelle donnée dans une mémoire, résistive ou d'un autre type, par exemple une mémoire capacitive, comprend une étape de lecture d'une ancienne donnée dans la mémoire, suivie d'une étape d'écriture de la nouvelle donnée, à la même adresse de la mémoire, en tenant compte de l'ancienne donnée.

A titre d'exemple d'application, on considère le cas où, dans chaque page ?i, de la mémoire 101, des cellules élémentaires de la page sont réparties en plusieurs mots Mj^ ^ (avec k entier allant de 1 à m et m entier supérieur à 1) de plusieurs cellules chacun, par exemple des mots de 32 bits, et d'autres cellules élémentaires de la mémoire sont affectées au stockage de codes de correction d'erreur, par exemple des codes de Hamming, permettant de protéger les données contenues dans les mots de la page contre une éventuelle défaillance d'une cellule de la page, par exemple due à des particules alpha. Dans cet exemple, un même code correcteur d'erreur est affecté à la protection de plusieurs mots de la page (deux ou plus) . Par la suite, par souci de simplification, on considère le cas où chaque page ?i, contient un seul code correcteur d'erreur protégeant l'ensemble des mots de la page. L'homme du métier saura toutefois adapter le fonctionnement décrit au cas où une page contient plusieurs groupes distincts d'au moins deux mots chacun, et un code correcteur d'erreur par groupe.

Lorsque, lors d'une opération d'écriture d'une nouvelle donnée dans une page, l'utilisateur souhaite modifier uniquement une partie des mots de la page, par exemple un seul mot de la page, on pourrait envisager d'écrire la nouvelle donnée utilisateur dans ce mot de la page en une seule étape d'écriture, en désactivant les amplificateurs d'écriture des autres cellules de la page pour ne pas affecter leur contenu.

Toutefois, cette solution ne permet pas de mettre à jour le code d'erreur de la page pour tenir compte de la nouvelle donnée écrite .

Ainsi, lors d'une opération d'écriture, on peut prévoir de lire l'ancien contenu de la page, de corriger, le cas échéant ce contenu à l'aide du code correcteur d'erreur de la page, de modifier ce contenu en y insérant la nouvelle donnée utilisateur et en modifiant le code correcteur pour tenir compte de la nouvelle donnée utilisateur, puis d'écrire le nouveau contenu dans la page.

Chaque opération d'écriture d'une nouvelle donnée dans une page comprend donc une étape de lecture d'une ancienne donnée dans la page, suivie d'une étape d'écriture de la nouvelle donnée dans la page en tenant compte de l'ancienne donnée .

On comprend donc que l'utilisation du système 100 de la figure 1 pour réaliser de telles opérations d'écritures permet avantageusement, du point de vue de l'utilisateur, de diminuer les temps d'accès aux données contenues dans la mémoire.

La figure 2 représente de façon schématique et partielle un exemple de réalisation d'une mémoire 101 compatible avec le système de la figure 1. Dans cet exemple, la mémoire 101 comporte une pluralité de portions de mémoire 201j_, avec i entier allant de 1 à s et s entier supérieur à 1, de plusieurs pages (non visibles sur la figure 2) chacune. Dans cet exemple, chaque portion 201j_ de la mémoire 101 correspond à un segment Sj_ de la mémoire.

La mémoire 101 comporte un premier port d'accès PTR permettant d'accéder en lecture aux pages de la mémoire 101, et un deuxième port d'accès PTW permettant d'accéder en écriture aux pages de la mémoire 101, les ports PTR et PTW permettant d'accéder simultanément à deux pages quelconques de la mémoire 101, à condition que ces pages appartiennent à des portions 201j_ distinctes de la mémoire.

Par port d'accès, on entend ici un ensemble de bornes d'entrée et/ou sortie adapté à recevoir un signal d'adresse, à recevoir un signal de donnée d'entrée, et/ou à fournir un signal de donnée de sortie. Un port d'accès peut notamment comporter une entrée d'adresse sur plusieurs bits, adaptée à recevoir un signal d'adresse, une entrée de donnée sur plusieurs bits, adaptée à recevoir un signal de donnée à écrire dans la mémoire, et/ou une sortie de donnée sur plusieurs bits, adaptée à fournir un signal de donnée lue dans la mémoire. L'entrée de donnée et la sortie de donnée peuvent éventuellement être confondues . Dans l'exemple de la figure 2, le port d'accès PTR de la mémoire 101 comporte une entrée d'adresse adR adaptée à recevoir une adresse d'une page à lire dans la mémoire, et une sortie de donnée dR adaptée à transmettre le contenu d'une page lue dans la mémoire, et le port d'accès PTW comporte une entrée d'adresse adW adaptée à recevoir une adresse d'une page à écrire dans la mémoire, et une entrée de donnée dW adaptée à recevoir un contenu à écrire dans une page de la mémoire. Dans le cas où un mécanisme de réduction d'usure du type susmentionné est mis en oeuvre, le port d'accès en écriture PTW peut en outre comporter une entrée cmd¾ (non représentée) de commande des amplificateurs d'écriture de la mémoire, par exemple de la même taille que l'entrée de donnée dW, cette entrée de commande étant adaptée à recevoir une donnée de commande des amplificateurs d'écriture, par exemple le résultat du OU EXCLUSIF entre une nouvelle donnée utilisateur à écrire dans la mémoire via l'entrée dW et une ancienne donnée lue à la même adresse dans la mémoire.

Dans cet exemple, chaque portion de mémoire 201j_ comprend une entrée CS adaptée à recevoir un signal d' activation/désactivation de la portion 201 j _, une entrée R/W adaptée à recevoir un signal de commande en lecture ou en écriture de la portion 201j_, une entrée CK adaptée à recevoir un signal d'horloge, une entrée A adaptée à recevoir une adresse d'une page de la portion de mémoire 201j_, une entrée dj_ n adaptée à recevoir une donnée (de la taille d'une page) à écrire dans la page d'adresse A de la portion de mémoire 201j_, et une sortie d ou t adaptée à fournir une donnée (de la taille d'une page) lue dans la page d'adresse A de la portion de mémoire 201j_.

Dans cet exemple, chaque portion 201j_ de la mémoire 101 a son entrée d'activation CS reliée à la sortie d'une porte OU 203j_ à deux entrées a et b, son entrée de commande de mode de fonctionnement R/W reliée à l'entrée b de la porte OU 203j_, et son entrée de donnée dj_ n reliée à l'entrée de donnée dW du port d'accès PTW. Dans le cas où un mécanisme de réduction d'usure du type susmentionné est mis en oeuvre, chaque portion 201j_ de la mémoire peut en outre comporter une entrée cmdj_ n (non représentée) de commande de ses amplificateurs d'écriture, reliée à l'entrée de commande cmd¾ (non représentée) du port PTW.

La mémoire 101 comprend un circuit de décodage d'adresse de lecture DECR, comprenant une entrée reliée à l'entrée d'adresse adR du port d'accès PTR de la mémoire et s sorties binaires reliées respectivement aux entrées a des portes OU 203 ] _ à 203 s . La mémoire 101 comprend en outre un circuit de décodage d'adresse d'écriture DECW, comprenant une entrée reliée à l'entrée d'adresse adW du port d'accès PTW de la mémoire et s sorties binaires reliées respectivement aux entrées b des portes OU 203 ] _ à 203 s . Le décodeur DECR est adapté à déterminer dans quelle portion 201j_ de la mémoire 101 se trouve le mot adressé par l'entrée d'adresse adR, et à appliquer un signal d'activation sur l'entrée a de la porte OU 203j_ reliée à cette portion de mémoire. Le décodeur DECW est adapté à déterminer dans quelle portion 201j_ de la mémoire 101 se trouve le mot adressé par l'entrée d'adresse adW, et à appliquer un signal d'activation sur l'entrée b de la porte OU 203j_ reliée à cette portion de mémoire. Ainsi, les décodeurs DECR et DECW peuvent activer simultanément deux portions de mémoire 201j_ distinctes. En pratique, parmi les bits d'adresse appliqués sur les entrées adR et adW, on peut se contenter de transmettre aux décodeurs DECR et DECW uniquement les bits indiquant les numéros des portions de mémoire dans lesquelles se trouvent les pages adressées .

Dans cet exemple, chaque portion 201j_ de la mémoire 101 a son entrée d'adressage A reliée à la sortie d'un multiplexeur 205j_ de deux entrées vers une sortie. Chaque multiplexeur 205j_ a une première entrée reliée à l'entrée d'adresse adR du port PTR et une deuxième entrée reliée à l'entrée d'adresse adW du port PTW. Dans cet exemple, chaque multiplexeur 205 j _ a de plus une entrée de sélection reliée à l'entrée b de la porte OU 203j_ reliée à la portion de mémoire 201j_. Le fonctionnement des multiplexeurs 205j_ est tel que : lorsqu'une portion de mémoire 201j_ est activée par le décodeur DECR, l'adresse fournie par le multiplexeur 205j_ sur l'entrée A de la portion de mémoire 201j_ est celle transmise par l'entrée d'adresse adR ; et lorsqu'une portion de mémoire 201j_ est activée par le décodeur DECW, l'adresse fournie par le multiplexeur 205 j _ sur l'entrée A de la portion de mémoire 201 j _ est celle transmise par l'entrée d'adresse adW. En pratique, parmi les bits d'adresse transmis par les entrée d'adresse adR et adW, on peut se contenter de transmettre aux multiplexeurs 205j_ uniquement les bits définissant la position de la page adressée à l'intérieur de la portion de mémoire 201j_ dans laquelle elle se trouve.

Dans cet exemple, la mémoire 101 comprend en outre un multiplexeur MUX de s entrées vers une sortie, dont la sortie est reliée à la sortie de donnée dR du port PTR. Les s entrées du multiplexeur MUX sont reliées respectivement aux s sorties de donnée d ou t des s portions 201j_ de la mémoire 101. Dans cet exemple, le multiplexeur MUX a une entrée de commande ou de sélection reliée à l'entrée d'adresse adR du port d'accès PTR de la mémoire. Le fonctionnement du multiplexeur MUX est tel que, lorsqu'une portion de mémoire 201j_ est activée par le décodeur DECR, la donnée fournie par le multiplexeur MUX sur la sortie de donnée dR est celle fournie par la portion de mémoire 201j_ sur sa sortie d ou t- En pratique, parmi les bits d'adresse appliqués sur l'entrée d'adresse adR, on peut se contenter de transmettre au multiplexeur MUX uniquement les bits indiquant les numéros des portions de mémoire dans lesquelles se trouvent les pages adressées . Dans cet exemple, les entrées CK des différentes portions 201j_ de la mémoire 101 sont reliées à un même noeud clk d'application d'un signal d'horloge.

A titre d'exemple, les différentes portions 201j_ de la mémoire 101, et les éléments 203-^, 205-^, DECR, DECW et MUX peuvent être intégrés dans une même puce semiconductrice.

Un avantage de la mémoire 101 est qu'elle permet des accès simultanés en lecture et en écriture à des mots distincts de la mémoire, tout en présentant un encombrement à peine supérieur à celui d'une mémoire simple port.

La figure 3 représente de façon schématique et partielle un autre exemple de réalisation d'une mémoire 101 compatible avec le système de la figure 1. La mémoire 101 de la figure 3 comprend de nombreux éléments communs avec la mémoire 101 de la figure 2. Ces éléments ne seront pas à nouveau décrits en détail ci-après. Dans la suite, seules les différences entre les mémoires des figures 2 et 3 seront mises en exergue.

La mémoire 101 de la figure 3 comprend, comme dans l'exemple de la figure 2, un premier port d'accès en lecture PTR comportant une entrée adR d'adresse d'une page à lire, et une sortie dR de donnée lue dans une page, et un second port d'accès PTW comportant une entrée adW d'adresse d'une page à écrire, une entrée dW de donnée à écrire dans une page, et, le cas échéant, une entrée cmd¾ (non représenté) de commande des amplificateurs d'écriture de la mémoire.

De plus, la mémoire 101 de la figure 3 comprend, comme dans l'exemple de la figure 2, une pluralité de portions de mémoire 201j_, avec i entier allant de 1 à s et s entier supérieur à 1, identiques ou similaires à celles de la mémoire de la figure 2.

Dans la mémoire 101 de la figure 3, les mécanismes de sélection des portions 201j_, via les décodeurs DECR et DECW et les portes OU 203j_, les mécanismes d'adressage de page dans les portions 201j_, via les multiplexeurs 205j_, et les mécanismes de fourniture de données d'entrée aux portions 201j_, via l'entrée d'écriture dW, sont identiques ou similaires à ceux de la mémoire de la figure 2, et ne seront pas décrits à nouveau.

La mémoire 101 de la figure 3 diffère de la mémoire de la figure 2 principalement par les circuits utilisés pour multiplexer les sorties de donnée d ou t des différentes portions de mémoire 201j_, vers la sortie de donnée dR du port PTR. Dans la mémoire 101 de la figure 3, chaque portion 201j_ de la mémoire a sa sortie d ou t reliée, par un interrupteur Slj_, à un bus de donnée de sortie 301 relié à la sortie de donnée dR de la mémoire. Dans cet exemple, chaque interrupteur Slj_ a un noeud de commande connecté à l'entrée a de la porte OU 203j_ reliée à la portion de mémoire 201j_. Lorsqu'une portion de mémoire 201j_ est activée en lecture par le décodeur DECR, la sortie de donnée d ou t de la portion de mémoire 201j_ est reliée à la sortie de donnée dR de la mémoire par fermeture de l'interrupteur Slj_.

Ainsi, dans la mémoire 101 de la figure 3, le multiplexeur MUX de la figure 2 est remplacé par un circuit de multiplexage distribué, réparti au niveau des différentes portions de mémoire 201j_. Les interrupteurs Slj_ sont par exemple réalisés par des transistors MOS. Chaque interrupteur Slj_ est par exemple disposé au voisinage de la portion de mémoire 201j_ de même rang. De plus, le bus de donnée de sortie 301 passe de préférence à proximité des différentes portions de mémoire 201j_.

Un avantage de la variante de réalisation de la figure 3 est qu'elle permet, par rapport à l'exemple de la figure 2, de réduire le nombre de câbles ou pistes reliant les sorties d ou t des différentes portions de mémoire 201j_ à la sortie de donnée dR de la mémoire (et donc de réduire la surface et le coût de la mémoire) .

Des modes de réalisation particuliers ont été décrits.

Diverses variantes et modifications apparaîtront à l'homme de l'art.

En particulier, les modes de réalisation décrits ne se limitent pas aux exemples particuliers décrits en relation avec les figures 2 et 3 de mémoires permettant des accès simultanés en lecture et en écriture à des pages distinctes de la mémoire. Les modes de réalisation décrits sont notamment compatibles avec une mémoire double port permettant des accès simultanés en lecture et en écriture à deux pages quelconques de la mémoire (ce qui correspond au cas où chaque segment de la mémoire comprend une seule page) . Dans ce cas, la réalisation du système 100 de la figure 1 se trouve simplifiée, notamment du fait que la mémoire tampon 105 de la figure 1 peut être réduite à un registre d'une seule ligne L ] _ . Dans ce cas, le champ d'adresse segment AS de la ligne L ] _ peut contenir la totalité de l'adresse page de la requête utilisateur.

De plus, les modes de réalisation décrits ci-dessus ne se limitent pas aux exemples de moyens et mécanismes décrits en relation avec la figure 1 pour gérer les accès utilisateurs consécutifs à un même segment Sj_ de la mémoire.