DE102020115970B3 - Befehlsoptimierung durch intelligente schwellwertdetektion - Google Patents

Befehlsoptimierung durch intelligente schwellwertdetektion Download PDF

Info

Publication number
DE102020115970B3
DE102020115970B3 DE102020115970.6A DE102020115970A DE102020115970B3 DE 102020115970 B3 DE102020115970 B3 DE 102020115970B3 DE 102020115970 A DE102020115970 A DE 102020115970A DE 102020115970 B3 DE102020115970 B3 DE 102020115970B3
Authority
DE
Germany
Prior art keywords
parameter
read
command
threshold
controller
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
DE102020115970.6A
Other languages
English (en)
Inventor
Robert Ellis
Kevin O´ Toole
Jacob Schmier
Todd Lindberg
Atif Hussain
Venugopal Garuda
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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Application granted granted Critical
Publication of DE102020115970B3 publication Critical patent/DE102020115970B3/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0877Cache access modes
    • G06F12/0882Page mode
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/5642Sensing or reading circuits; Data output circuits
    • 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
    • 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/26Sensing or reading circuits; Data output circuits
    • 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/30Power supply circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of 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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

Gesichtspunkte einer Speichervorrichtung, die einen Speicher und eine Steuerung einschließt, werden bereitgestellt, die erneute Übertragungen von Befehlen zur Merkmalsfestlegung mit identischen Lesespannungsschwellwertverschiebungen für das gleiche Die verhindern. Wenn die Steuerung einen ersten Lesebefehl für in dem Speicher gespeicherte Daten empfängt, identifiziert die Steuerung einen ersten Parameter, um einen ersten Leseschwellwert zu modifizieren, und führt einen ersten Befehl zur Merkmalsfestlegung zum Modifizieren des Leseschwellwerts basierend auf dem ersten Parameter aus. Anschließend, wenn die Steuerung einen zweiten Lesebefehl von der Host-Vorrichtung für in dem Speicher gespeicherte Daten empfängt, identifiziert die Steuerung einen zweiten Parameter, um einen zweiten Leseschwellwert zu modifizieren, und bestimmt, ob der erste und der zweite Parameter gleich sind. Wenn die Parameter gleich sind, unterlässt es die Steuerung, einen zweiten Befehl zur Merkmalsfestlegung zum Modifizieren des zweiten Leseschwellwerts auszuführen. Somit kann die Leselatenz der Speichervorrichtung reduziert werden.

