FR3129763A1 - Systeme sur puce comportant une memoire non volatile - Google Patents
Systeme sur puce comportant une memoire non volatile Download PDFInfo
- Publication number
- FR3129763A1 FR3129763A1 FR2112807A FR2112807A FR3129763A1 FR 3129763 A1 FR3129763 A1 FR 3129763A1 FR 2112807 A FR2112807 A FR 2112807A FR 2112807 A FR2112807 A FR 2112807A FR 3129763 A1 FR3129763 A1 FR 3129763A1
- Authority
- FR
- France
- Prior art keywords
- memory
- bank
- logical
- sectors
- compiled code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 196
- 238000000034 method Methods 0.000 claims description 14
- 230000008520 organization Effects 0.000 description 9
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
- G11C16/105—Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1012—Design facilitation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
Selon un aspect, il est proposé un système sur puce comprenant :- une mémoire (MEM) comportant une ou plusieurs banques physiques divisées en une succession de secteurs (Sn S1, …, S15), chaque secteur présentant une taille égale à la plus petite taille effaçable de la mémoire, - une interface de mémoire (MI) adaptée pour contrôler les accès à ladite mémoire (MEM) et comprenant au moins un registre de configuration (REG) adapté pour pouvoir définir au moins une banque logique de mémoire (F, A, B) en assignant les secteurs (Sn, S1, …, S15) de la mémoire à ladite au moins une banque logique, chaque secteur de la mémoire étant assigné à une seule banque logique, et- un processeur (PROC) connecté à ladite interface de mémoire,et adapté pour configurer ledit registre de configuration. Figure pour l’abrégé : Fig 1
Description
Des modes de réalisation et de mise en œuvre concernent les mémoires non volatiles, et plus particulièrement la gestion de telles mémoires.
Un système sur puce est un circuit intégré qui peut comprendre une mémoire non volatile. Cette mémoire peut être utilisée pour stocker un code compilé d’une application pouvant être exécuté par un processeur de ce système sur puce.
La mémoire non volatile du système sur puce peut être organisée en une ou plusieurs banques de mémoire (en anglais « memory bank »). Une banque de mémoire est une zone de la mémoire qui est autonome en adressage, en contrôle et en alimentation. Généralement, une mémoire non volatile est composée d’une ou deux banques. L’organisation de la mémoire est définie lors de la conception du système sur puce. Les banques de mémoire sont donc définies physiquement dans le système sur puce. On désignera dans la suite par banques physiques, les banques de mémoire qui sont définies physiquement dans le système sur puce.
Chaque banque physique est divisée en secteurs. Ces secteurs correspondent à une unité minimale effaçable de la mémoire. En effet, un effacement dans la mémoire ne peut pas être effectué par bit mais est effectué par secteur du fait de contraintes physiques de la mémoire.
Les secteurs d’une mémoire qui sont destinés à contenir au moins un code compilé ont généralement une même taille, et leur nombre dans une banque physique est une puissance de deux.
L’application stockée est compilée pour fonctionner à partir d’une adresse de démarrage (appelée également « adresse de boot ») dans la mémoire. Au démarrage d’une application enregistrée en mémoire, le processeur cherche le code compilé de l’application à exécuter à l’adresse de démarrage. S’il n’y a pas de code exécutable à cette adresse, le processeur se bloque et le système sur puce devient généralement inutilisable.
En outre, il peut être important de préserver une partie de la mémoire à un adresse fixe de tout effacement pour garantir une racine de confiance (en anglais « root of trust ») et pouvoir certifier de l’origine et de l’authenticité de chaque code installé.
Par ailleurs, il est avantageux d’avoir une mémoire configurée pour permettre la mise à jour d’un code compilé d’une application par une nouvelle version de ce code sans avoir à interrompre l’exécution de l’application. En outre, il est important que le système sur puce puisse reprendre une mise à jour du code compilé de l’application après un redémarrage du système sur puce suite à une interruption de son alimentation lors de la mise à jour.
Néanmoins, l’organisation des banques physiques de mémoire définies lors de la conception de la mémoire ne permet pas toujours de répondre à l’ensemble de ces points. En outre, l’organisation des banques physiques n’est pas toujours adaptée aux besoins d’un utilisateur.
Il existe donc un besoin de proposer une solution permettant de simplifier la gestion d’une mémoire, et permettant de répondre aux différents points susmentionnés.
Selon un aspect, il est proposé un système sur puce comprenant :
- une mémoire divisée en une succession de secteurs, chaque secteur présentant une taille égale à la plus petite taille effaçable de la mémoire, les secteurs étant associés à au moins une banque physique de mémoire,
- une interface de mémoire adaptée pour contrôler les accès à ladite mémoire et comprenant au moins un registre de configuration adapté pour pouvoir définir au moins une banque logique de mémoire en assignant les secteurs de la mémoire à ladite au moins une banque logique, chaque secteur de la mémoire étant assigné à une seule banque logique, et
- un processeur connecté à ladite interface de mémoire et adapté pour configurer ledit registre de configuration.
- une mémoire divisée en une succession de secteurs, chaque secteur présentant une taille égale à la plus petite taille effaçable de la mémoire, les secteurs étant associés à au moins une banque physique de mémoire,
- une interface de mémoire adaptée pour contrôler les accès à ladite mémoire et comprenant au moins un registre de configuration adapté pour pouvoir définir au moins une banque logique de mémoire en assignant les secteurs de la mémoire à ladite au moins une banque logique, chaque secteur de la mémoire étant assigné à une seule banque logique, et
- un processeur connecté à ladite interface de mémoire et adapté pour configurer ledit registre de configuration.
Un tel système sur puce permet de configurer des banques logiques (c’est-à-dire des banques virtuelles) pour pouvoir s’abstraire de la configuration des banques physiques définie lors de la conception de la mémoire. Ainsi, le stockage du code compilé de l’application peut se faire indépendamment de l’organisation des banques physiques de la mémoire. En particulier, le code compilé peut être enregistré dans les secteurs assignés à une banque logique de mémoire. Chaque banque logique est accessible à une adresse fixe. Le code de l’application peut ainsi être développé puis compilé sans avoir à prendre en compte l’organisation des banques physiques de mémoire. Un utilisateur du système sur puce bénéficie donc de la totalité de la mémoire.
De préférence, les secteurs de mémoire assignés à une même banque sont des secteurs successifs. Cela permet de simplifier la gestion de la mémoire.
Dans un mode de réalisation ledit au moins un registre de configuration peut également être adapté pour définir une seule banque logique de mémoire, l’ensemble des secteurs de la mémoire étant alors assigné à cette banque logique.
En particulier, ledit au moins un registre de configuration peut également être adapté pour définir une unique banque logique de mémoire servant à stocker un code compilé servant de racine de confiance. Un tel code compilé peut être utilisé pour démarrer une application. En variante, ledit au moins un registre de configuration peut également être adapté pour définir une unique banque logique de mémoire servant à stocker un code compilé d’une application.
Ledit au moins un registre de configuration peut également être adapté pour définir plusieurs banques logiques de mémoire, de sorte que l’interface de mémoire définit lesdites banques logiques à des adresses différentes.
Par exemple, ledit au moins un registre de configuration peut être adapté pour définir une première banque logique servant à stocker un code compilé servant de racine de confiance et d’une deuxième banque logique servant à stocker un code compilé d’une application.
Ledit au moins un registre de configuration peut également être adapté pour définir une première banque logique servant à stocker un code compilé d’une application et d’une deuxième banque logique servant à stocker une version mise à jour du code compilé de l’application, ces deux banques logiques ayant un même nombre de secteurs de mémoire qui leur sont assignés, et pouvant être interchangées. La définition de deux banques logiques permet de faciliter une mise à jour d’une application enregistrée dans la mémoire sans nécessiter de solution logicielle complexe et de manière indépendante de l’organisation des banques physiques de la mémoire.
Ledit au moins un registre de configuration peut également être adapté pour définir une première banque logique servant à stocker un code compilé servant de racine de confiance, d’une deuxième banque logique servant à stocker un code compilé d’une application et d’une troisième banque logique servant à stocker une version mise à jour du code compilé de l’application, la deuxième banque logique et la troisième banque logique ayant un même nombre de secteurs de mémoire qui leur sont assignés, et pouvant être interchangées.
Dans un mode de réalisation avantageux, ledit au moins un registre de configuration peut également être configuré pour verrouiller la configuration définissant ladite au moins une banque logique.
Selon un autre aspect, il est proposé un procédé de gestion d’une mémoire, la mémoire comportant une ou plusieurs banques physiques divisées en une succession de secteurs, chaque secteur présentant une taille égale à la plus petite taille effaçable de la mémoire, les secteurs étant associés à au moins une banque physique de mémoire,
le procédé comprenant une configuration de la mémoire permettant de définir au moins une banque logique de mémoire en assignant les secteurs de la mémoire à ladite au moins une banque logique, chaque secteur de la mémoire étant assigné à une seule banque logique.
le procédé comprenant une configuration de la mémoire permettant de définir au moins une banque logique de mémoire en assignant les secteurs de la mémoire à ladite au moins une banque logique, chaque secteur de la mémoire étant assigné à une seule banque logique.
De préférence, les secteurs de mémoire pouvant être assignés à une même banque par l’interface de mémoire sont des secteurs successifs.
Dans un mode de réalisation, la configuration de la mémoire est utilisée pour définir une seule banque logique, l’ensemble des secteurs de la mémoire étant alors assigné à cette banque logique.
En particulier, la configuration de la mémoire peut être utilisée pour définir une unique banque logique de mémoire servant à stocker un code compilé servant de racine de confiance. En variante, la configuration de la mémoire peut être utilisée pour définir une unique banque logique de mémoire servant à stocker un code compilé d’une application.
La configuration de la mémoire peut également être utilisée pour définir plusieurs banques logiques de mémoire accessibles à des adresses différentes.
Par exemple, la configuration de la mémoire est utilisée pour définir une première banque logique servant à stocker un code compilé servant de racine de confiance et une deuxième banque logique servant à stocker un code compilé d’une application.
En variante, la configuration de la mémoire est utilisée pour définir une première banque logique servant à stocker un code compilé d’une application et une deuxième banque logique servant à stocker une version mise à jour du code compilé de l’application, ces deux banques logiques ayant un même nombre de secteurs de mémoire qui leur sont assignés, et pouvant être interchangées.
En variante, la configuration de la mémoire est utilisée pour définir une première banque logique servant à stocker un code compilé servant de racine de confiance, une deuxième banque logique servant à stocker un code compilé d’une application et une troisième banque logique servant à stocker une version mise à jour du code compilé de l’application, la deuxième banque logique et la troisième banque logique ayant un même nombre de secteurs de mémoire qui leur sont assignés, et pouvant être interchangées.
D'autres avantages et caractéristiques de l’invention apparaîtront à l’examen de la description détaillée de modes de mise en œuvre et de réalisation, nullement limitatifs, et des dessins annexés sur lesquels :
La illustre un système sur puce SOC selon un mode de réalisation de l’invention. Le système sur puce SOC comprend un processeur PROC, une mémoire MEM et une interface de mémoire MI.
La mémoire MEM est configurée pour stocker un code compilé d’une application. L’application peut prévoir un ou plusieurs services pouvant être mis en œuvre à l’exécution de l’application par le processeur PROC.
La mémoire MEM comprend une ou plusieurs banques physiques qui sont divisés en une succession de secteurs Sn. Chaque secteur présente une taille correspondant à une taille de mémoire minimum pouvant être effacée. La illustre un exemple de mémoire comportant une unique banque physique PB1 divisée en huit secteurs S0 à S7. En variante, la illustre un exemple de mémoire MEM comportant une première banque PB1 divisée en huit secteurs S0 à S7 et une deuxième banque PB2 divisée en quatre secteurs S0 à S3. Les deux banques PB1 et PB2 forment alors une succession de douze secteurs S0 à S11. La correspond à une autre variante de réalisation d’une mémoire. Cette mémoire MEM comporte une première banque PB1 divisée en huit secteurs S0 à S7, une deuxième banque PB2 divisée en quatre secteurs S0 à S3 et une quatrième banque PB2 divisée en quatre secteurs S0 à S3. Les trois banques PB1, PB2 et PB3 forment alors une succession de douze secteurs S0 à S15.
Les secteurs permettent de stocker le code compilé de l’application. En particulier, la mémoire peut être organisée en une ou plusieurs banques physiques de mémoire. Les secteurs de la mémoire sont alors répartis dans la ou les banques physiques de mémoire. Plus particulièrement, chaque banque physique comprend uniquement des secteurs successifs de la mémoire.
La mémoire MEM est une mémoire non volatile, par exemple une mémoire flash.
L’interface de mémoire MI est configurée pour gérer les demandes d’accès à la mémoire provenant du processeur PROC. En outre, l’interface de mémoire comprend des registres de configuration REG permettant de pouvoir définir une ou plusieurs banques logiques de mémoire, les secteurs de la mémoire étant alors assignés à cette ou ces banques logiques de mémoire. La définition d’une ou plusieurs banques logiques permet à un utilisateur de pouvoir s’abstraire de l’organisation physique de la mémoire, et donc des banques physiques de la mémoire.
Le processeur PROC est adapté pour émettre des instructions de configuration pour configurer lesdits registres de configuration.
Les figures 5 à 9 illustrent différentes configurations possibles de la mémoire MEM qui seront décrites dans la suite. Ces différentes configurations respectent des conditions données. En particulier, dans chaque configuration possible, l’ensemble des secteurs de la mémoire est assigné à une banque logique. Aucun secteur de la mémoire n’est donc assigné à aucune banque. En outre, chaque secteur est assigné à une seule banque. Par ailleurs, les secteurs assignés à une même banque sont des secteurs successifs de la mémoire.
En outre, il est possible de définir une banque logique F utilisée pour stocker un code compilé fixe, notamment un code compilé pouvant servir de racine de confiance. Ce code compilé peut être utilisé pour démarrer l’application. Cette banque logique F n’est pas interchangeable.
Il est également possible de définir au moins une banque logiques A, B pour stocker différentes versions d’une application par exemple. Lorsque la mémoire MEM comprend plusieurs banques logiques A, B, les banques A, B peuvent être interchangées.
Afin de configurer la mémoire, l’instruction de configuration émise par le processeur PROC fournit plusieurs informations. En particulier, il convient d’indiquer le nombre de secteurs à assigner à la banque logique F et d’indiquer s’il est souhaité d’avoir en outre des banques logiques A, B interchangeables.
Le nombre de secteurs à assigner à la banque logique F peut varier entre zéro et le nombre total de secteurs de la mémoire. Les secteurs restants peuvent alors être assignés à une seule banque logique A ou à deux banques logiques A et B selon s’il est souhaité d’avoir des banques logiques interchangeables.
S’il n’est pas souhaité d’avoir des banques logiques interchangeables, alors l’ensemble des secteurs restants est assigné à la banque logique A. S’il est souhaité d’avoir des banques logiques interchangeables alors les secteurs restants sont assignés de sorte qu’un même nombre de secteurs soit assigné à la banque logique A et à la banque logique B.
Il peut également être possible de verrouiller la configuration souhaitée en fournissant une information de verrouillage à l’interface de mémoire. Lorsque la configuration de la mémoire est verrouillée, il n’est plus possible de modifier la configuration des banques logiques. Néanmoins, il reste possible d’interchanger les deux banques A et B si la configuration de la mémoire le permet.
Comme indiqué précédemment, les figures 5 à 9 illustrent différentes configurations possibles d’une mémoire MEM comportant une succession de huit secteurs S0 à S7.
Dans une configuration possible de la mémoire, l’ensemble des secteurs de la mémoire peuvent être assignés à une banque logique F. Par exemple, comme illustré à la , les secteurs S0 à S7 sont assignés à la banque logique F.
En variante, comme représenté dans les différents modes de réalisation de la , certains secteurs de mémoires peuvent être assignés à une banque logique F et les autres secteurs de mémoires peuvent être assignés à une banque logique A.
En particulier, le nombre de secteurs de mémoire assignés à la banque logique F peut être inférieur au nombre de secteurs de mémoire assignés à la banque logique A. Par exemple, comme illustré dans le mode de réalisation I, deux secteurs S0, S1 sont assignés à la banque logique F et six secteurs S2 à S7 sont assignés à la banque logique A.
En variante, le nombre de secteurs de mémoire assignés à la banque logique F peut être égal au nombre de secteurs de mémoire assignés à la banque logique A. Par exemple, comme illustré dans le mode de réalisation II, quatre secteurs S0 à S3 sont assignés à la banque logique F et quatre secteurs S4 à S7 sont assignés à la banque logique A.
En variante, le nombre de secteurs de mémoire assignés à la banque logique F peut être supérieur au nombre de secteurs de mémoire assignés à la banque logique A. Par exemple, comme illustré dans le mode de réalisation III, six secteurs S0 à S5 sont assignés à la banque logique F et deux secteurs S6, S7 sont assignés à la banque logique A.
En variante, l’ensemble des secteurs de la mémoire peuvent être assignés à une banque logique A. Aucun secteur n’est alors assigné à une banque logique F. Par exemple, comme illustré à la , les secteurs S0 à S7 sont assignés à la banque logique A.
En variante, une moitié des secteurs de la mémoire peuvent être assignés à une banque logique A et l’autre moitié des secteurs de la mémoire peuvent être assignés à une banque logique B. Aucun secteur n’est alors assigné à une banque F. Par exemple, comme illustré à la , les secteurs S0 à S3 sont assignés à la banque logique A et les secteurs S4 à S7 sont assignés à la banque logique B.
Une telle assignation peut être utilisée pour permettre d’interchanger les banques logiques A et B.
En variante, certains secteurs de la mémoire peuvent être assignés à une banque logique F, certains autres secteurs de la mémoire peuvent être assignés à une banque logique A, et les autres secteurs de la mémoire peuvent être assignés à une banque logique B. Dans ce cas, le nombre de secteurs assignés à la banque logique A est le même que celui des secteurs assignés à la banque logique B. Par exemple, comme illustré à la , les secteurs S0 et S1 sont assignés à la banque logique F, les secteurs S2 à S4 sont assignés à la banque logique A et les secteurs S5 à S7 sont assignés à la banque logique B. En variante, les secteurs S0 et S3 sont assignés à la banque logique F, les secteurs S4 et S5 sont assignés à la banque logique A et les secteurs S6 et S7 sont assignés à la banque logique B. Dans une autre variante de mise en œuvre, En variante, les secteurs S0 et S5 sont assignés à la banque logique F, le secteur S6 est assigné à la banque logique A et le secteur S7 est assigné à la banque logique B.
La illustre un tel procédé de gestion de la mémoire MEM. Le procédé comprend une étape 30, dans laquelle une nouvelle configuration d’au moins une banque logique est émise par le processeur PROC et reçue par les registres de configuration de l’interface de mémoire MI.
Ensuite à l’étape 31, l’interface de mémoire lit l’instruction reçu puis définie ladite au moins une banque logique selon cette instruction.
Une fois que la structure de la mémoire est définie par l’interface de mémoire, cette dernière est configurée pour gérer les accès à la mémoire par le processeur PROC.
En particulier, le processeur PROC est configuré pour émettre des demandes d’accès à la mémoire. Ces demandes d’accès sont reçues par l’interface de mémoire MI. Chaque demande d’accès indique une adresse mémoire à accéder. L’interface de mémoire MI est configurée pour décoder les instructions qu’il reçoit. En particulier, l’interface de mémoire est configurée pour déterminer si l’adresse renseignée est valide. Si l’adresse renseignée est valide, alors l’interface de mémoire MI peut autoriser l’accès aux secteurs de la mémoire assignés à cette banque logique.
Un tel système sur puce permet de configurer des banques logiques pour pouvoir s’abstraire de la configuration des banques physiques définie lors de la conception du système sur puce. Ainsi, le stockage du code compilé de l’application peut se faire indépendamment de l’organisation des banques physiques de la mémoire. En particulier, le code compilé peut être enregistré dans les secteurs assignés à une même banque logique de mémoire. Chaque banque logique est accessible à une adresse fixe. Le code de l’application peut ainsi être développé puis compilé sans avoir à prendre en compte l’organisation des banques physiques de mémoire. Un utilisateur du système sur puce bénéficie donc de la totalité de la mémoire.
Claims (19)
- Système sur puce comprenant :
- une mémoire (MEM) comportant une ou plusieurs banques physiques divisées en une succession de secteurs (Sn, S1, …, S15), chaque secteur présentant une taille égale à la plus petite taille effaçable de la mémoire,
- une interface de mémoire (MI) adaptée pour contrôler les accès à ladite mémoire (MEM) et comprenant au moins un registre de configuration (REG) adapté pour pouvoir définir au moins une banque logique de mémoire (F, A, B) en assignant les secteurs (S1, …, Sn) de la mémoire à ladite au moins une banque logique, chaque secteur de la mémoire étant assigné à une seule banque logique, et
- un processeur (PROC) connecté à ladite interface de mémoire,
et adapté pour configurer ledit registre de configuration. - Système selon la revendication 1, dans lequel les secteurs de mémoire pouvant être assignés (Sn, S1, …, S15) à une même banque logique par l’interface de mémoire (MI) sont des secteurs successifs.
- Système selon l’une des revendications 1 ou 2, dans lequel ledit au moins un registre de configuration (REG) est adapté pour définir une seule banque logique de mémoire (F, A), l’ensemble des secteurs de la mémoire étant alors assigné à cette banque logique (F, A).
- Système selon la revendication 3, dans lequel ledit au moins un registre de configuration (REG) est adapté pour définir une unique banque logique (F) de mémoire servant à stocker un code compilé servant de racine de confiance.
- Système selon l’une des revendications 3 ou 4, dans lequel ledit au moins un registre de configuration (REG) est adapté pour définir une unique banque logique (A) de mémoire servant à stocker un code compilé d’une application.
- Système selon l’une des revendications 1 à 5, dans lequel ledit au moins un registre de configuration est adapté pour définir plusieurs banques logiques (F, A, B) de mémoire, de sorte que l’interface de mémoire définit lesdites banques logiques à des adresses différentes.
- Système selon la revendication 6, dans lequel ledit au moins un registre de configuration (REG) est adapté pour définir une première banque logique (F) servant à stocker un code compilé servant de racine de confiance et d’une deuxième banque logique (A) servant à stocker un code compilé d’une application.
- Système selon l’une des revendications 6 ou 7, dans ledit au moins un registre de configuration (REG) est adapté pour définir une première banque logique (A) servant à stocker un code compilé d’une application et d’une deuxième banque logique (B) servant à stocker une version mise à jour du code compilé de l’application, ces deux banques logiques (A, B) ayant un même nombre de secteurs de mémoire qui leur sont assignés, et pouvant être interchangées.
- Système selon la revendication 6, dans lequel ledit au moins un registre de configuration (REG) est adapté pour définir une première banque logique (F) servant à stocker un code compilé servant de racine de confiance, d’une deuxième banque logique (A) servant à stocker un code compilé d’une application et d’une troisième logique (B) banque servant à stocker une version mise à jour du code compilé de l’application, la deuxième banque logique (A) et la troisième banque logique (B) ayant un même nombre de secteurs de mémoire qui leur sont assignés, et pouvant être interchangées.
- Système selon l’une des revendications 1 à 9, dans lequel ledit au moins un registre de configuration (REG) est configuré pour verrouiller la configuration définissant ladite au moins une banque logique.
- Procédé de gestion d’une mémoire (MEM), la mémoire (MEM) comportant une ou plusieurs banques physiques divisées en une succession de secteurs (Sn, S1, …, S15), chaque secteur présentant une taille égale à la plus petite taille effaçable de la mémoire, les secteurs étant associés à une banque physique de mémoire,
le procédé comprenant une configuration de la mémoire permettant de définir au moins une banque logique de mémoire (F, A, B) en assignant les secteurs (Sn, S1, …, S15) de la mémoire physique à ladite au moins une banque logique, chaque secteur de la mémoire étant assigné à une seule banque logique. - Procédé selon la revendication 11, dans lequel les secteurs de mémoire assignés (Sn, S1, …, S15) à une même banque logique (F, A, B) sont des secteurs successifs.
- Procédé selon l’une des revendications 11 ou 12, dans lequel la configuration de la mémoire est utilisée pour définir une seule banque logique (F, A), l’ensemble des secteurs de la mémoire étant alors assigné à cette banque logique (F, A).
- Procédé selon la revendication 13, dans la configuration de la mémoire est utilisée pour définir une unique banque logique (F) de mémoire servant à stocker un code compilé servant de racine de confiance.
- Procédé selon la revendication 13, dans lequel la configuration de la mémoire est utilisée pour définir une unique banque logique (A) de mémoire servant à stocker un code compilé d’une application.
- Procédé selon l’une des revendications 11 ou 12, dans lequel la configuration de la mémoire est utilisée pour définir plusieurs banques logiques (F, A, B) de mémoire à des adresses différentes.
- Procédé selon la revendication 16, dans lequel la configuration de la mémoire est utilisée pour définir une première banque logique (F) servant à stocker un code compilé servant de racine de confiance et une deuxième banque logique (A) servant à stocker un code compilé d’une application.
- Procédé selon la revendication 16, dans lequel la configuration de la mémoire est utilisée pour définir une première banque logique (A) servant à stocker un code compilé d’une application et une deuxième banque logique (B) servant à stocker une version mise à jour du code compilé de l’application, ces deux banques logiques (A, B) ayant un même nombre de secteurs de mémoire qui leur sont assignés, et pouvant être interchangées.
- Procédé selon la revendication 16, dans lequel la configuration de la mémoire est utilisée pour définir une première banque logique (F) servant à stocker un code compilé servant de racine de confiance, une deuxième banque logique (A) servant à stocker un code compilé d’une application et une troisième banque logique (B) servant à stocker une version mise à jour du code compilé de l’application, la deuxième banque logique (A) et la troisième banque logique (B) ayant un même nombre de secteurs de mémoire qui leur sont assignés, et pouvant être interchangées.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR2112807A FR3129763A1 (fr) | 2021-12-01 | 2021-12-01 | Systeme sur puce comportant une memoire non volatile |
US18/057,390 US20230168821A1 (en) | 2021-12-01 | 2022-11-21 | System-on-chip comprising a non-volatile memory |
CN202211527157.0A CN116204447A (zh) | 2021-12-01 | 2022-11-30 | 包括非易失性存储器的片上系统 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR2112807A FR3129763A1 (fr) | 2021-12-01 | 2021-12-01 | Systeme sur puce comportant une memoire non volatile |
FR2112807 | 2021-12-01 |
Publications (1)
Publication Number | Publication Date |
---|---|
FR3129763A1 true FR3129763A1 (fr) | 2023-06-02 |
Family
ID=80933769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR2112807A Pending FR3129763A1 (fr) | 2021-12-01 | 2021-12-01 | Systeme sur puce comportant une memoire non volatile |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230168821A1 (fr) |
CN (1) | CN116204447A (fr) |
FR (1) | FR3129763A1 (fr) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050141312A1 (en) * | 2003-12-30 | 2005-06-30 | Sinclair Alan W. | Non-volatile memory and method with non-sequential update block management |
US20170249250A1 (en) * | 2011-09-30 | 2017-08-31 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy |
-
2021
- 2021-12-01 FR FR2112807A patent/FR3129763A1/fr active Pending
-
2022
- 2022-11-21 US US18/057,390 patent/US20230168821A1/en active Pending
- 2022-11-30 CN CN202211527157.0A patent/CN116204447A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050141312A1 (en) * | 2003-12-30 | 2005-06-30 | Sinclair Alan W. | Non-volatile memory and method with non-sequential update block management |
US20170249250A1 (en) * | 2011-09-30 | 2017-08-31 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy |
Also Published As
Publication number | Publication date |
---|---|
US20230168821A1 (en) | 2023-06-01 |
CN116204447A (zh) | 2023-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7461209B2 (en) | Transient cache storage with discard function for disposable data | |
US7613870B2 (en) | Efficient memory usage in systems including volatile and high-density memories | |
US20060018166A1 (en) | Method and managing bad memory blocks in a nonvolatile memory device, and nonvolatile-memory device implementing the management method | |
JPH11102323A (ja) | 仮想アドレス変換用の柔軟な変換記憶バッファ | |
EP2196913A1 (fr) | Procédé de gestion d'un arbre de hachage basé sur l'utilisation d'une mémoire cache, pour protéger l'intégrité de données | |
US7013367B2 (en) | Caching associative memory using non-overlapping data | |
EP2148279A1 (fr) | Méthode de mise à jour de données dans des mémoires utilisant une unité de gestion mémoire | |
FR3055715A1 (fr) | Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue | |
CN104424117B (zh) | 内存物理地址查询方法和装置 | |
US7882327B2 (en) | Communicating between partitions in a statically partitioned multiprocessing system | |
EP3293637A1 (fr) | Gestion d'index dans une mémoire flash | |
US6785770B2 (en) | Data processing apparatus with a cache memory and method of using such an apparatus | |
US20060143405A1 (en) | Data processing device | |
FR3129763A1 (fr) | Systeme sur puce comportant une memoire non volatile | |
US7539819B1 (en) | Cache operations with hierarchy control | |
FR2600441A1 (fr) | Unite de gestion de memoire | |
JPH11249969A (ja) | アドレス変換回路およびアドレス変換システム | |
US20080005525A1 (en) | Partitioning program memory | |
EP1155389B1 (fr) | Dispositif d'acces securise a des applications d'une carte a puce | |
US20050102465A1 (en) | Managing a cache with pinned data | |
FR2621408A1 (fr) | Procede et systeme de gestion des adresses homonymes pour station de travail a antememoire a adressage virtuel et a reinscription | |
US20150046630A1 (en) | Patching of Programmable Memory | |
KR102101419B1 (ko) | 라우팅 테이블 검색 방법 및 이를 구현하는 메모리 시스템 | |
US7660908B2 (en) | Implementing virtual packet storage via packet work area | |
JPS63163939A (ja) | キヤツシユメモリの制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20230602 |
|
PLFP | Fee payment |
Year of fee payment: 3 |