DE102017119065B4 - Aktualisieren eines Speichers - Google Patents

Aktualisieren eines Speichers Download PDF

Info

Publication number
DE102017119065B4
DE102017119065B4 DE102017119065.1A DE102017119065A DE102017119065B4 DE 102017119065 B4 DE102017119065 B4 DE 102017119065B4 DE 102017119065 A DE102017119065 A DE 102017119065A DE 102017119065 B4 DE102017119065 B4 DE 102017119065B4
Authority
DE
Germany
Prior art keywords
block
memory
updated
blocks
buffer
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.)
Active
Application number
DE102017119065.1A
Other languages
English (en)
Other versions
DE102017119065A1 (de
Inventor
Thomas Kern
Robert Allinger
Robert Strenz
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102017119065.1A priority Critical patent/DE102017119065B4/de
Priority to US16/058,620 priority patent/US11314642B2/en
Publication of DE102017119065A1 publication Critical patent/DE102017119065A1/de
Application granted granted Critical
Publication of DE102017119065B4 publication Critical patent/DE102017119065B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • G11C11/5635Erasing circuits
    • 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/0608Saving storage space on storage systems
    • 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/0614Improving the reliability of storage systems
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7206Reconfiguration of flash memory system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

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 Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Read Only Memory (AREA)

Abstract

Verfahren zum Aktualisieren eines Speichers, wobei der Speicher mehrere Blöcke umfasst, wobei jeder der Blöcke Mehrpegelzellen umfasst und in einem MLC-Modus oder in einem SLC-Modus betrieben werden kann, wobei jede Mehrpegelzelle mehr als ein Bit speichern kann, wobei das Verfahren für jeden zu aktualisierenden Block die folgenden Schritte umfasst:(a) Kopieren eines Inhalts des Blocks in einen Pufferblock;(b) Schreiben des Inhalts des Blocks aus dem Pufferblock und eines aktualisierten Inhalts für diesen Block in den Block unter Verwendung der Fähigkeit des Blocks, in dem MLC-Modus betrieben zu werden;(c) Kopieren des aktualisierten Inhalts des Blocks in den Pufferblock;(d) Schreiben des aktualisierten Inhalts aus dem Pufferblock in den Block unter Verwendung der Fähigkeit des Blocks, in dem SLC-Modus betrieben zu werden.

Description

  • Ausführungsformen der vorliegenden Erfindung betreffen einen effizienten Ansatz zum Aktualisieren von Daten eines Speichers.
  • US 2016/0268000 A1 betifft einen SSD Speicher, der in einem MLC-Modus betrieben werden kann. In einem Power-Fail-Modus, in dem die Energieversorgung abbricht, werden System-Metadaten in einem pseude SLC-Modus gespeichert.
  • CN 106 990 982 A betrifft die Aktualisierung von Programmen.
  • US 2017/0147232 A1 betrifft ein SSD mit einem Flash-Speicher und beschreibt einen mögliches Realisierung eines sogenannten „Garbage-Collection“ Ansatzes.
  • Die Aufgabe der hier beschriebenen Lösung zielt auf eine alternative Ausführungsform zur Aktualisierung von Blöcken eines Speichers.
  • Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind insbesondere den abhängigen Ansprüchen entnehmbar.
  • Die hier vorgeschlagenen Beispiele können insbesondere auf mindestens einer der folgenden Lösungen basieren. Insbesondere könnten Kombinationen der folgenden Merkmale benutzt werden, um ein gewünschtes Ergebnis zu erreichen. Die Merkmale des Verfahrens könnten mit einem beliebigen Merkmal bzw. beliebigen Merkmalen der Einrichtung, Vorrichtung oder des Systems kombiniert werden oder umgekehrt
    Es wird ein Verfahren zum Aktualisieren eines Speichers bereitgestellt, wobei der Speicher mehrere Blöcke umfasst, wobei jeder der Blöcke Mehrpegelzellen umfasst und in einem MLC-Modus oder in einem SLC-Modus betrieben werden kann, wobei jede Mehrpegelzelle mehr als ein Bit speichern kann, wobei das Verfahren für jeden zu aktualisierenden Block die folgenden Schritte umfasst:
    1. (a) Kopieren eines Inhalts des Blocks in einen Pufferblock;
    2. (b) Schreiben des Inhalts des Blocks aus dem Pufferblock und eines aktualisierten Inhalts für diesen Block in den Block unter Verwendung der Fähigkeit des Blocks, im MLC-Modus betrieben zu werden;
    3. (c) Kopieren des aktualisierten Inhalts des Blocks in den Pufferblock;
    4. (d) Schreiben des aktualisierten Inhalts aus dem Pufferblock in den Block unter Verwendung der Fähigkeit des Blocks, im SLC-Modus betrieben zu werden.
  • Die Mehrpegelzellen des Speichers können zwei oder mehr Bit speichern. Der Speicher und jeder Block des Speichers können im MLC-Modus betrieben werden, wobei die Speicherzellen des durch den MLC-Modus betroffenen Blocks mindestens zwei Bit speichern. Außerdem können der Speicher und jeder Block des Speichers im SLC-Modus betrieben werden, wobei die Speicherzellen des durch den SLC-Modus betroffenen Blocks ein einziges Bit speichern.
  • Es wird angemerkt, dass die Schritte (a) und (b) für alle zu aktualisierenden Blöcke zuerst ausgeführt werden können und dann die Schritte (c) und (d) für diese Blöcke ausgeführt werden.
  • Der aktualisierte Inhalt kann durch einen lokalen Speicher und/oder über einen externen (z.B. zentralen) Speicher bereitgestellt werden.
  • Bei einer Ausführungsform wird:
    • - vor Schritt (a) der Inhalt des Blocks durch Zugreifen auf den Block gelesen;
    • - nach Schritt (a) und vor Schritt (b) der Inhalt des Blocks durch Zugreifen auf den Pufferblock gelesen;
    • - nach Schritt (c) und vor Schritt (d) der aktualisierte Inhalt des Blocks durch Zugreifen auf den Pufferblock gelesen;
    • - nach Schritt (d) der aktualisierte Inhalt des Blocks durch Zugreifen auf den Block gelesen.
  • Bei einer Ausführungsform wird:
    • - solange Schritt (b) noch nicht für alle Blöcke ausgeführt ist, der Inhalt des Blocks durch Zugreifen auf den Block und durch Maskieren des aktualisierten Inhalts gelesen,
    • - nachdem Schritt (b) für alle Blöcke ausgeführt ist, der aktualisierte Inhalt des Blocks durch Zugreifen auf den Block und durch Maskieren des Inhalts gelesen.
  • Nach Schritt (b) werden daher der aktualisierte Inhalt sowie der (alte) Inhalt in dem Block gespeichert, weil der Block im MLC-Modus betrieben wird. Es ist somit möglich, entweder den Inhalt oder den aktualisierten Inhalt aus diesem Block zu lesen. Der Inhalt kann gelesen werden, solange die Aktualisierung für alle Blöcke (die zu aktualisieren sind) nicht beendet ist. Nachdem alle diese Blöcke aktualisiert sind, kann zum Zugreifen auf den aktualisierten Inhalt (in diesen Blöcken) übergegangen werden, insbesondere solange Schritt (c) noch nicht für den bestimmten Block ausgeführt wurde. Das Zugreifen auf einen der Inhalte von den zwei in dem Block gespeicherten Inhalten kann durch Maskieren des jeweiligen anderen Inhalts erzielt werden. Maskieren bezieht sich in dieser Hinsicht auf einen beliebigen Mechanismus, der Auswählen eines der zwei (oder mehr) Inhalte (insbesondere Zugreifen auf diesen und Lesen dieses) ermöglicht.
  • Bei einer Ausführungsform umfasst das Verfahren nach Schritt (a) und vor Schritt (b):
    • (a1) Löschen des Blocks.
  • Bei einer Ausführungsform umfasst das Verfahren nach Schritt (c) und vor Schritt (d):
    • (c1) Löschen des Blocks.
  • Bei einer Ausführungsform umfasst Schritt (b) ferner Eintreten in den MLC-Modus, wenn eine Bedingung erfüllt ist.
  • Bei einer Ausführungsform ist die Bedingung erfüllt, wenn mindestens eines der folgenden:
    • - ein Parameter,
    • - eine interne Temperatur,
    • - eine externe Temperatur,
    • - ein gemessenes Signal,
    • - ein vorbestimmtes Signal eine vorbestimmte Bedingung erfüllt.
  • Bei einer Ausführungsform werden die Schritte (a) und (b) für alle zu aktualisierenden Blöcke ausgeführt und dann die Schritte (c) und (d) für alle zu aktualisierenden Blöcke ausgeführt.
  • Bei einer Ausführungsform ist der Pufferblock Teil des Speichers oder Teil von getrenntem Speicher.
  • Bei einer Ausführungsform umfasst der Pufferblock Speicherzellen, die jeweils nur ein einziges Bit speichern können.
  • Bei einer Ausführungsform wird der Speicher im MLC-Modus zu einer ersten Zugriffszeit und im SLC-Modus zu einer Zugriffszeit betrieben, wobei die erste Zugriffszeit kleiner als die zweite Zugriffszeit ist.
  • Bei einer Ausführungsform wird eine Integritätsprüfung für einen Block des Speichers ausgeführt, bevor der MLC-Modus für diesen Block aktiviert wird.
  • Bei einer Ausführungsform ist der Speicher ein Flash-Speicher, insbesondere ein PFlash-Speicher.
  • Bei einer Ausführungsform umfasst das Verfahren ferner vor Schritt (a):
    • - Empfangen einer Aktualisierungsanforderung.
  • Bei einer Ausführungsform:
    • - ist die Aktualisierungsanforderung eine Per-Funk-Aktualisieren-Anforderung, insbesondere eine SOTA-Anforderung oder -nachricht, und
    • - wird der aktualisierte Inhalt für die zu aktualisierenden Blöcke mindestens teilweise über eine Funkschnittstelle, insbesondere eine Mobilkommunikationsschnittstelle, geliefert.
  • Bei einer Ausführungsform ist der Speicher Teil einer elektronischen Steuereinheit eines Fahrzeugs, insbesondere eines Autos.
  • Außerdem wird eine Vorrichtung zum Aktualisieren eines Speichers vorgeschlagen, wobei der Speicher
    • - mehrere Blöcke umfasst,
    • - wobei jeder der Blöcke Mehrpegelzellen umfasst, wobei jede Mehrpegelzelle mehr als ein Bit speichern kann,
    • - wobei jeder der Blöcke in einem MLC-Modus oder in einem SLC-Modus betrieben werden kann,
    • - wobei die Vorrichtung eine Verarbeitungseinheit umfasst, ausgelegt zum
      1. (a) Kopieren des Inhalts des Blocks in einen Pufferblock;
      2. (b) Schreiben des Inhalts des Blocks aus dem Pufferblock und eines aktualisierten Inhalts für diesen Block in den Block unter Verwendung der Fähigkeit des Blocks, im MLC-Modus betrieben zu werden;
      3. (c) Kopieren des aktualisierten Inhalts des Blocks in den Pufferblock;
      4. (d) Schreiben des aktualisierten Inhalts aus dem Pufferblock in den Block unter Verwendung der Fähigkeit des Blocks, im SLC-Modus betrieben zu werden.
  • Bei einer Ausführungsform ist die Vorrichtung Teil einer elektronischen Steuereinheit eines Fahrzeugs.
  • Bei einer Ausführungsform wird der aktualisierte Inhalt über eine Funkschnittstelle, insbesondere eine Mobilkommunikationsschnittstelle, geliefert.
  • Bei einer Ausführungsform umfasst das Speicherarray mindestens eines von Folgenden:
    • - Floating-Gate-Zellen,
    • - PCRAM,
    • - RRAM,
    • - MRAM,
    • - CBRAM,
    • - FERAM,
    • - MONOS-Vorrichtungen,
    • - Nanokristallzellen,
    • - ROM.
  • Bei einer Ausführungsform ist die Verarbeitungseinheit ferner dafür ausgelegt, nach Schritt (a) und vor Schritt (b) Folgendes auszuführen:
    • (a1) Löschen des Blocks.
  • Bei einer Ausführungsform ist die Verarbeitungseinheit ferner dafür ausgelegt, nach Schritt (c) und vor Schritt (d) Folgendes auszuführen:
    • (c1) Löschen des Blocks.
  • Ferner wird ein Computerprogrammprodukt vorgeschlagen, das direkt in einen Speicher einer digitalen Verarbeitungsvorrichtung ladbar ist, das Softwarecodeteile zum Ausführen der Schritte des Verfahrens wie hier beschrieben umfasst.
  • Außerdem wird ein computerlesbares Medium bereitgestellt, das computerausführbare Anweisungen aufweist, die dafür ausgelegt sind, zu bewirken, dass ein Computersystem die Schritte des Verfahrens wie hier beschrieben ausführt.
  • Es werden Ausführungsformen unter Bezugnahme auf die Zeichnungen gezeigt und veranschaulicht. Die Zeichnungen dienen zur Veranschaulichung des Grundprinzips, so dass nur für das Verständnis des Grundprinzips notwendige Aspekte veranschaulicht werden. Die Zeichnungen sind nicht maßstabsgetreu. In den Zeichnungen bezeichnen die selben Bezugszeichen ähnliche Merkmale.
    • 1A bis 1M visualisieren Schritte zum Aktualisieren eines Speichers, der MLCs umfasst, von einem Bild A auf ein Bild B;
    • 2 zeigt ein System, das eine elektronische Steuereinheit (ECU) umfasst, die über eine zentrale Speicherung aktualisiert werden kann;
    • 3 zeigt Schritte zum Aktualisieren eines Speichers von einem Bild C1, C2 auf ein Bild D1, D2 unter Verwendung eines Puffers, der im MLC-Modus betrieben wird.
  • Auf dem Automotive-Gebiet steigt die Forderung, Produktrückrufe und andere Aktualisierungen, an denen Software im Fahrzeug beteiligt ist, online durchzuführen, z.B. über eine Internetverbindung. Jedes Herunterladen, Aktualisieren oder Revidieren von Daten, das Online über eine Funkschnittstelle, z.B. eine Mobilkommunikationsschnittstelle, durchgeführt wird, wird auch als SOTA (Software over the Air) bezeichnet. Die Vorteile von SOTA reichen von einer lediglichen Korrektur von Fehlern bis zu Hinzufügung neuer Software mit neuen Merkmalen, die zweckmäßig im Fahrzeug ohne signifikante Ausfallzeit installiert werden kann. Daher muss der Benutzer nicht mehr das Fahrzeug zur Werkstatt fahren und darauf warten, dass die Aktualisierung durchgeführt wird.
  • SOTA kann zunehmend von Originalgeräteherstellern (OEM) verwendet werden, welche von der Aktualisierung der Funktionalität und der Merkmale des Fahrzeugs „per Funk“ (online) signifikant Nutzen ziehen.
  • Insbesondere kann eines der folgenden Szenarien (1) bis (3) verwendet werden, um SOTA zu ermöglichen:
    • (1) Das Fahrzeug kann einen Mikrocontroller, einen PFlash-Speicher und eine Kommunikationsschnittstelle umfassen. Der Mikrocontroller kann über einen Bus mit dem PFlash-Speicher und der Kommunikationsschnittstelle gekoppelt sein. Die Kommunikationsschnittstelle ist mit einer zentralen Speicherungseinheit im Fahrzeug verbindbar. Es wird angemerkt, dass sich die zentrale Speicherungseinheit im Fahrzeug oder außerhalb des Fahrzeugs befinden kann. Die zentrale Speicherung kann insbesondere ein puffernder Speicher sein. Der Mikrocontroller, der PFlash-Speicher und die Kommunikationsschnittstelle können Teil einer elektronischen Steuereinheit (ECU) des Fahrzeugs sein. In diesem Szenario (1) wird die Softwareaktualisierung aus der zentralen Speicherung über die Kommunikationsschnittstelle zum PFlash-Speicher durchgeführt. Es wird angemerkt, dass anstelle des Mikrocontrollers mindestens ein Kern und/oder mindestens eine CPU (Zentralverarbeitungseinheit) verwendet werden können. Es ist auch eine Möglichkeit, dass der Mikrocontroller den PFlash-Speicher und/oder die Kommunikationsschnittstelle umfasst.
    • (2) Im Gegensatz zu Szenario (1) umfasst die ECU eine zusätzliche serielle Peripherieschnittstelle (SPI), die mit dem Bus verbunden ist. Eine lokale Speicherung, die Teil der ECU sein kann, wird mit der SPI verbunden. In diesem Szenario (2) wird die Softwareaktualisierung aus der zentralen Speicherung über die Kommunikationsschnittstelle zur lokalen Speicherung durchgeführt. Dieses Szenario (2) vermindert die Ausfallzeit verglichen mit Szenario (1), erhöht aber die Kosten aufgrund der zusätzlichen erforderlichen Komponenten.
    • (3) Im Gegensatz zu Szenario (1) umfasst die ECU einen zusätzlichen PFlash-Speicher, der mit dem Bus verbunden ist. In diesem Szenario (3) kann die Softwareaktualisierung in den verdoppelten (zweiten) PFlash-Speicher durchgeführt werden und die Speicher können nach erfolgreichem Herunterladen umgewechselt werden. Verglichen mit den Szenarien (1) und (2) vermindert dieses Szenario die Ausfallzeit weiter, vergrößert aber auch die Kosten weiter aufgrund des kostspieligen zweiten PFlash-Speichers.
  • Es wird angemerkt, dass der PFlash-Speicher ein beliebiger Code-Flash-Speicher oder Anweisungs-Flash-Speicher sein kann, der Code und/oder statische oder niederfrequente Datenteile umfassen kann.
  • Herkömmliche eingebettete Flash-Technologien (im Gegensatz zu selbstständigen Speichern) können insbesondere auf einer Lösung mit 1 Bit pro Zelle basieren, d.h. in einer einzelnen Speicherzelle wird ein Bit Informationen gespeichert. Dies gilt insbesondere für PFlash-Lösungen aufgrund des Umstands, dass sie keine hohen Aktualisierungsraten aufweisen und somit durch hohe Schreib-/Löschzyklen keine signifikante Belastung und/oder Verschlechterung erfahren. Klassische und ausgereifte eingebettete nichtflüchtige Speicherkonzepte wie Floating-Gate-Flash erzeugen beim Erreichen von fortschrittlichen Technologieknoten (z.B. Einsatz von High-k-Metall-Gate-Prozessen) signifikant mehr Integrationsprobleme. Diese leichtere Integration in einem CMOS-ase-Prozess (advanced silicon etching) und letztendlich niedrigere Kosten lassen sich abzeichnende Speicherlösungen wie PCRAM, ReRAM, MRAM und andere attraktiv werden. Sich abzeichnenden Speicherkonzepten fehlt jedoch manchmal Reife und Zuverlässigkeit.
  • Hier beschriebene Beispiele benutzen Mehrpegelzellen (MLC: „Multi-Level Cell“). Die MLC ist ein Speicherelement, das mehr als ein einzelnes Bit Informationen speichern kann, während eine Einzelpegelzelle ein Speicherelement ist, das ein einziges Bit Informationen speichern kann (SLC: „Single-Level Cell“).
  • Ein Speicher, der MLC umfasst (auch als MLC-Speicher bezeichnet) kann in einem MLC-Modus oder in einem SLC-Modus betrieben werden. Der MLC-Modus benutzt das Merkmal der Speicherzellen, das das Speichern von mehr als einem Bit Informationen pro einzelner Zelle erlaubt. Der SLC-Modus benutzt das Merkmal, dass nur ein einziges Bit pro Speicherzelle gespeichert wird. Der Speicher kann in Blöcke aufgeteilt werden, wobei jeder Block mindestens eine Speicherzelle, insbesondere mindestens zwei Speicherzellen, umfasst. Der Block kann einer Löschoperation unterzogen werden; eine an einen Block gerichtete Löschoperation löscht daher den Inhalt dieses Blocks.
  • Die Verwendung des SLC-Modus des MLC-Speichers erhöht die Zuverlässigkeit der durch den SLC-Modus betroffenen Speicherelemente. Dies gilt insbesondere angesichts der Gesamt-Betriebsdauer des Speichers, insbesondere in Hochtemperaturumgebungen.
  • Eine Aktualisierung kann abhängig z.B. von mindestens einer der folgenden Eingaben oder Bedingungen auf der Basis mindestens einer dieser Eingaben flexibel ausgelöst werden: eines Parameters, einer Innentemperatur, einer Außentemperatur, eines gemessenen Signals (z.B. einer Spannung, eines Stroms, eines Trends einer Spannung oder eines Stroms), eines vorbestimmten Signals. Die Eingabe kann betrachtet werden bevor Daten in den Speicher geschrieben werden, oder wenn Daten als Teil des Aktualisierungsprozesses in den Speicher geschrieben werden. Zum Beispiel kann eine Stabilität einer Spannung die Aktualisierung beeinflussen: wenn eine solche Stabilität (zeitliche Schwankung) innerhalb einer vordefinierten Grenze liegt, wird die Schreiboperation (als Teil der Aktualisierung) durchgeführt, andernfalls wird die Schreiboperation z.B. verzögert.
  • Die folgenden in 1A bis 1M visualisierten Beispiele zeigen einen Ansatz zur Aktualisierung eines Speichers, der MLC umfasst, von einem Bild A auf ein Bild B (was auch als A/B-Umwechseln bezeichnet wird). Die präsentierte Lösung ist hocheffizient und bringt nur eine geringe Menge Overhead mit sich.
  • 1A zeigt einen Speicher 100, der N Blöcke umfasst. Jeder der N Blöcke umfasst eine vorbestimmte Anzahl von (z.B. 64) Speicherzellen. Jede der Speicherzellen ist eine Mehrpegel-Speicherzelle, d.h. kann mehr als ein einziges Bit speichern. Jeder der N Blöcke kann im MLC-Modus oder im SLC-Modus betrieben werden.
  • Zusätzlich wird ein Block 101 (auch als Pufferblock bezeichnet) bereitgestellt, der mindestens die Größe beliebiger der N Blöcke aufweist. Der Block 101 kann ein zusätzlicher Block des Speichers 100 oder kann Teil eines anderen Speichers sein. Die Speicherzellen des Blocks 101 können MLC sein, könnten aber auch SLC sein.
  • 1B bis 1M teilen sich denselben Speicher 100 und Block 101, wie in 1 gezeigt. Der Inhalt ist jedoch unterschiedlich, wie gezeigt werden wird.
  • In 1A umfasst der Speicher 100 ein Bild A, das in Bilder Ai aufgeteilt wird, wobei jeder Block i (i=1, ..., N) der N Blöcke ein Bild Ai umfasst. An diesem Punkt ist der Inhalt des Blocks 101 egal, dies ist in 1A durch „...‟ angegeben.
  • Es wird angemerkt, dass ein Zielbild B in Bilder Bi aufgeteilt wird, wobei jedes Bild Bi in einem der Blöcke i (i=1, ..., N) des Speichers 100 zu speichern ist.
  • 1B zeigt, dass das Bild A1 des ersten Blocks in den Block 101 kopiert wird. Nachdem diese Kopieroperation erfolgreich abgeschlossen wurde, kann über den Block 101 auf das Bild A1 zugegriffen werden. Dies kann über eine Adressenabbildung erreicht werden, die es der auf den Speicher zugreifenden CPU erlaubt, den Block 101 anstelle des ersten Blocks des Speichers 100 zu lesen.
  • Fig.lC zeigt, dass der erste Block (sein Inhalt) gelöscht wird. Da die Leseoperation an den Block 101 gerichtet ist, statt an den ersten Block des Speichers 100, kann dieser erste Block ohne Störung des Gesamtbetriebs gelöscht werden.
  • Fig.lD zeigt, dass das Bild A1 aus Block 101 und ein Bild Bi (d.h. der erste Block des aktualisierten Bildes) in dem zuvor gelöschten ersten Block des Speichers 100 gespeichert werden, um dadurch den MLC-Modus (z.B. 2 Bit pro Zelle) des ersten Blocks zu nutzen. Falls 2 Bit pro Zelle benutzt werden, stellt der MLC-Modus doppelte Kapazität bereit, und somit können beide Bilder in dem ersten Block gespeichert werden.
  • Wenn eine klassische Floating-Gate- oder Ladungsfallenzelle verwendet wird, wird vor Schreiben eine Löschoperation durchgeführt. Wenn ein Bit einzeln zwischen den zwei (SLC) oder vier Zuständen (MLC) geändert werden kann, kann die Löschoperation weggelassen werden.
  • Das Bild Bi ist ein Teil des neuen Bildes B, das lokal im Fahrzeug gespeichert werden kann. Es kann gut sein, dass die Speicherkapazität zum Speichern mehrerer Bilder B, B', B'' usw. ausreicht. Dies kann selbst gelten, falls die ECU eine lokale Speicherungseinheit umfasst. In einem solchen Fall muss es nicht notwendig sein, das Bild lediglich vorübergehend zu speichern.
  • Solange das vollständige neue Bild B nicht im Flash-Speicher gespeichert ist, besteht jedoch keine Möglichkeit, einfach zu dem neuen Bild zu wechseln und es daher freizugeben. Daher muss das neue Bild B auf den Flash-Speicher aktualisiert werden. Die Streaming-Rate, die während der Aktualisierung benutzt wird, kann sehr niedrig sein, da es kein der Aktualisierung zugeordnetes kritisches Timing gibt.
  • Es ist eine Möglichkeit, dass Aktualisieren eines Bildes von Eingaben und/oder Bedingungen wie oben beschrieben abhängen kann. Zum Beispiel kann, dass die Temperatur eine vorbestimmte Temperatur übersteigt, während einer Aktualisierung vermieden werden, um die Datenstimmigkeit zu garantieren, wenn der MLC-Modus verwendet wird.
  • Die Entscheidung, ob der MLC-Modus oder der SLC-Modus zu benutzen ist, kann z.B. auf einem einzelnen Bit basieren. Ein mindestens ein Bit umfassendes Konfigurationsregister kann zum Speichern von MLC/SLC-Modusinformationen für mindestens einen Speicherblock eines Speichers verwendet werden.
  • Es ist eine Möglichkeit, dass eine Erkennungsrate und/oder ein Fehlerkorrekturmechanismus an den MLC- oder SLC-Modus angepasst werden. Außerdem kann eine Integritätsprüfung abhängig von dem MLC- oder SLC-Modus angepasst oder sogar bereitgestellt werden.
  • Eine weitere Möglichkeit ist, dass mehrere verschiedene MLC-Modi auf der Basis der in dem Konfigurationsregister gespeicherten Informationen benutzt werden können. In diesem Fall können mehr als ein Bit Informationen zur Bestimmung des zu benutzenden Modus verwendet werden. Der Modus kann der SLC-Modus, ein erster MLC-Modus, ein zweiter MLC-Modus usw. sein. Verschiedene MLC-Modi sind dafür ausgelegt, in einer einzigen Speicherzelle 2, 3 oder mehr Bit Informationen zu speichern.
  • Nach dem in 1D gezeigten Schritt wird daher der erste Block im MLC-Modus betrieben und enthält das Bild A1 sowie das Bild Bi.
  • Nun kann der Lesezugriff an den ersten Block des Speichers 100 (statt den Block 101) gerichtet werden, um auf das Bild A1 zuzugreifen. Die zusätzlichen Informationen, d.h. das Bild Bi, können maskiert, ignoriert oder geprüft werden.
  • Fig.lE zeigt, dass das zweite Bild A2 in Block 101 gespeichert ist. Nachdem diese Kopieroperation erfolgreich abgeschlossen wurde, kann über Block 101 auf das Bild A2 zugegriffen werden. Dies lässt sich über eine Adressenabbildung erzielen, die es der auf den Speicher zugreifenden CPU erlaubt, statt den zweiten Block des Speichers 100 den Block 101 zu lesen.
  • Fig.lF zeigt, dass, nachdem der zweite Block des Speichers 100 gelöscht wurde, das Bild A2 aus dem Block 101 und ein Bild B2 (d.h. der zweite Block eines aktualisierten Bildes) in dem zweiten Block - der nun im MLC-Modus betrieben wird - des Speichers 100 gespeichert werden.
  • Nun kann der Lesezugriff an den zweiten Block des Speichers 100 (statt den Block 101) gerichtet werden, um auf das Bild A2 zuzugreifen. Die zusätzlichen Informationen, d.h. das Bild B2, werden maskiert, ignoriert oder geprüft.
  • Dieser Prozess wird für alle nachfolgenden Blöcke des Speichers 100, d.h. den dritten Block bis zum N-ten Block, fortgesetzt.
  • Fig.lG zeigt den Zustand des Speichers 100, nachdem alle Blöcke i zwei Bildteile Ai und Bi umfassen, nachdem das letzte Bild BN in den N-ten Block des Speichers 100 geschrieben wurde. Dieser N-te Block umfasst das Bild AN und das Bild BN. Durch Maskieren oder Ignorieren der Bilder Bi wird der Speicher 100 zum Liefern des Bildes A (über die Bilder Ai) für weitere Verarbeitungszwecke verwendet.
  • An diesem Punkt (d.h., nachdem das letzte Bild BN des Bildes B zum Speicher 100 hinzugefügt wurde) kann jedoch durch Maskieren oder Ignorieren der Bilder Ai und Zugreifen auf die Bilder Bi für weitere Verarbeitungszwecke von dem Bild A zu dem Bild B gewechselt werden. Dies beendet effektiv die Aktualisierung (oder das Überwechseln), weil von diesem Moment an das aktualisierte Bild B verwendet werden kann.
  • Um die Zuverlässigkeit des Speichers 100 zu vergrößern, wird jedoch das Bild A aus dem Speicher 100 gelöscht, und der Speicher wird dann nur das Bild B umfassend im SLC-Modus betrieben. Dies ist in den nächsten Schritten visualisiert.
  • 1H zeigt, dass das Bild Bi aus dem ersten Block des Speichers 100 in den Block 101 kopiert wird. Nachdem diese Kopieroperation erfolgreich abgeschlossen wurde, kann über den Block 101 auf das Bild Bi zugegriffen werden, d.h. der Block 101 kann anstelle des ersten Blocks des Speichers 100 gelesen werden.
  • 1I zeigt, dass der erste Block des Speichers 100 gelöscht wird.
  • Fig.lJ zeigt, dass der erste Block des Speichers 100 in den SLC-Modus umgeschaltet wird und dass das Bild Bi aus dem Block 101 in den ersten Block des Speichers 100 geschrieben wird. Dann kann über den ersten Block des Speichers 100 auf das Bild Bi zugegriffen werden und Block 101 kann für weitere Kopieroperationen verwendet werden.
  • Fig.lK zeigt, dass das Bild B2 aus dem zweiten Block des Speichers 100 in den Block 101 kopiert wird. Nachdem diese Kopieroperation erfolgreich abgeschlossen wurde, kann über den Block 101 auf das Bild B2 zugegriffen werden, d.h., der Block 101 kann anstelle des zweiten Blocks des Speichers 100 gelesen werden.
  • Fig.lL zeigt, dass, nachdem der zweite Block des Speichers 100 gelöscht wurde, das Bild B2 aus dem Block 101 in den zweiten Block des Speichers kopiert wird. Dann kann über den zweiten Block des Speichers 100 auf das Bild B2 zugegriffen werden, und der Block 101 kann für weitere Kopieroperationen verwendet werden.
  • Dies wird für die verbleibenden Blöcke 3 bis N des Speichers 100 fortgesetzt.
  • 1M zeigt das Endergebnis, d.h., den Speicher 100, der im SLC-Modus betrieben wird, der nur ein Bild Bi pro Block i (i=1, ..., N) umfasst.
  • Die dargestellte Lösung erlaubt daher Überwechseln zwischen zwei Bildern A und B nur unter Verwendung eines zusätzlichen Blocks 101 für Pufferzwecke. Der die Bilder A und/oder B enthaltende Speicher 100 kann im MLC-Modus oder im SLC-Modus betrieben werden, wobei der Block 101 keine Mehrpegelzellen umfassen muss.
  • Die Lösung ist kosteneffizient. Außerdem benutzt dieser Ansatz hauptsächlich die höhere Zuverlässigkeit des SLC-Modus gegenüber dem MLC-Modus und schaltet den MLC-Speicher 100 nur vorübergehend auf den weniger zuverlässigen MLC-Modus um, z.B. während der Aktualisierungsphase, wie hier beschrieben. Als eine Möglichkeit kann ein einzelner Block geschrieben und verifiziert werden, während alle anderen Blöcke (parallel) gelesen werden können; dies wird auch als Merkmal des „Lesens während des Schreibens“ bezeichnet.
  • Hier offenbarte Beispiele könnten durch Aufrüsten eines Teils eines Speichers (oder des gesamten Speichers) auf Mehrpegelzellenspeicher implementiert werden. Solcher MLC-Speicher erlaubt, im MLC-Modus oder im SLC-Modus betrieben zu werden. Jede Speicherzelle des MLC-Speichers kann die Fähigkeit besitzen, mehrere Bit, insbesondere zwei Bit, zu speichern.
  • Es ist eine Möglichkeit, dass der SLC-Modus oder der MLC-Modus des MLC-Speichers durch einen Benutzer oder Kunden ausgewählt (z.B. umgeschaltet) werden kann.
  • Der sich im MLC-Modus befindende MLC-Speicher kann verglichen mit seinem SLC-Modus eine höhere Latenz mit sich bringen. In einem solchen Fall kann es eine Möglichkeit sein, dass das auf den Speicher (mindestens vorübergehend) zugreifende System mit einer niedrigeren Geschwindigkeit läuft, um diese Latenz zu kompensieren. Es ist insbesondere eine Möglichkeit, dass dieses System mit einer Geschwindigkeit arbeitet, die dem entspricht, dass der Speicher sich im MLC-Modus befindet.
  • Es ist auch eine Möglichkeit, dass, wenn sich der MLC-Speicher im MLC-Modus befindet, Integritätsprüfungen ausgeführt werden. Dies ist insbesondere während Aktualisierungen nützlich, die länger als einen vorbestimmten Zeitraum dauern. Ferner können solche Integritätsprüfungen oder zusätzliche Integritätsprüfungen durchgeführt werden, falls eine Temperatur eine vorbestimmte Schwelle erreicht und/oder überschreitet.
  • Das Bewahren der Daten im Speicher kann über die Aktivierungsenergie mit der Temperatur abhängig sein. Zum Beispiel kann Flash-Speicher auf Floating-Gate-Basis eine Aktivierungsenergie aufweisen, die 1eV beträgt, um die Floating-Gate-Ladung aufrechtzuerhalten. Wenn ein Fahrzyklus für ein Fahrzeug dafür ausgelegt ist, 10 Stunden lang mit einer Temperatur von 125°C fertigzuwerden, kann eine einzige Stunde des Fahrens bei einer Temperatur von 160°C bereits aufgrund des hohen Einflusses der Temperatur auf die Bewahrung der Daten die Entwurfsbeschränkung überschreiten.
  • Vor dem Eintritt in den MLC-Modus kann eine Zuverlässigkeitsdiagnose durchgeführt werden. Eine solche Diagnose kann unter Verwendung einer verringerten Lesedistanz, z.B. Irefi +/- ΔIrefi, i=1...3, zwischen den Stromverteilungen durchgeführt werden, um zu prüfen, ob einzelne Bit bereits umklappen. Die Leseergebnisse bei den Strömen +ΔIrefi und -ΔIrefi werden miteinander verglichen; wenn die Ergebnisse voneinander verschieden sind, liegt ein Lesefehler vor. Die gelesenen Daten können dann markiert werden, oder es kann eine Fehlerkorrektur verwendet werden, um auf der Basis des gelesenen Fehlers die korrekten Daten abzuleiten. Das Ergebnis einer solchen Diagnose zeigt jedoch die Beschränkungen der Verwendung von MLC für einen Block oder sogar einen anderen Teil des Speichers.
  • 3 zeigt einen alternativen Ansatz zum Aktualisieren eines Speichers, der einen Speicherteil benutzt, der im MLC-Modus betrieben werden kann. Dieser Speicherteil kann ein Block einer vorbestimmten Größe sein.
  • 3 zeigt drei (auch als Speicher bezeichnete) Speicherteile 301, 302 und 303. Der (in diesem Beispiel auch als Puffer oder Pufferspeicher bezeichnete) Speicher 301 kann im MLC-Modus betrieben werden, der Speicher 302 und der Speicher 303 können jeweils im SLC-Modus (insbesondere nicht im MLC-Modus) betrieben werden. Die Speicher 302 und 303 können dieselbe Größe aufweisen, und der Speicher 301 hat zweimal die Größe wie jeder der Speicher 302, 303. Es ist auch eine Möglichkeit, dass der Speicher 301 in der Lage ist, mindestens die in dem Speicher 302 und dem Speicher 303 gespeicherten Daten zu speichern.
  • Die Aktualisierung von einem in dem Speicher 302 gespeicherten Bild C1 auf ein Bild D1 und von einem in dem Speicher 303 gespeicherten Bild C2 auf ein Bild D2 kann folgendermaßen beschrieben werden:
  • In einem Schritt 311 wird das Bild C1 in dem Speicher 302 gespeichert und das Bild C2 in dem Speicher 303 gespeichert. Die Bilder C1, C2 werden aus den Speichern 302, 303 gelesen. Der Puffer 301 kann leer sein.
  • In einem Schritt 312 werden das Bild C1 und das Bild C2 aus den Speichern 303 und 303 in den Puffer 301 programmiert. Der Puffer 301 wird im MLC-Modus betrieben und ist (in diesem Modus) in der Lage, die Inhalte beider Speicher 302 und 303 zu speichern.
  • In einem Schritt 313 werden die Bilder C1, C2 aus dem Puffer 301 gelesen. Daher führt der Puffer 301 die Daten dieser Bilder einer Anwendung zu. Eine Adressenabbildung stellt sicher, dass Zugriff auf die Bilder C1, C2 nicht mehr über die Speicher 302, 303, sondern stattdessen mittels des Puffers 301 durchgeführt wird.
  • In einem Schritt 314 werden die aktualisierten Bilder D1, D2 in die Speicher 302, 303 programmiert. Die Bilder C1, C2 werden immer noch aus dem Puffer 301 gelesen.
  • In einem Schritt 315 werden, nachdem die Aktualisierung der Bilder D1, D2 beendet ist, die aktualisierten Bilder D1, D2 aus den Speichern 302, 303 gelesen. Die Adressenabbildung stellt sicher, dass Zugriff auf die Bilder D1, D2 über die Speicher 302, 303 erfolgt. Der immer noch die Bilder C1, C2 enthaltene Puffer 301 kann gelöscht werden oder kann während der nächsten Aktualisierung direkt überschrieben werden.
  • Es wird angemerkt, dass in 3 die Pfeile eine Lese- oder Programmieroperation angaben. Die fett umrissenen Kästen geben die Kästen an, die das Bild einem Prozessor zuführen (d.h. das aktuell aktive Bild). Es wird ferner angemerkt, dass der Puffer 301 vorzugsweise vorübergehend zum Puffern der Aktualisierung verwendet werden kann, während bei normalem Betrieb (anders als bei der Aktualisierung selbst) die Speicher 302 und 303 die Bilder für eine Verarbeitungseinheit (z.B. den Prozessor) bereitstellen.
  • Es ist ein Vorteil der in 3 gezeigten Anordnung, dass der Puffer 301 größer als jeder der Speicher 302 oder 303 ist und dass die Aktualisierung schnell durchgeführt werden kann. Insbesondere ist keine Umleitung erforderlich, bei der vorübergehend Pufferdaten in beliebigen der Speicher 302, 303, die im SLC-Modus betrieben werden, gespeichert werden.
  • Es ist ein weiterer Vorteil, dass der gesamte Puffer 301 geprüft werden kann, insbesondere, bevor er im MLC-Modus verwendet wird. Der Puffer 301 kann auch im SLC-Modus verwendet werden, wenn er nicht an einem Aktualisierungsprozess beteiligt ist.
  • Es ist ein weiterer Vorteil, dass der Speicher 301 einem ersten Prozessor zugewiesen ist und dass die Speicher 302, 303 einem zweiten Prozessor zugewiesen sind. Die Hauptanwendung kann daher entweder während der Schritte 313 oder 314 auf dem ersten Prozessor oder während der Schritte 311, 312 und 315 auf dem zweiten Prozessor laufen.
  • Der Speicher 301 und die Speicher 302/303 können unabhängig voneinander aktualisiert werden.
  • Daher verwendet der hier beschriebene Ansatz den MLC-Modus eines MLC-Speichers für einen begrenzten Zeitraum (z.B. während einer Aktualisierung), während der Speicher ansonsten aus Zuverlässigkeitsgründen im SLC-Modus betrieben wird. Dies erlaubt das Sparen von zusätzlichem Speicher und ermöglicht leicht Aktualisierungen von Speichern.
  • 2 zeigt eine beispielhafte ECU 1101 (ECU: elektronische Steuereinheit), die Teil eines Fahrzeugs, insbesondere eines Autos, sein kann. Die ECU umfasst eine oder mehrere CPU 1102, einen Speicher 1104 und eine Kommunikationsschnittstelle 1103. Die CPU 1102 kann über einen Bus 1105 mit dem Speicher 1104 und der Kommunikationsschnittstelle 1103 gekoppelt sein. Die Kommunikationsschnittstelle 1103 ist (über eine Per-Funk-Internetverbindung) mit einer zentralen oder einer lokalen Speicherung 1106 verbindbar, insbesondere einer (entfernten) Entität außerhalb der ECU 1101, die eine solche zentrale Speicherung 1106 umfasst. Der Speicher 1104 kann dem Speicher 100 in Kombination mit dem Block 101 entsprechen, wie in 1 gezeigt
  • Die CPU 1102, der Speicher 1104, die Kommunikationsschnittstelle 1103 und der Bus 1105 können in ein erweitertes Mikrocontrollersystem, wie etwa die Vorrichtung Aurix™ von Infineon, integriert sein.
  • Die Softwareaktualisierung wird durch Transferieren von Daten aus der zentralen Speicherung 1106 über die Kommunikationsschnittstelle 1103 in den Speicher 1104 durchgeführt.
  • Es ist ein Vorteil, dass SOTA mit einem hohen Grad an Zuverlässigkeit und Flexibilität mit verringerten Kosten aufgrund der erforderlichen Menge Speicher erreicht werden kann.
  • Der Speicher kann vorteilhafterweise in der Lage sein, getrennte Schreib-(einschließlich Verifizier-) und Lesezugriffe (gleichzeitig oder im Wesentlichen gleichzeitig) in die verschiedenen Speicherbereiche zu erlauben. Die Aktualisierung der Software kann daher während der Laufzeit eines Fahrzeugs durchgeführt werden.
  • Es wird angemerkt, dass SOTA ein Beispiel ist, dass in Verbindung mit den hier beschriebenen Lösungen verwendet werden kann. Die Erfindung ist jedoch nicht auf das SOTA-Szenario beschränkt. Sie kann z.B. für jeden anderen Ansatz anwendbar sein, der vorübergehend einen Teil eines Speichers für Aktualisierungs-, Korrektur- oder Revidierungszwecke benutzt.
  • In einem oder mehreren Beispielen können die hier beschriebenen Funktionen mindestens teilweise in Hardware, wie etwa spezifischen Hardwarekomponenten oder einem Prozessor implementiert werden. Allgemeiner können die Techniken in Hardware, Prozessoren, Software, Firmware oder einer beliebigen Kombination davon implementiert werden. Bei Implementierung in Software können die Funktionen als eine oder mehrere Anweisungen oder Code auf einem computerlesbaren Medium gespeichert oder darüber übertragen werden und durch eine auf Hardware basierende Verarbeitungseinheit ausgeführt werden. Computerlesbare Medien wären zum Beispiel computerlesbare Speichermedien, die einem greifbaren Medium, wie etwa einem Datenspeichermedium entsprechen, oder Kommunikationsmedien, darunter ein beliebiges Medium, das Transfer eines Computerprogramms von einem Ort zum anderen, z. B. gemäß einem Kommunikationsprotokoll, ermöglicht. Auf diese Weise können computerlesbare Medien im Allgemeinen (1) greifbaren computerlesbaren Speichermedien, die nichttransitorisch sind, oder (2) einem Kommunikationsmedium, wie etwa einem Signal oder einer Trägerwelle, entsprechen. Datenspeichermedien können beliebige verfügbare Medien sein, auf die ein oder mehrere Computer oder ein oder mehrere Prozessoren zugreifen können, um Anweisungen, Code und/oder Datenstrukturen zur Implementierung der in der vorliegenden Offenbarung beschriebenen Techniken abzurufen. Ein Computerprogrammprodukt kann ein computerlesbares Medium umfassen.
  • Als Beispiel und nicht als Beschränkung können solche computerlesbaren Speichermedien RAM, ROM, EEPROM, CD-ROM oder andere optische Plattenspeicher, magnetische Plattenspeicher oder andere magnetische Speichervorrichtungen, Flash-Speicher oder ein beliebiges anderes Medium, mit dem gewünschter Programmcode in Form von Anweisungen oder Datenstrukturen gespeichert werden kann und auf die ein Computer zugreifen kann, umfassen. Außerdem wird jede Verbindung ordnungsgemäß als computerlesbares Medium, d.h. ein computerlesbares Übertragungsmedium, bezeichnet. Wenn zum Beispiel Anweisungen von einer Website, einem Server oder einer anderen entfernten Quelle unter Verwendung von Koaxialkabel, faseroptischem Kabel, verdrillter Doppelleitung, DSL (digitaler Teilnehmeranschluss) oder drahtlosen Technologien wie Infrarot, Funk und Mikrowelle, übertragen werden, sind das Koaxialkabel, das faseroptische Kabel, die verdrillte Doppelleitung, DSL oder andere drahtlose Technologien wie Infrarot, Funk oder Mikrowelle in der Definition von Medium eingeschlossen. Es versteht sich jedoch, dass computerlesbare Speichermedien und Datenspeichermedien nicht Verbindungen, Trägerwellen, Signale oder andere transiente Medien umfassen, sondern stattdessen nichttransiente greifbare Speichermedien betreffen. Platte und Disk umfassen im vorliegenden Gebrauch Compact Disk (CD), Laser Disk, optische Disk, Digital Versatile Disk (DVD), Diskette und BluRay-Disk, wobei Platten Daten gewöhnlich magnetisch reproduzieren, während Disks Daten optisch mit Lasern reproduzieren. Es sollten auch Kombinationen des Obigen im Umfang computerlesbarer Medien enthalten sein.
  • Anweisungen können durch einen oder mehrere Prozessoren ausgeführt werden, wie etwa eine oder mehrere Zentralverarbeitungseinheiten (CPU), Digitalsignalprozessoren (DSP), Vielzweck-Mikroprozessoren, anwendungsspezifische integrierte Schaltungen (ASIC), am Einsatzort programmierbare Logikarrays (FPGA) oder andere äquivalente integrierte oder diskrete Logikschaltkreise. Der hier gebrauchte Begriff „Prozessor“ kann sich dementsprechend auf eine beliebige oben erwähnte Struktur oder eine beliebige andere für die Implementierung der hier beschriebenen Techniken geeignete Struktur beziehen. Außerdem kann die hier beschriebene Funktionalität in gewissen Aspekten in dedizierten Hardware- und/oder Softwaremodulen bereitgestellt werden, die für Codierung und Decodierung ausgelegt sind, oder in einen kombinierten Codec integriert sind. Außerdem könnten die Techniken vollständig in einer oder mehreren Schaltungen oder Logikelementen implementiert werden.
  • Die Techniken der vorliegenden Offenbarung können in vielfältigen Vorrichtungen oder Geräten implementiert werden, darunter ein drahtloser Handapparat, eine integrierte Schaltung (IC) oder eine Menge von ICs (z. B. ein Chipsatz). Verschiedene Komponenten, Module oder Einheiten werden in der vorliegenden Offenbarung beschrieben, um Funktionsaspekte von Vorrichtungen zu betonen, die dafür ausgelegt sind, die offenbarten Techniken auszuführen, aber nicht unbedingt Realisierung durch verschiedene Hardwareeinheiten erfordern. Wie oben beschrieben können stattdessen verschiedene Einheiten zu einer einzigen Hardwareeinheit kombiniert oder durch eine Ansammlung von zusammenwirkenden Hardwareeinheiten, einschließlich eines oder mehrerer Prozessoren wie oben beschrieben, in Verbindung mit geeigneter Software und/oder Firmware bereitgestellt werden.
  • Obwohl verschiedene beispielhafte Ausführungsformen der Erfindung offenbart wurden, ist für Fachleute erkennbar, dass verschiedene Änderungen und Modifikationen vorgenommen werden können, die einige der Vorteile der Erfindung erzielen, ohne vom Gedanken und Schutzumfang der Erfindung abzuweichen. Für Durchschnittsfachleute wird offensichtlich sein, dass geeigneterweise andere Komponenten substituiert werden können, die dieselben Funktionen ausführen. Es sollte erwähnt werden, dass mit Bezug auf eine spezifische Figur erläuterte Merkmale mit Merkmalen von anderen Figuren kombiniert werden können, selbst in den Fällen, bei denen dies nicht ausdrücklich erwähnt wurde. Ferner können die Verfahren der Erfindung entweder in reinen Softwareimplementierungen unter Verwendung entsprechender Prozessoranweisungen oder in Hybridimplementierungen, die eine Kombination von Hardwarelogik und Softwarelogik zur Erzielung derselben Ergebnisse benutzen, erreicht werden. Solche Modifikationen des erfindungsgemäßen Konzepts sollen durch die angefügten Ansprüche abgedeckt werden.

Claims (24)

  1. Verfahren zum Aktualisieren eines Speichers, wobei der Speicher mehrere Blöcke umfasst, wobei jeder der Blöcke Mehrpegelzellen umfasst und in einem MLC-Modus oder in einem SLC-Modus betrieben werden kann, wobei jede Mehrpegelzelle mehr als ein Bit speichern kann, wobei das Verfahren für jeden zu aktualisierenden Block die folgenden Schritte umfasst: (a) Kopieren eines Inhalts des Blocks in einen Pufferblock; (b) Schreiben des Inhalts des Blocks aus dem Pufferblock und eines aktualisierten Inhalts für diesen Block in den Block unter Verwendung der Fähigkeit des Blocks, in dem MLC-Modus betrieben zu werden; (c) Kopieren des aktualisierten Inhalts des Blocks in den Pufferblock; (d) Schreiben des aktualisierten Inhalts aus dem Pufferblock in den Block unter Verwendung der Fähigkeit des Blocks, in dem SLC-Modus betrieben zu werden.
  2. Verfahren nach Anspruch 1, - bei dem vor Schritt (a) der Inhalt des Blocks durch Zugreifen auf den Block gelesen wird; - bei dem nach Schritt (a) und vor Schritt (b) der Inhalt des Blocks durch Zugreifen auf den Pufferblock gelesen wird; - bei dem nach Schritt (c) und vor Schritt (d) der aktualisierte Inhalt des Blocks durch Zugreifen auf den Pufferblock gelesen wird; - bei dem nach Schritt (d) der aktualisierte Inhalt des Blocks durch Zugreifen auf den Block gelesen wird.
  3. Verfahren nach einem der vorhergehenden Ansprüche, - bei dem, solange Schritt (b) noch nicht für alle Blöcke durchgeführt ist, der Inhalt des Blocks durch Zugreifen auf den Block und durch Maskieren des aktualisierten Inhalts gelesen wird, - bei dem, nachdem Schritt (b) für alle Blöcke durchgeführt ist, der aktualisierte Inhalt des Blocks durch Zugreifen auf den Block und durch Maskieren des Inhalts gelesen wird.
  4. Verfahren nach einem der vorhergehenden Ansprüche, bei dem das Verfahren nach Schritt (a) und vor Schritt (b) Folgendes umfasst: (a1) Löschen des Blocks.
  5. Verfahren nach einem der vorhergehenden Ansprüche, bei dem das Verfahren nach Schritt (c) und vor Schritt (d) Folgendes umfasst: (c1) Löschen des Blocks.
  6. Verfahren nach einem der vorhergehenden Ansprüche, bei dem Schritt (b) ferner Folgendes umfasst: Eintreten in den MLC-Modus, wenn eine Bedingung erfüllt ist.
  7. Verfahren nach Anspruch 6, bei dem die Bedingung erfüllt ist, wenn mindestens eines der folgenden: - ein Parameter, - eine interne Temperatur, - eine externe Temperatur, - ein gemessenes Signal, - ein vorbestimmtes Signal eine vorbestimmte Bedingung erfüllt.
  8. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Schritte (a) und (b) für alle zu aktualisierenden Blöcke ausgeführt werden und dann die Schritte (c) und (d) für alle zu aktualisierenden Blöcke ausgeführt werden.
  9. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Pufferblock Teil des Speichers oder Teil von einem separaten Speicher ist.
  10. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Pufferblock Speicherzellen umfasst, die jeweils nur ein einziges Bit speichern können.
  11. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Speicher im MLC-Modus zu einer ersten Zugriffszeit und im SLC-Modus zu einer zweiten Zugriffszeit betrieben wird, wobei die erste Zugriffszeit kleiner als die zweite Zugriffszeit ist.
  12. Verfahren nach einem der vorhergehenden Ansprüche, bei dem eine Integritätsprüfung für einen Block des Speichers ausgeführt wird, bevor der MLC-Modus für diesen Block aktiviert wird.
  13. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Speicher ein Flash-Speicher, insbesondere ein PFlash-Speicher, ist.
  14. Verfahren nach einem der vorhergehenden Ansprüche, das ferner vor Schritt (a) Folgendes umfasst: - Empfangen einer Aktualisierungsanforderung.
  15. Verfahren nach Anspruch 14, - bei dem die Aktualisierungsanforderung eine Per-Funk-Aktualisieren-Anforderung, insbesondere eine SOTA-Anforderung oder -Nachricht, ist und - bei dem der aktualisierte Inhalt für die zu aktualisierenden Blöcke mindestens teilweise über eine Funkschnittstelle, insbesondere eine Mobilkommunikationsschnittstelle, geliefert wird.
  16. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Speicher Teil einer elektronischen Steuereinheit eines Fahrzeugs, insbesondere eines Autos, ist.
  17. Vorrichtung zum Aktualisieren eines Speichers, wobei der Speicher - mehrere Blöcke umfasst, - wobei jeder der Blöcke Mehrpegelzellen umfasst, wobei jede Mehrpegelzelle mehr als ein Bit speichern kann, - wobei jeder der Blöcke in einem MLC-Modus oder in einem SLC-Modus betrieben werden kann, - wobei die Vorrichtung eine Verarbeitungseinheit umfasst, die eingerichtet ist zum (a) Kopieren des Inhalts des Blocks in einen Pufferblock; (b) Schreiben des Inhalts des Blocks aus dem Pufferblock und eines aktualisierten Inhalts für diesen Block in den Block unter Verwendung der Fähigkeit des Blocks, in dem MLC-Modus betrieben zu werden; (c) Kopieren des aktualisierten Inhalts des Blocks in den Pufferblock; (d) Schreiben des aktualisierten Inhalts aus dem Pufferblock in den Block unter Verwendung der Fähigkeit des Blocks, in dem SLC-Modus betrieben zu werden.
  18. Vorrichtung nach Anspruch 17, wobei die Vorrichtung Teil einer elektronischen Steuereinheit eines Fahrzeugs ist.
  19. Vorrichtung nach einem der Ansprüche 17 oder 18, bei der der aktualisierte Inhalt über eine Funkschnittstelle, insbesondere eine Mobilkommunikationsschnittstelle, geliefert wird.
  20. Vorrichtung nach einem der Ansprüche 17 bis 19, bei der das Speicherarray mindestens eines von Folgendem umfasst: - Floating-Gate-Zellen, - PCRAM, - RRAM, - MRAM, - CBRAM, - FERAM, - MONOS-Vorrichtungen, - Nanokristallzellen, - ROM.
  21. Vorrichtung nach einem der Ansprüche 17 bis 20, bei der die Verarbeitungseinheit ferner dazu eingerichtet ist, nach Schritt (a) und vor Schritt (b) Folgendes durchzuführen: (a1) Löschen des Blocks.
  22. Vorrichtung nach einem der Ansprüche 17 bis 21, bei der die Verarbeitungseinheit ferner dazu eingerichtet ist, nach Schritt (c) und vor Schritt (d) Folgendes durchzuführen: (c1) Löschen des Blocks.
  23. Computerprogrammprodukt, das direkt in einen Speicher einer digitalen Verarbeitungsvorrichtung ladbar ist, das Softwarecodeteile zum Ausführen der Schritte des Verfahrens nach einem der Ansprüche 1 bis 16 umfasst.
  24. Computerlesbares Medium mit computerausführbaren Anweisungen, die dafür ausgelegt sind, zu bewirken, dass ein Computersystem die Schritte des Verfahrens nach einem der Ansprüche 1 bis 16 ausführt.
DE102017119065.1A 2017-08-21 2017-08-21 Aktualisieren eines Speichers Active DE102017119065B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102017119065.1A DE102017119065B4 (de) 2017-08-21 2017-08-21 Aktualisieren eines Speichers
US16/058,620 US11314642B2 (en) 2017-08-21 2018-08-08 Updating a memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102017119065.1A DE102017119065B4 (de) 2017-08-21 2017-08-21 Aktualisieren eines Speichers

Publications (2)

Publication Number Publication Date
DE102017119065A1 DE102017119065A1 (de) 2019-02-21
DE102017119065B4 true DE102017119065B4 (de) 2020-12-10

Family

ID=65234799

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017119065.1A Active DE102017119065B4 (de) 2017-08-21 2017-08-21 Aktualisieren eines Speichers

Country Status (2)

Country Link
US (1) US11314642B2 (de)
DE (1) DE102017119065B4 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US10572388B2 (en) 2017-08-30 2020-02-25 Micron Technology, Inc. Managed NVM adaptive cache management
CN114567628B (zh) * 2022-02-28 2024-03-08 中汽创智科技有限公司 一种ota升级方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160268000A1 (en) * 2015-03-09 2016-09-15 Ocz Storage Solutions, Inc. Power fail saving modes in solid state drive with mlc memory
US20170147232A1 (en) * 2015-11-25 2017-05-25 Lite-On Electronics (Guangzhou) Limited Solid state drive and data programming method thereof
CN106990982A (zh) * 2017-03-20 2017-07-28 北京新能源汽车股份有限公司 程序更新方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101257691B1 (ko) * 2011-08-12 2013-04-24 아주대학교산학협력단 메모리 컨트롤러 및 이의 데이터 관리방법
US9229644B2 (en) * 2013-11-25 2016-01-05 Sandisk Technologies Inc. Targeted copy of data relocation
US9436456B2 (en) * 2014-04-17 2016-09-06 Myine Electronics, Inc. System and method for management of software updates at a vehicle computing system
US20160041760A1 (en) * 2014-08-08 2016-02-11 International Business Machines Corporation Multi-Level Cell Flash Memory Control Mechanisms

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160268000A1 (en) * 2015-03-09 2016-09-15 Ocz Storage Solutions, Inc. Power fail saving modes in solid state drive with mlc memory
US20170147232A1 (en) * 2015-11-25 2017-05-25 Lite-On Electronics (Guangzhou) Limited Solid state drive and data programming method thereof
CN106990982A (zh) * 2017-03-20 2017-07-28 北京新能源汽车股份有限公司 程序更新方法及装置

Also Published As

Publication number Publication date
US20190057031A1 (en) 2019-02-21
US11314642B2 (en) 2022-04-26
DE102017119065A1 (de) 2019-02-21

Similar Documents

Publication Publication Date Title
DE102017119065B4 (de) Aktualisieren eines Speichers
DE112011102487B4 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102011055714A1 (de) Verfahren zum Programmieren einer nicht-flüchtigen Speichervorrichtung
DE112018005505T5 (de) Verfahren und vorrichtung zur spezifikation von lese-spannungsversetzungen für einen lesebefehl
EP0013737A1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE102013016993A1 (de) Embedded Multimedia Card (eMMC), einen Host steuernde eMMC und Verfahren zum Betreiben eines eMMC-Systems
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE102013110085A1 (de) Host zum Steuern einer nicht-flüchtigen Speicherkarte, System mit demselben sowie Verfahren zum Betreiben des Hosts und des Systems
DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE102018123926A1 (de) Dynamische mehrstufige Decodierung
DE102020122182A1 (de) Virtuelle-maschine-replikation und -migration
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE112007003015T5 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE102011075023A1 (de) Indexierter Registerzugriff für einen Speicherbaustein
DE112021000776T5 (de) Verwaltung von schreib-operationen in einer nichtflüchtigen speichervorrichtung unter verwendung eines variablen vor-lese-spannungspegels
DE102018123961A1 (de) Gruppen-leseaktualisierung
DE112020003004T5 (de) Dma-scatter- und gather-operationen für nicht zusammenhängenden speicher
DE102021123290A1 (de) Schnelles verfolgen von cache zum unterstützen von aggressivem vorablesen
DE102022102980A1 (de) Operationsstechniken der datenverlagerung
DE102021006246A1 (de) Doppelt verschachtelte Programmierung einer Speichervorrichtung in einem Speicher-Untersystem
DE102021124072A1 (de) Verfahren zum Synchronisieren einer Zeit zwischen einer Hostvorrichtung und einer Speichervorrichtung und System zum Durchführen desselben
DE112020005001T5 (de) Qlc-programmierverfahren mit zurückspeichern von feindaten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final