Description

  • HINTERGRUND
  • Gebiet
  • Diese Offenbarung bezieht sich im Allgemeinen auf elektronische Vorrichtungen und insbesondere auf Speichervorrichtungen.
  • Speichervorrichtungen ermöglichen es Benutzern, Daten zu speichern und abzurufen. Beispiele von Speichervorrichtungen schließen nicht-flüchtige Speichervorrichtungen ein. Ein nichtflüchtiger Speicher behält Daten im Allgemeinen nach einem Leistungszyklus bei. Ein Beispiel eines nicht-flüchtigen Speichers ist ein Flash-Speicher, der (eine) Anordnung(en) von NAND-Zellen auf einem oder mehreren Dies einschließen kann. Flash-Speicher kann in Festkörpervorrichtungen (Solid-State Devices, SSDs), Secure Digital-Karten (SD-Karten) und dergleichen zu finden sein.
  • Eine Flash-Speichervorrichtung kann Steuerinformationen speichern, die Daten zugeordnet sind. Zum Beispiel kann eine Flash-Speichervorrichtung Steuertabellen unterhalten, die eine Abbildung von logischen Adressen auf physische Adressen einschließen. Diese Steuertabellen werden verwendet, um den physischen Ort von logischen Sektoren oder Blöcken in dem Flash-Speicher zu verfolgen. Die Steuertabellen sind in dem nicht-flüchtigen Speicher gespeichert, um einen Zugriff auf die gespeicherten Daten nach einem Leistungszyklus zu ermöglichen.
  • Wenn die Flash-Speichervorrichtung Daten aus einer Zelle des Flash-Speichers, z. B. aus einem Speicherort wie einem Block, liest, wird eine Lesespannung der Zelle mit einem oder mehreren Lesespannungsschwellwerten verglichen und werden die in der Zelle gespeicherten Daten (z. B. eine logische 0 oder 1) basierend auf dem Vergleich identifiziert. In einigen Fällen kann die Flash-Speichervorrichtung dynamische Lesevorgänge durchführen, während denen der/die Lesespannungsschwellwert(e) unter Verwendung eines Befehls zur Merkmalsfestlegung vor jedem Lesen verschoben werden können, um die gespeicherten Daten in der Zelle eindeutig zu identifizieren. Jedoch kann das Senden eines Befehls zur Merkmalsfestlegung vor jedem Lesen im Vergleich zu dem Leseerfassungsbefehl eine erhebliche Zeit in Anspruch nehmen (z. B. etwa 2 µs gegenüber weniger als 1 µs für einen Lesevorgang), wodurch die Leselatenz erhöht wird und die Leistung der Flash-Speichervorrichtung beeinträchtigt wird. Aus der US 8259506 B1 ist eine Speichervorrichtung bekannt, die einen Speicher einschließlich eines ersten Speicherortes und eines zweiten Speicherortes sowie eine Steuerung aufweist, die eingerichtet ist, um einen ersten Lesebefehl von einer Host-Vorrichtung für Daten, die in den ersten Speicherort gespeichert sind, zu empfangen, um einen ersten Parameter zu identifizieren, um einen ersten Leseschwellwert, der dem zweiten Speicherort zugeordnet ist, zu modifizieren. Diese Steuerung ist weiter eingerichtet, um einen zweiten Lesebefehl von einer Host-Vorrichtung für Daten, die in dem zweiten Speicherort gespeichert sind, zu empfangen, um einen zweiten Parameter zu identifizieren, um einen zweiten Leseschwellwert, der dem zweiten Speicherort zugeordnet ist, zu modifizieren. Ein vergleichbarer Stand der Technik ist aus der US 2012/0320671 A1 bekannt.
  • KURZDARSTELLUNG
  • Ein Gesichtspunkt einer Speichervorrichtung wird hierin offenbart. Die Speichervorrichtung schließt einen Speicher und eine Steuerung ein. Der Speicher schließt einen ersten Speicherort und einen zweiten Speicherort ein. Die Steuerung ist eingerichtet, um einen ersten Lesebefehl von einer Host-Vorrichtung für Daten, die in dem ersten Speicherort gespeichert sind, zu empfangen, um einen ersten Parameter zu identifizieren, um einen ersten Leseschwellwert, der dem ersten Speicherort zugeordnet ist, zu modifizieren, und um einen ersten Befehl zur Merkmalsfestlegung zum Modifizieren des ersten Leseschwellwerts basierend auf dem ersten Parameter auszuführen. Die Steuerung ist weiterhin eingerichtet, um einen zweiten Lesebefehl von einer Host-Vorrichtung für Daten, die in dem zweiten Speicherort gespeichert sind, zu empfangen, um einen zweiten Parameter zu identifizieren, um einen zweiten Leseschwellwert, der dem zweiten Speicherort zugeordnet ist, zu modifizieren, und um das Ausführen eines zweiten Befehls zur Merkmalsfestlegung zum Modifizieren des zweiten Leseschwellwerts zu unterlassen, wenn der zweite Parameter der gleiche wie der erste Parameter ist.
  • Ein Gesichtspunkt eines Verfahrens wird hierin offenbart. Das Verfahren schließt ein Empfangen eines ersten Lesebefehls von einer Host-Vorrichtung für Daten, die in einem ersten Speicherort eines Speichers einer Speichervorrichtung gespeichert sind, ein Identifizieren eines ersten Parameters, um einen ersten Leseschwellwert, der dem ersten Speicherort zugeordnet ist, zu modifizieren, und ein Ausführen eines ersten Befehls zur Merkmalsfestlegung zum Modifizieren des ersten Leseschwellwerts basierend auf dem ersten Parameter ein. Das Verfahren schließt weiterhin ein Empfangen eines zweiten Lesebefehls von der Host-Vorrichtung für Daten, die in einem zweiten Speicherort des Speichers der Speichervorrichtung gespeichert sind, ein Identifizieren eines zweiten Parameters, um einen zweiten Leseschwellwert, der dem zweiten Speicherort zugeordnet ist, zu modifizieren, und ein Unterlassen des Ausführens eines zweiten Befehls zur Merkmalsfestlegung zum Modifizieren des zweiten Leseschwellwerts, wenn der zweite Parameter der gleiche wie der erste Parameter ist, ein.
  • Ein weiterer Gesichtspunkt einer Speichervorrichtung wird hierin offenbart. Die Speichervorrichtung schließt einen Speicher und eine Steuerung ein. Der Speicher schließt einen ersten Speicherort und einen zweiten Speicherort ein. Die Steuerung ist eingerichtet, um einen ersten Lesebefehl von einer Host-Vorrichtung für Daten, die in dem ersten Speicherort gespeichert sind, zu empfangen, um einen ersten Parameter zu identifizieren, um einen ersten Leseschwellwert, der dem ersten Speicherort zugeordnet ist, zu modifizieren, um einen ersten Befehl zur Merkmalsfestlegung zum Modifizieren des ersten Leseschwellwerts basierend auf dem ersten Parameter auszuführen, um einen zweiten Lesebefehl von einer Host-Vorrichtung für Daten, die in dem zweiten Speicherort gespeichert sind, zu empfangen, und um einen zweiten Parameter zu identifizieren, um einen zweiten Leseschwellwert, der dem zweiten Speicherort zugeordnet ist, zu modifizieren. Die Speichervorrichtung schließt außerdem ein Mittel zum Vergleichen des ersten Parameters mit dem zweiten Parameter ein. Die Steuerung ist weiterhin eingerichtet, um basierend auf dem Mittel zum Vergleichen zu bestimmen, wann der zweite Parameter der gleiche wie der erste Parameter ist, und das Ausführen eines zweiten Befehls zur Merkmalsfestlegung zum Modifizieren des zweiten Leseschwellwerts zu unterlassen, wenn der zweite Parameter der gleiche wie der erste Parameter ist.
  • Es versteht sich, dass andere Gesichtspunkte der Speichervorrichtung und des Verfahrens für den Fachmann aus der folgenden detaillierten Beschreibung leicht ersichtlich werden, wobei verschiedene Gesichtspunkte von Einrichtungen und Verfahren zur Veranschaulichung gezeigt und beschrieben werden. Wie zu erkennen ist, können diese Gesichtspunkte in anderen und unterschiedlichen Formen implementiert werden und sind ihre verschiedenen Details in verschiedenen anderen Hinsichten zu einer Modifikation fähig. Dementsprechend sind die Zeichnungen und die detaillierte Beschreibung als veranschaulichend und nicht als einschränkend zu betrachten.
  • Figurenliste
  • Verschiedene Gesichtspunkte der vorliegenden Erfindung werden nun in der detaillierten Beschreibung als Beispiel und nicht als Einschränkung unter Bezugnahme auf die beigefügten Zeichnungen dargestellt, wobei:
    • 1 ist ein Blockdiagramm, das eine beispielhafte Ausführungsform einer Speichervorrichtung in Kommunikation mit einer Host-Vorrichtung veranschaulicht.
    • 2 ist ein Konzeptdiagramm, das ein Beispiel einer logisch-zu-physisch-Abbildungstabelle in einem nicht-flüchtigen Speicher der Speichervorrichtung von 1 veranschaulicht.
    • 3 ist ein Konzeptdiagramm, das ein Beispiel eines Spannungsverteilungsdiagramms für Multi-Level-Zellen in der Speichervorrichtung von 1 veranschaulicht.
    • 4 ist ein Konzeptdiagramm, das ein Beispiel eines Befehls zur Merkmalsfestlegung veranschaulicht, der vor jedem Befehl zum dynamischen Lesen durch die Speichervorrichtung von 1 ausgeführt wird.
    • 5 ist ein Konzeptdiagramm, das ein Beispiel eines Zeitsteuerungsdiagramms für jeden Befehl zur Merkmalsfestlegung und Befehl zum dynamischen Lesen in 4 veranschaulicht.
    • 6 ist ein Konzeptdiagramm, das ein Beispiel eines Schwellwertverlaufspuffers und eines Komparators veranschaulicht, die durch die Speichervorrichtung von 1 verwendet werden, um das Ausführen mehrerer Befehle zur Merkmalsfestlegung mit identischen Lesespannungsschwellwertverschiebungen zu unterlassen.
    • 7 ist ein Konzeptdiagramm, das ein Beispiel eines Befehls zur Merkmalsfestlegung veranschaulicht, der für einen anfänglichen Befehl zum dynamischen Lesen ausgeführt wird, dessen Ausführung für nachfolgende Befehle zum dynamischen Lesen durch die Speichervorrichtung von 1 jedoch unterlassen wird.
    • 8 ist ein Flussdiagramm, das ein Verfahren zum Verhindern einer erneuten Übertragung mehrerer Befehle zur Merkmalsfestlegung mit identischen Lesespannungsschwellwertverschiebungen durch die Speichervorrichtung von 1 veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • Die nachstehend dargelegte detaillierte Beschreibung in Verbindung mit den beigefügten Zeichnungen ist als eine Beschreibung verschiedener beispielhafter Ausführungsformen der vorliegenden Offenbarung gedacht und soll nicht die einzigen Ausführungsformen darstellen, in denen die vorliegende Erfindung praktisch umgesetzt werden kann. Die detaillierte Beschreibung schließt spezifische Details ein, um ein gründliches Verständnis der vorliegenden Erfindung bereitzustellen. Jedoch ist es für einen Fachmann ersichtlich, dass die vorliegende Erfindung ohne diese spezifischen Details praktisch umgesetzt werden kann. In einigen Fällen sind hinlänglich bekannte Strukturen und Komponenten in Blockdiagrammform gezeigt, um zu vermeiden, dass die Konzepte der vorliegenden Erfindung unklar werden. Akronyme und andere beschreibende Terminologie können lediglich der Einfachheit und Klarheit halber verwendet werden und sollen den Schutzumfang der Erfindung nicht einschränken.
  • Die Wörter „beispielhaft“ und „Beispiel“ werden hierin in der Bedeutung von „als ein Beispiel oder Fall oder zur Veranschaulichung dienend“ verwendet. Jede hierin als „beispielhaft“ beschriebene beispielhafte Ausführungsform ist nicht zwangsläufig als bevorzugt oder vorteilhaft gegenüber anderen beispielhaften Ausführungsformen auszulegen. Gleichermaßen erfordert der Begriff „beispielhafte Ausführungsform“ einer Vorrichtung, eines Verfahrens oder eines Herstellungsartikels nicht, dass alle beispielhaften Ausführungsformen der Erfindung die beschriebene(n) Komponenten, Struktur, Merkmale, Funktionalität, Prozesse, Vorteile, Nutzen oder Betriebsmodi einschließen.
  • In der folgenden detaillierten Beschreibung werden verschiedene Gesichtspunkte einer Speichervorrichtung in Kommunikation mit einer Host-Vorrichtung dargestellt. Diese Gesichtspunkte sind für Flash-Speichervorrichtungen, wie SSDs und SD-Karten, gut geeignet. Jedoch wird der Fachmann erkennen, dass diese Gesichtspunkte auf alle Typen von Speichervorrichtungen, die zum Speichern von Daten in der Lage sind, ausgedehnt werden können. Entsprechend soll jede Bezugnahme auf eine bestimmte Einrichtung oder ein bestimmtes Verfahren nur die verschiedenen Gesichtspunkte der vorliegenden Erfindung veranschaulichen, wobei davon ausgegangen wird, dass diese Gesichtspunkte einen weiten Bereich von Anwendungen aufweisen können, ohne vom Schutzumfang und Geist der vorliegenden Offenbarung abzuweichen.
  • Wenn eine Speichervorrichtung mehrere dynamische Lesevorgänge eines einzelnen Dies durchführt, sendet die Speichervorrichtung im Allgemeinen einen Befehl zur Merkmalsfestlegung vor jedem Lesevorgang. Jeder Befehl zur Merkmalsfestlegung kann eine oder mehrere Lesespannungsschwellwertverschiebungen einschließen, die den/die voreingestellten, programmierten Lesespannungsschwellwert(e) von Zellen modifizieren, um die Speichervorrichtung dabei zu unterstützen, die in den Zellen gespeicherten Daten eindeutig zu identifizieren (z. B. als eine logische 0 oder 1). Jedoch können in bestimmten Fällen, wie Vorgängen des dynamischen Lesens des gleichen Dies, mehrere Befehle zur Merkmalsfestlegung bereitgestellt werden, die die gleichen Lesespannungsschwellwertverschiebungen angeben. Solche doppelten Befehle zur Merkmalsfestlegung können ineffizient sein, die Leselatenz erhöhen und die Leistung der Speichervorrichtung beeinträchtigen.
  • Um die Speichervorrichtungsleistung zu verbessern, ermöglicht es die vorliegende Offenbarung einer Steuerung der Speichervorrichtung, ein Senden mehrerer Befehle zur Merkmalsfestlegung mit identischen Lesespannungsschwellwertverschiebungen basierend auf einem Schwellwertverlaufspuffer für jedes Die oder jede Seite und einem Komparator, wie einer XOR-Engine, zu unterlassen. Wenn die Steuerung einen anfänglichen dynamischen Lesevorgang durchführt, identifiziert die Steuerung einen Parameter, z. B. einen Schwellwertvektor, der eine Lesespannungsschwellwertverschiebung für die Zellen eines Speicherorts (wie einen Block eines Dies) angibt. Die Steuerung speichert dann den Parameter in dem Schwellwertverlaufspuffer für dieses Die (oder diese Seite), z. B. als einen letzten Schwellwertvektor. Die Steuerung führt einen anfänglichen Befehl zur Merkmalsfestlegung aus, der diesen Parameter einschließt, um den Lesespannungsschwellwert zu modifizieren, und dann führt die Steuerung den dynamischen Lesevorgang entsprechend durch. Danach, wenn die Steuerung einen weiteren dynamischen Lesevorgang für dieses Die durchführt, identifiziert die Steuerung einen neuen Parameter, z. B. einen Zielschwellwertvektor, der eine andere Lesespannungsschwellwertverschiebung angibt.
  • Vor dem Ausführen eines anderen Befehls zur Merkmalsfestlegung, der diesen neuen Parameter einschließt, verwendet jedoch die Steuerung den Komparator, um zu bestimmen, ob der neue Parameter (der Zielschwellwertvektor) der gleiche ist wie der gespeicherte Parameter (der letzte Schwellwertvektor). Wenn die Parameter gleich sind (z. B. ein XOR-Ergebnis 0 ist oder ein XNOR-Ergebnis ungleich null ist), bestimmt die Steuerung, dass sich die Lesespannungsschwellwertverschiebung nicht geändert hat, und unterlässt es die Steuerung, einen weiteren Befehl zur Merkmalsfestlegung vor dem Durchführen des nachfolgenden dynamischen Lesevorgangs zu senden. Wenn andernfalls die Parameter verschieden sind (z. B. ein XOR-Ergebnis ungleich null ist oder ein XNOR-Ergebnis 0 ist), führt die Steuerung einen weiteren Befehl zur Merkmalsfestlegung mit der neuen Verschiebung vor dem Durchführen des nachfolgenden dynamischen Lesevorgangs aus und wird der Schwellwertverlaufspuffer für dieses Die oder diese Seite mit dem neuen Parameter, der die Verschiebung angibt, überschrieben. Auf diese Weise kann es die Speichervorrichtung unterlassen, Befehle zur Merkmalsfestlegung mit der gleichen Lesespannungsschwellwertverschiebung erneut zu übertragen, wenn sie das gleiche Die dynamisch liest, wodurch die gesamte Leselatenz reduziert und die Speichervorrichtungsleistung verbessert wird.
  • 1 zeigt ein beispielhaftes Blockdiagramm 100 einer Speichervorrichtung 102, die mit einer Host-Vorrichtung 104 (auch „Host“) gemäß einer beispielhaften Ausführungsform kommuniziert. Der Host 104 und die Speichervorrichtung 102 können ein System, wie ein Computersystem (z. B. Server, Desktop, Mobiltelefon/Laptop, Tablet, Smartphone usw.), bilden. Die Komponenten von 1 können physisch zusammen angeordnet sein oder nicht. In dieser Hinsicht kann der Host 104 entfernt von der Speichervorrichtung 102 angeordnet sein. Wenngleich 1 veranschaulicht, dass der Host 104 getrennt von der Speichervorrichtung 102 gezeigt ist, kann der Host 104 in anderen Ausführungsformen ganz oder teilweise in die Speichervorrichtung 102 integriert sein. Alternativ dazu kann der Host 104 in seiner Gesamtheit oder alternativ mit einiger Funktionalität in der Speichervorrichtung 102 über mehrere entfernte Einheiten verteilt sein.
  • Der Fachmann wird erkennen, dass andere beispielhafte Ausführungsformen mehr oder weniger als die in 1 gezeigten Elemente einschließen können und dass die offenbarten Prozesse in anderen Umgebungen implementiert werden können. Zum Beispiel können andere beispielhafte Ausführungsformen eine unterschiedliche Anzahl von Hosts, die mit der Speichervorrichtung 102 kommunizieren, oder mehrere Speichervorrichtungen 102, die mit dem/den Host(s) kommunizieren, einschließen.
  • Die Host-Vorrichtung 104 kann Daten in der Speichervorrichtung 102 speichern und/oder Daten von dieser abrufen. Die Host-Vorrichtung 104 kann eine beliebige Rechenvorrichtung einschließen, einschließlich zum Beispiel eines Computerservers, einer Network Attached Storage-Einheit (NAS-Einheit), eines Desktop-Computers, eines Notebook-Computers (z. B. eines Laptop-Computers), eines Tablet-Computers, einer mobilen Rechenvorrichtung, wie eines Smartphones, eines Fernsehers, einer Kamera, einer Anzeigevorrichtung, eines digitalen Medienwiedergabegeräts, einer Videospielkonsole, einer Videostreaming-Vorrichtung oder dergleichen. Die Host-Vorrichtung 104 kann mindestens einen Prozessor 101 und einen Host-Speicher 103 einschließen. Der mindestens eine Prozessor 101 kann eine beliebige Form von Hardware einschließen, die zum Verarbeiten von Daten in der Lage ist, und kann eine Universalverarbeitungseinheit (wie eine zentrale Verarbeitungseinheit (Central Processing Unit, CPU)), eine dedizierte Hardware (wie eine anwendungsspezifische integrierte Schaltung (Application Specific Integrated Circuit, ASIC)), einen Digitalsignalprozessor (DSP), konfigurierbare Hardware (wie eine feldprogrammierbare Gatteranordnung (Field Programmable Gate Array, FPGA)) oder eine beliebige andere Form von Verarbeitungseinheit, die durch Softwareanweisungen, Firmware oder dergleichen eingerichtet ist, einschließen. Der Host-Speicher 103 kann durch die Host-Vorrichtung 104 verwendet werden, um durch den Host verarbeitete Daten oder Anweisungen oder von der Speichervorrichtung 102 empfangene Daten zu speichern. In einigen Beispielen kann der Host-Speicher 103 nicht-flüchtigen Speicher, wie magnetische Speichervorrichtungen, optische Speichervorrichtungen, holografische Speichervorrichtungen, Flash-Speichervorrichtungen (z. B. NAND oder NOR), Phasenwechselspeichervorrichtungen (PCM-Vorrichtungen), resistive Direktzugriffsspeicher-Vorrichtungen (ReRAM-Vorrichtungen), magnetoresistive Direktzugriffsspeicher-Vorrichtungen (MRAM-Vorrichtungen), ferroelektrische Direktzugriffsspeicher-Vorrichtungen (F-RAM-Vorrichtungen) und einen beliebigen anderen Typ von nicht-flüchtigen Speichervorrichtungen, einschließen. In anderen Beispielen kann der Host-Speicher 103 flüchtigen Speicher, wie Direktzugriffsspeicher (RAM), dynamischen Direktzugriffsspeicher (DRAM), statischen RAM (SRAM) und synchronen dynamischen RAM (SDRAM (z. B. DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4 und dergleichen) einschließen. Der Host-Speicher 103 kann auch sowohl nicht-flüchtigen Speicher als auch flüchtigen Speicher, egal ob miteinander integriert oder als diskrete Einheiten, einschließen.
  • Die Host-Schnittstelle 106 ist eingerichtet, um die Speichervorrichtung 102 mit dem Host 104 über einen Bus/ein Netzwerk 108 zu verbinden, und kann die Verbindung unter Verwendung von zum Beispiel Ethernet oder WiFi oder einem Bus-Standard, wie Serial Advanced Technology Attachment (SATA), PCI express (PCle), Small Computer System Interface (SCSI) oder Serial Attached SCSI (SAS) neben anderen möglichen Kandidaten, herstellen. Alternativ dazu kann die Host-Schnittstelle 106 drahtlos sein und kann die Speichervorrichtung 102 unter Verwendung von zum Beispiel einer Mobilfunkkommunikation (z. B. 5G NR, 4G LTE, 3G, 2G, GSM/UMTS, CDMA One/CDMA2000 usw.), drahtlosen Verteilungsverfahren durch Zugangspunkte (z. B. IEEE 802.11, WiFi, HiperLAN usw.), Infrarot (IR), Bluetooth, Zigbee oder einer anderen Technologie für ein drahtloses Weitverkehrsnetzwerk (Wireless Wide Area Network, WWAN), ein drahtloses lokales Netzwerk (Wireless Local Area Network, WLAN), ein drahtloses persönliches Netzwerk (Wireless Personal Area Network, WPAN) oder vergleichbaren Technologien für ein Weitverkehrsnetzwerk, ein lokales Netzwerk und ein persönliches Netzwerk mit dem Host 104 verbinden.
  • Wie in der beispielhaften Ausführungsform von 1 gezeigt, schließt die Speichervorrichtung 102 einen nicht-flüchtigen Speicher (Non-Volatile Memory, NVM) 110 zum nicht-flüchtigen Speichern von Daten, die von dem Host 104 empfangen werden, ein. Der NVM 110 kann zum Beispiel integrierte Flash-Schaltungen, NAND-Speicher (z. B. Single-Level-Zellen-Speicher (SLC-Speicher), Multi-Level-Zellen-Speicher (MLC-Speicher), Triple-Level-Zellen-Speicher (TLC-Speicher), Quad-Level-Zellen-Speicher (QLC-Speicher), Penta-Level-Zellen-Speicher (PLC-Speicher) oder eine beliebige Kombination davon) oder NOR-Speicher einschließen. Der NVM 110 kann eine Vielzahl von Speicherorten 112 einschließen, die Systemdaten zum Betreiben der Speichervorrichtung 102 oder Benutzerdaten, die von dem Host zur Speicherung in der Speichervorrichtung 102 empfangen werden, speichern können. Zum Beispiel kann der NVM eine Cross-Point-Architektur, einschließlich einer 2-D-NAND-Anordnung von Speicherorten 112 mit n Zeilen und m Spalten, einschließen, wobei m und n gemäß der Größe des NVM vordefiniert sind. In der veranschaulichten beispielhaften Ausführungsform von 1 kann jeder Speicherort 112 ein Block 114 sein, der mehrere Zellen 116 einschließt. Die Zellen 116 können zum Beispiel Single-Level-Zellen, Multi-Level-Zellen, Triple-Level-Zellen, Quad-Level-Zellen und/oder Penta-Level-Zellen sein. Andere Beispiele von Speicherorten 112 sind möglich; zum Beispiel kann jeder Speicherort ein Die sein, das mehrere Blöcke enthält. Darüber hinaus kann jeder Speicherort einen oder mehrere Blöcke in einer 3-D-NAND-Anordnung einschließen. Darüber hinaus können die veranschaulichten Speicherorte 112 logische Blöcke sein, die auf einem oder mehreren physischen Blöcken abgebildet sind.
  • Die Speichervorrichtung 102 schließt außerdem einen flüchtigen Speicher 118 ein, der zum Beispiel einen dynamischen Direktzugriffsspeicher (DRAM) oder einen statischen Direktzugriffsspeicher (SRAM) einschließen kann. Daten, die in einem flüchtigen Speicher 118 gespeichert sind, können Daten, die aus dem NVM 110 gelesen werden, oder Daten, die in den NVM 110 geschrieben werden sollen, einschließen. In dieser Hinsicht kann der flüchtige Speicher 118 einen Schreibpuffer oder einen Lesepuffer zum temporären Speichern von Daten einschließen. Während 1 den flüchtigen Speicher 118 als von einer Steuerung 123 der Speichervorrichtung 102 entfernt veranschaulicht, kann der flüchtige Speicher 118 in die Steuerung 123 integriert sein.
  • Der Speicher (z. B. der NVM 110) ist eingerichtet, um Daten 119, die von der Host-Vorrichtung 104 empfangen werden, zu speichern. Die Daten 119 können in den Zellen 116 eines beliebigen der Speicherorte 112 gespeichert sein. Als ein Beispiel veranschaulicht 1 die Daten 119, die an verschiedenen Speicherorten 112 gespeichert sind, obwohl die Daten an dem gleichen Speicherort gespeichert sein können. In einem anderen Beispiel können die Speicherorte 112 verschiedene Dies sein und können die Daten in einem oder mehreren der verschiedenen Dies gespeichert sein.
  • Alle der Daten 119 können einer logischen Adresse zugeordnet sein. Zum Beispiel kann der NVM 110 eine logisch-zu-physisch-Abbildungstabelle (L2P-Abbildungstabelle) 120 für die Speichervorrichtung 102 speichern, die allen Daten 119 eine logische Adresse zuordnet. Die L2P-Abbildungstabelle 120 speichert die Abbildung von logischen Adressen, die für Daten spezifiziert sind, die von dem Host 104 geschrieben werden, auf physische Adressen in dem NVM 110, wobei der/die Ort(e) angegeben werden, in denen alle der Daten gespeichert sind. Diese Abbildung kann durch die Steuerung 123 der Speichervorrichtung durchgeführt werden. Die L2P-Abbildungstabelle kann eine Tabelle oder eine andere Datenstruktur sein, die eine Kennung einschließt, wie eine logische Blockadresse (LBA), die jedem Speicherort 112 in dem NVM, in dem Daten gespeichert sind, zugeordnet ist. Während 1 eine einzelne L2P-Abbildungstabelle 120 veranschaulicht, die an einem der Speicherorte 112 von NVM gespeichert ist, um eine unangemessene Verunklarung der Konzepte von 1 zu vermeiden, kann die L2P-Abbildungstabelle 120 tatsächlich mehrere Tabellen einschließen, die an einem oder mehreren Speicherorten von NVM gespeichert sind.
  • 2 ist ein Konzeptdiagramm 200 eines Beispiels einer L2P-Abbildungstabelle 205, die die Abbildung von Daten 202, die von einer Host-Vorrichtung empfangen werden, auf logische Adressen und physische Adressen in dem NVM 110 von 1 veranschaulicht. Die Daten 202 können den Daten 119 in 1 entsprechen, während die L2P-Abbildungstabelle 205 der L2P-Abbildungstabelle 120 in 1 entsprechen kann. In einer beispielhaften Ausführungsform können die Daten 202 in einer oder mehreren Seiten 204 gespeichert sein, z. B. Seiten 1 bis x, wobei x die Gesamtanzahl von Seiten von Daten ist, die in den NVM 110 geschrieben werden. Jede Seite 204 kann einem oder mehreren Einträgen 206 der L2P-Abbildungstabelle 205 zugeordnet sein, die eine logische Blockadresse (LBA) 208, eine physische Adresse 210, die den in den NVM geschriebenen Daten zugeordnet ist, und eine Länge 212 der Daten identifizieren. Die LBA 208 kann eine logische Adresse sein, die in einem Schreibbefehl für die von der Host-Vorrichtung empfangenen Daten spezifiziert ist. Die physische Adresse 210 kann den Block und die Verschiebung angeben, bei denen die Daten, die der LBA 208 zugeordnet sind, physisch geschrieben werden. Die Länge 212 kann eine Größe der geschriebenen Daten angeben (z. B. 4 KB oder eine andere Größe).
  • Unter erneuter Bezugnahme auf 1 speichert der flüchtige Speicher 118 außerdem einen Cache 122 für die Speichervorrichtung 102. Der Cache 122 schließt Einträge ein, die die Abbildung von logischen Adressen, die für Daten spezifiziert sind, die durch den Host 104 angefordert werden, auf physische Adressen in dem NVM 110 zeigen, wobei der/die Ort(e) angegeben werden, in denen die Daten gespeichert sind. Diese Abbildung kann durch die Steuerung 123 durchgeführt werden. Wenn die Steuerung 123 einen Lesebefehl oder einen Schreibbefehl für die Daten 119 empfängt, prüft die Steuerung den Cache 122 auf die logisch-zu-physisch-Abbildung aller Daten. Wenn eine Abbildung nicht vorhanden ist (es z. B. die erste Anforderung für die Daten ist), greift die Steuerung auf die L2P-Abbildungstabelle 120 zu und speichert die Abbildung in dem Cache 122. Wenn die Steuerung 123 den Lesebefehl oder Schreibbefehl ausführt, greift die Steuerung auf die Abbildung aus dem Cache zu und liest die Daten aus dem NVM 110 an der spezifizierten physischen Adresse oder schreibt sie in diesen. Der Cache kann in Form einer Tabelle oder einer anderen Datenstruktur gespeichert sein, die eine logische Adresse einschließt, die jedem Speicherort 112 in NVM zugeordnet ist, wo Daten gelesen werden.
  • Der NVM 110 schließt Leseverstärker 124 und Daten-Latches 126 ein, die mit jedem Speicherort 112 verbunden sind. Zum Beispiel kann der Speicherort 112 ein Block sein, der Zellen 116 auf mehreren Bitleitungen einschließt und kann der NVM 110 einen Leseverstärker 124 auf jeder Bitleitung einschließen. Darüber hinaus können ein oder mehrere Daten-Latches 126 mit den Bitleitungen und/oder Leseverstärkern verbunden sein. Bei den Daten-Latches kann es sich zum Beispiel um Schieberegister handeln. Wenn Daten aus den Zellen 116 des Speicherorts 112 gelesen werden, erfassen die Leseverstärker 124 die Daten durch Verstärken der Spannungen auf den Bitleitungen auf einen logischen Pegel (z. B. lesbar als eine „0“ oder eine „1‟) und werden die erfassten Daten in den Daten-Latches 126 gespeichert. Die Daten werden dann von den Daten-Latches 126 an die Steuerung 123 übertragen, wonach die Daten in dem flüchtigen Speicher 118 gespeichert werden, bis sie an die Host-Vorrichtung 104 übertragen werden. Wenn Daten in die Zellen 116 des Speicherorts 112 geschrieben werden, speichert die Steuerung 123 die programmierten Daten in den Daten-Latches 126 und werden die Daten anschließend von den Daten-Latches 126 an die Zellen 116 übertragen.
  • Die Speichervorrichtung 102 schließt eine Steuerung 123 ein, die Schaltlogik, wie einen oder mehrere Prozessoren zum Ausführen von Anweisungen einschließt, und kann einen Mikrocontroller, einen Digitalsignalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (Application-Specific Integrated Circuit, ASIC), eine feldprogrammierbare Gatteranordnung (Field Programmable Gate Array, FPGA), festverdrahtete Logik, analoge Schaltlogik und/oder eine Kombination davon einschließen.
  • Die Steuerung 123 ist eingerichtet, um Daten zu empfangen, die von einer oder mehreren der Zellen 116 der verschiedenen Speicherorte 112 als Reaktion auf einen Lesebefehl übertragen werden. Zum Beispiel kann die Steuerung 123 die Daten 119 lesen, indem sie die Leseverstärker 124 aktiviert, um die Daten aus den Zellen 116 in Daten-Latches 126 zu erfassen, und die Steuerung 123 kann die Daten von den Daten-Latches 126 empfangen. Die Steuerung 123 ist außerdem eingerichtet, um als Reaktion auf einen Schreibbefehl Daten in eine oder mehrere der Zellen 116 zu programmieren. Zum Beispiel kann die Steuerung 123 die Daten 119 schreiben, indem sie Daten an die Daten-Latches 126 sendet, um in die Zellen 116 programmiert zu werden. Die Steuerung 123 ist weiterhin eingerichtet, um beim Lesen oder Schreiben von Daten in die Zellen 116 auf die L2P-Abbildungstabelle 120 in dem NVM 110 zuzugreifen. Zum Beispiel kann die Steuerung 123 logisch-zu-physisch-Adressabbildungen von dem NVM 110 als Reaktion auf Lese- oder Schreibbefehle von der Host-Vorrichtung 104 empfangen, die physischen Adressen identifizieren, die auf die logischen Adressen abgebildet sind, die in den Befehlen identifiziert sind, (z. B. die logischen Adressen in physische Adressen übersetzen) und auf Daten in den Zellen 116, die sich an den abgebildeten physischen Adressen befinden, zugreifen oder diese speichern.
  • Die Steuerung 123 und ihre Komponenten können mit eingebetteter Software implementiert sein, die die verschiedenen Funktionen der in dieser Offenbarung beschriebenen Steuerung durchführt. Alternativ dazu kann Software zum Implementieren jeder der zuvor erwähnten Funktionen und Komponenten in dem NVM 110 oder in einem Speicher außerhalb der Speichervorrichtung 102 oder der Host-Vorrichtung 104 gespeichert sein, und es kann durch die Steuerung 123 zur Ausführung durch den einen oder die mehreren Prozessoren der Steuerung 123 auf sie zugegriffen werden. Alternativ dazu können die Funktionen und Komponenten der Steuerung mit Hardware in der Steuerung 123 implementiert sein, oder sie können unter Verwendung einer Kombination der zuvor erwähnten Hardware und Software implementiert sein.
  • Im Betrieb speichert die Host-Vorrichtung 104 Daten in der Speichervorrichtung 102 durch Senden eines Schreibbefehls an die Speichervorrichtung 102, der eine oder mehrere logische Adressen (z. B. LBAs) sowie eine Länge der zu schreibenden Daten spezifiziert. Das Schnittstellenelement 106 empfängt den Schreibbefehl, und die Steuerung ordnet einen Speicherort 112 in dem NVM 110 der Speichervorrichtung 102 zum Speichern der Daten zu. Die Steuerung 123 speichert die L2P-Abbildung in dem NVM (und dem Cache 122), um eine logische Adresse, die den Daten zugeordnet ist, auf die physische Adresse des Speicherorts 112 abzubilden, der für die Daten zugeordnet ist. Die Steuerung speichert außerdem die Länge der L2P-abgebildeten Daten. Die Steuerung 123 speichert dann die Daten an dem Speicherort 112, indem sie sie an einen oder mehrere Daten-Latches 126 sendet, die mit dem zugeordneten Speicherort verbunden sind, von dem die Daten in die Zellen 116 programmiert werden.
  • Der Host 104 kann Daten von der Speichervorrichtung 102 abrufen, indem er einen Lesebefehl sendet, der eine oder mehrere logische Adressen, die den Daten zugeordnet sind, welche von der Speichervorrichtung 102 abgerufen werden sollen, sowie eine Länge der zu lesenden Daten spezifiziert. Die Schnittstelle 106 empfängt den Lesebefehl, und die Steuerung 123 greift auf die L2P-Abbildung in dem Cache 122 oder ansonsten in dem NVM zu, um die logischen Adressen, die in dem Lesebefehl spezifiziert sind, in die physischen Adressen zu übersetzen, die den Ort der Daten angeben. Die Steuerung 123 liest dann die angeforderten Daten aus dem durch die physischen Adressen spezifizierten Speicherort 112, indem sie die Daten unter Verwendung der Leseverstärker 124 erfasst und in Daten-Latches 126 speichert, bis die gelesenen Daten über die Host-Schnittstelle 106 an den Host 104 zurückgegeben werden.
  • Wenn die Steuerung 123 die Daten 119 aus dem NVM 110 liest, wie oben beschrieben, vergleicht die Steuerung die Spannung in den Zellen 116 mit einem oder mehreren Lesespannungsschwellwerten, um den logischen Wert der Daten zu bestimmen. 3 veranschaulicht ein Beispiel eines Spannungsverteilungsdiagramms 300 für Multi-Level-Zellen, die zwei Bits von Daten speichern (z. B. eine logische 00, 01, 10 oder 11). Der logische Wert jeder Multi-Level-Zelle kann basierend auf einem Vergleich einer Spannung in der Zelle mit Leseschwellwertspannungen 302, 304, 306 bestimmt werden. Zum Beispiel kann die Steuerung bestimmen, dass eine bestimmte Zelle Daten speichert, die einer logischen „11“ entsprechen, wenn die Spannung der Zelle unter der Leseschwellwertspannung 302 ist, die einer logischen „10“ entsprechen, wenn die Spannung zwischen der Leseschwellwertspannung 302 und der Leseschwellwertspannung 304 ist, die einer logischen „01“ entsprechen, wenn die Spannung zwischen der Leseschwellwertspannung 304 und der Leseschwellwertspannung 306 ist, oder die einer logischen „00“ entsprechen, wenn die Spannung über der Leseschwellwertspannung 306 ist. Während 3 drei Leseschwellwertspannungen für Multi-Level-Zellen veranschaulicht, kann sich die Anzahl von Leseschwellwertspannungen in Abhängigkeit von der Menge an Daten ändern, die in jeder Zelle gespeichert sind (z. B. eine Schwellwertspannung für Single-Level-Zellen, sieben Schwellwertspannungen für Triple-Level-Zellen usw.).
  • Wenngleich die Steuerung 123 die Daten 119 unter Verwendung voreingestellter Lesespannungen (z. B. Leseschwellwertspannungen 302, 304, 306) aus den Zellen 116 lesen kann, können die Leseschwellwertspannungen in einigen Fällen die gespeicherten Daten in den Zellen nicht eindeutig unterscheiden (z. B. als logische 00, 01 usw.). Zum Beispiel können sich in einigen Fällen die Leseschwellwertspannungen 302, 304, 306 mit einer oder mehreren der jeweiligen Kurven von 3 überlappen, was zu möglichen Datenlesefehlern führt. In solchen Fällen kann die Steuerung Lesefehler reduzieren, indem sie einen dynamischen Lesevorgang durchführt, z. B. Lesespannungsschwellwertverschiebungen dynamisch anwendet, um die voreingestellten Leseschwellwerte zu modifizieren, wenn die Daten gelesen werden. Um die Leseschwellwerte zu modifizieren, kann die Steuerung 123 einen Befehl zur Merkmalsfestlegung senden.
  • 4 veranschaulicht ein Beispiel 400 von mehreren Befehlen zum dynamischen Lesen, denen einzelne Sätze von Merkmalsbefehlen vorangehen. Wenn die Steuerung 123 einen ersten Lesebefehl von der Host-Vorrichtung 104 empfängt, kann die Steuerung einen ersten Befehl zur Merkmalsfestlegung 402 ausführen, um den/die Lesespannungsschwellwert(e) 302, 304, 306 zu modifizieren, bevor ein erster Befehl zum dynamischen Lesen 404 für Daten ausgeführt wird, die durch die Host-Vorrichtung angefordert werden. In ähnlicher Weise, wenn die Steuerung einen zweiten Lesebefehl von der Host-Vorrichtung empfängt, kann die Steuerung einen zweiten Befehl zur Merkmalsfestlegung 406 ausführen, um den/die Lesespannungsschwellwert(e) zu modifizieren, bevor ein zweiter Befehl zum dynamischen Lesen 408 für Daten ausgeführt wird, die durch die Host-Vorrichtung angefordert werden. Jeder Befehl zum dynamischen Lesen kann Daten in einer einzelnen Ebene eines bestimmten Dies anfordern (z. B. ein dynamisches Lesen einer einzelnen Ebene).
  • In einem Beispiel, wenn die Steuerung 123 einen Befehl zur Merkmalsfestlegung 402, 406 ausführt, kann die Steuerung einen Wert, der den Befehl angibt (z. B. D5h für eine Merkmalsfestlegung), eine Die-Adresse, die das Ziel-Die für den Befehl angibt, eine Merkmalsadresse, die ein Merkmalsregister zum Speichern der Spannungsschwellwertverschiebungen angibt, und einen oder mehrere Parameter 403, 407 (z. B. eine Sequenz von vier Bytes), die die Spannungsschwellwertverschiebungen angeben, die in dem Merkmalsregister gespeichert werden sollen, an einen Sequenzer in dem NVM 110 senden. In einigen Fällen kann die Steuerung anschließend einen internen Belegt-Status des Dies verfolgen (z. B. durch Statusabfragen), bevor sie damit fortfährt, den Befehl zum dynamischen Lesen 404, 408 zu senden. Alternativ dazu kann die Steuerung das Verfolgen des internen Belegt-Status unterlassen und einen Zeitraum (z. B. tFeat_NO_BUSY oder etwa 700 ns oder eine andere Zahl) warten, bevor sie den Befehl zum dynamischen Lesen sendet, was optimalerweise mehr Zeit sparen kann (z. B. mindestens 300-400 ns) als das Verfolgen des internen Belegt-Status.
  • Nach dem Ausführen des Befehls zur Merkmalsfestlegung 402, 406, wenn die Steuerung 123 den Befehl zum dynamischen Lesen 404, 408 ausführt, kann die Steuerung Werte, die den Befehl angeben, (z. B. 5Dh für ein dynamisches Lesen, gefolgt von 00h und 30h für den Lesevorgang), eine physische Adresse zum Lesen der Daten (z. B. physische Adresse 210) und Statusbefehle (z.B. F1h), die sich wiederholen können, bis die Steuerung eine Angabe empfängt, dass das Die bereit ist, an den Sequenzer senden. Die in dem Merkmalsregister gespeicherten Parameter 403, 407 können verwendet werden, um die Lesespannungsschwellwerte zu verschieben, wenn die Daten aus den Zellen gelesen werden. Sobald die Daten dynamisch gelesen werden, werden die Daten anschließend an die Steuerung übertragen, z. B. an den flüchtigen Speicher 118 zur Übertragung an die Host-Vorrichtung.
  • Wenn jedoch die Speichervorrichtung 102 stark auf Befehle zum dynamischen Lesen 404, 408 gestützt ist, um Daten basierend auf Spannungsschwellwertverschiebungen zu lesen, kann das Senden eines Befehls zur Merkmalsfestlegung 402, 406 vor jedem Befehl zum dynamischen Lesen die Leselatenz der Speichervorrichtung erhöhen. 5 veranschaulicht ein Zeitsteuerungsdiagramm 500, das ein Beispiel des Zeitsteuerungsunterschieds zwischen einem Befehl zur Merkmalsfestlegung und einem Befehl zum dynamischen Lesen zeigt. Wie in dem Diagramm gezeigt, kann eine Zeitsteuerung 502 zum Ausführen eines Befehls zur Merkmalsfestlegung erheblich länger sein als eine Zeitsteuerung 504 zum Ausführen eines Befehls zum dynamischen Lesen. Während zum Beispiel die Zeitsteuerung 504 zum Durchführen eines Leseerfassungsbefehls kleiner als 1 µs sein kann, kann die Zeitsteuerung 502 zum Erstellen und Senden eines Befehls zur Merkmalsfestlegung (selbst wenn dazu optimiert, keine Belegt-Status-Verfolgung zu verwenden, wie oben beschrieben) etwa 2 µs sein. Wenn somit ein Befehl zur Merkmalsfestlegung vor jedem Leseerfassungsbefehl erneut übertragen wird, kann die Gesamtauswirkung auf die Leselatenz der Speichervorrichtung erheblich sein, insbesondere für zufällige Lesevorgänge, wo mehr Befehle zum dynamischen Lesen ausgeführt werden können als für sequentielle Lesevorgänge.
  • Um dieses Problem zu behandeln, veranschaulicht 6 ein Beispiel 600 eines Schwellwertverlaufspuffers 602 und eines Komparators 604, die zum Minimieren einer erneuten Übertragung von Befehlen zur Merkmalsfestlegung (z. B. eines zweiten Befehls zur Merkmalsfestlegung 406) verwendet werden können, um die zuvor erwähnte Leselatenz zu reduzieren. Der Schwellwertverlaufspuffer 602 kann ein Puffer in dem flüchtigen Speicher 118 (z. B. Cache 122) sein, der einen neuesten oder letzten Schwellwertvektor für ein Die speichert. Der letzte Schwellwertvektor kann der Parameter 403, 407 sein, der in dem Befehl zur Merkmalsfestlegung 402, 406 identifiziert ist, der die Lesespannungsschwellwertverschiebung(en) für ein bestimmtes Die angibt. Zum Beispiel kann Bezug nehmend auf 4 der letzte Schwellwertvektor dem Parameter 403 (z. B. der Sequenz von vier Bytes) in dem Befehl zur Merkmalsfestlegung 402 entsprechen, wenn der Befehl zum dynamischen Lesen 404 der zuletzt ausgeführte Lesebefehl ist. Der Schwellwertverlaufspuffer 602 kann in Firmware/Software oder in Hardware (z. B. einem ASIC) implementiert sein, wie in 6 veranschaulicht. Zum Beispiel kann der Schwellwertverlaufspuffer einen oder mehrere Daten-Latches einschließen, die mit dem Merkmalsregister drahtverbunden sind, das die Spannungsschwellwertverschiebungen wie oben beschrieben speichert.
  • In einem Beispiel kann der Schwellwertverlaufspuffer 602 einem einzelnen Die 601 zugeordnet sein. Zum Beispiel können mehrere Schwellwertverlaufspuffer 602 in Hardware vorhanden sein, wobei jeder Puffer einem jeweiligen Die zugeordnet ist. Somit kann jeder Schwellwertverlaufspuffer den letzten Schwellwertvektor für ein verschiedenes Die speichern. Wenn zum Beispiel die Befehle zur Merkmalsfestlegung 402 und 406 verschiedene Die-Adressen einschließen, kann der Parameter 403 in einem Schwellwertverlaufspuffer gespeichert sein, der der ersten Die-Adresse zugeordnet ist, und kann der Parameter 407 in einem anderen Schwellwertverlaufspuffer gespeichert sein, der der zweiten Die-Adresse zugeordnet ist.
  • In einem anderen Beispiel kann der Schwellwertverlaufspuffer 602 einer einzelnen Seite 603 eines Speicherorts 605 zugeordnet sein. Der Speicherort 605 kann dem Speicherort 112, z. B. Block 114, entsprechen. Zum Beispiel können mehrere Schwellwertverlaufspuffer 602 in Hardware vorhanden sein, wobei jeder Puffer einer jeweiligen Seite eines Blocks eines Dies zugeordnet ist. Somit kann jeder Schwellwertverlaufspuffer den letzten Schwellwertvektor für eine verschiedene Seite speichern. Wenn zum Beispiel die Befehle zum dynamischen Lesen 404, 408 verschiedene physische Adressen (die verschiedenen Seiten zugeordnet sind) einschließen, kann der Parameter 403 in einem Schwellwertverlaufspuffer gespeichert sein, der der ersten Seite zugeordnet ist, und kann der Parameter 407 in einem anderen Schwellwertverlaufspuffer gespeichert sein, der der zweiten Seite zugeordnet ist.
  • Jeder Schwellwertverlaufspuffer 602 kann eine(n) oder mehrere Indikatoren 606 oder Variablen (z. B. A, C, E, G) einschließen, die einzelne Komponenten oder Spannungseinstellungen des letzten Schwellwertvektors darstellen. Zum Beispiel kann der erste Indikator A das erste Byte des Parameters 403 darstellen, kann der zweite Indikator C das zweite Byte des Parameters 403 darstellen, kann der dritte Indikator E das dritte Byte des Parameters 403 darstellen und kann der vierte Indikator G das vierte Byte des Parameters 403 darstellen. Während der in 6 veranschaulichte Schwellwertverlaufspuffer 602 vier Bytes (32 Bit) mit vier Indikatoren (A, C, E, G) überspannt, kann der Schwellwertverlaufspuffer 602 alternativ dazu andere Längen überspannen oder andere Anzahlen von Indikatoren 606 basierend auf einer Länge oder Zusammensetzung des Parameters 403 einschließen. Wenn zum Beispiel der Parameter 403 ein einzelnes Byte ist, kann der Schwellwertverlaufspuffer 602 vier Indikatoren, die jeweils 2 Bits des Parameters 403 darstellen, einen Indikator, der die gesamten 8 Bits des Parameters 403 darstellt, oder andere Beispiele einschließen.
  • Der Komparator 604 kann als eine Eingabe Daten von dem Schwellwertverlaufspuffer 602 empfangen. Der Komparator 604 kann in Firmware/Software (z. B. als XOR- oder XNOR-Operand) oder in Hardware implementiert sein, wie in 6 veranschaulicht. Zum Beispiel kann der Komparator 604 XOR-Gatter oder XNOR-Gatter einschließen, die mit dem Schwellwertverlaufspuffer 602 drahtverbunden sind. Die Länge des Komparators 604 kann der Länge des Schwellwertverlaufspuffers 602 entsprechen. Wenn zum Beispiel der Schwellwertverlaufspuffer 602 eine Länge von 32 Bits überspannt, wie oben beschrieben, kann der Komparator 604 32 XOR- oder XNOR-Gatter einschließen, die jeweils einzelne Bits von dem Schwellwertverlaufspuffer empfangen. Während außerdem 6 einen Komparator 604 und einen Schwellwertverlaufspuffer 602 veranschaulicht, können mehrere Komparatoren und Schwellwertverlaufspuffer vorhanden sein. Wenn zum Beispiel mehrere Schwellwertverlaufspuffer jeweils verschiedenen Dies (oder Seiten) zugeordnet sind, wie oben beschrieben, können mehrere Komparatoren 604 in Hardware eingeschlossen sein, die einzeln mit jeweiligen Schwellwertverlaufspuffern drahtverbunden sind.
  • Wenn die Steuerung 123 einen Lesebefehl von der Host-Vorrichtung 104 empfängt, kann die Steuerung einen Zielschwellwertvektor 608 identifizieren, der eine Lesespannungsschwellwertverschiebung zum Lesen der Daten aus dem NVM 110 angibt. Wenn zum Beispiel der Lesebefehl der erste Lesebefehl ist, der einem bestimmten Die zugeordnet ist, kann der Zielschwellwertvektor dem Parameter 403 von 4 entsprechen, der eine Sequenz von Bytes sein kann, die die Lesespannungsschwellwertverschiebung(en) für das Die angeben, das dem ersten Lesebefehl (z. B. dem Befehl zum dynamischen Lesen 404) zugeordnet ist. Alternativ dazu, wenn der Lesebefehl der zweite oder spätere Lesebefehl ist, der dem gleichen Die zugeordnet ist, kann der Zielschwellwertvektor dem Parameter 407 von 4 entsprechen, der eine Sequenz von Bytes sein kann, die die Lesespannungsschwellwertverschiebung(en) für das Die angeben, das dem zweiten oder späteren Lesebefehl (z. B. dem Befehl zum dynamischen Lesen 408) zugeordnet ist. Der Zielschwellwertvektor 608 kann auch die gleiche Länge wie der letzte Schwellwertvektor in dem Schwellwertverlaufspuffer 602 aufweisen. Zum Beispiel kann der Zielschwellwertvektor 608 in ähnlicher Weise durch vier Indikatoren (A, C, E und G) dargestellt sein, wobei jeder Indikator ein entsprechendes der vier Bytes des in 4 veranschaulichten Parameters 403 oder 407 darstellt.
  • In einem Betriebsbeispiel kann die Steuerung einen ersten Lesebefehl zum Lesen von Daten aus dem Speicherort 605, 607 des Dies 601 empfangen. In einem solchen Fall kann die Steuerung einen anfänglichen Zielschwellwertvektor (z. B. den Parameter 403) identifizieren, um den/die Lesespannungsschwellwert(e) für die Zellen oder die Seite 603 in diesem Speicherort zu modifizieren, und kann die Steuerung einen Befehl zur Merkmalsfestlegung (z. B. den Befehl zur Merkmalsfestlegung 402) senden, bevor der Lesevorgang (z. B. der Befehl zum dynamischen Lesen 404) durchgeführt wird. Der Schwellwertverlaufspuffer 602 für das Die 601 oder die Seite 603 kann dann mit dem anfänglichen Zielschwellwertvektor aktualisiert werden, wodurch er zum letzten Schwellwertvektor für das Die oder die Seite wird. Wenn zum Beispiel der Schwellwertverlaufspuffer in Firmware/Software implementiert ist, kann die Steuerung 123 den Puffer mit dem zuletzt identifizierten Schwellwertvektor aktualisieren. Wenn in einem anderen Beispiel der Schwellwertverlaufspuffer in Hardware implementiert ist, kann der Schwellwertverlaufspuffer automatisch mit den Lesespannungsschwellwertverschiebungen aus dem Merkmalsregister aktualisiert werden (z. B. als Reaktion auf den Befehl zur Merkmalsfestlegung 402).
  • Anschließend kann die Steuerung einen zweiten Lesebefehl zum Lesen von Daten aus dem Speicherort 605, 607 des Dies 601 empfangen. In einem solchen Fall kann die Steuerung einen Zielschwellwertvektor 608 (z. B. den Parameter 407) identifizieren, um den/die Lesespannungsschwellwert(e) für die Zellen oder die Seite 603 an diesem Speicherort zu modifizieren. Jedoch kann es die Steuerung unterlassen, einen weiteren Befehl zur Merkmalsfestlegung (z. B. den Befehl zur Merkmalsfestlegung 406) zu senden, bevor der Lesevorgang (z. B. der Befehl zum dynamischen Lesen 408) durchgeführt wird, wenn sich der Schwellwertvektor oder (eine) Verschiebung(en) seit dem vorhergehenden Befehl zur Merkmalsfestlegung nicht geändert hat.
  • Um zu bestimmen, ob sich die Verschiebungen geändert haben, verwendet die Steuerung den Komparator 604, um den Zielschwellwertvektor 608 mit dem letzten Schwellwertvektor in dem Schwellwertverlaufspuffer 602 entsprechend dem Die 601 oder der Seite 603 zu vergleichen. Wenn ein Ergebnis 610 des Vergleichs angibt, dass die Parameter gleich sind, unterlässt es die Steuerung, den Befehl zur Merkmalsfestlegung erneut zu übertragen und kann der Befehl zum dynamischen Lesen (z. B. der Befehl zum dynamischen Lesen 408) basierend auf den zuvor gespeicherten Spannungsschwellwertverschiebungen durchgeführt werden. Alternativ dazu, wenn das Ergebnis 610 des Vergleichs angibt, dass die Parameter verschieden sind, überträgt die Steuerung den Befehl zur Merkmalsfestlegung (z. B. den Befehl zur Merkmalsfestlegung 406) erneut und führt den Befehl zum dynamischen Lesen basierend auf den aktualisierten Spannungsschwellwertverschiebungen durch. Wenn zum Beispiel der Komparator 604 XOR-Gatter einschließt, kann es die Steuerung unterlassen, den Befehl zur Merkmalsfestlegung erneut zu übertragen, wenn das Ergebnis 610 null ist, und kann die Steuerung den Befehl zur Merkmalsfestlegung erneut übertragen, wenn das Ergebnis 610 ungleich null ist. In ähnlicher Weise, wenn der Komparator 604 XNOR-Gatter einschließt, kann es die Steuerung unterlassen, den Befehl zur Merkmalsfestlegung erneut zu übertragen, wenn das Ergebnis 610 ungleich null ist, und kann die Steuerung den Befehl zur Merkmalsfestlegung erneut übertragen, wenn das Ergebnis 610 null ist. Der Schwellwertverlaufspuffer 602 kann dann mit dem Zielschwellwertvektor aktualisiert werden, wodurch er zum letzten Schwellwertvektor für das Die 601 oder die Seite 603 wird. Wenn zum Beispiel der Schwellwertverlaufspuffer in Hardware implementiert ist, kann der Schwellwertverlaufspuffer automatisch mit den modifizierten Lesespannungsschwellwertverschiebungen aus dem aktualisierten Merkmalsregister aktualisiert werden (z. B. als Reaktion auf den Befehl zur Merkmalsfestlegung 406).
  • Dadurch, weil es die Speichervorrichtung unterlassen kann, doppelte Befehle zur Merkmalsfestlegung zu senden, wenn die Lesespannungsschwellwertverschiebung unverändert ist, kann die Leselatenz der Speichervorrichtung reduziert sein. Zum Beispiel veranschaulicht 7 ein Beispiel 700 einer modifizierten Befehlssequenz in Bezug auf 4, in der es die Steuerung unterlassen kann, Befehle zur Merkmalsfestlegung für das gleiche Die basierend auf dem Ergebnis 610 des Vergleichs von Schwellwertvektoren in 6 erneut zu übertragen. Zum Beispiel, während die Steuerung einen anfänglichen Befehl zur Merkmalsfestlegung 702 als Reaktion auf einen Lesebefehl von einer Host-Vorrichtung senden kann, bevor sie einen anfänglichen Befehl zum dynamischen Lesen 704 für ein bestimmtes Die sendet, kann es die Steuerung unterlassen, einen weiteren Befehl zur Merkmalsfestlegung als Reaktion auf einen nachfolgenden Lesebefehl zu senden, bevor sie einen weiteren Befehl zum dynamischen Lesen 706 basierend auf dem oben beschriebenen Schwellwertvektorvergleich sendet.
  • 8 veranschaulicht ein beispielhaftes Flussdiagramm 800 eines Verfahrens zum Verhindern einer erneuten Übertragung mehrerer Befehle zur Merkmalsfestlegung mit identischen Lesespannungsschwellwertverschiebungen. Zum Beispiel kann das Verfahren in einer Speichervorrichtung 102, wie der in 1 veranschaulichten, ausgeführt werden. Jeder der Schritte in dem Flussdiagramm kann unter Verwendung der Steuerung wie unten beschrieben (z. B. der Steuerung 123) oder durch ein beliebiges anderes geeignetes Mittel gesteuert werden. Optionale Gesichtspunkte sind in gestrichelten Linien veranschaulicht.
  • Wie durch Block 802 dargestellt, empfängt die Steuerung einen ersten Lesebefehl von einer Host-Vorrichtung für Daten, die in einem ersten Speicherort eines Speichers gespeichert sind. Zum Beispiel kann die Steuerung 123 Bezug nehmend auf 1 und 6 einen ersten Lesebefehl von der Host-Vorrichtung 104 für die Daten 119 empfangen, die in einem Speicherort 112 (z. B. dem Speicherort 605) des NVM 110 gespeichert sind.
  • Wie durch Block 804 dargestellt, identifiziert die Steuerung einen ersten Parameter, um einen ersten Leseschwellwert zu modifizieren, der dem ersten Speicherort zugeordnet ist. Der erste Parameter kann eine erste Spannungseinstellung aufweisen. Der erste Parameter kann auch ein Die angeben, das den ersten Speicherort aufweist. Darüber hinaus kann der erste Parameter eine erste Seite des ersten Speicherorts angeben. Zum Beispiel kann die Steuerung 123 Bezug nehmend auf 1, 3, 4 und 6 den Parameter 403 identifizieren, z. B. einen Schwellwertvektor, der einen oder mehrere Indikatoren 606 (z. B. Spannungseinstellungen oder Lesespannungsschwellwertverschiebungen) einschließt, um einen Lesespannungsschwellwert 302, 304, 306 der Zellen 116 an dem Speicherort 605 eines Dies 601 zu modifizieren. Der Schwellwertvektor kann in einem Schwellwertverlaufspuffer 602 gespeichert sein, der dem Die 601 oder einer Seite 603 des Speicherorts 605 in dem Die 601 entsprechend dem Lesebefehl zugeordnet ist. Somit kann der Parameter 403 das Die 601 oder die Seite 603 angeben (z. B. basierend auf der Schwellwertverlaufspufferzuordnung).
  • Wie durch Block 806 dargestellt, führt die Steuerung einen ersten Befehl zur Merkmalsfestlegung zum Modifizieren des ersten Leseschwellwerts basierend auf dem ersten Parameter aus. Zum Beispiel kann die Steuerung 123 Bezug nehmend auf 1 und 4 den Befehl zur Merkmalsfestlegung 402 zum Modifizieren der Leseschwellwertspannung(en) 302, 304, 306 basierend auf dem Parameter 403 ausführen.
  • Wie durch Block 808 dargestellt, kann die Steuerung den ersten Parameter in einem Cache des Speichers speichern. Zum Beispiel kann die Steuerung 123 Bezug nehmend auf 1, 4 und 6 den Parameter 403 in dem Schwellwertverlaufspuffer 602 als den letzten Schwellwertvektor für die Seite 603 oder das Die 601 speichern. Der Schwellwertverlaufspuffer 602 kann in dem flüchtigen Speicher 118 (z. B. in dem Cache 122) gespeichert sein.
  • Wie durch Block 810 dargestellt, empfängt die Steuerung einen zweiten Lesebefehl von der Host-Vorrichtung für Daten, die in dem zweiten Speicherort des Speichers gespeichert sind. Zum Beispiel kann die Steuerung 123 Bezug nehmend auf 1 und 6 einen zweiten Lesebefehl von der Host-Vorrichtung 104 für die Daten 119 empfangen, die in einem Speicherort 112 (z. B. dem Speicherort 607) des NVM 110 gespeichert sind.
  • Wie durch Block 812 dargestellt, identifiziert die Steuerung einen zweiten Parameter, um einen zweiten Leseschwellwert zu modifizieren, der dem zweiten Speicherort zugeordnet ist. Der zweite Parameter kann eine zweite Spannungseinstellung aufweisen. Der zweite Parameter kann auch das Die angeben, das den zweiten Speicherort aufweist. Darüber hinaus kann der zweite Parameter eine zweite Seite des zweiten Speicherorts angeben. Zum Beispiel kann die Steuerung 123 Bezug nehmend auf 1, 3, 4 und 6 den Parameter 407 identifizieren, z. B. einen Zielschwellwertvektor 608, der einen oder mehrere Indikatoren 606 (z. B. Spannungseinstellungen oder Lesespannungsschwellwertverschiebungen) einschließt, um einen Lesespannungsschwellwert 302, 304, 306 der Zellen 116 an dem Speicherort 607 des Dies 601 zu modifizieren. Der Zielschwellwertvektor 608 kann anschließend die Daten in dem Schwellwertverlaufspuffer 602 überschreiben, der dem Die 601 oder einer Seite 603 des Speicherorts 607 in dem Die 601 entsprechend dem Lesebefehl zugeordnet ist. Somit kann der Parameter 407 das Die 601 oder die Seite 603 angeben (z. B. basierend auf der Schwellwertverlaufspufferzuordnung).
  • Wie durch Block 814 dargestellt, bestimmt die Steuerung unter Verwendung eines Komparators, wann der zweite Parameter der gleiche wie der erste Parameter ist. Zum Beispiel kann der Komparator ein oder mehrere Exclusive-Or-Gatter (XOR-Gatter) oder Exclusive-Nor-Gatter (XNOR-Gatter) aufweisen. Zum Beispiel kann die Steuerung 123 Bezug nehmend auf 1, 4 und 6 unter Verwendung des Komparators 604 bestimmen, ob der Parameter 403 (der letzte Schwellwertvektor in dem Schwellwertverlaufspuffer 602) der gleiche wie der Parameter 407 (der Zielschwellwertvektor 608) ist. Der Komparator 604 kann zum Beispiel XOR-Gatter oder XNOR-Gatter einschließen.
  • Der Komparator 604 kann ein Mittel zum Vergleichen des letzten Schwellwertvektors in dem Schwellwertverlaufspuffer 602 (eines ersten Parameters) mit dem Zielschwellwertvektor 608 (eines zweiten Parameters) bereitstellen. In einem Beispiel kann der Komparator 604 unter Verwendung des einen oder der mehreren Prozessoren der Steuerung 123 implementiert sein. Zum Beispiel kann der Komparator 604 in Firmware/Software (z. B. als XOR- oder XNOR-Operand) implementiert sein. In einem anderen Beispiel kann der Komparator 604 in Hardware implementiert sein, wie in 6 veranschaulicht. Zum Beispiel kann der Komparator 604 XOR-Gatter oder XNOR-Gatter einschließen, die mit dem Schwellwertverlaufspuffer 602 drahtverbunden sind. Die Länge des Komparators 604 kann der Länge des Schwellwertverlaufspuffers 602 entsprechen. Wenn zum Beispiel der Schwellwertverlaufspuffer 602 eine Länge von 32 Bits überspannt, kann der Komparator 604 32 XOR- oder XNOR-Gatter einschließen, die jeweils einzelne Bits von dem Schwellwertverlaufspuffer empfangen. Während außerdem 6 einen Komparator 604 und einen Schwellwertverlaufspuffer 602 veranschaulicht, können mehrere Komparatoren und Schwellwertverlaufspuffer vorhanden sein. Wenn zum Beispiel mehrere Schwellwertverlaufspuffer jeweils verschiedenen Dies (oder Seiten) zugeordnet sind, wie oben beschrieben, können mehrere Komparatoren 604 in Hardware eingeschlossen sein, die einzeln mit jeweiligen Schwellwertverlaufspuffern drahtverbunden sind.
  • Schließlich, wie durch Block 816 dargestellt, kann es die Steuerung unterlassen, einen zweiten Befehl zur Merkmalsfestlegung zum Modifizieren des zweiten Leseschwellwerts auszuführen, wenn der zweite Parameter der gleiche wie der erste Parameter ist. Zum Beispiel kann es die Steuerung 123 Bezug nehmend auf 1, 4, 6 und 7 unterlassen, den Befehl zur Merkmalsfestlegung 406 zum Modifizieren der Lesespannungsschwellwerte 302, 304, 306 auszuführen, wenn die Parameter 403, 407 die gleichen sind, wie durch den Komparator 604 bestimmt. Somit kann die Steuerung 123, wie in 7 veranschaulicht, den Befehl zum dynamischen Lesen 706 ohne einen unmittelbar vorhergehenden Befehl zur Merkmalsfestlegung senden. Alternativ dazu, wenn der zweite Parameter nicht der gleiche wie der erste Parameter ist, kann die Steuerung 123 den Befehl zur Merkmalsfestlegung 406 ausführen. Der Schwellwertverlaufspuffer 602 kann entsprechend mit dem letzten Schwellwertvektor (Parameter 407) aktualisiert werden.
  • Dementsprechend reduziert die vorliegende Offenbarung die Leselatenz, die durch mehrere Befehle zur Merkmalsfestlegung mit den gleichen Spannungsschwellwertverschiebungen für das gleiche Die verursacht wird. Dynamische Lesevorgänge, die auf dem gleichen Die durchgeführt werden, können auf einen einzigen Befehl zur Merkmalsfestlegung minimiert werden, wodurch eine ineffiziente Busnutzung, die durch mehrere Befehle zur Merkmalsfestlegung mit identischen Lesespannungsschwellwertverschiebungen verursacht wird, reduziert wird. Darüber hinaus kann die Leistung bei zufälligen Lesevorgängen verbessert werden, indem erhebliche Zeit (z. B. 700 ns) für die Vorbereitung nachfolgender dynamischer Lesevorgänge eingespart wird, wodurch mehr Lesevorgänge in der eingesparten Zeit ermöglicht werden.

Claims (20)

  1. Speichervorrichtung (102), aufweisend: einen Speicher (110), einschließlich eines ersten Speicherorts und eines zweiten Speicherorts; und eine Steuerung (123), die eingerichtet ist, um einen ersten Lesebefehl von einer Host-Vorrichtung (104) für Daten, die in dem ersten Speicherort gespeichert sind, zu empfangen, um einen ersten Parameter zu identifizieren, um einen ersten Leseschwellwert, der dem ersten Speicherort zugeordnet ist, zu modifizieren, und um einen ersten Befehl zur Merkmalsfestlegung zum Modifizieren des ersten Leseschwellwerts basierend auf dem ersten Parameter auszuführen; wobei die Steuerung weiterhin eingerichtet ist, um einen zweiten Lesebefehl von einer Host-Vorrichtung (104) für Daten, die in dem zweiten Speicherort gespeichert sind, zu empfangen, um einen zweiten Parameter zu identifizieren, um einen zweiten Leseschwellwert, der dem zweiten Speicherort zugeordnet ist, zu modifizieren, und um das Ausführen eines zweiten Befehls zur Merkmalsfestlegung zum Modifizieren des zweiten Leseschwellwerts zu unterlassen, wenn der zweite Parameter der gleiche wie der erste Parameter ist.
  2. Speichervorrichtung gemäß Anspruch 1, wobei der erste Parameter eine erste Spannungseinstellung aufweist und der zweite Parameter eine zweite Spannungseinstellung aufweist.
  3. Speichervorrichtung gemäß Anspruch 1, wobei der Speicher weiterhin einen Cache (122) aufweist und wobei die Steuerung (123) weiterhin eingerichtet ist, um den ersten Parameter in dem Cache (122) zu speichern.
  4. Speichervorrichtung gemäß Anspruch 1, wobei die Steuerung (123) weiterhin eingerichtet ist, um unter Verwendung eines Komparators (604) zu bestimmen, wann der zweite Parameter der gleiche wie der erste Parameter ist.
  5. Speichervorrichtung gemäß Anspruch 4, wobei der Komparator (604) ein oder mehrere Exclusive-Or-Gatter (XOR-Gatter) oder Exclusive-Nor-Gatter (XNOR-Gatter) aufweist.
  6. Speichervorrichtung gemäß Anspruch 1, wobei der Speicher ein Die einschließt, das den ersten Speicherort und den zweiten Speicherort aufweist, und wobei der erste Parameter und der zweite Parameter jeweils das Die angeben.
  7. Speichervorrichtung gemäß Anspruch 1, wobei der erste Speicherort eine erste Seite einschließt, wobei der zweite Speicherort eine zweite Seite einschließt und wobei der erste Parameter die erste Seite angibt und der zweite Parameter die zweite Seite angibt.
  8. Verfahren, aufweisend: Empfangen eines ersten Lesebefehls von einer Host-Vorrichtung für Daten, die in einem ersten Speicherort eines Speichers (110) einer Speichervorrichtung (102) gespeichert sind; Identifizieren eines ersten Parameters, um einen ersten Leseschwellwert, der dem ersten Speicherort zugeordnet ist, zu modifizieren; Ausführen eines ersten Befehls zur Merkmalsfestlegung zum Modifizieren des ersten Leseschwellwerts basierend auf dem ersten Parameter; Empfangen eines zweiten Lesebefehls von der Host-Vorrichtung für Daten, die in einem zweiten Speicherort des Speichers (110) der Speichervorrichtung (102) gespeichert sind; Identifizieren eines zweiten Parameters, um einen zweiten Leseschwellwert, der dem zweiten Speicherort zugeordnet ist, zu modifizieren; und Unterlassen, einen zweiten Befehl zur Merkmalsfestlegung zum Modifizieren des zweiten Leseschwellwerts auszuführen, wenn der zweite Parameter der gleiche wie der erste Parameter ist.
  9. Verfahren gemäß Anspruch 8, wobei der erste Parameter eine erste Spannungseinstellung aufweist und wobei der zweite Parameter eine zweite Spannungseinstellung aufweist.
  10. Verfahren gemäß Anspruch 8, weiterhin aufweisend: Bestimmen, unter Verwendung eines Komparators (604), wann der zweite Parameter der gleiche wie der erste Parameter ist.
  11. Verfahren gemäß Anspruch 10, wobei der Komparator (604) ein oder mehrere Exclusive-Or-Gatter (XOR-Gatter) oder Exclusive-Nor-Gatter (XNOR-Gatter) aufweist.
  12. Verfahren gemäß Anspruch 8, wobei der Speicher (110) ein Die einschließt, das den ersten Speicherort und den zweiten Speicherort aufweist, und wobei der erste Parameter und der zweite Parameter jeweils das Die angeben.
  13. Verfahren gemäß Anspruch 8, wobei der erste Speicherort eine erste Seite einschließt und der zweite Speicherort eine zweite Seite einschließt und wobei der erste Parameter die erste Seite angibt und der zweite Parameter die zweite Seite angibt.
  14. Speichervorrichtung, aufweisend: einen Speicher (110), einschließlich eines ersten Speicherorts und eines zweiten Speicherorts; eine Steuerung (123), die eingerichtet ist, um einen ersten Lesebefehl von einer Host-Vorrichtung (104) für Daten, die in dem ersten Speicherort gespeichert sind, zu empfangen, um einen ersten Parameter zu identifizieren, um einen ersten Leseschwellwert, der dem ersten Speicherort zugeordnet ist, zu modifizieren, um einen ersten Befehl zur Merkmalsfestlegung zum Modifizieren des ersten Leseschwellwerts basierend auf dem ersten Parameter auszuführen, um einen zweiten Lesebefehl von einer Host-Vorrichtung (104) für Daten, die in dem zweiten Speicherort gespeichert sind, zu empfangen, und um einen zweiten Parameter zu identifizieren, um einen zweiten Leseschwellwert, der dem zweiten Speicherort zugeordnet ist, zu modifizieren; und ein Mittel (604) zum Vergleichen des ersten Parameters mit dem zweiten Parameter; wobei die Steuerung (123) weiterhin eingerichtet ist, um, basierend auf dem Mittel zum Vergleichen, zu bestimmen, wann der zweite Parameter der gleiche wie der erste Parameter ist, und das Ausführen eines zweiten Befehls zur Merkmalsfestlegung zum Modifizieren des zweiten Leseschwellwerts zu unterlassen, wenn der zweite Parameter der gleiche wie der erste Parameter ist.
  15. Speichervorrichtung gemäß Anspruch 14, wobei der erste Parameter eine erste Spannungseinstellung aufweist und der zweite Parameter eine zweite Spannungseinstellung aufweist.
  16. Speichervorrichtung gemäß Anspruch 14, wobei der Speicher (110) weiterhin einen Cache aufweist und wobei die Steuerung (123) weiterhin eingerichtet ist, um den ersten Parameter in dem Cache zu speichern.
  17. Speichervorrichtung gemäß Anspruch 14, wobei das Mittel (604) zum Vergleichen ein oder mehrere Exclusive-Or-Gatter (XOR-Gatter) aufweist.
  18. Speichervorrichtung gemäß Anspruch 14, wobei das Mittel (604) zum Vergleichen ein oder mehrere Exclusive-Nor-Gatter (XNOR-Gatter) aufweist.
  19. Speichervorrichtung gemäß Anspruch 14, wobei der Speicher ein Die einschließt, das den ersten Speicherort und den zweiten Speicherort aufweist, und wobei der erste Parameter und der zweite Parameter jeweils das Die angeben.
  20. Speichervorrichtung gemäß Anspruch 14, wobei der erste Speicherort eine erste Seite einschließt, wobei der zweite Speicherort eine zweite Seite einschließt und wobei der erste Parameter die erste Seite angibt und der zweite Parameter die zweite Seite angibt.
DE102020115970.6A 2020-03-31 2020-06-17 Befehlsoptimierung durch intelligente schwellwertdetektion Active DE102020115970B3 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/835,836 2020-03-31
US16/835,836 US11294819B2 (en) 2020-03-31 2020-03-31 Command optimization through intelligent threshold detection

Publications (1)

Publication Number Publication Date
DE102020115970B3 true DE102020115970B3 (de) 2021-08-12

Family

ID=76968879

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020115970.6A Active DE102020115970B3 (de) 2020-03-31 2020-06-17 Befehlsoptimierung durch intelligente schwellwertdetektion

Country Status (3)

Country Link
US (1) US11294819B2 (de)
KR (1) KR102365602B1 (de)
DE (1) DE102020115970B3 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11610116B2 (en) 2018-12-31 2023-03-21 SK Hynix Inc. Storage device performance optimization using deep learning
US11960989B2 (en) 2020-07-24 2024-04-16 SK Hynix Inc. Read threshold estimation systems and methods using deep learning
US11393539B2 (en) * 2020-11-20 2022-07-19 SK Hynix Inc. Systems and methods for determining change of read threshold voltage

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US20120320671A1 (en) 2008-03-18 2012-12-20 Anobit Technologies Memory device with reduced sense time readout

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009072101A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Apparatus and methods for generating row-specific reading thresholds in flash memory
US8467249B2 (en) 2010-07-06 2013-06-18 Densbits Technologies Ltd. Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
US8869008B2 (en) 2013-01-17 2014-10-21 Apple Inc. Adaptation of analog memory cell read thresholds using partial ECC syndromes
US9251053B2 (en) * 2013-03-14 2016-02-02 SanDisk Technologies, Inc. Managing configuration parameters for a non-volatile medium
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9298549B2 (en) 2013-12-11 2016-03-29 International Business Machines Corporation Read buffer architecture supporting integrated XOR-reconstructed and read-retry for non-volatile random access memory (NVRAM) systems
US9640270B2 (en) * 2014-08-12 2017-05-02 Sandisk Technologies Llc System and method of using multiple read operations
US9659637B2 (en) * 2015-08-11 2017-05-23 Western Digital Technologies, Inc. Correlating physical page addresses for soft decision decoding
US9946469B2 (en) * 2016-03-21 2018-04-17 Smart Modular Technologies, Inc. Solid state storage system with latency management mechanism and method of operation thereof
US10347331B2 (en) 2016-06-13 2019-07-09 SK Hynix Inc. Read threshold optimization in flash memories
US10043575B2 (en) * 2016-08-10 2018-08-07 SK Hynix Inc. Memory system with read threshold estimation and operating method thereof
JP6659494B2 (ja) * 2016-08-19 2020-03-04 キオクシア株式会社 半導体記憶装置及びメモリシステム
KR20180054394A (ko) * 2016-11-15 2018-05-24 삼성전자주식회사 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법
US10714195B2 (en) * 2017-08-31 2020-07-14 SK Hynix Inc. Read disturb detection and recovery with adaptive thresholding for 3-D NAND storage

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120320671A1 (en) 2008-03-18 2012-12-20 Anobit Technologies Memory device with reduced sense time readout
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds

Also Published As

Publication number Publication date
US11294819B2 (en) 2022-04-05
US20210303474A1 (en) 2021-09-30
KR20210121994A (ko) 2021-10-08
KR102365602B1 (ko) 2022-02-18
CN113467704A (zh) 2021-10-01

Similar Documents

Publication Publication Date Title
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE102020115970B3 (de) Befehlsoptimierung durch intelligente schwellwertdetektion
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE102017104150B4 (de) Abnutzungsausgleich in Speichervorrichtungen
DE112013003255B4 (de) Managementmechanismus für fehlerhafte Blöcke
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE102020130044A1 (de) Techniken zum verhindern von lese-störung in nand-speicher
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE102013020269A1 (de) Umordnen des Zurückschickens für einen Host-Lesebefehl basierend auf der Zeitschätzung des Abschlusses eines Flash-Lesebefehls
DE112011106013T5 (de) System und Verfahren für den intelligenten Datentransfer von einem Prozessor in ein Speicheruntersystem
DE102021115374A1 (de) Abschwächung des in zonen unterteilten namensraums unter verwendung des unterblock-modus
DE112020004591T5 (de) L2P-Übersetzungstechniken in begrenzten RAM-Systemen
DE102013016993A1 (de) Embedded Multimedia Card (eMMC), einen Host steuernde eMMC und Verfahren zum Betreiben eines eMMC-Systems
DE112018005505T5 (de) Verfahren und vorrichtung zur spezifikation von lese-spannungsversetzungen für einen lesebefehl
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE102021114457A1 (de) Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum
DE102016009807A1 (de) Korrelieren von physikalischen seitenadressen für soft-decision-dekodierung
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE102019106126A1 (de) Massenspeicherungsvorrichtung mit vom Host eingeleiteter Pufferausräumung
DE112020006215T5 (de) Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102017120784A1 (de) Kontinuierliche adaptive Kalibrierung für Flash-Arbeitsspeichervorrichtungen
DE112020005395T5 (de) Kapazitätserweiterung für speicher-untersysteme

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
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE