FR3129763A1 - Systeme sur puce comportant une memoire non volatile - Google Patents

Systeme sur puce comportant une memoire non volatile Download PDF

Info

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
Application number
FR2112807A
Other languages
English (en)
Inventor
Francesco Bombaci
Andrea TOSONI
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Rousset SAS
STMicroelectronics SRL
Original Assignee
STMicroelectronics Rousset SAS
STMicroelectronics SRL
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by STMicroelectronics Rousset SAS, STMicroelectronics SRL filed Critical STMicroelectronics Rousset SAS
Priority to FR2112807A priority Critical patent/FR3129763A1/fr
Priority to US18/057,390 priority patent/US20230168821A1/en
Priority to CN202211527157.0A priority patent/CN116204447A/zh
Publication of FR3129763A1 publication Critical patent/FR3129763A1/fr
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1012Design facilitation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-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

SYSTEME SUR PUCE COMPORTANT UNE MEMOIRE NON VOLATILE
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.
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.
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 :
illustrent schématiquement des modes de réalisation et de mise en œuvre de l’invention.
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)

  1. 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.
  2. 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.
  3. 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).
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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).
  14. 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.
  15. 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.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
FR2112807A 2021-12-01 2021-12-01 Systeme sur puce comportant une memoire non volatile Pending FR3129763A1 (fr)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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